전체 κΈ€ 33

[Gradle] implementation, runtimeOnly, compileOnly 차이점

spring boot ν”„λ‘œμ νŠΈμ—μ„œ DB μ„ΈνŒ…μ„ ν•˜λ‹€κ°€ μ•„λž˜ gradle 섀정에 λŒ€ν•΄ 의문이 생겼닀. implementation 'org.postgresql:postgresql' runtimeOnly 'org.postgresql:postgresql' implementation은 자주 μ“°λŠ”λ° runtimeOnly와 compileOnly에 λŒ€ν•œ λͺ…ν™•ν•œ μ‚¬μš© μ‹œμ μ΄ κΆκΈˆν•΄μ‘Œλ‹€. Classpath ClasspathλŠ” ν΄λž˜μŠ€λ‚˜ jar 파일이 μ‘΄μž¬ν•˜λŠ” μœ„μΉ˜μ΄λ‹€. 크게 complileClasspath, runtimeClasspath둜 λ‚˜λˆ„μ–΄μ Έ μžˆλ‹€. compileClasspathλŠ” μ—λŸ¬μ—†μ΄ μ»΄νŒŒμΌμ„ ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ ν΄λž˜μŠ€μ™€ jar 파일이 μœ„μΉ˜ν•œλ‹€. runtimeClasspathλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜κΈ° μœ„..

[PostgreSQL] MacOSμ—μ„œ Postgresql μ„€μΉ˜ 및 μ„€μ •ν•˜κΈ°

μ„€μΉ˜ 및 μ‹€ν–‰ μ„€μΉ˜ λͺ…λ Ήμ–΄λŠ” λ‹€μŒκ³Ό κ°™λ‹€. brew install postgresql μ„€μΉ˜κ°€ μ™„λ£Œλ˜λ©΄ postgresql을 μ‹€ν–‰ν•œλ‹€. brew services start postgresql 싀행이 λ˜λŠ” κ±Έ ν™•μΈν•˜κ³  μ‹ΆμœΌλ©΄ ν•΄λ‹Ή λͺ…λ Ήμ–΄λ₯Ό 톡해 확인할 수 μžˆλ‹€. postgres -V μ„€μ • ν•΄λ‹Ή λͺ…λ Ήμ–΄λ₯Ό 톡해 postgreSQL에 μ ‘μ†ν•œλ‹€. psql postgres μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό 톡해 μ •μ˜λœ κΆŒν•œ 확인이 κ°€λŠ₯ν•˜λ‹€. postgres=# \du Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- user_name | Superuser, Create ro..

μƒˆνšŒμ‚¬ 적응기

μ΄μ§ν•œ νšŒμ‚¬μ— λ“€μ–΄μ˜¨μ§€ μ‚Όκ°œμ›”μ΄ λ‹€ λ˜μ–΄κ°„λ‹€. νŒ€μ— λ°°μΉ˜λ˜μ–΄μ„œ μ‹ μž…μ‚¬μ› OJTλ₯Ό 주제둜 κ°œλ°œμ„ μ§„ν–‰ν–ˆλ‹€. spring boot + jpa + html + cssλ₯Ό ν™œμš©ν•΄μ„œ 개발된 μ›Œν¬λ³΄λ“œμ— λŒ€ν•œ κΈ°λŠ₯ κ°œμ„ μ΄μ—ˆλ‹€. λ‚˜λŠ” dhtmlx gantt libraryλ₯Ό ν™œμš©ν•΄μ„œ κ°„νŠΈμ°¨νŠΈ λ·°λ₯Ό μΆ”κ°€ν•˜λŠ” κΈ°λŠ₯을 λ‹΄λ‹Ήν–ˆλ‹€. 이전 νšŒμ‚¬μ—μ„œ λΉ„μŠ·ν•˜κ²Œ 라이브러리λ₯Ό ν™œμš©ν•΄μ„œ κΈ°λŠ₯ μΆ”κ°€λ₯Ό ν•œ κ²½ν—˜μ΄ μžˆμ–΄μ„œ μ–΄λ ΅μ§€ μ•Šκ²Œ ν•΄λ‚Έ 것 κ°™λ‹€. 수슡 λ”±μ§€λ₯Ό λ–Όκ³  νŒŒνŠΈμ— λ°°μΉ˜λ˜μ–΄μ„œ 내일뢀터면 본격적인 업무λ₯Ό μ‹œμž‘ν•˜κ³ , μ‹ μž…μ‚¬μ› OJT에 λŒ€ν•œ λ°œν‘œλ₯Ό μ€€λΉ„ν•΄μ•Ό ν•œλ‹€. μ•žμ— 놓여진 일 뿐만 μ•„λ‹ˆλΌ κ·Έ μ΄μƒμ˜ 일을 ν•΄λ‚΄μ„œ λ‚΄ μžμ‹ μ—κ²Œ λ§Œμ‘±ν•˜λŠ” νšŒμ‚¬μƒν™œμ„ 즐기고 μ‹Άλ‹€.

μ·¨μ€€, 퇴사 그리고 이직

λͺ‡λ‹¬κ°„ 이직을 μœ„ν•œ μ·¨μ—… 쀀비에 νž˜μ“°λŠλΌ λΈ”λ‘œκ·Έλ₯Ό μ“°μ§€ λͺ»ν–ˆλ‹€. 25μ‚΄ μ€‘λ°˜μ— 첫 직μž₯으둜 λ“€μ–΄κ°„ μ€‘μ†ŒκΈ°μ—…μ„ 1λ…„ μ’€ λ„˜κ²Œ λ‹€λ‹ˆκ³  이직을 μ€€λΉ„ν–ˆλ‹€. μ„Έ 달 정도 μ€€λΉ„λ₯Ό ν•˜κ³  μ„œλ₯˜, μ½”λ”©ν…ŒμŠ€νŠΈ/인적성, 싀무/μž„μ› 면접을 톡해 μ΅œμ’… 합격을 ν–ˆλ‹€. 기쑴에 λ‹€λ‹ˆλ˜ νšŒμ‚¬λ₯Ό ν‡΄μ‚¬ν•˜κ³  μ’€ 쉬닀가 μž…μ‚¬ν•  μ˜ˆμ •μ΄λ‹€. μ•žμœΌλ‘œλŠ” 취업을 μœ„ν•œ 곡뢀가 μ•„λ‹Œ λ‚΄κ°€ ν•˜κ³  싢은 곡뢀λ₯Ό ν•˜κ³ , κ·ΈλŸ΄λ“―ν•œ 취미도 μ—¬λŸ¬ 개 λ§Œλ“œλŠ” 것이 λͺ©ν‘œμ΄λ‹€. 걱정을 μ’€ 내렀놓고 λ‚˜λ₯Ό μœ„ν•œ 삢을 μ‚΄μ•„μ•Όκ² λ‹€.

[python] μˆœμ—΄κ³Ό μ‘°ν•©

μˆœμ—΄(permutation) - μˆœμ„œλ₯Ό κ³ λ €ν•œ 선택 - nPr둜 ν‘œμ‹œ import imertools arr = ['A', 'B', 'C'] perm = itertools.permutations(arr, 2) # 2개 선택 print(list(perm)) # [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')] μ‘°ν•©(combination) - μˆœμ„œλ₯Ό κ³ λ €ν•˜μ§€ μ•Šμ€ 선택 - nCr둜 ν‘œμ‹œ import itertools arr = ['A', 'B', 'C'] combi = itertools.combinations(arr, 2) print(list(combi)) # [('A', 'B'), ('A', 'C'), ('B', 'C')]

[python] bisect

bisect - bisect : νŒŒμ΄μ¬μ—μ„œ 이진탐색을 μ‰½κ²Œ κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ μ œκ³΅ν•˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ΄λ‹€. - μ •λ ¬λœ λ°°μ—΄μ—μ„œ νŠΉμ •ν•œ μ›μ†Œλ₯Ό μ°Ύμ•„μ•Όν•  λ•Œ 자주 μ‚¬μš©λœλ‹€. - bisect_left(), bisect_right() ν•¨μˆ˜κ°€ κ°€μž₯ μ€‘μš”ν•˜κ²Œ μ‚¬μš©λœλ‹€. bisect_left, bisect_right - bisect_left(list, n) : μ •λ ¬λœ μˆœμ„œλ₯Ό μœ μ§€ν•˜λ©° 리슀트 list에 데이터 n을 μ‚½μž…ν•  κ°€μž₯ μ™Όμͺ½ 인덱슀λ₯Ό μ°ΎλŠ”λ‹€. - bisect_right(list, n) : μ •λ ¬λœ μˆœμ„œλ₯Ό μœ μ§€ν•˜λ©° 리슀트 list에 데이터 n을 μ‚½μž…ν•  κ°€μž₯ 였λ₯Έμͺ½ 인덱슀λ₯Ό μ°ΎλŠ”λ‹€. - bisect_left(list, n, lo = 0, hi = len(list)) : lo와 hiλŠ” κ³ λ €ν•  리슀트의 뢀뢄집합을 μ§€μ •ν•˜λŠ” 데 사..

[μ•Œκ³ λ¦¬μ¦˜] BFS(Breadth First Search)

BFSλž€? - 큐λ₯Ό 톡해 κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€. - λ…Έλ“œλ₯Ό λ°©λ¬Έν•˜λ©΄μ„œ μΈμ ‘ν•œ λ…Έλ“œ 쀑 λ°©λ¬Έν•˜μ§€ μ•Šμ•˜λ˜ λ…Έλ“œμ˜ μ •λ³΄λ§Œ 큐에 λ„£κ³ , 큐어 λ“€μ–΄μžˆλ˜ λ…Έλ“œλΆ€ν„° λ°©λ¬Έν•œλ‹€. - νŒŒμ΄μ¬μ—μ„œ 큐λ₯Ό κ΅¬ν˜„ν•  λ•Œ, listλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ λŒ€λΆ€λΆ„μΈλ°. list.pop(0)은 μ‹œκ°„λ³΅μž‘λ„κ°€ O(N)이기 λ•Œλ¬Έμ— μ΄λ ‡κ²Œ κ΅¬ν˜„ν•  경우 μ‹œκ°„μ μœΌλ‘œ λΉ„νš¨μœ¨μ μ΄λ‹€. λ”°λΌμ„œ collections 라이브러리의 dequeλ₯Ό μ‚¬μš©ν•˜λ©΄ μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆλ‹€. - λ˜ν•œ μΈμ ‘ν•œ λ…Έλ“œ 쀑 λ°©λ¬Έν•˜μ§€ μ•Šμ•˜λ˜ λ…Έλ“œλ₯Ό 큐에 넣을 λ•ŒλŠ” set 데이터 νƒ€μž…μ„ μ΄μš©ν•˜λ©΄ μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ‹€. 타이틀 μž…λ ₯λΆ€λΆ„2 BFS κ΅¬ν˜„ - λ™μž‘ κ³Όμ • 1) root λ…Έλ“œλΆ€ν„° μ‹œμž‘ν•˜κΈ° μœ„ν•΄ deque에 rootλ₯Ό λ„£λŠ”λ‹€. 2) 큐가 빌 λ–„κΉŒμ§€ loopλ₯Ό λŒλ¦°λ‹€. 3) 큐의 λ§¨μ•ž λ…Έλ“œλ₯Ό..

[μ•Œκ³ λ¦¬μ¦˜] DFS(Depth First Search, 깊이 μš°μ„  탐색)

DFSλž€? - κ·Έλž˜ν”„ 탐색 μ•Œκ³ λ¦¬μ¦˜ - 갈 수 μžˆλŠ” λκΉŒμ§€ 탐색해 리프 λ…Έλ“œλ₯Ό λ°©λ¬Έν•˜κ³ , 이전 κ°ˆλ¦ΌκΈΈμ—μ„œ μ„ νƒν•˜μ§€ μ•Šμ•˜λ˜ λ…Έλ“œλ₯Ό λ°©λ¬Έν•˜λŠ” 탐색 방법 - μŠ€νƒμœΌλ‘œ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€. μŠ€νƒ λŒ€μ‹  μž¬κ·€ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ κ΅¬ν˜„ν•˜λŠ” κ²½μš°λ„ λ§Žλ‹€. μž¬κ·€ν•¨μˆ˜ μ‚¬μš© μ‹œ μ’…λ£Œ 쑰건을 λ°˜λ“œμ‹œ λͺ…μ‹œν•΄μ•Ό ν•œλ‹€. DFS κ΅¬ν˜„ - λ™μž‘ κ³Όμ • 1) 탐색 μ‹œμž‘ λ…Έλ“œλ₯Ό μŠ€νƒμ— μ‚½μž… ν›„ 방문처리 ν•œλ‹€. 2) μŠ€νƒμ˜ μ΅œμƒλ‹¨ λ…Έλ“œμ— λ°©λ¬Έν•˜μ§€ μ•Šμ€ 인접 λ…Έλ“œκ°€ ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•˜λ©΄ κ·Έ λ…Έλ“œλ₯Ό μŠ€νƒμ— λ„£κ³  방문처리 ν•œλ‹€. λ°©λ¬Έν•˜μ§€ μ•Šμ€ 인접 λ…Έλ“œκ°€ μ—†μœΌλ©΄ μŠ€νƒμ—μ„œ μ΅œμƒλ‹¨ λ…Έλ“œλ₯Ό κΊΌλ‚Έλ‹€. 3) 2번의 과정을 더이상 μˆ˜ν–‰ν•  수 없을 λ•ŒκΉŒμ§€ λ°˜λ³΅ν•œλ‹€. def dfs(graph, start): vist = list() stack = list() stack.a..

[MyBatis] Unknow column '' in 'field list'

λ°œμƒμ›μΈ μœ„μ²˜λŸΌ DB에 ν•΄λ‹Ή 컬럼이 μ—†λ‹€λŠ” μ—λŸ¬κ°€ λ–΄λ‹€. 이에 λŒ€ν•œ 원인은 두 κ°€μ§€κ°€ μžˆλ‹€. 1. 정말 ν•΄λ‹Ή DB에 컬럼이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. 2. μ‚¬μš©μžκ°€ λ¬Έμžμ—΄λ‘œ μ€€ 데이터가 μŒλ”°μ˜΄ν‘œ("")둜 λ‘˜λŸ¬μ‹Έμ—¬ μžˆμ§€ μ•Šλ‹€. λ‚˜ 같은 κ²½μš°λŠ” 2에 μ†ν–ˆλ‹€. 해결방법 μ½”λ“œλ₯Ό λ³΄λ‹ˆ xml νŒŒμΌμ— μ˜€νƒ€κ°€ μžˆμ—ˆλ‹€. ${test} -> #{test} λ‹€μŒκ³Ό 같이 $λ₯Ό #둜 λ°”κΏ”μ£Όλ‹ˆ ν•΄κ²°λ˜μ—ˆλ‹€.

[Python] μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜

버블정렬 - μ΄μ›ƒν•œ 두 값을 비ꡐ해 μ •λ ¬ν•˜λŠ” 방법이닀. - λͺ¨λ“  μ›μ†Œλ₯Ό ν•˜λ‚˜ν•˜λ‚˜ λΉ„κ΅ν•˜μ—¬ swapν•˜λŠ” μž‘μ—…μ„ λ°˜λ³΅ν•œλ‹€. - κ΅¬ν˜„μ΄ λ‹¨μˆœν•˜λ‹€. - μ΅œλŒ€ O(n^2)의 μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ°€μ§„λ‹€. # 버블정렬 a = random.sample(range(1, 10), 5) print("=== bubble ===") print(a) # μ •λ ¬ μ „ n = len(a) for i in range(n - 1): for j in range(n - 1 - i): if a[j] > a[j + 1]: a[j], a[j + 1] = a[j + 1], a[j] print(a) μ‚½μž…μ •λ ¬ - ν˜„μž¬ μœ„μΉ˜μ—μ„œ, 이미 μ •λ ¬λœ 이전 λ°°μ—΄λ“€μ˜ 데이터λ₯Ό μ°¨λ‘€λŒ€λ‘œ λΉ„κ΅ν•˜μ—¬ μžμ‹ μ˜ μœ„μΉ˜λ₯Ό μ°Ύμ•„ κ·Έ μœ„μΉ˜μ— μ‚½μž…ν•œλ‹€. - μ΅œμ•…μ˜ 경우 O(n^2), μ΅œμ„ μ˜ ..