10/18/2021

Chia sẻ các website học Machine Learning, Deep Learning và liên quan | Share


Nếu các bạn học Khoa học máy tính thì sẽ có 1 mô đun có môn học sâu và ứng dụng. Môn học sẽ giới thiệu tới mọi người các kĩ thuật cơ bản của học sâu, ứng dụng của học sâu, các phần cứng, phần mềm sử dụng trong học sâu,... Nhưng về cơ bản thì mọi thứ chỉ là mang tính giới thiệu là chính. 

Nếu muốn đi theo hướng này thì các bạn hãy tự mình tìm hiểu thêm, xin lên lab các thầy cô để được các thầy, các anh chị hướng dẫn và quan trọng hơn trên nếu cố gắng thì các bạn sẽ được các thầy cô giới thiệu tới các công ty để giành những suất học bổng, việc làm,...

Trong bài viết này mình sẽ chia sẻ tới mọi người một số website tốt nhất hỗ trợ việc học AI, ML, DL.

https://stanford.edu/~shervine/l/vi/

Blog của tác giả Shervine Amidi và người anh em song sinh của anh là Afshine Amidi. Website chia sẻ lại các nội dung là kết quả sau quá trình làm trợ giảng tại đại học Stanford gồm rất nhiều các phần, mục hay: 

  • Trí tuệ nhân tạo

  • Học máy

  • Học sâu

  • Phương trình vi phân thường

  • Xác suất và thống kê

Tek4 - tự học Tensorflow

Tensorflow là một thư viện deep learning mã nguồn mở được phát triển bởi Google và đây là một trong những công cụ phổ biến nhất sử dụng trong deep learning. Loạt bài viết này của Tek4 rất phù hợp cho người mới bắt đầu, biết ít hoặc chưa biết về tensorflow.

https://machinelearningcoban.com/

Chắc chắn là không thể thiếu website của anh Tiệp machinelearningcoban. Anh Vũ Hữu Tiệp là tiến sĩ ngành học máy và thị giác máy tính tại Đại học bang Pennsylvania (Pennsylvania State University), Hoa Kỳ. Blog này mình nghĩ khá là nổi tiếng vì có ranking khá cao trên Google và nếu mình không chia sẻ thì nhiều người cũng sẽ biết tới blog này rồi.

https://nttuan8.com/

Chúng ta đã có blog về machine learning cơ bản vậy thì cũng không thể thiếu blog deep learning cơ bản được. 


Blog deep learnig cơ bản được viết bởi tác giả Nguyễn Thanh Tuấn là thạc sĩ chuyên ngành Machine Learning, đại học Bristol, Anh Quốc. 

Anh Tuấn cũng là tác giả cuốn sách Deep Learning cơ bản. Blog của anh Tuấn cũng chia sẻ các các kiến thức về deep learning, Pytorch, mô hình GAN.

https://trituenhantao.io/

trituenhantao.io cũng là một cộng đồng lớn chia sẻ các kiến thức về AI, ML và DL, các bài viết về công nghệ, các tin tức về trí tuệ nhân tạo trên thế giới. Các bạn có thể tham gia đóng góp bài viết cùng với trituenhantao.io tại community.trituenhantao.io (bạn sẽ nhận được hoa hồng khi đóng góp các bài viết trên community.trituenhantao.io nhận từ Medium).

CS224N: Natural Language Processing with Deep Learning


Đây là loạt video bài giảng về xử lý ngôn ngữ tự nhiên với deep learning được đăng trên kênh youtube stanford online. Các bài giảng đều hấp dẫn và chi tiết với độ dài sấp xỉ 1 tiếng / 1 video.

Một số các blogs khác bạn có thể tham khảo thêm như là: 

10/16/2021

Native với Cross Platform: ưu và nhược điểm | Sharing


Khi mà chục năm trước thì web là sự theo đuổi của bao các lập trình viên kì nay kỉ nguyên của web đang dần khép lại, khép lại không phải là không tìm được việc nữa nha, mà là nó không còn hot, không còn là trend như chục năm về trước nữa chứ việc làm thì sẽ không bao giờ là thiếu. Thay vào đó thì ngày nay thiết bị di động, các thiết bị cầm tay đang dần trở lên phổ biến, vì thế phát triển ứng dụng cho các thiết bị di động đang dần trở lên phổ biến và tương lai trong mấy năm tới phát triển ứng dụng cho thiết bị di động sẽ là một trend mới.

Hiện nay có 4,4 triệu ứng dụng trên 2 chợ ứng dụng lớn nhất là Google Play và AppStore, nhắm vào thị trường 14 tỷ thiết bị di động trên toàn thế giới (xem biểu đồ bên trên). Dự kiến tới năm 2025 thì số thiết bị di động có thể lên tới 18,2 tỷ cái. Đây rõ ràng là một thị trường màu mỡ, giàu tiềm năng mà rõ ràng là ai cũng muốn chiếm lấy. Tiền lương trả cho các lập trình viên mobile cũng không hề thấp, với các bạn từ 2-3 năm kinh nghiệm thì mức lương 40 triệu đồng / tháng là bình thường, tuy nhiên vấn đề lương là khó nói chúng ta chỉ nhìn vào để làm động lực thôi. Mình sẽ không nói tới lương nữa vì nó là vấn đề nhạy cảm, các bạn chỉ biết rằng lập trình mobile app là một xu hướng và nếu các bạn giỏi thì các công ty hoàn toàn chải thảm đỏ mời các bạn về làm mới mức lương cực kì hấp dẫn.

OK! Nói qua vậy để mọi người thấy rằng phát triển ứng dụng cho thiết bị di động sẽ là xu hướng trong các năm tiếp theo. Vậy học lập trình mobile thì phải học cái gì? Có 2 loại ứng dụng mobile app là native app và cross platform app. Chúng ta sẽ đi từng vào từng loại một nha.

Native App Development

Phát triển ứng dụng native hay ứng dụng gốc tức là đề cập tới việc xây dựng ứng dụng dành riêng cho một nền tảng bằng các ngôn ngữ dành riêng cho nền tảng đó, ví dụ như Android sẽ là Java hoặc Kotlin, iOS sẽ là Swift hoặc Objective-C. 

Các ứng dụng gốc được hỗ trợ từ trực tiếp các nhà phát triển nền tảng nên các ứng dụng native là các ứng dụng có hiệu năng cao, trải nghiệm người dùng tốt. Tuy nhiên chi phí phát triển ứng dụng native là cao vì các công ty phải phát triển ứng dụng trên cả 2 nền tảng Android và iOS là độc lập với nhau. 

Ưu điêm việc phát triển ứng dụng Native: 

  • ‍Broad Functionality: bạn sẽ có quyền truy cập vào mọi API và công cụ do nền tảng mà bạn đang làm việc cung cấp. Về mặt kỹ thuật, không có giới hạn nào về cách các lập trình viên có thể làm việc với ứng dụng mới.

  • Hỗ trợ tốt hơn từ các store: một ứng dụng native sẽ dễ dàng xuất bản và được xếp hạng cao hơn trên các chợ ứng dụng vì chúng mang lại hiệu suất và tốc độ tốt hơn.

  • Khả năng mở rộng: các ứng dụng được xây dựng cho môi trường gốc cũng có xu hướng mở rộng hơn, nhờ sự linh hoạt trong quản lý tài nguyên và hàng loạt công cụ có sẵn.‍

  • Hiệu năng cao và trải nghiệm người dùng tốt: các ứng dụng native được hỗ trợ trực tiếp từ các nhà phát triển nền tảng nên mang lại hiệu năng tốt hơn, trải nghiệm người dùng tuyệt vời hơn.

Hạn chế của phát triển ứng dụng native: 

  • Giá thành và thời gian: việc phát triển ứng dụng native chỉ giúp cho ứng dụng của bạn chạy trên 1 nền tảng, điều đó dẫn tới bạn phải có 1 team khác để build lại 1 ứng dụng khác, mới hoàn toàn để chạy trên các nền tảng khác, điều này là rất tốn kém và mất thời gian.

Cross-platform App Development

Phát triển ứng dụng đa nền tảng chỉ ra quá trình tạo ra một ứng dụng hoạt động trên một số nền tảng. Điều này được thực hiện bằng cách sử dụng các công cụ như React Native, Xamarin và Flutter, nơi các ứng dụng được tạo có thể được triển khai trên cả Android và iOS.

Khi ứng dụng được viết một lần và có thể chạy đa nền tảng thì điều này giúp cho bạn có thể tiết kiệm được thời gian cũng như tiền bạc bỏ ra so với khi xây dựng các ứng dụng Native.

Về ưu điểm và hạn chế của cross-platform? Gần như mọi thứ là ngược lại so với app native. Khi phát triển các ứng dụng platform các bạn có thể gặp khó khăn khi truy cập vào các chức năng của điện thoại thông minh như micro, máy ảnh, ... (‍Limited Functionality), các ứng dụng đa nền tảng thường chậm hơn so với các ứng dụng gốc vì chúng cần một lớp khác ở giữa bổ sung, các ứng dụng đa nền tảng không thể tận dụng các UX gỗc nên mang lại trải nghiệm người dùng không tôt.

Ưu điểm duy nhất mà cross-platform mang lại chính là tiền, chi phí. Việc phát triển ứng dụng đa nền tảng sẽ giúp bạn chỉ cần viết 1 lần mà ứng dụng có thể chạy trên các nền tảng khác nhau. Ưu điểm tuy ít nhưng nó là mấu chốt để cho các nền tảng cross-platform phát triển ngày càng mạnh.

Tại trường Đại Học Bách Khoa Hà Nội các bạn có 2 môn học là "Phát triển ứng dụng cho thiết bị di động" và "Phát triển ứng dụng đa nền tảng" là được học về phát triển mobile app. Với môn "Phát triển ứng dụng đa nền tảng" các bạn được học về các nguyên lý đa nền tảng, các framework đa nền tảng như là React Native và Flutter. Với môn "Phát triển ứng dụng cho thiết bị di động" các bạn được dạy tập chung vào phát triển ứng dụng native trên Android với công cụ Android Studio, mình sẽ nói kĩ hơn về 2 môn này trong các bài viết sau nha.

Nếu các bạn muốn theo mobile app thì nên học gì? Với ý kiến của mình các bạn nên chọn cho mình 1 nền tảng  để phát triển app native để học (Android hoặc iOS) và 1 framework hỗ trợ phát triển các app cross-platform (React Native hoặc Flutter). Đó là ý kiến của mình thôi, còn dĩ nhiên các bạn có thể học tập chung vào Android, hoặc học tập chung vào iOS hoặc là học tập chung vào 1 trong các framework đa nền tảng cũng không hoàn toàn có vấn đề gì.

Tham khảo: https://www.uptech.team/https://www.statista.com/

10/05/2021

Công nghệ web và dịch vụ trực tuyến | Tài liệu, chuyên ngành


Công nghệ web và dịch vụ trực tuyến và một môn chuyên ngành, nằm trong module 4, module phát triển ứng dụng nghiệp vụ. Trong môn này các bạn sẽ được học tất cả những thứ có thể làm ra 1 trang web từ các ngôn ngữ phát triển phía máy khách như HTML, CSS, JS, các ngôn ngữ phát triển phía máy chủ PHP, Java, Nodejs, học về XML, DTD, học về các mô hình lập trình như MVC. Và dĩ nhiên rồi, vì kiến thức là rất nhiều mà khoảng thời gian học chỉ có 1 kì học nên có những thứ sẽ học kĩ, nhưng có những thứ chỉ mang tính chất giới thiệu là chính.

Ngôn ngữ backend chính được dạy trong môn học là PHP, vì thế nếu các bạn sử dụng các ngôn ngữ khác thì phải tự mày mò tìm hiểu là chủ yếu.

Nhìn chung thì mình thấy lý thuyết của môn này học cũng không cuốn hút, đa phần là lượng kiến thức mà các bạn đã biết chỉ có 1 số ít là các kiến thức mới thì lại học rất ít. Tuy nhiên thì bài tập lớn môn này rất là mở và sẽ thỏa mãn được đam mê của các bạn, thường và hầu hết các thầy/ cô dạy môn này sẽ cho mọi người xây dựng 1 trang web bất kì nào, nếu các bạn học Đào Thành Chung thì thầy sẽ không cho sử dụng framework trong bài tập lớn vì thế nếu bạn nào học thầy Chung thì xem xét nha, tuy nhiên thầy cho điểm rất thoải mái, nhóm có điểm bài tập lớn đứng đầu còn được miễn thi.

Ngoài ra môn này sẽ có bài tập hàng tuần về kiến thức đã học trong tuần đó, các thức kiểm tra bài tập tuần của mỗi thầy/cô là khác nhau nhưng nói chung là các bạn phải làm bài tập tuần nha. 

Tóm lại mình nhìn nhận về môn này là rất dễ kiếm điểm, các bạn có thể không cần học nhiều đâu, chỉ cần dựa vào kiến thức mà các bạn đã có về web từ trước tới giờ cộng với ôn tập 1 tí thôi là A+ rồi.

Tài liệu

  • Slide công nghệ web và dịch vụ trực tuyến mới từ viện: LINK 1 | LINK 2
    (Đường link 1 là slide mới hơn mà mình nhận được, nhưng link 2 lại có thêm 1 số slide về servlet và 1 số thứ khác mà các bạn có thể tham khảo thêm)

  • Slide công nghệ wb và dịch vụ trực tuyến - thầy Đào Thành Chung: TẢI VỀ SLIDE

Bài tập lớn

Bài tập lớn như mình đã nói bên trên là đề tài tự do và các bạn hoàn toàn có thể chọn làm bất cứ cái gì mà các bạn thích. Sau khi làm xong các bạn có thể đẩy web lên các host, việc đẩy web lên host và demo trực tiếp để mọi người cùng vào thử nghiệm sẽ được các thầy/cô đánh giá cao và ưu ái hơn trong việc cho điểm, dĩ nhiên là hơn hết các bạn phải tập chung vào sản phẩm của mình, còn thời gian hãy nghĩ tới việc này. Có nhiều thầy/cô không hẳn là thích giao diện đẹp đâu, vì các thầy/cô đều nghĩ đẹp hầu như là các bạn đi cop, vì thế hãy cố gắng tập chung vào logic và phần backend nha, giao diện có thể phèn phèn 1 tí nhưng website có nhiều chức năng sẽ là 1 điểm mạnh. Dĩ nhiên là phần giao diện cũng phải đáp ứng được các yêu cầu của thầy giáo đưa ra như responsive,...

Mình sẽ có 1 bài hướng dẫn đẩy 1 website viết bằng PHP lên host, các bạn theo dõi nha.

Cuối cùng là bạn có thể tham khảo 1 project của mình tại đây nha: https://github.com/trannguyenhan/selling-computer (mặc dù giao diện không đẹp bằng các nhóm khác tuy nhiên project may mắn có điểm cao nhất)