New FAMILUG

The PyMiers

Sunday, 26 April 2015

[News] Ubuntu 15.04 ra lò - Vivid Vervet

Như thường lệ, mang tính chất truyền thống, mỗi khi Ubuntu release thì FAMILUG sẽ lên bài như một lời tri ân, cũng là dịp anh em kéo nhau đi uống bia cám ơn cuộc đời, đội ơn Ubuntu đã mang đến cho chúng em ngày hôm nay.

Năm nay, khi tháng tư sắp đi qua, người ta bận rộn đi chơi để Ubuntu "ra" trong lặng lẽ.
Sẽ có 1 buổi party, nhưng phải đợi tháng 5 :D

`http://www.ubuntu.com/

Bản 15.04 có tên khá là buồn cười khi đọc lên "Vivid vervet" (vi vítđ vơ vít)

Thursday, 23 April 2015

ghi chú nhanh về cron

1. cron gửi notification (email)
cron gửi output (cả stdout và stderr) của file cronjob hay các câu lệnh trong crontab tới user đã được gán cho biến môi trường ``MAILTO`` của cron. Nếu câu lệnh fail nhưng không có output,
syslog sẽ ghi lại lần chạy fail này nhưng KHÔNG CÓ output nào được gửi tới user cả (thường là root)  vẫn có email gửi về với tên của script đã fail và return code.
Bản chất cron là một daemon đọc file cấu hình từ /etc/crontab và lên lịch để chạy các câu lệnh đó (cron.daily, cron.hourly ...) chỉ là các giá trị (thư mục chứa executable files) được config sẵn trong /etc/crontab

2. Không cần restart cron
mỗi khi thêm/thay đổi một script vào một trong các thư mục chứa crontab file (/etc/cron\..+), không cần restart cron deamon vì cron sẽ tự động quét các thư mục này mỗi phút.
 Thus  cron need not be restarted whenever a crontab file is modified.
3. Tên file cronjob 

Wednesday, 22 April 2015

Tạo file "backup" trước khi phá phách

Nhiều khi bạn sẽ cần sửa file trực tiếp trên 1 server, và việc tốt luôn nên làm là tạo một bản gốc để có thể hồi phục, phòng khi lỡ làm gì dại dột.
Sau đây là vài tips giúp việc này trở nên dễ dàng:

1. cp 
Hiển nhiên cách dễ nhất là tạo 1 bản sao của file mình sẽ sửa:
# cp file_se_sua file_se_sua.orig # viết tắt của original 
Nếu gõ lại tên file 2 lần thì hơi mỏi, hãy dùng tính năng của bash, ví dụ:
$ cp states.py{,.orig}; ls states.py*
states.py    states.py.orig
Nhờ tính năng "brace expansion" của bash, 
states.py{,.orig}
 sẽ tự chuyển thành:
states.py states.py.orig
2.  vim
Nhỡ đã mở file ra bằng Vim rồi, có thể sử dụng lệnh sau để lưu file:

Sunday, 19 April 2015

[Ebook] Sách học Lua

Lua là tên một ngôn ngữ lập trình.
Lua is a powerful, fast, lightweight, embeddable scripting language.
Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.
Cuốn sách Programming in Lua được liệt kê ngay trong phần document tại trang chủ của Lua và là một cuốn sách hay, kể cả cho những người không học Lua và nó free online:
http://www.lua.org/pil/contents.html#P1

Ví dụ về sự hay:
giải thích về tail call và tail recursion http://www.lua.org/pil/6.3.html

Thursday, 16 April 2015

[CLI] top 10 process dùng nhiều tài nguyên nhất, tmux tip

Không có gì màu mè cả, đơn giản chỉ cần dùng top và cho sắp xếp theo một cột nào đó là xong, nhưng bài này dùng ps và sort.

1. top 5 dùng nhiều CPU nhất:
$ ps xau | head -n1; ps xau | sort -nrk3 | head -n5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     28368  3.8  4.1 357208 41932 pts/4    Sl+  14:02   0:23 /usr/bin/python /usr/bin/salt-master -ldebug
root     28744  1.8  5.4 523132 55292 pts/5    Sl+  14:07   0:05 /usr/bin/python /usr/bin/salt-run state.orch orchestration.es -ldebug
root     28356  1.2  2.6 298472 27028 pts/4    Sl+  14:02   0:07 /usr/bin/python /usr/bin/salt-master -ldebug
root     28801  1.0  3.3 372236 34168 ?        S    14:07   0:02 /usr/bin/python /usr/bin/salt-cloud --profile ci-minion es7
root     28629  0.8  3.3 372980 34476 ?        S    14:03   0:04 /usr/bin/python /usr/bin/salt-cloud --profile ci-minion es7
ps xau để hiển thị các process đang chạy, head -n1 sẽ lấy dòng title để cho dễ nhìn,
sort -nrk3 để sắp xếp theo kiểu số học (-n) từ lớn xuống nhỏ (-r) theo cột thứ 3 (-k cột %CPU)
head -n5 để lấy 5 kết quả đầu tiên.

Thursday, 2 April 2015

[Sysad] một trận chiến giữa netcat và tcpdump

bình yên quá, dậy sóng thôi.

Cài đặt hai bên chiến tuyến:
# apt-get install -y tcpdump  netcat-openbsd
Sau đây hai đấu thủ cùng ra chào khán giả:
# for pkg in nc tcpdump; do whatis $pkg; whereis $pkg; done
nc (1)               - arbitrary TCP and UDP connections and listens
nc: /bin/nc /bin/nc.openbsd /usr/share/man/man1/nc.1.gz
tcpdump (8)          - dump traffic on a network
tcpdump: /usr/sbin/tcpdump /usr/share/man/man8/tcpdump.8.gz
Bây giờ là phần quảng cáo bỉm sữa và bình luận trước trận đấu:
- Bên công rõ ràng là nc, với khả năng tạo kết nối TCP/UDP tuỳ ý (ngoài ra có cả khả năng listen).
- Bên thủ chính là tcpdump danh tiếng, với khả năng "dump" mọi traffic trên 1 network, tcpdump có thể xử lý rất nhiều protocol khác nhau: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp and udp, rõ ràng là hơn nc vài bậc về dạng rộng. ($ man pcap-filter | sed -n "/  proto  /,/If/ p" | sed 's/If.*//g')

Trận đấu bắt đầu trên sân vận động TCP:

Wednesday, 1 April 2015

[Programming] coding styles

Programs must be written for people to read, and only incidentally for machines to execute.
- H. Abelson and G. Sussman (in "The Structure and Interpretation of Computer Programs)


1. Python
Pep8 : https://www.python.org/dev/peps/pep-0008/

2. C
Style cho C code để viết CPython: https://www.python.org/dev/peps/pep-0007/
Linux style: https://www.kernel.org/doc/Documentation/CodingStyle

3. Ruby 
https://github.com/styleguide/ruby
Có bản tiếng Việt: https://github.com/scrum2b/ruby-style-guide/blob/master/README-viVN.md

4. Javascript
https://github.com/styleguide/javascript

5. Golang
https://github.com/golang/go/wiki/CodeReviewComments

6. Bash
http://wiki.bash-hackers.org/scripting/style