2024-11-10 - 지난 7월 Go To Jeju 2024 행사와 10월의 GopherCon Korea 2024 행사에서 《Deterministic testing in Go》 주제로 발표를 했다. 발표에서는 코드에서 time.Now()를 사용하더라도 어떻게 시간에 구애…
2024-10-27 - GitHub에서 코드 작업과 리뷰를 하다보면 사소하지만 불편한 부분들이 있다. 깃헙팀에서도 이런 불편함을 개선하기 위해 ⌘ + k로 이용 가능한 command palette 기능이나 코드 트리와 심볼을 사이드바로 볼 수 있게 하는 패치 등 예전엔 브…
2024-10-13 - 전 직장에서 go 언어를 처음 쓰기 시작해 현 직장에서도 계속 쓰며 약 5년간 활발히 사용하고 있다. 예전과 비교하면 go 생태계는 점점 풍부해지고, 고퍼콘 코리아를 비롯한 다양한 커뮤니티도 늘어나고, 레퍼런스도 많아지고 있다. 그럼에도 여전히 (비…
2024-02-24 - 뱅크샐러드에서 퇴사하고 5년 만에 이력서를 다시 썼다. 평소에 주기적으로 써오지 않아 이번 기회에 아예 백지에서 시작했다. 그동안 면접관으로 여러 이력서를 봐왔는데 어떤 이력서가 좋았는지 떠올리며 무슨 내용을 넣고 무슨 내용을 뺐는지, 이력서에 적을…
2021-03-15 - 문제가 있을 때 누군가를 탓하지 말자. 원인이 본인 때문이라고 느껴져도 스스로 자책하지 말자. 조직에선 코드로 인한 오류든, 실수로 인한 장애든, 빗나간 일정 추측이든 문제는 언제나 발생한다. 이런 문제를 개인이 자책하며 후회하고 괴로워하지 않아야 …
2021-01-17 - idl header image 클라이언트와 서버간 api 명세를 protocol buffers(이하 protobuf)로 idlInterface Description Language 삼아 개발할 때, 이 idl을 어떻게 읽어야 하는지 간단하게 알아보자…
2020-11-22 - 드디어 블로그에서 메타 태그를 지원합니다! 🎉 그 여정 이전 블로그와 다르게 처음부터 하나하나 만들다 보니 지금의 블로그는 아직 부족함이 많고 그중 하나가 메타 태그였습니다. 밑바탕을 준비하고 2주에 한 번씩 글을 쓰는 사내 소모임을 참여하다 보니 …
2020-11-08 - 처음 블로그를 만들고 오랜 시간이 지났습니다. 그동안 블로그를 갈아 엎고 싶은 생각은 항상 있었지만 '왜 그런 마음이 있을까?', '블로그로 무엇을 얻고자 하는거지?' 고민만 하다 '중요하지만 지금 당장 급한건 아니야' 라는 핑계로 지금까지 왔습니다…
2020-01-19 - 파이썬을 처음 접했을 땐 크롤링 스크립트 정도에 일단 돌아가긴 하는 코드에 만족했다. 그러다 어느 순간부터는 이게 맞는 건가 싶고 더 나은 코드를 짜고 싶은 욕심이 있었다. 시간이 지나며 글과 책을 읽고 프로젝트와 라이브러리를 만들고 다른 개발자들과…
2020-01-06 - 실수형 값을 다룰 때 흔히 마주칠 수 있는 부동소수점 오차 문제를 파이썬에서 어떻게 해결할 수 있는지 알아보았다. 이 글은 2017년에 작성했던 글을 다듬고 내용을 추가해 다시 작성한 글입니다. 본래 글은 이 문서로 리다이렉트됩니다. 부동소수점의 문…
2019-12-31 - 2019년 한 해 어떻게 살았는지의 기록 3년 만의 회고 글이다. 1여 년만의 블로그 글이기도 하다. 작년 11월에 레이니스트뱅크샐러드를 만든다에 입사해 1년간 백엔드 개발자로 일해왔는데 하루하루 배우고 성장하면서 정작 그걸 정리하고 공유하는 시간을…
2018-09-15 - JavaScript의 Vue, React 등에서 쓰이는 Reactivity 개념을 간단하게 구현해보는 The Best Explanation of JavaScript Reactivity 🎆라는 게시글을 보고 파이썬으로 따라 구현해봤다. JavaScri…
2018-07-28 - HashiCorp 한국 사용자 모임이 주최하여 2018년 7월 28일 공개SW개발자센터 대강의장에서 있었던 하시코프 한국 사용자 모임 밋업 내용을 정리했다. 밋업소개 HashiCorp korea user group 소개 HashiCorp korea …
2018-06-30 - 파이썬을 이용해 커맨드라인 툴을 만들어 사용할 때 매번 $ python script.py arg1 arg2처럼 입력하기 번거롭다. 그렇다고 setup.py를 만들어 엔트리포인트를 설정하자니 일을 키우는 느낌이다. 이 글에서는 $ script arg1…
2018-06-22 - 예전에 담아둔 마음함을 정리하다가 JS에서 await, return, return await의 결과를 비교하는 글을 봤다. 헷갈려 잘못 사용할 수 있는 비동기 함수를 사례별로 구분해 보여주는 좋은 글이었는데 JS에서는 파이썬과 달리 await를 하지…
2018-04-29 - NDC 2018 2일차에 들었던 야생의 땅: 듀랑고 관련 세션 2개를 정리했다. NDC 다시보기로만 봤던 듀랑고팀의 발표를 직접 보게 되었는데 무척 재밌었고 서비스가 오픈되었을 때 여러가지 상황이 발생했었는데 그 이유와 어떻게 대응했으며 보완했는지 …
2018-04-27 - flask가 0.12 버전으로 릴리즈된 지 1년 5개월만에 드디어 메이저 버전인 1.0 버전이 릴리즈 되었다. 이 글에서는 1.0 버전이 되면서 인상적인 변경점만 정리해봤다. Flask version 1.0 full changelog - Release…
2018-04-08 - flask 앱 내부적으로 blocking 작업이 있다고 할 때, A 클라이언트가 해당 API를 호출하면 B 클라이언트 요청은 A의 요청이 다 처리될 때 까지 기다린 후에야 처리되기 시작한다. 때문에 외부 API 호출(requests.get), 파일 …
2018-03-11 - 최근 면접을 본 블록체인 관련 회사에서 Technical questions을 받았는데 흥미로운 주제고 생각할 거리가 많은 질문이어서 그에 대한 답변을 공유하려한다. 질문과 답변 질문은 중요한 부분이 포함되게 적당히 편집하였습니다. 질문의 어조는 실제…
2018-02-18 - 보통 파이썬은 레퍼런스 카운팅 방식으로 가비지 컬렉션을 수행해 메모리를 관리하고, 레퍼런스 카운팅을 사용했을 때 발생할 수 있는 순환 참조 상황을 별도의 가비지 컬렉터로 해결한다고 알고 있다. 이 글에서는 그 가비지 컬렉터가 어떤 방식으로 작동하는지…
2018-02-13 - Generator(제네레이터)는 제네레이터 함수가 호출될 때 반환되는 iterator(이터레이터)의 일종이다. 제네레이터 함수는 일반적인 함수와 비슷하게 생겼지만 yield 구문을 사용해 데이터를 원하는 시점에 반환하고 처리를 다시 시작할 수 있다.…
2018-02-13 - 파이썬에서 클래스를 상속했을 때 메서드가 어떤 방식으로 실행되는지 알아보자. 인스턴스의 메서드를 실행한다고 가정할 때 __getattribute__()로 bound된 method를 가져온 후 메서드를 실행한다. 메서드를 가져오는 순서는 __mro__…
2017-12-07 - 이번 글은 파일의 해시값을 블록체인에 올리고, 파일이 원본임을 확인하고, 파일의 정보를 조회할 수 있는 기능을 개념 증명(Proof of concept) 수준에서 구현한 File on blockchain이라는 서비스를 개발했다. 이번 글을 통해 so…
2017-11-27 - 어떤 글인가 11월 21일 화요일, 블록체인 스터디에서 web3.py를 이용한 스마트 컨트랙트 배포와 활용에 대해 발표했다. 본래는 PDF파일을 블록체인에 올린 원본 증명 서비스의 간단한 개념 증명을 구현하려 했지만, 초기 계획보다 작업을 많이 하지…
2017-10-08 - 헷갈리는 용어 정리 Test RPC: Ethereum client for testing and development, 파이썬 구현체도있고 js구현체도 있지만 node.js기반의 ethereumjs/testrpc가 업데이트가 좋음. Geth: full…
2017-04-21 - 우연히 커뮤니티의 프로그래밍 게시판에서 파이썬의 2중 리스트 를 일자화 시키는 것에 대해 보게되었다. 2중 리스트를 1차원 리스트로 만드는 방법은 몇 개 알고 있었는데 어떤 댓글에서 sum(numbers, [])라는 식으로 2중 리스트를 일자화 시키…
2017-02-23 - 원래 쓰려던 것은 pyinstaller로 requests라이브러리가 포함된 코드를 빌드할 때 발생하는 에러와 그에 관한 해결 방법을 포스팅하려 했으나, 이는 뒤로 넘기고 먼저 pyinstaller를 통해 PyQt5라이브러리를 사용한 python코드를…