Sử dụng Cache Pip Downloads trong Python

Khi sử làm việc với Python trên môi trường virtualenv và pip. Ta cần cài đặt một gói thư viện python, ta có thể tạo thư mục cache để pip tìm trong thư mục đó trước khi lên mạng để giảm thời gian download và công việc cài đặt sẽ nhanh hơn:
$ vi .bash_profile
thêm dòng sau:
export PIP_DOWNLOAD_CACHE=$HOME/.pip-download-cache

Giới thiệu cơ bản về Decorator trong Python (Phần 1)

Trong ngôn ngữ Python, lập trình viên có thể làm được những thứ rất hay ho với “Functions”. Thực tế, “functions” là first-class objects, có nghĩa là bạn có thể làm gì với kiểu strings, integers, … thì bạn có thể làm được như vậy với Functions. Ví dụ, bạn có thể gán một Functions với một biến:
>>> def square(n):
... return n * n
>>> square(4)
16
>>> alias = square
>>> alias(4)
16

Sức mạnh thực sự của Functions đến từ việc Function được coi như first-class object. Như vậy một Functions có thể chập nhận một function khác làm biến đầu vào, và trả ra một function. Ví dụ, một hàm có sẵn trong Python là hàm map, bạn có thể truyền vào một list
và trả ra một list mới bằng cách gọi một hàm khác tương tác với từng phần tử trong list:
>>> numbers = [1, 2, 3, 4, 5]
>>> map(square, numbers)
[1, 4, 9, 16, 25]

Khi một function được truyền vào và gọi đến một function khác được gọi là Higher-order_function.
Ta có thể dùng Higher-order_function để thay đổi hành vi của Function khác.

“Decorators” được áp dụng từ Python 2.4 dùng để đóng gói Function (Higher-order-function). Cách thông thường để áp dụng Higher-order-function trước khi sử dụng Decorators như sau:
>>> class WhatFor(object):
... def it(cls):
... print 'work with %s' % cls
... it = classmethod(it)
... def uncommon():
... print 'I could be a global function'
... uncommon = staticmethod(uncommon)
...

Cú pháp như trên sẽ trở nên khó đọc khi mã nguồn phức tạp. Vì vậy, Decorators được sử dụng giúp cú pháp trong sáng hơn:
>>> class WhatFor(object):
... @classmethod
... def it(cls):
... print 'work with %s' % cls
... @staticmethod
... def uncommon():
... print 'I could be a global function'
...

>>> this_is = WhatFor()
>>> this_is.it()
work with
>>> this_is.uncommon()
I could be a global function

(Tôi sẽ trình bày tiếp trong phần sau …)

Tham khảo:
1, PythonDecoratorLibrary
2,Understanding Python decorators
3, Class decorators vs function decorators

Sửa lỗi cài đặt psycopg2 trên windows: ImportError: DLL load failed:

1.Thêm vào biến môi trường PATH …\PostgrSQL\9.0\bin và … \PostgrSQL\9.0\lib
2. Cài đặt mingw
3. download psycopg2
4. Chỉnh sửa file setup.cfg trong thư mục psycopg2, thêm dòng sau:
pg_config=C:\Program Files\PostgreSQL\9.0\bin\pg_config.exe
5. setup.py build -c mingw32
6. setup.py install

Tạo webserver chỉ bằng một dòng lệnh

Đôi lúc bạn muốn chia sẻ file trong mạng LAN ngay lập tức bạn có thể dùng lệnh từ python hoặc ruby để chạy webserver.

1. Bật Cmd lên.
2. chuyển đến thư mục cần chia sẻ
3. Gõ:

Python 2:

$python -m SimpleHTTPServer

Python 3:

$python3 -m http.server

Đối với Ruby

$ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"

Vậy là người khác trong mạng LAN có thể truy cập được vào máy của bạn với địa chỉ:
http:// [ IP của máy bạn]:8000/