Professional Documents
Culture Documents
MSSV: 4051050188
2
MỤC LỤC
3
3.3 Trang Home....................................................................................22
3.4 Trang Quản lý sinh viên.................................................................23
3.5 Trang Quản lý lớp...........................................................................23
4. Tham gia phát triển dự án AkaIspection..........................................24
IV. KẾT QUẢ ĐẠT ĐƯỢC.........................................................................26
1. Nội dung lý thuyết..............................................................................26
2. Kỹ năng thực hành.............................................................................26
3. Kinh nghiệm thực tiễn........................................................................27
4. Công việc đã đóng góp.......................................................................27
4
I. GIỚI THIỆU CÔNG TY FPT SOFTWARE QUY NHƠN
Được thành lập năm 1988 bởi một nhóm các nhà khoa học trẻ trong các lĩnh vực
Vật lý, Toán, Cơ, Tin học chỉ sau một năm, FPT đã thành lập một bộ phận tin học
mang tên ISC (Informatic Service Center).
Đến tháng 12 năm 1994, khi đã đủ lớn, ISC được tách thành các bộ phận chuyên
sâu về dự án, phân phối, phần mềm… Bộ phận phần mềm lúc đó có tên là FSS (FPT
Software Solutions - tên tiếng Việt là Xí nghiệp Giải pháp Phần mềm FPT).
Từ 1994 đến 1998, FSS tiếp tục phát triển và cung cấp các giải pháp phần mềm
cho các lĩnh vực Ngân hàng, Kế toán, Thuế, Hải quan, Công an.
Cuối năm 1998 đầu 1999, sau khi chiến lược xuất khẩu phần mềm được định hình,
một nhóm chuyên gia được tách ra từ FSS để thành lập FSU1 (FPT Strategic Unit #1)
như bộ phận chịu trách nhiệm mũi nhọn trong sứ mệnh Toàn Cầu Hoá. FSU1 chính là
tiền thân của FSOFT ngày nay.
Năm 2001 được đánh dấu bằng các hợp đồng OSDC với Mỹ và đặc biệt là OSDC
với NTT-IT - khách hàng Nhật bản đầu tiên của FSOFT. Năm 2001 cũng là năm
FSOFT bắt đầu dự án CMM-4, với mục tiêu đạt chứng chỉ CMM mức 4 trong vòng
một năm. FSOFT đạt CMM mức 4 vào tháng 3/2002, trở thành công ty đầu tiên ở khu
vực Đông Nam Á đạt chứng chỉ này. Năm 2002 cũng là năm FSOFT củng cố lại sơ đồ
tổ chức, bằng việc thành lập các Trung tâm sản xuất và các Phòng chức năng. Cuối
2002, lần đầu tiên doanh số FSOFT vượt ngưỡng 1 triệu USD.
Năm 2003 đem về cho FSOFT nhiều khách hàng mới, đặc biệt là các khách hàng
lớn của Nhật như Hitachi, Sanyo, Nissen, IBM Japan. FSOFT thành lập Văn phòng tại
thành phố Hồ Chí Minh.
5
Đầu năm 2004, FSOFT trở thành Công ty cổ phần phần mềm FPT. Trụ sở tại Tp.
Hồ Chí Minh được chuyển về toà nhà e-town. FSOFT đạt CMM mức 5 (mức cao nhất)
vào tháng 3. Để phục vụ tốt hơn các khách hàng Nhật, Văn phòng đại diện của FSOFT
được mở tại Tokyo. Năm 2004 cũng là năm gặt hái nhiều thành công của Công ty
Phần mềm FPT, với doanh số xuất khẩu năm 2004 tăng trưởng hơn 200% so với năm
2003.
Năm 2005 là năm đánh dấu bước phát triển của công ty về mọi mặt, giúp FSOFT
khẳng định vị trí công ty phần mềm hàng đầu Việt Nam. Tháng 8/2005 thành lập chi
nhánh Đà Nẵng, tháng 11 thành lập công ty FSOFT JAPAN tại Tokyo, tháng 12 khai
trương Trung tâm Tuyển dụng và Đào tạo tại toà nhà Simco, Hà nội. Hết năm 2005,
FSOFT tăng trưởng 114% doanh số, trở thành công ty phần mềm đầu tiên của Việt
Nam có 1000 nhân viên.
Tháng 10, năm 2007, các Trung tâm sản xuất phần mềm được chuyển đến làm
việc tập trung tại Tòa nhà FPT tại Phạm Hùng (Hà nội). Cuối năm 2007, doanh số của
Fsoft đạt 29,6 triệu USD, tăng 79% so với doanh thu năm 2006; số nhân viên chính
thức là 2,287 người.
Năm 2008 diễn ra với việc thành lập 4 Công ty chi nhánh tại Pháp, Malaysia, Mỹ,
Australia doanh số đạt 42 triệu USD với 2600 nhân viên.
FSOFT có hệ thống khách hàng rộng lớn trên toàn thế giới ở Mỹ, Châu Âu, Nhật Bản,
và các nước Châu Á Thái Bình Dương (Malaysia, Singapore, Australia). Trong chiến
lược gia nhập hàng ngũ những nhà cung cấp dịch vụ phần mềm hàng đầu thế giới,
công ty tập trung phát triển nguồn nhân lực chất lượng cao – giá trị cốt lõi đóng góp
vào tăng trưởng của công ty. Với 80% nhân viên FSOFT thuần thục về tiếng Anh và
hơn 200 người sử dụng tiếng Nhật, FPT Software không ngừng tìm kiếm và tạo cơ hội
cho những tài năng trẻ. Mục tiêu trong năm 2009, Fsoft sẽ đạt doanh thu 47 triệu USD
với số nhân viên 2600 người.
FPT Software chi nhánh Quy Nhơn được thành lập vào ngày 16/7/2018 với 50
CBNV đầu tiên. Văn phòng đầu tiên toạ lạc tại số 8 đường Biên Cương, phường Ngô
Mây, TP Quy Nhơn, tỉnh Bình Định. Cuối thành 6 năm 2019, 200 CBNV đã chuyển
về trụ sở mới tại tầng 7, An Phú Thịnh Plaza, 51A Tăng Bạt Hổ, phường Lê Lợi.
6
Thành lập tròn một năm, đến cuối năm 2018, nhân sự của đơn vị đã chạm mốc 200
người. Đơn vị đặt mục tiêu Leng Keng tăng số lượng nhân sự chạm mốc 500 người,
đưa đơn vị trở thành trung tâm nguồn lực phát triển mảng AI của FPT Software.
II. NỘI DUNG THỰC TẬP: CƠ CHẾ XÁC THỰC JWT, JHIPSTER,
ANGULAR
Khi mở rộng cho các Native app cụ thể là android hoặc ios thì session không tồn tại,
Cách giải quyết: xây dựng 1 hệ thống backend cho native mà cách thức hoạt
động y trang bên web.
Viết 2 lần cho 1 chức năng, khi có 100 hay 1000 chức năng thì sao?
Có thể tách ra 1 module riêng cho phần Native nhưng dù sao vẫn dư thừa code
ở phần xác thực.
Khắc phục nhược điểm đó thì JWT ra đời và đần đc sử dụng thay thế cho session.
Khái niệm: “JWT là một JSON object được định nghĩa trong chuẩn RFC 7519 như là
một cách an toàn để trao đổi thông tin giữa hai bên. Và Token thì bao gồm một header,
một payload và một chữ ký.”
JWT là: phương tiện chuyển giao giữa 2 bên client- server, các thông tin được định
dạng bằng chuỗi Json.
8
Thành phần của JWT
- Header: chứa kiểu dữ liệu và thuật toán sử dụng để mã hóa ra chuỗi JWT.
Vd:
"typ": "JWT",
"alg": "HS256"
Trong đó:
“alg” (algorithm) xác định thuật toán mã hóa cho chuỗi là HS256.
9
- PayLoad: chứa các thông tin mình muốn đặt trong chuỗi token.
Vd:
{
"user_name": "admin",
"user_id": "1513717410",
"authorities": "ADMIN_USER"
}
Không nên đặt quá nhiều thông tin vì có thể làm trễ khi server xác nhận một Token
quá dài.
- Signature: phần chữ ký sẽ đc tạo ra bằng cách mã hóa các phần header, payload
kèm theo một khóa bí mật (secret).
Data = base64urlEncode (header) + "." + base64urlEncode payload).
Signature = Hash (data, secret).
Base64UrlEncoder: thuật toán mã hóa header và payload.
Vd: khi dùng để mã hóa thì ta được 1 chuỗi như sau:
Header: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
Payload:
eyJhdWQiOlsidGVzdGp3dHJlc291cmNlaWQiXSwidXNlcl9uYW1lIjoiYWRtaW
4iLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiXSwiZXhwIjoxNTEzNzE và
Signature: 9nRhBWiRoryc8fV5xRpTmw9iyJ6EM7WTGTjvCM1e36Q.
Ta đc một chuỗi JWT hoàn chỉnh:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsidGVzdGp3dHJlc291cmNla
WQiXSwidXNlcl9uYW1lIjoiYWRtaW4iLCJzY29wZSI6WyJyZWFkIiwid3JpdGUiX
SwiZXhwIjoxNTEzNzE.9nRhBWiRoryc8fV5xRpTmw9iyJ6EM7WTGTjvCM1e36Q.
10
Trong trao đổi thông tin: trao đổi thông tin an toàn vì có phần signature của nó,
phía người có thể biết ai gửi cho mình nhờ vào signature, mà phần chữ kí đc tạo bằng
việc kết hợp giữa phần header và payload -> xác định đc chữ ký có bị giả tạo hay
không.
Khi user đăng nhập thành công thì server trả về 1 chuỗi jwt cho browser, và được
lưu lại trong browser (thường thì lưu dưới localstorage hoặc cooker thay cho session),
khi user muốn truy cập vào 1 url có bảo mật Browser sẽ gửi token JWT này trong
Header Authorization, Bearer schema của request gửi đi.
Đây là cách mà stateless (phi trạng thái) authentication làm việc, trạng thái của
user không được lưu trong bộ nhớ của Server mà được đóng gói hẳn vào trong JWT.
Server sẽ kiểm tra Token JWT này có hợp lệ hay không (bởi vì JWT có tính chất self-
contained, mọi thông tin cần thiết để kiểm tra JWT đều đã được chứa trong Token
JWT).
11
Do tính chất stateless nên chúng ta không còn phải lo lắng về domains nào được
sử dụng cho API của ta nữa, như không còn gặp rắc rối với CORS (Cross-Origin
Resource Sharing) vì nó không sử dụng cookies.
2. Jhipster
2.1 Jhipster là gì?
Nói một cách đơn giản, Jhipster (viết tắt của Java Hipster) là cách đơn giản để
chúng ta tạo ra một project xung quanh những công nghệ được ưa thích nhất với
Spring technologies và Angular/React. Khi chúng ta bắt đầu dự án chúng ta sẽ quan
tâm đến 3 khía cạnh:
12
2.3 Client side
Với những framework frontend:
13
2.4 Deployment
Deply dự án với:
14
2.5 Tại sao lựa chọn Jhipster
Với những gì đã nêu ở trên, chúng ta sẽ dễ dàng có được một project đủ mạnh mẽ
đầy đủ những thứ cơ bản để bắt đầu với thời gian nhanh nhất.
Tạo project:
Trong đó
15
- Frontend: Bootstrap + SASS + Angular 7 (hoặc thấp hơn tùy vào phiên bản
Jhipster cài đặt ở trên) Sau khi chạy xong bạn sẽ nhận được kết quả như bên
dưới. Đó cũng là hướng dẫn để bạn build project của mình trên local.
3. Angular
3.1 Angular là gì?
Angular là một JavaScript framework dùng để viết giao diện web (Front-end),
được phát triển bởi Google. Hiện nay, Angular đang được sử dụng bởi rất nhiều
các công ty lớn: Forbes, General Motors, Upwork…
Một ứng dụng angular là tập hợp của các component và một vài các service cung cấp
chức năng cho các component đó
16
Kiến trúc angular
17
Ví dụ về component
18
Angular module
Angular module
Ngày tiếp theo, chúng em được anh Nguyễn Ngọc Tâm giới thiệu về lịch sử phát
triển, về đặc điểm, về lĩnh vực hoạt động, các đối tác cũng như về văn hóa của tập
đoàn FPT, của FPT Software cũng như FPT Software Quy Nhơn.
20
Sau đó, chúng em phải học nội quy, các quy định sử dụng thiết bị, ra vào, bảo mật,
… của công ty để hoàn thành Dayone Course.
21
3.2 Trang Đăng Ký
22
3.4 Trang Quản lý sinh viên
23
4. Tham gia phát triển dự án AkaIspection
Bắt đầu từ tuần thứ 2, em được tham gia vào dự án AkaIspection: phát hiện số
lượng sản phẩm, phát hiện sản phẩm lỗi.
Em phải tìm hiểu thêm về Jhipster, cài đặt môi trường để chạy Jhipster. Em được giao
làm Front-end cho dự án.
Một số trang mà em đã làm:
Trang “Đăng Nhập”:
Trang “Requestdemo”:
24
Trang “Edit profile User”:
25
IV. KẾT QUẢ ĐẠT ĐƯỢC
26
3. Kinh nghiệm thực tiễn
- Quy trình phát triển trong một dự án phần mềm.
- Kỹ năng làm việc nhóm.
- Kỹ năng thuyết trình.
- Kỹ năng tìm kiếm tài liệu.
4. Công việc đã đóng góp
- Xây dựng giao diện, chức năng màn hình “Đăng Nhập”.
- Xây dựng giao diện, chức năng màn hình “Đăng Ký”.
- Xây dựng giao diện, chức năng màn hình “Trang Chủ”.
- Xây dựng giao diện, chức năng màn hình “Dashboard”.
- Xây dựng giao diện, chức năng màn hình “Requestdemo”.
- Xây dựng giao diện, chức năng màn hình “View profile User”.
- Xây dựng giao diện, chức năng màn hình “Edit profile User”.
- Xây dựng giao diện, chức năng màn hình “Edit profile User”.
- Chỉnh sửa lại giao diện, chức năng của “Images Lab”.
- Xây dựng giao diện, chức năng màn hình “Test Model”.
- Xây dựng giao diện, chức năng màn hình “Projects Management”.
- Chỉnh sửa lại các giao diện bị lỗi, dư thừa (header, footer, điều hướng chuyển
trang, …).
- Chỉnh sửa lại các lỗi được phát hiện.
27