diff --git a/Gemfile.lock b/Gemfile.lock index 4b8a9dc12c..0e2a4acad6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -29,7 +29,7 @@ GEM open4 rake mini_portile (0.5.0) - nokogiri (1.6.0) + nokogiri (1.5.3) mini_portile (~> 0.5.0) open4 (1.3.0) posix-spawn (0.3.6) diff --git a/_config.yml b/_config.yml index 53d7afa4e3..e4d41574cd 100644 --- a/_config.yml +++ b/_config.yml @@ -239,6 +239,21 @@ locales: # url: /tr/security - text: Ruby Hakkında url: /tr/about + vi: + - text: Downloads + url: /vi/downloads + - text: Tài liệu + url: /en/documentation + - text: Thư viện + url: /vi/libraries + - text: Cộng đồng + url: /en/community + - text: Tin tức + url: /en/news + - text: Bảo mật + url: /vi/security + - text: Về Ruby + url: /vi/about zh_cn: - text: 下载 url: /zh_cn/downloads @@ -299,6 +314,8 @@ locales: text: Procurar tr: text: Ara + vi: + text: Tìm zh_cn: text: 搜索 zh_tw: @@ -317,6 +334,7 @@ locales: pl: "Ruby - Najlepszy Przyjaciel Programisty" pt: "Ruby - O melhor amigo do programador" tr: "Ruby - A Programmer's Best Friend" + vi: "Ruby - Người bạn tri kỉ của lập trình viên" zh_cn: "Ruby - 程序员最要好的朋友" zh_tw: "Ruby - A Programmer's Best Friend" @@ -331,6 +349,7 @@ locales: pl: [Styczeń, Luty, Marzec, Kwiecień, Maj, Czerwiec, Lipiec, Sierpień, Wrzesień, Październik, Listopad, Grudzień] pt: [Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] tr: [Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık] + vi: [Tháng một, Tháng hai, Tháng ba, Tháng tư, Tháng năm, Tháng sáu, Tháng bảy, Tháng tám, Tháng chín, Tháng mười, Tháng mười một, Tháng mười hai] posted_by: bg: "Публикувана от AUTHOR на %Y-%m-%d" @@ -345,6 +364,7 @@ locales: pl: "Zamieszczone przez AUTHOR %Y-%m-%d" pt: "Escrito por AUTHOR em %Y-%m-%d" tr: "AUTHOR tarafından %Y-%m-%d tarihinde gönderildi" + vi: "Đăng bởi AUTHOR vào %-d %b %Y" zh_cn: "由 AUTHOR 发表于 %Y-%m-%d" # zh_tw: @@ -362,6 +382,7 @@ locales: pt: "Traduzido por" tr: "Çeviri:" zh_cn: "翻译:" + vi: "Dịch bởi" # zh_tw: feed: @@ -413,6 +434,10 @@ locales: title: Ruby Son Haberler description: Ruby Son Haberler lang_code: tr + vi: + title: Tin tức Ruby + description: Những tin mới nhất từ ruby-lang.org. + lang_code: vi zh_cn: title: Ruby 新闻更新 description: 来自 ruby-lang.org 的最新文章。 @@ -567,6 +592,18 @@ locales: monthly_archives: Archives by Month yearly_archive_link: "%Y Archives" monthly_archive_link: "%B %Y" + vi: + other_news: Tin khác + more_news: Thêm Tin... + continue: Đọc tiếp... + back_to_year: "Trở về %Y Lưu trữ" + recent_news: Tin mới nhất + yearly_archive_title: "%Y " + monthly_archive_title: "%B %Y Lưu trữ" + yearly_archives: Lưu trữ bằng Năm + monthly_archives: Lưu trữ bằng Tháng + yearly_archive_link: "%Y Lưu trữ" + monthly_archive_link: "%B %Y" zh_cn: other_news: 其它新闻 more_news: 更多新闻... @@ -1361,6 +1398,69 @@ locales: recent_news: text: Son Haberler (RSS) url: /tr/feeds/news.rss + vi: + get_started: + text: Nhập môn, quá dễ! + try_ruby: + text: Thử Ruby! (trong trình duyệt) + <<: *try_ruby + quickstart: + text: Ruby trong 20 phút + url: /vi/documentation/quickstart/ + ruby_from_other_languages: + text: Ruby từ những ngôn ngữ khác + url: /vi/documentation/ruby-from-other-languages/ + explore: + text: Khám phá một thề giới mới… + documentation: + text: Tài liệu + url: /vi/documentation/ + books: + text: Sách + <<: *books + libraries: + text: Thư viện + url: /vi/libraries/ + success_stories: + text: Những câu chuyện thành công + url: /vi/documentation/success-stories/ + participate: + text: Tham gia vào một cộng đồng lớn mạnh và thân thiện. + mailing_lists: + text: Mailing Lists + url: /vi/community/mailing-lists/ + description: | + Trao đổi về Ruby với các lập trình viên trên thế giới + user_groups: + text: Nhóm người dùng + url: /vi/community/user-groups/ + description: | + Làm quen với những Rubyist trong khu vực của bạn. + weblogs: + text: Weblogs + url: /vi/community/weblogs/ + description: | + Đọc về những gì đang xảy ra với cộng đồng Ruby. + ruby_core: + text: Lõi Ruby + url: /vi/community/ruby-core/ + description: | + Giúp hoàn thiện Ruby. + issue_tracking: + text: Thông báo lỗi + url: https://bugs.ruby-lang.org/ + description: | + Báo hoặc giúp xử lý các lỗi trong Ruby. + top_ruby_projects: + text: Những dự án Ruby hàng đầu + more: + text: Nhiều hơn nữa… + url: /vi/libraries/top-projects/ + syndicate: + text: Syndicate + recent_news: + text: Tin mới (RSS) + url: /vi/feeds/news.rss zh_tw: get_started: text: 上手入門, 一點都不難! @@ -1597,6 +1697,15 @@ locales: # subscribe: Subscribe # unsubscribe: Unsubscribe # submit: Submit Form + vi: + list: Mailing List + first_name: Tên + last_name: Họ + email: Email + action: Hành động + subscribe: Đăng kí + unsubscribe: Hủy đăng kí + submit: Nộp đơn zh_cn: list: 邮件列表 first_name: 姓 @@ -1683,6 +1792,12 @@ locales: Ruby topluluğunun üyeleri tarafından gururla sürdürülmektedir. Herhangi bir soru ya da öneriniz için lütfen site yöneticimiz ile irtibata geçin. + vi: | + Website này được tạo ra với Ruby sử dụng Jekyll. + Trang được bảo trì bởi các thành viên của cộng đồng Ruby. + Xin đóng góp trên GitHub + hay liên lạc với webmaster (bằng tiếng Anh) + nếu có câu hỏi hoặc ý kiến phản hồi về trang này. zh_cn: | 本网站使用 Ruby 工具 Jekyll 制作,并有幸由来自 Ruby 社区的会员共同维护。 请贡献代码至 GitHub。 diff --git a/_includes/footer.html b/_includes/footer.html index 8fd6e170a1..d66f5b1568 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -5,6 +5,7 @@ English, Spanish, French, +Vietnamese, Bahasa Indonesia, Italian, Japanese, diff --git a/index.html b/index.html index 1b01e0d102..1d77f6e5b9 100644 --- a/index.html +++ b/index.html @@ -17,6 +17,7 @@ "pl": "pl", "pt": "pt", "tr": "tr", + "vi": "vi", "zh-CN": "zh_cn", "zh-TW": "zh_tw" }; diff --git a/vi/about/index.md b/vi/about/index.md new file mode 100644 index 0000000000..44b00dd88e --- /dev/null +++ b/vi/about/index.md @@ -0,0 +1,202 @@ +--- +layout: page +title: "Về Ruby" +lang: vi +--- + +Bạn tự hỏi tại sao Ruby quá phổ dụng? Cá fan gọi nó một ngôn ngữ tao nhã và tinh tế +nhưng lại rất lợi hại và thực dụng. Điều gì khiến họ nghĩ vậy? + +### Lý tưởng của cha đẻ của Ruby + +Ruby là một ngôn ngữ của sự cân đối. Nhà phát minh của nó [Yukihiro “Matz” +Matsumoto][1] kết hợp các đặc điểm hay từ các ngôn ngữ khác (Perl, Smalltalk, +Eiffel, Ada, và Lisp) để tạo ra một ngôn ngữ cân bằng giữa +lập trình hướng chức năng (functional programming) và lập trình hướng thủ tục (imperative programming). + +Ông khẳng định ông "muốn tạo ra một Ruby gần gũi và tinh tế". + +Dựa trên nền tảng này, ông thêm: + +> Ruby nhìn phía ngoài thì đơn giản nhưng rất phức tạp bên trong, +> giống như cơ thể con người vậy [1](#fn1). + +### Về sự phát triển của Ruby + +Sau khi được phát hành ra công chúng năm 1995, Ruby đã thu hút nhiều lập trình +viên. Vào 2006, Ruby đã được chấp nhận ở mức phổ cập, điều này được chứng minh +qua số lượng lớn các nhóm người dùng hoạt động tích cực ở các thành phố trên thế giới +và cả các hội nghị liên quan Ruby luôn bán hết vé. + +{: style="padding-left:8px;"} +{: style="float:right"} + +Ruby-Talk là [mailing list](/en/community/mailing-lists/) chính để thảo luận về +ngôn ngữ Ruby. Theo thống kê trung bình có trên 200 bài mỗi ngày trong năm 2006. +Con số này có giảm sút trong những năm gần đây vì xu hướng người dùng gửi bài +vào những nhóm nhỏ riêng thay vì gửi vào đây. + +Chỉ số [TIOBE index][6], đo đạt sự phát triển của các ngôn ngữ lập trình, xếp +Ruby hạng 9 nhờ vào số lượng lớn các phần mềm áp dụng ngôn ngữ này, tiêu biểu +là framework viết web tên Ruby on Rails [2](#fn2). + +Ruby hoàn toàn [miễn phí]({{ site.license.url }}). Không đòi hỏi phí bản +quyển, và không cấm đoán chuyện sử dụng, sao chép, sửa đổi và phân phối. + +### Mọi thứ là đối tượng + +Khi bắt đầu viết Matz tham khảo những ngôn ngữ khác để tìm những cú pháp lý +tưởng cho ngôn ngữ mới của ông. Ông nói "Tôi muốn tìm một ngôn ngữ scripting lợi hại +hơn Perl, và hướng đối tượng hơn Python[3](#fn3).” + +Trong Ruby, mọi thứ đều là đối tượng (object). Tất cả thông tin và mã đều có thể gán +thuộc tính (properties) và hành động (actions). Lập trình hướng đối tượng (Object-Oriented Programming) +gọi thuộc tính với tên *biến địa phương (instance variables)* và gọi hành động là *hàm (method)*. +Cách tiếp cận thuần hướng đối tượng có thể được thấy rõ ở những đoạn mã áp dụng một +hành động lên một con số. + +{% highlight ruby %} +5.times { print "Tôi *yêu* Ruby!" } +{% endhighlight %} + +Ở nhiều ngôn ngữ khác, số và một số kiểu mẫu nguyên thủy (primitive types) không phải là +đối tượng. Ruby chịu ảnh hưởng của ngôn ngữ Smalltalk qua việc gán hàm và biến đối tượng +cho tất cả các kiểu mẫu (type). Điều này làm cho Ruby dể dùng hơn vì tất cả nguyên +tắc về đối tượng được áp dụng thống nhất. + +### Tính linh hoạt của Ruby + +Ruby được xem là một ngôn ngữ linh hoạt, vì nó cho phép người dùng thay đổi +các phần tử của nó. Các phần tử tất yếu của Ruby có thể được xoá, định nghĩa lại tuy theo +ý người dùng. Các phần hiện hữu có thể thêm vào. Ruby không cố gắng kìm chể lập +trình viên. + +Lấy một ví dụ, phép cộng (toán học) có thể được thực hiện với toán tử (`+`). Nhưng nếu +bạn muốn diễn đạt với từ `cộng`, bạn có thể thêm một hàm vào lớp `Numeric` +của Ruby: + +{% highlight ruby %} +class Numeric + def cộng(x) + self.+(x) + end +end + +y = 5.cộng(6) +# y sẽ là 11 +{% endhighlight %} + +Các toán tử của Ruby chỉ là cách viết dễ đọc của các hàm. Bạn có thể định nghĩa lại chúng nếu cần. + +### Block, một cách đặc trưng để diễn đạt + +Block trong Ruby là một cách diễn đạt rất linh động. Lập trình viên +có thể kèm một closure vào bất cứ hàm nào, để miêu tả cách hàm đấy chạy ra sao. +Closure này được gọi là *block* và là lựa chọn phổ dụng cho các lập trình viên +mới nhập môn từ các ngôn ngữ hướng thủ tục khác (imperative programmming) +khác như PHP hay Visual Basic. + +Block được tạo ra với cảm hứng từ các ngôn ngữ lập trình hướng chức năng (functional programming). +Matz nói, trong Ruby, tôi muốn tạo ra loại closures theo phong cách Lisp[4](#fn4).” + +{% highlight ruby %} +search_engines = + %w[Google Yahoo MSN].map do |engine| + "http://www." + engine.downcase + ".com" + end +{% endhighlight %} + +Ở đoạn mã trên, block được miêu tả bên trong hàm dựng `do ... end`. +Hàm `map` áp dụng block tới một danh sách các từ. Nhiều hàm khác trong Ruby chừa +ra chỗ trống để lập trình viên điền vào với các thông tin hàm này nên +làm gì. + +### Ruby và Mixin + +Mixin là thuật ngữ chỉ cách một ngôn ngữ đính kèm phần tử (vd hàm) vào một tập hợp (vd lớp). + +Không như những ngôn ngữ hướng đối tượng khác, Ruby chỉ hỗ trợ kế thừa đơn (single inheritance), +và thiết kế này có **chủ đích**. Tuy thế, Ruby biết các khái niệm về module (còn +được gọi là Categories trong Objective-C). Module là tổ hợp của nhiều hàm. + +Lớp (class) có thể mixin một module và tiếp nhận tất cả hàm của module đó. Ví dụ, +bất kì lớp nào triển khai hàm `each` đều có thể mixin module `Enumerable`. Module +này có những hàm sử dụng `each` để chạy vòng lặp. + +{% highlight ruby %} +class MyArray + include Enumerable +end +{% endhighlight %} + +Nói chung thì đa số Rubyist xem thiết kế này rõ ràng hơn đa kê thừa (multiple +inheritance) vốn dĩ phức tạp và có nhiều hạn chế. + +### Diện mạo của Ruby + +Trong khi Ruby rất ít dùng dấu và thay vào đó dùng từ tiếng Anh, có một vài +dấu được sử dụng để miêu tả Ruby. Ruby không có cần cú pháp để khai báo biến. +Nó sử dụng cách đặt tên đơn giản để diễn tả mục tiêu (scope) của biến. + +* `var` là biến địa phương (local variable). +* `@var` là biến đối tượng (instance variable). +* `$var` là biến toàn cục (global variable). + +Các dấu trên tăng khả năng đọc bằng cách giúp lập trình viên xác định vai trò +của từng biến. Bên cạnh đó, bạn không nhất thiết chèn `self.` vào trước các phần tử +đối tượng. + +### Nâng cao + +Ruby có rất nhiều chức năng khác, trong số đó bao gồm: + +* Ruby có chức năng xử lý biệt lệ (exception) giống như Java hay Python, giúp +dễ dàng đối phó với lỗi. +^ + +* Ruby có một bộ thu gom rác kiểu đánh dấu-và-dọn dẹp (mark-and-sweep garbage collector) +cho toàn bộ đối tượng Ruby. Không cần phải bảo trì các biến đếm liên quan (reference count) +ở trong các thư viện mở rộng. Như Matz nói, "Cái này tốt cho sức khoẻ của bạn hơn" +^ + +* Viết mở rộng kiểu C (C extension) với Ruby dễ hơn Perl hay Python. Ruby có một +thư viện API để gọi Ruby từ C. Cái này bao gồm các hàm gọi tích hợp Ruby vào +phần mềm để sử dụng như là một ngôn ngữ scripting. Một giao diện SWIG cũng sẵn có +để sử dụng. +^ + +* Ruby có thể đọc các thư viện mở rộng (extension library) kiểu động nếu OS cho phép. +^ + +* Ruby có threading độc lập với cả hệ điều hành. Thế nên, tất cả nền tảng khác +mà Ruby chạy trên sẽ có multithreading bất kể hệ đấy có hỗ trợ hay không. Ngay +cả MSDOS còn hỗ trợ! +^ + +* Ruby rất dễ port: nó được phát triển chủ yếu cho GNU/Linux, nhưng có làm việc +với các hệ UNIX khác, như Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, vân vân. + +#### Tham khảo + +1 Matz, nói về Ruby-Talk mailing list, [12/05/2000][2]. +{: #fn1} + +2 Xem trang chủ [Ruby on Rails][3] để biết thêm +{: #fn2} + +3 Matz, trong [Phỏng vấn cha đẻ của Ruby][4], 29/11/2001. +{: #fn3} + +4 Matz, trong [Blocks và Closures trong Ruby][5], 12/12/2003. +{: #fn4} + + + +[1]: http://www.rubyist.net/~matz/ +[2]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/2773 +[3]: http://rubyonrails.org/ +[4]: http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html +[5]: http://www.artima.com/intv/closures2.html +[6]: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html diff --git a/vi/downloads/index.md b/vi/downloads/index.md new file mode 100644 index 0000000000..57084429d9 --- /dev/null +++ b/vi/downloads/index.md @@ -0,0 +1,218 @@ +--- +layout: page +title: "Download Ruby" +lang: vi +--- + +Bạn có thể lấy phân phối Ruby mới nhất ở đây. +Bản ổn định hiện thời là {{ site.downloads.stable.version }}. +Xin hãy nhớ đọc [Giấy phép Ruby]({{ site.license.url }}). + +### Ba cách để cài Ruby + +Bạn có thể lấy một bản sao chép của Ruby với nhiều cách, và mỗi người khác nhau +chọn một trong ba cách sau vì nhiều li do khác nhau. Mỗi cách sẽ có một phân mục +ở dưới, nhưng đây là hướng dẫn tổng quan: + +* **Biên dịch từ nguồn** là cách chuẩn mà phần mểm được chuyển giao trong nhiều + năm qua. Đây là cách quen thuộc nhất cho phần lớn các nhà phát triển phần mềm. +* Một vài **công cụ của bên thứ ba** để giúp cài đặt Ruby. Đây thường là + cách đơn giản dành cho cả những người ít kinh nghiệm và những người dùng cao cấp. +* Có một vài **hệ thống quản lí gói** hỗ trợ Ruby. Đây sẽ là cách + thân thuộc nhất cho người nào sử dụng một hệ điều hành để làm mọi thứ, và + họ thích gắn bó với những kiểu chuẩn cá biệt này. + +Cuối cùng nếu bạn muốn chạy nhiều phiên bản của Ruby trên cùng máy, xin hãy +xem mục **công cụ bên thứ ba** và dùng RVM. Nó là cách dễ nhất để làm được +điều này, trừ khi bạn biết chính xác ban đang làm gì. + +### Biên dịch Ruby từ mã nguồn + +Cài từ mã nguồn là một giải pháp tuyệt vời khi bạn nắm vững các kiến thức hiệu chỉnh +môi trường hệ điều hành bạn đang dùng. Nó cũng là giải pháp nếu không có gói đóng +sẵn cho hạ tầng của bạn. + +Nếu bạn gặp vấn đề biên dịch Ruby, bạn nên cân nhắc sử dụng một trong những công +cụ bên thứ ba trong phân mục tiếp theo. + +* [Ruby {{ site.downloads.stable.version }}][1] + (md5: {{ site.downloads.stable.md5.gz }}) Bản ổn định +* [Ruby {{ site.downloads.previous.version }}][2] + (md5: {{ site.downloads.previous.md5.gz }}) Bản trước đó +* [Snapshot Ổn định][3] Đây là một tarball snapshot mới nhất của + nhánh Ổn định (ruby\_2\_0\_0). +* [Snapshot Mỗi đêm][4] Đây là một tarball snapshot của mọi thứ có trong + SVN mỗi đêm. Nó có thể có lỗi và một số vấn đề khác, cẩn thận khi sử dụng! + +Để biết thêm thông tin về Ruby Subversion và Git repositories, đọc trang +[Ruby Core](/en/community/ruby-core/). + +### Công cụ của bên thứ ba + +Nhiều Rubyist dùng công cụ bên thứ ba để cài Ruby. Chúng có nhiều lợi điểm +nhưng không được hỗ trợ chính thức. Nhưng bạn có thể tìm giúp đỡ từ cộng đồng +của các công cụ này. + +#### RVM + +Công cụ phổ cập nhất để cài Ruby là **RVM** (“Ruby Version Manager”). Không những +nó giúp bạn cài Ruby dễ dàng, nó còn cho phép bạn cài và quản lí nhiều sao bản +của Ruby trên cùng hệ thống. Thêm vào đó bạn cũng có thể cài những dị bản theo +chuẩn Ruby khác. + +RVM có trên Mac OS X, Linux, hoặc bất cứ hệ thống giống UNIX. Người dùng Windows +nên thử [pik][5] hoặc dùng RubyInstaller. Trong phân mục tiếp theo sẽ chỉ cách +cài RubyInstaller. + +Ở thời điểm bài viết này, bạn có thể cài RVM với: + +{% highlight sh %} +$ \curl -L https://get.rvm.io | bash -s stable --ruby +{% endhighlight %} + +Tham khảo tài liệu cài đặt mới RVM mới nhất trên trang [cài đặt RVM][7]. +Lệnh trên sẽ cài cả RVM và phiên bản mới nhất của Ruby. RVM cũng có thể cài +tất cả các phiên bản triển khai khác của Ruby. Để xem tất cả phiên bẩn được +hỗ trợ, gõ `rvm list known`. + +#### RubyInstaller + +Nếu bạn dùng Windows, có một công cụ giúp bạn cài Ruby: +[RubyInstaller][8]. Nó cho bạn mọi thứ bạn cần để thiểt lập một môi trường phát +triển Ruby trên nền tảng Windows. + +Để dùng RubyInstaller, download nó từ [trang download RubyInstaller][9]. Rồi +chạy trình cài đặt là xong, + +Nếu bạn muốn cài Ruby để dùng Rails, bạn nên dùng [RailsInstaller][10]. Công cụ +này sử dụng RubyInstaller nhưng cho bạn nhiều công cụ có ích cho phát triển Rails. + +### Hệ thống quản lí gói + +Nếu bạn không thể biên dịch Ruby và bạn không muốn sử dụng các công cụ của bên +thứ ba, bạn có thể sử dụng trình quản lí gói của hệ thống để cài Ruby. + +Một vài thành viên của cộng đồng Ruby không tán thành việc sử dụng trình quản lí +gỏi để cài Ruby, thay vào đó bạn nên dùng RVM. Trang này không muốn xoáy sâu vào +mặt lợi, mặt hại về việc các trình quản lý chỉ có những phiên bản cũ của Ruby +trong repositories. Nếu bạn muốn dùng bản Ruby mới nhất, bạn nên dùng đúng tên +gói hoặc dùng RVM. + +#### Ruby trên Linux + +Debian GNU/Linux hay Ubuntu dùng hệ thống quản lý gói apt. +Bạn có thể dùng nó như sau: + +{% highlight sh %} +$ sudo apt-get install ruby1.9.1 +{% endhighlight %} + +Vâng, nó sẽ cài Ruby 1.9.2 hoặc mới hơn. Nó có một ‘thư viên các phiên bản tương +thích’ của 1.9.1, thế nên tên nó được đặt như vậy. + +Nếu bạn cài gói ‘ruby’ và tùy vào bản phân phối bạn có thể cài vào phiên bản cũ hơn, Ruby 1.8 chẳng hạn. + +Arch Linux dùng trình quản lý gói tên pacman. Để lấy Ruby, dùng: + +{% highlight sh %} +$ sudo pacman -S ruby +{% endhighlight %} + +Trên các hệ thống khác bạn có thể tìm gói từ repository của trình quản lý gói, +hoặc bạn nên xem xét sử dụng RVM. + +#### Ruby trên Mac OS X + +Ruby 2.0.0 được hỗ trợ trên Mac OS X Maverick. Ruby 1.8.7 và các gem phổ dụng được +hỗ trợ trên Mac OS X Lion. Để biết thêm chi tiết, xem [Ruby wiki tại Mac OS Forge][11]. + +Mac OS X Tiger có kèm đóng gói của bản 1.8.2, và Leopard thì kèm bản 1.8.6, +nhưng, nếu ai chưa nâng cấp lên Leopard thì có rất nhiều lựa chọn khác để cài +Ruby mới nhất. + +Nhiều người dùng [Homebrew][12] như trình quản lý gói. Để lấy Ruby, chỉ cần: + +{% highlight sh %} +$ brew install ruby +{% endhighlight %} + +Bởi vì OS X dựa trên nền UNIX, thế nên việc download và cài đặt từ nguồn cũng +dễ dàng và hiệu quả như các giải pháp khác. Để giúp bạn cài các phiên bản mới +của Ruby trên nền OS X, có lẽ sẽ là ý kiến tốt hơn nếu dùng RVM. Đánh `rvm notes` +để biết thêm thông tin của các hệ thống nhất định. + +Nếu bạn tìm cách cài Ruby và (Rails), bài viết của Dan Benjamin [cho Tiger][13], +[cho Leopard][14], và [cho Snow Leopard][15] rất là hữu ích. Còn trên Lion, +[bài này][16] có thể giúp bạn. + +#### Ruby trên Solaris và OpenIndiana + +Ruby 1.8.7 cũng có cho Solaris 8 cho tới Solaris 10 trên +[Sunfreeware][17] và Ruby 1.8.7 cũng có trên [Blastwave][18]. +Ruby 1.9.2p0 có thể tìm tại [Sunfreeware][17], có điều phiên bản này đã lỗi thời. +Sử dụng RVM sẽ giúp bạn chạy phiên bản Ruby mới nhất. + +Để cài Ruby trên [OpenIndiana][19], xin dùng trình [Image Packaging System, hay IPS][20]. +Nó sẽ cài bản Ruby và RubyGems mới nhất trực tiếp từ repostiory của OpenSolaris. +Đơn giản với lệnh: + +{% highlight sh %} +$ pkg install runtime/ruby-18 +{% endhighlight %} + +Như đã nói ở trên, RVM là cách tốt để lấy phiên bản mới nhất của Ruby. + +### Các phiên bản triển khai khác của chuẩn Ruby + +Ruby, xem như là một chuẩn ngôn ngữ, có nhiều phiên bản triển khai. Bài hướng +dẫn này chỉ đề cập đến bản triển khai gốc, gọi là **MRI** (“Matz's Ruby +Interpreter”) hay **CRuby**, nhưng cũng có những bản khác trên thị trường. +Những bản khác đấy có lợi cho một số trường hợp nhất định, ví +dụ cung cấp thêm tính kết nối với các ngôn ngữ hay môi trường khác, hay có một +vài công năng đặc biệt mà MRI không có. + +Sau đây là danh sách: + +* [JRuby][21] là Ruby trên nền JVM (Java Virtual Machine), sử dụng trình biên + dịch JIT, garbage collectors, concurrent threads, các công cụ và thư viện của JVM. +* [Rubinius][22] là ‘Ruby viết trong Ruby’. Xây dựng trên nền LLVM, + Rubinius cung cấp virtual machine rất tiện dụng để các ngôn ngữ có thể dùng làm + nền tảng. +* [MacRuby][23] là phiên bản Ruby kết nối chặt với thư viện Cocoa cho OS X của Apple. + Nó giúp người dùng viết ứng dụng desktop dễ dàng. +* [Cardinal][24] là một “trình biên dịch Ruby compiler cho [Parrot][25] Virtual Machine” + (Perl 6). +* [IronRuby][26] là một triển khai “chặt chẽ trên nền .NET Framework”. +* [MagLev][27] là “một triển khai nhanh và ổn định với integrated + object persistence và distributed shared cache”. + +Một trong những triển khái đấy, bao gồm cả MRI, đều phải đạt đủ điều kiện của chuẩn [RubySpec][28]. +Đấy là một “chuẩn thực thi đầy đủ về ngôn ngữ Ruby”. + +[1]: {{ site.downloads.stable.url.gz }} +[2]: {{ site.downloads.previous.url.gz }} +[3]: {{ site.downloads.stable_snapshot.url.gz }} +[4]: {{ site.downloads.nightly_snapshot.url.gz }} +[5]: https://github.com/vertiginous/pik +[7]: https://rvm.io/rvm/install/ +[8]: http://rubyinstaller.org/ +[9]: http://rubyinstaller.org/downloads/ +[10]: http://railsinstaller.org/ +[11]: http://trac.macosforge.org/projects/ruby/wiki +[12]: http://mxcl.github.com/homebrew/ +[13]: http://hivelogic.com/articles/ruby-rails-mongrel-mysql-osx +[14]: http://hivelogic.com/articles/ruby-rails-leopard +[15]: http://hivelogic.com/articles/compiling-ruby-rubygems-and-rails-on-snow-leopard/ +[16]: http://intridea.com/2011/7/26/setting-up-ruby-dev-on-lion?blog=company +[17]: http://www.sunfreeware.com +[18]: http://www.blastwave.org +[19]: http://openindiana.org/ +[20]: http://opensolaris.org/os/project/pkg/ +[21]: http://jruby.org +[22]: http://rubini.us +[23]: http://www.macruby.org +[24]: https://github.com/parrot/cardinal +[25]: http://parrot.org +[26]: http://www.ironruby.net +[27]: http://ruby.gemstone.com +[28]: http://rubyspec.org diff --git a/vi/examples/cities.md b/vi/examples/cities.md new file mode 100644 index 0000000000..231559772a --- /dev/null +++ b/vi/examples/cities.md @@ -0,0 +1,19 @@ +--- +layout: nil +--- + +{% highlight ruby %} +# Ruby hiểu ý của bạn +# Bạn có thể làm toán +# trên toàn bộ chuỗi Array +thành_phố = [ "Sài Gòn", + "Huế", + "Đà Nẵng", + "Hà Nội" ] +đã_thăm = ["Huế", "Hà Nội"] + +puts "Tôi phải " + + "ghé thăm " + + "các thành phố:", + thành_phố - đã_thăm +{% endhighlight %} diff --git a/vi/examples/greeter.md b/vi/examples/greeter.md new file mode 100644 index 0000000000..fc03f35f5d --- /dev/null +++ b/vi/examples/greeter.md @@ -0,0 +1,22 @@ +--- +layout: nil +--- + +{% highlight ruby %} +# class ChàoMừng +class ChàoMừng + def initialize(tên) + @tên = tên.capitalize + end + + def chào + puts "Xin chào #{@tên}!" + end +end + +# Tạo một đối tượng mới +g = ChàoMừng.new("Việt Nam") + +# In ra "Xin chào Việt Nam!" +g.chào +{% endhighlight %} diff --git a/vi/examples/hello_world.md b/vi/examples/hello_world.md new file mode 100644 index 0000000000..90d919dced --- /dev/null +++ b/vi/examples/hello_world.md @@ -0,0 +1,18 @@ +--- +layout: nil +--- + +{% highlight ruby %} +# Chương trình in ra +# câu Xin Chào Thế Giới +# được viết dễ dàng +# với Ruby. Bao gồm: +# +# * Hàm "chính" +# * Xuống dòng +# * Dấu chấm phẩy +# +# Code như sau: + +puts "Xin chào thế giới!" +{% endhighlight %} diff --git a/vi/examples/i_love_ruby.md b/vi/examples/i_love_ruby.md new file mode 100644 index 0000000000..7d0bda2e2f --- /dev/null +++ b/vi/examples/i_love_ruby.md @@ -0,0 +1,17 @@ +--- +layout: nil +--- + +{% highlight ruby %} +# In ra "Tôi yêu Ruby" +nói = "Tôi yêu Ruby" +puts nói + +# In ra "TÔI *YÊU* RUBY" +nói['yêu'] = "*yêu*" +puts nói.upcase + +# In ra "Tôi *yêu* Ruby" +# 5 lần +5.times { puts nói } +{% endhighlight %} diff --git a/vi/index.html b/vi/index.html new file mode 100644 index 0000000000..444bff47ca --- /dev/null +++ b/vi/index.html @@ -0,0 +1,31 @@ +--- +layout: homepage +title: Ngỗn ngữ lập trình Ruby +lang: vi + +header: | +
+ Một ngôn ngữ lập trình động, mã nguồn mở, chú trọng vào đơn giản + và hiệu suất cao. Nó có một cú pháp rõ ràng, gần gũi và dễ viết. +
+ + Xem thêm... +