๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€38

[jstl] ๋‚ด์žฅ๊ฐ์ฒด ์ปค์Šคํ…€ thymeleaf์˜ fragment ๊ฐ™์€ ๊ธฐ๋Šฅ์„ jstl์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œjstl ์˜ ๋‚ด์žฅ๊ฐ์ฒด ์ปค์Šคํ…€ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. thymeleaf fragment์™€ ๊ฐ™์ด ๋ฐ˜๋ณต๋˜๋Š” ๊ตฌ๋ฌธ ์ž‘์„ฑ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ   pom.xml ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€  ... ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ ์ฝ”๋“œ javax.servlet.jsp jsp-api 2.2 provided javax.servlet.jsp.jstl jstl-api 1.2 jar taglibs standard 1.1.2 ...    jsp ํŒŒ์ผ ์ž‘์„ฑ  ... ...  ์ƒ๋‹จ์— .. 2024. 7. 2.
[Python] print ์ถœ๋ ฅ ์‹œ ํ•œ๊ธ€ ๊นจ์ง ํ˜„์ƒ ํŒŒ์ด์ฌ print ์ถœ๋ ฅ์‹œ ํ•œ๊ธ€ ๊นจ์ง ํ˜„์ƒ์ด ์ƒ๊ฒผ๋‹ค. code runner ์„ค์น˜ ์ „ ํ„ฐ๋ฏธ๋„์— ์ถœ๋ ฅ๋ ๋•Œ๋Š” ์ด์ƒ์ด ์—†์—ˆ๋Š”๋ฐ ํ™•์žฅ ์„ค์น˜ ํ›„ ์ถœ๋ ฅ์ฐฝ์— ์ถœ๋ ฅ๋˜๋‹ˆ ํ•œ๊ธ€์ด ์ œ๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ. ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์— ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค! PYTHONIOENCODING utf-8 ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€ ํ›„ vs์ฝ”๋“œ ์žฌ์‹คํ–‰ํ•˜๋ฉด ํ•œ๊ธ€์ด ์ •์ƒ์ ์œผ๋กœ ๋ณด์—ฌ์ง„๋‹ค. 2024. 4. 8.
[Python] ํŒŒ์ด์ฌ ์„ค์น˜ / Anaconda3 ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๊ธฐ ํŒŒ์ด์ฌ ์„ค์น˜ ์•„๋ž˜ ๋งํฌ๋กœ ํŒŒ์ด์ฌ ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค. https://www.python.org/downloads/ Download Python The official home of the Python Programming Language www.python.org downloads ๋ฉ”๋‰ด์— ์šด์˜์ฒด์ œ์— ๋งž๋Š” ํŒŒ์ด์ฌ ์ตœ์‹  ๋ฒ„์ „์„ ์ถ”์ฒœํ•ด์ค€๋‹ค. ๋‹ค๋ฅธ ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์šด๋กœ๋“œ ํ•˜์œ„ ๋ฉ”๋‰ด์—์„œ ์šด์˜์ฒด์ œ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•ด ๋“ค์–ด๊ฐ€์„œ ์›ํ•˜๋Š” ๋ฒ„์ „์„ ์„ ํƒํ•ด ๋‹ค์šด๋กœ๋“œ ํ•˜๋ฉด ๋œ๋‹ค. ์„ค์น˜ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ํ›„ ํŒŒ์ด์ฌ ์„ค์น˜ ์ง„ํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์„ค์น˜ ์„ธํŒ… ์ค‘ ์œˆ๋„์šฐ์˜ ๊ฒฝ์šฐ, ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ์„ค์ •๋˜๋„๋ก add python.exe to Path ๋ฅผ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค! ์„ค์น˜ ๋งˆ์ง€๋ง‰์— limit ~ ์ฒดํฌ ๋ฐ•์Šค๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ทธ๊ฒƒ.. 2024. 4. 2.
Java - ์ตœ๋Œ“๊ฐ’ ์ตœ์†Ÿ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ Math.max() / Math.min() ๋ฌด์ž‘์œ„ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜ ์ค‘ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ผ์ด ์ƒ๊ฒผ๋‹ค. ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ c์–ธ์–ด๋ฅผ ๊ณต๋ถ€ํ•  ๋•Œ ์ตœ๋Œ€ ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ดค์—ˆ๋‹ค. ๊ทธ ๊ฒฝํ—˜์„ ์‚ด๋ ค ์šฐ์„  ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ”๊พธ๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๊ธฐ์–ต์„ ๋”๋“ฌ์–ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜์˜ ์ด ๊ฐฏ์ˆ˜ int count = Integer.par.. 2024. 1. 16.
springboot - ์Šคํ”„๋ง๋ถ€ํŠธ ๊ต์žฌ ์ถ”์ฒœ << Do it! ์ ํ”„ ํˆฌ ์Šคํ”„๋ง๋ถ€ํŠธ3 >> ํ›„๊ธฐ / ์„œํ‰ ๋‚˜๋Š” ์–ด๋–ค ๊ณผ๋ชฉ์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•  ๋•Œ ๋Š˜ ์ธ์‡„๋œ ์ฑ…์„ ๊ตฌ๋งคํ•ด์„œ ๋ณด๋Š” ํŽธ์ด๋‹ค. ๋‚˜์ค‘์— ๋ญ”๊ฐ€ ํŠน์ • ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ฐพ์œผ๋ ค๊ณ  ์ฑ…์„ ๋– ๋“ค๋Ÿฌ๋ณด๋‹ค๋ณด๋ฉด Ctrl + F ๊ฐ€ ๊ทธ๋ฆฌ์šด ๊ฒฝ์šฐ๋„ ๋งŽ์ง€๋งŒ (...) ๋‚ด๊ฐ€ ์ถ”๊ฐ€์ ์œผ๋กœ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์—๋Š” ๋ฉ”๋ชจ๋„ ํ•˜๊ณ  ์ค‘์š”ํ•˜๋‹ค ์‹ถ์€ ๊ตฌ์ ˆ์€ ๋ฐ‘์ค„๋„ ๊ทธ์–ด๊ฐ€๋ฉฐ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ธ์‡„์ฑ…๋งŒ์˜ ๋งค๋ ฅ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ๋‚˜์ด๋จน์€์‚ฌ๋žŒ ํŠน์ง•์ผ์ˆ˜๋„ ... ๊ตญ๋น„ํ•™์›์ถœ์‹  ๋น„์ „๊ณต์ž๋กœ ํ•™์›์—์„œ๋Š” ์ž๋ฐ” ํ”„๋ ˆ์ž„์›Œํฌ ์Šคํ”„๋ง๋ถ€ํŠธ3์„ ์ด์šฉํ•ด ์•ฝ 5๊ฐœ์›” ์•ˆ๋˜๋Š” ๊ธฐ๊ฐ„๋™์•ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์—ˆ๋‹ค. ์ •๋ง ์งง์€ ๊ธฐ๊ฐ„์•ˆ์— ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‚ฌ์šฉํ•œ ๋“ฏ.. ๊ต์œก์ด ๋๋‚˜๊ณ  ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ทจ์—…ํ™œ๋™์— ๋“ค์–ด๊ฐ€๋ฉด์„œ ๊ฐœ๋ฐœ์ž ์ทจ์—…๊ณต๊ณ ๋ฅผ ์ฃผ์šฑ ๋ณด๋‹ˆ JAVA ๊ฐœ๋ฐœ์ž๋ฅผ ๊ตฌ์ธํ•˜๋Š” ํšŒ์‚ฌ๋Š” ๋ณดํ†ต ์ž๊ฒฉ์š”๊ฑด์œผ๋กœ spring boot ๋ฅผ ํ•จ๊ป˜ ์š”๊ตฌํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. .. 2023. 12. 29.
Java - repeat ๋ฉ”์„œ๋“œ ์ด์šฉํ•ด ๋ณ„์ฐ๊ธฐ ๋ณ„ ์ฐ๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋Š” ์ด์ค‘ for๋ฌธ๋งŒ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ repeat ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค. ์ด์ค‘ for๋ฌธ์€ ์•„๋ฌด๋ž˜๋„ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ repeat() ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ํ›จ์”ฌ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง€๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. repeat() java11 ๋ฒ„์ „๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋‚˜์˜จ String ๋ฉ”์„œ๋“œ๋กœ ๋ฌธ์ž์—ด์„ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค. String.repeat(x); // String์„ x๋งŒํผ ๋ฐ˜๋ณต ํŒŒ๋ผ๋ฏธํ„ฐ ์œ ํ˜•์— ๋”ฐ๋ฅธ ์ถœ๋ ฅ ๊ฐ’ 1. ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ 0์ผ ๊ฒฝ์šฐ ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ 2. ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ IllegalArgumentExceptionthrow ์—๋Ÿฌ๊ฐ’์„ ๋ฐ˜ํ™˜ 3. 1์ผ ๊ฒฝ์šฐ String๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ // repeat() ์˜ˆ์ œ System.out.print("hellow".repeat(3).. 2023. 12. 20.
Java - ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ ๋ฐฑ์ค€ 11382๋ฒˆ ๋ฌธ์ œ ํ’€์ด ๋ฌธ์ œ ๋‚ด์šฉ์€ 77 77 7777 ์œผ๋กœ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›๊ณ  77+77+7777 ๊ฒฐ๊ณผ์ธ 7931 ์ด ํ”„๋ฆฐํŠธ ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ. ์šฐ์„  ์˜ˆ์ œ ์ž…๋ ฅ1์˜ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๋„๋ก ํ•ด์•ผํ•œ๋‹ค. Scanner๋กœ ๊ฐ’์„ ๋ฐ›์„ ๊ฒฝ์šฐ ๊ณต๋ฐฑ ๋˜๋Š” ๊ฐœํ–‰(' ', '\t', '\r', '\n')์„ ๊ฒฝ๊ณ„๋กœ ์ฝ์–ด๋ฒ„๋ฆฌ๋ฏ€๋กœ ๊ณต๋ฐฑ์„ ํฌํ•จํ•œ ์ž…๋ ฅ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ฐ›๊ธฐ ์œ„ํ•ด BufferedReader๋ฅผ ์ด์šฉํ–ˆ๋‹ค. BufferedReader ๋ฉ”์†Œ๋“œBufferedReader๋Š” ์—”ํ„ฐ (\n)๊ฐ’์„ ๊ฒฝ๊ณ„๋กœ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›๋Š”๋‹ค. ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ import๊ฐ€ ํ•„์š”ํ•˜๋‹ค. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; // ํ•œ ๋ฒˆ์—.. 2023. 12. 10.
[thymeleaf] th:if ์กฐ๊ฑด ์•ˆ์— ๋ฐฐ์—ด์˜ ๊ธธ์ด ๊ฐ€์ ธ์˜ค๊ธฐ / #arrays.length() thymeleaf์˜ th:if๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์กฐ๊ฑด์„ ํ™•์ธํ•˜๊ณ  true์ผ ๊ฒฝ์šฐ ์š”์†Œ๋ฅผ ํ‘œ์‹œ false์ผ ๊ฒฝ์šฐ ์š”์†Œ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. th:if๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์กฐ๊ฑด์‹ ๊ฒฐ๊ณผ๊ฐ€ true์ผ ๊ฒฝ์šฐ ํ‘œ์‹œ๋˜๊ฒŒ ๋จ ์กฐ๊ฑด์‹ ๊ฒฐ๊ณผ๊ฐ€ false์ผ ๊ฒฝ์šฐ ํ•ด๋‹น ์š”์†Œ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด th:unless๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค! ๋ฌผ๋ก  th:if=${ num != 5 } ๋กœ ํ•ด๋„ ์ƒ๊ด€ ์—†๋‹ค. ํ”„๋กœ์ ํŠธ ์ž‘์—… ์ค‘ model๋กœ ๋ณด๋‚ธ ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์ด null์ผ ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก th:if๋ฅผ ์ด์šฉํ•ด null์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ๋Š”๋ฐ ์ƒ๊ฐํ•œ ๋Œ€๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ์ž˜ ๋˜์ง€ ์•Š์•˜๋‹ค. ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. java๋กœ list๋ฅผ ์ถœ๋ ฅํ–ˆ์„ ๋•Œ ํ™•์‹คํžˆ ๋นˆ ๊ณต๊ฐ„์ธ ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. list์— ๋‹ด๊ธด ๊ฐ’์ด ์—†์–ด ๋นˆ ๊ณต๊ฐ„์ผ ๋•Œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค๊ฐ€ ๋‚˜์™€.. 2023. 11. 28.
[thymeleaf] layout decorate ์กฐ๊ฑด ๋ถ€์—ฌ - @{}, @{||} ํ”„๋กœ์ ํŠธ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ๋ฆฌํŒฉํ† ๋ง ์ž‘์—… ๋„์ค‘ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์— ๋”ฐ๋ผ thymeleaf์˜ layout decorate์˜ ๊ฒฝ๋กœ๊ฐ€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋„๋ก ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ๋‹ค. ์ฒ˜์Œ์—” layout:decorate ์ž‘์„ฑํ•˜๋Š” html ํƒœ๊ทธ ๋ถ€๋ถ„์„ th:block์œผ๋กœ ๊ฐ์‹ธ th:if๋ฅผ ์ด์šฉํ•ด ์ฒ˜๋ฆฌํ•˜๋ ค ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒฝ์šฐ 500 ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค. java.lang.IllegalArgumentException: layout:decorate/data-layout-decorate must appear in the root element of your template ๋ฌธ์ œ์˜ ์˜ค๋ฅ˜๋Š” layout:decorate๋‚˜ data-layout-decorate๊ฐ€ ํ…œํ”Œ๋ฆฟ์˜ ์ตœ์ƒ์œ„ ์—˜๋ฆฌ๋จผํŠธ์— ๋‚˜ํƒ€๋‚˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ.. 2023. 11. 26.
[thymeleaf] property or field name cannot be found on null ์˜ค๋ฅ˜ ํ”„๋กœ์ ํŠธ ์ž‘์—… ์ค‘ ์ƒ๊ธด thymeleaf ์˜ค๋ฅ˜๋กœ 5์‹œ๊ฐ„์ด๋‚˜ ์‚ฝ์งˆํ–ˆ๋‹ค. Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'orderConfirmationLogCode' cannot be found on null orderConfirmationLogCode ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ๊ตฌ. DTO๋„ ์‚ดํŽด๋ณด๊ณ  XML์˜ resultMap์— ์นผ๋Ÿผ์ด ์—†๋Š”์ง€๋„ ์ฐพ์•„๋ณด๊ณ  ์ฟผ๋ฆฌ ๋ฌธ์žฅ์ด ์ž˜๋ชป ๋ฌ๋Š”์ง€๋„ ์ฐพ์•„๋ดค์œผ๋‚˜ ์ „ํ˜€ ์ด์ƒ ์—†์Œ. ๊ตฌ๊ธ€๋ง ํ•ด๋ดค๋Š”๋ฐ ๊ฐ’์ด null์ผ ๋•Œ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๊ณ  ํ•ด์„œ ๊ฐ’์„ ๋‹ด์€ ๊ฐ์ฒด๋ฅผ ์ถœ๋ ฅํ•ด๋ดค๋Š”๋ฐ ๊ฐ์ฒด์•ˆ์— ๊ฐ’์€ ๋ถ„๋ช…ํžˆ ์กด์žฌํ•˜๊ณ  ์žˆ๋‹ค! ใ… ใ…  ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๋„Œ์„ผ์Šคํ–ˆ๋˜ ๋ถ€๋ถ„์€ ํ™”.. 2023. 11. 24.