1. Python3 aiopg

    aiopg 是一個使用了 aysncio + psycopg2 的一個 library,最近在用的時候想到一個問題:aiopg 的 connection 能不能在各個 coroutine 間 share,從想法上是覺得好像不行,查了一下,看起來應該是會有問題:Support for coroutine libraries,所以就變成必須在各個 coroutine 裡建 connection,頂多就變成從 pool 裡面拿這樣。

    另外 aiopg 在 transaction 的部分也要注意:TransactionsBEGINCOMMIT 必須用 execute 的方式,而 method 的部分則不給使用。

    再來就是 psycopg2 不是每個 method 在 aiopg 上都會有 ...


  2. Python FTP Download Percent

    本來是別人寫的一個 ftp download python script,因為不知道到底是不是有在下載中(?),所以我多加了一個顯示現在 download 幾 percent 的 function:

    def ftp_get(src_dir, name, dst_dir):
        def ftp_callback(chunk, file_size, dst_file):
            if not hasattr(ftp_callback, "progress_size"):
                ftp_callback.progress_size = 0
            if not hasattr(ftp_callback, "progress_percent"):
                ftp_callback.progress_percent = 0
            dst_file.write(chunk)
            ftp_callback.progress_size += len(chunk)
            tmp = ftp_callback.progress_size * 100 / file_size ...

  3. mod_wsgi with newer python version

    在執行 Apache + mos_msgi + Django 的時候出現了問題:no module named importlib

    因為系統是比較舊的 Ubuntu,Python 版本是 2.6,我 Django 是用 1.7,不相容 Python 2.6 以下,所以自己又另外裝了 Python 2.7。本來以為把 virtualenv 設定好後就沒事了,結果因為系統提供的 mod_wsgi 是用 Python 2.6 編譯的,沒有 importlib 這個 module,所以就掛了。

    解法很直接,另外下載 mod_wsgi 的 source code ...


  4. Django Essentials review

    Django Essentials

    這本書的內容是從頭開始講 Django 的使用和開發。大致看過後,我覺得非常適合想學 Django 的初學者。這本書會從一開始 for 各種 OS 的安裝開始講起,可能有些人會覺得有些囉嗦,不過這樣的確可以替新手省下很多時間XD。Django 版本的話這版是用 1.6,要注意的是 Python 是用 3 而不是 2,有些人可能會滿 care 這點的就是。

    接下來包括 Template, Model, View, Form 都會講到個別的用法,也會提到一些需要注意的地方,像 Model 就提到了如何 extend UserProfile 也有提到如何用 South 做 Migration,不過在之後的 Django 1.7 版本,就會內建 migration ...


  5. Python Windows schtasks

    最近在找 Windows 上有啥功能是像 Linux 上的 crontab 一樣可以設定週期性的工作,後來找到有 command line 版本的 schtasks 可以用。這邊我主要想做的事是透過執行 bat 檔案,將我要的執行檔加入 daily job 裡,同樣的也可以透過另一個 bat 檔案簡單移除掉這個 job,下面是我的程式範例:

    加入 bat 檔案目錄下的某個執行檔到 daily task 中

    @SET file_dir=%~dp0
    @SET exec_file=%file_dir%a.exe
    schtasks /CREATE /TN "my_task" /SC DAILY /TR "%exec_file% -a" /ST 14 ...

  6. Restart uwsgi using git push

    因為一 push 完都要 ssh 進去重開 uwsgi server,實在很麻煩,所以 google 了一下有沒有什麼好的做法,雖然說用 fabric 進去下指令也是可以,不過想看看有沒有利用 git push 的 hook 來做的例子。

    如何 restart uwsgi

    查了一些資料,一般要 restart uwsgi 就要 root 權限,不過可以在 uwsgi 的設定檔中設定 touch-reload 這個參數,以我的 .ini 設定格式的話就是設 touch-reload = /your_path/reload 設完這個路徑後,一旦你在 /your_path/ 底下 touch 了一個檔案叫做 reload,uwsgi 就會跟著 ...


  7. Python mocking requests

    查了一下有沒有相關的 library 可以做 web request 的 mocking,後來看到 httpretty 這個可以用,除了內建的 urlopen 這類以外,也支援 requests library,不過有點可惜的是 httpretty 不是內建的,所以必須用 pip 先安裝來用。它的用法還算簡單,以下是個簡單的例子:

    import requests
    import httpretty
    
    @httpretty.activate
    def test_request_new_token():
        data = {}
        headers = []
        token_response = '123'
    
        httpretty.register_uri(
            httpretty.POST,
            "https://api.imgur.com/oauth2/token",
            body=token_response,
            status=200 ...

  8. [Review] Python High Performance Programming

    Python High Performance Programming

    之前在網站上看到這本書,當初看到書的標題其實就蠻有興趣的了,這次剛好有機會可以 review 這本書,所以就來看看了。

    書本身的章節並不多,主要分成四個章節:Profiling, Numpy, Cython, Parallel Processing. 不過跟我預想的其實不太一樣,我當初其實以為會是有關寫法,記憶體控制或是 Python 特殊演算法的介紹,不過這本書其實比較偏向這幾個工具或 lib 的使用和一些技巧這樣,我覺得是比較可惜的地方。現在自己的 Python 程式其實比較少注意在效能方面,所以其實還對這些工具的使用沒有太大的感覺XD,希望之後有機會可以試著用這些工具來 tune 一些 performance 的問題。

    而我比較有興趣的應該是最後的 parallel processing 的部分,這部分應該算是在平常就會常接觸到的用法,另外就是還有一定會提到的 synchronization 和 locks 的問題,書中的話有用一些簡單的例子來說明為何在 MultiProcesses 下需要注意這個問題,不過算是滿基本的就是,如果還能有較進階一點的用法和例子,我覺得是會更好。

    就個人而言,不太算是我的菜,大概是因為跟我預想的 ...


  9. [Review] Learning Python Design Patterns

    learning python design pattern

    其實之前就想看有關 design pattern 的書了,前一陣子剛好有這個機會看這本書,順便想看看在 Python 上要怎麼運用這些 pattern。

    這本書頁數並沒有說很多,約 130 頁左右,看起來不會說很吃力。書中每一章都會對一至兩種 pattern 做解釋,然後說明優缺點,並附上一個不算偷懶的 example,還算好理解的就是,不過覺得有點可惜的是如果有加上沒有應用和應用後的一些實際比較就更好了。

    而這本書本身應該會比較適合剛學 Python 一些時間的中 ~ 新手,例如第一章講 MVC 其實我自己就覺得不是很必要了,不過就適合不是很熟的人吧。接下來幾章則會講到 Singleton pattern,Factory Method, Facade pattern, Proxy pattern, Observer pattern, Command pattern 和 Template Method design pattern 這些。

    而上述的這些 ...


  10. Python Sphinx simple example

    查了很多資料,遇到一堆鬼打牆問題,終於弄成我要的樣子了,不過其實也沒有加多少東西,只是基本的設定一直搞不定 orz。


    下面是一開始的 project 結構,接著會利用 sphinx 在根目錄下建立 doc 這個目錄:

    Project 目錄架構

    .
    ├── CHANGES.txt
    ├── MANIFEST.in
    ├── README.rst
    ├── test
    │   ├── __init__.py
    │   └── test.py
    ├── requirements.txt
    └── setup.py
    

    安裝並產生設定

    首先先安裝 sphinx(ex: pip install sphinx),接著在 project 根目錄下輸入 sphinx-quickstart,設定步驟如下:

    Welcome to the Sphinx 1.1.3 ...

Page 1 / 2