winterjung blog


IDL 읽는 법 (Protocol Buffers)

2021-01-17 - idl header image 클라이언트와 서버간 api 명세를 protocol buffers로 idlInterface Description Language 삼아 개발할 때, 이 idl을 어떻게 읽어야 하는지 간단하게 알아보자. 서버는 grpc를 지…

릴리즈 - 메타 태그 지원

2020-11-22 - 드디어 블로그에서 메타 태그를 지원합니다! 🎉 그 여정 이전 블로그와 다르게 처음부터 하나하나 만들다 보니 지금의 블로그는 아직 부족함이 많고 그중 하나가 메타 태그였습니다. 밑바탕을 준비하고 2주에 한 번씩 글을 쓰는 사내 소모임을 참여하다 보니 …

새로운 블로그 테크스펙

2020-11-08 - 처음 블로그를 만들고 오랜 시간이 지났습니다. 그동안 블로그를 갈아 엎고 싶은 생각은 항상 있었지만 '왜 그런 마음이 있을까?', '블로그로 무엇을 얻고자 하는거지?' 고민만 하다 '중요하지만 지금 당장 급한건 아니야' 라는 핑계로 지금까지 왔습니다…

파이썬 중급자를 위한 책 추천

2020-01-19 - 파이썬을 처음 접했을 땐 크롤링 스크립트 정도에 일단 돌아가긴 하는 코드에 만족했다. 그러다 어느 순간부터는 이게 맞는 건가 싶고 더 나은 코드를 짜고 싶은 욕심이 있었다. 시간이 지나며 글과 책을 읽고 프로젝트와 라이브러리를 만들고 다른 개발자들과…

파이썬에서 부동소수점 오차 해결하기

2020-01-06 - 실수형 값을 다룰 때 흔히 마주칠 수 있는 부동소수점 오차 문제를 파이썬에서 어떻게 해결할 수 있는지 알아보았다. 이 글은 2017년에 작성했던 글을 다듬고 내용을 추가해 다시 작성한 글입니다. 본래 글은 이 문서로 리다이렉트됩니다. 부동소수점의 문…

2019년 회고, 이렇게 살았습니다

2019-12-31 - 2019년 한 해 어떻게 살았는지의 기록 3년 만의 회고 글이다. 1여 년만의 블로그 글이기도 하다. 작년 11월에 레이니스트뱅크샐러드를 만든다에 입사해 1년간 백엔드 개발자로 일해왔는데 하루하루 배우고 성장하면서 정작 그걸 정리하고 공유하는 시간을…

파이썬으로 Reactivity 따라하기

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 …

python script.py에서 벗어나기

2018-06-30 - 파이썬을 이용해 커맨드라인 툴을 만들어 사용할 때 매번 $ python script.py arg1 arg2처럼 입력하기 번거롭다. 그렇다고 setup.py를 만들어 엔트리포인트를 설정하자니 일을 키우는 느낌이다. 이 글에서는 $ script arg1…

파이썬의 await vs return vs return await

2018-06-22 - 예전에 담아둔 마음함을 정리하다가 JS에서 await, return, return await의 결과를 비교하는 글을 봤다. 헷갈려 잘못 사용할 수 있는 비동기 함수를 사례별로 구분해 보여주는 좋은 글이었는데 JS에서는 파이썬과 달리 await를 하지…

NDC2018 야생의 땅: 듀랑고 세션 정리

2018-04-29 - NDC 2018 2일차에 들었던 야생의 땅: 듀랑고 관련 세션 2개를 정리했다. NDC 다시보기로만 봤던 듀랑고팀의 발표를 직접 보게 되었는데 무척 재밌었고 서비스가 오픈되었을 때 여러가지 상황이 발생했었는데 그 이유와 어떻게 대응했으며 보완했는지 …

Flask 1.0에서 달라진 점

2018-04-27 - flask가 0.12 버전으로 릴리즈된지 1년 5개월만에 드디어 메이저 버전인 1.0 버전이 릴리즈 되었다. 이 글에서는 1.0 버전이 되면서 인상적인 변경점만 정리해봤다. Flask version 1.0 full changelog - Release…

gunicorn으로 flask에서 동시에 여러 요청 처리

2018-04-08 - flask 앱 내부적으로 blocking 작업이 있다고 할 때, A 클라이언트가 해당 API를 호출하면 B 클라이언트 요청은 A의 요청이 다 처리될 때 까지 기다린 후에야 처리되기 시작한다. 때문에 외부 API 호출(requests.get), 파일 …

현실적인 스마트 컨트랙트 고려하기

2018-03-11 - 최근 면접을 본 블록체인 관련 회사에서 Technical questions을 받았는데 흥미로운 주제고 생각할 거리가 많은 질문이어서 그에 대한 답변을 공유하려한다. 질문과 답변 질문은 중요한 부분이 포함되게 적당히 편집하였습니다. 질문의 어조는 실제…

Python GC가 작동하는 원리

2018-02-18 - 보통 파이썬은 레퍼런스 카운팅 방식으로 가비지 컬렉션을 수행해 메모리를 관리하고, 레퍼런스 카운팅을 사용했을 때 발생할 수 있는 순환 참조 상황을 별도의 가비지 컬렉터로 해결한다고 알고 있다. 이 글에서는 그 가비지 컬렉터가 어떤 방식으로 작동하는지…

Python의 Generator 알아보기

2018-02-13 - Generator(제네레이터)는 제네레이터 함수가 호출될 때 반환되는 iterator(이터레이터)의 일종이다. 제네레이터 함수는 일반적인 함수와 비슷하게 생겼지만 yield 구문을 사용해 데이터를 원하는 시점에 반환하고 처리를 다시 시작할 수 있다.…

Python의 메서드 실행 방식 (MRO)

2018-02-13 - 파이썬에서 클래스를 상속했을 때 메서드가 어떤 방식으로 실행되는지 알아보자. 인스턴스의 메서드를 실행한다고 가정할 때 __getattribute__()로 bound된 method를 가져온 후 메서드를 실행한다. 메서드를 가져오는 순서는 __mro__…

File on blockchain 개발기

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…

파이썬에서 2중 리스트를 flatten하게 만들기

2017-04-21 - 우연히 커뮤니티의 프로그래밍 게시판에서 파이썬의 2중 리스트 를 일자화 시키는 것에 대해 보게되었다. 2중 리스트를 1차원 리스트로 만드는 방법은 몇 개 알고 있었는데 어떤 댓글에서 sum(numbers, [])라는 식으로 2중 리스트를 일자화 시키…

Pyinstaller로 PyQt5코드를 exe로 만들기

2017-02-23 - 원래 쓰려던 것은 pyinstaller로 requests라이브러리가 포함된 코드를 빌드할 때 발생하는 에러와 그에 관한 해결 방법을 포스팅하려 했으나, 이는 뒤로 넘기고 먼저 pyinstaller를 통해 PyQt5라이브러리를 사용한 python코드를…