본문 바로가기

분류 전체보기41

[Tip] MySQL 타임존 변경 MySQL 서버를 한국 시간으로 바꿔주는 명령어 정리 # 서버 한국시간으로 바꿔주기 $ sudo rm /etc/localtime $ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime # 재시작 $ sudo su $ service mysql restart 2022. 4. 14.
[Tip] Slack과 GitAction 연동 민제와 배포를 하는 과정에서 배운 Slack과 Git Action을 연동하는 과정을 기록한 글입니다. 이후 슬랙 봇을 눌러서 GitHub의 들어가 yml 파일을 생성한다. 이후 레포지토리의 Setting 탭으로 가서 해당 URL을 등록해준다. 2022. 3. 27.
2. 단위테스트 단위 테스트를 읽고 학습한 내용을 정리한 글입니다. 학습 과정에서 작성되었기 때문에 잘못된 내용이 있을 수 있습니다. 1. 단위 테스트 단일 동작 단위를 검증하고 빠르게 수행되며, 다른 테스트와 별도로 처리하는 테스트를 말합니다. 하나의 클래스가 다른 클래스 또는 여러 클래스에 의존하면 이 모든 의존성을 테스트 대역(test double)로 대체하며, 동작을 외부 영향과 분리해서 테스트 대상 클래스에만 집중할 수 있게 합니다. 단, 단위가 반드시 클래스로 국한될 필요는 없는데, 공유 의존성이 없는 한 여러 클래스를 묶어서 단위테스트를 할 수도 있기 때문입니다. **작은 코드 조각이란 한 행위(메서드)에 대한 검증일 수도 있고, 클래스에 대한 테스트일 수도 있습니다. - 작은 코드 조각(단위) 검증 - 빠.. 2022. 3. 27.
[Tip] SSH키를 한 곳에서 관리하는 방법 배포 연습을 하던 중 pem키를 잊어버려 이를 한 곳에서 관리하기 위해 작성한 글입니다. 리눅스에서 물결표(~)는 로그인 한 유저의 홈 디렉토리 입니다. cd ~ 명령어를 통해 홈 디렉토리로 이동해줍니다. vi ~/.ssh/config 이후 cd .ssh로 ssh폴더 내부로 이동한 후 이곳에서 파일을 관리하면 한 곳에서 이를 모두 관리할 수 있게 됩니다. 2022. 3. 22.
계층형 댓글 https://www.youtube.com/watch?v=bhnDSyiPvaY 계층형 댓글의 개념에 대해 학습한 내용을 배워보겠습니다. 아래는 계층형 댓글로 각 커럼들이 나타내는 것들을 비교해보겠습니다. 우선 ref는 한 그룹의 ID값을 나타냅니다. 이는 PK와는 상관 없이 하나의 그룹을 나타냅니다. ref_order는 같은 그룹 내에서 가지는 순서를 의미합니다. answer_number은 자식 글의 개수를 의미하며, parent_number는 부모의 PK를 나타냅니다. 이를 하나 적용된 것에. 부모글에 자식글2가 더 달렸기 때문에 부모의 answer_number은 2로 증가합니다. 이때 자식글2는 ref_order은 다음 순서로 들어오게 되며, parent_number 즉, 참조하는 부모 값이 2가 되.. 2022. 3. 21.
[Tip] MySQL Dump 내 PC에서 MySQL 데이터 베이스에 데이터를 넣는 방법과 도커에 데이터를 넣는 법을 정리해보겠습니다. 1. 로컬PC 해당 sql 파일이 있는 경로로 이동 후 아래 명령어를 입력해주면 됩니다. $ mysql -u root -p [database] < 경로/파일.sql; $ mysql -u root -p hanbit < data_setting.sql; // 예시. 해당 파일이 있는 경로로 이동 $ mysql -uroot -p < employees.sql 2. 도커 이를 도커에 복사할 수 있는데, 아래와 같이 이를 입력해주면 됩니다. $ docker cp /Users/jjw/Jun/Masters\ Course/Database/world-db/world.sql 3ec458da1254:/root 2022. 3. 21.
[Tip] cursor기반 페이징 게시판 만들기 미션을 하던 중 구글, 네이버, 카카오 등 현재 서비스를 상용중인 IT 대기업들은 어떻게 페이징을 할까? 에 대해 고민하며 글을 작성하게 되었습니다. 글은 전반적으로 김민상 CTO님의 글을 바탕으로 작성되었습니다. 1. offset기반 페이징 offset 기반 페이징은 우리가 원하는 데이터가 몇 번째 위치에 존재하는지에 중점을 둡니다. 데이터를 처음부터 스캔해서 해당 페이지까지 이동 후 필요한 데이터를 찾아 반환합니다. 보편적으로 가장 많이 사용하는 페이징 방식입니다. * Page Navigator라 불리는 아래와 같은 바(bar)를 사용합니다. offset기반 페이징의 쿼리는 아래와 같은데요, OFFSET과 LIMIT, 정렬 기준을 주고 해당 페이지를 찾아옵니다. 따라서 우리가 찾는 데이.. 2022. 3. 19.
쿠키와 세션 쿠키와 세션에 대해 학습하고 정리한 글입니다. 학습과정에서 작성되었기 때문에 잘못된 내용이 있을 수 있습니다. 1. 쿠키의 개념과 등장 이유 HTTP 프로토콜은 비연결성(connectionless)과 무상태(stateless)의 특성을 가지고 있습니다. 즉, 서버가 클라이언트의 요청에 응답을 하는 순간 HTTP 연결은 끊어지며 클라이언트에서 새로운 요청을 해야 다시 HTTP 연결이 맺어지게 되는 것입니다. 상태가 없기 때문에 각각의 요청이 독립적이며, 사용자의 정보가 필요한 경우에도 이를 이용할 수 없습니다. 쿠키와 세션은 이런 비연결성/무상태성의 문제를 보안하기 위해 등장합니다. 쿠키는 서버에서 요청에 대한 응답으로 클라이언트로 전달해주는 정보로 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이.. 2022. 3. 9.
일급 컬렉션과 주의사항 Collection을 Wrapping 하면서 그 외의 다른 멤버 변수가 없는 상태. 맴버 변수가 Collection의 자손/구현체라면 어떤 종류든 상관없다. 1. 장점 일급 컬렉션을 사용하면 불변객체, 응집성 있는 객체의 장점들을 모두 취할 수 있습니다. 값을 수정할 수 없으며 해당 객체가 자신과 연관된 로직을 가지고 있기 때문입니다. 이에대해 하나씩 살펴보겠습니다. *가변 객체의 위험성에 대해서는 아래 글을 참조 하시면 됩니다. 가변 객체의 위험성 가변 객체를 사용하면 원본이 수정될 수 있기 때문에 위험합니다. 또한 이를 동시에 여러 곳에서 수정하게 되면 데이터의 변경을 추적하는 것이 쉽지 않습니다. 아래 예시는 가변 클래스 Numbers tmit10.tistory.com 1-1. 불변(Immutabl.. 2022. 2. 22.
TreeSet 1. TreeSet 이진 검색 트리(Binary Search Tree) 형태로 데이터를 저장하는 컬렉션 클래스. 정렬, 검색/범위검색에 높은 성능을 보이며 이진 검색 트리의 성능을 향상시킨 Red-Black tree 형태로 구현되어 있습니다. Set 인터페이스를 구현했기 때문에 데이터의 중복을 허용하지 않으며 정렬된 위치에 저장하므로 저장순서를 유지하지도 않습니다. 첫 번째로 저장되는 값은 루트가 되고, 두 번째 값은 트리의 루트부터 시작해서 값의 크기를 비교하면서 트리를 따라 내려갑니다. 이때 작은 값은 왼쪽에, 큰 값은 오른쪽에 저장합니다. 컴퓨터는 값을 스스로 못 비교하기 때문에 Comparable 혹은 Comparator를 제공해 두 객체를 비교할 방법을 알려줘야 합니다. 그렇지 않으면 TreeS.. 2022. 2. 22.
상수풀과 String 상수풀은 힙 영역 내부에 문자열 객체를 위해 별도로 관리하는 저장소입니다. 만약 상수풀에 같은 값을 가진 String 객체가 존재하면 그 객체의 주솟값을 참조하며, 값을 찾지 못하면 상수풀에 해당하는 값을 가진 문자열 객체를 생성하고 그 주솟값을 반환합니다. 리터럴로 선언한 경우 내부적으로 String의 intern( ) 메서드를 호출합니다. 리터럴("")로 String 객체를 생성하면 JVM은 먼저 상수풀을 탐색합니다. 만약 같은 값을 가진 String 객체를 찾으면 그 객체의 주소 값을 반환해서 참조하며, 이를 찾지 못할 경우 상수풀에 해당 값을 가진 String 객체를 생성하고 그 주소 값을 반환합니다. 이는 intern( ) 메서드를 통해 등록되는데요, String.equals( ) 반환값이 tr.. 2022. 2. 20.