<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kotlin on 只放拖鞋的鞋櫃</title><link>https://jchu.cc/tags/kotlin/</link><description>Recent content in Kotlin on 只放拖鞋的鞋櫃</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Sat, 03 Sep 2022 23:09:44 +0800</lastBuildDate><atom:link href="https://jchu.cc/tags/kotlin/index.xml" rel="self" type="application/rss+xml"/><item><title>Kotlin 雙冒號 ::someMethod 的觀察</title><link>https://jchu.cc/2022/09/03-kotlin.html</link><pubDate>Sat, 03 Sep 2022 23:09:44 +0800</pubDate><guid>https://jchu.cc/2022/09/03-kotlin.html</guid><description>&lt;p&gt;寫 kotlin 的時候經常會看到 &lt;code&gt;::myMethod&lt;/code&gt; 的出現，本文觀察編譯器的結果去猜測可能的過程。並非真正地去閱讀規格或源碼。若有寫不正確的地方，還請鄉親指正&lt;/p&gt;</description></item><item><title>kotlinx-coroutines-test migrate to 1.6 紀錄</title><link>https://jchu.cc/2022/03/30-coroutine-migration.html</link><pubDate>Wed, 30 Mar 2022 21:07:18 +0800</pubDate><guid>https://jchu.cc/2022/03/30-coroutine-migration.html</guid><description>&lt;p&gt;之前因為工作的需要，把 kotlin 從 &lt;code&gt;1.5.2&lt;/code&gt; 升級到 &lt;code&gt;1.6.0&lt;/code&gt;，同時修了許多 unit test 相關的問題，在這邊紀錄一下過程，給需要幫助的朋友。&lt;/p&gt;</description></item><item><title>Gralde build error</title><link>https://jchu.cc/2020/10/30-gradle.html</link><pubDate>Fri, 30 Oct 2020 16:34:37 +0800</pubDate><guid>https://jchu.cc/2020/10/30-gradle.html</guid><description>&lt;p&gt;在 Android 的 app moudle 裡面，嘗試把一些獨立的類別搬到新增加的一個 library module 的時候，遇到了類似這樣的錯誤&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;gt; The consumer was configured to find an API of a component, as well as attribute &amp;#39;com.android.build.api.attributes.BuildTypeAttr&amp;#39; with value &amp;#39;debug&amp;#39;, attribute &amp;#39;org.jetbrains.kotlin.platform.type&amp;#39; with value &amp;#39;androidJvm&amp;#39;. However we cannot choose between the following variants of project :common-libs:&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>實作 Google Authenticator 的兩階段驗證</title><link>https://jchu.cc/2020/08/16-twofactor.html</link><pubDate>Sun, 16 Aug 2020 02:22:34 +0800</pubDate><guid>https://jchu.cc/2020/08/16-twofactor.html</guid><description>&lt;p&gt;之前聽到 Tim 說 PTT 的現有的登入方式不改的話很沒救，我想到兩階段驗證的方法，所以好奇研究了一下該怎麼做。實際上看了才知道比想像中簡單，PTT 有意願的話，實作難度真的不高。&lt;/p&gt;
&lt;p&gt;Google Authenticator (後面簡稱 GA)是常見的兩階段驗證(2FA)會用到的程式，好比 GitHub 或是 Facebook 的兩階段驗證都能用這隻程式取得驗證碼。如果你的網站服務想要利用 2FA 增加安全性，利用 GA 可以算是非常便宜的方案 - 不需要自己寫 client App，只要自己的網站加上一些簡單的流程與演算法就能取得 2FA 的優點。&lt;/p&gt;
&lt;p&gt;本文簡介如何實作，並且附上驗證的程式。&lt;/p&gt;</description></item><item><title>Kotlin coroutine 基礎筆記</title><link>https://jchu.cc/2020/03/22-coroutine.html</link><pubDate>Sun, 22 Mar 2020 21:59:50 +0800</pubDate><guid>https://jchu.cc/2020/03/22-coroutine.html</guid><description>&lt;p&gt;Coroutine 算是 Kotlin 裡面相當引人注目的功能，簡單來說就是可以幫助處理非同步需求的機制。&lt;/p&gt;
&lt;p&gt;舉例來說，我們常常看到這樣的需求：按下一個 Fetch 的按鈕，去抓網路上的某個列表來更新手機內的資料，同時又不希望 UI thread 被卡住。在 Android 上面經常就是祭出 AsyncTask，或是用 Rx 的方式來處理。利用 Coroutine，這些功能都會變得比較簡單實作&lt;/p&gt;</description></item><item><title>Kotlin 的 scope function: apply, let, run..等等</title><link>https://jchu.cc/2018/05/05-kotlin.html</link><pubDate>Sat, 05 May 2018 10:51:57 +0800</pubDate><guid>https://jchu.cc/2018/05/05-kotlin.html</guid><description>&lt;p&gt;先講結論：這些 functions 目的是希望，執行程式碼裡面的 function literal 的時候有更好的可讀性。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;&lt;code&gt;Function&lt;/code&gt;&lt;/th&gt;
					&lt;th style="text-align: center"&gt;&lt;code&gt;identifier&lt;/code&gt;&lt;/th&gt;
					&lt;th style="text-align: center"&gt;&lt;code&gt;return value&lt;/code&gt;&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;let&lt;/td&gt;
					&lt;td style="text-align: center"&gt;it&lt;/td&gt;
					&lt;td style="text-align: center"&gt;last line of literal&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;run&lt;/td&gt;
					&lt;td style="text-align: center"&gt;this&lt;/td&gt;
					&lt;td style="text-align: center"&gt;last line of literal&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;also&lt;/td&gt;
					&lt;td style="text-align: center"&gt;it&lt;/td&gt;
					&lt;td style="text-align: center"&gt;this&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;apply&lt;/td&gt;
					&lt;td style="text-align: center"&gt;this&lt;/td&gt;
					&lt;td style="text-align: center"&gt;this&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;i&gt;&lt;span style="color:#FF0000"&gt;Let it&lt;/span&gt; &lt;span style="color:#FF8888"&gt;Run this&lt;/span&gt; literal&lt;/i&gt;, &lt;span style="color:#0000FF"&gt;it Also&lt;/span&gt; &lt;span style="color:#8888FF"&gt;Apply this&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;這是我背誦記憶的口訣：&lt;strong&gt;Let 用 it，Run 用 this，都是回傳 function literal 最後一行的值。Also 用 it，Apply 用 this，都是回傳 this&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>使用 Checkstyle/Ktlint 檢查 Java/Kotlin 語法</title><link>https://jchu.cc/2017/09/13-checkstyle.html</link><pubDate>Wed, 13 Sep 2017 00:14:12 +0800</pubDate><guid>https://jchu.cc/2017/09/13-checkstyle.html</guid><description>&lt;p&gt;多人開發的場合，大家寫程式的習慣用法往往不一樣。除了實作上的思維不同，在所難免，至少在程式碼風格上可以一致。&lt;/p&gt;
&lt;p&gt;不同的語言有不同的 coding style，在 Java 裡面我通常就是參考(以前是 Sun Microsystems 現在是 Oracle) &lt;a href="http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html"&gt;Code Conventions for the Java TM Programming Language&lt;/a&gt;。隨著開發時間的拉長，遞交程式的數量變多之後，總是會有幾次忘記加上空白之類的小瑕疵，這種檢查理當交給程式去做。&lt;/p&gt;
&lt;p&gt;雖然寫程式沒有 freestyle，但是我們有 &lt;a href="http://checkstyle.sourceforge.net/"&gt;checkstyle&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>