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

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