2022/08

๐Ÿ’ป ๊ฐœ๋ฐœ/iOS

[TIL] 22.08.25

๊ณต๋ถ€ํ•œ ๊ฒƒ ๋ถ€์ŠคํŠธ์ฝ”์Šค - iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ์Šค์œ„ํ”„ํŠธ ๊ธฐ์ดˆ ์•Œ๊ฒŒ๋œ ๊ฒƒ 1. ์˜ต์…”๋„ // someOptionalParm์— nil์ด ํ• ๋‹น๋  ์ˆ˜ ์žˆ์Œ func someFunction(someOptionalParam: Int?) { // .... } /// someOptionalParm์— nil์ด ํ• ๋‹น๋  ์ˆ˜ ์—†์Œ func someFunction(someOptionalParam: Int) { // .... } nil์ด ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ํ‘œํ˜„ nil์˜ ๊ฐ€๋Šฅ์„ฑ์„ ๋ช…์‹œ์ (์ฝ”๋“œ)์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ ์˜ต์…”๋„์ด ์•„๋‹Œ ๊ฒฝ์šฐ nil ์ฒดํฌ ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ nil๋กœ ์ธํ•œ ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์ตœ์†Œํ™” 2. ์˜ต์…”๋„ ํ‘œํ˜„ ๋ฐฉ๋ฒ• // ์•”์‹œ์  ์ถ”์ถœ ์˜ต์…”๋„ var optionalValue: Int! = 10 switch optionVa..

๐Ÿ’ป ๊ฐœ๋ฐœ/iOS

[TIL] 22.08.24

๊ณต๋ถ€ํ•œ ๊ฒƒ ๋ถ€์ŠคํŠธ์ฝ”์Šค - iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ์Šค์œ„ํ”„ํŠธ ๊ธฐ์ดˆ ์•Œ๊ฒŒ๋œ ๊ฒƒ 1. ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ธฐ๋ณธ ๊ฐ’ func setUserInfo(name : String, age : Int, region : String = "Deajeon") {} ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ „๋‹ฌ๋  ๊ฐ’์„ ๋ฏธ๋ฆฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ ๊ธฐ๋ณธ ๊ฐ’์„ ๊ฐ–๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก ์ค‘ ๋งจ ๋’ค์— ์œ„์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ 2. ์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ” // ๋‚ด๋ถ€์—์„œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„ func greeting(to friend : String, from me : String) { print("Hello, \(friend)!, my name is \(me)") } // ํ˜ธ์ถœํ•  ๋•Œ๋Š” ์ „๋‹ฌ์ธ์ž ๋ ˆ์ด๋ธ” greeting(to : "doko", from : "kodo") ..

๐Ÿ’ป ๊ฐœ๋ฐœ/์˜ค๋Š˜์˜ ์‚ฝ์งˆ

[iOS / Swift] unable to dequeue a cell with identifier Cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard

TableView๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ Cell์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด extension์œผ๋กœ UITableViewDataSource๋ฅผ ์žฌ์ •์˜ํ•˜๊ณ  ๋นŒ๋“œ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. extension ViewController : UITableViewDataSource { func tableView(_ tableView : UITableView, numberOfRowsInSection section : Int) -> Int { return self.tasks.count } func tableView(_ tableView : UITableView, cellForRowAt indexPath : IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdenti..

๐Ÿ’ป ๊ฐœ๋ฐœ/์˜ค๋Š˜์˜ ์‚ฝ์งˆ

[Android / Gradle] mockup1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: AAPT: error: failed to read PNG signature: file does not start with PNG signature.

์ธํ„ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๊ฐœ๋ฐœํ•œ ์•ฑ์„ ๋ฐฐํฌํ•˜๋ ค๊ณ  ์•ฑ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€๋ฅผ ์ฒจ๋ถ€ํ•˜๊ณ  Gradle์—์„œ debug -> release ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  Build Apk ๋ฅผ ๋ˆŒ๋ €๋Š”๋ฐ! ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค. mockup1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: AAPT: error: failed to read PNG signature: file does not start with PNG signature. ์„œ์นญ์„ ํ•ด๋ณด๋‹ˆ๊นŒ Gradle ๋ฒ„์ ผ์ด ๋งž์ง€ ์•Š๋Š”๋‹ค. ๋‹ค๋ฅธ ๋ฌธ์ œ๋‹ค~ ์ด๋Ÿฐ ๊ธ€๋“ค์ด ๋งŽ์€๋ฐ ๋ญ”๊ฐ€ ์ด์ƒํ–ˆ๋‹ค. ์ง€๊ธˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฒ„์ ผ์ด 7์ธ๋ฐ 4๊นŒ์ง€ ๋‚ฎ์ถฐ์•ผํ•œ๋‹ค๊ณ ? ๊ดœํžˆ ๊ฑด๋“œ๋ ธ๋‹ค๊ฐ€ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๋กœ ํ„ฐ๋ฏธ๋„์ด ํ„ฐ์งˆ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์— ์ฒจ๋ถ€ํ•œ ์•ฑ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ดํŽด๋ดค๋‹ค. ํŒŒ์ผ๋ช…์€ ic..

โ›น๏ธ ๋ผ์ดํ”„/ํšŒ๊ณ 

[NCSOFT] 2022 ์—”์”จ์†Œํ”„ํŠธ ์ธ๋จธ ์ธํ„ด ํ›„๊ธฐ - 1๋ถ€

๋ชจ์ฒ˜๋Ÿผ ํšŒ๊ณ  ๊ธ€๋กœ ์ฐพ์•„์™”๋‹ค. ํผ๋“€ ์ดํ›„๋กœ ์ด์ชฝ ๊ฒŒ์‹œํŒ์—์„œ ์“ฐ๋Š” ๊ฑด ์ฒ˜์Œ์ธ๋ฐ, ์˜ค๋Š˜์€ ๋‹ค์Œ ์ฃผ๋ฉด ๋๋‚  NC Summer Intern ํ›„๊ธฐ์— ๋Œ€ํ•œ ๊ธ€์„ ์“ฐ๋ ค๊ณ  ํ•œ๋‹ค. ์–ด๋–ป๊ฒŒ ์•Œ๊ฒŒ ๋๋‚˜์š”? 1ํ•™๊ธฐ์— ์ธํ„ด, ๋™์•„๋ฆฌ, ๊ต์œก ํ”„๋กœ๊ทธ๋žจ์„ ์ข€ ์•Œ์•„๋ณด๊ณ  ์ง€์›ํ•˜๋˜ ์ค‘ 2022 ์—”์”จ์†Œํ”„ํŠธ ์ธ๋จธ ์ธํ„ด์ด๋ผ๋Š” ๊ธ€์„ ๋ณด๊ฒŒ ๋๊ณ  ์‚ฌ๋‚ด ๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ์ด ๋ˆˆ์— ๋“ค์–ด์™”๋‹ค. ๊ณต๊ณ ์— ํ”Œ๋Ÿฌํ„ฐ์˜ ์—ญ๋Ÿ‰์ด ๊ธฐ์žฌ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณด์•„ํ•˜๋‹ˆ ํ”Œ๋Ÿฌํ„ฐ๋กœ ์‚ฌ๋‚ด ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Œ์„ ์ง๊ฐํ–ˆ๊ณ  ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”Œ๋Ÿฌํ„ฐ ์—ญ์‹œ ๊ด€์‹ฌ ์žˆ์—ˆ๊ธฐ์— ํ•ด๋‹น ๊ณต๊ณ ์— ์ง€์›ํ–ˆ๋‹ค. 1์ฐจ - ์„œ๋ฅ˜ + ์ฝ”ํ…Œ ์ „ํ˜• ์ž์†Œ์„œ ๋ถ„๋Ÿ‰์ด ๋ฌธํ•ญ๋‹น 300์ž๋กœ ๋งŽ์ง€๋Š” ์•Š์•˜๋‹ค. ๋™์‹œ์— ์ฝ”ํ…Œ๋„ ๊ฐ™์ด ์ง„ํ–‰๋๋‹ค. ํ† ์š”์ผ์— ์ง„ํ–‰๋๋˜ ๊ฑธ๋กœ ๊ธฐ์–ตํ•œ๋‹ค. ์ด 3๋ฌธ์ œ๊ฐ€ ์ถœ์ œ๋์—ˆ๊ณ  ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ฝ”ํ…Œ..

๐Ÿ’ป ๊ฐœ๋ฐœ/Flutter

[Flutter] ModalBottomSheet๊ฐ€ ํ‚ค๋ณด๋“œ์— ์˜ํ•ด ๊ฐ€๋ ค์ง€๋Š” ํ˜„์ƒ

๋ธ”๋กœ๊ทธ ๋‚ด์˜ ๊ฒŒ์‹œ๋ฌผ์€ PC ๋ฒ„์ „์— ์ตœ์ ํ™” ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ModalBttomSheet๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ ์–ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ModalBottomSheet์— TextField๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค๋ณด๋“œ๋กœ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์œผ๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ModalBottomSheet๊ฐ€ ํŒ์—…๋œ ํ‚ค๋ณด๋“œ์˜ ๋†’์ด๋งŒํผ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์•„์„œ ModalBottomSheet๊ฐ€ ํ‚ค๋ณด๋“œ์— ๊ฐ€๋ ค์ง€๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ํ‚ค๋ณด๋“œ๊ฐ€ ํŒ์—…๋˜๋ฉด์„œ ModalBottomSheet๋ฅผ ๊ฐ€๋ ค ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ModalBottomSheet๊ฐ€ ํ‚ค๋ณด๋“œ์— ์˜ํ•ด ๊ฐ€๋ ค์ง€๋Š” ํ˜„์ƒ ์šฐ์„  ModalBottomSheet์˜ ์†์„ฑ์— ๋Œ€ํ•ด ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘ isScrollContro..

๐Ÿ’ป ๊ฐœ๋ฐœ/์˜ค๋Š˜์˜ ์‚ฝ์งˆ

[Android / Gradle] The current Gradle version is not compatible with the Kotlin Gradle plugin

์˜ค๋Š˜ ์ˆ˜๋„๊ถŒ์— ๋น„๊ฐ€ ์—„์ฒญ ๋‚ด๋ ค์„œ ์žฌํƒ์„ ํ•˜๊ฒŒ ๋๋‹ค. ์‚ฌ๋‚ด ๊นƒ๊ณผ ์—ฐ๋™์ด ๋˜์–ด ์žˆ์ง€ ์•Š์•„์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ ๋นŒ๋“œ๋ฅผ ํ•˜๋Š”๋ฐ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. Gradle ๋ฒ„์ ผ๊ณผ Kotlin Gradle Plugin ๋ฒ„์ ผ์ด ๋งž์ง€ ์•Š์•„ ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜์˜€๋‹ค. ์นœ์ ˆํ•˜๊ฒŒ๋„ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค€๋‹ค. android/gradle/wrapper/gradle-wrapper.properties๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค. ์•Œ๋ ค์ค€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋Œ€๋กœ ๋ฒ„์ ผ์„ 6.7.0์—์„œ 6.7.1๋กœ ๋ณ€๊ฒฝํ–ˆ๋Š”๋ฐ ์ •์ƒ์ ์œผ๋กœ ๋นŒ๋“œ๊ฐ€ ๋๋‹ค. Gradle ๋ฒ„์ ผ์€ ์•„๋ž˜ ๋งํฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. Gradle Distributions services.gradle.org

๐Ÿ’ป ๊ฐœ๋ฐœ/Flutter

[Flutter / Dart] What is Equatable?

๋ธ”๋กœ๊ทธ ๋‚ด์˜ ๊ฒŒ์‹œ๋ฌผ์€ PC ๋ฒ„์ „์— ์ตœ์ ํ™” ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ Equatable์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. BLoC์— ๋Œ€ํ•œ ๊ธ€์„ ์“ฐ๊ธฐ ์ „์— BLoC์—์„œ ์‚ฌ์šฉํ•˜๋Š” Equatable์— ๋Œ€ํ•œ ์ •๋ฆฌ๊ฐ€ ์šฐ์„ ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๋ณธ๋ก ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ณด์ฃ ! ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. class Person { final int pid; final String name; final int age; Person(this.pid, this.name, this.age); } void main() { Person p1 = new Person(20221234, "kodo", 25); Person p2 = new Person(20221234, "kodo", 25); (p1 == p2) ? print("same") : ..

kodo_o
'2022/08 ๊ธ€ ๋ชฉ๋ก