2017/9/21

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

[早午餐] 再一塊吧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 技巧

在 controller 裡的 action 可以取得 request 物件

class TestController < ApplicationController
  def index
    p request.class
    render plain: "ok"
  end
end

會發現 request 物件是 ActionDispatch::Request 類別

request.headers 是 ActionDispatch::Http::Headers 類別

我們可以用 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 環境變數的設定

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 的爬蟲

watir 是一個自動測試工具,我打算拿來做爬蟲,因為我的爬蟲需要執行頁面 js 獲得動態 dom 結果,而 watir 剛好可以做到這件事情。

watir 需要搭配瀏覽器使用,我先試著使用 phantomjs 這個瀏覽器。 phantomjs 是一款無頭瀏覽器 Headless_browser, 因為他不需要真正顯示畫面,所以他的效能比較好。

怎麼在 heroku 上跑 watir (phantomjs)

但是因為 chrome 也做了無頭版的瀏覽器,所以 phantomjs 的作者後來就不更新了。

Getting Started with Headless Chrome

Headless Capybara Feature Specs with Chrome

資料來源1

Heroku

Heroku Dyno 可以提供虛擬的執行環境

他的運作流程大概是:

當有新的 code push 上去時觸發

1 建立一個 linux 的空環境

2 根據 buildpack 的資訊安裝系統環境

3 在 /app 下放入 push 上去的 code

4 根據 /app/gemfile 安裝對應的套件

5 根據 procfile 的資訊 啟動網站

你可以使用以下指令去觀察環境

heroku run bash

2017/9/12

ruby 反射筆記

查看相關 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

其中包含了一個新的 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 的三種傳回結果: