2014년 12월 21일 일요일

OS X 에서 Postgresql 설치하는 두가지 방법

오전 7:49 Posted by jonnung No comments
개발할때는 내 로컬환경에 데이터베이스를 사용하고 싶어서 Postgresql을 설치해 보았다. 방법은 찾아보면 여러가지가 있겠지만 맥 사용자라면 대부분 Homebrew로 패키지들을 설치하니까 일단은 Homebrew로 Postgresql을 설치했다. 그런데 지금은? 지웠다. ㅋㅋㅋ (이유가 뭘까?) 일단 내가 진행한 Homebrew 설치 과정을 간단하게 정리하자면 아래와 같다. # Homebrew 업데이트 $ brew update # Postgresql 설치 $ brew install postgresql #...

2014년 12월 18일 목요일

Python으로 좀비 프로세스 만들어보기

오후 4:40 Posted by jonnung No comments
원래는 좀비/고아 프로세스만 찾아서 kill 하는 것만 하려고 했으나, 조사를 좀 해보니까 좀비프로세스가 시스템 자원을 그렇게 대놓고 차지하는 것은 아니더라.. 프로세스 제어블록을 차지하는 것이기 때문에 엄청나게 폭발적으로 생기는 좀비가 아니고서야 큰 영향은 없다고 싶었다.  좀비 프로세스가 생기는 원인은 부모 프로세스가 자식 프로세스의 종료 코드를 받지 않고, 무한히 대기하는 상태이다. 한마디로 자식이 좀비가 되도 부모는 종료된 상황이 아닌 것이라는 말이지! (고아 프로세스는 자식이 끝나지도 않았는데 부모가 끝나버려서 자식이 고아가 된 경우를 말함) 아무튼 확인을 해보기 위해서 좀비프로세스 발생시키는 스크립트를 하나 만들어 보았다. ...

2014년 12월 5일 금요일

코딩 호러가 들려주는 진짜 소프트웨어 개발 이야기 - 도서 리뷰

오후 10:51 Posted by jonnung No comments
<코딩 호러가 들려주는 진짜 소프트웨어 개발 이야기, 제프 앳 우드 지음, 2012.11, 위키북스>  코딩 호러의 두번째 시리즈이다. 지난 번에 '코딩 호러의 이펙티브 프로그래밍'을 너무 재밌게 읽어서 바로 이어서 읽어보았다.  이 책도 코딩 호러에 실린 재밌는 글들을 모아 놓은 것인데 1편보다 훨씬 흥미로운 이야기들이 많다.  개인적인 생각이지만 현업에서 겪게 되는 상황들과 느끼는 고민거리들과도 더 잘 맞아 떨어지는 내용들이 많다.  그러다보니 책을 읽다보면 제프 형(이제...

2014년 11월 30일 일요일

프로그래머 철학을 만나다 - 도서 리뷰

오전 7:10 Posted by jonnung No comments
<프로그래머 철학을 만나다, 유석문 지음, 2014.08, 로드북>  올해 여름이 끝나갈 무렵에 '유석문'님의 '라이엇 게임즈' 입사 후기를 읽어보고 참 멋지다라고 생각했었다. 그리고 때마침 기회가 되서 '유석문'님이 발표하는 세미나에 참석할 기회가 있었는데 미련하게도 날짜를 착각하는 바람에 다른 약속을 잡아버려서 결국 취소했다. 얼마나 아쉬웠던지...  얼마전에 회사에서 운영하는 도서관에 신간 몇권이 들어왔는데 대여를 한 책이 '유석문'님이 쓰신 책이였다. 왠지모를 반가움!  실제로...

2014년 10월 14일 화요일

코딩호러의 이펙티브 프로그래밍 - 도서 리뷰

오전 9:12 Posted by jonnung No comments
<코딩 호러의 이펙티브 프로그래밍, 제프 앳 우드 지음, 2013.03, 위키북스>  작년(2013년)쯤에 이 책이 도서관에 비치된 것을 봤을 때만해도 제목 때문인지 뭔가 어려울 것 같은 느낌을 받았다. 지금 생각하면 조금 웃긴게 "코딩 호러"라고 하니 무시무시한 느낌도 나고, "이펙티브(Effective)"라고 하니 '그래..이펙티브 하게 해야겠지.. 그런데 지금 난 잘 못할 것 같아'라고 생각 했던 것 같다. (겁먹은 거겠지..) 아무튼 지금은 그게 중요한건 아닌 결국에 시간이 흘러서 내가 이 책을 펼치는...

2014년 10월 12일 일요일

파이썬 소켓(socket) 모듈을 사용한 네트워크 프로그래밍 - Python 도서 리뷰

오전 1:49 Posted by jonnung , 8 comments
네트워크 프로그래밍(2/2)  이전 포스트에서 '클라이언트/서버 아키텍처와 소켓 (socket)' 부분에 대해 정리했다. 이번에는 이 개념을 파이썬에 도입해서 프로그램을 작성 해보자. 일단 책에 나오는 TCP 서버/클라이언트, UDP 서버/클라이언트를 예제를 통해서 주로 사용하는 socket 모듈에 대한 구조를 파악해봤고, 이번에는 연습문제 중에 하나인 '전이중(full-duplex) 채팅 프로그램'을 만들어 보겠다. 책에는 나오지 않지만 검색을 해보던 중에 소켓 프로그램의 주요 이슈중 하나인...

클라이언트/서버 아키텍처와 소켓(Socket) - Python 도서 리뷰

오전 12:46 Posted by jonnung , No comments
네트워크 프로그래밍(1/2) '코어 파이썬 애플리케이션 프로그래밍' 의 두번째 챕터 '네트워크 프로그래밍'에 대한 리뷰 형식의 포스트 이다. 이번 챕터에서는 네트워크 프로그래밍의 배경 지식과 파이썬에서의 소켓(Socket)을 사용하는 방법을 설명하고 있다. 클라이언트/서버 아키텍처 클라이언트/서버 아키텍처의 전제는 하드웨어일 수도, 소프트웨어일 수도 있는 서버가 하나 이상의 클라이언트(사용자)에게 '서비스'를 제공한다는 점 서버의 존재 목적은 (클라이언트의) 요청을 기다리다가 클라이언트의 요청에 응답 후 다시...

2014년 9월 21일 일요일

파이썬의 정규식(re) - Python 도서 리뷰

오전 9:02 Posted by jonnung , 1 comment
추석전에 연휴기간에 볼 책을 빌리러 도서관에 갔다가 신간으로 들어온 책을 1빠로 득했다.  최초 번역판일 것 같아서 빌리지말까 하다가 읽어보니까 번역이 상당히 잘 되어 있는 것 같은 느낌이다. 아 그리고 이미 예전에 '코어 파이썬 프로그래밍' 이라는 책에서 '응용' 부분만 좀 더 확장했다는 것 같다. 그런데 반납일까지 1주일 남았는데 1챕터밖에 못봤다. ㅠ_ㅠ  어짜피 사려고 했으니까 뭐;;; (페이지랑 가격이 좀 후덜덜;;; 하긴 함) 아무래도 파이썬에 대한 책이고, 실습(실행 > 확인) 위주로 공부를...

Python - 클로저(Closure) 쉽게 생각하기

오전 8:28 Posted by jonnung 1 comment
함수 안에 다른 함수가 정의된 함수를 중첩 함수(Nested Function) 이라고 한다. 중첩 함수는 자신을 감싸고 있는 함수가 가진 변수에 접근 할 수 있다. 이건 자바스크립트(Javascript)도 동일한 특성이다.  일단 간단한 예제 코드를 살펴보자. #-*- coding: utf-8 -*- def print_hello(msg): def inner_print(): # nonlocal msg # python3.x에만 있는 키워드 print('Hello %s' %...

2014년 9월 16일 화요일

gae-init (약간) 사용 후기, 구글 앱 엔진(Google App Engine) 웹 어플리케이션 빠르게 시작하기

오전 6:53 Posted by jonnung , , , , , No comments
gae-init 은 Google App Engine에 웹 어플리케이션을 좀 더 쉽게 시작하기 위한 프로젝트 이다.  일반적인 웹 어플리케이션 개발에서 수행하는 공통적인 작업들(파일 구조를 잡고, 최신 라이브러리를 다운로드 받고, 이전 프로젝트에서 개발한 코드 조각들을 모으는 등)을 자동으로 세팅 할 수 있도록 도와준다. 개발자는 더이상 시간 낭비 하지 않고, 좀 더 어렵고 중요한 작업에 집중할 수 있는 것이다. 공식 문서에서 제공하는 튜토리얼(Tutorial) 에서는 gae-init을 사용해서 개발,...

2014년 8월 11일 월요일

프론트엔드 웹 개발을 위한 자동화 관리 툴: Yeoman, Grunt, Bower

오전 6:54 Posted by jonnung , , , No comments
이미지 출처: http://yeoman.io/learning 최근에 개인적인 스터디 그룹 프로젝트에 Grunt와 Bower를 적용 해봤는데 정말 재밌었고, 나름대로 상당히 만족을 하고 있다. 잘 배워두고 자주 사용하면 기본적인 구조를 잡는 것부터 각종 라이브러리 설치와 의존성 관리, 그리고 각종 빈번한 작업들(소스 코드 합치기, 압축 등등)을 편리하게 수행하고 관리 할 수 있을 것 같다. 이번 포스팅은 Grunt, Bower와 더불어 Yeoman에 대한 간단한 소개와 참고 링크 정도를 남겨 본다. Grunt 자바스크립트...

2014년 7월 10일 목요일

Python - 파이썬2.x Unicode와 UTF-8 인코딩 감잡기

오후 8:47 Posted by jonnung 3 comments
 파이썬2.x의 기본 인코딩은 ascii 이다. 파이썬 스크립트에서 한글을 사용하게 될 때 파이썬은 ascii 인코딩일 것으로 예상하고 해석하려고 하지만 한글을 ascii로 해석이 불가능 하기 때문에 SyntaxError가 발생 한다.  이 문제를 해결하기 위해 파이썬 파일의 최상단에는 아래와 같은 주석을 추가하면 조금 도움이 된다. #-*- coding: utf-8 -*-  이 주석이 있으면 해당 파이썬 스크립트는 utf-8로 인코딩 되어 있다는 것을 미리 알려주는 역할을 한다.  여기서 잠깐 유니코드(unicode)와 utf-8에 대한 설명을 간단하게 하자면 utf-8은 유니코드를 위한 문자 인코딩 방식 중에 하나이다. utf-8 인코딩은 유니코드 한 문자를 나타내기...

2014년 6월 30일 월요일

javascript 상속(Inheritance) - 의사 클래스 방식과 Object.create 메소드 의 연관성

오전 6:08 Posted by jonnung 1 comment
객체지향 프로그래밍에서 상속은 너무나 자연스럽게 다뤄지는 프로그래밍 기법이다. 상속은 코드 재사용의 한 형태이고, 부모 객체의 데이터 타입 체계를 그대로 전달 받기 때문에 개발 비용을 감소 시켜주는 장점이 있다 하지만 일반적인 객체지향 프로그래밍 언어와 다르게 자바스크립트는 클래스(class)가 없다. 상속(Inheritance) 메커니즘을 구현하기 위해서는 자바스크립트의 특징이라고 할 수 있는 프로토타입(prototype)을 기반으로해서 부모 객체를 자식에게 상속 할 수 있다. 이것은 다시 말해 객체가 다른 객체로 바로 상속 된다는 것을 의미 한다. 이번 포스트에서 정리할 내용은 자바스크립트의 상속 패턴중에서 함수의 프로토타입 프로퍼티를 활용한 방식이다. 지난번 javascript 함수 -...

2014년 6월 23일 월요일

javascript 함수 - 함수 객체의 프로토타입 프로퍼티 이해하기

오전 8:17 Posted by jonnung No comments
앞으로 몇번에 걸쳐서 자세히 알아볼 부분은 모든 개발 언어에서 굉장히 많이 사용하고, 자바스크립트에서도 핵심이라고 할 수 있는 함수에 대한 부분이다. 그리고 이번 정리에서는 함수 객체와 프로토타입 연결 특성과의 관계에 대해서 중점적으로 알아볼 것이다. 객체의 프로토타입(prototype) 자바스크립트에서 숫자, 문자열, 불리언(true/false), null, undefied를 제외한 모든 값은 객체이다. 생소한 표현이지만 숫자나 문자열, 불리언은 메소드를 갖기 때문에 유사객체라고도 한다. 이 유사객체에 대한 부분은 다음 기회에...

2014년 4월 4일 금요일

Python 기초 팁과 트릭

오전 3:38 Posted by jonnung No comments
객체 진위 객체의 길이가 0인지, 값이 비어 있는지 체크할 필요가 없다. 파이썬의 객체는 비어있으면 거짓(False)이다. 숫자 0도 거짓이다. 삼중 따옴표를 사용한 문자열 선언 삼중 홑따옴표든 쌍따옴표든 내부에 인용구 표현처럼 또 다른 삼중따옴표를 쓸 수 있다. 이스케이프가 필요 없어진다. 문자열안에 부분 문자열 찾기 부분 문자열을 찾기위해 find 메소드를 사용할 필요가 없다. 리스트, 튜플, 사전을 다루듯이 in을 사용하면 같은 효과를 볼 수 있다. 람다함수 람다함수는 단 하나의 표현식의 결과를 돌려주는 미니 함수 이다. 람다함수는 그 자체가 표현식이다. 다른 서술문 안에 사용 될 수 있다. 함수를 인자로 넘겨여 할때나, 복잡한 연산을 여러번 하고 싶을때 람다함수를 활용할...

2014년 1월 27일 월요일

Concept git rebase and example

오전 6:47 Posted by jonnung 1 comment
git으로 코드의 버전관리를 하면서 브랜치 작업을 많이 하게 되는데 사실 난 브랜치 생성을 좀 즉흥적으로 하는 감이 없지 않아 있다. 무언가 작은 것이라도 개발을 할 때는 브랜치 계획을 어느정도 수립해 놓게 되면 느닷없는 브랜칭으로 커밋 로그가 복잡해지는 일은 없을 것 같는 생각이 든다. 브랜치를 사용하면서 개발을 하다 보면 어느 순간에는 머지(merge)를 하기 마련이다. 그런데 예전에 Git 브랜치 배우기을 해보면서 git에 merge와 결과는 같지만 동작 방식이 다른 리베이스(rebase)라는 기능이 있다는 사실을...

2014년 1월 12일 일요일

Git 기본 명령어 정리와 참고하면 좋은 링크 정보

오후 5:01 Posted by jonnung No comments
 작년에 처음 Github를 알게 되면서 Git을 배워볼 기회가 있었다. 개인적으로 진행하는 스터디에 활용을 해보기는 했으나, 당시 회사에서 사용하는 버전관리 프로그램으로 SVN에서 머큐리얼(Mercurial)로 전환하는 시기였다. 그러다 보니 머큐리얼도 학습하게 되었고, 사용하게 되면서 당연히 Git보다는 머큐리얼을 사용하는 비중이 높아졌다.  하지만 시간이 흐르면서 Github에서 소스 코드를 검색하고, 참고하는 빈도가 증가하는 것을 느끼게 되었다.  그러면서 드는 생각이 올해는 내가 만든 소스 코드들을...