2013年7月22日 星期一

筆記:Python 輸出 .csv .xls .tsv …

近期恰好遇到需要在網站上提供輸出 .csv 檔案的功能
而無奈地,由於內含 utf8 中文字元的關係
使得輸出後的 .csv 檔案,透過 excel 開啟後會出現亂碼(明明 google 表單匯入都正常)

為了解決此問題,於是我曾嘗試使用 python 內建的 csv module, 高階版的 unicodecsv, 手動 補上 BOM 的資訊 … 但是透過 excel 2011 for mac 開啟後,中文仍然都是亂碼 Orz

仔細想想,既然假定使用者會用 excel 開啟檔案
那也不用強求一定要輸出 csv, 直接輸出 醜醜的 excel 檔案即可
於是最後找到了 tablib ,神速的短短幾行程式碼便能完成工作:

# 安裝
sudo pip install tablib

# 使用
headers = (u'中文', u'沒在怕的')
data = [
    ('John', 'Adams'),
    ('George', 'Washington')
]
data = tablib.Dataset(*data, headers=headers)

# 轉換成各種格式的字串
data.csv
data.xls
data.xlsx
data.yaml
data.tsv
data.json
… 

2013年7月9日 星期二

活動:Tainan.py x MOSUT 2013 6月 - 首次聚會

第一次正式聚會,人潮馬上擠爆了聚會場地!
講者恰好位於畫面的兩端遙遙對望,此照片構圖真好啊


身為在 PyConTW2013 閃電秀跟大家說要在南部舉辦 Tainan.py 的 用 Vim 男子漢
會後 因為騎虎難下 馬上就寄信與母系成大資工、jserv 大大大橋場地跟邀約演講,且都得到正面回應
更幸運地,才剛搬回台南就參加到了 MOSUT 在isrlab 場地的聚會,認識許多朋友,且得知該場地有協助社群的打算
在鼓勵之下,我立刻斗膽決定在 6/29 (六)舉辦 Tainan.py x MOSUT 的聚會
且於 6/14 就先安排一場「微聚會」,看看能不能約出在台南對 Python 有興趣的人



微聚會時我所分享的投影片(又是 Bottle 的簡介),而且我講的頗爛 XD


結果,一切都很順利!

微聚會時已約莫有十位朋友參加活動
正式聚會時,原本預估約 20 位朋友會過來,最後則出現了 35 位朋友!
意外的是,或許由於場地較小,因此講者與聽眾之間非常的「沒有距離」
有問題、有看法,皆能即時進行討論,且反應熱烈
而原本預估,唯一的一場閃電秀過後應不會有朋友臨時想上台演講,結果卻完全相反 …
後面的臨時投稿才開始了聚會的第二回合演講:Abaqus, Forth, MOSUT, isrlab …
各主題、各組織的介紹接踵而來
最後請大家來個自我介紹以後,活動就已經超過六點了 XD
(活動的演講量大概是平常 Taipei.py 的兩三倍以上吧 XDDDD)



至於 Taipei.py Logo 的小故事,就不附在此 下次去台北再上台說嘴 XD)


由 Tim 所帶來的「手把手教你在一分鐘內做 HTML5 Slide」線上觀看投影片



這次 Tagtoo 的 David 所帶來的 google cloud platform 介紹
(截圖是 google 官方的網頁,點擊「View the presentation」可以下載 David 引用的投影片)


這是 MOSUT 朋友 descent 所帶來的 x86 演講! (好硬啊 XD)
觀看影片時請參考他的 部落格文章


這是 Clifford Yen 所帶來的「Python 在有限元素軟體 Abaqus 的應用」
(臨時出現的隱藏講者!反應非常熱烈!)


強者我學弟小畢 CrBoy 現場寫 投的閃電秀,介紹 MOSUT 


以上還只是聚會的部分內容,有一些演講因為沒有錄到、尚未蒐集到影片或講者未授權等等因素,而尚未出現在上述的介紹中。總之, 既有的錄影 已經放到 youtube 之上,而 Tainan.py 的 meetup 社團 內亦有聚會的補充資訊可供參考!之後若有取得其他的錄影檔案、講者投影片,亦會陸陸續續更新上去! 


本次的聚會能夠成功舉辦,得感謝:
  • MOSUT 社群朋友的幫忙跟 isrlab 對場地、餐點的協助(鹹酥雞 + 杏仁豆腐,好棒啊)
  • 北部 python 社群朋友們的火力支援(從 Logo 、講者到聽眾真的是出人又出力!)
  • 所有願意過來參與活動的朋友們(尤其是看到許多正在唸書的學弟妹們過來參與活動,非常感動)



有了這次的經驗,我相信下次的聚會會辦得更好!



備註:
搬到台南兩個月後,強烈感受到台南的活力!
無論是「創業抬槓」的活動、「MOSUT 社群聚會」、台南「HPX 讀書會」、
近期剛開始以學生族群為主「Wheel Lab」的 Web, App, 創業相關聚會、
再加上 Rails 社群與 Python 社群的聚會、
還有,八月份 Forth 社群的前輩們亦有與 MOSUT 合辦的聚會、
還有,難以計數的讀書分享會 …
對了,還有堅持在濁水溪以南舉辦的 MOPCON …
(講的好累 … )
這些活動的熱絡,皆再再的證明技術性社群活動在台南已經逐漸發酵 :)
我想,您若是喜歡南部的生活 美食 ,已經可以準備搬過來了 XD

活動:AppWorks Demo Day #6

活動正式開始前,會場放著五月天熱血的音樂,各組要上台的人正努力地準備等一下的演出


仔細算一算,這已經是我第四次參加 Demo Day 了!
這次參加的心境,又有別於前三次
這一次,我所在的公司已經從台北搬遷回台南,而且經歷了半年的多元嘗試
我也鎖定音響、耳機領域,做了些嘗試性質的服務(目前在協辦八月初某一場耳機迷的 聚會
對於創業無成這一件事情,自認有更深的領會


因此,心態上可以說是老了很多
但,想不到 … 這次上台的團隊大都比我(們)還要老很多 XDDD


對於 Demo Day 的看法,去年 我所寫的文章 已經大致描寫過,亦沒有太大的改變
對於新創的團隊,我永遠都是抱持著多些善意批評、多些鼓勵的態度
畢竟,用說的容易做事難,倘若這個世界沒有人願意嘗試做些新東西
那麼整個環境是無法越變越好的


我之所以說這次的團隊老,其實不只年紀,還包括事業成熟度、產業類型 …
看來,近期 Jamie 招生時的老鳥策略有所奏效
但,卻也可能帶來了一些問題:
(以下為個人的不負責任推理與猜測)
  • 真的過得不錯的老鳥是不會進 Appworks 的
  • 進來的老鳥,礙於既有的生存模式,參與度與可培育性未必會高
  • 老鳥與老鳥間的協力合作、媒合是相對較為困難的,除了心態以外,產業相異就是一個不小的鴻溝
  • 老鳥與菜鳥間的互相激勵、帶動,未必能有預計中強大的效果(做的東西很可能差異太大)
  • 最後,菜鳥與菜鳥間的互相激勵、幫助,很可能因為團體太小,而無法有 1+1>2 的效果
舉例而言,這次的團隊組成亮點大概是有軟硬整合的團隊,但我卻難以想像這些團隊要怎麼與其他做社群、做旅遊、電子商務 … 的團隊進行溝通或是合作
當然,每個團隊做的東西有所差異,互相交流時是能夠開拓視野的
但是,我似乎更樂見是由 20 個剛出社會的菜鳥團隊全部做 web 與 app 的服務。很有可能很多東西會很蝦而死掉,但是我相信團隊間的隔閡會更小、交流更多、培訓期間的成長更大


這次另一個比較明顯的問題是,有些團隊太不「網路」了 ... 對此我就不再贅述 :)
我猜測對於 #7 的團隊篩選,Jamie 應該會調整比例


而這次的 Demo Day,整體的 presentation 皆較往年為佳
缺點為,我個人不喜歡所有人都套上樣板用「廣告式」的方式來推銷自己
應該還有更多的可能性才是 (這次的團隊呼叫政府當然是走向另外一個路線了 XD)


最後,附上這次「玄米設計」推出的 Picaca App 的 官方網頁連結,我個人認為此產品在這次 Demo Day 中表現非常突出!


備註:
好吧,我先承認,其實敝公司 利昇科技 與「玄米設計」是有合作關係的
之前也曾一起推出一款文青拍照標價 App - PicValue
歡迎大家一起 下載 試用!

2013年7月8日 星期一

活動:PyConTW 2013


這張海報是我跟一個學妹(偷懶時)貼的,噢耶!



今年的 PyCon 心得很不一樣 =v=:
  • 心得文拖搞兩個月 …
  • 此次由原本純參加者的身分轉變為志工與小小(閃電秀)講者
  • 這次議程沒有現場聽到很多場,所以沒有辦法像去年的文章來拜所有的大神們 Orz
  • 取而代之,今年參與到了 PyCon 的籌備,能夠用另外一種角度來看看 PyCon
  • 過了兩個月,很多當時的小細節老早都忘了,但或許現在想得起來的部分是比較重要的也說不定(我當然要這樣講)


與其說今年我「參加」了 PyCon,倒不如說,我一起參加了「做」 PyCon 的(部分)過程
而在過程中,我看見了一群 Pythonista 用 Python 的思維做事情的方式:
  • 籌備團隊之間的 namespace 分組明確,且大家總能將自己的事情做好
  • 籌備時重要的 rules 皆明確地被寫在 handbook 內,遇到爭議時主席會跳出來重申重要的主張
  • 即便團隊已有自己的文化與規則,但是遭遇突發的狀況時,仍能夠調整規則並且應變
  • 或許同樣身為工程相關人員,同樣熱愛 Python,當遭遇問題時,大家永遠都在尋找在特定情況下的「one obvious way」去解決問題


這次 PyCon 有不少新的嘗試,像是採用三軌制,滿足各領域朋友們的願望;提供早餐餐盒,超級貼心的服務;提供財務協助方案,讓財務較為困難的朋友仍然能夠參與活動;晚宴規劃了表演與夜市,氣氛一級棒!

因為擔任志工,我也參與了
看都看不完的mailing list 籌備信件轟炸、場地佈置、發便當、會後聚餐 … 雖然當天聽到的 talk 少了一點,但是所認識的朋友與講者帶來的收穫是遠遠值回票價的!



擺攤時,各攤位都畫上了有趣的圖案 XD

自行吐槽 XD

這太強大了吧!

台北的 Python 社群 害我跳進 Python 坑的人都在裡面



事實上,我今年生日的時候,某 Taipei.py 使用 Pyra*** 框架的朋友有寄信向我邀搞:


Hi Joe,

你知道的,工作別太累,要留點時間投稿啊 XD

http://tw.pycon.org/2013/zh/blog/2012/11/21/call-for-proposals-zh/


生日快樂在哪裡 XD
還記得去年的心得文我曾寫到「希望某年我能夠熟 python 熟到能上台向大家介紹牠 ... Orz」
結果今年我雖然還是不太會寫 Python ,但是還是丟了個閃電秀上台 …






這是我第一次上台講閃電秀,非常緊張!
事前我大約又花了十來個小時準備投影片跟演講內容
花費的時間真的遠超過預估(我之前已經在 Taipei 介紹過 Bottle 了!)
講題跟內容我刻意一直用前陣子很紅的形容詞「微」當作梗,效果看起來不錯 XD
因為本人沒什麼技術能夠分享出來,所以也就只能簡單跟各位介紹自己使用 Bottle 的經驗
順便搞笑一下
檢討一下自己:
  • 原本是以 ipad 做簡報工具,不過轉接線與現場設備不合,會閃爍!好在後來有向 ccc 借到筆電 XD
  • 演講前缺乏預演,主要都是前一天睡覺前自己在心中默默演練演講情況
  • 因為使用的設備不是自己的,緊張,所以加快了演講速度,結果演講時間比預計短了要整整一分鐘 XD
  • 上台後完全就偏一側的麥克風講話,前一兩分鐘非常沒有安全感,整個人都龜起來
  • 講話吃了一些螺絲



意外在會場發現了一張必須倒著看的神秘貼紙 XD



最後的心得嗎?
這是我這半年多以來參與北部 Python 社群聚會後,所投入的一個大型活動
在此,除了認識許多熱愛 python 的熱血朋友們以外
我也發現有投搞演講就是有差,自己除了在準備時能夠整理思緒以外,現場演講亦是經驗的累積,而演講後也會有不少朋友們願意主動過來給我意見
(竟然有人說我可以出道了 XD)



付出,而後,得到更多更多。
怎麼看都划算!



夜市結束後,我與帽子的文青圖


週日與籌備的朋友、講者們聚餐後就回家(台南)去啦!




備註:
不嘴砲,Tainan.py 真的成立並且已經舉辦過聚會了!
點此 加入社群可以得知 Tainan.py 的最新消息!