개발노트
-
[Spring] @Scheduled 사용개발노트 2021. 12. 6. 17:12
특정 기간, 원하는 주기에 따라 작업을 실행하기 위해 @Scheduled 가 사용된다. @Scheduled 를 사용하기 위해서는 관련 클래스에 @EnableScheduling 을 추가해야한다. @Scheduled 가 부텨되는 메서드는 파라미터를 가질 수 없고 반드시 void 리턴 타입이어야 하며 아래 세가지 작업을 수행 할 수 있다. fixedDelay: 이전 작업이 끝난 후 동작 fixedRate: 이전 작업이 끝나는 것과 별개로 일정한 시간 간격으로 실행 cron: 크론 주기에 따라 실행 cron @EnableScheduling @Component public class Scheduler { @Scheduled(cron = "1 * * * * *") // 1분 주기 public void cronJob..
-
[Java] Stream 소개개발노트 2021. 12. 5. 16:48
Stream 특징 Java 8 부터 지원한다. 원본데이터 자체를 변경하지 않는다. 재사용이 불가능하다. 내부 반복을 사용으로 코드가 간결해지고 병렬처리가 쉽다. 람다 표현식을 이용해서 선언형으로 코드를 구현할 수 있다. 스트림 자신을 반환해 스트림 연산 끼리 연결, 파이프 라인을 구성한다. (데이터 소스에 적용하는 데이터베이스 질의와 비슷하다.) 이전 코드와 비교 테스트를 위한 Dish 클래스 더보기 public class Dish { private final String name; private final boolean vegetarian; private final int calories; private final Type type; public Dish(String name, boolean veget..
-
docker + Nginx Reverse-proxy + Wildcard SSL개발노트 2021. 6. 20. 00:02
Wildcard SSL이란? 도메인 뿐만이 아니라 서브 도메인 모두 인증지원하는 인증서 예를 들어 도메인이 devgno.me 일 때 이 인증서를 발급, 적용하면 site1.devgno.me, site2.devgno.me .... 모든 서브 도메인도 ssl인증이 적용된다. 도메인 준비 ssl인증서 발급을 위해 도메인을 구한다. 이 글에서는 무료 도메인인 freenom을 사용 인증서 발급 certbot 설치 sudo apt install certbot Wildcard ssl 발급 sudo certbot certonly --manual --preferred-challenges=dns --email \ jinho021712@gmail.com --server https://acme-v02.api.letsencry..
-
ERROR: Encountered errors while bringing up the project개발노트 2021. 6. 16. 14:58
docker-compose up 하던 중 에러가 발생 Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use ERROR: Encountered errors while bringing up the project 이유는 모르겠지만 443포트가 이미 실행중이라고 한다.. 모든 도커 컨테이너를 멈추고 제거 $ docker stop $(docker ps -a -q); docker rm $(docker ps -a -q); \ docker volume rm $(docker volume ls -qf dangling=true) 네트워크 제거 $ docker network rm $(docker network ls -q) 아래와 ..
-
ssh-keygen 공개키 인증개발노트 2021. 6. 9. 13:01
ssh-keygen 공개키 인증을 사용하면 ssh로 서버에 원격 접속할 때 비밀번호 입력 없이 접속 할 수 있다. 편할 뿐 아니라 보안 취약점을 해소 할 수 있다. ssh key 생성하기 window, mac 모두 사용 가능하며 $ ssh-keygen 명령어로 키를 생성할 수 있다. window는 기본 터미널이 아닌 git bash에서 가능 설치를 시작하면 아래와 같이 입력하라고 출력된다. 괄호 사이 값이 디폴트 값이다. Enter file in which to save the key (/home/{USER_ID}/.ssh/id_rsa):[Enter] Enter passphrase (empty for no passphrase): [패스워드입력] Enter same passphrase again: [패스워..
-
WSGI란 무엇인가?개발노트 2021. 6. 1. 14:43
WSGI란 무엇일까? WSGI에 대해 알아보자 WSGI(Web Server Gateway Interface) WSGI는 프레임워크의 웹 서버로 파이썬 스크립트가 웹 서버와 통신하도록 도와주며 웹 서버와 웹 애플리케이션 사이에 위치한다. 때문에 WSGI는 웹 서버와 웹 앱 두 가지의 특징을 가지고 있다. 웹 서버와 웹 앱 웹 서버는 Html, image등 정적인 파일, 소스들을 처리하며 Apache, Nginx를 예로 들 수 있다. 웹 앱은 Django, Flask와 같은 파이썬 프레임 워크라 할 수 있고 동적인 요청을 처리하고 웹 서버에게 처리한 결과를 돌려준다. WSGI는 서버와 앱 사이에서 Callable Object를 통해 웹 서버가 요청에 대한 정보를 웹 앱에 전달한다. CGI대신 WSGI CGI..
-
BAEKJOON #13305 주유소개발노트 2021. 5. 10. 14:14
이 문제의 저작권은 BAEKJOON에 있습니다. https://www.acmicpc.net/problem/13305 풀이 주석참고 # 주유소 # https://www.acmicpc.net/problem/13305 n = int(input()) # 이동에 소요되는 기름 oil = list(map(int, input().split(" "))) # 주유소 기름가격 pay = list(map(int, input().split(" "))) # 다음 주유소까지 필요한 기름을 넣어야하므로 초기값 넣어줌 # 필요한 돈 need_money = oil[0] * pay[0] # 기름 최저가 저장 cheap = pay[0] # 다음 경로까지 필요한 기름 dist = 0 for i in range(1, n-1): # 이전 주유..
-
SQLAlchemy models.py 자동생성개발노트 2021. 5. 6. 18:38
기존에 만들어져있던 DB의 테이블들을 models.py에 맵핑한다. 클래스명은 테이블명을 대문자로 바꿔서 만들어준다. from sqlalchemy.engine import create_engine from sqlalchemy.schema import MetaData from sqlacodegen.codegen import CodeGenerator url = "mysql+pymysql://{사용할아이디}:{비밀번호}@{000.000.000.000}:{포트번호}/{db이름}" engine = create_engine(url) metadata = MetaData(engine) metadata.reflect(engine) with open('models.py', 'w', encoding='utf-8') as o..