개발(35)
-
20200706 go compiler && go viper
1. How to compile go https://getstream.io/blog/how-a-go-program-compiles-down-to-machine-code/참조... go compiler에는 세가지의 phase가 있다고 한다: 1.Scanner - code를 toke단위로 parse해주는 역할 2.Parser - token들을 Abstract Syntax Tree로 바꿔주는 역할 3.Code Generation - Abstract Syntax Tree를 machine code로 바꾸는 역할 놀랍게도 이를 구현해주는 package들이 있다고 한다. (go/scanner, go/parser, go/token, go/ast) -> 이를 활용하면 go code를 활용하여 machine code로 변..
2020.07.07 -
20200702 aws dynamoDB
1. dynamo DB란? aws에서 제공하는 NoSQL 데이터베이스. 하루에 10조개(!) 이상의 요청을 처리할 수 있고, 초당 2000만개 이상의 피크 요청을 처리할 수 있다고 한다. 기본 개념을 알아보자. RDB와는 달리 connection에 대한 걱정을 할 필요가 없다. provision throughput 설정할 수 있고, on demand로 설정할 수도 있다. Request를 보내어 그에 대한 Response를 받는 방식. 다음 그림 참고. 2. 테이블 생성 python code로 설정해보겠다. 우선 local 기기가 aws cli를 통해 인증이 되어있는 상태로 계정에서의 dynamoDB 사용이 활성화되어 있어야 한다. 나는 mac을 써서 brew를 통해 boto3라는 패키지를 install하..
2020.07.02 -
20200630 programmers print
def max_count(priorities): max_num = 0 max_idx = 0 length = len(priorities) for i in range(length): if priorities[i] > max_num: max_num = priorities[i] max_idx = i return max_num, max_idx def solution(priorities, location): answer = 0 while True: max_num, max_idx = max_count(priorities) if location > max_idx: priorities = priorities[max_idx+1:] + priorities[:max_idx] location = location - max_id..
2020.06.30 -
20200625 Leetcode two sum python solution
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: hmap = {} for i in range(len(nums)): idx = hmap.get(nums[i]) if idx: return [idx-1,i] hmap[target-nums[i]] = i+1
2020.06.25 -
20200623 https
앞으로 네트워크 카테고리는 사실상 내 메모장이나 다를바가 없을듯하다ㅎㅎ 1. 대칭키 서버와 클라이언트가 통신을 할 때에 그 내용을 암호화할 필요가 있다. 그 때 서버와 클라이언트가 서로 똑같이 가진 대칭키를 통하여 전송 내용을 서로 암호화할 수 있고, 똑같이 대칭키를 통해 그 내용을 복호화할 수 있다. 하지만, 이러한 대칭키를 어떻게 전송하느냐의 문제가 있다. 대칭키를 전송할 때 누가 훔쳐보면 어떡하겠는가? 2. public key, private key https에서 사용되는 방식 서로 쌍을 이루는 private key A, public key B가 있으면 A로 암호화된 값은 B로만 복호화할 수 있으며, B로 암호화된 값은 A로만 암호화할 수 있다. 서버는 private key를 가지고 있고 그와 쌍을..
2020.06.23 -
20200622 yarn, serverless, git commit 정석
1. yarn 전에 있던 회사에서 내가 처음부터 배포하고 이런 과정을 해보지 않고 기존의 존재하던 시스템을 계속해서 수정하는 수준이었어서 혼자 제대로 된 배포를 해본 적이 없다. 그렇다보니 yarn이 뭔지, 얘네들이 뭔지 알 필요가 없으니 관심 밖이었다...(처음 개발을 시작했으니 django graphql docker등을 파악하기도 벅찼다...) 그런데 지금 회사 와서 직접 배포하며 알아보니 별거 아니었다... 프로젝트를 진행하다보면 의존 성 관리가 어려워 지는데, yarn_modules에 그 정보를 모두 넣어 굉장히 편리하게 협업이 가능하게 된 시스템이다. 처음에 해당 프로젝트 폴더에서 yarn init을 커맨드창에서 입력하면 package.json이 생성된다. 보통 다음과 같은 형태이다. { "na..
2020.06.22