Học Bá Đích Hắc Khoa Kỹ Hệ Thống (Dịch)

Chương 47. Phát triển ứng dụng để rèn tay

Thông báo

Địa chỉ WEB hiện tại của Tiên Vực là https://tienvuc.info. Trong trường hợp không thể truy cập được, bạn hãy vào https://tienvuc.link để xem địa chỉ mới nhất và tải ứng dụng.

Phòng máy rất vắng vẻ, không thấy ai.

Tất nhiên, hiện tại là mùa hè, và các bạn dự thi cao học cũng không cần sử dụng máy tính.

Đi qua và mở máy lạnh, Lục Chu tìm một chiếc máy tính bất kỳ và ngồi xuống, nhập mã số sinh viên và mật khẩu của mình, đăng nhập vào máy tính một cách thành thạo.

Lý do chính mà Lục Chu chọn phòng máy của trường là vì các chương trình viết bằng ngôn ngữ python chủ yếu được chạy trên hệ điều hành Linux, học ngôn ngữ python trực tiếp trên môi trường Linux có thể coi là tiện ích hai trong một.

Máy tính xách tay cũ của Lục Chu thì quá tệ, thậm chí việc chuyển đổi tài liệu thành định dạng pdf cũng mất thời gian. Việc cài đặt hệ điều hành song song hoặc máy ảo là những thủ thuật không đáng để nghĩ đến.

"Mặc dù sách viết rất rõ ràng, nhưng không ngờ việc sử dụng cái này lại phức tạp như vậy... Quả thực những thứ trên giấy và thực tế hoàn toàn khác biệt, muốn học được điều gì đó vẫn phải dựa vào thực hành."

Lần đầu sử dụng hệ điều hành Linux, Lục Chu chỉ thấy mù mịt, sau khi đọc kỹ hướng dẫn để từ thư viện, mới chập chững hiểu được cách sử dụng.

Phải công nhận rằng, việc hệ điều hành Windows chiếm lĩnh thị trường lớn như vậy cũng có lý do của nó, hệ điều hành toàn đồ họa như Windows ngay cả những người hoàn toàn không rành về máy tính cũng có thể dễ dàng sử dụng.

Tuy nhiên, hệ điều hành Linux lại khác biệt, gần như là chế độ hoạt động qua dòng lệnh, tất cả mọi thao tác đều có thể thực hiện thông qua bàn phím. Thực tế cũng may là phiên bản phân phối đã cài đặt ở trường có môi trường giao diện để người dùng (desktop environment), nếu không thì Lục Chu còn không biết rằng chuột đó có tác dụng gì.

Tất nhiên, ưu điểm của Linux cũng rõ ràng, khả năng tuỳ chỉnh và bảo mật mạnh mẽ làm cho nó phù hợp hơn hệ điều hành Windows trong lĩnh vực máy chủ và nhiều lĩnh vực khác. Và một khi đã quen với việc thao tác qua dòng lệnh, hiệu suất làm việc sẽ cao hơn nhiều lần so với hệ điều hành Windows. Vì vậy, khi nhiều công ty tuyển dụng lập trình viên phía máy chủ và phía giao diện, họ thường hỏi "có biết dùng hệ điều hành Linux không?"

Sau khi làm quen với các thao tác cơ bản trên hệ điều hành Linux, Lục Chu mở phần mềm Python, mở sách và ngồi trước máy tính trống rỗng.

"Nói về một trong những ứng dụng của python là viết web crawler, để kiểm tra kết quả học tập, bắt đầu từ đây là tốt nhất... Nhưng tìm hiểu một web crawler nào?"

Lục Chu không khỏi mải mê suy nghĩ.

Có thể crawl các bài viết trên Weibo?

Có thể crawl các bài đăng trên Diễn đàn?

Có vẻ nhàm chán.

Quan trọng là dữ liệu crawl về không có ích gì, và không có nơi để lưu dữ liệu đó.

Bỗng dưng, một ý tưởng xuất hiện trong tâm trí Lục Chu, không biết vài cách mà anh ta đã từng trải qua sự đau khổ trong việc tranh mua vé mỗi khi về nhà. Không phải vì máy tính của anh ấy chậm, mà là giao diện trang web của Bộ Giao thông vận tải thật không hợp lí.

"Có thể dùng kỹ thuật crawler để crawl thông tin về các nhà ga, tàu và vé còn trống của trang web... Nghe có vẻ thú vị."

Khi nghĩ đến điều này, Lục Chu không chần chừ nữa, ngay lập tức bắt đầu công việc.

Vì python là một mẫu ví dụ điển hình về sử dụng ngôn ngữ python, mẫu chương trình crawler trong sách đã được đề cập, và tùy thuộc vào từng trường hợp, sách còn cải tiến thuật toán ở mức độ khác nhau.

Tất nhiên, 12306 không phải là diễn đàn thông thường, nhưng với Lục Chu đã từng khám phá toàn bộ cuốn sách, vấn đề không lớn. Crawler chính nó không có độ khó kỹ thuật cao, chỉ cần vài chục dòng mã là có thể xử lý toàn bộ chương trình, chạy hoàn hảo không có lỗi.

Sau đó là phần crawl.

Sao chép URL của trang web vào sau mã, Lục Chu chọn chạy và tạo dữ liệu thành bảng, nhập vào thư mục đã tạo sẵn.

Ngay sau đó, quạt của máy tính bắt đầu vọng vọng, máy tính trở nên chậm chạp, các dòng mã từ trong cửa sổ đen nhanh chóng được sắp xếp vào bảng.

Nhìn vào thư mục đang đổ dữ liệu một cách liên tục, Lục Chu ngồi gật đầu trên ghế và cảm thấy ấm lòng."Ngôn ngữ Python thật tiện lợi, không có gì lạ khi nhiều người giỏi đề xuất sử dụng nó."

Nhìn thông tin được hiển thị qua từng dòng dữ liệu, Lục Chu thật sự có cảm giác như đang say mê với cơn nghiện hacker.

Tất nhiên chỉ là cảm giác mà thôi, thậm chỉ nó còn không vào đúng tầm cảm giác, vì vấn đề này hoàn toàn không liên quan đến công nghệ hacker. Lấy thông tin công khai từ máy chủ không vi phạm pháp luật, tối đa chỉ nghi ngờ xâm phạm tài nguyên máy chủ của người khác, sẽ bị các chủ trang web lớn căm hờn.

Vì vậy, nhiều trang web "keo kiệt" thường thiết lập các chương trình chống bot, những trang cao cấp entw nếu không cho bạn lấy được bất kỳ thông tin gì, hoặc các thông tin lấy về đều là mã lệnh hỗn độn, còn trang có công nghệ thấp có thể bằng cách giám sát số lượt truy cập, khóa trực tiếp IP của bạn.

Tuy nhiên, rõ ràng trang web 12306 không phải là một trang web "keo kiệt" như vậy, hãy nghĩ về một tay trùm độc quyền ngay cả không quan tâm đến trải nghiệm người dùng, họ sẽ quan tâm đến tài nguyên máy chủ nho nhỏ đó? Chỉ cần bạn không làm hỏng máy chủ của ta, ai quản tôi!

Nhìn vào dữ liệu chuyến xe được tích lũy liên tục trong thư mục, ánh mắt Lục Chu quay quắt, suy nghĩ xem có nên sử dụng nó để làm một việc gì đó?

"Thử làm một trang web đặt vé xe? Dường như tốn công không đáng kể..."

Bất ngờ, Lục Chu có một ý niệm trong lòng.

Hay nhỉ...

Làm một ứng dụng đặt vé trực tuyến?

Ý niệm tạm thời này đã nảy nở trong tâm hồn anh ta và không thể kiềm chế được.

Mặc dù có nhiều ứng dụng đặt vé bên thứ ba trên mạng, nhưng thực sự không có ứng dụng đặt vé chính thức. Nếu anh ta có thể tạo ra một ứng dụng khác biệt và bán cho những nhà vận hành quan tâm, có thể kiếm được một ít tiền tiêu vặt.

Khi liên quan đến tiền bạc, Lục Chu ngay lập tức bắt đầu quan tâm, trong tâm trí anh ta bắt đầu tính toán liên tục.

Về mặt kỹ thuật, hoàn thành độc lập một ứng dụng từ phía diễn phân đến phía sau động cơ phát triển, độ khó là rất lớn, từ lâu đã không thể so sánh được với việc viết một chương trình bots đơn giản, nhưng cũng không phải là không thể hoàn thành. Hơn nữa, những vấn đề mà thuật toán không giải quyết được, người ta có thể hỏi hệ thống, việc tiêu hao điểm tích lũy nhờ tra cứu tư liệu cũng là quá trình học tập.

Sau khi hoàn thành nhiệm vụ thưởng, mở khóa công nghệ nhánh trí tuệ nhân tạo LV0, những kinh nghiệm quý giá này chắc chắn sẽ có ích.

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

Trên thẻ của anh ta chỉ còn dưới mười ngàn đồng, có lẽ thậm chí việc tạo lửa cũng là khó khăn.

Ngậm miệng chặt chẽ, Lục Chu vẫn quyết định vượt qua những khó khăn này.

Bỏ cả mức lương hàng năm nửa triệu, còn gì là không thể làm được?

Cho dù thất bại, cũng có thể xem như thực hành một bài tập.

Vì vậy, Lục Chu đã tắt chương trình, anh không vội bắt đầu sửa mã nguồn, mà là mở tài liệu word, như viết một phần mô đun luận văn, bắt đầu thiết kế phác thảo quá trình phát triển ứng dụng.

"Tra cứu vé tàu phải thu thập dữ liệu thời gian thực, yêu cầu hiệu năng máy chủ cao, mã nguồn phải càng đơn giản càng tốt!"

"Giao diện có thể đơn giản, nhưng thông tin phải chính xác, đầy đủ, điều này có thể tham khảo từ các ứng dụng đặt vé bên thứ ba phổ biến, nhưng chắc chắn không thể hoàn toàn giống, phải có điểm sáng..."

Viết cho tới đây, ngón tay áp lên bàn phím của Lục Chu, suy nghĩ trong một thời gian dài trước khi tiếp tục gõ bàn phím.

"Đầu tiên là đặt vé tự động. Điều này không thể coi là sáng tạo, cách đây đã lâu, trình duyệt như báo Cheetah, 360 đã có chức năng này."

"Nhưng việc chạm chán, tự động làm mới vé... dường như vẫn chưa thấy. Nhớ đến mồng Tết năm ngoái, khi đặt vé muộn, chúng tôi trong phòng ngủ đã phải bấm phím F5 trong gần nửa giờ trước khi mua được vài vé về quê, Lục Chu đã sâu sắc cảm nhận, việc người lao động rần rần trở lại nhà vào dịp Tết không dễ dàng.

Thông qua việc làm mới liên tục dữ liệu trên trang web chính thức, có những khả năng mê tín xác xuất sẽ định được một số vé, trong số đó có vé hủy của người dùng khác, Lục Chu cũng không chắc chắn làm thế nào mà chúng xuất hiện, nhưng chức năng này có thể xem xét.

Ví dụ như đặt một khoảng thời gian và một số chuyến xe, máy chủ sẽ tự làm nhiệm vụ giúp người dùng tự động cập nhật dữ liệu, gửi đơn hàng ngay khi có sẵn vé còn trống. Ít nhất trong mấy phần mềm đặt vé mà anh ta đã thấy, dường như chưa có chức năng này.

Hơn nữa, về mặt thuật toán, cũng không có gì khó khăn để thực hiện.

Khi nghĩ đến điều này, Lục Chu nhìn lên đồng hồ treo tường.Bây giờ là một giờ chiều!

Sau khi lưu tài liệu Word, Lục Chu nỗ lực mạnh mẽ mang lòng tham vọng và cuốn lên áo.

"Bắt đầu làm việc!"