전체 글 205

[Git/깃] 깃 커밋 내역 다른 브랜치로 옮기기

프로젝트를 진행하던 중, 브랜치를 옮겨서 작업해야하는 것을 깜박하고 메인 브랜치에서 작업해버렸다... (이 놈의 습관은 언제쯤 들지..) 그래서 A 브랜치의 변경 사항을 B 브랜치로 옮기는 법을 알아보자!! 사실 변경 사항을 옮긴다기 보다는, 커밋 내역을 옮긴다는 말이 정확하겠다. 1. 우선 작업한 브랜치에서 커밋을 해준다. 해당 브랜치 커밋 메세지가 그대로 다른 브랜치로 옮겨지므로, 커밋 메세지를 잘 작성하자. 2. 해당 브랜치에서 git log를 실행하여 커밋 내역을 확인하고, 해당 내역의 커밋 해시를 복사한다. git log를 통해서 1번에서 작성한 커밋 메세지를 기반으로 커밋 해시를 찾는다. 커밋 해시는 b6ceb49b672bc3bbd3e13236b62a4945272deb4d 이런 식으로 되어있다..

기타 2023.08.17

@Transactional의 선언 위치

일전에 JPA에서 사용하는 어노테이션을 다루는 글에서 소개한 적이 있는 @Transactional 어노테이션에 대해서 다루다가 궁금한 점이 생겼었고, 그 의문점을 해결하여 기록합니다. 우선 그 전에, @Transactional이 무엇인지 알아보자. @Transactional은 기본적으로 선언된 메서드 내에서, 오류가 발생했을 경우 진행했던 변경 기록들을 DB에 커밋하지 않고 롤백하는 기능을 한다. 그래서 우리는 어떤 메서드를 동작시킬 때, DB에서 read를 제외한 CUD를 수행하고자 한다면, 필수적으로 이 어노테이션을 사용해야했다. Q. 왜 Repository에 선언하지 않고, Repository를 사용하는 메서드에서 @Transactional을 사용하나요? 보통 많은 서비스에서 하나의 트랜잭션(데이터..

JPA 2023.08.17

[백준/BOJ] 15664번 N과 M (10) (자바/Java)

https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 ..

BOJ/BackTracking 2023.08.17

[파이썬/Python] 네이버 검색 API를 이용해 관련 이미지 불러오기

프로젝트를 진행하던 중, 키워드와 유사한 이미지를 로드할 수 있는 서비스를 만들어야했습니다. 그래서 저희는 API를 사용하기로 하였고, 이 글은 네이버 검색 API를 이용하여 이미지를 불러오기로 결정했습니다. 1. 네이버 검색 API를 사용한 이유. 저희 서비스는 한국 라디오 컨텐츠를 이용하는 서비스입니다. 이 음성을 텍스트로 변환한 후, 사용자에게 시각적인 정보를 제공하는 프로젝트인데, 이 프로젝트에서 문단의 키워드를 뽑아 해당 키워드와 관련된 이미지를 띄워서 시각자료를 제공하고자 하였습니다. 어떤 단어에 따라서 관련된 이미지를 제공하는 API는 구글, Bing 등 많습니다. 또한 크롤링을 이용해서 가져올 수도 있죠. 하지만 크롤링을 사용하면, 웹 서비스의 디자인이 바뀌거나 하는 등의 일이 발생하게 되..

Python 2023.08.16

[3주차] 목표 달성 백준 장학금 with 제로베이스

목표 달성 백준 장학금 with 제로베이스에 대한 3주차 보고서를 작성합니다. 1. 3주차 경과 이번 주 코딩테스트는 BFS와 DFS의 응용문제를 다뤄봤습니다. 응용문제가 난이도가 조금 있었고, 정해진 알고리즘 방법 외에 다른 스킬들을 적용해야하는 것이 어려웠던 점이었습니다. 그래도 다행이었던 점은, 응용문제가 어느정도 비슷한 풀이 방식을 요구하였다고 생각합니다. 이번주를 마지막으로 BFS/DFS에 대한 부분은 종료하지만, 나중에 많은 알고리즘을 다룬 후, 다시 돌아와서 문제를 풀어볼 때, 이러한 기억들을 이용하여 문제를 풀고 싶습니다. 비록 일주일에 5문제는 푸는 것이 시간 소요가 많이 되었지만, 나름 의미있는 시간 투자였다고 생각합니다. 두 번째 목표는 인프런 강의를 1주일에 반절 정도를 수강하는 것..

기타 2023.08.13

모각코 6차(230810)

https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 1. 문제 동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 말(Horse)이 되기를 간절히 원했다. 그래서 그는 말의 움직임을 유심히 살펴보고 그대로 따라 하기로 하였다. 말은 말이다. 말은 격자판에서 체스의 나이트와 같은 이동방식을 가진다. 다음 그림에 말의 이동방법이 나타나있다. x표시한 곳으로 말이 갈 수 있다는 뜻이다. 참고로 말은 장애물을 뛰어넘을..

모각코 2023.08.12

[백준/BOJ] 1600번 말이 되고픈 원숭이 (자바/Java)

https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 1. 문제 동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 말(Horse)이 되기를 간절히 원했다. 그래서 그는 말의 움직임을 유심히 살펴보고 그대로 따라 하기로 하였다. 말은 말이다. 말은 격자판에서 체스의 나이트와 같은 이동방식을 가진다. 다음 그림에 말의 이동방법이 나타나있다. x표시한 곳으로 말이 갈 수 있다는 뜻이다. 참고로 말은 장애물을 뛰어넘을..

BOJ/BFS DFS 2023.08.12

DTO, DAO란? (DAO와 Repository의 차이)

오늘은 JPA를 공부하다가 나온(사실 JPA와 관련 없는 내용이지만) DTO와 DAO에 대해서 알아보고, DAO와 Repository는 어떤 차이점이 있는지 알아보겠습니다. 1. DTO(Data Transfer Object) 그대로 직역하면, 데이터를 운송하는 객체입니다. 보통 웹과 서버에서 데이터를 주고받을 때 사용되는 객체라고 이해해도 무방합니다.(혹은 데이터를 전송할 때 사용하는 객체.) 특이하게 이 객체는 메서드가 존재하지 않습니다. 단순히 필드만을 가지고 있고, 이 필드에 정보가 담겨져서 운송되는 방식이라고 생각하면 좋습니다. DTO를 이용할 때는 아래와 같은 규칙을 이용하여 작성합니다. 필드는 모두 private으로 선언합니다. Getter와 Setter를 열어둡니다. 아직 더 심화해서 사용해..

JPA 2023.08.10

인텔리제이로 커스텀 템플릿 만들기

인텔리제이로 커스텀 템플릿을 만들어 보겠습니다!! 우선 맥 기준 좌측 상단에 settings에 들어갑니다. 그리고 뜨는 좌측 검색창에 live templates을 검색해줍니다. 그 다음, 우측에 + 버튼을 누르고, 2 Template Group을 클릭합니다. 원하는 그룹 이름을 입력해줍니다. 이후에, 생성한 그룹을 클릭한 채, 우측에 있는 + 버튼을 누르고, 이번에는 1 Live Template을 누릅니다. Abbreviation에는 본인이 원하는 축약어 형태를 작성합니다. 이 축약어를 통해서 저희가 만든 템플릿이 생성될 것입니다. Abbreviation에 입력하셨다면, Template text에 원하는 내용을 입력합니다. $ $ 기호를 이용해서 다양한 기능을 이용할 수 있습니다. 저는 함수의 이름과 종..

기타 2023.08.09

ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?

문제 졸업 프로젝트에서, 도커 이미지가 너무 무거워 경량화 작업을 실시했다. 파이썬 이미지를 사용하고 있었는데, buster에서 slim-buster로 변경하였고, 다시 빌드하는 과정에서 아래와 같은 오류를 만났다. 해결 slim-buster는 경량화를 위해서 git이 설치되어 있지 않을 수 있다. 따라서 아래와 같은 명령어를 git을 통해 설치하기 전에 작성해주자. RUN apt-get update && apt-get install -y git

Error Record 2023.08.08