๐Ÿค– Backend

๊ฐ‘์ž๊ธฐ ํŒ€์›๋“คํ•œํ…Œ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๊ฐ€ ์ ‘์†์ด ์•ˆ๋œ๋‹ค๊ณ  ์—ฐ๋ฝ์ด ์™”๋‹ค. ๋ถ„๋ช… ์–ด์ œ๋„ ๋ฐฐํฌ workflow๊ฐ€ ๋™์ž‘ํ•˜๊ณ  ์ •์ƒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒํ•ด์„œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ–ˆ๋”๋‹ˆ, ์ฒ˜์Œ ๋ณด๋Š” ๋กœ๊ทธ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ™•์ธํ•ด๋ณด์ž.Caused by: org.redisson.client.RedisAuthRequiredException: NOAUTH Authentication required.  NOAUTH Authentication required. ๋ž€NOAUTH Authentication required๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์Œ์—๋„ AUTH ์„ค์ •์ด ์•ˆ๋˜์žˆ์–ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ด๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด redis-cli์— ์ ‘์†ํ•ด๋ณด์ž. ํ•„์ž๋Š” Docker container๋กœ redis๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ..
Nginx๋Š” ํ”„๋ก ํŠธ๋ถ€ํ„ฐ ๋ฐฑ์—”๋“œ๊นŒ์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌ ๋ฐ ์šด์˜ํ•˜๋ ค๋ฉด ๊ผญ ๊ณ ์ณ์•ผํ•  ๊ด€๋ฌธ์ฒ˜๋Ÿผ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ฒ˜์Œ ์ ‘ํ•˜๋ฉด ์ƒ‰๊น”๋„ ์—†๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ๊ธ€์ž ํ•˜๋‚˜๋งŒ ํ‹€๋ ค๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์›์ธ์„ ์ฐพ๋Š” ๊ฒƒ๋„ ๊ต‰์žฅํžˆ ์–ด๋ ค์›Œ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์•“๊ณคํ–ˆ๋‹ค. ๋ฌผ๋ก  ์‰ฌ์šด ๋ฐฉ๋ฒ•๋งŒ์ด ๋Šฅ์‚ฌ๋Š” ์•„๋‹ˆ์ง€๋งŒ, ๊ธฐ์ˆ ์  ์—ญ๋Ÿ‰์ด๋‚˜ ์•„ํ‚คํ…์ฒ˜์— ๊ณต์„ ๋“ค์—ฌ์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋‹ค๋ณด๋‹ˆ ์„ธ์„ธํ•œ ์ธํ”„๋ผ ์„ค์ •์— ์‹œ๊ฐ„์„ ๋“ค์ด๋Š” ๊ฒƒ ๋ณด๋‹ค ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์—์„œ ๊ธฐ์ˆ ์  ์ฑŒ๋ฆฐ์ง€์— ์‹œ๊ฐ„์„ ์Ÿ๋Š”๊ฒŒ ๋” ๋‚ซ๋‹ค๊ณ  ๋ณธ๋‹ค. Nginx Proxy Manager ๋ž€Nginx Proxy Manager๋Š” Nginx๋ฅผ Web console๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ GUI ์˜คํ”ˆ์†Œ์Šค์ด๋‹ค. ๊ฝค ๋งŽ์€ ์œ ์ฆˆ์ผ€์ด์Šค๋ฅผ ์ปค๋ฒ„ ๊ฐ€๋Šฅํ•œ๋ฐ, ๋‹จ์ˆœ ์„œ๋ฒ„ ํ”„๋ก์‹œ (๋ผ์šฐํŒ…)๋ถ€ํ„ฐ ์ •์  ํŒŒ์ผ ํ˜ธ์ŠคํŒ…๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๐Ÿšจ ์ •์  ํŒŒ..
์ตœ๊ทผ ํšŒ์‚ฌ ์—…๋ฌด ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋กœ์šฐ๋ ˆ๋ฐธ ๊ธฐ์ˆ (์ด๋ผํ•˜์ง€๋งŒ ํ”ํžˆ๋“ค ๋ ˆ๊ฑฐ์‹œ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ธฐ์ˆ )๋“ค์„ ๊ณต๋ถ€ํ•˜๊ณ  ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋Š” ์ตœ์‹  ๊ธฐ์ˆ  ๋ฐ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ, ๋ฒ„์ €๋‹ ๊ด€๋ฆฌ ์‹คํŒจ๋กœ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜์˜€๋‹ค. ์›์ธ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ SSLHanndshakeException์œผ๋กœ ์ธํ•ด DB Connection ํš๋“์„ ์‹คํŒจํ•ด conn์ด null์ธ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.The last packet successfully received from the server was 65 milliseconds ago. The last packet sent successfully to the server was 61 milliseconds ago. at java.base/jdk.internal.reflect.NativeConstructo..
์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ์–ด์„œ, ์˜ค๋žœ๋งŒ์— ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š”๋ฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์Šคํ”„๋ง ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž์ฒด ์‹คํ–‰์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๊ณ  ํ…Œ์ŠคํŠธ๋Š” ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€๋งŒ, ํ…Œ์ŠคํŠธ ๋กœ๊ทธ์—๋Š” ์—„์ฒญ๋‚œ ์–‘์˜ ์—๋Ÿฌ ๋กœ๊ทธ๊ฐ€ ๋‚จ๊ณ  Build ๊ฒฐ๊ณผ์—๋„ ์—๋Ÿฌ๊ฐ€ ๊ฐ€๋“ํ–ˆ๋‹ค. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ํ˜„์ƒ ๋ถ„์„ ์—๋Ÿฌ ๋กœ๊ทธ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๊ธธ์ง€๋งŒ ๊ฒฐ๊ตญ ์•„๋ž˜ ๋กœ๊ทธ๊ฐ€ ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ์—ˆ๋‹ค. java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/security/ec/SunEC$1 with JaCoCo 0.8.8.202204050719/5dcf34a. at org.jacoco.agent.rt.internal_b6258fc.CoverageTransformer.transfo..
@DataJpaTest๋ฅผ ์ด์šฉํ•œ Repository ํ…Œ์ŠคํŠธ ์ค‘ ๋ณธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์—์„œ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋˜ DDL์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. H2 ↔๏ธ MySQL ๋ฌธ๋ฒ• ์ฐจ์ด๋กœ ์ธํ•ด ํ…Œ์ด๋ธ”์ด ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์„œ application-test.properties ๋ฅผ ๊ณ„์† ์ˆ˜์ •ํ–ˆ์ง€๋งŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. ๋ฌธ๋“, ์ง€๋‚œ ๋ฒˆ์—๋„ @DataJpaTest ํ…Œ์ŠคํŠธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ฅผ @AutoConfigureTestDatabase์œผ๋กœ ํ•ด๊ฒฐํ•œ ๊ธฐ์–ต์ด๋‚˜์„œ ์‹œ๋„ํ•˜์˜€๊ณ  ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. ๊ทธ๋•Œ๋„ ๋””๋ฒ„๊น… ๊ณผ์ • ๊ธฐ๋ก์„ ๋ฏธ๋ค„๋‘๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด ์ฐธ์— ๋ธ”๋กœ๊น…ํ•˜๊ณ  ์žฅ๊ธฐ ๊ธฐ์–ต์œผ๋กœ ๊ฐ€๋ณด์ž. ๋ฌธ์ œ ๋ถ„์„ ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ธํ„ฐ๋„ท์—๋„ ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ ์ผ€์ด์Šค๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ • ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ DDL ํ˜น์€ SQL ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋‹ค. ๊ณตํ†ต์ ..
์†Œ๋งˆ ๋ฉ˜ํ† ๋‹˜๊ณผ ๋ฐฐํฌ DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ์ผ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๋„์ค‘์— ํ„ฐ๋ฏธ๋„์„ ์ผœ๋Š” ๋‚˜๋ฅผ ๋ณด๊ณ  ๊นœ์ง ๋†€๋ผ๋ฉฐ ํ„ฐ๋ฏธ๋„๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋ƒ๊ณ  ๋ฌผ์—ˆ๋˜ ๊ฒƒ์ด ์•„์ง๋„ ๊ธฐ์–ต๋‚œ๋‹ค. ์ปฌ๋Ÿผ๋ช… ์กฐ์ฐจ๋„ ์ œ๋Œ€๋กœ ๋ณด์ด์ง€ ์•Š๋Š” mysql cli๋ฅผ ์ผ๋˜ ์ด์œ ๋ฅผ ์ƒ๊ฐํ•ด๋ดค๋”๋‹ˆ, ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋ฐฐ์šธ ๋•Œ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋งŒ ๋ด์™”๊ณ  ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ๊นŒ์ง€๋งŒ ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ ๋‹จ๊ณ„๊นŒ์ง€ ๊ฐ€๋ณด์ง€ ์•Š์•„ ๋ถˆํŽธํ•จ์„ ํฌ๊ฒŒ ๋Š๊ปด๋ณด์ง€ ๋ชปํ•ด์„œ ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. Datagrip์„ ๋ฐฐ์šฐ๋ฉด์„œ ์‹ ์„ธ๊ณ„๋ฅผ ๋ง›๋ณด๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ์— ์ธ„๋ผ์ดํ•ด์™”๋Š”๋ฐ, ๋ถˆํ˜ธํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ชป๋ณธ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜๋‚˜ ์•„์‰ฌ์šด ์ ์€ public subnet์— ์žˆ์–ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•ด์„œ ๋ณด์•ˆ์ ์œผ๋กœ ์•„์‰ฝ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด์˜€๋‹ค.... SSH Tunneling์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๋ฉด์„œ๋„ ํŽธํ•˜๊ฒŒ DB๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ Transaction ์ด๋ž€? (2020.12.22)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜, Transaction ์ด๋ž€? Transaction์ด๋ž€, DB์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋œปํ•œ๋‹ค. DB์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋ž˜์˜ SQL์„ ์ด์šฉํ•ด์„œ DB์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. SELECT INSERT DELETE UPDATE ์ฐฉ๊ฐํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ์€ ์ž‘์—…์˜ ๋‹จ์œ„๋Š” SQL ํ•œ ๋ฌธ์žฅ์ด ์•„๋‹ˆ๋‹ค. ๋งŽ์€ SQL ๋ช…๋ น๋ฌธ๋“ค์„ ์‚ฌ๋žŒ์ด ์ •ํ•˜๋Š” ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ž‘์—…์˜ ๋‹จ์œ„๋‹ค. ๊ณ„์‹œํŒ์„ ์˜ˆ๋ฅผ๋“ค์–ด ๋ณด๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ , ์—…๋กœ๋“œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค. ๊ทธ ํ›„์— ๋‹ค์‹œ ๊ฒŒํŒ์— ๋Œ์•„์™”์„ ๋•Œ, ๊ฒŒ์‹œํŒ์€ ์ž์‹ ์˜ ๊ธ€์„ ํฌํ•จํ•œ ์—…๋ฐ์ดํŠธ๋œ ๊ฒŒ์‹œํŒ์„ ๋ณด๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ DB ์ž‘์—…..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ ๋นŒ๋“œ ๊ด€๋ฆฌ ๋„๊ตฌ Maven๊ณผ Gradle ๋น„๊ตํ•˜๊ธฐ (2021.01.06)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œ ๊ด€๋ฆฌ ๋„๊ตฌ๋ž€? ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ, ํ…Œ์ŠคํŠธ ๋นŒ๋“œ, ๋ฐฐํฌ ๋“ฑ์˜ ์ž‘์—…์„ ์œ„ํ•œ ์ „์šฉ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์„ฑํ•œ java ์ฝ”๋“œ์™€ ํ”„๋กœ์ ํŠธ ๋‚ด์— ํ•„์š”ํ•œ ๊ฐ์ข… xml, properties, jar ํŒŒ์ผ๋“ค์„ JVM์ด๋‚˜ WAS๊ฐ€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒจํ‚ค์ง•ํ•ด์ฃผ๋Š” ๋นŒ๋“œ ๊ณผ์ • = ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ์ข…๋ฅ˜์™€ ๋ฒ„์ „๋“ค, ์ข…์†์„ฑ ์ •๋ณด๋ฅผ ๋ช…์‹œํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ Maven Maven์€ Java์šฉ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋„๊ตฌ๋กœ Apache์˜ Ant ๋Œ€์•ˆ์œผ๋กœ ๋งŒ๋“ค์–ด ์กŒ๋‹ค. ๋นŒ๋“œ ์ค‘์ธ ํ”„๋กœ์ ํŠธ, ๋นŒ๋“œ ์ˆœ์„œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ ๊ด€๊ณ„๋ฅผ pom.xml ์— ๋ช…์‹œํ•œ๋‹ค. ์™ธ๋ถ€์ €์žฅ์†Œ์—..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ SQL Tutorial (2021.01.17)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. Aggreate Functions aggregate functions(์ง‘๊ณ„ ํ•จ์ˆ˜)์€ ํ•ญ์ƒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ˆ ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•œ๋‹ค. arithmetic operators๋Š” ํ•œ ํ–‰์˜ ์—ด๊ฐ„์˜ ์—ฐ์‚ฐ๋งŒ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, aggregate functions์€ ํ–‰ ์ „์ฒด์— ๊ฑธ์ณ์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. COUNT Counting all rows COUNT ๋Š” ํŠน์ • ์—ด์˜ ์ˆซ์ž๋ฅผ ์„ธ๋ฆฌ๋Š” aggregate function์ด๋‹ค.. ์•„๋ž˜์˜ ๋‘ SQL ๋ฌธ์˜ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค. SELECT COUNT(*) FROM tutorial.aapl_historical_stock_price SELECT * FROM tutorial.aapl_historical_sto..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ java.sql.SQLException: Incorrect string value (2021.03.28)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. java.sql.SQLException: Incorrect string value: '\xEC\xB0\xBD\xEC\xB0\xBD...' for column `mm_server`.`restaurant`.`name` at row 1 Query is: insert into restaurant (deliveryable, description, location, name, price, type) values (?, ?, ?, ?, ?, ?), parameters [0,,3,'์ฐฝ์ฐฝ๊ตญ๋ฐฅ',0,0] java thread: http-nio-8080-exec-1 at..
sckwon770
'๐Ÿค– Backend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก