๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming

(73)
[Kotlin] ๋ฐฑ์ค€ 2501 - ์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ์–ด๋–ค ์ž์—ฐ์ˆ˜ p์™€ q๊ฐ€ ์žˆ์„ ๋•Œ, ๋งŒ์ผ p๋ฅผ q๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด q๋Š” p์˜ ์•ฝ์ˆ˜์ด๋‹ค. 6์„ ์˜ˆ๋กœ ๋“ค๋ฉด6 ÷ 1 = 6 … 06 ÷ 2 = 3 … 06 ÷ 3 = 2 … 06 ÷ 4 = 1 … 26 ÷ 5 = 1 … 16 ÷ 6 = 1 … 0๊ทธ๋ž˜์„œ 6์˜ ์•ฝ์ˆ˜๋Š” 1, 2, 3, 6, ์ด ๋„ค ๊ฐœ์ด๋‹ค.๋‘ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜ N๊ณผ K๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, N์˜ ์•ฝ์ˆ˜๋“ค ์ค‘ K๋ฒˆ์งธ๋กœ ์ž‘์€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. N์€ 1 ์ด์ƒ 10,000 ์ดํ•˜์ด๋‹ค. K๋Š” 1 ์ด์ƒ N ์ดํ•˜์ด๋‹ค.ํ’€์ด1. ๋‚˜๋จธ์ง€๊ฐ€ 0์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด ์•ฝ์ˆ˜์ด๋‹ค.2. N์ด 10,000์ดํ•˜์ด๋‹ค -> ๋ฌด์‹ํ•œ ๋ฐฉ๋ฒ•์ธ 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ชจ๋‘ ํ™•์ธํ•ด๋„ 1๋งŒ๋ถ„์˜ 1์ดˆ(1์–ต์— 1์ดˆ๋กœ ๊ฐ€์ •)3. ์‹œ๊ฐ„๋ณต..
[Kotlin] IDE์—†์ด ์˜จ๋ผ์ธ์œผ๋กœ Kotlin ์—ฐ์Šตํ•˜๊ธฐ ์˜จ๋ผ์ธ Kotlin ์—ฐ์Šต์žฅhttps://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online play.kotlinlang.org์œ„ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด ๋ณ„๋„์˜ IntelliJ์™€ ๊ฐ™์€ ๋ณ„๋„์˜ IDE ์—†์ด Kotlin ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์—ฐ์Šตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฑ์ค€๊ณผ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์—ฐ์Šตํ•  ๋•Œ, IDE๋ฅผ ํ†ตํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„๋„๋œ๋‹ค๋Š” ์ ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
[JS] setTimeout ์‚ฌ์šฉ๋ฒ•๊ณผ await / sleep ๋งŒ๋“ค๊ธฐ JavaScript์—์„œ setTimeout์€ ๋น„๋™๊ธฐ(async)๋กœ ํŠน์ • ์‹œ๊ฐ„ ํ›„์˜ ๋กœ์ง์„ ์ˆ˜ํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. setTimeout ์ˆ˜ํ–‰ ์˜ˆ์ œconsole.log('start');// async๋กœ 3์ดˆ(3,000ms)๋’ค์— {}์•ˆ์˜ ๋กœ์ง ์ˆ˜ํ–‰setTimeout(() => { console.log('call it after 3s');}, 3000);console.log('end') setTimeout ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ>>> start>>> end// ...์•ฝ 3์ดˆ ๋’ค...>>> call it after 3s  setTimeout์— await๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ setTimeout await ์‚ฌ์šฉconsole.log('start');// async๋กœ 3์ดˆ(3,000ms)๋’ค์— {}์•ˆ์˜ ๋กœ์ง ์ˆ˜ํ–‰await setTimeout(() ..
[Git Hook] pre commit ์œผ๋กœ ์žฅ์•  ์˜ˆ๋ฐฉํ•˜๊ธฐ(ft. husky, osascript) d์ตœ์‹  ์šด์˜ ์ค‘์ธ ์•ฑ์—์„œ ํŠน์ • ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋‹ค ์žฅ์• ๊ฐ€ ๋‚ฌ์—ˆ๋‹ค. ์ผ๋ถ€ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ํ™˜๊ฒฝ์ด ๋ถ„์‚ฐ๋˜๊ณ  ๋ณต์žกํ•˜๋‹ค๋ณด๋‹ˆ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ๋†“์นœ ์ผ€์ด์Šค์˜€์—ˆ๋‹ค. ์ด ๋ถ€๋ถ„์„ ๊ฐœ์„ ํ•˜๊ณ  ๋น„์Šทํ•œ ์žฅ์• ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ pre commit rule์„ ์ถ”๊ฐ€ํ•ด์„œ ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ ์†Œ์Šค์— ์ถ”๊ฐ€๋˜๋ฉด ์•ˆ๋‚ด๋ฅผ ์œ„ํ•œ ํŒ์—…์„ ๋„์šฐ๊ฒŒ ํ–ˆ๋‹ค. ๐Ÿค– ํ™˜๊ฒฝ๊ฐœ๋ฐœํŒ€์˜ ํ™˜๊ฒฝ์€ Mac์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  Husky plugin์ด ์„ค์น˜๋˜์–ด ์žˆ์—ˆ๋‹ค. git์€ ๊ฐœ๋ฐœ์ž๊ฐ€ commit์„ ์ˆ˜ํ–‰ํ•˜๋ฉด, commit ์ด ์ˆ˜ํ–‰๋˜๊ธฐ ์ „์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰๋˜๊ฒŒ๋”ํ•˜๋Š” pre-commit ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.๋ฐฉ๋ฒ•์€ ํ”„๋กœ์ ํŠธ์˜ .git/ ํ•˜์œ„์—  "pre-commit"์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.ํ•˜์ง€๋งŒ, git์—์„œ ์ œ๊ณตํ•˜๋Š” pre-commit์˜ ๊ฒฝ์šฐ, ๊ฐœ์ธ ๋กœ์ปฌ..
[์ฟผ๋ฆฌ ํŠœ๋‹] Oracle DB ์ฟผ๋ฆฌ ํŠœ๋‹ ํšŒ๊ณ (ft. LPAD) ์‚ฌ๋‚ด ์—…๋ฌด ์ค‘ ์šด์˜์—์„œ timeout์ด ๋‚˜๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.(๋‚ด๋ถ€ ์„œ๋น„์Šค์ด๊ณ  ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ์„œ ๋ฐœ๊ฒฌ์ด ๋Šฆ์—ˆ๋‹ค.)(์„œ๋น„์Šค์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ด 60์ดˆ ์ด์ƒ์ด๋ผ๋ฉด, timeout error๋ฅผ ๋ฑ‰๊ฒŒ ๋˜์–ด์žˆ๋‹ค.) ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ด๋ณด๋Š ์กฐํšŒ ์ฟผ๋ฆฌ์—์„œ 60์ดˆ ์ด์ƒ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. ํ•ด๋‹น ์—…๋ฌด์˜ ํŠน์„ฑ์ƒ, ๊ณ ๊ฐ ์ด๋ ฅ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๋Š”๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ plan์„ ํ™•์ธํ•˜๋‹ˆ ํ…Œ์ด๋ธ”์„ full scanํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.์šด์˜ ํ™˜๊ฒฝ ๊ฒฝ์šฐ, ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ ๊ฐœ์„ ์ด ํ•„์š”ํ–ˆ๋‹ค.  ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์ฃผ๋œ ์›์ธ์€ "LAPD์˜ ์‚ฌ์šฉ"ํƒ€๊ฒŸ ํ…Œ์ด๋ธ”์€ ๊ณ ๊ฐ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•˜๋Š” ํ…Œ์ด๋ธ”์ด์—ˆ๊ธฐ์— ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ LPAD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ขŒ๋ณ€์„ ๋ชจ๋‘ ๊ฐ€๊ณตํ•˜๋ฏ€๋กœ์จ, ์ธ๋ฑ์Šค ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค. ํŠน์ • ๊ธฐ๊ฐ„์„ ์กฐ๊ฑด์œผ๋กœ ๊ฑธ๊ณ ์žˆ์—ˆ๋Š”..
์˜จํ”„๋ ˆ๋ฏธ์Šค ๋ฐฐํฌ ์„œ๋ฒ„ ์žฅ์•  ํšŒ๊ณ  - ๋žœ ์นด๋“œ ๊ณ ์žฅ(ft. gitlab, ubuntu) on-premise / ubuntu ํ™˜๊ฒฝ์˜ ๋ฐฐํฌ ์„œ๋ฒ„ ๋˜์‚ด๋ฆฌ๊ธฐ ํ˜„์žฌ ์—…๋ฌดํ™˜๊ฒฝ์—์„œ ๋‚ด๋ถ€ ๋ณด์•ˆ๋ง์—์„œ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ๋Š” ์†Œ์Šค๋ฅผ ๊ฐ ๊ฐœ๋ฐœ์ž์™€ ์—ฐ๊ด€๋œ ๊ทธ๋ฃน์‚ฌ๋กœ ๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„๊ฐ€ ์˜จํ”„๋ ˆ๋ฏธ์Šค(on-premise) ํ™˜๊ฒฝ์œผ๋กœ ๊ตฌ์„ฑ ๋˜์–ด์žˆ๋Š”๋ฐ, ์˜ค์ „์— ์ ‘์†์ด ์•ˆ๋˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ์†Œ์Šค ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด์„œ ํ•ด๋‹น ์„œ๋ฒ„์— gitlab / jenkis๋ฅผ docker๋กœ ๋„์›Œ์„œ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๊ฐœ๋ฐœ์ž๋“ค์˜ pc์—์„œ ํ•ด๋‹น ํ˜ธ์ŠคํŒ… ์ค‘์ด gitlab ์‚ฌ์ดํŠธ๊ฐ€ ์ ‘์†์ด ๋˜์ง€ ์•Š์•˜๋‹ค. ๋‹น์‹œ ์กฐ์น˜๋ฅผ ์œ„ํ•œ ์ง„ํ–‰ ์‚ฌํ•ญ์€ ์ด๋ ‡๋‹ค.๐Ÿ› ๏ธ ์กฐ์น˜ ๋ฐฉ๋ฒ•1. ๋กœ๊ทธ ํ™•์ธ ํ•ด๋ณด๊ธฐ$ cd /home/docker/gitlab๋กœ๊ทธํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ณณ์œผ๋กœ ์ด๋™$ docker-compose logs -f {์ปจํ…Œ์ด๋„ˆ ํ˜น์€ ์„œ๋น„์Šค ์ด๋ฆ„}๋กœ๊ทธ ํ™•์ธ. {์ปจํ…Œ์ด๋„ˆ ํ˜น์€ ์„œ๋น„์Šค..
[JS] ๋ณด์•ˆ ํ‚คํŒจ๋“œ ์ž…๋ ฅ error ์˜ˆ์™ธ์ฒ˜๋ฆฌ(ft. isNaN) ํšŒ์‚ฌ์—์„œ ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” ์•ฑ์˜ ๋ณด์•ˆ ํ‚คํŒจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค์—์„œ ์ž˜๋ชป๋œ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜์˜ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ input ๊ฐ’ ๊ฒ€์ฆ์„ ํ†ตํ•ด์„œ ์—…๋ฌด ์˜ค๋ฅ˜๋ฅผ ๋ฑ‰์–ด๋‚ด ์ž˜๋ชป๋œ ์ •๋ณด๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜์ง€๋Š” ์•Š์•˜์—ˆ์ง€๋งŒ, ํ™”๋ฉด ์†Œ์Šค(front end)์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฏธํก์œผ๋กœ ์ž˜๋ชป๋œ input ๊ฐ’์„ ์„œ๋ฒ„(back end) ์ธก์œผ๋กœ ๋ณด๋‚ด๊ณ  ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ฎ ๋ฌธ์ œ ์ƒํ™ฉ๋ณด์•ˆ ํ‚คํŒจ๋“œ์˜ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฒคํŠธ์˜ value๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์—์„œ numberic์˜ ๊ฒ€์ฆ์ด ๋˜์ง€ ์•Š์•„์„œ ์ˆซ์žํ˜• ๊ฐ’๋งŒ ๋“ค์–ด์™€์•ผํ•˜๋Š” ๋ถ€๋ถ„์— ์‹ค์ œ string์ด ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๐Ÿ› ๏ธ ์กฐ์น˜๋ฐฉ๋ฒ•ํ‚คํŒจ๋“œ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด์„œ ๋“ค์–ด์˜ค๋Š” value ๊ฐ’์„ ํ™”๋ฉด์—์„œ isNaN๋ฅผ ์‚ฌ์šฉํ•ด ํ•œ๋ฒˆ ๋” ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋กœ์ง์˜ ๊ฒฝ์šฐ, value๊ฐ€ s..
[Vue] Multiple v-model ์ˆ˜์ •์ž(modifiers) ์ฒ˜๋ฆฌํ•˜๊ธฐ(์˜ต์…˜ ์‚ฌ์šฉํ•˜๊ธฐ) Vue ๊ณต์‹ ๊ฐ€์ด๋“œ ๋ฌธ์„œ์—์„œ v-model์˜ ์ˆ˜์ •์ž ์ฒ˜๋ฆฌ, ๋‹ค์ค‘(multiple) v-model ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋‚˜์™€์žˆ๋‹ค. ํ•˜๋‚˜์˜ v-model ์ˆ˜์ •์ž๋ฅผ ์ด์šฉํ•ด set, get๊ณผ ๊ฐ™์€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š”๋ฒ•์ด ์†Œ๊ฐœ ๋˜์ง€๋งŒ, ๋‹ค์ค‘ v-model์˜ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, ์ˆ˜์ •์ž๋ฅผ ๋ฐ›๋Š” ๋ฐ›์‹๋งŒ ์†Œ๊ฐœ๋˜๊ณ  set๊ณผ ๊ฐ™์€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ๋น ์ ธ์žˆ์–ด ์ถ”๊ฐ€ ํ•ด๋ณธ๋‹ค. composition ์Šคํƒ€์ผ ์ง€ํ–ฅํ•ด์„œ composition ๋ฐฉ์‹์œผ๋กœ๋งŒ ์†Œ๊ฐœ ํ•ฉ๋‹ˆ๋‹ค.    ๐Ÿค– ์˜ˆ์ œ ์ฝ”๋“œ ::: ๊ณต์‹ ๊ฐ€์ด๋“œ playground ์˜ˆ์ œ๋ฅผ ํ™œ์šฉ App.vue first: second: MyComponent.vue ์œ„ ์ฝ”๋“œ๋Š” 2๊ฐœ์˜ input๊ณผ v-model์„ ๊ฐ–๋Š” Mycomponent.vue๋ฅผ App.vue์—์„œ import ํ•ด์„œ ์‚ฌ์šฉ..

728x90