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

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 ^^.

Dec 28, 2008

Every OS suck

Bài hát cũng có thể xem là một biên niên sử máy tính và hệ điều hành từ những năm 1970 đến nay. Tác giả của bài hát này là nhóm Three Dead Trolls in a Baggie.

Chúc các bạn cuối tuần vui vẻ ^^.



The lyric:

You see, I come from a time in the nineteen-hundred-and-seventies when
computers were used for two things - to either go to the moon, or play
Pong… nothing in between. Y’see, you didn’t need a fancy operating
system to play Pong, and the men who went to the moon — God Bless ‘em —
did it with no mouse, and a plain text-only black-and-white screen,
and 32 kilobytes of RAM.

But then ’round ’bout the late 70’s, home computers started to do a
little more than play Pong… very little more. Like computers started
to play non-Pong-like games, and balance checkbooks, and why… you
could play Zaxxon on your Apple II, or… write a book! All with a
computer that had 32 kilobytes of RAM! It was good enough to go to
the moon, it was good enough for you.

It was a golden time. A time before Windows, a time before mouses, a
time before the internet and bloatware, and a time…
before every OS sucked.

*sigh*

[singing]

Well, way back in the olden times,
my computer worked for me.
I’d laugh and play, all night and day,
on Zork I, II and III.

The Amiga, VIC-20 and the Sinclair II,
The TRS 80 and the Apple II,
they did what they were supposed to do,
wasn’t much… but it was enough.

But then Xerox made a prototype,
Steve Jobs came on the scene,
read “Of Mice and Menus,” Windows, Icons
a trash, and a bitmap screen.

Well Stevie said to Xerox,
“Boys, turn your heads and cough.”
And when no-one was looking,
he ripped their interfaces off.

Stole every feature that he had seen,
put it in a cute box with a tiny little screen,
Mac OS 1 ran that machine,
only cost five thousand bucks.

But it was slow, it was buggy,
so they wrote it again,
And now they’re up to OS 10,
they’ll charge you for the Beta, then charge you again,
but the Mac OS still sucks.

Every OS wastes your time,
from the desktop to the lap,
Everything since Apple Dos,
Just a bunch of crap.

From Microsoft, to Macintosh,
to Lin– line– lin– lie… nux,
Every computer crashes,
’cause every OS sucks.

Well then Microsoft jumped in the game,
copied Apple’s interface, with an OS named,
“Windows 3.1″ - it was twice as lame,
but the stock price rose and rose.

Then Windows 95, then 98,
man solitaire never ran so great,
and every single version came out late,
but I guess that’s the way it goes.

But that bloatware’ll crash and delete your work,
NT, ME, man, none of ‘em work.
Bill Gates may be richer than Captain Kirk,
but the Windows OS blows!
And sucks!
At the same time!

I’d trade it in, yeah right… for what?
It’s top of the line from the Compuhut.
The fridge, stove and toaster, never crash on me,
I should be able to get online, without a PHD.

My phone doesn’t take a week to boot it,
my TV doesn’t crash when I mute it,
I miss ASCII text, and my floppy drive,
I wish VIC-20 was still alive…

But it ain’t the hardware, man.

It’s just that every OS sucks… and blows.

Now there’s lih-nux or lie-nux,
I don’t know how you say it,
or how you install it, or use it, or play it,
or where you download it, or what programs run,
but lih-nux, or lie-nux, don’t look like much fun.

However you say it, it’s getting great press,
though how it survives is anyone’s guess,
If you ask me, it’s a great big mess,
for elitist, nerdy shmucks.

“It’s free!” they say, if you can get it to run,
the Geeks say, “Hey, that’s half the fun!”
Yeah, but I got a girlfriend, and things to get done,
the Linux OS SUCKS.
(I’m sorry to say it, but it does.)

Every OS wastes your time,
from the desktop to the lap,
Everything since the abacus,
Just a bunch of crap.

From Microsoft, to Macintosh,
to lin– line– lin– lie… nux.
Every computer crashes,
’cause every OS sucks.

Every computer crashes… ’cause every OS sucks!

Dec 12, 2008

Làm chủ Linux Bash shell: Xử lý string trong Bash shell

Một trong những shell được sử dụng thường xuyên trong Linux là bash shell. Khi viết các shell script, công việc mà người sử dụng hay gặp phải nhất có lẽ là xử lý string (tìm file, xử lý tên file, xử lý log, xử lý chuỗi nhập vào,...). Sau đây tôi xin trình bày một số điểm mấu chốt thú vị trong xử lý string với bash shell.

Hai lệnh đầu tiên, đơn giản nhưng tương đối hữu ích, đó là dirnamebasename. Cho một biến có chứa 1 string dạng đường dẫn đến 1 thư mục D hoặc 1 file X, lệnh basename sẽ trả về đúng tên thư mục D hoặc tên file X, còn lệnh dirname trả về phàn đường dẫn đến thư mục mẹ của D hoặc X. Ví dụ:
$ basename /home/thangphamduy/workspace/foo.txt
foo.txt
$ dirname /home/thangphamduy/workspace/foo.txt
/home/thangphamduy/workspace
$ basename /home/thangphamduy/workspace
workspace
$ dirname /home/thangphamduy/workspace

/home/thangphamduy

$ ALPHA="/home/thangphamduy/temp/bar.txt"
$ BETA=`dirname $ALPHA`
$ echo $BETA
/home/thangphamduy/temp

Đó chỉ là xử lý xâu đơn giản, tiếp đây, chúng ta thử xử lý xâu một cách "pro" hơn với bash shell. Trong 1 biểu thức, ta thường bắt gặp một biến được đặt trong cặp dấu ngoặc nhọn kiểu như ${MYVAR}. Và bash cũng cho phép chúng ta xử lý biến đó ngay trong cặp ngoặc nhọn. Chúng ta có thể dễ dàng cắt bỏ hay lấy ra một phần của string chứa trong biến một cách rất dễ dàng. Để dễ hình dung, các bạn có thể xem ví dụ sau:

$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg

Trong lệnh thứ nhất, ở phía trong dấu ${}, đầu tiên chúng ta viết tên biến, sau đó là hai dấu #, rồi đến 1 chuỗi ký tự đại diện (*fo). Vậy lệnh này có nghĩa là gì và nó được bash shell thực hiện như thế nào? Lệnh này (echo ${MYVAR##*fo}) sẽ khiến cho bash thực hiện việc cắt bỏ chuối dài nhất, tính từ ký tự đầu tiên, khớp với chuỗi ký tự đại diện (còn gọi là wildcard), sau đó in phần còn lại ra stdout. Khi gặp lệnh này, bash shell sẽ thực hiện việc tìm kiếm tất cả các xâu con khớp với chuỗi ký tự đại diện *fo trong xâu được chứa bởi $MYVAR(tức là tìm tất cả các xâu kết thúc với 2 ký tự fo):
f
fo MATCHES *fo
foo
food
foodf
foodfo MATCHES *fo
foodfor
foodfort
foodforth
foodfortho
foodforthou
foodforthoug
foodforthought
foodforthought.j
foodforthought.jp
foodforthought.jpg

Sau khi kết thúc tìm kiếm (trong VD trên bash tìm được 2 kết quả), bash sẽ lấy xâu kết quả dài nhất (foodfo), rồi loại bỏ nó ra khỏi xâu gốc (phần còn lại: rthought.jpg), rồi in kết quả ra màn hình.

Trong câu lệnh thứ hai (echo ${MYVAR#*fo}), công việc cũng tương tự như trên, nhưng thay vì lấy kết quả dài nhất, bash shell lại lấy kết quả ngắn nhất (fo) rồi loại bỏ khỏi xâu gốc và in kết quả ra màn hình. Thực ra khi chỉ sử dụng 1 dấu # ở phần tùy biến, ngay khi tìm được kết quả đầu tiên, bash shell sẽ lập tức dừng việc tìm kiếm lại.

Để tìm kiếm từ cuối xâu thay vì tìm kiếm từ đầu xâu, chúng ta thay các tùy biến # và ## bằng các tùy biến % và %%, cách sử dụng hoàn toàn tương tự. Ví dụ:
$ MYVAR=thangphamduy/workspace/bar.foo.txt
$ echo ${MYVAR%.*}
thangphamduy/workspace/bar.foo
$ echo ${MYVAR%%.*}
thangphamduy/workspace/bar

Và một cách xử lý string nữa, ít được dùng tới hơn, nhưng nhiều lúc rất có ích, đó là cắt xâu theo vị trí:
$ MYVAR=http://thangphamduy.blogspot.com
$ echo ${MYVAR:0:13}
http://fotech
$ echo ${MYVAR:8:17}
fotech.org

Phần xử lý string xin được dừng lại tại đây, cảm ơn quý vị và các bạn đã quan tâm theo dõi >:).
(Tham khảo từ
Bash by example - IBM)

Dec 1, 2008

Vim mind share soaring: roundup of 10 vim articles, recent and older gems

(Copy from durdn.com)


Am I the only one to notice that there is a lot of vim love in the airwaves recently?

I saw the trend very clearly, spanning from reddit to news.yc and let me say that the material that came up recently is very good; those neat posts prompted me to improve my vimrc dramatically and I really like what I learned.

In this installment, instead than annotating my vimrc (another one? not that interesting, I’ll refrain) , I want to compile a roundup of the best vim articles I saw recently.

I’ll also add a few classics that changed me from a hater to a vim lover and will conclude with some minor tips out of my bag.

So here we go with the roundup.

Recent Vim Articles Roundup

Jamis Buck

Vim Follow Up

Coming Home To Vim

Jamis Buck switches back to vim from a period using TextMate and talks about his experience and his configuration. Many useful tips in there.

Stephen Bach

Configuring Vim Right

Sensible defaults for your vimrc, recommended.

Learnr dev blog

Configuring Vim Some More

Some additional configuration options that totally make sense and I incorporated in my config too.

Swaroop C H

A byte of vim

A new free e-book on vim, worth reading. Covers also advanced topics like writing your own plug-ins.

Effective Vim

This ends the recent vim trend spotting. But there are some older links that are worth sharing in my opinion.

Older Vim Gems

Jonathan McPherson

Efficient Editing With Vim

This is a true gem, an intermediate level tutorial that will convert you from a beginner vim user to a way more proficient one.

Jerry Wang

vi for smarties

Very good beginners guide to vim.

David Rayner

best of vim tips

Raw tips from a very long time vi/vim user

Vim is also great for Python development, 3 ideas…

vim omnicomplete awesomeness

How to make vim a modular Python IDE

How to replicate SLIME in vim

Finally a few tips from myself

vimperator: If you’re a heavy vim user you might want to checkout the great Firefox extension vimperator. You’ll find yourself browsing mouse-less with familiar vim keystrokes in a matter of minutes. I love it.

viPlugin for Eclipse: If you’re a Java developer (been there, done that) and you’re stuck with Eclipse, you definitely want to have viPlugin. It makes the Eclipse experience something much more pleasurable for one who has vi keystrokes embedded in the fingers.

cool color scheme: If you’ve seen “some” screen-casts and you have just a subterranean TextMate envy and you can’t stop thinking at that cool color-scheme, well think no more, you can use this one or my humbly tweaked version.

For delicious users here is the page of my bookmarks that made me notice the trend.

Ending note

For full disclosure I have to say that I have been - and still am sometimes - an Emacs user. One of the rebel ones daring enough to use Viper mode. So now you know.