Tuesday, January 23, 2007

23/1/2007 - Con gái chào đời


5h30 sáng 23/1, đón mừng sự kiện trọng đại: con gái đầu lòng chào đời, mẹ tròn con vuông. Bé cân nặng 3.3kg và dài 52cm (khá ... cao đấy chứ ;)) , giống cả Ba và Mẹ. Ông nội đặt tên cho cháu là Quỳnh Anh, Bà nội thì quả quyết họ đệm phải là Lê Thị, chữ đệm thuần Việt cho con gái.

Updated: cuối cùng đặt tên con gái là Lê Nguyễn Quỳnh Anh. Cả Bà và Mẹ đều hài lòng :)

Monday, January 01, 2007

2007: viễn cảnh sáng sủa cho PMNM ở Việt Nam?

Chào năm mới 2007! Hôm nay là ngày đầu tiên của năm. Sau lưng tôi, VTV3 đang phát trực tiếp chương trình TTVN, các tác giả có sản phẩm lọt vào chung kết không ai nhắc đến phần mềm nguồn mở (PMNM). Sau lưng tôi, 2 năm đã qua nhưng dự án chuyển sang PMNM của công ty vẫn đang dẫm chân tại chỗ. Vậy có lý do gì để dự báo viễn cảnh PMNM ở Việt Nam trong năm 2007 sẽ sáng sủa hơn các năm trước? Liệu có lạc quan quá chăng?

Dự báo năm mới đương nhiên phải lạc quan, tuy nhiên tôi cũng phải dựa trên một số cơ sở. Các cơ sở đó là:
  • Sự hiện diện của PMNM đang chứng minh được tính lợi ích: các doanh nghiệp ngày càng quen dần với nền tảng LAMP và các ứng dụng web trên đó, hệ thống email/anti-virus/anti-spam dựa trên PMNM với chi phí thấp, hiệu quả cao. Ứng dụng VoIP/PBX với Asterisk cũng đang bắt đầu được quan tâm. Các phần mềm hữu ích trên Windows được biết đến và sử dụng nhiều hơn như Firefox, Thunderbird, OpenOffice, Stardict, IZArc. Việc này đồng nghĩa với các doanh nghiệp sẽ có tinh thần cởi mở và tự tin hơn khi muốn áp dụng PMNM thay vì dè dặt và hoài nghi.
  • Áp lực bản quyền: đối tượng bị các cơ quan chức năng sờ gáy kiểm tra bản quyền phần mềm không chỉ còn là các công ty bán máy tính và các đối tượng này sẽ ngày càng được mở rộng. Có vẻ như bóng của "cái búa" xử phạt hành chính đang treo lơ lửng trên đầu các doanh nghiệp.
  • PMNM đã thân thiện người dùng: hơn hết muốn được chấp nhận rộng rãi, PMNM phải thực sự hữu dụng và thân thiện. Có thể khẳng định, các bản phân phối Linux đã thực sự hướng đến người dùng với các cải thiện đáng kể về giao diện, hỗ trợ phần cứng, dễ dùng và hỗ trợ người dùng tốt. Một minh chứng là sự thành công của Ubuntu khi đứng ở vị trí số một cho Linux desktop. OpenOffice 2.0 cũng là bước tiến đáng kể khi hoàn toàn có thể thay thế (về chức năng) cho MS Office.
  • Cộng đồng người dùng đông đảo và trưởng thành hơn: thay vì tạo ra các cuộc "đấu võ mồm" trên diễn đàn để khẳng định tính ưu việt của một phần mềm/bản phân phối Linux nào đấy, người dùng đang chọn lựa một cách khôn ngoan hơn: sử dụng những gì có lợi nhất cho mình miễn đúng tinh thần mở.
Điểm yếu duy nhất khiến sự lạc quan về PMNM trong năm 2007 có hơi bị "sứt mẻ" đôi chút chính là sự yếu kém của ngành dịch vụ PMNM. Sự yếu kém này (với những kiểu làm ăn chụp giựt, treo đầu dê bán thịt ... lợn như VKLin.., VietLin.., VietWo.., BTOffi..) có khi bóp chết cơ hội thay vì tận dụng nó. Hãy thử chờ xem!

Happy New Year!

Saturday, December 16, 2006

Thư giãn: Lời khuyên cho nam giới

Xì-trét quá nên lông bông thư giãn một chút. Và đây là một phát hiện:

Nam giới, nhất là nam thanh niên, không nên uống sữa tươi đóng hộp. Lý do là tất cả sữa tươi đóng hộp đều là sữa tiệt trùng! :D

Friday, December 15, 2006

Tạo menu tương tác với shell script

Tôi thường dùng shell script để làm vài việc lặt vặt với ... số lượng lớn, ví dụ: migrate account, convert addressbook, backup data. Dữ liệu thường được đọc từ file, họa hoằn lắm mới thêm vài option. Đơn giản là để giải quyết bài toán một hoặc hai lần nên làm sao cho nhanh nhất là được. Nếu script được dùng thường xuyên với input khác nhau buộc phải nghĩ đến cách chuyển sang dạng menu tương tác để hạn chế option cho ... chính shell script.

Cách đơn giản nhất để tạo menu tương tác là dùng vòng lặp vô tận: in menu, lấy lựa chọn, xử lý. Viết một vòng lặp như thế với bash không khó nhưng rườm rà, nghĩ tới là đã nản. May mắn thay bash có lệnh buillt-in select giúp việc tạo menu dễ như trở bàn tay. Dưới đây là một ví dụ Thực đơn quán bà Tám:
#!/bin/bash
# menu.sh
PS3="Mời bạn chọn thực đơn: "
select thucdon in "Sáng" "Trưa" "Tối" "Thoát"; do
case "$thucdon" in
"Sáng")
echo "Bún bò + cafê đá"
;;
"Trưa")
echo "Cơm tấm sườn"
;;
"Tối")
echo "Bún chả cá"
;;
"Thoát")
break
;;
esac
done
Kết quả:
$ sh menu.sh
1) Sáng
2) Trưa
3) Tối
4) Thoát
Mời bạn chọn thực đơn: 1
Bún bò + cafê đá
Mời bạn chọn thực đơn:
Chỉ có mấy lưu ý:
  • PS3: dùng để hiển thị dấu nhắc lựa chọn, nếu dùng select lồng nhau thì nhớ lưu và khôi phục giá trị này
  • Kết thúc vòng lặp select bằng break

Saturday, November 25, 2006

Xác thực LDAP cho ứng dụng web PHP

Mỗi khi triển khai một ứng dụng mới trong công ty, người dùng lại "rên" lên vì phải nhớ (lưu vào máy) thêm một password nữa. Triển khai một giải pháp Single Sign On (SSO) là hoàn toàn không đơn giản cả về chi phí lẫn kỹ thuật. Một giải pháp Single Password là khả thi và chấp nhận được. Thông tin cơ bản về user và password được lưu trên LDAP, các ứng dụng khác có thể truy cập database này cho mục đích xác thực (authentication), đồng thời cũng có thể import các thông tin cơ bản từ LDAP để tạo database user riêng cho mục đích phân quyền trên ứng dụng.

Các ứng dụng web dựa trên PHP cho doanh nghiệp ngày càng phổ biến: CRM, groupware, project management, ticket system, online training,... Hầu hết có hỗ trợ xác thực LDAP sẵn, tuy nhiên cũng có một số ứng dụng chưa có. Nhưng đó không phải là trở ngại lớn, chỉ với một đoạn mã đơn giản chèn vào trước phần xác thực của ứng dụng ta có thể duy trì mục tiêu single pasword cho người dùng. Đoạn mã này trích từ ASPN PHP Cookbook:
$ldapconfig['host'] = 'localhost';
$ldapconfig['port'] = NULL;
$ldapconfig['basedn'] = 'dc=localhost,dc=com';
$ldapconfig['authrealm'] = 'My Realm';

function ldap_authenticate() {
global $ldapconfig;
global $PHP_AUTH_USER;
global $PHP_AUTH_PW;

if ($PHP_AUTH_USER != "" && $PHP_AUTH_PW != "") {
$ds=@ldap_connect($ldapconfig['host'],$ldapconfig['port']);
$r = @ldap_search( $ds, $ldapconfig['basedn'], 'uid=' . $PHP_AUTH_USER);
if ($r) {
$result = @ldap_get_entries( $ds, $r);
if ($result[0]) {
if (@ldap_bind( $ds, $result[0]['dn'], $PHP_AUTH_PW) ) {
return $result[0];
}
}
}
}
header('WWW-Authenticate: Basic realm="'.$ldapconfig['authrealm'].'"');
header('HTTP/1.0 401 Unauthorized');
return NULL;
}

if (($result = ldap_authenticate()) == NULL) {
echo('Authorization Failed');
exit(0);
}
echo('Authorization success');
print_r($result);
?>

Đơn giản là dùng ldap_bind với username/password của người dùng, nếu OK là xác thực thành công. Cũng nên lưu ý là ldap_bind đơn giản không mã hóa thông tin, nếu muốn an toàn hơn thì dùng LDAP+SSL hoặc LDAPS.

Tuesday, November 07, 2006

Họp mặt cựu học sinh Buôn Ma Thuột khóa 1994

Nội dung thông báo từ Võ Đại Phố:
------------------------------------
Thế là đã mười hai năm, nếu thực hiện phép trừ 2006-1994. Mười hai năm, chúng ta đã trải qua một con giáp. Được sự đồng ý của hầu hết các bạn, các thành phần lưu vong tại Saigon trước đây cũng như hiện tại muốn tổ chức một buổi gặp mặt các bạn để ôn lại 12 năm - 1 chặng đường lịch sử với bao gian nan, vất vả, buồn vui lẫn lộn. Mới ngày nào với những khuôn mặt búng ra sữa thì nay đã già nua.........tàn tạ:)) Ke ke:))
Mỗi người hiện nay đã có 1 "mảnh đời" riêng, đã/ đang làm việc ở khắp nơi trong thành phố, đã trở lại làm việc ở BMT và có người đi về Lâm Đồng, Quy Nhơn, Phan Thiết,....có bạn còn độc thân, kẻ đã xây dựng tổ ấm nhưng nhìn chung thì ai ai cũng dễ thương và rất đáng mến. Mỗi sáng, từng người đều len lỏi, chen lấn trên các con đường, các ngã ba/ ngã tư đèn xanh-đèn đỏ chật hẹp của thành phố để đến công sở / hội sở hay nơi làm việc đúng giờ. Đôi khi sự chen lấn đó như chính cuộc sống của mỗi chúng ta hôm nay.:))
Cuộc gặp gỡ vui chơi này hy vọng phần nào các bạn sẽ quên đi bớt những nhọc nhằn, những mưu toan thường nhật của cuộc sống. Hầu như các bạn không cần có một thần tượng của mình là các ca sỹ, nhạc sỹ / nghệ sỹ nào đó, các bạn cũng không hẳn là một fan của một câu lạc bộ bóng đá với nhiều lời về cái đầu gối, cái gót chân của từng cầu thủ, các bạn cũng chả rỗi hơi để tham gia hay về nhà bật tivi lên coi các chương trình gameshow đang phát đầy rẫy khắp nơi suốt ngày, và cũng chẳng có thì giờ bông đùa lang thang nhàn rỗi vô vị.
Vậy thì các bạn hãy bỏ một bữa kiếm tiền, một cuộc họp làm ăn, một buổi riêng tư vợ chồng hay gia đình của bạn, một buổi đi shoping, đi massage hay spa,.... để đến tham gia vui chơi ít ỏi ngắn ngủi chớp nhoáng cùng chúng mình. Để khỏi hối tiếc/ hối hận, các bạn có thể tự nghĩ ra những điều mà mình cảm thấy vui trong buổi gặp gỡ này, ai trong chúng ta cũng đều là "thành viên của ban tổ chức", cứ tự nhiên như chúng ta là những người bạn đồng trang lứa! Ke ke ke:)).
Vâng, xin lỗi các bạn đã đọc từ đầu tới đây!
Thân mời các bạn đến tham dự buổi gặp mặt theo chương trình chi tiết như sau:
Thành phần tham gia:
- Tất cả các bạn đã từng sống, học tập tại BMT khóa 1994 và đã có khoảng thời gian học tập/ làm việc tại SG.
- Vợ, chồng, con cái của các cá nhân trên có liên quan.
- Đóng góp theo đầu người. Những ai có hoàn cảnh khó khăn sẽ được miễn hoặc giảm (phải có đơn)
Thời gian:
- Bắt đầu lúc 14h30 (ai đến sớm hơn cứ việc enjoy trước). Chiều thứ Bảy ngày 11/11/2006
Địa điểm:
- Khu Du lịch Văn Thánh (48/10 Điện Biên Phủ, P22, Q. Bình Thạnh, TP. HCM)
Chương trình:
- 14h30 - 17h : , Tennis, Bơi lội, Bida, Bi lắc, dạo chơi, chụp hình,…
- 17h – khi nào tàn thì thôi: Hỏi han nhau, uống bia (hoặc nước suối/ nước ngọt), ăn uống,...
------------------------------------

Sẵn dịp tạo luôn một cái mailing list trên Google để tiện liên lạc về sau:
http://groups.google.com/group/bmt94

Updated: video quay trên máy của mình đã được upload lên YouTube: http://youtube.com/my_playlists?p=1FE948DCFEF7B3CF


OpenNMS: "báo cháy" cho hệ thống mạng

OpenNMS là một công cụ quản lý hệ thống mạng nguồn mở với định hướng sử dụng ở mức độ enterprise. OpenNMS cung cấp khả năng dò tìm các dịch vụ, thu thập thông tin để báo cáo, phát sinh cảnh báo từ các cảnh báo thu thập thập được, nâng cấp mức độ của cảnh báo (escalation) . Có không ít phần mềm nguồn mở nổi tiếng trong lĩnh vực giám sát hoạt động mạng và dịch vụ (network/service monitoring) như Nagios, Zenoss, Zabbix, mỗi phần mềm đều có những ưu điểm nổi bật riêng. Các phần mềm giám sát thường dựa trên cơ chế agent/server hoặc passive polling. Với cơ chế đầu khả năng giám sát toàn diện hơn nhờ có agent, có thể giám sát được tài nguyên trên từng máy. Với cơ chế sau, việc giám sát được thực hiện thông qua dữ liệu thu thập được với tư cách một client bình thường (tài nguyên có thể được giám sát qua SNMP nhưng không đầy đủ), cách này dễ dàng hơn do không phải cài đặt agent trên các máy muốn giám sát. OpenNMS thuộc loại sau.

OpenNMS có thể được sử dụng như một thiết bị "báo cháy" cho hệ thống mạng. Mặc dù được viết bằng Java, việc cài đặt và cấu hình OpenNMS khá đơn giản và dễ dàng (dễ hơn nhiều so với Nagios). Sau khi cài đặt, OpenNMS có thể tự động dò trên các subnet định trước để xác định tất cả các máy với tất cả các dịch vụ đang mở port, người quản trị chỉ cần chọn máy/dịch vụ để giám sát từ danh sách này. OpenNMS cung cấp sẵn các định nghĩa cho sự kiện như "node down/node up" khi kiểm tra bằng ping, "lost service/gain service" khi kiểm tra bằng cách mở kết nối đến cổng của dịch vụ. Các sự kiện này có thể được dùng để phát sinh cảnh báo (email/SMS/pager) đến những người quản trị tương ứng. Tính năng nâng cấp mức độ của sự kiện có thể dùng để cảnh báo đến cấp quản lý cao hơn nếu máy/dịch vụ bị ngừng quá lâu. Nhược điểm của OpenNMS khi dùng ping để kiểm tra tình trạng chạy/ngừng của máy là dễ bị sai nếu tải mạng cao, hơn nữa nếu một gateway/router bị ngừng thì tất cả các máy đứng sau gateway/router ấy đều bị báo ngừng (sẽ được khắc phục trong phiên bản kế).

Với một hệ thống "báo cháy" hiệu quả, hệ thống mạng đã được chuyển sang giám sát chủ động, quản trị mạng có thể được thông báo ngay bằng SMS khi có sự cố thay vì chỉ biết khi người dùng báo. Tất nhiên, hệ thống đó phải được tối ưu để loại bỏ các báo động giả, nếu không máy điện thoại của bạn có nguy cơ "cháy" vì tin nhắn :).