發表文章

[Bottender] 如何在 Heroku 上部屬 LINE BOT

上一篇文章是 2015 了呢.... 主要是之前已經寫過一個簡單的 LINE BOT, 但最近剛好有點時間(?),所以想要藉此機會全部重寫。 之前寫的機器人原始碼在這邊 https://github.com/Rainsting/TarotLineBot --------------------------------------------------------------------------------------- 這次我選擇由台灣人自己新開發的機器人框架 - Bottender, 在此時的版本是 v0.15.0。 由於這整包在中文圈內的討論似乎不多,大部分都是拿來用在 FB Messenger 上, 對於 LINE BOT & Heroku 的著墨很少,希望藉由這一篇簡單做個記錄。 1. 首先申請個 LINE@ 帳號,並開啟 developer 功能: 網路上其實很多資訊了,這邊就不多說,建議可以參考前人的文章: LINE BOT 實戰 ( 原理篇 ) http://www.oxxostudio.tw/articles/201701/line-bot.html 這邊目的是取得 Channel secret & Channel access token,之後會用到。 2. 申請 Heroku 帳號,並安裝 Heroku CLI: 一開始用免費帳號就足夠了,申請帳號也可參考前人的教學: Heroku安裝使用教學 https://ericjhang.github.io/archives/689940fd.html 3. 將 Heroku 產生的 Domain 連結到 Line Develop Console 的 Webhook URL 內 位置在 Heroku 的 Settings,複製底下 Domains and certificates 的後面那一段, 4. 安裝 bottender (以 Windows 為例) 首先按照官網步驟,使用 npm 安裝 bottender 套件 https://bottender.js.org/docs/GettingStarted npm install -g bottender 先自己取個好聽的名字,之後在過程中

[iOS] 徹底刪除新版 iTunes 下載項目列表 -- 適用 v12 以上版本

過往只要開啟 iTunes 就會幫你自動下載從以前到現在抓過的所有 APPs, 當時如果嫌麻煩還可以一次全選進而刪除掉, 但是!西嘎洗!在新版 iTunes v12.X 版之後,沒辦法一次全選刪除了怎麼辦? 難道只能用笨方法慢慢刪除了嗎?

[iOS] 解除 LINE 的電話號碼綁定,與備份資料庫

由於 LINE 在綁定了電話號碼之後,就不能使用 VPN 跨國下載其他有趣的貼圖了, 但現在又有很多當地的新圖需要綁定電話號碼才可下載,如果想要解除綁定的話怎麼辦呢? 不管用什麼方法,更新過後的 LINE 都要重新下載貼圖喔! 而且要記得原本的換機密碼喔! == 方法一 == 我個人比較愛用這個方法 XD === 解除綁定 === 0. 在綁定狀態下,先下載好你要的貼圖。 1. 將 iPhone 連接到電腦,並打開你的 iTools / iFunBox (解除綁定開始)(這裡以 iTools 為例)。 2. 選取本機應用程式 LINE -- 瀏覽 -- 進入 Library -- Preferences 資料夾。 3. 「備份」並「刪除」 "jp.naver.line.plist" 檔案(記得一定要備份,丟到電腦的桌面也可以)。 4. 將 LINE 從 iOS 的多工列關閉,並重新打開,然後重新登入。 === 重新登入 === 5. 登入 -- 透過 Email 來登入並輸入換機密碼。 6. 然後在設定 -- 個人資料內,就可以看到電話號碼已經刪除囉。 == 方法二 == 首先用 iTools 備份聊天與對話記錄: 1. 進入 LINE -- Documents 資料夾。 2. 備份裡面的「talk.sqlite」、「talk.sqlite-shm」、「talk.sqlite-wal」三個檔案 3. 刪除 LINE 並重新安裝,然後登入。 4. 安裝好後,將上述三個檔案重新丟進去原目錄即可。 Enjoy it!

如何在 rename() 過後持續使用 inotify 來監控文件?

由於工作上遇到此問題,請教了咕狗大神半天也找不太到合適的答案,只好自己研究了。 平常使用 inotify() 可以拿來監控文件的變更,最常見的就是透過 IN_CLOSE_WRITE 這個 mask 來監視,範例如下:

如何在 Linux Kernel 下偵測網路的連線狀態?

借用一下參考資料的標題。 今天如果想要在 Linux Kernel 內得知實體網路的 Link Status,只需要去 /sys/class/net/ 然後直接去 cat 這兩個 node,以 eth0 來當範例。 這是網路線有插入的狀況: eth0/carrier:1 eth0/operstate:unknown 這是網路線拔除的狀況: eth0/carrier:0 eth0/operstate:down 當再次插入時,原本的 carrier 會從 unknown 變成 1: eth0/operstate:up eth0/carrier:1 不然直接去 grep eth0/ 底下的東西也可以: grep "" eth0/* 很遺憾的是,在 user level 內支援的 inotify,在 kernel level 是不能用的, 所以要借助 socket 的力量,直接在 ethernet driver 內使用 sock_create_kern 來 create socket, 然後透過 connect 與 sock_sendmsg 將要傳的資料填寫在 buf 內就好。(如果要傳 struct 就 &struct) 參考資料: http://stackoverflow.com/questions/808560/how-to-detect-the-physical-connected-state-of-a-network-cable-connector http://stackoverflow.com/questions/10340145/get-event-for-nic-ethernet-card-link-status-on-linux

Net-Snmp 5.7.2.1 Porting and Testing Commands

由於工作需求...呃應該不用什麼前言了。 本篇主要介紹如何將 net-snmp 5.7.2.1 (LTS) 做完 CROSS-Compile 並 Porting 到 Embedded 平台上。 以下將以 Ti 的 DM368 平台來做示範。

在 Ubuntu Server 上安裝自己的 WikiMedia

由於在工作上有需求(遠目),需要安裝 Wiki 在 Server 上, 這邊便簡單記錄一下在 Ubuntu 上安裝 Wiki - MediaWiki 的心路歷程。 系統環境: 1. Ubuntu 14.04 server 2. MediaWiki 1.19.14 3. VirtualBox 4.3.12 確保安裝相關套件: sudo apt-get install mysql-server mysql-client sudo apt-get install php5 php5-mysql sudo apt-get install libgd2-xpm libgd2-xpm-dev php5-gd sudo apt-get install mediawiki 設定 MediaWiki 的 config 檔: sudo vi /etc/mediawiki/apache.conf - #Alias /mediawiki /var/lib/mediawiki + Alias /mediawiki /var/lib/mediawiki service apache2 restart 在 Ubuntu 14.04 之後的版本,需要額外執行下面這一行, 才能看到 MediaWiki 的設定畫面(記得 Apache 要重啟): sudo a2enconf mediawiki 之後連入 http://localhost/mediawiki ,跟著設定畫面一一設定, 最後會在網頁上自動產生一個 LocalSettings.php 以供下載,這時就這樣做: sudo cp /var/lib/mediawiki/config/LocalSettings.php /etc/mediawiki/LocalSettings.php sudo chown www-data /etc/mediawiki/LocalSettings.php sudo chmod 600 /etc/mediawiki/LocalSettings.php sudo rm -Rf /var/lib/mediawiki/config 如果找不到 ~/mediawiki/config/ 這個資料夾,那就開啟 samba 把檔案丟進去即可。 如