๋ฐ˜์‘ํ˜•

Programming 70

[TypeScript] Error: Redundant double negation. no-extra-boolean-cast ์˜ค๋ฅ˜ ์›์ธ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ ์ค‘ ๋‹ค์Œ์˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Error: Redundant double negation. no-extra-boolean-cast {text} Why ์œ„ ์—๋Ÿฌ๋Š” ESLint์˜ no-extra-boolean-cast ๊ทœ์น™์œผ๋กœ, ๋ถˆํ•„์š”ํ•œ ๋ถˆ๋ฆฌ์–ธ ์บ์ŠคํŠธ(๋ถˆ๋ฆฐ ๊ฐ’์„ ๊ฐ•์ œ๋กœ ์บ์ŠคํŒ…ํ•˜๋Š” ๊ฒƒ)๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ !!visible์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ถˆ๋ฆฐ ๊ฐ’์„ ๊ฐ•์ œ๋กœ ์บ์ŠคํŒ…ํ•˜๊ณ  ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ค‘ ๋ถ€์ • ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ด ๋  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. How to solve ๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ด์ค‘ ๋ถ€์ • ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ESLint ์—๋Ÿฌ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. visible ์ž์ฒด๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. {text}

[TypeScript] Could not find a declaration file for module ์˜ค๋ฅ˜ ์›์ธ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ ์ค‘ ๋‹ค์Œ์˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Could not find a declaration file for module Why? ์ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ์—ฐ๊ฒฐ๋œ declaration file ์ด ์—†๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์•ˆ์— ๋ชจ๋“ˆ์ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ „ํ˜•์ ์ธ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. declaration file(.d.ts)๋Š” ๋ชจ๋“ˆ์ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ types, functions ๋ฐ ๊ธฐํƒ€ ์†์„ฑ์„ ์„ค๋ช…ํ•˜๊ณ  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ฝ”๋“œ์—์„œ ์ด๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ค์น˜๋œ ํŠน์ • ๋ชจ๋“ˆ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ type ์ •์˜๊ฐ€ ์—†์–ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์ดํ•ดํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋‹ค์Œ์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. How to solve the problem ์ด ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”..

[Kotlin] Text '..' could not be parsed: Unable to obtain LocalDate from TemporalAccessor ์˜ค๋ฅ˜ ์›์ธ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ฝ”ํ‹€๋ฆฐ ์ŠคํŠธ๋ง์„ ์ฝ”ํ‹€๋ฆฐ ๋‚ ์งœ๋กœ ๋ณ€ํ™˜ํ•˜๋˜ ๋„์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. import java.math.BigDecimal import java.math.RoundingMode import java.time.LocalDate import java.time.LocalDateTime import java.time.format.DateTimeFormatter import java.util.* fun main(args: Array) { val input = "2301" val formatter = DateTimeFormatter.ofPattern("yyMM", Locale.KOREA) val date = LocalDate.parse(input, formatter).minusYears..

Programming/Kotlin 2023.03.30

[CSS] ๊ธด ๋‹จ์–ด ์ฒ˜๋ฆฌ ์‹œ ์ค„๋ฐ”๊ฟˆ ๊ธฐ์ค€ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ• (๋‹จ์–ด ๊ธฐ์ค€ / ํ•œ ๊ธ€์ž ๊ธฐ์ค€)

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” CSS์—์„œ ๊ธด๋‹จ์–ด ์ฒ˜๋ฆฌ ์‹œ ์ค„๋ฐ”๊ฟˆ ๋‹จ์–ด ๊ธฐ์ค€์„ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. How to solve the problem ์•„๋ž˜์˜ html์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. {item.desc} ์ฒ˜์Œ์— ์ œ๊ฐ€ ์ ์šฉํ•œ CSS๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹จ์–ด ๋’ค์— elispsis ์ฒ˜๋ฆฌ๋Š” ๋˜์—ˆ์ง€๋งŒ, ์ค„๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ์•ˆ๋˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. > p { margin-bottom: 8rem; font-size: 10rem; line-height: 1.3; overflow: hidden; white-space: normal; text-overflow: ellipsis; display: -webkit-box; } ๋”ฐ๋ผ์„œ ์ €๋Š” word-break๋ผ๋Š” ์†์„ฑ์„ ์ด์šฉํ•˜์—ฌ break-all ๋กœ ์ง€์ •ํ•ด์คฌ์Šต๋‹ˆ..

Programming/CSS 2023.03.30

[TypeScript] cannot read properties of undefined ์—๋Ÿฌ ์›์ธ ๋ฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ๋„์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Why? ํ•ด๋‹น properties์˜ ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. How to solve the problem ํ•ด๋‹น ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€์ธ๋ฐ์š”, ์ €๋Š” ๊ทธ ์ค‘์—์„œ๋„ Optional Chaining ์—ฐ์‚ฐ์ž (๋ฌผ์Œํ‘œ ์—ฐ์‚ฐ์ž)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์‚ฌ์šฉ ์˜ˆ์ œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. return ( {item?.name} ) ์ด๋ ‡๊ฒŒ Optional Chaining ์—ฐ์‚ฐ์ž (๋ฌผ์Œํ‘œ ์—ฐ์‚ฐ์ž)๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์œ ํšจํ•œ ๊ฐ’์ด ์—†์„ ๋•Œ๋Š” undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ฐ’์ด ์žˆ์„ ๋•Œ๋Š” Optional Chaining ์—ฐ์‚ฐ์ž ์ดํ›„ ๋‚ด์šฉ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[JavaScript] Moment.js ์˜ค์ „/์˜คํ›„ ํ‘œ๊ธฐ ์œ„์น˜ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Moment.js ์—์„œ ์˜ค์ „/์˜คํ›„ ํ‘œ๊ธฐ์˜ ์œ„์น˜๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ DB์—์„œ ๋ฐ›์•„์˜จ datetime ์‹œ๊ฐ„์„ 23.03.15 ์˜คํ›„ 10:30 ์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ momentjs ์—๋Š” ๋‹ค์Œ์˜ ์˜ˆ์‹œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ format์„ ์ปค์Šคํ…€ํ•˜์—ฌ ๋งŒ๋“ค์–ด ์ฃผ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. How to solve the problem ์ €๋Š” ํ•ด๋‹น ํ‘œ๊ธฐ๋ฒ•์„ ์ „์—ญ์œผ๋กœ ์ ์šฉํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณตํ†ต ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์คฌ์Šต๋‹ˆ๋‹ค. datetime ์‹œ๊ฐ„๊ณผ, format ์˜ 2๊ฐ€์ง€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ , moment๋ฅผ ํ™œ์šฉํ•˜์—ฌ format์„ ์ ์šฉ์‹œ์ผœ์คฌ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ DB์˜ datetime ํƒ€์ž…์ด string์ด๊ณ , YY.MM.DD hh:mm ํ˜•ํƒœ์˜€์Šต๋‹ˆ๋‹ค. ์ด..

[Kotlin] ์ฝ”ํ‹€๋ฆฐ ํŠน์ • ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ• (split ํ•จ์ˆ˜ ์ด์šฉ)

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ์‹œ๊ฐ„์—๋Š” ์ฝ”ํ‹€๋ฆฐ์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. How to solve the problem ์ฝ”ํ‹€๋ฆฐ์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•œ๋ฐ์š”, ์ €๋Š” split ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ŠคํŠธ๋ง์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ํ•ด๋‹น ์ŠคํŠธ๋ง์—์„œ split ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ '-' ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ ์ž˜๋ผ์ค๋‹ˆ๋‹ค. fun main() { val string = "kotlin-typescript-javascript" val result = string.split('-'); println(result) println(result[0]) println(result[1]) println(result[2]) } ์œ„ ์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. [kot..

Programming/Kotlin 2023.03.14

[JavaScript] ๊ธด ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ, ํŠน์ • ๋ฌธ์ž์—ด ์ˆ˜๊นŒ์ง€ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํŠน์ • ๋ฌธ์ž์—ด ์ˆ˜๊นŒ์ง€ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. How to solve the problem ๊ธด ๋ฌธ์ž์—ด์„ ์ž๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•œ๋ฐ์š”, ๋ณดํ†ต ์ƒ๋žต (...)์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค„๋ฐ”๊ฟˆ์„ ๋ฐฉ์ง€ํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค. ์ €์˜ ์ผ€์ด์Šค์˜ ๊ฒฝ์šฐ ํŠน์ • ๋ฌธ์ž์—ด ์ˆ˜๊นŒ์ง€๋งŒ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธด ๋ฌธ์ž์—ด์ด ์žˆ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. let str = 'Some very long string'; ํŠน์ • ๋ฌธ์ž์—ด ์ˆ˜๋ณด๋‹ค ํด ๊ฒฝ์šฐ substring์„ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฌธ์ž์—ด ์ˆ˜๊นŒ์ง€ ๋ฌธ์ž์—ด์„ ์ž˜๋ผ์ค๋‹ˆ๋‹ค. if(str.length > 10) str = str.substring(0,10); https://stackoverflow.com/questions/3414..

[TypeScript] The left-hand side of an assignment expression may not be an optional property access ์˜ค๋ฅ˜ ์›์ธ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. TypeScript ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ref๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ scrollTop ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋˜ ๋„์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค someRef?.current?.scrollTop = 0; TS2779: The left-hand side of an assignment expression may not be an optional property access Why? ์ŠคํŽ™ ์ƒ์—์„œ ์˜ต์…”๋„ ์ฒด์ด๋‹๊ณผ ํ• ๋‹น์„ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. The following is not supported, although it has some use cases; see Issue #18 for discussion: optional property assignment: a?.b = c How to solv..

[Kotlin] ์ž…๋ ฅ ๋ฐ›์€ ๋‚ ์งœ๋กœ ๊ฒฝ๊ณผ์ผ์ˆ˜ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• (get the day of the year as an integer in Kotlin)

Intro ์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ฝ”ํ‹€๋ฆฐ์—์„œ ์ž…๋ ฅ ๋ฐ›์€ ๋‚ ์งœ๋กœ ๊ฒฝ๊ณผ์ผ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. How to solve the problem ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ž…๋ ฅ ๋ฐ›์€ ๋‚ ์งœ๋กœ ํ•ด๋‹น ๊ฒฝ๊ณผ ์ผ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /** * You can edit, run, and share this code. * play.kotlinlang.org */ fun main() { // ์œค๋…„ ํŒ๋ณ„ ๋ฉ”์†Œ๋“œ (1 ์œค๋…„, 0 ํ‰๋…„) fun isLeap(year: Int): Int { return if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) 1 else 0 } fun dayOfYear(year: Int, month: Int, day: Int): Int {..

Programming/Kotlin 2023.03.02
๋ฐ˜์‘ํ˜•