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

[iOS / Swift] URL Encoding = nil...? (URL ์ธ์ฝ”๋”ฉ์ด ๋˜์ง€ ์•Š์„ ๋•Œ)

๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ์—์„œ ํ•œ๊ตญํ™˜๊ฒฝ๊ณต๋‹จ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋Œ€๊ธฐ์งˆ ์ •๋ณด๋ฅผ ํ†ตํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ธก์ •์†Œ๋ณ„ ๋Œ€๊ธฐ์งˆ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณด๋ ค๊ณ  ํ–ˆ๋‹ค. ํ•œ๊ตญํ™˜๊ฒฝ๊ณต๋‹จ_์—์–ด์ฝ”๋ฆฌ์•„_์ธก์ •์†Œ์ •๋ณด ๋Œ€๊ธฐ์งˆ ์ธก์ •์†Œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋น„์Šค๋กœ TM ์ขŒํ‘œ๊ธฐ๋ฐ˜์˜ ๊ฐ€๊นŒ์šด ์ธก์ •์†Œ ๋ฐ ์ธก์ •์†Œ ๋ชฉ๋ก๊ณผ ์ธก์ •์†Œ์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. โ€ป ์šด์˜๊ณ„์ •์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ ์—์–ด์ฝ”๋ฆฌ์•„ OpenAPI ์‚ฌ์šฉ์ž www.data.go.kr ๊ตฌํ˜„ํ•˜๋ ค๋Š” ์•ฑ์€ ์ด 3๊ฐœ์˜ ViewController๋กœ, ์ง€์—ญ๋ช…์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ํ•ด๋‹น ์ง€์—ญ์˜ ์ธก์ •์†Œ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€ ํŠน์ • ์ธก์ •์†Œ์˜ ๋Œ€๊ธฐ์งˆ์˜ ์ƒ์„ธ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€ ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์šฐ์„  ์ง€์—ญ๋ช…์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€์ธ ViewController๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž. // // ViewControlle..

[iOS / Swift] Exception NSException * "-[UIView setText:]: unrecognized selector sent to instance

Delegate๋กœ ํŠน์ • Cell์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ƒ์„ธ ์ •๋ณด ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค. extension ViewController : UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { guard let viewController = self.storyboard?.instantiateViewController(identifier: "DiaryDetailViewController") as? DiaryDetailViewController else { return } let diary = self.diaryList[indexPath.row] ..

[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..

[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

[Android / Kotlin] Failed to call observer method

์˜ค๋ฅ˜ ๋ฐœ์ƒ Databinding + ViewModel + LiveData ๋กœ ๊ฐ„๋‹จํ•œ MVVM ์˜ˆ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Databinding ์œผ๋กœ ํ‘œํ˜„ํ•  ๋ณ€์ˆ˜(?)๋ฅผ layout ์•ˆ์— ๋ธ”๋Ÿญ์— ๋„ฃ์–ด์คฌ๋”๋‹ˆ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ์˜ค๋ฅ˜ ๋‚ด์šฉ ํ•ด๊ฒฐ String ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ... ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹... toString() ์„ ํ•ด์คฌ๋”๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ๋‹ค. ์ฐธ๊ณ  MVVM ์˜ˆ์ œ StackOverFlow

[Git / Github] Refusing to merge unrelated histories

์˜ค๋ฅ˜ ๋ฐœ์ƒ ์ธํ„ด์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋“ค์„ ๊นƒ๋žฉ์ด ์•„๋‹Œ ๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ ค๋†จ์—ˆ๋‹ค. ์›๋ž˜๋Š” ํšŒ์‚ฌ ๊นƒ๋žฉ์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”๋ฐ ์˜ค๋ฅ˜ ๋•Œ๋ฌธ์— ์˜ฌ๋ผ๊ฐ€์งˆ ์•Š์•„์„œ ์šฐ์„  Private Repository ๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ปค๋ฐ‹์„ ํ•ด์คฌ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘ ์ธํ„ด ๋งˆ์ง€๋ง‰ ๋‚ ์ธ ์˜ค๋Š˜ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๊นƒ๋žฉ์œผ๋กœ ๋‹ค์‹œ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜... ์šฐ์„  git remote rm origin ์œผ๋กœ ์—ฐ๊ฒฐ๋œ Repository ์™€ ํ•ด์ œํ•˜๊ณ  git remote rm origin "์ƒˆ๋กœ์šด ๊นƒ๋žฉ ssh ์ฃผ์†Œ" ๋กœ ๋‹ค์‹œ ์—ฐ๊ฒฐํ•˜๊ณ  push ๋ฅผ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ? ์˜ค๋ฅ˜ ๋‚ด์šฉ refusing to merge unrelated histories ์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค. ์›์ธ์€ ๊นƒ๋žฉ์— ์ƒ์„ฑํ•ด๋†“์€ Repository ์™€ ์ง€๊ธˆ๊นŒ์ง€ ๊นƒํ—ˆ๋ธŒ์— ์ปค๋ฐ‹ํ–ˆ๋˜ Repository ๊ฐ€ ์„œ๋กœ ๊ด€๋ จ์ด ์—†..