Category Archives: Uncategorized

if else 대신 빠른 return의 코딩 스타일

회사에서 코드 리뷰를 하다가 알게된 if-else 대신 빨리 return하는 코딩 스타일인데 접해보지 않은 분들도 계실것같아 올려봅니다. stack overflow에도 Programming style: should you return early if a guard condition is not satisfied?란 제목으로 글이 올라와 있기도 하고 effective go에도 간단히 언급되어 있는 스타일입니다. stackoverflow에 있는 질문을 옮겨보자면 다음 두가지 코딩 스타일 중 어느것이 나은가라는 것입니다. 1. […]

Sorting two arrays at once in Python

If two arrays should be sorted with the same criteria, use zip.

Linux Kernel 3.9 에서의 SO_REUSEPORT

http://freeprogrammersblog.vhex.net/post/linux-39-introdued-new-way-of-writing-socket-servers/2 https://lwn.net/Articles/542629/ SO_REUSE_PORT를 사용해서 소켓을 만드는 프로세스를 여러개 띄우면 부모 process 역할은 커널이 알아서 한다. 이 때 어떤 child process가 요청을 처리할지도 공평하게 분배해서 workload의 분산이 잘 이루어짐. 이 방식이 정말 사용하기 쉬운게, 자식 프로세스는 필요하면 그냥 더 띄우기만 하면 되기 때문. 더구나 이건 pre-fork model이므로 접속이 있을때마다 자식 process를 띄우는 것에 비해 프로세스의 수나 […]

HTTPS상의 압축에 따른 취약점 공격: CRIME과 BREACH

제가 SSL/TLS는 잘 몰라서 틀린점이 있을 수 있습니다. 그리고 편의를 위해 개략적으로만 설명합니다. CRIME의 기본 아이디어는 다음과 같습니다.. (편의를 위해 공격자: attacker, 악의적인 사이트: evil.com, 피해자: victim, 공격대상 사이트: target.com 의 용어를 사용) TLS상에 주고받는 데이터를 해독할 수는 없지만 주고받는 데이터의 크기는 알 수 있다고 가정. attacker가 사용자가 대상 사이트에 전송하는 데이터에 임의의 값을 삽입할 […]

더 빠른 모바일 사이트를 위한 구글의 가이드라인

https://developers.google.com/speed/docs/insights/mobile DNS Lookup, TCP Connection, HTTP Request/Response에 600ms 가 소요되므로 1초안에 페이지를 로딩하려면 400ms안에 (서버/클라이언트) 렌더링이 끝나야함. 특히 다음에 유의: 1) 서버측 렌더링은 200ms 안에 종료할 것. 2) 리다이렉트는 최소화할 것 3) TCP Slowstart로 인해 congestion window가 커지기 전까지 총 10개의 TCP Packet(14KB)를 주고 받으므로 이 안에 ATF(above the fold)의 렌더링을 끝낼 것. 4) ATF에서 […]

Term의 분포

Heaps law 코퍼스내 unique term의 수는 (문서의 길이)^b 에 비례. b는 보통 0.4-0.6사이의 수 Zipf’s Law 어떤 term의 빈도는 term빈도에따라 term들을 나열했을때의 랭킹에 반비례

웹 분석과 데이터 마이닝을 위한 확률적 자료구조

Probabilistic Data Structures for Web Analytics and Data Mining 이런 훌륭한 글이 있군요. 위 글은 많은 양의 데이터에서 각 아이템의 출현횟수를 세거나 unique 아이템의 수가 몇개인지 세거나 하는 방법들입니다. 예를들어 integer가 엄청나게 많을때 각 값의 출현횟수 세기같은 경우죠. 간단하게 관심가는 것들, 기본적인 내용으로 정리해봅니다. 1. 입력에 몇개의 unique한 수가 있는지 세기(Cardinality Esitmation): Linear Counting m […]

OSX에서 Latex 설치하기

http://curriq.com/course/73 ktug 링크가 죽어있는 것 같아서 정리된 내용을 찾아 올려둡니다.

대량의 데이터에서 대략적으로 unique item 의 수 세기

http://blog.notdot.net/2012/09/Dam-Cool-Algorithms-Cardinality-Estimation HyperLogLog 라고 하는 알고리즘. 셋이 주어지면 아이템들의 해시값을 구한 뒤 해시값의 맨 앞에서 연속적으로 나타난 0의 최대 갯수를 세고, 이로부터 전체 unique 데이터 갯수를 알아냅니다. 예를들어 해시함수의 출력이 m자리 이진수라고 해보죠. n개 수를 해싱했더니 나온 n개 해시값들중에서 연속된 0이 가장 길게 나온경우는 세자리였다고 해보겠습니다. 연속적으로 0이 3자리 나오는건 약 2^3개의 엘리먼트를 볼때마다이므로 unique item […]

C++에서 const Klass&반환값 형태의 단점들.

논의하고 싶은 상황은 예를들면 아래와 같은 경우입니다. foo()는 Klass을 반환해야할까요 아니면 const Klass&을 반환해야할까요? const Klass& 형태의 리턴을 원하는 까닭은 당연하게도 퍼포먼스입니다. 그러나 Klass을 반환해야하는 이유는 더 많습니다. const reference가 아니라 value를 반환해야하는 이유 만약 foo()의 구현이 내부에서 복잡한 연산을 한다음 Klass를 리턴하는 것이라면 Klass 복사하는 것을 없애는 것이 전체 실행시간에 큰 영향이 없습니다. 특히 […]