發表文章

[Linux] Ubuntu supervisor file descriptor limit

因為常常在 Linux 下寫 Code, 也常常寫不少 daemon 服務 之前都習慣用 Supervisor 這隻程式來管理眾多 daemon ( http://supervisord.org/ ) 結果最近發現我有一隻 daemon 服務的 connection 會連不到 想說覺得奇怪, 去 /proc 底下檢查這隻程式的 fd 資料夾發現不多不少就是 1024 個, 這果然有問題, 八成是 connection 爆了 可是用 supervisor 啟動的程式, 要如何可以讓他使用更多的 file descriptor? 查了一下 Supervisor 的 Manual: http://supervisord.org/configuration.html 裡面還真的有一個 config 設定可以調整 file descriptor: ( http://supervisord.org/configuration.html#supervisord-section-settings ) 有一個設定值是 minfds, 預設 1024, 可以修改成你想要的 果然, 更改 /etc/supervisord.conf 儲存之後, 重新啟動 supervisor 就可以了 sudo service supervisor restart 打完收工

[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)