Never ask how to use, just wonder how to make...

Dec 15, 2009

Tìm hiểu những cải tiến của KDE SC 4.4b

Beta 1 là bản thử nghiệm mới nhất của KDE SC 4.4. Tin rằng nó sẽ có nhiều cải tiến, tôi đã cài thử lên OpenSUSE 11.2 và làm việc trên đó liên tục trong vài ngày gần đây. Và giờ đây tôi xin được tổng hợp một số tính năng mới của bản KDE này (Video demo có ở cuối bài viết này).



Bản 4.4 beta là bản đầu tiên sử dụng tên mới KDE SC (KDE Software Compilation) [*], thay cho tên cũ là KDE desktop environment. Ở phiên bản này, nhóm phát triển đã xây dựng những tính năng mới rất thú vị.

Nếu bạn rất thích cách bố trí tab trên title bar của Google Chrome, hãy nghía qua bức ảnh sau của Mozilla FireFox trên KDE SC 4.4, và chú ý vào thanh tiêu đề của cửa sổ:




Bạn nghĩ rằng Mozilla đã cải tiến giao diện cho FF? Không. Đây là tính năng "Tabbed windows" của KWin. Tính năng này cho phép người dùng nhóm các cửa sổ khác nhau vào một group hiển thị dạng tab. Điều này thực sự tiện lợi khi người dùng phải làm việc với rất nhiều cửa sổ đồng thời.




Cũng như KWin, Plasma cũng đã có rất nhiều thay đổi. Folder Viewer đã được cải tiến đến mức tiện lợi nhất, giúp chúng ta có thể view một file ở bất kỳ thư mục nào mà không tốn đến một lần click chuột:




Hộp thoại Add Widgets đã được thay đổi, tích hợp xuống đáy màn hình, gọn gàng và tiện dụng:




Trong khi đó, hộp thoại Run lại được chuyển lên trên, tích hợp tính năng search desktop được cung cấp bởi dự án Nepomuk:




Từ phiên bản KDE 4.0, nhóm phát triển đã muốn thay đổi khái niệm Desktop truyền thống, bản chất là một thư mục bình thường. Để làm điều đó, họ đã đưa ra khái niệm Activity, kèm theo đó là các Widgets. KDE SC 4.4 đã cụ thể hóa khái niệm này. Một desktop có thể được cài đặt trở thành một trong 3 loại Activity:
- Desktop Activity: Là Desktop trong các version trước của KDE4: Một không gian và chúng ta thêm thoải mái các Widgets để có các chức năng mong muốn.
- Search and Launch Activity: Activity này cho phép chúng ta search và khởi động các chương trình trên máy cá nhân một cách nhanh nhất.
- News Activity: Activity này được tối ưu cho việc đọc tin (RSS, microblog,...) bằng việc chia các Widgets tin tức vào hai cột. Tuy nhiên chức năng này chưa được hoàn thiện (còn khá nhiều bug).

Desktop Activity:




Search and Launch Activity:



Ngoài ra, các ứng dụng khác trong KDE SC 4.4 như Dolphin, Konsole, Knotifier, Klipper cũng có nhiều thay đổi tích cực. Để có những trải nghiệm cụ thể, bạn hãy cài thử lên VirtualBox ^^.

Have fun ^^.

[*] Nhãn hiệu KDE đã được xác định lại từ "K Desktop Environment" thành "KDE Software Compilation", thể hiện rằng KDE hiện nay không còn là một phần mềm như trước, mà đã trở thành một tập hợp các phần mềm xây dựng trên một nền tảng chung (KDE Platform).

Update: Video giới thiệu tính năng của KDE SC 4.4

Part I:




Part II:

Jun 23, 2009

Làm chủ Linux Bash shell: Chuyển hướng xuất/nhập trong Linux

Tiếp tục serie bài Làm chủ Linux Bash shell với một bài viết của anh Nguyễn Việt Cường, thành viên nhóm OSG ColTech. Bài viết đã được đăng ở diễn đàn Fotechchủ đề này.

Hôm nay nhân chuyện có người hỏi về làm thế nào để chạy một lệnh một cách "âm thầm" tức là không in cái gì ra màn hình cả, mình viết một cái tut nhỏ về chuyện này. Ví dụ đưa ra ở đây là lệnh curl, chi tiết về cú pháp lệnh thì sử dụng "man curl" trên Linux hoặc trên Google.

Trước hết, ta sẽ đi thẳng vào vấn đề rồi sau đó mới giải thích. Để một lệnh chạy trong chế độ "âm thầm" như vậy thì ta thêm đoạn sau vào đuôi lệnh:
> /dev/null 2>&1
Mà cụ thể nếu ta muốn làm công việc đó với lệnh curl thì như sau:
$ curl http://osg.vnu.edu.vn/ > /dev/null 2>&1
Vì sao lại làm thế? Dấu ">" có ý nghĩa gì? "/dev/null" là cái gì mà ghê gớm thế? "2>&1" là cái gì mà trông kì lạ thế? Đó cũng là những thắc mắc của mình khi bước vào thế giới Linux/Unix.

1. Giới thiệu

Trên hầu hết các hệ điều hành nói chung và Linux/Unix nói riêng thì có 3 dòng xuất nhập chuẩn (I/O) là STDIN, STDOUT và STDERR mà chức năng tương ứng là dòng nhập chuẩn, dòng xuất chuẩn và dòng xuất lỗi chuẩn. Chúng được gọi là các open file và hệ thống gán cho mỗi file này một con số gọi là file descriptor. Ba con số tương ứng với 3 dòng xuất nhập chuẩn ở trên là 0, 1 và 2. Cụ thể:
standard input -> stdin -> 0<> stdout -> 1>
standard error -> stderr -> 2>
Trong C++ thì 3 dòng xuất nhập chuẩn này tương ứng với 3 đối tượng cin, cout và cerr.

Chú ý: Trong bài tut này thì mình sử dụng Bourne shell trong đó dấu $ thể hiện user bình thường và # thể hiện user root. Tuy nhiên hầu hết nội dung trong bài này có thể áp dụng với một số loại shell khác như sh, csh, tcsh... Với C chell (csh, tcsh) thì không sử dụng được các con số (file descriptor).

2. Xuất/Nhập

Trong chế độ command line của hầu hết các hệ điều hành thì "<" dùng cho chuyển hướng nhập và ">" dùng cho chuyển hướng xuất. Vì sao phải chuyển hướng? Vì có nhiều lúc ta muốn kết quả xuất ra màn hình được lưu lại vào một file và dữ liệu nhập vào thay vì từ bàn phím thì lại từ một file.

2.1. STDIN

STDIN chỉ các dòng nhập chuẩn nói chung và nó thường là từ bàn phím. Khi chúng ta gõ bàn phím tức là chúng ta đang nhập vào STDIN. Để dữ liệu đầu vào là một file thì ta dùng dấu "<". Ví dụ, nếu ta dùng lệnh cat mà không có tham số thì khi ta gõ gì nó sẽ hiển thị ra cái đó, hay nói đúng hơn sẽ hiển thị lại những gì ta nhập vào từ input chuẩn. Vậy thì giả dụ ta cần hiển thị file /etc/passwd thì ngoài cách truyền thống là
$ cat /etc/passwd
thì ta có thể sử dụng:
$ cat < /etc/passwd
hoặc
$ cat 0< /etc/passwd
Tại sao lại có thể bỏ số 0 mà chức năng vẫn tương tự? Đó là vì mỗi khi khởi tạo một process thì hệ thống đã gắn một dòng nhập chuẩn cho process đó mà ở đây là STDIN hay 0.

2.2. STDOUT

STDOUT là các dòng xuất chuẩn nói chung và nó thường là xuất ra màn hình, ra cửa sổ console hoặc terminal. Để dữ liệu đầu ra được ghi vào một file thì ta sử dụng dấu ">". Ví dụ ta muốn danh sách các file trong một thư mục được ghi vào file dir.txt thì ta sử dụng lệnh sau:
$ ls -al > dir.txt
hoặc
$ ls -al 1> dir.txt
Lí do vì sao có thể bỏ số 1 đi tương tự như với STDIN, tức là khi khởi tạo một process thì hệ thống đã gắn một dòng xuất chuẩn cho process đó mà ở đây là STDOUT hay 1.

Đến đây ta có thể kết hợp sử dụng song song STDIN và STDOUT để làm thao tác copy file. Ví dụ ta muốn backup file /etc/passwd thì ta có thể làm như sau:
$ cat < /etc/passwd > ~/passwd.bak
Lệnh này tương đương với lệnh:
$ cp /etc/passwd ~/passwd.bak
Có một ứng dụng cực kì có ích của việc kết hợp này là chuyển đổi file text giữa Windows và Unix. Như các bạn đều biết thì trong file text của Windows, việc xuống dòng được thể hiện bằng cặp kí tự \r\n còn trong Linux/Unix thì chỉ là \n. Ai phải trên cả hai môi trường đều thấy sự bất tiện của việc chuyển đổi đó. Giải pháp đưa ra ở đây là sử dụng lệnh tr, cụ thể như sau:
tr -d '\r' <> unix.cpp
Lệnh này sẽ nhận dòng nhập chuẩn sau đó xoá các kí tự \r rồi ghi ra dòng xuất chuẩn. Dòng nhập và dòng xuất ở đây được định hướng lại để đến từ một file và ghi ra một file.

Tuy nhiên nếu dùng ">" thì nội dung của file sẽ bị xoá trước khi ghi nội dung mới. Nếu ta muốn nội dung mới sẽ được ghi nối tiếp vào file thì ta sử dụng 2 dấu lớn hơn, tức là ">>". Ví dụ nếu bạn muốn nối nội dung của thư mục /home vào cuối file passwd.bak ở trên thì bạn làm như sau:
$ ls /home >> ~/passwd.bak
Bây giờ nếu ta muốn lấy mã HTML của trang chủ của OSG và ghi vào file osg.html thì ta sử dụng lệnh sau:
$ curl http://osg.vnu.edu.vn/ > osg.html
Thực hiện lệnh trên các bạn có thấy gì lạ không? Mặc dù mã HTML thay vì xuất ra màn hình mà được đưa vào file osg.html nhưng vẫn có các thông tin thể hiện trạng thái download hiển thị trên màn hình. Làm thế nào mà lại được như thế? Làm thế nào để lệnh curl câm lặng hoàn toàn? Hồi sau sẽ rõ.

2.3. STDERR

STDERR là dòng xuất lỗi chuẩn nói chung và nó cũng thường xuất trực tiếp ra màn hình, console hay terminal. Cú pháp tương tự như STDOUT, tức là sử dụng ">" để xuất ra file và ">>" để nối vào một file đã có (chưa có thì hệ thống sẽ tự tạo ra). Tuy nhiên điểm khác biệt là bạn phải chỉ rõ số 2, tức là "2>" hoặc "2>>". Lí do là vì chỉ có 1 dòng xuất chuẩn và 1 dòng nhập chuẩn cho mỗi process mà thông thường hệ thống chỉ định là STDOUT và STDIN.

Vậy trong trường hợp của lệnh curl trong phần 2.2 ở trên, nếu ta muốn ghi cả 2 loại output đó ra file thì ta làm như sau:
$ curl http://osg.vnu.edu.vn/ > osg.html 2> osg.log
Thế nào? Không có cái gì xuất ra màn hình hết đúng không? Vì nội dung trang web đã được lưu vào file osg.html còn các dòng lưu trạng thái download đã được ghi vào file osg.log.

Nhưng thế thì tốn dung lượng đĩa và có nguy cơ gây hỏng đĩa vì phải ghi file mà. Con người quả thật quá tham lam . Vậy thì phải sáng tạo ra cái gì đó như kiểu cái thùng không đáy hay gọi mĩ miều hơn thì nó là "lỗ đen" hay "black hole", tức là một nơi mà cho cái gì vào cũng mất hút luôn. Linux/Unix có cái đó cho bạn, đó là /dev/null.

2.4. /dev/null
Theo định nghĩa trên Wikipedia của /dev/null:
In Unix-like operating systems, /dev/null or the null device is a special file that discards all data written to it (but reports that the write operation succeeded), and provides no data to any process that reads from it (it returns EOF). In Unix programmer jargon, it may also be called the bit bucket or black hole.
Tạm dịch là:
Trong các hệ điều hành kiểu Unix, /dev/null hay thiết bị null là một tệp tin đặc biệt, nó bỏ qua mọi dữ liệu ghi lên nó (nhưng có báo cáo về việc ghi dữ liệu thành công) và không cung cấp bất kì dữ liệu gì khi đọc từ nó (trả về EOF). Trong biệt ngữ của các lập trình viên Unix, nó đuợc gọi là "bit bucket" hoặc "black hole".
Vậy thì đó chính là cái ta cần rồi. Như vậy câu lệnh curl ở trên có thể cho nó thực hiện câm lặng bằng cách:
$ curl http://osg.vnu.edu.vn/ > /dev/null 2> /dev/null
Không có cái gì xuất ra màn hình cả, cũng không có cái gì được ghi lại cả. Nhưng... lại nhưng, con người vẫn tham lắm, làm thế nào để cái lệnh trên ngắn gọn hơn, trông technical hơn, nói chung là để ai không biết thì sẽ không hiểu gì (đôi khi đó là cái thú của dân kĩ thuật). Ta sẽ dùng "2>&1" ở đây, tức là:
$ curl http://osg.vnu.edu.vn/ > /dev/null 2>&1
Câu lệnh trên tức là dòng xuất chuẩn (1) sẽ bị đưa vào /dev/null và dòng lỗi chuẩn (2) sẽ được đưa vào dòng xuất chuẩn (1) mà ở đây là /dev/null.

Đặc biệt lưu ý là với cú pháp sử dụng dấu & thì dấu & và dấu > phải đi liền nhau, không có khoảng cách.

Ngoài các file descriptor 0, 1, 2 ở trên thì còn có từ 3 -> 9 nữa. Tuy nhiên bài viết này chỉ dành cho mức độ newbie nên không để cập sâu, chi tiết các bạn có thể tự tìm hiểu thêm trên Internet hoặc trong các sách về lập trình shell.

3. Pipe

Như vậy chúng ta đã biết cách để chuyển hướng dòng xuất/nhập của một lệnh hay một process. Bằng cách này ta có thể chuyển dữ liệu xuất của một lệnh thành dữ liệu nhập của một lệnh khác thông qua một file trung gian. Tuy nhiên ta không muốn có file trung gian đó, một phần vì việc ghi lên đĩa cứng, phần khác là do... tham. Đó chính là vấn đề mà pipe giải quyết. Trong Linux, ta sử dụng dấu "|" để làm việc này.

Ví dụ khi ta muốn xem lại nội dung thư mục /etc nhưng kết quả của nó lại dài quá mà ta muốn xem lại thì ta làm như sau
$ ls -al /etc | more
hoặc
$ ls -al /etc | less
(thoát bằng phím q).

hoặc ta muốn đếm số user trong hệ thống có sử dụng mặc định bash shell thì ta làm như sau:
$ cat /etc/passwd | grep "/bin/bash" | wc -l
Lệnh này có nghĩa là đưa nội dung file /etc/passwd ra dòng xuất chuẩn; dòng xuất chuẩn này thành dòng nhập chuẩn của lệnh grep và lệnh này chỉ lọc ra các dòng có chưa xâu "/bin/bash" để đưa ra dòng xuất chuẩn; dòng xuất chuẩn này lại thành dòng nhập chuẩn của lệnh wc -l là lệnh đếm số dòng của dòng nhập chuẩn và đưa ra số dòng ra dòng xuất chuẩn; cuối cùng dòng xuất chuẩn này sẽ được đưa ra trực tiếp màn hình vì nó không thành dòng nhập chuẩn của lệnh nào nữa.

4. Tài liệu tham khảo
[1] Google
[2] Wikipedia

May 13, 2009

Linux.com, luồng gió mới cho cộng đồng

Khi Linux Foundation nhận lại tên miền Linux.com từ SourceForge đầu năm nay, họ đã có dự định xây dựng lại website, sao cho nó không chỉ là nơi đăng những tin tức liên quan đến Linux. Và sáng nay, khi bạn vào địa chỉ http://linux.com, bạn sẽ nhận thấy một Linux.com hoàn toàn mới, và như một vài trang tin Linux nhận xét: "nó đủ khiến cho những người say mê Linux có thể tự hào". Cộng đồng đã lên tiếng cảm ơn chính mình, bởi chính họ là những người đưa ra phần lớn ý kiến đóng góp cho website.

Trên tinh thần nguồn mở thực sự, Linux Foundation đã thiết kế một website mang đậm chất tương tác, có thể tập hợp được tri thức của toàn cộng đồng. Dựa trên ý tưởng từ những người dùng, những nhà phát triển và những người đam mê Linux, website mới có khả năng thu thập thông tin và khiến thức từ nhiều nguồn và theo cách mà có thể tiếp cận được với cả người dùng mới và các bậc lão làng Linux.

Một trong những tính năng thú vị và hấp dẫn của website Linux.com mới là "Linux Guru". Người dùng đã đăng ký có thể kiếm điểm và nâng cấp trạng thái guru của mình bằng cách tham gia các hoạt động trên website. Top 50 người đóng góp nhiều nhất sẽ được ghi tên vào bản báo cáo hàng năm của tổ chức. Top 5 guru sẽ đại diện cho cộng đồng, được mời tới dự lễ họp mặt hàng năm của Linux Foundation (Linux Foundation Collaboration Summit). Mỗi năm sẽ có một thành viên trở thành "Ultimate Linux Guru" và sẽ được đích thân Linus Tovard tặng một máy notebook, để ghi nhận sự đóng góp cho cộng đồng.

Website có năm phần chính: News - tin tức Linux; Community - là nơi những thành viên đã đăng ký có thể kết nối với những người khác; Distribution Central - các distro tương tác với người dùng ở đây; Learn - là nơi các trang Man, HowTos và các tài liệu Linux khác được lưu trữ, đồng thời cũng là diễn đàn để cộng đồng hỏi và trả lời; Directory - lưu trữ các phần mềm, ebook, dịch vụ,...

Linux.com với giao diện và chức năng mới đã mang lại một luồng gió mới cho cộng đồng Linux. Chúng ta cùng chúc cho website sẽ đạt được những gì mà cộng đồng kỳ vọng, dựa trên chính sức mạnh của cộng đồng.

Update: Cùng chúng tôi tham gia nhóm Vietnamese Linux enthusiastsLinux.com.

Apr 21, 2009

Oracle mua Sun, rồi sao?


Oracle đã vượt qua IBM để mua được Sun với giao dịch có giá trị xấp xỉ 7,4 tỷ USD. Bỏ qua những gì liên quan đến kinh tế và mớ cổ phiếu lộn xộn, bỏ qua những bình luận về khả năng của IBM và Oracle, tôi chỉ muốn biết quan điểm của các nhà lãnh đạo của cả Sun và Oracle đối với phần mềm mã nguồn mở như thế nào? Điều gĩ sẽ xảy ra với MySQL? Solaris sẽ như thế nào? Hướng phát triển của Java? Những câu hỏi và đến lúc này vẫn chưa có lời đáp cụ thể.

Theo như lời công bố từ Sun, Java sẽ là nền tảng cho Oracle Fusion Middleware, trong khi hệ điều hành Solaris sẽ là nền tảng chính cho hệ quản trị cơ sở dữ liệu Oracle.

Đồng thời, Oracle cũng đã nhận được một số công nghệ ảo hóa từ việc mua Sun. Nhưng nếu bạn là người có quan tâm tới mã nguồn mở, có lẽ bạn sẽ tự hỏi về số phận của OpenOffice và MySQL. Trong lời công bố trên, họ không nhắc đến hai phần mềm này. Có lẽ chúng ta sẽ phải chờ thêm.

(Bạn nên ghé thăm trang OSS của Suncủa Oracle nếu muốn biết thêm về các phần mềm nguồn mở liên quan đến hai tên tuổi này).

Update:
- Đọc thêm bài "Oracle mua Sun có ý nghĩa gì với Linux" trên Nghialt's blog.
- Đọc thêm chủ đề "Oracle mua Sun, rồi sao" trên FOTECH.ORG.

Apr 14, 2009

What does it mean to be Free?




What does it mean to be Free?

(Transcript)
Free is being able to choose. Choose your own space to be in. To form your surroundings in a way that will make you take the best out of you. Free is to say NO. It is to be able to choose your limits, to stretch them to a place only you can create, and change them when you feel they no longer fit you. Free is to say what ever you want, to whomever you want, and however you want. Free is to know you have a different option. Do you know you have a different option? Linux! Get your freedom.
Đây là đoạn clip giành chiến thắng trong cuộc thi video clip mang chủ đề We're Linux do Linux Foundation tổ chức.
Để xem tất cả các clip thì click vào đây.

Mar 29, 2009

Cây bút ma thuật

Magic pen - một game giải trí rất hay, phù hợp mọi đối tượng, nhất là bạn yêu vật lý :D



Mar 22, 2009

Làm chủ Linux Bash shell: Tùy biến command promt với biến $PS1


Tiếp tục seri bài làm chủ Linux Bash shell nào. Bài viết này được tôi dựa vào một tutorial của tôi trên FOTECH và mở rộng thêm, nếu bạn nào thấy hơi quen xin đừng thắc mắc >:).

Bash shell có khả năng hiển thị trước mỗi dòng lệnh một đoạn thông tin ngắn, gọi là dấu nhắc lệnh, hay command promt. Mặc định có dạng:
[user]@[host]:[đường dẫn]$
VD:
thangphamduy@mr-PC:~$
Bạn có thể tùy biến bằng cách sửa lại giá trị của biến môi trường PS1 như sau:
PS1='[Noi dung muon hien thi]'
VD: nếu dòng trên có nội dung là:
PS1='Welcome to my Linux '
thì trước mỗi dòng lệnh sẽ hiển thị đúng xâu trên.

Bạn có thể tùy biến xâu [Noi dung muon hien thi] bằng cách chèn vào một ký tự sau dấu thoát (backslash \) như sau:
\! Hiển thị số thứ tự của lệnh trong history
\# Hiển thị số thứ tự lệnh của lệnh hiện tại
\$ Hiển thị dấu $ nếu là user bình thường và dấu # nếu là user root
\\ Hiển thị dấu backslash (\)
\d Hiển thị ngày hiện tại
\h Hiển thị host name
\n In dấu xuống dòng
\s Hiển thị tên shell
\t Hiển thị giờ hiện tại
\u Hiển thị username
\W Hiển thị tên thư mục hiện hành
\w Hiển thị đường dẫn đầy đủ của thư mục hiện hành
Ví dụ:
PS1='\u\$'
sẽ cho kết quả: "root#"
PS1='\u@\t \w\$'
sẽ cho kết quả: "root@20:49:48 /etc/httpd#
PS1='\t \u@\h \s \$'
sẽ cho kết quả: "20:49:48 root@proLappy -bash #"
[*]Hiển thị màu:
Bạn thử thiết lập biến PS1 như sau và xem kết quả như thế nào ^^
PS1='\[\033[01;32m\]\t \u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Bây giờ dấu nhắc lệnh đã có màu xanh lá cây :D. Quy tắc ở đây là thư thế nào? Nếu bạn muốn đặt một màu cho một phần tử nào đó của promt, bạn hãy đặt mã màu trước phần tử đó, và mã xóa màu sau phần tử đó.

Mã màu có dạng:
\[\033\[01;32m\]\]
Hãy thay thế 32 với các số trong khoảng 30 - 37 để nhận được các màu khác nhau, thay thế 01 với các số trong khoảng 00 - 07 để nhận được các cách tô màu khác nhau (làm nhạt màu, màu gạch chân, màu highlight,...)

Mã đóng màu:
\[\033[00m\]
[*] Lưu ý:
- Nếu bạn không sử dụng mã đóng màu thì màu đó sẽ còn hiệu lực cho tới khi bạn dùng một mã màu khác thay thế.
- Việc thiết lập mã màu chỉ có ý nghĩa với những terminal có hỗ trợ màu 16bit trở lên như xterm, rxvt, hay gnome-terminal, konsole,...

Okie. Như thế là bạn đã có thể thêm các thông tin hữu ích và đẹp mắt vào trước mỗi dòng lệnh trong terminal. Nhưng nếu bạn logout, giá trị vừa thiết lập cho biến $PS1 sẽ bị reset về giá trị default! Để không phải thiết lập lại giá trị của biến này, hãy thêm vào cuối file ~/.bashrc dòng lệnh sau để export giá trị mới cho biến môi trường PS1:
export PS1='\n\[\033[02;31m\]. ___ ___ ___\[\033[00m\] |--- \[\033[02;33m\]\t \d\n\[\033[02;31m\] /__// _// ./\[\033[00m\] --- \[\033[01;32m\]\w\n\[\033[02;31m\]/ . / \ /__/\[\033[00m\] \[\033[02;35m\]\u@\h \[\033[02;37m\]\$ \[\033[02;38m\]'
Chúc các bạn ngày chủ nhật vui vẻ.

Update: Để xem danh sách các mã màu và một số ví dụ khác, xin đọc entry Command promt và biến PS1 trên blog của tuyetkiem.

Mar 16, 2009

Giải pháp hoàn chỉnh cho việc convert file PDF thành file DOC

PDF và DOC, hai loại file văn bản phổ biến nhất hiện nay. Khi chúng ta soạn thảo, chúng ta tạo một file doc và sử dụng MS Word, OpenOffice Write hoặc một chương trình soạn thảo văn bản khác để chỉnh sửa file doc đó. File doc quả thật rất tiện dụng trong trường hợp này.

Tuy vậy, để "mang vác" file văn bản từ nơi này sang nơi khác mà vẫn giữ nguyên định dạng, đọc file văn bản tiện lợi, tốn ít tài nguyên hệ thống thì file doc không còn là một lựa chọn hợp lý. Nào, đoán xem... Okay, bạn đã đoán đúng: chúng ta nên sử dụng định dạng pdf. Hầu hết các tài liệu dạng read-only (ebook, scanned book,...) đều được xuất bản dưới định dạng pdf.

Và một quá trình rất hợp lý bắt đầu từ người viết đến người đọc diễn ra:
Soạn thảo file doc -> convert DOC to PDF -> đọc file pdf
Tuy nhiên đôi khi quá trình này không nên kết thúc ở đây: người đọc cũng muốn chỉnh sửa file pdf đã xuất bản. Có hai lựa chọn: sử dụng một chương trình chỉnh sửa file pdf, hoặc convert ngược từ pdf về doc. Thường thì chương trình chỉnh sửa file pdf sẽ không có đầy đủ tính năng như một chương trình soạn thảo văn bản chuyên dụng. Do đó chúng ta thường chọn cách thứ hai.

Tuy nhiên việc chuyển một file pdf về file doc một cách hoàn chỉnh cũng là một vấn đề nan giải. Đã một thời gian dài, chúng ta luôn cố tìm một ứng dụng convert như thế: Convert giữ nguyên font chữ, bullet, căn lề, bảng,... và... tiếng Việt.

Trong bài viết này tôi xin giới thiệu một công cụ thỏa mãn khá đầy đủ các yêu cầu trên: http://www.pdftoword.com/. Đây là một ứng dụng trên nền Web do Nitro software cung cấp. Việc sử dụng quá đơn giản, có lẽ không cần phải trình bày nhiều. Xin đưa kết quả lên đây là đủ:

Nguồn:



Kết quả:



Và đây là toàn bộ file kết quả: http://duythang.net.googlepages.com/SudungGrub.doc .

Mar 1, 2009

The day the routers die


Bài hát khá thú vị của Gary Fieldman, nói về kết cục của IPv4 và sự cần thiết của IPv6.

Lyrics:
a long long time ago
i can still remember
when my laptop could connect elsewhere

and i tell you all there was a day
the network card i threw away
had a purpose - and it worked for you and me…

but 18 years completely wasted
with each address we’ve aggregated
the tables overflowing
the traffic just stopped flowing…

and now we’re bearing all the scars
and all my traceroutes showing stars…
the packets would travel faster in cars…
the day… the routers died…

Chorus (ALL!!!!!)

so bye bye, folks at RIPE 55
be persuaded to upgrade it or your network will die
IPv6 just makes me let out a sigh
but I s’pose we’d better give it a try
I suppose we’d better give it a try

now did you write an RFC
that dictated how we all should be
did we listen like we should that day

now you back at RIPE fifty-four
where we heard the same things months before
and the people knew they’d have to change their ways…

and we - knew that all the ISPs
could be - future proof for centuries

but that was then not now
spent too much time playing WoW

ooh there was time we sat on IRC
making jokes on how this day would be
now there’s no more use for TCP
the day the routers died…

Chorus (chime in now)

so bye bye, folks at RIPE 55
be persuaded to upgrade it or your network will die
IPv6 just makes me let out a sigh
but I s’pose we’d better give it a try
I suppose we’d better give it a try

I remember those old days I mourn
sitting in my room, downloading porn
yeah that’s how it used to be…

when the packets flowed from A to B
via routers that could talk IP
There was data… that could be exchanged between you and me…

oh but - I could see you all ignore
the fact - we’d fill up IPv4

but we all lost the nerve
and we got what we deserved!

and while… we threw our network kit away
and wished we’d heard the things they say
put all our lives in disarray

the day… the routers died…

Chorus (those silent will be shot)

so bye bye, folks at RIPE 55
be persuaded to upgrade it or your network will die
IPv6 just makes me let out a sigh
but I s’pose we’d better give it a try
I suppose we’d better give it a try

saw a man with whom I used to peer
asked him to rescue my career
he just sighed and turned away…

I went down to the net cafe
that I used to visit everyday
but the man there said I might as well just leave…

and now we’ve all lost our purpose..
my cisco shares completely worthless…

no future meetings for me
at the Hotel Krasnapolsky

and the men that make us push and push
like Geoff Huston and Randy Bush
should’ve listened to what they told us…
The day… the routers… died

Chorus (time to lose your voice)

bye bye, folks at RIPE 55
be persuaded to upgrade it or your network will die
IPv6 just makes me let out a sigh
but I spose we’d better give it a try
I suppose we’d better give it a try

Feb 11, 2009

[Đánh giá] KDE 4.2

KDE 4.2 vẫn kế thừa các ưu điểm của KDE 4.1 như sự tiện dụng, tính tuỳ biến cao. Những bổ sung mới của bản này chủ yếu tâp trụng vào sự tiện dụng của các ứng dụng cũ, đồng thời nâng cao tính ổn định của hệ thống, thể hiện sự tỷ mỷ của nhóm phát triển.

Một số screenshot:

Desktop (Cái widget nhỏ nhỏ trống trống ở phía dưới là Pastebin, một tính năng mới của KDE4.2):

Hình ảnh


Main menu (Lancelot):

Hình ảnh


Hộp thoại Run:

Hình ảnh


Các tính năng mới:
- Pastebin : Upload ảnh/file lên server bằng cách kéo file thả vào Pastebin widget trên destop, đường link được trả về và lưu trong clipboard (cực kỳ tiện lợi - 3 cái ảnh trên đều được upload theo kiểu này, từ khi shot đến khi upload xong chỉ mất 8s).
- Main menu Lancelot, tiện lợi hơn hẳn so với các kiểu Start menu của KDE 4.1 và 3.5 : Sắp xếp hợp lý, search thông minh, có thể kích hoạt các ứng dụng mà chỉ cần di chuột (ko cần click - mình đánh giá cao tính năng này).

Cải thiện:
- System tray: có thể ẩn các biểu tượng không mong muốn
- Task manager đã có thể hiển thị trên nhiều dòng cũng như nhóm các cửa sổ theo group.
- Điều khiển Widgets trên Destop vô cùng dề dàng
- Bộ ứng dụng Kontact, Kmail, KNotifier đã có thể sánh ngang được với MS Office Outlook.
- Widgets đã có thể được phát triển bằng JS và Ruby, đồng nghĩa với số Widget sẽ gia tăng nhanh chóng, và chúng ta có thể quên đi SuperKaramba (trình hỗ trợ Desktop Widget).
- Các hiệu ứng được kế thừa từ Compiz nhưng không chạy theo số lượng mà chú trọng vào chất lượng. Các hiệu ứng đã được chỉnh sửa lại cực kỳ tốt, nhìn rất mượt và không bị răng cưa.

Ngoài ra, còn rất nhiều các chỉnh sửa nhỏ khác như hộp thoại Run (Alt + F2), file preview và icon zoom trong Dolphin,... Tóm lại, cảm nhận của tớ về phiên bản này được túm gọn trong mấy chữ: hiệu ứng mượt mà, giao diện mát mắt và chức năng tiện dụng.

Feb 8, 2009

Tuyển tập Linux Ebooks

http://sites.google.com/site/thangola/

Tuyển tập một số ebook về Linux có giá trị, nội dung bao gồm những kiến thức cơ bản về Linux (FHS, Bash shell, Grub,...), hướng dẫn sử dụng một số phần mềm Linux thông dụng (Apache, Bind, DHCP, Vsftpd,...) và một số ebook dạng cheat-sheets.

Have fun ^^.