-
API 설계를 하면서 고민 해볼만한 이야기카테고리 없음 2019. 12. 12. 13:23
백엔드 개발을 하면서 다들 한번쯤은 클라이언트들과의 통신을 위해서 API를 개발합니다 우리 백엔드 개발자는 좋은 API를 개발하기위해서 Rest API, Graph API 등 여러 API에 대한 내용을 알아보면서 해당 통신규약이 정의하는 우리 프로토콜에서는 이런 방식으로 개발하는게 좋아!! 라는 글을 읽어가면서 Rest ful하게 API를 만들어 나갑니다 오늘 좋은 경험을 겪었던 예시로 한가지 썰(?)을 풀어볼까 합니다 여러분들이 Reddit처럼 한가지의 post에 like, unlike를 할수있는 API를 개발하려고 합니다(간단한 기능이죠?) 네 딱히 어려운 내용은 크게없습니다 한명의 유저는 하나의 포스트에만 like, unlike, none 총 3가지의 상태만 가질수 있으니 이번 포스팅에서는 Rest..
-
UTF-8과 UTF-16이란?카테고리 없음 2019. 6. 21. 09:06
지난번에 유니코드에 관련된 포스팅에 이어서 이번에는 대표적인 유니코드 인코딩 방법인 UTF-8과 UTF-16에 대해서 알아보겠습니다 다들 프로그래밍을 개발하시면서 UTF-8, UTF-16에 대한 내용을 많이 봤을 거라고 생각이 듭니다 그렇다면 이렇게 많이 사용하는 UTF-8이란 무엇일까요? 지난번에 말씀드렸다 싶이 유니코드는 ASCII처럼 문자들의 코드표입니다 UTF-8이란 유니코드의 값을 인코딩하는 방식 중 하나일 뿐입니다 (물론 UTF-16 또한 마찬가지) 그렇다면 어떻게 동작하는지 알아보면 위의 이미지에 대한 동작 방식을 알면 됩니다!!! (간단하죠?) UTF-8은 가변 길이 방식의 인코딩 방법입니다 가변 길이라는게 어떤 말이냐 하면 인코딩 된 값이 1~4 byte의 값을 동적으로 얻는다는 말입니다..
-
유니코드에 대해서 아시나요?프로그래밍 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엔진은 인터프리터를 사용하지않고 머신 코드로 변환합니다 이 머신 코드가 작동하는 방식은 다음과 같..