'Study/Go lang'에 해당되는 글 30건
- 2021.02.08 TLS Handshake timeout
- 2021.02.04 AWS Codecommit 사용
- 2021.02.03 Go lang - db 관련 오류
- 2021.02.02 Go lang - Sql Test시 에러
- 2021.01.19 Naver Cloud Platform API 테스트
- 2021.01.10 Go lang - Echo Framework
- 2021.01.10 Go lang 환경설정 - go 설치
- 2021.01.10 Go lang 환경설정(사전준비3) VS Code 연동
- 2021.01.09 Go lang 환경설정(사전준비2)
- 2021.01.09 Go lang 환경설정(사전준비1)
가이드 문서링크 : docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/codecommit-user.pdf
github은 가입하게 되면 1개의 private repository를 생성할 수 있다.그외에는 모두 public 으로 공개해야한다.물론 내 프로젝트에 누가 신경을 쓰겠냐마는 그래도
지금은 바뀌었네
|
용량이 500MB, 2000 Actions
우선 aws에 회원가입을 하게되면 1년동안 아주 제한적인 기능들을 무료로 사용할 수 있다.
(프리티어가 아닌것들은 돈이 나가니 반드시 주의 해야한다)
AWS에 github과 같은 서비스로 Codecommit이 있다.
aws.amazon.com/ko/codecommit/pricing/
일단 무기한으로 무료인데 자세히보면
1. 최초!!! 5명의 사용자
2. 매달 50G
3. 매달 1만건의 Git요청
4. 무제한 리포지토리!!!
기본적으로 private인거다
code commit을 이용하기 위해서는
1. 회원가입
2. IAM 생성(추천)
3. 해당 유저(IAM)에 codecommit 권한주기
위 작업들을 선행으로 작업해야하고
그다음 codecommit에 와서 repository 생성하면
접속 id/pw를 생성할 수 있다.(2개까지)
(엑셀로도 다운받을 수 있다)
비번을 까먹으면 기존에 있는거 삭제또는 비활성하고 추가해야 한다
비번 변경은 안됨.
이후는 다음 링크 참조
https://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/getting-started.html
처음 Table 생성도 하지 않고 select 등을 날리면
no such table: user |
최소한 table 한개는 생성한다.
CREATE TABLE user ( id integer primary key autoincrement, username varchar(100), password varchar(1000), email varchar(100) ); |
그런데 해당 table에 Data 가 없이 조회를 할 때 적절한 처리를 하지 않으면 index out of range가 날 수 있다.
2021/02/03 09:20:23 http: panic serving [::1]:58206: runtime error: index out of range [0] with length 0 |
data insert
INSERT INTO "user" VALUES(1,'ab','cd','ab@cd.com'); |
이후 실행해보면 정상적으로 쿼리가 날아감.
소스코드에 문제가 없는데 오류가 나는경우 체크해 볼 것.
참고 : sqlite 콘솔에 접속했다가 종료할 때 quit 등의 다른 명령어가 있는 것은 아니고
ctrl + D
sql 을 사용할 때 run을 해 보면
exec: "gcc": executable file not found in $PATH
위와 같이 exec 오류가 나는 경우가 있다.
sudo apt-get install g++
설치하고 하면 됨.
네이버에서 클라우드 서비스를 한다.
GitHub - NaverCloudPlatform/ncloud-sdk-go-v2
여기에서 시작을 하려고 하면 매우 불친절한 설명으로 제대로 실행이 되지 않는다.
AWS의 경우에는 간단한 예제파일도 있는데...
초보자에게 환경이 제대로 되었는지 확인하려고 문의해봐도... 대답은 그닥..
어쨌거나 제공된 샘플을 실행해보기 위한 과정이다.
1. go get github.com/NaverCloudPlatform/ncloud-sdk-go-v2
이거 실행하면 package github.com/NaverCloudPlatform/ncloud-sdk-go-v2: no Go files in ... 으로 재대로 설치가 되지 않는다.
github에도 관련 issue가 있는데 오늘로 4일째 답변이 없네...
설치는 포기하고 clone로 소스를 다운받는다.
해당 프로젝트에서 샘플 소스를 실행하면 $HOME/.ncloud/configure 파일이 없다고 나온다.
github 설명에 해당 내용이 있다.
그래서 해당 경로에가서 파일을 강제로 생성한다.
이제 샘플코드를 실행해보면
인증정보가 없다고 나온다.
로그를 찍어보면
로그에서 apiKeys가 비어있는것을 확인할 수 있다.
ncloud.Keys() 에서 값이 없다는 것인데 ncloud-sdk-go-v2/ncloud/configuration.go 에 Keys() 라는 func가 있다.
들어가서 확인해보니...
case문으로 "ncloud_access_key_id"를 비교한다... 설명에는 NCLOUD_ACCESS_KEY_ID (or NCLOUD_ACCESS_KEY) 로 해놓고... 그래서 아까 생성한 configure 파일에 해당 내용을 추가했다.
왜 대문자로 된 KEY를 그냥 놔두었느냐
env_provider.go 에보면 대문자로 된 KEY를 사용한다..
어쨌거나 다시 go run을 해 보면
err Status: 401 Unauthorized, Body: {"error":{"errorCode":"200","message":"Authentication Failed","details":"This account is not allowed."}} 2021/01/19 23:37:01 Status: 401 Unauthorized, Body: {"error":{"errorCode":"200","message":"Authentication Failed","details":"This account is not allowed."}} |
허용되지 않았다(This account is not allowed)로 나온다.
configure key의 값을 aaa, bbb 로 해놔서 그렇다
네이버 클라우드 플랫폼에 로그인하여 계정관리에서 해당 Key정보를 찾아 입력하면 (없으면 생성해야 함)
에러없이 호출되지만... 결과는 알 수 없는 듯 했는데..
sample code 를 보면
req := server.CreateServerInstancesRequest
server Instance를 생성하는 것이다.... console에 가봤더니.... 서버가 여러개 생성되어 있다. ㅜ.ㅜ
급하게 종료 시킨 뒤. 반납한다. 헐... 그와중에 부팅중이 또 있네..
이것으로 호출이 되는것은 확인 함.
모두 반납한다.
환경설정이 정상적으로 되었으면 (configure 파일에 키정보 정상적인지 확인)
Region 목록을 조회하는것으로 변경해본다.
TestCloud.go
(참고 : git clone으로 받은 ncloud-sdk-go-v2 폴더에 생성했다)
package main import ( func main() { apiKeys := ncloud.Keys() req := server.GetRegionListRequest{ if r, err := client.V2Api.GetRegionList(&req); err != nil { } |
|
우선 Echo Framework를 받아 보자
https://echo.labstack.com/guide
Echo 사이트의 가이드에는
go get github.com/labstack/echo/v4
하라고 되어 있지만 해당 명령을 그대로 수행하면 오류가 난다.
cannot find package "github.com/labstack/echo/v4" in any of...
아래와 같이 버전을 빼고 실행해야 받아 짐
go get github.com/labstack/echo
그러나 depencency가 걸려있는 것들이 있어
아래와 같이 ... 을 붙여줘야 다 받아 짐.
go get -u github.com/labstack/echo/... |
참고 VS Code에서 파일 위치는
/mnt/c/해당폴더 등으로 terminal 가동했을 때 나타난 주소이다.
/usr/local 같은데로 이동했다가 못찾아오지 말고 참고 할 것.
https://golang.org/dl/
Go 사이트에서 최신 버전 확인 : go1.15.6.linux-amd64.tar.gz
터미널에서 다운받는다
curl -LO https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz
압축파일이므로 압축을 푼다.
tar -C /usr/local -xzf go1.15.6.linux-amd64.tar.gz
근데 압축이 안풀리고 permission denied가 나면 sudo를 붙여 명령을 실행한다.
sudo tar -C /usr/local -xzf go1.15.6.linux-amd64.tar.gz
비밀번호를 물어보므로 최초 설정한 비밀번호를 입력한다.
cd /usr/local/go 를 하여 해당 폴더가 정상적으로 생성되었는지 확인한다.
go 실행파일을 path에 추가한다.
export PATH=$PATH:/usr/local/go/bin
permission denied가 나서 sudo로 다시 압축을 풀고 /usr/local에 go 생성확인
PATH에 추가 후 go version 확인
Windows 에서 Linux용 Window 하위 시스템 설치 한 뒤에 리눅스도 설치했다.
VS Code를 에디터로 사용하기 위한 설정이다.
VS Code를 그냥 설치하게 되면 설치 경로에 공백이 있어 vs code 의 path 설정을 bash 해야하는데
/mnt/c/Users/사용자/AppData/Local/Programs/"Microsoft VS Code/bin"
위와 같이 Microsoft 뒤에 오는 공백 때문에 정상적으로 설정이 되지 않는다"
따라서 vs코드 설치할 때 공백이 없이 설치 경로명을 수정한다.
/mnt/c/Users/사용자\AppData\Local\Programs\VS_Code\bin
VS Code를 실행하자 다음과 같이 Install하라고 나오네
만약에 안뜨면 WSL 로 검색하면 됨
그 다음 Remote Development 를 install
그다음 power shell 에서 ubuntu 를 실행시킨다음.
코드 띄우고 쩜 을 입력하고 엔터하면 뭔가 설치가 되고 VS Code가 실행된다.
code .
C드라이브의 현재 User경로에서 뜨는데 특정 폴더기준으로 하려면
원하는 경로에 가서 code 한칸 공백 쩜 하고 엔터
code .
linux_for_go 라는 폴더를 만들어서 거기에서 code . 을 했더니 해당 경로로 열림
Windows 사용자를 위한 설정이므로
Linux 사용자는 Skip할 것.
---
Linux용 Windows 하위 시스템 체크를 하고 재부팅이 되면
Window키 또는 시작버튼을 눌러 Microsoft Store를 실행한다.
Ubuntu 를 검색한다
여러개가 검색되는데 그냥 Ubuntu를 클릭(특정버전 쓸꺼면 해당 버전 클릭)
무료이므로 다운받아 설치한다.
굳이 로그인할 필요 없으므로 '관심 없음' 클릭.
다운로드 중
다운로드가 다 되고 설치가 완료 됨
실행을 눌러 리눅스 install
설치가 끝나면 username 과 password를 설정한다
이번에는 터미널 설치
설치가 끝나고 Terminal 실행해보면 아직 리눅스(Ubuntu)가 안보인다.
재부팅한다.
설정이 정상적으로 된 경우 terminal을 검색하여 실행시킨 후
실행시킬 Command를 보면 Ubuntu가 추가되어 있다.
이후부터는 동일하게 리눅스에서 하는 것과 같다.
Go 언어를 시작하려면 개발환경설정을 해야하는데
권장하는 OS는 리눅스다.
Windows를 사용하는 경우에는 이런저런 제약이 많은데
윈도우에서 리눅스환경으로 설정이 가능하다.
WSL 이라는 것을 사용하는 것인데
우선 [제어판] - [앱] 에서 스크롤을 아래로 쭉~ 내리면
관련설정 - 프로그램 및 기능 이 있다.
클릭해 들어가면 왼쪽 메뉴에 'Windows 기능 켜기/끄기'가 있다.
클릭해보면 팝업이 뜨는데
Linux용 Windows 하위 시스템에 체크를 한다.
재부팅한다.