Welcome To

ํ›„๋‹ˆ's Blog

Hello World
Let's Focus On
๋ฏธ๋“ค์›จ์–ด(Express.js)
ยท
NodeJS
๋ฏธ๋“ค์›จ์–ดExpress.js์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ๋ฏธ๋“ค์›จ์–ด(Middleware)์ด๋‹ค.๋ฏธ๋“ค์›จ์–ด(Middleware)๋Š” ์š”์ฒญ(request)๊ณผ ์‘๋‹ต(response) ์‚ฌ์ด์—์„œ ์ค‘๊ฐ„ ์—ญํ• ์„ ํ•˜๋ฉฐ, ๊ฐ์ข… ์ž‘์—…(๋กœ๊น…, ์ธ์ฆ, ๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ ๋“ฑ)์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์ด๋‹ค.์ฆ‰, ๋ฏธ๋“ค์›จ์–ด๋Š” ์š”์ฒญ/์‘๋‹ต์˜ ์ค‘๊ฐ„์—์„œ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ๊ทธ ์š”์ฒญ์„ ๋ฐ›์•„ ์›ํ•˜๋Š” ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๋’ค, ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜๊ธด๋‹ค.app.use()๋กœ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์Œ“์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฏธ๋“ค์›จ์–ด ์ถ”๊ฐ€ ๋ฐฉ๋ฒ•Express.js์—์„œ๋Š” app.use()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹คconst http = require("http");const express = r..
Express.js
ยท
NodeJS
Express.jsNode ํ”„๋กœ์ ํŠธ์— ์ œ 3์ž ํŒจํ‚ค์ง€๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.๋ฐ˜๋ณต์ ์ด๊ณ  ํ•„์ˆ˜์ ์ธ ์ž‘์—…์ด๋‚˜ ์‹ ๊ฒฝ ์“ฐ๊ณ  ์‹ถ์ง€ ์•Š์€ ์„ธ๋ถ€ ๊ตฌํ˜„์„ ์™ธ๋ถ€์— ๋งก๊ธธ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ, ๋ผ์šฐํŒ…, ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋“ฑ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, body-parser ๋“ฑ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์™€์˜ ์—ฐ๋™๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋งŒ์˜ ๊ณ ์œ ํ•œ ์ฝ”๋“œ, ์ฆ‰ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ตฌ๋ถ„๋˜๋Š” ์ฐจ๋ณ„์ ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.์„ธ๋ถ€์ ์ธ ๋ฐ˜๋ณต ์ž‘์—…์€ Express.js์— ๋งก๊ธธ ์ˆ˜ ์žˆ๋‹ค.ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ผ๋ จ์˜ ๋„์›€ ํ•จ์ˆ˜์™€ ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฃจ๋Š” ๋„๊ตฌ, ๊ทœ์น™์˜ ๋ชจ์Œ์ด๋‹ค. ํŠน์ง•๊ฐ€๋ณ๊ณ  ์œ ์—ฐํ•˜๋ฉฐ, ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์„ ํƒ์ ์œผ๋กœ..
์ธํ„ฐํŽ˜์ด์Šค
ยท
Typescript
์ธํ„ฐํŽ˜์ด์Šค์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•œ๋‹ค.์ฆ‰, "์ด ๊ฐ์ฒด๋Š” ์–ด๋–ค ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”๊ฐ€?"๋ฅผ ๋ช…ํ™•ํžˆ ๊ทœ์ •ํ•  ์ˆ˜ ์žˆ์–ด ํƒ€์ž… ์•ˆ์ •์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.์ด๋Ÿฌํ•œ ํŠน์„ฑ์€ ํŠนํžˆ ํ˜‘์—… ์‹œ ์ฝ”๋“œ์˜ ์‹ ๋ขฐ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.interface ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑํ•œ๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„์Šทํ•œ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, ๋Ÿฐํƒ€์ž„์—์„œ๋งŒ ์—๋Ÿฌ๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋ฉด, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์—์„œ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ด, ๋” ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. interface Person { name: string; age: number; welcome(text: string): void;}์ธํ„ฐํŽ˜์ด์Šค์˜ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ด๋‹ค.ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธ๊ฐ’์€ ์ •์˜ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ..
๋‹ค์ค‘ ์„ ํ˜• ํšŒ๊ท€ ๋ชจ๋ธ ์ƒ์„ฑ ๋ฐฉ๋ฒ•
ยท
Machine Learning
๋‹ค์ค‘ ์„ ํ˜• ํšŒ๊ท€(Multiple Linear Regression) ๋ชจ๋ธ ์ƒ์„ฑ ๋ฐฉ๋ฒ•๋ชจ๋‘ ํฌํ•จ(All-in)์„ค๋ช… ๋ชจ๋“  ๋…๋ฆฝ ๋ณ€์ˆ˜๋ฅผ ๊ทธ๋Œ€๋กœ ํฌํ•จํ•˜์—ฌ ๋ชจ๋ธ์„ ํ•™์Šตํ•œ๋‹ค.๋ณ€์ˆ˜์˜ ์œ ์˜์„ฑ ๊ฒ€์ฆ์„ ํ•˜์ง€ ์•Š๊ณ , ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ๊ทธ๋Œ€๋กœ ํ•™์Šตํ•œ๋‹ค.์žฅ์ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•˜๋‹ค.๋ณ€์ˆ˜๋ฅผ ์„ ํƒํ•˜๋Š” ์ถ”๊ฐ€ ์ ˆ์ฐจ๊ฐ€ ํ•„์š” ์—†๋‹ค.๋‹จ์ ๋ถˆํ•„์š”ํ•œ ๋ณ€์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ๋‹ค์ค‘๊ณต์„ ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค.๋ชจ๋ธ์ด ๋ณต์žกํ•ด์ง€๊ณ  ํ•ด์„์ด ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค.์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ ?๋…๋ฆฝ ๋ณ€์ˆ˜๊ฐ€ ๋ชจ๋‘ ์ค‘์š”ํ•œ ๋ณ€์ˆ˜์ž„์ด ํ™•์‹คํ•  ๋•Œ์„ค๋ช…๋ณด๋‹ค๋Š” ๋‹จ์ˆœํ•œ ์˜ˆ์ธก์ด ๋ชฉ์ ์ผ ๋•Œ ํ›„์ง„ ์ œ๊ฑฐ๋ฒ•(Backward Elimination)์„ค๋ช…๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•œ ์ƒํƒœ์—์„œ ์‹œ์ž‘ํ•œ๋‹ค.ํ†ต๊ณ„์ ์œผ๋กœ ๊ฐ€์žฅ ์œ ์˜ํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜(p-value๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๋ณ€์ˆ˜)๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.์ œ๊ฑฐ ํ›„ ๋‹ค์‹œ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๊ณ  p-value๋ฅผ ํ™•์ธํ•œ๋‹ค.๋ชจ๋“ ..
์„ ํ˜• ํšŒ๊ท€ ์ดํ•ดํ•˜๊ธฐ
ยท
Machine Learning
์•ค์Šค์ปด ์ฝฐ๋ฅดํ…Ÿ(Anscombe's quartet)์œ„ 4๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์€ ์•ค์Šค์ปด ์ฝฐ๋ฅดํ…Ÿ(Anscombe's quartet)์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.์ด๋ฅผ ํ†ตํ•ด ๋ฌด์ž‘์ • ์„ ํ˜• ํšŒ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค€๋‹ค.X1, X2, X3, X4 ๋ชจ๋‘ ์„ ํ˜• ํšŒ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ์ง€๋งŒ, X1์„ ์ œ์™ธํ•œ X2, X3, X4์—์„œ๋Š” ์„ ํ˜• ํšŒ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค.์„ ํ˜• ํšŒ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์„ ํ˜• ํšŒ๊ท€๋ฅผ ์œ„ํ•œ ๊ฐ€์ •์„ ํ˜•์„ฑ(Linearity, Linear relationship between Y and each X)์„ค๋ช…๋…๋ฆฝ ๋ณ€์ˆ˜(X)์™€ ์ข…์† ๋ณ€์ˆ˜(y) ์‚ฌ์ด์—๋Š” ์„ ํ˜•์ ์ธ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.์ฆ‰, X๊ฐ€ ์ฆ๊ฐ€ํ• ์ˆ˜๋ก Y๋„ ์ผ์ •ํ•œ ๋น„์œจ๋กœ ์ฆ๊ฐ€/๊ฐ์†Œํ•ด์•ผ ํ•œ๋‹ค.์œ„๋ฐ˜ ์‹œ ๋ฌธ์ œ์ ๋ชจ๋ธ์ด ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ํŒจํ„ด์„ ์ž˜๋ชป ์„ค๋ช…ํ•˜๊ฒŒ ๋œ๋‹ค.์˜ˆ์ธก ์ •ํ™•๋„๊ฐ€..
์œ„์ ฏ(Widget)
ยท
Flutter
์œ„์ ฏํ”Œ๋Ÿฌํ„ฐ์˜ ๋ชจ๋“  ์œ„์ ฏ์€ StatelessWidget๊ณผ StatefulWidget์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.StatelessWidget์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์—†์–ด ํ™”๋ฉด์„ ์ƒˆ๋กœ๊ณ ์นจ ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์œ„์ ฏStatefulWidget์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์žˆ์–ด ํ™”๋ฉด์„ ์ƒˆ๋กœ๊ณ ์นจ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ์œ„์ ฏ StatlessWidgetclass MyApp extends StatelessWidget { MyApp(); @override Widget build(BuildContext context) { return Text("Hello World !") }}StatelessWidget์€ ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.class MyApp extends StatelessWidgetMyApp์€ StatelessWidget ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„..
Dart ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
ยท
Flutter
Dart ๊ธฐ๋ณธ ๋ฌธ๋ฒ•๋ณ€์ˆ˜์ž๋ฃŒํ˜•var์ฒ˜์Œ ๋‹ด๊ธด ๊ฐ’์œผ๋กœ ํƒ€์ž…์ด ์ž๋™์œผ๋กœ ์ง€์ •๋œ๋‹ค.String๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•œ๋‹ค.String?๋ฌธ์ž ๋˜๋Š” null ์ƒํƒœ์ผ ์ˆ˜ ์žˆ๋‹ค.final String๋ฌธ์ž๋ฅผ ํ•œ๋ฒˆ ๋‹ด์€ ๋’ค ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.int / doubleint๋Š” ์ •์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.double์€ ์‹ค์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.bool์ฐธ ๊ฑฐ์ง“์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.List๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๊ฐ€์ง„ ๋ฐฐ์—ด์„ ์˜๋ฏธํ•œ๋‹ค.Map{key: value}์˜ ํ˜•ํƒœ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.key์™€ value์—๋Š” ๋ชจ๋“  ํ˜•ํƒœ์˜ ์ž๋ฃŒํ˜•์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.dynamic๋ชจ๋“  ์ž๋ฃŒํ˜•์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.ํƒ€์ž… ํ™•์ธ๋ณ€์ˆ˜๋ช….runtimeType์œผ๋กœ ํƒ€์ž…์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.๋ณ€์ˆ˜๋ช…์˜๋ฌธ, _, $, ์ˆซ์ž๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.์ˆซ์ž๋กœ ์‹œ์ž‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.์นด๋ฉœ์ผ€์ด์Šค(CamelCase)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
์‹ฑ๊ธ€ํ†ค
ยท
Typescript
์‹ฑ๊ธ€ํ†ค๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด ์ค‘ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค.์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์—์„œ๋Š” ํ•œ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ •ํ™•ํžˆ 1๊ฐœ๋งŒ ์ƒ์„ฑํ•œ๋‹ค.์ •์  ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.ํ•˜์ง€๋งŒ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์ •ํ™•ํžˆ 1๊ฐœ๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•ด์•ผ ํ•œ๋‹ค. abstract class ShoppingMall { constructor(protected productId: string, protected productName: string) {} abstract printProduct(this: ShoppingMall): void;}class Grocery extends ShoppingMall { constructor(prod..