Posts

Làm sao để viết code PHP dễ đọc

Giới thiệu với các bạn trang này  https://writing-readable-php.com/ rất hữu ích để viết code php dễ đọc. Để viết code dễ đọc thì nguyên tắc là nên chú ý những điều nhỏ nhất, chi tiết nhất

Câu query json field match với 1 điều kiện nhất định mysql

 Ví dụ có bảng customer, trong đó chúng ta muốn lưu dữ liệu metadata dạng json trong cột `data` {   "field_1": "value 1" } câu query dưới đây sẽ lấy ra tất cả dữ liệu với field_1 = value 1  SELECT * FROM customer WHERE JSON_EXTRACT(data, "$. field_1 ") = " value 1 ";

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