728x90 전체 글654 [Springboot] JPA를 이용하여 DB에 데이터 생성하기 JPA의 핵심 도구로는 Entity, Repository가 있다 Entity는 자바객체를 DB가 이해할 수 있게 규격화한 데이터임. 이렇게 잘 규격화한 데이터를 repository라는 일꾼을 통해 DB에 전달되고 처리됨. 우선, DTO인 ArticleForm 타입의 form을 toEntity()메소드를 이용하여 Entity인 Article타입으로 변환해야 한다. 이를 위해 1.entity패키지 내에 Article클래스를 만들어야하고 2.ArticleForm클래스 내에 toEntity()메소드를 만들어야 한다. 이것은 entity패키지의 Article클래스이다. 클래스를 JPA Entity로 지정하기 위해서 @Entity 어노테이션을 붙인다. title과 content필드에는 @Column어노테이션을 붙여.. 2023. 3. 8. [Spring boot] 폼 데이터를 받아 컨트롤러에서 확인하기 1. 폼이 있는 view페이지 생성. form태그의 action과 method설정. 여기서 보낸 데이터는 DTO에 담김. 2. dto 작성 3. controller 작성 templates 폴더 아래에 articles폴더를 만들고 그 아래 new.mustache 파일을 생성했다. 여기에 form태그를 만들었는데, title과 content 입력 input이 있고, submit 버튼이 있다. action 경로는 /articles/creates 이고 메소드는 post로 설정. 각 인풋태그는 name을 설정해주었는데, 여기서 설정한 name이 다음단계에 만들 dto의 필드명과 같아야 한다. 기본패키지 아래 dto패키지를 만들고, ArticleForm 클래스를 작성하였다. 아까 input태그에 있었던 name인 .. 2023. 3. 7. 뷰 템플릿 레이아웃 나누기 이러한 레이아웃이 있다. 상단 네비게이션 바, 하단 푸터, 중앙부에 콘텐츠가 자리잡고있다. 네비게이션 바와 푸터는 어느 페이지든 항상 있을터인데.. 매번 그 긴 코드를 다 적어주어야 할까? 조립식으로 사용하자. (header.mustache) Navbar Home (current) Link Dropdown Action Another action Something else here Disabled Search HTML파일의 맨 위~ nav바까지의 모든 코드를 header.mustache 파일에 저장하였고 (footer.mustache) @myPage link footer또한 footer부분부터 html의 맨 아래코드까지 따로 footer.mustache에 저장하였다. {{>layouts/header}} {.. 2023. 3. 7. [Spring boot] mustache템플릿, Controller, Model resources/static/에 저장한 파일은 /파일명 경로로 접속하면 해당 파일을 보여준다. .mustache 템플릿 엔진 사용하기. templates폴더 아래에 .mustache파일을 생성하고, 플러그인도 설치한다. (얼마전 Node.js강의에서 썼던 .ejs와 비슷하게 생각하면 될 것 같다) HTML인데 중간에 변수, 반복문 등을 넣을 수 있는 듯 하다. 변수는 {{변수명}} 으로 사용하면 된다. 그런데.. 이 파일을 어느경로로 접속시 보여줄건지, 변수는 뭘 줄건지... 를 정해야 하는데 그것을 각각 Controller, model이 담당하게 된다. Controller, Model java폴더 아래 디폴트폴더 아래에 controller라는 패키지를 하나 생성한다. @Controller를 입력하여 .. 2023. 3. 7. Operating System 운영체제란 무엇인가? 유저와 컴퓨터 하드웨어 사이에 있는 프로그램. 운영체제 시스템의 목표는 다음과 같다 -일반유저 관점: 프로그램 실행, 문제해결을 쉽게 하게 해줌 -시스템 관점: 자원관리(cpu,메모리,스토리지), 프로그램 제어 -편리성(convenience)과 효율성(efficiency). (ex: windows의 GUI는 편리성을 줌) 운영체제의 편리성과 효율성은 대개 trade-off 관계이다. 컴퓨터 시스템은 네 가지 요소로 구성됨. -하드웨어: CPU,memory, I/O devices(스토리지 등) -운영체제: (여러 응용프로그램 또는 유저들의 H.W 사용요청이 있을 때 자원관리를 함) -응용프로그램 -유저 운영체제는 자원 할당자임. 물리, 추상화된 자원을 모두 다 관리함. Physical.. 2023. 3. 7. [알고리즘] 선택정렬, 삽입정렬, 쉘 정렬 (추상클래스 AbstractSort) 더보기 public abstract class AbstractSort { public static void sort(Comparable[] a) {}; protected static boolean less(Comparable v, Comparable w) { return v.compareTo(w)1칸 떨어진 원소들끼리 삽입정렬 순으로 정렬을 진행함. 그럼 뒤에있는 원소가 제일 작은 값일때도 금방 앞으로 보낼 수 있게 된다. public class Shell extends AbstractSort{ public static void sort(Comparable[] a) { int N = a.length; int h = 1; while(h=1) { for(int i=h;i.. 2023. 3. 7. [자바] 백준 3758번: KCPC https://www.acmicpc.net/problem/3758 3758번: KCPC 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 테스트 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫 번째 줄에는 www.acmicpc.net Team클래스를 만들고, Team[] list에 각 팀의 정보를 저장한 후 문제에서 제시한 조건대로 정렬하여 순위를 매기면 된다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWri.. 2023. 3. 5. [자바] 백준 2607번: 비슷한 단어 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; public class P2607 { static String original; static HashSet original_set = new HashSet(); public static void main(String[] args) throws NumberFormatException, IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in).. 2023. 3. 5. [자바] 백준 17848번: 진우와 달 여행(Small) https://www.acmicpc.net/problem/17484 17484번: 진우의 달 여행 (Small) 첫줄에 지구와 달 사이 공간을 나타내는 행렬의 크기를 나타내는 N, M (2≤ N, M ≤ 6)이 주어진다. 다음 N줄 동안 각 행렬의 원소 값이 주어진다. 각 행렬의 원소값은 100 이하의 자연수이다. www.acmicpc.net 일단 문제를 봤을 때... 갈 수 있는 경로 중에서 최솟값만 찾아서 간다고 해도 결과는 최솟값이 나오지 않을 수 있다는 것을 알았다. 그래서 가능한 모든 경로를 봐야할 것이라 생각했고 백트래킹 알고리즘을 사용하면 될 것 같아 코드를 작성했다. import java.io.BufferedReader; import java.io.IOException; import jav.. 2023. 3. 4. AI의 발전이 내 일자리를 빼앗을까? (chatGPT, Bing) chatGPT가 요즘 화젯거리다. 일상 대화를 하듯이 질문을 하면, 사람처럼 말을 잘 알아듣고 답변을 내놓기 때문이다. 아래는 chatGPT와 대화한 내용이다. 캡처가 잘렸지만 화면 아래로 더 많은 내용이 있었고 실제 내 코드에 적용할 수 있는 정도의 수준이었다. 아래는 마이크로소프트 Bing이다. (Bing은 대기목록에 등록하고, 등록허가가 나고 쓸 수 있다. 등록허가가 나기까지는 약 일주일이 걸린다.) 채팅봇으로서 사람과 대화를 주고받는 것에 목적을 둔 chatGPT와 다르게 Bing은 검색 지원을 목적으로 해서 조금 더 정확한 내용을 전달해준다고 한다. (AI가 직접 웹 검색을 하고, 검색으로 얻은 내용을 요약하여 사용자에게 전달한다고 한다) 이렇게 인공지능 기술이 우리 일상생활에 혁신을 주고 있는.. 2023. 3. 4. 연결지향성, 비연결성, TCP/UDP Network Structure: Network edge: 서버,클라이언트 (end devices) Network core: 라우터들 Access networks, physical media : 링크 Client/Server model: 항상 켜져있는 서버에 클라이언트가 요청을 보내고 응답을 받는 구조 Internet Services Models Connection-oriented service(연결지향성) : 보낸 데이터가 목적지에 도착되었는지 확인가능하여 데이터를 안정적으로 보냄 Connectionless service : 보낸 데이터가 손실되어도 상관하지 않음 TCP(Transmission Control Protocol: 전송 제어 프로토콜) -인터넷의 연결지향성(connection-oriented.. 2023. 3. 3. [Node.js] Socket.io를 이용하여 실시간 통신하기 저번에 채팅기능을 구현할 SSE방식을 사용했는데 서버->유저 방향으로만 실시간 통신이 된다. socket.io를 이용하여 양방향 통신을 해보자. 우선 socket.io를 설치한다. npm install socket.io 설치를 끝냈다면 const http = require('http').createServer(app); const {Server} = require("socket.io"); const io = new Server(http); server.js파일에 위와같은 코드를 추가하고, app.listen으로 작성했던 코드를 http.listen으로 수정한다. (express라이브러리를 이용하던 것을 http로 수정) 그리고 실시간 통신을 할 HTML파일을 하나 만든다. 여기서는 socket.ejs파일.. 2023. 3. 3. [자바] 백준 19941번: 햄버거 분배 https://www.acmicpc.net/problem/19941 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net 배열에 햄버거/사람 정보를 입력받아 둔다. 배열의 인덱스0부터~끝까지 반복문을 돈다. 사람이라면.. 범위(k)안에 있는 햄버거 중 가장 왼쪽 것을 먹는다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public c.. 2023. 3. 3. [Node.js] 채팅 기능 구현하기 당근마켓을 이용해본 적 있다면 익숙할 기능. 채팅하기 기능이다. 어떠한 게시물에서 '채팅하기'버튼을 누르면 글 작성자와 1대1 채팅을 시작할 수 있다. 그리고, /chat 접속시 내가 참여중인 채팅방을 보여주자. 채팅기능 구현을 위한 단계는 이렇다. 채팅방 개설. 1. list.ejs 에 '채팅하기'버튼을 추가하고, 버튼 클릭시 post요청(채팅방 개설) 2. server.js에서 1번의 post요청 처리 3. chat.ejs 디자인 4. server.js에서 /chat으로의 get요청 처리(이 때, 현재 로그인한 사용자가 속해있는 채팅방들의 정보를 전달) 여기까지 했다면 이제부터 채팅방의 메세지들을 처리하는 코드를 추가. 5. /chat에서 메세지 전송시 post요청(어떤 채팅방에서,언제,어떤 내용인지.. 2023. 3. 2. [자바] 백준 1515번: 수 이어 쓰기 https://www.acmicpc.net/problem/1515 1515번: 수 이어 쓰기 세준이는 1부터 N까지 모든 수를 차례대로 공백없이 한 줄에 다 썼다. 그리고 나서, 세준이가 저녁을 먹으러 나간 사이에 다솜이는 세준이가 쓴 수에서 마음에 드는 몇 개의 숫자를 지웠다. 세준 www.acmicpc.net 실버3인데 생각보다 어렵게 푼 문제. dp로 풀었다. 2번을 위해 1번에서 문자열 포함여부를 확인할 때 indexOf 메소드를 이용하였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class P1515 { public static void main(String.. 2023. 3. 2. [자바] 백준 21921번: 블로그 https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다 www.acmicpc.net 앞에서부터 x일씩 묶어서 최대방문자 수를 비교한다. 최대방문자를 갱신했다면 max값을 바꾸고 count를1로 만든다. 최대방문자수와 같다면 count만 1 증가시킨다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer.. 2023. 3. 1. [자바] 백준 2512번: 예산 https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 예전에 풀었던 나무자르기와 동일한 문제였다. 그 땐 분명히 풀었는데, 똑같은 로직으로 똑같이 풀려고 했는데도 코드를 짜기 힘들었다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections.. 2023. 2. 28. [자바] 백준 20920번: 영단어 암기는 괴로워 https://www.acmicpc.net/problem/20920 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList.. 2023. 2. 27. [자바] 백준 2164번: 카드2 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net LinkedList를 이용하여 구현하면 된다. while문을 이용하여 LinkedList의 size가 1이 될 때까지 맨 앞 카드 한 장을 버리고 ==> LinkedList.remove(0); 그 다음 한 장을 맨 뒤에 놓는다 ==> int now = LinkedList.remove(0); -> LinkedList.add(now); import java.io.BufferedReader; impor.. 2023. 2. 27. T.G.I Friday 대구현대시티아울렛점 TGI에 갔다. 아웃백을 갈지 TGI를 갈지 고민하다가 마침 금요일이라 TGI이벤트도 있고, 프라잇데이라고 메인메뉴를 2천원에 먹을 수 있는 이벤트가 있어 TGI로 갔다. 이건 콘샐러드. 옥수수 알갱이가 조금씩 씹히는데 고소하고 맛있다. 케이준치킨 샐러드. 샐러드 위에 치킨이 가득 올라가있고 허니머스타드 소스는 따로 컵에 담아 준다. 이 치킨샐러드가 아웃백에도 똑같은 메뉴가 있는데..정말 평범한 메뉴기는 하나 개인적으로는 아웃백의 치킨샐러드가 좀 더 좋았던 것 같다. 아웃백에서는 치킨이 약간 황금빛에 가까웠는데 여기 치킨은 살짝 오래튀긴듯 했다. 그래서 (비교하자면)정말 정말 아주약간 쌉싸름한 맛이 느껴졌다. 채끝스테이크였나? 무난하게 맛있는 맛이었는데 양이 적어 혼자 한접시를 다 먹어도 배고플것같았다... 2023. 2. 27. 이전 1 ··· 9 10 11 12 13 14 15 ··· 33 다음 728x90