λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Kotlin14

[3] Kotiln Coroutines - Suspending Function Ref. ( μ•„λž˜ 유튜브 μ˜μƒμ€ κ°•λ ₯ μΆ”μ²œ ) Youtube : [μƒˆμ°¨μ›, μ½”ν‹€λ¦° 코루틴] https://youtube.com/playlist?list=PLbJr8hAHHCP5N6Lsot8SAnC28SoxwAU5A Ref : https://kotlinlang.org/ [ 간단 μš”μ•½ ] 비동기도 순차적으둜 μˆœμ°¨μ μ΄μ§€ μ•Šκ²Œ λΉ„λ™κΈ°μ μœΌλ‘œ - async 이쀑 Lazy 맀개 λ³€μˆ˜μ— λŒ€ν•΄μ„œλ„ μ‚΄νŽ΄ λ³΄μ•˜λ‹€. Structured concurrency ν˜•νƒœ > μŠ€μ½”ν”„ μ•ˆμ—μ„œ 코루틴을 μ‹€ν–‰μ‹œν‚¨λ‹€λ©΄, ν•΄λ‹Ή 코루틴듀이 잘λͺ»λ˜μ—ˆμ„ λ•Œ μΊ”μŠ¬μ΄ μ „νŒŒ λ˜λ©΄μ„œ λͺ¨λ“  코루틴을 μ’…λ£Œν•  수 μžˆλ‹€λŠ” 점 주의! β˜‘οΈ 코루틴은 비동기 일지라도 순차적인 μ½”λ“œμ™€ κ°™λ‹€. (μ˜μƒ 08:20) fun main() = runBlocking { val ti.. 2021. 7. 27.
[2] Kotiln Coroutines - Cancelation / TimeOut https://medium.com/@limgyumin/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%9D%98-%EA%B8%B0%EC%B4%88-cac60d4d621b 도움이 많이 λ˜μ—ˆλ‹€. μ½”ν‹€λ¦° μ½”λ£¨ν‹΄μ˜ 기초 μ½”ν‹€λ¦° 의 코루틴은 비동기 ν”„λ‘œκ·Έλž˜λ°μ„ μ²˜λ¦¬ν• μˆ˜ μžˆλŠ” 쒋은 λ°©λ²•μž…λ‹ˆλ‹€. medium.com Ref. Youtube : [μƒˆμ°¨μ›, μ½”ν‹€λ¦° 코루틴] https://youtube.com/playlist?list=PLbJr8hAHHCP5N6Lsot8SAnC28SoxwAU5A Ref : https://kotlinlang.org/ Cancelation μ‹€ν–‰ ν–ˆλ˜ 코루틴을 μ·¨μ†Œ ν•˜λŠ” 방법 β†’ μ·¨μ†Œ ν•˜λŠ” 것이 μ€‘μš”ν•œ μ΄μœ λŠ” ν•˜λ‚˜ν•˜λ‚˜ λ©”λͺ¨λ¦¬μ™€ λ¦¬μ†ŒμŠ€λ₯Ό μ°¨.. 2021. 7. 26.
[1] Kotiln Coroutines - Coroutine Builder/Scope/Suspend function/Structured Concurrency Why Coroutine? https://wooooooak.github.io/kotlin/2019/08/25/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%BD%94%EB%A3%A8%ED%8B%B4-%EA%B0%9C%EB%85%90-%EC%9D%B5%ED%9E%88%EA%B8%B0/ Ref. Youtube : [μƒˆμ°¨μ›, μ½”ν‹€λ¦° 코루틴] https://youtube.com/playlist?list=PLbJr8hAHHCP5N6Lsot8SAnC28SoxwAU5A Ref : https://kotlinlang.org/ [ μ€‘μš”ν•œ κ°œλ… ] * Coroutine Builder β†’ [launch] , [runBlocking] * Scope β†’ [CoroutineScope] , [GlobalScope] * S.. 2021. 7. 23.
Kotlin : Repeat / Git Overide r-- r-- r-- ν•΄κ²° Repeat : λ‚΄λΆ€μ μœΌλ‘œ for 문을 μ‚¬μš©ν•˜λŠ” inline ν•¨μˆ˜ 이닀. fun main() { repeat(100){ j -> println(j) } } β†’ 좜λ ₯ : 0 1 ... 99 Git Overide r-- r-- r-- ν•΄κ²° [λ‹Ήμ‹œ 상황] .git 이 λ“€μ–΄μžˆλŠ” ν”„λ‘œμ νŠΈ νŒŒμΌμ„ μ•„λž˜ λͺ…λ Ήμ–΄λ‘œ μ‚­μ œ ν•˜λ €κ³  ν–ˆλ‹€. rm -R kotlin_coroutines [ν•΄κ²°] rm -rf kotlin_coroutines [-r κ³Ό -rf 차이가 뭐길래? ] 일단 rm 은 remove의 μ•½μžμ΄κ³ , -r : ν•˜μœ„ Directoryλ₯Ό ν¬ν•¨ν•œ λͺ¨λ“  파일 μ‚­μ œ -rf : μ§€μ •λœ Directory의 SubDirectory와 κ·Έ μ•ˆμ˜ λͺ¨λ“  νŒŒμΌμ„ μ‚­μ œ (μ‹€μˆ˜λ‘œ μ‚­μ œ 폴더λ₯Ό root λ‘œν•˜λ©΄.. μ•…..μ•…λ§ˆμ˜ λͺ…λ Ήμ–΄..라고 ν•œ.. 2021. 7. 23.
[λ―Έμ™„ Kotlin_Android] MVVM νŒ¨ν„΄ 1. MVVM νŒ¨ν„΄ 2. Live Data - Observer νŒ¨ν„΄ 3. Android - Navigation https://www.youtube.com/watch?v=-b0VNKw_niY https://thdev.tech/google%20io/2018/05/12/Android-New-Package-AndroidX/ https://black-jin0427.tistory.com/138 https://deque.tistory.com/110?category=984011 https://woovictory.github.io/2019/06/10/Android-MVVM/ https://aonee.tistory.com/48 https://charlezz.medium.com/view-binding-%EC%82%B4%ED.. 2021. 7. 19.
IntelliJ μ„€μΉ˜ μ‹œ 컴파일 였λ₯˜ JDK 8 https://gaeggu.tistory.com/2 java μ„€μΉ˜ν•˜κΈ° ( JDK μ„€μΉ˜, ν™˜κ²½λ³€μˆ˜ μ„€μ •, ν…ŒμŠ€νŠΈ) 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” μžλ°”λ₯Ό μ„€μΉ˜ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. μžλ°” μ„€μΉ˜λŠ” 3λ‹¨κ³„λ‘œ λ‚˜λˆ„μ–΄ μ§„ν–‰ν•˜κ² μŠ΅λ‹ˆλ‹€. 1. JDK μ„€μΉ˜ 2. ν™˜κ²½λ³€μˆ˜ μ„€μ • 3. μžλ°” μ‹€ν–‰ ν…ŒμŠ€νŠΈ 1. JDK μ„€μΉ˜ λ¨Όμ € μžλ°”λ₯Ό μ„€μΉ˜ν•˜κΈ° μœ„ gaeggu.tistory.com https://github.com/JetBrains/kotlin/commit/b27dd8e3fe0 Apply illegal-access=permit workaround for JDK 16+ Β· JetBrains/kotlin@b27dd8e Apparently, the openjdk commit that enabled JEP 396 (encapsula.. 2021. 7. 19.
Kotlin_μ œλ„€λ¦­ / ν™•μž₯ / ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° ↓ TakeIf, TakeUnless https://medium.com/@limgyumin/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9D%98-takeif-takeunless-%EB%8A%94-%EC%96%B8%EC%A0%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80-f6637987780 /** * generic : * ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ 맀개 λ³€μˆ˜ λ˜λŠ” ν•¨μˆ˜μ˜ 맀개 λ³€μˆ˜ λ°˜ν™˜ νƒ€μž…μ„ 미리 ν™•μ •ν•˜μ§€ μ•Šκ³  * μ •μ˜ν•œ 후에 μ‚¬μš©λ˜λŠ” μ‹œμ μ—μ„œ νŠΉμ • νƒ€μž…μ„ 지정할 수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” 기법이 μ œλ„€λ¦­. * * μΊμŠ€νŒ…μ„ 방지 ν•˜μ—¬ μ„±λŠ₯ ν–₯상 κ°€λŠ₯. * * ( ListλŠ” Generic μΈν„°νŽ˜μ΄μŠ€λ‘œ μ •μ˜ 됨 β†’ ν•œ μ’…λ₯˜μ˜ List μ•ˆμ— λ‹€λ₯Έ νƒ€μž…μ˜ μš”μ†Œλ“€μ„ μ €μž₯ν•  .. 2021. 7. 2.
Kotlin_상속 / 객체 / μΈν„°νŽ˜μ΄μŠ€μ™€ 좔상 클래슀 상속 public : μ½”ν‹€λ¦°μ—μ„œ 속성과 ν•¨μˆ˜κ°€ 기본적으둜 κ°–λŠ” κ°€μ‹œμ„± private : 속성과 ν•¨μˆ˜κ°€ μ •μ˜λœ 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©λ  수 μžˆλ‹€. protected : 이 κ°€μ‹œμ„±μ΄ μ§€μ •λœ 속성과 ν•¨μˆ˜λŠ” μžμ‹ μ΄ μ •μ˜λœ 클래슀 λ‚΄λΆ€ λ˜λŠ” 이 클래슀의 μ–΄λ–€ μ„œλΈŒ ν΄λž˜μŠ€μ—μ„œλ„ μ‚¬μš© κ°€λŠ₯ is μ—°μ‚°μž : ν˜„μž¬ 객체가 νŠΉμ • νƒ€μž…μΈμ§€ κ²€μ‚¬ν•œλ‹€. 상속 open class Room(val name: String){ protected open val dangerLevel : Int = (1..10).shuffled().last() fun description() = "Room: ${name}\n" + "μœ„ν—˜ μˆ˜μ€€ : ${dangerLevel}" open fun load() = "아무도 여기에 μ˜€μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.." // an.. 2021. 7. 2.
Kotlin_Map / Class Map /** * * 반볡문 https://androidtest.tistory.com/98 * * Map - 킀와 쌍으둜 데이터가 μ €μž₯되며, μ •μˆ˜λ₯Ό μ‚¬μš©ν•œ 인덱슀 기반 처리 λŒ€μ‹  ν‚€λ₯Ό 기반으둜 데이터λ₯Ό μ²˜λ¦¬ν•œλ‹€. * MutableMapOr , mapOf ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ 생성됨. * 킀와 벨λ₯˜λ₯Ό μ •μ˜ν•˜κΈ° μœ„ν•΄ toλ₯Ό μ‚¬μš©ν•˜κ³  있음. * toλŠ” ν‚€μ›Œλ“œ 처럼 λ³΄μ΄λŠ”λ° λ‚΄λΆ€μ μœΌλ‘œλŠ” μ»΄νŒŒμΌλŸ¬κ°€ "carrie".to(100) μ΄λ ‡κ²Œ λ³€ν™˜ν•œλ‹€. - μ• μ΄ˆμ— μž‘μ„±μ‹œμ— μ΄λ ‡κ²Œ 해도 됨. * Pair νƒ€μž…μ„ μ‚¬μš©ν•  μˆ˜λ„ 있음 * * λ˜‘κ°™μ€ key의 값을 μΆ”κ°€ν•˜λ €κ³  ν•˜λ©΄ (μΆ”κ°€λŠ” +=) ν•΄λ‹Ή ν‚€μ˜ 벨λ₯˜λ§Œ 바뀐닀. * * ν‚€ κ°’μœΌλ‘œ κ°’ κ°€μ Έμ˜¬ 수 μžˆλ‹€. * * Mapμ—μ„œ 값을 κ°€μ Έμ˜€λŠ” ν•¨μˆ˜ * [] 인덱슀 μ—°μ‚°μž / getVa.. 2021. 7. 1.
Kotlin - Scope ν•¨μˆ˜ & List와 Set μŠ€μ½”ν”„ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ μ½”λ“œ 양을 쀄일 수 μžˆλ‹€. μ„œμ μœΌλ‘œ μ–΄λ €μ›Œμ„œ 유튜브λ₯Ό 톡해 κ°•μ’Œλ₯Ό μ‹œμ²­ν–ˆλ‹€. ↓ μΆ”μ²œ(μ‰½κ²Œ 이해 λœλ‹€.) https://www.youtube.com/watch?v=QGDWWL6qA3I https://www.youtube.com/watch?v=B-QPB487aVA fun main() { var price = 5000 var book = Book("λ””λͺ¨",10000) book.name = "[μ΄ˆνŠΉκ°€]" + book.name book.discount() // scope ν•¨μˆ˜ applyλ₯Ό μ‚¬μš©ν•˜λ©΄, μ°Έμ‘° μ—°μ‚°μžλ₯Ό 없이 μ‚¬μš©μ΄ κ°€λŠ₯ν•΄μ§€λŠ” 것을 확인 ν•  수 μžˆλ‹€. // applyλŠ” μΈμŠ€ν„΄μŠ€ μžμ‹ μ„ λ‹€μ‹œ λ°˜ν™˜ν•˜λ―€λ‘œ, μƒμ„±λ˜μž 마자 μ‘°μž‘λœ μΈμŠ€ν„΄μŠ€λ₯Ό λ³€μˆ˜μ— λ°”λ‘œ 넣어쀄 수 μžˆλ‹€. // main .. 2021. 6. 30.
Kotlin_Null & λ¬Έμžμ—΄ & 숫자 νƒ€μž… μ½”ν‹€λ¦°μ—μ„œλŠ” null 값이 지정될 수 μžˆλŠ” μš”μ†Œκ°€ μžˆλŠ”κ°€ ν•˜λ©΄ 그렇지 μ•Šμ€ μš”μ†Œλ„ μžˆλ‹€. nullable non-nullable * μžλ°”λŠ” μ–΄λ–€ νƒ€μž…μ˜ λ³€μˆ˜λ„ null 값을 κ°€μ§ˆ 수 μžˆλŠ”λ° κ·Έλž˜μ„œ NPE 둜 인해 앱이 ν¬λž˜μ‹œ λ˜λŠ” κ²½μš°κ°€ ν”ν•˜λ‹€.' * null 값을 κ°€μ§ˆ 수 μžˆλ‹€κ³  νŠΉλ³„νžˆ μ§€μ •λ˜μ§€ μ•ŠμœΌλ©΄ λ³€μˆ˜κ°€ Null 값을 κ°€μ§ˆ 수 μ—†λ‹€. readline의 ν—€λ”λŠ” λ°˜ν™˜ νƒ€μž…μ΄ String? 인데, μ΄λŠ” ν•΄λ‹Ή νƒ€μž…μ΄ null κ°€λŠ₯함을 λ‚˜νƒ€λ‚Έλ‹€. public fun readline(): String? μ•„λž˜ μ½”λ“œλŠ” 였λ₯˜κ°€ λ‚˜μ§€ μ•ŠλŠ”λ‹€. fun main() { var beverage = readLine() beverage = null println(beverage) } null κ°€λŠ₯ νƒ€μž… - String? n.. 2021. 6. 30.
Kotlin - 읡λͺ…ν•¨μˆ˜μ™€ ν•¨μˆ˜ νƒ€μž… β˜… 읡λͺ… ν•¨μˆ˜ β˜… == λžŒλ‹€(Lambda) 읡λͺ… ν•¨μˆ˜ μ •μ˜ == λžŒλ‹€ ν‘œν˜„μ‹ == λžŒλ‹€μ‹ 읡λͺ… ν•¨μˆ˜ λ°˜ν™˜ κ²°κ³Ό -- λžŒλ‹€ κ²°κ³Ό 읡λͺ… ν•¨μˆ˜λŠ” λ‹€λ₯Έ ν•¨μˆ˜μ˜ 인자둜 μ‰½κ²Œ 전달될 수 μžˆλ‹€. // 메인 ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 읡λͺ… ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜κ³  ν˜ΈμΆœν•œλ‹€. // 읡λͺ… ν•¨μˆ˜λŠ” { 와 } 사이에 ν‘œν˜„μ‹μ΄λ‚˜ λͺ…령문을 λ„£μ–΄ μž‘μ„±ν•œλ‹€. // 읡λͺ… ν•¨μˆ˜ } λ‹€μŒμ— ()λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜ΈμΆœν•œλ‹€. - () λΉΌλ©΄ λ¬Έμžμ—΄ 좜λ ₯ μ•ˆλ¨ // - 이름이 μžˆλŠ” ν•¨μˆ˜μ²˜λŸΌ 읡λͺ… ν•¨μˆ˜λ„ 인자λ₯Ό μ§€μ •ν•˜λŠ” κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•΄μ„œ 호좜될 λ•Œλ§Œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. // (μ•„λž˜ μ˜ˆμ œμ—μ„  μΈμžκ°€ μ—†μœΌλ‹ˆκΉŒ 빈 κ΄„ν˜Έ) fun main() { println( { val currentYear = 2021 "SimVillage 방문을 ν™˜μ˜ν•©λ‹ˆλ‹€. (copyright $current.. 2021. 6. 30.