2013年2月27日 星期三

活動:Taipei.py 2013 2月聚會


這次的場地是由 The Manx Entertainment Group - Taiwan 提供
場地實在是非常的夢幻,以後若能都在這邊舉辦,那就太好了 XDD
The Manx 對我來講是一間神秘的公司,網頁上所寫的關鍵字:
Online-Game, Python, Django, HTML5 都好吸引人啊!



這次第一場 talk 的講者為 Sean 大大
講的主題是:「如何運用 MyHDL來幫助硬體設計者達到快速的驗證和重整」
Ha Ha Ha …
(詭異的笑容,因為聽不太懂 XDDD)
因為是新場地第一場 Talk,所以設備有點沒 Ready,打亂了幾次演講的節奏
由於聽不太懂,所以只好繼續發揮寫這篇文章的目的,整理演講的資料出來:


第二場是 Tagtoo 的 陳建勳學長(appWorks) 分享使用 GAE 的心得
難得遇到從一開始就使用 GAE 並且到現在的前輩 XD
因為沒有搜尋到投影片,所以附上一個疑似是學長所寫的部落格:
任務日誌 (內容好多 GAE 與 Python,真棒!)


第三場的 lightening talk 是由 c3h3 大大主講
主題是:不用寫程式也可以玩 Machine Learning --- orange 簡介
講者就直接一邊演講一邊 live demo 了,強大!
之前我有想要稍稍 survey 一下 data mining 等等之類的東西
有也看到 orange 卻不知如何入門
這次有機會直接看到專家「玩」給大家看,實在受益良多! Cool!


會後與大家聊了一陣子,遞送上我目前負責專案的名片,
(只有)名片本身大受好評 XDDD
值得一提的是,我總算遞上了我的名片給 mosky,感謝她為我的部落格帶來流量
本部落格透過 google 關鍵字進入,排名第一的組合是: python mosky 與 mosky python
是的,並不是 Taipei.py ,我也不知道為什麼 … 囧rz
事後,得知隔天閃光參加 pinkoi 的設計師聚會也遇到 mosky,真是太巧了!


總之,這次新年後、新場地、新報名系統 的 Taipei.py 非常的成功!



筆記:Python 使用 Boto 將照片上傳至 S3 (加上存取限制)

Basic

前一陣子在實作一個供使用者上傳照片的功能
想當然爾,現在應該比較不流行自己 Host 這些照片
於是我使用了 Amazon S3 的服務來解決這個問題
  1. 想單純玩看看 S3, Amazon 本身的 AWS Management Console 就很好用了,支援上傳、下載、設定權限 …
  2. 想在 Command Line 的環境下玩 S3,s3cmd 是一個方便的工具,推薦一玩 …
  3. 至於我的需求,是使用 Python 自動化地完成上傳照片的工作,因此 boto 成為了我的首選,使用方式就請直接參考文件吧: An Introduction to boto’s S3 interface

若是要用 2. 3. 的方式,記得產生 AWS access key and AWS secret key 即可
以上講的內容都沒什麼特別的(若無其事的吐槽自己?)

Public vs. Private

Boto 提供了一些包好的 function, 能使用 Access Control List (ACL) 的存取機制來管理 S3 上的檔案
有需要使用的朋友可以自行參閱 Boto 的 文件

補充說明一下,AWS Management Console 介面所提供便捷的檔案「權限設定
其實背後也是用 ACL 的機制來管理檔案

對我而言,我想要實作的功能是:「將照片傳到 S3 後,設為公開,不接受外連」
因此,我先透過 AWS Management Console 將整個 bucket 設為公開:
-> 點選 Properties -> 選擇要公開的 bucket -> 按下 Add more permissions 
-> 新增 Everyone 使用者 -> 勾選 List (Read) 的權限
接著,接著繼續操作:
#使用 Amazon S3 Bucket Policy 的存取機制來設定外連的限制
-> 點選 Edit bucket policy -> 填入以下範例(需修改)
{
  "Version":"2008-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests referred by www.mysite.com and mysite.com",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::example-bucket/*",
      "Condition":{
        "StringLike":{
          "aws:Referer":[
            "http://www.mysite.com/*",
            "http://mysite.com/*"
          ]
        }
      }
    }
  ]
}
範例來自 官方菜單

如此一來,簡單的上傳與基本版防外連功能就完成了!
補充:記得上傳時幫照片設一下 meta data,諸如 cache-control 之類的屬性,以節省開銷 XD