[Golang][FB] 教學如何快速透過 Golang 與 Heroku 架設一個臉書機器人

1. Just Deploy the same on Heroku

Deploy

Remember your heroku ID and app address. ex: https://APP_ADDRESS.herokuapp.com/

2. Create a Facebook Page

Make sure you already have Facebook account, if you need use FB Bot.

3. Go to Facebook Developer to create App

Create App, need select as follow:

  • New App type [Web App], create app
  • Add new product [Messenger]

4. Configuration Messenger Bot

Get token from Faccebook page.

  • Select a “Page” you own.
  • Go to “Meseenger” product.
  • It will generate token
  • copy it and store it.

5. Paste Token to Heroku

Go to heroku dashboard, go to “Setting” -> “Config Variables”.

  • Add “Config Vars”
  • Name -> “TOKEN”
  • Value use token facebook app.

6. Back Facebook App configuration

  • Go to “Messenger” product
  • Go to “Setup Webhooks”
  • Fill https://APP_ADDRESS.herokuapp.com/webhook in callback URL.
  • Fill your token in “token”.
  • Checked the checkbox “message_deliveres”, “messages”.

If your configuration is correct, it will show “completed”.

Also remember to choose correct page in this setting.

7. Request basic permissions

In Messenger application review, press “Request Premission”.

  • Checked the “pages_messaging”.

How to testing it.

  • Go to your spcific “page” in Facebook.
  • Press “Send Message”

How to modification your Bot Code

  • Download code from Heroku git clone https://git.heroku.com/APP_ADDRESS.git
  • Modify code on main.go first. especially in MessageReceived().
  • Commit and push it back to heroku git push heroku master.

程式設計週記[2016/06/24]: COSCUP 要開賣, Docker Swarm v2 帶來集群管理

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

正式上班第一週,大部分時間都在開會 @_@ .本週最大的事情大概就是COSCUP 要開賣還有就是 Docker 出了自己的集群管理系統 Docker Swarm v2 . 本週還是寫了一個專案,不過不會記錄到 Project52,大家也要繼續寫喔.



Go

Short Introduction to Bleve

一個文字搜尋的套件,支援相當多的語系.這裡有 Github

GO: MARSHAL AND UNMARSHAL JSON WITH TIME AND URL DATA

講解如何透過 Custom Marshaller 透過 JSON 來處理 time 或是其他類型資料.這裡有更仔細的影片教學可以看 from Francesc Campoy -

http://elliot.land/go-subtests-and-sub-benchmarks

主要是講解 Go 1.7 新增的 subtest 跟 subbenchmark 的部分.

HOW TO WRITE ROUTER TESTS IN GO



Python



Android/JAVA/NODE.JS/Scala

Spark Streaming Programming Guide - Spark 1.1.0 Documentation

Send data to spark streaming directly via pipe



Docker

Youtube: Docker 1.12 Release Candidate 2

About Docker Swarm V2, 內建 SwarmKit 之後.類似 Mesos 一樣可以很方便的建置出資源控管.

More Microservices Bliss with Docker 1.12 and Swarm only

專門幫 Docker port 到 PI (ARMed) 的 HyPriot 也把 1.12 開始導入了,這篇也有一些介紹.

DockerCon 2016 D1 主题演讲

紀錄 DockerCon 2016 第一天的重點,主要還是集群管理的部分.

Swarm Reboot in Docker 1.12

SwarmKit 在 Docker 1.12 之後會整合進 Docker Swarm 中,這篇文章做一個簡單的介紹.

Building serverless apps with Docker

若有參加 Docker Birthday #3 聚會,應該都了解這 voting 的 Micro-services web 架構,原 fig 作者(後來變成 Docker compose) - Ben Firshman ,把這應用程式變成 Serverless 架構。測試過無需裝 Docker 1.12 rc2,Docker 1.11亦可執行,但 Docker Compose 要 1.7 以上~



iOS/Swift



其他程式語言



論文收集



網站文章



網站收集



有聲書/影片心得



本週專案

Project 52 雖然結束了,好像還是天天在寫東西.紀錄一下

Facebook Bot in Golang 範本與簡單教學如何馬上配置好 Facebook Bot Server 透過 Heroku.

明明 Project 52 都結束了.. 還是習慣寫點東西…

程式設計週記[2016/06/17]: 女兒剛滿週歲,Project52 也順利完成

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

本週真是一波多折:先是老婆感冒生病,再來換我眼睛長針眼.也剛好本週要把 Project 52 跟一個電子報導(尚未發,先保密)寫完.整個就是忙碌到不行.最後專案是 Raft Server ,所有的變數名稱跟功能都是依照論文來寫.不過 Log Replication 還需要更多的測試才能確認功能是否正常.



Go

google/cayley: An open-source graph database

Google 開發的開源圖形資料庫,裡面提供許多關於連接資料 (Linked Data) 的工具箱.

GB 0.4.2 release

GB 有新功能就是 nope mode ,可以只編譯 test 的部分而不去跑他,來確保程式碼有沒有基本的問題.

How to do Google sign-in with Go

透過 Golang 來撰寫可以登入 Google 服務的功能.

roylee0704/gron: gron, Cron Jobs



Python

Reactive Programming in Python

PyCon Taiwan 2016 的講稿



Android/JAVA/NODE.JS/Scala

jQuery 3.0 Final Released!



Docker

Shrink your App with Alpine Linux

教導你如何將 App 修改後可以放入 Alpine Linux 之中,這樣也可以在 Docker 放入 Alpine (又小又安全)

gaia-adm/pumba: Chaos testing tool for Docker



iOS/Swift

iOS 裡面的 SourceKit 已經是用 Swift 編譯而成



其他程式語言

Spark手把手:e2-spk-s02 教你如何透過 docker 來架設 spar



論文收集

Who to Follow for DevOps Resources on Twitter | Automic Software

DevOps Twitter 名人帳號清單.



網站文章

Clairvoyance 是怎麼開發的 - 104 Chrome 套件天眼通的開發經過與心得

最近很知名的 104 Chrome Plugin 可以讓你在職位下面留言.

Secure and fast GitHub Pages with CloudFlare

找時間要把這個部落格 HTTPS 的問題透過 CloudFlare 解決一下

API 已死,Bot-to-Bot 时代即将到来

[原文] 這一篇裡面是提到,透過自然語言的發展.以後機器對機器可以越來越簡單,而不用再透過 API 了.

揭秘苹果的 AI 技术: 即将用于Siri 2 的自我学习技术

灣區日報: 面對困難項目怎麼辦

面对困难的项目(尤其是side project),如何坚持做下去?将每天醒来的第一个小时贡献给这个项目,一小时到了可以停下来明天再做。这种方式开始新的一天就会时不时思考该项目。每天一小时,养成了习惯,就坚持下去了,就有可能做成你原以为做不成的事。 [摘錄]

Slide: QCon NewYork 2016: The Verification of a Distributed System

The Segment AWS Stack



網站收集

Distributed systems for fun and profit

“GDB for fun and profit”

A curated list of awesome Amazon Web Services (AWS) libraries, open source repos, guides, blogs, and other resources. Featuring the Fiery Meter of AWSome.

收集所有的 AWS Web Service



有聲書/影片心得

Youtube: Distributed Consensus Making Impossible Possible

很值得一看.

Google’s Site Reliability Engineering with Todd Underwood

想知道 Google SRE 做什麼,聽聽看



本週專案

這邊會寫一些我的Project 52的成果.

本週專案: https://github.com/kkdai/raftserver

最後一個禮拜,當然要專心把 Raft Consensus 寫完.不過這週有太多的事情.所以雖然做完了,但是只有 Leader Election 有比較多的測試; Log Replication 需要更多的測試與問題修正.

邁向下一步

打完卡後,就要離開群光電子. 在這兩年多,不務正業的完成以下目標:

  1. 有一個可愛的女兒(滿足…)
  2. 完成 8 堂 MOOCs (本想一年 10 堂,但是硬生生拖了兩年還是上不完)
  3. 程式語言 Scala, Swift, Golang, Ruby, R 學習. Python 算複習. ObjC / Android 工作上的就不算了.
  4. 完成了 Project 52 (眼淚…)
  5. 將要站上 COSCUP 講者台 (順便也將要站上 Morden Web)
  6. 讀了 4 篇非工作上的相關論文 (Paxos, Raft, Gorrila, Maglev)
  7. 很開心地加入了碼天狗,認識很多厲害的大大.

勇敢邁向下一步吧… 我是這麼想著..

[TIL] 將資料從 Macbook Air 轉換到新的 Macbook Pro Retina

起源:

買了一台 15 吋的 MBPR 來當作工作機,就必須要把我的資料從 MBA 轉換到 MBPR .這邊寫一下經過紀錄一下:

流程:

透過 “系統移轉輔助程式” 來轉移資料:

根據 Apple: 將內容移到新的 Mac 應該直接使用 “系統移轉輔助程式” 應該要可以把兩台電腦透過 WiFi 來轉移資料,但是不知道為什麼找不到對方電腦,有試過以下的方式:

  • 雙方電腦確定都更新到 10.11.5
  • 確定在同網域
  • 確定同使用者

還是不行.決定換方式.

透過 “Time Machine” 來轉移資料

這邊要先講一下,原本我的 Time Machine 都放在 NAS 上面.結果要在另外一台電腦還原的時候就苦惱了.

後來還是決定另外弄一個隨身硬碟來弄 “Time Machine” ,然後透過 “系統移轉輔助程式” 來轉移.

轉移成功後還是有一些東西要處理:

  • Homebrew 的資料夾 /usr/local 權限要處理,可以參考這篇
sudo chown -R $USER:admin /usr/local

其他使用到現在都還沒出現其他問題,有問題再來更新.

參考:

程式設計週記[2016/06/10]: 端午節 -> 白蛇 -> Python -> Python 節

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

本週適逢連假,本來想寫作者外出取材中.但是還是很拼命地完成相關的文章索引跟當週作業.下週就是我完成 Project 52 的最後一週,本週投稿 COSCUP 結果被接受.很期待跟大家分享做 Project52 的快樂與心酸啊 :)



Go

heroku/force: A command-line interface to force.com

Heroku 出的 force.com 的 CLI 工具,可以到這裡去看看詳細簡介.force.com 是由 salesforce.com 的 BaaS 服務.

Introducing Gimme: Dependency-less dependencies for Go

“Gimme” 提供了另外一種 Dependency Management 的一種思維.就是幫你需要的檔案直接複製到你的資料夾裡面.

Running Go on a Chromebook in Developer Mode (without installing Linux)

如何在 Chromebook 上面跑 Go 卻不需要安裝 Linux

SwimRing - A Minimal Distributed Fault-Tolerant Key-Value Store built with SWIM Gossip Protocol and Consistent Hash Ring

有時間可以看看裡面的部分,SWIM + Gossip 並且透過 Consistent Hashing .

鯰: Programmable fuzzy scheduler for testing distributed systems http://osrg.github.io/namazu

透過 Namazu (鯰) 可以幫助你測試分散式系統 (Zookeeper, YARN) 的一些問題,進而分析問題的主要原因.

這裡有更詳細的影片,可以看看: https://www.youtube.com/watch?v=mmSV4AhJUno

etcd over gossip: strongly-consistent semantics in a weakly-consistent world

這是一篇 CoreOS (他們最受歡迎的產品就是 etcd ) 在他們的研討會 FEST 2016 裡面的一個主題: “etcd over gossip: strongly-consistent semantics in a weakly-consistent world”

也就是架設在 Gossip Protocol 上面的 etcd . 並且底層是透過 Docker 的 weave net

這一篇裡面有將 etcd 裡面的 raft-example 做一些基本的講解,如果你對 Raft-Consensus 有一點瞭解,卻不知道該如何寫一個具有 Raft 能力的服務.可以參考一下這篇文章.

Service autodiscovery in Go with sleuth

這一篇講解透過 sleuth 來做 伺服器的 auto discovery



Python

Youtube: The Clean Architecture in Python

心得: BerkeleyX CS100.1x “Introduction to Big Data with Apache Spark”

主要都是使用 PySpark 很好的課程心得,雖然去年我也修過了

fukuball/FukuML-Tutorial

fukuball 有公布他的 Machine Learning 的套件,這個就是一個 python notebook 來講解如何使用該套件.



Android/JAVA/NODE.JS/Scala



Docker

docker/swarmkit: A toolkit for orchestrating distributed systems at any scale. It includes primitives for node discovery, raft-based consensus, task scheduling and more.

Docker 在 06/17 開源了這個專案, 主要用来提供容器集群以及编排能力.並且提供具有 raft-consensus 的集群系統. 這裡有更多的介紹文

iOS/Swift



其他程式語言

如何來 Debug Regex

Hound comments on style violations in pull requests

幫助你把 PR 先做一次 style check (lint) .



論文收集

[Static Deadlock Detection for Concurrent Go

by Global Session Graph Synthesis](http://www.doc.ic.ac.uk/~cn06/pub/2016/dingo/main.pdf)

論文作者有在 gophers.slack.com 裡面說明:

deadlock detector above it works only up to go1.5 (because go/ssa changed interfaces in go1.6)

Code: dingo-hunter

2016 年機器學習頂級論文下載 (Conference on Learning Theory)



網站文章

Design KKBOX app for UWP

在 Win10 的 UWP 架構下設計 KKBOX App 心得文章.主要都是講解 UI 一些物件的處理.

Should Engineers Really be Judged by Their Resume Writing Skills?

常常我們都會把履歷表弄的很炫很棒,但是卻讓很多非本科系的人看得霧煞煞;或是有的人能力很強,履歷表上面卻無法正常表現出它應有的能力與水準. 這篇文章採訪了 Martin Harriman 一個硬體工程師想轉職到軟體工程師,但是卻無法寫出一份良好的履歷表.

使用 Stripe Atlas 設立美國公司的心得與歷程分享

想要開美國公司可以看看這篇文章,作者花了兩個月透過 Stripe Atlas 在美國開設公司的經驗.

樓門五三桐:成長歷程小分享

作者本來想從事數學系的相關教學工作,卻轉行變成財務工程.並且講解一個很有趣的遊戲”價值卡”,建議大家可以看看.

How I learned extensively by a Hack-a-thon…!!

作者敘述他在 Hackathon 裡面學到的東西遠遠比一般工作還要多.對於 Hackathon 有興趣的人可以看看.

聊天机器人如何盈利?这里有七种可能的商业模式

講解最近很紅的 IM Bot 要如何獲利. T客邦有另外一篇類似的文章: 為什麼Facebook、LINE、Skype都在做聊天機器人?你該知道什麼是對話式電子商務時代了

立志成為物聯網中樞,亞馬遜 Echo 的開發秘辛

Echo 主要團隊都是從 Fire Phone 過來的,並且透過之前的經驗來打造全新的智慧家電體驗.

When Your Strength Becomes Weakness: Microsoft & Web 2.0, Google & Social, and now Apple & AI

講解著微軟與 Google 與 Apple 原本都從事自己專長的.但是因為時代的變遷,沒有跟上時代的腳步而將原本的優勢變成了自己的劣勢. Inside 已經有翻譯成中文

這邊另外有一篇探討 Yahoo 輝煌不再的文章

Serverless Reference Architectures with AWS Lambda

講解 AWS serverless (也就是俗稱的 Lambda ) 架構.這篇部落格很棒值得推薦.



網站收集



有聲書/影片心得

Netflix’s Data Pipeline with Steven Wu

講解為何 Netflix 的使用者資料處理流程 (data pipeline ) 要從本來自建的 control manager “Chukwa” 換到 Kafka .

裡面有不少有趣的討論,更多詳細都是來自於 Netflix 的這篇 blog



本週專案 —–

這邊會寫一些我的Project 52的成果.

https://github.com/kkdai/petl

主要就是開始學習 Pipe 與 Pipeline 在 Golang 中要如何一起實現,並且透過這個簡單的程式來做一些簡單的資料存取與處理(這裡用最簡單的文字大小寫變換).