목록Study (59)
오늘도 한 뼘 더
# 배경 데이터 보안을 위해 MySQL 서버 접속을 cmd창으로 진행하면서 MySQL Client를 사용하여 데이터를 볼 때 가독성을 높여서 보고 싶다. # MySQL 데이터 확인 일반적으로 데이터를 확인하는 방법 다음과 같이 데이터를 조회하면 컬럽의 수가 많으면 굉장히 보기 힘들다. > select * from mysql.user; ego를 사용하여 가독성 높이기 ego (\G)를 사용하여 행 별로 수직으로 나열이 되어 가독성이 올라간다. > select * from mysql.user \G
# 배경 DB 보안을 위해서 네트워크를 통한 DB 접근을 막았고, 그 과정에서 Workbecnh를 사용해서 볼 수 있는 방법을 찾았다. Workbench에서 SSH를 통한 접근을 설정을 제공한다. # SSH 설정 방법 기존의 Connection을 편집하거나 새로 생성한다. 그리고 Connection Method를 SSH로 선택한다 나머지 세팅을 다음과 같이 진행한다. SSH Hostname : 접근하고자 하는 서버 주소(or IP) SSH Username : 서버의 username SSH KeyFile : SSH private 키 파일을 선택해야 한다. MySQL Hostname : MySQL 서버 주소 MySQL Server Port : 3306 Username : 사용자 이름 비밀번호를 저장하여 사용..
# 배경 MySQL의 global timezone이 System으로 설정되어 있고, 그 과정에서 DB에 데이터를 넣을 때 UTC로 시간이 들어가고 있었다. 한국 로컬 시간으로 설정하는 것이 가독성이 좋기 때문에 이를 바꾸고 싶다. # 코드 설정 DB Connection 설정 코드에 로컬 타임 설정을 작성해야 한다. 예) Asia/Seoul => Asia%2FSeoul 로 작성한다. 수정 전 ConnectionString = "@tcp(127.0.0.1:3306)/data?parseTime=True" sql.Open("mysql", ConnectionString) 수정 후 ConnectionString = "@tcp(127.0.0.1:3306)/data?parseTime=True&loc=Asia%2FSeo..
# 배경 백엔드 개발을 하다 보니 꼼꼼히 확인을 한다고 해도 중간에 에러 처리를 놓치거나 서로 중복되는 코드가 있거나 사용하지 않는 import 등이 있다. 사람이 직접 코드 리뷰를 해서 찾아내는 방법도 있지만 모듈의 도움으로 해당 부분들을 개선할 수 있다고 한다. # Golang CI Lint 설치하기 https://golangci-lint.run/ Introduction | golangci-lint Fast Go linters runner golangci-lint. golangci-lint.run 1. golangci-lint를 설치한다. (Windows) sh명령어를 사용하기 때문에 Bash 환경에서 실행이 가능하다 # binary will be $(go env GOPATH)/bin/golangci..
# 배경 최근 회사에서 slow query를 보고 인덱스를 추가하는 작업을 진행하고 있다. 그런데 인덱스를 추가했음에도 여전히 계속 느린 쿼리들이 발생했고 이때, query plan이라는 것을 알게 되었다. MySQL Workbench에서는 해당 기능을 볼 수 있게 제공한다. # Query Plan 보기 1. 그림으로 확인하기 쿼리문을 작성하고 위의 돋보기 모양으로 실행을 하면 output 창에 query plan이 뜨게 된다. 2. Explain 사용하여 확인하기 EXPLAIN SELECT * FROM world.city explain 명령어를 붙여서 쿼리문을 실행하면 query의 상세 정보가 결과 값으로 반환된다.
# 문자열 문자, 단어 등으로 구성된 문자들의 집합을 의미한다. ## 문자열 만드는 방법 1. 큰 따옴표(") 사용 "Hello Jihyunb" 2. 작은따옴표(') 사용 'Hello World' 3. 큰 따옴표 3개 연속(""") 사용 """You Only Live Once""" 4. 작은따옴표 3개 연속(''') 사용 '''Enjoy your Life''' ## 중간에 작은따옴표(') / 큰 따옴표(") 넣기 "Python says 'Hi'" '"Python" is good language' 'Python\'s favorite food' ## 여러 줄인 문자열 대입하기 1. \n 사용하기 >>> multiline = "Hello World \nLife is beautiful" >>> print(mul..
# 숫자형 숫자 형태로 이루어진 자료형 정수, 실수, 8진수, 16진수 등이 있다. ## 정수형 정수를 나타내는 자료형, 다음은 정수를 'a'에 대입하는 예시이다. >>> a = 12 >>> a = -12 >>> a = 0 ## 실수형 소수점이 포함된 숫자, 다음은 실수를 'a'에 대입하는 예시이다. >>> a = 1.23 >>> a = -3.14 ## 8진수, 16진수 8진수 - 0o로 시작 >>> a = 0o177 16진수 - 0x로 시작 >>> a = 0x8ff >>> b = 0xAB # 연산자 ## 사칙연산 +, -, *, / >>> a = 2 >>> b = 5 >>> a + b 7 >>> a * b 10 >>> a / b 0.4 ## 제곱 연산자 (**) >>> a = 3 >>> b = 4 >>..
# AWS 설정 1. IAM 사용자를 생성한다. AWS SNS(Simple Notification Service)에 대한 권한을 가진 IAM 사용자를 만든다 IAM 사용자에 대한 키를 저장한다. 2. AWS Config를 설정한다. 사용자의 "ACCESS_KEY_ID"와 " SECRET_ACCESS_KEY"를 사용하여 로컬에 "aws configure" 명령어를 통해 설정한다. 이전 게시글에 같은 프로세스를 정리하였다. 2022.01.10 - [DevOps & Infra/AWS] - [AWS] AWS CLI 설치하기 [AWS] AWS CLI 설치하기 AWS를 작업할 때 크게 두 가지 방법으로 작업을 한다. 1) AWS Console 2) AWS CLI(Command Line Interface) 보통 대부..
# 배경 Go 코드로 간단하게 API를 호출하고 싶다. Go에서 http 패키지를 지원하여 해당 패키지를 사용하여 API 호출을 해보도록 한다. # net/http 패키지 https://pkg.go.dev/net/http http package - net/http - Go Packages HTTP Trailers are a set of key/value pairs like headers that come after the HTTP response, instead of before. package main import ( "io" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/sendstrailers", func(w http.R..
# Context Golang에서 Context는 작업 명세서와 같은 역할을 한다. timeout 설정 또한 이 context 패키지를 사용하여 설정할 수 있다. # WithTimeout 기본 명령어는 다음과 같이 사용할 수 있다. context.WithTimeout(context.Background(), 20*time.Second) 코드에 적용하기 package main import ( "context" "fmt" "time" ) func main() { db, err := sql.Open("mysql", "root:1111@tcp(127.0.0.1:3306/data") if err != nil { log.Fatal("DB Connection Error: ", err) } defer db.Close()..