Hoang Tran's Blog

September 11, 2009

Truyền tham số chương trình trong GNU Make

Filed under: Programming — Hoang Tran @ 10:08 am

(Nghĩ mãi cái tiêu đề mà không biết có thể hiểu được vấn đề không? Đại loại vấn đề thế này)

Trong quá trình phát triển phần mềm thì chu trình “sửa code”, “biên dịch lại”, và “chạy thử” được lặp đi lặp lại. Làm thế nào để tự động hoá chạy thử chương trình khi thay đổi một chút ít trong mã nguồn (chương trình hoặc thư viện)? Có thể nghĩ đến ngay viết một script để làm những việc đó, nhưng thường thì người ta hay thêm một rule “run” trong Makefile, kiểu thế này:

run: $(program) $(libs)
     $(program) arg1 arg2 ... # excute program

Khi chạy “make run”, nó sẽ tự động biên dịch lại chương trình và libs nếu cần thiết rồi thực hiện lệnh chạy chương trình. Vấn đề là mình muốn truyền tham số vào chương trình chạy thay vì “hard code” với arg1 arg2 ở trên.

Phải mất hơn 2 tiếng lôi lại cả tài liệu GNU Make Manual ra mà chưa thấy có cách nào khả dĩ :-) Chẳng thể “make run arg1 arg2″ hay kiểu “make run_arg1-arg2″ được ;-)

(more…)

September 10, 2009

8.11 Problem 1

Filed under: Programming — Hoang Tran @ 2:43 pm

Ở phần cuối ở chương 8 sách Programming Erlang có 2 bài tập thực hành việc lập trình “concurrent programming”

1. Write a function start(AnAtom, Fun) to register AnAtom as spawn(Fun). Make sure your program works correctly in the case when two parallel processes simultaneously evaluate start/2. In this case, you must guarantee that one of these processes succeeds and the other fails.

Về cơ bản thì giống ý tưởng của singleton, chúng ta cần đăng ký một process với cái tên là duy nhất (unique). Cái suy nghĩ đầu tiên là trước khi register một process với tên AnAtom thì check xem cái tên đó đã được register chưa, nếu chưa thì mới được phép register. Khi đó ta implement như sau:

start(AnAtom, Fun) ->
    case whereis(AnAtom) of
        undefined ->
            register(AnAtom, spawn(Fun)),
            succeed;
        _Else -> throw(already_started)
    end.

Tuy nhiên như chú ý việc thread safe khi implement một singleton thì đoạn mã trên sẽ chạy sai khi 2 process chạy song song. Ví dụ: Process A kiểm tra whereis(AnAtom) và có kết quả undefined. Sau đó đến lượt Process B kiểm tra whereis(AnAtom), lúc này AnAtom chưa được đăng ký nên vẫn có kết quả undefined; tiếp đó Process A đăng ký (gọi register) rồi đến khi Process B gọi register thì fail vì Process A đã đăng ký AnAtom rồi.

Vậy cần xử lý như thế nào?

(more…)

September 9, 2009

Concurrency

Filed under: Programming — Hoang Tran @ 3:17 pm

Trích sách Programming Erlang

We understand concurrency.
A deep understanding of concurrency is hardwired into our brains. We react to stimulation extremely quickly, using a part of the brain called the amygdala. Without this reaction, we would die. Conscious thought is just too slow; by the time the thought “hit the brakes” has formed itself, we have already done it.
While driving on a major road, we mentally track the positions of dozens, or perhaps hundreds, of cars. This is done without conscious thought. If we couldn’t do this, we would probably be dead.
The world is parallel.
If we want to write programs that behave as other objects behave in the real world, then these programs will have a concurrent structure.
This is why we should program in a concurrent programming language.
And yet most often we program real-world applications in sequential programming languages. This is unnecessarily difficult.
Use a language that was designed for writing concurrent applications, and concurrent development becomes a lot easier.
Erlang programs model how we think and interact.
(more…)

August 6, 2009

Dạy con (1)

Filed under: Thoughts — Hoang Tran @ 4:17 pm

Con mình thích thành cái gì thì mình dạy nó cái đó thôi; thích đi nuôi bò lấy sữa thì cho đi chăn bò; thích thành thợ mộc thì làm thợ mộc; thích thành phi công thì thành phi công; thích làm hoạ sỹ thì cho làm hoạ sỹ, tốt nhất là đừng để nó làm kỹ điện như anh. Chỉ cần dậy nó môn nào nó cần, còn lại dạy nó hưởng thụ rồi văn học nghệ thuật cho nó sướng. Đến mùa hè, anh sẽ đưa chúng nó sang hẳn Vancouver leo núi, câu cá, chèo xuồng vượt thác. Mùa đông thì đi trượt tuyết, đi xem người Eskimo, đi xem vùng Yukon… Nếu chúng nó máu thì đi hẳn tàu phá băng vào Bắc cực xem gấu trắng với cá voi. Lớn lên một tí, cho theo bố mẹ đi du lịch châu Phi, Trung Đông. Thế có phải là hay không? Sống thế mới là sống chứ. Con mình nhất định phải hơn mình… Chúng nó phải…

Đoạn trên trích từ một truyện ngắn trong tập truyện ngắn “Nước Mỹ” của Phan Việt đọc nghe rất sướng. Nhưng đến câu cuối mình lại cảm thấy cái chất Việt vẫn quanh quẩn????

August 3, 2009

.astylerc

Filed under: Resources & Tools — Hoang Tran @ 2:52 pm

Astyle là một tool rất tốt để format source code. Mỗi khi có source của cái gì đó là mình cứ format source trước đã rồi đọc gì thì đọc. Có thể dùng astyle làm hook pre-commit cho các source version control. Đây là .astylerc đặt ở home directory ;-)

# Author     : Hoang Tran <tran.hoang@gmail.com>
# Version    : 1.1
# Last Change: Aug 03, 2009

# Predefined style option -A3
–style=k&r

# Indent using 4 spaces per indent. Don’t use tab -s4
–indent=spaces=4

# Break brackets from namespace, class and function definitions,
# but attach brackets to statements within a function -l
–brackets=linux

# Indent ’switch’ blocks so that the ‘case X:’ statement are
# indented in the switch block. -S
–indent-switches

# Indent multi-line preprocessor definitions ending with a backslash -w
–indent-preprocessor

# Pad empty lines around header blocks (eg. ‘if’, ‘while’ …) -f
–break-blocks

# Delete empty lines within a function or method. -x
–delete-empty-lines

# Insert space padding around operators. -p
–pad-oper

# Remove extra space padding around parenthesis on the inside and outside -U
–unpad-paren

# Converts tabs into spaces in the non-indentation part of the line -c
–convert-tabs

# Do not retain a backup of the origional file
–suffix=none

July 13, 2009

Sài Gòn đáng thương

Filed under: Life — Hoang Tran @ 10:03 am

Mình vẫn hay thường nói với bạn bè trong SG là mình rất thương họ, và thấy người SG rất đáng thương :-P   Đáng thương là bởi vì ở SG chẳng biết đến mùa đông là gì, chẳng biết đến những cơn gió lạnh đầu mùa, những trận mưa xuân, những cái rét buốt da buốt thịt.

Thì đúng như vậy! Thế nhưng có lẽ đó chỉ là đáng thương cho những người từ Bắc vô Nam thui, chứ những người không biết đến mùa đông thì đâu thấy nhớ đến cái rét HN đâu. Chỉ những người như mình mới nhớ những cái rét đấy :-( Mình nhớ những ngày lạnh chuyển mùa, có cô em ngồi sau lưng thò tay vào túi áo khoác của mình, nép vào lưng rong ruổi (rõ là dở hơi) trên đường phố HN :-P

Hôm nay đi làm, tự dưng thời tiết SG có cái diễm phúc đấy, trời cũng trở lạnh nhưng chẳng có em nào sau lưng :-D

July 10, 2009

Color man pages

Filed under: Resources & Tools — Hoang Tran @ 5:59 pm

Mới biết cái tip này và giờ thì cực kỳ happy khi đọc man page :-)

screenshot

screenshot

June 12, 2009

SaigonLug Meeting – Sun Jun 14 @ 9:00 am

Filed under: Interests — Hoang Tran @ 10:57 am

Nhờ HanoiLug mới biết đến vụ này 

———- Forwarded message ———-
From: An Nguyen <konqueror112@gmail.com>
Date: 2009/6/8
Subject: SaigonLUG Meeting – Sun Jun 14 @ 9:00 am
To: “Kevin Miller Jr.” <kevinmillerjr@gmail.com>, Anthony Fernandes
<anthony@saigonlinux.com>, Hung Anh Nguyen <anhhung@gmail.com>, Ky Anh
Huynh <xkyanh@gmail.com>, Thoai Nguyen <me@thoaionline.com>, Minh Huy
Vo <moriator@gmail.com>, Duy <pclouds@gmail.com>, Vinh Nguyen
<vinh.nguyen@saigonlinux.com>, Tri <tdmtri@gmail.com>, Tuan
<cyberedsun@yahoo.com>, Mana <manavazhagan@gmail.com>, Truong An Pham
Nguyen <pntruongan2005@gmail.com>
Cc: David Tremblay <david@ngowiki.net>, Ivan Garcia <capiscuas@gmail.com>

Hi everyone,

Seems like it is now the good time for the meeting of SaigonLUG. With
about 9 GNU/Linux enthusiasts, I hope that we will have a lot of good
ideas and great plans in this meeting.

Time:
Sunday June 14 at 9:00 am (you can come late, no problem)

Place:
Zenta Cafe, 41 Mac Dinh Chi Street, District 1

Details:

1. Discussion about the main goals and the strategy of SaigonLUG
2. The primary language will be English
3. No discussion about any technical stuffs (except for chitchat in
the break times)

If you get lost or don’t know exactly where the location is, please
contact me immediately.
My mobile number is 0943 747 749.

If you have a better venue location than Zenta Cafe, please let me
know as soon as possible.

I’ll send a google cal invitation shortly.

See you!


An C. Nguyen.

My contact information: http://st-konqueror.blogspot.com/
My technology blog : http://projektantos.wordpress.com/ (for Vienamese readers)

Cũng nhờ đó mà biết đến sự trở lại của SaigonLug. Kể từ ngày vào SG sống, vẫn mong có được chỗ để chơi kiểu HanoiLug nhưng chả thấy có động tĩnh gì. Có thể community ở SG trầm hơn, nhưng chắc không ít hơn HN. Hi vọng giờ đây SaigonLug trở lại thì sẽ có nhiều thứ để chơi :-)  

June 4, 2009

Kaki King – Playing With Pink Noise (Live)

Filed under: Music — Hoang Tran @ 2:34 pm

Biết về em này ở đây

May 26, 2009

The Great Gatsby

Filed under: Interests — Hoang Tran @ 3:07 pm

Mấy tháng trước, trên mạng rùm beng việc dịch “The Great Gatsby” thành “Đại gia Gatsby” của Trịnh Lữ (theo dõi ở đây, đây, đâyđây). Tôi cũng tranh thủ kiếm lấy một quyển “Đại gia Gatsby” coi thử. Quả thật nếu bỏ cái tựa đề, giới thiệu và bình luận mang tính cá nhân của người dịch thì đó là một quyển sách tuyệt vời. Thật đáng tiếc khi quyển sách được có bìa và được in rất đẹp! Hoàn toàn đồng ý với các bạn ở đây và đây là một đoạn trả lời rất hay của một bạn trên blog đó. 

Tớ không đồng ý với bác Trịnh Lữ. “The great Gatsby” trước hết là một chuyện tình lãng mạn về một người đàn ông nuôi một tình yêu rất đẹp trong quá khứ, dù xa cách không gặp mặt người yêu 6 năm ròng, dù nàng đã đi lấy chồng, nhưng anh vẫn nuôi mộng làm sống lại hạnh phúc tuyệt vời đó của quá khứ bằng cách giành lại được người yêu, và đã dâng toàn bộ sự sống, mục đích sống, mọi hơi thở của anh để cố gắng đạt được mục đích ấy, khát vọng làm giàu của anh cũng chỉ để làm nhịp cầu dẫn tới người anh yêu, mua ngôi nhà lớn phía bên kia vịnh của nhà người yêu để luôn được nhìn thấy ngọn đèn với ánh sáng xanh từ cây cầu trước cửa nhà nàng như ánh sáng của lòng hi vọng, tổ chức tiệc tùng cho người lạ chỉ mong rằng một ngày nào đó, người yêu sẽ tình cờ dự bữa tiệc. Cùng với lòng tôn thờ vẻ đẹp lung linh của quá khứ, anh từ chối nhận ra rằng quá khứ là điều không thể lặp lại, từ chối một sự thật là giấc mơ tình yêu tuổi trẻ đã qua rồi, từ chối nhìn ra hình ảnh thực hiện tại của người anh yêu. Một người dâng hiến mọi thứ của mình cho tình yêu như vậy ắt phải là một người không ích kỉ, phải là một người cực kỳ lãng mạn, là người ngây thơ tin tưởng vào những điều tuyệt đẹp, dù đó chỉ còn là ảo tưởng mà thôi, dù anh là người cuối cùng và duy nhất tin vào điều đó. Đó chính là cái “great” (lớn lao, vĩ đại) của Gatsby.

“Great” còn có ý nghĩa khi đặt vào khung cảnh cách dẫn chuyện của tác giả. Suốt nhiều trang đầu, nhân vật “Gatsby” này chưa xuất hiện, mà mọi người chỉ nghe nói về anh ta, nào anh ta rất giàu, anh ta hình như đã từng giết một người, anh ta có một nguồn gốc rất cao sang, anh ta đã từng học ở Oxford…vvv. Những tiếng tăm này đã khiến hình ảnh Gatsby trở nên bí ẩn, và người đọc tò mò muốn xem Gatsby có “great” như là lời đồn đại hay không. Nhưng đây có lẽ chỉ là một phần tô điểm chứ không phải ý nghĩa chính của “great”.

Khi dịch sang tiếng Việt là “đại gia” Gatsby, Trịnh Lữ đã tước đi những ý nghĩa phân tích trên của hình ảnh Gatsby. Bởi “đại gia” gợi trong tâm trí người Việt là một người giàu, ăn chơi sang trọng, và thường là không có giá trị tinh thần. Đặc biệt trong xã hội hiện nay, “đại gia’ hàm ý mỉa mai có ý xấu, kiểu giàu mà rỗng tuêch. Đành rằng Gatsby rất giàu, nhưng không phải vì thế mà Gatsby “great”.

Còn Gatsby của F.Scott Fitzgeral thì “đáng giá bằng tất cả bọn chúng hợp lại” (worth the whole damn bunch put together) theo lời tác giả mượn một nhân vật tả, bởi vì Gatsby có một “món quà khác thường của lòng hi vọng, một lòng tin sẵn sàng vào sự lãng mạn mà tôi chưa từng thấy ở một người nào khác và có lẽ sẽ không bao giờ tìm thấy lại nữa” (it was an extraordinary gift for hope, a romantic readiness such as I have never found in any other person and which it is not likely I shall ever found again).

Vì vậy, dịch “The great Gatsby” thành “Đại gia Gatsby” thật không công bằng với Gatsby, và hoàn toàn hiểu sai dụng ý của tác giả. 

Links:

http://vi.wikipedia.org/wiki/Gatsby_vĩ_đại

Đọc bản dịch của “Hoàng Cường” với các tên riêng được giữ nguyên http://vuontaodan.net/thuviensach/noidung.aspx?id=00461%20&matg=00152&Page=1 

Trên tất cả thì The Great Gatsby xứng đáng là một tác phẩm vĩ đại của thế kỷ 20 và nên đọc :-)

Older Posts »

Blog at WordPress.com.