반응형

슬기로운 개발자생활 55

Frontend, Backend 서버 AWS EC2로 배포하기 (+https 설정까지) nodejs, django

서비스 개발을 하면 필연적으로 배포작업을 거치게 된다. 주로 우리가 접속하는 웹페이지를 위한 Frontend (네이티브 앱을 개발했다면 앱 빌드), 데이터를 처리하고 비즈니스 로직을 수행하는 Backend, 그리고 필요에 따라 다양한 목적의 서버를 여러개 설치하는 경우도 있을것이다. 본 글에선 Frontend와 Backend를 하나의 서버에서 배포하는 방법을 다룬다. # 예제 프레임워크 : Node.js 기반 프론트엔드 프레임워크, Django 배포 사용자가 URL을 통해 내 서버에 접속하여 웹 서비스를 이용할 수 있도록 하는 것 순서 1. 환경 설정 2. Frontend 배포 3. Backend 배포 4. DNS (도메인 연결) 5. Https 설정 6. proxy_pass 설정 1. 환경 설정 EC2..

Python Selenium (Chrome) wrapper 사용가이드

자동화 프로그램 제작 시 대부분은 requests로 API를 직접 요청하는것을 선호하지만, 그것이 불가한 경우에는 selenium을 활용한다. Selenium 셀레니움은 웹 애플리케이션 자동화 및 테스트를 위한 포터블 프레임워크이다. 자바, C#, 펄 루비 등 다양한 언어들로 제공되며, 윈도우, 리눅스, macOS 플랫폼에서 사용가능하다. 순서 1. Selenium 클래스화 코드 2. 유용한 Selenium 클래스, 함수 3. Javascript 4. 자주발생하는 에러와 해결방법 1. Selenium 클래스화 코드 web_setting.py (모듈명은 임의 부여) # -----------------------------------------------------------------------------..

AWS EC2 python 주기적으로 실행 Cron 잡 스케줄러

본인의 경우 EC2 서버에서 주기적으로 파이썬 스크립트를 실행할 경우, 스크립트 내에서 실행 주기를 관리하기보다 cron을 활용해서 main.py를 주기적으로 실행한다. Cron 유닉스 계열 컴퓨터 운영체제의 시간 기반 잡 스케줄러 순서 1. cron 초기 설정 2. 시간 설정 3. cron 명령어 4. cron 로그 5. cron 사용 시 주의사항과 에러 1. Cron 초기 설정 터미널에서 다음 명령어 실행 crontab -e vim editor는 vim.tiny로 설정, 그 외에 에디터는 리눅스 운영체제를 자주 사용하지 않는 나에겐 사용하기 너무 불편함.. 에디터를 잘못 설정했다면, 기존 터미널은 휴지통 버튼으로 종료해주고, (닫기 아님) 터미널에서 select-editor를 입력하여 vim-edit..

Velog를 시작했던 이야기 - 2022/09/30

내가 맡았던 강의에서 한 교육생분이 벨로그를 시작했다. 원래도 블로그를 작성하던 분이셨는데, 이번에 개발을 시작하면서 velog 플랫폼에서 개발과 관련된 글만 작성하는 것으로 보였다. 자연스럽게 나는, "나도 개발과 관련된 것만 정리하는 벨로그를 시작해볼까?"라는 생각을 하게 되었다. 원래는 티스토리를 활용해서 글을 작성했었는데, 메인 주제는 게임이었다. 아무래도 게임 정보를 공유하는게 글을 작성할 때 재미도 있었고 무엇보다 조회수가 더 잘나왔다. 하지만, 재밌게 하던 게임을 그만두니 티스토리에 글 쓰는게 일처럼 느껴져 결국 티스토리 작성하는게 점점 뜸해졌고 결국 관리도 그만두게 되었다. 딥러닝 관련 내용도 티스토리에 올렸었는데 플랫폼과 주제가 맞지 않았다. 서론이 길었지만, 결론적으로 나는 개발과 관련..

[이진 탐색] 가사 검색

1. 문제 가사 배열이 주어지고, query가 와일드카드 "?" 와 주어졌을 때, query와 일치하는 단어 수를 반환 2. 입력 # SET - 1 words = ["frodo", "front", "frost", "frozen", "frame", "kakao"] queries = ["fro??", "????o", "fr???", "fro???", "pro?"] 3. 출력 # SET - 1 result = [3, 2, 4, 1, 0] 4. 풀이 여차하면 for문 여러번써서 풀수있지만, 그러면 효율성 테스트에서 시간초과가 난다. 최악의 경우 10000 * 10000 을 해야되기 때문 따라서 이는 bisect를 활용해 풀면되는데, 1. word를 앞으로, 뒤집어서 배열 2개를 만들고 정렬 (순서대로 나오게) ..

[이진 탐색] 공유기 설치 (BAEKJOON - 2110)

1. 문제 N개 집의 위치가 배열로 주어졌을 때, 공유기를 C개만큼 설치할 경우, 공유기 사이의 거리가 최대를 출력 2. 입력 # SET - 1 5 3 1 2 8 4 9 3. 출력 # SET - 1 3 4. 풀이 떡볶이 떡을 자르는 문제처럼 공유기 사이의 거리를 이진탐색으로 찾아서 푸는 문제 공유기 사이의 거리가 최소거리 1부터 배열의 N-1번째에서 0번째를 뺀 값이 최대거리일 때, 그 값의 가운데를 최소거리로 잡고 1번째부터 하나씩 공유기를 설치해나감 (0번째는 이미 설치했다고 가정) 설치한 공유기의 수가 C를 만족시키면 GAP을 늘리고 (binary search 오른쪽부분) 공유기의 개수가 딸리면 GAP을 줄임 (binary search 왼쪽 부분) 5. 코드 import sys wr = sys.st..

[이진 탐색] 고정점 찾기

1. 문제 array가 정렬되어 주어질 때, index와 array[index]의 값이 같으면 출력, 하나도 없다면 -1을 출력 2. 입력 # SET - 1 N = 5 arr = [-15, -6, 1, 3, 7] SET - 2 N = 7 arr = [-15, -4, 2, 8, 9, 13, 15] SET - 3 N = 7 arr = [-15, -4, 3, 8, 9, 13, 15] 3. 출력 # SET - 1 3 # SET - 2 2 # SET - 3 -1 4. 풀이 이진탐색 패키지를 쓰지않고, 이진탐색을 구현해야 하는 문제 for문으로 N만큼 하나씩 돌면서 값이랑 index랑 같은지 찾는방법도 있지만, 그것은 시간 복잡도가 O(N)이므로 패스 O(logN)으로 풀려면 이진탐색을 사용해야한다. array를 ..

[정렬] 안테나 (BAEKJOON - 18310)

1. 문제 안테나를 집 위에 설치할 때, 어디에 설치해야 각 집까지의 거리가 최소가 되겠는가? N은 ~20만 (완전탐색 X) 2. 입력 # SET - 1 4 5 1 7 9 3. 출력 # SET - 1 5 4. 풀이 집을 정렬하고, 집의 수 N에서 1을 빼고 (가운데 왼쪽을 표현하기 위해) 2로 나눈 뒤 해당 index를 출력하면 끝 짝수일 경우 1 2 5 9 -> 1번째 (2)가 최소 1+0+3+7 = 11 / (5) 4+3+0+4 = 11 홀수일 경우 1 2 3 4 7 -> 2번째 (3)이 최소 2+1+0+1+3 = 7 / (4)==(2) 5. 코드 N = int(input()) houses = list(map(int, input().split())) def sol(N, houses): print(so..

[DFS/BFS] 블록 이동하기

1. 문제 오른쪽 하단 끝으로 이동하기 2. 입력 # SET - 1 board = [[0,0,0,1,1],[0,0,0,1,0],[0,1,0,1,1],[1,1,0,0,1],[0,0,0,0,0]] 3. 출력 # SET - 1 result = 7 4. 풀이 DFS로 풀려고했는데 visited 처리를 제대로 못했다. visited처리를 하면서 혼돈에 빠져서 결국 해결못하고 GG DFS로 하면 모든 경로를 다 탐색하므로 오래걸리고 안될 수 밖에;; 판단을 잘못했다. BFS로 풀면, 그 전에 방문한곳은 cost가 무조건 낮은걸로 채워져있을테니 결국 N, N에 도착하는 cost는 최저 코스트가 될 것이다. 그러므로, 다음 이동할 position을 미리 계산해서 리스트에 담은 뒤, 그것을 큐에 cost와 함께 넣어주면..

[DFS/BFS] 인구 인동 (BAEKJOON - 16234)

1. 문제 땅의 크기 N 각 영역별로 나라가 존재하고 최소 인구 이동, 최대 인구 이동 범위가 L, R 사이 일 때 인구 이동이 몇번 일어나는가? 2. 입력 # SET - 1 2 20 50 50 30 20 40 # SET - 2 2 40 50 50 30 20 40 # SET - 3 2 20 50 50 30 30 40 # SET - 4 3 5 10 10 15 20 20 30 25 40 22 10 # SET - 5 4 10 50 10 100 20 90 80 100 60 70 70 20 30 40 50 20 100 10 3. 출력 # SET - 1 1 # SET - 2 0 # SET - 3 1 # SET - 4 2 # SET - 5 3 4. 풀이 bfs로 확산하는것만 이해하고 같은 그룹으로 묶는거를 까먹었다보..

반응형