만쥬의 개발일기
article thumbnail
[DATABASE] - Key 완벽 이해하기 (기본키, 후보키, 외래키 등)

key는 데이터베이스의 가장 중요한 개념이다. key는 데이터베이스(혹은 릴레이션) 내에서 특정 레코드(tuple)를 고유하게 식별하기 위해 사용되는 필드 또는 속성(attribute)을 의미하고, 그 종류로는 후보키, 기본키, 대체키, 슈퍼키,외래키 등이 있다. 예시 릴레이션 학생 TABLE 강의 TABLE 후보키 (Candidate Key) 후보 키(Candidate Key)는 데이터베이스 테이블에서 각 튜플을 유일하게 식별하는 데 사용할 수 있는 키들의 부분집합이다. 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야한다. 릴레이션에 있는 모든 튜플에 대해서유일성과 최소성을 만족시켜야한다. 유일성을 만족한다는 것은, 예를들어 학생 릴레이션의 경우, 후보키만으로도 한 튜플을 특정지을 수 있는 것이다...

article thumbnail
[MySQL] - ERROR 1698 (28000): Access denied for user 'root'@'localhost' 해결하기
🛠️TOOL/🐬Mysql 2023. 7. 19. 16:28

오랜만에 WSL2로 MySQL 서버에 접속하려다가 , 그만 root 암호를 잊어버리는 사태에 직면했다. 이후 비밀번호 재설정을 하고, 여러가지 설정들을 건드리다가 2002번 에러를 직면했다. 소켓에 연결이 안되는 경우 서버 설정에 문제가 있는 경우가 많다고 들어서 아예 재설치를 해주었다. 그러자 이번엔, ERROR 1698 (28000): Access denied for user 'root'@'localhost' 라는 에러를 만나게 되었고.. 여러가지 해결 방법을 시도해보았다. 1. MySQL을 보안 기능 비활성화로 재시작 먼저 첫번째로 'sudo mysqld_safe --skip-grant-tables &' 커맨드를 사용해 보안 기능을 끄고 재시작을 해주었다. 이후 mysql -u root 위 커맨드로..

article thumbnail
[클린 코드] - 10장 클래스 , 11장 시스템
📖BOOK/📙Clean Code 2023. 7. 18. 14:07

10장 클래스 클래스 체계 클래스 내부 선언 순서는 표준 자바 관례에 따라 정의가 되어있다. 그 순서는 다음과 같다. 정적 공개 상수 (static public) 정적 비공개 변수 (static private) 비공개 인스턴스 변수 공개 변수(거의 존재하지 않는 경우) 공개 함수 비공개 함수(자신을 호출하는 공개 함수 직후에) 때로는 변수나 함수를 protected로 선언하여 테스트 코드에서 접근을 허용하기도 한다. 같은 패키지 안에서 함수 등을 호출하여 테스트 해야한다면, protected로 쓰되 비공개 상태를 유지할 방법을 강구한다. 캡슐화는 항상 지키도록 노력할 것. 클래스는 작아야 한다 클래스의 이름을 지을때는 해당 클래스의 역할을 기술해야한다. 한 클래스의 역할이 너무 많아서는 안된다. 단일 책..

article thumbnail
[Spring Boot] Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.8...에러 해결하기

spring boot 프로젝트 생성 중, 위 오류에 부딪혀 구글링을 통해 해결했다. 1.환경변수 설정 https://coding-factory.tistory.com/838 [Java] 자바(JDK) 환경변수 설정방법 (for Windows) 자바(Java) 환경변수 설정 이유 환경 변수란 윈도우 운영체제에서 사용하는 설정 정보가 담겨있는 변수입니다. 윈도우에서 명령 프롬프트 (cmd)로 파일을 찾거나 실행을 시킬 때 현재 위치에 파일 coding-factory.tistory.com 위 블로그에 자세한 설명이 나와있다. 2.intellij SDK 확인 File > Project Strucure > Project > SDK 설정 SDK가 기존에 설정이 안되어있어서 11버전으로 설정해주었다. 3.Spring ..

article thumbnail
[플로이드-워셜(Floyd-Warshall)] - BOJ_14938 : 서강그라운드
✏️PS 2023. 7. 12. 16:20

오늘은 오랜만에 그래프 알고리즘을 공부하려고 한다. 블로그에 글은 안썼지만, 그동안 프림, 크루스칼등 MST(최소 신장 트리) 그리고 다익스트라(한 정점에서 다른 정점까지의 최단 거리를 찾는 알고리즘) 등을 공부해왔었는데, 오늘은 플로이드-워셜 알고리즘을 공부해보았다. 오늘 풀어볼 BOJ 14938 문제이다. 알고리즘 분류를 보면 다익스트라와 플로이드-워셜 모두 사용 가능하다고 되어있지만, 노드의 개수가 100으로 시간복잡도의 부담이 적고, 모든 노드를 시작점으로 잡고 최단거리를 구해야 하는 점, 음수 간선이 없는 점을 근거로 플로이드-워셜을 적용해 푸는 것이 쉽고 빠르다. 💡플로이드 워셜 알고리즘이란? 모든 정점에서 다른 모든 노드로 향하는 최단 경로를 구하는 알고리즘 모든 노드간의 최단 거리를 구하기..

article thumbnail
[스마트팜] - forever로 실행한 애플리케이션 log 확인하기

서버를 배포중, 문제가 생겼을 때 에러를 확인하려면 반드시 log를 확인해야 한다. 하지만 node.js에서 forever로 실행할 경우, 콘솔에 찍은 에러는 확인이 불가능하기 때문에 반드시 따로 로그 파일을 생성해주어야한다. 물론 server.js에서 처리해주어도 되지만, 기존 콘솔에 찍히던 log들을 모두 옮겨주기도 귀찮고 테스트시에는 어차피 콘솔에 찍으며 하기 때문에, 콘솔에 찍히던 log또한 파일에 저장 후 확인 가능하도록 하였다. sudo forever start -w -o ../out.log -e ../err.log server.js 위와 같이 실행할경우, 기존 출력되던 로그들은 out.log 파일에, 오류 출력 로그들은 err.log에 정상적으로 저장된다. -w: 파일 변경을 감지하고 자동으..

article thumbnail
[스마트팜/Troubleshooting] - Mysql ERROR 1129 (HY000): Host IP ... error 해결하기

잘 동작하던 스마트팜 서버에서 갑자기 DB를 불러오지 못하는 현상이 발생했다. 에러를 잡으려고 콘솔에 찍어보려 했는데, 콘솔에 메시지도 전혀 찍히지 않는 것이었다.. 원인을 찾아보니 , forever로 실행한 애플리케이션은 콘솔에 메시지가 찍히지 않는다는 것이다. 생각해보면 당연한것임을,, 그래서 node명령어로 서버 실행 후 콘솔을 확인해보니 Error connecting to database: Error: Packets out of order. Got: 1 Expected: 0 이런 에러메시지가 찍혔고, 데이터베이스와의 연결에 문제가 생긴것을 확인했다. mysql -h DB_IP -u DB_ID -p 위 명령어로 데이터 베이스에 접속을 시도하자 ERROR 1129 (HY000): Host '접속IP'..

article thumbnail
[Linux/Shell] 폴더 여러개 한 번에 만들고, 삭제하기
🛠️TOOL/📄Linux 2023. 7. 4. 15:13

PS 문제 풀이를 친구와 함께 깃으로 공유를 하다보면, 각자의 코드를 작성해서 push하기 때문에 폴더를 여러개 만들어 공유하는 상황이 생긴다. 우리는 이런식으로 날짜별로 폴더를 만들어서 사용하기에 1~31일의 폴더를 노가다로 만들어야 했다. 하지만 리눅스의 쉘에서도 for문을 사용 가능하다는 사실. 예시를 위해 8월자 폴더를 만들어보자. 먼저 8월자 폴더를 생성하고, 해당 폴더로 이동한다. 그리고 터미널에 다음과 같은 명령어를 입력해주면, for i in {1..31}; do mkdir $i; done 폴더가 잘 생긴 모습이다. 하지만 이대로 커밋하고 푸시할경우, git은 기본적으로 빈 폴더를 추적하지 않기 때문에 변경 내역에 추가되지 않는다. 따라서 폴더마다 내부에 '.gitkeep' 파일을 생성해주..