Nhật ký học hỏi/mày mò hôm nay – ngày 9/11/2019

Hello all,

Hôm nay cũng đi 1 ngày đàng lại tốn mấy chục ngàn tiền cơm, update dc kha khá vài thứ hay cho =)) Note lại ở đây nhé 😜

1/ SQL

Hôm nay mình có 1 problem trong khi build 1 page mới trong project (page cũ ra đời từ lâu rồi và nó nát quá, bị chê như shit 😂 ) nên mình dc cái task này.

Cụ thể là dùng dataTable show hết entities ra thay vì code cũ nó render bt, ko pagination, behavior cùi mía,…

Problem là cần merge 2 entities khác nhau, đặt là A và B. A có cách query lấy riêng, B có cách query lấy riêng (theo code người cũ).

Vậy nên hôm nay lần đầu xài UNIONUNION ALL các thím ạ 😘

  • UNION: merge n query result lại với nhau, có distinct
  • UNION ALL: merge n query result, ko có distinct và sẽ show cả duplicated result.

Về mặt query của ng` cũ thì đọc qua thấy rất ok, nhanh và lẹ, lấy đủ data cần thiết => Ko fải lo, copy nè.

A và B nó có điểm chung kha khá, và nhất là page mình làm thì điểm chung là 90% => Best Match, UNION là tốt nhất đỡ fải nghĩ nhiều nặng đầu.

Kết quả thành công tốt đẹp. Tuy nhiên lại gặp các problems nhỏ là:

  • Ban đầu là mình để query A select 15 columns, query B select 14 columns => ko đủ với nhau => lỗi => fải select đủ số columns nếu ko UNION dc :v
  • Sau đó mình để column tứ lung tung, kết quả vẫn ra nhưng nó bị lệch =))
    • => Cần fải lưu ý SELECT cẩn thận và consistence giữa các query, trên select A,B,C thì dưới cũng fải A,B,C.
  • Dùng Query Builder (DB Facade) của Laravel khi đã gán union thì chạy count là banh, vì problem đầu tiên kia :v Fải approach một cách count tốt hơn để pagination.

2/ DataTable

Một số notes nhỏ vui :v

  • Để define 1 columns rỗng thì: {data:null, defaultContent: “”}
  • var table_obj = $(“#table”).DataTable({…}); table_obj.draw(); => draw để reload lại table (gọi ajax, render lại,…)
  • $(“#table”).DataTable({
    ….
    initComplete: func_here, /// cái hook after rendered của datatable.
    });

3/ MySQL

Rảnh rỗi đi tìm hiểu Master – Slave (Replication) và Cluster đọc các thím ạ, hay vãi. Đọc qua mới thấy core của MySQL khủng thật :v

Ngoài ra thì cũng đọc thêm về tutorials performance tuning – configuration cho phù hợp với nhu cầu và phần cứng :D. Điều này rất quan trọng cho các hệ thống medium – large vì nếu cài MySQL xong rùi để đó là nó sẽ xài minimal settings => chậm hay nghẽn là điều tất yếu.

4/ Kết luận

1 ngày dài rồi, nghỉ ngơi rồi quẩy CN thui 😀

Have a nice weekend guys.

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

Bình luận qua Facebook