프로그래밍을 시작하게된 계기

프로그래머로서 꽤 오랜 시간을 보내며, 내가 언제부터 컴퓨터와 프로그래밍에 관심을 가지게 되었고 왜 좋아하게 되었는지 생각해 보는 정리해 보았습니다. 처음 접한 것은 8bit 컴퓨터 어릴 적 강원도 산골에 살 때, 이유는 모르겠지만 집에 8bit 컴퓨터가 있었다. 사진은 이곳에서 가져왔다. 몇 살 때인지 정확히 기억나진 않지만, 내가 사용하기엔 너무 어렸고 110볼트 전압 문제로 자주 사용하지 못했던 기억이 난다. 그런데도 그 컴퓨터는 내게 신기한 세상을 열어주었다. 주변기기로 테이프가 있었고, 키보드 그림이 그려진 설명서를 보며 타자 연습이나 컴퓨터를 사용하는 상상을 자주 하곤 했다. 가끔 누나가 연결해서 베이직(BASIC) 같은 걸 실행하던 기억도 난다. 어린 시절 이런 경험들이 컴퓨터와 관련된 기초적인 호기심을 키워준 것 같다. ...

January 6, 2025 · 3 min · 557 words · Hillfolk

2024년 회고

한 해를 돌아보며 2024년은 정말 쉽지 않은 한 해였습니다. 평소에는 KPT(Keep, Problem, Try) 방식을 활용해 간단히 회고를 작성했지만, 이번에는 조금 다른 형식으로 써보려 합니다. 되돌아볼 점도 많고, 새롭게 시작해야 할 점도 많았기에 스스로를 위한 반성문을 작성해봅니다. 이 한 해 동안, 스스로에게 칭찬하고 싶지 않은 순간들이 많았습니다. 여러 혼란스러운 상황 속에서 잘못된 의사결정을 반복하며 힘든 시간을 보냈습니다. 그래서 이번 회고는 반성할 점과 새롭게 시도해볼 점 두 가지를 중심으로 정리하고자 합니다. 반성할 점 진짜 집중해야 할 것을 놓침 가장 크게 반성하는 점은 비즈니스에 대한 반응이 지나치게 느렸다는 것입니다. 회사에서 개발자이자 CTO로서 의사결정을 하며 특정 포지션에 국한된 사고를 했던 것 같습니다. 제품 개발 초기에는 성공적인 제품을 만드는 데만 집중했지만, 시간이 지나면서 “내가 개발자로서 무엇을 해야 할까?”, “CTO로서 어떤 역할을 해야 할까?”라는 고민에 사로잡혔습니다. 지금 돌이켜보면, 직책에 상관없이 필요한 일이 있다면 밀어붙여 해결하며 제품과 비즈니스에 집중하는 것이 제 본래 스타일이었습니다. 그러나 올해는 이를 잊고, 주저했던 순간들이 많았던 것 같습니다. ...

December 31, 2024 · 2 min · 373 words · Hillfolk

스티비 해킹사례를 보면서 아쉬운점

이번에 이메일 마케팅 플랫폼 스티비에서 해킹 사건이 발생했습니다. 개인적으로도 가입되어 있는 서비스여서 메일/이름/전화번호가 유출되었다는 메일을 받았습니다. 조금 화도 나고 당황스럽기도 했지만, 서비스를 개발하는 입장에서는 마음이 많이 착잡했습니다. 회사의 혼란도 걱정이 되었고, 이런 실수를 한 팀원들도 많이 걱정이 되었습니다. 다른 분들의 경우 결제를 진행한 카드번호까지 유출되었다는 내용을 보게 된 이후에는 왜 이렇게까지 되었는지 아쉬움도 느끼게 되었습니다. 그리고 스티비에서 해당 사건에 대해 대처하는 방식에 대해서도 아쉬움이 많았고, 나 자신을 점검해볼 필요성도 느끼게 되었습니다. 그중 가장 큰 아쉬움 두 가지를 이야기해보겠습니다. ...

December 25, 2024 · 2 min · 373 words · Hillfolk

org-mode에서 디렉토리 설정하기

Doom Emacs 3.0에서 Org-mode의 디렉토리 설정하기 최근 Doom Emacs 3.0 버전으로 업데이트한 후, Org-mode의 강력한 기능들을 활용해 할 일 목록을 좀 더 체계적으로 관리하고자 org-directory를 설정하기로 결심했습니다. 이 과정에서 제가 참고했던 자료들과, 설정을 진행하면서 겪었던 문제점 및 해결 방법을 기록으로 남겨봅니다. 참고한 자료 Doom Emacs GitHub Repository Org-mode 기초 사용법 org-directory 설정하기 Org-mode는 다양한 글쓰기 기능을 제공하는데, 그중에서도 가장 유용한 기능 중 하나가 할 일 목록 관리입니다. 그동안은 수동으로 할 일 목록을 관리해왔으나, 이제는 전역적으로 Agenda와 TODO 목록을 활용하기 위해 `org-directory`를 설정해보기로 했습니다. ...

August 12, 2024 · 2 min · 267 words · Hillfolk

Go Functional Options Pattern

함수형 옵션 패턴 (Functional Options Pattern) 함수형 옵션 패턴은 함수가 선택적 인수를 허용하는 함수형 프로그래밍 에서 유래했다. 함수형 옵션 패턴을 사용하여 기존 함수 구조를 손상시키지 않고 확장할 수 있는 유여한 인터페이스를 제공한다. Go에서는 구조체를 단순화 하기 위해서 사용하며 서로 다른 매개변수를 가진 많은 생성자를 정의하는 대신 다양한 함수 옵션을 허용하여 단일 생성자를 정의할 수 있다. type ClientOptions struct { Url string Port int Method string } type Option func(*ClientOptions) error func WithUrl(url string) Option { return func(co *ClientOptions) error { co.Url = url return nil } } func WithPort(port int) Option { return func(co *ClientOptions) error { co.Port = port return nil } } func WithMethod(method string) Option { return func(co *ClientOptions) error { co.Method = method return nil } } func NewClient(opts ...Option) (*ClientOptions, error) { var co ClientOptions for _, opt := range opts { err := opt(&co) if err != nil { return nil, err } } return &co, nil } func main() { client, err := NewClient(WithUrl("http://localhost"), WithPort(8080), WithMethod("GET")) if err != nil { panic(err) } log.Println(client.Port) log.Println(client.Url) log.Println(client) } 결론 함수형 옵션 패턴은 가변적인 파라메터가 있을때 생성자 함수의 로직을 단순화 하고 유지 보수성을 높여 줄수 있다. 기존 코드의 변경 없이 옵션을 추가할 수 있으므로 재사용성이 높은 코드를 작성 할 수 있다. ...

March 1, 2024 · 1 min · 210 words · Hillfolk