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 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 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..
간단한 API 서버를 제외하고는 웹서비스의 전형적인 HTTP API server를 실무에서 개발한 적이 없다. 유튜브에서 Golang의 대표적인 web framework인 Gin을 이용한 좋은 강좌를 만나 이를 하나씩 따라하려고 한다. 다섯 번째로 미들웨어에 대해 알아본다. Playlist: Rest API in Golang using Gin Gonic: https://bit.ly/3hsZKbv YouTube. Grouping Rest API's in Golang using Gin: https://youtu.be/sh80Do4yIqA 구현해본 GitHub repo: https://github.com/nicewook/gin-gonic-study 이번 블로그 포스팅 소스코드: https://github.co..
간단한 API 서버를 제외하고는 웹서비스의 전형적인 HTTP API server를 실무에서 개발한 적이 없다. 유튜브에서 Golang의 대표적인 web framework인 Gin을 이용한 좋은 강좌를 만나 이를 하나씩 따라하려고 한다. 네 번째로 API들을 묶어서 그룹처리하는 방법을 알아본다. Playlist: Rest API in Golang using Gin Gonic: https://bit.ly/3hsZKbv YouTube. Grouping Rest API's in Golang using Gin: Grouping Rest API's in Golang using Gin 구현해본 GitHub repo: https://github.com/nicewook/gin-gonic-study 이번 블로그 포스팅 소..
간단한 API 서버를 제외하고는 웹서비스의 전형적인 HTTP API server를 실무에서 개발한 적이 없다. 유튜브에서 Golang의 대표적인 web framework인 Gin을 이용한 좋은 강좌를 만나 이를 하나씩 따라하려고 한다. 세 번째로 사용자의 아바타 파일을 올리면 그것을 저장할 수 있도록 하면서, uri와 form도 복습을 해보겠다 Playlist: Rest API in Golang using Gin Gonic: https://bit.ly/3hsZKbv YouTube: Post files to API server using Gin in Golang: https://youtu.be/M5KhqwOrBGc 구현해본 GitHub repo: https://github.com/nicewook/gin-g..
Photo by Alain Pham on Unsplash 구조체를 정의하고 잘 사용하고 있었는데 특정 필드의 타입이 변경이 된다면 어떻게 데이터를 옮길 수 있을까? 두가지 사례로 실제 코드를 통해 이해해 본다 TL;DR: 기존 구조체 인스턴스를 marshal해서 새로운 구조체 인스턴스로 unmarshaling 해주면, 타입이 달라 충돌이 나는 필드를 제외하고는 가져올 수 있ㄷ. 사례1. string to []string Playground: https://play.golang.org/p/erJmWKSowPy Foo 구조체 인스턴스를 Bar 구조체 인스턴스로 옮기려 한다. 여기서는 필드가 두 개 뿐이지만, 필드가 많다면 하나씩 일일이 옮기기 번거롭고 실수를 할 수 있다. // from type Foo st..
Photo by Alex Motoc on Unsplash HTTPS server를 운영할 때에 보안과 관련한 설정에 있어서 TLS version과 Cipher suite에 대해 정리해본다. 지나치게 깊이 들어가지는 않으면서도 전체적인 개념이해가 되는 방향으로 하였다. 큰 개념의 이해후에 각자가 필요한 만큼 좀더 파고들어갈 수 있겠다. 거친 개념정리 - HTTPS로 일단 연결이 되면 중간에 내용을 가로챈다 하여도 안전하다. 이 보안을 담당하는 녀석이 TLS이다. - 현재 시점(2021-09-27) TLSv1.3을 권장하며, 최소 TLSv1.2 이상을 사용하자. (다만 TLSv1.3은 모니터링에 제약이 있을 수 있다.) - HTTPS로 보안연결을 하는 작업이 TLS handshake이며 server와 cli..
간단한 API 서버를 제외하고는 웹서비스의 전형적인 HTTP API server를 실무에서 개발한 적이 없다. 유튜브에서 Golang의 대표적인 web framework인 Gin을 이용한 좋은 강좌를 만나 이를 하나씩 따라하려고 한다. 첫 번째는 간단한 REST API 작성이다. Handler를 테스트하는 방법을 곁들였다. - 전체 Playlist: Rest API in Golang using Gin Gonic: https://bit.ly/3hsZKbv - 이번 포스팅 YouTube. Create basic rest API using Gin Gonic framework in Golang: https://youtu.be/xJ8ryXFobGA - Test를 위해 참고한 링크: https://kpat.io/2..
- Total
- Today
- Yesterday
- 제이펍
- clean agile
- go
- 잡학툰
- 노션
- 2023
- strange
- bun
- intellij
- Gin
- solid
- golang
- 티스토리챌린지
- websocket
- Bug
- 클린 애자일
- 체호프
- notion
- agile
- 독서
- github
- folklore
- OpenAI
- 독서후기
- 오블완
- 영화
- 엉클 밥
- API
- ChatGPT
- 인텔리제이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |