Chương 1. Khảo sát hiện trạng Hiện nay, nhu cầu tìm việc ngày càng tăng cao, đặc biệt trong thời đại công nghệ 4.0 phát triển bùng nổ, việc xây dựng các website việc làm là điều vô cùng cần thiết và đem lại hiệu quả kinh tế cao. Với số lượng lớn người tìm việc và nhu cầu tìm ứng viên của các doanh nghiệp ngày càng tăng cao, việc quảng bá các bài đăng tuyển dụng của doanh nghiệp đến ứng viên không còn là một bài toán khó nhờ những ứng dụng của công nghệ thông tin. Các nhà tuyển dụng có thể dễ dàng tìm kiếm những ứng viên đạt yêu cầu; đối với người tìm việc, họ có thể tìm kiếm những công việc muốn làm dựa trên sở thích và đam mê, kinh nghiệm một cách nhanh chóng và hiệu quả.
Ngày nay, có vô số những trang web hỗ trợ tìm kiếm việc làm từ nhỏ đến lớn như Timviecnhanh,… cho đến các trang web chỉ tập trung vào một mảng như Itviec,…Thế nhưng, có lẽ người tìm việc sẽ cảm thấy bối rối vì không biết chọn trang web nào phù hợp với mình, và trang web nào đem lại nhiều thông tin việc làm hơn, đáp ứng được nhu cầu tìm việc của họ một cách hiệu quả. Không những thế, đối với các doanh nghiệp nhỏ mới phát triển, việc tìm kiếm ứng viên cũng gặp khó khăn vì không có sức cạnh tranh với các doanh nghiệp, tập đoàn lớn. Ngoài LinkedIn, dường như có rất ít website tổng hợp thông tin ứng viên để giúp việc tìm kiếm của nhà tuyển dụng trở nên dễ dàng hơn. Bên cạnh đó, hiện tại chưa có tập dữ liệu thông tin việc làm tổng hợp từ các website bằng tiếng Việt để huấn luyện các thuật toán máy học, phục vụ mục đích dự báo nhu cầu việc làm trong tương lai.
Các mô hình này giúp học sinh, sinh viên có định hướng rõ ràng hơn về nghề nghiệp, đồng thời giúp cho các cơ sở giáo dục cải tiến chương trình đào tạo phù hợp hơn với nhu cầu thực tế. Vì vậy, làm sao để cung cấp danh sách các ứng viên tiềm năng cho doanh nghiệp, cũng như thông tin việc làm cho ứng viên một cách hiệu quả nhất, là câu hỏi quan trọng được đặt ra mà nhiều website việc làm cần phải giải quyết. Cộng đồng nghiên cứu máy học đang rất cần một một tập dữ liệu thông tin việc làm đẩy đủ nhất để phục vụ cho việc nghiên cứu xu hướng nhu cầu tìm việc. Mục tiêu và nhiệm vụ của đề tài 1.
Mục tiêu Tìm hiểu về các công nghệ Spring Framework, MySQL, Angular 9 để xây dựng một trang web việc làm phục vụ cho ứng viên và doanh nghiệp, bao gồm các chức năng cơ bản như: - Cho phép các doanh nghiệp đăng ký và tạo bài đăng tuyển dụng. - Cho phép các người tìm việc đăng ký và tìm kiếm công việc mong muốn. - Gợi ý (recommend) những ứng viên tiềm năng dành cho doanh nghiệp và những công việc, vị trí phù hợp với năng lực dành cho ứng viên. Đặc biệt, hệ thống sẽ tổng hợp tất cả những bài đăng việc làm trên một số trang web việc làm phổ biến ở Việt Nam như TimViecNhanh, CareerBuilder, Jobsgo, TopCV, TimViec365 bằng cách sử dụng thư viện Jsoup và Crawler4j.
Từ đó, xây dựng tập dữ liệu việc làm đáp ứng cho cộng đồng máy học. Nhiệm vụ Khảo sát được thực trạng mà các trang web việc làm hiện nay đang phải đối mặt. Thông qua việc tìm hiểu và khảo sát, nhóm có thể xây dựng một hệ thống có giao diện đơn giản và dễ sử dụng nhất, phù hợp với mọi đối tượng. Khảo sát cách tổ chức dữ liệu từ một số trang web việc làm phổ biến tại Việt Nam như JobsGo, TopCV, CareerBuilder, Timviecnhanh, Timviec365.
Từ đó phân tích và thiết kế hệ quản trị cơ sở dữ liệu phục vụ cho hệ thống crawler. Cuối cùng, xây dựng được một trang web tổng hợp thông tin việc làm từ các website khác, có hệ thống gợi ý việc làm và ứng viên, nhưng vẫn đảm bảo tính hợp pháp trong việc xuất trích dữ liệu, cung cấp cho cộng đồng máy học tập dữ liệu việc làm tổng hợp. Công nghệ lập trình Đồ án sử dụng Framework Spring Boot, hệ quản trị cơ sở dữ liệu MySQL để thiết kế back-end, sử dụng Framework Angular 9 cùng một số thư viện bổ trợ như ng-bootstrap, Material design for bootstrap để xây dựng và thiết kế front-end. Ngoài ra, nhóm đã xây dựng hệ thống crawler bằng thư viện Jsoup và Crawler4j.
Phạm vi nghiên cứu Từ cơ sở tài liệu ban đầu là các website việc làm phổ biến ở Việt Nam như Timviecnhanh, Timviec365, TopCV, CareerBuilder, Jobsgo, nhóm tiến hành khảo sát, phân tích và thiết kế hệ thống cơ sở dữ liệu cho website bằng MySQL. Với sự hỗ trợ của thư viện Crawler4j và Jsoup, nhóm tiến hành thu thập dữ liệu từ các trang web việc làm khác và lưu vào cơ sở dữ liệu đã tạo. Thông qua việc sử dụng Angular 9 cùng các thư viện hỗ trợ thiết kế giao diện như ng- bootstrap và material design for bootstrap ở phần front end, Spring Framework cho phần backend, nhóm tiến hành xây dựng trang web tổng hợp việc làm phục vụ cho người tìm việc và nhà tuyển dụng. Phương pháp nghiên cứu Nhóm đã thực hiện đồ án thông qua các phương pháp nghiên cứu sau: - Tìm hiểu các nghiệp vụ cơ bản của đồ án thông qua các trang web việc làm lớn (TimViec365, TimViecNhanh, Jobsgo, CareerBuilder, TopCV).
- Tìm hiểu trang tổng hợp việc làm Jobstreet - Tìm kiếm các kiến thức về những thư viện, framework đã sử dụng trong đồ án qua các trang web lập trình và các project, thư viện mã nguồn mở trên GitHub. 3 do an Chương 2. Giới thiệu về Spring Framework Spring Framework là một framework ứng dụng và bộ chứa đảo ngược điều khiển cho nền tảng Java. Chức năng tính của framework này có thể áp dụng cho bất kỳ ứng dụng Java nào, tuy vậy, nhiều bản mở rộng dành cho việc xây dựng ứng dụng nền web cũng được phát triển trên nền tảng Java EE.
Spring Framework cung cấp các giải pháp cho nhiều thách thức kỹ thuật mà các nhà phát triển phần mềm Java và các tổ chức muốn tạo ứng dụng dựa trên nền tảng Java phải đối mặt với Java platform. Spring Framework không chỉ được liên kết riêng biệt với Java Enterprise platform mặc dù sự tích hợp sâu của Spring trong Java EE là một yếu tố quan trọng cho sự phổ dụng, nổi tiếng của nó.1 Cấu trúc Spring Framework 2. Ưu điểm của Spring Framework Spring cho phép lập trình viên sử dụng POJOs. Việc sử dụng POJOs giúp người dùng không phải làm việc với EJB, ứng dụng, các luồng chạy, cấu hình… đơn giản hơn rất nhiều.
Ngoài ra, Spring được tổ chức theo kiểu mô đun. Số lượng các gói và các lớp khá 4 do an nhiều, nhưng người dùng chỉ cần quan tâm đến những gì họ cần và không cần quan tâm đến phần còn lại. Ngoài những tính chất trên, Spring hỗ trợ sử dụng khá nhiều công nghệ như ORM Framework, các logging framework, JEE, các thư viện tạo lịch trình (Quartz và JDK timer), … Module Web của Spring được thiết kế theo mô hình MVC nên nó cung cấp đầy đủ các tính năng giúp thay thế các web framework khác như Struts. Spring Boot Spring Boot là một Project nằm trên tầng IO Execution (tầng thực thi) của Spring IO Framework.
Spring Boot là một bước tiếp theo của Spring, để làm cho Spring dễ dàng hơn trong việc thiết lập và phát triển ứng dụng. Với Spring Boot các cấu hình Spring được giảm thiểu tối đa. Spring Boot hỗ trợ các bộ chứa nhúng (embedded containers) điều này cho phép các ứng dụng web có thể chạy độc lập mà không cần phải trên khai lên các web server.2 Vị trí của Spring Boot trong Spring Framework Ưu điểm của Spring Boot: - Có các tính năng của Spring Framework. - Tạo ứng dụng độc lập, có thể chạy bằng java -jar (cho cả java web).
- Nhúng trực tiếp các ứng dụng server (Tomcat, Jetty…) do đó không cần phải triển khai file WAR. - Cấu hình ít, tự động cậu hình bất kì khi nào có thể (Giảm thời gian viết code, tăng năng suất). 5 do an - Không yêu cầu XML config. - Cung cấp nhiều plugin.
- Chuẩn cho Microservices (cloud support; giảm việc setup, config; các thư viện hỗ trợ…) 2. Giới thiệu về MySQL MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là hệ quản trị cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet.
Người dùng có thể tải về MySQL miễn phí từ trang chủ. MySQL có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS. MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL) và được sử dụng cho việc bổ trợ NodeJs, PHP, Perl, và nhiều ngôn ngữ khác, làm nơi lưu trữ những thông tin trên các trang web viết bằng NodeJs, PHP hay Perl,. Ưu điểm của MySQL Dễ sử dụng: MySQL là cơ sở dữ liệu tốc độ cao, ổn định, dễ sử dụng và hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.
Độ bảo mật cao: MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên Internet khi sở hữu nhiều nhiều tính năng bảo mật thậm chí là ở cấp cao. Đa tính năng: MySQL hỗ trợ rất nhiều chức năng SQL được mong chờ từ một hệ quản trị cơ sở dữ liệu quan hệ cả trực tiếp lẫn gián tiếp. Khả năng mở rộng và mạnh mẽ: MySQL có thể xử lý rất nhiều dữ liệu và hơn thế nữa nó có thể được mở rộng nếu cần thiết. Nhanh chóng: Việc đưa ra một số tiêu chuẩn cho phép MySQL để làm việc rất hiệu quả và tiết kiệm chi phí, do đó nó làm tăng tốc độ thực thi.
Nhược điểm của MySQL Giới hạn: Theo thiết kế, MySQL không có ý định làm tất cả và nó đi kèm với các hạn chế về chức năng mà một vào ứng dụng có thể cần.