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 Thực tập sinh Vòng Minh Huỳnh TP Hồ Chí Minh, tháng 12 năm 2022 LỜI[.]
Trang 1TRƯỜ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 Thực tập sinh: Vòng Minh Huỳnh
Trang 2TP Hồ Chí Minh, tháng 12 năm 2022
Trang 3LỜI MỞ ĐẦU
Với sự phát triển ngày một mạnh mẽ của công nghệ thông tin và Internet ngày nay, lập trình web
- một nhánh phát triển - một bộ phận không thể thiếu của ngành công nghiệp phần mềm, càng lúc càng khẳng định vị thế, tầm quan trọng của mình trong vô vàn những ứng dụng, nghiệp vụ, … góp phần to lớn vào sự phát triển hầu hết về mọi mặt, mọi hoạt động của xã hội chuyển đổi số ngày nay Lập trình web hay dịch vụ web và công nghệ internet trên thực tế đã có một bề dày lịch sử phát triển trong quá khứ và đến nay, mảng phần mềm này vẫn đang được đẩy mạnh sử dụng trong nhiều lĩnh vực nói chung
và cũng như thương mại điện tử nói riêng
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ị cho mình một website nhằm tiếp cận khách hàng mục tiêu và tăng lượng chuyển đổi cho mình
Lập trình Web là công việc mà tại đó nó đảm nhận toàn bộ những nhiệm vụ liên quan đến dữ liệu từ nhóm thiết kế để tạo nên một bộ máy web hoàn chỉnh có tác động qua lại với cơ sở dữ liệu để thực thi nghiệp vụ nào đó Nhắc đến lập trình web, hầu như những nhà phát triển sẽ nghĩ ngay đến Java – một ngôn ngữ lập trình vô cùng mạnh mẽ nhờ vào khả năng biên dịch thành bytecode của chính nó
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 về code web và công nghệ thiết kế web
2 Kỹ năng Front-end và Back-end
Với ước mơ trở thành một nhà phát triển web fullstack, niềm say mê vào sự kì diệu của ngôn ngữ lập trình Java, em đã lựa chọn con đường lập trình Java Web để đi giữa vô vàn con đường của Ngành Công nghiệp phần mềm nói chung, lập trình web nói riêng
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ực hiện khóa thực tập đầu tiên trong cuộc đời mình Vì vậy, em đã quyết định chọn PALTech - một môi trường làm việc chuyên nghiệp, mang tính chuyên môn cao, đầy sức trẻ và sự năng động để hiện thực dự định và mong muốn của mình
Trang 4LỜ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ân nhắ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 Tuy thời gian làm việc không quá dài thế nhưng dưới sự chỉ dẫn nhiệt tình của toàn bộ mọi người trong công ty và trong development team nói chung, nhóm thực tập sinh nói chung và em nói riêng đã tiếp thu được rất nhiều kiến thức chuyên môn quan trọng cũng như những kinh nghiệm làm việc trong ngành mà từ trước giờ em dường như chưa từng tiếp xúc và nhận ra, để có thể tham gia làm việc như một nhân viên thực sự Chân thành gửi lời cảm ơn to lớn đến toàn bộ mọi người trong công ty
đã bỏ ra nhiều thời gian, sức lực để hướng dẫn, chỉ điểm và dìu dắt em hoàn thành đợt thực tập này tại quý công ty
Đặc biệt cảm ơn team Infra đã hỗ em rất nhiều về các vấn đề kĩ thuật trong quá trình lập trình web; cảm ơn đặc biệt đến anh Hoàng Huỳnh Nghĩa, đã 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ại quý 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à cho nhó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 Nguyễn Minh Đặng và anh Huỳnh Minh Trí đã training cho em những kiến thức quan trọng về MySql, Angular và HTML để em có thể góp phần sửa lỗi cũng như duy trì các project trong thời gian qua Và một lời cảm
ơn đặc biệt nhất đến anh Đinh Hữu Quý – Buddy hay người anh đã đồng hành và chịu trách nhiệm với
em trong toàn bộ quá trình thực tập tại công ty, anh là người đã chỉ dạy chi tiết mọi kiến thức cần thiết khi làm việc và cũng như hỗ trợ em hoàn thành những task công việc từ nhỏ đến lớn từ dễ đến khó
Và 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ẻ
Vòng Minh Huỳnh TpHCM, ngày 20 tháng 12 năm 2022
Trang 5NHẬN XÉT CỦA KHOA
Trang 6
MỤC LỤC
Chương 1 Giới thiêu công ty thực tập 7 Chương 2 Nội dung thực tập 8 Chương 3 Chi tiết về project và cách làm việc 13
Trang 7Chương 1 Giới thiệu công ty thực tập
1 Giới thiệu công ty PALTech
PALTech được thành lập vào năm 2015 tại Thành phố Hồ Chí Minh, là một cô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
Công ty cũng cung cấp các 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 và hơn nữa là cung cấp các giải pháp chiến lược và sáng tạo để gia tăng giá trị kinh doanh cho khách hàng Song song đó, PALTech cung cấp một bộ giải pháp dựa trên web tích hợp và cũng phát triển các ứng dụng Internet tùy chỉnh dựa trên yêu cầu công việc được xác định trước từ yêu cầu của 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ạng toà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 và một loạt các POP và CDN độc quyền Ngoài ra nó cũng cung cấp các dịch vụ trong các lĩnh vực như QA, phân tích trang web, bảo mật hệ thống và kết nối mạng Bên cạnh các giải pháp cơ sở hạ tầng, phần mềm của PALTech về cơ bản là đa nền tảng: HTML5, CSS, jQuery và Java
2 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ũng như 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 với chủ đề “Lập trình Java Web” 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 Web cùng Angular và Spring MVC, đồng thời rèn luyện những kỹ năng mề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
Đượ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
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 PALTech, 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 và Slack trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
1 Nghiên cứu kỹ thuật
1.1 Các công cụ làm việc
Thời gian: 4 ngày
Nộ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
Trang 9Trong thời gian một ngày đầu, bộ phận Infra sẽ giúp em cài đặt toàn bộ mọi thứ
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ác phầ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ần thiế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 đó ba ngày, anh Đinh Hữu Qúy – 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ải thí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 để tiện cho sau này
Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả: Lập trình sử dụng kết hợp các công cụ với nhau Biết cách kết hợp các công
cụ để làm việc Làm quen được với các trang web hay công cụ mới như trên
1.2 Tìm hiểu về sự kết hợp giữa Angular và Spring Framework
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
Khi được thực tập tại công ty, xuyên suốt quá trình em được training và làm việc với tiêu chí “Làm là học, học là làm” Tức là khi được giao các task công việc, em sẽ được các anh hỗ trợ để giải quyết các bài toán đó qua các bước như sau: hiểu nghiệp
vụ - tìm hiểu ngôn ngữ - thực hành ngôn ngữ - áp dụng – giải quyết công việc – bảo trì kết quả - ghi nhớ - báo cáo
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ác task
Kết quả:
Trang 10- 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
- 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
1.3 Tìm hiểu về mô hình MVC trong Spring
Nội dung: Các kiến thức cơ bản về MVC trong Spring hỗ trợ làm việc với backend.
- Khái niệm cơ bản về mô hình MVC
Nắm được các khái niệm cơ bản về MVC, là một Framework hỗ trợ lập trình và phát triển các ứng dụng Java và đặc biệt ở công việc này đó là Java web, dễ sử dụng và tái sử dụng code
- Các anomations
@Controller là chú thích chính cho biết lớp được chú thích đóng vai trò
là Bộ điều khiển của MVC Dispatcher Servlet quét các lớp được chú thích với nó để ánh xạ các yêu cầu web tới các phương thức được chú thích bằng @RequestMapping
@RequestMapping để ánh xạ các yêu cầu tới các phương thức của bộ
điều khiển Nó có các thuộc tính khác nhau để khớp theo URL, phương thức HTTP, tham số yêu cầu, tiêu đề và loại phương tiện Bạn có thể sử dụng nó ở cấp lớp để thể hiện các ánh xạ được chia sẻ hoặc ở cấp phương pháp để thu hẹp thành một ánh xạ điểm cuối cụ thể.
Tương tự có:
@GetMapping
@PostMapping
Trang 11@DeleteMapping
@PatchMapping
Thực hiện:
- Tham gia đầy đủ các buổi trainning
- Tìm kiếm tài liệu trên mạng để tìm hiểu thêm
- Đọc code một số package điển hình và quan trọng để hiểu được flow sử dụng cũng như cách hoạt động thực sự của Spring trong project của công ty
Kết quả:
- Hiểu được những khái niệm cơ bản trong MVC
- Biết được các flow hoạt động của framework và của project thực
1.4 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
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
Kết quả:
- Đã có thể sử dụng khá thành thạo công cụ IDE IntelliJ
2 Thực hiện project
Sau 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 về Spring MVC và Microservices, cũng như team QC/BA đã hướng dẫn thực tập sinh về những nghệp vụ ý nghĩa project của công ty
Trang 123 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ông ty
- Học cách trao đổi, làm việc qua email và Slack
Anh Đinh Hữu Qúy và anh Nguyễn Duy Khánh, Hoàng Huỳnh Nghĩa
2 - Tìm hiểu ngôn ngữ lập trình Java nâng cao
- Thực hành Java
Anh Đinh Hữu Qúy và anh Huỳnh Minh Trí 3
- Tìm hiểu về Spring MVC
- Tìm hiểu về Angular
Anh Nguyễn Minh Đặng
và anh Đinh Hữu Quý
4 + 5 + 6
- Tham gia training về nghiệp vụ hay business của các project
Chị Lệ Nguyệt Ánh Thùy Linh và chị Tôn Thị Thanh Thảo
5
Giai đoạn thử sức:
- Được giao 1 feature mới, nhỏ để hoàn thành và làm quen
Anh Đinh Hữu Qúy và anh Nguyễn Duy Khánh
6
Giai đoạn thử sức(tiếp):
- Tham gia làm quen flow giải quyết một bug sẽ như thế nào? Flow làm việc trong team
Anh Nguyễn Duy Khánh
Tuần 7 –
hết kì
thực tập
Giai đoạn quen và tham gia làm việc:
- Tham gia làm việc như một nhân viên chính thức để lấy kinh nghiệm
Anh Đinh Hữu Qúy và and Ngô Văn Tự
Trang 13Chương 3 Chi tiết về project và cách làm việc
1 Giới thiệu về AQS
Với nhu cầu tổng hợp báo cáo về trao đổi tài sản số, nhu cầu tính toán giá trị tổng hợp của tài sản theo dõi và quản lí dữ liệu không chỉ là tài sản mà còn từ nhiều nguồn khác nhau cũng như khả năng phân tích và xuất ra các báo cáo cho các doanh nghiệp hay cá nhân, tổ chức cả trong và ngoài nước, AQS sinh ra để làm việc đó
AQS là một projct điển hình của công ty và em may mắn được tham gia vào project này AQS là project phục vụ các doanh nghiệp, người dùng nước ngoài cho việc thống kê, theo dõi, quản lí và xuất các báo cáo kinh doanh, tài sản của người dùng Được xây dựng từ năm 2019, đến nay vẫn được duy trì và phát triển tùy vào mục đích yêu cầu khách hàng Cho nên khi em tham giao vào project này thì sẽ được tham gia maintain nó bằng cách fix bug và phát triển một số yêu cầu nghiệp vụ mới chứ không phải tham gia
từ đầu trong việc xây dựng nó
1.1 Các môi trường của project.
AQS được phát triển trên 3 môi trường song song được gọi là: QAT, STG và PROD:
- QAT: Là môi trường phát triển thấp nhất mà developer sẽ làm việc đầu tiên đối với một task công việc hay một bug Môi trường này cũng sẽ có cơ sở dữ liệu của riêng nó để thuận tiện cho việc testing cũng như thử nghiệm những feature mới từ nghiệp vụ
- STG: Là môi trường phát triển cũng có database riêng, môi trường cao hơn qat
- PROD: là môi trường khách hàng dùng Là môi trường bậc cao nhất và quan trọng nhất
Bất cứ một feature hay 1 bug nào sinh ra đều phải đi đúng thứ tự từ thấp đến cao theo một kế hoạch đã được định trước
Trang 141.2 Một số hình ảnh project
Hình 1 Màn hình User management của AQS
Trang 15TÀI LIỆU THAM KHẢO
[1] Lynn Beighley, Michael Morrison (2018), Headfirst PHP & MySQL, O'Reilly Media, Inc.
[2] Google ©2010-2022, https://angular.io/
[3] © 2022 VMware, Inc, https://spring.io/projects/spring-boot
[4] Copyright © Eclipse Foundation, https://glassfish.org/
Trang 16TỔNG KẾT
Như vậy, chỉ trong vòng vài tháng ngắn ngủi, em đã thu thập được và học được rất nhiều thứ về tác phong, kinh nghiệm làm việc của một developer trên thị trường Song song đó về mặt chuyên môn, em cũng đã học được rất nhiều kĩ thuật cũng như công nghệ mới từ công việc
Chân thành cảm ơn sự giúp đỡ của các anh chị team developer của PALTech đã giúp em hoàn thành được kì thực tập của mình