Friday, 30 January 2015

Vài sai lầm hay mắc phải khi lập trình viên Python code Go

1. Quên compile =))
Thường nếu chỉ code các script nhỏ, code xong ra python filename.py chạy luôn. Nhưng Go là một compiled-language, code xong phải compile, compile xong mới chạy được.
2. Dùng '' thay vì ""
Trong Go, string nằm giữa dấu ngoặc kép "", trong Python dấu ngoặc '' hay "" đều dùng được cả. Và lỗi về việc này sẽ thường xuyên đập vào mặt: "illegal rune literal".
3. Quên không return khi định nghĩa function
Python là dynamic type language, khi viết function không cần / không thể ghi là nó sẽ trả về giá trị nào, thuộc type gì. Golang hay bất cứ static type language nào cũng cần khai báo giá trị sẽ trả về và kiểu (type) của nó.

Có nên học Go?

Wednesday, 28 January 2015

Để trờ thành Linux sysadmin ...

Làm thế nào để trở thành Linux sysadmin? học gì để trở thành Linux sysadmin?

Đăng ký học Linux Sysadmin OFFLINE tại https://pymivn.github.io/sysad101/
Khoan hãy đi vào phần trả lời, hãy tự hỏi mình vài câu sau:
- bạn có sẵn sàng thức dậy vào lúc 3h sáng vì hệ thống có sự cố ? bạn có sẵn sàng / muốn ở trung tâm dữ liệu suốt một tuần không biết ngày đêm?

Nếu câu trả lời là có, hãy tiếp tục.
Nếu có chút ngần ngại, hãy ngó qua khả năng trở thành một python developer...
Nhưng dù sao đi nữa, hãy cứ tiếp tục :))

Monday, 26 January 2015

[Vim] vim-pathogen

Nếu bạn đã dùng nó, hãy bỏ qua bài này.
Nếu chưa, hãy dành 5 phút đọc và dùng ngay.
vim-pathogen là một vim-plugin cho phép cài đặt các vim-plugin khác một cách dễ dàng. Đại khái là "khó một lần rồi thôi", sau lần này sẽ dễ. Mà thực chất thì lần này cũng chả khó gì ~.~

English
pathogen /ˈpaθədʒ(ə)n/ mầm bệnh (sub Việt : "PÁT thơ giờn")

Cài đặt
Chạy lệnh sau:
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
 
Github repo: https://github.com/tpope/vim-pathogen

Sau đó thêm dòng

Monday, 19 January 2015

[Go] select và giao thông

Bài viết này giải thích cách hoạt động của câu lệnh "select" trong Go, sử dụng ví dụ trong tutorial "A tour of Go"

1. function fibonacci
(Xem code ở dưới).
- Nhận input là 2 channel kiểu int. (channel sẽ chỉ "truyền" dữ liệu có kiểu "int").
"for { }" => tương đương với "while true" trong khác ngôn ngữ khác, ở đây lặp vô hạn.

Trong ví dụ này, câu lệnh ``select`` có chứa 2 case, theo phần giới thiệu của tutorial:
``select`` lets a goroutine wait on multiple communication operations.
 ``select`` cho phép một goroutine chọn hướng chạy dựa trên kết quả của các hoạt động giao tiếp (truyền data trong channel)
câu lệnh ``select`` sẽ block cho đến khi một trong các ``case`` của nó có thể chạy (channel hoạt động - không bị block), khi đó nó sẽ chạy các câu lệnh trong ``case`` ấy, nếu có nhiều ``case`` đều có thể chạy cùng lúc thì nó sẽ chọn ngẫu nhiên một ``case``.

Để dễ hiểu, ở ví dụ dưới tưởng tượng 2 channel là 2 con đường, nó giao nhau ở ngã tư có 1 anh cảnh sát giao thông.