์ ์ฒด ๊ธ
[Node.js] Slack ๋ด์ผ๋ก ์ผ์ ์๊ฐ๋ง๋ค DM ๋ฐ์กํ๊ธฐ
42Seoul์ ์บ๋น๋ ๋์ฌ ์๋น์ค ๋ฐฐํฌ๋ฅผ ์๋๊ณ ๋ฐ๋ฉ๊ธฐํ์ด ์๋ฐํ ์ ์ ๋ฅผ ๋์์ผ๋ก ์ฌ๋ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์กํ๋ ์ฌ๋๋ด์ ๋ง๋ค์ด๋ดค๋ค. ๋์ฌ ์ฑ๊ณต์ & ๋งค์ผ ์ค์ 9์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ฉ์ผ์ด ๋ค์ ๋ ์ธ ํ์์ ๋์์ผ๋ก ์ฌ๋ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์กํ๋ค. ์ฌ๋ ๋ด์ ์์ฑํ๋ ๊ณผ์ ์ ์๋ตํ๊ฒ ๋ค. https://api.slack.com/apps ์ ์ฃผ์๋ก ์ ์ ํ ์ฌ๋๋ด์ ์์ฑํ์๋ค๋ฉด Features -> OAuth & Permissions -> Scopes ์์ ์ง์ ํ ์ํฌ์คํ์ด์ค์์ ๋ด์ด ์ฌ์ฉํ ๊ถํ์ ์ค์ ํ ์ ์๋ค. DM ๋ฐ์ก์ ์ํ chat: write ๊ณผ ์ํฌ์คํ์ด์ค์ ์๋ ์ ์ ์ ๋ณด๋ฅผ ์ฝ์ด์ค๊ธฐ ์ํ user:read ๋ฅผ ์ถ๊ฐํ๋ค. ๊ถํ์ ์ถ๊ฐํ ํ OAuth Tokens for Your Workspace๋ก ์ฌ๋ผ๊ฐ์ ํ ..
[42Seoul] Philosophers : ๋ฎคํ ์ค์ ์ธ๋งํฌ์ด
์ด๋ฒ ๊ณผ์ ๋ Dining Philosophers Problems (์ฒ ํ์๋ค์ ๋ง์ฐฌ ๋ฌธ์ )๋ฅผ Mutex๋ฅผ ์ฌ์ฉํด ๋ฉํฐ์ค๋ ๋๋ฅผ ๊ตฌํํ๋ ๋ฌธ์ ์ด๋ค. Dining Philosophers Problems ์ด๋? ์ฒ ํ์๋ค์ ๋ง์ฐฌ๋ฌธ์ ๋ n๋ช ์ ์ฒ ํ์๊ฐ ์ํ ํ ์ด๋ธ์ ์์์์ผ๋ฉฐ ์์ชฝ์๋ ํฌํฌ๊ฐ ๋์ฌ์ ธ ์๊ณ ํ ์ด๋ธ์ ์ค๊ฐ์๋ ์์์ด ์๋ค. ๊ฐ ์ฒ ํ์๋ ์์ชฝ์ ํฌํฌ๋ฅผ ๋ชจ๋ ์ง์ด์ผ๋ง ์์์ ๋จน์ ์ ์์ผ๋ฉฐ ์ผ์ ์๊ฐ ์์์ ๋จน์ง ๋ชปํ๋ฉด ์ฃฝ๋๋ค. ์์์ ๋ค ๋จน์ผ๋ฉด ํฌํฌ๋ฅผ ๋ด๋ ค๋๊ณ ์๊ฐ์ ์์ํ๋ฉฐ ์ผ์ ์๊ฐ ์๊ฐ์ด ๋๋๋ฉด ๋ค์ ํฌํฌ๋ฅผ ๋ค๊ณ ์์์ ๋จน๋๋ค. ์ฌ๊ธฐ์ ์ฒ ํ์๋ process / thread ๊ฐ ๋๋ฉฐ ํฌํฌ๋ ๊ณต์ ์์์ด ๋๋ค. ์ด ๋ฌธ์ ๋ ๊ต์ฐฉ ์ํ(Deadlock)์ ์ ์ค๋ช ํ๋ ์์์ด๋ฉฐ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ ์ ์๋ 4๊ฐ์ง..
[JAVA] :: ์๋ฐ ๊ธฐ์ด 6 :: ์ธํฐํ์ด์ค (Interface)
๐ ๋ ธ์ ์ผ๋ก ๋ณด๊ธฐ 0. ์ธํฐํ์ด์ค๋? ์ธํฐํ์ด์ค๋ ์ผ์ข ์ ์ถ์ํด๋์ค๋ก ์ถ์๋ฉ์๋, ์์๋ง ํฌํจ ๊ฐ๋ฅ ๐ก ์๋ฐ 8 ๋ถํฐ default ๋ฉ์๋, static ๋ฉ์๋๋ฅผ ์ธํฐํ์ด์ค์ ๋ฉค๋ฒ๋ก ์ฌ์ฉ๊ฐ๋ฅ ์ถ์ ํด๋์ค์ฒ๋ผ new ๋ฅผ ์ด์ฉํ ๊ฐ์ฒด์์ฑ์ ํ ์ ์๋ค. ์ธํฐํ์ด์ค์ ์ ์ธ๊ณผ ์์ interface InterfaceName { } class ClassName implements InterfaceName{ } 1. ์ธํฐํ์ด์ค๋ฅผ ์ฐ๋ ์ด์ ๊ทธ๋ ๋ค๋ฉด ์ถ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ธํฐํ์ด์ค๋ฅผ ์ฐ๋ ์ด์ ๊ฐ ๋ฌด์์ผ๊น? ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค ๋ณด๋ค ๋ ์ถ์์ ์ธ ๊ฐ๋ ์ด๋ค. ์ถ์ ํด๋์ค๋ ๊ตฌํ ๋ฉ์๋๋ ํฌํจ์ ํ ์ ์์ด ํ์ฅ์ ๊ฐ๋ ์ด๋ผ๋ฉด ์ธํฐํ์ด์ค๋ ๊ตฌํ ์ฝ๋๊ฐ ์์ด ๊ธฐ๋ฅ ๊ตฌํ์ ๊ฐ์ ํ๋ค. ์ถ์ ํด๋์ค๋ ๋ค์ค์์์ ์ง์ํ์ง..
[JAVA] :: ์๋ฐ ๊ธฐ์ด 5 :: ๋คํ์ฑ / InstanceOf / Abstract Class / Upcasting & Downcasting
๋คํ์ฑ(polymorphism) ๊ฐ์ฒด์งํฅ์์ ๋คํ์ฑ์ด๋ "์ฌ๋ฌ๊ฐ์ง ํํ๋ฅผ ๊ฐ์ง ์ ์๋"์ด๋ ๋ป์ด๋ค. ์๋ฐ์์๋ ์์ ํด๋์ค ํ์ ์ ์ฐธ์กฐ๋ณ์๋ก ํ์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. class Animal{ void run(){System.out.println("๋ฌ๋ฆฌ์");} } class Cat extends Animal{ void eat(){System.out.println("์ธ๋ฅด๋จน์");} } class Polymorphism{ public static void main(String[] args) { Animal cat = new Cat(); cat.run(); // cat.eat(); error } } ์ค์ ์์ฑ๋ ์ธ์คํด์ค๋ Cat ํ์ ์ด์ง๋ง Animal ํ์ ์ผ๋ก ์ฐธ์กฐ๋์๋ค. ์ด..
[JAVA] :: ์๋ฐ ๊ธฐ์ด 4 :: ์์ / ์ค๋ฒ๋ผ์ด๋ฉ(overriding) / IS-A vs HAS-A / ๊ฐ์ํจ์
์์(Inheritance) ์์์ด๋, ๊ธฐ์กด์ ์๋ ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค. ์ฆ ์์์ ๋ฐ๋ ํด๋์ค๋ ์์ํ๋ ํด๋์ค์ ๋ฉค๋ฒ๋ณ์์ ๋ฉ์๋๋ฅผ ์์๋ฐ๋๋ค. ์์ํ๋ ํด๋์ค : ์์ ํด๋์ค, ๋ถ๋ชจ ํด๋์ค, base class, super class ์์๋ฐ๋ ํด๋์ค : ํ์ํด๋์ค, ์์ ํด๋์ค, derived class, sub class ๊ธฐ์กด์ ์๋ ํด๋์ค๋ณด๋ค ๋ ๊ตฌ์ฒด์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง ํด๋์ค๋ฅผ ๊ตฌํํด์ผํ ๋ ๊ธฐ์กด ํด๋์ค๋ฅผ ์์์ ํ๊ฒ๋๋ค. ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ๋ฉค๋ฒ๋ค์ ์์ ๋ฐ๊ฒ ๋์ด ์์ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค๋ฅผ ํฌํจํ๋ ํํ๊ฐ ๋๋ค. ์์์ ์๋์ ๊ฐ์ด extends(ํ์ฅ)๋ฅผ ์ฌ์ฉํด ์์ฑํ๋ค. class Child extends Parent{ } extends ๋ค์๋ ๋จ ํ..
[JAVA] :: ์๋ฐ ๊ธฐ์ด 3 :: Static / Singleton Patton / Array / ArrayList
Static ์ด๋? static์ ์ ์ ์ธ, ๊ณ ์ ๋์ด๋ ์๋ฏธ๋ก ์ปดํ์ผ ๋จ๊ณ์์ ํด๋์ค๋ก๋๊ฐ ํด๋์ค๋ฅผ ๋ก๋ฉํ ๋ ํจ๊ป ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋งํ๋ค. static์ ํด๋์ค, Method, ์์ ๋ฑ๊ณผ ํจ๊ป Method Area์ ํด๋์ค ๋ณ๋ก ์ ์ฅ๋์ด ๊ด๋ฆฌํ๋ฉฐ ๋ชจ๋ ์ฐ๋ ๋๊ฐ ๊ณต์ ํ๋ค. ์ฆ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ํ๋์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ด ํ๋์ ๊ฐ์ ๊ณต์ ํ๋ค. static ํค์๋๋ฅผ ๊ฐ์ง๋ ๋ฉ์๋์ ๋ณ์๋ฅผ ํด๋์ค ๋ฉ์๋, ํด๋์ค ๋ณ์ ํน์ ์ ์ ํ๋, ์ ์ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค. static ํค์๋๊ฐ ๋ถ์ ๋ฉค๋ฒ๋ ๊ฐ์ฒด์ ์์๋ ๊ฒ์ด ์๋ ํด๋์ค์ ์์๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ ์ ๋ฉค๋ฒ ์ ์ธ class Sclass{ static int cVar = 123; //ํด๋์ค ๋ณ์ ์ ์ธ ๋ฐ ์ด๊ธฐํ ..
[JAVA] :: ์๋ฐ ๊ธฐ์ด 2 :: ์์ฑ์ / ์ค๋ฒ๋ก๋ฉ / ์ ๊ทผ์ ์ด์ / ์ ๋ณด์๋
์์ฑ์ ์์ฑ์๋ ํด๋์ค์ ์ ์ธ๋์ด์๋ ํด๋์ค์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋์ด๋ค. ์์ฑ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ํธ์ถ๋๋ค. ์์ฑ์์ ๋ฉ์๋์ ํํ ์ฐจ์ด ๋ฉ์๋ ์์ฑ์ ๊ตฌํ๋ถ returnํ ๋ฉ์๋๋ช (ํ๋ผ๋ฏธํฐ 1, ํ๋ผ๋ฏธํฐ2,,,) ํด๋์ค๋ช (ํ๋ผ๋ฏธํฐ 1, ํ๋ผ๋ฏธํฐ 2,,,) ex) int Sum(int a, int b) ClassName(int a, int b) ์ด์ฒ๋ผ ์์ฑ์๋ ๋ฆฌํดํ์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ํด๋์ค์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง๋ค. ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ ๋ฉค๋ฒ๋ณ์์ ์ด๊ธฐํ๋ฅผ ์ํด ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ช ์์ ์ผ๋ก ์์ฑํ์ง ์๋๋ค๋ฉด ์๋์ผ๋ก ๊ธฐ๋ณธ์์ฑ์๊ฐ ์ ๊ณต๋๋ค. ์ด๋ ๊ฒ ๊ธฐ๋ณธ์ผ๋ก ์์ฑ๋๋ ์์ฑ์๋ฅผ์ ๋ํดํธ ์์ฑ์๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. ๋ํดํธ ์์ฑ์๋ precompile ๋จ๊ณ์์ ์ถ๊ฐ๊ฐ ๋๋ค. ๋ง์ฝ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ์์ฑ์๋ฅผ ๊ตฌํ..
[JAVA] :: ์๋ฐ ๊ธฐ์ด 1 :: ๊ฐ์ฒด / ํด๋์ค / ์ธ์คํด์ค / ์์ฑ / ํจ์ / ๋ฉ์๋
์๋ฐ๋ ๋ํ์ ์ธ ๊ฐ์ฒด์งํฅ(Objecti Oriented Programming) ์ธ์ด์ด๋ค. C์ธ์ด์ ๊ฐ์ ์ ์ฐจ์งํฅ์ธ์ด์ ๋ค๋ฅธ์ ์ ์๋ฐ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ์ทจ๊ธํ์ฌ ๊ฐ์ฒด ์ค์ฌ์ผ๋ก ์์ฑ๋๋ค๋ ์ ์ด๋ค. OOP์ ์ฅ์ ์๋ ์ฝ๋์ ํ์ฅ์ฑ๊ณผ ์ฌํ์ฉ์ฑ, ์ ์ง๋ณด์๊ฐ ์ ์ฐจ์งํฅ์ ๋นํด ๊ฐ์ ๋๋ ์ ์ด ์๋ค. ์ด๋ฌํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ตฌ์ฑํ๋ ๊ฐ๋ ๋ค์ ์์๋ณด์. ๊ฐ์ฒด(object) ๊ฐ์ฒด๋ object, ์กด์ฌํ๋ ์ฌ๋ฌผ ํน์ ๊ฐ๋ , ๋ ผ๋ฆฌ์ ๊ฐ์ ๋ฌดํ์ ์ธ ๊ฒ๋ค๋ ๊ฐ์ฒด๋ผ ์ ์ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ฌ๋, ์ฐจ, ์ฑ ๋ฑ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ๋ ๊ฒ๊ณผ ๊ฐ๋ ์ ์ธ ์ฃผ๋ฌธ, ๊ณ์ฐ ๋ฑ๋ ๊ฐ์ฒด๊ฐ ๋ ์ ์๋ค. ๊ฐ์ฒด๋ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ฉฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ์๋ก ์ํธ์์ฉ์ ํ ์ ์๋ค. ์๋ฐ์์๋ ํด๋์ค์์ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ์ ์ํ๋ค. ํด๋์ค(clas..
[42 Seoul] Minitalk : signal ํจ์๋ก IPC(Inter-Process Communication) ๊ตฌํ
1. signal ์ด๋ ์๊ทธ๋(signal)์ software interrupt ๋ก ํ๋ก์ธ์ค ๊ฐ์ ๋น๋๊ธฐ์ ์ด๋ฒคํธ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ , ์ ์กํ ์ ์๋๋ก ์ด์์ฒด์ ์์ ์ ๊ณต๋๋ IPC ์ค ํ๋์ด๋ค. signal์ ํ๋ก์ธ์ค์ ๋ณด๋ด๋ฉด ๊ฐ signal์ ์ง์ ๋ ๋์์ ์ํํ๋ค. 2. signal ํจ์ signal signal ํจ์๋ ์ ์ ์๋์ด ์์ผ๋ฉฐ ์๊ทธ๋์ ๋ฐ์ ์ง์ ๋ ํจ์๋ฅผ ์คํํ ์ ์๋ค. signal(SIGINT, (void *)sig_handler); ์๋๋ signal์ ์ข ๋ฅ์ด๋ค. SIGHUP ํฐ๋ฏธ๋ ์ฐ๊ฒฐ์ด ๋์ด์ก์ ๋ ์ด ํฐ๋ฏธ๋๊ณผ ์ฐ๊ฒฐ๋ ์ธ์ ๋ฆฌ๋ ๋๋ ์ธ์ ์ ์ํ ๋ชจ๋ ํ๋ก์ธ์ค๋ค์๊ฒ ๋ณด๋ด์ง๋๋ฐ ์ด ์๊ทธ๋์ ๋ฐ์ผ๋ฉด ์ข ๋ฃ SIGINT ํฐ๋ฏธ๋์์ ์ธํฐ๋ฝํธ ํค๋ฅผ ๋๋ ์ ๋ ๋ณด๋ด์ง๋๋ฐ ์ด ์๊ทธ๋ ๋ฐ์ผ๋ฉด ์ข ๋ฃ..
[42Seoul] Push_Swap : ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ
1. ๊ฒ์ ๊ท์น ์ด ๊ฒ์์ a์ b๋ผ๋ ์ด๋ฆ์ ๋ ๊ฐ์ ์คํ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ ๊ฒ์์ ๋ค์๊ณผ ๊ฐ์ด ์์ํ๋ค. a๋ ์๋ก ์ค๋ณต๋์ง ์๋ ์์ ํน์ ์์์ธ ๋์๋ค์ ํฌํจํ๋ค. b๋ ๋น์ด์๋ค. ์ด ๊ฒ์์ ๋ชฉํ๋ ์คํ a์ ์ค๋ฆ์ฐจ์์ผ๋ก ์๋ฅผ ์ ๋ ฌํ๋ ๊ฒ์ด๋ค. ์ ๋ ฌ์ ์ํด ๋ค์ ๋ช ๋ น์ด๋ค์ ์ํํ ์ ์๋ค. ๋ช ๋ น์ด ๊ธฐ๋ฅ sa : swap a ์คํ a์ ๊ฐ์ฅ ์์ ์๋ ๋ ์์์ ์์น๋ฅผ ์๋ก ๋ฐ๊พผ๋ค. sb : swap b ์คํ b์ ๊ฐ์ฅ ์์ ์๋ ๋ ์์์ ์์น๋ฅผ ์๋ก ๋ฐ๊พผ๋ค. ss : sa + sb sa์ sb๋ฅผ ๋์์ ์คํํ๋ค. ๋ช ๋ น์ด ๊ธฐ๋ฅ pa : push a ์คํ b์์ ๊ฐ์ฅ ์(ํ)์ ์๋ ์์๋ฅผ ๊ฐ์ ธ์์, ์คํ a์ ๋งจ ์(ํ)์ ๋ฃ๋๋ค. ์คํ b๊ฐ ๋น์ด ์์ผ๋ฉด ์๋ฌด ๊ฒ๋ ํ์ง ์๋๋ค. pb : push..