Posts

Showing posts from March, 2022

Sự khác nhau giữa hash và encrypt

 Hash : mã hoá 1 chiều Encrypt sẽ có decrypt ( mã hoá hai chiều có thể dịch lại được) https://www.google.com/amp/s/www.geeksforgeeks.org/difference-between-hashing-and-encryption/amp/

clone 1 bảng sang 1 bảng mới trong mysql

 CREATE TABLE table_new LIKE table_old; INSERT INTO table_new SELECT * FROM table_old

composer caret version and tilde version

  Tilde Version Range ( ~ ) # ~1.2  is equivalent to  >=1.2 <2.0.0 ~1.2.3  is equivalent to  >=1.2.3 <1.3.0 Caret Version Range ( ^ ) # caret = ^ ^1.2.3  is equivalent to  >=1.2.3 <2.0.0 ^0.3  as  >=0.3.0 <0.4.0

Yield trong php

 Dùng Yield chủ yếu để save memory 1 - Cách dùng  Yield trả về 1 object dạng Generator, chứa các phần từ đã được add vào trước đó <?php function testYield() {          for($i = 1; $i<10;$i ++) {         yield 'index'.$i => $i;     } } $generators = testYield(); foreach($generators as $key => $value) {     var_dump($key, $value); } Response: string(6) "index1" int(1) string(6) "index2" int(2) string(6) "index3" int(3) string(6) "index4" int(4) string(6) "index5" int(5) string(6) "index6" int(6) string(6) "index7" int(7) string(6) "index8" int(8) string(6) "index9" int(9) 2 - Code compare memory usage giữa Yield và return 1 mảng https://medium.com/@mena.meseha/use-yield-for-memory-optimization-in-php-eafdac7e5b24

Làm thế nào để thêm 1 cột vào 1 bảng có size lớn (ví dụ hàng triệu row) trong khi down time = 0

 Keyword để google là  Alter large table without downtime https://dba.stackexchange.com/questions/182330/alter-large-table-without-downtime câu trả lời là ALTER TABLE `example` ADD `example_column` TINYINT( 1 ) DEFAULT NULL , ALGORITHM = INPLACE, LOCK = NONE ; chú ý ALGORITHM = INPLACE, LOCK = NONE chỉ apply được với column có default value là null

CQRS pattern - Thiết kế kiến trúc CQRS Command Query Responsibility Segregation

Image
 Command : câu lệnh, ở đây có thể hiểu là các Task, CronJob chạy ngầm Query : Việc thao tác với cơ sở dữ liệu Responsibility : Chịu trách nhiệm Segregation : chia tách Nói đơn giản là Thiết kế cấu trúc hệ thống gồm hai phần riêng biệt :  - Chỉnh sửa dữ liệu chạy riêng - View dữ liệu chạy riêng Ví dụ 1 use case như sau : bạn làm 1 app quản lý các order ( đơn đặt hàng) của 1 nhà hàng online. Đơn đặt hàng này dựa trên các thông tin có liên quan sau :  1- Khách hàng ( ví dụ người đặt hàng) 2- Menu ( đặt món gì) 3 - Bếp (Bếp đã hoàn thành món ăn ngày giờ nào...) 4 - Delivery, Ship ( Đã ship đến cho khách chưa, ...) 5- Kế toán ( Khách đã trả tiền, thanh toán chưa...) ... vân vân và mây mây App này có yêu cầu hiển thị chi tiết về đơn hàng như sau Mã đơn hàng Người đặt Ngày đặt Địa chỉ ship Tình trạng đơn hàng Số tiền đã thanh toán OD0001 Nguyễn Văn A Ngày đẹp trời Nhà mặt phố Đã ship xong 100k OD000...