Skip to main content

Posts

[Python] đổi thay

Hay bài học về sử dụng 2 python standard library: argparse & logging. Khi viết chương trình Python, nếu không phải loại script chỉ dùng 1 lần, thì có hai module mà bạn sẽ luôn hối hận nếu không dùng nó ngay từ đầu. Đó là argparse để parse các tham số đầu vào của chương trình và logging để lưu lại/ hiển thị các thông tin lúc chương trình chạy. Bởi mọi dòng code đều chỉ là tạm thời, thiết kế chương trình ban đầu cũng chỉ là tạm thời, 2 module này sẽ giúp bạn sống cùng những thứ tạm thời ấy. 1. argparse Luôn dùng argparse khi cần parse command line argument! Với một chương trình đơn giản, sử dụng sys.argv trực tiếp có vẻ nhanh và tiện, nhưng ngay khi bạn nhận ra mình cần thay đổi một option nào đó, mọi sự đẹp đẽ giả tạo đó bắt đầu đổ vỡ. Nếu đã tin vào điều này, bạn có thể chuyển qua phần 2 và bỏ qua câu chuyện nhảm nhí phía dưới.

[CLI] nối dòng

Một bạn giấu tên hỏi: làm thế nào để nối nhiều dòng thành một dòng trong linux ? Trả lời: có rất nhiều cách để làm việc này, sau đây là vài cách đơn giản. Tạo đề bài để test: # for i in {1000..1005}; do echo $i; done 1000 1001 1002 1003 1004 1005 Xem thêm cách tạo dữ liệu giả ở đây: http://www.familug.org/2012/10/generate-random-data-part1.html

[Python] đếm trong list

Tuy code Python đã lâu, nhưng giờ mình mới để ý list chỉ có 9 public method, một con số không phải là lớn, và nếu bạn không nhớ hết, đôi khi bạn sẽ thấy bất ngờ. Đề bài: đếm số phần tử True trong list bools dưới đây: In [2]: import random In [13]: nums = [random.randint(0,10) for i in range(10)] In [15]: bools = [True if i % 2 == 0 else False for i in nums] Sau khi nghĩ xong cách bạn sẽ làm, hãy bấm để xem tiếp

[bash] shell grammar (phần 1)

Theo quan sát của mình, hầu như mọi người học các ngôn ngữ lập trình đều theo cách rất cơ bản, học đầy đủ từ đầu đến cuối, sách này sách kia, nhưng với bash hầu hết người ta lại không học theo lối đó. Vì vậy có không ít điều rất đỗi bình thường của bash mà người dùng nhiều năm cũng không biết. Chuỗi bài viết này tổng hợp đầy đủ (hay ít nhất là theo man 1 bash là thế) về "cú pháp" "NGỮ PHÁP" trong bash. Bash gồm có: - câu lệnh đơn (simple command) - pipeline - list - các câu lệnh ghép (compound command) - coprocess - function definition 1. simple command là một câu lệnh bình thường, ví dụ: $ls -la $ rm -r /tmp/pigmovie 2>&1 > /dev/null TỪ KHOÁ: exit status : giá trị một chương trình / câu lệnh trả về khi chạy trong shell. Là một số nguyên, với giá trị 0 biểu diễn cho câu lệnh chạy thành công, các giá trị khác (có thể âm) biểu diễn một lỗi nào đó đã diễn ra. Bash lưu exit status của câu lệnh cuối cùng nó chạy ở biến $?, có thể echo ra để ...

[bash] shellshock - từ gốc đến ngọn

Shellshock là gì? shellshock là tên của lỗi bảo mật của phần mềm bash mới được phát hiện (tháng 9/2014) và hiện đang gây một cơn sốc trên Internet. Nó không phải sốc theo kiểu "cộng đồng mạng phát cuồng", hay "cộng đồng mạng bị sốc", mà là kiểu sốc "cộng đồng mạng" cơ bản là không tham gia vào :D Shellshock có nguy hiểm không? Cực kỳ nguy hiểm! cực kỳ là đến mức nào? Hãy google với từ khoá "shellshock dangerous" để tìm ra câu trả lời cho chính mình. Nói thẳng ra thì người dùng Windows không bị ảnh hưởng (trực tiếp), còn ai không biết thì chẳng thấy nguy hiểm gì. Giống như dịch Ebola, ai biết nó gây chết người trong vài ngày thì thấy sợ, ai không biết nó là cái gì thì làm sao mà thấy nó nguy hiểm?!!! Lỗi này có từ năm 1993 1989 [Thanks Le Manh Cuo ng ] và đến nay đã 25 năm từ khi nó ra đời, nhưng đến giờ mới được phát hiện. Hãy tưởng tượng trong 25 năm ấy, hacker có thể dễ dàng vào máy tính của bạn với quyền root (tức muốn làm gì thì ...

[python] except Exception

Đừng dùng ``except:`` trừ khi bạn biết mình đang làm gì! Đoạn code sau có thể làm bạn bất ngờ và cho thấy một trường hợp có thể bạn không muốn dùng ``except:`` mà thay vào đó là ``except Exception:`` In [1]: import sys   In [3]: try:     sys.exit(1) except Exception :     print 'In except'    ...:     An exception has occurred, use %tb to see the full traceback. SystemExit: 1 To exit: use 'exit', 'quit', or Ctrl-D. In [4]: try:     sys.exit(1) except :              print 'In except'    ...:     In except Ở phần code [4], statement "except:" đã "bắt" được một exception xảy ra khi hàm sys.exit(1) chạy (function này thực hiện công việc  raise SystemExit exception). Trong khi mục đích của người dùng CÓ THỂ là exit script với return code = 1 thì đoạn code lại nhảy vào phần handle exception. Tóm lại:

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG