Sunday, 17 March 2019

Tăng tốc Django API Service tới 90% với cacheops

1. Code chạy đúng là được rồi mà?

Code chạy đúng thôi là chưa đủ, luôn phải tối ưu thêm về mặt tốc độ.

Bạn có thể viết code đẹp như tranh, nhưng nếu một request của khách mất đến 10s để xử lý, thì 99% là khách hàng của bạn sẽ bỏ đi ngay lập tức (trừ khi bạn là trang .gov hoặc khi bạn cần đăng ký tín chỉ).

Ok, bạn tiếp tục "outsource" những phần xử lý nặng nề cho Celery hoặc RQ để khách đỡ phải nhìn màn hình trắng. Nhưng kể cả vậy thì nó cũng không làm vấn đề biến mất. Nó chỉ giúp khách của bạn biết rằng ở bên dưới bạn vẫn đang vật lộn xử lý chứ không "chết hẳn". Thay vì màn hình trắng thì giờ là hình xoay xoay.

Và lúc đó, bạn cần phải "tối ưu" lại code của mình rồi.

Và sau khi vò đầu bứt tai ngồi đoán, imort pdb; pdb.set_trace() loạn xạ, thêm các kiểu đo đếm thời gian, bạn bó tay. Vì đó không phải cách bạn nên làm để tối ưu code.

2. Analysis

Monday, 24 December 2018

Chia sẻ file nhạc/ảnh/video trong mạng nội bộ (UPnP/DLNA)

Thời điểm này, mỗi gia đình đều có vài thiết bị "thông minh", TiVi, điện thoại, laptop, máy chơi game PlayStation... mà dữ liệu nhạc / film có thể nằm mỗi cái ở một chỗ. Có nhiều cách để chia sẻ file giữa các thiết bị này với nhau mà người ta đã làm cả chục năm nay rồi.

Một cái tên trông không đẹp cho lắm nhưng đã dùng thì rất tiện: UPnP (Universal Plug and Play)

Universal Plug and Play is a set of networking protocols that permits networked devices, such as personal computers, printers, Internet gateways, Wi-Fi access points and mobile devices to seamlessly discover each other's presence on the network and establish functional network services for data sharing, communications, and entertainment.

UPnP là một bộ giao thức mạng cho phép các thiết bị trong mạng tự khám phá ra nhau và chia sẻ dữ liệu.
Giao thức mạng tức là như HTTP, FTP ...

DLNA (Digital Living Network Alliance) là tên một "guideline"/bộ hướng dẫn, bao gồm nhiều thứ và có cả UPnP.

Cài đặt:
sudo apt install -y minidlna

(UPnP có sẵn trên Windows, khỏi cài đặt gì)

Saturday, 22 December 2018

Làm full tất cả CPU bằng 1 câu lệnh

Cách nào để làm CPU chạy full load ?

Khi mang em laptop bị nóng rồi tự tắt đi sửa, các anh kỹ thuật dùng cách vào youtube và tìm video 4k rồi mở fullscreen để xem...

Cách này chưa chắc đã làm full CPU, lại yêu cầu phải có mạng internet đủ nhanh.
Những options nào khác?

1. Dùng bash
while true; do true; done
2. Dùng Python
python -c 'while True: pass'


Hai cách này nghe có vẻ ổn, nhưng chúng chỉ làm full 01 CPU. Trong khi máy bạn có thể có nhiều CPU - ngay cả các Android smartphone của năm 2016 cũng đã có 4 CPU rồi.

Lấy số CPU của máy

Khái niệm CPU được hiểu theo nghĩa khác nhau trong các hòan cảnh khác nhau.
Nếu hiểu theo nghĩa: số chương trình chạy đồng thời cùng lúc (thực sự - chứ không phải giả đồng thời bằng cách chuyển nhanh qua các chương trình khác nhau chạy mỗi cái 1 tí như cách 1 CPU làm để chạy nhiều chương trình), ta có thể gõ `top` rồi bấm 1.


Trên Linux, mọi thứ đều là file , thông tin CPU nằm trong /proc/cpuinfo

Monday, 17 December 2018

Random notes

Đi làm không có nhiều thời gian để ngồi nắn nót từng bài blog, từng chủ đề từ à tớ ê.
Vậy nên để khởi động lại việc viết lách, những bài random notes sẽ note lại những thứ nhỏ bé học được gần đây mà không sắp xếp theo chủ đề nào cả.

0. Bấm gì thay TAB để auto-complete?

Ctrl i sẽ cho hiệu ứng auto-complete tương tự.

$ bind -p | grep \\C-i
"\C-i": complete
"\e\C-i": dynamic-complete-history


1. rxvt VS other terminal?

Sunday, 2 September 2018

Giảm ánh sáng xanh gây mù trên máy tính với redshift, f.lux

Các nghiên cứu khoa học gần đây cho biết ánh sáng xanh rất có hại cho mắt và có thể khiến bạn bị mù - và ảnh hưởng tới giấc ngủ (https://phys.org/news/2018-08-chemists-blue.html)

MacOS/iOS các phiên bản mới gần đây có sẵn tính năng giảm ánh sáng xanh, tăng màu đỏ để giảm sự hại mắt.
- MacOS https://support.apple.com/en-us/HT207513
- iPhone/iPad .. https://support.apple.com/en-sg/HT202613

F.lux là một trong những phần mềm tiên phong trong lĩnh vực này, có hỗ trợ các hệ điều hành phổ biến:
Linux (also available for Windows Mac iPhone/iPad Android)

redshift là một phần mềm tương tự, có thể cài bằng apt trên 16.04:
sudo apt-get install -y redshift
Chạy redshift, màn hình sẽ tự điều chỉnh màu sắc dựa theo tọa độ địa lý của bạn.


Gì cũng được, miễn có là được.

Di chuyển trên less - xem web bằng w3m

less là lệnh để xem file (chỉ xem, không sửa).
less là phiên bản cải tiến của "more", `less is more`.

Có thể bạn chưa bao giờ gõ less, nhưng nếu bạn đã gõ man, tức là bạn đang dùng less.

Trong less hỗ trợ phím chuyển trang của cả emacs lẫn vim.
Với vim, đó là Ctrl f (forward - cuốn xuống) và Ctrl u (upward - cuốn lên).
Với emacs, đó là Ctrl v và Meta v (thường là Alt-v)  - với chữ v giống dấu mũi tên xuống, và alt tạo ra hiệu ứng ngược lại với xuống - tức là lên.

Do các tổ hợp phím (key binding) emacs được dùng khắp mọi nơi trên *NIX, sử dụng Ctrl v Meta v giúp bạn di chuyển ở hầu hết các chương trình *NIX khác, có thể kể tới trình duyệt w3m.



w3m là trình duyệt trên terminal,