[研討會心得][PyCon APAC 2014] 05/17 Day 1 note

Python-powered Analysts @WesMackinn Author for “Python for Data Analysis” Python’s role in 2014 for analysis BI Query  Report ordinary Alert when trend change ETL (Extract Transform Load) moving data between storage format Normalization How did we get here? Good develop tool —  iPython Learning resource: nbviewer.ipython.org static html share space The libraries packaging tech become more maturing. Why did pandas succeed? tasteful and consistent solutions passionate user base An API optimized for  terminal-freindliness composability   Tools before Data Analysis Cython NumPy matplotlib ipython Python might not best language for Data Analysis, but everyone can using python to discussion. Scikit-learn http://scikit-learn.org/stable/ Machine learning in python. Pandas: The good and bad Ecosystem compatibility Design for broad appeal The big data problem. Big Data Trend Python/R/Julia growing  JVM-base big data ecosystem Concurrent / multicore programming challenges Staying competitive “Enterprise money” is still stay in JVM-Ecpsystem A bit about DataPad http://www.datapad.io/ Exploratory analytics and report-building environment Powerful analysis tool No...
繼續閱讀

[OpenData]在駭客松前試做一個把csv與xml轉成json的converter (csv/xml parser) 主要在解決big5/utf8 編碼問題

最近為了要參加OpenData的Shareable Cities駭客松,也為了好好練習一下Python.決定從頭到尾都要使用python當做我主要的程式語言. 比賽中一開始以為資料都來自于政府的OpenData網站 data.gov.tw,所以去觀察了一下這個網站裡面的資料,發現有以下的一些問題: 資料格式不統一: 可以看到政府單位的Open Data  有 XML,CSV與JSON 三種資料格式 資料內容格式不統一: 先提到所謂的內容的格式,也就是編碼(encoding)不統一.有的檔案用big5 有的用utf8,這在 python(2.7)與 Ruby (2.1) 是很大的問題,也是這次主要解決的問題. 資料內容不統一:  有些資料第一列是敘述欄位,有的時候卻是直接開始資料. 所以,我在比賽前想先做出一些工具,可以在比賽當場使用: 統一輸出JSON資料,並且統一編碼為utf8 可以轉換CSV與 XM: 到JSON 可以解決 big5/utf8的編碼問題 可以是情況的把前面幾列忽略掉,輸出更漂亮的資料格式 於是在比賽的前一個禮拜,開始做這個工具.主要會用到以下的python libraries: PyQuery: 主要是拿來做為xml 的parser,相當好用. request  : 主要拿來作為網路資料的下載,一般人常用的url lib 是不錯用,只是有時候遇到長網址會出現問題. csv, json, os 這些必用的  python libraries 就不詳細敘述 這裡記錄一些在做工具的時候發生的事情: Encoding error的問題 原因: 有的檔案用big5 有的卻用utf8,這裡影響兩個地方,一個是csv的資料讀入.一個是json資料dump 解法: 會試著去使用各種預先列出的encoding 方式,然後傳回正確的結果     * 參考: * [http://stackoverflow.com/questions/15918314/python-detect-string-byte-encoding](http://stackoverflow.com/questions/15918314/python-detect-string-byte-encoding) Error: 在Mac 上面想要安裝 PyQuery 會發生錯誤  ”unknown argument: ‘-mno-fused-madd’” 原因:  似乎是 python 2.7 的問題(regression?) 除了等官方正式修復之外~請用以下解法 解法: sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future python setup.py install 參考: http://bbs.csdn.net/topics/390767158 http://stackoverflow.com/questions/22313407/clang-error-unknown-argument-mno-fused-madd-python-package-installation-fa Error: [Heroku] ! [remote rejected] master -> master (pre-receive hook declined) 原因: 主要是Procfile 內容有問題 解法: 先去查詢錯誤log  “heroku logs” 發現問題在 “Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch” 於是去修改 Procfile 從   web: python manage.py runserver 到 web: python manage.py runserver “0.0.0.0:$PORT” Error: renamed heroku app from website, now it’s not found git remote rm heroku  git remote add heroku [email protected]:yourappname.git Refer: http://stackoverflow.com/questions/7615807/renamed-heroku-app-from-website-now-its-not-found  最後列一下這邊的github...
繼續閱讀

[研討會心得]2014/03/22-微軟技術關卡破解日

會議的時間是2014/03/22 全部影片的網址在這裡: http://channel9.msdn.com/Events/MVP-Virtual-Conference/MVP-Comcamp-Taiwan-2014 這個研討會我沒有辦法參加,雖然在週末但是有事情無法參加.不過盡量用自己的時間來找一些有趣的topic來看. Visual Studio + C# 開發 Android APP VS2013可以利用Xamarin 來利用C#開發Android,對於C#可以說是又愛又恨.愛的是它簡單易入手,恨的是他的delegate,event跟Lambda相當的難懂.沒錯,易入手但是要深究相當的累. 這篇是中文介紹,利用C#做了幾個範例: Hello world,Toast 範例,JSON string parsing跟Web service的範例. 整體開發界面跟ADT沒有太大差異(檔案架構) layout -> 可以跟 Android共用 檔名不同 xml-> axml drawable -> 跟Android用法一樣 使用的語言,當然就是C#甚至可以使用微軟的.net相關的 System 函式庫 感想: 可以使用 .Net函式庫算是很方便,而且就IDE的上手度而言Visual Studio應該會讓很多人上手度比起ADT 的Eclpse 或是 Android Studio快多了. 有許多可以下載即用的函式庫 Newtonsoft.JSON 就是其中之一,代表許多你在desktop 的跟資料處理有關的函式庫可能都可以直接搬過來. 總結:  想要開發工具可以考慮,若是長期而言還需要好好的考量.畢竟許多可以參考的open source library都沒有能幫助你在C# for Android 的部分. 如果,不愛了呢-談程式設計師的生涯規劃 這篇想探討的是跟程式設計以外的事情,也就是面對著新技術接踵而來,該如何學習?該如何繼續從事這行? 所謂的薪資是公司把員工留下來的最低成本,而所謂的成本就是: 公司是否賺錢 你能幫公司賺多少錢 你在企業內外的影響力 你的市場行情 特別重要的是~企業內外的影響力 所謂得工程師 除了深度還要有廣度 接近老闆,主動回報 名言摘錄: 你的時間花在哪裡~成就就在哪裡 大部人努力的程度都不夠到拼天賦 感想: 要不斷的努力,懂得分配時間到正確的時間
繼續閱讀

[python][mac][OpenCV]在Mac上面利用Python來操作OpenbCV (Using OpenCV in Mac via python)

最近不斷地為了PyCon APAC 2014在惡補Python,在臉書的討論區裡面看到這邊討論OpenCV for Python的文章. 有介紹到有人為了OpenCV for Python 寫了專門的講解 blog 好奇之下開始去尋找如何去使用python在Windows上面,想不到真是有點麻煩. 於是又把念頭動到Mac上面,想不到比想像中的簡單多了,參考這篇(update-installing-opencv-on-mac-mountain-lion/) brew tap homebrew/science brew install opencv mkdir -p ~/Library/Python/2.7/lib/python/site-packages echo ‘/usr/local/lib/python2.7/site-packages’ > ~/Library/Python/2.7/lib/python/site-packages/homebrew.pth 找了一篇測試的程式碼搭配著JPEG果然是成功的,於是開始去把自己之前OpenCV Camera Testing Sample拿來改成python版本. 要改其實不難,主要是要去一個一個把API從C++換成Python.可以去官方API列表來找,幾乎都有兩個語言的版本. 要找詳細的code可以去看Github https://github.com/kkdai/python_learning/blob/master/OpenCV_OpenCamera.py  目前開起相機是成功的,不過要抓取keycode有點問題還需要解決,解決完後就可以弄旋轉的部分.   雜話: 我真的不了解,身為一個軟體工程師有什麼理由不買Mac 的.就算你是Windows 的開發工程師,Mac可以直接裝Windows.更何況如果你是非Windows工程師,使用Homebrew任何程式語言都可以馬上裝好.最近安裝不論是Scala或是這次安裝OpenCV或是之前安裝Django就是那麼簡單.
繼續閱讀

[python][django] 自己開始寫符合RESTful的server與client(2)

其實比起架設RESTful的django伺服器,撰寫一個client去對它存取似乎是簡單多了. 要用到的東西也很少,因為Python本身對於JSON的處理就相當的簡單. 所有的處理都是使用到原先架設好的伺服器裡面的資料 http://sleepy-plateau-3929.herokuapp.com/snippets/.json 這裡稍微提一下GET需要注意的事情 可以使用urllib2的urlopen來讀取網頁 JSON有個直接可以使用的json.load 處理過來如果一開始是object可以使用 result[“object”] 來找,反之可以用 list 去處理 List Data context 的部分,可以處理多個以上的context context = {“context_1” :value1, “context_2” : value2} 接下來直接看code   POST需要注意的事情 要存取網頁上面的表單資料(form)其實很簡單 request.POST[“value_name”] 表單(form)的樣板(template)記得要有csrf_token 先確認你的伺服器支援post 的RESTful Add,如果要上傳JSON你的Content-Type要對 Python requests 是個好用的library,一定要用 接下來看code     最後完整的github在這裏    
繼續閱讀

[python][django] 自己開始寫符合RESTful的server與client(1)

前言: 前幾次開始了Django設計之後,雖然弄出了RESTful的網站,也使用了DjangoRESTFramework.但是,都是依照範例程式來跑出來的. 所以現在決定除了裡面的範例程式之外,另外在同一個網站裡面弄了一個部分是模擬遠端連線 依照著tutorial 1~3 去修改,所以他的架構如下: tutorial (主要的專案部分) snippet (RESTful web site) 負責RESTful的部分,裡面都是使用到DjangoRESTFramework所提供的function. 主要的API 是 snippet webs (模擬的viewer遠端) 主要這裡就是這次開發的部分,主要提供兩個部分: 一個是顯示所有資料的的部分(json get) ,其中全部顯示已經完成但是顯示詳細的部分還沒有. 另外一個是新增資料(使用 json post)(尚未完成) 遇到的問題集錦: 這裡整理一下 ,我這次做出來所遇到的一些問題: 字串的編碼問題 其實這種問題算是基本的,而且也跟我在中文系統上面執行python有關. json出來的資料想要parse出來會成為一堆list 每個list裡面的格式會是utf8~如果要在中文上面正確顯示成字串需要decode(‘big5’)~據說Heroku 預設是utf8但是我使用big5還是可以跑.這個要持續觀察. 樣板的目錄設定(TemplateDoesNotExist) 問題狀況: TemplateDoesNotExist: 500.html 主要原因: 之前在設定的時候都只有一個project 叫做tutorial.但是這次另外建立了一個webs所以template的目錄會出現問題. 依照之前的經驗會以為templates資料夾應該就放在目錄下的/templates/app/,結果因為webs是第二個專案.所以template的設定會維持在第一個,也因為我並沒有在setup.py裡面把TEMPLATE_DIRS設定好.所以會發生這樣的錯誤.  解決方法: 在setup.py 加上以下的部分 PROJECT_PATH = os.path.realpath(os.path.dirname(file)) TEMPLATE_DIRS = ( PROJECT_PATH + ‘/templates/’ ) 接下來把原本打算放在webs/templates的檔案移到tutorial/template/ 參考: http://stackoverflow.com/questions/4705962/need-help-with-django-tutorial 最後再寫一次如何把你的Django Code上傳到heroku python manager.py runserver 首先要確定你可以正常的執行 產生Procfile檔案,其內容為 web: python manage.py runserver 0.0.0.0:$PORT –noreload heroku login foreman start 確認沒有錯誤訊息 利用 localhost:5000 查看如果任何功能有問題 pip freeze > requirements.txt vim .gitignore 確認把virtualenv 產生的目錄加入 *.pyc git init git commit -m “任何comment” heroku create git push heroku master heroku ps:scale web=1 記得要先把其他的app dyno設成0或是砍掉~因為沒有付錢的時候heroku只允許dyno=1 heroku ps heroku open 其實成功之後,之後就可以用其他比較熟悉的git client比如說是SourceTree不需要在console mode的下指令. 查看結果: Server:  http://sleepy-plateau-3929.herokuapp.com/snippets/ Client:   http://sleepy-plateau-3929.herokuapp.com/webs/ Github:  https://github.com/kkdai/DjangoREST_Client/   先寫到目前的狀況~之後會把POST的部分完成當成第二個部分~~~   
繼續閱讀