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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

(386)
[์†ŒํŠธํ”„์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง] Software Engineering at Google ์ฝ๊ณ  ๊ธฐ๋ก _ Chapter 1, 2 Software Engineering at Google ์›์„œ๋ฅผ ๋งค์ผ ์กฐ๊ธˆ์”ฉ ์ฝ๊ณ  ์žˆ๋‹ค. ์ฝ๋‹ค๊ฐ€ ์ด๋Œ€๋กœ ๊ทธ๋ƒฅ ์ง€๋‚˜์น˜๊ธฐ์—๋Š” ์•„์‰ฌ์šด ๋ถ€๋ถ„๋“ค์„ ๊ธฐ๋กํ•˜๋ ค๊ณ  ํ•œ๋‹ค. Software Engineering at Google Curated by Titus Winters, Tom Manshreck & Hyrum Wright 1. ์œ„์น˜ : PART II Culture / Chapter 2: How to Work Well on Teams / The Genius Myth The Genius Myth is the tendency that we as humans need to ascribe the success of a team to a single person/leader. ์ฒœ์žฌ ์‹ ํ™”๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ธ๊ฐ„์œผ๋กœ์จ ํŒ€์˜ ์„ฑ๊ณต์„ ํ•œ ๊ฐœ์ธ/๋ฆฌ..
[Android] Types as Sets / ์ง‘ํ•ฉ์œผ๋กœ์„œ์˜ ํƒ€์ž…๋“ค(UI ์ƒํƒœ) https://proandroiddev.com/modelling-ui-state-on-android-26314a5975b9 Modelling UI State on Android The recommended approach from Google for Android development is holding the UI state in a ViewModel and having the View observe it. To… proandroiddev.com ๐Ÿ‘๐Ÿ‘๐Ÿ‘ UI์˜ ๋ณ€ํ™”์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ƒํƒœ ๊ฐ’๋“ค์˜ ๋ฒ”์œ„๋Š” ๊ธฐํšํ•œ ํ™”๋ฉด ์ƒํƒœ์— ๋”ฐ๋ผ ํ•œ์ •๋˜์–ด์•ผ ํ•œ๋‹ค. ex) 5๊ฐ€์ง€ ์ƒํƒœ๊ฐ€ ๊ธฐํš๋˜์—ˆ๋‹ค๋ฉด, ์ƒํƒœ ์ •๋ณด์˜ ๋ฐ์ดํ„ฐ๋Š” 5๊ฐœ๋งŒ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. enum 5๊ฐœ ๋“ฑ์œผ๋กœ. Int๋‚˜ String์œผ๋กœ ์กฐ๊ฑด์„ ํ™•์ธํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์ƒํƒœ ๊ฐ’์˜..
[Kotlin Coroutine]How to make sense of Kotlin coroutines ์ดํ•ด https://proandroiddev.com/how-to-make-sense-of-kotlin-coroutines-b666c7151b93 How to make sense of Kotlin coroutines Coroutines are a great way to write asynchronous code that is perfectly readable and maintainable. Kotlin provides the building block of… proandroiddev.com The most interesting thing is that a thread can stop executing a coroutine at some specific “suspension points”, and go do so..
[ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ์ฃผ์„ ์“ฐ๊ธฐ ํŒ https://stackoverflow.blog/2021/07/05/best-practices-for-writing-code-comments/ Best practices for writing code comments - Stack Overflow Blog While there are many resources to help programmers write better code—such as books and static analyzers—there are few for writing better comments. While it's easy to measure the quantity of comments in a program, it's hard to measure the quality, and t st..
[Kotlin Coroutine] launch ์•ˆ hot flow์™€ suspend function ์‚ฌ์šฉ / launch ์•ˆ์—์„œ api ํ˜ธ์ถœ ๋ˆ„๋ฝ launch์•ˆ์— paging3์˜ adapter์˜ loadStateFlow๋ฅผ ๋”ฐ๋ผ ui ๋ฐ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ , viewModel์—์„œ api๋ฅผ ํ˜ธ์ถœํ•ด pager๋กœ ๋ฐ์ดํ„ฐ๋ฅผ flow๋กœ ๊ฐ€์ ธ์˜ค๋„๋ก ํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ flow๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ด์ œ์•ผ ํ™•์ธํ–ˆ๋‹ค. ๋ฌธ์ œ์˜ ์ฝ”๋“œ launch{ adapter.loadStateFlow.collectLatest { state -> when(state.refresh) { is LoadState.NotLoading -> { ... } is LoadState.Error -> { ... } else -> Unit } } // { ... } is LoadState.Error -> { ... } else -> Unit } } //์ด ๋กœ๊ทธ๋Š” ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค. Log.d("Test", "..
[์‚ฝ์งˆ][Android Studio]์ƒˆ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์‹คํŒจ. / navigation.json (์ง€์ •๋œ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค) ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ํ•ญ์ƒ ๋นŒ๋“œ ์‹คํŒจ๋กœ ๋ฌด์–ธ๊ฐ€ ํ•ด๋ณด๊ธฐ ์ „์— ๋‚ญํŒจ๊ฐ์„ ๋ง›๋ณด๋‹ค๊ฐ€ ์ด์ œ์•ผ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์•„. ๋กœ๊ทธ > Task :app:processDebugMainManifest FAILED Execution failed for task ':app:processDebugMainManifest'. > com.android.manifmerger.ManifestMerger2$MergeFailureException: java.io.FileNotFoundException: C:\๊ฒฝ๋กœ\ํ”„๋กœ์ ํŠธ๋ช…\app\build\intermediates\navigation_json\debug\navigation.json (๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ ๏ฟฝ๏ฟฝθ๏ฟฝ ã๏ฟฝ๏ฟฝ ๏ฟฝ๏ฟฝ ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝฯด๏ฟฝ) C:\๊ฒฝ๋กœ\ํ”„๋กœ์ ํŠธ๋ช…\app\build\intermediates\n..
[Kotlin] ํด๋” ์ง€์šฐ๊ธฐ ํด๋”์™€ ํ•˜์œ„ ํŒŒ์ผ๊นŒ์ง€ ์ง€์šฐ๊ธฐ fun delete(directoryPath : String) { val dir = File(directoryPath) dir.deleteRecursively() } File.deleteRecursively()์˜ ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์•˜๋‹ค. /** * Delete this file with all its children. * Note that if this operation fails then partial deletion may have taken place. * * @return `true` if the file or directory is successfully deleted, `false` otherwise. */ public fun File.deleteRecursivel..
[RxJava] io.reactivex.exceptions.OnErrorNotImplementedException ์ด์Šˆ๋ฅผ ํ™•์ธํ–ˆ๋‹ค. Fatal Exception: io.reactivex.exceptions.OnErrorNotImplementedException The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling ReactiveX/RxJava RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences f..