본문 바로가기

전체 글

자바 스크립트 prototype 프로토 타입 도식new 연산자를 호출하면 Constructor에 정의 한대로 인스턴스가 생성됨그리고 instance에 __proto__라는 프로퍼티가 자동으로 부여되는데 __proto__ 프로퍼티 Constructor의 prototpye 프로터티를 참조함 var Person = function (name) { this._name = name;}Person.prototype.getName = function() { return this._name;}var suzi = new Person("Suzi");// this 가 제대로 바인딩 되지 않음.// this가 suzi.__proto__를 가르키고 있음.console.log(suzi.__proto__.getName()); // undefinedco.. 더보기
javascript 클로져 let outer = function () { let a = 1; const inner = function () { console.log(a++) }; inner();};outer(); outer 함수 내에서 변수 a를 선언했고, 내부의 inner 함수에서 outer 의 변수 a를 참조 하고 있음inner 함수 내에서는 a를 찾지 못하고, outerEnvironmentReference에 지정된 outer의 LexcialEnvironment에서 a를 찾음outer 함수의 실행 컨텍스트가 종료되면 LexicalEnvironment에 있는 a, inner 참조를 삭제 함각 주소에 저장된 값은 참조 하는 대상이 없으므로 가비지 컬렉터의 대상이 됨 `let outer = func.. 더보기
일시 중단 함수와 코루틴 일시 중단 함수 : suspend fun 키워드로 선언되는 함수.함수 내에 일시 중단 지점을 포함할수 있는 특별한 기능 - 일시중단 함수는 일시중단함수 내에서만 호출할수 있다.일시 중단함수는 코루틴 내부에서 실행되는 코드의 지합으로 코루틴이 아니다.일시 중단 함수를 코루틴 처럼 사용하고 싶다면 일시 중단함수를 코루틴 블록으로 감싼다. 일시 중단 함수에서 코루틴 실행하기-  launch, async 와 같은 코루틴 빌더 함수는 CoroutineScope의 확장 함수로 선언되어있기 때문에, 일시 중단 함수 내부에서는 코루틴의 CoroutineScope 객체를 접근 할수 없어 사용이 불가능하다.- coroutineScope 빌더를 를 사용하여  호출할수 있다.- 예외 전파로 인한 코루틴 취소를 막고 싶다면 s.. 더보기
코틀린 코루틴의 정석 (1) JVM 프로세스, 스레드 메인 스레드: 프로세스의 시작, 끝을 함께하는 매우 중요한 역할을한다. 예외로 인해 메인 스레드가 강제로 종료되면, 프로세스도 강제 종료된다. 단일 스레드 프로그래밍 스레드 하나만 사용해서 실행되는 애플리케이션 단일 스레드의 한계 : 스레드는 하나의 작업을 수행하는 동안 다른 작업을 수행하지 못한다. 응답성이 안 좋아진다. 멀티스레드 프로그래밍, 스레드를 여러개 사용해 작업을 처리하는 프로그래밍 기법 각각의 스레드가 한번에 하나의 작업을 처리하므로 여러작엉블 동시에 처리하는 것이 가능해진다. (병렬처리) 1.3 스레드, 스레드 풀을 이용한 멀티 스레드 프로그래밍 Thread 클래스를 이용한 방법 및 한계 Thread 클래스를 상속하는 클래스 class ExampleThread :.. 더보기
코틀린 동시성 프로그래밍 - 3 Job Vs Deferred Job : -Fire and Forget 방식 작업 - 한 번 시작된 작업은 예외가 발생하지 않는한 대기하지 않는다. - launch 블록을 통해 생성 - 잡의 예외는 잡을 생성한 곳 까지 전파된다. 잡의 라이프 사이클 wait children +-----+ start +--------+ complete +-------------+ finish +-----------+ | New | -----> | Active | ---------> | Completing | -------> | Completed | +-----+ +--------+ +-------------+ +-----------+ | cancel / fail | | +----------------+ | | V V +--.. 더보기
Reactive Programming Pull vs Push 리액티브 프로그래밍은 Push, Pull 로 모두 구현가능하다. Producer -> Cosumer 관계에서 Producer는 데이터를 생상하는 쪽 Consumer는 데이터를 받는 쪽이라고 가정한다. Pull방식 : Consumer가 데이터가 필요할때 Producer에게 요청하는 방식 그리고 요청받은 데이터가 들어오면 콜백 함수나 이벤트 핸들러 등을 통해 그 데이터를 처리 하는 방식 함수의 리턴 타인이 Promise, Iterable 등이면 Pull 방식이다. 이 방식은 문제가 있다. 위 다이어그램은 Service(Consumer), Database(Producer) 사이의 플로우이다. getNextAfterId로 Cosumer가 요청 (pull) 하면 Producer는 쿼리해서 response를 내려준.. 더보기
1 새로운 인프라 환경이 온다. 1. 애자일 방법론 사용자마다 독립적인 환경에서 개발해도 모두 동일한 결과가 보장되며 성능을 보장하며 가용 리소스를 최대한 확보할 수 있는 인프라 환경 => 컨테이너 인프라 환경 2. 컨테이너 인프라 환경 컨테이너를 중심으로 한 인프라 환경 하나의 운영 체네 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 상태 각 가상머신마다 독립적인 운영체제를 가지고 있는 방식과 달리 운영체제를 공유하고 있어 자원을 더 효율적으로 사용할 수 있다. 3. 모놀리식 vs 마이크로 서비스 모놀리식 아키텍처 (Monolithic Architecture) 하나의 어플리케이션에 여러 가지 기능을 가진 서비스들이 통합돼 있는 구조 모놀리식 아키텍처은 초기 구성이 용이하며 개발이 단순하며 코드 관리가 간편하지만 코드 .. 더보기
카프카 개요 및 설명 팀에서 카프카를 사용한다는데 도대체 이야기를 이해하기 힘들어서 공부하면서 포스팅 하기로 함 Before Kafka 처음에는 앱간 데이터 전송은 단순한 Source -> Target 단방향 통신으로 시작했으나 Source, Target 앱 개수가 많아지면서 데이터 전송 라인이 매우 많아짐. => 데이터 전송 라인이 많아지면 앱 배포와 장애에 대응하기 어려워짐 => 타깃 애플리케이션 장애시 그대로 소스 애플리케이션으로 장애 전파 => 데이터 프로토콜 파편화가 심해짐(데이터 포맷에 변경이 생기면 온군데에다가 다 수정해줘야함) After Kafka - 아파치 카프카는 LinkedIn 데이터팀에서 만든 신규 시스템으로 Source와 Target 사이의 Coupling을 느슨하게 결합시켜 Source는 카프카에 데.. 더보기