분류 전체보기
-
[Golang] 클로저를 사용해 생성기(generator) 생성언어/Golang 2017. 2. 8. 20:15
아래는 클로저를 사용하여 생성기(generator)를 만든 예제입니다.package main import ( "fmt" ) func NewIntGenerator() func() int { var next int return func() int { next++ return next } } func main() { gen := NewIntGenerator() fmt.Println(gen(), gen(), gen(), gen(), gen()) fmt.Println(gen(), gen(), gen(), gen(), gen()) } // 결과 // 1 2 3 4 5 // 6 7 8 9 10NewIntGenerator()는 함수를 반환하는 고계함수입니다. 또한 이 함수가 반환하는 함수는 클로저입니다. 반환하는 함수..
-
[Golang] 고계(고차)함수 (higher-order function)언어/Golang 2017. 2. 8. 19:55
말은 어렵지만 의미는 간단합니다. 함수를 파라미터 또는 인자값에 넣는 것입니다. 아래는 고계함수의 예제입니다.func ReadFrom(r io.reader, f func(line string)) error { scanner := bufio.NewScanner(r) for scanner.Scan() { f(scanner.Text()) } if err := scanner.Err(); err != nil { return err } return nil } func main() { r:= strings.NewReader("bill\ntom\njani\n") err := ReadFrom(r, func(line string) { // 람다함수와 같은 기능 fmt.Println("(", line, ")") }) if ..
-
[Python] MongoDB (pymongo)언어/파이썬 & 장고 2017. 2. 8. 10:45
Mongo DB 용어SQL 용어MongoDB 용어일반 용어데이터베이스(database)데이터베이스(database)테이블(table)콜렉션(collection)행(row)문서(document) / BSON 문서(BSON document)컬럼(column)필드(field)인덱스(index)인덱스(index)테이블 조인(table join)임베디드 문서 및 링킹(embedded documents and linking)주키(primary key)주키(primary key)특정 컬럼을 주키로 지정주키가 _idfield로 자동 설정됨집계(aggregation, 예: group by)집계 파이프라인(aggregation pipeline)Python 내 Mongo DB 모듈 설치$pip3 install pymongo..
-
[Golang] map에서 key값 존재유무 확인언어/Golang 2017. 2. 2. 20:38
Go언어에는 상수 시간에 키의 존재를 확인할 수 있는 집합은 따로 제공하고 있지 않습니다. 여기서 가장 단순한 방법은 맵을 이용하면서 값을 bool형으로 주는 것입니다. 문자열에 중복되어 들어가 있는 글자가 있는지 검사하는 함수를 만드는 예제입니다.package main import "fmt" func hasDupeRune(s string) bool { runeSet := map[rune]bool{} for _, r := range s { if runeSet[r] { return true } runeSet[r] = true } return false } func main() { test := "가나다라" fmt.Println(hasDupeRune(test)) test1 := "가나다라가" fmt.Prin..
-
[Golang] if문에 세미콜론(;) 의미언어/Golang 2017. 2. 2. 20:22
아래의 두 예제는 같은 의미입니다.1.if v, err := Read(); err == nil { // do something with v, because Read() did not // had an error (err) }2.v, err := Read() if err == nil { // do something with v } 두 문법의 결과는 같지만 차이점은 첫 번째 예제에서는 v와 err의 범위는 if {}블록으로 제한됩니다. 두 번째 예제에서는 v와err은 선언된 블록에 속해 있습니다. 즉, if {}에 속해있지 않다는 뜻입니다. {}블록에서 ;을 사용하는 것과 거의 같습니다.if문에 ;을 사용할 땐, 선언되는 변수가 조건문 안에서만 사용된다고 확실시 될 때 사용하면 좋습니다.
-
[SQL] WHERE절에서 IF문처럼 AND 사용DB 2017. 2. 2. 16:55
SELECT ... FROM ... WHERE ( (A = 1 AND (B BETWEEN 0 AND 10) OR B=9999) OR (A = 2 AND (B BETWEEN 11 AND 20) OR B=9999) ) 위의 쿼리를 조건문으로 변경하면 아래와 같습니다.if (A==1) { B = 0 ~ 10 OR 9999 } else if (B==2) { B = 11 ~ 20 OR 9999 } WHERE절의 조건이기 때문에 결과는 boolean타입으로 TRUE 또는 FALSE만 나오게 됩니다.
-
[Linux] sudo command not found 해결법 (Go 권한문제 해결법)서버 2017. 2. 2. 11:46
우분투에서 패키지를 설치하지 않고 압축을 풀어서 사용하면 로그인된 사용자에 맞게 설정할 시, 로그인된 사용자는 세팅한 명령어를 사용할 수 있지만 사용자 권한을 변경하면 해당 패키지를 찾지 못하여 에러가 발생합니다.아래에서는 go라는 압축파일을 풀어 로그인된 사용자가 세팅한 다음, 루트계정으로 변환하여 해당 명령어를 실행하는 예제입니다.예제test$ tar -xcvf go1.7.1.linux-amd64.tar.gz # 패키지 압축해제 test$ sudo mv go /usr/local/ # /usr/local/ 폴더 하위로 압축파일 이동 test$ cd /home/test test$ echo "export PATH=$PATH:/usr/local/go/bin" >> .bashrc # .bashrc파일에 go ..
-
[Django] QuerySet 에서 dict 타입 변환하기언어/파이썬 & 장고 2017. 2. 1. 20:30
queryset to dict!QuerySet은 대개 Django ORM의 filter()함수를 사용할 때 (1개 이상의 데이터가 반환될 때) 갖게 되는 타입입니다.이러한 타입을 그대로 사용하려고 하면 아래와 같이 출력이됩니다.a = ModelObj.objects.filter(col=1) # 결과 {col:[1], .... ,}위와 같이 value값에 리스트가 씌워져 있는 것들을 확인할 수 있습니다. QuerySet의 변환은 아래처럼 간단하게 dict로 변환이 됩니다.a = ModelObj.objects.filter(col=1) print(a.values()) # 결과 {col:1, .... ,}
-
[Django] model object 에서 dict 타입으로 변환하기언어/파이썬 & 장고 2017. 2. 1. 20:23
django model object to dict!모델객체에서 dict타입으로의 변환은 여러 방법이 있습니다. 참고로 Django ORM에서 model 객체로 결과가 나오는 것은 get()과 같은 형식이여야 합니다. filter()처럼 QuerySet으로 나오는 형태는 에러가 날 수 있습니다.test case모델from django.db import models class OtherModel(models.Model): pass class SomeModel(models.Model): value = models.IntegerField() value2 = models.IntegerField(editable=False) created = models.DateTimeField(auto_now_add=True) r..
-
[Python] dict 생성방법언어/파이썬 & 장고 2017. 2. 1. 17:37
dict()함수를 사용하여 초기부터 dictionary타입의 데이터를 생성하던지 다른 타입의 데이터를 dictionary로 변환하는 방법에 대해 설명합니다.dict()a = dict() a['id'] = 'test' a['password'] = 'test' print(type(a), a) # 또는 temp = {'id':'test', 'password':'qwer'} a = {} for k, v in temp.items(): print(k,v) a[k] = v print(a)dict(key,value)a = dict({'id':'test', 'password':'qwer'}) print(type(a), a)dict(**kwargs)a = dict(id='test',password='qwer') print..