본문 바로가기
반응형

전체 글1065

[JPA] : 필드와 컬럼 매핑 @Id @Column(name = "name") @Enumerated(EnumType.STRING) @Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP) @Lob //varchar를 넘어서는 큰 데이터를 사용할 때 매핑 어노테이션을 몇 가지 보면 위와 같다. Column으로 컬럼을 매핑한다. temporal으로 날짜 타입을 매핑한다. 세 가지를 지원한다. 요즘에는 temporal보다 LocalDate를 그냥 사용한다. Enumerated enum 타입을 매핑한다. DB에는 enum타입이 없을 수 있으므로 EnumType로 값을 설정해 준다. enum의 ordinal을 사용하면 순서에 대한 오류가 터질 수 있다. → String을 사용하자.. 2022. 4. 5.
[JPA] : 데이터베이스 스키마 자동 생성하기 위 코드를 추가하면 데이터베이스 스키마가 자동으로 생성된다. value 부분에 여러 옵션을 사용할 수 있다. create는 기존 테이블을 삭제 후에 다시 생성하고, drop 후 create create-drop은 create와 같으나 종료 시점에서 drop하고, 테스트 케이스를 실행하고 마지막에 깔끔하게 할 때 주로 사용한다. update는 변경분만 반영하고(운영 DB에는 사용하면 안 된다.) validate는 엔터티와 테이블이 정상 매핑되었는지 확인하고 none는 사용하지 않는다. 사실 none는 없는 키워드인데 관례상 쓰는 것이다. 막 써넣는 것과 별 다른 게 없다. 운영 장비에는 절대로 create create-drop update를 사용하면 안 된다고 한다. 테스트한 데이터가 다 날라가버려서 그렇.. 2022. 4. 5.
[오류 노트] : Command failed with error 48 (NamespaceExists): 'Collection already exists. 문제 멜론 프로젝트를 하면서 MongoDB에 저장된 인기 차트 데이터 중 "방탄소년단"을 "BTS"로 변경하려고 했는데 아래와 같은 오류가 떴다. Command failed with error 48 (NamespaceExists): 'Collection already exists. 해결 해당 Collection이 이미 존재해서 그렇다. 매번 삭제해 주거나 삭제 로직을 만들어주면 된다. protected boolean dropCollection(String colNm) { boolean res = false; if (mongodb.collectionExists(colNm)) { mongodb.dropCollection(colNm); res = true; } return res; } 함수를 추가해 컬렉션이 .. 2022. 4. 5.
[TIL] : 160 일일 배움을 위한 Today I Learned ! 소경관 AWS EC2에서 사용하는 Ubuntu가 이것 저것 테스트를 많이 하기도 했고 요금도 자꾸 뱉길래 일단 멈추고 로컬에 새로 구축했다. 로컬에 새로 구축하면서 테스트는 못 했지만 서버가 돌아가는 것은 확인했고 프론트를 얼추 만들고 난 뒤에 JPA로 로그인 로직부터 시작하면서 천천히 다듬어야곘다 2022.04.04 - [Project/소경관] - [소경관] : 로컬 데이터베이스 설정 및 프론트 마저 진행하기 오류 노트 오늘 개발을 하다 오류가 어려 곳 터졌지만 그 중 체크해 둘만한 오류를 적어뒀다. 2022.04.04 - [노트/오류 노트] - [오류 노트] : Access to DialectResolutionInfo cannot be null whe.. 2022. 4. 4.
[소경관] : 로컬 데이터베이스 설정 및 프론트 마저 진행하기 AWS에서 하다가 요금이 자꾸 나와서 일단 로컬에 하기로 했다. 이 외에도 깔끔하게 남기기 위해 로컬에 하기로 했다. Thymeleaf 사용 배운 타임리프 문법을 사용하기 시작했다. 이렇게 href 경로도 걸어줘보고 회원가입 이렇게 onclick도 사용해 봤다. 앞으로 천천히 따로 공부한 내용을 이렇게 적용해 보면서 프로젝트를 완성시킬 예정이다. 소경관 로그인 화면 다듬기 로그인 부분 데이터 넘겨주는 작업을 나중에 해야하고 아래 카피라이터 부분도 수정해 줘야 한다. 백그라운드 이미지도 새로 넣어줘야하고.. 회원가입이랑 비밀번호 찾기 페이지도 다듬어야 한다. mariaDB 설정하기 sudo apt-gat update $ sudo apt-get install software-properties-common .. 2022. 4. 4.
[오류 노트] : Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 문제 MongoDB와 Mariadb를 연동하는데 아래와 같은 문구가 떴다. 서버 시작이 안 되었다. Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 해결 spring.jpa.database=mysql application.properties 위와 같이 코드를 적어줬다. JPA를 사용해 보려고 build.gradle에 추가해 주었는데 어떤 DB를 사용할 것인지 정의해 줘야하는 것 같다. 일단 Mariadb를 사용하긴 하는데 자동완성에 안 떠서 mysql로 설정해 주었다. 나중에 안 돌아가면 이 부분을 다시 mariadb로 설정해 줘봐야겠다. 어차피 둘 다 호환되니까 안 될 것 같지는 않다. 2022. 4. 4.
[TIL] : 159 일일 배움을 위한 Today I Learned ! 소경관 AWS 인스턴스를 켜둬서 비용 지출도 있었고, 여러가지 테스트를 하면서 용량을 많이 사용하게 되어 일단 초기화를 해줬다. 로컬에서 우분투 세팅을 다시 하고 있고 거의 다 되간다. React 강의를 착실히 듣고 있다. 이제 곧 자바스크립트 문법 심화에 들어가게 된다. 오류 노트 우분투 세팅 중 방화벽 문제가 생겼고, 구글링으로 해결하면서 해결한 방법을 기록해 뒀다. 2022.04.03 - [노트/오류 노트] - [오류 노트] : Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. ItW 2022. 4. 3.
[오류 노트] : Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. ItW 문제 우분투,ubuntu에서 방화벽 설정을 하려고 했는데 apt install firewalld firewalld 설치를 하라고 떴다. 설치를 하려고 키워드를 입력하니 아래와 같은 오류가 뜨면서 진행이 안 되었다. Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. ItW 해결 sudo rm /var/lib/dpkg/lock* sudo dpgk --configure -a sudo apt update apt install firewalld 위와 같이 오류가 뜬 곳을 지워주고 다시 설정을 해주고 정상적으로 다운로드가 되었다. 2022. 4. 3.
[TIL] : 158 일일 배움을 위한 Today I Learned ! 소경관 오늘 개인 프로젝트 뼈대 구성하고 자동 배포를 설정해 보려고 했으나 반만 성공했다. 2022.04.02 - [Project/소경관] - [소경관] : 프론트 뼈대 잡기와 Jenkins 재도전 하기 CS 지식 큐와 우선순위큐에 대해 알아보고 서로 비교해봤다. 2022.04.02 - [노트/CS 노트] - [CS 노트] : Queue와 Priority Queue 비교 스터디 토요일은 스터디를 하는 날이다. 7일간 공부한 내용을 잘 발표하고 끝난 뒤 간단하게 공부한 내용 리뷰하고 마쳤다. 2022.04.02 - [발전소/동아리 및 스터디] - [코딩 스터디 2기] : 5주차 2022. 4. 2.
[코딩 스터디 2기] : 5주차 이번주부터 시작된 소경관 프로젝트로 바빠져서 스터디 시간이 지루하지 않았다. 오늘은 한 쌤이 직장 동료가 코로나에 걸리는 바람에 참여하지 못 했다. 그래도 다른 쌤들은 모두 참여해서 3명에서 진행했다. 각자 할 게 많았기 때문에 시간이 빨리 지나갔다. 나는 일단 프론트를 먼저 만들기 위해 큰 메뉴를 만들었고 카피라이터와 각 이미지에 링크도 넣었다. 메뉴마다 움직이게 JSP 템플릿에서 thymeleaf 템플릿으로 변경 적용하는 작업을 하고 Jenkins에 연동을 성공시켰다. 문제는 반만 성공했다. 자세한 이야기는 아래 링크를 참고하면 된다. 2022.04.02 - [Project/소경관] - [소경관] : 프론트 뼈대 잡기와 Jenkins 재도전 하 2022. 4. 2.
[소경관] : 프론트 뼈대 잡기와 Jenkins 재도전 하기 오늘의 목표 큰 페이지들 연동 다 하고 진입까지 완료하기 작은 페이지들 생성해 두기 CI/CD 적용 다시 시도해 보기 문제 발생 시 체크해 두기 큰 메뉴 완성하기 내가 계획하고 있는 프로젝트의 메뉴는 이런 식이다. 로그인 페이지를 기본으로 로그인 후 입장이 가능하고 메인 페이지에서 세부 큰 페이지로 나눠지고 그 큰 페이지에서 작은 페이지로 나눠진다. 오늘은 큰 페이지를 만들었다. 이게 지금 로그인 후 들어오는 메인 페이지인데 이 메인 페이지에는 사용 설명을 간단하게 올릴 예정이다. 아직 수정하지는 않았다. 프로젝트 네임을 적어두고 홈으로 이동할 수 있는 링크를 걸어뒀다. 큰 메뉴들이다 큰 메뉴 선택시 이동이 가능하다. 나중에 빨리 완성되면 이동된 탭의 이름에 효과를 주는 것도 고려중이다.(밋밋하다는 생각.. 2022. 4. 2.
[CS 노트] : Queue와 Priority Queue 비교 Queue와 Priority Queue를 비교하라 큐는 먼저 들어간 데이터가 먼저 나오는 형식이고 우선순위 큐는 들어간 순서와 상관없이 우선순위가 높은 데이터가 먼저 나오게 된다. 때문에 큐의 push, pop의 시간 복잡도는 O(1)이지만 우선순위 큐의 push, pop의 시간 복잡도는 O(logn)이 된다. 우선순위 큐와 힙 우선순위 큐는 Heap과 같다고 볼 수 있다. 힙은 완전이진트리 구조이다. 이 힙은 Max Heap과 Min Heap이 있다. Max Heap은 각 노드에 저장된 값이 자식 노드의 값 보다 크거나 같아야 하고 Min Heap은 반대로 각 노드의 저장된 값이 자식 노드의 값보다 작거나 같아야한다. 힙은 트리 구조로 이루어져 있고 트리는 보통 Linked List로 구현하지만 힙은 .. 2022. 4. 2.
[TIL] : 157 일일 배움을 위한 Today I Learned ! React 리엑트 강의를 듣고 있다. 앞에 기초 문법 부분이라 정독은 아니고 왔다갔다 하면서 유튜브 대신 강의 본다. 실습 들어가면 컴퓨터 켜놓고 들을 예정이다. CS 지식 왔다 갔다 하면서 CS지식을 공부하고 있다. 나름 시간도 잘 가고 갈아타면서 생각하는 시간에 머릿속에서 복습도 자동으로 이루어지니 괜찮다. 학교에 도착하면 공부한 것을 토대로 옆자리 친구에게 강의해준다. 2022.04.01 - [노트/CS 노트] - [CS 노트] : Queue 2개를 사용해 Stack을 구현하라 소경관 Jenkins를 적용해 보려고 했다. 어느 정도는 성공해서 서버가 띄워지고 Jenkins에 접속까지는 되었는데 문제는 Gradle을 build하지 못 하는 이슈가 있었.. 2022. 4. 1.
[소경관] : Jenkins 맛 보고 후퇴.. & BootStrap Spring Boot thymeleaf에 적용하기 오늘 목표 Jenkins 설치 및 환경 셋팅 가능하면 Git까지 연동 후 테스트 페이지 띄우고, 수정하고 재적용 확인까지 해보기 어떻게 할까? Jenkins 공식 문서 참고한다. 오류가 난다면? 사례를 구글링해서 찾아보자. AWS EC2 Ubuntu에 Jenkins 설치 및 셋팅하기 먼저 Jenkins를 실행하려면 Java가 있어야 한다. Java를 먼저 설치해 주자. $ sudo apt update $ sudo apt install openjdk-11-jre $ java -version Debian apt 레포지토리를 업이트하고 Java를 설치한다. 설치가 잘 되었는지 체크를 해준다. curl -fsSL | sudo tee \\ /usr/share/keyrings/jenkins-keyring.asc >.. 2022. 4. 1.
[CS 노트] : Queue 2개를 사용해 Stack을 구현하라 두 개의 큐를 사용해 하나의 스택을 구현하려면 데이터가 두 개의 큐를 잘 왔다갔다 하게 만들면 된다. 1-2-3-4순으로 넣고 역시 FIFO이기 때문에 1-2-3-4순으로 나온다. 하지만 여기서 다 빼지 않고 1-2-3까지만 빼고 다른 큐에 넣어두고 4를 남겨두는 것이다. 그럼 A큐에는 4만 있고 B큐에는 1-2-3이 있는 상태인데 이때 A큐의 4를 POP해주면 된다. 이런 방식을 반복해서 하면 큐 2개로 스택을 구현하는 것과 같게 되는 것이다. 기출로 대비하는 개발자 전공면접 [CS 완전정복] 을 참고해서 공부하였습니다. 2022. 4. 1.
[TIL] : 156 일일 배움을 위한 Today I Learned ! 소경관 소경관 프로젝트를 이제 본격적으로 시작하게 되었다. 처음 생각한 것과 조금 달라지긴 했지만 이제 서류를 쓰면서 어느 정도 구상이 잡혔기 때문에 시작을 할 수 있게 된 것 같다. 오늘은 데이터 베이스를 셋팅했다. 2022.03.31 - [Project/소경관] - [소경관] : 프로젝트 진짜 시작 ! DB구축과 연동 그리고 CI/CD 고민.. CS지식 스택으로 큐를 구현하는 부분을 고민했다. 강의를 듣고 공부하고 내 옆자리 친구한테 설명하면서 알려줬다. 바로 보고 바로 설명해도 필기한 것을 다시 봐야 될 때도 있는데 이제 점점 이해를 바탕으로 설명을 할 수 있게 되기 시작한 것 같다. 2022.03.31 - [노트/CS 노트] - [CS 노트] : .. 2022. 3. 31.
[CS 노트] : Stack으로 Queue를 구현하기 두 개의 Stack를 통해 Queue를 구현할 수 있다. 데이터를 종이컵이라고 생각하고 종이컵 쌓기로 설명을 해 본다. 종이컵1,2,3,4를 A스택과 B스택을 사용해 큐를 만들어야 한다. 먼저, 큐는 종이컵이 1-2-3-4로 들어가고 1-2-3-4로 나오게 된다. 스택으로 큐를 구현하는 방법은 간단하다. 먼저 A스택에 종이컵을 push하여 1-2-3-4순서대로 넣는다. 그리고 다시 A스택에 있는 종이컵을 POP하여 B스택에 PUSH를 해 준다. 그럼 A스택에서 종이컵4가 먼저 나오게 되고 B스택에는 종이컵4가 맨 아래에 들어간다. 그 다음은 종이컵3이 pop되고 B스택에서는 종이컵3이 PUSH된다. 결국 B스택에는 종이컵4-3-2-1 순서로 쌓이게 되고 이 상태에서 pop을하면 1-2-3-4 순서대로 나.. 2022. 3. 31.
[소경관] : 프로젝트 진짜 시작 ! DB구축과 연동 그리고 CI/CD 고민.. 오늘 학교에서 개발 설계 산출물을 가지고 프로젝트 발표를 잘 마쳤다. 교수님이 “기능은 충분한데 너는 더 할 수 있을 것 같은데 더 넣으면 안되나?”라는 식으로 말씀하셨고..나는 일단 지금 있는 기능이나 똑바로 잘 하고 싶어서 최대한 거절했다.. 변경 사항에 대해서.. 교수님이 도커는 이제 쿠버네티스에서 지원을 안 해서 별로인 것 같다고 빼라고 하셨고 도커가 빠지게 되었다. 그래도 최근에 공부한 내용인데 아쉽긴 하다. 쿠버네티스만 사용하는 것은 아직 익숙하지 않기 때문에..(도커도 마찬가지긴 하지만..)어려울 것 같다. 혼자 공부한새로 배운 다른 기술도 많이 적용하려 한다. JPA, Gradle, CI/CD, Thymeleaf 등등.. 이것들도 프로젝트에 적용은 처음인데 쿠버네티스까지 하면 시간을 못 맞.. 2022. 3. 31.
[TIL] : 155 일일 배움을 위한 Today I Learned ! React React에 대한 지식을 조금이라도 쌓아두기 위해 공부를 시작했다. 예전에 세미나에 참여하고 구매한 강의였는데 다른 우선순위 강의들을 먼저 다 해치우고 뒤늦게 시작한다. 아직 초반부라 기초 지식을 배우면서 내가 잘 몰랐던 부분이나 나중에 떠올리면 좋을만한 부분을 메모하며 공부한다. 코드는 무조건 실습 코딩을 해 본다. 2022.03.30 - [Framework & Library/React] - [React] : React와 JavaScript에 대해서.. 2022.03.30 - [Framework & Library/React] - [React] : JavaScript 자료형 중 원시 타입과 비 원시 타입 소경관 개발 설계 산출물 완성했다. 아무.. 2022. 3. 30.
[CS 노트] : Queue에 대해서.. Queue가 무엇인가? 큐는 FIFO(선입선출)의 자료구조이다. 시간복잡도는 enqueue(데이터 넣기), dequeue(데이터 빼기) 둘 다 O(1)이다.(맨 뒤에서 데이터를 넣고, 맨 앞에서 데이터를 빼기 때문이다.) 보통 Cache 구현이나 프로세스 관리, 너비우선탐색(BFS) 등이 있다. 구현 방식은 Array Based queue와 List Based가 있다. Array Based queue는 메모리를 넣고 빼다 보면 메모리 낭비가 발생하게 되고 이것을 방지하기 위해 Circular queue 형식으로 구현하게 된다. FIFO가 맨 뒤에서 넣고 맨 앞에서 빼내게 되는데 앞 칸에서 데이터를 빼내고 난 뒤에 당겨지지 않아 앞에 빈 메모리 공간이 생기게 된다. 이게 많아지면 결국 메모리 낭비가 되는데.. 2022. 3. 30.
[React] : JavaScript 자료형 중 원시 타입과 비 원시 타입 JS 자료형 Primitive Type, 원시 타입 : 한 번에 하나의 값만 가질 수 있고 하나의 고정된 저장 공간을 사용한다. ex) let number = 12; Non-Primitive Type, 비 원시 타입 : 한 번에 여러 개의 값을 가질 수 있고 여러 개의 고정되지 않은 동적 공간을 사용한다. ex) let array = [1,2,3,4]; JS는 정수, 실수로 구분하지 않는다. 숫자로 구분한다. 2022. 3. 30.
반응형