Skip to main content

dev_roach

Latest articles

  1. Python 톺아보기 1화 - 토큰화(Tokenization)

    Python 에서는 코드를 의미 있는 단위로 나누기 위한 토큰화 작업을 거친다. 이 작업을 거치면 코드는 토큰으로 분해된다. 오늘은 tokenize 모듈을 사용해서 이를 한번 눈으로 보고 확인해보도록 하자. import tokenize import io # 토큰 타입 이름 확인 print("주요 토큰 타입:") print(f" NAME: {tokenize.NAME} - 변수명, 함수명 등") print(f" NUMBER: {tokenize...

    Feb 6, 20264 min read34 views

  2. 좀비 프로세스로 인한 트러블 슈팅기

    서론 크롤러를 운영하다보면 규모 및 속도에 따라서 크게 두가지 부류로 크롤러를 운영하게 된다. html 만을 http request 로 가져와서 Parsing 하는 경우 javascript 들이 로딩되고 실행되고 나서 데이터를 가져오기 위해 selenium 같은 헤비한 크롤러를 돌리는 경우 이 외에도 여러 방식이 더 있을 수 있지만 보통은 이 두가지 부류로 크롤링을 하게 된다고 생각한다. 첫번째 http request 의 경우 별도의 프...

    Jan 19, 20266 min read34 views

  3. Postgresql 커버링 인덱스

    Index? Index 란 무엇이고 왜 중요할까? Index 는 데이터베이스에서 File System 에 일어나는 Random I/O 를 줄이기 위해 존재한다. 랜덤 I/O 란, 해당 데이터가 저장된 Array 에 우리가 특정 주소값 i 를 넣어 조회하듯 일어나는 이벤트를 뜻한다. 그럼 느리지 않을거 같은데 왜 랜덤 I/O 를 줄여야 하지? 라는 고민이 충분히 들수도 있다. 이러한 이유는 File System 까지 가는 계층에서 드는 비용과 전...

    Jan 18, 20266 min read40 views

  4. Postgresql MVCC

    postgresql 의 MVCC 를 살펴보면 아주 재미있다. MVCC(Multi-Version Concurrency Control) 은 동시성을 처리하는 핵심아이디어로 기본적인 전제로 “읽기는 쓰기를 블록해선 안되고, 쓰기도 읽기를 블록하지 않는다” 라는 아이디어 에서 시작한다. 이 개념을 적용하기 위해서는 Postgresql 에서는 xmin 과 xmax 를 활용한다. Postgresql 에서 테이블안에 있는 데이터는 튜플(Tuple) 형태로 ...

    Jan 14, 20266 min read34 views

  5. [짧은 글] 1024, 2048, 4096 크기를 지키는게 왜 중요할까?

    개요 프로그래밍을 하다보면 무언가 읽기 위해 buffer 를 설정할때 꼭 버퍼의 사이즈가 512, 1024, 2048, 4096, … 등으로 올라가는 것을 확인할 수 있다. 왜 이런것일까? 운영체제 하드웨어마다 다르겠지만 보통 하드웨어에서는 섹터(Sector) 단위로 데이터를 읽어온다. 예전 하드웨어에서는 512KB 를 읽어서 로드해주고, 최신 하드웨어에서는 4096KB 크기로 읽어서 올려준다. 즉, 내가 1KB 를 읽던, 2KB 를 읽던 하드...

    Dec 28, 20255 min read68 views