Photo by Andrei Slobtsov on Unsplash 전송되어 온 JSON byte array의 정확한 구조를 안다면 Unmarshaling을 하면 되겠지만 구조를 모르는 상황에서 JSON을 알아보기 쉽게 출력하여 분석하려고 한다. 참고 링크: https://stackoverflow.com/a/29046984/3382699 예제 링크: https://pkg.go.dev/encoding/json#example-Indent 플레이그라운드(약간 변형): https://play.golang.org/p/T6PQ6PBQCTO 예제 간단 분석 1) 도로의 이름과 번호를 담는 구조체 Road가 있다. 2) Road 타입의 인스턴스 roads를 생성한 다음 3) json.Marshal()로 byte arra..
Photo by Jean-Louis Paulin on Unsplash LeetCode 문제를 푸는데 풀기가 쉽지 않았다. discuss를 보니 next permutation을 계산하는 것 자체는 기본으로 알고 있는 것으로 하고 넘어가고 있었고, 어떤 언어는 기본으로 제공하는 함수였다. 그럼에도 자괴감을 힘겹게 극복하고 next permutation을 이해해보고 Go로 구현해보았다. 개념 이해 개념 이해 링크: https://bit.ly/3bvWZmu 우리가 구현하려는 것은 다음과 같다. 정수 슬라이스가 있다고 할때에 그 슬라이스 순서대로 하나의 수라고 생각해보자. 그러면 이 수의 각각의 자릿수의 순서만을 바꿔서 그 다음 큰 수를 찾는 것이다. 예를 들어 12345 라는 숫자가 있다면, 1, 2, 3, 4..
Photo by Honey Fangs on Unsplash 아주 잡다한 테스트이다. 정수를 역정렬하는 방법은 크게 두 개가 떠오르는데 둘 중 어느게 더 빠른지 알고 싶었다. 전체 테스트코드 링크: https://github.com/nicewook/golang-sort-reverse-test 첫 번째 방법은 sort.Reverse()를 활용하는 것이고, 두 번째 방법은 sort.Slice()를 이용하는 것이다. 첫 인상은 두 번째 방법이 빠를 것 같았다. 첫 번째 방법은 뭔가 세 번이나 감싸잖아? 하는 선입견이 컸다. func sortReverse1(a []int) { sort.Sort(sort.Reverse(sort.IntSlice(a))) } func sortReverse2(a []int) { sort..
Photo by Markus Spiske on Unsplash 이번에는 container/heap 패키지를 이용해서 구현해보자 "요구사항만 만족해주면 원하는 heap 기능을 제공하겠다." 이렇게 한 줄 요약할 수 있겠다. (Fix, Remove 등의 기능도 있지만 이것은 생략하겠다.) 이전 포스팅한 from the scratch 구현 - https://jusths.tistory.com/215 - https://play.golang.org/p/cjYXpQjPiZY container/heap을 이용한 구현 - https://play.golang.org/p/JwU6aHNGb7k 요구사항과 제공기능 https://golang.org/pkg/container/heap/#Interface 어떠한 타입이건 sort...
Photo by Markus Spiske on Unsplash LeetCode 문제를 풀다가 min heap이 필요한 문제를 만난김에, Go는 쉽게 쓸 수 있는 패키지는 제공하지 않기에 (오히려 그 덕분에) min heap을 들여다보고 공부해보게 되었다. (참고: LeetCode problem: https://leetcode.com/contest/weekly-contest-237/problems/single-threaded-cpu/ ) Min Heap이란 무엇인가? 이진 트리인데 parent는 아래의 child 노드들보다 작은 값을 가진다. 실제 구현은 슬라이스의 형태이다. 아래 이미지는 Max Heap이지만,..
Photo by Austin Distel on Unsplash 드디어 마지막 Dependency Inversion Principle 이다. - Single Responsibility Principle - Open/Closed Principle - Liskov Substitution Principle - Interface Segregation Principle - Dependency Inversion Principle Dependency Inversion Principle "High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on de..
Photo by Austin Distel on Unsplash Liskov Substitution Principle에 이어지는 Interface Segregation Principle을 알아보자 - Single Responsibility Principle - Open/Closed Principle - Liskov Substitution Principle - Interface Segregation Principle - Dependency Inversion Principle Interface Segregation Principle "Clients should not be forced to depend on methods they do not use." - Robert C. Martin Segregation ..
Photo by Austin Distel on Unsplash 세 번째 Liskov Substitution Principle이다 - Single Responsibility Principle - Open/Closed Principle - Liskov Substitution Principle - Interface Segregation Principle - Dependency Inversion Principle Liskov Substitution Principle Dave Cheney on YouTube: https://youtu.be/zzAdEt3xZ1M?t=615 참고 - OOP에서의 Liskov Substitution Principle OOP, 즉 Class가 있는 언어에서는, 슈퍼클래스를 물려 받은 파..
Photo by Austin Distel on Unsplash 이번에는 Open/Closed Priciple을 알아보자 - Single Responsibility Principle - Open/Closed Principle - Liskov Substitution Principle - Interface Segregation Principle - Dependency Inversion Principle Open/Closed Principle "Software entities should be open for extension, but closed for modification." - Bertrand Meyer, Object-Oriented Software Construction OOP 클래스를 기반으로한 언어..
Photo by Austin Distel on Unsplash SOLID는 여러 번 마주쳤지만 제대로 이해했다고는 못하겠다. 이번에는 실제 Go 코드를 통해 이해해 보려 한다. SOLID를 따르는 Go 코드는 어떤 모양이어야 할까? Dave Cheney의 발표내용을 기반으로 하여 알아보았다. - Dave Cheney posting: https://dave.cheney.net/2016/08/20/solid-go-design - Dave Cheney YouTube: https://youtu.be/zzAdEt3xZ1M SOLID가 무엇인지 위키부터 찾아보자. https://www.wikiwand.com/en/SOLID In object-oriented computer programming, SOLID is a..
- Total
- Today
- Yesterday
- solid
- intellij
- 인텔리제이
- 제이펍
- Gin
- 체호프
- 독서후기
- 노션
- 티스토리챌린지
- strange
- 2023
- 영화
- 독서
- websocket
- notion
- bun
- OpenAI
- clean agile
- github
- API
- 엉클 밥
- 클린 애자일
- agile
- ChatGPT
- golang
- 오블완
- Bug
- 잡학툰
- go
- folklore
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |