본문 바로가기

전체 글847

PyCharm AWS Lambda Plugin으로 작업하는 방법 AWS Lambda는 여러가지 장점을 가지고 있다.하지만 로컬에서 작업할 수 없기에 항상 작업한 결과물을 업로드하거나 직접 AWS콘솔에 붙어서 작업을 해야했는데이는 너무나 불편한 작업이었다.그래서 PyCharm에서 AWS Lambda관련하여 플러그인이 없을 지 찾아보던 중 SAM이라는 플러그인을 발견했다.나는 OSX를 사용하고 있으므로 맥 기준으로 설명한다.먼저 아래의 명령어로 brew를 업데이트한다. brew upgradebrew update 이제 저장소에 추가하고 설치한다. brew tap aws/tapbrew install aws-sam-cli 다음으로 파이참을 키고 설정 - Plugins에서 lambda를 검색한다. 오른쪽에 있는 AWS Toolkit을 설치한다음 재시작한다.이제 File - Ne.. 2019. 2. 11.
awscli Library not loaded: @executable_path/ 오류 해결방법 파이썬 버전을 다운그레이드하고 지웠다 재설치하는 과정을 반복하던 도중정확히 어떤 부분을 건드렸는지 기억은 나지 않지만 환경변수, 링크들이 다 깨져버린 경험이 있다.그래서 기존에 설치했던 많은 프로그램들에 대한 링크가 제대로 작동하지 않았다.그러던 도중 aws에 접근하여 작업을 하기위해 aws명령어를 입력했더니 아래와 같은 에러가 발생했다. Library not loaded: @executable_path/먼저 which aws를 입력하여 경로를 확인한다.나는 OSX를 사용하고 있고, /usr/local/bin/aws에 위치해있다고 나왔다.해당 폴더를 삭제한다.그리고 아래의 명령어를 터미널에서 입력한다. sh 2019. 2. 11.
ECS에 Auto Scailing 적용하는 방법 목적AWS ECS를 사용하여 서비스를 배포할 때 Auto Scailing을 적용하는 방법에 대해 기술한다.배경지식먼저 ECS가 어떠한 형태로 돌아가는지 부터 살펴봐야 한다.ECS가 돌아가기 위해서는 다음과 같은 4개가 필요하다. ClusterServiceTask DefinitionEC2 Instance(Launched by Cluster) 기본적으로 Cluster부터 생성한다.Cluster를 생성할 때 원하는 인스턴스의 개수를 정할 수 있는데, 이때 정의한 개수만큼 클러스터 생성과 동시에 EC2 Instance가 구동된다.Service는 정의한 Task Definition을 묶어서 실행해준다고 보면 될 것 같다.Task Definition은 그냥 쉽게 생각해서 Docker-compose라고 생각해도 될 .. 2019. 1. 30.
Python Anti Pattern - Using an unpythonic loop Using an unpythonic loopPEP20에 따르면 "There should be one- and preferably only one -obvious way to do it"이라고 나와있다.각 요소에 접근하기 위해 증가하는 인덱스를 생성자쪽에서 사용하는 for루프는 좋지 않다.이러한 경우, enumerate()를 사용하는것이 좋다. Anti-patternl = [1,2,3] # creating index variable for i in range(0,len(l)): # using index to access list le = l[i] print(i,le)위 코드는 리스트의 요소들에 접근하기위해 i변수를 사용한다.이것은 파이썬에서 순회할 때 권장되지 않는 방법이다. Best practicefor.. 2019. 1. 28.
Python Anti Pattern - Test for object identity should be is Test for object identity should be is두개의 객체를 테스트할 때 is라는 오퍼레이터를 사용할 수 있다.가장 많이 사용하는 케이스는 None인지 아닌지 판별할 때라고 볼 수 있다.하지만 다른 어떠한 종류도 비교할 수 있다.가끔씩 혼란스러울수도 있는데, 아마 다른 두개의 객체를 비교하면 False를 반환하기 때문일 것이다. Anti-patterna = range(10) b = range(10) print((a is b))위 코드는a와 b가 같음에도 불구하고 False를 반환한다.같은 값을 가지고 있지만 각 객체자체가 다르기 때문이다.따라서 두개의 객체가 같은지 판단하기 위해서는 ==를 사용하는것이 좋다. Best practicesome_list = None if some_list.. 2019. 1. 28.
Python Anti Pattern - Not using unpacking for updating multiple values at once Not using unpacking for updating multiple values at once일반적으로 파이썬 커뮤니티는 장황한 코드보다 간결한 코드를 선호한다.Unpacking을 사용하여 여러개의 값을 동시에 수정하는 것은 각 값을 하나씩 수정하는것보다 훨씬 간결하다. Anti-patterndef gcd(a, b): while b != 0: temp = b b = a % b a = temp return a위 예제를 살펴보면 b에 값을 할당하고 다음라인에서 다시 a에 값을 할당한다.일반적으로 swap하는 함수와 비슷한데, temp라는 추가적인 변수를 사용했다. Best practicedef gcd(a, b): while b != 0: a, b = b, a % b return a수정된 코드는 전의 .. 2019. 1. 28.