發表文章

[Python] docopt

今天因為要在程式加上 optionParser 發現 python v2.7 不支援了 只好找尋其他 library使用, 我也知道其實早就有 argparser 可是就覺得他好難用, 當初要寫他文件就寫得很零碎 今天 google 了一番, 發覺有個東西叫 docopt , 好像好好用阿, 就來試用一下 一用之下, 真是令人清爽, 而且強迫你建立好習慣, 是個好 library Official site:  http://docopt.org/ pip:  https://pypi.python.org/pypi/docopt

[Python] list flatten

最近剛好碰到需要做 list flatten 的行為 網路上查了一下, 順便做了一點不專業的比較 故事是這樣的 今天我有一個 list 中的 list tmp_list = [[1, 2, 3, 4], [5, 6, 7, 8]] 我今天想要做的事情就是把他平扁化, 也就是變成 [1, 2, 3, 4, 5, 6, 7, 8] 查到有兩種作法 1. 利用 itertools import itertools list(itertools.chain.from_iterable(tmp_list)) # [1, 2, 3, 4, 5, 6, 7, 8] 正當我覺的還要多 import module 不太滿意的時候, 看到了第二種作法 2. 利用 sum sum(tmp_list, []) # [1, 2, 3, 4, 5, 6, 7, 8] 頓時讓我覺的好聰明阿, 不過一般人來講應該會寫的第三種 3. 利用 list comprehensive [item for sub_list in tmp_list for item in sub_list] # [1, 2, 3, 4, 5, 6, 7, 8] 那順便做一個大的 list 來試試看哪個比較威XD import itertools def make_list(): return [range(100) for i in range(1000)] @profile def merge_iter(tmp_list): return list(itertools.chain.from_iterable(tmp_list)) @profile def merge_sum(tmp_list): return sum(tmp_list, []) @profile def merge_comph(tmp_list): return [item for sub_list in tmp_list for item in sub_list] if __name__ == '__main__': tmp_list = make_list() merge_iter(tmp_list) m...

[Python] Python 入門 - Coursera

好像很久沒有更新網誌(汗) 最近也有一門 Coursera 的 Python 課程開了 有興趣從基礎開始學的的人可以去看看 是美國 Rice 大學開的課程: https://class.coursera.org/interactivepython-004 裡面使用線上的 python 來教學 : http://www.codeskulptor.org/ 有興趣得人可以去看看, 完全不會 Python 的人很適合去學

[Python] Virustotal api using python

圖片
雖然本身接觸到不少病毒資料, 不過每次都靠上傳檔案到 Virustotal 實在非常的沒效率 寫程式用 url upload 也不是不行, 不過其實他是有釋出 API 可以用的 一般帳號的 API 規定 1 分鐘最多 4 個 request, 而且是透過 http post 的方法且回傳是 json 格式 ( The chosen format for the API is HTTP POST requests with JSON object responses and it is limited to at most 4 requests of any nature in any given 1 minute time frame  ) 這篇參考的是他的 API 教學頁面, 做一個簡易的上傳跟擷取講解 (目前時間大約是 2013/12/23) Official Source:  https://www.virustotal.com/en/documentation/public-api/ 而使用他的 API 需要 API key, 這需要先註冊帳號才可以 首先, 英文版右上方有一個 Join our community (中文是加入我們社群) 依序填完相關資料即可, 這邊應該是沒什麼太大的難度 但是注意信箱要填正確, 他會寄確認通知, 等點了確認通知信之後才會正式開啟 之後到 virustotal 登入, 點右上角的帳號選擇 profile, 就會出現一些相關訊息, 點API就會看到API KEY 中間那個 API KEY複製下來之後, 就可以開始使用了 (他下面的聲明是說如果你用不夠想要更多的數量需求, 再寫信跟他要) 以下都是使用 python code 為範例 Upload Suspicious File 官網是建議利用 httplib 來跟 virustotal 提供的 api 做溝通, 但有三件事情要修改跟注意 首先會看到官網有提供一段 code import postfile host = "www.virustotal.com" selector = "https://www.virustotal.com/vtapi/v2/file/s...

[ML] Coursera 線上機器學習中文課程

我以前的指導教授終於開 Coursera 線上課程了!! 對於機器學習有者相當大的好奇心可以來加入學習!! 這門課主要是講述機器學習的基礎概念 https://www.coursera.org/course/ntumlone 對了是中文授課, 雖然投影片是英文的XD

[Python] ML WITH SCIKIT Learn (Model Selection)

圖片
年初網路上有一個基礎 scikit learning 的教學, 相當的完整以及實用 花了一點時間看完發覺應該讓更多人學會使用他, 所以打算來寫個中文版本的說明 這篇只是用我的話重新講述 Model Selection 部份, 剩餘的有時間再寫 Video:  https://www.youtube.com/watch?v=iFkRt3BCctg 官網:  https://us.pycon.org/2013/community/tutorials/23/ 影片相關資料: https://github.com/ogrisel/parallel_ml_tutorial.git  (需要用 git 下載) 下面程式碼一律都是 Olivier Grisel 所提供在 github 的, 我只是會有小幅度的修改跟利用 想要看完整版還是乖乖的把 video 看完吧, 要花約 2.5 hr (Model selection只佔 1/4)

[Python] Python Koan

呼 ~ 之前家裡出了點狀況, 加上最近忙碌了一陣子, 只好稍微擱置 這幾天比較有空, 終於有點時間回來寫 blog 回歸的第一篇先來簡單介紹一個很好的 software: Python Koan 官方連結:  https://github.com/gregmalcolm/python_koans 這是一個相當不錯的軟體, 基本上當然是在 linux 下比較適合運行 這是透過 python 的 TDD 來測驗跟了解甚麼是 python, 以及 python 要怎麼用 當然電腦中必須裝有 python 2.7 or python 3.1 的版本才行 例如我電腦中有 python 2.7 我可以到下載後的資料夾中的 python2 裡面, 執行 run.sh 他就會開始跟你講有哪個檔案有 error, 必須要修正才可以 (官網有示意圖) 修正了就會到下一個錯誤, 藉由這樣的方式來學習 Python 總共有 38 關, 297 個任務 就我個人完全過關之後的感想是, 最好有一些基礎跟了解再來玩會比較好 不然可能會不知道他考的是甚麼問題 那其實問題都滿簡單的, 只有到後面的 decorate 才開始有點難度 不過到那邊也表示快結束了 至少全部都過了之後, 也應該有基本的 python coding 的能力了 推薦給想要確認自己是否熟悉 python 的人可以試試看