Wednesday, 24 May 2017

Di chuyển trong file

Là một ngôn ngữ bậc cao, Python cung cấp các function giúp người dùng có thể đọc file dễ dàng theo từng dòng hay tất cả nôi dung của file. Vậy nhưng trong những trường hợp cần thiết, Python vẫn có thể can thiệp sâu xuống dưới tầng thấp hơn và thực hiện những yêu cầu phức tạp hơn.


Mở file - text stream

Mở file trong Python sử dụng funtion open('ten_file'), mặc định ta sẽ mở file để đọc (read) ở dạng "text mode". Ta mặc định file cần mở là một file text (thường là .txt, .csv ...)
>>> f = open('/etc/hosts')
>>> print(f)
<_io .textiowrapper="" encoding="UTF-8" mode="r" name="/etc/hosts">
Ta đọc toàn bộ nội dung của file vào bộ nhớ bằng method read:
>>> content = f.read()
>>> print(len(content))
918
Sau khi đọc đến cuối file (gặp ký tự EOF - end of file, một ký tự đặc biệt đánh dấu sự kết thúc của một file), nếu ta vẫn tiếp tục đọc, sẽ chỉ thu được empty string vì không còn gì để đọc.

Tuesday, 23 May 2017

Tính năng bảo mật kinh khủng của z.com

Thằng em bên cạnh yêu hàng được quảng cáo nhiều ở Việt Nam, nó dùng z.com - một nhà cung cấp domain/host được quảng cáo khá nhiều trên các kênh thông tin.
Mọi thứ đều có vẻ ổn, cho đến một ngày nó ngồi ở The Coffee House tại một con phố thơ mộng của Hà Thành. Nó login vào z.com để quản lý website, và liên tục bị logout sau mỗi lần login rồi bấm vào một mục bất kỳ trong control panel.




Liên hệ gấp support, đội support của z.com làm việc rất nhanh và hiệu quả, thậm chí gọi điện để giải

Saturday, 20 May 2017

Học lập trình Python tại Hà Nội lớp PyMi.vn khoá 14


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

Nhập email vào http://invite.pymi.vn/ để nhận thư mời tham gia forum hỏi đáp Python, Django, Golang, Linux ...

Friday, 12 May 2017

Học Elixir trong một giấc mơ

Lý do bạn thích học Haskell, LISP, Erlang, Elixir, Ocaml, Scala... những ngôn ngữ lập trình hàm (functional programming language) có vẻ hay ho, mà không bao giờ thành công là gì?



Sau đây là vài lý do mình gặp phải:

- Quá nhiều khái niệm mới
- Nhồi nhét hết các khái niệm xong không có gì để làm
- Chọn ngôn ngữ "xịn" nhất: trong mảnh đất functional programming, rất nhiều cái tên hấp dẫn khác như Haskell, Ocaml, Racket, Scheme, CLisp, Scala,...

Để khắc phục điều này, ta sẽ:

- Chỉ tập trung vào những khái niệm đã quen thuộc, học thật nhanh, tra cứu khi cần
- Có một ý tưởng để thực hiện
- Tập trung vào Elixir vì mỗi ngôn ngữ đều có điểm mạnh/ yếu riêng, nhưng khi nắm được một ngôn ngữ, học các ngôn ngữ khác sẽ trở nên dễ dàng hơn nhiều do đã quen thuộc các khái  niệm và lối tư duy của functional programming.


Nếu không có gì để làm, nuốt xong các khái niệm, 1 tuần sau bạn sẽ lại quên.

Elixir/Erlang hoàn toàn đủ khả năng để cho bạn lập trình loanh quanh mấy thuật toán, giải các bài toán / vấn đề trên HackerRank. Nhưng điểm sáng của ngôn ngữ này, thực ra chỉ toả sáng khi ta dùng nó để phát triển các hệ thống lớn, cần chạy phân tán, hay chạy song song... Ít khi một người sẽ làm hẳn một project lớn như vậy. Vì vậy, ta thường không có đất dùng cho Elixir hay Erlang.

Một cách ứng dụng để chơi với ngôn ngữ mới nữa "nhỏ hơn", là viết các câu lệnh thực hiện một việc gì đó (CLI). Vậy nhưng Elixir/Erlang không toả sáng/ đơn giản trong công việc này, nó CÓ THỂ làm được, nhưng trên thực tế không mấy ai làm.

Ví dụ standard khi học Erlang là làm một hệ thống chat. Trên thực tế, hệ thống chat của "Whatsapp" được viết bằng Erlang hệ thống này đã được bán lại cho FaceBook với giá 19 TỶ đô la Mỹ (PS: FaceBook trước đó cũng đã mua lại Instagram - một hệ thống viết bằng Django/Python với giá 1 TỶ đô la Mỹ)

Ta có thể làm 1 website sau khi học Elixir, đây là lĩnh vực hiện tại mà Elixir mạnh nhất.

Đã xong phần ý tưởng, bây giờ hãy học Elixir.

Thực hiện trên:

```
$ elixir --version
Erlang/OTP 19 [erts-8.0.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Elixir 1.3.2
```
Xem bản đã format đẹp tại đây: https://hvnsweeting.github.io/elixir-trong-mot-giac-mo/


Friday, 5 May 2017

[Linux] Từ super user đến Sysadmin

(Hay một định nghĩa về "Linux Sysadmin")

Bạn có thể dùng hệ điều hành nhân Linux (Ubuntu, Fedora...) OSX được 5 năm, nhưng điều đó không biến bạn thành "Sysadmin".
Bạn có thể biết apt/yum chạy thế nào, dpkg làm gì, bạn biết compile kernel, upgrade kernel, làm đủ trò trên máy tính của bạn, gõ các dòng lệnh, viết bash nhoay nhoáy, nhưng điều đó không biến bạn thành sysadmin.
Bạn là một Linux Super user!



Hệ thống hỏi đáp quốc tế StackExchange có hẳn 1 trang tên là "Super User", nơi dành cho các super user:

Super User is a question and answer site for computer enthusiasts and power users.

Và một trang riêng dành cho các "Sysadmin":

Tuesday, 25 April 2017

Những câu hỏi chưa có lời đáp

(những ý tưởng của một sản phẩm nào đó)

Cuốn sách bán chạy nhất ở Việt Nam trong tháng này là cuối nào? 

Nếu tây có best-seller thì ở Việt Nam, số liệu ấy lấy ở đâu?
Trang bán sách online lớn nhất Việt Nam TIKI vẫn có vẻ quá bé để đưa ra một con số thuyết phục.
"Tôi là Bê-tô" - một cuốn truyện rất nổi tiếng của Nguyễn Nhật Ánh có ghi trên bìa rằng đã xuất bản 100.000 cuốn, vậy ở Việt Nam còn cuốn nào hơn?

Xe Hải Vân hay gặp tai nạn là đúng hay sai?

Đường lên Điện Biên có 2 hãng xe lớn, Hải Vân - một hãng từ miền xuôi lên, làm ăn rất chuyên nghiệp, nhưng đã có mấy vụ cháy xe hay lật xe. Cổ phần - công ty gồm các nhà xe tư nhân của Điện Biên gộp lại, chất lượng được cải thiện đáng kể từ khi có Hải Vân cạnh tranh.

Tin đồn chỉ là tin đồn, hay những nhận xét không có con số chỉ là cảm tính, bởi không chỉ có mỗi xe Hải Vân gặp tai nạn trên đoạn đường rất nguy hiểm từ Hà Nội lên Điện Biên.
Vậy phải lấy số liệu thống kê ở đâu để đưa ra bằng chứng bằng con số chứng minh xe Hải Vân kém an toàn hơn xe cổ phần?