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


Saturday, 2 December 2017

Dùng git diff với patch

git diff hiển thị các thay đổi bạn đã thực hiện mà chưa add, commit.
Output của git diff, trông, giống như diff (câu lệnh thường để so sánh 2 file).

patch là câu lệnh nhận vào file diff, và sửa các file có thay đổi tương ứng.
Trước khi GitHub trở nên phổ biến, người ta vẫn chia sẻ "bản vá" các phần mềm bằng các file diff, người nhận được sẽ patch (vá) các chương trình dựa vào file diff nhận được.



Đây là một file diff:

Saturday, 25 November 2017

pgrep để grep process

pgrep có cài sẵn trên mọi máy tính *NIX.
Nó nằm trong gói procps, một package cơ bản, chứa các câu lệnh thường ngày như `ps`, `kill`, `top`...

$ dpkg -S `which pgrep`
procps: /usr/bin/pgrep
`pgrep` thường chỉ được dùng để lấy đầu ra, làm đầu vào cho lệnh kill, mặc định, nó trả về list các PID của process có tên ứng với từ khóa tìm kiếm:

```
$ pgrep cron
978
```

Thường sau đó sẽ là: kill -9 978
Hay trong 1 câu:

```
kill -9 $(pgrep cron)
```
Hay dùng luôn câu lệnh pkill:
```
pkill -9 cron
```

`pgrep` có option ít ai để ý tới: `-a`

Wednesday, 22 November 2017

Vượt qua giới hạn 1 deploy key của GitHub

GitHub cho phép gắn`SSH  deploy key` vào từng repo, giúp ta có thể clone repo đó về để deploy (cài đặt chạy thật). Thế nhưng mỗi key chỉ được gắn vào 1 repo duy nhất.
Đây là giới hạn rất khó chịu nếu trên 1 máy tính (máy chủ) bạn cần clone về nhiều hơn 1 repo.

Giải pháp tiêu chuẩn GitHub đưa ra là người dùng cần tạo 1 tài khỏan khác, gắn key vào, rồi add tài khỏan đó vào các repo. Như vậy tài khỏan này đóng vai trò như 1 người dùng bình thường, 1 key có thể clone nhiều repo. Xem thêm giải pháp này ở help của GitHub

Vậy nếu không tạo được tài khỏan (bạn không phải admin) thì làm sao có thể clone nhiều repo?
...
...
...

Đây là một giải pháp khá "hack", đòi hỏi có hiểu biết chi tiết về SSH, và hơi "không đẹp".

Trước tiên, cần biết rằng khi ssh sử dụng private key, SSH client sẽ thử lần lượt theo thứ tự sau: