New FAMILUG

The PyMiers

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,

Sunday 27 May 2018

In ra màn hình số 1 - dùng ngôn ngữ nào nhanh/nhẹ nhất?

Nếu chỉ cần in ra mà hình số 1, ngôn ngữ lập trình nào sẽ chạy tốn ít RAM nhất?
Thí nghiệm sau sẽ cho ta thấy các chương trình cần bao nhiêu RAM để chạy và in ra số 1, kết thúc dòng bằng một dấu xuống dòng (newline \n).
Ta dùng chương trình /usr/bin/time để có cả thông số về RAM (RSS) thay vì chỉ gõ time - lệnh builtin của bash.

bash4.3

$ /usr/bin/time bash -c 'echo 1'

1

0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 3064maxresident)k

0inputs+0outputs (0major+136minor)pagefaults 0swaps

dash

$ /usr/bin/time /bin/dash -c 'echo 1'
1
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 1492maxresident)k
0inputs+0outputs (0major+67minor)pagefaults 0swaps

mawk

$ /usr/bin/time mawk 'BEGIN {print 1}'

1

0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 1932maxresident)k

0inputs+0outputs (0major+86minor)pagefaults 0swaps

Monday 16 April 2018

UEFI vs BIOS - tạo USB boot cài Windows 10 từ Ubuntu

Nói gì thì nói, Linux/Ubuntu với LibreOffice (hay tệ hơn nữa là OpenOffice)  không dành cho tất cả mọi người. Khó có một trải nghiệm gõ văn bản tiếng Việt nào sánh được với sử dụng MS Word trên Windows hay Mac. Tương tự với trải nghiệm chơi AOE (đế chế) trên Windows cũng vậy.
Vậy là phải cài Windows 10.

AOE DE

Không giống như các bản Windows trước kia, khi nghe thấy tải với cài là chỉ có Win lậu, thì nay ta đã có thể tải Windows 10 từ chính Microsoft

Không giống như các file ISO có thể tạo USB boot sử dụng lệnh dd (hybrid ISO), file ISO của Windows 10 không hỗ trợ điều này, vậy nên hành trình học hành lại bắt đầu.

Windows 10 cũng là phiên bản ở thời điểm UEFI là một điều phổ biến. Và nếu bỏ qua không chịu hiểu nó là gì, ta sẽ lại phải làm lại từ đầu vì những gì đã biết đã quá cũ.

BIOS và UEFI


BIOS là một khái niệm đã có từ quá lâu, từ những năm 1980, và bắt đầu từ năm 201x nó mới bắt đầu được dần thay thế bằng UEFI. Ở thời điểm này (2018), nếu đi mua máy tính mới, khó mà có thể tìm được máy dùng BIOS chứ không phải UEFI.

BIOS là gì?

Thursday 12 April 2018

ALSA, PulseAudio, JACK - âm nhạc trên Ubuntu/Linux

Bình thường người dùng chỉ quan tâm đến việc cài máy xong:
- có mở được nhạc không
- chỉnh âm lượng to nhỏ được không
- cùng lắm là mic có hoạt động không

là xong.

Vậy còn bất thường?
Khi bạn muốn "sản xuất nhạc" trên Linux, cụ thể là đánh đàn, thu âm, ... nhu cầu ít phổ biến này thậm chí khiến Ubuntu sản xuất 1 phiên bản gọi là "Ubuntu Studio" với các software phục vụ mục đích trên cài sẵn.

(Như KaLi là Distro cài sẵn các tool để Pentest).

Trường hợp tốt nhất là bạn cài Ubuntu Studio, và lại không quan tâm.
Nhưng ít ai dùng bản này, vậy nên ta rơi vào trường hợp tốt nhì, đã cài Ubuntu (hay 1 Linux distro nào đó).

Các từ khóa liên quan:
- snd: viết tắt của sound
- pcm: Pulse-code modulation (PCM) - một phương pháp để biểu diễn tín hiệu analog dưới dạng số - đây là tiêu chuẩn cho digital audio, compact disk, ...

ALSA

The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system.

Alsa là viết tắt của "Advanced Linux Sound Architecture", với chữ "The" ở đầu ám chỉ nó là DUY NHẤT.
Theo wikipedia, ALSA là 1 software framework, 1 phần của Linux kernel, cung cấp 1 API cho các driver của thiết bị âm thanh.
Trước/ngoài ALSA, có một API khác cho các thiết bị âm thanh gọi là OSS (Open Sound System), OSS hiện là hệ thống sound API trên các OS không phải Linux khác, như FreeBSD

Tuesday 6 February 2018

Hello 2018


# State of plans from 2017

https://gist.github.com/hvnsweeting/2fd07f82d6845d983324c9f63eaed232

- Create and deliver at least 2 online courses: hoàn toàn fail, thu video xong xem lại thấy rất chán, không hay như dạy trực tiếp.

- Get used to scientific Python: pandas, numpy, scipy, ...: done, PyMI giờ đã dạy data analysis cơ bản, viết vài bài blog về Data: https://medium.com/pymi

- Get into ML and NLP: 50% done https://medium.com/pymi, đã học lại ML và hiểu nó là gì, để làm gì, không còn hứng thú nữa nên không tiếp tục. Thay vào đó là hứng thú với ngành thống kê, từ những câu chuyện sử dụng data để phân tích ra nhiều điều bí ẩn - đọc từ quyển: Freakeconomy, how to think like a freak
- Learn some Javascript (ELM): làm xong trang tính năm tuổi với ELM: http://canchi.pymi.vn/
- Learn haskell Nth time: fail, sau khi xem xét học Haskell thì quyết định học Elixir, viết draft xong sách học elixir và code một vài toy project:
https://github.com/hvnsweeting/elixir-hackerrank-fp
https://github.com/hvnsweeting/elixir-hackerrank
https://github.com/hvnsweeting/elixir-trong-mot-giac-mo
https://github.com/hvnsweeting/bloomfilter

- Expanding DevOps skill to container based system Kubernetes, CoreOS: done, làm quen và vận hành K8S trong 2 tháng, viết blog: http://www.familug.org/2017/03/kubernetes.html
- Get Django to my real skill, learn using Django CMS: fail, không có thời gian / nhu cầu làm web. Dự định mở công ty outsource Loxocorp đã huỷ.


## 2017 là năm của những bất ngờ

Tháng 4 năm 2017, chính thức nghỉ công việc remote sau 4 năm. Dành thời gian học functional programming (Elixir), Machine Learning (coursera). Tham gia phỏng vấn hàng chục công ty lớn nhỏ, học được kỹ năng phỏng vấn bên tây:
- Vài startup/công ty Việt Nam: không nhớ tên nữa
- Wizeline (HCM): Failed - một em gái người Việt phỏng vấn English và cho fail :))
- Hello Fresh (Reallocate - Europe): Failed
- Yousician (Reallocate - Finland): Failed
- AIG (London): Failed
Kỹ năng: tỏ ra quan tâm đến công ty, khi được hỏi cuối buổi phỏng vấn "có câu hỏi gì không?" thì phải hỏi thật nhiều, cho đến hết giờ thì thôi.

- Toptal (Freelancer-Remote): Pass vòng code, fail vòng regex test -> Viết: https://github.com/hvnsweeting/evalixatir
- 1NS: failed, đòi lương cao quá. Thật sự học được Bloomfilter: https://github.com/hvnsweeting/bloomfilter
- WorldQuant VN (làm tại HN/HCM): Pass, không đi làm, lương không như mong đợi.
- OmiseGo Thailand (remote): pass, không đi làm, ngại chuyển công ty.

# Plans for 2018