목록전체 글 (154)
늘
프로젝트를 하다보면 배포 자동화는 필수가 되었다. 그래서 연습좀 해보려고 한다! 여러 블로그 보고 공부하면서 느끼지만 글로 주절 주절 보다는 그림이 이해하기도 쉽고 직관적이어서 최대한 글을 안쓸계획이다! 다음을 눌러준다. 태그는 건너뛰고 다음처럼 만들어 준다. 옆에 정책을 들어가서 정책을 만듭니다. 인라인 정책 추가하면 안됩니다..(제 삽질한 시간을 생각해서라도..) 다음과 같이 정책을 입력해줍니다. 설명은 입력 안해도 되는데 하려면 영어로만 가능합니다. 본인이 원하는 정책으로 커스텀해서 역할을 만들고 싶을 때 아래와 같이 S3에 접근할 수 있도록 정책을 하나 만들 수 있습니다. 정책이 잘 들어갔는지 확인되면 역할 만들기를 눌러줍니다. 만들어진 해당 역할은 Auto-Scaling과 CodeDeploy로 ..
Jenkins와 Docker를 사용하여 배포 자동화 연습을 해보려고 한다. 예전에 젠킨스 실습해본다고 했었는데 워낙 바쁘다보니(바쁜척) 이제 시작한ㄷ..ㅏ..ㅎ^^ 우선 코드 간략히만 적고 시작하겠다. scripts/deploy.sh (이전에 ec2에 app디렉토리 만들어야 할 것이다.) #!/bin/bash BUILD_JAR=$(ls /home/ec2-user/app/*.jar) # jar가 위치하는 곳 JAR_NAME=$(basename $BUILD_JAR) echo "> build 파일명: $JAR_NAME" echo "> build 파일 복사" DEPLOY_PATH=/home/ec2-user/ cp $BUILD_JAR $DEPLOY_PATH echo "> 현재 실행중인 애플리케이션 pid 확인" ..
개발을 하다 보면 에러나 오류가 무수히 많이 발생하고 매번 블로그들 뒤져보면서 찾기 불편해서 이곳에 정리해두려고 한다. 계속 수정해가면서 이 글에 기록할 생각이므로 에러나 오류가 발생하면 여기서 찾아보자! [포트 죽이기] (power shell) netstat -ano taskkill /f /pid [pid] [Parameter value [1] did not match expected type: ] spring data jpa를 통해 레포지토리 작성할 때, 잘못 작성할때 발생! 쿼리문 주의 [CICD](젠킨스랑 travis)(배포) [2021.08.12] CI CD 하다가 화병 날 뻔했는데 드디어 오류 찾아서 뿌듯함에 사진까지 ㅎㅎㅎ..;;; 이런 오류가 마구 나와서 gralew build 할 때, 문..
자주 햇갈려서 정리해두었다. 짧고 굵게 이해하기 쉽게 정리해봤다. 식별자 부모테이블(상품, 주문테이블) 기본키(PK)가 자식 테이블(주문_상품)의 외래키이자 기본키로 사용되는 관계이다. 자식 테이블의 행(정보)를 추가할 때 부모테이블의 참조 행(상품번호 또는 주문번호)이 없다면 자식테이블의 행을 추가 할 수 없다. : 주문_상품테이블은 상품번호와 주문번호 중 하나라도 없다면 기본키를 만들 수 없게 되고(두개의 외래키가 합쳐 기본키가 되므로) 기본키가 없어 정보를 식별할 수 없으므로 데이터를 넣을 수 없다. : 예를 들면 게시판의 작성글과 댓글의 관계를 식별관계라고 할 수 있다.(작성글이 없다면 댓글도 없다) 식별관계는 - 복합키 관계 비식별자 부모 테이블(상품, 주문테이블) 기본키가 자식 테이블(주문_상..
스프링부트 gradle, java11, 을 사용했습니다. 우선 버킷 이름을 설정하고, 모든 퍼블릭 엑세스 차단을 해제해 주고 현재 설정을 확인했다고 체크해줍니다. 만든 버킷에 들어간 후, 권한으로 한번 더 들어갑니다. 그 후, 버킷 정책의 편집을 눌러줍니다. 버킷 ARN을 복사해주고 정책 생성기를 눌러줍니다. Principal : * Action : GetObject, PutObject를 추가 ARN: 복사했던 {ARN}/* 입력 그 후, Add Statement -> Generate Policy를 하면 정책 내용을 복사해줍니다. 그리고 나와서 정책에 복붙을 해줍니다. 그리고 변경 사항 저장 [IAM 사용자 권한 추가] S3에 접근하기 위해서는 IAM 사용자에게 S3 접근 권한을 주고, 그 사용자의 액세..
처음 풀때는 단순히 정렬 기준 2개잡고 문자열 자르고, 소문자 만들고, int형변환 해주고, 등 귀찮은 정렬문제라고 생각했다. 그래서 백준 골드5? 실버? 사이쯤 된다고 생각해서 막힘없이 풀었는데 계속 테스트1, 2만 통과되고 나머지가 안되어서 결국 질문하기를 보았는데... 원인은 일반적 sort는 unstable해서 기존의 상태가 보장되지 않는다고 합니다. 그래서 stable_sort를 써야 한다고 한다... #include #include #include #include using namespace std; vector> v; bool compare(const pair& a,const pair& b){ if(a.second.first == b.second.first){ return a.second.s..
bfs를 이용해서 구현을 했다. level 3 치고는 단순한 bfs/dfs문제여서 당황한 느낌..? 아직 방문하지 않았다면 bfs돌면서 방문을 체크해주고, bfs가 끝나면 다시 방문 안 한 구간부터 찾아서 반복해주면 되었다. #include #include #include #include using namespace std; int visited[201]; queue q; vector v[201]; void bfs(int x, int n){ visited[x]=1; q.push(x); while(!q.empty()){ int cx = q.front(); q.pop(); for(int i=0; i
알고리즘은 간단했다. 단순히 완전 탐색 방식으로 조합의 모든 경우를 계산하고 중복되는 만큼 ex) aabab와 같은 경우 3! 2!으로 나눠주면 됐다. 문자열보단 조합론(?)에 가까운 문제였다. 하지만 조합은 1 3 2 처럼 모두 다른 숫자나 문자로 구성되었지만 이 문제는 중복된 문자들도 있기 때문에 각 문자마다 id값을 주어 구분하였다. #include #include #include using namespace std; vector v;// id, 문자 int over[27]; int visited[27]; string s; int n; char ans[11]; int res = 0; int factorial(int n) { long long sum = 1; for (int i = 1; i > s; ..
백앤드 개발자의 친구 데이터베이스를 알아보려고 한다 [데이터베이스의 특징] 실시간 접근성 : 사용자의 질의에 대하여 즉시 처리하여 응답한다. 계속적인 진화 : 삽입, 삭제, 갱신을 통하여 항상 최근의 정확한 데이터를 동적으로 유지한다. 동시 공유 : 여러 사용자가 동시에 원하는 데이터를 공유할 수 있는 특징을 갖는다. 내용에 의한 참조 : 데이터베이스에 있는 데이터를 참조할 때 투플(tuple)의 주소나 위치가 아닌 사용자가 요구하는 데이터 내용에 따라 참조한다. 데이터 논리적 독립성 : 응용프로그램과 데이터베이스를 독립시킴으로써 데이터 논리적 구조를 변경시키더라도 응용프로그램은 변경되지 않는다. [데이터베이스 관리 시스템] 데이터베이스를 조작하는 별도의 소프트웨어로, DBMS를 통해 데이터베이스를 관리..
Servlet (서블릿) 자바를 사용하여 웹페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말함 Controller 스프링 서버 개발자 입장에서는 시작점과 끝점으로 보이지만, 사실 스프링이 사용자의 요청 (Request)과 응답 (Response)을 처리해 주고 있습니다. 그럼 controller를 사용하지 않은 코드와 controller를 사용한 코드는 무엇이 다른지 코드로 확인해 보겠다. /* Servelte 코드 */ @WebServlet(urlPatterns = "/api/products/*", loadOnStartup = 1) public class AllInOneServlet extends HttpServlet { // 신규 상품 등록 @Override protected void ..