전체 글

크롤링을 위해 crontab을 써야할 일이 생겼는데, 재배포의 효율성을 높이고 서버의 설정을 코드로 관리하기 위해 관련된 내용을 공부해봤다. crontab이란? 소프트웨어 유틸리티 cron은 유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러이다. 소프트웨어 환경을 설정하고 관리하는 사람들은 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위해 cron을 사용한다. 출처 위키백과 : https://ko.wikipedia.org/wiki/Cron 이때 crontab은 cron table에 줄임말로 cron의 명세를 해놓은 파일이다. crontab 사용하기 crontab -e# crontab 편집 crontab -l# crontab 내용 보기 crontab -r# cronta..
크롤링을 할 일이 생겼는데, 파이썬 코드로 작성된 파일 여러개를 동시 실행하다보니 t*.micro에서는 원활하게 돌아가지 않고, 버벅거림이 있었다. 최소 small, medium에서 돌려야 깔끔하게 돌아가는걸 확인했다. 이제 금액이 고민이었다. medium 온디멘드로 띄워 놓으면 좋겠지만 한달에 나가는 비용이 만만치 않을 것이다. 그렇다고 크롤링 할 때마다 켰다 끄자니 너무 귀찮은일... 그래서 spot instance를 생성해서 가격적인 측면을 타협하고, 생성/삭제 과정을 terraform으로 관리하고자한다. 기본적인 설치/세팅은 shell script로 관리하고, crontab을 이용해 자동화 시킨다. Terraform 설정 1. aws provider 설정 - IAM 계정 정보는 aws cli로 로..
그동안 프로젝트를 배포하면서 elastic beanstalk(엘라스틱빈스톡)를 애용해왔는데, 이번에 terraform으로 인프라 생성 과정을 코드화하려고 한다. 공부하다보니 내가 elastic beanstalk을 완벽하게 이해하지 못한 부분이나 놓치고 있는 setting variable들이 있어서 이번 기회에 정리하면서 공부해보고자 한다. Elastic Beanstalk이란? AWS에서는 아래와 같이 설명하고 있다. 'AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go 및 Docker를 사용하여 개발된 웹 애플리케이션 및 서비스를 Apache, Nginx, Passenger 및 IIS와 같은 친숙한 서버에서 손쉽게 배포하고 확장할 수 있는..
지금 하고 있는 프로젝트를 express에서 Nest.js로 리팩토링하면서 있었던 일을 정리해보겠습니다. 공식문서를 기반으로 DTO를 재설계하면서 공부한 내용을 정리해봤습니다. (Nest.js는 9.2.0버전입니다) Mapped types란? CRUD와 같은 기능을 만들 때 기본 Entity Type에 변형해서 생성하는 것이 유용한 경우가 많습니다. Nest는 이 작업을 보다 편리하게 하기 위해 타입 변환을 수행하는 여러 유틸리티 기능(이하 4개의 함수)을 제공합니다. - PartialType, PickType, OmitType, IntersectionType PartialType input validation types(이하 DTOs라 칭함)을 만들 때, 우리는 종종 create와 update vari..
테라폼이란? 테라폼(Terraform)은 HashiCorp가 개발한 오픈-소스코드형 IaC이다. HCL(.tf)이라는 선언형 구성 언어나 JSON을 사용하여 infrastructure를 정의하고 제공할 수 있습니다. - https://en.wikipedia.org/wiki/Terraform_(software) Setting 1. AWS IAM 계정 생성, 이때 엑세스키 발급을 같이 해주도록 합니다. 권한은 테스트를 위해서 poweruser 권한을 부여했습니다. 2. 테라폼 설치 (macOS 기준) & AWS CLI 설치 brew install terraform brew install awscli 3. terraform -v로 설치 확인해줍니다. 4. (선택) VSCode terraform Extensio..
· 보안
Snort를 공부하다가 설치부터 오류가 나고... 설치 방법도 옛날버전에 맞춰져있어서, 공부한 것들을 정리하면서 포스팅해봅니다. Snort(스노트)란? Snort는 오픈 소스 NIPS(네트워크 침입 차단 시스템)이자, NIDS(네트워크 침입 탐지 시스템)이다. NIDS는 실시간 트래픽 분석과 IP에서의 패킷 로깅을 수행하는 기능이 있다. 이외에도 프로토콜 분석, 내용 검색, 매칭을 할 수 있다. 크게 3가지 주요 모드가 있는데 스니퍼, 패킷 로거, 네트워크 침입 탐지 모드(NIDS)가 있다. 스니퍼 모드는 네트워크 패킷을 읽고 콘솔에 보여준다. 패킷 로거 모드는 패킷을 디스크에 기록한다. 침입 탐지 모드는 네트워크 트래픽을 모니터하고 사용자에 의해 정의된 규칙에 반하는지 여부를 분석한다. - 출처 : h..
· 알고리즘
백준 16202번 MST 게임 문제 파이썬 풀이입니다. https://www.acmicpc.net/problem/16202 16202번: MST 게임 첫 턴에 찾을 수 있는 MST는 총 5개의 간선 {(1, 3), (1, 2), (2, 4), (4, 6), (4, 5)}로 이루어져 있고, 비용은 16이다. 두 번째 턴에는 첫 턴에서 구한 MST에서 간선의 비용이 최소인 (2, 4)를 제거한 후 남아있 www.acmicpc.net 문제 이름에서 대놓고 알고리즘을 알려주고 있기 때문에 MST를 푸는 방법인 Kruskal 알고리즘으로 풀 수 있었습니다. Edge의 최대가 10000개여서 O(ElogE)인 알고리즘으로 K번 돌아도 충분한 문제였습니다. 주요코드 line 10 ~ 22 : 유니온파인드 함수 lin..
· 알고리즘
백준 14217번 그래프 탐색 1 문제 파이썬 풀이입니다. https://www.acmicpc.net/problem/14217 14217번: 그래프 탐색 남규나라의 왕 zych는 도로 정비 계획을 발표하였다. 두 도시를 잇는 도로들을 새로 만들거나, 안전상의 문제로 도로를 없애기도 할 계획이다. 도로 정비 계획은 두 도시와, 만들건지, 없앨건지에 www.acmicpc.net 비슷한 버전의 '그래프 탐색 2'를 풀었다면 아주쉽게 풀 수 있는 문제였습니다. 도로가 사라졌을 때는 원래 최단 거리였던 길이 없어진 경우도 있기 때문에 매번 distance 배열을 초기화 시켜야 한다는 사실만 주의하면 이전 버전 문제와 거의 유사했습니다. 주요코드 line 18 ~ 33 : 1부터 시작해서 각 node까지 BFS를 ..
· 알고리즘
백준 14218번 그래프 탐색 2 문제 파이썬 풀이입니다. https://www.acmicpc.net/problem/14218 14218번: 그래프 탐색 2 첫째 줄에는 도시의 개수 n,도로의 개수 m이 주어진다. 다음 m개의 줄에는 두 도시가 주어진다.(2≤n≤1,000,1≤m≤100,000) 다음 줄에는 도로 정비 계획에 들어가 있는 도로의 수 q가 주어지고, 다음 q www.acmicpc.net 실버1 치고는 널널한? 문제였습니다. N이 1000이라 최적화없이 대충짜도 어째저째 돌아가는 문제였습니다. INF로 초기화 시킨 distance 배열을 만들어 두고, 테스트가 들어올 때마다 node 1에서 시작해서 BFS를 돌며 최소거리로 갱신시켜 나가는 방식으로 해결할 수 있었습니다. 주요코드 line 1..
· 알고리즘
백준 5546번 파스타 문제 파이썬 풀이입니다. https://www.acmicpc.net/problem/5546 5546번: 파스타 상근이는 매일 저녁으로 파스타를 만들어 먹는다. 상근이가 만들 수 있는 파스타는 총 세 종류로 토마토 소스, 크림 소스, 바질 소스이다. 상근이는 앞으로 N일 동안 먹을 파스타를 계획하려고 www.acmicpc.net 너무나도 DP스러운 문제기 때문에 점화식을 찾아서 구현해주면 되는 문제입니다. dp 테이블는 dp[N번째 날짜에][직전에안먹은거,직전에먹은거][파스타종류] 가 되고 fix 배열에 고정된 파스타에 대한 정보를 저장합니다. 주요코드설명 더보기 line 13~20 : 1일차에 먹는 경우를 세팅해줍니다. line 22~38 : 2일차부터 N일차까지 토마토 소스, 크..
파이랜스
PyPyStory