We will find a way, we always have.

-interstellar

전체 글 303

[프로젝트] 개요. 시작 계기

우선!! 어떤 프로젝트를 진행중인가하면.. 게시판에 새 게시물이 올라올 때 트윗을 작성하는 알림 봇을 만드는 것이다. 어떤 게시판인가하면 바로 제이와이피가 운영하는 Fans 라는 사이트의 게시판이다. 게시판이 좀 구리다 디자인도 좀 구리고 그냥 딱 게시판 기능에만 충실한 약간 개발 처음 배우는 분들이 만들어볼법한 느낌의 게시판이다. 이 사이트의 게시판에는 공방신청이 올라오기도 하고 공식 팬들만을 위한 사진이 올라오기도 한다. 디자인도 별로고 나갈때마다 자동 로그아웃되고 튼 문제가 많은 사이트지만 가장 큰 문제점은 알림이 안온다는 것이다!!! 공방 신청을 받기 시작하고 알림을 안주면 어쩌자는거냐거...ㅜ 나 말고도 알림이 안와서 불편해하는 팬들이 다수였다. (아마 원스, 스키즈, 믿지, 엔써 합치면 불편해..

Ploject 2022.08.15

[도커] 이미지 & 컨테이너 삭제

docker ps -a 하면 많은 컨테이너가 뜰 것이다. 이제 이것들이 나타자니 않게 깔끔히 지워보자. docker images 를 통해 설치된 이미지를 확인하고 docker rmi [IMAGE ID] 를 통해 삭제한다. 실행되고 있는 이미지는 삭제할 수 없다. 만약 실행되고 있지 않은 이미지를 전부 지우고 싶다면 docker image prune 을 사용하면 된다. 공백으로 여러 아이디를 동시에 입력하여 지울 수 있다. 추가로 --rm을 사용하여 컨테이너가 중지되면 자동으로 제거할 수도 있다. 매우 유용하니 자주 사용하길 docker run -p 3000:80 -d --rm [IMAGE ID]

DevOps/도커 2022.08.12

[도커] 파이썬과 인터렉티브

도커와 파이썬을 연결해보는 실습을 하였다. 그동안 노드로만 하다가 파이썬을 보니 매일 중국어 듣다가 한국어 들은 것처럼 매우 기뻤다...ㅎ from random import randint min_ = int(input('please enter min ')) max_ = int(input('please enter max ')) if (max_ < min_): print('Invalind input - shuttind down') else: rnd_num = randint(min_, max_) print(rnd_num) 이제 파이썬을 도커화해보자. FROM python WORKDIR /app COPY . /app CMD ["python", "rng.py"] 도커 터미널에서 이미지 빌드하고 컨테이너를 실행시킨..

DevOps/도커 2022.08.12

[도커] Attached 모드 & Detached 모드

docker --help - 사용가능한 명령어들을 설명해줌 docker ps - 현재 실행중인 컨테이너 리스트를 확인할 수 있음 docker ps -a - 더 이상 실행되지 않는 중지된 컨테이너 포함하여 보여줌 docker start [컨테이너 name] - 중지된 즉 더이상 실행되지 않은 컨테이너 다시 실행시킴. 변경사항이 없어 다시 이미지부터 빌드할 필요가 없을 때 ps -a을 사용해 이름 찾아 사용 run과 다르게 터미널에서 우리를 차단하지는 않음 start로 시작하는 경우 Detached 모드 디폴트 (터미널 차단 X) run으로 시작하는 경우 Attached 모드 디폴트 (터미널 차단 O) 터미널이 차단됐다는 이야기는 지들이 할말이 있다는 얘기 name 앞에 -d 를 붙여 Detached 모드로..

DevOps/도커 2022.08.12

[도커] 이미지와 컨테이너

이미지는 읽기/쓰기 엑세스 권한이 있는 인스턴스를 실행하는 컨테이너의 "블루프린트"이다. 이미지를 통해 컨테이너가 서로 독립적으로 존재함과 동시에 동일한 이미지를 기반으로 할 수 있다. 컨테이너는 이미지를 기반으로 하는 격리된 소프트웨어 유닛이다. 이미지의 실행중인 인스턴스이다. 도커 실습 코드 # 자체 명령어 자체 이미지를 빌드할 때 실행할 명령어 # 이미지 설정을 위한 도커의 명령 # 이미지를 기반으로 컨테이너 실행 FROM node # 모든 수행을 app 파일 안에서 진행하라는 의미 WORKDIR /app # 첫번째 . 모든 파일 의미, 두번째 .는 그 파일을 저장해야하는 이미지 내부의 경로 # Host file system image/ container file system # app에 저장됨 만..

DevOps/도커 2022.08.12

[도커] 도커 첫 발걸음

도커 설치를 위해 WSL 2와 우분투를 추가적으로 설치했다. 운영체제 마다 또 윈도우 버전 마다 설치 방법이 달랐는데,, 도커의 장점 중 하나가 환경과 버전차이로 인한 문제해결이라고 알고있는데 이미 도커 설치부터 번거로웠다..ㅎ 도커 실습 코드 # app.mjs import express from 'express'; import connectToDatabase from './helpers.mjs' const app = express(); app.get('/', (req, res) => { res.send('Hi there!'); }); await connectToDatabase(); app.listen(3000); 아래와 같은 명령어를 도커 터미널에서 실행할 수 있다. 반드시 도커파일이 있는 경로인 터미..

DevOps/도커 2022.08.12

[백준] 1865번: 웜홀 - 파이썬

🔈 문제 때는 2020년, 백준이는 월드나라의 한 국민이다. 월드나라에는 N개의 지점이 있고 N개의 지점 사이에는 M개의 도로와 W개의 웜홀이 있다. (단 도로는 방향이 없으며 웜홀은 방향이 있다.) 웜홀은 시작 위치에서 도착 위치로 가는 하나의 경로인데, 특이하게도 도착을 하게 되면 시작을 하였을 때보다 시간이 뒤로 가게 된다. 웜홀 내에서는 시계가 거꾸로 간다고 생각하여도 좋다. 시간 여행을 매우 좋아하는 백준이는 한 가지 궁금증에 빠졌다. 한 지점에서 출발을 하여서 시간여행을 하기 시작하여 다시 출발을 하였던 위치로 돌아왔을 때, 출발을 하였을 때보다 시간이 되돌아가 있는 경우가 있는지 없는지 궁금해졌다. 여러분은 백준이를 도와 이런 일이 가능한지 불가능한지 구하는 프로그램을 작성하여라. 📝입력 첫..

[알고리즘] 데이크스트라 최단 경로 알고리즘

데이크스트라 알고리즘 (Dijkstra Algorithm) 최단 경로 알고리즘은 주어진 그래프에서 가장 빨리 도달할 수 있는 길을 찾는 알고리즘이다. 노드를 연결하는 간선에 비용 있어 간선의 갯수가 같다고 하여도 실제 이동시간은 다를 수 있기에 그런 것들을 잘 체크해주어야 한다. 데이크스트라 알고리즘은 음의 간선이 없을 때 정상적으로 작동한다. 음의 간선이란 0보다 작은 값을 가지는 간선을 의미하는데, 현실 세계에서 음의 간선이란 존재할 수 없다. 때문에 GPS 소프트웨어의 기본 알고리즘으로 채택되기도 한다. 데이크스트라 알고리즘의 동작 원리는 인접한 노드중에 가장 비용이 적은 노드를 선택하여 움직이기에 그리디 알고리즘으로 분류된다. 출발 노드를 설정한다. 최단 거리 테이블을 초기화 한다. 방문하지 않은..

[백준] 9019번: DSLR - 파이썬

🔈 문제 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 저장된 n을 다음과 같이 변환한다. n의 네 자릿수를 d1, d2, d3, d4라고 하자 (즉 n = ((d1 × 10 + d2) × 10 + d3) × 10 + d4라고 하자) 1. D: D 는 n을 두 배로 바꾼다. 결과 값이 9999 보다 큰 경우에는 10000 으로 나눈 나머지를 취한다. 그 결과 값(2n mod 10000)을 레지스터에 저장한다. 2. S: S 는 n에서 1 을 뺀 결과 n-1을 레지스터에 저장한다. n이 0 이라면 9999 가 대신 레지스터에 저장된다. 3. L:..

[백준] 1753번: 최단경로 - 파이썬

🔈 문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다. 📝입력 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다. ..