기본 콘텐츠로 건너뛰기

golang .protobuf go_package 오류 나는 문제.

1.golang용 protocol buffer 관련 모듈은 다운로드 받았음 go get -d -u google.golang.org/protobuf go install github.com/golang/protobuf/protoc-gen-go 2. pitaya 샘플 .proto 파일 생성을 시도 했으나, 아래 오류가 발생하면서 빌드 실패함 D:\pitaya>protoc --proto_path=examples\demo\worker\protos --go_out=plugins=grpc:. examples\demo\worker\protos\*.proto protoc-gen-go: unable to determine Go import path for "arg.proto" Please specify either:         • a "go_package" option in the .proto source file, or         • a "M" argument on the command line. See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information. --go_out: protoc-gen-go: Plugin failed with status code 1. D:\pitaya> stackoverflow 등 참고해도 비슷하지만 다른 내용들 뿐. .proto 파일내에 option go_package = "../protos_gen"; 내용 추가하여 빌드하니 잘됨. 3.기존 소스 -------------------------------- syntax = "proto3"; package protos; message Arg {   string msg = 1; } 4.신규 소스 -------------------------------- syntax ...
최근 글

Concurrency in Go 책 읽고 대략 요약

원본은 https://laced-river-472.notion.site/Concurrency-in-Go-7f97812aee104adc8cc6d60591f01316 에 요약 해놓음. 2024년 3월 27일 ~ 2024년 3월 29일 Concurrency in go 책 검토 https://github.com/SK-Jin/concurrency-in-go-src 1장 동시성 소개 동시성이 어려운 이유 2장 코드 모델링: 순차적 프로세스간의 통신(CSP) 동시성과 병렬성의 차이 동시성을 지원하는 언어의 장점 Go의 동시성의 철학 3장 동시성 구성요소 goroutine Sync Package Channels select-statement defer-statment 4장 동시성 패턴 제한(Confinement) Ad-hoc 내부적인 규칙, 암묵적인 규칙 등 시간적인 문제로 깨트려지는 경우가 있을 수 있음. lexical 도구에서 문제 상황에 대해 통보, 이를 개선 하는 형태로 접근 동기화를 사용할 수 있다면, 제한을 추구해야 함. 성능을 향상시키고, 개발자의 인지 부하를 줄이기 위함 동기화에는 비용이 들며, 이를 피할 수 있으면, 임계 염역이 없기 때문에 동기화 비용을 지불할 필요가 없음. 동기화로 인해 발생 가능한 모든 문제도 막을 수 있음 for-select 루프 채널에서 반복 변수 보내기 멈추기를 기다리면서 무한히 대기 고루틴 누수 방지 고루틴 작지만 리소스를 필요로 함. 가비지 콜렉터에 의해 수집 되지 않음. -> 원인은 제각각 이겠지만, 여전히 활성화 되어 있을 것이므로 고루틴 종료 조건 작업 완료 복구할 수 없는 에러로 인해 더 이상 작업을 계속할 수 없을 때 작업을 중단하라는 요청을 받았을 떄 -> 네트워크 효과(연관된 고루틴 존제)가 있으므로 제일 중요 접근 1 Cancel chan 생성 하여 기존 for~r...

golang 소스에서 ClassDiagram UML 파일 생성

1. 전체적인 진행 목표는 아래와 같다. golang source 분석  -> .puml 파일 생성  -> 파일 내용을 plantuml.com (또는 local plautuml 서버) 에서 이미지 확인 -> 분석용 또는 문서화 용으로 사용. 2. 먼저 plautuml 웹 서비스 환경을 준비한다. plantuml 은 다양한 Uml 타입을 지원하는데, 텍스트를 입력하면 해당 내용을 UML 이미지로 생성해준다. 2.1. 기존 platuml 웹서비스 주소 접속 아래 도커 설치는 필요하지 않음. https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000 2.2. 또는 로컬에 docker 설치하여 http://localhost:8080/ 접속하기 위한 방법 은 다음 방법 참고 2.2.1. https://plantuml.com/ko/starting 에 가면 docker 에 설치하는 방법 있슴. 2.2.2 .도커가 이미 설치된 상태에서 콘솔창에서 다음을 입력함 docker run -d -p 8080:8080 plantuml/plantuml-server:jetty 3.  golang 용 폴더 생성 (참고링크: https://github.com/jfeliu007/goplantuml ) go mod init  go get github.com\jfeliu007\goplantuml\parser go install github.com\jfeliu007\goplantuml\cmd\goplantuml@latest goplantuml folder > folder.puml  4. 생성된 .puml 을 편집기에서 해당 내용을 읽어 plantuml.com 에 접속하여 편집기 화면에 붙여 넣기를 수행하면 우측 또는 하단에 해당 내용을 이용하여 Uml(여기서는 ClassDiagram) 이미지가 생성 됨. 5. 아래 링크는 java 파일을 이용하여 .puml을 png 형...

netjs sample 불완전한 상태? 어디에서 다운로드 받을 수 있나?

1.회사에서 소스 분석할 일이 생겨서 확인중인데, nestjs 를 사용함. 2.nestjs 구조를 알아야 할 것만 같아서 가이드 를 찾아다니며 소스를 입력해서 돌아다니고 있었음. 3.nestjs sample 소스가 불 완전한 상태로 돌아다님. 전체 샘플 소스 없이 샘플 설명하는 경우가 있음. 이로인해 샘플 입력하고 동작 확인 불가함. 특히, 아래 소스가 없는 경우가 많음. create-cat.dto.ts, update-cat.dto.ts 4.무엇이든 다 있는 git hub 에 이것과 관련한 소스가 올라와 있음. 참고하시길... https://github.com/jmcdo29/testing-nestjs - 전체 소스 https://github.com/jmcdo29/testing-nestjs/tree/main/apps/http-sample - 이게 cats controller 를 인용한 소스 샘플

[minikube] kubunetics 를 클라우드가 아닌 local 로 돌려보기 위한 도구

https://minikube.sigs.k8s.io/docs/start/ 조건.윈도우 docker desktop 최신 버전이 설치 되어 있어야 함. 윈도우 PowerShell 에서 아래 동작으로 설치 winget install minikube 윈도우 cmd 쉘에서 다음 수행 C:\Program Files\Kubernetes\Minikube> minikube start 이후 docker에서 콘테이너 minikube 실행되고 있는 것을 확인할 수 있음. 그러나, kubenetic 내 image, container 는 별도로 동작함.  아래 명령으로 설치된 container 확인 가능 kubectl get services

[golang] getFunName

 import ( "fmt" "log" "runtime" ) // Debug prints a debug information to the log with file and line. func DebugFunInfo(format string, a ...interface{}) { funName := "" pc, file, line, ok := runtime.Caller(1) info := fmt.Sprintf(format, a...) // https://stackoverflow.com/questions/35212985/is-it-possible-get-information-about-caller-function-in-golang details := runtime.FuncForPC(pc) if ok && details != nil { funName = details.Name() //fmt.Printf("called from %s\n", details.Name()) } log.Println("debug", funName, "file:", file, "(", line, ") ", info) } func main() { DebugFunInfo ("start") }

[golang] gameframework nano ChatServer

 golang  nano 채팅서버 + WebClient https://github.com/lonng/nano/tree/master/examples/cluster start cluster master start cluster chat --listen "127.0.0.1:34580" start cluster gate --listen "127.0.0.1:34570" --gate-address "127.0.0.1:34590" rem start explorer microsoft-edge:http://127.0.0.1:12345/web/