Sử dụng XPath với Capybara để lấy và kiểm tra DOM element có chứa chuỗi

Capybara là công cụ lợi hại cho dân lập trình Web với Ruby, thư viện này có đi kèm các hàm selector giúp người dùng dễ dàng tương tác với các phần tử DOM. Thư viện cung cấp 2 kiểu tìm kiếm DOM, thứ nhất là sử dụng CSS Selector và thứ hai là XPath. Hầu hết các trường hợp đơn giản thì chỉ cần sử ...

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

Road to Ruby Silver (Part 5)

This is just some note for who want to get Ruby Silver certification. :) Part 1 Part 2 Part 3 Part 4 5.1. Object class 5.1.1. Object's id a = "foo" a.object_id → 70257771679880 a.__id__ → 70257771679880 Use object_id, we can know the different between String ...

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

Prototype chức năng mới cho webapp trên rails với chanko

Là một web developer nói chung và ruby on rails developer nói riêng, bạn chắc hẳn sẽ gặp nhiều khó khăn khi muốn thêm chức năng mới vào hệ thống hiện tại. Khó khăn đáng nói đến nhất bao gồm: bạn phải add sao cho chức năng mới được add vào sẽ dễ extend, dễ tháo bỏ khi không cần thiết, và việc add ...

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

Ruby operators

1) Toán tử operators + : Cộng - : Trừ * : Nhân / : Chia % : Chia lấy dư ** : Luỹ thừa 2) Gán operators = : c = a + b += : c += a -> c = c + a -= : c -= a -> c = c - a *= : c *= a -> c = c * a /= : c /= a -> c = c / a %= : c %= a -> c = c % a **= : c **= ...

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

Giới thiệu hàm aggregate_failures() trong RSpec

Test framework của RSpec luôn làm tôi bất ngờ với nhiều hàm dường như rất ít được biết đến nhưng khá là hữu dụng. Hôm nay trong khi phỏng vấn một ứng cử viên cho vị trí junior dev tại cty, tôi học lỏm được hàm expectation tên #aggregate_failures. Vậy hàm này là gì? Dùng cho trường hợp nào. ...

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

Khai thác nhạc từ nguồn zingmp3 và nhaccuatui (Đã Dừng Hoạt Động)

Giới Thiệu Dự án này là mã nguồn mở github. Thời gian này, chỉ có hai nguồn được phát triển trước đó là ZingMp3 và Nhaccuatui, các nguồn nhạc sẽ được phát triển tùy theo nhu cầu của lập trình viên. Các thông tin bài hát bao gồm name, singers, lyrics, song's page và đặc biệt song's source ...

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

Sự khác nhau giữa Buffers và Cached

1. Trả lời ngắn Cached là kích thước của page cache. Buffers là kích thước của in-memory block I/O buffers. 2. Trả lời dài: Cả Cached và Buffers đều có ý nghĩa là vùng lưu trữ tạm, nhưng mục đích sử dụng thì khác nhau, tổng quan thì có một số điểm sau: Mục đích của cached là ...

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

Giới thiệu hàm Module#module_function

Trong Ruby, có 2 cách sử dụng method của module. Cách thứ nhất là 'nhúng' (mixin) và dùng như instance method và cách thứ hai là dùng theo kiểu module function. Sẵn tiện tôi cũng đưa ra 2 ví dụ cụ thể cách dùng: Mixin và dùng như instance methods module MyLibrary def hello puts "Hello ...

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

Service Object là gì? Sử dụng nó như thế nào?

Thông thường khi bắt đầu làm một ứng dụng web với Ruby on Rails, với những yêu cầu đơn giản, việc thực thi business logic trong model có thể không gây ảnh hưởng gì lớn đối với hệ thống, cũng như việc đọc, hiểu logic của ứng dụng. Tuy nhiên khi mà yêu cầu tăng lên, các chức năng mới được thêm vào, ...

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

Ruby on Rails Security: Best Practices

Framework được thiết kế với mục đích chính là để giúp các web developer xây dựng các ứng dụng web. Mặc dù có rất nhiều Framework có sẵn nhưng khản năng phát hiện ra các lỗ hổng như CSRF hoặc giả mạo nội dung (chúng ta không nói về XML Entity và Paramater Pollution) là rất cao. Mặc dù, một số ...

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

Nhập môn Design Pattern (Phong cách kiếm hiệp)

Nhập đề Kinh thư ghi lại rằng, con đường tu chân có 3 cảnh giới: Luyện khí, Trúc cơ và Kết đan. Luyện khí là quá trình rèn thân luyện thể, cho phàm thân kiên cường dẻo dai. Trúc cơ là quá trình du nhập thiên địa linh khí vào thể nội, giúp khai thông kinh mạch. Khi thiên địa linh khí trong đan ...

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

.nil? .empty? .blank? và .present?

Theo lời khuyên của anh Trung, mình sẽ cập nhật lại bài viết này trong thời gian gần, giải thích một cách rõ ràng hơn tại sao lại có các hàm .blank? và .present?, ảnh hưởng của nó tới các hành vi của truthy/falsey -- .blank? và .present? là những hàm mình thường xuyên sử dụng từ khi mới ...

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

Ruby Internal - Code Ruby của bạn được thực thi như thế nào (Phần 2)

Về phần 1 Ở phần trước chúng ta đã nghiên cứu về tokenization của ngôn ngữ Ruby, ở phần này chúng ta sẽ đi vào Parsing Cũng như đã nói ở phần trước, bài này là một trong chuỗi bài #hardcore , vốn là một group học nhóm được thành lập để khuyến khích mọi người tìm hiểu về những vấn đề khó ...

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

Tìm hiểu về sự khác nhau giữa eql? và equal? trong Ruby

Tìm hiểu về sự khác nhau giữa eql? và equal? trong Ruby Tiếp nối bài viết Bạn biết gì về toán tử "===" triple equals (case equality operator) trong Ruby? , ở bài viết này mình sẽ giải thích rõ hơn về sự khác nhau giữa eql? và equal? trong Ruby. Các bạn có thể đọc lại Bạn biết gì về toán ...

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

Thuật toán Floyd-Warshall để duyệt đồ thị

Khi nhắc đến các thuật toán duyệt đồ thị, có thể bạn đã biết (và đã từng implement) Depth-First Search, Breadth-First Search, hoặc Dijkstra. Xin nhắc lại về ý nghĩa của từng thuật toán, đứng ở khía cạnh bài toán tìm đường đi ngắn nhất. DFS dùng để giải các bài toán mà chúng ta muốn tìm được lời ...

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

Ruby Internal - Code Ruby của bạn được thực thi như thế nào - Compilation (Phần 3)

Về phần trước Đây là một bài nằm trong chuỗi #hardcore của nhóm Ruby Vietnam Xem phần 2 tại đây Xem phần 1 tại đây Ruby Compilation Như mình đã giới thiệu ở phần 1, Ruby compile code Ruby thành bytecode, còn gọi là YARV (Yet Another Ruby VM) instructions, và được thực thi ở YARV. Ở ...

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

Road to ruby silver (Part 3)

This is just some note for who want to get Ruby Silver certification. :) Part1 Part2 4.1. Define a class 4.1.1. Syntax class <<ClassName>> end Sample: class Foo def initialize a = 0 @a = a end def method1 @a end end foo1 = Foo.new(1) foo1.method1 ...

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

Câu trả lời vẫn luôn là còn tuỳ..

Mình biết rất nhiều bạn rất say mê và tò mò với những mảng công nghệ mới. Một trong những câu hỏi mình tiếp nhận là có nên dùng A thay vì B hay ngược lại. Có lẽ người hỏi không biết được đây là những câu hỏi khá là hóc nếu người hỏi không cung cấp được đầy đủ các thông tin về ứng dụng cho người ...

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

Bắt đầu như thế nào với Ruby & Rails

Bắt đầu như thế nào với Ruby & Rails Xin chào các bạn. Hiện tại mình đang tự học lập trình Ruby & Rails. Mình học theo link http://guides.rubyonrails.org/getting_started.html#creating-a-new-rails-project để tạo một blog với các chức năng CRUD chính. Mình chỉ học và làm theo dạng step by ...

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

Road to ruby silver (part2)

This is just some note for who want to get Ruby Silver certification. :) Part1 2.3. String (文字列) a = "abcd" p a → "abcd" b = "ab""cd" p b → "abcd" b = "ab" 'cd' p b → "abcd" a = 1 p "a = #{a}" → a = 1 p 'a = #{a}' → a = #{a} "100".to_i → ...

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