Thursday, 6 July 2017

Không sudo pip, hãy virtualenv

- "Mình không cài bằng pip được..."
- "chạy sudo pip ... nhé "

Đó là những câu hỏi và trả lời thường xuất hiện, khi người ta nói về pip. Đây là vấn đề chung với những người dùng không hiểu về phân quyền trên UNIX và thường sẽ làm mọi thứ trở nên rắc rối thêm bằng cách chạy sudo.

## sudo - câu lệnh thần thánh


Một mẩu truyện nhỏ cho thấy sức mạnh của `sudo`, khi ta nói mà đối phương không nghe, thêm `sudo` vào đầu là mọi thứ đều sẽ hoạt động.

### sudo - SUperuser DO

Trên các hệ điều hành *NIX có chia ra nhiều user để nhiều người  dùng chung một máy tính. Trong đó, mọi máy tính luôn có user `root` - user có quyền năng tối thượng, thường được gọi là quyền admin hay superuser, có thể thực hiện bất kỳ thay đổi gì trên máy tính. Do có quyền năng vô hạn như vậy, nên khi thực hiện việc gì cũng ẩn chứa nguy hiểm, một câu lệnh gõ nhầm cũng có thể phá huỷ hệ thống, và nếu như ai cũng là root thì hệ thống sẽ loạn, người dùng không hiểu biết có thể cài đặt các loại virus/malware lên máy tính (hi Windows).

Để giải quyết vấn đền này, người ta sản xuất ra phần mềm tên "sudo", cho phép cấp quyền cho các user nhất định. Với sự tồn tại của sudo, người ta thay đổi cách dùng máy tính:

Friday, 30 June 2017

systemd là gì

$ whatis systemd
systemd (1)          - systemd system and service manager

systemd thuộc nhóm chương trình: system and service manager - nó quản lý (bật/tắt/khởi động lại...) các dịch vụ chạy trên máy từ lúc bật máy cho đến lúc tắt máy. Nó cũng quản lý luôn cả hệ thống (system) cụ thể là các công việc: set tên máy (hostname), cấu hình loopback interface (lo trong output của lệnh `ip addr`), thiết lập và mount các filesystem như /sys /proc ...

systemd thường là process đầu tiên được chạy sau khi bật máy (có PID = 1) và còn được gọi là init system. Các chương trình khác cùng loại có thể kể tới Upstart (trên Ubuntu đến bản 14.04), launchd của OSX, supervisor viết bằng Python, sysV là hệ thống init cổ điển viết bằng shell script...

Việc chuyển sang systemd là quyết định của Debian - distro mà Ubuntu dựa vào, vậy nên Ubuntu đã phải tiếc nuối bỏ đi đứa con ruột của mình là Upstart với một bài viết mạnh mẽ đầy nước mắt của founder Ubuntu




Không bàn cãi thêm về chuyện hơn thua, ta vẫn phải tiếp tục tiến về phía trước với Systemd.

## Các khái niệm của systemd

systemd quản lý các "unit"

Thursday, 29 June 2017

[Python] import sys

sys là thư viện builtin của Python, nó chứa các thông tin liên quan đến chính chương trình python interpreter bạn đang chạy, và cũng cho phép thay đổi một vài thông số. Nó không phải là thư viện chứa các thông tin liên quan đến hệ điều hành như nhiều người lầm tưởng (sys - system - và nghĩ là hệ điều hành).

help(sys) có thông tin đầy đủ về từng giá trị và function, hãy thử xem hệ thống của bạn có gì.

Script
import sys

SKIP = ('path', 'modules', '__doc__', 'path_importer_cache', 'meta_path')

for attr in sorted(sys.__dict__.items()):
    if not callable(attr[1]) and attr[0] not in SKIP:
        print(attr[0], ':', attr[1])

Kết quả khá dài, nhưng một vài thông tin đáng chú ý có thể kể tới:
- version: phiên bản Python đang dùng, bản C đã build chương trình Python interpreter đang chạy 
version : 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609]
- builtin_module_names: tên các module builtin
- platform : linux - nền tảng hệ điều hành đang chạy
- byteorder : little endian
- float_info : các thông số liên quan đến kiểu float

Kết quả

Monday, 19 June 2017

Python Data Science Handbook by Jake VanderPlas

Một cuốn sách viết bởi Jakevdp, một cái tên khá đặc biệt trong thế giới Python. Anh là tác giả của thư viện vẽ hình Numpy theo phong cách XKCD.

Anh vừa cho ra mắt cuốn sách "Python data science handbook" ở định dạng Ipython, có thể đọc / clone free trên GitHub

Monday, 12 June 2017

SSD là gì? mua SSD loại nào?

Mặc dù dùng SSD đã lâu (có sẵn trong máy laptop lúc mua), nhưng giờ mới là lần đầu mình tự đi chọn mua SSD. Bài này tổng hợp các khái niệm, hiểu biết về SSD giúp bạn hiểu tại sao nên dùng SSD, các ưu điểm nhược điểm là gì, và chọn chúng theo tiêu chí nào cho phù hợp khi giá thành của loại ổ cứng này ngày càng giảm.


# SSD là gì?

SSD là một loại ổ cứng cho máy tính.
Nhưng so với ổ cứng truyền thống (HDD - hard disk drive), nó có nhiều cải tiến / kiến trúc rất khác biệt.

SSD - solid state drive - một thiết bị ở trạng thái rắn (solid). Nói như vậy không có nghĩa HDD là ở thể lỏng, mà HDD ở thể "động".

## Cấu tạo cơ bản của HDD 

Trong HDD có chứa một đĩa từ, đĩa từ này sẽ quay với tốc độ rất cao  trong HDD (nhờ từ trường - 7200 vòng / phút và 5400 vòng / phút với loại cho laptop - Spindle speed: 5400 RPM Round Per Minute).

Việc quay nhiều (7200 RPM) khiến:
- tiêu thụ nhiều điện năng
- tốc độ đọc ghi đĩa thường cao hơn
- sinh nhiều nhiệt hơn (đĩa quay, ma sát sinh ra nhiệt làm nóng thiết bị)
- có thể gây tiếng ồn

Do đó các laptop thường dùng loại 5400 RPM, chậm hơn, nhưng mát và tiết kiệm điện (pin) hơn.

Sử dụng HDD còn có nhược điểm là dễ hỏng hóc khi va đập/ có di chuyển khi đĩa đang quay (máy đang bật).

HDD thường có kích cỡ 3.5 inches cho máy bàn và 2.5 inches dành cho laptop.

Đĩa mềm (Floppy disk) cũng có cấu tạo đĩa từ quay tương tự.

## Cấu tạo cơ bản của SSD

Thay vì dùng đĩa từ để lưu dữ liệu, sử dụng công nghệ lưu trữ khá giống với các USB stick [USB flash drive], khi sử dụng các thẻ nhớ flash memory (NAND flash non-volatile memory).

Một thiết bị phần cứng gọi là controller (một bộ xử lý nhúng chạy code ở firmware-level) thực hiện quản lý tương tác giữa các NAND memory với máy tính. Controller ảnh hưởng quan trọng đến hiệu suất của SSD.

Vì không sử dụng đĩa từ quay, SSD có các ưu điểm:
- không nóng
- không bị ảnh hưởng bởi va chạm, di chuyển
- ít tốn điện hơn
- sử dụng mạch bán dẫn - thường nhỏ / nhẹ

Flash-memory trước đây chậm hơn HDD, nhưng nhờ sự cải tiến về controller, nó trở nên nhanh hơn HDD nhiều lần.

### Nhược điểm

Do cấu tạo sử dụng flash-memory, SSD thường có tuổi thọ (dựa vào số lần đọc ghi) thấp hơn HDD.

Dù có nhiều thiết bị được bảo hành tới 10 năm, nhưng trong điều lệ bảo hành có ghi rõ, nếu block (một khối lưu trữ) được đọc ghi quá nhiều lần vượt quá tuổi thọ cho phép, nó sẽ bị chai (wear), và sẽ không được bảo hành vì điều đó.

## Kích thước

Phổ biến ở kích thước 2.5 Inches, có loại nhỏ hơn thì khoảng 1.8 inches (thường có chuẩn mSATA). Ngoài ra loại theo chuẩn vào ra M.2 thường có hình dáng nhỏ như 1 thanh RAM.

## I/O interface - chuẩn vào ra 

SSD có nhiều cổng giao tiếp với máy tính khác nhau.

Phổ biến nhất có các loại:
- SATA 2.0: tốc độ cho phép: 3Gb/s
- SATA 3.0: tốc độ cho phép: 6Gb/s
- SATA express
- mSATA
- PCIe
- M.2

Chọn loại phù hợp mà mainboard của bạn hỗ trợ.

## Mua SSD loại nào?

Một điều khá thú vị, là các ông lớn trong ngành sản xuất HDD đều không có mặt trong thị trường SSD này, mà hầu hết là các nhà sản xuất USB/Thẻ nhớ danh tiếng trên thị trường. Có thể kể tới: SanDisk, Kingston, Adata, ... hay những cái tên chỉ nổi lên vì SSD như Crucial, OCZ nhưng thú vị hơn cả là Intel và Samsung cũng tham gia dẫn đầu cuộc đua này.

Samsung với dòng 850 EVO đã chiếm không ít thị phần SSD và rất được ưa chuộng. Nhưng đặc biệt chú ý khi dùng dòng Samsung EVO 8XX với máy cài Linux/BSD  mặc dù lỗi này có vẻ đã được fix, hãy chắc chắn về phiên bản kernel bạn đang dùng.
Xem thêm các dòng SSD có vấn đề trên Linux

Xem bảng so sánh độ ưa chuộng các loại SSD ở đây: http://ssd.userbenchmark.com/

Nếu định dùng FreeBSD, chú ý chọn SSD nào có hỗ trợ lệnh TRIM tốt xem các SSD không hỗ trợ TRIM ở link Linux trên.

# Kết luận

Nếu bạn có ít tiền và muốn tăng tốc con máy tính đã già nua của mình thì thay HDD bằng SSD luôn là một đầu tư xứng đáng. Máy sẽ nhanh gấp cả chục lần, điều mà trước kia ta thường nhầm tưởng là phải thêm RAM hay CPU.

Hết.
HVN at http://www.familug.org/ and http://pymi.vn
Đăng ký học lập trình #Python 3 từ con số 0 tại PyMI.vn - lớp Sài Gòn khai giảng đầu tháng 8, lớp Hà Nội khai giảng giữa tháng 9. Xem chi tiết tại https://pymi.vn/ #PyMI #PyFML

Wednesday, 31 May 2017

apt changelog và wannacry

Wannacry làm mưa làm gió trên "cộng đồng mạng" của các "Windows" user.
Dùng Linux/OSX, bạn sẽ không quan tâm lắm...

Sau Wannacry, người ta lại phát hiện ra một lỗ hổng của Samba và đặt tên là "Sambacry",
lỗ hổng này cho phép một user không có quyền root nhưng có thể chạy các chương trình như root.
Vì vậy nó cũng được coi như một lỗ hổng rất nghiêm trọng.
Ubuntu ngay lập tức ra bản fix cho lỗ hổng này.


Trên Ubuntu 16.04, package sau khi đã fix có phiên bản là: released (2:4.3.11+dfsg-0ubuntu0.16.04.7)

Câu lệnh `apt-get changelog samba` giúp ta lấy thông tin thay đổi của package: