Ruby đã nhân đôi "giá trị" (values) như thế nào?

Đã có bao giờ bạn tự hỏi rằng Ruby đã làm thế nào để sao chép giá trị của object, quá trình sao chép đó như thế nào? Và làm sao để biết được nó đang sao chép giá trị đó hay không? Hay đơn giản là sử dụng object đó dưới một cái tên biến khác? Mình có đọc được một bài viết có nói về vấn đề này, dưới ...

Tác giả: Trịnh Tiến Mạnh viết 21:20 ngày 11/08/2018

So sánh tốc độ các thư viện render JSON

Như đã nói trong bài viết trước, mình sẽ chia sẻ tổng hợp kết quả của các benchmark mình đã dùng để so sánh tốc độ render JSON của các thư viện phổ biến hiện nay. Dữ liệu dùng để render Các thử nghiệm của mình dựa nhiều trên ý tưởng của bài so sánh RABL và AMS của THUVA THARMA. Mình cũng chia ...

Tác giả: Hoàng Hải Đăng viết 21:20 ngày 11/08/2018

Có thể bạn biết rồi: CSS Floating và Clearfix

Nếu ai đã từng làm việc với CSS, chắc ko hề lạ gì 2 khái niệm float và clearfix, tuy nhiên có thể một số bạn cứ biết chức năng của nó và cứ dùng vậy thôi chứ ko biết (hoặc ko thèm quan tâm) tại sao dùng nó thì có tác dụng như vậy. Bài viết sau mình sẽ quay về cơ bản một tí để giải thích cụ thể ...

Tác giả: Bùi Văn Nam viết 21:20 ngày 11/08/2018

[Ghi chép] .zip, Time.current vs Time.now, và .methods

Thỉnh thoảng trên Ruby Việt Nam chat, hay trong quá trình tìm kiếm mình sẽ gặp được một số vấn đề nhỏ nhỏ, thú vị và có thể hữu dụng nên thường lưu lại (dưới dạng nháp). Từ giờ mình sẽ đưa những ghi chép lẻ tẻ lên đây với chú thích rõ ràng. Vừa là để tra cứu lúc cần thiết và hi vọng sẽ có ích cho ...

Tác giả: Hoàng Hải Đăng viết 21:19 ngày 11/08/2018

Getter and Setter method in Ruby

Bài viết này mình sẽ nói về getter & setter method và attribute trong Ruby Getter method khi lấy giá trị của instance variable Setter method khi muốn thay đổi giá trị của instance variable Xem ví dụ dưới đây: class User def initialize(name) @name = name end # getter method ...

Tác giả: Bùi Văn Nam viết 21:19 ngày 11/08/2018

Tạo API từ Lotus Framework

Tiếp tục bài viết lần trước về Bắt đầu một application với Lotus Framework & Bắt đầu một database với Lotus Framework bây giờ chúng ta sẽ tìm hiểu thêm cách tạo API từ Lotus Framework. Tại sao lại sử dụng Lotus để tạo web API Lý do đầu tiên Lotus là 1 web framework chính vì vậy nó hỗ ...

Tác giả: Hoàng Hải Đăng viết 21:19 ngày 11/08/2018

Tạo Bookshelf app với Lotus Framework

Hiện tại mình đang làm Bookshelf application nho nhỏ với Lotus Framework. Mình cảm thấy khá thú vị. Chính vì thế mỗi tuần mình sẽ viết lại cách làm tại đây. Chậc tại sao lại là từ A to Z ta??? Lý do chính là: Mình open source code của mình ở Github (https://github.com/mymai91/bookshelf) ấy, ...

Tác giả: Trịnh Tiến Mạnh viết 21:19 ngày 11/08/2018

Truyền block vào trong Ruby mà không thông qua cách &block

Chú thích : Bản dịch tiếng Việt của bài viết Passing Blocks in Ruby Without &block của Paul Mucur Có 2 cách để nhận vào block trong một hàm của Ruby. Cách đầu tiên là sử dụng từ khoá yield như sau: def speak puts yield end speak { "Hello" } # Hello # => nil Cách khác là chèn ...

Tác giả: Hoàng Hải Đăng viết 21:18 ngày 11/08/2018

Ruby 2.2 khai tử cách khai báo hash với cú pháp hash rocket

Hôm nay CI nó đỏ lè, mình nhìn vào thì thấy có báo lỗi sau: a = { 'hello': 'world' } SyntaxError: unexpected '}', expecting end-of-input để ý kỹ thì không thấy lỗi trên build từ Ruby 2.2 hay mới hơn, vọc một tí mới nhận ra là cú pháp này là cú pháp mới đc Ruby 2.2 giới thiệu, giờ không ...

Tác giả: Trịnh Tiến Mạnh viết 21:18 ngày 11/08/2018

Debug Ruby/Rails application with byebug

1. Introduction Nói đơn giản ngắn gọn thì byebug là một gem cung cấp các commands để hỗ trợ cho việc debugging ruby applications. Về chi tiết cụ thể, các bạn có thể xem thêm trên github của byebug. Các tính năng chính của byebug: Stepping: thực thi các câu lệnh theo trình tự. Nếu trước ...

Tác giả: Tạ Quốc Bảo viết 21:18 ngày 11/08/2018

Bạn biết gì về toán tử "===" triple equals (case equality operator) trong Ruby?

Bạn biết gì về toán tử "===" triple equals (case equality operator) trong Ruby? Là một lập trình viên và thường xuyên nhảy việc thì chắc hẳn các bạn cũng đã từng gặp câu hỏi so sánh == với === trong Javascript khi đi phỏng vấn rồi phải không? Nếu chưa thì mình xin nhắc lại. Trong Javascript, ...

Tác giả: Hoàng Hải Đăng viết 21:18 ngày 11/08/2018

Shadow proxy và TIP pattern

Chắc chưa nhiều bạn từng nghe đến 2 cụm từ shadow proxy và TIP pattern. Cụm từ shadow proxy thì có lẽ không thông dụng bởi vì nó được dùng chủ yếu ở Nhật, khi mà thông tin chủ yếu là bằng tiếng Nhật. Cụm từ TIP pattern thì tất nhiên là các bạn không biết rồi, vì tôi nghĩ ra mà :v ...

Tác giả: Tạ Quốc Bảo viết 21:17 ngày 11/08/2018

Bắt đầu một application với Lotus Framework

Lotus là gì? Lotus là một Ruby Web Framework mới với chú trọng vào cấu trúc tách rời với thiết kế đơn giản và dễ hiểu. Hiện tại thì Lotus vừa release version 0.3.1 Mình sẽ hướng dẫn bắt đầu 1 application với Lotus Framework Bạn vào terminal và gõ lệnh sau: Bước 1: Cài đặt lotusrb ...

Tác giả: Tạ Quốc Bảo viết 21:17 ngày 11/08/2018

Render JSON, thư viện nào mới tốt?

Đối với những người đã từng xây dựng API server, chắc hẳn ai cũng đã từng hơn một lần đau đầu với việc lựa chọn thư viện JSON. Bài viết sau đây hi vọng sẽ cho bạn cái nhìn khách quan nhất về các thư viện phổ biến trong cộng đồng ruby hiện tại. Các tiêu chí đánh giá: Có monkey-patch hay không? ...

Tác giả: Tạ Quốc Bảo viết 21:17 ngày 11/08/2018

Tham khảo về memory-profiling và WeakRef trong Ruby

Gần đây tôi có đọc bài viết về analyize memory leak trên ruby của Sam Saffron. Bài viết có đề cập đến một số kỹ thuật debug khá thú vị như Sử dụng ObjectSpace để snapshot process hiện tại ObjectSpace.each_object do |o| begin object_ids << o.object_id rescue # skip ...

Tác giả: Hoàng Hải Đăng viết 21:17 ngày 11/08/2018

Truyền lambda để sử dụng trong một hàm khác

Lần trước mình có chia sẽ với các bạn blog Tìm hiểu về Lambda. Hôm nay mình sẽ chia sẽ thêm một điểm hay khác của lambda. Như các bạn đã biết các bạn có thể sử dụng lambda để gán 1 đoạn code dưới dạng 1 variable vì vậy bạn có thể sử dụng tính năng này để giúp code của bạn có thể được ngắn gọn hơn. ...

Tác giả: Bùi Văn Nam viết 21:16 ngày 11/08/2018

Tôi đã tuột quần với Bundler như thế nào?

Vài ngày trước mình gặp phải một cái lỗi rất quái khi làm việc với Bundler và Puma. 1. Quay lại vài ngày trước ... Như ta đã biết Bundler cung cấp hai hàm Bundle.require và Bundle.setup để group và require các thư viện trong project của chúng ta. Với Bundle.setup chúng ta có thể ...

Tác giả: Hoàng Hải Đăng viết 21:16 ngày 11/08/2018

My Some Favorite Things About the Ruby Language

1. VARIABLE 2. OBJECT 3. SCOPE. 4. Meta-programming (Writing code dynamically) 5. Modules 6. Hook Methods 7. Super basic memoization Reference http://stackoverflow.com/questions/156362/what-is-the-difference-between-include-and-extend-in-ruby http://stackoverflow.com/questi ...

Tác giả: Bùi Văn Nam viết 21:16 ngày 11/08/2018

Cách tạo API với Rails (phần 2) Viết test case

Tiếp theo Cách tạo API với Rails (phần 1) Mình sẽ hướng dẫn cách test căn bản cho API mình tạo. Thật ra mà nói thì mình phải viết test trước khi làm nhưng mà để tránh việc gây khó hiểu nên mình xin mạn phép đảo ngược qui trình. Để thuận lợi hơn cho việc viết test case mình sử dụng gem ...

Tác giả: Tạ Quốc Bảo viết 21:16 ngày 11/08/2018

Tìm hiểu về Lambda

Lambda là: 1 function mà nó không có tên cụ thể. nó có thể sử dụng để gán 1 đoạn code như 1 variable nó cũng là 1 object return về 1 value giống như những function bình thường khác Cách viết của Lambda: Có 2 cách để viết 1 lambda lambda -> Ruby dùng { } để viết ...

Tác giả: Hoàng Hải Đăng viết 21:15 ngày 11/08/2018