분류 전체보기
Go - Restful 하게 micro web service 만들기
Go - Restful 하게 micro web service 만들기
2021.10.10도메인에서 DB Table 1:1 구조체 만들기 저장소 Interface 만들기 해당 RepositoryDB 에 receive 함수 구현하기 DTO 정의하기 POST method 가 왔을 때 Request 로 받는 값 정의, Response 로 Client 에게 응답 값 정의 Service 구현 Service 는 Handler 를 통해 DTO(Request dto) 를 받아서 domain tpye 으로 repository 에 값을 처리하고 Response dto 로 Handler 에게 처리된 값을 넘긴다. Account Service Interface 구현 AccountService 는 Handler 에서 직접 구현 NewAccountService는 app.go 에서 Handler func로 사용 han..
유용한 도커 명령어 정리
유용한 도커 명령어 정리
2021.10.08컨테이너 이미지 빌드 docker build -t 리포지터리:태그 . 현 디렉터리에 있는 Dockerfile을 바탕으로 이미지를 빌드 docker image build -t 리포지터리:태그 . docker images 로컬 이미지 목록 docker image ls docker rmi 이미지 docker image rm 이미지 docker rmi -f ‘docker images -aq’ 로컬 이미지 삭제 docker image prune -a 로컬 이미지 일괄 삭제 이미지의 이동과 공유 docker pull 원격_리포지터리[:태그] docker image pull 원격_리포지터리[:태그] ocker tag 이미지[:태그] 원격_리포지터리[:태그] docker image tag 이미지[:태그] 원격_리포지터..
Google 이 평가해준 나의 blog
Google 이 평가해준 나의 blog
2021.10.08google이 저에게 blog평가 보고서를 보내주었습니다. 블로그를 시작한지도 거의 1년이 다되어 가서 의미가 좀 남달랐는데요 나름 ?! 꾸준히 작성한 저의 블로그 얼마나 성장했을까요 c++을 손놓은지는 1년이 넘었지만 역시 개발의 근본답게 검색어 상위 1 위부터 10 위 까지는 모두 c++글이 차지했네요 ㅠ 다른글들은 저의 정보력이 조금 딸리나봅니다 ㅠㅠ 더좋은 글 적으라는 의미로 받아들이겠습니다. 공부를 목적으로 시작한 블로그가 이렇게나 많이 봐주셔서 너무 감사하고 그만큼 저도 질좋은 컨텐츠를 올리려고 노력하고 있습니다. 하지만 학업 과 일을 병행하다 보니 ㅠ 조금 귀차니즘도 발동하고 그랬는데 반성해야겠네요 아무래도 개발 블로그다 보니 컴퓨터로 구글링 하면서 제일 많이 들어오시는거 같습니다. 미국과 ..
gitlab ci 를 이용하여 Azure docker registry에 image push 하기
gitlab ci 를 이용하여 Azure docker registry에 image push 하기
2021.10.08들어가기에 앞서 docker image 를 build 하여 docker image 저장소에 빌드를 하는 이유는 뭘까? 프로젝트를 하다보니 프로젝트 가 무거워지면서 점점 빌드하는 시간이 길어지고 Cloud vm에 좀더 빠르게 개발서버를 Run하기 위해서 도입하게 되었습니다. 이 글에서는 지속적인 배포 (CD) 에 대해서는 설명하지 않습니다. vm 이나 Azure app에 git push후 자동 배포후 실행까지 다루는 정보는 추후에 제가 조금더 공부해서 작성하도록 하겠습니다. Azure set up 먼저 Azure docker registry를 만든뒤 Username 과 password 를 기억해주세요 gitlab plan을 비즈니스나 프로로 쓰시는분들은 gitlab에 있는 docker registry를 사..
Docker 로 Go 프로젝트 빌드 & 실행하기
Docker 로 Go 프로젝트 빌드 & 실행하기
2021.10.05각종 VM에 go 가 설치가 안되어있다고 가정하고 도커를 사용하요 프로젝트를 실행하는 가볍게 실행하는 법입니다. Dockerfile # syntax=docker/dockerfile:1 FROM golang:1.16-alpine WORKDIR /app COPY go.mod ./ COPY go.sum ./ RUN go mod download EXPOSE 3070 COPY ./ ./ RUN go build CMD [ "./`go mod 의 모듈이름`" ] go build 를 하게되면 go mod 파일의 module 이름으로 바이너리 파일이 생성됩니다. 그래서 CMD 에 저렇게 적은 것 입니다. 포트와 ip에서 주의하실점 package app import ( "log" "net/http" "sms-api/log..
백준 - 좌표정렬하기 11650번 (정렬) with golang
백준 - 좌표정렬하기 11650번 (정렬) with golang
2021.10.04좌표 정렬하기 1 초 256 MB 55178 26613 20212 48.139% 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 예제 입력 1 5 3 -1 4 2 1 2 1 3 1 3 예제 출력 1 복사 1 -1 1 1 2 2 3 3 3 4 해결방법 package main import (..
키보드 - 해피해킹 그리고 키크론 K2 후기
키보드 - 해피해킹 그리고 키크론 K2 후기
2021.10.04저를 소개하자면 1.5년차 개발자 그리고 주로 Mac os 와 Ubuntu 에서 VIM 을 사용하여 코딩을 하고 있습니다. 아무래도 개발자는 가족? 보다도 키보드와 더 오래 더 가까이 있기 때문에 키보드에 관심이 생길 수 밖에 없는거 같습니다. 그래서 해피해킹 또는 키크론 을 입문하시려고 하는분들께 조금이나마 도움이 되었으면 하는 마음 으로 내돈내산 후기를 들려드리고자 합니다. 해피해킹 장점 1. 풀배열 이나 텐키리스 보다도 작은 몸집을 가지고 있어서 두팔의 간격이 최소한인 상태에서 타이핑이 가능합니다. 2. VIM, emacs, IDEvim 에 익숙하신 분들이 정말 좋아할만한 키배열을 가지고 있습니다. 3. 마치 초콜릿을 부수는 듯한 타이핑 키압감을 가지고있는데 한번 맛들리면 다른 키보드에서는 이정도의..
Go - 삽입정렬 구현하기
Go - 삽입정렬 구현하기
2021.10.03시간 복잡도 최악의 경우(역으로 정렬 된 경우) 비교 횟수 : 외부 루프 안의 각 반복마다 i번의 비교 수행 (n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2 = O(n^2) 최선의 경우 비교 횟수 : 이동 없이 1번의 비교만 이루어진다. (n-1)번 = O(n) 공간 복잡도 기존에 주어진 배열에서 원소 Swap만 이루어지므로 공간 복잡도는 O(n)이다. 특징 장점 알고리즘 구현이 비교적 단순하다. 대부분의 원소가 이미 정렬되어 있는 경우에 효율적이다. 주어진 배열에서만 교환하므로 다른 메모리 공간이 필요하지 않다. => 제자리 정렬(in-place sorting) 안정 정렬이다. 다른 O(n^2) 알고리즘에 비해 상대적으로 빠르다. 단점 시간 복잡도가 평균, 최악에서는 O(n^2)로..
Ubuntu 환경에서 쓸만한 Git tool 소개
Ubuntu 환경에서 쓸만한 Git tool 소개
2021.09.29git diff 와 merge 또는 과거의 코드를 좀더 시각적으로 살펴보기 위해서 기존에 사용하던 https://github.com/jonas/tig GitHub - jonas/tig: Text-mode interface for git Text-mode interface for git. Contribute to jonas/tig development by creating an account on GitHub. github.com tig 라는 아이를 버리고 GUI를 선택했습니다. 하지만 저는 터미널 환경을 좀더 좋아하고 기본 IDE를 VIM 으로 사용하는 만큼 좀더 터미널 친화적인 Git tool이 있으면 좋았습니다. 그렇게 찾다보니 윈도우와 ubuntu환경을 지원하는 무료 툴을 발견했고 Gitkraken..
클라우드에 docker compose 로 배포시 Time zone 변경하기
클라우드에 docker compose 로 배포시 Time zone 변경하기
2021.09.28기존 클라우드에 도커 이미지로 배포시 한국 시간과 - 09 시간 차이가 나는것을 가끔 보셨을 겁니다. 그럴때는 docker-compose.yml에 다음과 같은 내용을 추가 해주세요 version: "3.7" services: display-socket-server: build: context: . dockerfile: Dockerfile ports: - "3060:3060" volumes: - /usr/src/app/node_modules - ./:/usr/src/app environment: TZ: "Asia/Seoul" env 에 TZ 로 원하시는 국가를 선택해주시면 됩니다. docker-compose down && docker-compose up --build 하게되면 정상적으로 시간이 바뀐것을 확..
Go - 구조화된 로그 남기기
Go - 구조화된 로그 남기기
2021.09.24로그를 남겨야 하는이유 개발자는 디버깅 하는데에 있어서 가끔 로그가 정말 큰도움을 줄때가 많습니다. 꼭 디버깅의 이유가 아니더라도 로그를 남겨야 하는 이유는 많을 텐데요 오늘은 지금까지 백엔드 개발을 하면서 이렇게 로그를 남기면 좋을거 같다 싶은것과 새롭게 배우는 Go 언어에서는 어떻게 log를 남기는지 적어보겠습니다. 로그 라이브러리 선택 uber 에서 만든 uber-go 의 로그 라이브러리를 사용하겠습니다. https://github.com/uber-go/zap GitHub - uber-go/zap: Blazing fast, structured, leveled logging in Go. Blazing fast, structured, leveled logging in Go. Contribute to u..
백준 4948번: 베르트랑 공준 - golang
백준 4948번: 베르트랑 공준 - golang
2021.09.22베르트랑 공준 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 256 MB 45249 18591 15172 41.757% 문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 ..