분류 전체보기
Go 언어 입문 - Control Structures - Functions (1) (golang-book)
2018. 9. 9.함수라는 것은 인풋 파라메터를 아웃풋 파라메터로 매핑시키는 독립된 코드를 말한다. 함수 (또는 프로시져나 서브루틴으로 알려져있기도 하다)는 종종 블랙박스에 비유되기도 한다. 지금까지 살펴봤던 프로그램에는 오직 하나의 함수만 포함되어 있었다. 1func main() {}cs이제 다수의 함수를 포함한 프로그램을 만들어보자. Your Second Function앞서 살펴봤던 프로그램을 다시 살펴보자.123456789101112package main import "fmt" func main() { xs := []float64{98,93,77,82,83} total := 0.0 for _, v := range xs { total += v } fmt.Println(total / float64(len(xs)))}Co..
Go 언어 입문 - Control Structures - Maps (golang-book)
2018. 9. 5.map은 순서없는 key-value 쌍의 집합체이다. associative array 라고도 알려져 있으며, 해시 테이블 또는 딕셔너리라고도 표현되기도 한다. 연관 키를 사용하여 값을 찾을 때 사용된다. 아래의 예를 보자. 1var x map[string]intcsmap 타입은 map 이라는 키워드 다음에 키의 타입이 괄호 안에 표시되고, 뒤이어 값의 타입이 표시된다. 위의 예시같은 경우 다음과 같이 읽으면 된다. “x is a map of strings to ints.” 배열이나 슬라이스와 마찬가지로 maps 은 괄호롤 사용해접근이 가능하다. 다음을 실행시켜보자. 123456789package main import "fmt" func main() { var x map[string]int x["key"]..
Go 언어 입문 - Control Structures - Slice (golang-book)
2018. 9. 4.슬라이스는 배열의 한 부분이다. 배열과 마찬가지로 슬라이스는 인덱스가 가능하며 길이를 가진다. 하지만 배열과는 달리, 그 길이라는 것이 가변적이다. 다음의 예제를 보자. 1var x []float64cs배열과의 유일한 차이점은 괄호 안의 길이를 나타내는 부분이 비워져 있다는 것이다. 위의 경우에는 x 가 길이 0 으로 생성이 되었다.내장 make 함수를 이용하여 슬라이스를 생성할 수 있다. 아래는 길이 5의 float64 배열과 관련된 슬라이스를 생성한다. 1x := make([]float64, 5)cs슬라이스는 배열과 연관이 있으며, 절대 배열의 크기보다 클 수는 없다. make 함수는 3번째 인수도 갖는데, 아래의 예에서 10은 슬라이스가 가리키는 내포된 배열의 용량을 의미한다. 1x := make(..
Go 언어 입문 - Control Structures - Array (golang-book)
2018. 9. 1.Go 에서 array 는 다음과 같이 표현된다. 1var x [5]intcsx 는 5개의 int 로 구성된 array 이다. 다음의 코드를 실행해보자.123456789package main import "fmt" func main() { var x [5]int x[4] = 100 fmt.Println(x)}cs실행결과는 다음과 같다.123~/go/src/golang-book/chapter6# go run main.go[0 0 0 0 100] Colored by Color Scriptercsx[4] = 100의 의미는 “array x 의 5번째 원소의 값을 100 으로 셋팅하라” 는 것이다. x[4] 가 5번째 원소를 나타낸다는 사실이 이상해보일 수 있으나, array 는 0에서 시작하기 때문에 이상할 것..
Go 언어 입문 - Control Structures - Switch (golang-book)
2018. 8. 31.이제 숫자 옆에 영문 이름도 같이 넣는 프로그램을 만들어보자. 현재까지의 지식으로는 다음과 같이 짤 수 있을 것이다. 12345678910111213if i == 0 { fmt.Println("Zero")} else if i == 1 { fmt.Println("One")} else if i == 2 { fmt.Println("Two")} else if i == 3 { fmt.Println("Three")} else if i == 4 { fmt.Println("Four")} else if i == 5 { fmt.Println("Five")}cs 이건 말도 안된다. switch 명령을 이용해보자. 다음과 같이 다시 작성할 수 있을 것이다. 123456789101112131415package main impo..
Go 언어 입문 - Control Structures - If (golang-book)
2018. 8. 31.다음과 같이 1에서 10까지 숫자 옆에 짝수, 홀수 여부도 같이 출력되는 프로그램을 만들어보자. 123456789101 odd2 even3 odd4 even5 odd6 even7 odd8 even9 odd10 evencs먼저 해당 숫자가 짝수인지 홀수인지 판명하는 방법이 필요하다. 가장 쉬운 방법은 2로 나눈 것이다. 만약 나머지가 없으면 짝수이고, 그렇지 않으면 홀수이다. 그다음 해당 조건에 입각해서 짝수, 홀수 여부에 따라 서로 다른 결과를 출력하는 명령문을 만든다. 대략 다음과 같다.1234567891011if i % 2 == 0 { // even } else { // odd } csIf 문은 조건 다음에 블록이 오는 형태가 for 문과 유사하다. 하지만 If 문에는 els;e 파트가 있다. If ..
Go 언어 입문 - Control Structures - For (golang-book)
2018. 8. 31.1에서 시작하여 10까지 카운팅하는 프로그램을 만들어보자. 지금까지 배운 지식으로는 다음과 같이 작성할 수 있을 것이다. 12345678910111213141516package main import "fmt" func main() { fmt.Println(1) fmt.Println(2) fmt.Println(3) fmt.Println(4) fmt.Println(5) fmt.Println(6) fmt.Println(7) fmt.Println(8) fmt.Println(9) fmt.Println(10)}cs또는 다음과 같이 표현할 수 있다.123456789101112131415package mainimport "fmt" func main() { fmt.Println(`12345678910`)}cs실행결과는 ..
도올 김용옥 선생의 "영어 수학을 왜 공부해야 하는가?"
2018. 8. 30.https://youtu.be/fZk67qnUo3M 도올 김용옥 선생의 "영어 수학을 왜 공부해야 하는가?"
Go 언어 입문 - Variables (golang-book)
2018. 8. 28.정말 유용한 프로그램을 만들기 위해서는 2가지 새로운 컨셉인 변수와 제어흐름문에 대해 알아야 한다. 먼저 변수에 대해 살펴보자. 변수는 특별한 타입과 연관된 이름을 갖는 저장소 위치이다. 앞서 챕터 2에서 만들었던 프로그램을 변수를 사용하도록 고쳐보자. 12345678package main import "fmt" func main() { var x string = "Hello World" fmt.Println(x)}cs실행하면 다음과 같은 결과를 나타냅니다.123~/go/src/golang-book/chapter2# go run main.goHello World Colored by Color Scriptercs원 프로그램의 문자열 리터럴은 그대로 존재를 합니다만, 기존처럼 직접적으로 Println 함수로..
Go 언어 입문 - Types - Booleans (golang-book)
2018. 8. 28.불린값은 true 또는 false 를 나타내는 1비트 정수 타입으로, 아래 3가지 연산자가 불린값을 가진다. &&and||or!not아래의 예를 통해 불린값의 사용법을 알아보자. 1234567891011package main import "fmt" func main() { fmt.Println(true && true) fmt.Println(true && false) fmt.Println(true || true) fmt.Println(true || false) fmt.Println(!true)}cs실행하면 다음과 같다. 123456~/go/src/golang-book/chapter3# go run main.gotruefalsetruetruefalseColored by Color Scriptercs다음과 같..
Go 언어 입문 - Types - Strings (golang-book)
2018. 8. 28.chapter 2 에서 이미 살펴봤듯이 문자열은 텍스트를 표현하기 위한 길이를 가진 문자의 나열이다. Go strings 은 개별 바이트로 이루어지며, 보통 문자 하나에 하나의 바이트를 가지지만, 중국어와 같은 문자는 하나 이상의 바이트를 가지기도 한다. String literals은 "Hello World"와 같이 큰 따옴표로 감싸거나, `Hello World` 와 같이 역따옴표 감싼다. 이 2가지의 차이점은 큰따옴표의 경우 줄바꿈을 포함할 수 없으며 특정 escape 시퀀스를 허용한다는점이다. 예를 들어, \n 은 줄바꿈을, 그리고 \t 은 탭으로 대체된다. 문자열의 길이를 잰다거나, 문자열의 개별 문자에 접근하기, 그리고 2개의 문자열을 합치는 기능이 있다. 아래의 예를 보자. 123456789pa..
Go 언어 입문 - Types - Numbers (golang-book)
2018. 8. 28.간단하게 다음과 같이 생각할 필요가 있다. 모든 개는 4개의 다리는 갖는다. -> 맥스는 개다. -> 따라서 맥스는 4개의 다리를 갖는다. 프로그래밍 언어에서도 마찬가지다. 모든 문자열은 길이를 가진다. -> x 는 문자열이다. -> x 는 길이를 갖는다. 실수의 집합이든, 자연수의 집합이든, 모든 집합의 구성요소는 해당 집합의 다른 요소들과 특징을 공유한다. 예를 들어 자연수의 집합인 ℕ 의 경우 결합법칙이 성립한다. 그리고 프로그래밍 언어에서 모든 값은 특정한 타입을 가지고 특정한 속성을 공유한다. 이런 식으로 수학에서의 집합은 프로그래밍 언어에서 타입과 유사한 면이 있다. Go 는 정적 타입 프로그래밍 언어이다. 이 말은 변수는 항상 특정한 타입을 가지며, 그 타입을 바꿀 수 없다는 의미다. 정적 ..
2017년도 AICPA 시험 통계 - NASBA Candidate Performance Reports를 통해 살펴본 2017년도 시험의 중요 특징
2018. 8. 28.2016년 기록을 경신한 이래, AICPA 시험을 치르는 응시생의 숫자는 2017년 들어 다소 감소했습니다. 최근 NASBA는 2017년 주요 통계까지 반영된 "Candidate Performance on the Uniform CPA Examination"를 발표했는데요, 이를 통해 2017년도 시험의 특징을 살펴봅니다. 연도별 시험응시자 (단위, 천명)2017년에는 95,654명이 AICPA 시험에 응시하여 전년도 102,323명보다 감소한 수치를 기록했습니다. 2017년 4월 단행된 컨텐츠 등의 변경으로 인해 기존 수험생들이 변경전 방식으로 시험을 치루고자했던 요구가 작용했던 것으로 보입니다. 마찬가지 현상은 2010년에도 있었습니다. 응시 섹션수 (단위, 천건) 수험생은 AICPA 시험의 4개 섹션..
박형주 <배우고 생각하고 연결하고> - 교육이란 배움이 자기 삶을 향상시킬 것이라는 믿음을 아이에게 주는 것
2018. 8. 28.간호와 통계가 하등의 연결도 안되었던 때에, 나이팅게일은 이질적인 이 둘을 다 가지고 있던 유일한 singular 존재였다. 그녀는 아무 관련이 없어 보이는 이질적인 것들을 함께 가졌던 탓에 남이 보지 못한 걸 보았던 것이다. 한 우물이 아니라 여러 우물을 파는 사람이 시대를 이끈다. 19세기 수학자 칸토어는 수학의 본질이 자유로움에 있다고 했다. 이는 수학의 본질이 공식의 기계적 적용에 있는 것이 아니라, 문제의 핵심을 보고 해결방안을 찾는데 있음을 뜻한다. https://twitter.com/leadershipabc/status/771688507530211328 교과과정은 생각의 재료이다. 풍성한 재료가 빠진 단순 토론은 걸만 맴도는 공허한 말장난이 된다. 유치한 동의어의 자기 반복에 머물고, 벽을 ..
Go 언어 입문 - Your First Program (golang-book)
2018. 8. 27.“Hello World” 를 출력하는 간단한 프로그램을 만들자. ~/src/golang-book/chapter2 라는 폴더를 만들고, 다음의 내용으로 main.go 파일을 만든다.123456package mainimport "fmt" func main() { fmt.Println("Hello World")}cs해당 폴더로 이동하여 다음과 같이 실행한다. 123~/go# cd src/golang-book/chapter2~/go/src/golang-book/chapter2# go run main.goHello WorldColored by Color ScriptercsHello World가 터미널에 출력되는 걸 확인할 수 있다.go run 명령은 뒤이어 오는 go 파일을 임시 디렉토리에 실행가능한 형태로 저장..
Gramblr로 PC에서 인스타그램 게시물 올리기
2018. 8. 27.아시다시피 인스타그램 웹페이지에는 게시물 업로드 기능이 없다.PC 나 맥에서 포스팅을 할려면 별도의 프로그램을 사용해야 한다.크롭의 앱스토어에서 확장 기능을 이용해도 되지만, gramblr 를 사용하면 사진 편집, 내용 삽입 등이 가능하여 훨씬 편리하다. 아래의 링크에서 운영체제에 맞는 파일을 다운로드 한다.https://gramblr.com/uploader/#home특히 Switch Account 기능이 있어 여러 개의 계정을 가지고 있는 유저의 경우 전환이 편리한 장점이 있다.사진이나 영상을 고른 뒤, 편집이나 필터를 적용한다. 설명을 단다. 물론 여기에 들어가는 내용중 링크는 당연히 클릭이 안된다. Send 를 눌러 업로드를 마친다.
<뭐든 시작하면 어떻게든 된다> - 목표가 달라지는 것은 자연스러운 현상
2018. 8. 26.그때그때마다 자기가 계속 달려갈 수 있게끔 해주는 가장 효과적인 생각을 적용하면 그만이다. 정답은 없다.3가지를 동시에 하면 최단거리로 달릴 수 있다. 3가지 병행이 시간적으로 힘들다고 생각할 수도 있는데, 오히려 바로 그런 점이 이 방법의 핵심이다. 자연히 효율적인 시간 사용법을 궁리하게 되고, 무엇보다 질리지 않는다. 사람은 늘 성장하고 새로운 깨달음을 얻기 때문에 목표가 달라지는 것은 자연스러운 현상이다. 성장했기 때문에 보이게 되는 경치 혹은 현재 당신이 모르는 세계도 많다. '이 행동의 목적은 뭐지?'하고 스스로에게 되물어라. 목적이 있다면 무엇이든 쓸데없는 행동은 없다. 공을 멀리날리기 위해 똑바로 위로 던지는 사람은 없는데도, 노력에 관해서는 - 왠지는 몰라도 - 던지는 각도가 너무 크거나 ..
Strings, bytes, runes and characters in Go - (4) Range loops, Libraries
2018. 8. 25.Strings, bytes, runes and characters in Go Range loopsGo 가 UTF-8 을 특별히 다루는 하나의 방법은 문자열에 for range 루프를 사용할 때이다. for range 루프의 경우, 각각의 반복에서 하나의 UTF-8-encoded rune 을 디코딩한다. 루프를 도는 동안, 루프의 인덱스는 현재 rune 의 시작점으로 바이트로 측정되며, 코드 포인트는 그것의 값이 된다. 코드포인트의 유니코드 값과 출력 형태를 보여주는 다음의 예를 보자. 1234567891011package main import "fmt" func main() { const nihongo = "日本語" for index, runeValue := range nihongo { fmt.Print..
Strings, bytes, runes and characters in Go - (3) Code points, characters, and runes
2018. 8. 25.Strings, bytes, runes and characters in Go 유니코드 표준은 단일값으로 표현되는 아이템에 대해 "code point" 라는 용어를 사용한다. 코드포인트 U+2318 은 hexadecimal 값 2318을 갖고 ⌘ 기호로 표현된다(더욱 자세한 내용은 Unicode page 참조). 다른 예를 들어보면, 유니코드 코드 포인트 U+0061 은 LATIN SMALL LETTER A 인 a이다. 그러면 다음과 같은 억음 부호 'A', à 는 어떤가? 물론 문자이고, 코드 포인트 U+00E0 를 갖는다.하지만, 다르게 볼 수도 있다. 아래의 억음 부호 코드 포인트 U+0300 에 U+0061 인 소문자 a를 덧붙인 것으로 말이다. 일반적으로 문자는 얼마간의 서로 다른 코드 포인트의 ..
Strings, bytes, runes and characters in Go - (2) UTF-8 and string literals
2018. 8. 25.Strings, bytes, runes and characters in Go 문자열은 단순히 바이트를 나열해놓은 것이다. 문자를 문자열로 저장할 때, byte-at-a-time representation 을 저장하는 셈이다. 하나의 문자를 가진 문자열 상수를 다음의 3가지 서로 다른 방법으로 출력하는 간단한 프로그램을 만들어보자.plain stringASCII-only quoted stringindividual bytes in hexadecimal 123456789101112131415161718192021package main import "fmt" func main() { const placeOfInterest = `⌘` fmt.Printf("plain string: ") fmt.Printf("%s"..
Strings, bytes, runes and characters in Go - (1) Printing strings
2018. 8. 25.Strings, bytes, runes and characters in Go Go에서 문자열이란 사실 '읽기전용' 바이트 슬라이스라고 할 수 있다. \xNN 표기법을 사용하는 다음의 예를 보자 (바이트는 hexadecimal 값으로 00 에서 FF 까지의 값을 가진다)1const sample = "\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98"cs앞선 예제의 일부 바이트는 ASCII 나 UTF-8 이 아니다. sample 을 출력하면 다음과 같이 흉한 결과물이 나올 것이다 (환경에 따라 출력되는 모양은 다소 다를 수 있다).123fmt.Println(sample) ▒▒=▒ ⌘cs문자열이 어떤 값을 가지고 있는지 정확히 알아보기 위해서, 부분부분 나눠서 살펴볼 필요가 있다. 몇 가지 방법이 있..
고Go 웹서버 만들기 Build a simple web server
2018. 8. 25.Go 는 net/http 패키지를 통해 HTTP 를지원한다. http 패키지를 사용하여 웹서버를 셋팅해보자. 1234567891011121314151617181920212223242526272829package main import ( "fmt" "net/http" "strings" "log") func sayhelloName(w http.ResponseWriter, r *http.Request) { r.ParseForm() // parse arguments, you have to call this by yourself fmt.Println(r.Form) // print form information in server side fmt.Println("path", r.URL.Path) fmt.Println..
How to Write Go Code - Code organization
2018. 8. 24.Workspace작업공간은 Git 등에 의해 관리되는 다수의 버전 관리 저장소를 포함하고 있다. 각각의 저장소는 하나 이상의 패키지를 포함하고 있으며, 각각의 패키지는 단일 디렉토리에 하나 이상의 Go 소스파일로 구성된다. 패키지 디렉토리 경로에 따라 import 경로가 정해진다. 특히 이 점이 프로젝트별로 별도의 작업공간을 갖게 되는 여타 프로그래밍 환경과 다른 점이다. 그리고 작업공간은 버전 관리 저장소와 밀접히 연계되어 있다. 작업공간은 최상단에 3개의 디렉토리를 가진 디렉토리 계층구조를 말한다. src 에는 Go 소스 파일이 들어있다.pkg 디렉토리에는 패키지 객체를 포함한다.bin 디렉토리에는 실행가능한 명령어가 포함되어 있다.go tool 은 소스 패키지를 빌드하고, 결과물인 바이너리를 패키지..
Go 프로그램 삭제 Uninstalling Go
2018. 8. 24.시스템에 존재하는 Go 를 제거할려면, go 디렉토리를 삭제하면 된다. 일반적으로 리눅스, 맥, FreeBSD의 경우 /usr/local/go 에 위치하고, 윈도우의 경우 c:\Go 디렉토리에 존재한다. 그리고 PATH 환경변수에 설정된 Go bin 디렉토리도 삭제해야 한다. 리눅스와 FreeBSD 의 경우 /etc/profile 또는 $HOME/.profile 을 편집해야 한다. Mac OS X 패키지로 설치한 경우 /etc/paths.d/go 파일을 삭제해야 한다. 윈도우 사용자의 경우 환경 변수 섹션을 참고하자.
Go 프로그램 설치 및 테스트 Install the Go tools
2018. 8. 24.설치 파일 다운로드 하단 링크에서 운영체제에 맞는 설치 파일을 다운로드한다. 본 포스팅에서는 리눅스 기반으로 진행한다. https://golang.org/dl/파일을 다운로드한 후 다음과 같이 /usr/local/go 디렉토리를 만들어 압축을 해제한다 (일반적으로 root 계정이나 sudo 를 통해 진행해야 한다).1# tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gzcs/etc/profile (system-wide 인 경우) 또는 $HOME/.profile 파일을 열어 /usr/local/go/bin 을 PATH 환경변수에 추가한다. 12345# /etc/profile: system-wide .profile file for the Bourne shell (sh(..
엑셀에서 값으로 차트 그래프 정렬하기
2018. 8. 24.원본데이터의 정렬 순서에 따라 차트상의 막대그래프의 정렬도 달라진다. 필터를 이용하여 원하는 열을 정렬할 수도 있고, 아래에서와 같이 데이터 탭에서 원하는 열 선택 후 오름차순이나 내림차순으로 정렬해도 된다.아래는 응시생 기준으로 정렬해본 경우다. 정렬이 되었음을 알 수 있다.국가명으로 정렬하고 싶으면 국가열을 선택 후 데이터 탭에서 정렬순서를 선택하면 된다.
Luminus 를 이용한 Clojure 방명록 만들기 (5) - 테스트 및 패키지화
2018. 8. 23.Luminus 를 이용한 Clojure 방명록 만들기 (5) Adding some tests이제 어플리케이션이 작동할 준비를 마쳤다. 몇 가지 테스트를 하기 위해 test/clj/guestbook/test/db/core.clj 파일을 열어 다음과 같이 업데이트해보자. /home/fukaerii/guestbook/test/clj/guestbook/test/db/core.clj12345678910111213141516171819202122232425262728(ns guestbook.test.db.core (:require [guestbook.db.core :refer [*db*] :as db] [luminus-migrations.core :as migrations] [clojure.test :refer :..
Test failed in clojure luminus guestbook tutorial
2018. 8. 23.guestbook 튜토리얼을 진행하는 중 마지막 테스트 단계에서 아래의 실패 메시지가 나오는 경우를 만날 수 있다.123456789101112131415161718192021222324252627282930313233~/guestbook$ lein test2018-08-23 08:21:32,895 [main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider lein test guestbook.test.db.core2018-08-23 08:21:34,884 [main] INFO migratus.core - Starting migrations2018-08-23 08:21:34,909 [main] INFO mig..
Luminus 를 이용한 Clojure 방명록 만들기 (4) - 페이지 생성 및 폼입력 다루기
2018. 8. 23.Luminus 를 이용한 Clojure 방명록 만들기 (4) Creating Pages and Handling Form Inputguestbook.routes.home 네임스페이스에 경로가 정의되어 있습니다. 그러면 파일을 열어서 데이터베이스로부터 메시지를 렌더링하는 로직을 넣어보겠습니다. Bouncer 검증과 ring.util.response 레퍼런스와 함께 db 네임스페이스 레퍼런스를 추가해야합니다. /home/fukaerii/guestbook/src/clj/guestbook/routes/home.clj12345678(ns guestbook.routes.home (:require [guestbook.layout :as layout] [compojure.core :refer [defroutes GET ..
AICPA 시험에서 말하는 테스팅 윈도우(Testing Windows)란 무엇인가?
2018. 8. 23.예전에 한 번 언급해드린 내용입니다만, 응시주와 관련된 내용도 있어 다시 한 번 더 포스팅해봅니다.일단 Notice to Schedule (NTS)를 수령하게 되면, 이제 응시일을 정할 때가 온 것입니다. 컴퓨터로 치러지는 AICPA 시험은 매 쿼터마다 시험을 볼 수 있는데요, 응시 가능한 달을 테스팅 윈도우(testing windows)라고 보통 부릅니다.시험 스케줄링을 할 때, 계획을 잘 짜셔야 합니다. 이미 알고 계시겠지만, AICPA 시험은 매쿼터 마지막 달에는 시스템 및 데이터뱅크 유지 보수 관계로 진행되지 않는 것이 원칙입니다. 올해는 3, 6, 9, 12월 1~10일까지 시험이 있기는 합니다.먼저 봐야하는 과목이 따로 정해져있는 것은 아니므로, 어떤 과목이든 편한대로 예약하시면 됩니다. 하지..