顯示具有 Django 標籤的文章。 顯示所有文章
顯示具有 Django 標籤的文章。 顯示所有文章

2014年2月18日 星期二

活動:Taipei.py 2014 1 月聚會

難得北上,趕緊搶頭香待命!




將近半年沒參加 Taipei.py
趁著北上觀看 2014 四大洲溜冰錦標賽的機會
再到 CLBC 參與聚會
這次讓我感到比較驚豔的是
看到一位大哥帶了三個小朋友(國中生)前來參加聚會
太強大了,想不到在臺北小朋友都這麼好學 ... orz



此次演講的第一個主題是:「SaltStack: 我如何學會停止憂慮並愛上 deploy」
講者為 Street Voice 的型男 Vinta
此講題國內較少見,對於需要管理伺服器的朋友,我覺得演講內容極有參考價值
儘管我不知道為什麼我遇不到 scalibility 的問題(不過就 n 台 16 核 8G 的伺服器)
不過幫 SaltStack 建立索引,並且存在我的航海資料庫內
總有一天會用到的(吧?)








第二場主題為「在世界的中心呼喊 Flask」,講者是被 Leader 勸敗/推坑 的 Tomas Lin
其實 Tomas 使用 Flask 的方式跟我的方式不太一樣 XD
我個人比較偏好採用 Flask 原生的方式直接呼叫各個 function
(當然,還是有透過 blueprints 組織這些 function) 而 Tomas 的用法與使用的技術堆疊,使得展示出的 Flask App 頗為 Djangolized
對於熟悉寫 Django 的朋友(例如:Tim)而言,可能會難以感受到 Flask 的特色
當然,還是比 Django 瘦很多啦 XD,反之,功能也缺很多





其實我認為 Flask 是一個適合用在「微」、「小」、「中」型專案的框架
而且依照需求能夠支援非常多的撰寫跟架構方式
看看這個讓人不會感到挫折的 doc 看看這些便捷的 extensions
看看熱血的教學 website
如果是 Web 新手入門要我推薦框架,大概就是 Flask 吧!
(如果只想玩一下,那就是 Bottle 啦~)






最後的閃電秀是由 Tim 投稿的「Remove the Callback Hell」





這次北上能夠在會前會後與講者、朋友們交流
並且聽到兩場讓人受益的演講,非常開心 : )


補充一下,第一位講者 Vinta 最近的專案「為什麼你們就是不能加個空格呢?」
實在非常有趣,有潔癖的朋友值得一試。
(好在我大多數情況會加上空格 XD)



2013年3月29日 星期五

活動:Taipei.py 2013 3 月聚會

聚會結束後,走在路上,看到一台機車的安全帽長這樣 !!(Keith 的)



這次由 Tim 發起了「入場先收 50 塊,稍稍補貼一下茶水費」的活動
對於 The Manx 同時提供「人力、場地、器材、餐點」,只能說感謝了 Orz …

#本次聚會照片、投影片皆可至 Taipei.py 的 Meetup 社群 下載



Talk 1: Scrapy - 網路爬蟲框架

講者為在 Tagtoo 工作的 Theon 學長
演講專業而結合範例,讓人能清晰的了解到 Scrapy 此框架的威力
如果熟 XPath 的話,大概真的參數填一填,實作上不用五分鐘就可以寫出爬蟲了!
由於我前陣子有寫過爬 Ptt 的機器人,去擷取備份文章
對比於自己寫的 糟糕 程式,我馬上就能感受到了此一框架的優良架構
雖然我為 XPath 苦手,不過我想現在的瀏覽器都有相關的工具可供協助找到 XPath
之後若有機會,值得一試
另外,對於小型的抓網頁,讀取特定數值的程式
如丟關鍵字給 google,然後抓出搜尋結果的連結 … 這樣的應用
我蠻推薦使用 pyquery 來處理問題
直接使用:d = pq(url='http://google.com/')
接下來就可以使用類似 jquery 的方式存取 html 元素了:d("#hello") …

Talk 2: 先不談 Django,你聽過 Bottle 嗎?

講者 竟然 是我 XD ... 因為沒有辦法自己幫自己的演講給心得文
那我來檢討一下演講準備過程,與附上補充資料
因為近日專案極忙,這次的演講,我一直拖到演講前兩小時才把投影片做完
對我而言有許多第一次:
  • 第一次用 iPad 的 Keynote 做投影片
  • 第一次用 iPad + 轉接線 投影到螢幕
  • 碩論口試後第一次公開演講(當兵的時候倒是主持過很多次莒光園地 …
  • 第一次在社群中分享自己的經驗
我原本自以為可以用閃電秀的密度,快速的用 15 分鐘把該講的都講清楚
但是做出來投影片的品質太差,又沒有演練過 ... 所以就變成了冗長的碎碎念亂講 … 囧rz
對於這一點,我正在深刻的反省中 …

另外,使用 iPad 製作起來的過程雖然算流暢
但是在投影片內要插入超連結,頗有困難,且輸出成 ppt 或 pdf 以後,格式都容易跑掉
之後得多加注意此問題
這次來不及測試 remote 遙控投影片的功能,小可惜
不然就可以帥氣的走來走去了 …



會後補充:

再度推薦一下 gevent 社群的文件:Gevent Tutorial
值得一讀,讀了以後就會發現,在一般的 Python web framework 中
比較難以實作的 Comet 之類的功能,都能透過 gevent 輕易地達成

我記得 Appier 的朋友有問我 Bottle + gevent 能不能夠做效能調教?
(話說,您已經是此搭配的成功案例了:5000 qps …跪求 Bottle 進階演講)
雖然我不知道怎麼做,但我之前查資料時
有看到過 Douban 釋出與 Python 相關的投影片,或許仍可供參考(2011年的):



補充一下,對於 bottle 要提供 http auth basic 的話,可以這樣做:
def check_user(usr, pwd):
    acc_pw = { "user1" : "pw1", "user2" : "pw2" }
    return True if usr in acc_pw and pwd == acc_pw[usr] else False

@bottle.get('/admin/')
@bottle.auth_basic(check_user)
def test():
    pass
當然, auth_basic 的參數要直接塞 lambda 也是 OK 的
但是不建議用這個當會員系統啊 XDDDD

最後,至於為什麼我講的是 Bottle、用的是 Pyramid、大多數情況推薦的卻是 Flask 
這個傷心的問題就不要再問我了 囧rz  


PS. 這次演講後與許多朋友交換名片,聊: Web 框架、Testing、用數學變魔術的經驗 … 真的有 Level Up 的感覺!
您若也想來個常規或是閃電秀的演講,可以先加入 Taipei.py 的社群,然後直接找 Tim, Keith (或我)報名!

2012年6月11日 星期一

活動: PyConf 2012

幾個月前看到正在學習的語言要辦 conference
於是二話不說便在早鳥訂票開放日訂票
事實上, 議程 在訂票前並沒有仔細看過
只是覺得身旁有一群會寫 python 的人,心情就很好了!
(事後得知公司決定全額補助諸如此類的進修費用,心情就更好了!)

怕自己學 python (<1year)還太嫩
聽不懂大神們在講什麼
除了收了一本實用導向的 精通Python 3程式設計
趕快看一下 python 3 有什麼東西以外
我稍微追 PycTW2011 的資訊
可惜的是我好像沒有找到錄影的紀錄?
總之,胡亂的看過上面的投影片 ...
(發現 魏老師 的 Python 2 vs 3,  50 行中文手寫辨識 好有趣啊!)



這是我第一次前往中研院參加研討會
雖然位置有點偏遠,進去後還必須走很遠
不過硬體設施真的頗高級
兩天都是在很舒適的狀況下聽演講、等便當跟點心
第一天的議程以科學運算上之應用為大宗
其中 Jimmy Lai 大神是我大學時的同學(他都已經在台上了,我在幹嘛啊)
他的演講沒安排什麼梗,就是很平實而邏輯清楚的介紹自己使用的工具及方法
(做人就是要這樣正直才有辦法連拿兩個大賽的冠軍啊!)
由於講者大都把主力放在 python 在科學上的應用
因此第一天講者的演講 style ,大都給人較重的學術感
老實講,我目前在做 web 開發,所以大多數的演講對我直接的幫助性不大
除了 Gage Tseng 大神的 Even Faster Django 以外 ...
他的標題有梗,演講的內容也有梗,整個演講很值得參考
可一提的是,他們的系統架構與我們頗類似
Django 也的確是我早期開發 web server 時使用的 framework
不過隨著分工成 api server,我就決定使用更 light-weight 的 bottle
(大概是以前寫 C 寫太多,我竟然曾經認真考慮不要用 bottle 直接自幹一個 WSGI app!)
我對 Gage Tseng 大神印象最深刻的是,他介紹自己的公司的時候
提到他們就是要做社交網路,那種氣魄讓我深感認同,真想拍手叫好!
(我們 PIPOSEA 也是想做社交網路(握手))
一整天的節目結束後,本來應該去參加最重要的 BOF
不過由於晚上我另有活動,所以只能含淚提早離去 ... ... Orz


第二天開場就是 Django 的開發者
就是一個大師在向我們娓娓道來 web 歷史的感覺
緊接著的 Rasiel Chang 以及 toki 大神們
Rasiel Chang 的表達非常條理分明,很明顯有所用心準備及練習
toki 則是題材有趣,頗吸引人!
講的都很精彩,Rasiel Chang 的 團隊 也在 appworks #4 內
不過由於我們團隊對外大都是由老闆出席,實在很不好意思去認親
(我果然有社交障礙!)
其後的演講,無論是用 Mac 的 ericsk 大神, 12 道家書的 lwshu 大神
或是讓人驚訝竟然已經用 python 十年的 Cyber link 講者 Honder Tsou 大神
這些大神的演講都使我獲益良多
最後一場 hychen 大神的演講則大概是這兩天最專注於語言特性的一場 talk
也是對我幫助最大的一場演講
在台下聽講時其實一直覺得很有趣
因為 hychen 講的頗快速且一下子就講到重點
這恐怕會使得某些比較不熟 python 語言特性的聽眾完全在狀況外
但對於正好需要 meta class 這樣特性的我而言
只能夠用「聽君一席話,勝讀十年書」來感謝他 Orz
(附上投影片)


整體來講,這兩天的演講學術味較重
但是對於探討 python 這一個語言特性的演講較少
很可能大家都是拿 python 來應用
所以演講的主題就集中在 科學運算、繪圖、web ... 等等地方
(我原本以為每個 talk 都是像 hychen 大神的 meta class 一樣深入!)
小可惜的地方是,有關 python 在 web 上面的應用我聽得還不夠過癮 Orz
總之,感謝主辦單位的辛勞付出及抽獎貪食蛇!
希望 python 這個好玩意,可以更為人所知,為人所用。
(希望某年我能夠熟 python 熟到能上台向大家介紹牠 ... Orz)




2011年12月26日 星期一

筆記:[Using pdb++ in Django] 解決 AttributeError: UnixConsole instance has no attribute 'old_sigwinch'

在django的環境下使用 pdb++ 時可能會遭遇到一些問題以致出現某些訊息:
AttributeError: UnixConsole instance has no attribute 'old_sigwinch'
看一下debug的訊息可以發現有問題的地方常常是因為設定了中斷點如:
import pdb; pdb.set_trace()
簡單的解決方法可以改為使用原本的pdp module:(不過就喪失了使用pdb++的意義了...)
import pdb; pdb.pdb.set_trace()
或是去找看看最後觸發exception的部分是不是因為 pyrepl 下的unix_console.py
如果是的話可以參考這裡的 Issue 解決方法,簡言之就是:



  1. 將最後trace到的 unix_console.py 作一些修改
  2. 重新再跑一次吧!




--
話說其實Django的Debug資訊真的相當豐富
不過為了更了解Django的運作,還是會需要使用原生的pdb或是 pdb++ 這種好物



Update: (2013.3.7)
pyrepl 版本 0.8.4 以後已解決此問題!