일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발자
- 고루틴 채널
- go 맥 air 환경변수
- go air 환경변수
- 골랑 고퍼
- go recover
- go 환경변수
- gin middleware
- go clean architecture
- gin recovery
- go디자인패턴
- go air
- gin logger
- go 맥 air
- golang gopher
- go panic
- git
- go 캐릭터
- go channel
- gopath 환경변수
- go middleware
- go 패닉
- 신입개발자
- go 대기그룹
- air 환경변수
- 좀비고루틴
- clean architecture middleware
- go 마스코트
- go 맥
- go
- Today
- Total
목록go (12)
뽀미의 개발노트

Middleware는 코드 전체에서 작동하는 공통함수를 따로 빼놓은 부분이라고 생각하면 된다. 웹 백엔드 구현시 Middleware 디렉토리에 CORS, Authentication 을 많이 넣지만, 그건 다른 좋은 예시도 많으므로 이번 포스팅에서는 logger와 recovery만 다루도록 함. 프로젝트에서 gin으로 웹서버를 구현하고 있다. 기존에 middleware를 사용하지 않았을 때는 gin.Default()로 Gin Router를 생성했었고, gin에 디폴트로 내장된 logger와 recover 기능을 이미 사용 중이었다. 이번에 middleware에 따로 logger와 recovery를 구현하여 나만의 미들웨어를 사용하기로 결정함.package mainimport ( "github.com/gi..

여지껏 JAVA, Typescript만 써봤던 나는 새로운 언어 'Go'에 대해 공부하는 중이다. 다른 언어들은 문법 배우고 클론 코딩 하면서 바로 사용법부터 익혔는데, Go는 다른 언어들과의 차이점 + Go 만의 특징 등 언어 그 자체를 공부하는 것부터 시작하고 있다. 자바나 타입스크립트는 바로 실무에 뛰어들면서 한거라 사용은 할 줄 알지만 언어적 특성에 대해 따로 공부하지는 않아서 별 생각 없었는데, 고는 언어부터 공부하니 느낌이 확 새롭다. 아주 매력적인 언어 같다. 나는.. 아마도.. 조금.. 고를 '덕질'하고 싶다....!!! 고가 좋은 점은 여러가지이지만, 사실 가장 큰 이유는 '마스코트가 귀여워서'다... 얘 이름은 Gopher 다. 프로그래밍 언어를 겨우 캐릭터 때문에 좋아하게 될줄이야....
멀티쓰레드실행 흐름이 여러개인 것. 하나의 CPU가 여러 thread를 빠르게 번갈아가며 실행 -> 마치 동시에 여러 작업을 실행하는 것처럼 보임.그런데 쓰레드를 전환할때 비용이 발생하고, 이를 컨텍스트 스위치라고 함. 멀티쓰레드는 여러 작업을 병렬적으로 처리할 수 있어 효율적이지만, 쓰레드가 CPU 갯수를 넘어서서 지나치게 많아지면 오히려 성능 문제를 일으킬 수 있음. 따라서 멀티쓰레드를 활용할 때는 쓰레드가 CPU 갯수를 넘지 않도록 주의해서 사용해야 함. 고루틴고루틴은 OS의 쓰레드를 ‘이용’하는 경량 쓰레드임. (OS의 쓰레드와는 다른 개념!) 코어 - OS 스레드 - 고루틴 이렇게 연결해서 명령을 실행함. 고루틴 끝나고 제거되면 OS 스레드가 놀게됨. 그럼 대기하고 있던 고루틴이 그 빈자리로 가..

panic, defer, recovergo에는 try-catch문이 없다. 대신 panic을 처리하기 위해 defer/recover 를 사용한다.1. defer함수 리턴하기 직전에 실행LIFO (Last In, First Out) → 호출된 순서와 반대로 실행됨.C#의 finally 처럼 사용됨 (이미 리턴, 예외, panic 등이 일어나도 항상 후처리)2. panic현재 함수 멈추고 defer 모두 실행.상위함수로 전파됨.마지막 → 프로그램 종료3. recoverpanic 잡고 그 값을 가져옴. 프로그램 복구해서 이어지게 함.defer 함수 내에서만 쓸 수 있음.panic이 안 일어나면 recover()가 nil 임. 예시package mainimport "fmt"func main() { fmt.Pr..

네이티브 바이너리 형식 컴파일 언어C#과 Go의 컴파일 차이C#의 소스코드는 IL(Intermediate Language)(중간 단계의 코드)로 컴파일됨. 컴파일된 코드는 CLR(Common Language Runtime)에서 실행됨. CLR은 Virtual Machine처럼 동작하며, JIT(Just-In-Time) 컴파일러를 통해 IL을 네이티브 코드(CPU가 이해할 수 있는 기계어)로 바꿈. IL 코드는 플랫폼 독립적이어서 OS에 구애받지 않지만, 최종적으로는 .NET 런타임(CLR)이 있어야만 실행됨. 클라우드에 배포할 때 .NET 런타임을 포함해야해서 배포가 상대적으로 복잡함. (*.NET 환경에서만 실행된다는 소리는 : .NET Core 또는 .NET5라면 배포할때 .NET 런타임을 포함해서 ..

포인터와 GC(Garbage Collector)Go는 포인터를 제공하면서도, GC를 사용함. 개발자가 포인터로 메모리를 유연하게 관리할 수 있고, 안전하게 자동으로 메모리 관리도 해준다. 포인터 + GC로 성능과 안전성 모두 잡는 것.포인터C/C++ 같은 언어에서는 포인터를 제공함. 포인터를 사용하면 메모리 영역에 직접 접근하여 인스턴스를 조작할 수 있음. 메모리를 중복으로 복사하여 할당하는 경우를 줄이고 불필요한 메모리 낭비를 막을 수 있음. 그러나 잘못 사용하면 메모리 누수, 해제된 메모리 참조, 버그 발생 등의 위험이 있어 메모리 관리를 전적으로 개발자가 책임져야 함. Go에서는 포인터를 제공하지만 포인터 연산은 허용하지 않음. 주로 참조 전달이나 struct 내 메모리 참조를 위해 사용되며, GC..

새로운 회사에서 백엔드 개발을 맡게 되었다. 원래는 C#으로 만들다가 이번에 Go로 바꾼다고 한다. 나는 애매한 중간 시기에 들어와서 고 공부하다가 바꿀 때쯤 투입될 예정인 듯!! 그래서 각 잡고 공부하고 있는데 Java 배웠을 때랑 많이많이 다른 언어라 너무 재밌고 무엇보다 캐릭터가 귀여워서(?) 맘에 든다. 곰돌이..? 수달..? 뭔진 모르겠지만 잘 지내보자 겸댕이!! (검색해보니 쥐라고 한다,,, 충격,,,,;;;;) 사수님께서 고 언어 특징 공부하라고 하셨는데 이왕 정리한 김에 블로그 써버리기~! 유후~!! 참고로 나의 대장님은 킹왕짱 멋진 개발자 이시다. 내가 원래 알고있고 좋아했던 서비스를 만드는 회사에 취업한 것도 기쁜데, 넘넘 좋은 대장님을 만나서 진짜 행복하다. GDG 연사자분으로 처음 ..

우리 회사는 기존의 레거시 코드를 싹 걷어내고 차세대 버전으로 전부 뒤바꿈 할 예정이다. 언어로는 Go를 선택했는데 성능도 좋고 가볍고 빨라서 좋을 것 같다. 이 언어로 얼마나 멋진 서비스를 만들지 넘넘 기대된당!!!바로 작업에 착수하기 전 먼저 디자인 패턴도 공부하고, 아키텍처 공부도 하고 시작해야 좋을 것 같다고 하셔서 백엔드 아키텍처에 대한 이론적인걸 많이 공부했다. 그동안 클린 아키텍처 라는 말은 많이 들어봤지만 제대로 공부해본 건 이번이 처음이다. 공부한거 블로그에 정리해놓고 나도 나중에 봐야지~~ 룰루 go-clean-arch 깃헙 레포 정리Go 클린 아키텍처 깃헙 레포원본 (2017에 작성된거라 v1임)프레임워크에 독립적일 것.테스트 가능할 것UI에 독립적일 것Database에 독립적일 것..
참고 코드 깃헙 레포https://github.com/aQuaYi/Go-Notes/tree/10ffd4c65076d7c71a1415fb40c5fb0f11114600/temp/currency-in-Go Go-Notes/temp/currency-in-Go at 10ffd4c65076d7c71a1415fb40c5fb0f11114600 · aQuaYi/Go-NotesGo 语言笔记. Contribute to aQuaYi/Go-Notes development by creating an account on GitHub.github.com 채널패턴 1) or-done channel채널의 병합과 동시성 제어를 다루는 패턴. 실행 시간이 길거나 비정상 종료의 위험이 있는 채널 작업을 중단하여 안전하게 처리할 수 있음...

코드 참고 링크https://github.com/gobenpark/go-design-pattern GitHub - gobenpark/go-design-patternContribute to gobenpark/go-design-pattern development by creating an account on GitHub.github.com패턴 설명 참고 링크https://refactoring.guru/ko/design-patterns/what-is-pattern 디자인 패턴이란?디자인 패턴이란? 디자인 패턴은 소프트웨어 디자인 과정에서 자주 발생하는 문제들에 대한 전형적인 해결책입니다. 이는 코드에서 반복되는 디자인 문제들을 해결하기 위해 맞춤화할 수 있는refactoring.guru 동시성패턴 1) Ba..