2017/9/21

[早午餐] 再一塊吧ing 蘆洲

markdown ## [早午餐] 再一塊吧ing 蘆洲 ## 食物 * 份量:很充足 * 味道:花生醬漢堡一開始吃覺得不錯,但吃到最後有點膩。凱薩沙拉的蘿美很脆,沙拉很棒。 * 價格:125~250 * 送餐時間:送餐方式是一道一道做好就上。飲料秒上,幾分鐘後上沙拉,在你沙拉還沒吃完前漢堡就好了。 ## 舒適度 * 座位間距:還算寬敞 * 乾淨程度:優 * 廁所:還行 * Wi-Fi:together/together ## 裝潢風格 * 配色:白、黑、綠、木紋 * 元素:大理石磁磚地板、木紋桌椅、綠色植物、黑白木色裝飾小物 ## 資訊 * 營業時間:9:00-18:00 * 地址:247新北市蘆洲區長安街108巷12號 * 電話:02 2848 8272

2017/9/19

[早午餐] 早茶餐管 蘆洲

[早午餐] 早茶餐管 蘆洲

裝潢:工業風、空間乾淨舒適、座位間距適當、冷氣有點涼

味道:主餐跟套餐配的薯條都很棒

份量:一般、飲料量偏少

價格區間:90~190

地址:247新北市蘆洲區集賢路222-4號

電話:02 8286 8003





2017/9/18

[早午餐] 豐滿總匯三明治 蘆洲店

[早午餐] 豐滿總匯三明治 蘆洲店

裝潢:空間乾淨舒適、座位間距很大、還有小孩的遊樂區

味道:比麥當勞好吃

份量:偏多

價格區間:150~200

地址:247新北市蘆洲區長樂路53號

電話:02 8286 3871

2017/9/14

rails debug 技巧

markdown 在 controller 裡的 action 可以取得 request 物件 ``` class TestController < ApplicationController def index p request.class render plain: "ok" end end ``` 會發現 request 物件是 [ActionDispatch::Request](http://api.rubyonrails.org/classes/ActionDispatch/Request.html) 類別 request.headers 是 [ActionDispatch::Http::Headers](http://api.rubyonrails.org/classes/ActionDispatch/Http/Headers.html) 類別 我們可以用 each 去印出 headers 的所有內容: ``` request.headers.each{|header| p header } ``` 仔細觀察會發現 header 是一個長度為2的陣列, header[0] 代表 key,header[1] 則代表 value。 ``` def index headers = request.headers.to_a.keep_if { |header| header[0].index('HTTP') == 0 }.map{ |header| "#{header}" } render plain: headers.join("\n") end ``` 可以透過 keep_if 保留想要關注的資訊

2017/9/13

mac 環境變數的設定

markdown mac 環境變數的設定 讀取:在 bash 輸入 ``` echo $PATH ``` 寫入:在 bash 輸入 ``` export PATH=完整的PATH值要寫在這裡 ``` 增加一段路徑:在 bash 輸入 ``` export PATH=$PATH:新的路徑要寫在這裡 ``` 或者 ``` export PATH=新的路徑要寫在這裡:$PATH ``` 可以注意到 $PATH 的路徑是以 : 號作為分隔符號,所以上面是把舊的$PATH值加上分隔符號:,再加上新的路徑,再存回$PATH。 另外,可以將環境變數值修改的程式寫在 ~/.bash_profile,這個檔案會在每次開啟 bash 時執行,這樣可以確保不影響其他使用者。 ~/.bash_profile 檔修改後,如果不想重開 bash,也可以在 bash 輸入 ``` source ~/.bash_profile ``` 這樣就會執行 ~/.bash_profile 檔了 PATH 功能是當你在 bash 輸入一個指令時,可以讓系統知道該去哪些目錄找到這個指令的執行檔,他會按照PATH的順序一個個目錄去找。所以當新的路徑寫在原有的路徑前面時,代表你希望系統先去新的路徑找找看。

在 ruby 可執行 js 的爬蟲

markdown [watir](https://github.com/watir/watir) 是一個自動測試工具,我打算拿來做爬蟲,因為我的爬蟲需要執行頁面 js 獲得動態 dom 結果,而 watir 剛好可以做到這件事情。 watir 需要搭配瀏覽器使用,我先試著使用 phantomjs 這個瀏覽器。 phantomjs 是一款無頭瀏覽器 [Headless_browser](https://en.wikipedia.org/wiki/Headless_browser), 因為他不需要真正顯示畫面,所以他的效能比較好。 [怎麼在 heroku 上跑 watir (phantomjs)](https://github.com/edelpero/watir-examples/blob/master/watir_on_heroku.md) 但是因為 chrome 也做了無頭版的瀏覽器,所以 phantomjs 的作者後來就不更新了。 [Getting Started with Headless Chrome](https://developers.google.com/web/updates/2017/04/headless-chrome) [Headless Capybara Feature Specs with Chrome](https://robots.thoughtbot.com/headless-feature-specs-with-chrome) [資料來源1](https://ruby-china.org/topics/31784)

Heroku

markdown Heroku Dyno 可以提供虛擬的執行環境 他的運作流程大概是: 當有新的 code push 上去時觸發 1 建立一個 linux 的空環境 2 根據 buildpack 的資訊安裝系統環境 3 在 /app 下放入 push 上去的 code 4 根據 /app/gemfile 安裝對應的套件 5 根據 procfile 的資訊 啟動網站 你可以使用以下指令去觀察環境 ``` heroku run bash ```

2017/9/12

ruby 反射筆記

markdown 查看相關 module ``` Array.included_modules ``` 查看相關 method ``` Enumerable.instance_methods ``` 查看 class 繼承樹 ``` a.class a.class.superclass a.class.superclass.superclass ```

2017/9/1

line bot 的新功能範例code

Line 於今天發表了 Messaging API 的新功能:[[Messaging API] New template message features released](https://developers.line.me/news?ny=2017&nm=09) 其中包含了一個新的 template:image_carousel,以及一個新的 postback:datetimepicker image_carousel 可以讓你一次傳最多五張圖以橫向捲動方式瀏覽 datetimepicker 可以在按下按鈕時彈出日期時間選擇器 iOS line 7.9 版本以上才能使用 datetimepicker android line 7.12 版本以上才能使用 datetimepicker 結合這兩個新功能的範例 message json 如下: ``` { "type": "template", "altText": "this is a image carousel template", "template": { "type": "image_carousel", "columns": [ { "imageUrl": "https://www.petfinder.com/wp-content/uploads/2012/11/91615172-find-a-lump-on-cats-skin-632x475.jpg", "action": { "type": "datetimepicker", "label": "選日期", "data": "q1", "mode": "date" } }, { "imageUrl": "https://www.cats.org.uk/uploads/images/featurebox_sidebar_kids/grief-and-loss.jpg", "action": { "type": "datetimepicker", "label": "選時間", "data": "q2", "mode": "time" } }, { "imageUrl": "https://static.pexels.com/photos/126407/pexels-photo-126407.jpeg", "action": { "type": "datetimepicker", "label": "選日期時間", "data": "q3", "mode": "datetime" } } ] } } ``` 他的點擊範圍是整張圖 點第一張圖: 點第二張圖: 點第三張圖: datetime picker 的三種傳回結果: