Bài đăng

Hàm "tap" trong Laravel Collection

Giới thiệu hàm "tap" Tap vs Pipe Tham khảo Giới thiệu hàm "tap" Laravel 5.4.10 giới thiệu một method mới tên tap cho phép ta "khẽ chạm" (tap) vào collection tại một điểm xác định và thao tác với kết quả trả về từ tap mà không ảnh hưởng gì tới collection gốc. Đó là lý do hàm có tên tap - chỉ chạm nhẹ thôi mà không làm gì khác :D. Tính năng này sẽ được mô tả bằng ví dụ bên dưới giúp bạn hiểu thêm. 'David Charleston', 'member' => 1, 'active' => 1], ['name' => 'Blain Charleston', 'member' => 0, 'active' => 0], ['name' => 'Megan Tarash', 'member' => 1, 'active' => 1], ['name' => 'Jonathan Phaedrus', 'member' => 1, 'active' => 1], ['name' => 'Paul Jackson', 'member' => 0, 'active' => 1] ]; Chúng ta sẽ chuyển đổi mảng trên thành collection r

Dynamic title trong Angular

Dynamic title trong Angular Trong nhiều huống ta cần thay dổi nội dung title của trang web cho phù hợp với nội dung của trang web và Angular 2 đã hỗ sợ sẵn một service cho phép thay đổi title của trang. Để set title thì ta sẽ sử dụng Title service trong @angular/platform-browser bằng cách Inject vào AppComponent thông qua constructor import { Title } from '@angular/platform-browser'; export class AppComponent { // code... constructor(private title: Title){} // code... } Trong AppComponent ta lắng nghe sự kiện thay đổi URL khi điều hướng. routeLinkChange(){ this.router.events.filter((event) => event instanceof NavigationEnd) .subscribe((evt: NavigationEnd) => { const title = this.getDeepestRoutingData(this.route.snapshot).title; this.title.setTitle(title ? title : 'Default title'); } ); } Trong đó hàm getDeepestRoutingData() sẽ lấy data được đặt trong một routing nào đó như app-routing.module

Ghi lại câu truy vấn Database trong Laravel

Hình ảnh
Logging query trong Laravel Để biết ứng dụng thực hiện câu truy vấn nào tới Database ta có thể log lại câu truy vấn đó khi nó được thực thi. Mục đích Mục đich chính của việc này là ta có thể theo dõi các câu truy vấn được executed trong việc debug và tuning/optimze câu truy vấn. Thực hiện Để log các query được thực thi ta chỉ cần bắt sự kiện khi ứng dụng execute query. Ta có thể hiện bằng cách truyền vào một hàm ẩn danh khi gọi đến method listen của class DB . Đoạn code cần được đặt trong method boot của AppServiceProvider hoặc của một service provide riêng tự tạo. <?php namespace App\Providers; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { DB::listen(function ($q) { Log::info('TIME: ' . $q->time . '

Cách sử dụng nhiều ssh key cho nhiều tài khoản với git

Hình ảnh
Cách sử dụng nhiều ssh key cho nhiều tài khoản với git Nhiều lập trình viên dùng nhiều tài khoản git với những email khác nhau như email cá nhân và công ty thì việc xác thực sử dụng https trên command line khiến mỗi lần phải gõ email và password là một nỗi khiếp sợ. Một cách giải quyết ta có thể sử dụng là sử dụng các ứng dụng quản lý mã nguồn như GitKraken, SourceTree… để thực hiện các thao tác commit, pull, push, rebase, diff… Tuy nhiên đối với những thao tác commit, pull, push, rebase… đơn giản như vậy thì bản thân mình cảm thấy không cần thiết tới những ứng dụng trên. Chỉ cần command line là đủ - nhẹ nhàng, nhanh chóng, chạy bất cứ đâu. Vậy nên trong bài viết này mình sẽ giải thích làm thế nào để khiến Git chọn đúng SSH key cho project bạn đang làm việc, bất kể remote repository ở Github, Gitlab hay Bitbucket. Bước 1: Tạo SSH key cho tài khoản mới Chuyển tới thư mục chứa khóa SSH: cd ~/.ssh Để tạo khóa mới đơn giản ta chỉ cần chạy lệnh ssh-keygen -t rsa -C "tran

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.