본문 바로가기

Programming

(477)
1. Node.js 핵심 개념 이해 (5) - 서버로서의 노드 이번 아티클에서는 노드의 특성, 장단점 등에 대해서 살펴볼 예정입니다. 코드 예제 같은 내용보다는 개념적 내용에 대한 기술에 가까우니, 차근차근 읽어보시기 바랍니다. 우선 앞선 아티클에서 설명한 특성을 다시 상기하겠습니다. 자바스크립트 언어의 특성이 노드에서도 그대로 이어지기 때문에, 기본적으로 노드는 싱글 스레드 - 논블로킹 모델을 사용하게 되고 여기서 기인하는 특성을 갖게 됩니다. 참고로 이 논블로킹 특성은 노드가 libuv 라이브러리를 사용하는데서 오게 됩니다. 1. Node.js 핵심 개념 이해 (4) - Single Thread 기본적으로 노드는 싱글 스레드 시스템입니다. 우리가 코드를 동시에 실행할 수 없다는 이야기를 앞의 아티클에서 했었는데, 이것 역시 이 영향에서 비롯됩니다. 일단은 스레드..
1. Node.js 핵심 개념 이해 (4) - Single Thread 기본적으로 노드는 싱글 스레드 시스템입니다. 우리가 코드를 동시에 실행할 수 없다는 이야기를 앞의 아티클에서 했었는데, 이것 역시 이 영향에서 비롯됩니다. 일단은 스레드 설명을 위해서 항상 나오게 되는 프로세스와 스레드의 차이점에 대해서 살펴보도록 하겠습니다. · 프로세스 : OS에서 할당하는 작업의 단위입니다. 일반적으로 하나의 프로그램을 실행하는 것을 상상하면 됩니다. 프로세스 단위는 서로 메모리 등의 자원을 공유하지 않는 독립적인 방식으로 운영됩니다. · 스레드 : 프로세스 내에서 생성되는 작업 단위입니다. 프로세스는 스레드를 여러 개 생성할 수 있고, 이를 통해 여러 작업을 동시에 처리가 가능하죠. 각 스레드들은 부모 프로세스의 자원을 공유하고, 같은 주소의 메모리에 접근하기 때문에 데이터 공유도..
3. 사용자 인터페이스 구현 (1) - UI 기본 구조 우리는 안드로이드 기본 구조에 대해서 살펴보면서 안드로이드는 컴포넌트(component) 기반의 개발을 진행한다는 것을 살펴보았습니다. 컴포넌트가 없는 안드로이드 앱이라는 것은 존재할 수 없으며, 런타임(runtime) 때 컴포넌트 클래스가 실행되지 않는다는 것은 앱 자체가 실행되지 않는 것을 의미하죠. 컴포넌트 개념이 가물가물하다면, 다시 한번 되짚어보고 오겠습니다. 2. 안드로이드 기본 구조의 이해 (2) - 컴포넌트(component) 1 안드로이드의 큰 특징이자, 안드로이드 아키텍처 이해에 있어서 중요한 컴포넌트(component)에 대해서 살펴보도록 하겠습니다. 1. 컴포넌트는 앱의 구성단위이다 컴포넌트는 안드로이드 앱을 구성 nozeroslope.tistory.com 네 개의 컴포넌트(액티비티..
1. Node.js 핵심 개념 이해 (3) - Non Blocking I/O 이번 아티클에서는 오래 걸리는 [작업]에 대한 효율적인 처리를 살펴보도록 하겠습니다. 기본적으로 자바스크립트를 통한 작업은 (1) 동시에 실행할 수 있는 작업과 (2) 동시에 실행할 수 없는 작업으로 구분됩니다. 일단, 현재로서 우리가 작성하는 대부분의 코드는 동시에 실행할 수 없습니다. 하지만, 자바스크립트상에서의 실행이 아닌 I/O 작업은 동시에 처리가 가능합니다. I/O(input, output)은 파일 시스템 접근(파일 읽기 쓰기 폴더 생성)이나 네트워크를 통한 요청 같은 작업을 의미합니다. 이러한 I/O 작업에 대해 노드는 논 블로킹(non-blocking) 작업 방식을 제공합니다. 이는 이전 작업의 완료를 기다리지 않고 다음 작업을 수행하는 작업 방식입니다. 이와 반대로 이전 작업의 종료 이후..
1. Node.js 핵심 개념 이해 (2) - Event Driven, Context [2/2] 앞선 내용에서, 자바스크립트와 노드의 이벤트 관련 원리들에 대해서 기본적인 설명을 진행했습니다. 이번 아티클을 읽기 위한 사전 지식이니 혹시라도 기억이 나지 않는다면 다시 한번 살펴보고 오시기 바랍니다.   1. Node.js 핵심 개념 이해 (2) - Event Driven, Context [1/2]앞선 아티클에서 Node.js와 자바스크립트의 기본적인 특성에 대해서 설명하고 있었습니다. 지금부터는 좀 더 자바스크립트와 노드의 근본적인 동작 원리와 연계된 특성을 살펴보겠습니다. 자바nozeroslope.tistory.com  이번에는 흔히 사용하는 함수 setTimeout(function, time)을 이용해서 좀 더 심층적으로 자바스크립트와 노드의 이벤트 처리 원리에 대해서 살펴보도록 하겠습니다.  ..
1. Node.js 핵심 개념 이해 (2) - Event Driven, Context [1/2] 앞선 아티클에서 Node.js와 자바스크립트의 기본적인 특성에 대해서 설명하고 있었습니다. 지금부터는 좀 더 자바스크립트와 노드의 근본적인 동작 원리와 연계된 특성을 살펴보겠습니다. 자바스크립트 핵심 원리와도 연계되는 내용이니, 잘 확인하고 넘어가시기 바랍니다. ○ 이벤트 기반(Event Driven) 이벤트 기반(event-driven)으로 동작한다는 것의 의미는 무엇일까요? 가장 쉽고 단순한 언어로 설명하면 이는 "어떤 이벤트가 발생할 때, 미리 지정해 둔 작업을 수행하는" 방식을 의미합니다. 여기서 이벤트는 클릭, 완료, 스크롤 등등의 주요 동작들이 해당합니다. 이러한 이벤트 기반 언어나 시스템에서 우리는 사전에 '특정 이벤트가 발생하면 - 이러저러한 동작을 수행하라'라는 형태의 작업을 미리 등록해..
1. Node.js 핵심 개념 이해 (1) - 서버, 런타임 Node.js는 기본적으로 Chrome V8 Javascript 엔진으로 빌드된 자바스크립트 런타임입니다. 각설하고, 노드로 실행할 수 있는 게 서버 하나뿐만이 아니라는 것을 알 수 있죠. 지금부터는 몇 가지 중요 개념과 용어에 대해서 짚고 넘어가도록 하겠습니다. ○ 서버 기본적으로 노드를 통해서는 다양한 자바스크립트 애플리케이션 중 서버 애플리케이션을 실행하는데 가장 많이 사용됩니다. 여기서 근본적으로 서버라는 존재는 무엇인지를 살펴보겠습니다. 서버는 기본적으로 네트워크를 통해서 클라이언트 측에 정보, 서비스를 제공하는 컴퓨터(or 프로그램)를 의미합니다. 클라이언트는 모바일 앱, PC, 혹은 또 다른 서버로 요청을 보내는 서버가 되겠습니다. 간단한 내용 같지만 실제 예시를 통해서 다시 한번 개념을 살..
컬렉션 프레임워크(5) - 검색 강화 컬렉션 2 : TreeSet 이제 앞서서 살펴본 기본 이진트리(binary tree)를 기반으로 한 Set 컬렉션인 TreeSet을 살펴보도록 하겠습니다. TreeSet에서 기본적으로 하나의 노드는, 노드 값인 value 그리고 왼쪽/오른쪽 자식 노드 참조를 위한 두 개의 변수로 구성됩니다. 이 TreeSet에 객체를 저장하게 되면 정렬은 자동으로 진행되는데, 이진트리 개념에서 배운 것처럼 부모 값보다 낮은 것은 왼쪽 자식 노드에, 높은 것은 오른쪽 자식 노드에 저장하게 됩니다. 본격적으로 들어가기 앞서 기억이 잘 나지 않는다면 Set 개념도 다시 한번 복습해 보겠습니다. 컬렉션 프레임워크(3) - Set 컬렉션 1 : Set의 개념 List와 차별화되는 Set 컬렉션의 가장 큰 특징은, 수학의 집합과 유사한 성질을 갖는다는 것입니..