-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.xml
329 lines (287 loc) · 19.4 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>BumCode</title>
<link>https://bumcode.kr/</link>
<description>Recent content on BumCode</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Sun, 05 Nov 2023 14:48:08 +0900</lastBuildDate><atom:link href="https://bumcode.kr/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>24년 여름방학</title>
<link>https://bumcode.kr/writing/writings/summer24/</link>
<pubDate>Fri, 30 Aug 2024 00:00:00 +0900</pubDate>
<guid>https://bumcode.kr/writing/writings/summer24/</guid>
<description>이번 여름방학때는 백엔드에 집중했었습니다. 처음에는 기본적인 흐름을 숙달하기 위해 CRUD게시판을 여러번 만들어보면서 스프링에 어느정도 익숙해졌고, 시큐리티 적용과 api호출 등 점차 기능을 추가해보았습니다.
곧 개강을 앞둔 이 시점에서, 여름방학 때 진행한 프로젝트들에서 사용했던 기술과 어떻게 사용했는지를 정리해보려고 합니다.
먼저 사용했던 기술스택입니다.
1. Backend Java Spring Boot Spring MVC Spring Data JPA Spring Security Validation 2. Frontend Thymeleaf HTML/CSS/JavaScript Thymeleaf Extras Spring Security 3. Database MySQL JPA/Hibernate 4. Build Tools Gradle 5. Testing JUnit Mockito 6.</description>
</item>
<item>
<title>Java Spring</title>
<link>https://bumcode.kr/project/summer_24/</link>
<pubDate>Fri, 30 Aug 2024 00:00:00 +0900</pubDate>
<guid>https://bumcode.kr/project/summer_24/</guid>
<description>이번 여름방학때는 백엔드에 집중했었습니다. 처음에는 기본적인 흐름을 숙달하기 위해 CRUD게시판을 여러번 만들어보면서 스프링에 어느정도 익숙해졌고, 시큐리티 적용과 api호출 등 점차 기능을 추가해보았습니다.
곧 개강을 앞둔 이 시점에서, 여름방학 때 진행한 프로젝트들에서 사용했던 기술과 어떻게 사용했는지를 정리해보려고 합니다.
먼저 사용했던 기술스택입니다.
1. Backend Java Spring Boot Spring MVC Spring Data JPA Spring Security Validation 2. Frontend Thymeleaf HTML/CSS/JavaScript Thymeleaf Extras Spring Security 3. Database MySQL JPA/Hibernate 4. Build Tools Gradle 5. Testing JUnit Mockito 6.</description>
</item>
<item>
<title>SQL 4</title>
<link>https://bumcode.kr/writing/sql/sql_4/</link>
<pubDate>Tue, 12 Mar 2024 00:24:11 +0900</pubDate>
<guid>https://bumcode.kr/writing/sql/sql_4/</guid>
<description>7장 복수의 테이블 다루기 [집합연산] 테이블의 한 행이 집합에서 원소 한 개임.
테이블의 집합연산에서는 세로(행) 방향으로 데이터가 늘거나 줄어듦
[UNION] 합집합
SELECT명령 UNION SELECT명령; 각각의 SELECT명령의 열의 내용은 서로 일치해야함
열 구성이 다른 테이블은 UNION X
-ORDER BY로 정렬
가장 마지막 SELECT명령에 ORDER BY를 지정해야함
지정하는 열은 SELECT명령에서 별명을 통해 일치시켜야함.
UNION : 중복X
UNION ALL : 중복O
[교집합과 차집합] MySQL에서는 지원하지 않음
교집합 : INTERSECT
차집합 : EXCEPT MINUS(Oracle)</description>
</item>
<item>
<title>SQL 3</title>
<link>https://bumcode.kr/writing/sql/sql_3/</link>
<pubDate>Thu, 07 Mar 2024 22:04:32 +0900</pubDate>
<guid>https://bumcode.kr/writing/sql/sql_3/</guid>
<description>원래 cmd로 공부했었는데, 얼마 전부터 MySQL Workbench를 사용하는 중이다.
아직 사용법은 익숙치 않지만 나중에 기회가 된 다면 더 자세히 다뤄야겠다.
6장 데이터베이스 객체 작성과 삭제 [데이터베이스 객체] 데이터베이스 내 실체를 가지는 어떤 것. (테이블, 뷰, 인덱스 &hellip;)
-이름을 가지며 중복 X
-다른 종류의 객체와도 중복이 되면 안됨
당연한 말이지만, SELECT 등의 명령어는 데이터베이스 내 실체를 가지지 않기에 객체가 아니다.
[스키마] 객체가 담기는 그릇
스키마가 다르면 이름이 같아도 괜찮음
[SQL명령의 종류] DML (Data Manipulation Language) 데이터 조작</description>
</item>
<item>
<title>SQL 2</title>
<link>https://bumcode.kr/writing/sql/sql_2/</link>
<pubDate>Mon, 26 Feb 2024 17:22:46 +0900</pubDate>
<guid>https://bumcode.kr/writing/sql/sql_2/</guid>
<description>4장 데이터의 추가, 삭제, 갱신 데이터 : 클라이언트 =&gt; 서버
[행 추가하기] mysql&gt; INSERT INTO 테이블명 VALUES( ....); -열 지정해서 행 추가하기
mysql&gt; INSERT INTO 테이블명(열1이름,열2이름) VALUES( , ); -Defalut를 명시적으로 지정하기
mysql&gt; INSERT INTO 테이블명(a,b) VALUES(1,DEFAULT); -암묵적으로 저장: 지정하지 않은 열은 Default 값으로 저장됨
+ NULL이 NO로 제약(NOT NULL)이 걸려있다면 VALUES에 NULL을 저장할 수 없음
[행 삭제하기] DELETE 열 삭제는 불가함
mysql&gt; DELETE FROM 테이블명 WHERE 조건식; mysql&gt; DELETE FROM 테이블명; WHERE생략시 모든 행 삭제</description>
</item>
<item>
<title>SQL 1</title>
<link>https://bumcode.kr/writing/sql/sql_1/</link>
<pubDate>Mon, 19 Feb 2024 23:34:29 +0900</pubDate>
<guid>https://bumcode.kr/writing/sql/sql_1/</guid>
<description>&gt;show databases; : db목록을 보여줌 &gt;use sample; : sample db를 선택함 &gt;DESC sample21; : sample21의 테이블구조가 나옴(sql명령x) -&gt; 테이블구조참조(describe) 테이블구조
Field : 열이름
Type : 열의 자료형
-INTEGER 정수(소수점x)
-CHAR 최대가 정해진 문자열로, 남는 공간은 공백으로 채움
-VARCHAR 최대가 정해진 문자열이나, 실제 문자열길이만큼만 저장
-DATE 연월일
-TIME 시분초
Null : Null값 허용여부
Key : 해당열이 Key로 지정되어있는지.
Default : 생략시 기본값.(NULL)
&gt;SELECT * FROM a; : a테이블의 *(모든)열. &gt;SELECT name FROM a : a테이블의 이름 열 &gt;SELECT 열1, 열2 .</description>
</item>
<item>
<title>SQL 0</title>
<link>https://bumcode.kr/writing/sql/sql_0/</link>
<pubDate>Sun, 18 Feb 2024 17:22:46 +0900</pubDate>
<guid>https://bumcode.kr/writing/sql/sql_0/</guid>
<description>&lsquo;SQL 첫걸음&rsquo; 책으로 공부하며 작성한 메모장을 간단하게 정리 후 올린 글입니다.
저의 참고용으로 올리는 것이기에 내용과 구성이 난잡할 수 있습니다.
MySQL DBMS기반</description>
</item>
<item>
<title>백준 1395 스위치 C++</title>
<link>https://bumcode.kr/algorithm/ps/1395/</link>
<pubDate>Thu, 11 Jan 2024 02:21:32 +0900</pubDate>
<guid>https://bumcode.kr/algorithm/ps/1395/</guid>
<description>문제 풀러가기 이번에도 세그먼트 트리 문제다. 다만 그냥 세그먼트 트리를 사용할 경우, 구간 업데이트에 너무 많은 시간이 걸려 TLE 이므로 조금 다른 방식이 필요하다.
세그먼트 트리를 이용한 TLE코드 #include &lt;bits/stdc++.h&gt; using namespace std; int N, M; int seg[100&#39;000 &lt;&lt; 2]; int update(int node, int s, int e, int a, int b) { if (b &lt; s || e &lt; a) return seg[node]; if (s == e) return seg[node] = 1 - seg[node]; int mid = (s + e) / 2; return seg[node] = update(node * 2, s, mid, a, b) + update(node * 2 + 1, mid + 1, e, a, b); } int query(int node, int s, int e, int a, int b) { if (b &lt; s || e &lt; a) return 0; if (a &lt;= s &amp;&amp; e &lt;= b) return seg[node]; int mid = (s + e) / 2; return query(node * 2, s, mid, a, b) + query(node * 2 + 1, mid + 1, e, a, b); } int main() { ios_base::sync_with_stdio(false); cin.</description>
</item>
<item>
<title>백준 1725 히스토그램 C++</title>
<link>https://bumcode.kr/algorithm/ps/1725/</link>
<pubDate>Mon, 08 Jan 2024 22:38:26 +0900</pubDate>
<guid>https://bumcode.kr/algorithm/ps/1725/</guid>
<description>문제 풀러가기 세그먼트 트리를 사용하는 문제이다.
어려워보이는 자료구조라 나중으로 미루다가 결국 하게되었는데.. 유튜브에 마음에 드는 강의가 딱히 없어서 그냥 요세푸스 문제2 해답코드를 여러개 뜯어보면서 공부했다.
요세푸스 문제나 구간합 문제 등 세그먼트 트리가 사용된 코드는 비슷한 부분이 많은 것 같은데 아직 완벽하게 이해하지는 못해서 몇 문제는 더 풀어보고 다뤄볼까 싶다.
init():세그먼트 트리 초기화
query():연산 수행
update():필요한 경우 트리 업데이트
위 세가지가 공통적으로 사용되고 동작방식도 비슷한 부분이 많다.
(문제 해설은 주석참고)
#include &lt;bits/stdc++.</description>
</item>
<item>
<title>구조체</title>
<link>https://bumcode.kr/writing/dir-c_lang/struct/</link>
<pubDate>Wed, 06 Dec 2023 12:10:53 +0900</pubDate>
<guid>https://bumcode.kr/writing/dir-c_lang/struct/</guid>
<description>클래스의 원시형태라고 할 수 있는 C언어의 구조체에 대해 알아보자.
구조체는 사용자 정의 자료형이라 이해하면 된다.
구조체의 정의 및 변수선언 구조체의 정의는 다음과 같다.
struct Car{char name[10];int year;}; 위와 같이 구조체를 정의했다면 구조체 변수 선언은 다음과 같다.
//구조체 정의시의 변수 선언(구조체 정의와 동시에 변수를 생성함)struct Car{char name[10];int year;}car1,car2,car3;//함수 내에서 구조체 변수의 선언struct Car car1, car2, car3; 변수 선언 시 매번 struct를 붙이는게 싫다면, typedef를 사용하면 된다.</description>
</item>
<item>
<title>백준 2252 줄 세우기 C++</title>
<link>https://bumcode.kr/algorithm/ps/2252/</link>
<pubDate>Wed, 29 Nov 2023 22:13:46 +0900</pubDate>
<guid>https://bumcode.kr/algorithm/ps/2252/</guid>
<description>문제 풀러가기 위상정렬 을 이용하는 문제였다. 태그를 보고 풀었는데 위상정렬을 몰라 알고리즘만 보고 바로 풀어봤는데 입력을 어떻게 받을 지가 고민이었다.
정점 v1에서 연결되어있는 다른 정점으로의 간선의 개수를 진출차수라고 하며,
다른 정점에서 v1으로 연결되어있는 간선의 개수를 진입차수라고 한다.
위상정렬은 순서가 정해진 정점들의 순서를 구하는 알고리즘으로, 동작과정은 다음과 같다.
진입차수가 0인 정점을 모두 큐에 PUSH
큐에서 정점을 하나 POP하고 그 정점에서 진출하는 모든 간선을 제거한다.(연결 된 정점의 진입차수 1씩 감소)
제거 한 후, 진입차수가 0이 된 정점이 있다면, 큐에 PUSH</description>
</item>
<item>
<title>Prim's algorithm</title>
<link>https://bumcode.kr/algorithm/graph/prim/</link>
<pubDate>Fri, 24 Nov 2023 23:24:23 +0900</pubDate>
<guid>https://bumcode.kr/algorithm/graph/prim/</guid>
<description>프림알고리즘은 최소신장트리, MST(minimum spanning tree)를 찾는 알고리즘이다. 최소신장트리 는 무향그래프의 모든 정점을 잇는 신장트리 중 그 가중치의 합이 최소인 그래프이다.
알고리즘은 다음과 같다.
(1) 시작할 정점을 선택한다. 아무 정점이나 선택해도 된다. (2) 선택한 정점에서 갈 수 있는 다른 정점 중 가장 가중치가 작은 정점을 선택해 잇는다. (3) 이어진 정점들에서 갈 수 있는 정점 중 가장 가중치가 작은 정점을 선택해 잇는다. (4) 모든 정점을 선택할 때 까지 (3)과정을 계속 반복 이어진 정점이라고 표기했는데 선택한 정점이 최소신장트리에 포함되는 것이며,</description>
</item>
<item>
<title>피보나치 계산기</title>
<link>https://bumcode.kr/writing/javascript/fib/</link>
<pubDate>Wed, 22 Nov 2023 00:19:00 +0900</pubDate>
<guid>https://bumcode.kr/writing/javascript/fib/</guid>
<description><!DOCTYPE html>피보나치 계산기구하려는 fib(N)의 N:구하기결과: </description>
</item>
<item>
<title>간단한 계산기</title>
<link>https://bumcode.kr/writing/javascript/test/</link>
<pubDate>Tue, 21 Nov 2023 23:47:33 +0900</pubDate>
<guid>https://bumcode.kr/writing/javascript/test/</guid>
<description><!DOCTYPE html>간단한 계산기첫 번째 숫자:두 번째 숫자:더하기결과: </description>
</item>
<item>
<title>Dijkstra's algorithm</title>
<link>https://bumcode.kr/algorithm/graph/dijkstra/</link>
<pubDate>Mon, 20 Nov 2023 16:05:08 +0900</pubDate>
<guid>https://bumcode.kr/algorithm/graph/dijkstra/</guid>
<description>다익스트라 알고리즘은 하나의 정점 에서 다른 모든 정점으로 가는 최단 경로 탐색 알고리즘이다.
알고리즘에 대한 자세한 설명은 건너뛰고 구현위주로 작성하겠다.
벡터 배열 우선순위 큐 C++로 다익스트라 구현하기 위해 위 3가지가 필요하다.
우선 정점의 개수가 N개라고 가정을 하자.
벡터는 다음과 같이 선언할 것이다. (1번 정점부터 N번 정점까지 저장해야하기에 N+1) vector&lt;pair&lt;int, int&gt;&gt; vertex[N+1]; vertex[i] : i번 정점
vertex[i]의 원소 :pair( i에서 갈 수 있는 다른 정점 , 그 정점까지의 가중치 )
예를 들어 다음 그래프에서 vertex[1]과 vertex[2]의 원소는 다음과 같다.</description>
</item>
<item>
<title>C언어 포인터/배열</title>
<link>https://bumcode.kr/writing/dir-c_lang/pointer/</link>
<pubDate>Wed, 08 Nov 2023 19:47:47 +0900</pubDate>
<guid>https://bumcode.kr/writing/dir-c_lang/pointer/</guid>
<description>헷갈리기 쉬운 부분이니 확실하게 정리하고 넘어가는게 좋을 것 같다.
배열과 포인터의 관계를 이해하기위해 알아야하는 것이 있다.
arr[i] == *(arr+i) 이게 같은 표현이라는 것. 이걸 이용해 2차원 배열까지 포인터로 표현할 수가 있다.
1차원배열 배열은 정적배열과 동적배열로 구분된다.
정적배열 우리가 흔히 떠올리는 int arr[]; 는 정적배열이다. 선언 시 배열의 크기를 지정해주어야하며, 크기의 자리에 변수가 올 수 없다.
우선 간단하게 1차원 정적배열을 만들어보자.
int arr1[3] = { 1,2,3 };int* ptr1 = arr1;cout &lt;&lt; ptr1[1] &lt;&lt; &#39;,&#39; &lt;&lt; *(ptr1 + 1) &lt;&lt; endl;cout &lt;&lt; ptr1[3] &lt;&lt; endl; //쓰레기값!</description>
</item>
<item>
<title>자바로 게임만들기</title>
<link>https://bumcode.kr/project/project_game/</link>
<pubDate>Tue, 07 Nov 2023 20:51:50 +0900</pubDate>
<guid>https://bumcode.kr/project/project_game/</guid>
<description>(사진 클릭 시 유튜브로 연결!)
과제 연습삼아 틀만 만들어보려 시작했는데 생각보다 재미있어서 금방 만들었다.
총알과 공은 벡터를 이용해 추적하고 삭제하는 방식인데 아직 OOP로 프로그램을 만들어본 경험이 거의 없어 코드가 약간 스파게티코드라&hellip; 조만간 제대로된 MVC구조로 다시 설계할 예정이다.
2023/11/27
구조도이다. 거의 완성했고 코드는 나중에 깃헙에 올릴 생각이다.
메뉴, 랭킹, 아이템 등의 기능을 추가했다.
2024/01/08
계절학기가 곧 끝나서 끝나고 올려야겠다..ㅎ 과제는 만점을 받았다^_^
https://github.com/bumsoft/java_project
객체지향에 대해 어느정도 이해한 뒤 2학년인 지금 다시 보니 얼마나 이게 얼마나 엉망인지 나 자신을 돌아보게되었다.</description>
</item>
<item>
<title>백준 7677 Fibonacci C++</title>
<link>https://bumcode.kr/algorithm/ps/7677/</link>
<pubDate>Sun, 05 Nov 2023 04:06:08 +0900</pubDate>
<guid>https://bumcode.kr/algorithm/ps/7677/</guid>
<description>문제 풀러가기 피보나치수를 구하는 문제였다.
다만 N의 최대가 1,000,000,000이라 예전에 dp로 풀었을 땐 시간초과가 났다.
이산수학에서 행렬을 배우고 다시 보니 풀 수 있을 것 같아서 다시 풀어봤다.
풀이 행렬의 거듭제곱을 이용해야한다. 다만, N번 곱한다면 시간복잡도가 O(N) 이기에 이문제는 풀 수 없다.
분할정복을 이용한 거듭제곱 알고리즘을 사용해 O(logN)으로 풀 수 있다. 분할정복을 이용한 거듭제곱
N이 짝수 A^N = A^(N/2) * A^(N/2)
N이 홀수 A^N = A^((N-1)/2) * A^((N-1)/2) * A
2*2라 그냥 2차원배열로 만들까 생각도 했지만 이번기회에 벡터사용에 익숙해지면 좋을 것 같아 벡터를 사용했다.</description>
</item>
<item>
<title>Markdown 문법</title>
<link>https://bumcode.kr/writing/static-web/markdown/</link>
<pubDate>Sat, 04 Nov 2023 19:00:00 +0900</pubDate>
<guid>https://bumcode.kr/writing/static-web/markdown/</guid>
<description>마크다운 작성법에 대해 정리한 글입니다.
(시간 날 때마다 계속 추가 예정)
[제목] #h1 ##h2 ###h3 ####h4 #####h5 ######h6 [개행] 개행을 하려면 문장의 끝에 스페이스 두개 해줘야함
개행을 하려면 문장의 끝에 스페이스 두개
해줘야함
[이미지삽입] ![screensh](이미지경로.png) 괄호안에 이미지의 주소를 넣어도 돼서 보통 비공개블로그 같은 곳에 이미지만 올려두고 그 주소를 사용하는경우도 많음
다만 위처럼 마크다운 형식으로 이미지 삽입시 크기 조절이 안됨
필요하다면 html의 img태그를 이용하자
[인용구] &gt;인용구
인용구
[코드블록] ```
int main()</description>
</item>
<item>
<title>shell 배포자동화</title>
<link>https://bumcode.kr/writing/static-web/deploy/</link>
<pubDate>Tue, 31 Oct 2023 23:13:41 +0900</pubDate>
<guid>https://bumcode.kr/writing/static-web/deploy/</guid>
<description>c:hugo/hugo_blog/deploy.sh 만들어서 코드로 다음 작성. #!/bin/bash echo -e &#34;\033[0;32mDeploying updates to GitHub...\033[0m&#34; \# Build the project. \# hugo -t &lt;여러분의 테마&gt; hugo -t 테마이름 \# Go To Public folder, sub module commit cd public \# Add changes to git. git add . \# Commit changes. msg=&#34;rebuilding site `date`&#34; if [ $# -eq 1 ] then msg=&#34;$1&#34; fi git commit -m &#34;$msg&#34; \# Push source and build repos. git push origin main \# Come Back up to the Project Root cd .</description>
</item>
<item>
<title></title>
<link>https://bumcode.kr/about/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://bumcode.kr/about/</guid>
<description>안녕하세요! 신진범입니다. 저의 흔적을 기록하는 곳입니다.
프로젝트 알고리즘 CS공부 웹 &hellip; </description>
</item>
</channel>
</rss>