이 블로그 검색

2021년 5월 29일 토요일

macbook pro 2012 mid LCD replacement (맥북 액정 교체기)

지금 사용중인 맥북 프로가 몇달전에 갑자기 화면에 세로줄들이 발생했다. 외부 디스플레이는 문제 없는 상태라서 로직 보드 문제는 아닌거 같다. 새로 살 필요까지는 없는거 같아서 맥북 수명 연장에 좀 투자 하기로 했다.

2021년 4월 27일 화요일

Go 1.16 에서 $GOPATH/src 에서 코드 작성하고 사용하기

Go 1.16 버전 부터는 기본적으로 module 을 사용하게 변경 되었다. 덕분에 GOPATH  와 상관없이 아무 위치에서든 자신의 소스파일을 작성하면 된다.  그리고 모듈을 사용하기 위한 go.mod 파일이 반드시 필요하게 되었다.  하지만 1.16 버전에서도 선택적으로 module 사용을 할지 말지 여부를 결정 할 수 있다. 예를 들어 기존 프로젝트 구조가 GOPATH 내 src 를 사용하는 경우등이 해당될수 있다.

2021년 4월 25일 일요일

go module과 package 관계, 그리고 module path 개념 정리

go 의 기본적인 개념 중에서 모듈, package 그리고 모듈 경로에 대해 알아본다. 처음에 개인적으로 많이 헷갈렸던 부분이라서 정리해 본다. 지금 우리가 go 로 어떤 프로젝트를 수행한다고 가정해 보면, 다음처럼 정리 할 수 있겠다. 

  • 이 프로젝트는 여러개의 모듈을 가질수 있다.
  • 각 모듈에는 여러개의 package들이 존재할수 있다.
  • 각 package 들은 1개 이상의 go 소스파일로 구성된다.
  • 모듈내의 각 package 들은 자신의 package 폴더를 go mod init 으로 지정한 모듈 경로 + 폴더로 만들면 된다. 
  • 패키지명은 (반드시) 경로의 마지막 문자열로 해준다.
  • 개발 중인 모듈 사용을 위해서 반드시 원격 저장소에 배포될 필요는 없다.
  • 로컬 개발환경에서 모듈이 타 모듈을 사용해야 한다면, 타 모듈의 경로를 로컬 경로로 변경하는 작업이 필요하다.

위 내용들을 하나씩 살펴보자. 

2021년 4월 24일 토요일

go 에서 gRPC-Gateway 사용하기

이번에는 go 에서 gRPC-Gateway 를 사용하는 방법에 대해 알아보려 한다. 

최종 코드는 다음에서 확인 가능 : https://github.com/jeremyko/grpc-gateway-sample

앞서 살펴본 go 에서 proto buffer 사용하기 와 거의 비슷한 절차이나 gRPC-Gateway 사용을 위해 추가되는 절차가 있다. 다음 내용을 기초로 작성되었다 (그대로 따라 했더니 에러가 발생되어, 최신 go 버전에 맞게 내용이 추가된 부분이 있다. go 1.16 버전 기준).

https://grpc-ecosystem.github.io/grpc-gateway/docs/tutorials/introduction/

필요한 패키지 다운로드

go get google.golang.org/grpc
go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
go get google.golang.org/protobuf/cmd/protoc-gen-go
go get google.golang.org/grpc/cmd/protoc-gen-go-grpc

2021년 4월 22일 목요일

go 에서 proto buffer 사용하기

1. proto buffer 를 정의
2. go 로 변환하여 모듈을 만들고
3. 이 모듈을 로컬에서 호출해서 사용 하는 간단한 예제를 정리해 본다 (go 1.16 버전을 기준)

최종 코드는 다음을 참고 : https://github.com/jeremyko/go-proto-buffer-sample

2021년 4월 15일 목요일

flutter : push-up mania

flutter 를 사용한 모바일 크로스 플랫폼 앱 개발 예제. 

https://play.google.com/store/apps/details?id=com.jeremyko.pui

뭘 일단 만들어볼까 하다가, 한 10년 전에 ios 앱으로 만들었던 푸쉬업 카운터를 또 만들어 봤음.

 


 

2021년 4월 3일 토요일

flutter : using mixed null safety for legacy packages

null safety 가 없는 기존 package 들을 최신 flutter, dart 개발 환경에서 사용하기.

flutter 프로젝트 내에서 dart 버전을 소스파일 단위로 다르게 지정하여 오래된 package 들도 null safety 에러가 안나게 개발할수 있다.  

2021년 3월 19일 금요일

golang module 작성, 타 모듈에서 로컬 테스트 및 배포 개념 정리

golang 모듈을 만들고 타 모듈에서 사용하는 것을 한번 정리해보았다.
내가 만들려고 하는 모듈이
github.com/jeremyko/my_mod 이며, 모듈 폴더는 ~/mydev/my_mod 라고 가정한다.

2020년 4월 30일 목요일

redis-benchmark 에서의 RPS(requests per second) 의미

redis-benchmark 를 수행했을때 출력되는 requests per second(RPS) 의미를 client 개수와 연관해보면 다음과 같다.

2019년 12월 27일 금요일

ASockLib windows 를 지원

ASock이라는 이름으로 socket 관련 라이브러리를 만들어서 프로젝트에서 사용하고 있었는데, linux, os x 만 지원하던것을 이번에 며칠 손봐서 windows 에서도 돌아가게 구현해봤다. 만들고 보니, proactive 방식과 reactive 방식이 뒤섞인 결과물. portable 한 networking library가 일단 완성된것에만 일단 만족...

https://github.com/jeremyko/ASockLib

2019년 10월 6일 일요일

template method pattern 에 CRTP 사용하기 (c++)

그동안 개발하면서 template method pattern을 즐겨 사용하고 있는데, virtual 함수를 이용하여 구현했었다. 그런데 CRTP 를 이용해도 비슷한(동일한건 아님) 처리가 가능하다.

예를 들어 다음처럼 template method pattern 구현을 한경우,