목록분류 전체보기 (48)
백엔드 개발자
JOIN 두 개의 테이블을 합치는 것을 JOIN이라고 한다. JOIN을 하는 방법은 크게 4가지 정도가 있다. 설명을 위해 두 개의 테이블이 있다고 가정하겠다. User 테이블 user_id name age item_id 1 홍길동 20 1 2 최세은 25 2 3 이가경 25 3 Item 테이블 item_id name price 1 부활 1000 2 시간증가 500 INNER JOIN 우선 가장 많이 사용되는 JOIN 방법이다. A와 B테이블의 공통된 부분만 가져오는 것이다. 그냥 JOIN 명령어를 사용하면 기본적으로 INNER JOIN 을 한다. SELECT * FROM User A INNER JOIN Item B ON A.item_id = B.item_id 결과는 두 테이블에 공통적으로 존재하는 것만..
기존 데이터 연동 방식 SQL 중심적인 개발 객체를 테이블에 맞춰 작성 ⇒ 객체지향을 따르기 위해 객체답게 설계할 경우 SQL과 매핑하는 과정에서 많은 join과 복잡한 쿼리가 생기게 된다. 그리고 이를 해결해 주는 것이 JPA 이다. JPA 란 ORM (Object relational mapping) 이다. → 객체 관계 매핑 JPA는 JAVA 애플리케이션과 JDBC 사이에서 동작한다. 기존방식처럼 SQL 과 매핑하기 위해 테이블에 맞추지 않고 객체는 객체대로 설계하고 JPA가 이를 변환하여 JDBC 에 넘겨준다. JPA 를 사용해야 하는 이유 객체적인 설계 가능 높은 생산성 유지보수 → 객체 중심으로 객체만 변경하면 됨 자유로운 객체 그래프 탐색 ( 기존: 모든 컬럼들을 모두 조인하여 사용하기에 어려..
현재 공부하고 있는 서버-클라이언트 구조는 클라이언트가 요청 -> 서버에서 응답하는 방식이다. 그런데 우리가 많이 쓰는 카카오톡을 생각해보면 실시간으로 메시지를 보내고 또 받을 수 있어야 한다. 우리가 메시지를 보낸다 == 클라이언트가 서버에 요청한다. 우리가 메시지를 받는다 == 서버가 클라이언트에 보내준다??? NO!! 서버는 클라이언트의 요청에 응답만 할 수 있다. # Polling 그래서 polling으로 일정 시간마다 서버에 계속 요청을 보내서 나한테 온 메시지 있어? 라고 물어볼 수 있다. 음.. 그런데 실시간으로 바로바로 소통이 가능할까? 3초마다 요청을 한다고 하면 3초전에 받은 메시지를 뒤늦게야 받게 될 수 있다. 그래서 우리는 양방향 소통이 가능한 WebSocket 프로그래밍을 사용할 ..
//ec2 서버 ssh 연결 AWS ec2서버를 만들어 준다. 나는 아마존 리눅스 이미지로 만들어줬다. 그리고 연결을 해주려하였는데 bad permissions 이 나왔다. chmod 400 ~/downloads/mmkey.cer 만들어준 키의 권한을 제한해줘야한다. 이것은 필수로 요구된다. //다시 연결 ssh -i "~/downloads/mmkey.cer" ec2-user@ec2-54-145-71-82.compute-1.amazonaws.com SSH 클라이언트 방식으로 연결해주었다. 연결에 성공하면 멋진 새를 볼 수 있다. ssh key 생성 ssh-keygen -t rsa -b 4096 -m PEM --> Your public key has been saved in /home/ec2-user/.s..
ssafy 생활 중 아주 중요한 것이 있다. 바로 입퇴실 체크이다 정해진 입실 퇴실 시간에 맞춰 잘 출석체크를 해야 교육지원금을 온전히 다 받을 수 있는데 우리반에 친구가 이 시간을 놓쳐 지각을 3번 넘게 한 이후로 그 친구는 Mattermost 알림봇을 만들었다. 그리고 내가 이것을 만들게 된 것은 이 친구가 인턴을 합격하여 퇴소를 하게되었기 때문이다. 일요일에 그 친구가 알림봇을 중단한다는 글을 올렸고 나는 월요일부터 알림이 끊기질 않길 바랐기 때문에 자기소개서 작성을 미루고 급하게 만들게 되었다. ## 스타트 사실 알림봇을 만드는 과정은 아주 간단하다. mattermost와 연결될 webhook을 만들고, webhook을 통해 알림이 갈 수 있도록 연결된 프로그램을 만들어 주면 된다. 나는 pyth..
우선 스프링 프로젝트를 생성하기 위해 https://start.spring.io/ 여기서 스프링 프로젝트를 생성해주었다. 버전은 3이상부터 자바 17이상을 사용해야 한다고 하여 2점대로 사용해주었다. group이름의 example을 원하는 것으로 변경하고, artifact 도 원하는 이름으로 변경해주면 된다. ex) group = com.jeju , artifact = sample 이런식으로 소속, 프로젝트 이름을 적어주면 된다. 자바버전은 11을 사용하였고 dependencies 는 일단 web, lombok, security, jpa를 넣어주었다. 그리고 generate를 눌러 생성해주면 압축파일이 다운된다. 압축을 해제하고 인텔리제이를 실행하여 오픈을 눌러준다. 다운받은 프로젝트를 클릭하여 buil..
수업 때 배운 프로젝트를 집에와서 내 노트북으로 실행을 하려하니 오류가 났다. 그래서 우선 디비연동이 안된 것부터 해결하기위해 설치된 mysql을 지워주고 다시 설치해주었다. mysql워크벤치도 8.0.31버전으로 다시 설치해주었다. (기존 8.0.32버전) brew uninstall mysql # 폴더 제거 $ rm -rf /opt/homebrew/var/mysql -> mysql 삭제 후 관련 폴더 제거. 새로 설치한 후 사용할 새로운 유저를 생성해주었다. create user 'test'@'localhost' identified by '0000'; grant all privileges on \*.\* to '사용자'@'localhost'; 권한 부여. ps -ef | grep mysql kill -..
문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 따라서 첫 번째 계단을 ..