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. Simple IPython notebook extension

    最近練習寫了一個 IPython 的 notebook extension,查了一些資料就開始著手了。首先是一個簡單的 template,可以在 IPython extensions 這邊找到:

    # myextension.py
    
    def load_ipython_extension(ipython):
        # The ``ipython`` argument is the currently active
        # :class:`InteractiveShell` instance that can be used in any way.
        # This allows you do to things like register new magics, plugins or
        # aliases.
    
    def unload_ipython_extension(ipython ...

  6. py2exe note

    setup.py 簡單範例:

    #!/usr/bin/env python
    # encoding: utf-8
    
    from setuptools import setup
    from setuptools import find_packages
    import py2exe
    assert py2exe
    
    setup(
        name='<your_package_name>',
        description='<your_package_description>',
        author='<author name>',
        author_email='author email',
        packages=find_packages(),
        license='MIT',
        console=['xxx.py'],
        data_files=[
            'xxx.conf.sample'
        ]
    )
    

    assert py2exe 是因為 editor 會警告 py2exe import ...


  7. 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 ...

  8. 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 ...

  9. [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 下需要注意這個問題,不過算是滿基本的就是,如果還能有較進階一點的用法和例子,我覺得是會更好。

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


  10. [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 這些。

    而上述的這些 ...


Page 1 / 4