• 알고리즘

    알고리즘 – 이진 트리 (Python)

    이진 트리(Binary Tree) 란? 트리란 부모와 자식이 상하 구조로 나뉘어진 그래프입니다. 이진 트리는 트리의 종류 중 하나이며 자식 노드를 왼쪽과 오른쪽에 하나씩 배치할 수 있는 형태의 그래프입니다. 탐색 방식 종류 전위 순회 후위 순회 중위 순회 층별 순회 전위 순회 (루트) -> (왼쪽 자식 노트) -> (오른쪽 자식 노드) 순 탐색 탐색 순서 A – B – D – C – E – F – G 전위 순회 예시 코드 후위 순회 (왼쪽 자식 노트) -> (오른쪽 자식 노드) -> (루트) 순 탐색 탐색 순서 D – B – E – G – F – C – A 후위 순회 예시 코드 중위 순회 (왼쪽 자식 노트) -> (오른쪽 자식…

  • Flask

    Flask – 기본 Command 및 Config 관련 정리

    run flask app 실행 관련 환경변수 FLASK_ENV=development or production – 환경 타입이며 development 환경이 autoloading이 가능 FLASK_APP=flask_application_name – 실행된 앱 혹은 위치 routes 앱에 생성된 라우터 조회 shell flask 인스턴스를 생성하여 커맨드 입력을 통한 확인 가능 Flask Config 관리 소스 Flask의 환경 설정을 용도별로 분리하여 사용하는 방식 __init__.py configs.py 참고 자료 Flask Config

  • Python

    Python – 가상환경이란? (venv, pyenv)

    가상환경이란? 정의 프로젝트 별로 독룁된 환경( 특정 버전 파이썬 설치와 여러 추가 패키지 )을 제공하는 디렉토리 트리 사용 이유 작업 환경에 따라 사용 패키지와 그에 따른 의존성 등의 조건이 다르기 때문에 발생되는 문제를 해결하기 위해서 사용 venv와 pyenv의 차이점 venv의 경우 python3에서 기본적으로 제공되는 라이브러리 python3에서 지원되는 라이브러리이기 때문에 python2 환경에서는 사용할 수 없음 pyenv의 경우 별도의 설치가 필요 python2, python3 모두 버전 별로 환경 구성이 가능 venv 관련 사용법 가상환경 생성 가상환경 활성화 가상환경 비활성화 pyenv 관련 사용법 설치 방법 – 해당 기준은 Windows OS 기준입니다 (선행) chocolatey 설치 chocolatey로 pyenv-win 설치 설치 가능한 버전 리스트 설치된 버전 리스트 파이썬 버전 설치 및 삭제 가상환경 적용 생성한 가상환경 위치…

  • 알고리즘

    알고리즘 – LCS (Python)

    LCS (Longest Common Subsequence) 란? 최장 공통 부분수열이라고도 부르며 여러 개의 수열 모두의 부분수열이 되는 수열들 중에 가장 긴 것을 찾는 방법 시간 복잡도 O(a1 × a2 × a3 … × an) 최장 공통 부분수열(Longest Common Subsequence) 백준 9252번 – LCS 2를 예시로 설명하겠습니다. 풀이 방법 먼저 두 수열을 비교를 통해 최대 길이를 구합니다 a 수열의 i번째와 b 수열의 j번째가 같은 경우 LCS[i][j] = LCS[i-1][j-1]+1 a 수열의 i번째와 b 수열의 j번째가 같은 경우 LCS[i][j] = max(LCS[i-1][j], LCS[i][j-1]) 자 이제 거의 다 왔습니다! 😃😃 길이를 구한 수열의 값만 찾으면 되는데요! 순서는 아래와 같습니다. 수열 찾기 순서 리스트의 마지막 값 ( LCS[-1][-1])을 기준 값으로 정한다 인접 값에 동일한 값이 있을경우 해당 위치로 이동 ( LCS[move_y-1][move_x],…

  • Docker Container

    Docker-Compose 각종 서비스 설정 정리

    docker compose로 간단한 mysql 설정 예시 mysql 환경변수 명령 의미 MYSQL_ROOT_PASSWORD 필수값. MySQL의 root 암호 지정 MYSQL_DATABASE 생성할 DATABASE 생성 MYSQL_USER MySQL 사용자 아이디 지정 MYSQL_PASSWORD MySQL 사용자 암호 지정 MYSQL_ALLOW_EMPTY_PASSWORD MySQL의 root 암호에 빈 값을 허용.빈 값 허용시 위 예시의 SQL문 등의 적용이 안됨 docker compose로 간단한 nginx 설정 예시 공통 – restart(재시작) 정책 명령 의미 “no” 어떠한 경우에도 재시작하지않음 always 항상 재시작 on-failure on-failure 에러와 함께 컨테이너가 멈추었을때만 재시작 unless-stop 개발자가 임의로 멈추려고 할 때를 제외하곤 항상 재시작

  • AWS,  Docker Container

    Docker – Multi Container와 AWS EB 설정

    Dockerrun.aws.json 파일이란? Multi Container의 경우 AWS 설정 파일이 필요한데 Dockerrun.aws.json 이 바로 해당 설정 파일입니다 필요한 이유 Single Container의 경우 하나의 컨테이너만 필요하기 때문에 Dockerfile 만으로 확인이 가능하지만 Multi Container의 경우 컨테이너 간의 실행 순서 등 자동 프로세스가 안되므로 임의 설정이 필요합니다. Dockerrun.aws.json 파일 설정 각 컨테이너에 사용할 이미지 CPU 및 메모리 지정 작업에 사용할 로깅 구성, IAM 역할 명령 의미 AWSEBDockerrunVersion 버전 번호를 멀티컨테이너 Docker 환경에 대한 값 2로 지정 containerDefinitions 컨테이너 작업 정의 영역 name 컨테이너 이름 image Docker Hub에 생성된 Repository 안의 Docker 이미지명 hostname 호스트명해당 이름을 통해 Docker Compose의 다른 컨테이너로 접근 essential 실패시 작업 중지 여부 memory 사용 메모리 지정 portMappings 컨테이너에 있는 네트워크 지점을 호스트…

  • AWS,  CI,  Docker Container

    GitHub – Travis CI 사용법 (Docker, AWS EB, IAM)

    Travis CI 란 ? Travis CI는 Github 및 Bitbucket에서 진행되는 오픈소스 프로젝트를 위한 지속적인 통합(Continuous Integration) 서비스입니다.2011년에 설립되어 2012년에 급성장하였으며 Ruby언어만 지원하였지만 현재는 대부분의 개발 언어를 지원하고 있으며 Travis CI를 이용하면 Github repository에 있는 프로젝트를 특정 이벤트에 따라 자동으로 테스트, 빌드하여 배포할 수 있습니다. * Private repository는 유료로 일정 금액을 지불하고 사용할 수 있습니다. 준비물 AWS 계정 Github 계정 Travis에 연동할 Github Repository Travis CI – Github, AWS 연동 과정 먼저 Travis 홈페이지에서 Travis CI 계정을 생성합니다. 생성 후 화면 우측 상단 내 정보 – Setting으로 이동하면 아래 화면이 나옵니다. elasticbeanstalk 생성 과정 AWS Console에서 ElasticBeanstalk 검색 – 새 환경 생성 환경 티어 선택 – 웹 서버 환경 선택 플랫폼…

  • Nginx

    Nginx – 설정 정의

    user nginx를 기동하면 master process 와 worker process, cache manager process 3개의 프로세스를 기동한다.저기서 master process 이외를 기동하는 유저를 지정하는 부분이다.master process는 root 유저로 기동하게 된다. worker_process nginx는 싱글스레드이기때문에, core 수에 맞춰서 설정 auto – 자동 설정 worker_cpu_affinity CPU 할당을 지정할 경우 worker_rlimit_nofile 프로세스당 파일 디스크립터의 제한 worker_connections 의 3~4배가 적정 수준 error_log pid linux 에서 시스템 파일디스크립터 를 알기위한 커멘드 events 블럭 worker_connections – 동시 처리 접속 수 multi_accept – 다중 접속 여부 use http 블럭 server_tokens server_tokens response header에 nginx 버전를 표시 여부 정의 보안을 위해 off 권장 include /etc/nginx/mime.types; MIME타입과 확장자의 연관성을 정의 default_type 위의 mime.type 에 확장자부터 MIME 타입을 지정할수 없을경우에, 이것으로 MINE타입이 적용된다.* 기본값은 text/plain 이다. log_format…

  • 알고리즘

    알고리즘 – 투 포인터 (Two Pointers)

    투 포인터 알고리즘 이란? 1차원 배열에서 두 개의 점 위치를 이용하여 문제를 해결하는 알고리즘 시간 복잡도 = O(N) 예제 – 소수의 연속합 (백준 1644번) 과정 – 소수의 연속합 (백준 1644번) 결과 값 : 2 참고 자료 백준 – 소수의 연속합

  • Docker Container

    Docker – Docker Compose 설정

    Docker Compose 란? 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구 Docker Compose 파일 – docker-compose.yml YAML 이란? YAML Ain’t Markup Language의 약자 일반적으로 구성 파일 및 데이터가 저장되거나 전송되는 응용 프로그램에서 사용됨 상대적으로 이해하기 쉽고 가독성이 좋도록 디자인된 포맷 Docker Compose 파일 설정 명령 의미 image 컨테이너에서 사용하는 이미지 version docker compose 버전 services 이곳에 실행하려는 컨테이너들을 정의 build build 파일 정보 context docker 이미지를 구성하기 위한 파일과 폴더들이 있는 위치 dockerfile Dockerfile명 지정 ports 호스트에 연결할 포트 맵핑 (형식 = 로컬 포트 : 컨테이너 포트) volumes 로컬 머신에 있는 파일들 맵핑 stdin_open 기본 입력(stdin)을 연결 environment 환경 변수 mem_limit 메모리 제한 설정 network_disabled 네트워크 비활성화 여부 entrypoint 컨테이너…