KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH WEBSITE VENJOB TÌM KIẾM VIỆC LÀM BẰNG RUBY ON RAILS... Website VeNJOB giúp mọi người tìm kiếm công việc tại cả Việt Nam cũng như nước
Trang 1KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
LẬP TRÌNH WEBSITE VENJOB
TÌM KIẾM VIỆC LÀM BẰNG RUBY ON RAILS
Trang 2LỜI MỞ ĐẦU
Ngày nay, các website dịch vụ là một thành phần không thể thiếu với đời sống con người Trong thời đại số 4.0, với sự phát triển chóng mặt của Internet cũng như ngành công nghệ phần mềm, các phương thức dịch vụ thông qua mạng Internet đang dần dần vượt mặt các phương thức thông thường Tìm kiếm việc làm cũng không ngoại lệ, phương thức tìm kiếm việc làm thông qua mạng Internet giúp con người tiết kiệm thời gian, tiết kiệm không gian, thoải mái hơn và tự chủ hơn trong việc tìm kiếm công việc Do đó, để đáp ứng nhu cầu của khách hàng tìm kiếm việc làm thông qua mạng Internet, VeNJOB có thể đáp ứng được nhu cầu của khách hàng
Với niềm đam mê với việc phát triển website, cũng như tìm kiếm cơ hội việc làm, em cảm thấy đây là cơ hội ở ZIGExN VeNtura là tốt nhất ở thời điểm này Thông qua việc học hỏi ngôn ngữ mới – Ruby – và framework Rails ở công ty, em đã học hỏi được nhiều kiến thức mới cũng như quy trình xây dựng một website, đặc biệt là ở một ngôn ngữ mới em chưa từng học trước đó
Website VeNJOB giúp mọi người tìm kiếm công việc tại cả Việt Nam cũng như nước ngoài, được dựa trên dữ liệu công việc từ website uy tín “careerbuilder.vn”, VeNJOB luôn cập nhật thông tin mới nhất về các việc làm mỗi ngày Tuy không phải là ý tưởng thiết kế website mới, nhưng trong quá trình xây dựng website, em đã học được nhiều kỹ thuật và công nghệ mới
Trang 3đỡ em hoàn thành đợt thực tập này
Đặc biệt cảm ơn anh Lê Văn Hậu, đã training Git/Ruby/Ruby on Rails, hướng dẫn, giúp
đỡ cho em tận tình cả những khó khăn trong công việc, đến những khó khăn việc làm quen với môi trường mới
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này
Nguyễn Ngọc Nghĩa
TP Hồ Chí Minh, ngày 17 tháng 07 năm 2020
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
Mục lục
Chương 1: Giới thiêu công ty thực tập 5
1 Giới thiệu công ty ZIGExN VeNtura 5
2 Sản phẩm của công ty 5
Chương 2: Nội dung thực tập 5
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 6
2 Nghiên cứu kỹ thuật 6
2.1 Nghiên cứu/ thực hành về Linux/Ubuntu 6
2.2 Nghiên cứu/thực hành về công cụ Git 6
2.3 Nghiên cứu/thực hành về Ruby 6
2.4 Nghiên cứu/thực hành về Ruby on Rails 7
3 Thực hiện project 8
4 Lịch làm việc 9
Chương 3: Chi tiết về project 13
1 Giới thiệu về VeNJOB 13
1.1 Các công nghệ đã sử dụng: 13
1.2 Dịch vụ chính: 13
2 Thực hiện 18
3 Quá trình thực hiện VeNJOB: 18
TÀI LIỆU THAM KHẢO 22
TỔNG KẾT 23
Trang 6Chương 1: Giới thiêu công ty thực tập
1 Giới thiệu công ty ZIGExN VeNtura
ZIGExN VeNtura là công ty 100% vốn từ Nhật Bản Được biết đến như là một biểu tượng của sức trẻ và cộng đồng linh hoạt trong ngành Công nghệ thông tin hiện này, ZIGExN VeNtura phát triển công nghệ phần mềm và các dịch vụ Internet cho thị trường Nhật Bản Xuất hiện trong thị trường Việt Nam từ đầ unăm 2013, với bước đi đúng đắn của Ban giám đốc và những nhân viên đầy nhiệt huyết, và sáng tạo, ZIGExN VeNtura đang dần phát triển và lớn mạnh hơn
Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Lập trình website tìm kiếm việc làm VeNJOB bằng Ruby on Rails” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình website, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường phát triển website chuyên nghiệp
Trang 71 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian : 2 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty, những quy định cơ bản của
công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triên (như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty (Thông qua trang wiki của công ty)
Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc…
Kết quả: Hiểu thêm về công ty, quá trình thành lập và phát triển Có thêm các kỹ năng về
việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2 Nghiên cứu kỹ thuật
2.1 Nghiên cứu/ thực hành về Linux/Ubuntu
Thời gian : 5 ngày
Nội dung : Tìm hiểu về môi trường, các lệnh cơ bản của Linux/Ubuntu
Trong thời gian này, mentor đã hướng dẫn thực tập sinh tìm hiểu về môi trườn Linux/Ubuntu Một số phần mềm thường xuyên sử dụng như Vim (trình soạn thảo quen thuộc của Linux/Ubuntu), Terminal (giao diện cửa sổ dòng lệnh của Linux/Ubuntu)
Thực hiện : Thực hành sử dụng và thao tác các câu lệnh trên Linux/ Ubuntu
Kết quả : Nắm được cách sử dụng, các câu lệnh cơ bản của Linux/ Ubuntu
2.2 Nghiên cứu/thực hành về công cụ Git
Thời gian : 1 ngày
Nội dung : Tìm hiểu khái niệm, cách sử dụng và câu lệnh cơ bản của Git
Trong thời gian này, mentor đã hướng dẫn cách sử dụng và các câu lệnh cơ bản của Git sẽ áp dụng vào đồ án cũng như sử dụng trong công ty, thực tập sinh tự tìm hiểu khái niệm Ngoài ra, mentor cũng tận tình chỉ dẫn, dặn dò về cách pull, push, mergo code sao cho không bị conflict cũng như mất code của người khác
Thực hiện : Thực hiện sử dụng và thao tác các câu lệnh cơ bản của Git
Kết quả :
- Nâng cao khả năng sử dụng Git
- Học cách quản lý code với công cụ Git
2.3 Nghiên cứu/thực hành về Ruby
Trang 8Thời gian: 5 ngày
Nội dung: Các kiến thức cơ bản của ngôn ngữ lập trình Ruby
- Tiếp cận với Ruby:
Hoàn thành “tryruby” của Ruby trên github (https://ruby.github.io/TryRuby/)
- Môi trường chạy Ruby:
Cài đặt được môi trường bao gồm trình biên dịch ngôn ngữ Ruby bằng công cụ rbenv – công cụ quản lý các phiên bản Ruby – với Ruby 2.6.x (https://github.com/rbenv/rbenv)
- Ruby cơ bản:
Học các bài Ruby cơ bản thông qua lang.org/en/documentation/quickstart/
https://www.ruby Ruby chuyên sâu:
Học các bài Ruby chuyên sâu thông qua http://learnrubythehardway.org/book/
- Regex chuyên sâu:
Học các bài về Regex, regex các mẫu (pattern) thay vì các chuỗi cụ thể được sử dụng tìm/thay thế (Find/Replace) Là một công cụ cực mạnh cho xử lí chuỗi không những trong Ruby, mà còn ở các ngôn ngữ khác (http://regex.learncodethehardway.org/book/)
Thực hiện :
- Tham gia đầy đủ các buổi training
- Làm các bài tập thực hành về Ruby, Regex, …
- Tìm kiếm tài liệu trên mạng để tìm hiểu thêm
Kết quả :
- Hiểu được những khái niệm cơ bản trong lập trình đồ họa với OpenGL
- Đã vẽ được những hình ảnh cơ bản trong OpenGL, load file mô hình *.obj
2.4 Nghiên cứu/thực hành về Ruby on Rails
Thời gian: 7 ngày
Trang 9Nội dung : Học các kiến thức cơ bản về framework Ruby on Rails thông qua thiết kế
website nhỏ chạy trên Ruby on Rails 4th-edition-tutorial/beginning)
(https://www.learnenough.com/ruby-on-rails Tìm hiểu về framework Rails:
Rails là một web framework được thiết kế để làm việc bằng ngôn ngữ lập trình Ruby Câu lệnh trong Rails không cần có dấu chấm phẩy và trực quan hơn Rails
là framework phổ biến nhất được viết bằng Ruby Rails cung cấp tất cả những thứ cần thiết để bạn có thể viết một ứng dụng Ruby và các trang web một cách dễ dàng
- Tìm hiểu về Ruby on Rails:
Ruby on Rails là một cái tên ĐẦY ĐỦ cho framework Rails
- ORM của Rails – Active Record:
Đây là Object Relational Mapping, là kỹ thuật ánh xạ CSDL sang các đối tượng ngôn ngữ, trong trường hợp này ORM của Rails là Active Record
- Action view trong Rails:
Thông thường view trong Rails sẽ được viết theo template ERB, được gọi là Ruby nhúng Chúng có thể được viết cả tag ERB và HTML
- Action Controller trong Rails:
Controller trong Rails có nhiệm vụ trả views về trình duyệt cũng như có thể xử lý
dữ liệu ngay trong đó
Thực hiện :
- Tham gia đầy đủ các buổi training
- Tạo ra những trang web cơ bản bằng Ruby on Rails
Kết quả:
- Đã có thể tạo ra một và một vài trang web cơ bản sử dụng Ruby on Rails
3 Thực hiện project
Trang 10Sau gần một tháng được training và thực hành, Em đã nắm được những kiến thức cơ bản
về Git, Ruby và Ruby on Rails Trong tháng thứ hai và ba, em sử dụng các kiến thức đã học đẻ thiết kế website VeNJOB
Chi tiết đồ án sẽ được nói ở phần sau
4 Lịch làm việc
Mức
độ hoàn thành
Nhận xét của người hướng dẫn
1
- Tìm hiểu về công
ty, cách tổ chức của công ty
- Làm quen với các công cụ của Linux/Ubuntu và công ty
- Học cách trao đổi, làm việc qua email
- Báo cáo tuần 1
Anh Lê Văn Hậu (Mentor)
Anh Đỗ Hồng Sơn (Helper)
Anh Lê Hồng Hiếu (General Manager)
95%
2
- Tìm hiểu ngôn ngữ lập trình Ruby
- Báo cáo tuần 3
- Chạy migration lần đầu để tạo bảng lưu vào MySQL
- Báo cáo tuần 4
98%
Trang 11careerbuilder.vn:
- Tìm hiểu cấu trúc HTML của website careerbuilder.vn
- Viết validation cho các trường được nhập vào
- Chỉnh sửa cho phù hợp với database
- Báo cáo tuần 6
- Sử dụng template của bootstrap
- Thiết kế trang Sign
in (Trang đăng nhập khi người dùng đã
có tài khoản), Sign
up (Trang đăng ký khi người dùng chưa có tài khoản)
- Thiết kế trang cá nhân, thông tin
- Báo cáo tuần 7
- Thiết kế trang City
90%
Trang 12(Trang tìm kiếm công việc theo thành phố)
- Báo cáo tuần 8
- Thiết kế trang Job Detail (Trang chi tiết công việc)
- Báo cáo tuần 9
- Thiết kế trang Done (Trang honà tất đăng ký,gửi email cho người dùng)
- Báo cáo tuần 10
- Gửi mail xác nhận đến email của người dùng (Sử dụng mailcatcher để bắt mail dưới local)
90%
Trang 13- Khi người dùng yêu cầu mật khẩu mới, gửi email đến email người dùng (như trên)
- Báo cáo tuần 11
12
Thiết kế trang Favorite Job, Applied Job:
- Thiết kế trang Favorite Job (Trang các công việc yêu thích của người dùng)
- Thiết kế trang Applied Job (Trang các công việc đã đăng ký của người dùng)
- Báo cáo tuần 12
90%
13
Áp dụng Search Engine – Solr Apache:
- Cài đặt Solr server
- Design schema
- Đánh index cho data
từ database lên Solr
- Thiết kế Search form để người dùng tìm kiếm công việc
- Báo cáo tuần 13
80%
14
Thiết kế trang Admin:
- Thiết kế trang đăng nhập cho admin
- Tìm kiếm tất cả công việc được đăng
Trang 14Chương 3: Chi tiết về project
1 Giới thiệu về VeNJOB
VeNJOB lấy ý tưởng từ trang web tìm việc làm phổ biến nhất hiện nay: careerbuilder.vn
về dịch vụ tìm kiếm việc làm, sử dụng dữ liệu và công nghệ để quản lý nguồn nhân lực, với các giải pháp giúp nhà tuyển dụng tìm, tuyển dụng và quản lý những người tuyệt vời
1.1 Các công nghệ đã sử dụng:
- Ruby Gem: là thư viện của Ruby Nó không có gì khác biệt với các thư viện của
các ngôn ngữ bình thường khác như PHP, Java hay Python tuy nhiên thư viện
trong Ruby được gọi là GEM
- Bundler: là một công cụ quản lý việc cài đặt, cập nhật, gỡ bỏ, cấu hình cũng như
quản lý version của các GEM
- MySQL: là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational Database
Management System, viết tắt là RDBMS) hoạt động theo mô hình client-server
- Solr: là một open source full-text search platform dựa trên Apache Lucence
Lucene là một thư viện được viết bằng Java dùng để phân tích, đánh chỉ mục (indexing) và tìm kiếm thông tin
- Ruby v2.6.5
- Rails v5.0.0
- Bootstrap 4.0.0
1.2 Dịch vụ chính:
Danh sách công việc:
Là nơi người dùng xem nhanh tất cả công việc của VeNJOB Các công việc sẽ luôn được cập nhật mới mỗi ngày tại đây
Trang 15Tìm kiếm công việc
Sử dụng công cụ search engine Solr giúp người dùng tìm kiếm theo từ, theo chữ trong từ, theo keyword với độ chính xác cao
Trang 16Xem chi tiết công việc:
Người dùng xem chi tiết công việc, bao gồm tên công ty, địa chỉ, lương và mô tả công việc, có thể thêm công việc vào yêu thích hoặc đăng ký công việc
Xem tất cả ngành nghề:
Người dùng xem tất cả các ngành nghề dựa trên tất cả các công việc trên VeNJOB hiện có
Trang 17Xem tất cả thành phố:
Người dùng xem tất cả các thành phố dựa trên tất cả các công việc trên VeNJOB hiện có
Đăng ký công việc:
Người dùng đăng ký một công việc có 3 bước: Apply, Confirm và Done
- Ở bước Apply: người dùng nhập thông tin cá nhân và image, gửi CV lên hệ thống
- Ở bước Confirm: người dùng xác nhận lại thông tin đã nhập
Trang 18- Ở bước Done: công việc được đăng ký thành công với người dùng hiện tại và dữ liệu được lưu vào database
Xem tất cả các công việc đã đăng ký:
Người dùng xem tất cả các công việc mà người dùng đó đã đăng ký trên VeNJOB
Trang 192 Thực hiện
Sinh viên: Nguyễn Ngọc Nghĩa
Người hướng dẫn: Anh Lê Văn Hậu (Mentor)
Người đánh giá, giám sát thực tập: Anh Lê Hồng Hiếu (General Manager), anh Lê Văn Hậu (Mentor) và anh Đỗ Hồng Sơn
Và sự giúp đỡ tận tình của các anh chị trong công ty
3 Quá trình thực hiện VeNJOB:
Tuần 1:
- Init app, push app lần đầu lên gitlab của công ty sử dụng công cụ Git
- Thiết kế cơ sở dữ liệu lần 1
- Chạy migrate lần 1 để tạo các bảng trong MySQL
- Báo cáo tuần 1
Kết quả :
- Có cơ sở dữ liệu thô để tiến hành tạo VeNJOB
- Có một vào conflict code khi pull/push code
Tuần 2:
Trang 20- Tạo một vào static pages đơn giản: Đăng ký, đăng nhập, yêu cầu mật khẩu cho người dùng
- Chỉnh sửa cơ sở dữ liệu lần 2
- Lưu được thông tin người dùng vào database
- Mã hóa mật khẩu của người dùng, sử dụng các chuỗi mã hóa để xác thực người dùng
- Lưu thông tin đăng nhập của người dùng vào cookie nếu người dùng chọn Nhớ thông tin đăng nhập
- Gửi mail đến người dùng khi đăng ký và khi yêu cầu mật khẩu mới, sử dụng mailcatcher, chạy ở port 1080 để bắt mail
- Báo cáo tuần 2
Kết quả :
- Hoàn thành các chức năng cơ bản cho người dùng khi đăng ký và đăng nhập
- Có cơ sở dữ liệu hoàn chỉnh cho VeNJOB
- Biết cách sử dụng cookie/session
Tuần 3:
- Nhập dữ liệu công việc mẫu từ file CSV được lấy từ server FTP của công ty
- Viết file chạy tự động cho việc nhập dữ liệu (dựa trên header và chạy theo từng hàng)
- Phân tích dữ liệu đầu vào, kiểm tra tính đúng đắn của dữ liệu và lưu vào database
- Báo cáo tuần 3
Kết quả :
- Có sẵn 3000 công việc mẫu
- Việc nhập dữ liệu được chạy tự động và nhanh (3000 -> 5000 dòng)
- Đảm bảo được tính đúng đắn của dữ liệu
Tuần 4, 5:
- Thiết kế các trang sau đây:
Trang chủ (sử dụng bootstrap 4.0)
Trang dang sách công việc
Trang chi tiết công việc
Trang ngành nghề
Trang 21 Trang thành phố
Trang Đăng ký công việc, Xác nhận và Hoàn tất
Trang các công việc yêu thích
Trang các công việc đã đăng ký
- Căn chỉnh giao diện cho phù hợp với người dùng, dễ nhìn
- Báo cáo tuần 4, 5
Kết quả :
- Hoàn chỉnh 80% các chức năng cơ bản của một website tìm kiếm việc làm
- Vẫn còn một số lỗi tuy không đáng kể
- Người dùng đăng ký công việc một cách trơn tru
Tuần 6:
- Áp dụng công cụ tìm kiếm Solr để tìm kiếm công việc
- Cài đặt Solr server
- Thiết kế schema cho data của VeNJOB trên Solr server
- Tiến hành index dữ liệu lên Solr
- Tạo form tìm kiếm công việc
- Báo cáo tuần 6
Kết quả :
- Người dùng tìm kiếm công việc chính xác đến 90%
- Tìm kiếm được cả bằng tiếng Việt và các ngôn ngữ khác
Tuần 7:
- Mở rộng số lượng công việc bằng cách crawl dữ liệu từ careerbuilder.vn
- Viết file crawl dữ liệu
- Việc crawl dữ liệu tự động chạy mỗi ngày một lần nhờ lịch trình được tạo sẵn
- Viết file lưu dữ liệu vào database, có sử dụng kỹ thuật “bulk insert” để lưu số lượng lớn công việc
- Báo cáo tuần 7
Kết quả :
- Các dữ liệu công việc có liên kết với nhau vẫn đảm bảo tính chính xác