December 27, 2007 at 2:57 pm · Filed under Linh tinh
Hic, tuần trước thì phải thi rồi presentation giữa quarter nên bận. Mấy ngày nghỉ vừa rồi thì lại bận … đi chơi lung tung. Hôm nay 27 mới nhớ ra 2 ngày trước là christmas (rõ ràng hôm đấy còn đi xem pháo hoa christmas cơ mà
)
Thôi hôm nay chắc vẫn chưa hết không khí nhỉ 
powered by ODEO
December 17, 2007 at 10:56 pm · Filed under Giải trí
Còn nhớ hồi cấp 2, nhà dùng mạng dial-up chậm rề rề, mà lại đắt. Thế mà có tuần hôm nào cũng miệt mài load xiaoxiao movie về xem. Tại nó đánh nhau hay quá, mà bản thân tớ cũng thích vẽ hình người theo kiểu đấy, nên mê luôn. Sau khi nó ra xiaoxiao 9, nhạt dần, bẵng đi đến hôm nay lơ thơ lẩn thẩn lại vào 1 trang flash game, có 1 series 2 tập nữa, không phải xiao xiao mà là “Shock”. Khá hay và chất (có khi còn hay hơn xiaoxiao). Lâu lắm mới lại có cảm giác như hồi trẻ con mê mẩn xem mấy cái hình gậy đánh nhau.
Shock phần 1
Shock phần 2
December 16, 2007 at 10:03 pm · Filed under OOP, Ruby
Hồi tớ mới bắt đầu học Ruby, hầu như quyển sách nào tớ đọc, câu đầu tiên trong định nghĩa về Ruby cũng là “In Ruby, everything is an object”. Và khắp mọi nơi trên net tớ search, ai cũng bảo thế cả. Tớ cũng dần dần tự mình cho thế là đúng.
Cho đến một hôm lôi quyển “Programming Ruby 2nd Edition” ra đọc đến phần Variable, mới biết “Everything is an object” là không hoàn toàn chính xác.
Có 1 thứ không phải là đối tượng…
Chắc bạn cũng có thể đoán ra mang máng rồi. Đó chính là Biến.
Trong Ruby, biến có cách làm việc khác với một số ngôn ngữ khác. Hãy cùng thử ví dụ này nhé:
string = 'aha'
str = string
string[2] = 'o'
puts str
puts string
Bạn thử đoán xem kết quả cho ra màn hình là thế nào? Kết quả là cả 2 biến str và string sẽ đều mang giá trị là ‘aho’.
Nhưng trong đoạn code trên ta chỉ thay đổi biến string, chứ không hề động đến biến str1. Và ta thay đổi đó xảy ra sau khi str được gán giá trị cũ của string. Nếu như biến là đối tượng, thì khi ta gán string = ‘aha’, đối tượng string sinh ra với giá trị ‘aha’. Tương tự gán str = string sẽ tạo thêm ra một đối tượng nữa có giá trị mà string đang mang. Khi thay đổi giá trị của đối tượng string, đối tượng str sẽ không bị vạ lây.
Biến không phải là đối tượng, thì biến là cái chi?
Biến là giá trị tham chiếu. Khi ta gán cho một biến một giá trị mới, một đối tượng mới sẽ được tạo ra trong bộ nhớ, và biến đó sẽ “trỏ” vào đối tượng đó. Tưởng tượng mỗi lần bạn truy vấn giá trị của biến, biến sẽ lại truy vấn giá trị của đối tượng, và trả lại cho bạn giá trị của đối tượng. Vậy có nghĩa là, biến và đối tượng không phải là một.
Còn khi bạn gán cho một biến giá trị của một biến đã có sẵn, điều gì xảy ra? Biến mới sẽ lập tức được tham chiếu vào đối tượng mà biến có sẵn kia “trỏ” tới. Tóm lại, cả 2 biến này “trỏ” tới cùng 1 giá trị giống nhau.
Khi bạn thay đổi (thay đổi thôi nhé, chứ không phải là gán cho giá trị mới) giá trị của một biến, thực chất là bạn thay đổi giá trị của đối tượng gốc. Xin xem hình minh họa sẽ rõ:

Thế nếu tôi gán cho biến string một giá trị mới, str1 có thay đổi theo không?
Cùng xem đoạn code này nhé:
string = 'aha'
str = string
string = 'oho'
puts str
puts string
Bạn sẽ thấy ngay str1 vẫn “trỏ” đến giá trị ‘aha’, trong khi string thì lại là ‘oho’. Tại sao lại có sự khác biệt này?
Đơn giản là do khi gán string = ‘oho’, ruby nhận ra là string có 1 giá trị mới hoàn toàn (chứ không phải là chỉ thay đổi 1 chữ cái như ở ví dụ trên). Do đó ruby sẽ tạo ra 1 đối tượng mới (oho) để string “trỏ” vào.

Cách sao chép biến đúng trong Ruby
Để thực sự sao chép giá trị của một biến, thay vì chỉ tham chiếu đến giá trị của biến đó, ta dùng phương thức “dup”. Câu lệnh gán sẽ phải như sau:
str = string.dup
“Not everything is an object”
Tóm lại, Ruby vẫn là một ngôn ngữ thuần túy hướng đối tượng, bởi vì “Although not everything is an object, Everything you manipulate is an object” (Mặc dù không phải cái gì cũng là đối tượng, nhưng trong Ruby tất cả các thứ bạn tác động tới đều là đối tượng).
December 13, 2007 at 8:31 pm · Filed under Ruby
Hị, sau một tuần dịch lấy đà, về cơ bản tớ đã dịch xong 4 chương đầu, nhưng mà còn chưa format lại để post lên trên blog. Tớ sẽ dần dần post lên sau.
Giáo trình của bác Satish này khá hay. Không mất thời gian giải thích lòng vòng, bác ấy đi thẳng luôn vào vấn đề và dùng nhiều code mẫu. Thế nên tớ nghĩ là những bạn mới học lập trình, hoặc mới biết đến Ruby sẽ không gặp nhiều khó khăn cho lắm.
Tuy thế dịch một tài liệu tin học từ tiếng Anh sang tiếng Việt không phải là chuyện đơn giản. Kiến thức tin học lập trình của tớ thì cũng chưa phải là sâu rộng gì, nên chắc sẽ có một số chỗ tớ dịch không chuẩn xác. Ai bắt gặp lỗi nào thì bảo cho tớ biết nhá
Tài liệu tớ dịch được post tại đây:
Tự học Ruby
December 10, 2007 at 10:46 pm · Filed under Ruby
Học gì chứ học lập trình, mà đặc biệt là Ruby, thì không bao giờ phải sợ tốn tiền mua sách. Lí do đơn giản: Có rất nhiều sách điện tử về Ruby được cung cấp miễn phí trên mạng (ý tớ là miễn phí hoàn toàn, chứ không phải hàng pirate đâu nhé
). Hầu hết những sách này được viết bởi những lập trình viên có nhiều kinh nghiệm và lên trình prồ rồi, nên chất lượng sách của họ thì cũng khỏi phải bàn.
Quyển đầu tiên tớ muốn nói đến là quyển “Why’s (Poignant) Guide to Ruby” của _why - một trong những thành viên kì cựu trong cộng đồng Ruby (đấy là tớ nói thế, chứ thật sự tớ chỉ đọc sách của bác này, chứ không biết gì nhiều về bác ấy).
Quyển này khá thú vị và vui nhộn. Tác giả còn vẽ cả truyện tranh chèn vào, các ví dụ không nhất thiết là phải giải thích kĩ lưỡng, nhưng mà người đọc vẫn thấy dễ hiểu. Đọc quyển này thấy khá là có hứng. Bác _why này cũng làm cả trang try ruby! Cũng nhờ trang này mà tớ thấy thích thú với ngôn ngữ Ruby mới này. Bạn nào chưa biết, hoặc mới nghe đến Ruby chứ chưa thử, thì vào try it out đi đã
Đảm bảo sẽ thấy thích thú ngay. Bạn cũng có thể download bản mp3 của quyển sách này. Nhưng mà cách này thì tớ chưa thử, mà cũng chả tưởng tượng là ông ấy sẽ đọc code bằng mồm hay là thế nào nữa
Quyển thứ hai là quyển “Humble Little Ruby Book” của Jeremy McAnally. Quyển này cũng có thể download free trên mạng nốt, nhưng có thêm một lựa chọn nữa là mua bản in của quyển này (chỉ có tầm 9$, quá rẻ so với những quyển khác).
Quyển này thì tớ chưa có động đến. Nhưng đọc qua mục lục cũng đoán được style của tác giả này khá là dễ đọc và không bị nhàm chán. Chỉ có điều đọc lướt qua tớ phát hiện ra hình như nó viết cho ruby 1.8.5, trong khi bản mới nhất bây giờ là 1.8.6, và sắp tới là 1.9 đến nơi rồi. Tuy nhiên thay đổi giữa version cũ và version mới của một ngôn ngữ không thành vấn đề lắm, miễn là bạn nắm được cái core philosophy của ngôn ngữ này.
Để down quyển này bạn cần đăng ký tài khoản tại InfoQ (trang này tổng hợp tin tức và các bài viết về CNTT và lập trình khá hay!). Hoặc là bạn cũng có thể đọc nó online trên scribd.
Quyển thứ ba, không hẳn là quyển sách, mà là một khóa học free về Ruby trên mạng của bác Satish Talim. Bác này 29 năm làm trong ngành rồi. Khóa học đầu tiên bác ấy mở là vào tháng 8 năm 2005 (nếu tớ không nhầm). Sắp tới từ ngày 7/1/2008 sẽ có khóa học mới, bạn nào không ngại học bằng tiếng Anh thì nhanh tay vào đăng ký khóa học từ bây giờ. Chương trình học và giáo trình thì có cả trên trang của bác này rồi, bạn có thể tham khảo trước. Tớ thì chưa học bác này bao giờ, nên không biết là online course của bác ấy thế nào, nhưng chắc chắn là sẽ có tương tác giữa học sinh và thày giáo. Cái này hay, bởi vì sách bình thường thì chỉ tự đọc tự ngẫm thôi, còn có thày dắt theo thì sẽ đỡ bị mất thì giờ vào những vướng mắc không đâu. Bạn cũng nhớ đọc các bài viết trên blog của trang đó nhé, nhiều bài khá bổ ích.
Tớ cũng vừa đăng ký course của bác này (chờ mãi). Trước đó tớ đã xin phép bác ấy dịch giáo trình của bác sang tiếng Việt, để các bạn mới học lập trình, hoặc mới làm quen với Ruby ở Việt Nam có cơ hội tiến nhanh với Ruby hơn, mà đó cũng là một cách để tớ vừa học vừa ôn. Bác ấy đã nhận lời cho phép, và hiện tại tớ đã dịch xong phần … mục lục. Sẽ dần dần post lên blog này để mọi người theo dõi và góp ý chỉnh sửa
Ngoài việc tự học theo sách, hoặc là học theo course như trên, bạn cũng có thể tìm “gia sư” Ruby cho mình. Rất đơn giản, chỉ cần chọn lấy một bác trong list và gửi email cho người ta (bằng tiếng Anh). Mỗi người sẽ có hình thức dẫn dắt khác nhau. Nhưng học cái gì đó mà có người định hướng cho mình thì bao giờ cũng dễ dàng và đỡ tốn thời gian vô ích hơn.
Tất nhiên là để học Ruby hiệu quả thì chỉ có thế chưa đủ. Bạn còn phải subscribe một đống blog về Ruby, lướt các forum .v.v. rất nhiều nữa. Bài viết này tớ chỉ giới thiệu vài nguồn tài liệu Ruby miễn phí trên mạng để bạn có thể khởi đầu với ngôn ngữ khá thú vị và cũng đang “hot” này.
« Previous entries ·
Next entries »