목록분류 전체보기 (20)
개발블로그
Unbuffered I/O - 커널에 의한 시스템콜로 호출된 각각의 read와 write Buffered I/O - Standard I/O File Descriptors 모든 오픈된 파일은 file descriptor에 의해 참조된다. 커널은 파일을 생성하거나 열면 fd를 반환한다. unix default fd - 0: statndard input / 1: standard output / 2: standard error open() pathname, oflag, mode를 인자로 받아 파일을 열고, fd를 반환한다. 이 때, 사용중이지 않은 가장 낮은 번호의 descriptor를 반환한다. Oflag required: O_RDONLY(읽기), O_WRONLY(쓰기), O_RDWR(읽고쓰기) optiona..
HTTP (HyperText Transfer Protocol) 웹상에서 클라이언트와 서버간의 통신을 위한 프로토콜, TCP connection을 기반으로 동작한다. HTTP/1.1 connection 하나당 하나의 resquest/response를 처리한다. 그렇기 때문에 동시전송과 다수 리소스 처리에 대한 속도 및 성능에 대한 이슈를 가진다. HOLB (Head Of Line Blocking) 같은 큐에 있는 패킷이 첫번째(head of line) 패킷에 의해 지연될 때 발생하는 성능 저하 현상 piplining 기법을 통해 하나의 connection을 통하여 다수의 파일을 요청/응답 할 수 있다. 이를 통해 성능 향상을 꾀할 수 있으나 문제점이 존재한다. 클라이언트에서 3개의 이미지를 요청한다고 가정..
Linking이란? Symbol Resolving &Relocation 어떤 object file이 어떤 symbol을 포함하는지 결정 object code들을 합병하여 하나의 수행파일로 만듦 symbol의 location을 결정 및 실제 주소에 배치 Symbol이란 전역변수나 함수의 이름들을 지칭한다. Static vs Dynamic Linking static linking이란 필요한 모든 심볼들을 수행파일에 병합하여 만드는 방식이다. 라이브러리의 함수를 사용했다면, 수행파일이 생성될 때 해당 라이브러리 파일의 함수부분이 수행파일에 복사됩니다. 그렇기 때문에 수행파일의 크기가 굉장히 크다는 단점이 있습니다. dynamic linking이란 수행파일에 라이브러리 코드가 포함되지 않으며, 필요로 할 때 l..
Array 논리/물리적 저장 순서가 일치 (연속적인 메모리 공간에 저장) index를 통한 배열 원소 접근 가능하며, 접근의 시간복잡도는 O(1) 원소 삽입/삭제 시 기존 원소들을 shift해야 하므로 O(n)의 시간복잡도를 가진다. 제약적 공간을 가진다. LinkedList 논리/물리적 저장 순서 불일치 (다음 노드의 주소값을 가짐) index 사용 불가. 접근 시 리스트를 순회해야 하므로 시간복잡도는 O(n) 원소의 삽입/삭제가 Array에 비해 빠름. LinkedList의 원소 삽입/삭제 자체는 빠르지만, 해당 원소를 찾는데 O(n)의 시간이 걸린다. (Bottle neck) (맨 앞/뒤에만 원소를 삽입한다고 가정하면 O(1)의 시간복잡도를 가진다.) 하지만, 원소를 삽입/삭제할 때마다 메모리의 할..
1. React Native: 웹 개발자가 한달만에 앱 출시하기 (발표자료: https://www.slideshare.net/deview/121react-native) React Native Facebook, Instagram, Discord 등 많은 플랫폼에서 React Native가 사용되고 있다. 네이티브 앱에서 React Native로 전환한 후 많은 덕을 보았다. 빠른 개발속도, 98%에 육박하는 iOS, Android간의 코드 공유 등 탁월한 선택이라고 이야기함. React Native의 장점은 투입한 개발 리소스에 비해 결과물의 퀄리티가 좋다는 점과 플랫폼간 공유 코드를 생성함으로써 유지 보수비용이 낮아진다는 점이다. ‘단 기간에 프로덕션 레벨의 크로스 플랫폼을 만들어야 할 때 고려할 수 있..
A Promise is an object representing the eventual completion or failure of an asynchronous operation. — (출처: MDN) ‘Promise는 비동기 작업의 최종 완료나 실패를 표현하는 객체이다.’ 쯤으로 해석된다. Promise에 대해서 보기 전에 ‘비동기 작업’에 대하여 알아보도록 하자. Asynchronous 자바스크립트는 single-thread로 동작한다. 쉽게 말하자면 하나씩 하나씩 순차적으로 처리해 나간다는 말이다. 그림을 보자. 사용자의 동작에 의해서 이벤트가 발생하고, 그 이벤트는 메시지 큐에 담긴다. 큐의 맨 앞 이벤트가 실행될 때, 호출스택에 이벤트에 해당하는 함수들이 쌓이고, 순차적으로 처리된다. 전부 다 ..