yunki Kim Blog

「Do What You Love」

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

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

03. 운영체제의 구조

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

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

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

Kilometer 성능 테스트 사전 조사

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

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

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

Chapter 3. 프로그래밍 문법 빠르게 배우기

 문법을 기억하기 위한 팁   프로그래밍 언어 문법을 기억하는 일은 상당히 어렵다. 또 한, 많은 프로그래머들이 인터넷을 활용하면 되므로 문법 기억은 중요하지 않다고 한다. 하지만, 이전 장에서 언급했듯 관련 내용을 알고 있는 것이 코드를 효율적으로 읽는 것에 상당한 도움이 된다(청킹과 검색에 유리하다). 또 한, 업무 중단은 생각보...

Chapter 2. 신속한 코드 분석

  코드를 읽는 행위에 대해 살펴보자. 연구(Measuring Program Comprehension)에 의하면 프로그래머는 프로그래밍 시간 중 60%를 코드 이해에 사용한다. 따라서 정확도를 유지하면서 코드를 빨리 읽어야 효율이 증가한다. 코드를 신속하게 읽기   코드를 읽을 때 대부분의 프로그래머는 그 코드에 존재하는 특정 정보를...

5.트랜잭션과 잠금

  트랜잭션은 원자성을 보장해 준다. 이를 통해 작업의 부분 업데이트(Partial update - 작업의 일부만 적용되는 현상)가 발생하지 않게 한다.    트랜잭션, 락, 격리가 비슷한 개념 같지만 다음과 같은 차이가 존재한다.   - 트랜잭션: 데이터 정합성을 보장하기 위한 기능.   - 락: 동시성 ...

Chapter1. 코딩 중 겪는 혼란에 대한 이해

  프로그래밍을 하다 보면 여러 가지 혼란을 겪게 된다. 이 중 코드 레벨에서 겪는 혼란의 종류는 크게 세 가지다.   1. 지식의 부족: 프로그래밍 언어나 알고리즘, 업무 영역에 대한 지식이 없을 경우 생기는 혼란.   2. 정보의 부족: 코드를 이해하기 위해 필요한 정보가 불충분할 경우 생기는 혼란.   3. 처...

4.1 Mysql 엔진 아키텍처

Mysql 서버는 Mysql 엔진과 스토리지 엔진으로 구분된다. 스토리지 엔진은 핸들러 API를 만족시키면 누구든지 스토리지 엔진을 구현해 MYSQL 서버에서 사용할 수 있다. 4.1 Mysql 엔진 아키텍처 기본적인 Mysql 엔진 구조는 다음과 같다. Mysql 엔진 구조는 다른 DBMS 구조와 다르기 때문에 다른 DBMS에는 없는 이점을 가진다....