전체 글 137

AWS EC2 서버에 프로젝트를 배포해보자.

EC2서버에 git에서 clone해온 프로젝트 파일이 잘 되어있음을 확인한 후 시작한다. gradlew 파일은 그레이들이 설치되지 않는 환경이라도 그레이들을 쓸 수 있도록 지원해 주는 Wrapper 파일이다. 1. 배포 스크립트 만들기 작성한 코드를 실제 서버에 반영하는 것을 배포라고 한다. 배포과정을 하나하나 하는건 불편하다. 그러므로 쉘 스크립트로 작성해 실행하면 자동으로 진행되게끔 구성해 보겠다. vim ~/deploy.sh #! /bin/bash REPOSITORY=/home/ec2-user/app/step1 // 쉘에서는 $ 변수명으로 변수를 사용할 수 있다. 변수로 지정한것임. PROJECT_NAME= fr-springboot cd $REPOSITORY/$PROJECT_NAME/ // 프로젝트..

Windows에서 putty를 이용하여 aws ec2와 rds 서버에 접속해보자.

1. putty 설치 -> 말안해도 알테니 다들 설치했음을 믿는다. 2. .pem key -> .ppk로 변경 AWS에는 putty로 열시 ppk 파일이 필요하다. putty를 깔면 putty gen이 자동으로 깔리는데, 이 프로그램을 이용해서 pem 파일을 ppk 파일로 변환해주면 된다!. 저 빨간 Save private key를 눌러서 ppk로 바꿔준다. putty 설정 -> SSH -> Auth -> Private key file for authentication에 ppk 파일을 넣어주면 된다. 3. putty로 접속 Host Name에 ec2-user@탄력적 IP 주소 하고 접속한다면 접속이 될 것이다! 4. rds 접속 되는지 확인해보기 인텔리제이에서 Database -> MariaDB HOST..

AWS RDS 데이터베이스 환경을 만들어보자.

데이터베이스 구축 및 쿼리 튜닝에 대해서 잘 알아야 한다. 서버 코드를 작성하는 것만큼 데이터베이스를 잘 다룰 줄 아는 것도 중요하다. AWS에서 지원하는 RDS(Relational Database Service) 를 통해 DB를 구축하고 EC2 서버와 연동해보자. 1. RDS 인스턴스 생성하기 이와 같이 rds 선택하고, 데이터베이스 생성 눌러준다. 상세설정에선 위와 같이 설정해준다. 네트워크 및 보안 설정을 해준다. 데이터베이스 옵션에서 이름 및 그룹을 설정해준 이후, 데이터베이스를 생성해주자! 2. RDS 설정하기 타임존 Character Set Max Connection 을 설정해주자. 1. time_zone 설정 2. character_set 설정 3. max_connections 수정 프리티어..

AWS EC2 회원가입 및 설정을 따라해보자.

클라우드 서비스 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수이다. 클라우드 서비스는 인터넷(클라우드)를 통해 서버, 파일저장, DB, 네트워크, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다. AWS의 EC2는 로그관리, 모니터링, 하드웨어 교체, 네트워크 관리 등도 기본적으로 지원해준다. 클라우드의 형태 IaaS ( Infrastructure as a Service) 기존 물리 장비를 미들웨워와 함께 묶어둔 것 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해주는 서비스 AWS EC2, S3, GCP, NCP 등 (우리는 인프라를 관리한다) PaaS ( Platform as a Service ) IaaS에서 한 번 더 추상화한 서비스 ( 개발, 테스트, 배포..

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 5장 스프링 시큐리티

스프링 시큐리티란? 인증(Authentication)과 인가(Authorization) 기능을 가진 프레임워크이다. 보안을 위한 표준이며, 인터셉터, 필터 보단 스프링 시큐리티를 통해 구현하는 것을 권장하고 있다. config.auth 패키지 시큐리티 관련 클래스는 이곳에 있다. 어노테이션 기반으로 개선하기 같은 코드가 반복되는 나쁜 코드를 개선해보자. 유지보수성이 떨어지는 것을 어노테이션으로 작성해서 바꿔보기! (직접 어노테이션을 만들 수 있다.) 세션 저장소로 DB 사용하기 세션이 내장 WAS의 메모리에 저장되므로, 애플리케이션을 재실행 하면 로그인이 풀린다. (항상 초기화된다.) 이는 배포될 때마다 톰캣이 재시작 되는 것이며, 2대 이상의 WAS가 구동되는 환경에선 세션 공유를 위한 추가 설정이 필..

알고리즘 - 재귀란?

❗ 학습 키워드 코드 1 def look_for_key(main_box): pile = main_box.make_a_pile_to_look_through() while pile is not empty: box = pile.grab_a_box() for item in box: if item.is_a_box(): pile.append(item) elif item.is_a_key(): print("열쇠를 찾았어요!") 코드 2 def look_for_key(box): for item in box: if item.is_a_box(): look_for_key(item) elif item.is_a_key(): print("열쇠를 찾았어요!") 이 코드들은 같은 일을 하는 함수를 구현한 것이다. 함수 1은 반복문으로..

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 TIL - 4장 머스테치

✍학습 키워드 서버 템플릿 엔진이란? 지정된 템플릿 양식과 데이터가 합쳐져 HTML 문서를 출력하는 소프트웨어를 이야기한다. JSP, Freemaker등이 있다. 서버 템플릿 엔진을 이용한 화면 생성은 서버에서 Java 코드로 문자열을 만든 뒤 HTML로 변환하여 HTML로 전달한다. 자바 진영에는 JSP, Thymeleaf 등의 스프링 진영에서 사용할 수 있는 서버 템플릿 엔진들이 있다. 📝새로 배운 개념 템플릿 엔진(머스테치)의 기본 위치 src/main/resources/templates 이다 @Transactional(readOnly = true) 트랜잭션 범위는 유지하되, 조회 기능만 하도록 설정하여 조회 속도가 개선된다.

[백준] 4949: 균형잡힌 세상 (Pyhton)

4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 1. 문제 접근 방식 보통 이런 문제는 스택을 이용한 풀이가 정석이다. 2. 문제 풀이 - 스택 사용 blank = ['(', '['] def check_len(stack): if len(stack) > 0: return True return False while True: S = input().rstrip() if S == '.': break else: stack = list() for i in S: if i == ')': if check..

[백준] 1966: 프린터 큐 (Pyhton)

1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 1. 문제 접근 방식 큐를 이용하고, 문제의 조건에 충실하여 시뮬레이션 했다. 그러다보니 조금 코드가 길어진 감도 있긴한데, 직관적이어서 보기는 좋은거같다. 2. 풀이 코드 from collections import deque def solution(N, M, im): queue = deque() answer = 0 find = '' count = 1 for i in range(0, N): if i == M: find = chr(ord('A') + i) D = {c..

[백준] 11866: 요세푸스 문제 0 (Python)

11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 문제보고 이게 먼소린가 싶다냐.. 해서 그려보았다. 문제 분석할때 종이에 슥슥 써보는건 좋은습관인거 같다. 이렇게 그려보니까 무슨 문제인지 바로 파악이 되었다.( 악필 죄송 합니다 ) 그리고 이 문제를 해결하기 위해선 큐를 사용하는게 효율적이라는 것도 깨닫게 되었다. 큐를 사용해서 K와 다른 숫자는 다시 뒤로 append하고, 그 수만 pop한다음에 리스트에 추가하면 수열이 완성되는 방식이었다. FIFO인 큐 자료구조를 문제에 해결방식으로 떠올려서 그걸 이용해 문제를 해결하는게 핵심이었던거 같다. from collections import dequ..