만사에 관심 많은 청춘입니다. 코알라국에서 웹개발 하고 있어요.

리액트 quick start 노트

February 11, 2018 Dev

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

Dell Latitude E7240 Archlinux 설치하기

January 27, 2018 Dev

맥북 프로 키보드에 불만족스러워서 그런지 회사에서도 미팅 때마다 사람들이 들고 들어온 노트북을 계속 눈여겨 보게 되었다. 3년 전까지는 델 납품을 받았는데 그 이후로는 레노보를 사용하고 있어서 Dell Latitude랑...

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에서 작성하지만 여전히 짧은 메모라든지 코드...

ipify: 300억 요청 처리, 그 너머로

January 4, 2018 Dev

Randall Degges의 포스트 To 30 Billion and Beyond를 번역했다. ipify를 만들고 확장하는 일련의 과정을 풀어 쓴 이야기다. Thank you, Randall Degges for giving me the opportunity to translate...

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

October 27, 2017 Dev

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

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

October 17, 2017 Dev

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

맥북 프로 우측 command키를 언어 전환 키로 사용하기

August 27, 2017 Gadget

시에라 이후로 Karabiner를 쓸 수 없게 되었는데 그나마 Karabiner-elements가 존재해서 그나마 다행이다. 맥에서는 언어 전환을 조합키로 사용하는 설정이 기본이다. 익숙해지면 그래도 괜찮긴 하지만 오늘따라 불편하게 더 느껴져서 어떻게...

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를 행동으로 옮겨보면 대부분 글이 구호만 잔뜩 나열했지 무슨 일을 어떻게 해야 하는지 과정을 제대로 설명하는 경우가 거의...

2017년 반절 회고와 반절 계획

June 5, 2017 Life

매년 계획을 정리해서 올렸는데 올해는 반절 지나갈 동안 생각만 하고 분주하게 지냈다. 어떻게든 틈을 내서 글을 쓰면 생각도 차분해지고 일정도 정리되기 마련인데 모든 일이 다 끝나고 나서야 글을...

결혼 청첩장 페이지 개발기

May 30, 2017 Dev

벌써 6월이 코 앞이라 놀랐다. 그만큼 바빴던 일이 많았다. 민경 씨와 3년 반 넘는 장거리 연애 끝에 결혼하기로 작년 말 결정했다. 올해 들어서 이직도 하고, 책도 나오고, 이상한모임...

제네릭 없는 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의...