Python cho người Việt

Python cho người Việt

Entries in the Category “Tin tức”

Kết quả Bắn Suồng

written by Nguyễn Thành Nam, on Dec 13, 2010 2:54:00 PM.

Ngày hôm qua tại Đại học RMIT, nhóm PCNV đã tổ chức thi Bắn Suồng trực tiếp (cùng với việc truyền hình trực tiếp) cuộc tranh tài Bắn Suồng.

Kỳ thi này nhận được bốn bài tham dự: fire_sheep, checker, randome, và bibo. Tuy nhiên, bài bibo vì gửi vào 0152 sáng 12/12 nên đã bị loại.

Kết quả trận tranh tài căng thẳng, và đầy hồi hộp (lẫn may mắn) là:

  1. fire_sheep thắng checker
  2. fire_sheep thua randome
  3. checker thua randome

Như vậy, “suồng” randome đã đăng quang vô địch kỳ thi lần này. Tác giả của randome, không ai khác, chính là tác giả của tin này :-D.

Hẹn gặp các bạn vào những kỳ thi thú vị tới.

Tái bút: Mã nguồn của Bắn Suồng và các bài tranh tài có thể được tải về tại http://www.vithon.org/static/ban-suong.zip.

Tranh tài Bắn Suồng

written by vithon, on Nov 26, 2010 10:23:00 AM.

Cập nhật: Phiên bản battleship.zip cũ có lỗi. Các bạn tải về bản mới hoặc sửa dòng player2_mod = __import__(opts.player_1) thành player2_mod = __import__(opts.player_2). Xin cáo lỗi vì sự phiền toái này.

Nhóm PCNV hân hạnh tổ chức một cuộc thi mới: Tranh tài Bắn Suồng!

Bắn Suồng (xin lỗi vì sai chính tả, nhưng để giữ chữ viết tắt BS nên tôi đành phải đặt tên trò chơi là vậy) không phải là một trò chơi thông thường. Để chơi trò chơi này, các bạn phải viết mã bằng ngôn ngữ… (cho xin 500 đồng trống và kèn cho hào hứng tí nào) Python để điều khiển các đối tượng trong trò chơi.

Các bạn có thể tải trò chơi về tại địa chỉ http://www.vithon.org/static/battleship.zip.

Cuộc thi Bắn Suồng được tổ chức với thể lệ như sau:

  1. Mô-đun (các tập tin .py) tham gia phải gửi về cho admin+thư-rác@vithon.org (bỏ phần + thư rác) trước ngày 12 tháng 12 năm 2010.
  2. Các bài thi này sẽ được kiểm tra trước khi được chấp nhận cho thi.
  3. Các bài tham dự sẽ đấu vòng tròn tính điểm. Thắng sẽ được 3 điểm, hòa được 1, và thua được 0 điểm.
  4. Các trận đấu sẽ được truyền hình (qua web) trực tiếp vào ngày 12 tháng 12.
  5. Vùng biển sẽ có kích thước ngẫu nhiên với độ rộng và dài tối thiểu là 10, và tối đa là 15.
  6. Một giải nhất sẽ nhận được 01 chiếc áo Vithon miễn phí, và có thể mua thêm 01 chiếc áo khác với giá ưu đãi 100.000!
  7. Quyết định của ban tổ chức là cuối cùng. Xin được phép không nhận khiếu nại.

Để trao đổi về cuộc thi này, cũng như các vấn đề liên quan đến lập trình Python, các bạn có thể sử dụng diễn đàn của nhóm hoặc liên hệ qua IRC.

Nhóm PCNV rất mong nhận được sự tham gia nhiệt tình của các bạn.

Áo Vithon thành phẩm

written by vithon, on Nov 24, 2010 12:26:46 PM.

Sau một số trục trặc không lường trước, nhóm PCNV cũng đã nhận được áo Vithon thành phẩm từ nhà in. Nhóm xin được hân hạnh giới thiệu với các bạn một số ảnh chụp áo thật sau:

Mặt trước:

http://va8.upanh.com/thumbpic/16.734.21073133.eds0/img20101124110821.700x0.jpg

Mặt sau:

http://va9.upanh.com/thumbpic/16.734.21073134.MGr0/img20101124110836.700x0.jpg

Nhóm PCNV xin cảm ơn nhóm mẫu Mập Ốm đã mua ủng hộ hai chiếc áo cỡ L và S để tạo ra được hai bức hình đẹp “rạng ngời” này. Một số người đã mặc áo đa số đều có chung nhận định áo mặc thoải mái lắm.

Áo sẽ được bán với giá 185.000 đồng cho những người đang đi làm, và 150.000 đồng cho các bạn học sinh, sinh viên đại học trở xuống. Tại TPHCM, mong các bạn ghé địa chỉ 224 Nguyễn Thái Bình, phường 12, quận Tân Bình, trong giờ làm việc từ thứ hai đến thứ sáu mỗi tuần. Các bạn ở tỉnh khác xin vui lòng liên lạc với nhóm PCNV.

Áo Vithon cũng sẽ được sử dụng làm giải thưởng cho những kỳ thi sắp tới của nhóm PCNV. Mong các bạn hăng hái tham gia giựt giải.

Giới thiệu áo của nhóm PCNV

written by vithon, on Sep 10, 2010 11:17:00 AM.

Trong mấy tuần vừa qua, nhóm PCNV đã huy động toàn bộ sức lực để hoàn thành mẫu thiết kế áo thun chính thức của nhóm. Xin hân hạnh giới thiệu cùng các bạn thiết kế đầy ấn tượng này.

Mặt trước

Mặt sau

Hiện áo đang được đưa đi in với số lượng 50 chiếc. Nếu bạn có nhu cầu muốn đặt mua áo thì vui lòng liên lạc với nhóm PCNV trong diễn đàn, hoặc qua kênh IRC #vithon ở máy chủ irc.freenode.net (http://webchat.freenode.net). Giá dự tính của mỗi chiếc áo sẽ ít hơn một trăm năm mươi nghìn đồng. Do số lượng có hạn nên áo sẽ được phân phát theo phương thức nhanh tay thì còn.

Nhóm PCNV không chịu trách nhiệm nếu người mặc áo bị các lập trình viên khác gây chuyện!

Nhóm PCNV trân trọng cảm ơn công sức thâu đêm suốt sáng nhiều tuần liền của các thành viên năng nổ sau:

  1. Kịch bản: Hoàng Quốc Thịnh
  2. Đạo diễn: Nguyễn Thành Nam
  3. Hiệu ứng: Lê Ngọc Hiếu
  4. Sản xuất: Phan Đắc Anh Huy
  5. Chỉ đạo nghệ thuật: tập thể diễn viên hài PCNV
Chúc các bạn vui vẻ!

Cuộc thi viết chương trình theo dõi mã máy

written by Nguyễn Thành Nam, on Jul 22, 2010 12:13:00 PM.

Một người bạn của chúng ta đã có nhã ý tài trợ cho một cuộc thi nhỏ.

Mục tiêu: Viết một công cụ bằng ngôn ngữ Python để thực hiện việc lưu lại những lệnh gọi hàm ở mức hợp ngữ trong khi thực thi của một chương trình thông thường khác.

Ví dụ: Với đoạn mã tương tự như sau:

0x08048552 <main+110>:	mov    DWORD PTR [esp],eax
0x08048555 <main+113>:	call   0x80483d8 <printf@plt>
0x0804855a <main+118>:	mov    eax,0x0
0x0804855f <main+123>:	leave  
0x08048560 <main+124>:	ret 

thì chương trình sẽ in ra thông tin tương tự (có thể tùy ý chỉnh sửa cho đầy đủ hơn) như sau:

* Before printf()
--------------------------------------------------------------------------[regs]
  EAX: 0x08048646  EBX: 0x002B2FF4  ECX: 0x00000003  EDX: 0xBFFFEF9C  
  ESI: 0x00000000  EDI: 0x00000000  EBP: 0xBFFFF0A8  ESP: 0xBFFFEF80  
 

* After printf()
--------------------------------------------------------------------------[regs]
  EAX: 0x0000000A  EBX: 0x002B2FF4  ECX: 0xBFFFEF68  EDX: 0x002B4320  
  ESI: 0x00000000  EDI: 0x00000000  EBP: 0xBFFFF0A8  ESP: 0xBFFFEF80

Yêu cầu: Bắt buộc phải sử dụng ngôn ngữ Python cho chương trình chính. Có thể sử dụng thêm các công cụ phụ hoặc thư viện hỗ trợ như GDB, ptrace.

Hạn nộp bài: Ngày 26 tháng 07 năm 2010

Nộp bài (mã nguồn) về cho admin+frontpage@vithon.org (xin vui lòng bỏ +frontpage).

Giải thưởng: Một giải thưởng duy nhất bao gồm 100.000 đồng tiền mặt và một món quà từ Las Vegas.

Giới thiệu phần mềm Vithon Forum

written by vithon, on Jul 1, 2010 6:49:39 PM.

Nhóm Python Cho Người Việt (PCNV) hân hạnh công bố phần mềm Vithon Forum đến với cộng đồng.

Giới thiệu

Phần mềm Vithon Forum (gọi tắt là VF) là một phần mềm tự do, mã mở, miễn phí với chức năng chính là một diễn đàn thảo luận tương tự như các gói phần mềm phpBB, punBB, pyForum.

VF là một ứng dụng web được viết bằng ngôn ngữ Python theo mô hình WSGI. VF có thể được triển khai với các máy chủ hỗ trợ WSGI hay CGI ví dụ như Apache. VF có thể sử dụng nhiều hệ cơ sở dữ liệu quan hệ như SQLite, MySQL, Oracle.

Tính năng

VF có các tính năng nổi trội sau:

Đơn giản
VF chỉ thực hiện một công việc chính đó là lưu trữ và hiển thị các thảo luận của người dùng một cách tiện lợi nhất. VF không mong muốn trở thành một công cụ tích hợp thư điện tử, lịch cá nhân, danh sách công việc, nhắn tin, tán gẫu, v.v…
Nhỏ gọn
Vì chỉ phục vụ một số ít tác vụ cơ bản của một diễn đàn, toàn bộ chương trình VF (trừ các thư viện ngoài) chỉ chiếm khoảng 100 kilobyte dung lượng dĩa.
An toàn
VF được phát triển với các tính năng an ninh được đặt lên hàng đầu. Vì sự đơn giản và tính nhỏ gọn của VF nên chương trình được thiết kế ưu tiên sự an toàn hơn tính năng, và việc kiểm tra mã nguồn được thực hiện thường xuyên nhằm đảm bảo sự ưu tiên đó.
Thuận tiện
VF đề cao việc sử dụng các chuẩn mở như OpenID để việc sử dụng VF trở nên dễ dàng hơn cho người dùng. Bên canh đó, các tính năng thông thường mà người dùng đã quen thuộc ở các gói phần mềm khác cũng có mặt trong VF như BBCode. Tất cả chỉ nhằm một mục đích tạo ra môi trường thảo luận thuận tiện.

Yêu cầu hệ thống

Để triển khai VF, hệ thống sẽ cần một số ứng dụng và mô-đun sau:

  • Python v2.5 trở lên.
  • Mô-đun mako
  • Mô-đun werkzeug
  • Mô-đun sqlalchemy
  • Mô-đun routes
  • Mô-đun repoze.who.plugins.openid
  • Mô-đun repoze.what.plugins.xml
  • Mô-đun postmarkup
  • Mô-đun unidecode
  • Mô-đun zope.interface

Các mô-đun này có thể được cài đặt bằng setuptools (easy_install) hoặc pip.

Cài đặt

Mã nguồn của VF có thể được tải về từ địa chỉ http://bitbucket.org/vithon/vithon-forum.

Giải nén mã nguồn vào một thư mục nào đấy, giả sử như /opt/vithon-forum.

Dựa vào nội dung của tập tin config.py để tạo tập tin siteconfig.py mới, với các dòng lệnh gán giá trị phù hợp cho biến toàn cục. Các biến quan trọng cần thay đổi là COOKIE_SECRET, DATABASE_URL, STATIC_CONTENT_PATH, SESSION_STORAGE_PATH.

Tập tin siteconfig.py có thể có dạng sau:

BOARD_NAME = 'Acme Hideout'
COOKIE_SECRET = 'y@h0O'
DATABASE_URL = 'sqlite:////opt/vithon-forum/db.db'
STATIC_CONTENT_PATH = '/opt/vithon-forum/static'
SESSION_STORAGE_PATH = '/tmp/session'
SESSION_COOKIE_NAME = 'sid'
ENTRIES_PER_PAGE = 10
ORGANIZATION = 'Acme Corp'

Sau đó, chúng ta cần phải khởi tạo cơ sở dữ liệu bằng lệnh initdb.

$ cd /opt/vithon-forum
$ python forum.py initdb

Việc cài đặt đã hoàn tất.

Vận hành

Mặc dù cơ sở dữ liệu đã được khởi tạo khi cài đặt nhưng chúng ta chưa có dữ liệu nào trong cơ sở dữ liệu cả. Do đó, trước khi chạy VF, chúng ta sẽ cần phải tạo một số diễn đàn. Chúng ta sẽ sử dụng lệnh shell để thực hiện việc này.

$ cd /opt/vithon-forum
$ python forum.py shell

Lệnh shell sẽ mở một phiên làm việc tương tác cho phép chúng ta sử dụng Python để tác động đến chương trình VF. Chúng ta sẽ nhập vào đoạn mã Python như sau.

from model import *
f1 = Forum(u'Forum 1', u'Dien giai cho Forum 1')
f11 = Forum(u'Forum 1.1', u'Dien giai cho Forum 1.1', f1)
f12 = Forum(u'Forum 1.2', u'Dien giai cho Forum 1.2', f1)
f2 = Forum(u'Forum 2', u'Dien giai cho Forum 2')
f21 = Forum(u'Forum 2.1', u'Dien giai cho Forum 2.1', f2)
f22 = Forum(u'Forum 2.2', u'Dien giai cho Forum 2.2', f2)
session.add(f1)
session.add(f2)
session.commit()

Các câu lệnh trên tạo ra cấu trúc diễn đàn như sau:

Forum 1
  |
  +-- Forum 1.1
  |
  +-- Forum 1.2

Forum 2
  |
  +-- Forum 2.1
  |
  +-- Forum 2.2

Vì VF không có các tính năng quản lý qua web nên lệnh shell cũng chính là môi trường quản lý chính.

Cuối cùng, để chạy VF, chúng ta sẽ dùng lệnh runserver tương tự như sau:

$ cd /opt/vithon-forum
$ python forum.py runserver -h 127.0.0.1 -p 8080

Khi này, nếu ta mở trình duyệt lên và đi đến trang http://127.0.0.1:8080 thì chúng ta sẽ thấy diễn đàn đã hoạt động.

Triển khai theo mô hình CGI

Chúng ta cũng có thể triển khai VF theo mô hình CGI.

Đầu tiên chúng ta cần chép tập tin forum.cgi vào thư mục chứa các tập tin CGI (ví dụ như /var/www/cgi-bin).

Tiếp đến chúng ta cần sửa các lệnh thiết lập đường dẫn trong tập tin này cho phù hợp.

# Set the path to store python package cache
os.environ['PYTHON_EGG_CACHE'] = '/tmp/.egg'
# Set the path to vithon forum here
sys.path.insert(0, '/opt/vithon-forum')

Nếu như tập tin siteconfig.py nằm ở thư mục khác (ví dụ như trong thư mục /var/www/cgi-bin), thì chúng ta cũng sẽ cần thêm vào các dòng bên dưới. Nếu siteconfig.py nằm chung chỗ với các tập tin khác của VF thì chúng ta không cần các dòng lệnh này.

# Set the path to siteconfig.py here
sys.path.insert(0, '/var/www/cgi-bin')

Và cuối cùng chúng ta chỉ cần cấu hình máy chủ web để sử dụng tập tin forum.cgi như là một ứng dụng CGI. Thông tin về vấn đề này được nói rõ hơn trong tài liệu đi kèm với máy chủ web.

Diễn đàn vithon hoạt động trở lại

written by Phan Đắc Anh Huy, on Jun 8, 2010 5:21:00 PM.

Chào mọi người, sau một thời gian gián đoạn, diễn đàn Vithon đã hoạt động trở lại tại địa chỉ http://vithon.org/forum.
Phiên bản mới của diễn đàn do chính các thành viên của nhóm PCNV phát triển, được viết hoàn toàn bằng ngôn ngữ Python. Mã nguồn của diễn đàn được host tại BitBuket.
Hiện nay nhóm vẫn đang tiếp tục hoàn thiện các tính năng cơ bản và mở rộng cho diễn đàn. Chúng tôi chào đón mọi ý kiến đóng góp về tính năng sử dụng cũng như tham gia viết mã của tất cả các bạn.

Kết quả cuộc thi Giải Toán Bằng Python

written by Phan Đắc Anh Huy, on Jun 3, 2010 11:04:00 AM.

Sau một tuần tranh tài sôi nổi, cuộc thi Giải Toán Bằng Python mừng ngày Quốc Tế Thiếu Nhi đã kết thúc tốt đẹp.
Ngày 1/6, với sự tham dự của hầu hết các thí sinh và cổ động viên, anh Nguyễn Thành Nam - trưởng nhóm Python cho người Việt - đã tiến hành chấm bài. Đúng như dự đoán trong thời gian diễn ra kỳ thi của anh, mặc cho sự cạnh tranh rất quyết liệt giữa các thí sinh, vẫn có một bài thi tỏ ra vượt trội và giành chiến thắng một cách thuyết phục. Đó là bài dự thi của bạn Nhâm Xuân Nam, với nickname namnx.

Với nội dung thi gần gũi, dễ tiếp cận nhưng cũng không kém phần hấp dẫn, cuộc thi đã thu hút sự tham gia đông đảo hơn rất nhiều so với hai cuộc thi trước. Chất lượng cuộc thi rất cao khi hầu hết các thí sinh đều tìm ra được công thức cho phép tính nhanh các cặp số, một số kỹ thuật về multi-processing cũng được các thí sinh tìm hiểu và tận dụng rất hiệu quả. Bài của bạn Nhâm Xuân Nam đã đạt được kết quả cách biệt với số n lớn nhất dài hơn 2100 chữ số!

Nói về bài thi đoạt giải nhất, bạn Hoàng Quốc Thịnh - người đạt giải nhất cuộc thi đầu tiên - và anh Nguyễn Thành Nam đều chung một nhận định: “Một bài thi chuẩn mực, không có gì phải phàn nàn cả!”.

Mã nguồn của các bài dự thi cùng với chương trình chấm có thể được tải về tại đây. Hình sau là ảnh của lễ trao giải. Bạn Lê Ngọc Hiếu đại diện cho nhóm PCNV bên phải, trao tặng giải thưởng cho người chiến thắng bên trái.

Một lần nữa xin chúc mừng bạn Nhâm Xuân Nam!

Phát động cuộc thi Giải Toán Bằng Python

written by Phan Đắc Anh Huy, on May 24, 2010 2:32:00 PM.

Sau thành công của 2 lần thi trước, nhóm PCNV tiếp tục phát động cuộc thi Giải Toán Bằng Python để chào mừng ngày quốc tề thiếu nhi đang đến rất gần. Đề thi rất đơn giản:

Hãy dùng ngôn ngữ lập trình Python để tính toán và xuất ra các cặp số n và k thỏa mãn:

1 + 2 + ... + n = n + 1 + n + 2 + ... + n + k
Input:

Không có.

Output:

Standard Output.

Output Format:

In trên nhiều dòng, mỗi dòng là một cặp số n, k cách nhau bằng một hoặc nhiều khoảng trắng.

Yêu cầu:
  • Chỉ được dùng các module built-in.

  • Không được in ra các giá trị n, k đã tính toán sẵn trước khi chương trình thực thi dưới bất kỳ hình thức nào.

  • Chương trình sẽ được người chấm thực thi trong vòng 30 giây. Hết thời gian này, chương trình sẽ bị ngắt.

  • Chương trình nào in ra được nhiều cặp số n, k nhất sẽ chiến thắng.

  • Chương trình sẽ bị loại nếu in ra bất cứ cặp số n, k nào không chính xác.

Thời hạn dự thi: Từ ngày hôm nay (24/05/2010) đến hết ngày 31/05/2010.

Bài dự thi xin gửi về địa chỉ email admin+frontpage@vithon.org (xin vui lòng bỏ +frontpage trước khi gửi), bạn có thể gửi nhiều lần trong trường hợp cải thiện được kết quả của mình. Chương trình được gửi cuối cùng sẽ được nhóm PCNV sử dụng để chấm điểm chung cuộc.

Trong quá trình làm bài, nếu có nhu cầu trao đổi, đặt câu hỏi, hay chỉ đơn giản là muốn trò chuyện với những người bạn rất dễ thương trong nhóm PCNV, các bạn có thể tham gia phòng tán gẫu #vithon ở máy chủ irc.freenode.net.

Đã là cuộc thi thì không thể thiếu giải thưởng, phần thưởng cho người thắng cuộc là 100.000 VND và một buổi trò chuyện thân mật với admin nhóm PCNV.

Trao giải cuộc thi viết webshell bằng Python

written by Lê Ngọc Hiếu, on May 17, 2010 12:17:00 PM.

Ngày 16/05/2010 tại quán cafe K&K đã diễn ra buổi lễ trao giải cho cuộc thi viết webshell bằng python. Tại buổi lễ, anh Nguyễn Thành Nam là trưởng nhóm Python cho người Việt đã trao giải nhất của cuộc thi cho bạn Phan Đắc Anh Huy với phần thưởng là 100.000 đồng.

/static/webshell_programming_contest.jpg

Hình: anh Nguyễn Thành Nam trao giải cho bạn Phan Đắc Anh Huy

Cuộc thi lần này đã thu hút sự tham gia của nhiều bạn trẻ hơn so với cuộc thi viết game bằng Python lần trước. Theo anh Nam, chất lượng cuộc thi lần này đã khá hơn hẳn lần trước. Điều đó chứng tỏ trình độ lập trình bằng Python và cộng đồng sử dụng Python đã và đang lớn mạnh hơn. Đây cũng chính là mục đích của trang mạng Python cho người Việt được lập ra.

Sau lễ trao giải, nhóm cũng đã có buổi thảo luận sôi nổi về việc sẽ thúc đẩy sinh hoạt gặp mặt trực tiếp nhằm nâng cao hơn nữa tay nghề. Hy vọng đây sẽ là một hoạt động bổ ích và thiết thực cho các bạn trẻ ham học hỏi. Bạn Hoàng Quốc Thịnh - người đã đoạt giải nhất trong cuộc thi lần trước - chia sẻ:

Mình nghĩ không nên lạm dụng việc sinh hoạt trực tuyến nhiều quá, sinh hoạt trực tiếp gặp mặt có điểm lợi hơn đó là việc cái 'lửa' sẽ được tận mắt nhìn thấy và truyền cho nhau. Điều này, sinh hoạt trực tuyến không có được.

Anh Nam cũng có cùng nhận định như trên và đang chuẩn bị cho những hoạt động đẩy mạnh trong thời gian sắp tới.

K&K, 15:03 16/05/2010