前言
原因是這樣的,我在去年 12/13 參加了 GDG 週年 Hackathon Party,當時主辦社群很有心的提供 GCP Credit 半年份,雖然當時我是 AWS 派系但我還是很開心的使用它,但我就在這幾天收到了一筆兩千塊的帳單,造就了這篇文章分享…😭
原因是這樣的,我在去年 12/13 參加了 GDG 週年 Hackathon Party,當時主辦社群很有心的提供 GCP Credit 半年份,雖然當時我是 AWS 派系但我還是很開心的使用它,但我就在這幾天收到了一筆兩千塊的帳單,造就了這篇文章分享…😭

大家好,我是 LINE Taiwan Technology Evangelist – NiJia Lin。很高興這次能以 LINER 身份於 8/1、8/2 參加 COSCUP 2020,並體驗開源社群充滿熱忱與活力的氛圍!COSCUP 是亞洲最大的開源會議之一,自 2006 年開始由開源社群舉行的年度會議,也是台灣自由開源軟體運動 (FOSSM) 的主要倡導者。COSCUP 包含演講、贊助商、社群攤位,以及 BoF 社群同樂會等,COSCUP 的宗旨在於提供一個聯結開放原始碼開發者、使用者與推廣者的平台。
感謝台灣的防疫英雄們的努力讓大家有機會參加線下的研討會,也辛苦大會在行前的各種宣導與措施,讓這次 COSCUP 可以圓滿結束!
以下為大家帶來這次 LINE 的三個講者分別為大家帶來的內容分享 😃

原文出自 มาสร้างตู้เพลง Jukebox เท่ห์ๆด้วย LINE Chatbot ผ่าน Spotify API กัน!
今天我將透過這篇文章帶大家在 LINE 中創建聊天機器人 “Nickelodeon”。會實作此聊天機器人是因為有時會有朋友來我家做飯,我會同時在家中播放音樂。但是朋友們會一下這首一下要求那首。所以我有了新主意:嘿,不如讓 Chatbot 擔任我的助手,幫助我脫離 555+ 種 DJ 身份。而實際上這個 Chatbot 可以應用於其他情境,例如在辦公室中或開車和朋友一起旅行等。
大家好,我是 LINE Taiwan 的 Tech Evangelist – NiJia Lin。這次很開心 DevRel 團隊受到 chatbot 社群的邀請,參加了 「Chatbot meetup 聊天機器人小聚 21 @ On-ramp Studio」 的聚會活動,並且分享 LINE API 更新的心得。在此也跟各位分享本次參與的心得,並且也希望透過社群分享的力量能夠讓聊天機器人的開發動能更加的盛大。
社群 Chatbots Meetup: https://chatbots.kktix.cc/
本次活動網頁: https://chatbots.kktix.cc/events/meetup-021
本次活動的共筆紀錄: https://hackmd.io/@chatbot-tw/meetups-021
由於 Chatbots Meetup 本身屬於社群自主性的活動,裡面也有許多社群朋友所贊助的閃電秀。裡面的所有內容也是相當的難得與有趣。也希望能夠透過本篇文章讓大家稍微了解 Chatbots Meetup 社群閃電秀的魅力。
這次活動總算又回到 LINE 台灣的辦公室來舉辦,同時這也是疫情後 LINE 辦公室第一次舉辦線下的聚會。希望透過這次的聚會可以讓更多朋友了解到打造自己的聊天機器人是如此讓人開心的事情。
大家好,我是 LINE Taiwan 的 Tech Evangelist – NiJia Lin。
在尚未更新前時常會遇到問題就是網址後面會接上 liff.state= 抑或是會在原始 target url 上加上 斜線(/) 這類相關的問題,開發者(包括我)都需要使用相關的 workaround 去解套,這邊提供之前我寫的 Twitch-Bot 的 Javascript workaround 來處理 liff.state 的問題:
1 | const query = req.query['liff.state'].split('?')[1].split('&'); |
這樣的解法可以解決我的問題但會讓開發有點綁手綁腳的,但隨著 LIFF v2.3 改版上線後出現了兩個模式提供選擇,分別是 Concatenate 與 Replace 兩個選項,如下圖所示:

在 v2.3 的更新中將之前所會遇到問題以及已有對應 workaround 的版本變成 Replace mode,而新推出的 Concatenate mode 則已解決相關的議題。也許在使用上還是會有點困惑,以下就使用一些 Scenario 為各位介紹一下這兩個功能之間的差異以及解決了什麼問題 🙂。

Grafana 是一個視覺化、即時監控以及 plug-in system 的工具,之前使用時也含有許多儀表板(dashboard)以及圖表來呈現 Server 狀態,且他們還很酷地將它 open source - Grafana,使用 React JS 打造的可容下大量資料的畫面,Grafana 除了支援多平台外也支援 Docker,接下來就來看一下我聽這集的心得吧!

Photo by tingyaoh
寫程式不管在哪個情境都會需要處理錯誤訊息,除了程式以外語言本身也需要這樣的功能,因此 python 就提供了一個標準函式庫 - atexit,這名字從 C 語言時態就存在的一個工具,主要是監聽程式當收到關閉請求時,可以先跳至已註冊的函式中先處理掉一些事情後再接著關閉服務,這個做法被稱為 Exit Handler,主要就是當程式收到關閉的訊號時最後會進入的函式們,一般較常見的會放上關閉資料庫連線、釋放記憶體、備份 cache 等等的功能,如此一來就能降低問題的產生,讓服務能夠可平滑的關閉、重啟。
不管使用 python 寫 腳本、後端、爬蟲 都可以使用 atexit 來處理例外錯誤,而我在 flask 中使用時與官方記載的註解有點不同,本篇就介紹一下 atexit 以及使用中不同的部分吧!