Hệ Thống Đen Của Học Bá

Chương 47: Phát triển một ứng dụng để luyện tay

Trong phòng máy tính, không khí khá tĩnh lặng, không thấy bóng dáng của ai.

Điều này cũng dễ hiểu, vì đây đang là kỳ nghỉ hè, những sinh viên ôn thi cao học thường cũng không cần dùng đến máy tính.

Lục Chu bước tới, bật điều hòa, chọn một chiếc máy tính và nhập mã số sinh viên cùng mật khẩu, nhanh chóng đăng nhập.

Lý do Lục Chu chọn phòng máy tính của trường là vì các chương trình viết bằng ngôn ngữ Python thường chạy trên hệ điều hành Linux, và học Python trong môi trường Linux sẽ mang lại lợi ích gấp đôi.

Máy tính xách tay cũ của Lục Chu quá yếu, đến mức khi chuyển một tệp PDF cũng khiến máy bị đơ. Ngay cả chơi game *Liên Minh Huyền Thoại* cũng chậm đến nỗi khi người ta đã bắt đầu giao chiến, cậu vẫn còn đứng ở bệ đá cổ. Việc cài đặt hệ điều hành kép hoặc chạy máy ảo là điều không thể thực hiện được trên máy của cậu.

"Mặc dù sách giải thích rất rõ ràng, nhưng không ngờ thực tế lại phức tạp thế này... Quả nhiên, lý thuyết trên giấy và thực hành là hai chuyện khác nhau. Muốn học được gì đó thì phải thực hành thôi."

Lần đầu sử dụng hệ điều hành Linux, Lục Chu cảm thấy mù mờ. Cậu phải dành một lúc lâu đọc qua các hướng dẫn mà mình mượn từ thư viện mới có thể bắt đầu hiểu được cách sử dụng.

Phải công nhận rằng, việc Windows chiếm lĩnh thị trường hệ điều hành lớn như vậy là có lý do. Hệ điều hành giao diện đồ họa như Windows khiến ngay cả những người chưa từng sử dụng máy tính cũng có thể dễ dàng thao tác. Ngược lại, hệ điều hành Linux cơ bản dựa vào dòng lệnh, bạn có thể thực hiện mọi thứ chỉ bằng bàn phím. May mắn là trường đã cài đặt phiên bản có giao diện đồ họa, nếu không thì việc sử dụng chuột cũng trở nên vô nghĩa.

Tất nhiên, Linux cũng có những ưu điểm rõ ràng, như khả năng tùy chỉnh mạnh mẽ và bảo mật cao, giúp nó thích hợp hơn cho các máy chủ. Một khi đã quen với việc thao tác bằng dòng lệnh, hiệu suất làm việc có thể cao hơn Windows nhiều lần. Đây cũng là lý do mà nhiều công ty tuyển dụng lập trình viên thường hỏi xem ứng viên có biết sử dụng Linux hay không.

Khi đã làm quen với các thao tác cơ bản của hệ điều hành Linux, Lục Chu mở phần mềm Python lên và nhìn vào sách giáo khoa trước mặt, nhưng đầu óc lại trống rỗng.

"Python thường được sử dụng để viết các chương trình thu thập dữ liệu trên web. Nếu muốn kiểm tra kết quả học tập, bắt đầu từ việc này có lẽ là tốt nhất... Nhưng mình nên viết gì đây?"

Lục Chu trầm ngâm suy nghĩ.

Thu thập bài viết trên Weibo?

Thu thập các bài đăng trên diễn đàn?

Nghe có vẻ nhàm chán.

Quan trọng là những dữ liệu thu thập được không có giá trị sử dụng.

Bất chợt, cậu nhớ lại những lần khó khăn trong việc mua vé tàu về nhà. Không phải do máy tính của cậu chậm mà là do giao diện trang web của Bộ Đường sắt thực sự rất tệ.

"Thu thập thông tin các nhà ga, chuyến tàu và số vé còn lại trên trang 12306... Ý tưởng này có vẻ khả thi."

Với suy nghĩ đó, Lục Chu nhanh chóng bắt tay vào công việc.

Là một ví dụ điển hình của ngôn ngữ Python, mẫu chương trình thu thập dữ liệu trên web đã có sẵn trong sách, và cuốn sách cũng cải tiến thuật toán cho nhiều tình huống khác nhau.

Tất nhiên, 12306 không phải là một diễn đàn thông thường, việc chọn trang web này làm mục tiêu luyện tập không hề dễ dàng đối với người mới bắt đầu.

Nhưng đối với một học bá như Lục Chu, người đã nắm vững cả cuốn sách, vấn đề này không quá khó khăn. Chương trình thu thập dữ liệu này không yêu cầu kỹ thuật quá cao, chỉ cần dưới 30 dòng mã là có thể hoàn thành mà không gặp lỗi.

Tiếp theo là bước thu thập dữ liệu.

Lục Chu sao chép URL của trang web và dán vào mã lệnh, chọn chạy chương trình và dữ liệu được tự động chuyển vào bảng tính đã tạo sẵn trong thư mục.

Ngay lập tức, quạt máy tính bắt đầu kêu to, máy trở nên chậm chạp, các dòng mã hiện lên trên cửa sổ đen và nhanh chóng được sắp xếp vào bảng tính.

Nhìn vào những dữ liệu đang liên tục được thêm vào thư mục, Lục Chu thầm cảm thán.

"Ngôn ngữ Python thật sự tiện lợi, chẳng trách lại có nhiều người khuyên dùng nó như vậy."

Nhìn vào những dòng dữ liệu chạy liên tục trên màn hình, Lục Chu thậm chí còn có cảm giác như mình đang hóa thân thành một hacker chuyên nghiệp.

Tất nhiên, cảm giác này chỉ là ảo giác mà thôi. Việc thu thập dữ liệu công khai từ máy chủ không phải là hành vi phạm pháp, nhiều nhất chỉ có thể bị coi là làm chậm tốc độ của máy chủ, khiến các quản trị viên không thích. Vì thế, nhiều trang web thường cài đặt các chương trình ngăn chặn việc thu thập dữ liệu. Những trang web có bảo mật cao sẽ không để bạn thu thập được gì, hoặc dữ liệu bạn thu thập được toàn là lỗi. Còn các trang bảo mật thấp thì có thể khóa IP của bạn khi phát hiện truy cập quá nhiều.

Nhưng trang 12306 rõ ràng không quan tâm đến những vấn đề nhỏ nhặt này. Họ độc quyền thị trường, và giao diện người dùng không phải là ưu tiên của họ. Chỉ cần bạn không làm sập máy chủ của họ thì họ cũng không quan tâm bạn làm gì.

Nhìn vào những dữ liệu về các chuyến tàu liên tục được thêm vào thư mục, Lục Chu bắt đầu suy nghĩ liệu mình có thể làm gì với chúng.

"Lập một trang web bán vé tàu? Cũng hơi vô ích nhỉ..."

Đột nhiên, Lục Chu nảy ra một ý tưởng.

Tại sao không... phát triển một ứng dụng bán vé tàu?

Khi ý tưởng này xuất hiện, nó ngay lập tức bén rễ trong đầu cậu.

Mặc dù trên mạng đã có nhiều ứng dụng đặt vé tàu từ bên thứ ba, nhưng chưa có ứng dụng chính thức nào từ nhà cung cấp. Nếu cậu có thể phát triển một ứng dụng khác biệt và bán nó cho các công ty quan tâm, có thể cậu sẽ kiếm được một khoản tiền để trang trải cuộc sống.

Nghĩ đến tiền, Lục Chu lập tức quan tâm và bắt đầu tính toán.

Về mặt kỹ thuật, việc phát triển một ứng dụng hoàn chỉnh từ giao diện đến hệ thống máy chủ không phải là việc dễ dàng, nhưng không phải là không thể. Và nếu gặp khó khăn, cậu còn có thể nhờ hệ thống của mình giúp đỡ. Việc tiêu hao điểm để tìm tài liệu cũng là một quá trình học hỏi.

Khi hoàn thành nhiệm vụ thưởng, cậu sẽ mở khóa công nghệ Trí tuệ nhân tạo cấp độ 0, những kinh nghiệm quý báu này chắc chắn sẽ có ích.

Chỉ có điều, việc mua và duy trì một máy chủ sẽ tốn khá nhiều tiền, và chi phí vận hành, bảo trì máy chủ cũng không phải là nhỏ.

Với chưa đến 10.000 tệ trong tài khoản, cậu sợ rằng chưa đủ để khởi động.

Cắn răng, Lục Chu quyết định sẽ vượt qua những khó khăn này.

Ngay cả mức lương 500.000 tệ cậu còn bỏ qua, thì chuyện gì mà không thể làm được?

Dù có thất bại, cậu cũng có thể coi đó là một bài tập thực hành cho mình.

Thế là, Lục Chu tắt chương trình, không vội sửa mã, mà mở tài liệu Word lên. Giống như khi viết một dàn ý cho bài luận, cậu bắt đầu lên kế hoạch cho quy trình phát triển ứng dụng.

"Việc truy vấn vé tàu cần thu thập dữ liệu theo thời gian thực, yêu cầu máy chủ phải có hiệu suất cao, mã phải càng ngắn gọn càng tốt!"

"Giao diện có thể đơn giản, nhưng thông tin phải chính xác và đầy đủ. Về mặt này, có thể tham khảo các ứng dụng đặt vé của bên thứ ba, nhưng phải có điểm khác biệt, cần có sự sáng tạo..."

Nghĩ ngợi một lúc lâu, Lục Chu tiếp tục gõ bàn phím.

"Trước tiên là chức năng tự động đặt vé. Tính năng này không hẳn là mới, trước đây các trình duyệt như Cheetah và 360 đều đã có."

"Nhưng việc tự động làm mới để tìm vé thì... hình như chưa có ai làm."

Nhớ lại kỳ nghỉ đông năm ngoái, khi đặt vé quá muộn, vài người bạn cùng phòng của Lục Chu phải ngồi trước máy tính và nhấn phím F5 trong gần nửa tiếng mới có được vài vé tàu về quê, Lục Chu cảm nhận sâu sắc rằng việc mua vé tàu về nhà dịp Tết thật sự khó khăn.

Thông qua việc liên tục làm mới dữ liệu từ trang web chính thức, đôi khi bạn sẽ có thể tìm được vé, có thể là vé trả lại từ những hành khách khác hoặc vé mà chính cậu cũng không rõ xuất phát từ đâu. Chức năng này có thể sẽ rất hữu ích.

Chẳng hạn, bạn có thể đặt một khoảng thời gian và một số chuyến tàu, để máy chủ tự động làm mới dữ liệu và đặt vé ngay khi có vé trống. Hiện tại, có vẻ chưa có ứng dụng nào có tính năng này.

Và việc hiện thực hóa tính năng này dường như không quá khó khăn về mặt thuật toán.

Lục Chu nhìn lên đồng hồ treo tường.

Bây giờ là 3 giờ chiều!

Sau khi lưu tài liệu Word, cậu hứng khởi xắn tay áo lên, đặt tay lên bàn phím.

"Bắt tay vào việc thôi!"