[學習心得][Golang] 透過撰寫 Disqus 評論轉移到 Github Issue - disqus-importor-go

前言: 前幾天的文章中 [Jekyll] 移除 Disqu 替換到 utteranc 來使用 github issue 作為文章評論 ,我有提到我將本來部落格中的 Disqus 評論有搬到 https://utteranc.es/ 的過程,但是在 Disqus 裡面還有接近兩百個留言 (共有 189 個留言,分別在 55 篇文章內) 怎麼辦? 秉持著自己打造自己用的小工具原則( –關在家裡太無聊– ),就寫出了這個小工具來使用,希望能幫助到一些人。 也希望有更多的人一起加入開發相關功能。 TL;DR 本篇文將要介紹以下一些的部分,除了介紹如何使用外。人和 如何導出 Disqus Comment 套件: Disqus to github issue Go  包括哪些功能 Disqus XML Format 解析 Github issue created in Go 結論 成果 參考文章 如何導出 Disqus Comment 到 Utteranc 到 Disqus 管理介面,去導出: http://disqus.com/admin/discussions/export/ 。 大概需要過一兩天才會收到導出的檔案(不定時)。 到 Utteranc 設定導入 修改 Github Page 設定。 可以參考文章 [Jekyll] 移除 Disqu 替換到 utteranc 來使用 github issue 作為文章評論 套件: Disqus to github issues Go https://github.com/kkdai/disqus-to-github-issues-go 安裝套件方式:``go get github.com/kkdai/disqus-to-github-issues-go` 並且提供一個 CLI 給大家先用,大家可以安裝 go install github.com/kkdai/disqus-to-github-issues-go/cmd/import_disqus_cli 相關指令: -f: Import disqus exported xml file. (get from http://disqus.com/admin/discussions/export/) -u: github user name, you want to use for post github issue. -r: github repo name, you want to use for post github issue. -t: github token, you can request your from https://github.com/settings/tokens. 使用指令範例: ./import_disqus_cli -f="EXPORTED_XML_FILE" -r="BLOG_REPO" -u="GITHUB_USER" -t="YOUR_TOKEN" 包括哪些功能 讀取從 disqus export 的...
繼續閱讀

[好書分享] 什麼時候是好時候:掌握完美時機的科學祕密

什麼時候是好時候:掌握完美時機的科學祕密 When: The Scientific Secrets of Perfect Timing 作者: 丹尼爾・品克 出版社:大塊文化 出版日期:2018/05/29 買書推薦網址: 電子書: Readmoo 博客來: 購買網址 前言: 這一本是今年所讀完的第六本書。你知道透過大數據統計的狀況下,大部分的人什麼時候喝咖啡最好? 什麼時候做文件處理的事項最好? 什麼時候是最容易發生轉職跟轉換工作的季節? 這本書分享了許多統計上的相關數據,讓你了解時間所帶來的秘密,並且也根據每個人工作上的習慣,來建議什麼時候做回覆電子郵件的事情最好,什麼時候建議拿來開會與發想事情? 這本書作者之前看過他的書: 動機、單純的力量(DRIVE: The Surprising Truth About What Motivates Us) ,所以對於他這一本書相當的期待。 內容簡介與心得: 我們無時無刻都面臨一連串永無止盡、與「時機」相關的決定。什麼時候換工作,什麼時候安排課程,什麼時候步入穩定關係或全心投入專案。然而,我們卻隨意做出這些決定——基於直覺、預感及猜測。在本書中,丹尼爾.品克認為這是完全錯誤的方法。 根據品克的話,我們都知道時機就是一切,但我們對時間本身卻了解不多,以為時機是種藝術。他在書中表明,時機其實是一門科學,於是寫出這本談論「什麼時候做什麼事」、有關「時機」的書,為我們揭開時機的科學祕密: •早上何時喝咖啡最好?——不是起床後立刻喝,最好的時間點是在起床後1~1.5小時喝。 •工作多久應該休息一下最有效?——每工作52分鐘,休息17分鐘。 •包含新年元旦,一年當中你有幾天可以重新開始?——86天。 •怎樣利用一天中隱藏的模式來建立理想的工作時間表? •為什麼有些特定類型的休息,會顯著提高學生的考試成績? •什麼時候是辭職、轉職、或結婚甚至離婚的理想時間? 品克借鑑心理學、生物學、神經科學和經濟學等豐富的研究成果,提煉精華,彙整成引人入勝、深具說服力的文章,字裡行間充滿魅力無窮的故事,以及實用的要點——集結在每一章的「時間駭客指南」中。本書富含宏大觀念與深遠寓意,將改變你對自己過去、現在及未來的想法,同時助你掌握人生各階段面臨時機抉擇的最佳決策。 章節條列 第1部 一天 首先透過心理學與生物學的角度來分析,上班族一天的情緒波動。會發現中午吃飯是一個很大的分界點。許多的人專注度在上午最高,但是中午吃完飯回來辦公室後,就開始逐漸下降到下班才會回覆。 還有快樂的心情也是如此,透過這些方式來提供給讀者們知道,該如何尋找人開會,該如何將工作事項做有效的排列與準備。 接下來透過慕尼黑時間型態問卷 (https://www.danpink.com/MCTQ/) 來判別每一位讀者屬於哪一種的人,那麼這樣來說他一天得時間會如何安排。 雲雀 第三種鳥 貓頭鷹 其中雲雀是指的是早起的人們,而貓頭鷹完全相反的是晚起的人們,最後一種就是介於其中的人(大部分也是第三種)。 接下來探討的中午休息(午睡)帶來的工作相關影響,這部分蠻有趣的,其中午休可以帶來下午的充沛活力也是不能不注重的。其中建議的就是小睡 10 ~ 20 分鐘是最建議的休息長度。 下午之後,也建議有所謂的「微休息」,讓專注度可以快速地透過休息後來回復。 第2部 開始、結尾與中場 開始: 將時間從一天放長一點,放到整個職涯,整個人生或是幾年來說。什麼時候會是最被重視的時間? 就是一個新的專案的啟動,一個學習開始,甚至是一個新的工作的開始。 本書作者相當建議讀者要做「事前的驗屍」,也就是在一開始先訂定專案的成功,失敗的可能性,先預想各種可能發生的大型危機。 中場: 人們總是習慣在一開始的時候戰戰兢競,但是過了一半之後就出現了所謂的「中間點危機」(放大到人生,叫作中年危機)。 本書也分享了哪一些時間容易發生轉職的危機,中間點容易發生疲倦與厭煩感是既定的事實,該如何調適也是一門大學問,作者有其他建議方法: 設定暫時性目標: 將中間幾個點設定成小目標,全力衝刺。 公開宣示暫時目標: 告訴其他人你將要完成事項,讓大家一起來給你壓力,讓你能夠做完它。(這也是我最常使用的方式,笑!) 話說到一半就停:這邊說得是,你不要把中間事情做到一個段落,而是每一件事情都做到一半,才會讓你有繼續的動力。 不要讓鏈子斷掉: 回頭看看你過往的努力,會讓你更有信心跟毅力能夠往後。 想像這麼做可以幫助其他人: 往往許多事情是不是只有你自己,很多時候你的工作會帶給其他人很深遠的影響。 結尾: 人們對於中年後的朋友開始去蕪存菁,也會慢慢對於自己想要深交的人開始篩選,這些都是結尾容易發生的事情。 甚至也分享了許多人在工作的最後幾天也往往最讓人印象深刻,甚至是人生的末期也讓人印象深刻。 所以結尾的力量其實相當的重要且深遠。 其中有句話我印象很深刻: 皮克斯每一部的電影主角都有一個想要達成的目標,但是他會明白這個目標其實不是自己需要的東西。而這個目標往往會讓他放棄他需要的事情:朋友,家人。最終主角都會放棄原來的目標,真正的追求他們原本就擁有的東西。 結果層次最高的情就是在這些背後的心理轉折。核心在於這種錯中複雜的情感。 第3部 同步與思考 接下來探討的是群體的時間點,同步與思考的部分。 要如何在整個團體能夠同步到一個最佳的狀況呢? 比如說合唱團要如何抓準時間表演? 龍舟隊伍要如何才能同步大家划船的力量往前衝刺? 擴大到整個組織要如何抓到好的時間點。讓整個團隊能夠在合諧的狀態? 首先作者介紹了一個印度的奇特行業: 幫人送新鮮的午餐便當到手上的工作,在印度首都有許多的人,到每一個人家中收取剛剛包好的便當,送到工作人員的手中。這些人代表的中午吃飯的重要,也代表著一份情感的傳遞。 他們分工也很精密,收送的人,跟發放的人如何有默契的交接,讓便當可以快速的到人的手上,不會冷掉。 這些和諧的團體會有一種同步的機制與節奏,就是「同步者的快感」。 團隊中協調技巧: 快速回覆電子信件 分享彼此的奮鬥故事 培養自律的團隊儀式 由每個人都提供一點點的拼圖方式 最後作者也分享一些名言: 以前我相信,時機就是一切。現在我相信,任何事情都有其時機 心得: 「什麼是好時機?」,我們常常在問自己這個問題。 這本書讀到一半的時候,會以為很像是心理學或是生物學的建議書籍。但是隨著書本內容的案例分享與許多有效與睿智的「時間駭客」精髓,作者除了分享時機的重要性之外,更分享了如何在每個時間中,讓事情的效果發揮到最大。 這一本書有實際的建議,也有相當程度的整理與統計,讓你可以更有效地接受相關的概念,相當建議可以看看。 參考文章 讀書心得-動機、單純的力量(DRIVE: The Surprising Truth About What Motivates Us)
繼續閱讀

[TIL][Jekyll] 移除 Disqu 替換到 utteranc 來使用 github issue 作為文章評論

前言: 疫情升溫打斷本來出遊計劃,還好女兒很乖在玩。 那我就來弄弄 Jekyll 的評論搬遷,結果發現最近有個好用系統 utteranc.es 可以讓你直接使用 github issue 來作為文章評論。 來看看吧。 本篇文章將告訴你如何移出,並且使用 Github Comment 作為文章評論用,現在也有個開源好用的工具。 https://utteranc.es/ 什麼是 Disqus 一直以來本站是透過 Jekyll 來架設的,之前本來有使用 Disqus 作為文章評論系統,雖然很多人說廣告太多,太慢。只是覺得還好,可能沒仔細看。 最近覺得 disqus 的廣告越來越嚴重,影響整個效能。決定拿掉了。 有需要參考的可以看一下這個 commit 主要就是先註解掉相關的設定。 然後發送 git push 即可。 移除 diqus 大家可以參考這個 commit. https://github.com/kkdai/kkdai.github.io/commit/3dfba4885874cb1cb0c06a09fd2f4fffd892623a 主要就是把 disqus 的設定拔掉。 highlighter: rouge markdown: kramdown #disqus: evanlin1007 #comments : # provider : disqus # disqus : # short_name : evanlin1007 加入 utteranc utteranc 是一個完全 Open Source 並且使用 github comment 。並且提供一些設定,還有外觀的 theme 可以設定。感覺相當好用,社定上也很簡單: Install for your github app Put code in your Jekyll Done ! (搭啦) 參考 https://github.com/kkdai/kkdai.github.io/commit/b9606abd93c08bf131efa4db78c8762e8a26f1da 可以修改 _layouts/post.html 如下: <script src="https://utteranc.es/client.js" repo="kkdai/blog" issue-term="pathname" theme="github-light" crossorigin="anonymous" async> </script> 完成品: 這樣是不是很快速(五分鐘就好了) 代辦事項: 接下來就要把 disqus 的評論搬到 github comment, 這邊可以先 export 出來後,寫個 Golang 來 import 。找到了在這裡: http://disqus.com/admin/discussions/export/ 接下來就是把文章評論搬過去。 參考文章: Removing Disqus and adding GitHub Issue Comments Enabling Jekyll Blog Comments with Utterances 我的相關 commit: 拔掉 Disqus https://github.com/kkdai/kkdai.github.io/commit/3dfba4885874cb1cb0c06a09fd2f4fffd892623a 增加 utteranc https://github.com/kkdai/kkdai.github.io/commit/b9606abd93c08bf131efa4db78c8762e8a26f1da
繼續閱讀

[學習心得][Golang] 如何透過 Golang 開發 OAuth2 的 PKCE - 以 LINE Login 為例

前言: 在 2021/04/09 的新聞上, LINE Login 支持了 PKCE (Proof Key for Code Exchange) 的流程。 本篇文章將清楚地解釋一下,什麼是 LINE Login ? 為何 LINE Login 需要支持 PKCE ? 最後會透過一個範例,帶領著讀者們一起來導入與體驗 LINE Login with PKCE 。 其中本篇文章的程式碼分為三個部分,以下快速說明: LINE Login Go SDK: Github: github.com/kkdai/line-login-sdk-go LINE Login Starter: GitHub: github.com/kkdai/line-login-go LINE Login PKCE Starter: GitHub: github.com/kkdai/line-login-pkce-go TL;DR 本篇文將要介紹以下一些的部分: 什麼是 LINE Login? 什麼又是 OAuth ? 什麼樣的情況會建議使用 LINE Login? LINE Login 的流程 OAuth2 有什麼樣的缺點? 什麼是 PKCE? 如何在 LINE Login 之中導入 PKCE? 結論 參考文章 什麼是 LINE Login? 什麼又是 OAuth 2.0 ? 許多的商業服務都會透過會員機制來提供許多專屬的優惠或是獎勵活動,但是會員的註冊與登入流程常常讓許多使用者覺得為難。除了要填寫許多的資料外,使用者還需要額外記住另外一組的帳號密碼。 LINE 在台灣的佔有率相當的高,並且幾乎每個使用者都有 LINE 的帳戶的狀況下,這時候如果能夠直接使用 LINE 帳戶來註冊與登入網站服務的話是不是相當的方便? LINE Login 除了提供一個方式來登入之外,也可以提供使用者名稱,大頭照的相關資訊。並且透過 LINE Login 也可以同時讓使用者加入商業服務的 LINE官方帳號,讓使用者更無時無可都可以使用到相關的服務。 什麼樣的情況會建議使用 LINE Login 這裡會條列出哪些情況建議需使用 LINE Login 作為讀者來評量自己有沒有需要使用 LINE Login : 剛開始要建立電子商務服務或是網站,想要減少使用者註冊的時間並且快速加入。 想要推廣自身官方帳號的聊天機器人服務。 就算是已經推廣一段時間的電子商務服務,但是想要透過 LINE 來接觸不同的客戶群。 了解為什麼使用 LINE Login 以及甚麼狀況下建議使用之後,接下來就引導讀者如何使用範例程式碼 範例程式碼 https://github.com/kkdai/line-login-go 如何部署範例程式碼: 到 LINE Developer Console 建立相關的 Provider 跟 Channel。 建立一個 LINE Login 的帳號,並且將以下兩個資訊記住: Channel ID Channel Secret 另外建立一個 LINE@ 並且打開 MessageAPI 的功能(也就是建置 chatbot 用),並且將以下兩個資訊記住: Channel Secret Channel Token 到 https://github.com/kkdai/line-login-go 按下 Heroku Deploy ,建立該帳號並且部署該服務。這時候會要輸入三個資訊: LINECORP_PLATFORM_CHANNEL_CHANNELID...
繼續閱讀

[TIL][Kotlin] 關於 Kotlin 相關語法快速整理

前言: 最近 Google Taiwan 開啟一個計畫「Android App 開發培訓計劃 2021」,透過 Android Studio 跟著 Kotlin 這個語言來讓大家寫 Android App 。趁機順便學習一下 Kotilin 相關語法跟需要注意的地方。 相關工具 Kotlin Playground 由於有點懶得安裝環境跟相關的 IDE 設定,所有的練習其實可以快速的在 Kotlin Playground 上面完成。 語法Tutorial - Koans 可以透過網頁上面的 Koans 或是內建在 JetBrains IntelliJ IDEA or Android Studio 的 JetBrains educational plugin 學習建議: 由於這個語言我不是很熟習,但是熟悉新的語法其實蠻建議透過 Tutorial 來先有個概念性的了解,方便你開始相關的查詢。 所以這邊建議先跑過一次 Koans 再來把相關資料結構與語法來做一個語法的相關脈絡整理。 特別資料結構語法說明 LIST val numbers: List<Int> = listOf(1, 2, 3, 4, 5, 6) 透過 List 關鍵字來加上 generic type 來建立出相關 List 物件。也可以透過 Inferred 方式建立。 val numbers = listOf(1, 2, 3, 4, 5, 6) Kotlin 是 Zero-based Index 的語言(延伸自 Java) 。 MutableList 參考官方文件 , MutableList 為長度可變的 List 。也就是可以針對 List 去 add, addAll, listIterator, remove, removeAll… 相關操作。 宣告方式參考如下: val entrees = mutableListOf<String>() 相關文章: Stackoverflow: You have not accepted the license agreements of the following SDK components duplicate
繼續閱讀

[TIL][Android] Android Studio 開啟專案可能會遇到的問題

前言: 最近 Google Taiwan 開啟一個計畫「Android App 開發培訓計劃 2021」,透過 Android Studio 跟著 Kotlin 這個語言來讓大家寫 Android App 。雖然我之前有寫過,但是也很久沒使用 Android Studio 了,來開啟專案看看吧。 不過一開始好像開啟錯誤的 codelabs www 不小心開到後面的 Use Kotlin Coroutines in your Android App,出現了一些問題,也順便解決一下。 如何設定環境(How to setup your Android 4.1 on Mac Catalina) 跟著這次的 Kotlin coroutine codelab 你會找到 Android Studio 下載的地方。 你也會找到相關的 github for Kotlin coroutine 。 然後透過 Android Studio 來打開 coroutines-codelab 的資料夾,你可能會出現以下的 Error 。 > License for package Android SDK Build-Tools 29.0.2 not accepted > License for package Android SDK Platform 29 not accepted. > Could not resolve all dependencies for configuration ':start:debugRuntimeClasspath'. > Could not create task ':start:minifyReleaseWithR8'. > Cannot query the value of this provider because it has no value available. 原因: 因為最新版本的 Android Studio 4.1.3 ,預設使用的 Android SDK 版本是 30 ,但是這次的 codelab 是使用舊版本的 29 來準備的。所以需要下載舊版本的 SDK 並且同意相關的 License 授權。 解決方式: [Preference] -> [System Setting] -> [Android SDK] -> Enable Android Platform 29 這樣下載 Android SDK 29 的時候,就會同時去同意 License 。 就可以正常的...
繼續閱讀