New FAMILUG

Friday, 22 November 2013

[Media] Geeqie Image Viewer

http://geeqie.sourceforge.net/


Là một chương trình xem ảnh trên Linux - nhẹ  - nhanh - hiệu quả.



Cài đặt:
Trên Archlinux
# pacman -S geeqie
resolving dependencies...
looking for inter-conflicts...

Packages (2): exiv2-0.23-2  geeqie-1.1-2

Total Download Size:    1.73 MiB
Total Installed Size:   8.89 MiB

Thursday, 21 November 2013

SQLite là một C library!

SQLite nói một cách chính xác, là một C library, là một RDBMS không cần server process.

Theo SQLite homepage

SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain.
Theo Python docs
SQLite is a C library that provides a lightweight disk-based database that doesn’t require a separate server process and allows accessing the database using a nonstandard variant of the SQL query language. Some applications can use SQLite for internal data storage. It’s also possible to prototype an application using SQLite and then port the code to a larger database such as PostgreSQL or Oracle.

Wednesday, 20 November 2013

Tìm xem một process dùng bao nhiêu RAM

NOTE: kết quả của ps, pmap, top về memory chỉ nên dùng cho mục đích monitoring, để debug chính xác xem chương trình của bạn thực tế dùng bao nhiêu RAM, hãy dùng các chương trình profiler (ví dụ Valgrind)
Lệnh `top` `ps` có thể  chỉ trả về phần trăm hay tổng cộng lượng RAM mà một process sử dụng (hoặc trả về nhiều phần để bạn tự tính ra KB), sử dụng lệnh `pmap` (nằm trong package procps ) để tìm xem chi tiết lượng RAM đó được dùng vào đâu:

 $ whatis pmap
pmap (1)             - report memory map of a process

$ pmap --help | grep Usage -A1
Usage:
 pmap [options] pid [pid ...]

vậy `pmap` nhận args là pid (hoặc nhiều pid).

xem memory map của một lệnh `top` đang chạy:

ps và những option ít được biết tới

Ai dùng UNIX-like OS hẳn cũng phải biết tới lệnh `ps`, nếu không, có lẽ là họ vẫn chưa biết gì !?!

Câu lệnh (chương trình) `ps` trên Linux Ubuntu 12.04 nằm trong package procps. Với nhu cầu sử dụng bình thường, người dùng chỉ cần biết một vài tổ hợp sau đây là đủ:
ps -eFH
ps awwxf

rồi `grep` ra từ khóa mình cần tìm.
Ví dụ:

$ ps -eFH | grep firefox
hvn        930     1 17 341885 728808 2 06:52 ?        00:03:27   firefox
hvn       1055   930  4 106318 63936  2 06:53 ?        00:00:48     /usr/lib/firefox/plugin-container /usr/lib/mozilla/plugins/libflashplayer.so -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 930 plugin
hvn       1093   930  0 68027 20356   0 06:53 ?        00:00:00     /usr/lib/firefox/plugin-container /opt/google/talkplugin/libnpgoogletalk.so -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 930 plugin
hvn       1562  1481  0  2670  1104   1 07:12 pts/6    00:00:00       grep --color=auto firefox

Biết thế coi như là đủ nếu bạn không cần gì đặc biệt hơn.

Sau đây là một vài option đặc biệt.
Trước tiên, một điều cần biết là lệnh `ps` hỗ trợ 3 style để pass option.
Kiểu -e -F (hay -eF) của UNIX, kiểu `ps awwx` (không có dấu - ở đầu) của BSD và kiểu --dài_dòng của GNU. 3 style này không nên dùng lẫn lộn nhau.

Các option sau đây thuộc style UNIX:
1.  -C #Chọn process bằng tên câu lệnh.
Ví dụ:
$ ps -C firefox
  PID TTY          TIME CMD
  930 ?        00:04:13 firefox

Có thể thấy số kết quả câu lệnh này khác với `ps | grep [f]irefox` bởi câu lệnh trên chỉ tìm theo tên câu lệnh, trong khi câu lệnh sử dụng `grep` là để tìm từ khóa. (tức từ khóa có thể không phải câu lệnh, có thể là tên user, số pid, args của câu lệnh)

Wednesday, 13 November 2013

[WeeklyVim] Ctags, Taglist - lắp cánh cho vim

hay làm thế nào để vim có cánh ~^.^~ aye sir!

Khi bạn chỉ hay viết vài chương trình nhỏ, hay chương trình ấy do chính bạn viết, cái gì nằm ở đâu thì bạn sẽ là người nắm rõ. Nhưng khi nhảy vào một đống code đã có sẵn, với hàng trăm file, việc này bắt đầu khó khăn và bạn cần phải có 1 công cụ mới để làm việc này.

Vim nguyên bản không hỗ trợ việc này và đó là lý do chính để bạn cài plugin taglist và chương trình ctags.

Ctags là một chương trình để:


$ whatis ctags
ctags (1p)           - create a tags file (DEVELOPMENT, FORTRAN)
trên Ubuntu, nó được biết đến với tên package là exuberant-ctags