Binary tree & Graph

Binary tree

Binary tree는 node가 최대 2개의 child를 갖는 tree를 말한다. tree는 parent -> child의 방향이 있는 edge와 node로 구성된다.

Python sort algorithm

Python Sort Algorithm

파이썬 알고리즘 공부를 하면서 가장 첫장에 나오는 부분은 대학시절 자료구조 시간에 배운 기본적인 정렬 알고리즘들이다.

빌더 패턴

Builder Pattern

class를 사용하도록 리팩토링을 하던 중 생성자에 argument가 너무 많아 이를 어떻게 하면 깔끔하게 표현할까 고민하며 검색해보니 많은 이들이 빌더 패턴을 추천해주었다.
빌더 패턴이 무엇인지 알아보고자 한다.

python algorithm study 01

Python Study 01

node.js만 하다보니 다른 랭귀지를 전혀 못보는 까막눈이 되어 다른 랭귀지도 공부하고 알고리즘도 다시 볼겸 책을 사서 공부하기로 시작했다.
책 제목은 <파이썬으로 배우는="" 실전="" 알고리즘="">

Node.js Syntax check 'return' error

Node.js 4.2 의 새 기능

node.js가 argon(4.2)으로 버젼을 업데이트 하면서 새로이 생긴 기능 중 하나가 syntax check이다.
사용법은 간단하다.

Node.js With ES6

Node.js 4.x에서 정식 기능으로 채택된 ES6기능들

이전과 달리 –harmony를 argument로 주지 않더라고 기본적으로 제공하는 ES6기능들이 생기었다.
상세한 내용은 https://nodejs.org/en/docs/es6 를 참고하면 된다.
여기서는 간단한, 흥미로운 몇가지에 대해서만 간단히 정리한다.

Git LFS

Git

git은 대표적인 DVCS입니다. DVCS는 CVCS와 다르게 local commit이 가능하여 committer마다 reposotory를 개별적으로 관리가능한 장점이 있습니다.
또한 git은 이전 commit에 대한 diff 정보만을 저장하는 것이 아닌 commit할 당시의 모든 정보를 담고 있는 snapshot을 저장하게 됩니다.
따라서 git을 통한 repository를 오래동안 쓰다보면 큰 파일로 인해 repository의 용량이 매우 커지게 되는 현상이 발생하게 됩니다.
오래동안 사용하던 repository를 clone할때는 보통 특정 commit이후 부터 clone 하도록 하는 다음의 command를 사용하기도 합니다.

git clone --depth <depth_number> url

depth의 숫자만큼 최신 commit만을 clone하게 됩니다.
특히나 큰 파일을 repository에 포함할 경우에는 repository크기가 매우 커지게 되어 조금은 골칫거리가 되기도 합니다.
이번에 큰 파일을 다루기 위한 git-lfs라는 새로운 기능이 발표되었습니다.

PostgresSQL Concurrency Create Task

Problem?

현재 서비스는 node.js(0.12.0)과 postgres 9.3.5로 진행하고 있습니다.
서비스를 살펴보던 중 의도하지 않은 상황이 발생하게 되어 postgres를 살펴보게 되었습니다.

iOS Smart App Banner

iOS Safari Deep link problem

Mobile Page에서 관련된 App을 실행시켜주거나 App을 설치할 수 있는 페이지로 이동을 도와주는 deep link기능은 safari에서도 제공됩니다.
iOS Safari에서도 다른 브라우저들과 마찬가지로 location.href 등을 이용하여 구현할 수 있고 App이 설치되어 있는 경우에는 잘동작합니다.
문제는 App이 설치되어 있지 않은 경우에 발생합니다.

Character Set and Character Encoding

Node.js를 사용하면서 나오는 .length 문제점

node.js에서는 문자열의 길이를 구하기 위해 length property를 사용합니다.