Thảo Trịnh -
  • Agile
  • Chuyện code
    • Design Pattern
    • Blockchain
  • Chuyện đọc
Agile
Chuyện code
    Design Pattern
    Blockchain
Chuyện đọc
  • Agile
  • Chuyện code
    • Design Pattern
    • Blockchain
  • Chuyện đọc
Thảo Trịnh -
Laravel

Route::Basic 2

Route Parameters

Required Parameters
Đôi khi bạn cần control được các thành phần của URI trong route của bạn. Ví dụ bạn có thể cần truy cập dữ liệu user's ID từ URL. Bạn có thể định nghĩa một route với tham số như sau:

Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});

Bạn có thể định nghĩa nhiều tham số trong route:

Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    //
});

Các tham số route luôn được đặt trong cặp ngoặc {}, và nó chỉ nên chứa các kí tự, không nên chứa kí tự -. Trong trường hợp cần sử dụng kí tự -, sử dụng dấu _ để thay thế. Các tham số này được injected vào trong callbacks/controller theo thứ tự tương ứng.
Optional Parameters
Đôi khi bạn cần tạo một tham số route, nhưng tham số này có thể là tùy chọn (có/không). Bạn có thể thực hiện điều này bằng cách đặt ? sau tên tham số. Để chắc chắn chúng ta truyền cho biến route này một giá trị mặc định:

Route::get('user/{name?}', function ($name = null) {
    return $name;
});

Route::get('user/{name?}', function ($name = 'John') {
    return $name;
});

Regular Expression Constraints
Bạn có thể constrain định dạng các tham số route của bạn bằng cách sử dụng phương thức where trong một route instance. Phương thức này có 2 đối số là tên của tham số và biểu thức regular expression ràng buộc tham số này.

Route::get('user/{name}', function ($name) { // })->where('name', '[A-Za-z]+'); Route::get('user/{id}', function ($id) { // })->where('id', '[0-9]+'); Route::get('user/{id}/{name}', function ($id, $name) { // })->where(['id' => '[0-9]+', 'name' => '[a-z]+']); Xem thêm

June 20, 2018by thaotrinh
Blockchain

Tạo ứng dụng blockchain đầu tiên với C#

Thông qua bài viết này mình sẽ hướng dẫn các bạn làm quen và hiểu thêm về công nghệ Blockchain.

Mục đích

– Tạo hệ thống Blockchain đơn giản nhất.
– Tạo hệ thống mining (poor of work) đơn giản.
– Khám phá thêm về Blockchain.

Kiến thức cần chuẩn bị: OOP, biết 1 ngôn ngữ hướng đội tượng.
Ok giờ xắn tay vào việc nào

Making the Blockchain.

Một blockchain là danh sách, chuỗi các khối (A blockchain is just a chain/list of blocks). Mỗi block trong blockchain sẽ chứa chữ ký số của nó, chữ ký số của khối trước nó và dữ liệu của khối (dữ liệu giao dịch là một ví dụ).

Hash = Digital Signature.

Mỗi khối không chỉ chứa mã hash của khối trước nó mà nó còn chứa mã hash của chính nó, được tính toán dựa trên mã hash của khối trước nó. Nếu dữ liệu khối trước đó bị thay đổi (khối A), việc này dẫn tới thay đổi mã hash của khối A, do mã hash được tính toán dựa trên data này. Việc này dẫn tới sự thay đổi mã hash của tất cả các khối trong chuỗi. Việc tính toán và so sánh giúp chúng ta phát hiện ra bất kì sự thay đổi nào trong blockchain.

Điều này có nghĩa là gì? – Nghĩa là khi thay đổi dữ liệu của 1 block thì sẽ dẫn tới thay đổi dữ liệu của rất rất nhiều block, và dãn tới thay đổi chain (break the chain).

Giờ chúng ta sẽ thừ bắt đầu xây dựng một hệ thống Blockchain đơn giản.

Tạo project đặt tên là NoobChain

Thêm class Block để xây dựng blockchain

class Block
{
        public String hash;
        public String previousHash;
        private String data; // Trong ví dụ này chúng ta chỉ lưu data là một thông báo.
        private long timeStamp;
        

        //Block Constructor.
        public Block(String data, String previousHash)
        {
            this.data = data;
            this.previousHash = previousHash;
            this.timeStamp = DatetimeHandle.GetTime();            
        }     

}

Như bạn thấy Block cơ bản của chúng ta chứa một chuỗi hash sẽ dùng để lưu chữ kí số. Một biến previousHash để lưu hash của khối trước nó, và dữ liệu của khối.

Bước tiếp theo chúng ta sẽ tiến hành tạo chữ ký số.
Tạo lớp HashSha256, áp dụng thuật toán sha256 để sinh chuỗi, với nội dung như sau:

class HashSha256 { public override string Hash(string strInput) { try { var crypt = new System.Security.Cryptography.SHA256Managed(); var hash = new System.Text.StringBuilder(); byte[] crypto = crypt.ComputeHash(Encoding.UTF8.GetBytes(strInput)); foreach (byte theByte in crypto) { hash.Append(theByte.ToString("x2")); } return hash.ToString(); } catch (Exception e) { throw e; } } } Xem thêm

June 15, 2018by thaotrinh
Laravel

Route::Basic

Basic Routing

Các routes cơ bản của Laravel chấp nhận một URI và một Closure, nó cung cấp một phương thức rất đơn giản và dễ hiểu để định nghĩa routes như sau:

Route::get('foo', function () {
  return 'Hello World';
});

 
The Default Route Files
Tất cả các routes của Laravel được định nghĩa trong file route được đặt trong thư mục routes. Những files này được tự động load bởi framework. routes/web.php định nghĩa các routes cho ứng dụng web của bạn. Các routes này được gán cho nhóm web middleware, nhóm này sẽ cung cấp các tính năng như sesion state và CSRF protection. Các routes trong file routes/api.php là stateless - không có trạng thái và được gán cho nhóm api middleware

Hầu hết các ứng dụng, bạn sẽ bắt đầu bằng việc định nghĩa routes trong file routes/web.php. Routes được định nghĩa trong file routes/web.php có thể được truy cập bằng URL trên trình duyệt. Ví dụ, bạn có thể truy cập route tới http://your-app.test/user trên trình duyệt như sau:

Route::get('/user', 'UserController@index');

Routes được định nghĩa trong file routes/api.php được lồng trong một route group bởi RouteServiceProvider. Trong group này, /api URI prefix tự động được thêm vào, vì thế bạn không cần thêm nó một các thủ công cho mỗi route trong file. Bạn có thể chỉnh sửa prefix và các tùy chỉnh của route group bằng cách chỉnh sửa lớp RouteServiceProvider.
 
Available Router Methods
Router cho phép bạn đăng ký các routes trả về từ bất kì giao thức HTTP nào:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

Đôi khi bạn cần đăng ký một route chấp nhận nhiều giao thức HTTP. Trường hợp này bạn có thể sử dụng phương thức match. Hoặc bạn thậm chí có thể đăng ký một route cho phép nhận response từ tất cả các giao thức HTTP bằng cách sử dụng phương thức any:

Route::match(['get', 'post'], '/', function () {
    //
});

Route::any('foo', function () {
    //
});

 
CSRF Protection
Bất kì giao thức POST, PUT, DELETE nào được gửi qua web route sẽ phải kèm theo một csrf token. Nếu không request này sẽ bị từ chối.

<form method="POST" action="/profile">
    @csrf
    ...
</form>

Redirect Routes
Nếu bạn muốn chuyển hướng tới một URI khác, bạn có thể sử dụng Route::redirect. Sử dụng phương thức này bạn không cần phải định nghĩa một route đầy đủ hoặc một controller để thực thi redirect đơn giản:

Route::redirect('/here', '/there', 301); Xem thêm

June 14, 2018by thaotrinh
Laravel

Laravel Request Lifecycle

Introduction

Khi bạn sử dụng tools trong “thế giới thực”, bạn sẽ cảm thấy tự tin hơn nếu bạn hiểu cách mà tool đó hoạt động. Trong các ứng dụng phần mềm cũng vậy, khi bạn hiểu về chắc chức năng phần mềm của mình, bạn sẽ cảm thấy thoải mái và tự tin khi sử dụng chúng.

Mục tiêu của tài liệu này là giúp bạn có được kiến thức (high-level) tổng quan tốt về cách mà Laravel framework làm việc. Bằng cách tìm hiểu tổng quan về framework, mọi thứ có vẻ sẽ bớt “ảo diệu” hơn và bạn sẽ trở nên tự tin khi xây dựng ứng dụng của mình. Nếu bạn không hiểu tất cả các điểu khoản ngay lập tức, đừng vội đầu hàng (don’t lose heart!). Hãy thử tìm hiểu từng khái niêm cơ bản trước và xem cách chúng hoạt động, và kiến thức của bạn sẽ tăng dần lên khi bạn khám phá các phần khác của tài liệu. Xem thêm

June 13, 2018by thaotrinh
Lập trình

Tạo đối tượng trong C# từ url API hoặc Json String

Lang thang trên mạng tình cờ vớ được bí kíp. Đôi khi trong các dự án các bạn cần tạo đối tượng với dữ liệu từ chuỗi string dạng JSON.

Đơn giản rồi, với 3 bước nho nhỏ sau công việc của các bạn sẽ đỡ hơn rất nhiều:

  1. Vào link http://json2csharp.com/ (lạy giời nó đừng chết sau n times mình dùng)
  2. Paste chuỗi JSON vào (hoặc bạn có thể paste thẳng URL của API vào)
  3. Click Generate và xem kết quả.

Các bạn có thể thử với link này nhé: http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b6907d289e10d714a6e88b30761fae22

Awesome!!! Tưởng không phê mà phê không tưởng. Xem thêm

June 6, 2018by thaotrinh

Tìm kiếm

Bài viết mới

Giá trị của Scrum Master trong case study của Leflair

Giá trị của Scrum Master trong case study của Leflair

Vì sao bạn nên phân tích đối thủ để đưa ra giải pháp thiết kế tốt hơn

Vì sao bạn nên phân tích đối thủ để đưa ra giải pháp thiết kế tốt hơn

Scrum Master làm gì trong suốt một ngày?

Scrum Master làm gì trong suốt một ngày?

Tôi có thể làm gì trong những năm 20 tuổi để giúp phát triển bản thân và cả sự nghiệp của tôi?

Tôi có thể làm gì trong những năm 20 tuổi để giúp phát triển bản thân và cả sự nghiệp của tôi?

Sách đã đọc

Sách đã đọc

Chuyên mục

  • Agile learn
  • Chuyện đọc
  • Gã
  • Lập trình
    • .NET
    • Blockchain
    • Database
    • Design Pattern
    • Lập trình cơ bản
    • Laravel
  • Leading
  • Product
    • Design
  • Uncategorized

Mọi người quan tâm

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C#  – p2

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C# – p2

Tạo ứng dụng blockchain đầu tiên với C#

Tạo ứng dụng blockchain đầu tiên với C#

Cài đặt và cấu hình Apache, MySQL trên macos

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C#  – p3

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C# – p3

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C# – p1

Nguyên lý SOLID trong lập trình hướng đối tượng – và ví dụ sử dụng C# – p1

Tags

Agile Apache blockchain C# Case study CQRS Daily Scrum database DDD deadlocks Dependency Injection Dependency Inversion Design Pattern docker ebook fix mindset git Good Developer growth mindset kinh tế Pair programing Repository Retrospectives Risk Management Scrum Scrumban Scrum Guide Scrum Master Senior Senior Developer singleton solid Technical debt UI UnitOfWork UX Viết Động lực

Lịch sử

  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • September 2020
  • August 2020
  • June 2020
  • April 2020
  • March 2020
  • December 2019
  • November 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • November 2018
  • September 2018
  • July 2018
  • June 2018
  • March 2018
  • January 2018
  • December 2017
  • June 2017
  • May 2017
  • October 2016
  • August 2016
  • June 2016
  • March 2016
  • January 2016
  • December 2015
  • March 2015