전체 글
-
[Golang] 변수언어/Golang 2020. 2. 9. 16:37
Golang에서 변수를 선언하는 방법은 아래와 같습니다.1. 변수 선언 후, 값 지정하기var test int test = 102. 변수 선언과 동시에 값 지정하기var test int = 103. 타입없이 변수 선언하기var test = 100 var test1 = "100" 컴파일에서 선언된 값의 타입을 확인한 다음, 내부적으로 타입을 지정해 주는 스타일입니다.4. 동적 변수 선언하기test := "vary" 3번과 유사하지만 변수라는 형태인 var 없이 선언하는 스타일입니다. 하지만 이러한 표현은 함수내에서만 사용할 수 있으며, 함수 밖에서는 var를 사용해야 합니다.5. 동일 타입을 가지는 복수개의 변수 선언하기var i, j int i = 10 j = 20 var i, j int = 0, 0 i..
-
[Git] 브랜치 (branch) 다루기저장소/git 2019. 12. 8. 19:37
앞에서 커맨드를 사용해 저장소 생성, 커밋, 푸쉬하는 법을 다뤘습니다. 여기서는 브랜치 생성, 머지하는 방법을 설명합니다.브랜치 확인명령어를 통해 현재 어떤 브랜치가 있고 활성화된 브랜치가 무엇인지 확인할 수 있습니다.$ git branch= * master (END) 현재 master 브랜치만 존재합니다. *가 붙어있는 브랜치가 현재 활성화된 브랜치라고 볼 수 있습니다. 옵션 -v를 추가하면 브랜치마다 마지막 커밋 메시지를 확인할 수 있습니다.$ git branch -v * master 48fc51f [ahead 1] test2 (END) 원격 저장소의 브랜치를 확인하려면 -r 옵션을 추가하면 됩니다.$ git branch -r origin/HEAD -> origin/master origin/maste..
-
[Python] 여러 진수로 변환하기 (3진수, 4진수, 11진수 등등)언어/파이썬 & 장고 2019. 12. 8. 17:58
파이썬에서는 2진수, 8진수, 10진수, 16진수로 쉽게 변환할 수 있도록 내장함수가 포함되어 있습니다. 하지만 3진수나 4진수와 같이 다른 진수로 변환하고자 하면 직접 구현을 해야 합니다. (조사를 했지만 파이썬에서는 따로 제공하지 않는 것으로 확인)이러한 요구사항 때문에 아래에 2진수부터 16진수까지 변환하는 코드를 작성했습니다.NOTATION = '0123456789ABCDEF' def numeral_system(number, base): q, r = divmod(number, base) n = NOTATION[r] return numeral_system(q, base) + n if q else n # 2진수 result = numeral_system(18, 2) # 4진수 result1 = num..
-
[Python] 2진수, 8진수, 10진수, 16진수 변환언어/파이썬 & 장고 2019. 12. 8. 17:14
먼저 파이썬은 기본 10진수이기 때문에 다른 진수는 아래와 같이 접두어가 붙습니다.2진수: 0b8진수: 0o16진수: 0x10진수에서 2진수, 8진수, 16진수 변환bin(), oct(), hex() 내장함수 사용파이썬에서 제공하는 내장함수를 사용하면 쉽게 변환 할 수 있습니다.value = 60 b = bin(value) o = oct(value) h = hex(value) print(b) print(o) print(h) # 0b111100 # 0o74 # 0x3c 결과는 전부 문자열 타입입니다.format() 내장함수 사용forrmat() 내장함수를 사용하여 위 결과와 마찬가지로 변환할 수 있습니다.value = 60 b = format(value, '#b') o = format(value, '#o'..
-
[Github] 외부 저장소 fork, pull request, 동기화 하기저장소/git 2019. 12. 7. 18:51
외부 저장소를 fork를 하고 내용을 수정한 다음, 해당 저장소의 master에게 내가 변경한 사항을 확인하고 머지해 주세요 라는 의미로 pull request를 요청할 수 있습니다. 또한 원본 저장소에서 변경된 사항이 있으면 fork를 받은 내 저장소에는 반영이 되지 않으므로 동기화를 시켜줘야 합니다.외부 저장소 fork하기 fork 할 저장소에 들어간 다음, star 버튼 옆에 있는 fork 버튼을 누릅니다. organization이 여러개일 경우, 아래와 같이 팝업이 나오는데 fork할 위치를 지정해 줍니다. fork에 성공하면 아래와 같이 계정에 새로운 저장소가 생성됩니다. fork를 진행한 다음, 로컬에 해당 저장소의 파일을 내려받습니다.$ git clone https://github.com/b..
-
[Git] Command 알아보기저장소/git 2019. 12. 7. 17:59
지금까지 gitlab이나 github을 사용할 때, 커맨드를 쓰지 않고 source tree에서 제공하는 GUI로 처리했습니다. GUI가 편리하긴 하지만, 프로젝트의 크기가 커지고 브랜치가 많아지는 경우 살짝 느려지는 경향이 있습니다. 이를 보완하고 git 커맨드에 친숙해지고자 커맨드를 사용하는 방법을 설명합니다.git 저장소 생성기존 폴더를 git 저장소로 추가$ git init Initialized empty Git repository in /.../test_git/.git/ test_git이라는 폴더를 저장소로 git 저장소로 추가한 방법입니다. 해당 폴더에 들어간 후, $ls -la | grep .git을 하면 .git 파일이 추가된 것을 확인할 수 있습니다. 로컬에서 .git을 추가한 것이므로 ..
-
[Django] serializer bulk create, update 구현하기언어/파이썬 & 장고 2019. 12. 3. 21:04
장고의 DRF를 사용하여 viewset을 구현하면 제목과 같은 기능이 필요할 때가 있습니다. 기본 ORM을 사용한다면 쉽지만 유효성 검사를 직접 구현해줘야 합니다. DRF의 serializer를 사용하여 처리를 하는 방식을 아래에서 설명합니다.bulk createbulk create는 큰 구현이 필요하지 않습니다. viewset에서 def list() 함수를 상속 받은 다음, 요청 데이터 타입이 list일 때만 serializer의 파라미터에 {'many': True}를 주면 끝납니다. class AdminViewSet(viewsets.ModelViewSet): def create(self, request, *args, **kwargs): kwargs["many"] = isinstance(request...
-
[Django] custom command 만들기언어/파이썬 & 장고 2019. 12. 2. 19:40
$ python3 manage.py --help를 입력하면 django에서 제공하는 command를 확인할 수 있습니다. 이 때, 사용자가 임의로 어떤 명령어를 만들고 해당 명령어를 통해 일련의 작업을 수행하도록 하기 위해선 커스텀 커맨드를 만들어야 합니다.개요먼저 프로젝트의 구성이 아래와 같다고 가정합니다.polls/ __init__.py models.py management/ commands/ _private.py closepoll.py tests.py views.py 커스텀 커맨드를 만들기 위해선 polls와 같이 app이 지정되어야 하고 해당 app 하위에 management/commands/ 폴더가 생성되어야 합니다. 해당 폴더의 이름은 고정이며 다른 이름으로 변경할 시, 커스텀 커맨드가 작동하..
-
[Elasticsearch] DSL 살펴보기DB/Elasticsearch 2019. 12. 1. 17:53
DSL이란 Domain Specific Language 으로 JSON에 기반한 질의입니다. ES에서의 DSL은 데이터베이스의 SQL문과 동일하다고 이해하면 쉽습니다. 사용자가 원하는 데이터를 추출하기 위한 질의 언어입니다. 아래는 Elastic search에 질의를 하여 원하는 데이터를 추출하기 위한 DSL 예시입니다. 기본적으로 질의를 위해선 아래와 같이 "query" 속성을 사용합니다.GET /조회할 인덱스명/_search/ { "query": { ... } }Query VS FilterDSL 기능이 어떤게 있는지 설명에 앞서 query와 filter간 차이점을 먼저 설명합니다.기본적으로 Elastic search는 일치하는 검색 결과의 관련성을 점수 별로 정렬하여 각 문서가 쿼리와 얼마나 잘 일치하..
-
[Python] Kruskal Algorithm (크루스칼 알고리즘)언어/파이썬 & 장고 2019. 11. 30. 21:48
크루스칼 알고리즘의 이론은 https://brownbears.tistory.com/396에 설명이 되어 있습니다. 아래는 파이썬으로 기본적인 크루스칼 알고리즘을 어떻게 구현했는지에 대한 내용입니다. 코드에 앞서 크루스칼 알고리즘의 중요한 점은 아래와 같습니다.edge가 가장 작은 순으로 선택해 나감edge 연결 후, cycle이 생기면 안됨 즉, 가장 작은 edge를 선택할 때마다, 그동안 연결한 vertices끼리 cycle이 생기는지 확인을 해야 합니다. 이러한 cycle이 생겼는지 확인하는 것은 union-find (disjoint-set) 알고리즘을 사용합니다. union-find (disjoint-set) 알고리즘의 설명은 https://brownbears.tistory.com/460에 정리되어..