react
react 개발 블로그 테스트
- 개발/React
- · 2020. 9. 25.
C
C 개발 블로그 테스트
- 개발/C
- · 2020. 9. 25.
go 가 1.22 버전이 추가 됐다. 가장 반길 부분은 loop에서 변수 캡쳐부분이다. go를 처음 배울때 가장 의아 하면서도 이해가 잘안됐던 부분이지만 생각보다 인지를 하고 사용해야한다는 강박에 goroutine을 사용할때 방법을 생각 해야했었다. 쉽게 말하자면 for i := 0; i < 10; i++ { go func() { fmt.Println(i) }() } 위와 같은 프로그램을 실행 시킨다면 다른 언어에서는 순서는 보장하지 않지만 0,1,2,3,4,5,6,7,8,9 가 출력될 것이고 go에서도 그렇게 될거 같지만 그렇지 않다. 가장 나중의 i의 값이 캡쳐가 돼서 10이 10번 출력된다. 이를 해결 하기 위한 방법은 i := i 이런식으로 재할당을 해주거나. go func(i int) { }(i..
Go 에서 http 요청을 하거나 내부 프로세스에서 요청을 할때 실패할 경우 다시 재시도 하는 패키지를 찾았다. 패키지는 github.com/avast/retry-go/v4 을 사용했고 가장 많은 star 를 보유하고 있는것 같다. 사용 방법은 다음과 같다. func TestRetryStrategy(t *testing.T) { retryOptions := []retry.Option{ retry.Attempts(uint(3)), // 재시도 3번 retry.LastErrorOnly(true), // 여러 에러중 가장 마지막 에러를 출력 retry.RetryIf(func(err error) bool { // 에러의 종류에 따라 중단할지 시작할지 결정 return true }), } count := 0 str..
Golang을 사용하다보면 임시 구조체를 사용하면 생각보다 유연하고 편하게 작업 할 수 있다. 함수 내에 스택에 할당됨으로 함수내에서만 사용가능하다. 일반적으로 사용하는 구조체와의 차이점이라고 할 수 있다. type Test struct{ TestId string } func Tt(){ t := &Test{} } 일반적으로는 위와같은 방법으로 구조체를 생성하고 사용하지만 다음과 같이 사용하면 구조체를 임시로 사용가능하다. func Tt(){ var Test struct{ TestId String } t := &Test{} } 위와 같이 함수내에 구조체를 정의 하여 사용할 수 있고, 슬라이스로도 사용이 가능하다. 활용방안은 데이터베이스를 사용할때 ORM 은 각 테이블에 관한 정보는 제대로 가져오나 (gro..
사실상 gRPC를 사용한다면 필드이름이랑 json으로 변환할때 큰 신경을 안써도 된다. 적어도 내가 하는 프로젝트에선 하지만 gRPC를 HTTP 통신을 하고싶다면 요청은 큰 문제가 없지만 응답을 받을때 우리가 예상한 키 값으로 넘어 오지 않는다. 가령 message Test{ string first_name = 1; ==> JSON firstName string last_name = 2; ==> JSON lastName } 위와 같이 _ 가 camelCase형식으로 바뀌디 때문에 예상한 응답이 아닐 경우가 있다. 이럴때는 gRPC gateway 의 ServeMux에 옵션을 추가해주면 해결된다. gwMux := runtime.NewServeMux( runtime.WithMarshalerOption(runt..
gRPC 는 통신을 할때 protobuf 를 사용하는데 gRPC를 사용하기전 tcp 통신으로 protobuf를 파이썬에서 만 사용해봤었다. 이번 프로젝트에서 gRPC를 사용하게 되면서 gRPC Gateway 통신에도 oneof 를 사용해 보려고 한다. 아직 protobuf 자체를 Go에서 사용해 본것이 아니고 gRPC에서만 테스트한 예제이다. message Test{ int64 admin_id = 1; int64 user_id = 2; } 만약 위와같은 필드를 사용하는데 둘중 하나의 필드만 사용한다면 oneof 키워드를 사용할 수 있다. message Test{ oneof id_oneof{ int64 admin_id = 1; int64 user_id = 2; } } 그렇다면 Go에서 위와 같은 oneof..
react 개발 블로그 테스트
C 개발 블로그 테스트
제나름 대로 사용하기 위해서 만들어 본것입니다. 오역이 많습니다. 참고하거나 틀린점이 있으면 댓글 부탁 드립니다. 원본은 다음과 같습니다.https://twistedmatrix.com/documents/current/core/howto/process.html Using processOverview인터넷을 통해 서버로 접속하는 것처럼 Twisted 는 로컬 프로세스에 같은 API로 접속 할수 있다. API 는 다음과 같다IReactorProcessIProcessTransportIPorcessProtocolRunning Another Processreacotr를 통해 프로세스를 실행하려면 reactor.spawnProcess를 사용해야한다. Pipe는 child process에 만들어 지고, reactor ..
Twisted 를 사용하면서 웹의 static한 파일들을 사용하려면 Resource를 만들어서 serve해야 한다위와 같이 serve할 path를 지정해주고 사용을 하면 되는 것인데, 이렇게 사용한다면 단점이 있다.. 단점이라 함은 static.File Class가 자체적으로 해당 위치에 접속을 하게 되면 해당 파일 내용들이 나오게 되어 난감한 상황을 발생시키게 된다.이것은 기본적으로 Twisted에서 directory listing을 off 하게 해주면 좋을듯 한데. 그것까진 지원이 되는것 같지 않아 아쉽다.[기본적은 file serve하고 해당 폴더를 입력시 위와 같이 Directory Listing이 나온다] 해당 문제라기 보다는 Twisted의 기본적인 API문서를 보면 알게 되는데 해당 API는..