전체 글 131

번역 후기 - 이펙티브 소프트웨어 테스팅

이펙티브 시리즈 중 테스트와 관련한 책, 'Effective Software Testing'을 번역하게 되었습니다. 소프트웨어 테스트 코드를 체계적으로 작성하는 방법을 알려주는 좋은 책이라고 생각합니다. 현재 온라인 서점에서 예약 판매 중입니다. 이 책을 번역하게 된 계기와 과정을 공유하고자 합니다. 몸담은 분야인 IT 서적을 번역하는 일은 이전부터 관심이 있었습니다. 개발자는 항상 새로운 지식을 습득해야 하는 직업입니다. 여러분도 현재 관심을 두고 있는 기술에 대한 최신 자료, 특히 책 번역을 한 번씩은 생각해 보셨을 것 같습니다. IT 서적은 다른 분야의 원서보다 쉽게 읽을 수 있습니다. 기술서이기 때문에 함축된 표현이나 어려운 문장이 적습니다. 엔지니어인 우리는 당연히 바탕 지식이 있기 때문에 이해..

개발자 Life 2023.02.28

NestJS로 배우는 백엔드 프로그래밍 출간 후기 2 - 출간 과정

1편: NestJS로 배우는 백엔드 프로그래밍 출간 후기 1 - 계기 퇴근후 거의 매일 2~3시간, 주말에는 5~6시간 정도 투자하니 2달 정도가 지나 초고를 완성했습니다. 책을 쓰면서 오랜만에 몰입을 경험했습니다. 잘 몰랐던 주제가 있으면 리서치해 가면서 내용을 가다듬고, 코드를 다시 재작성했습니다. 기왕이면 돈도 벌면 좋으니까 구글 애드센스 광고도 달았습니다. 생각보다 반응이 괜찮습니다. 많은 분이 위키독스 또는 메일로 피드백을 주셨습니다. 그래서 초고를 들고 인사이트에 투고합니다. 이때가 작년 11월 말이었습니다. 사실 인사이트가 워낙 유명하고 수준 있는 책들을 많이 출판한 곳이어서 그냥 한 번 시도해 본다는 느낌으로 보냈습니다. 그런데 의외로 미팅이 잡혀서 대표님과 편집자님을 만나 뵈었습니다. 이..

개발자 Life 2022.12.17

[NestJS로 배우는 백엔드 프로그래밍] 출간 후기 1 - 계기

책을 출간한 지 2주가 지났습니다. 정확히는 2022/12/2일에 각종 도서 사이트에서 예약 구매를 시작했지요. 책을 쓰면서 겪었던 과정을 공유하려고 합니다. 쓰다 보니 내용이 길어져서 두 편으로 나누었습니다. 1편은 책을 쓰게된 계기, 2편은 출간 과정을 다룹니다. 저는 LG전자에서 13년을 넘게 휴대폰에 기본 탑재되는 애플리케이션을 만들었습니다. 피처폰 시절에는 네트워크와는 상관없이 휴대폰 내에 있는 데이터만 처리하면 되었고, 안드로이드 환경으로 넘어와서는 소위 프런트 앱 개발자가 되었습니다. 이후 스타트업계에 몸담게 되면서 백엔드 직군으로 바꾸었습니다. 모두싸인에 입사하게 되면서 NestJS를 처음 접했습니다. 정확하게는 입사 과제를 해야 해서 공부가 필요했죠. Node.js는 이전에 가지고 놀던 ..

개발자 Life 2022.12.17

5. 개발자 테크트리와 TIL

공부할 게 너무 많아요. 무엇을 먼저 해야할지 모르겠어요. 그리고 공부하다 보면 모르는 용어가 계속 나와서 내가 지금 무엇을 공부하고 있는지도 모르겠어요. 개발자로 일하다 보면 이런 이야기를 많이 듣습니다. 저 또한 그랬습니다. 사수가 옆에 딱 붙어서 헤매지 않고 지름길을 알려줬으면 좋겠다는 생각을 하곤 했지요. 여러분이 지금 어두운 터널을 헤매고 있다는 느낌이 든다면 주위를 둘러보세요. 여러분이 멘토로 삼고 싶은 회사 선배나 동료가 있을 것입니다. 학생이라면 이미 자신의 길을 걸어간 누군가를 찾을 수 있을 겁니다. 만약 여러분이 현재 몸담고 있는 곳에서 혼자 일하고 있다면 어쩔 수 없이 혼자 길을 찾아야 합니다. 인터넷에는 자료가 넘쳐나지만 오히려 정보가 너무 많아서 문제입니다. A도 같은 과정을 겪고..

[도커] 윈도우 유저가 리눅스를 필요로 할 때

윈도우 유저는 자연스럽게 개발 환경을 윈도우 기반으로 구축한다. 하지만 만약 여러분이 백엔드 개발자가 되고자 한다면, 아니 꼭 백엔드가 아니라고 해도 리눅스를 어느 정도 다룰 줄 알아야 한다. 개발 서적을 보다 보면 예제가 리눅스 기반으로 작성되어 있는 경우도 많다. 물론 윈도우 서버 제품군도 성능이 우수하며 계속 발전하고 있다. 하지만 현업에서는 여러 가지의 이유로 대부분 리눅스 기반의 OS를 서버의 운영 체제로 선택한다. 심지에 최근에는 윈도우를 만든 마이크로소프트조차 리눅스 생태계로 들어왔다. Microsoft Loves Linux 당장 리눅스가 필요할 때 어떻게 해야 할까? 컴퓨터를 새로 하나 장만해서 리눅스를 설치한다. 윈도우가 설치된 컴퓨터에 멀티 부팅이 가능하도록 리눅스를 설치한다. 버추얼박..

Tips 2022.07.25

4. 3개월 동안 공부해 볼것

지난 번에 A에게 중/장기 목표를 세워보라고 했는데, A가 스스로 학습 계획을 세워 보기를 기대했기 때문입니다. 대학생활은 누가 옆에서 알려주지 않습니다. 교수님의 강의로 부족한 부분을 스스로 찾아서 보충해야 하지요. 말하자면 스스로 학습법을 깨우쳐야 한다는 말이지요. 사실 이 부분은 사회에서도 매우 중요한 능력입니다. 업무의 대부분은 정답이 있는 경우가 드물기 때문에 상황에 따라 정답을 찾아나가는 요령(?)을 익혀야 합니다. 메타인지 학습법이라도 하는, 자신이 모르는 것과 아는 것을 깨우치고 모르는 것을 스스로 학습하도록 하는 방식입니다. 하지만! A의 멘토로서 스르로 깨우치는 것도 중요하지만 넌지시 중요한 걸 짚어 주는게 제 역할입니다. 그래서 앞으로 3개월 동안 뭘 할지를 추천해 주고 싶었습니다. ..

3. 학점관리

IT 업계는 다른 분야와 달리 학점을 그렇게 중요하게 여기지 않습니다. 자신의 실력을 증명할 수 있는 방법이 많이 있기 때문입니다. 프로그램 대회에서 수상 경력을 쌓을 수도 있고, 직접 프로젝트를 만들어서 시연하는 방법도 있습니다. 프로젝트가 정말 성공한다면 굳이 취직을 하지 않고 더 서비스를 키울 수도 있겠지요? 😃 하지만 학점은 자신의 성실함을 증명하는 가장 쉬운 방법입니다. 공부 요령만 조금 있으면 나쁘지 않은 학점을 딸 수도 있습니다. 학부 수업은 체계적인 이론을 배울 수 있는 소중한 기회입니다. 저는 비전공자이고 CS를 독학으로 배웠습니다. 프로그래밍 학원을 잠깐 다니면서 프로그래밍을 제대로 배웠고, 대학원을 진학해서야 몇몇 CS 관련 수업을 들었습니다. 피상적으로 알고 있는 지식에 항상 갈증이..

2. 학부 커리큘럼

드디어 A가 제대했습니다. 군대에 있을 때 나름 군대가기 전 배운 지식(파이썬 언어)을 활용해서 알고리즘과 자료구조를 독학했다고 합니다. 요즘 장병들은 일과 후에 휴대폰을 사용할 수 있기 때문에 나와 가끔 대화도 나누긴 했지요. A는 1학년 1학기를 마치고 입대했습니다. 이제 학부생활이 3년 반이 남았네요. 오히려 잘 됐다고 생각합니다. 군대를 다녀오면 아무래도 사람이 조금 차분해지고 학부 공부에 집중하는 경향이 있기 때문에 방황하지는 않을 것 같아서입니다. 커리큘럼을 짜 보자 제대 후 처음 같이 만나 처음 할 일로 학부 커리큘럼을 짜 보기로 했습니다. 한 학기동안 배운 과목은 대부분 교양 수업이었고 전공으로 C프로그래밍 과정이 한 과목 있었습니다. 요즘도 학교에서 C를 가르치다니... 임베디드 분야에서..

[Typescript] 튜플 리터럴을 유니언 타입으로 변환 (feat. 배열의 요소로 이루어진 타입 만들기)

타입스크립의 장점이 강력한 타입시스템을 통해 컴파일 타임에 타입 검사를 통해 오류를 검출할 수 있다는 점이다. 가끔 타입을 string, nubmer, Pesron 과 같은 평범한(?) 타입이 아닌 특정 값만을 취할 수 있는 타입을 선언해서 쓸 경우가 있다. 예를 들어, 파일의 확장자를 이미지와 관련된 파일만 받을 수 있다고 해 보자. ext 변수는 'jpg' 또는 'gif' 문자열만 받을 수 있다. let ext: 'jpg' | 'gif' = 'bmp'; // 구문 오류 이를 별도의 타입으로 선언할 수 있다. type Ext = 'jpg' | 'gif'; let ext: Ext = 'gif'; 나아가 요청으로 받은 데이터의 유효성 검사를 하고 싶다고 하자. 예를 들어 인터페이스를 통해 받은 파일을 표현..

Tips/Typescript 2022.03.27

[Node.js] 로컬에서 npm 패키지 테스트 하기 - npm link

여러분이 만들고 있는 Node.js 모듈을 npm 패키지로 배포하려고 할 때 작성 중인 소스 코드를 어떻게 테스트 하시나요? 사용자를 위해 작성할 사용 예시처럼 이 패키지를 가져다 쓰는 모듈에서 동작하는 지를 직접 구현해 봐야 될 겁니다. 하지만 이 과정이 여간 귀찮은 게 아닙니다. npm package로 패키징을 한 후, 사용하는 모듈의 node_module의 적당한 위치에 다시 압축을 직접 풀어 주어야 합니다. 그렇다면 더 쉬운 방법은 없을까요? 소스 코드를 빌드하고 컴파일 된 파일들을 node_module의 적당한 위치에 직접 복사하면 될까요? 이 때 경로는 제대로 인식이 될까요? 이럴 경우 npm link를 이용하면 쉽게 가능합니다. 이름에서 알 수 있듯이 npm link 명령은 특정 디렉토리에 ..

Tips/Node.js 2022.03.27