์ „์ฒด ๊ธ€

API์— ๋Œ€ํ•ด์„œ REST API, RESTful API ๋“ฑ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์ •๋ฆฌํ–ˆ์ง€๋งŒ, ๋ญ”๊ฐ€ ํ™•์‹คํžˆ ๋นก! ์˜ค์ง€์•Š์•„์„œ ๋‚ด๋ฐฐ์บ  ํ•™์Šต ์ค‘์— ํ•œ ๋ฒˆ๋” ๋‹ค๋ฅธ ๋ ˆํผ๋Ÿฐ์Šค๋“ค์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ •๋ฆฌํ•ด๋ณด์ž!!!! API(Application Programming Interface)๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก, ์šด์˜ ์ฒด์ œ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ์ธํ„ฐํŽ˜์ด์Šค feat. wiki ๋น„์œ ๋ฅผ ํ†ตํ•ด์„œ !! EX) ์—์–ด์ปจ์„ ๊ฐ€๋™ํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ • ์‚ฌ๋žŒ์ธ ๋‚ด๊ฐ€ ์—์–ด์ปจ์„ ์ผœ๊ธฐ ์œ„ํ•ด์„œ ๋ฆฌ๋ชจ์ปจ์˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ‚ค๊ณ , ๋˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์˜จ๋„๋ฅผ ์„ค์ •ํ•จ ๋‚˜ - ๋ฆฌ๋ชจ์ปจ - ์—์–ด์ปจ ์ด ๊ณผ์ •์—์„œ์˜ ๋ฆฌ๋ชจ์ปจ์ฒ˜๋Ÿผ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์šด์˜์ฒด์ œ ๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ ์‚ฌ์ด์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๋„์™€์คŒ ..
clean code ๋…์„œ ์‹œ์ž‘ ๋‚ด๋ฐฐ์บ  ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ, ๊ธฐ์กด์— ๋‚˜๋ฆ„ ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๋ฏฟ์Œ์ด ์™€์žฅ์ฐฝ๐Ÿคฉ ๊นจ์ ธ๋ฒ„๋ ธ๋‹ค.. ๊ทธ๋ž˜์„œ ํ•ญ์ƒ ๋ฏธ๋ฃจ๊ณ  ๋ฏธ๋ฃจ๋ฉฐ, ์ฑ…์žฅ์„ ์ฐจ์ง€ํ•˜๋˜ clean code ๋…์„œ ์‹œ์ž‘!! ์ฝ๊ณ  ๋‚˜์„œ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌ๋„ ํ•ด๋ดค๋‹ค. ์•„์ง 1,2์žฅ ๋ฐ–์— ์•ˆ์ฝ์—ˆ์ง€๋งŒ ๋งค์ผ ๊พธ์ค€ํžˆ ์ฝ์œผ๋ฉด์„œ ๊ธฐ๋กํ•ด์•ผ๊ฒ„๋‹ค~ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋‚ด์šฉ์„ ๊ธฐ์–ตํ•ด์„œ ๊ผญ ํด๋ฆฐํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด์•ผ์ง€~ https://hyeyun.tistory.com/entry/%ED%81%B4%EB%A6%B0%EC%BD%94%EB%93%9C-12%EC%9E%A5-%EC%A0%95%EB%A6%AC ํด๋ฆฐ์ฝ”๋“œ 1~2์žฅ ์ •๋ฆฌ 1์žฅ. ๊นจ๋—ํ•œ ์ฝ”๋“œ ์›์ดˆ์  ๋‚œ์ œ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ธฐํ•œ์„ ๋งž์ถ”๋ ค๋ฉด ๋‚˜์œ ์ฝ”๋“œ๋ฅผ ์–‘์‚ฐํ•  ์ˆ˜๋ฐ–์— ์—†๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด ..
์›น์˜ ๋™์ž‘๋ฐฉ์‹ IP ์ฃผ์†Œ๋ž€? ๊ฑฐ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ๋ง์—์„œ ๊ฐ ์ปดํ“จํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์œ„์น˜ ์ฃผ์†Œ ๋„คํŠธ์›Œํฌ์ƒ์—์„œ์˜ ๋ฐ์ดํ„ฐ ์†ก/์ˆ˜์‹ ์€ ์ด ์ฃผ์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ด๋ฃจ์–ด์ง ๋ธŒ๋ผ์šฐ์ €๋ž€? ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ, ์—ฃ์ง€์™€ ๊ฐ™์ด ์›น ํŽ˜์ด์ง€, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๋“ฑ์˜ ์ปจํ…์ธ ๋ฅผ ์†ก/์ˆ˜์‹ ํ•˜๊ณ  ํ‘œํ˜„ํ•ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด DNS(Domain Name Server)๋ž€? ๋ธŒ๋ผ์šฐ์ €์—์„œ 192.168.1.1 ๊ฐ™์€ ip์ฃผ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ naver.com ๊ณผ ๊ฐ™์€ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉ ์ค‘๊ฐ„์— ์š”์ฒญ์„ ๋ฐ›์•„์ค„ ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ์™€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์ค‘๊ณ„ํ•ด์ฃผ๋Š” ์„œ๋ฒ„๊ฐ€ ์ค‘๊ฐ„์— ์กด์žฌํ•จ HTTP๋ž€? ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๋ฐ›๋Š” ์ƒํ˜ธ๊ฐ„์— ์•ฝ์†์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด? ์ƒํ˜ธ๊ฐ„์— ๊ทธ ์•ฝ์†์„ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด? Request URL : www.naver.com Address : 192.0.0.1 ..
1์žฅ. ๊นจ๋—ํ•œ ์ฝ”๋“œ ์›์ดˆ์  ๋‚œ์ œ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ธฐํ•œ์„ ๋งž์ถ”๋ ค๋ฉด ๋‚˜์œ ์ฝ”๋“œ๋ฅผ ์–‘์‚ฐํ•  ์ˆ˜๋ฐ–์— ์—†๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด ๋นจ๋ฆฌ ๊ฐ€๋ ค๊ณ  ์‹œ๊ฐ„์„ ๋“ค์ด์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์˜คํžˆ๋ ค ์—‰๋ง์ง„์ฐฝ์ธ ์ƒํƒœ๋กœ ์ธํ•ด ์†๋„๊ฐ€ ๊ณง๋ฐ”๋กœ ๋Šฆ์–ด์ง€๊ณ , ๊ฒฐ๊ตญ ๊ธฐํ•œ์„ ๋†“์นœ๋‹ค. ๊ธฐํ•œ์„ ๋งž์ถ”๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋นจ๋ฆฌ ๊ฐ€๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€, ์–ธ์ œ๋‚˜ ์ฝ”๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ์Šต๊ด€์ด๋‹ค. ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ž€? ๋น„์•ผ๋„ค ์ŠคํŠธ๋กญ์ŠคํŠธ๋ฃน - C++ ์ฐฝ์‹œ์ž ๋…ผ๋ฆฌ๊ฐ€ ๊ฐ„๋‹จํ•ด์•ผ ๋ฒ„๊ทธ๊ฐ€ ์ˆจ์–ด๋“ค์ง€ ๋ชปํ•œ๋‹ค. ์˜์กด์„ฑ์„ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์•ผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค. ์˜ค๋ฅ˜๋Š” ๋ช…๋ฐฑํ•œ ์ „๋žต์— ์˜๊ฑฐํ•ด ์ฒ ์ €ํžˆ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊นจ๋—ํ•œ ์ฝ”๋“œ๋Š” ํ•œ ๊ฐ€์ง€๋ฅผ ์ œ๋Œ€๋กœ ํ•œ๋‹ค. ๊ทธ๋ž˜๋”” ๋ถ€์น˜ - Object Oriented Analysis and Design With Application ์ €์ž ๊นจ๋—ํ•œ ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํ•˜..
๊ฐœ์ธ ๊ณผ์ œ ํ”ผ๋“œ๋ฐฑ ๊ฐœ์ธ ๊ณผ์ œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์ˆ˜์ • ๋Œ์ž…! ๊ทธ ์™€์ค‘์— Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) ์—๋Ÿฌ ๋ฐœ์ƒ! ๋ฉ”๋‰ด ์‚ญ์ œ ๊ธฐ๋Šฅ์—์„œ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, ๊ฐ ๋ฉ”๋‰ด๋ฅผ ๋Œ๋ฉด์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ๋ฐœ๊ฒฌํ•˜๋ฉด removeํ•จ์ˆ˜๋กœ ์ œ๊ฑฐํ•˜๋Š” ๋ถ€๋ถ„์ด์—ˆ๋‹ค. items.forEach((key, value) -> { for (int i = 0; i < value.size(); i++) { if (value.get(i).getIndex() == id) { value.remove(i); break; } } }); ์›์ธ์„ ์ฐพ๋‹ค๋ณด๋‹ˆ, ๋งจ ์ฒ˜์Œ์— ๊ฐ’์„ initํ•ด์ฃผ๋Š”..
staic ๋ณ€์ˆ˜ class Person { String name = "์ด"; } public class Main { public static void main(String[] args){ Person person1 = new Person(); Person person2 = new Person(); } }Person ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ฐ์ฒด๋งˆ๋‹ค ๊ฐ์ฒด ๋ณ€์ˆ˜ name์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ณ„๋„๋กœ ํ• ๋‹น๋œ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ name ๊ฐ’์€ ์–ด๋–ค ๊ฐ์ฒด๋“ ๊ฐ„์— ๋™์ผํ•œ ๊ฐ’์ด๋‹ค. ์ด๋ฅผ ํ•ญ์ƒ ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” static์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. class Person { static String name = "์ด"; } public class Main { public static void m..
์ ์  ์ผ๊ธฐ์žฅ์ด ๋˜์–ด๊ฐ€๋Š” ๋‚˜์˜ TIL.... ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ๋‹ค..... ์ข€ ๋” TIL ์ž‘์„ฑ ์˜ˆ์‹œ๋“ค์„ ์ฐธ๊ณ ํ•ด์„œ ๋„์›€๋˜๋Š” TIL์„ ์ž‘์„ฑํ•ด๋ด์•ผ๊ฒŒ๋”ฐ!! TIL ํŠน๊ฐ•์—์„œ ์•Œ๋ ค์ฃผ์‹  ๋ธ”๋กœ๊ทธ๋“ค์„ ์ข€ ์ฐธ๊ณ ํ•ด์•ผ์ฅฅ์ฅฅ์ฅฅ ๋‚ด๋ฐฐ์บ  ํŒ€ ๊ณผ์ œ ๊ธฐ์กด์— ์žˆ๋˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ merge ์‹œ ์ถฉ๋Œ์ด ์ž์ฃผ๋‚˜๊ณ , ๊ตฌ์กฐ๊ฐ€ ์กฐ๊ธˆ ์ด์ƒํ•ด์„œ ๊ฒฐ๊ตญ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด๋”ฐ๐Ÿ‘ ์ข€ ๋” ํ˜‘์—… ๊ณผ์ •์—์„œ์˜ git ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ด์•ผ๊ฒ ๋‹ค. ํŠนํžˆ ๋ญ”๊ฐ€ ์•„์ง merge์—์„œ rebase, fast-forward๋“ฑ๋“ฑ์ด ๊ตฌ์ฒด์ ์œผ๋กœ ์ž˜ ์ดํ•ด๊ฐ€ ๋˜์ง€์•Š์•„์„œ ๋” ์–ด๋ ค์šด๊ฑฐ๊ฐ™๋‹น ์˜ค๋Š˜์€ ํŒ€์›์ด ํ˜ธํ…” ๊ฐ์‹ค ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด์คฌ๊ณ , ๊ทธ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ˆ์•ฝ๊ธฐ๋Šฅ์„ ์™„๋ฃŒํ–ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ๋‹ค๋ฅธ ํŒ€์›์ด ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋“ค์„ ์ž˜ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์„œ ์ž˜ ์™„๋ฃŒํ•œ๋“ฏ~! ๊ฐœ์ธ ์˜ค๋Š˜ ์›๋ž˜ ์ž์†Œ์„œ ํ•˜๋‚˜ ๋‹ค ์“ธ๋ผํ–ˆ๋Š”๋ฐ, ์ด์ œ ์ผ์ฃผ์ผ์ด..
๋‚ด๋ฐฐ์บ  ๐Ÿ™‹‍โ™€๏ธ ์˜ค๋Š˜ ํŒ€๋ณ„๊ณผ์ œ ์‹œ์ž‘๐Ÿ‘ ๊ธฐ์กด ํ‚ค์˜ค์Šคํฌ ๊ฐœ์ธ ๊ณผ์ œ๋ฅผ ํŒ€์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ๊ณผ ์ƒˆ๋กญ๊ฒŒ ํ˜ธํ…” ์˜ˆ์•ฝ ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„์ด์žˆ์—ˆ๋‹ค. ์šฐ๋ฆฌํŒ€์€ ๊ธฐ์กด ๊ฒƒ๋ณด๋‹ค ์ƒˆ๋กญ๊ฒŒ ํ˜ธํ…” ์˜ˆ์•ฝ ํ”„๋กœ๊ทธ๋žจ์„ ์„ ํƒํ–ˆ๋‹ค! ๋จผ์ € ๊ธฐ๋Šฅ ๋ถ„๋ฅ˜ํ•˜๊ณ  ์—ญํ• ์„ ๋ถ„๋‹ดํ•˜๊ณ  ๊ฐœ๋ฐœ ์ง„ํ–‰!! ํด๋ฆฐํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  ์‹ถ์€๋ฐ... ๋‚˜๋Š” ๋ญ”๊ฐ€ ์ฃผ์ €๋ฆฌ์ฃผ์ €๋ฆฌ ๋˜๋Š”๋“ฏ... ์ง‘์—์žˆ๋Š” ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ์ข€ ์ฝ์–ด์•ผ๊ฒ ๋‹ผ ํ™”์ดํŒ….....
KIMHYEYUN
๐Ÿ’