본문 바로가기

# Development

(39)
[클린 코드] 주석 & 포맷팅 클린 코드: 주석 & 포맷팅 주석을 사용 할 때 1. 법적인 정보를 담을 때 # Copyright (C) 2021 ... 2. 의도를 명확하게 설명할 때 # throughput을 늘리기 위해 스레드를 10개까지 늘린다. for idx in range(10): thread = threading.Thread(target=...) thread.start() ... 3. 중요성을 강조할 때 # 최종 결제를 하기 전에 진행해야 하는 validation 함수 def validate_buyable(wallet, price, ...): ... 4. 결과를 경고할 때 # WARNING: API 서버가 항상 양호한지 알 수 없음. 관용적으로 사용되는 키워드 TODO : 당장은 아니지만 다음에 해야 할 때 FIXME : 치..
[Flask] CORS (Cross-Origin Resource Sharing) 설정 CORS (Cross-Origin Resource Sharing) 설정 CORS란? CORS는 보안상의 이유로 필요한 경우에만 서버와 협의하여 데이터를 요청할 수 있도록하는 장치이다. CORS를 알기 위해서는 우선 Origin이 무엇인지 이해가 필요하다. Origin (출처) 우리가 특정 사이트를 접속을 위해 사용하는 URL은 아래의 그림과 같은 요소로 구성되어 있다. 각 구성요소는 다음의 특징을 가진다. Protocol(Scheme) : http, https Host : 사이트 도메인 Port : 포트 번호 Path : 사이트 내부 경로 Query string : 요청의 key와 value값 Fragment : 해시 태크 CORS에서 얘기하는 Origin은 위의 URL 구성 요소 중 _Protocol ..
[AWS EC2] 인스턴스 중지 및 시작 인스턴스 중지 및 시작테스트 서버가 먹통이 되어 인스턴스를 중지 후 재시작 했는데 Putty 접속이 되지 않았다.  인스턴스 대시보드에서는 실행중으로 잘 돌아가고 있었고, 인스턴스 스크린샷, 시스템로그를 확인 해봐도 인스턴스는 잘 작동하고 있었다. 인스턴스 중지 공식문서를 확인해보니 탄력적 IP 주소를 적용하지 않아서 생긴 문제였다. 탄력적 IP 주소를 할당해주지 않으면 인스턴스 중지 후 재시작 할 때 새로운 퍼블릭 IPv4 주소가 생성된다. https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/Stop_Start.html Amazon EC2 인스턴스 중지 및 시작 - Amazon Elastic Compute Cloud인스턴스를 중지하면 인스턴스 스토어 ..
[SQL - Error] utf8mb4_0900_ai_ci, utf8mb4_general_ci 문제 mysql 테이블에 백업 데이터를 업로드 할 때 해당 에러 발생 원인 mysql 5.7 버전은 utf8mb4_general_ci, 8.0 이상 버전은 utf8mb4_0900_ai_ci 를 사용하기 때문에 8.0 이상 버전에서 export한 데이터를 5.7버전에 import 할때 에러가 발생함 해결방법 mysql을 8.0 이상으로 업데이트 mprot할 dump 파일을 열어서 char set을 general_ci로 변경 (데이터 손상이 있을 수 있으므로 권장하지 않음)
[클린 코드] 네이밍 클린 코드: 네이밍 Convention의 종류 snake_case: Python, Ruby 등에서 권장 camelCase : Java, Javascript 등에서 권장 PascalCase : 대부분의 프로그래밍 언어에서 클래스를 네이밍할 때 사용 kebab-case: HTML Element를 표현할 때 사용 변수와 상수 변수와 상수를 네이밍 할 때는 명사 혹은 형용사를 사용한다. user_date = ... #명사 is_valid = ... #형용사 함수와 메서드 함수와 매서드를 네이밍할 때는 동사 혹은 형용사 구문 형태를 사용한다. def send_data(): ... def input_is_valid(): ... 클래스 클래스 이름을 네이밍할 떄는 명사 구문 형태를 사용한다. class Client:..
[Ubuntu] 리눅스 우분투 Cron(크론), Crontab(크론탭) 설정 리눅스 우분투 Cron(크론), Crontab(크론탭) 설정 매일 특정 시간에 API를 호출해야 하는 작업이 있어서 우분투에서 crontab에 작업을 추가했다. 멀티태스킹이 가능한 운영체제에서 사용자에 의해 제어 및 관리되지 않고, Background Process로 돌며 작업을 수행하는 프로그램을 Daemon(데몬)이라 한다. Daemon의 프로세스들은 보통의 Foreground Process의 프로그램들과 구분되기 위해 이름의 끝에 'd' 를 포함한다. 리눅스에서 지정한 스케쥴에 맞춰 작업을 수행 하는 데몬을 Cron(크론)이라고 하고,이 Cron이 수행할 작업과 스케쥴을 설정해 명령 리스트를 만드는 것을 Crontab(크론탭)이라고 한다. 이 기능을 사용하면 24시간 동작하는 서버에서 특정 시간에 ..
[Github] Git-flow Git-flow란? Git을 사용한 협업의 한 방법으로, git이 갖는 가장 큰 장점은 효율적인 브랜치 관리를 극대화한 방법론이다. Git-flow Git-flow에는 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)이 있다. master 정식 배포되는 안정적 버전의 소스코드 master 브랜치에는 배포해도 될 만큼 안정성이 충분히 검증된 코드들만이 병합되어야 한다. master 브랜치에는 지난 배포판 버전의 소스코드를 확인하기 위한 태그(tag)들을 추가한다. 태그를 이용해 각 릴리즈 버전의 소스코드를 확인할 수 있다. release 새로운 버전 릴리즈 준비 develop 브랜치를 기반으로 생성된다. re..
[Github] Sementic Versioning Sementic Versioning 패키지의 변화를 구분하기 위해 사용한다. MAJOR.MINOR.PATCH 기존 버전과 호환되지 않게 API가 변경되면 “MAJOR”를 올린다. 기존 버전과 호환되면서 새로운 기능이 추가 되었을 때는 “MINOR”를 올린다. 기존 버전과 호환되면서 버그를 수정했을 경우 “PATCH”를 올린다. “MAJOR” 숫자가 올라갈 때, “MINOR”, “PATCH” 숫자는 0으로 재설정 되어야 한다. “MINOR” 숫자가 올라갈 때, “PATCH” 숫자는 0으로 재설정 되어야 한다. 버전 명이 주어진 패키지가 한번 공개되면, 해당 버전의 내용은 절대 수정 되어선 안된다. 어떤 수정도 반드시 새로운 버전으로 공개 되어야 한다. 주요버전 0.x.y 은 초기 개발을 위한 것으로 언제든..