전체 글(37)
-
20200728 python 관련 사소한 팁
1.@property python을 해본 사람은 누구나 알듯이 public, private같은 접근 제어자가 없다. 그래서 다른 언어에서는 private으로 쓸 것을 변수 앞에 밑줄 두개(__)를 써서, protected는 밑줄 하나(_)를 써서 표현한다. 보통 다른 언어에서 이들을 가져오고 싶거나 세팅하고 싶을 때 get, set 함수를 쓴다. python에서 이를 똑같이 하면 다음과 같다. class Everything: def __init__(self): self.__name = "any name" def get_name(self): return self.__name def set_name(self, new_name:str): self.__name = new_name 하지만 이런 식으로 하면 상당히..
2020.07.28 -
20200715 Asynchronous and Parellel in Golang
요즘 python 의 async 개념을 보면서 별 생각 없었던 golang의 goroutine에 대해 다시 한번 더 생각하게 될 계기를 가질 수 있었다. goroutine이 병렬적 연산인 줄 알았지만 아니었던 것...! 근데 왜 이때까지 병렬인줄 알았나..?!!?!?!? 그럼 내가 여태까지 본 자료들은 무엇인가..?!?! 알고보니 엄청 간단한 것들이었다. 일단 asynchronous한 것과 parellel한 것의 차이점을 알아야 한다. 이건 내 방식대로 설명해보겠다. 다음과 같은 작업을 사람이 한다고 생각하자. 작업1 'golang'을 구글에서 검색 2초 대기 'python'을 구글에서 검색 2초 대기 끝 작업2 'golang'을 종이에 쓰기 2초 대기 'python'을 종이에 쓰기 2초 대기 끝 Syn..
2020.07.15 -
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