프로그래밍
-
유니코드에 대해서 아시나요?프로그래밍 2019. 6. 18. 09:09
안녕하세요 오늘은 프로그래밍을하면서 흔히 볼수있는 유니코드에 대해서 알아보는 시간을 가지려고 합니다 컴퓨터에서는 모든 데이터를 0 아니면 1로 표현하는 이진수로 사용합니다 초기에는 이를 표현 하는 ASCII값을 이용해서 값들을 표현했죠 아스키 코드표는 모든데이터를 1byte 즉 8bit로 표현합니다 거기서 맨 앞 1bit는 패리티 비트라고 해당하는 데이터의 에러 검사 여부를 위해서 사용합니다 그렇기에 2^7인 128개의 문자가 표현이 가능한거죠 그런데 여기서 문제가 있습니다 아스키 코드표에 해당하지 않는 문자를 표현하려면 어떻게 해야할까요? 결국 해당하는 코드표를 추가하는 방법 밖에 없을겁니다 그렇기에 다음으로 나오는 ANSI 코드가 있지만 이 내용은 이 포스팅에서는 다루지 않겠습니다 (너무 길어질까봐...
-
자바스크립트 메모리 누수와 어떻게 막아야 하는가?프로그래밍 2018. 11. 19. 01:33
이 포스팅은 에전 자바스크립트 메모리 관리법에 대한 2편입니다1편은 http://dayzen1258.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC%EB%B2%95을 보고 오시면 좀 더 이번 포스팅이 잘 읽힐것이라고 생각합니다 :) 1. 전역변수 자바스크립트에서는 전역 변수에 할당되는 변수는 GC에서 자동으로 삭제하지 않습니다 그렇기에 전역변수에서 할당된 변수는 메모리 누수로 이어집니다browser에서는 window객체, Node js에서는 global객체가 됩니다 var afunction = function a(number..
-
자바스크립트의 메모리 관리법프로그래밍 2018. 11. 15. 01:09
안녕하세요 오늘은 모든 프로그래밍에서 매우 매우 중요한 메모리에 대한 이야기를 Js를 곁들여서 해볼 예정입니다 먼저 대부분의 언어에서 메모리를 관리하는 방법은 비슷하게 이루어 지는데 다음과 같이 일어납니다프로그래밍에서 사용가능하게 운영체제에서 메모리를 할당실제 프로그래머들이 코딩을 하면서 메모리 읽고 사용프로그램에서 사용 되지않는 메모리를 해제하고 반환간단하죠?? 하지만 실제로 저희가 코딩을 하면서 사용하는 부분은 두번째를 제외 하고 할당과 반환에 대해서는 크게 관여를 하지않습니다그 이유가 가비지컬렉션이 알아서 처리해주기 때문인데 이 내용은 이번 포스팅의 마지막에 다뤄보겠습니다 그렇다면 Js에서는 어떻게 메모리 관리가 진행이될까요? 자바스크립트는 변수를 할당해줄때 메모리도 함께 저장합니다 var a = ..
-
V8엔진을 통한 효율적인 JS개발프로그래밍 2018. 11. 14. 01:49
안녕하세요 오늘은 지난 시간에 알아봤던 V8엔진을 이용해 어떻게 Js코드를 작성해야 더 효율적일지 알아보는 시간을 가져보도록하겠습니다V8이 무엇인지 헷갈리시는 분들은 http://dayzen1258.tistory.com/entry/V8%EC%97%94%EC%A7%84%EC%9D%B4%EB%9E%80에 들어가서 확인해주세요~ 그렇다면 어떻게 해야 효율적인 코드를 작성할수있을까요?지난 시간에 알아봤던 봤던 크랭크샤프트에서 최적화를 하는 방식을 본다면 알수있습니다 바로 인라인캐싱과 히든 클래스가 추가로 인라이닝이 이번 시간에 주요하게 살펴볼 내용입니다 인라인 캐싱 인라이닝이라는 용어에 대하여 간단히 설명하자면 함수가 호출되는 부분의 코드를 함수의 내용으로 변경한다고 보시면됩니다 예제를 들어 설명을 하자면 다음..
-
V8엔진이란?프로그래밍 2018. 11. 13. 01:22
Javascript개발자라면 다들 한번쯤은 들어보셨을겁니다 바로 V8엔진!! Node.js를 하면서도 구글 크롬 브라우저에 대해서 얘기를 들을때도 항상 빠지지않고 나오는 내용인데 도대체 V8엔진이라는게 무엇이길래 이렇게 나오는걸까요?(v8 이미지)이번시간에 한번 알아보도록 하죠!!! 먼저 V8엔진에 대해서 간단히 소개를 해보자면Google이 개발한 Open SourceC++로 구성, 개발되어있다Node.js 런타임, Chrome Browser에서 사용됩니다위와 같은데 V8엔진의 가장 큰 목적은 속도개선입니다V8엔진이 어떤 방식으로 구동 되는지 알게된다면 속도개선의 이유를 알게될것이라고 생각하는데 살펴보면 V8엔진은 인터프리터를 사용하지않고 머신 코드로 변환합니다 이 머신 코드가 작동하는 방식은 다음과 같..
-
TypeScript란프로그래밍/TypeScript 2018. 11. 11. 00:31
TypeScript란 무엇일까요?라는 키워드로 여기에 방문하셨다면 다들 JavaScript를 조금이라도 보셨을겁니다 (아니면 새로 보시는걸로...)먼저 JS는 인터프리터 언어입니다 실제 동작중인 즉 런타임에 타입을 체크하고 코드를 실행합니다var a;이 a라는 변수는 number일수도 string일수도 function, literal object일수도 있습니다만약 console.log(a.a) // undefined위의 코드는 undefined가 납니다 a의 객체요소중 a가 없기 때문에 undefined를 호출하는것이죠만약분들이 js를 하면서 위와같은 실수를 많이 하셨을거라고 생각합니다 (제가 많이했기 때문이 아니라...) 그렇다면 js를 좀더 빡빡하게(?) 사용하기 위해서는 어떻게 해야할까요? 타입을 ..
-
퀵 정렬 (Quick 정렬)프로그래밍/알고리즘 2018. 6. 19. 10:37
안녕하세요 오늘은 정렬 중 분할 정복으로 유명하고 빠른 정렬로 유명한 퀵 정렬에 대하여 공부해도록 하겠습니다출처 : https://ko.wikipedia.org/wiki/%ED%80%B5_%EC%A0%95%EB%A0%AC( 퀵 정렬을 간단히 나타낸 gif ) 먼저 간단한 예제를 통해서 무엇인지 알아보도록 하죠!!!위와 같은 배열이 있고 이를 퀵정렬로 정렬하기위해서는 어떻게 해야할까요? 먼저 퀵정렬의 특징은 pivot이라는 중간값을 선택하는 것부터 시작합니다 또한 이를 선택하는 방법에는 두가지가 있는데 1. 배열의 중간값 2. index의 첫번째 이중 1번째인 중간값을 선택한다고 했을때 Pivot의 값은 배열의 중간값인 9가 선택이 됩니다 다음 퀵 정렬은 다음과 같은 규칙에 의해서 정렬이 진행됩니다 1. ..