訪客留言簿

星期四, 3月 14, 2013

[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 台灣 (中華民國) 授權條款授權