koyeb(heroku 대체제) 으로 flask 배포하기

이미지
## koyeb 선택 이유 2015년부터 잘 쓰던 heroku(무료 플랜)가 곧 무료 플랜을 종료한다고 해서 대체제를 찾아봤다. fly.io, render.com 등을 확인해봤는데 fly.io 는 카드를 등록해야해서 탈락. render.com 는 괜찮은 것 같았는데 가격 대비 서비스가 미세하게나마 koyeb이 좋아서 선택. CPU 1 / RAM 512 / SSD 5G 가 무료라고 되어 있다. 정확히는 5달러를 주고 저 플랜을 5.4달러에 제공해서 0.4달러를 내야하는 것 같은데... 아래 이미지처럼 되어 있어서 일단 한 달 써보려고 한다. 0.4달러를 내야하면 render.com 로 가면 되니. 배포하는 방법은 별 것 없어서 쓸데없는 말이 길어졌다. ## 배포 방법 아래 이미지대로 쭉 따라하면 된다. 먼저 create app 을 누르고, gunicorn 을 사용하기 때문에 **run command** 에 `gunicorn app:app` 을 작성했다. 만약 python version 을 고정하고 싶다면 추가 작업이 필요하다. `root` directory 에 `runtime.txt` 파일을 추가하고 `python-3.9.15` 라고 명시하면 된다. 해당 작업을 하지 않으면 koyeb이 알아서 파이썬 버전을 정해서 빌드한다. 배포는 이렇게하면 끝이다. 적고 나니까 render.com 도 올려 봐야겠다는 생각이 든다. 뭐가 더 간단하려나.

Git GUI client 사용 후 비교(Feat. Fork)

- **개인적으로 써 본 Git GUI client** - SourceTree([https://www.sourcetreeapp.com/](https://www.sourcetreeapp.com/)) - Github Desktop([https://desktop.github.com/](https://desktop.github.com/)) - **Fork**([https://git-fork.com/](https://git-fork.com/)) - **Fork 를 쓰게 된 이유** - SourceTree 단점 - 단점 - Crash 가 너무 심함. 저번 주에 혹시나 해서 한 번 깔아봤는데 또 Crash. 안고쳐줌. - 간혹 가다 알 수 없는 버그, 버벅임. - Github Desktop - 상대적으로 단순한 기능 - GitKraken - 상대적으로 높은 가격([https://www.gitkraken.com/pricing](https://www.gitkraken.com/pricing)) - **Fork 장점** - Crash 난 적 없음(기억 속에 없음) - 훌륭한 UX/UI - 필요한 기능은 다 있음 - 가격 - 개인적으로 사용 시 무료 - 영구 라이센스 구매 $49.99 - 상업적으로 사용 가능 - **Git GUI client 비교 시 참고 자료** - [https://stackshare.io/stackups/fork-vs-sourcetree](https://stackshare.io/stackups/fork-vs-sourcetree) - [https://open-support.tistory.com/entry/git-guiclient-는-어떤툴을-사용하시나요](https://open-...

2020 카카오 인턴 코딩테스트 - 키패드 누르기 (python3)

파이썬 문법 중 `if i in 리스트` 로 포함되어있는지 아닌지를 다른 사람 풀이 보고 알게 되었음. ``` def solution(numbers, hand): left_hand = [3, 0] right_hand = [3, 2] left_hand_distance = 0 right_hand_distance = 0 keypad_locations = [[3, 1]] left_hand_numbers = [1, 4, 7] right_hand_numbers = [3, 6, 9] center_numbers = [2, 5, 8, 0] current_hand = "" answer = "" for x in range(0, 3): for y in range(0, 3): keypad_locations.append([x, y]) for number in numbers: if number in left_hand_numbers: current_hand = "L" if number in right_hand_numbers: current_hand = "R" if number in center_numbers: left_hand_distance = abs(left_hand[0] - keypad_locations[number][0]) + abs(left_hand[1] - keypad_locations[number][1]) right_hand_distance = abs(right_hand[0] - keypad_locations[number][0]) + abs(right_hand[1] - keypad_locations[number][1]) if l...

프로그래머스 타겟 넘버 파이썬 python3

처음에 그림은 그렸는데 못 풀었음. 풀이 참고해서 풀게 됨. ``` answer = 0 def dfs(i, numbers, target, result): global answer if (i == len(numbers)): if result == target: answer += 1 return dfs(i+1, numbers, target, result + numbers[i]) dfs(i+1, numbers, target, result - numbers[i]) def solution(numbers, target): global answer dfs(0, numbers, target, 0) return answer ```

자바스크립트 spread 문법(JavaScript spread syntax)

## 자바스크립트 spread 문법(JavaScript spread syntax) 자바스크립트 spread 문법은 다음과 같다. ``` let request = { a: "1", b: "2"} console.log(request) // { a: '1', b: '2' } console.log({request}) // { request: { a: '1', b: '2' } } console.log({...request}) // { a: '1', b: '2' } console.log({c: "3", ...request}) { c: '3', a: '1', b: '2' } console.log({...request, c: "3"}) { a: '1', b: '2', c: '3' } ```

AWS CloudWatch와 AWS Lambda를 활용해 AWS EC2 실행, 중지 될 때마다 Slack 메세지 받기(How to receive Slack message using AWS CloudWatch and AWS Lambda when AWS EC2 state is changed)

## AWS CloudWatch와 AWS Lambda를 활용해 AWS EC2 실행, 중지 될 때마다 Slack 메세지 받기(How to receive Slack message using AWS CloudWatch and AWS Lambda when AWS EC2 state is changed) [이 글](https://ghkdgh2365.blogspot.com/2020/12/aws-lambda-aws-cloudwatch-aws-rds-how.html)을 쓴 김에 쓰는 글입니다. AWS EC2 상태가 변경(실행 또는 중지 등)할 때마다 슬랙으로 메세지를 받는 방법에 대해서 작성합니다. 순서는 아래와 같습니다. 1. Slack 설정 2. AWS Lambda 설정 3. AWS CloudWatch 설정 ### 1. Slack 설정 [해당 페이지](http://ghkdgh2365.blogspot.com/2020/12/aws-lambda-aws-cloudwatch-aws-rds-how.html) 1. Slack 설정과 같습니다. ### 2. AWS Lambda 설정 AWS Lambda 에 가서 **함수 생성** 버튼을 클릭하고 **함수 이름**을 적은 뒤 함수를 생성합니다. 저의 경우 **런타임**(사용할 프로그래밍 언어)은 **Python 2.7**로 했습니다. 생성한 뒤 **함수 코드**는 아래와 같이 작성합니다. `'YOUR SLACK URL'` 자리에 Slack 설정 시 확인했던 **Webhook URL** 을 복사해서 붙여넣어주면 됩니다. ``` # -*- coding: utf-8 -*- import json, random import httplib from botocore.vendored import requests def lambda_handler(event, context): slack_url = 'https://hooks.slack.com/services/TBF4TQCQ4/B01GABAKDSP/i...

Amazon RDS 이벤트 알림 규칙(Feat. AWS CloudWatch, Amazon EventBridge)(Amazon RDS event notification rules)

## Amazon RDS 이벤트 알림 규칙(Feat. AWS CloudWatch, Amazon EventBridge)(Amazon RDS event notification rules) AWS Lambda 와 함께 AWS CloudWatch, Amazon EventBridge의 RDS 상태 변경과 관련된 규칙을 사용하고 싶을 때 아래와 같이 설정하면 됩니다. [해당 페이지](https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_Events.html)에서 더 자세히 확인하실 수 있습니다. #### RDS Cluster가 중지됐을 때 ``` { "source": [ "aws.rds" ], "detail-type": [ "RDS DB Cluster Event" ], "detail": { "EventID": [ "RDS-EVENT-0150" ], "EventCategories": [ "notification" ], "SourceType": [ "CLUSTER" ], "SourceArn": [ "arn:aws:rds:ap-northeast-2:xxxxxxxxxxx" # 해당 RDS cluster 의 arn ], "SourceIdentifier": [ "xxxxxxxx" # 해당 RDS cluster 의 DB 식별자 ] } } ``` #### RDS Cluster가 시작됐을 때 ``` { "source": [ "aws.rds...

AWS Lambda와 AWS CloudWatch 이용해서 AWS RDS가 시작 또는 중지되었을 때, 슬랙으로 메시지 받기(How to receive slack message using AWS Lambda and AWS CloudWatch when AWS RDS is started or stopped)

이미지
## AWS Lambda와 AWS CloudWatch 이용해서 AWS RDS가 시작 또는 중지되었을 때, 슬랙으로 메시지 받기(How to receive slack message using AWS Lambda and AWS CloudWatch when AWS RDS is started or stopped) AWS Lambda와 CloudWatchAWS 이용해서 AWS RDS가 시작 또는 중지되었을 때, 슬랙으로 메시지 받는 방법을 소개하려고 합니다. ~~(AWS RDS는 비싸니깐요?)~~ 여기서 가장 중요한 부분은 **AWS CloudWatch 이벤트 생성 규칙**입니다. 따라서 가장 마지막에 적겠습니다. ~~(왜..?)~~ 순서는 다음과 같습니다. 1. Slack 설정 2. AWS Lambda 설정 3. AWS CloudWatch 설정 ### 1. Slack 설정 slack에 들어가 Apps 옆에 있는 **+** 버튼을 클릭합니다. 그 다음 검색창에 **incoming-webhook** 을 검색해 들어간 후 **Add**를 누르고, 새 창이 열리면 **Add to slack** 이라는 버튼을 클릭합니다. 그 다음 메시지를 받기 원하는 채널을 선택한 후 **Add Incoming WebHooks integration** 버튼을 선택하면 끝납니다. 새 페이지에서 **Webhook URL**에 적혀져 있는 링크만 복사해서 보관하고 있으면 끝. 혹시 메시지 알려주는 봇? 의 이름을 바꿔주고 싶다면 조금 더 아래로 내려가서 **Customize Name**을 바꿔주면 됩니다. 그 아래 **Icon** 도 바꾸실 수 있습니다. ### 2. AWS Lambda 설정 AWS Lambda 에 가서 **함수 생성** 버튼을 클릭하고 **함수 이름**을 적은 뒤 함수를 생성합니다. 저의 경우 **런타임**(사용할 프로그래밍 언어)은 **Python 2.7**로 했습니다. 생성한 뒤 **함수 코드**는 아래와 같이 작성합니다. `'YOU...

구글 블로거 애드센스 판매자 정보 Google sellers.json 파일에 게시 문제 해결 방법

이미지
## 구글 블로거 애드센스 판매자 정보 Google sellers.json 파일에 게시 문제 해결 방법 애드센스 신청하니 Google seller 어쩌구 문제를 해결해야했다. 구글링해 본 결과 해결 방법이 매우 간단했다. 애드센스 관리자 페이지에서 **계정** 메뉴에 들어가 **판매자 정보 공개 상태** 섹션에서 **공개상태**를 **공개** 로 변경하고 비즈니스 도메인의 경우 안넣어도 되는 것 같지만 혹시 몰라 **본인의 블로그 url** 을 입력하면 해결된다. ##### 참고 https://blog.hangyeong.com/1200

구글 블로그 blogger 수익 손실 위험 문제 해결하기 (수익 손실 위험 - 수익에 심각한 영향을 미치지 않도록 사이트에서 발견된 ads.txt 파일 문제)

이미지
## 구글 블로그 blogger 수익 손실 위험 문제 해결하기 (수익 손실 위험 - 수익에 심각한 영향을 미치지 않도록 사이트에서 발견된 ads.txt 파일 문제) 최근 같이 일하는 분이 매월 7000원 정도의 구글 애드센스 수익을 얻는다는 것을 듣고서, 부러움과 동시에 내 블로그에도 애드센스를 붙여야겠다는 생각에 애드센스를 붙였습니다.~~(붙이더라도 매월 700원도 안나오겠지만)~~ 붙이고 주말이 지나니, 상당히 거슬리면서도 우려스러운~~(100원조차 돈을 안 줄것 같은)~~ 알림 메시지를 확인했습니다. *수익 손실 위험 - 수익에 심각한 영향을 미치지 않도록 사이트에서 발견된 ads.txt 파일 문제를 해결해야 합니다.* 해결하기 위해, 검색해본 결과 다음과 같은 조치를 취하면 된다는 것을 알았습니다. **지금 해결하기** 버튼을 누른 후 아래 이미지와 같은 화면이 나오면 **다운로드** 를 받아서 다운 받은 **ads.txt 텍스트 파일** 을 열어서 **작성되어있는 텍스트 전부** 를 복사합니다. (google.com, pub-797XXXXXXXXXXXX, DIRECT, f08xxxxxxx 식으로 써져있음) 그 다음 블로거 **관리자 페이지**에가서 **설정** 메뉴를 누르고 쭉 아래로 스크롤을 내려보면 **수익 창출** 이라는 섹션이 나옵니다. 여기서 **맞춤 ads.tx 사용 설정**을 켜주시고 **맞춤 ads.txt** 를 클릭한 후, 아까 복사했던 텍스트를 붙여넣기 합니다. 그럼 몇 일후에 해결이 된다고 합니다. 해결이 안되면 다시 글을 쓰도록 하겠습니다. ##### 참고 https://m.blog.naver.com/studycadcam/221862563335