Go의 슬라이스는 배열과 비슷한 듯 다르다. 슬라이스는 세 개의 필드를 가진 데이터 구조이다. 포인터: 실제 값이 들어있는 배열의 주소를 가리킨다 Length: 값이 들어있는 길이를 가리킨다. Capacity: 실제 값은 들어있지 않지만 미리 확보해놓은 메모리 공간이라 생각하면 된다. Capacity 이내 에서는 append를 하더라도 다른 곳으로 메모리를 재할당 할 필요가 없다. 저장하는 메모리 공간을 이사할 필요가 없다는 것이다. 적절할지 모르겠지만 비유를 해본다. 아파트의 방에 한 명씩 살아야 한다고 하자...
개요 마틴 파울러가 10 여분간 압축하여 이야기한 소프트웨어 아키텍처에 대한 생각을 유튜브를 통해 보고, 유튜브에 언급된 칼럼까지 읽고 나서 정리를 해보고 싶어졌다. TL;DR 소프트웨어 아키텍트는 팀 내의 가장 노련한 개발자이다. 요구사항을 받아서 어떤 콤포넌트와 인터페이스로 구성할지를 디자인하여 개발팀에 공유하고 합의를 이루면 그것이 바로 아키텍처이다. 이러한 아키텍처는 한번 정하면 바꾸기가 힘든 것들을 말한다. 그렇기에 핵심가치를 담고 있기도 하며 개발에 참여하는 모든 이가 이해하고 합의하는 최소한인 것이다. 아키텍트는 등반에서의 가이드와 같다. 개발팀을 이끌면서 가르쳐 전체 구성원의 역량을 끌어올리고, 난관에 부딪힐때 의지할 수 있는 존재이다. 개발팀과 프로젝트가 돌아가는 상황을 잘 알고 있으며,..
Photo by Yancy Min on Unsplash gist 를 만져보며 GitHub CLI 에 대한 기대감이 커졌다. 이번에는 repo 와 관련한 기능을 써보고자 한다. 이렇게 신기해하며 사용법을 익히는 것보다 더욱 중요한 것은 실제로 꾸준히 쓰는 것이겠다. 좋은 분들과 함께하는 딥백수 커뮤니티에 블로그 포스팅을 자주하며 기능들을 내 것으로 만들어야 겠다. GitHub Repo: https://github.com/cli/cli Official Document: https://cli.github.com/manual/ Clone repo 두 명령은 같다. 장단점이나 차이를 모르겠다. $ gh repo clone dl4ab/dl4ab.github.io $ git clone http://github.com..
Photo by Richy Great on Unsplash GitHub CLI 가 나왔다 한다. GitHub 을 이용해 본격적인 협업을 하지는 않지만 백업 용도로 잘 쓰고 있기에 이런 저런 기능이 있구나 하고 넘어가기 보다는 나의 용도에 적합한 기능들 만이라도 직접 한번 써보고자 한다. GitHub Repo: https://github.com/cli/cli Official Document: https://cli.github.com/manual/ 설치 Chocolatey 가 설치되어 있었기에 Powershell 을 관리자 모드로 열어서 아래와 같이 gh 를 설치 완료 로그인 gh auth login 또는 gh auth login --hostname github.com 으로 로그인을 해주면 준비 완료이다. ..
Photo by Simon Migaj on Unsplash 시작 PDF 또는 ePub 를 읽을 일이 가끔씩 있어서 가볍게 들고 다닐만한 태블릿을 찾아보았다. 현 시점 (2020-09-20) 의 가성비 제품은 크게 셋으로 볼 수 있었는데 10만원대 P20HD, iplay20, Fire HD 10 이었다. iplay20 으로 어느정도 마음을 굳히고 있었는데 곰곰이 생각해보니 집에 샤오미 Mi Pad 가 있었다. 며칠 들고 다녀보고 태블릿으로 PDF, ePub 를 읽는 습관을 들일 수 있는지 경험해보자 싶었다. 그런데 검색해보니 의외로 샤오미 Mi Pad 가 연식에 비해 나쁘지 않고 해상도는 발군인 것이었다. 그래서 커스텀 롬의 기나긴 여정이 시작되었다. 커스텀 롬을 올리는 것 자체는 전혀 어렵지 않았다. 하..
Photo by Muhannad Ajjan on Unsplash 개요 하나의 구조체의 필드가 너무 길면 한눈에 보기 어렵다. 그렇다고 구조체 속에 구조체를 넣어서 구조화하면 너무 정신이 없다. 실무에서 아래와 같이 적용을 해보니 편하여 공유해본다. JSON marshaling/unmarshaling 에 대한 이해에 도움이 되기도 하였다. 더 좋은 방법이 있거나, 잘못알고 있는 부분이 있다면 알려주시면 좋겠다 * omitempty 태그도 언급하면 좋았겠지만 이번 글에서는 제외하였다. * 예제의 몇몇 error 처리는 예제코드의 길이를 줄이려 생략하였다. 모든 에러는 처리되어야 한다. 기본 구현 Playground: https://play.golang.org/p/jmVzyTFeXZR 필드들을 나열하여 정의한..
얼마전 어느 개발자 분이 자신의 생활 루틴을 꾸려나가는 방법론에 관해 소개하시는 멋진 글을 읽었습니다. 하루 25분 실행하기: 하루를 대하는 14년차 개발자의 자세 꾸준히 자신에 맞는 방법을 고민하고, 또 실천하시는 모습이 존경스러웠습니다. 이를 읽고 넘기기만 할 것이 아니라 나의 루틴을 돌아보고 정리 해보는 시간, 나아가 개선점과 배울 점들을 적용해보는 시간을 가져보자는 욕심이 났습니다. 공감한 부분 읽으며 공감이 갔던 부분은 다음과 같습니다. 가장 중요한 것은 꾸준히 하는 것이다 중국 고전인 중용 은 성실함에 대한 이야기입니다. 학교의 옛 급훈처럼 느껴지는 고리타분해 보이는 성실 뜨겁게 몰입하는 것도 좋지만, 지치지 않고 꾸준히 하는 것이 더욱 어려우면서도 중요합니다. 혼자 공부해도 되는데 애써 학원..
Photo by Joshua Earle on Unsplash 개요 개발하던 서비스가 특정 Go 버전에서 (당시 최신버전) 문제가 발생하여서 계속 새로운 버전을 바꿔 깔아가며 테스트했던 기억이 있다. gvm 을 설치하면 여러 Go 버전을 설치할 수 있고, 바꿔가며 쓸 수 있다. GitHub 링크: https://github.com/moovweb/gvm 설치하기 WSL2 에서 bash/zsh 를 사용하는가 여부에 따라 아래 명령중 하나를 CLI 에서 실행하면 된다. $ bash <
Photo by Arian Darvishi on Unsplash 개요 Go modules 에 대해서 확인해보고, 나아가 vendor 쪽을 확실히 이해해보고 싶어서 아예 깨끗한 환경에서 Go 를 깔아보려 했는데 이왕 하는김에 윈도우의 WSL2 에 설치하고 간단히 개발할 수 있는 환경을 구축해보면 좋겠다 싶었다. 준비상황 WSL2 는 이미 사용할 준비가 되어 있고 zsh 및 oh my zsh 를 설치한 상태이며 Windows 에서는 VSCode 가 설치되어 있다. 참고 링크 - https://medium.com/@betakuang/setup-go-development-environment-with-vs-code-and-wsl-on-windows-62bd4625c6a7 - https://sal.as/post/..
Photo by Tobias Fischer on Unsplash개요 Golang 에서 쓸 수 있는 Key-value NoSQL Database 인 Bolt DB 를 이용해서 NoSQL 의 장점을 알아보자 * Key-value NoSQL Database 의 단점을 하나 짚고 넘어가자. Query 속도등에는 취약하다. - 이런게 필요하고 많은 데이터 및 성능이 중요하다면 SQLite 로 가자 링크 - 예제 GitHub: https://github.com/nicewook/boltdb-bolthold-nosql- BoltDB GitHub: https://github.com/boltdb/bolt- 현재는 stable 상태로 더 이상의 업데이트는 없다고 천명했으며- bbolt 로 fork 되어 개선되고 있다. ht..
- Total
- Today
- Yesterday
- 체호프
- golang
- bun
- intellij
- 독서후기
- 클린 애자일
- 독서
- folklore
- go
- 인텔리제이
- websocket
- API
- 영화
- agile
- strange
- 티스토리챌린지
- OpenAI
- ChatGPT
- Gin
- Bug
- 엉클 밥
- notion
- 2024년
- 잡학툰
- clean agile
- 노션
- solid
- 오블완
- 2023
- github
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |