기본 콘텐츠로 건너뛰기

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~range

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 형식으로 파일을 생성하는 방법도 있습니다. h

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/