(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM(Đồ án tốt nghiệp) Xây dựng website quản lý việc làm của phòng Quan hệ doanh nghiệp tại Trường Đại học Sư phạm Kỹ thuật TP.HCM
TỔNG QUAN
Từ khóa tìm kiếm việc làm đang là một từ khóa rất là nổi, và chắc hẳn ai trong chúng ta cũng phải tìm kiếm đến nó Trên mạng có rất nhiều trang web nổi tiếng và uy tín giúp ta tìm các công việc theo đúng nhu cầu của ta như: timviecnhanh, topcv, , các trang web này hầu hết đều có các chức năng giống nhau như tìm kiếm việc làm, tìm kiếm công ty, ứng tuyển online, các công ty có thể vào đây để tìm các ứng viên cho công ty mình thông qua các CV mà họ viết, ngoài ra các trang web còn chứa rất nhiều tin tức, các mẹo hay, bổ ích liên quan đến tìm việc
Với sự hứng thú với hệ thống như thế này, và hiện tại học tập tại TTCNPM của trường Đại học sư phạm kỹ thuật TPHCM Chúng em quyết định thử thách bản thân tạo ra một hệ thống tương tự với các chức năng trên và bổ sung thêm một số chức năng hữu ích cần thiết
Hệ thống trang web dự tính xây dựng giống như một sợi dây liên kết giữa các nhà tuyển dụng với sinh viên tìm việc của trường Hệ thống cung cấp các chức năng như tìm kiếm việc làm thông qua các từ khóa tên công việc, ngành nghề để giúp cho người dùng có thể tìm kiếm được công việc theo nhu cầu của mình Ngoài ra trang web còn thêm chức năng quản lý các CV của mình và ứng tuyển các CV đấy vào các công việc mà mình ứng tuyển Công ty có thể đăng tuyển các CV các công việc cho công ty mình
Mục đích của đề tài Đề tài “XÂY DỰNG WEBSITE QUẢN LÝ VIỆC LÀM PHÒNG DOANH NGHIỆP CỦA TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM” đặt ra 2 vấn đề trọng tâm về mục tiêu mà sinh viên nghiên cứu cần thực hiện được bao gồm:
Vấn đề đầu tiên đưa ra về yếu tố lý thuyết, sinh viên thực hiện cần có kết quả nghiên cứu chuyên môn và hiểu được tổng quan và khả năng ứng dụng của từng thành phần trong mô hình Java Spring Boot và Angular nói chung Với từng thành phần của Java Spring Boot và Angular hiểu xác định được các đặc trưng về nguyên tắc hoạt động, thành phần hoặc mô hình Thư viện được xây dựng dựa trên ngôn ngữ lập trình Javascript đạt được sự phổ biến đến lập trình viên như: Java Spring Boot – xây dựng Server, Angular – xây dựng ứng dụng phía người dùng, MongoDB – cơ sở dữ liệu Song song với việc hiểu về các thành phần tiêu biểu của Java Spring Boot và Angular sinh viên cũng cần phải có thêm tìm hiểu về các thư viện, mã nguồn module giúp ích trong quá trình xây dựng ứng dụng Web thực tế
Vấn đề thứ hai của đề tài đặt ra về ứng dụng mô hình Java Spring Boot và Angular vào xây dựng một sản phẩm cụ thể, ở đây là “Website tìm việc làm” Sản phẩm hoàn thành phải là một ứng dụng Web được xây dựng có đầy đủ các thành phần của mô hình Java Spring Boot và Angular và đáp ứng thêm các yêu cầu về ứng dụng tạo CV, ứng tuyển, đăng tin tuyển dụng, , và một số tính năng khác có thể áp dụng trong thực tế cũng như khả năng nâng cấp hoặc tiếp tục phát triển tính năng trong tương lai Đối tượng và phạm vi nghiên cứu Đề tài được thực hiện nghiên cứu xoay quanh hai nhóm đối tượng trọng tâm bao gồm: nhóm đối tượng về kiến thức công nghệ và nhóm đối tượng có nhu cầu tìm việc làm, tuyển dụng nhân sự
Trong đó nhóm đối tượng về kiến thức công nghệ bao gồm 4 đối tượng nghiên cứu bắt buộc là: Spring Boot, thư viện Angular, cơ sở dữ liệu MongoDB Kết hợp thêm trong nhóm đối tượng nghiên cứu về kiến thức công nghệ là một số thư viện Javascript có giá trị ứng dụng như JWT (Json Web Token), charts cũng cần được nghiên cứu cho các ứng dụng về doanh thu cũng như mức độ ưa thích của sản phẩm
Nhóm đối tượng có nhu cầu tìm việc làm, tuyển dụng nhân sự bao gồm kiến thức về kinh nghiệm cũng như các đánh giá về trải nghiệm người dùng trên một trang web về tìm kiếm việc làm cụ thể
Phạm vi nghiên cứu đề ra ở mức độ tổng quát, người thực hiện đề tài hiểu được các kiến thức chung của nội dung nghiên cứu và áp dụng được từng nội dung kiến thức vào sản phẩm thực tế, không đặt nặng các lý thuyết nặng nề không mang tính ứng dụng
Kết quả dự kiến đạt được
Hiểu được các kiến thức về chức năng, cách thức hoạt động của Java Spring Boot và Angular trong việc xây dựng website
Xây dựng hoàn thành một website tìm kiếm việc làm với những kiến thức đã tìm hiểu
CƠ SỞ LÝ THUYẾT
Java và lịch sử phát triển
Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng (OOP) Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy
Cú pháp Java được vay mượn nhiều từ C và C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn Do đó việc viết một chương trình bằng Java dễ hơn, đơn giản hơn, đỡ tốn công sửa lỗi hơn
Java được khởi đầu bởi James - Gosling và bạn đồng nghiệp ở Sun Microsystems năm 1991 Ban đầu ngôn ngữ này được gọi là Oak (có nghĩa là cây sồi) do bên ngoài cơ quan của ông Gosling có trồng nhiều loại cây này
Java được phát hành vào năm 1994 Sau khi Oracle mua lại công ty Sun Microsystems năm 2009 - 2010, Oracle đã mô tả họ là "người quản lý công nghệ Java với cam kết không ngừng để bồi dưỡng một cộng đồng tham gia và minh bạch" Lịch sử phiên bản java:
• Java SE 6 (còn gọi là Mustang), được công bố 11 tháng 12 năm 2006
• Java SE 7 (còn gọi là Dolphin), được bắt đầu từ tháng 8 năm 2006 và công bố ngày 28 tháng 7 năm 2011
• Phiên bản dự kiến tiếp theo: Java 9 dự kiến ra đời năm 2016
Java Reflection
Java reflection là nền tảng cho cách thức làm việc của tất cả các dependency injection framework trong Java như Dagger, Google Guice, PicoContainer và Spring, chính vì vậy việc hiểu về Java reflection sẽ giúp chúng ta dễ dàng tiếp cận Spring hơn
Reflection là kĩ thuật rất cần thiết để lấy các thông tin của một kiểu dữ liệu Dựa vào đó ta có thể kích hoạt (gọi các phương thức) hoặc tạo thể hiện của kiểu dữ liệu đó Một ứng dụng quan trọng của reflection mà chúng ta có thể biết là Java Bean Nhờ đó, các IDE (như NetBeans) hoặc các framework có thể lấy được các thông tin và thiết lập giá trị cho các đối tượng trong môi trường run-time
Các lớp được dùng trong reflection nằm trong hai package là java.lang và java.lang.reflect Package java.lang.reflect bao gồm ba lớp chính mà chúng ta cần biết là Constructor, Field và Method:
- Class: Lớp này đại diện cho các lớp, interface và chứa các phương thức dùng để lấy các đối tượng kiểu Constructor, Field, Method
- Accessible Object: Các kiểm tra về phạm vi truy xuất (public, private, protected) của field, method, constructor sẽ được bỏ qua Nhờ đó chúng ta có thể dùng reflection để thay đổi, thực thi các thành phần này mà không cần quan tâm đến phạm vi truy xuất của nó
- Constructor: Chứa các thông tin về một constructor của lớp
- Field: chứa các thông tin về một field của lớp, interface
- Method: chứa các thông tin về một phương thức của lớp, interface
Hình 2.1 Kiến trúc tổng quát Java Reflection API
Tổng quan về Spring
Spring framework, hay ngắn hơn là Spring, là một cấu trúc dùng để xây dựng chương trình ứng dụng mã nguồn mở dành cho ngôn ngữ lập trình Java Phiên bản đầu tiên của nó do Rod Johnson viết và đã được ông xuất bản cùng với quyển sách đầu tay Expert One-on-One JavaEE Design and Development (Nhà xuất bản Wrox Press, Tháng 10 năm 2002) [7]
Kiến trúc của Spring framework được ra mắt công chúng lần đầu tiên hồi tháng
6 năm 2003 dưới Giấy phép Apache - phiên bản 2.0 Phiên bản 1.0 đánh dấu mốc thành đạt đầu tiên được xuất bản vào tháng 3 năm 2004 và tiếp đó vào tháng 9 năm
Tuy Spring framework không bắt buộc người ta phải tuân theo một mô hình lập trình cụ thể nào, song nó lan truyền rộng rải trong cộng đồng những người viết chương trình dùng Java, như một hình thức chủ yếu thay thế cho mô hình Enterprise Java Bean Theo thiết kế, bộ framework này giải phóng lập trình viên dùng Java, cho phép họ nhiều quyền tự do hơn và đồng thời cung cấp một giải pháp tiện lợi, đầy đủ dẫn chứng bằng tài liệu, dễ dàng sử dụng, phù hợp với những thực hành thông dụng trong công nghệ phần mềm
Bên cạnh những đặc trưng nền tảng của Spring framework là những cái có thể dùng được trong bất cứ một chương trình ứng dụng Java nào, rất nhiều các mở rộng và tiến bộ trong việc kiến tạo các trình ứng dụng dành cho nền tảng mạng web (web- based application) dựa trên nền Java Enterprise cũng tồn tại nữa Spring framework nổi tiếng cũng một phần do chính đặc thù kể trên và được giới thương mại công nhận như một nền tảng kiến trúc có tầm quan trọng trong chiến lược kiến tạo phần mềm.
Lịch sử phát triển
Phần đầu tiên của Spring framework ban đầu nguyên được Rod Johnson viết vào năm 2000 Vào năm 2001, những mô hình lập trình cho các trình ứng dụng Web được đại đa số sử dụng đều do Java Servlet API và Enterprise Java Bean cung cấp [7]
Năm 2003 thành lập dự án phát tại Sourceforge để phát triển Spring Sau khi phát triển trên nền tảng ban đầu hơn một năm họ đã phát hành phiên bản đầu tiên (1.0) vào tháng 3 năm 2004
Spring framework đã làm cho những kỹ thuật vốn không được biết đến mấy trở nên những kỹ thuật được mọi người ưa chuộng trong một thời gian ngắn ngủi Một trong Method method = c.getMethod("printHello", String.class); method.invoke(instance, "World"); Hello World 10 những kỹ thuật nổi tiếng hơn cả là kỹ thuật “đảo ngược quyền điều khiển” (Inversion of Control, IoC)
Năm 2005 cho thấy mức độ hưởng ứng nâng cao hơn những năm trước, nguyên do cũng vì những phiên bản mới được giới thiệu với những cột mốc đáng kể và những tính năng mới được thêm vào Diễn đàn Spring (Spring Forum) ra đời cuối năm 2004 cũng góp phần không nhỏ trong việc nâng cao tính phổ biến của bộ framework và từ đó đến nay đã sinh trưởng trở thành một nguồn thông tin quan trọng, giúp đỡ cho người sử dụng
Vào tháng 12 năm 2005, hội thảo đầu tiên về Spring Framework đã được tổ chức tại Miami, Florida thu hút 300 nhà phát triển trong 3 ngày và tiếp theo đó cuộc hội thảo ở Antwerp vào tháng 6 năm 2006, thu hút hơn 400 người.
Một số khái niệm chính
Hai trong những thành phần chủ chốt và là nền tảng tạo nên sức mạnh của Spring chính là IoC và DI
IoC Container trong Spring được xây dựng dựa trên nguyên lý Inversion of Control (đảo ngược điều khiển) đã xuất hiện khá lâu trong các mẫu hình thiết kế (design pattern), và được phổ biến rộng rãi nhờ Robert C Martin và Martin Fowler
Khái niệm Control Flow (tạm dịch là luồng thực thi) được sử dụng cho trình tự thực hiện các câu lệnh, chỉ thị hoặc lời gọi hàm trong một chương trình, khi chương trình này thực thi
Do chương trình ngày càng phức tạp, nên các lập trình viên áp dụng phương pháp lập trình hướng đối tượng nhằm phân loại, chia tách các chức năng và gom thành các đối tượng Các lập trình viên còn tạo dựng các thư viện tạo sẵn để có thể sử dụng lại Luồng thực thi của chương trình, trong những tình huống cần xem xét ở mức tổng thể, không còn quan tâm đến các bước thực thi câu lệnh cụ thể nữa, mà chỉ xem xét đến quá trình gọi phương thức của các đối tượng trong ứng dụng cũng như các đối tượng của thư viện dựng sẵn
Các lập trình viên, khi xây dựng ứng dụng từ đầu, đã thực hiện hai nhiệm vụ: trực tiếp điều khiển luồng thực thi của chương trình và xây dựng các chức năng để đáp ứng nghiệp vụ của ứng dụng Thực tế, có nhiều chương trình hoặc bộ phận trong chương trình có luồng thực thi rất giống nhau, chẳng hạn phần tương tác với HTTP trong các ứng dụng web, phần unit testing trong các ứng dụng,… Việc trực tiếp tạo dựng và kiểm soát luồng thực thi của chương trình lặp đi lặp lại khi xây dựng nhiều ứng dụng sẽ làm mất nhiều công sức, chi phí, tạo ra sự nhàm chán và dễ phát sinh lỗi Điều này tạo ra động lực cũng như môi trường để nguyên lý đảo ngược điều khiển nảy nở và phát triển
Hình 2.2 Mô hình ứng dụng áp dụng IoC
Như vậy, khái niệm “đảo ngược” ở đây chính là chuyển nhiệm vụ kiểm soát lưu trình thực thi từ ứng dụng cho một thành phần chuyên trách (thường là một thư viện phần mềm khung – framework – dựng sẵn ở bên ngoài) Ứng dụng chính chúng ta quan tâm phát triển không kiểm soát việc điều khiển luồng thực thi nữa, mà chỉ tập trung vào việc định nghĩa chức năng Thư viện phần mềm khung chuyên trách kiểm soát điều khiển sẽ dựa trên mô tả trong cấu hình của ứng dụng để thay mặt ứng dụng điều phối luồng thực thi trong chương trình
Dễ dàng nhận thấy thư viện phần mềm khung này khác với các thư viện thông thường ở chỗ: thư viện thông thường cung cấp các chức năng và chờ được ứng dụng gọi đến, còn thư viện phần mềm khung tạo dựng luồng thực thi và gọi đến các chức năng của ứng dụng
Nói một cách ngắn gọn IoC là một design pattern và tập hợp các kỹ thuật lập trình liên quan, trong đó luồng thực thi của một hệ thống bị đảo ngược so với cách tương tác truyền thống IoC trong Spring cũng hoàn toàn mang ý nghĩa như trên Trong Spring các đối tượng chính để xây dựng ứng dụng thì được quản lý bởi Spring IoC container Và IoC container gọi các đối tượng đó là các bean Một bean chỉ đơn giản là một đối tượng được khởi tạo và quản lý bởi Spring IoC container
Với cách code thông thường, các module cấp cao sẽ gọi các module cấp thấp Module cấp cao sẽ phụ thuộc và module cấp thấp, điều đó tạo ra các dependency Khi module cấp thấp thay đổi, module cấp cao phải thay đổi theo Một thay đổi sẽ kéo theo hàng loạt thay đổi, giảm khả năng bảo trì của code
Vì thế DI ra đời, Hiện nay, một số DI container như Unity, StructureMap v…v, hỗ trợ trong việc cài đặt và áp dụng Dependency Injection vào code, tuy nhiên vẫn có thể gọi chúng là IoC Container, ý nghĩa tương tự nhau [1]
➢ Có thể hiểu Dependency Injection một cách đơn giản như sau:
• Các module không giao tiếp với nhau mà thông qua interface
• Module cấp thấp sẽ implement interface
• Module cấp cao sẽ gọi module cấp thấp thông qua interface
• Việc khởi tạo các module cấp thấp do DI container thực hiện
• Constructor Injection: Các dependency sẽ được container truyền vào (inject vào) 1 class thông qua constructor của class đó Đây là cách thông dụng nhất
• Setter Injection: Các dependency sẽ được truyền vào 1 class thông qua các hàm Setter
• Interface Injection: Class cần inject sẽ implement 1 interface Interface này chứa 1 hàm tên Inject Container sẽ injection dependency vào 1 class thông qua việc gọi hàm Inject của interface đó Đây là cách rườm rà và ít được sử dụng nhất
➢ Ưu khuyết điểm của DI:
Bảng 2.1 Ưu khuyết điểm của DI Ưu điểm Khuyết điểm
• Giảm sự kết dính giữa các module
• Code dễ bảo trì, dễ thay thế module
• Rất dễ test và viết Unit Test
• Dễ dàng thấy quan hệ giữa các module (Vì các dependecy đều được inject vào constructor)
• Khái niệm DI khá “khó tiêu”, các developer mới sẽ gặp khó khăn khi học
• Sử dụng interface nên đôi khi sẽ khó debug, do không biết chính xác module nào được gọi
• Các object được khởi tạo toàn bộ ngay từ đầu, có thể làm giảm performance
• Làm tăng độ phức tạp của code
Các module
Spring được xây dựng với 7 module chính [8]
Hình 2.3 Các module của Spring Framework
Spring Core: Core package là phần cơ bản nhất của Spring, cung cấp những đặc tính như IoC (Inversion of Control) và DI (Dependency Injection) Khái niệm cơ bản là BeanFactory, một cài đặt của Factory pattern, cho phép “móc nối” sự phụ thuộc giữa các đối tượng trong file cấu hình
Spring Context: Spring context là một file cấu hình để cung cấp thông tin ngữ cảnh của Spring Spring context cung cấp các service như JNDI access, EJB integration, e-mail, internalization, validation, và scheduling functionality
Spring AOP (Aspect – Oriented Programming): Spring AOP module tích hợp chức năng lập trình hướng khía cạnh vào Spring framework thông qua cấu hình của nó Spring AOP module cung cấp các dịch vụ quản lý giao dịch cho các đối tượng trong bất kỳ ứng dụng nào sử dụng Spring Với Spring AOP chúng ta có thể tích hợp declarative transaction management vào trong ứng dụng mà không cần dựa vào EJB component Spring AOP module cũng đưa lập trình metadata vào trong Spring Sử dụng cái này chúng ta có thể thêm annotation vào source code để hướng dẫn Spring nơi và làm thế nào để liên hệ với aspect
Spring DAO (Data Access Object): Tầng JDBC và DAO đưa ra một cây phân cấp exception để quản lý kết nối đến database, điều khiển exception và thông báo lỗi được ném bởi vendor của database Tầng exception đơn giản điều khiển lỗi và giảm khối lượng code mà chúng ta cần viết như mở và đóng kết nối Hình 2.6: Các module của Spring framework 15 Module này cũng cung cấp các dịch vụ quản lý giao dịch cho các đối tượng trong ứng dụng Spring
Spring ORM (Object Relational Mapping): Spring có thể tích hợp với một vài ORM framework để cung cấp Object Relation tool bao gồm: JDO, Hibernate, OJB và iBatis SQL Maps
Spring Web: Nằm trên application context module, cung cấp context cho các ứng dụng web Spring cũng hỗ trợ tích hợp với Struts, JSF và Webwork Web module cũng làm giảm bớt các công việc điều khiển nhiều request và gắn các tham số của request vào các đối tượng domain
Spring MVC: MVC Framework thì cài đặt đầy đủ đặc tính của MVC pattern để xây dựng các ứng dụng Web MVC framework thì cấu hình thông qua giao diện và chứa được một số kỹ thuật view bao gồm: JSP, Velocity, Tiles và generation of PDF và Excel file
Tổng quan về Spring Boot
Spring Boot là một module của Spring Framework cung cấp các tính năng RAD (Rapid Aplication Development) để phát triển ứng dụng nhanh Nếu như trước đây, công đoạn khởi tạo một dự án Spring khá vất vả từ việc khai báo các dependency trong file pom.xml cho đến cấu hình bằng XML hoặc annotation phức tạp, thì giờ đây với Spring Boot, chúng ta có thể tạo các ứng dụng Spring một cách nhanh chóng và cấu hình cũng đơn giản hơn
Dưới đây là một số tính năng nổi bật 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)
• Cung cấp một loạt các tính năng phi chức năng phổ biến cho các dự án lớn như những trực tiếp Web Server như Tomcat, Jetty, …
• 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 xuất)
• Không yêu cầu XML config
• Chuẩn cho Microservices (Cloud support; giảm việc setup, config; các thư viện hỗ trợ…)
Tạo một Spring Boot Application
IDE hỗ trợ Spring Tool Suit
Giới thiệu
RESTful API là một dạng tiêu chuẩn được sử dụng trong việc thiết kế API cho ứng dụng web để giúp quản lý resource một cách dễ dàng nhất Chủ yếu quản lý các tài nguyên hệ thống như: Tệp văn bản, ảnh, âm thanh, video hoặc dữ liệu động… Trong đó phải kể đến là các tài nguyên được định dạng và được truyền tải thông qua HTTP
Hình 2.4 Cách thức hoạt động RESTful API 2.4.2 Xây dựng RESTful WebService
Quy tắc xây để tạo ra một ứng dụng WebService tuân thủ 4 quy tắc thiết kế cơ bản sau:
1) Sử dụng các pương thức HTTP một cách rõ ràng
• Bạn muốn thực hiện các thao tác trên dữ liệu cần lưu ý các thao tác sau:
• Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST
• Để truy xuất tài nguyên, sử dụng GET
• Để thay đổi trạng thái tài nguyên hoặc cập nhật nó, sử dụng PUT
• Để hủy bỏ hoặc xóa một tài nguyên, sử dụng DELETE
• Một đặc điểm của REST là phi trạng thái (stateless), có nghĩa là nó không lưu trữ thông tin của client Chẳng hạn bạn vừa gửi yêu cầu để xem trang thứ 2 của tài liệu, và bây giờ bạn muốn xem trang tiếp theo REST không lưu trữ lại
12 thông tin rằng trước đó nó đã phục vụ bạn Điều đó có nghĩa là REST không quản lý phiên làm việc (Session)
3) Hiển thị cấu trúc thư mục như các URLs
• Rest đưa ra một cấu trúc để người dùng có thể truy cập vào tài nguyên của nó thông qua các URL, tài nguyên ở đây là tất cả những cái mà bạn có thể gọi tên được (Video, ảnh, báo cáo thời tiết,…)
• Một vài nguyên tắc bổ sung để lưu ý trong khi nói về cấu trúc địa chỉ của RESTfull Web Service là:
• Giấu đuôi các tài liệu mở rộng của bản gốc trong máy chủ (.jsp, php, asp) nếu có, vì vậy bạn có thể giấu một số thứ mà không cần thay đổi địa chỉ URLs
• Để mọi thứ là chữ thường
• Thay thế các khoảng trống bằng gạch chân hoặc gạch nối (một trong hai loại)
• Tránh các chuỗi yêu cầu càng nhiều càng tốt
• Thay vì sử dụng mã (404 Not Found) khi yêu cầu địa chỉ cho một đường dẫn, luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi
4) Truyền tải JavaScript Object Notation (JSON), XML hoặc cả hai
• Khi client gửi một yêu cầu tới Web Service nó thường dược truyền tải dưới dạng XML hoặc JSON và thông thường nhận về với hình thức tương tự Đôi khi Client cũng có thể chỉ định kiểu dữ liệu nhận về mà nó mong muốn (JSON hoặc XML, …), các chỉ định này được gọi là các kiểu MINE, nó được gửi kèm trên phần HEADER của request
• Dưới đây là các kiểu MINE phổ biến thường sử dụng với REST service
Bảng 2.2 Bảng các kiểu MINE trong RESTful API
Angular (thường được gọi là "Angular 2+" hoặc "Angular v2 trở lên") là một khung ứng dụng web mã nguồn mở dựa trên TypeScript do nhóm Angular tại Google và cộng đồng các cá nhân và tập đoàn lãnh đạo Angular là một bản viết lại hoàn chỉnh từ cùng một nhóm đã xây dựng AngularJS [9]
Một trong những tính năng chính của Angular 2 là khả năng phát triển cho nhiều nền tảng: web, di động và máy tính để bàn gốc (trong khi AngularJS không có hỗ trợ di động)
Angular được tạo ra để xây dựng các ứng dụng web động, thường được sử dụng để tạo các ứng dụng một trang (SPA) Angular là một nền tảng miễn phí và được hàng nghìn nhà phát triển trên khắp thế giới ưa chuộng [9]
2.5.2 So sánh Angular, ReactJS và VueJS
Angular, được phát triển bởi Google, được phát hành lần đầu tiên vào năm 2010, là phiên bản lâu đời nhất trong số đó Nó là một khung JavaScript dựa trên TypeScript Một sự thay đổi đáng kể đã xảy ra vào năm 2016 khi phát hành Angular 2 (và việc loại bỏ “JS” khỏi tên ban đầu - AngularJS) Angular 2+ được gọi là Angular Mặc dù AngularJS (phiên bản 1) vẫn được cập nhật, chúng tôi sẽ tập trung thảo luận vào Angular Phiên bản ổn định mới nhất là Angular 7, được phát hành vào tháng 10 năm
React, được phát triển bởi Facebook, ban đầu được phát hành vào năm 2013 Facebook sử dụng React rộng rãi trong các sản phẩm của họ (Facebook, Instagram và WhatsApp) Phiên bản ổn định hiện tại là 16.X, được phát hành vào tháng 11 năm
Vue, còn được gọi là Vue.js, là thành viên trẻ nhất của nhóm Nó được phát triển bởi Evan You, cựu nhân viên của Google vào năm 2014 Trong hai năm qua, Vue đã chứng kiến sự thay đổi đáng kể về mức độ phổ biến, mặc dù nó không có được sự hậu thuẫn của một công ty lớn Phiên bản ổn định hiện tại là 2.17, được phát hành vào tháng 8 năm 2018 Các cộng tác viên của Vue được hỗ trợ bởi Patreon Vue
3, hiện đang trong giai đoạn tạo mẫu và đang có kế hoạch chuyển sang TypeScript
Hình 2.5 So sánh mức độ phổ biến Angular, ReactJS và VueJS
Angular là framework hoàn thiện nhất trong số các framework, có sự hỗ trợ tốt về mặt người đóng góp và là một gói hoàn chỉnh Tuy nhiên, đường cong học tập rất dốc và các khái niệm về phát triển trong Angular có thể gây khó khăn cho các nhà phát triển mới Angular là một lựa chọn tốt cho các công ty có đội ngũ lớn và các nhà phát triển đã sử dụng TypeScript
React vừa đủ tuổi để trưởng thành và có số lượng đóng góp khổng lồ từ cộng đồng Nó đang được chấp nhận rộng rãi Thị trường việc làm cho React thực sự tốt và tương lai cho khung công tác này có vẻ tươi sáng React có vẻ như là một lựa chọn tốt cho những người bắt đầu với các khung JavaScript front-end, các công ty khởi nghiệp và các nhà phát triển thích sự linh hoạt Khả năng tích hợp liền mạch với các khung công tác khác mang lại cho nó một lợi thế lớn cho những ai muốn có một số tính linh hoạt trong mã của họ
Vue là người mới tham gia đấu trường, không có sự hậu thuẫn của một công ty lớn Tuy nhiên, nó đã hoạt động rất tốt trong vài năm qua khi trở thành đối thủ cạnh tranh mạnh mẽ của Angular và React Điều này có lẽ đóng một vai trò nhất định khi rất nhiều gã khổng lồ Trung Quốc như Alibaba và Baidu chọn Vue làm khung JavaScript front-end chính của họ Tuy nhiên, vẫn còn phải xem nó hoạt động như
Tổng quan về Angular
Angular (thường được gọi là "Angular 2+" hoặc "Angular v2 trở lên") là một khung ứng dụng web mã nguồn mở dựa trên TypeScript do nhóm Angular tại Google và cộng đồng các cá nhân và tập đoàn lãnh đạo Angular là một bản viết lại hoàn chỉnh từ cùng một nhóm đã xây dựng AngularJS [9]
Một trong những tính năng chính của Angular 2 là khả năng phát triển cho nhiều nền tảng: web, di động và máy tính để bàn gốc (trong khi AngularJS không có hỗ trợ di động)
Angular được tạo ra để xây dựng các ứng dụng web động, thường được sử dụng để tạo các ứng dụng một trang (SPA) Angular là một nền tảng miễn phí và được hàng nghìn nhà phát triển trên khắp thế giới ưa chuộng [9]
So sánh Angular, ReactJS và VueJS
Angular, được phát triển bởi Google, được phát hành lần đầu tiên vào năm 2010, là phiên bản lâu đời nhất trong số đó Nó là một khung JavaScript dựa trên TypeScript Một sự thay đổi đáng kể đã xảy ra vào năm 2016 khi phát hành Angular 2 (và việc loại bỏ “JS” khỏi tên ban đầu - AngularJS) Angular 2+ được gọi là Angular Mặc dù AngularJS (phiên bản 1) vẫn được cập nhật, chúng tôi sẽ tập trung thảo luận vào Angular Phiên bản ổn định mới nhất là Angular 7, được phát hành vào tháng 10 năm
React, được phát triển bởi Facebook, ban đầu được phát hành vào năm 2013 Facebook sử dụng React rộng rãi trong các sản phẩm của họ (Facebook, Instagram và WhatsApp) Phiên bản ổn định hiện tại là 16.X, được phát hành vào tháng 11 năm
Vue, còn được gọi là Vue.js, là thành viên trẻ nhất của nhóm Nó được phát triển bởi Evan You, cựu nhân viên của Google vào năm 2014 Trong hai năm qua, Vue đã chứng kiến sự thay đổi đáng kể về mức độ phổ biến, mặc dù nó không có được sự hậu thuẫn của một công ty lớn Phiên bản ổn định hiện tại là 2.17, được phát hành vào tháng 8 năm 2018 Các cộng tác viên của Vue được hỗ trợ bởi Patreon Vue
3, hiện đang trong giai đoạn tạo mẫu và đang có kế hoạch chuyển sang TypeScript
Hình 2.5 So sánh mức độ phổ biến Angular, ReactJS và VueJS
Angular là framework hoàn thiện nhất trong số các framework, có sự hỗ trợ tốt về mặt người đóng góp và là một gói hoàn chỉnh Tuy nhiên, đường cong học tập rất dốc và các khái niệm về phát triển trong Angular có thể gây khó khăn cho các nhà phát triển mới Angular là một lựa chọn tốt cho các công ty có đội ngũ lớn và các nhà phát triển đã sử dụng TypeScript
React vừa đủ tuổi để trưởng thành và có số lượng đóng góp khổng lồ từ cộng đồng Nó đang được chấp nhận rộng rãi Thị trường việc làm cho React thực sự tốt và tương lai cho khung công tác này có vẻ tươi sáng React có vẻ như là một lựa chọn tốt cho những người bắt đầu với các khung JavaScript front-end, các công ty khởi nghiệp và các nhà phát triển thích sự linh hoạt Khả năng tích hợp liền mạch với các khung công tác khác mang lại cho nó một lợi thế lớn cho những ai muốn có một số tính linh hoạt trong mã của họ
Vue là người mới tham gia đấu trường, không có sự hậu thuẫn của một công ty lớn Tuy nhiên, nó đã hoạt động rất tốt trong vài năm qua khi trở thành đối thủ cạnh tranh mạnh mẽ của Angular và React Điều này có lẽ đóng một vai trò nhất định khi rất nhiều gã khổng lồ Trung Quốc như Alibaba và Baidu chọn Vue làm khung JavaScript front-end chính của họ Tuy nhiên, vẫn còn phải xem nó hoạt động như
15 thế nào trong tương lai và người ta có lý do để thận trọng với nó Vue nên là lựa chọn của bạn nếu bạn thích sự đơn giản, nhưng cũng thích sự linh hoạt
2.5.2.4 Sử dụng Angular trong dự án
Trong dự án này, trang end-user và trang admin được phát triển dựa trên Angular phiên bản 10.2.5
Giới thiệu
MongoDB hệ quản trị cơ sở dữ liệu mã nguồn mở (open-source) thuộc họ cơ sở dữ liệu phi quan hệ (NoSQL) [3]
MongoDB được phát triển từ năm 2007 bởi một tổ chức tên là MongoDB Inc có trụ sở tại New York Tại thời điểm đó MongoDB được phát triển như là một nền tảng dịch vụ (Platform as a services - PAAS) Đến năm 2009 MongoDB đã được chính thức giới thiệu trên thị trường như một máy chủ cơ sở dữ liệu mã nguồn mở (open-source database server) được duy trì và phát triển bởi tổ chức MongoDB Inc Tại thời điểm đó đã có nhiều tổ chức lớn và vừa như SourceForge, Foursquare, eBay sử dụng MongoDB để phát triển cơ sở dữ liệu của họ
MongoDB được xây dựng theo hướng là một cơ sở dữ liệu hướng đối tượng vì vậy nó không có các ràng buộc toàn vẹn dữ liệu như ở các Cơ sở dữ liệu quan hệ mà cho phép lưu trữ dữ liệu linh hoạt (stores data in flexible) có dữ liệu khác nhau trong cùng một Collection (tương đương với Table ở SQL) Do chính đặc thù này mà MongoDB có thể được sử dụng để lưu các dữ liệu đa dạng và phức tạp mà không bị hạn chế khi có thay đổi về cấu trúc lưu dữ liệu
MongoDB là một cơ sở dữ liệu phân tán vì vậy nó sẽ có những đặc trưng của cơ sở dữ liệu phân tán như: tính sẵn sàng cao, khả năng mở rộng theo chiều ngang,
Đặc trưng
MongoDB là cơ sở dữ liệu NoSQL loại Document Database với nhiều yếu tố được bổ sung để nâng cao hiệu suất sử dụng như Index, Schema,
MongoDB được lập trình bằng ngôn ngữ C++ và hỗ trợ tốt với các Javascript Framework
Các khái niệm tiêu biểu khi sử dụng MongoDB: [3]
• Document - tài liệu: là đơn vị cơ bản của dữ liệu trong MongoDB, một document tương đương với một dòng trong bảng của SQL Mỗi một document đều có cấu trúc là một đoạn chuỗi json độc lập
• Collection: là tập hợp các document có các thuộc tính tương tự nhau Collection tương đương với một bảng (Table) trong SQL Điểm khác nhau rõ rệt nhất ở đây chính là việc bảng trong SQL có cấu trúc được quy định sẵn và dữ liệu vào luôn phải tuân theo cấu trúc đó, còn Collection có thể tiếp nhận tự do mọi document có các thuộc tính khác nhau vào mà không hề phát sinh lỗi
• Database: là các cơ sở dữ liệu độc lập lẫn nhau của MongoDB, một Database của MongoDB bao gồm một hay nhiều Collection và các cài đặt, phân quyền kèm theo Database đó
• _id: là một khóa định danh đặc biệt được quy định tự động bởi MongoDB khi thêm một Document vào Collection _id của bất cứ Document nào đều luôn là duy nhất trong Collection chứa document đó
• Index - chỉ mục: là một cấu trúc dữ liệu thu thập thông tin về các trường (field) trong Document của Collection từ đó mà nó giúp cho các câu truy vấn (query) đến các trường này tăng đáng kể tốc độ truy vấn Tuy nhiên việc tạo thêm các Index cũng làm tăng đáng kể dung lượng bộ nhớ tiêu hao cho Database MongoDB Trường _id là trường chỉ mục luôn luôn được khởi tạo mặc định bởi MongoDB khi thêm mới một Document
• Query - truy vấn: cũng giống như tất cả cơ sở dữ liệu khác, MongoDB hỗ trợ truy vấn dữ liệu và nhà phát triển của cơ sở dữ liệu này cũng đã cung cấp số lượng lớn các câu lệnh bổ trợ giúp đơn giản hóa việc truy vấn dữ liệu hơn rất nhiều lần so với các ngôn ngữ truy vấn dữ liệu truyền thống mà vẫn đảm bảo được tốc độ truy vấn nhanh.
Ưu điểm
Lược đồ dữ liệu linh hoạt, do là cơ sở dữ liệu NoSQL tổ chức dữ liệu theo kiểu Document Database nên có thể tùy ý lưu các Document với các thuộc tính và kích thước Document khác nhau và cùng một Collection của MongoDB
Tốc độ truy vấn dữ liệu nhanh, có thể tăng tốc độ truy vấn dữ liệu ở các trường (field) thông thường bằng cách khởi tạo Index cho trường tương ứng đó
Khả năng mở rộng cơ sở dữ liệu lớn
Phù hợp cho xu hướng Big Data trên toàn thế giới cũng như dễ dàng được lựa chọn với các ứng dụng thời gian thực (real-time)
17 Được hỗ trợ bởi nhiều thư viện Javascript và có thể ứng dụng cho nhiều nền tảng, ngôn ngữ khác nhau.
Khuyết điểm
Là cơ sở dữ liệu không có cấu trúc nên không còn các ràng buộc khóa ngoại, khóa chính như cơ sở dữ liệu quan hệ Từ đó các vấn đề về toàn vẹn dữ liệu phải được chuyển đến cho Server ứng dụng xử lý thay Các vấn đề về sai dữ liệu đầu vào thường không được MongoDB cảnh báo do không có ràng buộc nào quy định
Tiêu tốn nhiều tài nguyên trong quá trình xử lý cũng như tiêu tốn bộ nhớ cho việc khởi tạo thêm các Index tăng tốc độ truy vấn
Các kỹ thuật và thư viện khác
Aspose Cells
Aspose.Cells cho Java là một class library để tạo và quản lý các bảng tính Microsoft Excel trong các ứng dụng Java, độc lập với Microsoft Office Automation hoặc các sản phẩm khác
Aspose.Cells for Java là một API xử lý bảng Excel xuất sắc đã cho phép các nhà phát triển Java nhúng khả năng đọc, viết và thao tác các bảng tính Excel từ trong các ứng dụng Java của riêng họ mà không cần dựa vào Microsoft Excel
Aspose.Cells cho Java là một API phong phú, có thể mở rộng và tính năng phong phú, cung cấp nhiều chức năng vượt xa khả năng xuất dữ liệu đơn giản của các thành phần khác có sẵn trên thị trường Aspose.Cells cho Java cung cấp khả năng xuất dữ liệu, định dạng bảng tính đến mức hạt nhất, nhập hình ảnh, tạo biểu đồ, áp dụng và tính toán các công thức phức tạp, luồng dữ liệu Excel và lưu kết quả theo các định dạng khác nhau.
Aspose word
Aspose.Words for NET là một class library tiên tiến để thực hiện một loạt các tác vụ xử lý văn bản trong các ứng dụng NET, không cần tự động hóa hoặc các sản phẩm Microsoft Office trên máy chủ phát triển.
Aspose.Words for NET là một API xử lý văn bản tiên tiến cho phép bạn thực hiện một loạt các tác vụ xử lý văn bản trực tiếp trong các ứng dụng Java
Aspose.Words for NET hỗ trợ DOC, OOXML, RTF, HTML, OpenDocument, PDF, XPS, EPUB và các định dạng khác Với Aspose.Words có thể xem, tạo, sửa đổi, chuyển đổi, hiển thị và in tài liệu mà không cần sử dụng Microsoft Word
Json Web Token
JWT (Json Web Token) là một mã thông báo tiêu chuẩn mở được sử dụng để trao đổi thông tin với các yêu cầu HTTP Thông tin này được xác minh và đánh dấu đáng tin cậy dựa trên signature JWT có nhiều lợi thế hơn các session
• Không có trạng thái (stateless), thông tin không được lưu trữ trên máy chủ
• Dễ phát triển, mở rộng
• Hiệu suất tốt hơn do máy chủ đọc thông tin trong yêu cầu (nếu sử dụng phiên, hệ thống phải truy vấn thông tin trong lưu trữ hoặc cơ sở dữ liệu)
Hình 2.6 Cấu trúc Json web token
Phần Signature sẽ được mã hóa bằng HMAC hoặc RSA
HMAC: Người tạo JWT (người phát hành mã thông báo) và người nhận JWT (người xác minh mã thông báo) đã sử dụng cùng một secret key để mã hóa và kiểm tra
RSA sử dụng 1 cặp khóa, đối tượng khởi tạo JWT sử dụng khóa riêng để mã hóa, bộ thu JWT sử dụng puclic key để kiểm tra
Vì vậy, với HMAC cả hai bên phải chia sẻ một secret key với nhau và JWT bên nhận hoàn toàn có thể tạo ra một mã JWT hợp lệ khác dựa trên khóa bí mật đó Đối với RSA, người nhận sử dụng public key để kiểm tra nhưng không thể khởi tạo JWT mới dựa trên khóa đó Do đó, mã hóa sử dụng RSA giúp bảo mật signature tốt hơn khi chia sẻ JWT với nhiều đối tượng khác nhau
Trong dự án, JWT được áp dụng để xác thực và ủy quyền
Ngx-charts
Ngx-chart là thư viện biểu đồ cho Angular, nó bao bọc thư viện JavaScript D3 và sử dụng Angular để kết xuất và tạo hoạt ảnh cho các phần tử SVG Đây là một trong những thư viện biểu đồ phổ biến nhất để phát triển ứng dụng Angular vì nó giúp hiển thị biểu đồ dễ dàng hơn rất nhiều và cung cấp các khả năng khác mà nền tảng Angular mang lại như AoT, Universal, v.v Ngx-chart là một thư viện mạnh mẽ và dễ sử dụng trong các ứng dụng Angular [7]
Trong dự án, biểu đồ ngx được áp dụng để trình bày dữ liệu thống kê cho trang quản trị
KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU
Careerlink
3.1.1.1 Giới thiệu Được thành lập vào năm 2006, CareerLink.vn đã từng bước trở thành cầu nối vững chắc giữa người lao động và nhà tuyển dụng Chuyên cung cấp dịch vụ tìm kiếm nhân sự quản lý cấp cao, và dịch vụ tuyển dụng trực tuyến Qua đó, nhà tuyển dụng sẽ hài lòng với việc tìm được ứng viên phù hợp nhu cầu, còn người tìm việc sẽ thỏa mãn với khát vọng vươn tới đỉnh cao sự nghiệp [5]
CareerLink.vn hiện đang là website tuyển dụng có tới 100,000 người truy cập mỗi ngày Với lượng truy cập lớn, dữ liệu hồ sơ ứng viên đa dạng và phong phú đạt trình độ cao, website là công cụ hỗ trợ đắc lực trong công tác tuyển dụng của công ty Đặc biệt là đối với các đơn vị thường hay tuyển dụng và tuyển dụng nhiều vị trí trong năm thì đây chính là dịch vụ hữu hiệu và khá tiết kiệm chi phí. Đăng tuyển công việc là một công cụ đơn giản và hữu ích cho việc tuyển dụng Với sự hỗ trợ tận tâm, nhiệt tình của bộ phận chăm sóc khách hàng, công việc của bạn sẽ được đăng lên website một cách rõ ràng, nhanh chóng và thuận lợi nhất
Hình 3.2 Chức năng của website Career Link
- Giao diện thân thiện, dễ sử dụng
- Có đầy đủ các tính năng để người người tuyển dụng đăng tin và tìm được hồ sơ ứng viên phù hợp và người dùng dễ dàng tạo CV ứng tuyển công việc
- Tích hợp cơ sở dữ liệu Hồ sơ của CareerLink
- Hỗ trợ đa ngôn ngữ: tiếng anh, tiếng việt
- Có hỗ trợ chatbox để hỗ trợ người dùng
- Có hỗ trợ chia sẻ các công việc quan tâm thông qua các kênh Facebook, Twitter, LinkedIn
- Có hỗ trợ các mẫu CV có sẵn, rất tiện, đẹp
Topdev
TopDev là một mạng lưới tuyển dụng và hệ sinh thái trong lĩnh vực Di động & CNTT Mạng tuyển dụng hàng đầu trong lĩnh vực Di động & CNTT tại Việt Nam, cung cấp giải pháp nhân tài Công nghệ Mạng lưới bao phủ 95% cộng đồng Công nghệ tại Việt Nam và khách hàng đến từ cả Việt Nam và Đông Nam Á [6]
Mạng lưới bao gồm tất cả các hoạt động và giá trị mà bất kỳ nhân lực công nghệ nào cũng có thể cần, làm việc cùng và giải trí, bao gồm các sự kiện công nghệ, cộng đồng công nghệ, trang web công nghệ, diễn đàn, v.v Dựa trên mạng lưới này, Topdev đã đạt được 95% công nghệ các cộng đồng ở Việt Nam
Sau gần 5 năm hoạt động, TopDev đã trở thành:
• Nền tảng tuyển dụng CNTT hàng đầu tại Việt Nam với hơn 2.000 khách hàng và hơn 300.000 hồ sơ Developer
• Đơn vị duy nhất tại Việt Nam giúp xây dựng Thương hiệu Nhà tuyển dụng cho hàng trăm công ty CNTT tại Việt Nam
• Đơn vị uy tín nhất xuất bản các phân tích và báo cáo thị trường CNTT & nhân lực IT tại Việt Nam
• Đơn vị tổ chức của hai sự kiện Công nghệ có ảnh hưởng nhất tại Việt Nam: Vietnam Mobile Day & Vietnam Web Summit
Hình 3.1 Trang chủ website Topdev
Chức năng chính của trang tìm kiếm việc làm Topdev
Hình 3.2 Chức năng của webiste Topdev
- Giao diện thân thiện, dễ sử dụng
- Có đầy đủ các tính năng để người người tuyển dụng đăng tin và tìm được hồ sơ ứng viên phù hợp và người dùng dễ dàng tạo CV ứng tuyển công việc
- Tích hợp cơ sở dữ liệu Hồ sơ của CareerLink
- Hỗ trợ đa ngôn ngữ: tiếng anh, tiếng việt
- Có hỗ trợ chatbox để hỗ trợ người dùng
- Có hỗ trợ chia sẻ các công việc quan tâm thông qua các kênh Facebook, Twitter, LinkedIn
- Có hỗ trợ các mẫu CV có sẵn, rất tiện, đẹp: 02 nguồn CV (tin Basic Plus & Distinction)
- Hiển thị tin đăng trên các website chuyên công nghệ liên kết: Techtalk.vn, Techmaster, Freetuts
- Có Chương trình tích lũy đơn hàng & Khách hàng thân thiết: TopDev Rewards
- Chất lượng CV: Sàng lọc CV trước khi gửi sang Nhà tuyển dụng, tránh nhận
- Cam kết đảm bảo chất lượng dịch vụ (đối với gói Enterprise trở lên)
So sánh Careerlink và Topdev
Bảng 3.1 So sánh CareerLink và Topdev
Giá cả Gói SME/ Startup:
Chức năng Có đầy đủ chức năng của trang web tìm việc
Có đầy đủ chức năng của trang web tìm việc
Chất lượng CV Sàng lọc CV trước khi gửi sang Nhà tuyển dụng, tránh nhận CV rác
Thời hạn sử dụng tin đăng
01 năm kể từ ngày đặt mua
Nguồn CV ứng viên 02 nguồn CV (tin Basic
Plus & Distinction) – Nguồn tự nhiên – Nguồn do TopDev giới thiệu
Thời gian hiển thị mỗi tin đăng (đối với gói
Tổng: 60 ngày 30 ngày chính thức + 30 ngày bảo hảnh
Với kết quả thu thập và kiểm tra các hệ thống hiện tại, giúp chúng em có góc nhìn tổng quát về nghiệp vụ tìm việc làm hiện nay, giúp giải quyết được nhu cầu việc làm cho sinh viên của trường ĐH Sư Phạm Kỹ Thuật TP.HCM và nhà tuyển dụng một cách hiệu quả Hệ thống sẽ bao gồm các phần sau:
• Phần trang admin quản lý xét duyệt các tài khoản sinh viên, quản lý các tin đăng, bài đăng, xem được các báo cáo thống kê
• Phần trang end-user dành cho sinh viên có thể tìm kiếm nhà tuyển dụng, việc làm, lưu việc làm quan tâm, và ứng tuyển việc làm Đối với nhà tuyển dụng có thể đăng tin việc làm và xét duyệt hồ sơ ứng viên
• Các trang xây dựng với giao diện thân thiện, dễ sử dụng, đáp ứng nhanh chóng như cầu của người dùng
3.2.1.1 Yêu cầu chức năng nghiệp vụ a Người tìm việc
- Quản lý thông tin cá nhân
• Chỉnh sửa thông tin cá nhân
- Xem danh sách công việc
- Xem chi tiết công việc
- Xem chi tiết nhà tuyển dụng
- Ứng tuyển, hủy ứng tuyển công việc
- Lưu, hủy công việc quan tâm
- Tìm kiếm việc làm, nhà tuyển dụng b Nhà tuyển dụng
- Quản lý thông tin cá nhân
• Cập nhật thông tin cá nhân
• Xem, sửa, xóa tin đăng
- Xem danh sách CV đã ứng tuyển
- Duyệt, hủy duyệt hồ sơ ứng tuyển
- Xem chi tiết ứng viên
- Tìm kiếm ứng viên c Người quản trị
• Xem danh sách, tìm kiếm tỉnh thành
• Thêm mới, xóa, cập nhật tỉnh thành
• Xem danh sách, tìm kiếm quận huyện
• Thêm mới, xóa, cập nhật quận huyện
• Xem danh sách, tìm kiếm quy định
• Thêm mới, xóa, cập nhật quy định
- Quản lý thông tin liên hệ
• Xem danh sách, tìm kiếm thông tin liên hệ
• Thêm mới, xóa, cập nhật thông tin liên hệ
• Xem danh sách, tìm kiếm ngành
• Thêm mới, xóa, cập nhật ngành
• Xem danh sách, tìm kiếm khoa
• mới, xóa, cập nhật khoa
- Quản lý vị trí công việc
• Xem danh sách, tìm kiếm vị trí công việc
• Thêm mới, xóa, cập nhật vị trí công việc
- Quản lý nhà tuyển dụng
• Xem danh sách, tìm kiếm nhà tuyển dụng
• Thêm mới, xóa, cập nhật nhà tuyển dụng
• Duyệt, hủy duyệt nhà tuyển dụng
• Xem danh sách filter theo lĩnh vực
• Xem danh sách, tìm kiếm sinh viên
• Thêm mới, xóa, cập nhật sinh viên
• Xem danh sách filter theo ngành, khoa
• Xem danh sách, tìm kiếm việc làm
• Thêm mới, xóa, cập nhật việc làm
• Xem danh sách filter theo ngành, khoa, lĩnh vực, vị trí công việc, việc làm duyệt, chưa duyệt
• Duyệt, hủy duyệt thông tin tuyển dụng
- Quản lý câu hỏi khảo sát sinh viên
• Xem danh sách, tìm kiếm câu hỏi khảo sát sinh viên
• Thêm mới, xóa, cập nhật câu hỏi khảo sát sinh viên
- Quản lý câu hỏi khảo sát nhà tuyển dụng
• Xem danh sách, tìm kiếm câu hỏi khảo sát nhà tuyển dụng
• Thêm mới, xóa, cập nhật câu hỏi khảo sát nhà tuyển dụng
- Xem các thống kê kết quả khảo sát sinh viên
- Xem các thống kê kết quả khảo sát doanh nghiệp
• Xem danh sách, tìm kiếm email
• Gửi mail hàng loạt cho sinh viên, doanh nghiệp
3.2.1.2 Yêu cầu chức năng hệ thống a Phân quyền:
- Admin: có mọi quyền trong hệ thống
- Người tìm việc: có quyền trên trang end-user dành cho người tìm việc
- Nhà tuyển dụng: có quền trên trang end-user dành cho nhà tuyển dụng b Thông báo
- Luôn luôn hiển thị thông báo cho người dùng biết cho dùng hành động đó thành công hay thất bại c Bảo mật
- Luôn kiểm tra tính hợp lệ của dữ liệu trước khi xử lý d Lưu trữ dữ liệu, hình ảnh e Ngôn ngữ:
3.2.2 Yêu cầu phi chức năng a Khả năng sử dụng (Usability)
- Giao diện thân thiện, dễ sử dụng đối với người dùng
- Dễ thao tác b Tính hiệu quả (Effectiveness)
- Tốc độ tìm kiếm nhanh và hiệu quả
- Tốc độ load trang nhanh c Khả năng tương thích (Compatibility)
- Tương thích với nhiều thiết bị duyệt web như máy tính, điện thoại, tablet d Khả năng phát triển (Development)
- Dễ dàng mở rộng và phát triển sau này.