OG Blog

「끄적끄적」

IntelliJ Command Line : 터미널에서 인텔리제이 실행하기

idea .

IntelliJ Command Line 터미널에서 프로젝트로 이동 후 idea . 만 입력하면 해당 프로젝트를 IntelliJ 로 실행시킬 수 있다. 겁나 간편- 하다. HOW TO ? IntelliJ > Tools > Create Command-line Launcher 위 경로대로 따라 누르면 default 경로가 입력되어...

휴가가 끝났다

정신적으로 나를 많이 힘들게 하던 프로젝트를 끝낸 후 휴식이 필요하다고 느꼈다. 그래서 입사 후 처음으로 휴가다운 휴가를 다녀왔다. 휴가동안 노트북을 켜지 않았고, 딱히 활동적인 무언가를 하지도 않았다. 한적한 시골에 가서 멍 때리다 밥 먹고 자고 일어나고 하루를 보냈다. (그래도 일 생각은 나더라) 이제 다시 일상으로 돌아가야 하는데 어떤 ...

「Multithreaded JavaScript」 Web Worker 웹 워커: 전용 워커, 공유 워커, 서비스 워커

Concurrency Beyond the Event Loop

웹 워커 최신 웹 브라우저에서 제공하는 멀티스레딩 API 로 CPU 부하량이 높은 작업을 별도 스레드에서 처리할 수 있다. 웹 워커를 사용하면 독립적인 스레드에서 자바스크립트 코드를 실행시킬 수 있다. 1. 전용 워커 (dedicated worker) 웹 워커의 여러 종류 중 가장 단순하다. 2. 공유 워커 (shared worker) 다양한 브라...

「Multithreaded JavaScript」 Concurrency vs Parallelism : 동시성 vs 병렬성

Concurrency Beyond the Event Loop

동시성 동시성: 여러 작업을 동시에(한꺼번에) 처리하는 것 병렬성 병렬성: 여러 작업이 실제로 동시에 시작되고, 실행되는 것 동시성과 병렬성의 차이 하나의 작업을 작은 단위로 쪼개어 처리할 때 이는 동시성은 충족되지만 병렬성은 충족되지 않는다. 작은 단위의 작업들이 번갈아 가면서 실행되는 것이기 때문이다. 병렬성은 완전이 같은 시점에 여러 작업이...

「Multithreaded JavaScript」 Thread : 스레드란?

Concurrency Beyond the Event Loop

스레드란? OS 커널 바깥 실행단은 프로세스와 스레드로 구분된다. 하나의 프로그램을 실행한다는 것은 하나의 프로세스가 시작된다는 것이다. 하나의 프로세스에서 여러 개의 스레드를 생성하는 것도 가능하다. 둘의 차이점이 있다면, 프로세스는 기본적으로 서로의 메모리 공간에 접근할 수 없지만 스레드는 동일한 프로세스 아래에 있다면 메모리 공간을 공유...

「Functional Programming for Java Developers」 함수형 프로그래밍 (3)

기본 원리 : 람다와 클로저 & 고계함수

람다와 클로저 람다는 익명 함수의 다른 표현으로 리터럴 문법을 통해 반복되는 코드를 줄일 수 있다. 클로저는 함수 본문이 인수로 전달될 때, 혹은 함수가 자기 내부에서 정의된 것이 아니라 바깥에서 정의된 변수를 의미하는 자유변수 (free variables) 를 사용할 때 만들어진다. 고계함수 고계함수 (higher-order functions...

ERROR: Converting circular structure to JSON

순환 참조 시 발생하는 에러

Converting circular structure to JSON 테스트를 하다 위 에러를 발견하였다. 구글링을 통해 순환 참조 시 발생하는 에러임을 확인하였다. 주로 발생하는 상황 다른 사람들의 얘기를 들어보니 주로 Object 를 JSON.stringify() 할 때 발생하였고 역시나 내 상황도 마찬가지였다. 에러를 파싱할 때 객체 자체를 J...

「Functional Programming for Java Developers」 함수형 프로그래밍 (2)

기본 원리 : 1등 시민으로서의 함수

1등 시민으로서의 함수 자바에서는 객체와 원시 값들이 1등 시민으로 대접 받는다. 객체와 원시 값들은 메서드에게 전달되고, 그 값은 리턴되고, 리턴된 값을 다른 변수에 할당한다. 자바에서 함수는 1등 시민이 아니다. (자바는 메서드만 포함하고 있다. 메서드는 자바에서 1등 시민이 아니다.) 메서드를 다른 메서드에 인수로 전달할 수 있는가? 리턴...

「Functional Programming for Java Developers」 함수형 프로그래밍 (1)

기본 원리 : 변경 가능한 상태 피하기

변경 가능한 상태 피하기 함수형 프로그래밍에는 기본 원리들이 있다. 그 중 첫번째는 변경 불가능한 값(immutable value)을 이용하는 것이다. 값이 변경되는 것을 허용할 경우 멀티스레드 프로그래밍이 어려워지기 때문이다. 따라서 값을 변경 불가능하게 만들어서 동기화와 관련된 문제를 없앨 수 있다.

「Functional Programming for Java Developers」 왜 함수형 프로그래밍을 배워야 하는가?

Why Functional Programming?

동시성 프로그램을 잘 작성해야 한다 동시성 문제에 접근하기 위한 최선의 방법이 함수형 프로그래밍이라고들 한다. 동시성 문제 : 동시성 문제란 두 개 이상의 세션이 공통된 자원에 대해 모두 읽고 쓰는 작업 (Read→Write) 을 하려고 하는 경우 발생할 수 있는 문제 그만큼 함수형 프로그래밍은 동시성에 대한 명확한 원리를 제공하였고, 높은...