전체 글 162

[Go/Golang] Golang의 문자열 읽기에 관한 고찰(Reader, Scanner, Scanln)

Golang의 문자열 읽기에 관한 고찰 bufio 패키지의 bufio.NewReader(os.Stdin) ReadLine() 메서드 ReadLine() 메서드는 os.Stdin으로부터 읽어 들인 데이터를 []Byte 형으로 리턴합니다. ReadLine 메서드를 사용할 땐 buffer의 크기 등 다양하게 고려해야 하는 케이스들이 많습니다. 이러한 이유에서 bufio.go 파일을 확인해보면 다음과 같은 내용이 있습니다. ReadLine is a low-level line-reading primitive. Most callers should use ReadBytes('\n') or ReadString('\n') instead or use a Scanner. ReadLine 메서드는..

IT/Go 2021.03.08

[Istio] Istio는 무엇일까(개론)

[Istio] Istio는 무엇일까(개론) Kubernetes Korea Group에서 진행하고 있는 Istio 스터디 첫 날 내용을 정리해봅니다. 현업에 투입된지 얼마 되지 않았다보니 Kubernetes 외적으로 다양한 이야기가 나왔지만 모두 이해하긴 어려웠습니다. 앞으로도 꾸준한 스터디와 자기계발이 필요하겠다는 걸 절실히 느낄 수 있는 시간이었습니다. Microservice Architecture (MSA) Istio를 이야기하기 전에, MSA를 먼저 정리해보겠습니다. MSA는 작은 Service 단위로 큰 프로젝트를 잘게 나누어 구성하는 구조를 의미합니다. 여기에서 말하는 Service는 기능의 단위라고 생각하면 됩니다. 하나의 Service는 하나의 기능만을 수행하도록 역할을 세밀하게 분리하고 구..

IT/Istio 2021.03.05

[Go/Golang] Echo 프레임워크에서 CORS 관련 설정하기

Go Echo 프레임워크에서 CORS 관련 설정하기 웹 개발을 하다보면 종종 CORS (Cross-Origin Resource Sharing) 을 마주치곤 합니다. CORS 정책을 위반하였다는 에러를 마주치면 당혹스럽긴 합니다. 단순한 작업일 뿐인데도 정상적으로 수행되지 않는 코드를 보면 야속하기까지도 합니다. 다만 오늘은 CORS에 관한 내용을 다루려는 것은 아닙니다. 오늘은 Echo 프레임워크를 이용할 때, CORS 관련 설정은 어떻게 수행하면 되는지 정리해보도록 하겠습니다. 모든 원격지, 모든 메서드 허용 Echo 프레임워크는 기본적으로 모든 원격지로부터 오는 모든 메서드를 허용합니다. 이 때는 다음과 같이 명시적으로 써줘도 괜찮습니다. 소스 코드 1 func main() { e := echo.Ne..

IT/Go 2021.03.04

[Go/Golang] echo 프레임워크를 이용해 Parameter 받는 방법(Query Param, Path Val)

echo 프레임워크를 이용해 Parameter 받는 방법(Query Param, Path Val) URI를 이용해서 인자를 전달하는 방법은 여러 가지가 있습니다. 가장 대중적으로 사용하는 Query Parameter와 Path Variable에 대해 정리해보겠습니다. Query Parameter 입력 http://localhost:8080/users/?name=wookii&age=27위와 같이 Query Parameter의 형태로 전달받은 데이터는 echo.Context.QueryParam() 메서드나 echo.Context.QueryParams() 메서드로 처리할 수 있습니다. 소스 코드 1 type users struct { name string age int } func queryParamHandl..

IT/Go 2021.03.03

[Go/Golang] JSON 데이터 형식에 맞춰 Struct를 자동으로 생성해주는 사이트

[Go/Golang] JSON 데이터 형식에 맞춰 Struct를 자동으로 생성해주는 사이트 API 서버 개발 API 서버 개발을 하다보면, JSON 데이터를 주고 받을 일이 참 많습니다. Python에서는 딕셔너리 자료로 거의 대부분의 작업이 가능했지만, Go는 그렇지 않습니다. json.Unmarshal() Go에서 JSON 데이터를 받아 어떤 의미 있는(논리적인) 데이터 형식으로 변환하기 위해선 json.Unmarshal() 을 사용합니다. 다만 이렇게 json.Unmarshal() 메서드를 사용하려면 우리가 주고받는 JSON 데이터가 어떻게 생겼는지 Go가 알고 있어야 합니다. 우리는 이를 위해 Go에 JSON 데이터 형식과 일치하는 Struct를 생성해둘 수 있습니다. JSON-TO-GO 하지만 ..

IT/Go 2021.03.02

[Mac] Apple Silicon M1 Mac에서 Karabiner, 해머스푼 없이 우측 커맨드로 한영 전환하기

[Mac] M1 Mac에서 재부팅 또는 시스템 종료할 때 커널 패닉이 발생하는 현상 (tistory.com) 초기에 올렸던 글 이후로도 m1 mac에서 Karabiner을 사용하면 아직까지 Kernel Panic 등이 발생하고 있습니다. 13버전이 나왔음에도 아무런 진전이 없는 것으로 보아 m1을 포기하고 있는 것은 아닌지 하는 걱정도 드네요. 현재 저는 애플에서 제공하는 네이티브한 방법으로 오른쪽 Command 키를 한영 키로 사용하고 있습니다. Clien에서 SkyHyunmi 님이 올려주신 글을 참고 부탁드립니다. /User/Shared/bin 디렉토리를 생성합니다. $ mkdir -p /Users/Shared/bin 해당 디렉토리에 userkeymapping파일을 생성합니다. $ printf ..

Apple/Mac 2021.02.26

[OS] fallocate 이용해 더미 파일을 만들자.

fallocate 명령은 특정 이름을 갖는 특정 크기의 파일을 만드는 명령어입니다. sftp 명령어를 통해 Network Bandwidth 등을 측정할 때 사용할 더미 파일을 만들 때 사용할 수 있습니다. 사용법은 매우 단순합니다. $ fallocate -l $size $filename 예를 들어, 크기가 3G이고 이름이 File_3G인 파일을 만들고자 한다면 다음과 같이 사용할 수 있습니다. $ fallocate -l 3G File_3G 만약 다른 단위의 크기로 만들고자 한다면, G 대신 K, M, T 등을 이용하여 다양한 단위의 크기로 생성할 수 있습니다.

IT/OS 2021.02.25

[SQL/SQLite] SQLite의 5가지 자료형

[SQL/SQLite] SQLite의 5가지 자료형 SQLite는 파일이나 메모리에 데이터를 저장하는 작고 가벼운 DB입니다. 일반적으로 많이 사용하는 PostgreSQL, MySQL 등의 DB 시스템은 정적 자료형 시스템을 이용하고 있습니다. 정적 자료형 시스템이란, 특정 칼럼에 저장할 수 있는 자료형이, 해당 칼럼을 생성할 때 지정한 자료형만 저장 가능한 시스템입니다. 한편, 다른 DB 시스템과는 달리 SQLite는 동적 자료형 시스템을 사용하고 있습니다. 따라서, SQLite로 생성한 테이블의 칼럼에 저장된 값은 특정 자료형에 제한되지 않습니다. 예를 들어, INTEGER 타입의 칼럼을 선언하였더라도, 해당 칼럼에는 TEXT, BLOB 등의 모든 종류의 자료를 저장할 수 있고, SQLite는 이를 ..

IT/SQL 2021.02.24

[Go/Golang] Golang에서 Windows 파일 경로 지정하기

Golang에서 Windows 파일 경로 지정하기 Go를 이용해 파일을 다루는 방법 중에서도 Windows를 사용하는 경우에 적합한 방법을 소개합니다. Go의 path/filepath 모듈은 백슬래시를 처리할 수 있어 Windows OS의 파일 경로를 다룰 수 있습니다. path/filepath 모듈은 다음과 같이 사용할 수 있습니다. 예제 코드 package main import ( "fmt" "path/filepath" ) func main() { filePath := "C:\\Users\\user\\workspace\\main.go" dir, file := filepath.Split(filePath) fmt.Println("DIR :", dir) fmt.Println("FILE :", file) v..

IT/Go 2021.02.23

[Go/Golang] Raw(`) string과 Interpreted(") string의 차이점을 알아보자

Golang에서 String을 표현하는 방법에는 두 가지가 있습니다. Double Quote (") - Interpreted string 첫 번째는 흔히 사용하는 쌍따옴표(double-quote, ") 방식입니다. Go에서는 쌍따옴표로 열리고 닫힌 string을 Interpreted string이라 부릅니다. 예를 들자면 이렇습니다. interpretedString := "interpreted string" Backtick (`) - Raw string 두 번째는 역따옴표(backtick, `) 방식입니다. 역따옴표로 열리고 닫힌 string은 Raw string이라 합니다. 예를 들자면 이렇습니다. rawString := `raw string` 차이점 Interpreted string double qu..

IT/Go 2021.02.22