Animated Hello Kitty Wink

๐Ÿถ๐Ÿพ

    [spring] ์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ

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

    [Java] Sort ์‚ฌ์šฉ

    ์ฝ”ํ…Œ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๋ณด๋‹ˆ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ์ •๋ฆฌ ! Arrays.sort(๋ฐฐ์—ด); โœ”๏ธ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ โœ”๏ธ ๋ฌธ์ž์—ด์˜ ๊ฒฝ์šฐ ์•„์Šคํ‚ค์ฝ”๋“œ์ˆœ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, ํ•œ๊ธ€๋„ ๊ฐ€๋‚˜๋‹ค ์ˆœ ๐Ÿ“ int, long, short, double ๋“ฑ ๊ธฐ๋ณธํƒ€์ž…์— ๋Œ€ํ•œ ์ •๋ ฌ์ง€์›, Reference ํƒ€์ž…์˜ ๋ฐฐ์—ด์˜ ์ •๋ ฌ๋„ ์ง€์› ๐Ÿ“ ์ˆซ์ž > ๋Œ€๋ฌธ์ž > ์†Œ๋ฌธ์ž > ํ•œ๊ธ€ ์ˆœ ˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ ์‹ถ์€ ๊ฒฝ์šฐ Arrays.sort(๋ฐฐ์—ด, Collections.reversOrder()); โœ”๏ธ ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ Comparator์˜ ๊ตฌํ˜„์ฒด๋ฅผ ์ฃผ๋ฉด ์›ํ•˜๋Š” ๋ฐฉ์‹๋Œ€๋กœ ์ •๋ ฌ ๊ฐ€๋Šฅ (reversOrder() ๋ง๊ณ ๋„) Compareraor โœ”๏ธ ์ •๋ ฌ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ช…์„ธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค โœ”๏ธ Reference ํƒ€์ž…์˜ ๋ฐฐ์—ด์—์„œ ์ •..

    [spring] loc, DI, ์ปจํ…Œ์ด๋„ˆ

    ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ์„ ์ˆ˜๊ฐ•ํ•˜๋ฉด์„œ ๋‚˜์˜จ ๊ฐœ๋…์ด๋‹ค. Appconfig๋ฅผ ๋งŒ๋“ค์–ด์„œ ์—ฐ๊ฒฐํ•ด์ฃผ๊ธฐ ์ „์—๋Š” OrderServiceImpl ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ์งฐ์—ˆ๋‹ค. public class OrderServiceImpl implements OrderService { private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final MemberRepository memberRepository = new MemoryMemberRepository(); ... } ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์งœ๊ฒŒ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ(OrderServiceImpl)์—์„œ DiscountPolicy์™€ ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค ์ฝ”๋“œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ตฌ..

    [Java] length / length() / size() ์ฐจ์ด

    ์•„์ง ์ž๋ฐ” ์–ธ์–ด์— ์ต์ˆ™์น˜ ์•Š์•„์„œ์ธ์ง€ ์ฝ”ํ…Œ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ length .. size ํ˜ผ๋™ํ•ด์„œ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ ์ •๋ฆฌํ•ด๋‘๋ ค๊ณ  ํ•œ๋‹ค ! 1. length โœ”๏ธ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์•Œ๊ณ ์ž ํ•  ๋•Œ โœ”๏ธ int[], String[] .. 2. length() โœ”๏ธ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์•Œ๊ณ ์ž ํ•  ๋•Œ โœ”๏ธ String, StringBuilder .. 3. size() โœ”๏ธ ์ปฌ๋ ‰์…˜ํ”„๋ ˆ์ž„์›Œํฌ ํƒ€์ž…์˜ ๊ธธ์ด๋ฅผ ์•Œ๊ณ ์ž ํ•  ๋•Œ โœ”๏ธ ArrayList, Set ..

    [spring] Test ์ฝ”๋“œ - assertThat

    ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ์„ ๋“ค์œผ๋ฉด์„œ ๋‚˜์˜จ assertThat ! Test ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, system.out.print()์œผ๋กœ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ  ์†Œ์Šค์ฝ”๋“œ์˜ ํŠน์ • ๋ชจ๋“ˆ์ด ์ •ํ™•ํžˆ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. AssertJ๋ž€ ์ž๋ฐ” Juit ํ…Œ์ŠคํŠธ์ฝ”๋“œ์— ์‚ฌ์šฉ๋˜์–ด, ํ…Œ์ŠคํŠธ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ํŽธ์˜์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. AssertJ์—์„œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋Š” assertThat() ์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ๊ฐ•์˜์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜์˜€๋‹ค. import org.assertj.core.api.Assertions; Assertions.assertThat(ํ…Œ์ŠคํŠธ ํƒ€๊ฒŸ).isEqualTo(๊ธฐ๋Œ€๋˜๋Š” ๊ฐ’); ์ข€ ๋” ๊ฐ€๋…์„ฑ(?)์„ ๋†’์ด๋ ค๋ฉด import static org.assertj.core.api.Assertions.*; ..

    [PGS-Java] ๊ธฐ๋Šฅ๊ฐœ๋ฐœ(lv.2) - Math.ceil(), ArrayList โžก๏ธ Array

    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค "๊ธฐ๋Šฅ๊ฐœ๋ฐœ(lv.2)" ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋Š”๋ฐ, ๋„ˆ๋ฌด ์ฝ”๋“œ๋ฅผ ๊ธธ๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ์งœ์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์•„ ๋‹ค๋ฅธ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๊ณ  ๊ฐœ์„ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค ! ์ผ๋‹จ ๋‚ด ํ’€์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { // ์ž‘์—…์ด ๋๋‚˜๊ธฐ๊นŒ์ง€ ๋‚จ์€ ์ผ ์ˆ˜ Queue q = new LinkedList(); for (int i = 0; i < speeds.length; i++) { int lastProgresses = 100-progresses[i]; if (lastProgresses % speeds[i] == 0) { q.add(lastProgresses/speeds[i]); } el..

    [Java] Stack, toCharArray ์‚ฌ์šฉ

    ๋ฐฑ์ค€ 9093์„ ํ‘ธ๋Š” ๊ณผ์ •์—์„œ Java์—์„œ Stack์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ตํžˆ๊ณ , ์•ž์„  BufferedReader์™€ BufferedWriter์„ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค. ๋˜ํ•œ, toCharArray()๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜๋‹ค. โœ”๏ธ String.toCharArray() ๋ฌธ์ž์—ด์„ charํ˜• ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค ๋ฌธ์ œ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด BufferedReader๋กœ ๋ฐ›์•„์ค€ ๋ฌธ์ž์—ด์„ charํ˜• ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค. String str = br.readLine() + "\n"; char[] arr = str.toCharArray(); โœ”๏ธ Stack ์Šคํƒ์€ ํ•œ์ชฝ ๋์—์„œ๋งŒ ์ž๋ฃŒ๋ฅผ ๋„ฃ๊ณ  ๋บ„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค(LIFO) ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž๋ฐ” Stack ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. import java.util...

    [Java] ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…์ถœ๋ ฅ

    ๋ณดํ†ต java์—์„œ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด Scanner๊ณผ System.out ์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์†๋„ ์ธก๋ฉด์—์„œ BufferedReader์™€ StringBuilder๋‚˜ BufferedWriter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•ด์„œ ๋ฐฉ๋ฒ•์„ ์ตํ˜€๋‘๋ ค๊ณ  ํ•œ๋‹ค ! (์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š๊ณ  ๋ฒ„ํผ๋ฅผ ๊ฑฐ์ ธ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํšจ์œจ์„ฑ์„ ๋†’์ž„) โœ”๏ธ BufferedReader๋Š” Enter๋งŒ ๊ฒฝ๊ณ„๋กœ ์ธ์‹, ๋ฐ›์€ ๋ฐ์ดํ„ฐ String์œผ๋กœ ๊ณ ์ • โžก๏ธ ์ž…๋ ฅ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณตํ•ด์•ผํ•จ import java.io.*; import java.util.*; public static void main(String args[]) throws IOException { } // ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•„์š” BufferedReader br = new BufferedRe..

    [django] ์ดˆ๊ธฐ project ์ƒ์„ฑ ๋ฐ ์‹คํ–‰

    1. ๊ฐ€์ƒํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ python3 -m venv venv 2. ๊ฐ€์ƒํ™˜๊ฒฝ ์‹คํ–‰ source venv/bin/activate +) dectivate : ๊ฐ€์ƒํ™˜๊ฒฝ ๋„๊ธฐ 3. pip์„ค์น˜ pip install django โœ”๏ธ django rest framework ์‚ฌ์šฉํ• ๊ฑฐ๋ผ๋ฏ„ pip install djangorestframework โœ”๏ธ pip freeze > requirements.txt ํ†ตํ•ด์„œ ์„ค์น˜ํ•œ๊ฑฐ requirements.txt ํด๋”๋กœ ๋“ค๊ฐ ์ดํ›„ ํ˜‘์—… ํ•˜๋Š” ์‚ฌ๋žŒ pip install -r requirements.txt ์ด๋ ‡๊ฒŒ ์„ค์น˜ํ•˜๋ฉด ๊ฐ™์€ ๋ฒ„์ „์œผ๋กœ ์„ค์น˜ ๊ฐ€๋Šฅ 4. ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ django-admin startproject config . 5. ์„œ๋ฒ„ ๊ฐ€๋™ python manage.py runser..