訪客留言簿

星期一, 3月 25, 2013

[python] 幾個簡單的範例

前言

怕忘記所以寫一下。

如何執行這些程式

找到 Python 網站,安裝 Python 3.x 版,然後 Windows 在開始選單的「所有程式」裡,到 Python 資料夾底下,有個「IDLE (Python GUI)」的就能讓你輸入程式碼了。

Hello world!

print('Hello world!')
結果

Hello world!

指派並列出清單

cast = ['John', 'Mary', ['May', 'April'], 'Sue']
print(cast) #跟上一行分開輸入,上一行的要用按Enter指派完再跑這一行。
結果

['John', 'Mary', ['May', 'April'], 'Sue']

印出連續數字

for i in range(10):
    print(i + 1) #上一行打完按Enter會自動縮排代表這行是上一行的程式範圍
結果

1
2
3
4
5
6
7
8
9
10

星期五, 3月 15, 2013

輕鬆從 Google Reader 轉換到 feedly

前言

很久沒用 RSS Reader 了。最近 Google 宣布要在 2013/07/01 關閉掉 Google Reader,也就是讀 RSS 的服務,所以蠻多人都在介紹如何跳槽,這邊來寫我看到的一個替代方案。

安裝 feedly

feedly 是線上 RSS Reader,不過得先裝上他的中介程式,才能順利執行網頁服務。

Transitioning from Google Reader to feedly | Building Feedly 這篇 feedly 官方部落格文章中,有提供不同瀏覽器及手機系統專用的 feedly 程式,找適合你的那個文字超連結,點下去就能安裝了。

讓 feedly 存取你的 Google Reader 清單

順利裝好後(Firefox 可能要重開,也可能第一次會安裝失敗要重做一次),就會自動開啟 feedly 的個人首頁,這邊你要做的,就是點右上角(或左邊)的「Login」按鈕

點下 Login 後,會要求你登入你的 Google 帳號,注意一下網址是不是 google.com,沒問題就打帳密登入。

登入進去後,會接著問你,要不要允許 feedly 取得某些權限,確認沒問題,就點「允許存取」即可。

接著 feedly 就會開始讀取你存在 Google Reader 的 RSS Feed 清單了。(如果出現錯誤訊息,請點網頁右上角,有個繞圈圈的箭頭,那個就是頁面重整(Reload)的按鈕,重讀一次應該就會正常顯示了)

然後呢?

沒有然後了。瀏覽工具列多出一顆綠球,那個點下去,就是開啟 feedly 個人首頁。

星期四, 3月 14, 2013

[python] Flask 學習筆記 (4) 暫時停筆

前言

我在 Flask 官網翻了很久,發現他們並沒有為完全沒開發經驗的人,所寫的文件,所以大概沒法子學下去了。

Hello world! 之後

因為 Flask 一開始就不是針對新手寫的,所以雖然有強大擴充性,及簡易的架構,但是你不是有經驗有知識的程式設計師,就只能跑 Hello world!,然後不知道該從哪開始學。

首先 Flask 並沒有提供單一例子,一步一步教你認識程式,而是直接跟你說這程式做了啥,而且還是一堆看都看不懂的單字跟觀念。(也別期待中國那翻的文件,那個仔細讀會發現就只是用中文寫外星話而已)

再來,並不是每個例子,都是可以直接複製貼上,讓你直接執行看看的,多數都是要你自己填補不足的部分,程式才能動。

總之真的就是鑽洞伸頭出來忽然就被根棒子打到了,我也不知道該怎麼繼續學下去了……

其他可以看的文件

Flask 官網有篇「Foreword」文件勉強算是不懂程設也能讀的,但是也就只是能讀,實際上也看得一頭霧。

然後「Tutorial」中的 Flaskr 範例,本身是一個部落格的程式碼,要學的話,也許用這個比較容易進入狀況一點點吧。

然後目前的中文文件,主要都還是中國那邊的人寫的,台港這邊使用 Flask 的似乎很少,也不知道該找誰求救呀。

其他 framework

不學 Flask 的話,其他還有用 Python 語法的網站框架程式可學。

  • Django - 算目前最受歡迎的 Python 框架

想學 Python 的話

[python] Flask 學習筆記 (3) 測試

前言

如果你已經安裝好 Python 及 Flask,是該時候測試一下 Flask 有沒有正常運作了。另外這篇只會教你 Hello world! 而已。

建立一個 Flask 的 py 檔

還記得第一篇學習筆記說的,Flask 程式碼,需要儲存成 py 檔案,讓 Python 執行嗎?接下來你就要寫你的第一個 Flask 文件。

要建立第一份 Flask 文件,請先開啟你的純文字編輯器(比如說我就是用 MadEdit 為主要編輯器),貼上以下的文字。

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World!'

if __name__ == '__main__':
app.run()

接著儲存這份文件(比如說存到你的 project 目錄去),檔名請命名成 hello.py 或是 xxx.py,但絕對不要命名成 flask.py,以免跟 Flask 本身衝突到。

然後準備執行這份 py 文件吧。

執行你的第一個 Flask

如果你有從我的第二篇學習筆記看過來的話,那你應該還在 venv 模式下,這時直接輸入以下指令,就會執行 Flask 程式碼了。

python hello.py

如果你是已經先關閉掉文字終端機,或是離開 venv 模式下的,請繼續往下看。(以下皆以 Windows 為例說明)

確認 project 目錄

Windows 的話,在此假設位在 C:\Users\[你的帳號]\myproject,hello.py 也是放在這底下。

重開文字終端機

Windows 下,請按「Windows 鍵 + r 鍵」,在「執行」視窗中,輸入 cmd,並按「確定」。

切進 project 目錄

Windows 下,打開文字終端機後,預設的工作目錄是在 C:\Users\[你的帳號],請輸入以下指令,進入 myproject 目錄下。

cd myproject

開啟 venv 模式

Windows 下,請輸入以下指令,進入 venv 模式,也就是進入你的虛擬工作環境。

venv\scripts\activate

執行 hello.py

進入 venv 模式後,請再輸入以下指令,就會執行 hello.py 了。

python hello.py

如何確認 hello.py 的執行結果

hello.py 只是會秀出 Hello world! 的一個程式碼,如果你有正確執行的話,應該會看到文字終端機跑出下面的訊息。

* Running on http://127.0.0.1:5000/

上面的訊息,就代表你的 hello.py 已經在執行了。

接著只要開瀏覽器(你閱讀這網頁所用的程式,簡單說直接點擊下面的超連結就好),連線到 http://127.0.0.1:5000/,就能看見執行的結果,而文字終端機那,也會顯示如下的訊息。(中間的時間視你讀取的時間而定)

127.0.0.1 - - [14/Mar/2013 16:44:57] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [14/Mar/2013 16:44:57] "GET /favicon.ico HTTP/1.1" 404 -

要關閉 hello.py 的話,請按 Ctrl-c 兩鍵即可。

從網路上檢視你的 Flask 運作是否正常

要像其他伺服器一樣,讓你的 Flask 程式「上線」,要處理的東西會挺複雜的,不過大致知道下面幾點就好。

  1. Flask 本身一執行後,就是個 Server 程式了。(不需安裝 Appach 或 WAMP、LAMP)
  2. hello.py 文件末段app.run() 要改成 app.run(host='0.0.0.0') 並儲存。(文字終端機下記得先按 Ctrl-c 關掉 hello.py 再重跑)
  3. 防火牆要設定讓 Python 可以連進連出
  4. 無線基地台的 DHCP 伺服器跟虛擬伺服器要設定好一個對內的虛擬 IP 給你的電腦(比如說 192.168.1.2 之類的,記得要先查一下你的 MAC 位址,然後對內的 port 是 5000,對外的 port 設 8000 以上即可)
  5. 利用 What Is My IP address? 查你的對外實體 IP 為何,瀏覽器要連到這個實體 IP 才行,比如說 1.1.1.1:8000 這類的

[python] Flask 學習筆記 (2) 安裝

前言

本文是參考 Flask 官方的安裝說明(Installation — Flask 0.9dev documentation)寫的,不過不一定適合所有情況。

原則上,都得先安裝 Python 主程式再說。(Linux 跟 Mac OS X 幾乎都有內建,所以只有 Windows 要手動安裝)

章節概要

  1. 安裝 Python(如果你打算在 Windows 上跑的話)
  2. 安裝 pip
  3. 安裝 virtualenv

安裝 Python

一般情況下,只有 Windows 才需要安裝 Python。

在 Google 打「python」就能找到 Python 的官網,裡面有「DOWNLOAD」頁,「Download Python」項下,可能會有兩種版號的 Python。

要下載哪種版號,要看現在的 Flask 支援哪一版的 Python(比如說 Flask 0.9 只能用 2.x 版的 Python),原則上版號最左邊數字不同的話,就是沒有相容性,所以要挑對版號。(不同的 Python 衍伸程式=套件可能需要不同的 Python 版號才能正常執行)

挑好版號後,就是選擇要下載 x86 還 AMD64 架構的安裝檔,如果實在不確定的話,就挑有「Windows」跟「64」文字的那個超連結來安裝,反正發現裝錯,就換同版號另一個 Windows 安裝檔,不會造成啥問題。

下載好,找到安裝檔(python 開頭的 msi 檔),滑鼠左鍵雙擊,然後就會進入安裝畫面,一直點「Next」按鈕,然後 Windows 畫面有轉黑、跳什麼確認視窗的話,記得允許執行就好。最後按「Finish」按鈕關掉安裝程式。

安裝 pip

要讓 Flask 在機器上跑,照官方建議,是需要安裝「virtualenv」這東西的。不過你得先安裝「pip」,才能叫 pip 來安裝 virtualenv。

pip 是 Python 上的一個套件(package)專門用來協助你安裝、管理 Python 套件,你可以想成是管理安裝程式的程式。(類似 Windows 的「新增移除程式/程式集」或 Ubuntu 的 Synaptic 之類的)

裝 pip 的好處是,你不必再去開瀏覽器上網,找那些套件作者的網站,下載套件來裝,只要進文字終端機打個名字,叫 pip 幫你下載安裝就好。(指令類似「pip install [套件名稱]」這樣)

安裝 pip 可以讓你以後安裝 Python 套件變很方便,不過 pip 卻不是內建程式,要安裝還挺麻煩的。下面分 Windows 及 Ubuntu 兩種作業系統來說明如何安裝。

在 Windows 下安裝 pip

要在 Windows 下安裝 pip,你得先裝好 Python 主程式,再從 Flask 官網下載執行 distribute_setup.py(章節中有一個文字超連結就是下載的連結),接著調整 Windows 環境變數後,才能在文字終端機打 Python 指令跑程式。

下載 distribute_setup.py 後,進你的下載資料夾,找到這檔案,雙擊左鍵執行,就會再自動下載解壓縮 distribute-0.6.34.tar.gz 這東西。(版本號可能會不太一樣)

接著要調整環境變數。打開你的「開始」工作列選單,找到「電腦」這項目,然後對它按滑鼠右鍵,然後在開啟的選單中,選擇「內容」,開啟的視窗中,點擊左邊窗格的「進階系統設定」,接著開啟的視窗中,底下有個「環境變數」的按鈕,點下去,在開啟的視窗中,下方的系統變數窗格,找到 Path 這變數,滑鼠左鍵雙擊,在裡面的變數值行末,加入你的 Python 安裝資料夾的 Script 資料夾位置進去。要加寫的變數值如下。(不要把原來的變數值給刪除或取代!)

;C:\Python27\Scripts

加入上面這段文字後,按「確定」按鈕,環境變數視窗也按「確定」按鈕關閉。這樣你的 Python script 指令就能在文字終端機中使用了。

接著要測試是否成功,請按「Windows 鍵 + r 鍵」,在「執行」視窗中,輸入 cmd,並按「確定」,就會開啟文字終端機(Command Prompt)。

接著請在文字終端機,輸入以下指令,然後按 Enter 鍵,pip 就會裝好了。(你會發現 C:\Python27\Scripts 資料夾下多了 pip 相關的檔案)

easy_install pip

另外要注意一下的是,Flask 官網都是假設你使用 linux 系統,所以在 Windows 上執行指令時,官網上有寫到 sudo 開頭的指令(尤其是指錢字號 $ 開頭的那些),都要把「sudo」連同後接的一個半形空格一起刪掉,才是 Windows 上能執行的指令。

在 Ubuntu Linux 下安裝 pip

待寫

安裝 virtualenv

virtualenv 也是一個 Python 套件,可以讓你建立、模擬不同情況下的工作環境。比如說你可能會有一個工作環境是需要 A 程式的第一版,而另一個工作環境需要第二版,那你就可以建立兩種不同的虛擬工作環境(類似虛擬機器),這可以避免碰上太多不必要的變數,或是製造你需要的變數,來實驗「你寫的程式」是否運作正常。

安裝 pip 一章,把 pip 裝好後,你就可以在文字終端機中,呼叫 pip 來幫你安裝 virtualenv(當然你也可以用 easy_install 指令裝)。指令如下。(Windows 使用者請把開頭的 sudo 跟接著的一個空格去掉再執行)

sudo pip install virtualenv

接著來實驗一下 virtualenv 是否能正確運作,請依序輸入下面的指令,一行一個指令,每輸入一行就按 Enter 鍵一下。(Windows 的文字終端機會預設從 C:\Users\[你的帳號] 這位置開始,所以你的資料夾就會建在這底下)

mkdir myproject
cd myproject
virtualenv venv

上面的 myproject 是可以任意取名的資料夾,請視工作目的來命名。接著要來啟用你的虛擬工作環境,在 Mac OS X 跟 Linux 上,請輸入以下指令。(記得工作目錄要先切到你的 project 資料夾)

. venv/bin/activate

在 Windows 上啟用你的虛擬工作環境,請輸入以下指令。(記得工作目錄要先切到你的 project 資料夾)

venv\scripts\activate

啟用後,你的文字終端機會變成以「(venv)」這字串開頭,這就是正在使用虛擬工作環境的意思。

接著請在虛擬工作環境下工作的狀態,輸入以下指令,安裝好你的 Flask。(可能會跳出很多錯誤訊息但不必理會)

pip install Flask

在虛擬工作環境下,安裝好 Flask 後,你就可以開始看下一章,跑跑看 Flask 程式了。(請注意這邊都只是在某個 project 資料夾下安裝 Flask 而已,要整個系統都安裝 Flask,請參考官網說明)

另外,要離開虛擬工作環境的話,Mac OS X 或 Linux 請輸入以下指令。(記得工作目錄要先切到你的 project 資料夾)

. venv/bin/deactivate

在 Windows 上要離開虛擬工作環境的話,請輸入以下指令。(記得工作目錄要先切到你的 project 資料夾)

venv\scripts\deactivate

星期日, 3月 03, 2013

[數學邏輯題] 我不知道但你也不知道的生日

前言

邏輯真的好難,什麼消去法的我根本沒學過呀。

題目

老師請兩位同學甲及乙猜他的生日。

老師告訴甲「幾月生」,告訴乙「幾號生」。

已知老師的生日為以下之一。

3/4 , 3/5 , 3,8 , 6/4 , 6/7 , 9/1 , 9/8 , 12/1 , 12/2 , 12/5

甲:「我不知道,但我知道乙一定不知道。」

乙:「我本來的確不知道,但我現在知道了。」

甲:「那我也知道了!」

以下請附理由推論出老師的生日。

推論(目前筆者只有寫一半)

抓「日」不重複的日期

先把可能的生日畫成表格。因為乙的資訊並無法推論出「幾月生」,所以先抓出知道「幾號生」就知道是幾月生的日期。(即橫列只有出現一次的數字)

9/1 12/1
12/2
3/4 6/4
3/5 12/5
6/7
3/8 9/8
刪除「日」不重複的日期所在的月份

因為甲確信「乙一定不知道」,所以知道「幾號生」就能知道「幾月生」的月份,會讓題目敘述的「乙一定不知道」變成「乙可能知道」,所以要消去 6 及 12 兩個月份。

9/1 12/1
12/2
3/4 6/4
3/5 12/5
6/7
3/8 9/8

刪除讓乙不確定「幾月生」的日期

因為乙後來知道是「幾月生」了,所以一定不是有重複的「幾號生」。所以同一日的 3/8 跟 9/8 要消去。(這邊請先忽略乙是不是真的知道幾月幾號生)

9/1 12/1
12/2
3/4 6/4
3/5 12/5
6/7
3/8 9/8

刪除讓甲不確定「幾號生」的日期

因為甲後來也知道是「幾號生」了,所以一定不是有重複的「幾月生」。所以同一月的 3/4 跟 3/5 要消去。

9/1 12/1
12/2
3/4 6/4
3/5 12/5
6/7
3/8 9/8
解答

最後剩下的 9/1 就是解答。其實這問題不是讓你站在甲或乙的立場去猜對方到底不知道哪些,而是要完全看敘述,在知道「甲跟乙知道什麼事」的情況下,消去重複的日期。(大概吧)

延伸題:我不知道但你也不知道的一組數字

老師在 1~99 間,挑了兩個相異的整數數字 a 及 b。

老師告訴甲兩整數的和(a+b)。

老師告訴乙兩整數的積(a*b)。

(※然後接下來的對話完全一樣!)

甲:「我不知道,但我知道乙一定不知道。」

乙:「我本來的確不知道,但我現在知道了。」

甲:「那我也知道了!」

以下請附理由推論出老師挑的數字。

[食記] 日式愛好燒 - 道地日式大阪燒及炒麵小吃店

前言

因為店的位置有點奇特,Google 地圖也畫得不準確,第一次去的肯定會迷路超過半小時,建議找有去過的人帶路。

【圖片:新換的門口招牌】

簡評

味道夠,香,不甜膩,價格較同業便宜。

營業時間

週三公休。中午 11:30~14:00。下午 17:00~21:30。

店面地址

  • 地址:台北市中正區晉江街18巷18弄4號
  • 位置特徵:位在一個類似高臺的地方,正確來說是一處斜坡上的行人步道旁,門口有插旗子。
  • 行走路線:從捷運古亭站,1號或2號出口上來,走一旁的小巷子(同安街),經過一條大馬路(南昌路二段),接下來看到左右兩旁橫向的巷子(晉江街),往右走進早餐店(蕃茄村漢堡)那的小巷子,會看見右手邊的快遞辦公室(九六快遞),跟左手邊的廟。直直前進,會看見分岔路,走左手邊灰白色水泥路面的小巷,走出去後,往右邊,沿行人步道走,就會看到旗子跟「お好み焼」的門簾了。(營業時間來比較容易注意到)
  • 停車位置:聽人說和平西路有很多停車位,不過我是坐捷運走路過去的,所以不確定機車族要如何走。
  • 其他走法:其他網友提供的走法是從9號出口出來,沿著和平西路,走過晉江街後,第一個巷子左轉,然後看到的第一個巷子右轉。(不確定哪種比較好走)
  • 有人提供的9號出口的識物路線照片

菜單

主要的菜單有三大類:大阪燒(お好み焼)、炒麵(焼そば)、烤魚及小菜跟湯(焼物)。

愛好燒
  1. お好み焼 - 愛好燒(100) - 只有蔬菜的
  2. イカ入りお好み焼 - 加料花枝(120)
  3. ペーコン入りお好み焼 - 加料培根(120)
  4. キムチお好み焼 - 加料泡菜(120)
  5. えびお好み焼 - 加料蝦仁(120)
  6. 鶏肉お好み焼 - 加料雞肉(120)
  7. チーズお好み焼 - 加料起司(120)
  8. コーンお好み焼 - 加料玉米(120)
  9. そば入りお好み焼 - 加料麵(120)
  10. たこお好み焼 - 加料章魚(130)
  11. 牛肉お好み焼 - 加料牛肉(130)
  12. 明太子お好み焼 - 加料明太子(140)
  13. 帆立貝お好み焼 - 加料干貝(140)
  14. 肉類ミックス - 綜合肉類(150)
  15. 海鮮ミックス - 加料海鮮(180)
燒麵
  1. 焼そば - 豬肉燒麵(70)
  2. ペーコン焼そば - 加料培根(90)
  3. イカ入り焼そば - 加料花枝(100)
  4. えび入り焼そば - 加料蝦仁(120)
  5. 帆立貝入り焼そば - 加料干貝(120)
  6. ミックス焼そば - 綜合燒麵(150)
燒物
  1. イカ姿焼 - 全身花枝燒(180)
  2. サバ塩焼 - 鯖魚燒(180)
  3. アジ塩焼 - 竹夾魚鹽燒(120)
  4. さんま塩焼 - 秋刀魚鹽燒(120)
  5. 綜合サラダ - 綜合沙拉(60)
  6. (蛋)玉子 - 蛋(10)
  7. みそ汁 - 味噌湯(10)

評語

店是一對老夫妻經營的,偶爾會有附近鄰居在店內充當服務員,不過基本上並不是很熱切在招呼客人,服務態度平淡,不好不壞,盡量自己問老闆娘。(老闆是日本人所以中文不太行)

食物全是現作,所以要等個幾分鐘才會上菜。炒麵跟配菜、湯類要等5分鐘,愛好燒要等10~15分鐘。

食物的量稱不上多,大概就是吃了不會餓的量。如果是要吃飽的,那得帶滿多錢來。

愛好燒跟燒麵本身不是美味到會讓人一吃再吃,不過醬汁的味道很夠,青菜脆,料吃來很紮實。醬汁可以調整要重口味還淡一點,沒特別說的話,可能會有點鹹,怕鹹的可以請老闆弄淡一點。

味噌湯的調味並不會很重甜,而是鹹鹹香香的,裡面會放海帶跟豆皮。

因為我沒吃過別家的,所以無法比較好吃與否,不過想嘗試大阪燒的話,這家應該算價位便宜,也不壞的選擇,炒麵也挺好吃的。

另外店內的空間不算大,頂多擠10人。店內禁煙,店門口則是有2人座的抽煙席。然後集點卡要滿 100 元才有一點,不過老闆他們有時會忘記給,要自己主動要。可以外帶。

參考資料

 

本站著作(不包含圖片、影音以及回應留言)係採用 Creative Commons 姓名標示-非商業性-相同方式分享 2.5 台灣 (中華民國) 授權條款授權