개요 별 생각없이 go get -u 옵션을 사용해왔었는데 회사에서 사용하는 패키지를 이용한 개발을 하다 그 의미를 이해하게 되었다. 어떤 상황이었나? go work를 이용해서 workspace 디렉토리 아래에 개발하는 애플리케이션과 패키지 디렉토리를 두고 개발한다. 이 경우 애플리케이션은 같은 workspace 아래의 패키지를 이용하기 때문에 패키지를 수정해가며 개발을 할 수 있다. 하지만, 이 경우 애플리케이션의 go.mod 에 명시한 패키지의 버전 정보가 맞지 않게 된다. 해법은 go get -u 옵션 이를 업데이트 시켜주려면 1. 패키지를 GitHub으로 git push 해 준 다음에 2. go get -u 옵션으로 다시 패키지를 가져오면 된다. 좀 더 정확히는 시멘틱 버저닝으로 보면 메이저 버전은..
Golang에서의 경량 ORM으로서의 bun package를 다루며 경험한 내용을 정리해둔다. Automatic timestamp 링크: https://bun.uptrace.dev/guide/models.html#automatic-timestamps INSERT 시에 생성한 시간을 자동으로 추가하도록 하는 기능이다. Example code with comment 아래 코드와 코멘트로 설명을 마무리 한다. 전체 GitHub Repo: https://github.com/nicewook/bun-orm-study Query Building Example: https://github.com/nicewook/bun-orm-study/blob/main/default-timestamp/main.go bun 태그의 의미..
Golang에서의 경량 ORM으로서의 bun package를 다루며 경험한 내용을 정리해둔다. Query building 링크: https://bun.uptrace.dev/guide/complex-queries.html#query-generation Query를 만들면서 조건에 따라 더욱 이어붙이는 건에 대하여 q = q.Limit() 의 결과가 단순히 q.Limit()와 같은 것을 동료분이 이야기해 알게 되었다. 코드가 더욱 간결해진다. 그런데 위 링크를 보면 심지어 bun 패키지 설명도 그 차이를 모르는 것인가 싶다. Example code with comment 아래 코드와 코멘트로 설명을 마무리 한다. 전체 GitHub Repo: https://github.com/nicewook/bun-orm-s..
Golang에서의 경량 ORM으로서의 bun package를 다루며 경험한 내용을 정리해둔다. ScanAndCount 링크: https://bun.uptrace.dev/guide/query-select.html#count-rows 데이터베이스를 다루며 query 로 리스트를 가져올 때에는 Offset, Limit 를 이용해 그 일부만을 가져와야 할 때가 많다. 그러면서도 paignation 을 위해 전체 개수를 Count 해 주어야 한다. bun 은 ScanAndCount() 기능을 제공한다. 이 매서드가 이쁜 것은 이 지점이다. Offset, Limit가 적용되면서도 Count는 그것이 적용되지 않은 전체 개수를 세어주는 것이다. Example code with comment 아래의 발췌한 코드와 코멘..
Photo by Michael Dziedzic on Unsplash 기존의 비대칭키 알고리즘들인 RSA나 Diffie-Hellman등은 소인수분해나 이산로그와 같은 수학적 개념을 기반으로 한다. 하지만 양자 컴퓨터는 이런 알고리즘을 쉽게 풀어낼 수 있다고 예상한다. 이러한 양자 컴퓨터 시대를 대비한 암호기술을 Post-Quantum Cryptography(PQC)라고 부른다 Golang의 sidh package는 양자 컴퓨터 이후의 암호알고리즘을 구현한 패키지라 보면 되겠다. 패키지 링크: https://pkg.go.dev/github.com/cloudflare/circl/dh/sidh sidh 패키지를 이용하여 서버와 클라이언트간에 secret key를 공유하는 두 방법을 코드를 이용하여 이해해 보자 ..
Photo by Christopher Robin Ebbinghaus on Unsplash Websocket의 대표적인 사용처는 채팅이 아닐까? 지금까지 살펴본 websocket의 동작이 실제 애플리케이션에서 어떻게 구현되고 활용되는지를 gorilla/websocket 패키지에서 제공하는 채팅 예제의 서버쪽 코드로 알아보겠다. websocket connection이 이루어지고 나서 message를 주고 받는 것은 서버와 클라이언트에 차이가 없기 때문이다. 구글링 해보면 이 예제에 대한 분석과 설명은 꽤나 많다. GitHub: https://github.com/gorilla/websocket/tree/master/examples/chat Websocket connection 클라이언트가 서버의 /ws end..
Photo by Christopher Robin Ebbinghaus on Unsplash 이전 포스팅에서 websocket 전반을 둘러보며 처음 연결시의 handshake를 정리했었는데 이 부분의 코드가 gorilla/websocket 패키지에서는 어떻게 구현되어 있는지를 살펴보자 이전 포스팅: https://jusths.tistory.com/249 GitHub(gorilla/websocket): https://github.com/gorilla/websocket GitHub(gorilla/websocket echo example): https://github.com/gorilla/websocket/tree/master/examples/echo Websocket connection을 위한 handshake..
Photo by Christopher Robin Ebbinghaus on Unsplash Websocket protocol을 보면 mask 여부를 표시하는 flag bit와 masking 적용시 사용할 maksing-key값이 들어가있다. 찾아보니 cache poisoning을 방지해준다 한다. cache poisoning이 뭘까? cache poisoning이란 - 초간단 버전 cache poisoning까지 실제로 해보고, websocket message를 masking/non-masking 했을때의 차이까지 들여다보고 싶어졌지만 있었지만 토끼굴로 들어가면 안된다 싶어 최소한의 이해만 하고 넘어가도록 한다. * 토끼굴(rabbit hole): a situation in which you become ..
Photo by Christopher Robin Ebbinghaus on Unsplash 간단하게 메시지를 주고 받는 websocket server를 만들어 볼 일이 있었다. gorilla/webscoket의 예제를 참고하여 server와, 테스트를 위한 client까지 동작시켜 보았는데 이참에 개념을 좀더 들여다보자 싶어져서 자료를 찾아 정리해보았다. 이어서 gorilla/webscoket 패키지의 구현을 들여다보려 한다 참고 링크(라고 하고 거의 번역을 한 수준): https://sookocheff.com/post/networking/how-do-websockets-work/ GitHub(gorilla/websocket): https://github.com/gorilla/websocket Websoc..
Photo by John Schnobrich on Unsplash 2021-11-06(토) Golang Weekly 메일링리스트에서 Go와 관련한 행사에서 발표한 영상을 소개받았다. 4 Great Talks from Google's Go Day 2021 — It took place just yesterday but you can register to watch the talks (which are all reasonably short and ideal for lunch breaks!) on demand now.. or you can use our links direct to the YouTube versions ;-) Using Generics in Go with Ian Lance Taylor (who ..
- Total
- Today
- Yesterday
- 노션
- Shortcut
- API
- 명상
- 체호프
- postgres
- agile
- pool
- 독서후기
- intellij
- 중용
- strange
- websocket
- 잡학툰
- ORM
- Bug
- bun
- Gin
- 2023
- notion
- 영화
- github
- golang
- 인텔리제이
- solid
- OpenAI
- ChatGPT
- go
- 클린 애자일
- folklore
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |