개발 이야기

신입 PHP 개발자가 읽어야 하는 책

March 7, 2018 Book

나도 신입으로 일을 시작했을 때 혼자 인터넷 검색창을 붙들고 코드와 씨름한 경험이 있었다. 작은 회사에서 유일한 개발자라 물어볼 선임도 없었고, 문제는 어떻게든 기간 내에 해결해야 하는 상황이 많았다....

코드에서 macOS 노티피케이션 센터 띄우기

February 19, 2018 Dev

최근 php로 cli 도구를 만드는 프로젝트를 했다. 타겟 서버에 접속하는 권한이 제한적이고 나도 프로젝트 스코프 내에서만 접근 가능한 상황이라 ci를 돌리기 좀 애매해서 bash로만 작성해뒀다. 총 12개의 물리...

리액트 Advanced guides 후반부 노트

February 15, 2018 Dev

리액트의 Advanced guides 페이지를 따라하면서 노트한 내용이다. 가이드 쪽은 옴니버스 같은 기분이라서 반반으로 나눠 읽기로 했다. 기록하고 싶은 부분만 남겼기 때문에 자세한 내용은 각 페이지를 참고한다. Reconciliation React는...

리액트 quick start 노트

February 11, 2018 Dev

리액트의 Quick start 페이지를 따라하면서 노트한 내용이다. js의 컨텍스트에서 이해할 수 있는 부분은 적지 않았다. 코드 스니핏도 간단히 알아볼 수 있게만 적어놔서 전체 내용이나 설명이 궁금하다면 본문을 확인하는게...

PHP에서 커링 currying 함수 작성하기

January 27, 2018 Code

JavaScript에서 커링 currying 함수 작성하기를 다시 보다가 PHP로도 작성해봤다. function curry($fn) { $arity = (new ReflectionFunction($fn))->getNumberOfParameters(); return ($resolver = function (...$memory) use ($fn, $arity, &$resolver) { return function...

ReactPHP의 Process로 pipe 사용하기

January 23, 2018 Code

ReactPHP의 child-process 패키지를 사용하면 손쉽게 pipe를 사용할 수 있다. 아래 명령을 코드로 전환한다고 생각해보자. $ cat app.php | wc -l 수작업으로 proc_open 열어서 pipe를 받아 fread, fwrite 해도...

Sublime Text 3의 untitled 탭에 첫 행 표시하기

January 14, 2018 App

설정 다시 하기 귀찮아서 Sublime Text 3 업데이트를 미루다가 실수로 눌러버렸다! 사용하는 에디터 중에는 여전히 sublime이 가장 반응속도가 빠르다. 대부분의 코드는 vscode나 vim에서 작성하지만 여전히 짧은 메모라든지 코드...

타입스크립트의 네임스페이스와 모듈

October 27, 2017 Dev

TypeScript Handbook의 Namespaces and Modules를 번역했다. 용어에 대한 노트: 타입스크립트 1.5에서 기록해둘 만큼 중요한 명명법 변경이 있었습니다. “내부 모듈(Internal modules)”은 “네임스페이스”가 되었습니다. “외부 모듈(External modules)”은 이제 간단하게 “모듈(modules)”이...

이벤트 소싱 event-sourcing 패턴 정리

October 17, 2017 Dev

최근 프로젝트에서 audit을 생성하는 코드를 작성하면서 이벤트 소싱 패턴을 찾아보게 되었다. 여러 포스트를 통해 접해본 내용이지만 실제로 구현해보지 않아서 크게 와닿지 않았었다. 특히 용어가 익숙하지 않았는데 읽으며 궁금해서...

Angular의 constructor와 ngOnInit 차이점

August 15, 2017 Code

Todd Motto의 글 Angular constructor versus ngOnInit를 번역했다. Angular의 constructor와 ngOnInit 차이점 Angular는 여러 생애주기 훅이 존재하지만 여전히 constructor도 있다. 이 글에서는 ngOnInit 생애주기 훅과 차이점을 확인한다. 이...

ReactPHP로 고성능 PHP 앱 만들기

August 3, 2017 Dev

Marc Johannes Schmidt가 쓴 Bring High Performance Into Your PHP App (with ReactPHP)을 번역했다. 2014년 초 글이라서 아마 php7을 사용한다면 여기에 언급된 벤치마킹보다 더 나은 수치가 나오지 않을까...

500 마일 이메일 문제

August 2, 2017 Dev

The case of the 500-mile email을 번역했다. 여기 불가능처럼 들리는 문제가 있습니다. 이 이야기를 공개적인 곳에 올리는걸 분명 후회할겁니다. 왜냐면 이 이야기는 컨퍼런스 갔을 때 술마시면서 하기 좋은...

레거시 php 프로젝트를 composer 패키지로 바꾸기

July 13, 2017 Code

요즘 작업하는 환경이 상당히 오래된 코드를 접할 수 있는 환경이라서 코드를 정리하는 일이 많은데 최근 버전에서도 돌아갈 수 있도록 코드를 정리하는 김에 패키지로 관리하고 테스트도 작성하도록 팀에 권하고...

테스트 주도 개발 : 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 개발 방식에 대해 많은 이야기가 있다. 새 방식을 사용하면 협의된 명세를 통해 코드 재사용성을 높이고 패키지를 통해 코드 간 의존성을 낮출 수...