일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gin
- consumer group
- kafka-connect
- Consumer
- create topic
- tls disable
- k8s
- kafka broker
- Kafka
- Produce
- minikube
- topic
- gortsplib
- Golang
- 쿠버네티스
- gorm
- Helm
- Kubernetes
- eck
- http
- broker
- go
- Kafka Connect
- Elk
- kibana
- ElasticSearch
- go test
- docker
- loadbalance
- Message
- Today
- Total
목록go (7)
개발자의 개발괴발
지난번 글에서 gortsplib로 cctv 영상을 다운받고 ffmpg로 mp4로 변환을 해보았다.여기서 각각 한 프레임을 추출해서 object detection model같은 것으로 추론해보려고 했다.단순히 생각해서 NALU가 한 프레임이라서 한 단위의 NALU만 이미지로 변환하면 된다라고 생각을 했었는데 NALU가 프레임의 단위는 아니었다.gortsplib로 한 프레임을 추출해보고 싶었는데 영상에 대한 지식이 모자라 성공하지 못했다.하지만 gocv라고 opencv를 wrapping해놓은 것이 있었다.opencv로는 rtsp 영상에서 이미지 추출하는걸 예전에 쉽게 했었던 기억이 있어 가능할 것이라 생각했다.gocv 사용하기아래와 같이 코드를 짰다.(gpt와 copilot에게 감사)python으로 했을때도..
각각의 함수의 unit test도 필요하지만 http handler에도 test가 필요하다.각각의 함수가 잘 동작한다는 보장이 있어도 handler에서 에러가 날 수도 있기 때문이다.Handler test하기handler를 테스트 하는것도 handler 함수를 호출해주는 것처럼 테스트를 할 수 있다.func GetAllUsers(c *gin.Context) { // something}그러나 handler는 parameter로 *gin.Context를 받아야한다.어떻게해야할지 몰라 당황스러울 수도 있지만 다행히도 test context를 만들어서 집어넣어줄 수 있다.func GetTestGinContext() (*gin.Context, *httptest.ResponseRecorder) { w := http..
앞에서 DB에 insert, delete하는 테스트코드를 작성해보았다.정상적으로 잘 작동하는걸 확인했으니 실제로 curl로 호출해서 잘 동작되는지 확인해보자. controller 설정아래와 같이 code를 수정하겠다.func main() { db.Init() // Create a new Gin router router := gin.Default() // Define a simple GET endpoint routerUser := router.Group("/users") routerUser.GET("", controller.GetUsers) routerUser.POST("", controller.CreateUser) routerUser.DELETE("/:userId", controller.DeleteUse..

backend 개발에 빼놓을 수 없는것 하나만 뽑으라면 db일 것이다.backend만으로 client의 요청에 응답을 할 수 있지만 영구적으로 데이터를 저장하는데는 한계가 있다.물론 메모리에 저장할 순 있지만 backend 서버가 재기동될 경우 데이터는 모두 날아가버린다.따라서 영구적으로 데이터를 저장할 수 있는 기능을 제공하는 것이 db이다.단순히 영구 데이터 저장만이 목적이 아니라 db를 이용하면 단순히 파일로 저장하는 것보다 많은 이점이 있다.그래서 이전 글에 이어 db를 추가해보도록 하겠다.sqlite3db 종류에는 여러가지가 있고 상황에 따라 적절한 선택을 하면 된다.여기서는 무거운 backend 서비스를 만드는 것도 아니 때문에 sqlite3를 사용하려고 한다.가볍다고해서 다른 db에 뒤쳐지는..
go에 많은 web framework가 있지만 나는 gin을 선택했다.장점, 단점을 읽어봤지만 나에게 중요한 것은 쉽고 빠르게 만들 수 있는 것이기 때문이다.gin 시작하기gin 시작하기는 매우 쉽다.vscode에서 새로운 폴더를 만들고go mod init home-cam위 명령어로 프로젝트를 초기화 했다.go get -u github.com/gin-gonic/gin위 명령어로 gin package를 설치하고 아래와 같이 main.go를 작성해보자.package mainimport ( "fmt" "net/http" "github.com/gin-gonic/gin")func main() { // Create a new Gin router router := gin.Default() // Define a sim..

cctv 영상을 스트리밍받아 내 pc에 저장해보자.rtsp에 지식이 전무하다보니 시간이 꽤 걸렸다.사전준비go에서 rtps를 사용하기 위해 gortsplib를 사용했다.go get "github.com/bluenviron/gortsplib/v4"깃헙에 가면 example도 잘 되어있다.그런데 ffmpeg 버전을 낮은 버전을 사용한것 같다.몇몇의 example은 cgo를 써야하는데 몇몇 함수가 deprecated된것도 있고 해서 c라이브러리를 쓰는 곳에선 잘 동작하진 않았다.cgo를 쓰기 위해선 ffmpeg도 설치해야한다.(위 패키지를 설치할때 같이 설치 되는지는 잘 모르겠다.)설치하기 위해서 homebrew로 설치하자.brew install ffmpeg streaming할 cctv영상 원본은 여기서 구할..