Monday, 24 February 2014

[Python] docutils package (hay nhật ký tìm hiểu 1 python package)

Bài viết này dành cho những ai biết các khái niệm pip, virtualenv, package/module trong python. Hoặc những ai muốn xem ví dụ sử dụng một số câu lệnh để khám phá 1 directory.

Docutils is a modular system for processing documentation into useful formats, such as HTML, XML, and LaTeX. For input Docutils supports reStructuredText, an easy-to-read, what-you-see-is-what-you-get plaintext markup syntax.

Tóm lại module (hay package) này thực hiện các công việc giúp đọc 1 file .rst (reStructuredText) và cho phép xuất ra các output khác nhau (HTML, XML, LaTeX)

Ví dụ:
 rst2html.py monitor.rst out.html
Document của docutils khá là sơ sài, có mỗi page này có vẻ có chút thông tin:
http://docutils.sourceforge.net/docs/dev/hacking.html


Các bước hoạt động

docutils chuyển đổi 1 file .rst sang .html qua 4 giai đoạn:
1. Reader : đọc document từ source file và chuyển cho Parser
2. Parser: phân tích document nhận được, tạo 1node tree document.
3. Transform: thực hiện tranform ví dụ như biến 1 reference thành 1 link cụ thể.
4. Writer: nhận node tree sau khi transform và thực hiện ghi ra file đích.

Introspect docutils (soi và ngắm)

Sunday, 23 February 2014

[Python] Đọc kỹ hướng dẫn sử dụng, trước khi dùng

Code chơi chơi sai thì không chết
nhưng thuốc chữa bệnh không đọc là chết người.

Nếu bạn code python theo style sysadmin (thực hiện automate các task, tương tác với file ...) thì standard modules thân yêu nhất của bạn nên là: os , sys

Nay lần đầu tớ dùng os.walk, và không đọc hướng dẫn sử dụng.
Hậu quả là mất ~30 phút để debug (trong khi nếu đọc chỉ mất < 5 phút)
In [4]: import os                                                                                                                                    

In [5]: help(os.walk)
...
Caution:  if you pass a relative pathname for top, don't change the
current working directory between resumptions of walk.  walk never
changes the current directory, and assumes that the client doesn't
either.


Lesson learned!
Hết.

Thursday, 20 February 2014

[WeeklyVIM] Mở nhiêu file, dịch chuyển thư mục từ bên trong vim

để edit nhiều file (chọn file từ shell), có thể làm theo bài viết http://www.familug.org/2013/03/weeklyvim-edit-nhieu-file-voi-vim.html

Để edit nhiều file từ trong VIM, có thể chuyển sang normal mode và gõ
:n file1 file2 filen

hoặc để mở hết các file trong thư mục:
:n *

hay để "recursive", gõ
:n **

Tuesday, 18 February 2014

ssmtp: gửi gmail từ command line


Bài viết thực hiện trên:

$ lsb_release -r
Release:        12.04
Bạn có muốn post status FB qua CLI?
Chỉ cần vào tk FB, chọn setting => mobile, lấy cái email private đó. Gửi mail từ CLI đến email vừa lấy được => Xong con ong!

Để gửi mail (mặc định là Gmail) từ CLI, có nhiều cách, đơn giản nhất là cài ssmtp

$ whatis ssmtp
ssmtp (8)            - send a message using smtp
# cài ssmtp
$ apt-get install ssmtp -y


Sau khi cài xong cần cấu hình cho ssmtp ở /etc/ssmtp, cần sửa 2 file
revaliases và ssmtp.conf

Thursday, 13 February 2014

Chuyện thứ tự

Con người ta thường có xu hướng đề cao thứ tự những sự việc trong đời.
Bởi thế, những cái đầu tiên, cái thứ nhất luôn được sách vở nâng cao và biến thành 1 "suy nghĩ chung" rằng cái đầu tiên mới quý, mới tốt.

Ước mơ đầu tiên của bạn có phải là ước mơ tuyệt vời nhất?
Chuyện tình đầu tiên của bạn có phải chuyện tình đẹp nhất?
Bạn có yêu thích cái điện thoại đầu tiên của mình nhất?
Ngôn ngữ lập trình bạn học đầu tiên bạn có thích  nó nhất?


Chỉ để bạn hiểu rằng, thứ tự diễn ra của những điều ấy không quan trọng, quan trọng là bạn thích/ muốn gì.

Nên cũng đừng buồn nếu không nhớ "ngày bé mình ước mơ gì!"

Thursday, 6 February 2014

Các địa chỉ mua bán tin cậy tại HN

(giới thiệu bởi thành viên FAMILUG)

Sửa chữa laptop ở đâu?

suachualaptop24h http://www.suachualaptop24h.com/

Mua tai nghe ở đâu?

songlong http://songlongmedia.com/
tainghe.com.vn http://tainghe.com.vn/index.php

...

ai có gì thì comment vào nhé

Tạo "máy ảo" với LXC

Bài này hướng dẫn dùng LXC để tạo các "máy ảo Linux" (NOTICE: không tạo được các "máy ảo" Windows/BSDs ...) dựa trên các template có sẵn. Container là từ dùng để chỉ "máy ảo" ấy.

Bài viết mặc định rằng bạn đang dùng Linux Kernel ở phiên bản đã hỗ trợ LXC.

Bài viết thực hiện trên
$ lsb_release -a; uname -r
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.3 LTS
Release:        12.04
Codename:       precise
3.8.0-26-generic
Trước hết cần cài đặt package "lxc", package này chứa các script giúp cho việc tạo/ sửa /xóa ... các container.


$ sudo apt-get install -y lxc

Xem danh sách các template có sẵn: