๐Ÿ›๏ธdev ์•Œ๋ ‰์‚ฐ๋“œ๋ฆฌ์•„ ๋„์„œ๊ด€ (๊ฑด์„ค์ค‘...๐Ÿšง)

Hello! 🖐

✏ Web Backend Developer happyhsryu


๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•˜๊ณ  ๊ณต์œ ํ•˜๋Š” ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

๋‚ด์šฉ์ด ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋„ˆ๋ฅธ ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Contact

✉ email : happyhsryu@gmail.com

LATEST
JAVA ์ด๋ก 

[Java] JAVA_HOME ์ž๋ฐ” ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

Java ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜๋ ค๋ฉด jdk๊ฐ€ ํ•„์š”ํ•˜๋‹ค.์ปดํ“จํ„ฐ๊ฐ€ java๋ฅผ ์ปดํŒŒ์ผ ํ•˜๊ธฐ ์œ„ํ•œ javac๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์„œ jdk์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.์ปดํ“จํ„ฐํ•œํ…Œ jdk ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ณผ์ •..๊ฐ„๋‹จํ•˜์ง€๋งŒ ์•Œ์•„๋‘๋ฉด ์•ž์œผ๋กœ ์ž์ฃผ ์“ธ ๊ฒƒ ๊ฐ™์•„์„œ ๊ธฐ๋กํ•ด ๋‘”๋‹ค.์ด ๊ธ€์€ 2024๋…„ 10์›” 14์ผ, Windows 11 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์ž‘์„ฑํ–ˆ๋‹ค.0. jdk ์„ค์น˜์šฐ์„  jdk๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.์—ฌ๊ธฐ์„  C:\dev_files\jdk\openjdk-1.8์— ์œ„์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ€์ •ํ•˜๊ณ  ์„ค๋ช…ํ•œ๋‹ค.1. ์‹œ์Šคํ…œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ย ๊ฒ€์ƒ‰ํ•ด์„œ "์‹œ์Šคํ…œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŽธ์ง‘"์œผ๋กœ ๋“ค์–ด๊ฐ€๋„ ๋˜๊ณ ,์ œ์–ดํŒ - ์‹œ์Šคํ…œ - ๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ •(์‹œ์Šคํ…œ ์†์„ฑ) - ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๋“ค์–ด๊ฐ€๋„ ๋œ๋‹ค.2-1. ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ์„ค์ •์ค‘์š”ํ•œ ๊ฒƒ์€ jdk ์œ„์น˜์ด๋‹ค.๊ทธ๋Ÿฐ๋ฐ..

DevOps

[Web] Arachni Scanner ์›น ์ทจ์•ฝ์„ฑ ์ง„๋‹จ Tool

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์ด Tool์€ย ๋™์ ์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜๋ฉฐ ๋™์ž‘ํ•˜๋Š”๊ฒŒ ์•„๋‹Œ,ย ์ฒ˜์Œ ์ž…๋ ฅํ•œ ํŽ˜์ด์ง€ ํ•˜๋‚˜์— ๋Œ€ํ•œ ์ง„๋‹จ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.๊ฒฐ๊ณผ์ ์œผ๋กœ ์ตœ์ดˆ ์ง„๋‹จ ๋ชฉ์ ๊ณผ ๋‹ฌ๋ผ์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ๊ธฐ๋ก์„ ์œ„ํ•ด ๋‚จ๊ฒจ๋†“๋Š”๋‹ค.ย Arachni - ์›น ๋ณด์•ˆ์ทจ์•ฝ์  ํ…Œ์ŠคํŠธhttps://github.com/ahannigan/docker-arachniย GitHub - ahannigan/docker-arachni: Arachni Web Application Scanner in DockerArachni Web Application Scanner in Docker. Contribute to ahannigan/docker-arachni development by creating an account on GitHub.github.comย Arachni๋Š” ..

Web & Network

[Network] ICMP๋ž€? / ping, traceroute

ICMP๋ž€?ICMP(Internet Control Message Protocol, ์ธํ„ฐ๋„ท ์ œ์–ด ๋ฉ”์‹œ์ง€ ํ”„๋กœํ† ์ฝœ)๋Š” ๋„คํŠธ์›Œํฌ ์žฅ์น˜์—์„œ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ICMP๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” ๋ฐฉ๋ฒ•์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฉ์ ์ง€์— ์ž˜ ๋„๋‹ฌํ•˜๋Š”์ง€, ๋„๋‹ฌ ์‹œ๊ฐ„์ด ์ ์ ˆํ•œ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.ย ICMP์˜ ์šฉ๋„ICMP์˜ ์ฃผ์š” ์šฉ๋„๋Š” ์˜ค๋ฅ˜๋ณด๊ณ ์ด๋‹ค. ๋‘ ์žฅ์น˜๊ฐ€ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜๋ฉด ICMP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๋„ํ•œ ๋Œ€์ƒ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ, ์ˆ˜์‹  ์žฅ์น˜์—์„œ ์ „์†ก์žฅ์น˜๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ ํŒจํ‚ท์ด ๋ผ์šฐํ„ฐ์— ๋น„ํ•ด ๋„ˆ๋ฌด ํฐ ๊ฒฝ์šฐ ๋ผ์šฐํ„ฐ์—์„œ๋Š” ํŒจํ‚ท์„ ์‚ญ์ œํ•˜๊ณ  ICMP ๋ฉ”์‹œ..

Tool & Library

[SonarQube] ์˜คํ”ˆ์†Œ์Šค ์ •์ ๋ถ„์„ Tool ์†Œ๋‚˜ํ๋ธŒ ์‚ฌ์šฉ๋ฒ•

์†Œ๋‚˜ํ๋ธŒ๋ž€?์†Œ๋‚˜ํ๋ธŒ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฒ„๊ทธ, ์ฝ”๋“œ ์Šค๋ฉœ, ๋ณด์•ˆ ์ทจ์•ฝ์  ๋“ฑ์„ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์œ„ํ•œ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ํˆด์ด๋‹ค.ย ์„ค์น˜ / ์„ธํŒ…1. ์†Œ๋‚˜ํ๋ธŒ ์„ค์น˜https://www.sonarsource.com/products/sonarqube/downloads/ย Download | SonarQubeGet the latest LTS and version of SonarQube the leading product for Code Quality and Security from the official download page.www.sonarsource.comย 2. ์†Œ๋‚˜ํ๋ธŒ ์‹คํ–‰๋‹ค์šด๋กœ๋“œ ํŒŒ์ผ ์••์ถ• ํ’€๊ธฐ์†Œ๋‚˜ํ๋ธŒ ์‹คํ–‰Window: /bin/windows-x86-64/StartSonar.bat ์‹คํ–‰Linux: /bin/linu..

Projects & ๊ฐœ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

[๊ฐœ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ] Apache POI ์—‘์…€ ํŒŒ์ผ ๋‹ค๋ฃจ๊ธฐ

Apache POI ์‘์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌApache POI๋Š” Java์—์„œ ์—‘์…€์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.ํšŒ์‚ฌ์—์„œ Excel ํŒŒ์ผ์„ ํŒŒ์‹ฑ ํ•  ์ผ์ด ๊ฝค๋‚˜ ์žˆ์–ด์„œ ์ž์ฃผ ์“ฐ๋Š” ๊ธฐ๋Šฅ์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™”ํ–ˆ๋‹ค.ย gradle๋กœ apachepoi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ import ํ•œ ๋’ค, ์•„๋ž˜ gitlab ์ฝ”๋“œ๋‚˜ full code๋ฅผ ๋ณต๋ถ™ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.๊ท€์ฐฎ์•„์„œ SpringBoot ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ gradle๋กœ apache poi ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ import ํ–ˆ๋‹ค.implementation 'org.apache.poi:poi-ooxml:5.2.3'์ฐธ๊ณ  ๋งํฌJAVA & Spring/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ & Tools] - [Apache POI] Java ์ฝ”๋“œ๋กœ ์—‘์…€(.xlsx) ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ - Java๋กœ Excel ๋‹ค๋ฃจ๊ธฐย [Apac..

Web & Network

[Web/Network] ํ”„๋ก์‹œ(Proxy)

ํ”„๋ก์‹œ(Proxy)๋ž€?ํ”„๋ก์‹œ ์„œ๋ฒ„๋ž€ ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ์‚ฌ์ด์— ์œ„์น˜ํ•˜์—ฌ ํ†ต์‹ ์„ ์ค‘๊ณ„ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(์„œ๋ฒ„)์„ ๋งํ•œ๋‹ค.ํ”„๋ก์‹œ(Proxy)๋Š” '๋Œ€๋ฆฌ', '์ค‘๊ณ„' ๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์ง์ ‘ ํ†ต์‹ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์ค‘๊ฐ„์—์„œ ํ†ต์‹ ์„ ์ค‘๊ณ„ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. (๋ณด์•ˆ, ์„ฑ๋Šฅ, ์•ˆ์ •์„ฑ ํ–ฅ์ƒ ๋“ฑ์˜ ๋ชฉ์ ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.)์ผ๋ฐ˜์ ์œผ๋กœ ์›น์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์‘๋‹ตํ•˜๋Š” ๋ฐฉ์‹์˜ ํ†ต์‹ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ์—ฌ๊ธฐ์— ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์š”์ฒญ์„ ์ค‘๊ณ„ํ•˜๋„๋ก ํ•ด์„œ, ๋ณด์•ˆ์ƒ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ด๊ฑฐ๋‚˜, ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.์ •๋ฆฌํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.ํด๋ผ์ด์–ธํŠธ -> ํ”„๋ก์‹œ ์„œ๋ฒ„ ์š”์ฒญํ”„๋ก์‹œ ์„œ๋ฒ„ -> ์„œ๋ฒ„ ์š”์ฒญ์„œ๋ฒ„ -> ํ”„๋ก์‹œ ์„œ๋ฒ„ ์‘๋‹ต..

Vue.js & Nuxt.js

[Vue.js] Vue cli๋กœ Vue.js ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

vue cli ๊ณต์‹ ์‚ฌ์ดํŠธhttps://cli.vuejs.org/ย Vue CLIย cli.vuejs.orgย node, npm ๋ฒ„์ „ ํ™•์ธnode, npm ๋ฒ„์ „์„ ํ™•์ธํ•˜๊ณ , ์—†์œผ๋ฉด ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค.node -vnpm -vย vue cli ์„ค์น˜npm install -g @vue/cliย vue ํ”„๋กœ์ ํŠธ ์ƒ์„ฑvue create ย vue ํ”„๋กœ์ ํŠธ ์‹คํ–‰npm run serve

Vue.js & Nuxt.js

[Vue.js] ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์•Œ์•„๋ณด๊ธฐ / Vue ์ธ์Šคํ„ด์Šค, ์ปดํฌ๋„ŒํŠธ / Vue ๋””๋ ‰ํ‹ฐ๋ธŒ

Vue ์ธ์Šคํ„ด์Šค: new Vue()new Vue()๋กœ ์ƒ์„ฑํ•œ Vue ์ธ์Šคํ„ด์Šค๋Š” ํ™”๋ฉด์— ๋ฟŒ๋ ค์ง€๋Š” ์ตœ์ƒ์œ„(Root) ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งํ•œ๋‹ค.ย ํ•ด๋‹น Vue Instance์—์„œ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ˜ธ์ถœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด Vue์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์ด๋‹ค.ย ์•„๋ž˜์˜ 5๊ฐ€์ง€ ์š”์†Œ๋“ค์„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.el: '#app'Vue ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ด€๋ฆฌํ•  DOM ์š”์†Œ๋ฅผ ์ง€์ •ํ•œ๋‹ค. ์œ„์ชฝ์— id=app์ธ ์— Vue ์ธ์Šคํ„ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.ํ•ด๋‹น Vue ์ธ์Šคํ„ด์Šค๋Š” ์œ„์— id=app์ธ ํƒœ๊ทธ๋งŒ์„ ๊ด€๋ฆฌํ•œ๋‹ค.dataVue ์ธ์Šคํ„ด์Šค์—์„œ ๊ด€๋ฆฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•œ๋‹ค.ย  {{ message }} ย message๋ž€ ์ด๋ฆ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ Vue ์ธ์Šคํ„ด์Šค ๋‚ด์—์„œย this.message๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ , DOM ์š”์†Œ์—์„œ๋Š”ย {{message}}๋กœ ๊ฐ€..

DevOps

[docker] ๋„์ปค ์‹œ์ž‘ํ•˜๊ธฐ / ๋„์ปค๋กœ MariaDB ๋„์›Œ๋ณด๊ธฐ ์˜ˆ์ œ

๋„์ปค(Docker)๋ž€?๋„์ปค(docker)๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ์ด๋‹ค. ์—ฌ๋Ÿฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ํŒจํ‚ค์ง• ํ•ด์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.์ด ๊ธ€์—์„  ๋„์ปค๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๊ณ , ์ฃผ์š” ๋ช…๋ น์–ด๋“ค์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์˜ˆ์ œ๋ฅผ ์œ„ํ•ด DB๋ฅผ ํ•˜๋‚˜ ๋„์›Œ๋ณผ ๊ฒƒ์ด๋‹ค.ย ๋„์ปค ์ด๋ฏธ์ง€(image)๋„์ปค ์ด๋ฏธ์ง€๋Š” ํŠน์ • ์†Œํ”„ํŠธ์›จ์–ด(PostgreSQL ๋“ฑ)๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์„ค์ •ํŒŒ์ผ, ์ข…์†์„ฑ, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๋Š” ์ฝ๊ธฐ ์ „์šฉ ํ…œํ”Œ๋ฆฟ์ด๋‹ค. ์ด ํ…œํ”Œ๋ฆฟ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์‹ค์ œ๋กœ ํ•ด๋‹น ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ Docker Hub์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ–๊ณ ์žˆ๊ณ , docker ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ๊ฐœ์ธ์ด ๋‹ค์šด๋ฐ›์•„์„œ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.๋„์ปค ์ปจํ…Œ์ด๋„ˆ(Container)๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š”..

Front-End

[Mock Rest API] jsonplaceholder ์†Œ๊ฐœ (REST API ํ…Œ์ŠคํŠธ์šฉ ๊ฐ€์ƒ ๋ฐ์ดํ„ฐ ์ œ๊ณต ์‚ฌ์ดํŠธ)

ํ•ด๋‹น ์‚ฌ์ดํŠธ์— ์ •๋ง ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ก์šฉ์œผ๋กœ ์“ฐ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.ํ”„๋ŸฐํŠธ์—”๋“œ ์ชฝ์€ ์ฒ˜์Œ ๊ณต๋ถ€ํ•ด ๋ณด๋Š”๋ฐ ์ •๋ง ํŽธ๋ฆฌํ•œ ์‚ฌ์ดํŠธ๋“ค์ด ๋งŽ๋„ค์š”...(์ด๊ฒŒ ๋ง๋กœ๋งŒ ๋“ฃ๋˜ javascript ์ƒํƒœ๊ณ„..?)ย jsonplaceholder.typicode.comhttps://jsonplaceholder.typicode.com/ย JSONPlaceholder - Free Fake REST API{JSON} Placeholder Free fake and reliable API for testing and prototyping. Powered by JSON Server + LowDB. Serving ~3 billion requests each month.jsonplaceholder.typicode.comย ย ์œ„์˜ ์‚ฌ์ดํŠธ..

HOT
Spring Security

[Spring] ์นด์นด์˜ค ๋กœ๊ทธ์ธ API ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

Kakao Developers์ด๋ฏธ์ง€ ์„ค๋ช…์— ๊ฐ ์ด๋ฏธ์ง€ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์œ„์น˜(๊ฒฝ๋กœ) ์ ์–ด๋’€์œผ๋‹ˆ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.ย 1. KakaoDevelopers ์ ‘์†https://developers.kakao.com/ย Kakao Developers์นด์นด์˜ค API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•ด๋ณด์„ธ์š”. ์นด์นด์˜ค ๋กœ๊ทธ์ธ, ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ, ์นœ๊ตฌ API, ์ธ๊ณต์ง€๋Šฅ API ๋“ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.developers.kakao.comย 2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ถ”๊ฐ€ํ•˜๊ธฐย 3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ถ”๊ฐ€ย 4.Rest API ํ‚ค ํ™•์ธย 5. Web ํ”Œ๋žซํผ ๋“ฑ๋กย 6. ์‚ฌ์ดํŠธ ๋„๋ฉ”์ธ ์„ค์ •ย 7. ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํ™œ์„ฑํ™”, Redirect URI ๋“ฑ๋กย 8. ๋™์˜ ํ•ญ๋ชฉ ์„ค์ •์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฐœ์ธ ์ •๋ณด ๋™์˜ ์„ค์ • ( email, nickname ์ •๋ณด )ย 9. (์ถ”๊ฐ€) ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ฒ„..

Deploy

[Spring / S3] SpringBoot ํ”„๋กœ์ ํŠธ - S3 ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ

์ด์ „ ๊ธ€์—์„œ S3 bucket๊ณผ IAM์„ ์ƒ์„ฑํ•˜๊ณ  SpringBoot project์—์„œ S3 ์ ‘๊ทผ์— ์‚ฌ์šฉํ•  accessKey์™€ secretKey๋ฅผ ์–ป๋Š” ๊ฒƒ๊นŒ์ง€ ๋‹ค๋ค˜๋‹ค. 2024.01.21 - [DevOps] - [AWS/S3] Spring boot project ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๋ฅผ ์œ„ํ•ด S3 ๋ฒ„์ผ“ ๋งŒ๋“ค๊ธฐ [AWS/S3] Spring boot project ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๋ฅผ ์œ„ํ•ด S3 ๋ฒ„์ผ“ ๋งŒ๋“ค๊ธฐ Amazon S3 ๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ IAM ๋งŒ๋“ค๊ธฐ ์ƒ์„ฑ ์™„๋ฃŒ IAM accessKey, secretKey ์–ป๊ธฐ IAM - ์‚ฌ์šฉ์ž - ๋ณด์•ˆ ์ž๊ฒฉ ์ฆ๋ช… ์•ก์„ธ์Šค ํ‚ค ๋งŒ๋“ค๊ธฐ CLI ์„ ํƒ accessKey, secretKey ์ €์žฅ ์ € ๋‘ ๊ฐ€์ง€ Key๋ฅผ ์ €์žฅํ•ด ๋’€๋‹ค๊ฐ€ spring properties์— ๋“ฑ innovation123.ti..

SQL

[SQL/MariaDB] ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ (INSERT, UPDATE, DELETE)

INSERT INTO : ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ id, name, loginId, password์˜ attribute๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” MEMBER table์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค. TABLE์— ์กด์žฌํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ constraints๋“ค์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•ด์•ผํ•œ๋‹ค. ๋ฐฉ๋ฒ• 1 : ๋ชจ๋“  ์†์„ฑ ์„ ํƒ table์— ์กด์žฌํ•˜๋Š” attribute์˜ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค. table์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  attribute์— ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค. (null์ด๋ผ๋„ ๋„ฃ์–ด์•ผํ•จ) insert into member values(3, 'Lee', 'Lee1', 'pwLee'); ๋ฐฉ๋ฒ• 2 : column ์ง€์ • ์•„๋ž˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด, attribute ์ˆœ์„œ๋ฅผ ๋งž์ถ”์ง€ ์•Š์•„๋„ ๋œ๋‹ค. (์ˆœ์„œ๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค.) ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  attribut..

๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ 

[MyBatis] ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

MyBatis๋ž€?MyBatis๋Š” JdbcTemplate์ด ์ œ๊ณตํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ JdbcTemplate์˜ ๋ฌธ์ œ์  ์ค‘ ํ•˜๋‚˜์ธ ์—ฌ๋Ÿฌ ์ค„์˜ String ํ˜• sql์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ MyBatis๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.MyBatis๋Š” SQL์„ xml์— ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , xml ๋‚ด์—์„œ ๋™์  ์ฟผ๋ฆฌ๋ฅผ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.ย JdbcTemplate์€ ์Šคํ”„๋ง์— ๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ์ด๊ณ , ๋ณ„๋„์˜ ์„ค์ • ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, MyBatis๋Š” ์•ฝ๊ฐ„์˜ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ ์ฟผ๋ฆฌ์™€ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” MyBatis๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋‹จ์ˆœํ•œ ์ฟผ๋ฆฌ๋“ค์ด ๋งŽ๋‹ค๋ฉด JdbcTemplate์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋‹ค.ย ย 2024.07.31 ์ถ”๊ฐ€๋‹จ์ˆœํ•œ ๋„๋ฉ”์ธ ๊ด€๋ จ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”..

Linux ๋ฆฌ๋ˆ…์Šค

[๋ฆฌ๋ˆ…์Šค] ํ”„๋กœ์„ธ์Šค, ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ

ํ”„๋กœ์„ธ์Šค ํ”„๋กœ์„ธ์Šค = ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ์„ธ์Šค(process)๋Š” ์ปดํ“จํ„ฐ์—์„œ ์—ฐ์†์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•œ๋‹ค. foreground process / background process foreground process ์…ธ์—์„œ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์„ ๋ช…๋ นํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์ž…๋ ฅ์„ ํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•œ๋‹ค. ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋ฉด, ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ์ „๊นŒ์ง€ ์‚ฌ์šฉ์ž๋Š” ์ž…๋ ฅ์„ ํ•  ์ˆ˜ ์—†๋‹ค. [Ctrl] + c ๋ช…๋ น์–ด : ์‹คํ–‰์ค‘์ธ foreground process๋ฅผ ์ฆ‰์‹œ ์ข…๋ฃŒํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค. ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” ์™„์ „ํžˆ ์ข…๋ฃŒ๋œ๋‹ค. -> ์ž‘์—…์ด ์‹คํ–‰ ์ค‘์— ls ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด๋„ ํ•ด๋‹น ์ž‘์—…์ด ๋ชจ๋‘ ๋๋‚œ ๋’ค์— ๋™์ž‘ํ•œ๋‹ค. (sleep n)์€ n์ดˆ๋™์•ˆ ์•„๋ฌด๊ฒƒ๋„..

Database

[Redis] Redisson ๋ถ„์‚ฐ ๋ฝ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉํ•ด๋ณด๊ธฐ

๋ฌธ์ œ ์ƒํ™ฉ ์–ด๋–ค ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ˆ˜์ •์ด ์ผ์–ด๋‚  ๋•Œ ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด A๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋กœ์ง์ด 0.1์ดˆ ์†Œ์š”๋˜๋Š”๋ฐ, 0.001์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ A๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์š”์ฒญ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋“ค์–ด์™”์„ ๋•Œ ๊ฐ’์ด ์ œ๋Œ€๋กœ ์ˆ˜์ •๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ, DB ๋ฐ์ดํ„ฐ ์ˆ˜์ •์˜ ์ˆœ์ฐจ์  ์ฒ˜๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ Lock์ด ์žˆ๋‹ค. Lock ํŠธ๋žœ์žญ์…˜ ๋ฝ๊ณผ ๋น„์Šทํ•œ ๊ฐœ๋…์œผ๋กœ ์–ด๋–ค ๋ฐ์ดํ„ฐ ์ˆ˜์ •, ์ ‘๊ทผ ๋“ฑ์— Lock์„ ํ•„์š”๋กœ ํ•˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ์šฐ์„  Lock์„ ํš๋“ํ•˜๊ณ  ์ˆ˜์ • ํ›„์— Lock์„ ๋ฐ˜๋‚ฉํ•œ๋‹ค. ๋งŒ์•ฝ Lock์„ ํš๋“ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์—์„œ๋Š” Lock์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ถ„์‚ฐ ๋ฝ(Distributed Lock) ํ•˜๋‚˜์˜ ๊ณต์œ  ์ž..

Web & Network

[Network] ๋ฐฉํ™”๋ฒฝ - ์ธ๋ฐ”์šด๋“œ & ์•„์›ƒ๋ฐ”์šด๋“œ ๊ทœ์น™์ด๋ž€?

๋ฐฉํ™”๋ฒฝ์ด๋ž€?๋ฐฉํ™”๋ฒฝ(Firewall)์€ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์‹œ์Šคํ…œ์ด๋‹ค. ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋ณด์•ˆ ๊ทœ์น™์— ๋”ฐ๋ผ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๋Š” ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ์žฅ์น˜ ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค. ๋ถˆ๋ฒ• ์ ‘๊ทผ, ์•…์˜์  ์ ‘๊ทผ, ํŠธ๋ž˜ํ”ฝ ๋‚ญ๋น„ ๋“ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.ย ๋ฐฉํ™”๋ฒฝ์€ ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง, ๋„คํŠธ์›Œํฌ ์„ธ๋ถ„ํ™”, ๊ฐ์‹œ ๋ฐ ๋กœ๊น…, ์ธ์ฆ, ํ”„๋ผ์ด๋ฒ„์‹œ ๋ณดํ˜ธ ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.์ด์ค‘ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™, ์•„์›ƒ๋ฐ”์šด๋“œ ๊ทœ์น™์€ ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์— ํฌํ•จ๋œ๋‹ค.ย ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง(์ ‘๊ทผ ์ œ์–ด)ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง์ด๋ž€ ๋ฐฉํ™”๋ฒฝ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.๋ฐฉํ™”๋ฒฝ์ด ํ—ˆ์šฉํ•œ ํŠธ๋ž˜ํ”ฝ๋งŒ ๋„คํŠธ์›Œํฌ๋กœ ๋“ค์–ด์˜ค๊ฑฐ๋‚˜ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง ๋ฐฉ์‹ ์ค‘ ํŒจํ‚ท ํ•„ํ„ฐ๋ง ๋ฐฉ์‹์€ย ๋ฐ์ดํ„ฐ ํŒจํ‚ท์˜ ํ—ค๋” ์ •๋ณด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉ/..

Spring

[Spring Boot] @PathVariable๊ณผ @RequestParam - ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ›๊ธฐ

@PathVariable ๊ฒฝ๋กœ๋ณ€์ˆ˜ PathVariable์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ์— ์‹๋ณ„์ž๋ฅผ ๋„ฃ์–ด์„œ ๋™์ ์œผ๋กœ URL์— ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. URL ๊ฒฝ๋กœ์˜ ์ค‘๊ด„ํ˜ธ { } ์•ˆ์ชฝ์— ๋ณ€์ˆ˜๋ฅผ ๋‹ด๊ณ , ๊ทธ ๋ณ€์ˆ˜๋ฅผ @PathVariable(" ")๋กœ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ๊ธฐ๋ณธ URL์˜{postId}์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ long orderId์™€ ์ด๋ฆ„์„ ๋งž์ถฐ์ค€๋‹ค. @GetMapping ("/order/{orderId}") public String getOrder(@PathVariable String orderId){ log.info("orderId : {}", orderId); return "orderId:"+ orderId; } ์š”์ฒญ : http://localhost:8080/order/123 ์‘๋‹ต : orderId:1..

Spring

[Spring] ์„ธ์…˜, ์ฟ ํ‚ค, @SessionAttribute ๋กœ๊ทธ์ธ ํ™•์ธ

์ฟ ํ‚ค ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด, ๋กœ๊ทธ์ธ ์‹œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋‹ค. ๊ฐ™์€ ํ™”๋ฉด๋„ ๋กœ๊ทธ์ธ ์ด์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ํ™”๋ฉด๊ณผ ๋น„๋กœ๊ทธ์ธ ์ด์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ํ™”๋ฉด์„ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•ด์•ผ ํ•  ๋•Œ๋„ ์žˆ๋‹ค. ์ด๋•Œ, ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ loginId๊ฐ€ ๋‹ด๊ธด ์ฟ ํ‚ค๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ๊ทธ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•ด ๋’€๋‹ค๊ฐ€ HTTP ์š”์ฒญ ์‹œ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•œ๋‹ค. //Cookie ์ƒ์„ฑ์ž Cookie idCookie = new Cookie( String name, String value ) //HTTP ์‘๋‹ต์— ์ฟ ํ‚ค ๋‹ด๊ธฐ response.addCookie( idCookie ); //์ฟ ํ‚ค ์‚ญ์ œํ•˜๋Š” ๋ฒ• idCookie.setMaxAge(0); //..

Java Library

[Java] ๋ฌธ์ž์—ด ๋ถ™์ด๊ธฐ - StringJoiner์™€ String.join() ์•Œ์•„๋ณด๊ธฐ

์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์ผ ๋•Œ ๋ณดํ†ต StringBuilder๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํŠน์ • ์ƒํ™ฉ์—์„œ ๋” ์œ ์šฉํ•œ ํด๋ž˜์Šค๊ฐ€ ์žˆ์–ด์„œ ์†Œ๊ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. StringBuilder๋ฅผ ์ผ์„ ๋•Œ ์•„์‰ฌ์šด ์  ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์ผ ๋•Œ ๋งˆ์ง€๋ง‰์— ๊ตฌ๋ถ„์ž๊ฐ€ append ๋˜๋Š” ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. String[] arr = {"one", "two", "three"}; StringBuilder sb = new StringBuilder(); for(int i = 0; i < arr.length; i++){ if(i == arr.length - 1){ sb.append(arr[i]); break; } sb.append(arr[i]).append(","); } System.out.println(sb); ..

HSRyuuu
HS_dev_log