선수로 산다, 때론 좋은 코치로
docker 내부에서 go 언어로 작성한 코드를 디버깅하는 방법입니다. 인터넷에 검색하면 다양한 방법이 많이 나와 있습니다. golang의 delve를 이용하는 방법이 많이 나와 있습니다. delve를 이용한 원격 디버깅이 아니라 vscode의 디버깅 기능을 이용하는 방법입니다. 사내에서 공유하기 위해서는 모여서 간단하게 설명하면 되는데, 여러 가지 이유로 간단하게 설명할 방법을 찾는 중에 직접 진행하면서 캡쳐를 이용해서 작성하고 있습니다. 이럴 줄 알았으면 영상으로 찍어놓고 나중에 편집하는 것이 좋을 걸 그랬습니다. 영상에 익숙하지 않아서 캡쳐를 이용했는데 이미지를 이용하는 것도 설명하기에 불편한 점이 있습니다. Windows10에서 WSL2 지원, Windows10에서 지원하는 terminal app..
숫자 야구 프로그램 기본 구조 구현 임의 숫자 생성 - 147 로 지정 사용자 숫자 입력 - 123 -> 456 -> 789 지정 볼카운트 판단 - 1 스트라이크 0 볼 -> 0:1 -> 0:1 함수 구현 MakeComputerNumber() -> 임의의 숫자 생성 InputUserNumber() -> 사용자 입력 ComputeBallCount() -> 볼카운트 계산 WriteScore() -> 볼카운트 결과 저장 프로그램 구현 완성 맞을 때까지 사용자 입력 받기 숫자는 세자리 숫자여야 함 숫자는 중복된 수를 사용하지 않아야 함 기록 - text 파일 일련번호, 아이디, 시작시간, 진행시간, 숫자, 횟수 score.txt 일련번호, 아이디, 시작시간, 종료시간, 숫자, 횟수 -> 종료시간을 진행시간으로 ..
[golang] 인코딩 변환하기(euc-kr > utf-8)우리은행 거래내역 엑셀파일을 로그스태시에 csv 파일로 입력하기 진행 중.1번째 - 엑셀파일 읽어들이기2번째 - 인코딩 변환하기윈도우의 엑셀은 euc-kr 이라는 인코딩으로 파일을 저장한다. 윈도우에서 기본적으로 한글을 표현하는 인코딩 방식이다. 윈도우에서 한글을 사용할 때는 전혀 문제가 되지 않지만 다른 프로그램을 사용할 때는 문제가 될 수 있다. 엘라스틱서치는 기본 인코딩이 utf-8 이므로 윈도우에서 사용하는 한글을 그대로 입력하면 한글이 깨져서 원하는 데이터를 확인할 수가 없다.엘라스틱서치에서 활용하기 위해서는 엑셀파일에서 읽어들인 한글의 인코딩을 변환해야 한다.변환관련 슬라이드 - https://www.slideshare.net/suap..
[golang] 엘라스틱서치로 우리은행 거래내역 분석하기-엑셀파일 읽기 우리은행에서 거래내역으로 다운로드 받은 파일은 엑셀파일(.xls)이다.golang에서 엑셀파일을 읽어보자. golang excel read를 검색한다. github 페이지에 접속한다. - https://github.com/tealeg/xlsx샘플을 이용하여 다운받은 엑셀파일을 읽는다.package main import ( "fmt" "github.com/tealeg/xlsx") func main() { excelFileName := "s:\\elastic\\wooribank\\과거거래내역조회2017.xls" xlFile, err := xlsx.OpenFile(excelFileName) if err != nil { fmt.Printf(..
[golang] A Tour of Go - 61 연습 문제A Tour of Go 연습: Rot13 Reader - https://go-tour-kr.appspot.com/#61어떤 식으로든 스트림을 수정하여 다른 io.Reader 를 감싸는 io.Reader 는 흔한 패턴입니다. 예컨대, gzip.NewReader 함수는 io.Reader (gzip으로 압축된 데이터의 스트림) 를 가지고, io.Reader (압축 해제된 데이터의 스트림) 를 구현한 `*gzip.Reader`를 반환합니다. ROT13 치환 암호화를 모든 알파벳 문자에 적용함으로써 스트림을 수정하며 io.Reader 를 구현하고 io.Reader 로 부터 읽는 rot13Reader 를 구현하십시오. rot13Reader 타입은 당신을 위해..
[golang] A Tour of Go - 60 연습 문제https://go-tour-kr.appspot.com/#60 package main import ( "code.google.com/p/go-tour/pic" "image") type Image struct{} func main() { m := Image{} pic.ShowImage(m)}import package 변경 - "golang.org/x/tour/pic" x, y 멤버를 갖는 구조체 Image 생성Image에 ColorModel() 메서드, Bound 메서드, Rectagle 메서드 붙임 package main import ( "golang.org/x/tour/pic" "image" "image/color") type Image stru..
[golang] A Tour of Go - 58 연습 문제https://go-tour-kr.appspot.com/#58 go 언어로 웹서버 운영은 매우 간단하네요.type을 설정하고, 타입에 ServeHTTP 메소드를 붙입니다.(A Tour of Go 50번 참조)http.Handle을 이용하여 핸들러를 등록합니다.http.ListenAndServe를 이용해서 서비스를 실행하고 Default 페이지를 제공합니다.아래 나오는 타입을 구현하고 그 타입의 ServeHTTP 메소드를 정의하십시오. 그 메소드를 당신의 웹 서버에서 특정 경로를 처리할 수 있도록 등록하십시오58번 연습문제는 두개의 핸들러를 등록하는 문제입니다.하나는 string으로 문자열을 리턴하고, 하나는 구조체와 연결하여 구조체의 문자를 리턴합..
[golang] A Tour of Go - 56 연습 문제https://go-tour-kr.appspot.com/#55 당신의 Sqrt 함수를 이전 연습에서 복사하고 error 값을 반환하도록 수정하십시오. Sqrt 함수는 복소수를 지원하지 않기 때문에, 음수가 주어지면 nil 이 아닌 에러 값을 반환해야 합니다. 새로운 타입을 만드십시오. type ErrNegativeSqrt float64and make it an error by giving it a 그리고 아래 메소드를 구현함으로써 그 타입이 error 가 되게 하십시오. func (e ErrNegativeSqrt) Error() string이는 ErrNegativeSqrt(-2).Error() 가 "cannot Sqrt negative number..
[golang] A Tour of Go - 48 연습 문제https://go-tour-kr.appspot.com/#48complex64 타입과 complex128 타입을 통해서 Go 언어의 복소수 지원 기능을 알아봅니다. 세제곱근을 얻기 위해서는, 뉴턴의 방법 (Newton's method)을 적용하여 다음을 반복 수행합니다: z = z - (z * z * z - x) / (3 * z * z) 알고리즘이 잘 동작하는지 확인하기 위해 2의 세제곱근을 구해봅시다. math/cmplx 패키지에는 Pow 함수가 있습니다.뉴턴의 방법은 반복이 필요하므로 for 문 활용해서 10번 반복실행합니다. for i:=0; i
[golang] A Tour of Go - 44 연습 문제https://go-tour-kr.appspot.com/#44 함수를 가지고 놀아봅시다.fibonacci 함수를 구현합니다. 이 함수는 이어지는 피보나치 수를 반환하는 함수 (클로져)를 반환해야 합니다. package main import "fmt" // fibonacci is a function that returns// a function that returns an int.func fibonacci() func() int {} func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) }}Go 언어는 최근의 언어답게 함수를 값으로 할당할 수 있습니다. 그리고 클로져라는 ..