New FAMILUG

The PyMiers

Sunday 26 January 2014

[game] Robot Odyssey - DroidQuest

NOTICE: để chơi được game này, bạn cần có khả năng đọc tiếng Anh kha khá (hoặc ôm bên cạnh 1 quyển từ điển)

Robot Odyssey (hereinafter: RO) được đánh giá là computer game khó nhất mọi thời đại


Không nói dài dòng vì nếu bạn không chơi thì làm sao biết nó khó :v

Do game trên Windows 95 nên để chơi trên Linux, ta dùng bản clone trên Java có tên là DroidQuest
http://www.droidquest.com/

Link download

Saturday 18 January 2014

[system] ldd - print shared library dependencies

$ whatis ldd
ldd (1)              - print shared library dependencies

ldd có sẵn trên máy bạn vì nó nằm trong package glibc

Từ khóa
shared libraries: hiểu đơn giản hết cỡ thì nó là các library được chương trình load vào khi chạy. (Chi tiết xem ở cuối bài)

Theo man 1 ldd 
ldd prints the shared libraries required by each program or shared library specified on the command line.

Vậy ldd dùng để xem 1 chương trình (hay một library) phụ thuộc (sử dụng) library nào.

Friday 17 January 2014

bash vs dash vs zsh vs python cho scripting

ubuntu / debian chuyển sang dùng dash làm /bin/sh 3-4 năm trước, vì dash nhanh và nhẹ hơn
dash 0.5.7-4:
A POSIX compliant shell that aims to be as small as possible
 archlinux tiếp tục sử dụng bash và không bao giờ chuyển sang dash
hvn@archhvn: ~ () $ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 25 19:06 /bin/sh -> bash
freebsd replace tất cả các script perl bằng POSIX shell script (perl is bloat)

dash hay bash
đây là đánh đổi giữa tốc độ / tính portable và tính năng
bash có nhiều tính năng hơn dash (ví dụ: array) nhưng nặng/chậm hơn dash, không POSIX compatible.
man 1 bash
BUGS
       It's too big and too slow.

Tuesday 14 January 2014

[bash] array

Array là một data type cơ bản trong bash. Sử dụng rất dễ dàng, hiệu quả lại mênh mang.

Tạo 1 array và assign nó cho 1 variable cute:

hvn@archhvn: ~ () $ cute[0]=lam
hvn@archhvn: ~ () $ cute[1]=hiep
hvn@archhvn: ~ () $ echo ${cute}
lam
hvn@archhvn: ~ () $ echo ${cute[0]}
lam
hvn@archhvn: ~ () $ echo ${cute[1]}
hiep
hvn@archhvn: ~ () $ echo ${cute[@]}
lam hiep
hvn@archhvn: ~ () $ echo ${cute[*]}
lam hiep

Dấu @ và dấu * để chọn hết các phần tử trong array cute.
Khi không chỉ rõ index, array sẽ trả về phần tử (element) đầu tiên
Nếu phần tử không tồn tại, array sẽ trả về empty string.
Dùng ${XXX} để thay thế một variable bằng value của nó.

Friday 10 January 2014

Memcached, redis và các key-value store

Memcached và gần đây là Redis, là những cái tên bạn nên biết. Vì chúng:
  • Rất đơn giản
  • Hữu ích
  • Đầu tư 1 thu lãi 10
Memcached đọc là Mem-kaʃ-di

chữ d được đọc riêng ra, vì d ở đây là viết tắt của daemon (như httpd, ftpd ...)
Chứ cache đọc là /kaʃ/ giống hệt như "cash" chứ không có "kết" nào ở đây cả.


Đơn giản
- Cài đặt dễ dàng
- Sử dụng đơn giản - dễ hơn tất cả các loại database - nếu bạn biết database là gì.


Memcached thường được sử dụng để lưu trữ các giá trị tạm thời, các chương trình thường được lập trình để đọc dữ liệu từ memcached trước khi đọc từ database (vì memcached đọc ghi trên RAM nên nhanh hơn rất nhiều lần so với đọc ghi database - trên disk)

Các hệ thống key-value store thường được sử dụng bởi các phần mềm, các lập trình viên thay vì người dùng cuối. Bởi vậy để minh họa cho việc sử dụng memcache/redis, ta cần phải dùng code.