Bài đăng

Sử dụng Transformers trong Laravel

Khi tạo REST API ta thường trả về dữ liệu dưới dạng JSON. Trong Laravel ta có nhiều cách để trả về  JSON. How We Usually Do It Thông thường, khi chúng ta tạo ra một JSON Response trong Laravel, chúng ta sẽ sử dụng Model. class User { protected $fillable = [ 'name', 'email', 'address', ]; protected $hidden = [ 'password', 'remember_token', ]; } Giả sử chúng ta muốn lấy User đầu tiên dạng JSON, thì có lẽ chúng ta sẽ sử dụng một cách nào đó như sau. $user = User::find(1); return $user; Boom! Bạn nhận JSON response của user đầu đã đăng ký. Nhưng nếu Model thay đổi trong tương lai (ví dụ: đổi address thành user_address) => JSON response cũng thay đổi. Các bên sử dụng API của bạn cũng phải thay đổi theo. Do vậy ta cần một cách khác phù hợp hơn, câu trả lời đó là dùng Transformer. Transformers Về cơ bản transformers cho bạn tạo định JSON response một cách linh động. Ngoài ra t

Trang web tra cứu documentations số 1 cho coder - DevDocs.io

Hình ảnh
Giới thiệu DevDocs.io. DevDocs.io là một trang web tuyệt vời để tra cứu documentations (docs) cho lập trình viên. Nơi đây tập hợp hầu hết các docs của các ngôn ngữ lập trình và APIs. Với khả năng tìm kiếm mạnh mẽ và nhanh chóng, bạn hầu như sẽ không phải chờ đợi khi tra cứu bất cứ hàm, thư viện nào cả. Không những thế, DevDocs.io còn cho phép tải docs về và lưu offline, do đó bạn có thể tra cứu docs bất cứ khi nào. Tuy DevDocs.io tập hợp docs của rất nhiều ngôn ngữ, nhưng có hai ngôn ngữ hay dùng là C# và Java thì trên này lại không có docs. Điều này cũng dễ hiểu vì nếu bạn code C# hay Java thì IDEs đều đã tích hợp sẵn docs cho bạn rồi, do đó việc tải docs về là không cần thiết. Hướng dẫn sử dụng. Để tra cứu docs bạn cần vào trang DevDocs.io. Giao diện hiện ra với một khung Welcome và bên trái sẽ là thanh search cùng với các ngôn ngữ lập trình và APIs. Giao diện của DevDocs.io Gõ từ cần tìm kiếm vào ô search, ví dụ ta gõ "array"  thì kết quả hiện ra:

Thuật giải Minimax trong game Tic Tac Toe

Hình ảnh
Giải thích thuật toán Minimax trong AI. Giải thuật Minimax dùng phương pháp cắt tỉa Alpha-Beta và một số giải thuật khác.

Đề thi Lập trình hướng đối tượng (OOP) đại học Bách Khoa Hà Nội

Hình ảnh
Đề thi Lập trình hướng đối tượng (OOP) đại học Bách Khoa Hà Nội K58 và K59 (năm 2015 và 2016)

Đứng giữa tuổi 20s, 10 bài học tôi cảm thấy vô giá

Hình ảnh
Ngày sinh nhật tuổi 25 càng trở nên có ý nghĩa hơn bao giờ hết khi tôi đang vi vu Bali, Indonesia -  một mình . Tôi nằm dài trên ghế sofa của 1 cái dorm tên là Bread & Jam. Nó nằm sâu trong một cái ngõ nhỏ nào đó của Kuta, Bali mà đến tài xế taxi cũng chẳng thể tìm đường vào gần nếu không có bản đồ.   7 năm trước, ở cái tuổi mới kết thúc cấp 3 và chập chững bước vào đại học, thế giới của tôi giới hạn trong Hà Nội. Việc được đi du lịch vào Đà Nẵng, hay bố mẹ cho đi máy bay vào HCM là cả một sự sung sướng. Hồi đó, tôi đã nghĩ rằng việc đi ra nước ngoài là điều gì đó lớn lao và đạt được là cả một thành tựu. 7 năm sau, tôi một mình ở một nơi cách nhà 4500km, vẫn có thể gọi appear.in bàn công việc với đối tác. Đây là công việc thử thách tôi cả về trí lực lẫn thể lực, được tạo cơ hội bơi ra biển lớn. Dĩ nhiên so sánh với nhiều bạn trẻ tài năng, cái "thành tựu" của tôi chẳng có gì nhiều nhặn. Nhưng tôi nhận ra rằng phần nào đó mình đã trưởng thành hơn so với chính bản thân

[Tut 18 - Design Pattern] Command Pattern

Hình ảnh
Command Pattern là gì? Command pattern là một mẫu thiết kế hướng dữ liệu và thuộc thể loại mô hình hành vi (behavioral pattern). Một yêu cầu được đóng gói trong một đối tượng là chỉ huy và truyền cho Invoker đối tượng. Đối tượng Invoker sẽ cho các đối tượng thích hợp có thể xử lý lệnh và chuyển lệnh cho các đối tượng tương ứng và đối tượng thực thi lệnh. Step 1 Create a command interface. Order.java 1 2 3 public interface Order {     void execute(); } Step 2 Create a request class. Stock.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public class Stock {            private String name = "ABC" ;     private int quantity = 10 ;     public void buy(){        System.out.println( "Stock [ Name: " +name+",           Quantity: " + quantity +" ] bought");     }     public void sell(){        System.out.println( "Stock [ Name: " +name+",