개발 이야기

테스트 주도 개발 : Test-Driven Development by Example

June 13, 2017 Book

예전에도 테스트주도개발에 관한 글을 인터넷에서도 한참 찾아보고 읽었었다. 글을 읽고서 TDD를 행동으로 옮겨보면 대부분 글이 구호만 잔뜩 나열했지 무슨 일을 어떻게 해야 하는지 과정을 제대로 설명하는 경우가 거의...

제네릭 없는 PHP 인터페이스

May 26, 2017 Code

PHP를 사용하면서 가장 아쉬운 부분은 인터페이스다. PHP는 인터페이스를 지원하고 있고 이 인터페이스를 활용한 타입 힌트, 의존성 주입 등 다양한 방식으로 적용 가능하다. 하지만 제네릭 타입이 존재하지 않아서 타입...

왜 클래스죠?

May 10, 2017 Dev

최근 아키텍처에 관한 책을 읽고 있는데 레퍼런스로 나온 글 중 하나로 Hadi Hariri의 글 Refactoring to Functional–Why Class?을 번역했다. 이 글은 함수형으로 리펙토링하기라는 코틀린 연재 중 일부라서 그다지...

서비스 로케이터는 안티패턴이다

April 20, 2017 Dev

새로 옮긴 회사에서 열심히 레거시를 정리하고 있다. 기존 코드는 관리가 전혀 되지 않는 인하우스 프레임워크를 사용하고 있어서 전반적으로 구조를 개편하기 위해 고심하고 있다. 이 포스트는 Mark Seemann의 Service...

Satis로 PHP 패키지 리포지터리 만들기

March 17, 2017 Dev

PHP에서 Composer를 통해 사용할 수 있는 패키지 리포지터리 서비스인 Packagist는 오픈소스로 공개되어 있어서 필요하면 누구든지 받아 사용할 수 있게 되어 있다. 하지만 Solr이라든지 Redis라든지 요구하는 환경이 있어서 Packagist의...

영문 설정 OS의 크롬 웹페이지 한글 깨짐 현상 고치기

January 29, 2017 Dev

이상하게 집이나 회사에서 한국어 웹사이트를 접속하면 종종 한글이 제대로 표시되지 않는 문제를 겪고 있었다. 사파리에서는 그렇게 동작하지 않는 것 같은데 크롬에서는 자주 깨진 모습으로 나타난다. 증상은 웹페이지에서 한글이...

레거시 PHP에서 모던 PHP로 – 뷰 분리하기

October 13, 2016 Code

흔히 모던 PHP라고 이야기하는 현대적인 PHP 개발 방식에 대해 많은 이야기가 있다. 새 방식을 사용하면 협의된 명세를 통해 코드 재사용성을 높이고 패키지를 통해 코드 간 의존성을 낮출 수...

파이썬 @memoize 고립된 환경에서 사용하기

September 26, 2016 Code

파이썬에서 데코레이터를 정말 자주 사용하고 있지만 다양한 용례는 접해보지 못했었다. Ned Batchelder의 글 Isolated @memoize은 @memoize 데코레이터에 대한 이야기인데 같이 곁들여진 설명과 각 링크가 유익해서 번역했다. 파이썬 데코레이터...

파이썬 리스트 vs. 튜플

September 21, 2016 Code

파이썬을 처음 공부할 때 리스트와 튜플에 대해 비슷한 의문을 가진 적이 있었다. 이 둘을 비교하고 설명하는 Ned Batchelder의 Lists vs. Tuples 글을 번역했다. 특별한 내용은 아니지만 기술적인 차이와...

setup.py와 requirements.txt의 차이점과 사용 방법

September 13, 2016 Code

파이썬을 사용하다보면 setup.py와 requirements.txt를 필연적으로 마주하게 된다. 처음 봤을 때는 이 둘의 용도가 비슷하게 느껴져서 마치 둘 중 하나를 골라야 하는지, 어떤 용도로 무엇을 써야 하는지 고민하게 된다....

PyCon AU 2016 참가 후기

September 10, 2016 Dev

Python을 실무에서 많이 사용하고 있지 않긴 하지만 사용할 때마다 재미있고 깊게 배우고 싶다는 생각이 늘 드는 언어 중 하나다. 관심을 갖기 시작했을 때부터 PyConAU에 다녀오고 싶었는데 이전엔 브리즈번에서...

리눅스 접근 권한, 특수 권한 설정 정리

August 24, 2016 Code

최근 프로젝트 중 인프라 회사와 함께 협업하는 프로젝트가 있었다. 이전까지 사용하던 방식과는 다르게 상당히 세세한 퍼미션 설정으로 환경을 잡길래 다시 공부하는 겸 정리하게 되었다. 리눅스(또는 Unix-like) 시스템에서는 파일의...

MS PowerShell 버전과 확장자 ps1

July 17, 2016 Code

파워쉘을 가장 처음 접했을 때 확장자에 숫자가 있어서 어떤 의미인지 궁금했는데 오늘 잠시 검색해보고 내용을 정리했다. 먼저 결론을 얘기하면 버전과 상관 없이 .ps1이 파워쉘 스크립트의 확장자다. 파워쉘은 이전까지...

MS PowerShell에서 텔레그램 메시지 전송하기

July 8, 2016 Blog Dev

얼마 전에 Windows 환경이 필요해 lubuntu 설치해서 사용하던 노트북을 Windows 10으로 전환했다. 이 노트북은 32GB eMMC 내장이라 사실 공간이 엄청 부족한 편이다. Windows 10을 설치하고 나니 5GB만 남아서...

dd 사용해서 이미지 백업/복원하기

July 4, 2016 Code

윈도 머신이 잠시 필요해서 lubuntu를 설치한 컴퓨터를 다시 Windows로 복구했다. Lubuntu로 밀기 전에 dd 명령으로 이미지를 백업해뒀는데 과정을 따로 기록해두질 않아서 삽질을 좀 하게 되었다. 그래서 이번에는 안전하게...

git 한글 파일명 사용 문제 고치기 core.quotepath

May 4, 2016 Code

지금까지 git을 숱하게 사용했지만 한글 파일명은 문제가 생긴다는 사실을 이제야 알았다. 다음처럼 core.quotepath를 끄면 commit, status 등에서 한글 출력이 정상으로 돌아온다. 이 설정은 일반적이지 않은 문자를 탈출문자로 처리하는...

iterm에서 zsh 사용할 때 `Opt + 방향키` 설정하기

April 10, 2016 Code

이전에도 iterm을 설치했었지만 키맵이 영 익숙해지지 않고 기본 터미널과 맞추려니 이것저것 찾아보는게 귀찮아서 계속 터미널을 사용하고 있었다. neovim을 설치하는 차에 iterm3 베타가 나왔다는 얘기가 생각나서 iterm도 설치했다. Opt...

tmux 사용에 도움되는 설정과 플러그인 정리

February 29, 2016 Code

최근에 구입한 Dell 노트북에 조금이라도 가볍게 사용해보려고 Lubuntu를 설치해서 사용하고 있다. 트랙패드가 예전에 비해 많이 나아지긴 했지만 아무래도 맥북에서 사용하던 것과는 많이 달라서 좀 더 키보드 친화적인 환경을...

JavaScript의 Generator와 Koa.js 소개

February 22, 2016 Code

사이드 프로젝트에서 Express를 오랜 기간 사용했었는데 hapi 가 좋다는 얘기를 듣고는 hapi를 많이 사용해왔다. Hapi도 단순하긴 하지만 “설정만 넣으면 되는” 단순함이라서 설정에 들어가는 수고가 꽤 컸다. 최근에는 토이...

떠나세요, PHP 개발자여. 아니면 잘하든가!

February 15, 2016 Dev

PHP 개발자는 그 태생부터 죄에 속한 것과 같이 업을 쌓고 산다. 아무리 좋은 디자인과 아키텍처, 방법론으로 무장하고 있더라도 그 죄성은 쉽게 씻겨지지 않는다. 어디서든 PHP 개발자라는 얘길 하면...

Node.js의 Events `EventEmitter` 번역

February 9, 2016 Code

EventEmitter는 Node.JS에 내장되어 있는 일종의 옵저버 패턴 구현이다. node 뿐만 아니라 대부분의 프레임워크나 라이브러리에서 이 구현을 쓰거나 유사한 구현을 활용하고 있는 경우가 많다. DOM Event Listener를 사용해본 경험이...