2 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH JAVA WEB Công ty thực tập Công ty TNHH PALTech Người phụ trách Nguyễn Minh Khôi Thực tập sinh Phạm Võ Di Thiên T[.]
Trang 1KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
LẬP TRÌNH JAVA WEB
Công ty thực tập: Công ty TNHH PALTech
Người phụ trách: Nguyễn Minh Khôi
Thực tập sinh: Phạm Võ Di Thiên
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 2LỜI MỞ ĐẦU
Công nghệ thông tin trong giai đoạn hiện nay đang phát triển như một ngành kinh tế mũinhọn hàng đầu trên thế giới Điều xảy ra trong vòng vài năm qua ở Việt Nam là sự đầu tư ô ạtvào công nghệ Công nghệ thông tin đã và đang là một yếu tố thể thiếu đối với bất kỳ công tynào Đặc biệt công nghệ thông tin ngày càng giữ vai trò quan trọng trong vấn đề quản lý tại các
tổ chức nhất là tại các lĩnh vực thu thập thông tin Tuy ngành công nghệ thông tin ở nước ta mớichỉ phát triển trong vài năm trở lại đây và đang từng bước phát triển nhưng những bước pháttriển đó đã cho thấy tiềm năng lớn lao trong lĩnh vực công nghệ thông tin ở nước ta, trong đóphát triển hệ thống thông tin đang là thế mạnh của đất nước
Nhờ vào những lí do trên mà ngày nay, hầu hết các doanh nghiệp đều đã trang bị chomình một website nhằm tiếp loại bỏ cách thức quản lý thông tin truyền thống bằng sức ngườithay vào đó là sử dụng công nghệ của máy tính
Lập trình Web sẽ là công việc xây dựng nên một website dành cho doanh nghiệp, giúpdoanh nghiệp quản lý hiệu quả, đồng thời cũng giúp gia tăng số lượng khách hàng tiếp cận vớisản phẩm và dịch vụ của công ty
Theo như em tìm hiểu thì lập trình web yêu cầu cơ bản 2 yếu tố:
1 Kiến thức nền về ngôn ngữ, thuật toán
2 Kỹ năng thiết kế Website (Font-end, Back-end)
Trong vô vàng con đường để đạt được nó Em bị cuốn hút bởi ngôn ngữ Java và mongmuốn có một cơ hội để có thể trờ thành một lập trình viên Java
Từ định hướng và lựa chọn đó, sau ba năm học tập vất vả, ba năm nghiên cứu, tìm hiểu,học hỏi và rèn luyện tại trường, vì khát khao có thêm kinh nghiệm và kĩ năng làm việc thực tế,cũng như muốn được tham gia phát triển web trong một môi trường chuyên nghiệp, năng động,mang đầy tính học hỏi, em có đã dự định chọn cuối năm 3 đại học là thời điểm chín mùi để thựchiện khóa thực tập đầu tiên trong cuộc đời mình Vì vậy, PALTECH là công ty được em lựachọn để bắt đầu những bước đi đầu tiên trong con đường mơ ước trở thành một lập trình viênchuyên nghiệp Hành trình sẽ rất khó khăn và có nhiều thứ để học hỏi, nhưng với sự tận tình vàvui vẻ của các anh chị đồng nghiệp giúp em cảm thấy đây là một quyết định sáng suốt và đúngđắn
Trang 3LỜI CẢM ƠN
Xin trân trọng gửi lời cảm ơn chân thành và sâu sắc đến Công ty TNHH PALTech đã cânnhắc và quyết định mang lại cho em cơ hội quý báu để được học tập, rèn luyện, học hỏi vàphụng sự tại quý công ty
Thực tập là thời gian không quá dài cũng không quá ngắn, nhưng nó đủ để em nhận ra và
bù đắp những thiếu sót của bản thân trong cả kĩ năng lập trình hay thậm chí là kĩ năng mềm.Trong suốt quá trình thực tập luôn tồn tại những khó khăn thử thách và cả những tranh cãi,nhưng các anh chị đồng nghiệp vẫn thoải mái và đưa ra cho em những cái nhiều thấu đáo củavấn đề
Cảm ơn đặc biệt đến anh Lê Minh Đức, anh Hoàng Minh Nghĩa và đặc biệt là anhNguyễn Minh Khôi đã 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ảm ơn chị Lê Nguyệt Ánh Thùy Linh
và chị Tôn Thị Thanh Thảo và team QC, đã training và cung cấp kiến thức cơ bản về nghiệp vụcác project lớn của công ty, hỗ trợ chúng em hiểu các project Trân trọng và chân thành cảm ơn
anh Nguyễn Duy Khánh, đã chỉ dẫn chúng em về cách làm báo cáo, lên kế hoạch, những kỹ
năng không thể thiếu về lập trình web nói chung về công việc tại vị trí Java Web Developer tạiquý công ty; sâu sắc cảm ơn anh Ngô Văn Tự đã dẫn đầu cả team developer nói chung và chonhóm thực tập sinh chúng em nói riêng trong các task công việc và phát triển các project; cảm
ơn anh Hồ Duy Khánh và anh Lê Tấn Đạt đã training cho em những kiến thức quan trọng vềMySql, Angular và HTML để em có thể có kiến thức làm các task trong thời gian qua Và hơnnữa là các bạn thực tập sinh chung khóa với em là Vòng Minh Huỳnh và bạn Nguyễn KhánhLinh đã giúp đỡ em rất nhiều trong những vấn đề gặp phải ở công ty
Cuối cùng xin cảm ơn quý thầy cô trong khoa Công nghệ phần mềm đã tạo điều kiện cho
em làm bài báo cáo này một cách tường tận với một tinh thần chia sẻ
Phạm Võ Di thiênTpHCM, ngày 20 tháng 12 năm 2022
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 7
1 Giới thiệu công ty PALTech 7
2 Sản phẩm của công ty 8
Chương 2: Nội dung thực tập 8
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2 Nghiên cứu kỹ thuật 9
2.1.1 Các công cụ làm việc 9
2.1.2 Tìm hiểu về sự kết hợp Công nghệ và một số kinh nghiệm khi lập trình 9
2.1.3 Lập trình trên IntelliJ 10
2.1.4 Tìm hiểu MySQL 11
2.1.5 Tìm hiểu về Angular2, JS 12
2.1.6 Tìm hiểu về SpringBoot 14
2.1.7 Tìm hiểu về Bootstrap 15
3 Thực hiện project 16
4 Lịch làm việc 16
Chương 3: Chi tiết về project và cách làm việc 18
1 Giới thiệu về AQS 18
1.1 Các môi trường của project 18
1.2 Một số hình ảnh project 19
2 Thực hiện 20
3 Kế hoạch 20
TỔNG KẾT 22
TÀI LIỆU THAM KHẢO 23
Trang 6Chương 1: Giới thiệu công ty thực tập
1 Giới thiệu công ty PALTech
Tên công ty: Công ty TNHH PAL TECH (PAL TECH Company Limited)
Địa chỉ: 20 Sông Thao, Phường 2, Tân Bình, Thành phố Hồ Chí Minh
Website: https://pal.net.vn/
Điện thoại: 028 3848 7077
PAL TECH được thành lập vào năm 2015 tại Thành phố Hồ Chí Minh, là mộtcông ty CNTT cung cấp và phát triển các nền tảng phần mềm có khả năng mở rộng,chất lượng tuyệt vời và tiết kiệm cho các nhu cầu hoạt động kinh doanh khác nhau.PAL TECH là công ty về công nghệ thông tin cung cấp và phát triển các nền tảngphần mềm có thể mở rộng, chất lượng và kinh tế cho các nhu cầu hoạt động kinhdoanh khác nhau Công ty cung cấp dịch vụ kỹ thuật chất lượng cho tất cả các loại tổchức từ các doanh nghiệp vừa và nhỏ (SME) cả trong và ngoài nước; cung cấp cácgiải pháp chiến lược và sáng tạo để thêm giá trị kinh doanh cho khách hàng
PALTech được dành riêng để xác định lại doanh nghiệp của hách hàng trên mạngtoàn cầu để tăng trưởng và sản xuất cao hơn thông qua lợi thế cạnh tranh về tốc độ,chi phí và khả năng thích ứng Đây chủ yếu là một công ty phát triển phần mềm cóchuyên môn về các giao dịch an toàn với tần suất cao, khối lượng lớn trên web
Trang 72 Sản phẩm của công ty
PALTech thiết kế, tạo ra và duy trì những Website chạy trên đa nền tảng – thứ màcác doanh nghiệp khách hàng sử dụng để quản lí, thống kê về tài sản của họ và cũngnhư là tạo ra các bảng báo cáo về chúng
Trang 8Chương 2: Nội dung thực tập
Đợt thực tập “Lập trình Java Web” nhằm mục đích giúp sinh viên thực tập được đào tạotoàn diện về lập trình Web cùng Angular và Springboot, đồng thời rèn luyện những kỹ năngmềm như làm việc nhóm, 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 web chuyên nghiệp, trẻ và năng động
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian: 3 ngày Nội dung: Giới thiệu về công ty, cách tổ chức của công ty
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áchthức tổ chức của công ty
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ụngemail trong công việc…
thông tin – Information Security Management System (ISMS) cho nhân viên mới
Bộ nguyên tắc có liên quan đến các tính chất như sẵn sàng, bảo mật, tính toàn vẹn của thông tin Ngoài ra việc an toàn thông tin còn bao gồm có các tính chất khác như trách nhiệm, xác thực, tính tin cậy và xác nhận
Kết quả: Hiểu thêm về công ty, biết được quy trình làm việc, biết sử dụng
kết hợp Email và Slack trong công việc Làm việc có kế hoạch và có trách nhiệm hơn.Ngoài ra còn biết thêm một số quy tắc làm việc chung ở môi trường công ty
2 Nghiên cứu kỹ thuật
2.1.1 Các công cụ làm việc
Thời gian: 4 ngày
Trang 9Nội dung: Tìm hiểu về một số công cụ, phần mềm sẽ được sử dụng trong
quá trình làm việc
Trong thời gian một ngày đầu, bộ phận Infra sẽ giúp em cài đặt toàn bộ mọithứ về vị trí làm vệc, máy móc và cài các phần mềm trong whitelist (danh sách cácphần mềm được phép cài đặt và sử dụng trong máy tính làm việc cá nhân tại công ty)
Bên cạnh đó, bộ phận Infra cũng hỗ trợ cung cấp và update các tài khoản cầnthiết để em có thể truy cập và sử dụng những trang web hay phần mềm hỗ trợ cho quátrình làm việc tại công ty như Jira, Aws, Jenkin, Gitlab, Log web, Slack, IntelliJ,Tortoise SVN và TortoiseGit, Notepad++…
Sau đó ngày, anh Nguyễn Minh Khôi – buddy của em sẽ hỗ trợ chỉ dẫn em
về các flow làm việc cũng như sử dụng các phần mềm trang web đó Anh đã giảithích về công dụng của một số trang web như Log, Jenkin, AWS-Jenkin Anh đã chỉdẫn các kết nối database với workbench bằng các tài khoản đặc biệt cho dev cũng nhưchỉ dẫn tường tận mẹo tổ chức các folder trong công việc
Đặc biệt là về khoản merge code, phải tuân thủ theo một số quy tắc khi kếthợp với Jira để tạo ra một flow chuẩn để dễ dàng quản lý, bảo trì và hỗ trợ QC test dễdàng hơn
Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả:
Biết sử dụng kết hợp các công cụ để hỗ trợ quá trình xây dựng website
Biết được flow làm việc của công ty để dễ dàng quản lý, bảo trì code
2.1.2 Tìm hiểu về sự kết hợp Công nghệ và một số kinh nghiệm khi lập trình.
Thời gian: xuyên suốt quá trình làm việc từ đầu tới cuối
Nội dung: Được training về các kỹ thuật Java nâng cao Học cách sử dụng
các công nghệ mới Angular và Spring trong xuyên suốt quá trình làm việc Hơnnữa, trong quá trình thực hiện task, trước khi code được merge lên môi trường mớiphải được review qua, và trong giai đoạn đó em đã được học hỏi nhiều thứ từ anh
Lê Minh Đức, anh Huỳnh Minh Trí và các hướng tiếp cận và giải quyết bài toán tối
Trang 10tốt nhất đề học tập và làm việc trong một môi trường không áp lực
Thực hiện:
- Tham gia đầy đủ các buổi training của công ty
- Ghi nhớ những kiến thức vừa được bản thân tìm hiểu và áp dụng vào cáctask
Kết quả:
- Nâng cao kỹ năng lập trình với ngôn ngữ Java
- Nâng cao sự thành thạo với Angular kết hợp Spring
- Có được những kiến thức quan trọng cho việc lập trình web
- Biết được một số quy tắc trong lập trình, các thuật toán tối ưu cho từng vấn
đề khác nhau
- Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao chođúng chuẩn, dễ đọc, dễ hiểu cũng như các làm quen các extension bắt code xấu nhưsonar
2.1.3 Lập trình trên IntelliJ
Nội dung: Các kỹ thuật dùng intelliJ, kết hợp các extension hay phần mềm
để thực hiện kết nối backend, như là sử dụng glassfish
IntelliJ IDEA là một IDE Java để phát triển các phần mềm máy tính Nó được phát triển bởi JetBrains, nó được cấp phép Apache 2 cho phiên bản cộng đồng, và một phiên bản thương mại độc quyền Cả hai có thể được sử dụng cho phát triển thương mại.
Thực hiện:
- Tham gia đầy đủ các buổi training
- Kết hợp với Glassfish trong việc fix bug hay các task mới
Trang 11SQL là viết tắt của Structured Query Language, nghĩa là ngôn ngữ truy vấn
cơ sở dữ liệu.
Ngôn ngữ định nghĩa dữ liệu (Data Definition Language - DDL): cho phép khai báo cấu trúc bảng, các mối quan hệ và các ràng buộc: lệnh tạo bảng (CREATE), lệnh sửa cấu trúc bảng (ALTER), lệnh xoá bảng (DROP).
Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML): cho phép thêm (INSERT), xóa (DELETE), sửa dữ liệu (UPDATE).
Ngôn ngữ truy vấn dữ liệu (Structured Query Language – SQL): cho phép truy vấn dữ liệu: truy vấn tổng quát, dùng phép kết, truy vấn con, hàm tính toán, gom nhóm…
Trigger: Trigger thường được sử dụng để kiểm tra ràng buộc (check constraints) trên nhiều quan hệ (nhiều bảng/table) hoặc trên nhiều dòng (nhiều record) của bảng.
Trang 12với các câu lệnh SQL nhúng (embedded SQL) được lưu dưới dạng đã được biên dịch và thi hành thực tiếp bởi MySQL SP cho phép lưu trữ các logic ứng dụng trên CSDL Khi gọi SP lần đầu tiên, MySQL sẽ tạo một lịch thực thi và lưu trữ nó trong bộ nhớ đệm Ở những lần gọi hàm tiếp theo, MySQL sử dụng sử dựng lại lịch thực thi được lưu rất nhanh với hiệu xuất đáng tin cậy.
Thực hiện:
- Viết các SP truy vấn dữ liệu
- Tìm đọc thêm về các tài liệu liên quan
$scope (AngularJS) bằng components và directives Components = directives + template, tạo nên view của ứng dụng và xử lí các logic trên view Angular 2 hoàn toàn được viết bằng Typescript Angular 2 nhanh hơn AngularJS, hỗ trợ đa nền tảng đa trình duyệt, cấu trúc cdoe được tổ chức đơn giản và dễ sử dụng hơn.
Trang 13Ngôn ngữ sử dụng: JavaScript
Cách tổ chức các file: một component được cấu thành từ file Typescript, HTML và SCSS.
Các khái niệm cơ bản:
Components là một khối code trong app Angular Nó là sự kết hợp của bộ template html và nhúng kèm code TypeScript (hoặc Javascript) Một số thuộc tính của Component: selector, template, styles, …
Binding là cách kết nối giữa HTML và dữ liệu theo kiểu 2 chiều, nghĩa là HTML input thay đổi thì biến Javascript sẽ ngay lập tức nhận được giá trị trả về
và ngược lại, giá trị trong Javascript thay đổi thì ngay lập tức màn hình HTML thay đổi theo.
Xử lí sự kiện: gắn 1 sự kiện của control HTML với một hàm Javascript.
Một số lifeCycleHook: ngOnInit, ngOnChanges, ngAfterViewInit, ngOnDestroy ,…
Cách truyền data giữa các component trong Angular: Từ parent component xuống child component và ngược lại, từ 2 sibling component, …
Biết cách triển khai front-end với Angular
Hiểu được các kiến thức cơ bản về front-end
Trang 14Thời gian: 4 ngày Nội dung: Tìm hiểu chung về Spring Framework, đặc biệt là các kiến thức cơ
Repository: Service còn có thể tương tác với service khác, hoặc dùng Repository để gọi DB Repository là thằng trực tiếp tương tác, đọc ghi dữ liệu trong DB và trả cho service.
Thực hiện:
Trang 15Bootstrap là một bộ sưu tập miễn phí của các mã nguồn mở và công cụ dùng
để tạo ra một mẫu webiste hoàn chỉnh Với các thuộc tính về giao diện được quy định sẵn như kích thước, màu sắc, độ cao, độ rộng…, các designer có thể sáng tạo nhiều sản phẩm mới mẻ nhưng vẫn tiết kiệm thời gian khi làm việc với framework này trong quá trình thiết kế giao diện website Rất dễ để sử dụng: Nó đơn giản vì
nó được base trên HTML, CSS và Javascript chỉ cẩn có kiến thức cơ bản về 3 cái
đó là có thể sử dụng bootstrap tốt.
Tương thích với trình duyệt: Nó tương thích với tất cả các trình duyệt (Chrome, Firefox, Internet Explorer, Safari, and Opera) Tuy nhiên, với IE browser, Bootstrap chỉ hỗ trợ từ IE9 trở lên Điều này vô cùng dễ hiểu vì IE8 không support HTML5 và CSS3.
Trang 16Sau một tháng được training và thực hành, thực tập sinh đã nắm được những kiến thức
cơ bản, cũng như team QC/BA đã hướng dẫn thực tập sinh về những nghệp vụ ý nghĩaproject của công ty
Chi tiết đồ án sẽ được nói ở phần sau
4 Lịch làm việc
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ụ làm việc trong côngty
- Học cách trao đổi, làm việc qua email và Slack
Anh Nguyễn Minh Khôi
và anh Nguyễn DuyKhánh, Hoàng HuỳnhNghĩa
5
Giai đoạn thử sức:
- Được giao 1 feature mới, nhỏ để hoàn thành vàlàm quen
Anh Nguyễn Minh Khôi
và anh Nguyễn DuyKhánh