yunki Kim Blog

「Do What You Love」

Chapter 8. 명명을 잘 하는 방법

  좋은 이름을 사용하면 LTM을 활성화하여 코드 도메인에 대해 이미 알고 있는 관련 정보를 찾을 수 있다. 반면, 나쁜 이름은 코드에 대한 잘못된 추측을 하게 하고 오개념을 유발한다. 이름이 중요한 이유   클래스나 자료구조가 수행하는 모든 작업을 모호하지 않은 하나의 단어로 표현하는 것은 쉽지 않은 일이다. 예루살렘 히브리 대학의...

Chapter 7. 생각의 버그

  버그는 오타와 같이 일을 엉성하게 처리했을 때 발생하기도 하지만, 많은 경우 생각의 착오로 인해 발생한다. 왜 두 번째 프로그래밍 언어가 첫 번째보다 쉬울까?   이미 배운 지식은 다른 영역에서도 유용하다. 이를 전이(transfer)라 한다. 지식 전달은 이미 알고 있는 정보가 새로운 것에 도움이 될 때 일어난다.  &...

Chapter 6. 코딩 문제 해결을 더 잘하려면

  문제에 대해 다양한 해결책을 고려할 때, 각각 저마다의 장점을 가지고 있기에 해결책을 결정하기 어렵다. 여러 소프트웨어 설계에 관한 결정을 할 때 도움이 되는 두 가지 프레임워크에 대해 다뤄보자.    먼저 문제 해결과 프로그래밍 작업 도중 두뇌가 생성하는 심적 표상(mental representation)을 살펴보자. ...

쿠버네티스 시작하기

  쿠버네티스를 검색하면 "쿠버네티스는 컨테이너를 오케스트레이션 하는 도구"라고 정의하고 있는 글을 심심치 않게 볼 수 있다. 하지만, 컨테이너가 뭔지, 오케스트레이션이 뭔지를 정확히 알지 못하기 때문에 저 문장 자체를 명확히 이해하지 못한다. 우선 저 문장을 이해하기 위해 필요한 개념들을 살펴보자.   쿠버네티스를 이해하는 대 필요...

JVM 겉핥기

  JVM의 기술 스택의 구조를 이해해 보자. JVM의 전반적인 구조는 다음과 같다. 인터프리팅과 클래스로딩   JVM은 스택 기반 해석 머신이다. 물리적인 레지스터는 없지만, 일부 결과를 실행 스택에 보관하고 맨 위의 값을 가져와 계산한다. JVM 인터프리터의 기본 로직은, 평가 스택을 이용해 중간값들을 담아두고, 가장 마지막에...

서버 리소스 사용량 관측하기

  프로젝트를 하던 도중 세부적인 CPU 사용량과 context switching에 소모되는 리소스를 관측해야 하는 일이 생겨 이를 도와줄 수 있는 툴에 대해 찾아보게 되었다. vmstat   메모리, 시스템 프로세스, 페이징, 인터럽트, I/O, CPU 스케줄링에 대한 정보를 수집해 전체 호스트 수준에서 보여주는 툴이다. ...

03. 운영체제의 구조

커널과 인터페이스   커널은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로 OS의 성능을 좌우한다. OS에는 인터페이스가 존재하는데, 이는 유저의 명령을 전달하고 실행 결과를 알려주는 역할을 한다. 인터페이스의 예로는 유닉스의 셸(shell)이 있다. 따라서 운영체제는 다음과 같이 크게...

Chpater 5. 코드를 더 깊이 있게 이해하기

  이전 장에서 문법을 알고 변수들의 관계를 이해하는 것이 코드를 읽는 대 도움이 된다는 것을 서술했다. 하지만 코드를 생각하는 데 큰 역할을 하는 더 깊은 주제가 있다. 코드에 대해 깊이 이해하는 법을 논의해 보자. '변수 역할' 프레임워크   변수가 어떤 역할을 하는지 알아내는 것이 코드 추론에서 중요한 역할을 한다. 그...

Kilometer 성능 테스트 사전 조사

개요   프로젝트 기능 구현은 완료되었으나 프로젝트 성능 최적화가 아직 이루어지지 않은 상태입니다. 따라서 전체 시스템 성능을 확인할 수 있는 성능 테스트를 진행한 뒤 개선점을 찾고 개선하고자 합니다. 성능 테스트는 여러 가지 테스트를 하위 테스트로 가지고 있으며 테스트 진행에 사용하는 도구 역시 다양합니다. 따라서 본 글은 본격적인 성능 테...

Chapter 4. 복잡한 코드 읽는 방법

  2장에서 효과적으로 코드를 나누는 법, 3장에서는 LTM에 더 많은 문법을 저장하는 법을 배웠다. 이 둘을 이용하면 코드를 읽는 데에 도움이 되지만 너무 복잡한 코드를 이해하기에는 역부족일 때가 있다. 따라서 작업 기억 공간(working memory - 두뇌에서 처리하는 능력)의 기저에 있는 인지 과정을 살펴보고 복잡한 코드를 좀 더 쉽...