Home Blog Page 11

Trí Tuệ Nhân Tạo Sinh Tạo (GenAI) – Thực trạng và tương lai

Trí Tuệ Nhân Tạo Sinh Tạo (GenAI) - MMA Global đã ứng dụng ra sao?

Trí tuệ nhân tạo sinh tạo (GenAI) là một lĩnh vực của trí tuệ nhân tạo (AI) tập trung vào việc tạo ra nội dung mới và sáng tạo dựa trên dữ liệu và mô hình học máy. GenAI không chỉ có khả năng phân tích và xử lý dữ liệu, mà còn có thể tạo ra các sản phẩm mới như văn bản, hình ảnh, âm thanh và video mà không cần sự can thiệp của con người trong từng bước sáng tạo. Trí tuệ nhân tạo sinh tạo (GenAI) đang thu hút sự chú ý ngày càng lớn trong cộng đồng doanh nghiệp, nhờ vào tiềm năng cách mạng hóa các quy trình và chiến lược kinh doanh.

Khái Niệm GenAI

Trí tuệ nhân tạo sinh tạo Generative AI (GenAI) sử dụng các mô hình học sâu (deep learning) và các thuật toán học máy tiên tiến để mô phỏng quá trình sáng tạo của con người. Điều này có nghĩa là các hệ thống GenAI có khả năng “học hỏi” từ dữ liệu đầu vào để tạo ra các kết quả mới, chẳng hạn như viết một bài báo, tạo hình ảnh nghệ thuật, hoặc sản xuất âm nhạc. GenAI có thể hoạt động trong nhiều lĩnh vực khác nhau, bao gồm:

  • Tạo nội dung văn bản: Các mô hình GenAI như GPT-4 có khả năng viết bài, trả lời câu hỏi, và tạo nội dung dựa trên yêu cầu của người dùng.
  • Sáng tạo hình ảnh và video: GenAI có thể tạo ra hình ảnh và video mới dựa trên mô tả bằng văn bản hoặc các mẫu hình ảnh hiện có.
  • Phát nhạc và âm thanh: GenAI có thể sáng tác nhạc hoặc tạo âm thanh theo phong cách và yêu cầu cụ thể.

Các Mô Hình Và Công Nghệ Chính

  1. Mô Hình Sinh Tạo (Generative Models): Các mô hình này bao gồm Generative Adversarial Networks (GANs) và Variational Autoencoders (VAEs). GANs sử dụng hai mạng đối kháng nhau để tạo ra các dữ liệu mới, trong khi VAEs giúp mô hình hóa và sinh ra dữ liệu dựa trên phân phối xác suất.
  2. Mô Hình Ngôn Ngữ (Language Models): Các mô hình ngôn ngữ như GPT-4, BERT, và T5 có khả năng hiểu và sinh ra văn bản với ngữ nghĩa và cấu trúc phong phú. Chúng có thể viết các bài báo, trả lời câu hỏi và tạo nội dung dựa trên yêu cầu cụ thể.
  3. Mô Hình Đa Phương Tiện (Multimodal Models): Những mô hình này có khả năng xử lý và sinh ra các dữ liệu từ nhiều loại phương tiện khác nhau, chẳng hạn như hình ảnh, văn bản, và âm thanh. Ví dụ, CLIP của OpenAI có thể hiểu và liên kết hình ảnh với văn bản.

Nhận Thức về Trí Tuệ Nhân Tạo Sinh Tạo (GenAI)

Trí tuệ nhân tạo sinh tạo (GenAI) đã và đang trở thành một chủ đề nóng trong thế giới công nghệ. Mặc dù có nhiều triển vọng, nhưng cũng tồn tại những phản ứng trái chiều về công nghệ này. Dưới đây là một số nhận thức quan trọng về GenAI:

  1. Lạc Quan và Do Dự:
    • Lạc Quan: Hầu hết các công ty đều thể hiện sự lạc quan về GenAI, với kỳ vọng rằng công nghệ này sẽ mở ra nhiều cơ hội mới và cải thiện hiệu quả công việc. Sự lạc quan này xuất phát từ tiềm năng của GenAI trong việc tối ưu hóa quy trình làm việc và tạo ra giá trị mới.
    • Do Dự: Mặc dù có sự lạc quan, vẫn tồn tại một số lo ngại và nghi ngờ về khả năng triển khai và ảnh hưởng lâu dài của GenAI. Các công ty thường lo lắng về cách công nghệ này sẽ được tích hợp vào quy trình hiện tại và ảnh hưởng đến các yếu tố khác như bảo mật và quyền riêng tư.
  2. Quan Điểm Về Quy Định:
    • Ưu Tiên Quy Định Ít Đến Vừa Phải: Đa số các tổ chức ủng hộ quy định ở mức tối thiểu đến vừa phải. Rất ít người ủng hộ việc áp đặt quy định nghiêm ngặt. Sự đồng thuận này phản ánh mong muốn của nhiều công ty trong việc giữ cho quá trình triển khai GenAI được linh hoạt và không bị cản trở bởi các quy định quá khắt khe.
  3. Tốc Độ Thay Đổi:Dự Đoán Tốc Độ Thay Đổi: Ý kiến về tốc độ thay đổi của GenAI có sự khác biệt lớn. Khoảng 34% các tổ chức kỳ vọng sự thay đổi sẽ theo cấp số nhân, trong khi những người khác dự đoán sẽ có sự tiến bộ đều đặn hoặc không liên tục. Sự khác biệt này cho thấy rằng các công ty có những đánh giá khác nhau về khả năng phát triển nhanh chóng của công nghệ.
  4. Giai Đoạn Áp Dụng:Giai Đoạn Học Hỏi và Khám Phá: Phần lớn các tổ chức hiện đang ở giai đoạn học hỏi và khám phá GenAI. Một số ít trong số đó đã bắt đầu triển khai ứng dụng AI trên nhiều trường hợp sử dụng khác nhau. Điều này phản ánh sự cần thiết phải hiểu rõ hơn về công nghệ trước khi đưa vào ứng dụng rộng rãi.

Chiến Lược Triển Khai GenAI

Khi triển khai GenAI, các tổ chức cần xem xét một số chiến lược chính để tối ưu hóa lợi ích của công nghệ này:

  1. Hiệu Quả:
    • Tăng Cường Quyết Định và Đổi Mới: Một trong những trọng điểm chính trong triển khai GenAI là cải thiện hiệu quả quyết định và đổi mới. Công nghệ này có thể giúp tổ chức đưa ra quyết định nhanh chóng và chính xác hơn bằng cách phân tích và tổng hợp thông tin từ nhiều nguồn khác nhau.
  2. Ưu Tiên Các Trường Hợp Sử Dụng:
    • Tập Trung vào Các Trường Hợp Có Tiềm Năng Gây Rối: Các tổ chức thường tập trung vào những trường hợp sử dụng có khả năng tạo ra sự đột phá lớn nhất. Ví dụ, hỗ trợ khách hàng và sản xuất nội dung là những lĩnh vực được ưu tiên cao. Điều này cho phép các tổ chức khai thác tối đa giá trị của GenAI trong các lĩnh vực quan trọng.
  3. Quản Lý Rủi Ro:
    • Ưu Tiên Rủi Ro Tài Chính: Trong việc triển khai GenAI, các tổ chức ưu tiên quản lý rủi ro tài chính hơn là rủi ro về danh tiếng và con người. Các biện pháp được thực hiện để giảm thiểu rủi ro tài chính thông qua việc tuân thủ các quy định và quy trình bảo mật. Điều này cho thấy sự quan tâm lớn đến việc bảo vệ tài chính trong quá trình áp dụng công nghệ mới.

Lộ Trình Triển Khai GenAI

Hiệu Quả: Khi triển khai GenAI, hiệu quả là một trong những tiêu chí chính. Các công ty tập trung vào việc cải thiện quy trình ra quyết định và thúc đẩy đổi mới sáng tạo thông qua việc ứng dụng GenAI. Việc tối ưu hóa quy trình và nâng cao hiệu suất là mục tiêu quan trọng khi áp dụng công nghệ này.

Ưu Tiên Các Trường Hợp Sử Dụng: Các tổ chức hiện đang tập trung vào những trường hợp sử dụng có tiềm năng gây ra sự thay đổi lớn. Các lĩnh vực như hỗ trợ khách hàng và sản xuất nội dung đang được chú trọng vì chúng có khả năng mang lại giá trị cao nhất và có thể thay đổi cách thức hoạt động hiện tại.

Quản Lý Rủi Ro: Quản lý rủi ro tài chính được ưu tiên hơn so với các rủi ro danh tiếng và con người. Các công ty đang triển khai các biện pháp để quản lý các rủi ro này thông qua việc tuân thủ quy định và các quy trình bảo mật hiệu quả. Điều này giúp đảm bảo rằng việc triển khai GenAI không chỉ hiệu quả mà còn an toàn và bền vững.

Những Lĩnh Vực Bị Ảnh Hưởng Nhiều Nhất Bởi GenAI

Hỗ Trợ Khách Hàng: GenAI đang làm thay đổi cách thức tương tác và hỗ trợ khách hàng, giúp cải thiện trải nghiệm dịch vụ và tăng cường hiệu suất hỗ trợ.

Sản Xuất Nội Dung: Công nghệ này đang mở ra những cơ hội mới trong việc sản xuất và cá nhân hóa nội dung, từ việc tạo ra các bài viết đến các tài liệu tiếp thị. GenAI giúp nâng cao chất lượng và hiệu quả của các hoạt động sản xuất nội dung.

Liên Minh Lãnh Đạo AI Của MMA Global (ALC)

MMA Global tập trung vào việc phát triển các dự án nghiên cứu, hướng dẫn cách làm và khung phương pháp để khai thác AI trong marketing và chiến lược khách hàng. Các nhóm làm việc của ALC bao gồm:

  • Nội Dung & Sáng Tạo: Các hoạt động bao gồm cá nhân hóa dựa trên AI, tương tác với khán giả mới và ứng dụng AI trong việc kể chuyện.
  • Phát Triển & Mua Sắm Truyền Thông: Phân tích đối tượng, lựa chọn nhà cung cấp, và tối ưu hóa tiếp thị qua email.
  • Đo Lường & Phân Tích: Phân tích thời gian thực, tích hợp công cụ AI và bản đồ hành trình khách hàng.

MMA Global cam kết nâng cao hiệu quả marketing thông qua AI, giúp các tổ chức phát triển các chiến lược AI hiệu quả, đổi mới và được quản lý tốt. Các sáng kiến của họ tập trung vào việc cải thiện hiểu biết khoa học và triển khai thực tiễn để tối đa hóa ROI trong marketing.

Ghi Chú: MMA Global là một hiệp hội ngành công nghiệp phi lợi nhuận, chuyên nghiên cứu và hợp tác nhằm cải thiện sự tăng trưởng và lợi nhuận trong marketing. Thông tin chi tiết về các nhóm nghiên cứu và thành viên có thể được tìm thấy trên trang web mmaglobal.com

Bài viết được tổng hợp và điều chỉnh bằng AI. Nội dung từ buổi thuyết trình của tác giả Jaymie Vo tại Vietnam Mobile Summit 2024

Ngành Khoa học máy tính là gì? Học xong ra làm gì?

Ngành Khoa học máy tính là gì? Học xong ra làm gì?

Khoa học máy tính là gì? Có nên chọn học ngành Khoa học máy tính không? Đây là các câu hỏi được rất nhiều bạn sinh viên quan tâm. Đây là một ngành học chưa bao giờ hết hot với điểm chuẩn dường như chỉ xếp sau ngành y dược. Vậy tại sao nó lại thu hút nhiều sinh viên theo học đến vậy? Cùng TopDev tìm hiểu thật chi tiết về ngành nghề này qua bài viết dưới đây nhé!

Khoa học máy tính là ngành gì?

Ngành Khoa học Máy tính là ngành học tập trung vào việc nghiên cứu và phát triển các khía cạnh của máy tính, từ thiết kế và chế tạo đến vận hành và sửa chữa các thành phần phần cứng và phần mềm. Ngành này không chỉ bao gồm việc xây dựng và quản lý hệ thống máy tính, mà còn mở rộng ra các mạng lưới và hệ thống liên kết chúng lại với nhau.

Khoa học máy tính được xem là một ngành khoa học nền tảng, có ảnh hưởng sâu rộng đến hầu hết mọi lĩnh vực trong cuộc sống hiện đại, từ công nghệ thông tin, viễn thông, đến các ứng dụng trong y tế, giáo dục, và kinh doanh.

Ngành học này dành cho những ai đam mê máy tính và mong muốn nghiên cứu một cách sâu sắc về cách thức hoạt động của chúng, cùng với khả năng áp dụng những kiến thức đó để giải quyết các vấn đề thực tiễn và đáp ứng nhu cầu của người dùng hoặc khách hàng. Các kiến thức và kỹ năng từ ngành Khoa học Máy tính không chỉ giúp bạn hiểu rõ cách hoạt động của các hệ thống máy tính mà còn cung cấp nền tảng vững chắc để phát triển các giải pháp công nghệ mới và sáng tạo.

Khám phá: Nên chọn Khoa học máy tính hay Kỹ thuật phần mềm?

Ngành Khoa học máy tính học những gì?

khoa học máy tính

Ngành Khoa học Máy tính là một lĩnh vực học thuật rộng lớn, bao gồm nhiều chủ đề và kỹ năng khác nhau. Học tập trong ngành này bao gồm cả lý thuyết và thực hành, với mục tiêu phát triển hiểu biết sâu rộng về máy tính và công nghệ thông tin. Dưới đây là một số lĩnh vực chính mà sinh viên ngành Khoa học Máy tính thường học:

  1. Cấu trúc dữ liệu và giải thuật: Đây là những kiến thức cơ bản về cách tổ chức và xử lý dữ liệu trong máy tính. Sinh viên học cách xây dựng và sử dụng các cấu trúc dữ liệu như danh sách liên kết, cây, đồ thị, và cách áp dụng các giải thuật để giải quyết các vấn đề tính toán.
  2. Lập trình máy tính: Kỹ năng lập trình là trung tâm của ngành Khoa học Máy tính. Sinh viên học các ngôn ngữ lập trình phổ biến như Python, Java, C++, và C#. Họ cũng nghiên cứu các kỹ thuật lập trình khác nhau, bao gồm lập trình hướng đối tượng, lập trình hàm, và lập trình song song.
  3. Hệ điều hành: Sinh viên nghiên cứu cách hệ điều hành quản lý phần cứng máy tính và cung cấp các dịch vụ cho các chương trình phần mềm. Họ tìm hiểu về các khái niệm như quản lý bộ nhớ, quản lý tiến trình, và hệ thống tập tin.
  4. Mạng máy tính: Ngành học này bao gồm việc tìm hiểu về cách các máy tính kết nối và giao tiếp với nhau qua các mạng, bao gồm mạng cục bộ (LAN) và mạng diện rộng (WAN). Sinh viên học về các giao thức mạng, bảo mật mạng, và cấu trúc mạng.
  5. Cơ sở dữ liệu: Sinh viên học cách thiết kế, xây dựng và quản lý các hệ thống cơ sở dữ liệu. Họ tìm hiểu về các mô hình cơ sở dữ liệu, SQL (Structured Query Language), và các kỹ thuật quản lý dữ liệu.
  6. Lý thuyết máy tính: Đây là lĩnh vực nghiên cứu các khái niệm cơ bản về tính toán, bao gồm lý thuyết độ phức tạp tính toán, lý thuyết ngôn ngữ và automata, và lý thuyết thông tin.
  7. Kỹ thuật phần mềm: Sinh viên học các phương pháp và công cụ để phát triển phần mềm chất lượng cao. Họ tìm hiểu về quy trình phát triển phần mềm, kiểm thử phần mềm, và quản lý dự án phần mềm.
  8. Trí tuệ nhân tạo (AI) và học máy (Machine Learning): Đây là các lĩnh vực nghiên cứu về việc tạo ra các hệ thống máy tính có khả năng học hỏi và tự cải thiện. Sinh viên học về các thuật toán học máy, mạng nơ-ron, và ứng dụng của trí tuệ nhân tạo.
  9. Bảo mật thông tin: Sinh viên tìm hiểu về các phương pháp bảo vệ dữ liệu và hệ thống khỏi các mối đe dọa bảo mật. Họ học về mã hóa, xác thực, và các chiến lược phòng chống tấn công mạng.
  10. Tương tác người-máy (HCI): Ngành học này nghiên cứu cách người dùng tương tác với máy tính và các giao diện người dùng. Sinh viên học cách thiết kế các giao diện trực quan và dễ sử dụng.

Học Khoa học máy tính có khó không?

Các chuyên ngành chính của ngành Khoa học máy tính

Khi theo học ngành Khoa học Máy tính, sau năm thứ hai các sinh viên hầu như sẽ chọn tập trung vào một chuyên ngành để tìm hiểu chuyên sâu và định hướng nghề nghiệp theo chuyên ngành đó. Dưới đây là một số chuyên ngành chính mà bạn có thể theo học:

Kỹ thuật phần mềm

Kỹ thuật phần mềm là một chuyên ngành tập trung vào việc phát triển, thiết kế và duy trì phần mềm chất lượng cao. Sinh viên học cách sử dụng các phương pháp và công cụ để quản lý toàn bộ vòng đời phát triển phần mềm, từ việc phân tích yêu cầu đến thiết kế, lập trình, kiểm thử và bảo trì. Kỹ thuật phần mềm không chỉ bao gồm việc viết mã mà còn liên quan đến việc lập kế hoạch dự án, quản lý rủi ro, và đảm bảo chất lượng sản phẩm.

Trí tuệ nhân tạo và học máy

Trí tuệ nhân tạo (AI) và học máy (Machine Learning) là lĩnh vực nghiên cứu về việc tạo ra các hệ thống máy tính có khả năng học hỏi và cải thiện từ dữ liệu mà không cần được lập trình cụ thể cho từng nhiệm vụ. Trong chuyên ngành này, sinh viên học các thuật toán học máy, mạng nơ-ron sâu, và các kỹ thuật trí tuệ nhân tạo để xây dựng các ứng dụng như nhận diện hình ảnh, xử lý ngôn ngữ tự nhiên, và hệ thống gợi ý.

Khoa học dữ liệu

Khoa học dữ liệu (Data Science) là một lĩnh vực chuyên sâu về việc thu thập, phân tích và giải thích dữ liệu để hỗ trợ các quyết định kinh doanh và nghiên cứu. Sinh viên học các kỹ thuật phân tích dữ liệu, thống kê, và sử dụng các công cụ và ngôn ngữ lập trình như Python và R để xử lý và trực quan hóa dữ liệu. Khoa học dữ liệu đóng vai trò quan trọng trong việc khai thác thông tin giá trị từ dữ liệu lớn.

Robot học

là chuyên ngành nghiên cứu về việc thiết kế và phát triển các hệ thống robot có khả năng thực hiện các nhiệm vụ tự động. Trong lĩnh vực này, sinh viên học cách lập trình các hành vi của robot, tích hợp cảm biến và bộ điều khiển, và áp dụng các thuật toán điều khiển để giải quyết các vấn đề liên quan đến robot tự động.

Lập trình game

Lập trình game là một chuyên ngành tập trung vào việc thiết kế và phát triển các trò chơi điện tử. Sinh viên học các kỹ thuật lập trình game, thiết kế đồ họa, và các công cụ phát triển game để tạo ra các trò chơi hấp dẫn và tương tác. Lập trình game không chỉ yêu cầu kỹ năng lập trình mà còn yêu cầu sự sáng tạo trong việc xây dựng cốt truyện, đồ họa, và cơ chế chơi game.

Học Khoa học máy tính ra làm gì?

Ngành Khoa học Máy tính mở ra nhiều cơ hội nghề nghiệp trong các lĩnh vực công nghệ thông tin và các ngành công nghệ thông tin liên quan. Sau khi tốt nghiệp, bạn có thể làm việc trong nhiều vị trí khác nhau, bao gồm:

  • Kỹ sư phần mềm: Phát triển và duy trì phần mềm, ứng dụng và hệ thống. Công việc bao gồm thiết kế, lập trình, kiểm thử và bảo trì phần mềm. Mức lương trung bình cho một kỹ sư phần mềm dao động từ 18 triệu đến 40 triệu đồng mỗi tháng. Những người có nhiều năm kinh nghiệm hoặc làm việc tại các công ty lớn, đặc biệt là các công ty công nghệ toàn cầu, có thể nhận được mức lương cao hơn, lên đến 50 triệu đồng mỗi tháng.
  • Chuyên gia dữ liệu (Data Scientist): Phân tích và giải thích dữ liệu để hỗ trợ quyết định kinh doanh. Công việc thường liên quan đến việc xử lý dữ liệu lớn, xây dựng mô hình dự đoán và trực quan hóa dữ liệu. Thu nhập trung bình của một chuyên gia dữ liệu tại Việt Nam thường từ 25 triệu đến 50 triệu đồng mỗi tháng.
  • Kỹ sư trí tuệ nhân tạo (AI Engineer): Phát triển các hệ thống thông minh và ứng dụng học máy. Công việc bao gồm thiết kế và triển khai các giải pháp AI và machine learning. Các kỹ sư AI với kinh nghiệm làm việc trong các dự án phức tạp hoặc tại các công ty công nghệ hàng đầu có thể có mức lương lên đến 70 triệu đồng mỗi tháng, còn khi mới ra trường mức lương cũng khá cao so với các chuyên ngành khác, dao động từ 18-30 triệu/tháng.
  • Chuyên gia bảo mật thông tin: Đảm bảo hệ thống và dữ liệu được bảo vệ khỏi các mối đe dọa và tấn công mạng. Công việc bao gồm phân tích rủi ro, triển khai các biện pháp bảo mật và phản ứng với các sự cố bảo mật. Mức lương trung bình cho một chuyên gia bảo mật thông tin (3-5 năm kinh nghiệm) dao động từ 25 triệu đến 45 triệu đồng mỗi tháng.
  • Lập trình viên game: Thiết kế và phát triển các trò chơi điện tử, bao gồm việc lập trình, thiết kế đồ họa và phát triển cơ chế chơi game. Mức lương trung bình cho lập trình viên game tại Việt Nam thường từ 20 triệu đến 40 triệu đồng mỗi tháng. Đối với các công ty game quốc tế có thể nhận được mức lương cao hơn, đặc biệt là khi có kỹ năng thiết kế đồ họa và phát triển cơ chế chơi game.
  • Kỹ sư hệ thống và mạng: Quản lý và duy trì hệ thống máy tính và mạng, đảm bảo chúng hoạt động ổn định và hiệu quả. Mức lương trung bình cho vị trí này dao động từ 18 triệu đến 35 triệu đồng mỗi tháng.
  • Nhà nghiên cứu công nghệ: Thực hiện nghiên cứu và phát triển các công nghệ mới trong lĩnh vực Khoa học Máy tính, góp phần vào sự tiến bộ của ngành công nghệ. Một nhà nghiên cứu công nghệ tại Việt Nam thường sẽ có mức lương từ 20 triệu đến 45 triệu đồng mỗi tháng khi làm việc ở các viện nghiên cứu.
  • Giảng viên Công nghệ thông tin: Nếu bạn thích nghiên cứu và đam mê giảng dạy thì đây là hướng đi phù hợp cho bạn, để trở thành giảng viên bạn cần tiếp tục học thạc sĩ Khoa học máy tính để tích lũy các kiến thức chuyên sâu của ngành. Mức lương trung bình cho giảng viên công nghệ thông tin tại các trường đại học và cao đẳng thường từ 15 triệu đến 30 triệu đồng mỗi tháng. Giảng viên với học vị thạc sĩ hoặc tiến sĩ, và có kinh nghiệm giảng dạy hoặc nghiên cứu chuyên sâu thường nhận được mức lương cao hơn.

Tổng hợp việc làm Khoa học máy tính mới nhất tại TopDev

Học Khoa học máy tính ở đâu?

Ở TP. Hồ Chí Minh, có các trường đi đầu trong ngành Khoa học máy tính như:

  • Trường ĐH Bách khoa – ĐH Quốc Gia TP.HCM
  • Trường ĐH Khoa học tự nhiên – ĐH Quốc Gia TP.HCM
  • Trường ĐH Công nghệ thông tin – ĐH Quốc Gia TP.HCM
  • Trường ĐH Tôn Đức Thắng

Top các trường đào tạo Công nghệ thông tin tốt nhất TPHCM

Còn ở Hà Nội có các lựa chọn như Đại học Công nghệ và Đại học Bách khoa Hà Nội.

Khám phá chi tiết các trường có ngành công nghệ thông tin tại đây!

Các câu hỏi thường gặp

Con gái học Khoa học Máy tính được không?

Chắc chắn rồi! Ngành Khoa học Máy tính không phân biệt giới tính và hoàn toàn chào đón cả nam và nữ. Trên thực tế, ngày càng có nhiều nữ sinh viên và chuyên gia thành công trong lĩnh vực này. Các công ty công nghệ hàng đầu như Google, Microsoft và Facebook đều có các nhóm kỹ thuật đa dạng về giới tính. Những người phụ nữ trong ngành công nghệ thường đóng vai trò quan trọng và góp phần vào sự phát triển đổi mới của lĩnh vực này. Do đó, nếu bạn là nữ và có đam mê với máy tính và công nghệ, bạn hoàn toàn có thể theo đuổi và thành công trong ngành Khoa học Máy tính.

Đọc thêm: Con gái có nên học CNTT? Các ngành IT phù hợp với nữ

Học Khoa học Máy tính có cần giỏi toán không?

Khoa học Máy tính có mối liên hệ chặt chẽ với toán học, đặc biệt là trong các lĩnh vực như lập trình, thuật toán, và phân tích dữ liệu. Sự hiểu biết vững chắc về toán học có thể giúp bạn nắm bắt các khái niệm cơ bản như cấu trúc dữ liệu, thuật toán và các mô hình tính toán. Tuy nhiên, không phải lúc nào bạn cũng cần phải là một thiên tài toán học để học tốt ngành này. Nhiều trường hợp, khả năng tư duy logic và sự kiên trì trong việc giải quyết vấn đề có thể bù đắp cho việc không có nền tảng toán học mạnh mẽ ngay từ đầu. Nếu bạn không giỏi toán, nhưng có sự đam mê và sẵn sàng học hỏi, bạn vẫn có thể đạt được thành công trong Khoa học Máy tính bằng cách tập trung vào các kỹ năng cần thiết và cải thiện khả năng toán học của mình qua thời gian.

Cấp 3 học dở tin học có học được Khoa học Máy tính không?

Việc học tin học ở cấp 3 không phải là yếu tố quyết định duy nhất đến khả năng học Khoa học Máy tính. Nếu bạn không học tốt tin học ở cấp 3, đừng lo lắng; bạn vẫn có thể theo học ngành này. Nhiều sinh viên đến với Khoa học Máy tính mà không có nền tảng vững chắc trong tin học từ trước. Các chương trình đào tạo đại học thường cung cấp các khóa học cơ bản để bạn có thể bắt đầu từ những kiến thức nền tảng. Điều quan trọng là sự đam mê và cam kết học hỏi của bạn. Nếu bạn thực sự quan tâm và sẵn sàng bỏ thời gian và công sức để cải thiện kỹ năng của mình, bạn hoàn toàn có thể học tốt và thành công trong ngành Khoa học Máy tính, bất chấp kết quả học tập trước đây của bạn trong tin học.

Đọc tiếp tại đây: Không biết gì về máy tính có nên học CNTT?

Xem ngay các tin tuyển dụng IT mới nhất tại TopDev

Tìm hiểu về mảng và hằng trong PHP

mảng và hằng trong PHP

Bài viết được sự cho phép của tác giả Thầy Long Web

Mảng và hằng trong PHP hướng dẫn bạn cách sử dụng mảng. Cách khai báo và sử dụng hằng trong PHP.

Mảng trong PHP

Trong PHP, mảng là loại biến đặc biệt. Mỗi mảng có thể chứa nhiều giá trị. Các giá trị trong mảng được đánh chỉ số (index) hoặc được đặt tên (còn gọi là key).

Khai báo mảng trong php

Có 2 cách khai báo mảng trong PHP đó là dùng dùng cú pháp array() hoặc dùng ngoặc vuông []. Ví dụ:

<?php
  $nam = array(1258, 1285, 1288, 981);
  $ct = ['Đông Bộ Đầu','Hàm Tử','Chương Dương','Bạch Đằng'];
?>
<pre>
<?php print_r($nam); ?> 
<?php var_dump($ct); ?>
</pre>

Mảng $nam có 4 phần tử, được đánh chỉ số từ 0 đến 3. Mảng $ct có 5 phần tử, đánh chỉ số từ 0 đến 4.

Hiện nhanh các phần tử của mảng

Muốn quan sát nhanh mảng (thường dùng khi debug), bạn  dùng hàm print_r hoặc var_dump. Hàm print_r cho kết quả ngắn gọn hơn, var_dump cho biết kiểu dữ liệu của từng phần tử.

Mảng và hằng trong PHP
hiện nhanh mảng với lệnh print_r và var_dump

Truy xuất phần tử của mảng

Có thế truy xuất phần tử của mảng thông qua index của nó để lấy ra giá trị hoặc đổi giá trị mới. Ví dụ:

<?php
  $x = $nam[2] ; // 1288
  $nam[3] =  1428 ; // 981 => 1428
?>

Truy xuất phần tử của mảng

Thêm phần tử vào mảng

Bạn thực hiện thêm bằng cách gán giá trị phần tử mới thông qua index của nó hoặc thêm phần tử vào cuối mảng bằng cách dùng []

<?php
  $nam[4] =  1789 ;
  $nam[] = 1945 ;  
?>
Thêm phần tử vào mảng

Mảng liên kết – các phần tử có tên

Mảng trong PHP rất hay, bạn có thể đặt tên cho các phần tử trong mảng. Tên của phần tử gọi là key của nó. Dùng mũi tên kép (=>) để diễn tả tên phần tử và giá trị phần tử (key=>value)

<?php 
  $sp = array('id' => 3, 'tensp'=>'Gạo', 'gia'=>23000);
?>
<?php print_r($sp); ?> <hr>
<?php  
  $user = [ 'un'=>'lấplánh','pass'=>'123' , 'tuoi'=> 18]; 
?>
<?php print_r($user); ?>
Mảng liên kết – các phần tử có tên

  Quét mảng hiệu quả với hàm reduce trong Javascript

  Ôn tập chi tiết về database trong lập trình PHP

Truy xuất phần tử của mảng

Có thế truy xuất phần tử của mảng liên kết thông qua key của nó để lấy ra giá trị hoặc đổi giá trị mới. Ví dụ:

<?php
  $x = $sp['tensp'] ; // Gạo
  $sp['gia'] =  32000 ; // 23000 => 32000
?>
Truy xuất phần tử của mảng

Thêm phần tử vào mảng

Thêm phần tử vào mảng ghì Bạn gán giá trị phần tử thông qua key của nó

<?php
  $sp['soluong'] =  8 ; 
?>
Thêm phần tử vào mảng

Mảng hỗn hợp(mixed array)

Bạn có thể cho các phần tử củamảng đánh theo chỉ số và cả theo key, mảng thế này gọi là mảng hỗn hợp.

<?php  
  $user = [ 'luom', '123' , 'un'=>'luom','pass'=>'123']; 
?>
<?php 
  echo $user[0] , $user['un']; //luomluom
?>

Mảng nhiều chiều (multi-dimensional array)

Trong nhiều trường hợp phức tạp, mỗi phần tử của mảng lại là 1 mảng, đây gọi là mảng 2 chiều. Trong PHP, bạn có thể tạo các mảng nhiều chiều.

<?php  
  $sach = [  
      [ 'ten'=>'Mùi Hương Trầm', 'gia'=>12000],
      [ 'ten'=>'Sống chậm đợi nắng lên', 'gia'=>78000],
      [ 'ten'=>'Nói với tuổi 20', 'gia'=>65000]
  ]; 
?>
<pre> <?php print_r($sach); ?> </pre>
<?php  
  $cacphuongtrinhb2 = [  
      [ 2,   9,  1 ],
      [ 1 ,  4, -2]
  ]; 
?>
<pre> <?php print_r($cacphuongtrinhb2); ?> </pre>
Mảng nhiều chiều

Truy xuất phần tử trong mảng nhiều chiều

<?php
   $b = $cacphuongtrinhb2[0][1] ;//9
   $c = $cacphuongtrinhb2[1][2] ;//-2
   echo $t = $sach[1]['gia'] ; //78000
?>

Tham khảo việc làm PHP lương cao tại TopDev

Hằng trong PHP (constant)

Tiếp theo của bài học mảng và hằng trong PHP là HẰNG. Vậy hằng là gì? Hằng (constant) là một biến với giá trị không thay đổi trong suốt quá trình thực thi file .php  Bạn có 2 cách để tạo hằng là dùng lệnh const hoặc defined

<?php
   const TYGIA = 24000;
   define('BASE_URL', 'http://localhost/banhang/'); 
   define('DB_NAME', 'tintuc'); 
   const NGAY = ['CN','T2','T3','T4','T5','T6','T7'];
?>

Const được sử dụng để tạo hằng toàn cục (global constant). Hằng toàn cục có thể được truy cập bất kỳ đâu trong file .php sau khi nó được xác định.  Còn define có thể tạo hằng toàn cục và cục bộ.

Giá trị hằng có thể là bất kỳ kiểu nào: int, float, string, array hoặc bool, giá trị hằng có thể là một biểu thức.

<?php 
  echo "<p>Giá vàng: " , GIAVANG ,"</p>"; //5950000
  echo "<h4> Tiền Việt= " . TYGIA*10 . "</h4>"; //240000
  echo NGAY[1]; //T2
?>

Để kiểm tra hằng đã tồn tại hay chưa, ta dùng hàm defined

<?php 
if (defined('TYGIA')==false) 
   echo "<h4> Tiền Việt= " . TYGIA*10 . "</h4>"; //240000
else 
   echo 'Chưa biết tỷ giá';
?>

Chúng ta đã học qua hai thứ rất hay dùng: đó là mảng và hằng trong PHP. Mảng giúp lưu nhiều giá trị chung trong biến, ứng dụng của nó rất nhiều khi có nhiều giá trị có cùng ngữ nghĩa.

Còn hằng cũng thế, hầu như website nào cũng dùng đến. Sử dụng hằng để khai báo các cấu hình chung cho website, cấu hình database, hoặc các giá trị toàn cục sử dụng nhiều lần trong toàn bộ website.

Bài viết gốc được đăng tải tại longnv.name.vn

Xem thêm:

Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev

Top 10 framework NodeJS tốt nhất cho developer 2024

Top 10 framework NodeJS tốt nhất cho developer

Node.js là một công cụ không thể thiếu đối với lập trình viên nhờ khả năng xử lý bất đồng bộ mạnh mẽ và hiệu suất cao. Tuy nhiên, để tối ưu hóa quá trình phát triển và xây dựng các ứng dụng mạnh mẽ, việc lựa chọn framework phù hợp là vô cùng quan trọng. Bài viết này sẽ giới thiệu và phân tích top 10 framework NodeJS đang được ưa chuộng nhất, giúp các lập trình viên có cái nhìn tổng quan và lựa chọn công cụ phù hợp nhất cho dự án của mình.

Vì sao framework NodeJS được nhiều người lựa chọn?

Framework Nodejs được nhiều lập trình viên lựa chọn nhờ hiệu suất cao và khả năng mở rộng tuyệt vời. Sử dụng mô hình bất đồng bộ và event-driven architecture, Node.js tối ưu hóa việc xử lý nhiều yêu cầu cùng lúc, giúp tăng cường hiệu năng.

framework NodeJS

Một lợi thế lớn khác là Node.js cho phép sử dụng JavaScript trên cả server và client, giảm bớt phức tạp và tăng tính nhất quán trong mã nguồn. Điều này giúp lập trình viên dễ dàng hơn trong việc phát triển và duy trì ứng dụng.

Ngoài ra, Node.js còn được hỗ trợ bởi cộng đồng lớn, với nhiều thư viện hữu ích qua npm, giúp đẩy nhanh tốc độ phát triển ứng dụng. Các framework như Express.js và Nest.js cung cấp các công cụ mạnh mẽ, giúp lập trình viên phát triển ứng dụng nhanh chóng và dễ dàng hơn.

Node.js cũng được các công ty công nghệ hàng đầu như Netflix, Uber và LinkedIn tin dùng, chứng tỏ độ tin cậy và khả năng của mình trong việc xử lý các ứng dụng quy mô lớn và phức tạp. Nhờ những ưu điểm này, Node.js trở thành lựa chọn hàng đầu cho các lập trình viên khi phát triển ứng dụng web và thời gian thực.

Top 10 framework NodeJS phổ biến nhất 2024

1. Express.js

Express.js

Express.js là một framework web nhẹ và linh hoạt cho Node.js, được thiết kế để phát triển nhanh chóng các ứng dụng web và API. Express.js nổi bật với cấu trúc đơn giản, giúp lập trình viên dễ dàng tạo ra các ứng dụng một cách nhanh chóng mà không cần phải xử lý quá nhiều cấu hình.

Các tính năng nổi bật của Express.js bao gồm hệ thống định tuyến mạnh mẽ, hỗ trợ middleware linh hoạt, cho phép xử lý các yêu cầu HTTP một cách hiệu quả. Nó cũng tích hợp dễ dàng với nhiều cơ sở dữ liệu khác nhau và hỗ trợ đa nền tảng, giúp phát triển các ứng dụng web phức tạp một cách dễ dàng.

Các công ty lớn trên thế giới như Twitter, Uber, Accenture, IBM,… đang triển khai các ứng dụng được xây dựng bằng Express.

2. Hapi.js

Hapi.js

Hapi.js là một framework mạnh mẽ và linh hoạt cho Node.js, được thiết kế để xây dựng các ứng dụng web và dịch vụ API. Được phát triển bởi Walmart Labs, Hapi.js nổi bật với các tính năng như cấu trúc plugin linh hoạt, giúp dễ dàng mở rộng và tùy chỉnh ứng dụng theo nhu cầu cụ thể. Nó hỗ trợ xác thực và ủy quyền mạnh mẽ, cùng với các công cụ kiểm tra và xử lý lỗi tích hợp, đảm bảo bảo mật và độ tin cậy cao cho các ứng dụng.

Hapi.js cũng cung cấp một hệ thống định tuyến mạnh mẽ và rõ ràng, cho phép tạo ra các đường dẫn phức tạp một cách dễ dàng. Với tính năng quản lý cấu hình mạnh mẽ, Hapi.js giúp lập trình viên dễ dàng kiểm soát và tối ưu hóa hiệu suất của ứng dụng. Nhờ vào các tính năng này, Hapi.js trở thành lựa chọn lý tưởng cho việc phát triển các ứng dụng web và API an toàn, đáng tin cậy và dễ bảo trì.

3. NestJS

NestJS là một framework NodeJS mạnh mẽ, được thiết kế để xây dựng các ứng dụng web và API server-side hiệu quả. NestJS sử dụng TypeScript, mang lại lợi ích cho việc kiểm tra lỗi tại thời điểm biên dịch và cấu trúc mã rõ ràng, dễ bảo trì.

NestJS tích hợp sẵn các công cụ như Dependency Injection, giúp quản lý và tái sử dụng mã dễ dàng hơn. Nó cũng hỗ trợ nhiều thư viện và công nghệ khác như GraphQL, WebSockets, và các ORM như TypeORM và Sequelize. Nest được các công ty lớn sử dụng như Adidas, Decathlon, Roche, BMW, IBM,…

  So sánh Nodejs với PHP: Nên chọn công nghệ web nào?

  So sánh Golang và NodeJS: Nên chọn nền tảng nào cho dự án của bạn?

4. Koa.JS

Koa.JS

Koa.js là một framework web tối giản và hiện đại cho Node.js, được thiết kế để xây dựng các ứng dụng web và API hiệu quả. Phát triển bởi đội ngũ đứng sau Express.js, Koa.js cung cấp một nền tảng nhẹ và linh hoạt, không đi kèm với các middleware tích hợp sẵn, giúp lập trình viên dễ dàng tùy chỉnh và tối ưu hóa theo nhu cầu cụ thể của dự án.

5. Fastify

Fastify là một NodeJS framework web hiệu suất cao, tập trung vào tốc độ và hiệu quả. Nó được thiết kế để xây dựng các ứng dụng web và API với độ trễ thấp. Fastify nổi bật với khả năng xử lý requests cực nhanh, hỗ trợ TypeScript, và hệ thống plugin linh hoạt.

Ngoài ra, framework NodeJS này còn cung cấp validation schema tích hợp, serialization JSON hiệu quả, và logging mạnh mẽ. Với cú pháp đơn giản và khả năng mở rộng cao, Fastify phù hợp cho cả các dự án nhỏ lẫn ứng dụng quy mô lớn đòi hỏi hiệu suất tối ưu. Nó cũng hỗ trợ tốt cho việc phát triển microservices và tích hợp dễ dàng với các công nghệ hiện đại khác trong hệ sinh thái Node.js.

6. MeteorJS

MeteorJS

Meteor.js là một framework full-stack JavaScript mạnh mẽ cho phép xây dựng ứng dụng web và mobile thời gian thực. Nổi bật với khả năng đồng bộ dữ liệu tự động giữa client và server, Meteor.js cho phép phát triển nhanh chóng các ứng dụng phản hồi tức thì. Framework này tích hợp sẵn các công cụ phát triển, quản lý package và triển khai, giúp đơn giản hóa quy trình phát triển.

Bên cạnh đó, với tính năng hot code push, các thay đổi được cập nhật ngay lập tức mà không cần làm mới trang. Meteor.js cũng hỗ trợ tốt việc xây dựng ứng dụng di động đa nền tảng thông qua tích hợp với Cordova. Đặc biệt phù hợp cho các dự án cần tương tác realtime như ứng dụng chat, game trực tuyến, hoặc dashboard cập nhật liên tục.

Tuyển NodeJS lương cao hấp dẫn cho bạn

7. Sail.js

Sails.js là một framework MVC mạnh mẽ cho Node.js, được thiết kế để tạo ra các ứng dụng web và API có khả năng mở rộng cao. Nó nổi bật với khả năng xây dựng nhanh chóng các ứng dụng thời gian thực và RESTful API. Các tính năng chính của Sails.js bao gồm ORM tích hợp để làm việc với nhiều cơ sở dữ liệu, hỗ trợ WebSocket mạnh mẽ cho ứng dụng thời gian thực, và cấu trúc MVC rõ ràng.

Framework NodeJS này cũng cung cấp generator tự động để tạo mã boilerplate, giúp tăng tốc quá trình phát triển. Sails.js đặc biệt phù hợp cho các dự án cần xây dựng nhanh, có yêu cầu realtime, và muốn một giải pháp “full-stack” trong hệ sinh thái JavaScript.

8. Derby.js

Derby.js là một framework JavaScript toàn diện cho phép xây dựng ứng dụng web thời gian thực. Nó tập trung vào việc tạo ra các ứng dụng đa người dùng với khả năng đồng bộ hóa dữ liệu mạnh mẽ. Các tính năng nổi bật bao gồm: mô hình MVC đồng bộ giữa client và server, hỗ trợ realtime mặc định, routing phía client và server, và khả năng render ứng dụng ở cả phía máy chủ lẫn trình duyệt.

Derby.js đặc biệt phù hợp cho các ứng dụng cần cập nhật dữ liệu nhanh chóng và liên tục như các công cụ cộng tác trực tuyến, ứng dụng chat, hoặc bảng điều khiển thời gian thực. Framework này giúp đơn giản hóa quá trình phát triển các ứng dụng web phức tạp với trải nghiệm người dùng mượt mà và hiệu suất cao.

9. Total.js

Total.js

Total.js là một framework NodeJS toàn diện, cung cấp giải pháp đầy đủ cho phát triển web và ứng dụng. Nó nổi bật với hiệu suất cao, không phụ thuộc và tính linh hoạt. Total.js hỗ trợ phát triển nhanh các ứng dụng web, RESTful APIs, và real-time systems.

Tính năng nổi bật bao gồm routing linh hoạt, hệ thống template tích hợp, WebSocket support, và ORM tích hợp. Framework này cũng cung cấp các công cụ để quản lý static files, xử lý form, và bảo mật. Đặc biệt, Total.js có module hệ thống cho phép mở rộng dễ dàng và tối ưu hóa code. Với cấu trúc MVC rõ ràng và tài liệu phong phú, Total.js phù hợp cho cả dự án nhỏ và lớn, đặc biệt là các ứng dụng yêu cầu hiệu suất cao và khả năng tùy chỉnh linh hoạt.

10. Loopback.js

LoopBack.js là một NodeJS framework mạnh mẽ để xây dựng API và microservices. Nó cho phép lập trình viên tạo ra các ứng dụng backend nhanh chóng với ít code hơn. Tính năng nổi bật của LoopBack bao gồm tạo API RESTful tự động, hỗ trợ đa dạng các cơ sở dữ liệu, tích hợp OpenAPI, và khả năng mở rộng thông qua hệ thống components.

Ngoài ra, framework NodeJS này cũng cung cấp công cụ CLI mạnh mẽ, hỗ trợ xác thực và ủy quyền, cũng như khả năng tạo tài liệu API tự động. LoopBack đặc biệt phù hợp cho các dự án cần phát triển API nhanh chóng, có yêu cầu tích hợp nhiều nguồn dữ liệu khác nhau và cần khả năng mở rộng cao.

Các câu hỏi thường gặp về framework NodeJS

NodeJS được sử dụng cho frontend hay backend?

Node.js chủ yếu được sử dụng cho phát triển backend. Nó cung cấp môi trường runtime để chạy mã JavaScript trên server, xử lý các yêu cầu HTTP, quản lý cơ sở dữ liệu và thực hiện các tác vụ server-side. Mặc dù Node.js không phải là công cụ trực tiếp cho frontend, nó có thể hỗ trợ phát triển frontend thông qua các công cụ build và quản lý gói như Webpack, Babel, và npm.

Node.JS có phải là một framework không?

Không, Node.js không phải là một framework. Node.js là một môi trường runtime cho JavaScript, cho phép chạy mã JavaScript trên server. Các framework như Express.js, Koa.js, và NestJS là các công cụ được xây dựng trên nền tảng Node.js để hỗ trợ phát triển ứng dụng web.

Kết luận

Việc lựa chọn framework phù hợp là yếu tố quyết định trong việc phát triển ứng dụng Node.js hiệu quả. Mỗi framework NodeJS trong danh sách top 10 mà TopDev đã giới thiệu đều có những đặc điểm và ưu điểm riêng, từ hiệu suất cao, khả năng mở rộng đến sự linh hoạt và hỗ trợ mạnh mẽ. Tùy thuộc vào yêu cầu và mục tiêu cụ thể của dự án, bạn có thể chọn framework phù hợp nhất để tối ưu hóa quá trình phát triển và đảm bảo ứng dụng của bạn hoạt động tốt nhất.

Hy vọng bài viết này đã cung cấp cho bạn cái nhìn tổng quan hữu ích để đưa ra quyết định sáng suốt trong việc lựa chọn công cụ phát triển cho dự án của mình. Theo dõi TopDev để cập nhật thêm nhiều bài viết lập trình hữu ích nhé!

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev

Ôn tập chi tiết về database trong lập trình PHP

Ôn tập chi tiết về database trong lập trình PHP

Bài viết được sự cho phép của tác giả Thầy Long Web

Ôn tập database trong lập trình php nhắc bạn nhớ các kiến thức liên quan đến database để dùng trong lập trình web php.

CÁC KHÁI NIỆM CƠ BẢN VỀ DATABASE

Dữ liệu là gì?

Dữ liệu là các thông tin cần lưu trữ để sử dụng lại

Cơ sở dữ liệu (database)

Cơ sở dữ liệu là các dữ liệu được lưu trữ có tổ chức

Hệ quản trị cơ sở dữ liệu

Là các chương trình giúp quản lý và tổ chức cơ sở dữ liệu. Ví dụ: MySQL, SQL Server

Hệ quản trị cơ sở dữ liệu

MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, hoạt động trên nhiều hệ điều hành.

Table

Mỗi table là 1 bảng dữ liệu, chứa một mảng thông tin nào đó. Mỗi table có tên, nhiều cột và nhiều hàng.

Mỗi dòng của table là một đơn vị dữ liệu cần lưu trữ, ví dụ như 1 tin, 1 câu hỏi bình chọn, 1 user.

Mỗi cột của table gọi là 1 field hay trường.  Dữ liệu trong một cột thuộc một kiểu xác định nào đó, như char, date, int…

Bạn tạo table khi cần quản lý danh sách các dữ liệu nào đó. Ví dụ: tạo table sanpham để chứa danh sách các sản phẩm, tạo table ykien để chứa danh sách các bình luận, table users chứa danh sách các người dùng.

Ví dụ : cần quản lý danh sách khách hàng, bạn tạo table KhachHang

Quảng cáo
id HoTen NgaySinh ĐiểmTíchLũy Active Tỉnh  
1 Mai Thanh Toán 1/4/2001 24 false HCM
2 Mai Anh Tới 2/1/2000 7 true HN
3 Mai Chủ Nhật 7/2/2001 93 false null
4 Hứa Đi Anh 9/2/2001 63 true HN
5 Đào Công Sự 6/4/2002 80 true HCM
6 Phạm Kỷ Luật 2/3/2000 0  true null

Khoá chính

Khóa chính là field đặc biệt trong table, các giá trị trong field này không bao giờ trùng nhau. Khoá chính có thể gồm nhiều field nhưng thường là một field.

Khóa chính (primary key) được tạo ra để quản lý các record trong table, giá trị trong khóa chính dùn để nhận dạng một record nào đó trong table. Ví dụ: trong table KhachHang ở trên, field id được dùng làm khóa chính vì các giá trị trong đó không trùng nhau. Người có mã là 3 chỉ có 1 người duy nhất là Mai Chủ Nhật.

Vì tính chất không được trùng giá trị trong field dùng làm khóa chính, cho nên khi tạo bảng, bạn nên chỉ định thuộc tính tự động tăng cho field này, để khỏi phải nhập và đảm bảo các giá trị trong đó không bao giờ trùng lặp.

Khoá ngoại

Khóa ngoại là cột trong table mà dữ liệu trong nó tham khảo đến khoá chính ở 1 table khác, các giá trị trong field khóa ngoại không được gõ tùy ý mà chỉ nhập những giá trị có trong khóa chính tương ứng.

Trong mỗi table có thể có nhiều field khoá ngoại, mỗi khóa ngoại tham chiếu đến 1 khóa chính ở bảng khác.

  Ưu và nhược điểm của các loại Database phổ biến hiện nay

  Cách sử dụng cookie trong PHP

Các thuộc tính của field

Mỗi field trong table có một số đặc điểm hay thuộc tính mà bạn cần chỉ định lúc tạo table:

  • Null (Yes/No) : cho/không cho giá trị null trong field.
  • Default: đặc điểm này để quy định giá trị mặc định cho field, giá trị này sẽ được dùng khi chèn 1 dòng mới mà cột này không có giá trị.
  • Comment: đặc điểm dùng để ghi chú cho field.
  • Auto Increment  (Yes/No) : cho field tự động tăng giá trị khi chèn dòng mới.
  • Type: kiểu của dữ liệu của field. Field này chứa số, chữ, ngày, hay giờ… bạn chỉ định cho đúng nhé. Các kiểu dữ liệu xem bên dưới nhé.
  • Length: độ lớn của dữ liệu trong field.

Các kiểu dữ liệu của field trong MySql

Kiểu chuỗi

  • CHAR : dùng khi field chỉ chứa chữ, độ dài cố định. Ví dụ: nếu mọi giá trị trong field là chữ và có 9 ký tự thì bạn dùng kiểu char và cho length của field là 9
  • VARCHAR: dùng khi field chỉ chứa chữ, độ dài không cố định. Ví dụ: field hoten chứa chữ, độ dài không cố định, tối đa 30 ký tự thì bạn dùng kiểu varchar và cho length của field là 30.
  • VARBINARY  và BINARY: Gần giống như Char và Varchar nhưng chứa những binary strings (char, varchar là none binary string). Dữ liệu binary không có character set, do đó việc sort và compare sẽ chỉ dựa trên giá trị các byte được lưu. Độ dài của chuỗi cũng tính bằng số byte (Char, varchar tính bằng số ký tự)
  • TEXT và BLOB: chứa text có độ dài lớn. BLOB values chứa các binary string không có character set nên việc sorting và comparison chỉ dựa trên giá trị các byte. TEXT có character set, và việc sorting và comparison sẽ dựa theo collation của character set được dùng.

Tham khảo việc làm MySQL Hồ Chí Minh hấp dẫn

Kiểu Ngày tháng

  • DateTime: Lưu dữ liệu kiểu ngày giờ. Có giá trị từ ‘1000-01-01 00:00:00’  đến ‘9999-12-31 23:59:59’.
  • Date: Lưu dữ liệu kiểu ngày. Có giá trị từ 1000-01-01 đến 9999-12-31
  • TimeStamp: là 1 số nguyên diễn tả 1 thời điểm, giá trị là số giây tính từ giây đầu tiên của năm 1970.
  • Time: Lưu giờ. Hiển thị theo kiểu ‘HH:MM:SS’
  • Year: Lưu năm

Kiểu số

Field kiểu số chỉ chứa số, dùng khi cần tính toán cộng trừ nhân chia. Khi dùng kiểu số cho field, bạn có thể dùng các kiểu sau: tinyint, smallint, int, bigint (số nguyên), float, double (số thực)

Type Bytes Minimum Value Maximum Value
TINYINT 1 -128 127
SMALLINT 2 -32768 32767
MEDIUMINT 3 -8388608 8388607
INT 4 -2147483648 2147483647
BIGINT 8 -9223372036854775808 9223372036854775807

Mối quan hệ giữa các table

Hai table có quan hệ với nhau khi dữ liệu trong chúng là bổ sung cho nhau. Có ba loại quan hệ giữa hai table:

Quan hệ 1-1: khi 1 record bên table A có quan hệ với 1 record bên table B và ngược lại.
Quan hệ 1-nhiều: khi 1 record bên table A có quan hệ với nhiều record bên table B.
Quan hệ nhiều-nhiều: khi 1 record ở table A có quan hệ với nhiều record bên table B & ngược lại.

Trong thực tế, bạn sẽ gặp nhiều nhất là loại quan hệ 1-nhiều. Hai table A và B có quan hệ 1-nhiều với nhau khi table A có field khóa chính và table B có field khóa ngoại tương ứng với khóa chính ở bên A.

Storage Engine

MySQL có nhiều cách tổ chức lưu dữ liệu cho các table, như MyISAM, InnoDB, Memory,…  Bạn thường gặp nhất là hai loại MyISAM và InnoDB.

MyISAM là cách tổ chức table mặc định của MySQL. Mỗi table theo kiểu MyISAM sẽ được lưu trên 3 file : tableName.FRM (chứa thuộc tính của bản thân table), tableName.MYD (lưu dữ liệu của table), tableName.MYI (lưu các index của table) . Ví dụ: table users dùng MyISAM được lưu trên 3 file users.FRM,  users.MYD và users.MYI.

Storage Engine

MyISAM hỗ trợ full-text searches còn InnoDB thì không

InnoDB là cách tổ chức table có hỗ trợ transaction (commit, rollback) để bảo vệ dữ liệu. InnoDB hỗ trợ relationship còn MyISAM thì không. Mỗi table theo kiểu InnoDB sẽ được lưu trên 2 file : tableName.FRM (chứa thuộc tính của bản thân table), tableName.IBD (lưu dữ liệu của table). Ví dụ: table tin dùng InoDB được lưu trên 2  file tin.FRM  và tin.IBD

Storage Engine

NGÔN NGỮ SQL

Ngôn ngữ sql là các cây lệnh bạn dùng để tương tác vào dữ liệu trong database, như chèn thêm dữ liệu vào table, chỉnh sửa dữ liệu trong table, xóa dữ liệu trong các table, lấy ra dữ liệu từ các table để xử lý….Sau đây là một số câu lệnh quan trọng cần nhớ.

1. Chèn dữ liệu vào table

Muốn chèn dữ liệu vào table thì bạn dùng lệnh Insert into với cú pháp như sau:

INSERT INTO tbl_name (field1, field2,…) VALUES (val1, val2,…)

Ví dụ:

INSERT INTO khachhang  (hoten, NgaySinh, DiemTichLuy) VALUES (' Mai Thanh Toán', '1/4/2001', 24)

2. Chỉnh dữ liệu trong table

Muốn chỉnh dữ liệu trong table thì dùng lệnh update với cú pháp thế này:

UPDATE tbl_name SET  field1=value1, field2=value2,… WHERE condition

Ví dụ:

UPDATE khachhang SET hoten ='Đào Được Vàng',  NgaySinh ='10/3/2000' WHERE id=5

3. Xoá dữ liệu trong table

Muốn xóa dữ liệu trong table thì dùng lệnh Delete from theo cú pháp như sau:

DELETE FROM tbl_name WHERE condition

Ví dụ:

DELETE FROM  khachhang WHERE id=5

4. Lấy dữ liệu từ table

Lấy dữ liệu từ table là lệnh thường dùng nhất, bạn dùng lệnh Select theo cú pháp như sau:

SELECT  * | colname1, colname2
FROM  tbl_name1, table_name2
WHERE  DieuKienKetBang | DieuKienLoc
GROUP BY colname1, colname2
HAVING DieuKienLocTheoNhom
ORDER BY colname1 ASC|DESC, colname2 ASC|DESC
LIMIT offset, rowcount

Ví dụ 1:  Lấy các record từ bảng tin trong hôm nay

SELECT idTin, TieuDe FROM tin WHERE Ngay=curdate()

Ví dụ 2 : Lấy 10 tin mới

SELECT idTin, TieuDe FROM tin ORDER BY Ngay DESC LIMIT 0,10

Ví dụ 3 : Lấy 10 tin được xem nhiều nhất

SELECT idTin, SoLanXem, TieuDe FROM tin ORDER BY SoLanXem DESC LIMIT 0,10;

Ví dụ 4 : Lấy các dòng dữ liệu trong bảng tin mà tiêu đề có chứa a

SELECT idTin, Ngay, TieuDe FROM tin WHERE TieuDe LIKE 'C%'

Ví dụ 5:  select có kết bảng

SELECT idTin, Ngay, TieuDe, Ten
FROM tin, loaitin
WHERE tin.idLT= loaitin.idLT AND TieuDe like '%a%'
ORDER BY Ngay DESC, idTin DESC

Ví dụ 6:  select lồng nhau (lấy các tin trong ngày mới nhất)

SELECT Ngay, TieuDe FROM tin WHERE  Ngay >= All (SELECT Ngay FROM tin)

Ví dụ 7: Lấy dữ liệu ngẫu nhiên

select idTin, TieuDe FROM tin ORDER BY rand() LIMIT 0,3;

Ví dụ 8 : Thống kê từng user đã nhập bao nhiêu tin

SELECT  idUser, count(idTin) as SoTin FROM tin GROUP BY idUser

Ví dụ 9 : Thống kê  theo loại tổng số lần xem tin

SELECT loaitin.idLT, Ten, sum (solanxem) as TongSoLanXem
FROM tin, loaitin WHERE tin.idLT=loaitin.idLT GROUP BY loaitin.idLT, Ten

Ví dụ 10 : Hiện  năm, tháng, Số đơn đặt hàng, Tổng số lượng, Tổng tiền. Chỉ chọn những đơn hàng đã giao, sắp xếp theo Năm, Tháng giảm dần

SELECT year(Ngay) as Nam, month(Ngay) as Thang, count(idTin) as SoTin, sum (SoLanXem) as TongSoLanXem
FROM tin
GROUP BY Nam , Thang
ORDER BY Nam DESC, Thang DESC

5. Các phép toán trong sql

Các phép toán gồm :   AND,  && , OR  ,||, NOT, BETWEEN … AND…,  IN, NOT

Ví dụ 1: Dùng phép toán between

SELECT idTin,TieuDe, Ngay FROM tin
WHERE Ngay BETWEEN '2010-01-01' AND '2010-01-31' ORDER BY Ngay ASC

Ví dụ 2: Lấy các bài viết trong các loại 1,3,9 (Sử dụng phép toán in)

SELECT idTin, TieuDe, idLT FROM tin WHERE idLT IN ( 1, 9, 3 ) ORDER BY idTin DESC

6. Các hàm trong MYSQL

a. Các hàm trong phát biểu GROUB BY

Sum: Trả về tổng các giá trị của cột
AVG: Trả về giá trị bình quân của cột
MIN: Trả về giá trị nhỏ nhất của cột                    
MAX: Trả về giá trị lớn nhất của cột        
Count: Trả về số lượng record

b. Các hàm xử lý chuỗi trong mysql

– Char: Chuyển đổi kiểu mã ASCII từ số nguyên sang dạng chuỗi. Ví dụ:

SELECT char(35)  // Kết quả:  #

– Upper: chuyển đổi chuỗi sang kiểu chữ hoa

SELECT UPPER(tieude) FROM tin 

– Lower: chuyển đổi chuỗi sang kiểu chữ thường:

SELECT LOWER(tieude) FROM tin 

– Length: Trả về chiều dài của chuỗi:

SELECT Length(tieude) as SoKyTu, tieude FROM tin 

– Left: lấy n ký tự bên trái của chuỗi

SELECT left(tieude, 40) as tieude FROM tin ;

– Right: lấy n ký tự bên phải chuỗi

SELECT idTin,tieude FROM tin WHERE right(tieude, 1) ='c'

c. Các hàm về xử lý thời gian trong mysql

– curdate(): Trả về ngày, tháng và năm hiện hành

SELECT idTin,tieude FROM tin WHERE Ngay =curdate()

– dayofmonth: trả về ngày thứ mấy trong tháng:

Select dayofmonth(curdate()) as homnay

– month: Trả về giá trị tháng

SELECT idTin,tieude FROM tin WHERE month(Ngay)=3

– Year: Trả về giá trị năm

SELECT idTin,tieude FROM tin WHERE year(Ngay)=2010

–  STR_TO_DATE: Chuyển chuỗi thành dạng ngày giờ của MysQL

SELECT STR_TO_DATE('01/05/2013','%d/%m/%Y');    è 2013-05-01

– UNIX_TIMESTAMP : Hàm trả về số giây từ giây đầu tiên của năm 1970 đếm hiện tại

SELECT  UNIX_TIMESTAMP();

Bài viết gốc được đăng tải tại longnv.name.vn

Xem thêm:

Xem thêm tuyển dụng các vị trí IT hấp dẫn trên TopDev

Router là gì? Hiểu Vuejs Router qua thực hành một dự án

Router là gì? Hiểu Vuejs Router qua thực hành một dự án

Bài viết được sự cho phép bởi tác giả Sơn Dương

Vue thực sự là một thư viện JS tuyệt vời để xây dựng các ứng dụng web, đặc biệt là ứng dụng SPA (Single Page Application). Bài viết trước, mình đã giới thiệu về Vue, các cài đặt cũng bước đầu tạo một ứng dụng web với Vue. Phần này, mình tiếp tục giới thiệu Vuejs Router, một module router chính thức của Vue.

Vue Router là module được tích hợp sâu vào Vue, giúp bạn dễ dàng tạo các route cho ứng dụng.

Để bạn có thể hiểu được đầy đủ về Vuejs router và thực hành thuần thục, chúng ta sẽ cùng nhau tìm hiểu khái niệm trước.

#Router là gì? Vuejs router có tính năng gì hay ho?

Khi làm việc với các ứng dụng back-end thì các bạn sẽ thấy router thực chất là định nghĩa cách url để ứng dụng điều hướng tới đúng hàm, đúng component xử lý nó.

Ví dụ nhé:

GET /login/facebook -> login()
POST api/upload -> uploadImage()
DELETE api/post/{id} -> deletePost(id)

Nhiều người cứ nhầm tưởng ứng dụng front-end thì không cần router, nhưng thực tế là đã nhầm.

Giờ đây, các ứng dụng front-end kiểu SPA thì cũng được thiết kế theo mô hình MVC, cũng đầy đủ các thành phần, và cả router nữa.

Vue route có rất nhiều tính năng, ngoài tính năng chính là route thì nó còn hỗ trợ thêm các tính năng đặc trưng của ứng dụng front-end, có thể kể đến như:

  • Hỗ trợ mapping lồng nhau route/view
  • Route params, query, wildcards.
  • Hỗ trợ liên kết với CSS một cách tự động
  • Là một fine-grained Navigation
  • Hỗ trợ tùy chỉnh hành vi Scroll của người dùng.

Và còn nhiều thứ hay ho khác nữa, chúng ta sẽ khám phá dần dần.

#Thực hành với Vuejs Router

Đầu tiên, các bạn tạo mới một dự án bằng Vue CLI. Cách làm thì mình đã có hẳn một bài viết riêng rồi, các bạn đọc lại nhé: Tạo dự án bằng Vue CLI

Sau khi đọc xong bài viết trên thì quay lại bài này, gõ lệnh sau để tạo dự án:

vue create vueroute

Kết quả được như sau:

Tạo dự án mới với Vue CLI

Sau khi tạo xong thì giờ chúng ta sử dụng Visual Code để mở dự án hoặc viết code chay thui.

cd vueroute

1. Cài đặt Vuejs Router

Mặc dù bạn có thể cài đặt luôn Vue router khi bạn tạo mới dự án bằng Vue CLI. Nhưng nếu bạn đã lỡ quên, thì hoàn toàn có thể cài đặt riêng.

npm install vue-router --save

Ở thời điểm mình cài đặt thì vue router có phiên bản 3.0.2, bởi vì đây là phiên bản mới nhất. Còn lúc bạn cài đặt có thể version nó khác nhé.

Nào, bây giờ mình sẽ import router vào ứng dụng. Các bạn mở main.js

// main.js

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

2. Vuejs Router cơ bản

Ở trong thư mục src, bạn tạo một file router.js  và thêm đoạn code sau:

// routes.js

const routes = [];

export default routes;

Mình muốn tạo riêng một fiel router.js , để trong tương lai sẽ đặt tất cả các router vào đây thay vì viết trong main.js

Giờ thì trong main.js, bạn cần phải import file router.js ở trên.

// main.js

import Vue from 'vue';
import App from './App.vue';
import VueRouter from 'vue-router';

import routes from './routes';

Vue.config.productionTip = false;

Vue.use(VueRouter);

new Vue({
 render: h => h(App),
 routes
}).$mount('#app');

3. Tạo Vuejs router component

Phần tiếp theo, mình sẽ tạo 3 component bên trong thư mục src-> components

  • Home.vue
  • Register.vue
  • Login.vue

Các bạn tham khảo code tương ứng cho 3 component bên dưới:

// Home.vue

<template>
    <div>
        Home
    </div>
</template>
<script>
export default {

}
</script>
// Register.vue

<template>
    <div>
        Register
    </div>
</template>
<script>
export default {

}
</script>
// Login.vue

<template>
    <div>
        Login
    </div>
</template>
<script>
export default {

}
</script>

Giờ mình sẽ import tất cả các components vào routes.js

// routes.js

import Home from './components/Home.vue';
import Register from './components/Register.vue';
import Login from './components/Login.vue';

const routes = [
    { path: '/', component: Home },
    { path: '/register', component: Register },
    { path: '/login', component: Login },
];

export default routes;

Bước tiếp theo, mình sẽ tạo một Router instance và truyền vào đối tượng router. Chúng ta chỉnh lại main.js một chút

// main.js

import Vue from 'vue';
import App from './App.vue';
import VueRouter from 'vue-router';

import routes from './routes';

Vue.config.productionTip = false;

Vue.use(VueRouter);

const router = new VueRouter({routes});

new Vue({
    router,
    render: h => h(App)
}).$mount('#app');

Ngoài ra, chúng ta cũng cần phải hiển thị các router component dựa trên routes. Để làm điều này, mình thêm <router-view> component vào App.vue

// App.vue

<template>
  <div id="app">
    <nav>
        <router-link to='/'>Home</router-link>
        <router-link to='/register'>Register</router-link>
        <router-link to='/login'>Login</router-link>
    </nav>
    <router-view />
  </div>
</template>

<script>
export default {
}
</script>

Như vậy, chúng ta đã hoàn thành tạo một bộ điều hướng cơ bản sử dụng <router-link> để di chuyển giữa các màn hình thông qua navigator.

Thử chạy ứng dụng rồi kiểm tra trên trình duyệt nhé.

npm run serve

Bạn mở trình duyệt rồi vào địa chỉ: http://localhost:8080Trình duyệt tự động điều hướng sang http://localhost:8080/# và hiển thị màn hình home.

Ở đây, mình sử dụng Hash routing, một kỹ thuật rất phổ biến cho các ứng dụng SPA.

4. Sử dụng Vue HTML 5 History Mode Routing

Mặc định thì Vue sử dụng chế độ hash route. Bạn hiểu nôm na là thanh URL của browser chỉ có thêm ký tự #, và không thay đổi trong suốt quá trình điều hướng ứng dụng.

Ngoài ra, Vue còn có chế độ route khác nữa, kiểu history như các trang web bình thường.

Để bật chế độ hostory route mode, chúng ta cần chỉnh lại khai báo với Vue Router trong main.js

// main.js

const router = new VueRouter({mode: 'history', routes});

Chỉ có thế thôi, giờ bạn có thể điều hướng các màn hình mà không có ký tự hash.

5. Route động trong Vue.js

Ở đoạn code trước, chúng ta hiển thị các component dựa trên các URL. Tuy nhiên, các URL vẫn hầu như là không thay đổi trong mỗi màn hình.

Ví dụ: Màn hình hiển thị thông tin một sinh viên. Với cách làm cũ, khi query để hiển thị thông tin, mọi sinh viên đều có một URL.

http://localhost:8080/student => sinh viên này cũng sử dụng chung URL này.

Để có thể thay đổi URL tương ứng với mỗi sinh viên, kiểu như này:

http://localhost:8080/student/4 => Hiển thị thông tin sinh viên có ID=4
http://localhost:8080/student/5 => Hiển thị thông tin sinh viên có ID=5

Chúng ta cần làm như sau, đầu tiên là tạo một component Student.vue

// Student.vue

<template>
    <div>
        Student
    </div>
</template>
<script>
export default {

}
</script>

Giờ thì import nó vào routes.js và đăng ký với main.js

// main.js

import Home from './components/Home.vue';
import Register from './components/Register.vue';
import Login from './components/Login.vue';
import Student from './components/Student.vue';

const routes = [
    { path: '/', component: Home },
    { path: '/register', component: Register },
    { path: '/login', component: Login },
    { path: '/student/:id', component: Student },
];

export default routes;

Ở đoạn code trên, chúng ta đã truyền id của mỗi sinh viên vào router.

Bên trong sinh viên component,  chúng ta cần refenence tới router bằng ký tự $: $route. Giờ bạn sửa component Student.vue như sau:

// Student.vue

<template>
    <div>
        Student ID is: {{ $route.params.id }}
    </div>
</template>
<script>
export default {

}
</script>

Bạn thử restart lại vue và kiểm tra thành quả nhé.

Lưu ý: Sau khi bạn gọi hàm Vue.use() bên trong main.js và truyền router object, thì bất kể component nào trong app đều có truy xuất được giá trị các object như.

  • this.$router: router object.
  • this.$route: route object hiện tại.

6. Đặt tên cho các route trong Vue.js

Chúng ta có thể đơn giản hóa việc điều hướng các màn hình khác nhau thông qua việc đặt tên các route cho dễ nhớ.

Để làm được điều này, bạn chỉ cần thêm thuộc tính name trong lúc định nghĩa một route.

ví dụ:

// routes.js

const routes = [
    { path: '/', component: Home, name: 'home' },
    { path: '/register', component: Register, name: 'register' },
    { path: '/login', component: Login, name: 'login' },
    { path: '/student/:id', component: Student, name: 'student' },
];

Sau đó, bạn có thể sử dụng name của các route, ví dụ trong App.vue

// App.vue

<template>
  <div id="app">
    <nav>
      <ul>
        <li>
            <router-link :to="{name: 'home'}">Home</router-link>
        </li>
        <li>
            <router-link :to="{name: 'register'}">Register</router-link>
        </li>
        <li>
            <router-link :to="{name: 'login'}">Login</router-link>
        </li>
        <li>
            <router-link :to="{name: 'student', params: {id: 2}}">Student</router-link>
        </li>
      </ul>
    </nav>
    <router-view />
  </div>
</template>

<script>
export default {
}
</script>

Tạo dự án mới với Vue CLI

7. Redirecting trong ứng dụng

Với các ứng dụng SPA, chúng ta cần phải thực hiện chuyển hướng tự động sau khi hoàn thành một tác vụ. Ví dụ, sau khi người dùng đăng nhập thành công, bạn cần chuyển hướng ứng dụng về màn hình Home.

Chúng ta tạo thêm một component đặt tên là Redirect.vue

// Redirect.vue

<template>
    <div></div>
</template>
<script>
export default {
    mounted() {
        this.$router.push('/home');
    }
}
</script>

Như đoạn code trên, khi component được mounted, thì ứng dụng sẽ chuyển hướng (redirecting) về màn hình Home

Nhớ là bạn cần import component vào trong file routes.js và đăng ký trong main.js nhé

// main.js

import Home from './components/Home.vue';
import Register from './components/Register.vue';
import Login from './components/Login.vue';
import Student from './components/Student.vue';
import Redirect from './components/Redirect.vue';

const routes = [
    { path: '/', component: Home, name: 'home' },
    { path: '/register', component: Register, name: 'register' },
    { path: '/login', component: Login, name: 'login' },
    { path: '/student/:id', component: Student, name: 'student' },
    { path: '/redirect', component: Redirect, name: 'redirect' },
];

export default routes;

Để kiểm tra chương trình, bạn vào trình duyệt mở thử  http://localhost:8080/redirect 

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev

Tìm hiểu về JOIN trong SQL: Các loại JOIN thường được sử dụng

JOIN trong SQL

Thao tác JOIN là một kiến thức cơ bản trong SQL giúp chúng ta có thể kết hợp dữ liệu từ nhiều bảng khác nhau dựa theo những điều kiện cụ thể. Có nhiều loại JOIN phục vụ cho từng mục đích mà bạn cần hiểu rõ để có thể áp dụng đúng để xử lý một câu lệnh SQL hiệu quả. Bài viết hôm nay chúng ta cùng nhau tìm hiểu chi tiết về JOIN trong SQL và cụ thể cách sử dụng từng loại JOIN để có thể lấy được dữ liệu mong muốn khi truy vấn nhé.

JOIN trong SQL

Trong ngôn ngữ truy vấn có cấu trúc (SQL – Structured Query Language), JOIN là một thao tác được sử dụng để kết hợp hay nối (join) dữ liệu từ nhiều bảng có liên quan lại với nhau để tập hợp chúng thành kết quả mong muốn. Như ở ví dụ dưới đây, chúng ta có 2 bảng: 1 bảng chứa dữ liệu tên học sinh, 1 bảng chứa dữ liệu về môn học mà học sinh đấy đăng ký; chúng có liên kết với nhau bởi Student ID. Câu lệnh JOIN giúp chúng ta tạo ra được 1 bảng kết quả chứa danh sách gồm cả tên học sinh và môn học đăng ký.

JOIN trong SQL

Thao tác JOIN thường được sử dụng trong lệnh SELECT và đi kèm với điều kiện JOIN thông qua khai báo ON. Cú pháp như sau:

SELECT * FROM bang1 INNER JOIN bang2 ON bang1.cotId = bang2.cotId;

Trong đó:

  • INNER JOIN: khai báo loại JOIN muốn thực hiện
  • ON: khai báo mối liên hệ giữa các bảng, thông thường được định nghĩa trước theo khóa ngoài (foreign key)

Các loại JOIN trong SQL

Tùy thuộc vào mục đích lấy ra kết quả mong muốn, chúng ta có một số loại JOIN như dưới đây. Nó khá tương đồng với các phép toán tập hợp giúp bạn có thể nhớ dễ dàng hơn. Ví dụ như FULL OUTER JOIN là phép hợp, INNER JOIN chính là phép giao.

Các loại JOIN trong SQL

Chúng ta cùng đi chi tiết vào các loại JOIN trong SQL nhé. Để dễ hiểu và thực hành, hãy thao tác trực tiếp trên 2 bảng ví dụ sau đây:

Bảng 1: Tên khách hàng

Customer ID Last Name
Gee 
Harris 
Carreras 
29485  Abel 
29486  Abercrombie 
29489  Adams

 

Bảng 2: Thành phố

Customer ID City
29485  Van Nuys 
29486  Branch 
29489  Modesto 

1. INNER JOIN

INNER JOIN trả về các bản ghi có giá trị khớp trong cả 2 bảng.

Cú pháp: 

SELECT * FROM Name (INNER) JOIN City ON Name.CustomerID = City.CustomerID

Kết quả nhận được:

Customer ID  Last Name City
29485  Abel  Van Nuys 
29486  Abercrombie  Branch 
29489  Adams  Modesto 

Lưu ý: INNER JOIN giống với JOIN, từ khóa INNER là optional, bạn có thể thêm vào hoặc không.

2. LEFT JOIN/ RIGHT JOIN

LEFT JOIN trả về tất cả các bản ghi từ bảng bên trái và các giá trị thỏa mãn điều kiện từ bảng bên phải. Nếu không có giá trị thỏa mãn được tìm thấy, giá trị NULL sẽ được gán cho nó. Ngược lại với LEFT JOIN thì RIGHT JOIN sẽ lấy tất cả các bản ghi từ bảng bên phải kết hợp với các giá trị thỏa mãn điều kiện từ bảng bên phải.

Cú pháp:

SELECT * FROM Name LEFT JOIN City ON Name.CustomerID = City.Customer 

SELECT * FROM City RIGHT JOIN Name ON Name.CustomerID = City.CustomerID

Ở đây bảng bên trái được hiểu là bảng có tên khai báo trước từ khóa JOIN, bảng bên phải sẽ nằm sau từ khóa JOIN. 

Kết quả nhận được từ LEFT JOIN:

Customer ID Last Name City
Gee  Null
Harris  Null
Carreras  Null
29485  Abel  Van Nuys 
29486  Abercrombie  Branch 
29489  Adams Modesto 

Kết quả nhận được từ RIGHT JOIN:

Customer ID  City Last Name
29485  Van Nuys  Abel 
29486  Branch  Abercrombie 
29489  Modesto  Adams 

Một vài lưu ý khi bạn sử dụng LEFT JOIN/ RIGHT JOIN:

  • LEFT OUTER JOIN giống với LEFT JOIN, tương tự RIGHT OUTER JOIN giống với RIGHT JOIN; từ khóa OUTER là optional. Nó cũng giúp bạn phân biệt giữa INNER JOIN (nối trong) và OUTER JOIN (nối ngoài)
  • LEFT JOIN và RIGHT JOIN hoàn toàn có thể thay thế cho nhau tùy vào thứ tự, vị trí bảng trái và bảng phải trong câu lệnh SQL. Tuy vậy bạn không nên nhầm lẫn 2 thao tác này vì nó có thể cho ra kết quả với kích thước bản ghi hoàn toàn khác nhau nếu giữa nguyên vị trí bảng bên trái và bảng bên phải.

  Sao lưu và phục hồi dữ liệu trong SQL server

  So sánh RDBMS và NoSQL. Nên sử dụng loại CSDL nào cho dự án của bạn?

3. FULL JOIN

FULL JOIN hay FULL OUTER JOIN trả về tất cả các record có trong 2 bảng với các bản ghi được kết hợp theo điều kiện đầu vào, nếu không tìm thấy giá trị tương ứng sẽ được set bằng NULL. Có thể xem [FULL JOIN] = [LEFT JOIN]  union [RIGHT JOIN].

Cú pháp:

SELECT * FROM City FULL JOIN Name ON Name.CustomerID = City.CustomerID

Kết quả nhận được:

Customer ID Last Name City
Gee  null 
Harris  null 
Carreras  null 
29485  Abel  Van Nuys 
29486  Abercrombie  Branch 
29489  Adams  Modesto 

4. CROSS JOIN

CROSS JOIN trả về mọi tổ hợp các bản ghi kết hợp từ cả 2 bảng, hay nó chính là tích Descartes của 2 bảng. Số lượng bảng ghi kết quả = tích giữa 2 số lượng của 2 bảng (Ví dụ trên sẽ sinh ra 6 * 3 = 18 bản ghi).

Cú pháp:

SELECT * FROM Name CROSS JOIN City

Kết quả nhận được:

Customer ID Last Name City
Gee  Van Nuys 
Gee  Branch 
Gee  Modesto 
Harris  Van Nuys 
Harris  Branch 
Harris  Modesto 
Carreras  Van Nuys 
Carreras  Branch 
Carreras  Modesto 
29485  Abel  Van Nuys 
29485  Abel  Branch 
29485  Abel  Modesto 
29486  Abercrombie  Van Nuys 
29486  Abercrombie  Branch 
29486  Abercrombie  Modesto 
29489  Adams  Van Nuys 
29489  Adams  Branch 
29489  Adams  Modesto

Thực tế thì CROSS JOIN ít khi được sử dụng vì giá trị trả về không có nhiều ý nghĩa; ngoài ra nó có thể sinh ra kết quả có kích thước rất lớn, chiếm nhiều bộ nhớ. Vì vậy hãy lưu ý trước khi sử dụng CROSS JOIN.

Tham khảo việc làm SQL hấp dẫn

5. Các loại JOIN khác

Ngoài INNER JOIN, OUTER JOIN thì chúng ta còn có 1 số loại JOIN khác ít được dùng hơn như:

  • SELF JOIN: Một bảng được JOIN với chính nó
  • NATURE JOIN: Tương tự INNER JOIN nhưng không khai báo điều kiện ON mà sử dụng việc liên kết theo tên bảng. NATURE JOIN hỗ trợ với PostgreSQL
  • LEFT JOIN EXCLUDE/ RIGHT JOIN EXCLUDE: Thực hiện LEFT JOIN/ RIGHT JOIN mà không muốn lấy phần INNER JOIN. Thực tế thì không có riêng loại JOIN này, bạn có thể dễ dàng thực hiện nó bằng việc thêm điều kiện WHERE Key IS NULL để lọc bỏ những record chung.
  • FULL JOIN EXCLUDE: Thực hiện FULL JOIN và bỏ đi phần INNER JOIN, xử lý tương tự loại ở trên

Kết bài

Qua bài viết trên, hy vọng các bạn đã nắm được một cách chi tiết nhất về thao tác JOIN trong SQL cùng các loại JOIN thường được sử dụng. JOIN được sử dụng thường xuyên trong truy vấn dữ liệu và trong nhiều xử lý cơ bản khác với SQL, vì vậy bạn cần nắm chắc và sử dụng đúng loại JOIN để tối ưu hóa chương trình chạy. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.

Tác giả: Phạm Minh Khoa

Xem thêm:

Xem thêm tuyển dụng các vị trí IT hấp dẫn trên TopDev

Học React qua 10 dự án thực tế từ A đến Z

Học React qua 10 dự án thực tế từ A đến Z

Bài viết được sự cho phép bởi tác giả Sơn Dương

Để học React, bạn có rất nhiều cách như: học qua tài liệu chính chủ, học qua sách, video., khóa học online/offline… Với ReactJS, một trong những cách được ưu chuộng là học qua các dự án ví dụ thực tế.

Khi đọc mã nguồn của một dự án, bạn sẽ tìm ra nguyên tắc và phương pháp của tác giải để giải quyết một vấn đề. Điều này sẽ giúp bạn học được kỹ năng phân tích và giài quyết vấn đề trong các dự án thực tế.

Bài viết này, mình sẽ giới thiệu 10 dự án ReactJS để bạn tìm hiểu.

Nhưng trước khi đọc, bạn đến tìm hiểu cơ bản trước về React. Ít nhất bạn cũng nên biết trước về cú pháp React, states, props, component.v.v…

Phương pháp học React qua dự án thực tế

Nếu chỉ đơn giản bạn clone một dự án trên github về, bạn không biết cách học thì cũng không có hiệu quả.

Dưới đây là một số mẹo hay để bạn học được nhiều điều từ các dự án.

1. Mỗi thời điểm chỉ tìm hiểu 1 dự án

Vì có rất nhiều dự án mã nguồn mở hay ho trên Github nên thường bạn sẽ choáng ngợp, mình cũng thế.

Nhưng, khi bạn thực sự muốn học hỏi từ dự án đó, bạn đừng bào giờ học cùng một lúc tất cả những dự án đó. Bộ não của chúng ta không được thiết kế để làm việc đa nhiệm đâu.

Bạn nên tiến hành chọn lọc và chỉ chọn một dự án mà bạn thực sự muốn học. Sau khi học xong dự án đó, bạn có thể chuyển sang dự án khác, lúc đó vẫn chưa muộn mà.

2. Sao chép kiến thức chứ không phải chỉ có copy-paste code

Với mỗi dự án, bạn nghĩ rằng, bạn chỉ đọc qua và học hỏi nó chỉ bằng cách copy code của họ là xong? Bạn hơi nhầm!

Bạn nên tự mình viết lại nó, dù chậm nhưng sẽ hiệu quả hơn rất nhiều.

3. Luôn đặt câu hỏi: Tại sao

Trong quá trình tự viết lại code của họ, bạn sẽ gặp những đoạn code khó hiểu, hay còn lạ lẫm với bạn?! Điều này cũng rất hay gặp thôi, kể cả với bản thân mình cũng vậy.

Nếu điều  đó xảy ra, bạn hãy tò mò tìm hiểu vì sao đoạn code hoạt động? Tại sao họ lại viết như vậy?

Khi bạn tìm ra được câu trả lời, kiến thức của bạn cũng đồng thời tăng lên đáng kể đấy.

4. Thử nghiệm thêm những tính năng của riêng bạn

Trong quá trình tìm hiểu, bạn thấy một số chỗ code lạ lẫm, bạn thử sửa đổi chúng xem chúng còn hoạt động hay không? Tất nhiên, nếu có hoạt động hay không thì cũng phải tìm hiểu lý do nhé.

Cuối cùng, khi bạn hiểu cơ bản về dự án đó, bạn hãy thêm một vài tính năng dựa trên mã nguồn của dự án đó.

5. Kiên nhẫn và tập trung

Điều cuối cùng nhưng không kém phần quan trọng: Luôn luôn kiên nhẫn và tập trung

Việc học không bao giờ là đơn giản, do vậy, bạn cần phải luôn kiên nhẫn, cố gắng từng chút một. Dù mát thời gian nhưng nó rất đáng giá với bạn, cho tương lai của bạn sau này.

Cố gắng nhé!

Giới thiệu 10 dự án để bạn học ReactJS

Sau đây là những dự án mà bạn có thể học hỏi. Mình sắp xếp theo trình độ từ dễ tới khó nhé.

Luôn nhớ: Tại một thời điểm chỉ chọn một dự án để học thôi nhé.

1. Simple React To-do App

Simple React To-do App
https://github.com/kabirbaidhya/react-todo-app

Một ứng dụng Todo đơn giản. Thông qua dự án này, bạn sẽ hiểu các khái niệm cơ bản của React.

2. Calculator

Calculator
https://github.com/ahfarmer/calculator

Ứng dụng máy tính cá nhân này sẽ giúp bạn tìm hiểu những khái niệm logic trong Javascript và React.

3. BMI Calculator

BMI Calculator
https://github.com/GermaVinsmoke

Thông qua dự án này, bạn sẽ tìm hiểu về cách sử dụng Hooks

4. Snapshot

Snapshot
https://github.com/Yog9/SnapShot

Thông qua dự án này, bạn sẽ hiểu rõ hơn về 3 khái niệm: React Hooks, Context API và React Router.

  Một số custom hooks hay sử dụng cho React

  8 thư viện Date Pickers tốt nhất cho React

5. TMDb Movie Search

TMDb Movie Search
https://github.com/SKempin/reactjs-tmdb-app

Với dự án này, bạn sẽ làm việc với REST API, cách kết nối và sử dụng kết quả trả về từ API.

6. React Redux To-do App (Full-stack)

React Redux To-do App (Full-stack)
https://github.com/r-park/todo-react-redux

Một dự án khác về Todo, nhưng sẽ có nhiều tính năng nâng cao hơn như: tính năng xác thực, database với firebase,v.v…

Xem thêm các việc làm React hấp dẫn lương cao

7. Netflix Clone

Netflix Clone
https://github.com/AndresXI/Netflix-Clone

Với dự án này, bạn sẽ được nâng cao kỹ năng về thiết kế giao diện với React để tạo một trang web hiện đại.

8. React Redux Real World Example

React Redux Real World Example
https://github.com/gothinkster/react-redux-realworld-example-app

Dự án này sẽ giúp bạn thực hành rất nhiều về Redux, một thư viện quản lý state phổ biến.

9. SoundCloud Redux

SoundCloud Redux
https://github.com/r-park/soundcloud-redux

Sau khi thực hành xong dự án số 8, bạn sẽ tiếp tục nâng cao kiến thức về Redux thông qua dự án này. Đây là dự án kết hợp giữa Redux + Redux-Saga

10. Crate – Ecommerce Starter

Crate – Ecommerce Starter
https://github.com/atulmy/crate

Dự án cuối cùng cũng là dự án nâng cao, kết hợp của nhiều kiến thức từ Node, Express, React, React Native, Redux tới GraphQL. Bạn hoàn thành được dự án này coi như đã thành thạo React.

Chúc bạn học React tốt!

Bài viết gốc được đăng tải tại vntalking.com

Xem thêm:

Xem thêm việc làm ngành IT hàng đầu tại TopDev

Ajax trong Jquery – Các hàm trong jquery tạo request ajax

Ajax trong Jquery

Bài viết được sự cho phép của tác giả Thầy Long Web

Giới thiệu ajax

  • AJAX là từ viết tắt của Asynchronous JavaScript and XML
  • Ajax là kỹ thuật giúp bạn tải dữ liệu từ server mà không cần refresh trình duyệt.
  • Gmail, google map là các website điển hình sử dụng kỹ thuật ajax.

Ajax trong jquery

jQuery có nhiều hàm giúp bạn tạo các request AJAX đến server. Mục đích để thực hiện tương tác ngầm với server và lấy dữ liệu về hiện trong trang web. Bạn có thể request text, html, xml, json từ server thông qua cá phương thức get và post.

Các hàm trong jquery tạo request ajax

Method Description
$.ajax() Performs an async AJAX request
$.get() Loads data from a server using an AJAX HTTP GET request
$.getJSON() Loads JSON-encoded data from a server using a HTTP GET request
$.getScript() Loads (and executes) a JavaScript from a server using an AJAX HTTP GET request
$.post() Loads data from a server using an AJAX HTTP POST request
load() Loads data from a server and puts the returned data into the selected element
serialize() Encodes a set of form elements as a string for submission

Sử dụng hàm load trong jquery

Hàm load của jquery giúp bạn tạo một request ajax tới 1 trang web trên server. Khi nội dung từ server đổ về, dữ liệu sẽ nạp vào selector đã chọn. Đây là request dạng get

Cú pháp hàm load trong jquery

$(selector).load( url, data , [callback] );
$(selector).load(url, data , function(response,status,xhr) )
  • url – Là địa chỉ của trang web trên server cần request . Các trang này có thể là ASP, JSP, PHP…
  • data – tham số dành cho trang web trong url, theo cấu trúc key=value&key=value. Ví dụ  lang=vi&idSP=5. Nếu trang url không cần tham số thì bạn bỏ qua tham số data
  • callback – là hàm được gọi sau khi dữ liệu từ url đã trả về
  • response: là data đổ về từ server
  • status: trạng thái tử server đổ về cho biết kết quả thực thi trang web url  (success, notmodified, error, timeout, parsererror )
  • xhr: chính là đối tượng xmlhttprequest

Thực tập sử dụng hàm load trong jquery

a. Có trang hamload.html như sau:

<meta charset="utf-8">
<style>#data {min-height:200px;width:400px;background:#9CC;border:double 2px #033;padding:10px}</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<p>
  <input type="button" name="txn" id="txn" value="Tin xem nhiều" />
  <input type="button" name="tnb" id="tnb" value="Tin nổi bật" />
</p>
<div id="data"></div><input id="tt">

b. Gọi ajax với hàm load, không dùng callback

<script>
    $(document).ready(function(){
        $("#txn").click(function(){
            $("#data").load("txn.html");
        })
        $("#tnb").click(function(){
            $("#data").load("tnb.html");
        })   
    });
</script>

c. Gọi ajax với hàm load, có dùng hàm callback

<script>
    $(document).ready(function(){
        $("#txn").click(function(){
            $("#data").load("txn.html", function(){ $("#tt").before("<p>Đã nạp xong</p>") });
        })
        $("#tnb").click(function(){ $("#data").load("tnb.html", xong);  })   
    });
    function xong(codehtml, status){
        document.getElementById("tt").value=status;
        alert(codehtml);
    }
</script>

Trang txn.html

<p><a href="#">Giá và chất lượng gạo, ai đi đến cùng với người dân? </a></p>
<p><a href="#">Hoàng hôn trên sông Mê Kông </a></p>
<p><a href="#">Độc đáo núi Cấm </a></p>
<p><a href="#">Báo chí quốc tế nói gì về sự kiện Calisto? </a></p>
<p><a href="#">Mười bí quyết cho hạnh phúc </a></p>
<p><a href="#">Khánh Hòa sẽ đăng cai Hoa Hậu Hoàn vũ 2008 </a></p>
<p><a href="#">Hạnh phúc là gì ? </a></p>
<p><a href="#">Làm sao chiên cơm cho ngon </a></p>
<p><a href="#">Bữa cơm nghèo trong cơn sốt gạo </a></p>
<p><a href="#">Mặt bằng giá mới sau cơn sốt gạo </a></p>

Trang tnb.html

<p><a href="#">Washington sẵn sàng cho lễ nhậm chức</a></p>
<p><a href="#">Cầu dây văng made in VN đầu tiên được khánh thành  </a></p>
<p><a href="#">Cái đầu vàng của Công Vinh  </a></p>
<p><a href="#">Việt Nam muôn năm!  </a></p>
<p><a href="#"> Việt Nam vô địch Đông Nam Á  </a></p>
<p><a href="#">Việt Nam vô địch AFF Cup 2008: Giấc mơ thành hiện thực  </a></p>
<p><a href="#">Kéo lá cờ khổng lồ vào Mỹ Đình  </a></p>
<p><a href="#">Tiền đạo Nguyễn Việt Thắng: Dỡ bỏ áp lực cho Calisto  </a></p>
<p><a href="#">Thắng tại Thái Lan, Việt Nam đứng trước cơ hội vô địch  </a></p>
<p><a href="#">Dễ và Khó</a></p>

  Lập trình web cơ bản với Javascript jQuery

  Cách sử dụng các plugins jQuery trong VueJS

Hàm $.get

Hàm $.get của jquery giúp bạn tạo một request ajax tới 1 trang web trên server. Khi nội dung từ server đổ về, bạn sử dụng hàm callback để đón và xử lý. Request do $.get tạo ra là request dạng get

Cú pháp hàm $.get trong jquery

$.get(url);
$.get(url,function(response,status,xhr));
$.get(url, data,function(response,status,xhr))
$.get(url, data, function(response,status,xhr),dataType)
  • url – Là địa chỉ của trang web trên server cần request . Các trang này có thể là ASP, JSP, PHP…
  • data – tham số dành cho trang web trong url, theo cấu trúc key=value&key=value. Ví dụ  lang=vi&idSP=5. Nếu trang url không cần tham số thì bạn bỏ qua tham số data
  • function(data,status,xhr) – là hàm callback được gọi sau khi dữ liệu từ url đã trả về
  • response: là data đổ về từ server
  • status: trạng thái tử server đổ về cho biết kết quả thực thi trang web url
  • xhr: chính là đối tượng xmlhttprequest
  • dataType: là kiểu dữ liệu dự kiến sẽ nhận tử server, có thể là html, xml, json, text, script

Thực tập sử dụng hàm $.get trong jquery

<script>
    $(document).ready(function(){
        $("#txn").click(function(){
            $.get("txn.html","", function(d){  $("#data").html(d); } );
        })
        $("#tnb").click(function(){ 
            $.get("tnb.html", xong);  
        })   
    });
    function xong(codehtml, status){
        $("#data").html(codehtml); 
        $("#tt").val(status);
    }
</script>

Xem thêm nhiều việc làm JavaScript hấp dẫn trên TopDev

Hàm $.post

Hàm $.post của jquery giúp bạn tạo một request ajax tới 1 trang web trên server. Request này dạng post.

Cú pháp hàm $post trong jquery

$.post(url);
$.post(url,function(response,status,xhr));
$.post(url, data,function(response,status,xhr))
$.post(url, data, function(response,status,xhr),dataType)
  • url – Là địa chỉ của trang web trên server cần request . Các trang này có thể là ASP, JSP, PHP…
  • data – tham số dành cho trang web trong url, theo cấu trúc key=value&key=value. Ví dụ  lang=vi&idSP=5. Nếu trang url không cần tham số thì bạn bỏ qua tham số data
  • function(data,status,xhr) – là hàm callback được gọi sau khi dữ liệu từ url đã trả về
  • response: là data đổ về từ server
  • status: trạng thái tử server đổ về cho biết kết quả thực thi trang web url
  • xhr: chính là đối tượng xmlhttprequest
  • dataType: là kiểu dữ liệu dự kiến sẽ nhận tử server, có thể là html, xml, json, text, script

Thực tập sử dụng hàm $.post trong jquery

a. Có trang post.html như sau:

<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<div class="col-5 mx-auto border border-primary px-4 py-2 mt-4 ">
  <form name="frm1">
      <div class="form-group">
          <label>Username</label>
          <input name="u" class="form-control bg-secondary text-white">
      </div>
      <div class="form-group">
        <label>Password</label>
        <input name="p" type="password" class="form-control bg-secondary text-white">
    </div>
    <div class="form-group">
        <button id="btn1" type="button" class="btn btn-primary">Đăng nhập</button>
    </div>
    <div id="kq" class="alert alert-warning text-center"></div>
  </form>
</div>

b. Dùng hàm serialize gom dữ liệu trong form

<script>
$(document).ready(function(){
    $("#btn1").click(function(){
        var d = $("[name='frm1']").serialize();
        alert(d);
    });
});   
</script>

c. Dùng hàm $.post gửi dữ liệu trong form lên server

<script>
    $(document).ready(function(){
        $("#btn1").click(function(){
            var d = $("[name='frm1']").serialize();
            $.post("xuly.php", d, function(data) { 
                $("#kq").html(data);
             }); 
        }); 
    });   
</script>

d. File xuly.php trên server, code đơn giản như sau:

<?php
$u=$_POST['u'];
$p=$_POST['p'];
$arr=array("teo","ti");
if (in_array($u,$arr)==false) echo "Username không tồn tại";
else if ($p!="1") echo "Password không đúng";
else echo "Đăng nhập thành công";
?>

Hàm $.getJSON

Hàm $.getJSON của jquery giúp bạn tạo một request ajax tới 1 trang web trên server để nhận về dữ liệu dạng Json – Dữ liệu dạng text có cấu trúc

Cú pháp hàm $.getJSON trong jquery

$.getJSON(url, data, function(response,status,xhr))
  • url – Là địa chỉ của trang web trên server cần request . Các trang này có thể là ASP, JSP, PHP…
  • data – tham số dành cho trang web trong url, theo cấu trúc key=value&key=value. Ví dụ  lang=vi&idSP=5. Nếu trang url không cần tham số thì bạn bỏ qua tham số data
  • function(data,status,xhr) – là hàm callback được gọi sau khi dữ liệu từ url đã trả về
  • response: là data đổ về từ server
  • status: trạng thái tử server đổ về cho biết kết quả thực thi trang web url
  • xhr: chính là đối tượng xmlhttprequest
  • dataType: là kiểu dữ liệu dự kiến sẽ nhận tử server, có thể là html, xml, json, text, script

Thực tập sử dụng hàm $.getJSON trong Jquery

a. Có file Student.php thông tin sinh viên như sau:

    {
        "username": "teonv",
        "password": "iloveyou",
        "fullname": "Nguyễn Văn Tèo",
        "email": "teonv@fpt.edu.vn",
        "gender": "true",
        "birthday": "1995-12-21",
        "schoolfee": "1500000",
        "marks": "0"
    }

b. Trang html code như sau:

<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<div class="col-8 mx-auto border border-danger p-3 mt-4">
<p>
  <input type="button" id="xemds" value="Danh sách sinh viên" /> <input id="tt">
</p>
<div id="kq" class="alert alert-info"></div>
</div>

c. Dùng hàm $.getJSON request dữ liệu json về hiện trong console

script>
    $(document).ready(function(){
        $("#xemds").click(function(){
            $.getJSON("Student.php","", xuly );
        })           
    });
    function xuly(data, status){
       console.log(data); 
    }
</script>

d. Dùng hàm $.getJSON request dữ liệu json về và hiện trong trang web

<script>
    $(document).ready(function(){
        $("#xemds").click(function(){
            $.getJSON("Student.php","", xuly );
        })           
    });
    function xuly(data, status){// console.log(data);
        $.each(data, function(key, value){
            $("#kq").append("<p>"  + key + " = " + value + "</p>");
        }); 
    }
</script>

e. Dùng hàm $.getJSON để request dữ liệu json dạng mảng về hiện trong trang web

<script>
$(document).ready(function(){
    $("#xemds").click(function(){
        $.getJSON("Students.php","", xuly );
    })           
});
function xuly(data, status){// console.log(data);
    $.each(data, function(i, obj){//console.log(obj);
        $.each(obj, function(key, value){
            $("#kq").append("<p>"  + key + " = " + value + "</p>");
        }); 
        $("#kq").append("<hr>");
    })
}
</script>

Sử dụng hàm $.ajax trong jquery

Hàm $.ajax của jquery giúp bạn tạo một request ajax tới 1 trang web trên server với nhiều tham số uyển chuyển. Với hàm này, bạn có thể chỉ định kiểu request là post hay get, có thể điều khiển cache của trình duyệt …

Cú pháp hàm $.ajax trong jquery

$.ajax({name:value, name:value, ... })

Các name/value có thể dùng trong liệt kê dưới đây:

Name Value/Description
cache A Boolean value indicating whether the browser should cache the requested pages. Default is true
data Tham số dành cho trang web trong url, theo cấu trúc key=value&key=value. Ví dụ  lang=vi&idSP=5. Nếu trang url không cần tham số thì bạn bỏ qua tham số data
dataType Kiểu dữ liệu mong chờ server đáp ứng
success (result, status, xhr) Là hàm được gọi sau khi dữ liệu từ url đã trả về thành công
timeout Thời gian timeout (milliseconds) cho request
type Kiểu của (GET / POST)
url Là địa chỉ của trang web trên server cần request . Các trang này có thể là ASP, JSP, PHP…
xhr chính là đối tượng xmlhttprequest

Thực tập sử dụng hàm $.ajax trong jquery

Ví dụ 1: request với type là get

<script>
    $(document).ready(function(){
        $("#txn").click(function(){  
            $.ajax({
                url:"txn.html",
                cache:false,
                type:"get",
                success:function(d){
                    $("#data").html(d);
                },                
            })
        }) 
    });
</script>

Ví dụ 2: request với type là post

 <script>
    $(document).ready(function(){
        $("#btn1").click(function(){
            var d = $("[name='frm1']").serialize();
            $.ajax({
                url:"xuly.php",
                data:d,
                type:'post',
                cache:false,
                success:function(data) { $("#kq").html(data);} 
            }); 
        }); 
    });   
</script>

Bài viết gốc được đăng tải tại longnv.name.vn

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev

So sánh Kotlin với Flutter – Nên chọn cái nào cho lập trình Mobile?

So sánh Kotlin với Flutter

Trong lĩnh vực phát triển ứng dụng di động, việc chọn công cụ phù hợp là yếu tố quan trọng quyết định sự thành công của dự án. Kotlin và Flutter nổi lên như hai lựa chọn hàng đầu, mỗi công nghệ đều có ưu điểm riêng.

Kotlin, ngôn ngữ do JetBrains phát triển, đang được ưa chuộng trong phát triển ứng dụng Android. Flutter, framework đa nền tảng của Google, cho phép xây dựng ứng dụng cho cả iOS và Android từ một codebase. Bài viết này sẽ so sánh Kotlin với Flutter trên nhiều khía cạnh, giúp bạn đọc có cái nhìn tổng quan để lựa chọn công cụ phát triển phù hợp nhất cho dự án của mình.

Tổng quan về Kotlin

Kotlin là gì?

1. Kotlin là gì?

Kotlin là một ngôn ngữ lập trình hiện đại, tĩnh và mã nguồn mở được phát triển bởi JetBrains. Ngôn ngữ này được thiết kế để tương thích hoàn toàn với Java và JVM (Java Virtual Machine), nhưng đồng thời mang lại nhiều cải tiến và tính năng hiện đại hơn. Kotlin đã nhanh chóng trở thành một lựa chọn phổ biến trong cộng đồng phát triển ứng dụng di động, đặc biệt là kể từ khi Google công nhận Kotlin là ngôn ngữ chính thức cho phát triển Android vào năm 2017.

2. Các đặc điểm của Kotlin

Cú pháp hiện đại và dễ hiểu:

  • Kotlin có cú pháp rõ ràng, ngắn gọn và dễ hiểu, giúp giảm thiểu lượng mã cần viết và tăng hiệu quả công việc.
  • Ngôn ngữ này được thiết kế để loại bỏ nhiều boilerplate code thường thấy trong Java.

Tương thích hoàn toàn với Java:

  • Kotlin có khả năng tương thích ngược với Java, cho phép các nhà phát triển sử dụng các thư viện và framework Java hiện có mà không gặp bất kỳ vấn đề nào.
  • Việc chuyển đổi mã từ Java sang Kotlin thường rất mượt mà, nhờ vào các công cụ hỗ trợ chuyển đổi tự động.

Null Safety:

  • Kotlin được thiết kế với khả năng xử lý null an toàn, giúp tránh các lỗi NullPointerException thường gặp trong Java.
  • Hệ thống loại trừ null (null safety) của Kotlin giúp tăng tính ổn định và giảm thiểu lỗi trong quá trình phát triển.

Lập trình hướng đối tượng và hàm:

  • Kotlin hỗ trợ cả lập trình hướng đối tượng (OOP) và lập trình hàm (functional programming), cho phép các nhà phát triển lựa chọn phong cách lập trình phù hợp với nhu cầu của họ.
  • Các tính năng như lambda expressions, higher-order functions, và inline functions làm cho việc viết mã hàm dễ dàng và hiệu quả hơn.

Extension Functions:

  • Extension functions trong Kotlin cho phép thêm các chức năng mới vào các lớp hiện có mà không cần thay đổi mã nguồn của chúng.
  • Điều này giúp tăng cường khả năng tái sử dụng mã và giữ cho mã nguồn gọn gàng hơn.

  React Native hay Ionic: Đâu là lựa chọn tốt nhất để startup?

  Hành trình chuyển đổi của Elsa từ Native sang Flutter

Tổng quan về Flutter

Flutter là gì?

1. Flutter là gì?

Flutter là một framework mã nguồn mở do Google phát triển, được sử dụng để xây dựng các ứng dụng di động, web và máy tính để bàn từ một codebase duy nhất. Ra mắt lần đầu vào năm 2017, Flutter nhanh chóng trở thành một trong những công nghệ phổ biến nhất trong cộng đồng phát triển ứng dụng nhờ vào khả năng tạo ra các giao diện người dùng (UI) đẹp mắt, hiệu suất cao và nhất quán trên nhiều nền tảng.

2. Các đặc điểm của Flutter

Framework đa nền tảng:

  • Flutter cho phép phát triển ứng dụng trên nhiều nền tảng như Android, iOS, web và desktop từ cùng một codebase.
  • Điều này giúp tiết kiệm thời gian và công sức trong việc phát triển và bảo trì ứng dụng.

Ngôn ngữ lập trình Dart:

  • Flutter sử dụng Dart, một ngôn ngữ lập trình được Google phát triển, với cú pháp đơn giản và dễ học.
  • Dart cung cấp hiệu suất cao nhờ vào khả năng biên dịch (compilation) trực tiếp thành mã máy (native code).

Hiệu suất cao:

  • Flutter sử dụng công cụ đồ họa Skia, giúp render giao diện nhanh chóng và mượt mà.
  • Hiệu suất của Flutter gần như tương đương với các ứng dụng gốc (native apps), mang lại trải nghiệm người dùng tốt hơn.

Widget phong phú và tùy chỉnh:

  • Flutter cung cấp một bộ sưu tập phong phú các widget được thiết kế sẵn cho việc xây dựng giao diện người dùng.
  • Các widget này có thể được tùy chỉnh một cách dễ dàng, cho phép tạo ra giao diện độc đáo và nhất quán trên các nền tảng.

Hot Reload:

  • Tính năng Hot Reload của Flutter cho phép các nhà phát triển xem ngay lập tức các thay đổi trong mã nguồn mà không cần phải khởi động lại toàn bộ ứng dụng.
  • Điều này giúp tăng tốc quá trình phát triển và gỡ lỗi (debugging).

So sánh Kotlin với Flutter: Đâu là sự lựa chọn phù hợp?

Lựa chọn công nghệ phù hợp cho phát triển ứng dụng di động đóng vai trò then chốt trong bối cảnh công nghệ không ngừng phát triển như hiện nay. Bài viết này sẽ so sánh chi tiết hai ứng cử viên sáng giá: Kotlin và Flutter để giúp bạn đưa ra quyết định sáng suốt cho dự án của mình.

So sánh Kotlin với Flutter

1. Hiệu suất

Kotlin: Ứng dụng viết bằng Kotlin chạy trực tiếp trên nền tảng Android thông qua JVM, do đó hiệu suất tương đương với ứng dụng Java. Tối ưu cho phát triển ứng dụng Android gốc.

Flutter: Flutter sử dụng Dart và biên dịch mã nguồn thành mã gốc (native code), giúp tối ưu hiệu suất. Hiệu suất của ứng dụng Flutter trên Android và iOS thường rất tốt, nhưng vẫn có thể có một số vấn đề với các ứng dụng phức tạp hoặc cần hiệu suất cực cao.

2. Phát triển giao diện người dùng (UI)

Kotlin: Sử dụng XML để thiết kế giao diện người dùng và các công cụ Android gốc như Android Studio. Có khả năng tùy chỉnh giao diện cao nhưng có thể phức tạp hơn trong việc thiết kế.

Flutter: Sử dụng widget để xây dựng UI, mọi thứ từ thiết kế giao diện đến các thành phần UI đều được tạo từ các widget. Flutter nổi tiếng với khả năng tạo giao diện người dùng đẹp mắt và nhất quán trên nhiều nền tảng.

3. Hỗ trợ đa nền tảng

Kotlin: Kotlin Multiplatform cho phép chia sẻ mã giữa các nền tảng (Android, iOS, web), nhưng vẫn cần viết mã riêng cho từng nền tảng ở các phần UI.

Flutter: Hỗ trợ đa nền tảng từ đầu, cho phép viết một lần và chạy trên nhiều nền tảng khác nhau, giúp tiết kiệm thời gian và công sức phát triển.

4. Cộng đồng và tài liệu hỗ trợ

Kotlin: Có một cộng đồng lớn và đang phát triển mạnh, với nhiều tài liệu học tập và thư viện hỗ trợ. JetBrains và Google đều cung cấp nhiều tài nguyên và hỗ trợ.

Flutter: Cộng đồng Flutter cũng đang phát triển nhanh chóng, với sự hỗ trợ mạnh mẽ từ Google. Nhiều tài liệu học tập, plugin và thư viện có sẵn.

5. Tích hợp và mở rộng

Kotlin: Tích hợp tốt với các công cụ và thư viện Java hiện có, dễ dàng sử dụng trong các dự án Android hiện tại. Kotlin cũng hỗ trợ nhiều plugin và thư viện của bên thứ ba.

Flutter: Có một kho plugin phong phú để mở rộng tính năng, tuy nhiên, một số chức năng gốc có thể yêu cầu viết mã gốc (native code) để tích hợp.

6. Hiệu suất phát triển và bảo trì

Kotlin: Thích hợp cho các dự án Android gốc với hiệu suất cao, bảo trì dễ dàng nhờ sự tương thích với Java. Tuy nhiên, phát triển đa nền tảng có thể phức tạp hơn.

Flutter: Tăng tốc độ phát triển nhờ khả năng hot reload và viết mã một lần cho nhiều nền tảng. Tuy nhiên, có thể cần thêm thời gian để học và làm quen với framework và ngôn ngữ Dart.

Các câu hỏi thường gặp

1. Nên học Kotlin hay Flutter trước?

Quyết định nên học Kotlin hay Flutter trước tùy thuộc vào mục tiêu của bạn:

Học Kotlin trước nếu bạn:

  • Muốn tập trung vào phát triển ứng dụng Android gốc: Kotlin là ngôn ngữ chính thức của Google cho Android.
  • Đã quen với Java: Kotlin có cú pháp tương tự và dễ học hơn nếu bạn đã biết Java.
  • Muốn làm việc với các dự án yêu cầu hiệu suất cao và tích hợp với các thư viện Java hiện có.

Học Flutter trước nếu bạn:

  • Muốn phát triển ứng dụng đa nền tảng: Flutter cho phép bạn viết một lần và chạy trên nhiều nền tảng như Android, iOS, web và desktop.
  • Quan tâm đến thiết kế giao diện người dùng đẹp mắt và nhất quán: Flutter sử dụng widget, giúp dễ dàng tạo ra giao diện người dùng hấp dẫn.
  • Muốn nhanh chóng tạo nguyên mẫu và ứng dụng: Flutter có tính năng hot reload giúp tăng tốc quá trình phát triển.

Có thể sử dụng các thư viện Java trong dự án Kotlin không?

Có, bạn hoàn toàn có thể sử dụng các thư viện Java trong dự án Kotlin. Kotlin được thiết kế để tương thích hoàn toàn với Java, cho phép bạn import và sử dụng các thư viện Java một cách dễ dàng trong mã nguồn Kotlin của bạn.

Flutter có phù hợp cho các dự án quy mô lớn và phức tạp không?

Flutter có thể phù hợp cho các dự án quy mô lớn và phức tạp nhờ vào khả năng biên dịch mã nguồn thành mã gốc và hỗ trợ đa nền tảng từ một codebase duy nhất. Các ứng dụng Flutter cũng có thể tận dụng được tính nhất quán và linh hoạt trong thiết kế giao diện người dùng. Tuy nhiên, vẫn cần cân nhắc đến yếu điểm về hiệu suất so với ứng dụng nguyên thủy từng nền tảng.

Kết luận

Tóm lại, cả Kotlin và Flutter đều là công cụ mạnh mẽ trong lĩnh vực phát triển ứng dụng di động, mỗi công nghệ có những ưu điểm riêng. Kotlin nổi bật với hiệu suất cao và tích hợp sâu trong hệ sinh thái Android, trong khi Flutter mang lại khả năng phát triển đa nền tảng nhanh chóng với giao diện nhất quán.

Việc nắm vững một trong hai công nghệ này sẽ mở ra nhiều cơ hội trong ngành công nghiệp phần mềm đang phát triển nhanh chóng. Quan trọng nhất là chọn công cụ phù hợp nhất với nhu cầu và mục tiêu của bạn.

Xem thêm:

Xem thêm IT Jobs for Developer hấp dẫn trên TopDev

Các trường có ngành công nghệ thông tin điểm vừa phải nhưng chất lượng

10+ trường có ngành công nghệ thông tin điểm thấp, đào tạo tốt

Trong bối cảnh ngành Công nghệ thông tin (CNTT) ngày càng phát triển mạnh mẽ, việc lựa chọn một trường đại học uy tín và phù hợp với khả năng điểm số của mỗi thí sinh là điều vô cùng quan trọng. Dưới đây là danh sách trường có ngành công nghệ thông tin điểm thấp nhưng vẫn đảm bảo chất lượng giảng dạy tốt. Hy vọng bài viết này sẽ giúp các bạn có thêm thông tin hữu ích để đưa ra lựa chọn đúng đắn cho tương lai.

Mở đầu danh sách chúng ta cùng điểm qua các trường có các nhóm ngành công nghệ thông tin điểm từ 20-24 điểm.

Trường đại học Tôn Đức Thắng

Trường Đại học Tôn Đức Thắng (TDTU) có tiền thân là Đại học Công nghệ Dân lập Tôn Đức Thắng, trực thuộc Liên đoàn Lao Động TPHCM. Đến năm 2003, trường đổi tên thành Đại học bán công, thuộc quyền quản lý của UBND TPHCM. Năm 2008, trường chính thức chuyển sang loại hình đại học công lập, tự chủ học phí và đổi tên thành Đại học Tôn Đức Thắng, trực thuộc Tổng liên đoàn Lao động Việt Nam.

Với sự đầu tư mạnh mẽ và luôn ưu tiên phát triển, Đại học Tôn Đức Thắng đã trở thành một trong những trường đại học uy tín hàng đầu cả nước. Đặc biệt, TDTU là đại học duy nhất của Việt Nam được xếp trong top 700 và top 500 đại học tốt nhất thế giới theo The World University Rankings 2022. Năm 2022, trường cũng lọt vào top 100 đại học trẻ tốt nhất thế giới theo The Young University Rankings.

Chương trình đào tạo ngành CNTT tại TDTU bao gồm các chuyên ngành như Khoa học máy tính, Kỹ thuật phần mềm, Mạng máy tính và truyền thông dữ liệu. Sinh viên theo học sẽ được trang bị kiến thức và kỹ năng cần thiết để phát triển các phần mềm, quản lý và bảo mật hệ thống thông tin, phân tích và xử lý dữ liệu lớn.

Học phí năm 2023 – 2024 khi theo học tại ĐH Tôn Đức Thắng dao động từ 28.000.000 VNĐ đến 51.000.000 VNĐ/năm theo từng ngành. Không bao gồm phí tiếng Anh (Mức học phí tiếng Anh bổ trợ từ 4-15 triệu đồng nếu chưa đạt chuẩn đầu vào của trường). Học phí chương trình liên kết quốc tế dao động từ 30 triệu đến 80 triệu, kèm theo các chương trình học bổng quốc tế khác nhau.

Điểm của Tôn Đức Thắng rất vừa tầm với các bạn học sinh khá giỏi, không quá thấp cũng không cao cạnh tranh như các trường CNTT top đầu khu vực TP.HCM, đây là sự lựa chọn tròn trĩnh cho các bạn có điểm thi ĐH từ 22-24 điểm nhưng có đam mê theo học ngành CNTT ở một môi trường giáo dục tiên tiến hàng đầu.

Chi tiết điểm chuẩn của Khoa Công nghệ Thông tin, Trường Đại học Tôn Đức Thắng trong năm 2023 (tổng điểm của 3 môn theo tổ hợp, có nhân hệ số môn theo tổ hợp, ngành xét tuyển theo thang điểm 40).

Tên ngành Điểm chuẩn
Khoa học máy tính 33.35
Mạng máy tính và truyền thông dữ liệu 32.1
Kỹ thuật phần mềm 33.7

 

Bài viết liên quan:

Trường đại học Kinh tế Kỹ thuật Công nghiệp Hà Nội

Đại học Kinh tế Kỹ thuật Công nghiệp Hà Nội là một trong những trường đại học uy tín tại miền Bắc, đặc biệt trong các lĩnh vực kinh tế và kỹ thuật.

Ngành Công nghệ thông tin của trường cung cấp 4 chuyên ngành chính:

  • Mạng máy tính và truyền thông dữ liệu
  • Công nghệ thông tin
  • Công nghệ kỹ thuật máy tinh
  • Khoa học dữ liệu

Dưới đây là bảng tổng hợp chi tiết điểm chuẩn các ngành từ 2019 – 2023, gồm nhiều phương thức xét tuyển:

Ngành học Năm 2019 Năm 2020 Năm 2021 Năm 2022 Năm 2023
Xét theo KQ thi THPT Xét theo học bạ THPT (đợt 1) Xét theo KQ thi THPT Xét theo học bạ THPT (đợt 1) Xét theo KQ thi THPT Xét theo học bạ THPT (đợt 1) Xét theo KQ thi THPT Xét theo học bạ THPT
Mạng máy tính và truyền thông dữ liệu 16,50 17,50 20 19,75 21,50 22,20 24,80 22,20 24,50
Công nghệ thông tin 18,50 19,50 22 21,50 22,50 24,00 25,80 24,00 26,00
Công nghệ kỹ thuật máy tinh 19,75 21,50 22,20 24,80 22,50 24,50
Khoa học dữ liệu 22,00 24,20 22,00 24,50

Năm 2023, học phí Đại học Kinh tế Kỹ thuật Công nghiệp dao động từ 18.500.000 đồng đến 20.500.000 đồng/ năm học.

Trường đại học Mở Hà Nội

Trường Đại học Mở Hà Nội (HOU) là một trong những trường đại học công lập uy tín tại Việt Nam, được thành lập với mục tiêu cung cấp cơ hội học tập cho mọi người và nâng cao trình độ dân trí. Trường nổi tiếng với các chương trình đào tạo linh hoạt và chất lượng, phù hợp với nhu cầu học tập của nhiều đối tượng sinh viên.

ĐH Mở Hà Nội với điểm xét tuyển ngành CNTT năm 2023 là 23.38, trung bình cần đạt ~8 điểm 1 môn để trúng tuyển.
ĐH Mở Hà Nội với điểm xét tuyển ngành CNTT năm 2023

Học phí ngành công nghệ thông tin chính quy năm 2023 là 18.350.000. Học phí dự kiến cho năm 2024 là khoảng 20 triệu đồng mỗi năm học.

Trường đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng

Trường đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng là một trong những trường đại học hàng đầu tại khu vực miền Trung với chất lượng đào tạo cao trong các ngành kỹ thuật và công nghệ. Ngành Công nghệ thông tin của trường gồm các chuyên ngành như Kỹ thuật phần mềm, Mạng máy tính và Hệ thống thông tin. Ngành có điểm chuẩn cao nhất của Trường Đại học Sư phạm Kỹ thuật, Đại học Đà Nẵng là ngành Công nghệ thông tin với 23.79 điểm.

Mức học phí của trường Đại học Sư phạm Kỹ thuật – Đại học Đà Nẵng như sau: Mức thu học phí năm 2023 – 2024: 16.400.000VNĐ/ năm học. Đây là mức học phí rẻ so với mặt bằng chung hiện nay.

>> Đọc thêm: Top 10 Trường đào tạo ngành Công nghệ thông tin tốt nhất hiện nay

Tiếp tục danh sách là các trường có điểm chuẩn ngành Công nghệ thông tin từ 18 – 22 điểm

Trường đại học Công thương TP.HCM

Khoa Công nghệ Thông tin của Trường Đại học Công Thương TP.HCM được thành lập vào năm 2003, tách ra từ Khoa Cơ khí – Tin học để trở thành một đơn vị độc lập. Trải qua gần 20 năm xây dựng và phát triển, Khoa Công nghệ Thông tin đã đạt được nhiều thành tựu trong giảng dạy, học tập và nghiên cứu khoa học, đào tạo hàng ngàn sinh viên có tay nghề cao.

Điểm chuẩn của Khoa Công nghệ Thông tin, Trường Đại học Công thương TP.HCM trong 3 năm gần đây dao động từ 16.5 đến 21 điểm, cụ thể năm 2023:

Tên ngành Điểm chuẩn
Công nghệ thông tin 21
An toàn thông tin 16.5
Khoa học dữ liệu 16.75

Năm 2023 – 2024, học phí các ngành từ 10.000.000 – 14.000.000 đồng/học kỳ.

Trường Đại học FPT

Trường Đại học FPT là một trong những trường đại học tư thục hàng đầu tại Việt Nam với chương trình đào tạo tiên tiến và quốc tế hóa.

Ngành Công nghệ Thông tin (CNTT) tại Đại học FPT được xây dựng với chương trình đào tạo hiện đại, đáp ứng yêu cầu của cuộc cách mạng công nghiệp 4.0. Các chuyên ngành trong khối ngành CNTT tại Đại học FPT bao gồm Kỹ thuật phần mềm, An toàn thông tin, và Trí tuệ nhân tạo. Chương trình đào tạo được thiết kế với sự tham gia của các chuyên gia hàng đầu, đảm bảo sinh viên được tiếp cận với những kiến thức và công nghệ mới nhất.

Điểm chuẩn ngành Công nghệ Thông tin tại Đại học FPT trong 3 năm gần đây dao động từ 20 đến 22 điểm. Học phí dự kiến cho năm 2024 là khoảng 50 triệu đồng mỗi năm học, tương xứng với chất lượng đào tạo và các dịch vụ hỗ trợ học tập hiện đại mà trường cung cấp.

Trường đại học Công nghệ TP HCM (HUTECH)

Ngành Công nghệ Thông tin (CNTT) tại HUTECH là một trong những ngành mũi nhọn, được đầu tư và phát triển mạnh mẽ. Chương trình đào tạo ngành CNTT tại HUTECH bao gồm các chuyên ngành chính như Kỹ thuật phần mềm, Hệ thống thông tin và Mạng máy tính. Sinh viên theo học ngành CNTT tại HUTECH sẽ được trang bị kiến thức vững chắc về lập trình, thiết kế và phát triển phần mềm, quản lý hệ thống thông tin, và đảm bảo an toàn mạng.

Điểm chuẩn ngành Công nghệ Thông tin tại HUTECH trong 3 năm gần đây dao động từ 17 đến 19 điểm. Trường cũng có phương thức xét tuyển khác như xét điểm học bạ, giúp sinh viên có nhiều cơ hội được theo học ngành công nghệ thông tin.

Hiện nay, mức học phí trường HUTECH 2023 dao động trong khoảng từ 36.000.000 – 66.000.000 đồng/năm tùy theo từng chương trình đào tạo và các chuyên ngành đào tạo khác nhau của trường

Trường Đại học Quản lý và Công nghệ TP.HCM (UMT)

Trường Đại học Quản lý và Công nghệ TP.HCM (UMT) là một trong những cơ sở giáo dục đại học tư thục uy tín tại Việt Nam. Được thành lập với mục tiêu đào tạo nguồn nhân lực chất lượng cao trong lĩnh vực quản lý và công nghệ, UMT đã không ngừng phát triển và đạt được nhiều thành tựu trong giảng dạy và nghiên cứu.

Ngành Công nghệ Thông tin (CNTT) được thiết kế nhằm cung cấp cho sinh viên kiến thức chuyên sâu và kỹ năng thực tiễn trong lĩnh vực công nghệ. Các chuyên ngành trong khối CNTT tại UMT bao gồm:

  • Kỹ thuật phần mềm: Đào tạo sinh viên về lập trình, thiết kế và phát triển phần mềm ứng dụng.
  • Hệ thống thông tin: Tập trung vào quản lý và phát triển các hệ thống thông tin phục vụ cho doanh nghiệp và tổ chức.
  • Mạng máy tính: Cung cấp kiến thức về thiết kế, xây dựng và quản trị các hệ thống mạng.

Điểm chuẩn ngành Công nghệ Thông tin tại UMT trong 3 năm gần đây dao động từ 16 đến 18 điểm và học phí dự kiến cho năm 2024 là khoảng 22 triệu đồng mỗi năm học.

Top 7 trường đào tạo Công nghệ thông tin tốt tại TPHCM

Trường đại học Nha Trang

Đại học Nha Trang là một trường đại học đa ngành tại khu vực miền Trung, nổi bật với các ngành kỹ thuật và kinh tế biển. Trường có cơ sở vật chất hiện đại, đội ngũ giảng viên chất lượng và chương trình đào tạo đa dạng, đáp ứng nhu cầu học tập của sinh viên.

Đặc biệt ĐH Nha Trang với mức học phí cực kì thấp – năm học 2023-2024, học phí của trường dao động từ 280.000 đồng đến 490.000 đồng/tín chỉ đối với hệ đại học chính quy.

Điểm chuẩn của ngành Công nghệ thông tin (03 chuyên ngành: Công nghệ phần mềm; Hệ thống thông tin; Truyền thông và Mạng máy tính) là 21 điểm (năm 2023)

Trường đại học Vinh

Trường Đại học Vinh (Vinh University) là một cơ sở giáo dục đại học đa ngành trực thuộc sự quản lý của Bộ Giáo dục và Đào tạo. Hiện nay, Đại học Vinh nằm trong danh sách các trường đại học trọng điểm quốc gia, được nhà nước chú trọng đầu tư và phát triển. Trường tự hào khi luôn có mặt trong bảng xếp hạng top 20 trường đại học hàng đầu Việt Nam và hướng đến mục tiêu nằm trong bảng xếp hạng 500 trường đại học hàng đầu châu Á vào năm 2030.

Theo bảng xếp hạng các trường đại học trên thế giới CSIC, Đại học Vinh thường xếp hạng trong top 20 các cơ sở đào tạo của Việt Nam. Trường cũng đạt chuẩn 4 sao theo định hướng nghiên cứu của Hệ thống đối sánh chất lượng đại học UPM của 100 trường đại học hàng đầu châu Á.

Dưới đây là điểm chuẩn các nhóm ngành IT của trường ĐH Vinh năm 2023:

Tên ngành Tổ hợp môn Điểm xét THPTQG Điểm học bạ
Công nghệ thông tin A00; A01; D01; D07 20 25
Công nghệ thông tin chất lượng cao A00; A01; D01; D07 21 không xét
Khoa học máy tính A00; A01; D01; D07 21 24

Mức học phí Đại học Vinh 2023 – 2024 là 13.545.000 đồng/năm học

Trên đây là danh sách các trường đại học có ngành Công nghệ thông tin với điểm chuẩn không quá cao nhưng chất lượng giảng dạy tốt. Việc lựa chọn trường phù hợp không chỉ dựa vào điểm chuẩn mà còn cần xem xét đến chương trình đào tạo, cơ sở vật chất và môi trường học tập để đảm bảo một tương lai tươi sáng cho các bạn sinh viên.

Tham khảo thị trường tuyển dụng IT tại TopDev

>> Bài viết liên quan: Con gái có nên học Công nghệ thông tin? Các ngành IT phù hợp với nữ giới.

Hành trình chuyển đổi của Elsa từ Native sang Flutter

ELSA, ứng dụng học phát âm tiếng Anh hàng đầu với hàng triệu người dùng toàn cầu, đã và đang đối mặt với những thách thức lớn trong việc mở rộng mobile app của mình để đáp ứng nhu cầu ngày càng tăng của người dùng. Bằng cách chuyển đổi từ nền tảng Native sang Flutter, một framework đa nền tảng, có khả năng tối ưu hiệu suất và đẩy nhanh tốc độ phát triển sản phẩm, ELSA đã giải quyết được bài toán scale up của mình.

Thách thức scale up và bài toán của ELSA

Trong bối cảnh thị trường ứng dụng di động cạnh tranh khốc liệt, việc mở rộng ứng dụng là yếu tố then chốt để giữ vững vị thế và thu hút người dùng mới. Khả năng mở rộng (scalability) của ứng dụng được đánh giá dựa trên khả năng hoạt động ổn định, mượt mà khi:

  • Số lượng người dùng tăng đột biến: Ứng dụng phải đảm bảo hiệu suất ổn định khi có hàng triệu người dùng truy cập và sử dụng đồng thời.

  • Lượng dữ liệu xử lý ngày càng lớn: Việc lưu trữ, xử lý và phân tích lượng dữ liệu khổng lồ từ người dùng là một bài toán khó.

  • Quy mô đội ngũ phát triển mở rộng: Quản lý hiệu quả và duy trì sự phối hợp nhịp nhàng giữa các đội ngũ kỹ thuật là điều cần thiết.

ELSA, với vị thế dẫn đầu trong lĩnh vực edtech và hơn 50 triệu lượt tải xuống trên toàn cầu, cũng phải đối mặt với những thách thức không nhỏ trong việc mở rộng ứng dụng. Ứng dụng native ban đầu của ELSA, được phát triển riêng biệt trên hai nền tảng iOS và Android, đã bộc lộ một số hạn chế:

  • Lặp lại code: Việc viết code riêng cho từng nền tảng gây lãng phí thời gian và công sức của đội ngũ kỹ thuật.

  • Khó khăn trong việc đồng bộ tính năng: Đảm bảo tính năng mới được cập nhật đồng thời và hoạt động giống hệt nhau trên cả hai nền tảng là một bài toán phức tạp.

  • Thách thức về hạ tầng và kết nối: Mở rộng thị trường toàn cầu đòi hỏi ELSA phải giải quyết các vấn đề về hạ tầng, kết nối mạng và đảm bảo ứng dụng hoạt động ổn định ở nhiều quốc gia khác nhau.

  • Khó khăn trong việc tuân thủ luật pháp: Mỗi quốc gia có những quy định riêng về bảo mật thông tin và nội dung, ELSA cần đảm bảo ứng dụng tuân thủ đầy đủ các quy định này.

which-platform-should-I-choose

Giải pháp Cross-Platform Framework: Lựa chọn tối ưu cho ELSA

Để vượt qua những thách thức trên và tiếp tục mở rộng quy mô, ELSA đã nghiên cứu và lựa chọn giải pháp sử dụng Cross-Platform Framework – nền tảng phát triển ứng dụng đa nền tảng. Giải pháp này cho phép sử dụng chung codebase cho cả hai nền tảng iOS và Android, từ đó giải quyết triệt để vấn đề lặp lại code và giảm thiểu đáng kể thời gian phát triển sản phẩm mới.

Sau quá trình đánh giá kỹ lưỡng các lựa chọn Cross-Platform Framework hàng đầu hiện nay, ELSA đã quyết định lựa chọn Flutter – framework được phát triển bởi Google – làm nền tảng cho ứng dụng di động thế giới tiếp theo của mình.

Lý do ELSA chọn Flutter:

  • Sự trưởng thành và ổn định: Flutter là một framework đã được kiểm chứng với cộng đồng người dùng đông đảo và được ứng dụng trong nhiều sản phẩm lớn.

  • Khả năng đáp ứng yêu cầu kỹ thuật: Flutter cung cấp đầy đủ các công cụ và thư viện mạnh mẽ để đáp ứng các yêu cầu kỹ thuật phức tạp của ELSA.

  • Hiệu suất cao: Flutter nổi tiếng với hiệu suất vượt trội, mang đến trải nghiệm người dùng mượt mà, nhanh chóng.

  • Tính linh hoạt: Flutter cho phép tích hợp với code native khi cần thiết, đảm bảo khả năng tùy chỉnh cao.

Để đánh giá hiệu quả của việc chuyển đổi sang Flutter, ELSA tập trung vào một số thước đo (metrics) quan trọng, bao gồm:

  • Lượng code dùng chung: Mục tiêu là tối đa hóa lượng code chung giữa hai nền tảng.

  • Tỷ lệ crash: Giảm thiểu tối đa số lượng lỗi crash để đảm bảo trải nghiệm người dùng mượt mà.

  • Hiệu suất hiển thị: Đánh giá tốc độ tải trang, độ mượt của animation và các yếu tố ảnh hưởng đến trải nghiệm thị giác của người dùng.

  • Mức độ sử dụng bộ nhớ (RAM) và CPU: Đảm bảo ứng dụng hoạt động mượt mà trên các thiết bị có cấu hình khác nhau.

  • Lượng pin tiêu thụ: Tối ưu hóa lượng pin tiêu thụ để kéo dài thời gian sử dụng thiết bị.

Ngoài hiệu suất, ELSA cũng xem xét các tiêu chí quan trọng khác khi lựa chọn Flutter:

  • Khả năng tích hợp: Flutter có thể dễ dàng tích hợp với các dịch vụ backend và thư viện của bên thứ ba.

  • Hỗ trợ kiểm thử: Flutter cung cấp các công cụ mạnh mẽ để viết unit test, integration test và UI test.

  • Hỗ trợ lâu dài: Flutter là một dự án mã nguồn mở được hỗ trợ bởi Google, đảm bảo sự phát triển bền vững trong tương lai.

Chiến lược chuyển đổi “lai” và bài học kinh nghiệm

Thay vì “đập đi xây dựng lại” toàn bộ ứng dụng, ELSA lựa chọn chiến lược chuyển đổi “lai” (Hybrid Approach), kết hợp giữa ứng dụng native hiện tại và các module Flutter mới. Cách tiếp cận này mang lại một số lợi ích:

  • Giảm thiểu rủi ro: Việc chuyển đổi từng phần giúp ELSA kiểm soát rủi ro tốt hơn và dễ dàng khắc phục sự cố nếu có.

  • Đảm bảo hoạt động liên tục: Người dùng vẫn có thể sử dụng bình thường các tính năng hiện tại trong quá trình chuyển đổi.

Quy trình chuyển đổi của ELSA:

  1. Chia nhỏ ứng dụng thành các module: ELSA chia ứng dụng thành các module độc lập, mỗi module đảm nhiệm một chức năng cụ thể.

  2. Ưu tiên chuyển đổi các module quan trọng: ELSA ưu tiên chuyển đổi các module có giá trị cao đối với người dùng và có tiềm năng sử dụng lại code cao.

  3. Tích hợp module Flutter vào ứng dụng native: ELSA sử dụng các kỹ thuật kết hợp code để tích hợp mượt mà các module Flutter vào ứng dụng native hiện tại.

  4. Kiểm tra, đánh giá và lặp lại: Sau khi tích hợp, ELSA thực hiện kiểm tra kỹ lưỡng, thu thập phản hồi từ người dùng và điều chỉnh cho phù hợp.

Bên cạnh việc chuyển đổi sang Flutter, ELSA cũng thực hiện song song các hoạt động:

  • Loại bỏ các tính năng không cần thiết: Giúp giảm kích thước ứng dụng và tập trung vào những gì thực sự quan trọng.

  • Tối ưu codebase: Cải thiện chất lượng code, giảm thiểu lỗi và nâng cao hiệu suất ứng dụng.

Bài học kinh nghiệm từ ELSA:

  • Không có giải pháp “phù hợp cho tất cả”: Mỗi dự án có những đặc thù riêng, cần lựa chọn giải pháp phù hợp nhất với bối cảnh và mục tiêu của mình.

  • Thiết lập mục tiêu rõ ràng và thước đo cụ thể: Xác định rõ mục tiêu cần đạt và cách thức đo lường hiệu quả để đánh giá kết quả.

  • Kiểm tra, đánh giá giải pháp một cách kỹ lưỡng: Thực hiện kiểm tra kỹ lưỡng, thu thập phản hồi từ người dùng và điều chỉnh cho phù hợp.

  • Chuẩn bị sẵn sàng đối mặt với thử thách: Quá trình chuyển đổi có thể gặp phải những khó khăn không lường trước, cần chuẩn bị tâm lý và phương án dự phòng.

Với chiến lược rõ ràng, bài bản và sự chuẩn bị kỹ lưỡng, ELSA đã và đang từng bước hiện thực hóa mục tiêu xây dựng một ứng dụng di động có khả năng mở rộng cao, đáp ứng nhu cầu ngày càng tăng của người dùng trên toàn cầu. Hành trình chuyển đổi từ Native sang Flutter của ELSA là một ví dụ điển hình cho thấy sự linh hoạt và khả năng thích ứng nhanh chóng của các doanh nghiệp công nghệ Việt Nam trong bối cảnh thị trường cạnh tranh khốc liệt.

Bài viết được tổng hợp và điều chỉnh bằng AI. Nội dung từ buổi thuyết trình của anh Sơn Vũ tại Vietnam Mobile Summit 2024

Các kiểu dữ liệu trong TypeScript mà bạn nên biết

Các kiểu dữ liệu trong TypeScript mà bạn nên biết

Bài viết được sự cho phép của tác giả Thầy Long Web

Các kiểu dữ liệu trong TypeScript trình bày các kiểu dữ liệu dùng trong TypeScript, bao gồm các liểu dữ liệu cơ bản và các kiểu bổ sung.

Kiểu dữ liệu là gì?

Trong lập trình, rất cần có chỗ để lưu các giá trị dùng cho lưu trữ và xử lý. Mỗi nơi lưu trữ này là biến, hằng. Các giá trị trong biến, hằng được xác định thuộc loại nào đó để sử dụng đúng trong các toán tử xử lý. Ví dụ kiểu dữ liệu number (số), kiểu chuỗi (string),… Kiểu chuỗi thì có thể biến thành chữ hoa, kiểu số thì có thể dùng trong các toán tử ++, –…

TypeScript có nhiều kiểu dữ liệu phục vụ cho nhiều tính toán rất tốt như boolean, number, string, tuple, array, any… và nhiều kiểu nâng cao khác.

Khai báo biến trong typeScript

Để khai báo biến trong TypeScript, dùng từ khóa var , let hoặc const. Ví dụ

var tenbh = 'Hãy yêu nhau đi'; 
let namsangtac = 1970;
const tygia = 250000;

Trong typescript, khi khai báo biến sẽ tốt hơn nếu có khai báo luôn kiểu dữ liệu. Code như sau:

let tensach : string = "Hiểu về trái tim";
var gia:number = 150000;
const tenLoai:string = 'Điện thoại';

Không nhất thiết phải gán giá trị khi khai báo biến. Khai báo biến trước rồi gán giá trị cho nó sau đó cũng được.

let anhien : boolean;
let soluong:number;
anhien = true;
soluong = 5;

Kiểu boolean trong typescript

Kiểu boolean là kiểu dữ liệu chỉ có hai giá trị là truefalse. Nghĩa là biến nào được khai báo là boolean thì chỉ có thể gán vào đó 1 trong 2 giá trị là true hoặc false. Ví dụ:

let trangthai: boolean;
trangthai = false;
let diem = 7 ;
let ketquathi:boolean = diem>=5 ;

Các biến kiểu boolean thường được dùng trong các điều kiện (if) để xử lý, tính toán tùy theo giá trị true false.

Kiểu number trong typescript

Đây là kiểu số, bao gồm cả số nguyên và số thực. Có thể gán, thay đổi giá trị các biến kiểu số với các toán tử tăng, giảm, +, – , *, / , %

let gia:number = 150;
gia += 10;
gia= 150.5;

  Code ví dụ TypeScript, hướng dẫn tạo project TypeScript

  Học kiến thức căn bản TypeScript chỉ trong 30 phút

Kiểu string trong typescript

String là kiểu chuỗi. Khi 1 biến được khai báo là kiểu string thì có thể gán 1 chuỗi giá trị cho nó. Chuỗi giá trị này được bao quanh bởi dấu ” hoặc dấu ‘ hoặc dấu `

let tieuDe:string = 'Kệ Thị Tịch';
let tacGia:string ="Vạn Hạnh";
let noidung:string = `
   Thân như điện ảnh hữu hoàn vô
   Vạn mộc xuân vinh, thu hựu khô.
   Nhậm vận thịnh suy vô bố uý
   Thịnh suy như lộ thảo đầu phô.
`;

Kiểu array trong typescript

Biến nào thuộc kiểu array thì có thể chứa được nhiều giá trị trong đó. Các giá trị trong array thuộc cùng 1 kiểu (number, string…) .

Có 2 cách khai báo array trong typescript. Đó là sử dụng cú pháp type[] hoặc dùng Array<type>

Cách 1: khai báo mảng dùng kiểu type[]

let arr_sanpham: string[] = ['Chuối nướng', "Gạo ST25", `Kẹo mè`];
let arr_soluong: number[] = [5, 2, 1];

Cách 2: khai báo mảng dùng kiểu Array<type>

let arr_tp: Array<string> = ['TPHCM', 'Hà Nội', "Đà Nẵng", `Cần Thơ`];
let arr_sốdân: Array<number> = [8.9, 8.4 , 1.2 , 2.0]; //triệu

Kiểu tuple trong typescript

Kiểu dữ liệu tuple là 1 mảng cố định số phần tử mà mỗi phần tử có kiểu dữ liệu khác nhau. Ví dụ

let sp1: [string, number] = [‘Gạo ST25’, 27000];

Tham khảo việc làm Typescript hấp dẫn tại Topdev

Kiểu enum trong typescript

Enum là kiểu liệt kê. Bạn định nghĩa ra kiểu này với các thành viên được liệt kê tên ra. Giá trị (value) của từng thành viên tăng từ 0, 1, 2….

enum role {REGISTER, AUTHOR, EDITOR, ADMIN}; //0, 1 , 2 , 3
let r1: role = role.ADMIN; // 3
let r2: role = role.AUTHOR; // 1
console.log(r1, r2); // 1 3

Các thành viên trong enum có name và value. name thì phải khai báo như ví dụ trên, còn value nếu không chỉ định thì sẽ tăng 1 từ giá trị của thành viên trước đó. Giá trị của các thành viên có thể trùng nhau . Xem ví dụ sau:

enum MAVUNG {HCM=28, CAMAU, DANANG=36, CANTHO=36};  
let hcm = MAVUNG.HCM; //  28
let cm = MAVUNG.CAMAU; // 29
let ct = MAVUNG.CANTHO; // 36
console.log(hcm, cm, ct ); //28 29 36

Kiểu enum giúp viết code lập trình được tường minh hơn. Như trong ví dụ trên, ghi MAVUNG.HCM thì rõ ràng hơn là 28.

Kiểu boolean trong typescript cũng chính là kiểu enum, chỉ có 2 giá trị true, false.

Kiểu union trong typescript

Union là kết hợp nhiều kiểu dữ liệu với nhau, dùng union để chỉ định các loại dữ liệu có thể gán cho biến.

let ketquathi : string | boolean;
ketquathi = "Đậu";
ketquathi = true;
let arr_gia : string[]  |  number[];
arr_gia = ['15 $', '25000 VNĐ', '140000 đồng'];
arr_gia = [375000, 25000, 140000];

Kiểu object trong typescript

Kiểu object còn gọi là kiểu đối tượng, khai báo và sử dụng như các object javascript. Biến kiểu đối tượng được đặt trong dấu {}, các thành viên cách nhau bởi dấu phẩy. Từng thành viên là từng cặp name:value

const nhanvien1 = {
    hoten:"Nguyễn Văn Tèo",
    tuoi: 25,
    phones: ['0917438274','095632421']
}
let ht = nhanvien1.hoten;
console.log(ht);//Nguyễn Văn Tèo

Kiểu any trong typescript

any là kiểu dữ liệu cho phép bạn gán giá trị bất kì vào biến. Lúc thì gán số, lúc khác gán string đều được.

let ketqua: any = true; // kiểu boolean
ketqua = "Đậu"; //lúc khác gán kiểu chuỗi
ketqua = 9; // gán số đều ok
let sp1:any[] = [2, 'Corddoba Guitar Guclcor', true];

Nên hạn chế sử dụng any, vì khi đó TypeScript sẽ bỏ qua kiểm tra kiểu khi bạn tính toán, xử lý giá trị của biến này.

Kiểu unknown trong typescript

Kểu dữ liệu unkown tương tự như any. Bạn có thể gán giá trị bất kỳ cho biến kiểu này. Gán 1 biến unkown cho 1 biến có kiểu tường minh sẽ bị lỗi, còn any thì không.

let  un :unknown = 9; let a:number = un; //not ok
let an:any = 8; let b:number = an;  //ok

Để gán giá trị unknow cho biến khác, bạn cần xác định kiểu rõ ràng rồi mới gán

let  un :unknown = 9;
if (typeof un=='number'){
    let a:number = un; //ok
}

Phân biệt giá trị null và undefine của biến

Null

  • Có giá trị gán cho biến
  • Có thể gán cho biến không trỏ đến bất kỳ đối tượng nào
  • Typeof là object
  • Null có thể là rỗng hoặc không tồn tại
  • Sự vắng mặt của giá trị cho một biến
  • Null có thể được chuyển đổi thành 0
let a = null;
console.log(a); //null
console.log(typeof(a)); //object

Undefined

  • Không có giá trị gán cho biến
  • Biến đã được khai báo nhưng vẫn chưa gán giá trị
  • Typeof là undefined
  • Được dùng khi biến không được gán giá trị
  • Sự vắng mặt của biến đó
  • Có thể được chuyển đổi thành NaN
let x ;
console.log(x); //undefined
console.log(typeof(x)); //undefined
console.log(typeof(x1)); //undefined

Ép kiểu trong typescript

Ép kiểu tức thực hiện chuyển đổi kiểu dữ liệu của biến sang dạng khác để xử lý, tính toán với các toán tử phù hợp. Ví dụ chuyển đổi chuỗi ’12’ thành số 12…

Có 2 cách ép kiểu trong Typescript, cách 1 là dùng <type> còn cách 2 là dùng từ khóa as. Ví dụ:

let userInput:unknown = prompt("Mời nhập cái gì đó");
let sokytu: number = ( <string> userInput ).length;
console.log(sokytu);
let userInput:unknown = prompt("Mời nhập cái gì đó");
let sokytu: number = (userInput as string).length;
console.log(sokytu);

Tạo kiểu dữ liệu trong typescript

Với dữ liệu có cấu trúc phức tạp. Cần phải phối hợp các kiểu cơ bản lại để tạo nên 1 kiểu mới, mô tả chính cấu trúc của dữ liệu thì code sẽ trực quan hơn.  Để tạo type mới, dùng từ khóa type , sau đó là tên và {}

type chó = {
    ten: string ;
    namsinh: number ;
    màulông:string ;
    tênchủ:string ;
};

let c1:chó = { ten:"Nô nô", namsinh:2009, màulông:'Vàng', tênchủ:'Bá Chinh'}
let c2:chó = { ten:"Mập", namsinh:2021, màulông:'Mâu', tênchủ:'Thùy Dương' }

Tới đây, bài viết các kiểu dữ liệu trong TypeScript dừng nhé. Một vài thực tập bạn cũng đã thực hiện. Mệt chưa, nghỉ chút đi nhé 🙂

Bài viết gốc được đăng tải tại longnv.name.vn

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev

Từ Sao Chép đến Lãnh Đạo: Khám Phá 6 Năm Kinh Nghiệm Thiết Kế và Quản Lý Sản Phẩm

Ngành công nghệ phát triển dựa trên sự đổi mới, nhưng hành trình từ ý tưởng đến một sản phẩm thành công hiếm khi là tuyến tính. Nó được lát bằng những thách thức, những bước ngoặt và những bài học khó khăn mà cuối cùng không chỉ định hình nên những sản phẩm chúng ta sử dụng mà còn cả những chuyên gia mà chúng ta trở thành. Tony Lê, một chuyên gia UX/UI và Quản lý Sản phẩm dày dạn kinh nghiệm với bề dày lịch sử trong lĩnh vực công nghệ Việt Nam, đã chia sẻ những hiểu biết sâu sắc của mình trong bài thuyết trình “6-Year Journey Lessons Learned” (Bài học kinh nghiệm 6 năm). Trong bài phân tích chuyên sâu này, chúng ta sẽ đi sâu vào những thông điệp cốt lõi từ bài thuyết trình của anh, khám phá những kinh nghiệm và kiến thức anh thu thập được khi điều hướng thế giới năng động của phát triển sản phẩm kỹ thuật số.

Hành trình Xuyên Suốt Nhiều Lĩnh vực

Hành trình của Tony không chỉ giới hạn trong một lĩnh vực duy nhất; nó là minh chứng cho sức mạnh của khả năng thích ứng và chuyên môn đa lĩnh vực. Kinh nghiệm của anh trải dài trên một loạt các ngành:

  • Thương mại điện tử: Từ những đơn vị tiên phong như 6ix và Vatgia đến những cái tên thành danh như Adayroi và Websosanh, Tony đã chứng kiến tận mắt sự phát triển của mua sắm trực tuyến tại Việt Nam. Công việc của anh với các nền tảng như Haravan đã cung cấp cho anh những hiểu biết sâu sắc về các công cụ và cơ sở hạ tầng hỗ trợ cho các doanh nghiệp thương mại điện tử.

  • Công nghệ Tài chính (Fintech): Khi lĩnh vực công nghệ tài chính bùng nổ, Tony đã đi tiên phong, góp phần vào thành công của ví điện tử Momo, ngân hàng số Cake by VPBank và nền tảng blockchain Chainfund. Kinh nghiệm này đã cho anh tiếp xúc với thế giới phức tạp của trải nghiệm người dùng trong lĩnh vực tài chính, bảo mật và công nghệ mới nổi.

  • Đặt Chỗ Trực tuyến (OTA) và Dịch vụ Theo Yêu cầu: Việc tham gia vào VNTrip, một công ty du lịch trực tuyến hàng đầu, và nền tảng dịch vụ theo yêu cầu ‘be’ đã cung cấp cho anh những hiểu biết vô giá về hành vi người dùng trong ngành du lịch và dịch vụ. Hiểu được những sắc thái của những lĩnh vực này là rất quan trọng trong việc tạo ra những trải nghiệm kỹ thuật số liền mạch và thân thiện với người dùng.

  • Mua hàng Trong ứng dụng (IAP) và Ngành Công nghiệp Trò chơi: Công việc của Tony với Silverios, một nhà cung cấp IAP, đã cho anh cái nhìn thoáng qua về các chiến lược kiếm tiền và chiến thuật thu hút người dùng được sử dụng trong ngành công nghiệp trò chơi, một lĩnh vực được biết đến với sự đổi mới nhanh chóng và bối cảnh cạnh tranh khốc liệt.

Danh mục đầu tư đa dạng này nhấn mạnh một khía cạnh quan trọng trong hành trình của Tony: khả năng thích ứng, học hỏi và phát triển mạnh mẽ trong các lĩnh vực khác nhau. Mỗi trải nghiệm đều mang đến những thách thức và cơ hội học hỏi riêng biệt, cuối cùng định hình anh trở thành một chuyên gia phát triển sản phẩm toàn diện.

Từ sao chép đến lãnh đạo

Vượt ra ngoài Danh mục Đầu tư: Hé lộ Những Bài học Then chốt

Bài thuyết trình của Tony không chỉ đơn thuần là liệt kê các dự án; nó là kho tàng trí tuệ được chắt lọc thành những bài học thực tiễn. Hãy cùng đi sâu hơn vào sáu thông điệp chính:

1. Coi Sao chép như Bước đệm cho Đổi mới:

Bài học đầu tiên bắt nguồn từ công việc của anh ấy trên ứng dụng ‘be’. Anh thách thức quan niệm thông thường rằng sao chép là xấu, đặc biệt là trong giai đoạn đầu phát triển sản phẩm. Nhận thức được rằng những đơn vị tiên phong thường cung cấp những khuôn mẫu đã được chứng minh cho sự thành công, Tony ủng hộ việc sao chép có chọn lọc.

Tuy nhiên, anh nhấn mạnh sự khác biệt quan trọng: đưa ra những nét riêng biệt ý nghĩa. Không phải là sao chép trắng trợn, mà là hiểu điều gì hiệu quả, điều chỉnh nó cho phù hợp với bối cảnh của bạn và thêm vào đó giá trị độc đáo của riêng bạn. Cách tiếp cận này cho phép các sản phẩm mới nổi nhanh chóng đạt được sức hút trong khi vẫn tạo dựng được chỗ đứng riêng trên thị trường.

2. Thiết kế UX: Bản giao hưởng của Sự cộng tác:

Việc phát triển ứng dụng ‘be’ cũng mang đến một bài học quan trọng về bản chất của trải nghiệm người dùng. Khi ứng dụng gặp sự cố về định vị và định tuyến, nó đã nhấn mạnh một điểm quan trọng: Thiết kế UX không phải là trách nhiệm duy nhất của bộ phận UX/UI. Nó đòi hỏi sự hiểu biết và cam kết trên toàn công ty để ưu tiên hành trình của người dùng.

Từ các nhà phát triển đảm bảo chức năng hoạt động trơn tru cho đến các nhóm tiếp thị truyền tải chính xác giá trị của sản phẩm, mọi bộ phận đều đóng một vai trò trong việc định hình trải nghiệm người dùng. Cách tiếp cận toàn diện này thúc đẩy văn hóa lấy người dùng làm trung tâm trong tổ chức, dẫn đến các sản phẩm thực sự gây tiếng vang với đối tượng mục tiêu của họ.

3. Bước ra khỏi Vùng an toàn: Chất xúc tác cho Sự phát triển:

Việc Tony chuyển đổi từ Trưởng nhóm UX/UI sang vai trò kết hợp bao gồm cả trách nhiệm Quản lý Sản phẩm cấp cao là minh chứng cho sức mạnh của việc đón nhận thách thức. Bước ra khỏi vùng an toàn của mình đã thúc đẩy anh ấy tiếp thu những kỹ năng mới, mở rộng quan điểm và cuối cùng trở thành một tài sản linh hoạt và giá trị hơn.

Bài học này đúng với các chuyên gia ở mọi cấp độ: chủ động tìm kiếm những trách nhiệm mới, ngay cả khi chúng có vẻ khó khăn lúc ban đầu, là điều cần thiết cho sự phát triển cá nhân và nghề nghiệp. Việc nắm bắt tư duy này sẽ thúc đẩy văn hóa học tập liên tục và khả năng thích ứng, những đặc điểm cần thiết trong bối cảnh công nghệ luôn thay đổi.

4. Dấu hiệu của một Nhà lãnh đạo thực thụ: Luôn khao khát Học hỏi:

Dẫn dắt nhóm sản phẩm cho ra mắt Ngân hàng số Cake đã mang đến một bài học lãnh đạo quý báu. Tony nhận ra rằng là một nhà lãnh đạo không nhất thiết phải là người thông minh nhất trong phòng. Thay vào đó, nó đòi hỏi một điều gì đó quan trọng hơn: khả năng học hỏi và thích ứng nhanh chóng.

Trong thế giới công nghệ phát triển nhanh chóng, nơi thay đổi là điều không thể tránh khỏi, các nhà lãnh đạo cần tiếp thu thông tin mới, điều chỉnh chiến lược và dẫn dắt nhóm của họ vượt qua những vùng đất mới. Điều này nhấn mạnh tầm quan trọng của sự khiêm tốn, tính tò mò và sự sẵn sàng liên tục cập nhật kiến thức của bản thân.

5. Lắng nghe sâu sắc: Khám phá Gốc rễ của Vấn đề:

Vấn đề về tên người dùng Cake đã nêu bật một cạm bẫy phổ biến trong phát triển sản phẩm: xu hướng tìm kiếm giải pháp trước khi hiểu rõ vấn đề. Tony nhấn mạnh tầm quan trọng của việc lắng nghe tích cực và đặt câu hỏi thấu đáo. Thay vì ngay lập tức tìm kiếm giải pháp, điều quan trọng là phải đi sâu hơn, đặt câu hỏi làm rõ và thực sự hiểu được những điểm khó khăn và động lực của người dùng.

Cách tiếp cận này cho phép phát triển các giải pháp hiệu quả hơn và lấy người dùng làm trung tâm, vì nó giải quyết nguyên nhân gốc rễ thay vì chỉ giải quyết các triệu chứng bề mặt.

6. Phát triển: Thuốc giải độc cho Sự lỗi thời:

Bài học cuối cùng vượt ra ngoài các dự án cụ thể và nổi lên như một nguyên tắc chỉ đạo cho một sự nghiệp lâu dài trong lĩnh vực công nghệ: theo đuổi sự phát triển không ngừng. Tony nhấn mạnh rằng trong một ngành công nghiệp phát triển nhanh chóng, tự mãn không phải là một lựa chọn. Sự phát triển cá nhân và nghề nghiệp liên tục là điều cần thiết để duy trì sự phù hợp, khả năng thích ứng và khả năng cạnh tranh.

Sự phát triển này có thể diễn ra dưới nhiều hình thức: tiếp thu kỹ năng mới, mở rộng mạng lưới của bản thân, cập nhật xu hướng ngành hoặc tìm kiếm cơ hội cố vấn. Điều quan trọng là trau dồi tư duy học hỏi liên tục và chủ động tìm kiếm cách thức để phát triển và mở rộng chuyên môn của bản thân.

Vượt lên trên những Bài học: Nắm bắt Hành trình

Bài thuyết trình “6-Year Journey Lessons Learned” của Tony Lê mang đến cái nhìn thẳng thắn và sâu sắc về thực tế của thiết kế và phát triển sản phẩm. Câu chuyện của anh ấy nhấn mạnh rằng thành công trong lĩnh vực này không phải là tránh mắc sai lầm mà là học hỏi từ chúng, coi những thách thức là cơ hội để phát triển và thúc đẩy cách tiếp cận hợp tác và lấy người dùng làm trung tâm.

Khi chúng ta điều hướng thế giới công nghệ ngày càng phức tạp, những kinh nghiệm của Tony là kim chỉ nam quý giá, nhắc nhở chúng ta rằng bản thân hành trình, với những chông gai và thắng lợi không thể tránh khỏi, cũng quan trọng như đích đến. Bằng cách nắm bắt tư duy học hỏi liên tục, cộng tác và đồng cảm với người dùng, chúng ta có thể tạo ra những sản phẩm không chỉ đáp ứng mà còn vượt quá mong đợi của người dùng, để lại dấu ấn lâu dài trên bối cảnh kỹ thuật số.

Bài viết được tổng hợp và điều chỉnh bằng AI. Nội dung từ buổi thuyết trình của anh Tony Lê tại Vietnam Mobile Summit 2024

Cách sử dụng cookie trong PHP

Cách sử dụng cookie trong PHP

Bài viết được sự cho phép của tác giả Thầy Long Web

PHP và cookie nói về việc sử dụng các biến cookie với PHP: Tác dụng của cookie, Tạo biến cookie, lấy giá trị để dùng, xóa biến cookie…

Cookie là nơi lưu các giá trị trong trình duyệt. Các giá trị được lưu trong cookie có thể dùng chung giữa nhiều trang web trong website của bạn. Nghĩa là trong một trang web nào đó bạn lưu một giá trị vào cookie thì các trang web khác cũng có thể truy xuất được giá trị này.

Vùng Cookie nằm trong trình duyệt. Các giá trị được lưu vào cookie được gọi là biến cookie. Vùng Cookie  là nơi rất lý tưởng để lưu các giá trị mang lại tiện ích cho người xem web.

cookie-trong-php-1

Ví dụ một user nọ lần đầu vào trang của bạn. Bạn mời họ chọn ngôn ngữ để hiển thị, lần sau họ vào thì không hỏi nữa mà hiện đúng ngôn ngữ họ đã chọn trước đó. Do bạn đã lưu ngôn ngữ họ chọn vào cookie, giờ lấy ra dùng không hỏi gì nữa.

Cookie khác với session ở chỗ vị trí của nó là “ở client”. Nơi lưu trữ lâu dài các thông tin riêng của user trong quá trình sử dụng website.

Để tạo một biến cookie lưu trong trình duyệt thì dùng hàm setcookie. Tham số đầu tiên là tên biến, , tham số thứ hai là giá trị, tham số thứ ba là thời điểm mà biến cookie quá hạn. Nếu tham số thứ ba không có thì thời điểm quá hạn là khi user đóng tag trình duyệt. Ví dụ:

<?php
setcookie("tôngmàu", "xanh", time()+ 3600 ); //hết hạn sau 1 giờ
setcookie('username', 'teonv', time()+ 3600*24);//quá hạn sau 1 ngày
setcookie("đãlogin", 1); //hết hạn khi user đóng tab browser
?>

Sau khi response xong, biến cookie sẽ được tạo ra và lưu trong trình duyệt. Khi quá hạn trình duyệt sẽ tự động xóa biến cookie.

  Session, Cookie, Storage đơn giản mà dễ hiểu

  LocalStorage và Cookies - chọn cái nào để lưu JWT Tokens hiệu quả và an toàn?

Mảng $_COOKIE thứ quan trọng nhất cần biết trong chủ đề PHP và cookie. Vì mảng $_COOKIE là nơi chứa các biến cookie để bạn lấy ra dùng.

Lấy ra giá trị của 1 biến cookie , dùng cú pháp $_COOKIE[‘tên’];  Ví dụ:

<?php
  $un = $_COOKIE['username'];
  $mau = $_COOKIE['tôngmàu'];
  echo "$un  , $mau"; //teonv , xanh
?>

Nếu mể xóa 1 biến cookie trong trình duyệt dùng php thì Bạn dùng hàm setcookie nhưng chỉ định thời điểm quá hạn là số âm.  Ví dụ:

<?php
setcookie("username","",-1 ); //c3.php
?>

Tham khảo việc làm PHP lương cao tại TopDev

Muốn xem các biến cookie trong trình duyệt trình mở Developer Toolbox => vào tab Aplication => chọn mục Cookies bên cột trái => chọn domain website của bạn. Các biến cookie chưa hết hạn sẽ hiện hết ở đây. Và nếu muốn thì bạn có thể xóa hoặc chỉnh sửa giá trị của 1 biến cookue cũng được.

PHP và cookie

Mỗi lần user request lên server , trình duyệt sẽ gửi tất cả các biến cookie mà website bạn đã tạo lên server. Trên server, các biến cookie này được lưu vào mảng $_COOKIE , cho nên bạn mới có mà dùng.

Trình duyệt gửi cookie lên server

Các biến cookie có thể tồn tại trong trình duyệt 1 thời gian rất dài. Vài ngày vài tháng chẳng hạn. Khi các biến cookie quá hạn thì sao? Trình duyệt tự động xóa chúng. Bạn không cần phải lo.

Bài viết gốc được đăng tải tại longnv.name.vn

Xem thêm:

Xem thêm Việc làm IT hấp dẫn trên TopDev

Giải nghĩa các thuật ngữ phổ biến trong wordpress

Giải nghĩa các thuật ngữ phổ biến trong wordpress

Bài viết được sự cho phép của tác giả Thầy Long Web

Các thuật ngữ wordpress cần biết là bài viết cần thiết cho người mới làm quen với wordpress, giải thích những khái niệm cơ bản quan trọng.

Category trong wordpress

Trong wordpress, category là danh mục hay chuyên mục, hay một kiểu phân loại nội dung (taxonomy) để chứa nhiều item. Ví dụ post category (danh mục tin tức), product category (danh mục sản phẩm), room category (loại phòng)…

Widget trong wordpress

Widget là các box hiển thị nội dung gì đó bổ sung thêm ngoài thông tin chính của trang web. Các widget được đặt trong các thanh Sidebar.

Mặc định WordPress có sẵn các widget Recent Posts, Recent Comments, Meta (các liên kết quản trị), Archive (mục lưu trữ theo ngày tháng năm của post),… Website của bạn sẽ được bổ sung cá widget mới khi bạn cài plugin có hỗ trợ tạo widget, hoặc khi bạn cài theme.

Thanh sidebar

Sidebar là thanh nội dung phụ đặt bên cạnh nội dung chính ở phía trái hoặc phải. Sidebar có chiều rộng nhỏ hơn nội dung chính. Mỗi thanh sidebar chứa nhiều widget. Nhờ sidebar mà bạn có thể nhóm các widget lại thành từng nhóm và sắp thứ tự chúng.

Post type

Thành phần nào trong WordPress mà nó có chứa nội dung được gọi là Post Type. Mặc định WordPress đã có sẵn 5 post type là: Post, Page, Attachment, Revision, Nav Menu.

Trong đó, post type có tên Post và Page được dùng để đăng nội dung lên website như bài viết, trang giới thiệu,… Chúng ta cũng có thể tự tạo post type phù hợp với yêu cầu của mình.

Post trong wordpress

Post là bài viết. Khi muốn tạo 1 bài viết mới trong website, bạn sẽ tạo 1 post. Post một trong 5 post type mặc định của WordPress. Trong mỗi website, số lượng post sẽ rất nhiều, cho nên mỗi post sẽ được phân loại (mỗi post bạn sẽ đặt trong 1 category (loại ) nào đó.

Mỗi Post có hai taxonomy giúp phân loại đó là Category (loại ) và Tag (thẻ), giúp phân loại và tìm kiếm dễ dàng.

  Top 7 plugin hay ho cho blog sử dụng wordpress

  So sánh Wordpress và Drupal: Lựa chọn CMS nào sẽ tốt hơn?

Page trong wordpress

Page là trang – một tính năng giúp bạn tạo các trang đặc biệt trong website như trang giới thiệu website, liên hệ, trang hướng dẫn sử dụng.

Số lượng page trong website thường không nhiều, cho nên mỗi page không có phân loại.

Plugin trong wordpress

Plugin là thành phần giúp bổ sung thêm tính năng cho wordpress. Mỗi plugin chứa code PHP giúp thêm bớt các chức năng cho wordpress. Nhờ plugin, bạn có thể bổ sung thêm tính năng mới mà wordpress chuẩn không có.

Theme wordpress

Theme là giao diện của website wordpress, bạn có thể cài đặt nhiều theme nhưng tại mỗi thời điểm chỉ sử dụng một theme. Các theme của wordpress nằm trong thư mục wp-content/themes.

Dashboard

Dashboard là trang chủ của phần quản trị website wordpress và thường có đường dẫn là wp-admin.

Permalink là cấu trúc địa chỉ đẹp cho các bài viết, sản phẩm, category… Thường admin sẽ cấu hình để chọn cấu trúc cho permalink để các search engine đánh giá tốt hơn và nâng cao thứ hạng của website của mình.

Tham khảo việc làm WordPress hấp dẫn trên TopDev!

Excerpt

Excerpt là đoạn text mô tả nội dung của bài viết. Nếu trong bài viết chưa có thiết lập Excerpt thì nó sẽ lấy một phần đầu của nội dung làm excerpt.

Featured là hình đại diện cho bài viết, thường được dùng để hiển thị hình ảnh cho bài viết.

functions.php

Functions.php là ột file bắt buộc có trong tất cả các theme của WordPress. File này chứa những code PHP luôn được thực thi mỗi lần có request đến. Nơi đây bạn có thể khai báo các cấu hình, hay bổ sung thêm các tính năng mới trong website của bạn.

Responsive

Responsevive dùng để chỉ các giao diện được thiết kế theo chuẩn Responsive, nghĩa là giao diện có thể hiển thị tốt trên nhiều kích thước màn hình khác nhau, như điện thoại, máy tính bảng, desktop.

Shortcode trong wordpress

Shortcode là mã đặt biệt đại diện cho một nội dung nào đó. Một shortcode trông giống như một thẻ HTML, nhưng bao quanh là dấu ngoặc vuông. Mã này được thay thế khi trang được thực sự request từ user. Ví dụ shortcode trong website sau của Thầy Long khi hiện ra trang web sẽ thành 1 bài thi trắc nghiệm.

Slug của bài viết

Với mỗi bài viết, page hay category thì slug là địa chỉ thân thiện hay địa chỉ đẹp. Slug giúp địa chỉ của trang dễ xem hơn, các search engine đánh giá tốt hơn.

Địa chỉ như sau là không thân thiện:

https://www.google.com/search?q=viet+nam&sxsrf=ALeKk01&ei=SF2XYI&oq=viet+nam&gs_lcp=Cgdn&sclient=gws-wiz&ved=0ahUKEwi&uact=5

Địa chỉ như sau là thân thiện, dễ xem :

https://longnv.name.vn/su-dung-wordpress/cac-thuat-ngu-trong-wordpress-can-biet
https://longnv.name.vn/su-dung-wordpress/bat-dau-voi-wordpress

Tag của bài viết

Tag là một trong những thông tin của mỗi bài viết trong WordPress. Nó dùng để diễn tả những keyword chính (quan trọng) của mỗi bài. Khi bạn nhập 1 bài viết, bài đó những từ quan trọng nào mà bạn nghĩ người ta sẽ search để hiệc ra thì gõ vào mục tag này. Mỗi bài viết có thể nhập vào nhiều tag.

Theme options

Mỗi theme của wordpress đều có 1 chỗ để bạn cấu hình nó. Chỗ đó gọi là Theme Options.

Child theme trong wordpress

Chield theme là theme con, nó kế thừa toàn bộ theme cha, bạn có thể chỉnh sửa theme con mà không cần đụng tới theme cha.

Child theme mang lại 2 lợi ích: không chỉnh sửa trên trực tiếp trên theme gốc và không thay đổi khi update theme cha.

Custom field trong wordpress

Custom field là cột thông tin bổ sung thêm tùy ý admin. Đây là tính năng nổi bật trong WordPress giúp bạn có tùy biến cao hơn website của mình. Cụ thể là nó giúp tạo thêm các field mới bổ sung vào trong các post type.

Ví dụ : với các post, bạn bổ sung thêm cột custom field : số lần xem, tác giá… Với các quyển sách, bạn có thể thêm các custom field như số trang, nhà xuất bản, loại giấy…

Revisions của bài viết

Mặc định, wordpress lưu bài viết của bạn thành nhiều revision khi bạn thực hiện lưu trang. Làm như vậy để giúp bạn restore bài viết khi muốn dùng lại nội dung trước đây. Tuy nhiên, đa số website không dùng tính năng này vì nó khá thừa và làm phình to database thêm. Để tắt tính năng này bạn thêm vào file wp-config.php dòng sau:

define('WP_POST_REVISIONS', false );

RSS

RSS (Really Simple Syndication) là kỹ thuật được sử dụng để chia sẻ nội dung web theo chuẩn XML. User dùng các chương trình đọc tin RSS để xem nhanh các tin mới nhất từ các website chia sẻ RSS.

Bài viết gốc được đăng tải tại longnv.name.vn

Xem thêm:

Dev đừng bỏ lỡ Top tin tuyển dụng IT tại TopDev nhé!

Chiến lược thành công cho doanh nghiệp: Agile vs OKR

OKR thumbnail

Trong kỷ nguyên bùng nổ công nghệ và biến động kinh tế không ngừng, các doanh nghiệp phải đối mặt với vô số thách thức để duy trì vị thế cạnh tranh và phát triển bền vững. Để vượt qua những thử thách này, việc áp dụng các chiến lược và kỹ năng quản lý tiên tiến là điều vô cùng quan trọng. Agile và OKR (Objectives and Key Results) nổi lên như hai phương pháp hiệu quả giúp doanh nghiệp thích nghi nhanh chóng, tăng cường hiệu quả hoạt động và đạt được mục tiêu đề ra.

Agile: Linh Hoạt và Hiệu Quả

Agile là phương pháp quản lý dự án và phát triển phần mềm đề cao sự linh hoạt, thích ứng và hợp tác. Thay vì tuân theo quy trình cố định, Agile chia nhỏ dự án thành các giai đoạn ngắn (sprint) và liên tục thu thập phản hồi để điều chỉnh và cải tiến sản phẩm. Nhờ vậy, Agile giúp doanh nghiệp:

  • Tăng cường sự tập trung vào khách hàng: Nhu cầu của khách hàng luôn được ưu tiên hàng đầu, đảm bảo sản phẩm đáp ứng đúng thị hiếu và mong muốn.
  • Nâng cao hiệu quả và chất lượng: Phát triển sản phẩm theo từng phần nhỏ giúp kiểm soát tốt chất lượng, giảm thiểu rủi ro và tối ưu hóa nguồn lực.
  • Thúc đẩy sự hợp tác và đổi mới: Môi trường làm việc cởi mở khuyến khích chia sẻ ý tưởng, sáng tạo và giải quyết vấn đề hiệu quả.
  • Tăng cường khả năng thích ứng: Dễ dàng điều chỉnh kế hoạch và quy trình theo thay đổi của thị trường hoặc yêu cầu của khách hàng.

OKR: Quản Lý Mục Tiêu Hiệu Quả

OKR là hệ thống quản lý mục tiêu giúp doanh nghiệp xác định và đạt được những mục tiêu quan trọng. OKR bao gồm:

  • Mục tiêu (Objectives): Mô tả những thành tựu mà doanh nghiệp mong muốn đạt được, thường mang tính định tính và truyền cảm hứng.
  • Kết quả chính (Key Results): Là những chỉ số cụ thể, định lượng và có thể đo lường được để đánh giá mức độ hoàn thành mục tiêu.

OKR mang lại nhiều lợi ích cho doanh nghiệp:

  • Liên kết mục tiêu cá nhân và tập thể: Tạo sự đồng thuận và tập trung chung vào các mục tiêu quan trọng của tổ chức.
  • Tăng cường sự tập trung vào kết quả: Đánh giá hiệu suất dựa trên kết quả thực tế, thúc đẩy sự nỗ lực và trách nhiệm của cá nhân.
  • Nâng cao khả năng theo dõi và đo lường: Theo dõi tiến độ liên tục và điều chỉnh mục tiêu khi cần thiết.

agile vs okr

Vai Trò và Kỹ Năng Mới Trong Môi Trường Agile và OKR

Môi trường làm việc Agile và OKR đòi hỏi những vai trò và kỹ năng mới để đáp ứng nhu cầu thay đổi:

  • Scrum Master: Điều phối và hướng dẫn nhóm thực hiện dự án theo phương pháp Scrum, đảm bảo quy trình hoạt động hiệu quả.
  • Product Owner: Chịu trách nhiệm về tầm nhìn sản phẩm, quản lý backlog sản phẩm và làm cầu nối giữa khách hàng và đội phát triển.
  • OKR Champion: Lãnh đạo triển khai OKR trong tổ chức, hỗ trợ các đội nhóm thiết lập và theo dõi mục tiêu.
  • Chief of Staff: Hỗ trợ lãnh đạo và quản lý các dự án chiến lược, đảm bảo chiến lược được thực hiện hiệu quả.
  • Agile Lead: Dẫn dắt và triển khai văn hóa Agile trong tổ chức, thúc đẩy sự linh hoạt và cải tiến liên tục.
  • Agile Coach: Đào tạo và hỗ trợ các đội nhóm áp dụng phương pháp Agile, giải quyết các vấn đề và thách thức trong quá trình chuyển đổi.
  • Product Designer: Thiết kế sản phẩm đáp ứng nhu cầu của khách hàng và thị trường, tạo ra trải nghiệm người dùng tốt nhất.

Nhu cầu học tập và các loại chứng chỉ

Nhu cầu về các kỹ năng mới đòi hỏi nhân viên phải không ngừng học tập và phát triển. Các khóa học và chứng chỉ uy tín về Agile và OKR giúp nâng cao kiến thức và năng lực cho nhân viên, bao gồm:

  • ChiefofStaffAcademy.com: Cung cấp các khóa học chuyên sâu về Agile, OKR và quản lý dự án.
  • Asia PMO: Tổ chức các sự kiện và khóa học về quản lý dự án và OKR, cung cấp kiến thức thực tiễn và ứng dụng hiệu quả.
  • OKR Champ: Chương trình chứng nhận OKR dành cho Việt Nam, giúp tổ chức và cá nhân triển khai thành công OKR.

Các loại kỹ năng mềm quan trọng bạn nên học:

Bên cạnh kỹ năng chuyên môn, các kỹ năng mềm cũng đóng vai trò quan trọng trong môi trường làm việc Agile và OKR:

  • Sáng tạo và độc đáo: Khả năng đưa ra ý tưởng mới mẻ, giải quyết vấn đề hiệu quả và tạo ra lợi thế cạnh tranh.
  • Trí tuệ cảm xúc và đồng cảm: Hiểu rõ cảm xúc bản thân và người khác, xây dựng mối quan hệ tốt đẹp và thúc đẩy hợp tác hiệu quả.
  • Tư duy phản biện và tư duy logic: Phân tích thông tin khách quan, đưa ra quyết định sáng suốt và giải quyết vấn đề phức tạp.
  • Giải quyết vấn đề phức tạp: Khả năng phân tích, đánh giá và đưa ra giải pháp sáng tạo cho các vấn đề khó khăn.
  • Khả năng thích nghi và linh hoạt: Dễ dàng thích nghi với thay đổi, duy trì hiệu quả công việc và phát triển trong môi trường biến động.
  • Đạo đức và tự nhận thức: Hiểu rõ giá trị đạo đức và trách nhiệm cá nhân, xây dựng uy tín và thúc đẩy văn hóa doanh nghiệp lành mạnh.

Lời khuyên chân thành:

  • Doanh nghiệp nên xây dựng lộ trình chuyển đổi Agile và OKR phù hợp với văn hóa và đặc thù của tổ chức.
  • Lãnh đạo cần cam kết và tạo điều kiện cho việc áp dụng Agile và OKR thành công.
  • Cần truyền thông hiệu quả để nhân viên hiểu rõ mục tiêu, lợi ích và cách thức áp dụng Agile và OKR.
  • Đầu tư vào đào tạo và phát triển kỹ năng cho nhân viên để họ có thể làm việc hiệu quả trong môi trường Agile và OKR.
  • Theo dõi và đánh giá hiệu quả triển khai Agile và OKR để điều chỉnh và cải tiến khi cần thiết.

Kết hợp Agile và OKR một cách hiệu quả sẽ giúp doanh nghiệp:

  • Tăng cường sự linh hoạt và khả năng thích ứng với thay đổi.
  • Nâng cao hiệu quả hoạt động và năng suất làm việc.
  • Thúc đẩy sáng tạo và đổi mới.
  • Tăng cường sự tập trung vào mục tiêu và kết quả.
  • Nâng cao tinh thần trách nhiệm và cam kết của nhân viên.
  • Tạo ra lợi thế cạnh tranh và thúc đẩy tăng trưởng bền vững.

Bằng cách áp dụng Agile và OKR, doanh nghiệp có thể nâng tầm quản lý, vận hành và phát triển trong kỷ nguyên số đầy biến động, từ đó gặt hái thành công và tạo dựng vị thế vững chắc trên thị trường.

Ứng dụng của AI vào ngành nhân sự

ai in human resource

Như một làn sóng mạnh mẽ, Trí tuệ nhân tạo (AI) đang len lỏi vào mọi ngóc ngách của đời sống, từ sản xuất, y tế, tài chính đến bán lẻ, và ngành Nhân sự cũng không ngoại lệ. Thay vì chỉ đơn thuần hỗ trợ các công việc hành chính, AI mang đến tiềm năng to lớn trong việc nâng cao hiệu quả hoạt động, tối ưu hóa chi phí, và tạo dựng môi trường làm việc sáng tạo cho doanh nghiệp.

Sức mạnh của AI: Nâng tầm quản lý nhân sự

AI bước vào đời sống và mở ra khả năng xử lý dữ liệu khổng lồ một cách nhanh chóng và chính xác, từ đó thổi bùng sức sống vào các quy trình nhân sự vốn thường tẻ nhạt và tốn nhiều thời gian. Nhờ AI, chúng ta có thể:

  • Tự động hóa các tác vụ thủ công: AI giải phóng nhân viên khỏi gánh nặng của những công việc lặp đi lặp lại như quản lý hồ sơ, chấm công, hay sàng lọc ứng viên. Nhờ vậy, họ có thể dành thời gian cho những công việc sáng tạo và mang lại giá trị cao hơn cho doanh nghiệp.
  • Nâng cao hiệu quả tuyển dụng: AI hỗ trợ nhà tuyển dụng tìm kiếm ứng viên phù hợp một cách nhanh chóng và chính xác hơn, dựa trên kỹ năng, kinh nghiệm và sở thích cá nhân. Việc này giúp tiết kiệm chi phí và thời gian cho tuyển dụng, đồng thời nâng cao chất lượng ứng viên.
  • Phát triển nhân tài: AI cung cấp cho nhà quản lý những đánh giá chi tiết về hiệu suất làm việc và tiềm năng phát triển của từng nhân viên. Nhờ vậy, họ có thể xây dựng kế hoạch đào tạo và phát triển phù hợp, giúp nhân viên phát huy tối đa năng lực và gắn bó lâu dài với doanh nghiệp.
  • Tăng cường trải nghiệm nhân viên: AI mang đến cho nhân viên những trải nghiệm tự phục vụ, dễ dàng truy cập thông tin và hỗ trợ họ giải quyết các vấn đề một cách nhanh chóng. Điều này góp phần nâng cao sự hài lòng và gắn kết của nhân viên với doanh nghiệp.

ai in human resource

Giải pháp toàn diện cho mọi nhu cầu nhân sự

Với những ứng dụng đa dạng của AI, một số nhà cung cấp đã có giải pháp toàn diện cho mọi nhu cầu nhân sự của doanh nghiệp, từ tuyển dụng, đào tạo, quản lý hiệu suất đến chấm công, quản lý khen thưởng và kế hoạch kế thừa. Nổi bật trong số đó là:

  • Hệ thống chấm công tự động qua Camera AI: Nhờ công nghệ nhận diện khuôn mặt tiên tiến, giúp chấm công chính xác, loại bỏ gian lận và tiết kiệm thời gian cho cả nhân viên và nhà quản lý.
  • Hệ thống sàng lọc hồ sơ tự động: AI tự động phân loại hồ sơ ứng viên dựa trên tiêu chí tuyển dụng, giúp nhà tuyển dụng nhanh chóng tìm kiếm những ứng viên phù hợp nhất.
  • Hệ thống đề xuất kế hoạch phát triển cá nhân: AI phân tích dữ liệu về hiệu suất làm việc và kỹ năng của nhân viên, đề xuất kế hoạch phát triển phù hợp để họ nâng cao năng lực và phát huy tiềm năng.
  • Hệ thống quản lý khen thưởng và phúc lợi: giúp tự động hóa việc tính toán lương thưởng, khen thưởng và phúc lợi cho nhân viên, đảm bảo tính minh bạch và công bằng.

Bức tranh tương lai: AI định hình ngành nhân sự

Nhìn về tương lai, AI sẽ đóng vai trò ngày càng quan trọng trong việc định hình ngành nhân sự. Với đà tăng trưởng hiện, các nhà cung cấp sẽ tiếp tục tiên phong trong việc ứng dụng AI, mang đến những giải pháp sáng tạo và hiệu quả hơn nữa, giúp các doanh nghiệp:

  • Xây dựng môi trường làm việc thông minh: AI sẽ giúp cá nhân hóa trải nghiệm làm việc, tự động hóa các quy trình và cung cấp cho nhân viên những công cụ cần thiết để họ làm việc hiệu quả nhất.
  • Quản lý nhân tài hiệu quả: AI sẽ hỗ trợ nhà quản lý trong việc tuyển dụng, đào tạo, phát triển và giữ chân nhân tài, đảm bảo nguồn nhân lực chất lượng cao cho doanh nghiệp.
  • Đưa ra quyết định dựa trên dữ liệu: AI cung cấp cho nhà quản lý những thông tin chi tiết và chính xác để họ đưa ra quyết định sáng suốt, hiệu quả hơn.
  • Tăng cường khả năng thích ứng: AI giúp doanh nghiệp nhanh chóng thích ứng với những thay đổi của thị trường và nhu cầu của nhân viên, đảm bảo sự linh hoạt và cạnh tranh trong môi trường kinh doanh đầy biến động.

Kết luận:

Bằng việc sử dụng AI và ứng dụng nó vào trong làm việc, các doanh nghiệp sẽ có thể tối ưu hóa quy trình quản lý nhân sự, nâng cao hiệu quả hoạt động, tạo ra môi trường làm việc thông minh và thu hút, giữ chân nhân tài, từ đó đạt được lợi thế cạnh tranh và thành công trong tương lai.

Top 7 trường đào tạo Công nghệ thông tin tốt tại TPHCM

Top 7 trường đào tạo công nghệ thông tin tốt nhất TP.HCM
Top 7 trường đào tạo công nghệ thông tin tốt nhất TP.HCM

Trong bối cảnh phát triển mạnh mẽ của công nghệ, ngành Công nghệ Thông tin (CNTT) trở thành một trong những ngành học được nhiều bạn trẻ lựa chọn. TP.HCM là trung tâm kinh tế, giáo dục lớn của Việt Nam, nơi tập trung nhiều trường đại học đào tạo CNTT chất lượng cao. Dưới đây là danh sách 7 trường đại học hàng đầu tại TP.HCM đào tạo ngành CNTT, giúp bạn có cái nhìn tổng quan và lựa chọn phù hợp cho tương lai.

Trường Đại học Bách khoa – Đại học Quốc gia TP.HCM

Trường Đại học Bách khoa – Đại học Quốc gia TP.HCM là một trong những trường đại học hàng đầu tại Việt Nam, đặc biệt nổi tiếng trong lĩnh vực kỹ thuật và công nghệ. Trường đào tạo ngành Công nghệ Thông tin (CNTT) với nhiều chuyên ngành như Khoa học Máy tính và Kỹ thuật Máy tính. Chương trình đào tạo của trường được thiết kế theo tiêu chuẩn quốc tế, cung cấp kiến thức nền tảng vững chắc và kỹ năng thực hành chuyên sâu.

Top trường CNTT TPHCM - Trường Đại học Bách khoa - Đại học Quốc gia TP.HCM
Trường Đại học Bách khoa – Đại học Quốc gia TP.HCM

Theo thông báo từ Trường Đại học Bách khoa TP. Hồ Chí Minh, từ năm 2023 điểm chuẩn được tính theo công thức:

Điểm chuẩn của trường trong ba năm gần nhất dao động từ 25 đến 28 điểm. Năm 2023 với sự thay đổi điểm xét tuyển, điểm hai ngành Khoa học Máy tính, Kỹ thuật Máy tính lần lượt là 86.9 và 85.7

Trường Đại học Bách khoa TP.HCM có mức học phí cho từng chương trình đào tạo áp dụng cho năm học 2023-2024 như sau:

  • Đối với chương trình tiêu chuẩn giảng dạy bằng tiếng Việt, học phí là khoảng 15 triệu đồng mỗi học kỳ, tương đương khoảng 30 triệu đồng mỗi năm (2 học kỳ).
  • Chương trình tài năng, cũng giảng dạy bằng tiếng Việt, có mức học phí tương tự là khoảng 15 triệu đồng mỗi học kỳ, tương đương khoảng 30 triệu đồng mỗi năm (2 học kỳ).
  • Chương trình tiên tiến, giảng dạy hoàn toàn bằng tiếng Anh, có học phí khoảng 40 triệu đồng mỗi học kỳ, tương đương khoảng 80 triệu đồng mỗi năm (2 học kỳ).

Ngoài ra trường còn có các hệ đào tạo liên kết quốc tế, mức học phí tham khảo thêm tại đây.

>> Xem thêm: Không biết gì về tin học có học được CNTT không?

Trường Đại học Khoa học Tự nhiên – Đại học Quốc gia TP.HCM

Trường Đại học Khoa học Tự nhiên – Đại học Quốc gia TP.HCM là một trong những cơ sở giáo dục hàng đầu tại Việt Nam, đặc biệt nổi tiếng trong lĩnh vực khoa học và công nghệ. Thành lập từ năm 1996, trường đã không ngừng phát triển và trở thành trung tâm nghiên cứu và đào tạo chất lượng cao, thu hút đông đảo sinh viên tài năng từ khắp nơi trên cả nước.

Trường Đại học Khoa học Tự nhiên - Đại học Quốc gia TP.HCM
Trường Đại học Khoa học Tự nhiên – Đại học Quốc gia TP.HCM

Ngành Công nghệ Thông tin (CNTT) tại Trường Đại học Khoa học Tự nhiên là một trong những ngành mũi nhọn, được đầu tư mạnh mẽ về cả nhân lực và cơ sở vật chất. Chương trình đào tạo CNTT của trường bao gồm 2 chuyên ngành chính như:

  1. Công nghệ Thông tin: Chương trình này cung cấp kiến thức toàn diện về lập trình, phát triển phần mềm, quản trị hệ thống và cơ sở dữ liệu. Sinh viên được trang bị kỹ năng thực hành vững vàng, sẵn sàng tham gia vào thị trường lao động ngay sau khi tốt nghiệp.
  2. Khoa học Dữ liệu: Đây là một trong những lĩnh vực mới nhưng đầy triển vọng, cung cấp kiến thức về phân tích dữ liệu, học máy và trí tuệ nhân tạo. Chương trình giúp sinh viên nắm bắt các kỹ thuật và công cụ hiện đại để xử lý và phân tích khối lượng lớn dữ liệu.

Tham khảo điểm chuẩn 2023 của các nhóm ngành CNTT tại trường Khoa học Tự nhiên TPHCM:

Mã ngành Tên ngành Điểm chuẩn
7460108 Khoa học dữ liệu 26,40
7480101_TT Khoa học máy tính (Chương trình Tiên tiến) 28,05
7480201_NN Nhóm ngành máy tính và Công nghệ thông tin 26,50

Học phí dự kiến cho năm 2024 là khoảng 30 triệu đồng/năm, tương xứng với các trang thiết bị và điều kiện học tập hiện đại.

Trường Đại học Sư phạm Kỹ thuật TP.HCM

Trường Đại học Sư phạm Kỹ thuật TP.HCM cũng là một trong các trường đại học đi đầu trong ngành CNTT. Chương trình học được thiết kế để cân bằng giữa lý thuyết và thực hành, giúp sinh viên dễ dàng thích nghi với môi trường làm việc sau khi tốt nghiệp.

Trường Đại học Sư phạm Kỹ thuật TP.HCM - Dẫn đầu ngành CNTT
Trường Đại học Sư phạm Kỹ thuật TP.HCM

Các chuyên ngành trong khối ngành CNTT tại trường bao gồm Công nghệ thông tin, Kỹ thuật dữ liệu và Kỹ thuật máy tính. Mỗi chuyên ngành đều được xây dựng với mục tiêu đáp ứng nhu cầu ngày càng cao của thị trường lao động và xu hướng phát triển công nghệ. Đặc biệt, trường thường xuyên cập nhật và đổi mới chương trình giảng dạy, đảm bảo rằng sinh viên luôn được tiếp cận với những kiến thức và công nghệ mới nhất.

Sau đây là điểm chuẩn các ngành thuộc nhóm ngành CNTT hệ đại trà của trường ĐH SPKT TPHCM năm 2023:

Khối thi Tên ngành Điểm chuẩn
A00, A01, D01, D90 Công nghệ thông tin (đại trà) 26.64
A00, A01, D01, D90 Công nghệ kỹ thuật máy tính 26.15
A00, A01, D01, D90 Kỹ thuật dữ liệu 26.81

Học phí năm 2023 – 2024 đã được trường công bố chính thức tại đây, các ngành học có học phí dao động từ 30-40tr/năm tùy vào chương trình đào tạo.

Trường Đại học Công nghệ Thông tin TP.HCM

Trường Đại học Công nghệ Thông tin TP.HCM được thành lập vào năm 2006, được tách từ khoa Công nghệ thông tin của trường KHTN, vì vậy đây là một trong những trường uy tín trong đào tạo ngành CNTT. UIT được thành lập với mục tiêu đào tạo nguồn nhân lực chất lượng cao trong các lĩnh vực liên quan đến công nghệ thông tin và truyền thông, đáp ứng nhu cầu ngày càng tăng của thị trường lao động.

Các chuyên ngành đào tạo chính tại UIT bao gồm Khoa học Máy tính, Kỹ thuật phần mềm, An ninh thông tin, Mạng máy tính và Truyền thông. Chương trình học tại UIT được thiết kế theo chuẩn quốc tế, chú trọng vào việc phát triển kỹ năng thực hành và khả năng nghiên cứu. Sinh viên tại UIT được học tập trong môi trường hiện đại, với các phòng thí nghiệm và trang thiết bị tiên tiến.

Tham khảo điểm chuẩn các ngành CNTT năm 2023 của UIT:

Học phí dự kiến cho năm 2024 là khoảng 24 triệu đồng/năm

Mức học phí thấp nhất tại trường Đại học Công Nghệ thông tin TPHCM là 30tr/năm cho hệ đại trà và cao nhất là 150tr/năm cho hệ đào tạo liên kết nước ngoài.

>> Có thể bạn quan tâm: Học phí ngành công nghệ thông tin 2024 – 2025

Trường Đại học Công nghiệp TP.HCM

Trường Đại học Công nghiệp TP.HCM đào tạo ngành cntt
Trường Đại học Công nghiệp TP.HCM

Trường Đại học Công nghiệp TP.HCM (IUH) là một trong những trường đại học uy tín trong việc đào tạo ngành Công nghệ Thông tin, khác với những trường thuộc khối Đại học quốc gia TPHCM, ĐH Công nghiệp có địa chỉ tại Gò Vấp, trung tâm TPHCM. IUH nổi tiếng với chương trình đào tạo ứng dụng thực tiễn cao, giúp sinh viên dễ dàng thích nghi với môi trường làm việc sau khi tốt nghiệp.

Các chuyên ngành chính trong lĩnh vực CNTT tại IUH bao gồm Công nghệ phần mềm, Hệ thống thông tin và Khoa học máy tính. Chương trình đào tạo của trường kết hợp giữa lý thuyết và thực hành, với nhiều cơ hội thực tập tại các doanh nghiệp công nghệ lớn. Trường cũng đặc biệt chú trọng đến việc phát triển các kỹ năng mềm và kỹ năng làm việc nhóm cho sinh viên.

Điểm chuẩn của IUH trong ba năm gần đây dao động từ 21 đến 25 điểm. Học phí dự kiến cho năm 2024 là khoảng 22 triệu đồng/năm, mức học phí tương thấp hơn một chút so với mặt bằng chung nhưng vẫn đảm bảo cơ sở vật chất và điều kiện giảng dạy tốt nhất cho sinh viên.

>> Xem thêm: Top 10 trường có ngành CNTT tốt nhất cả nước

Đại Học Quốc Tế – Đại Học Quốc Gia TP.HCM

Trường đào tạo IT tại TPHCM - Đại Học Quốc Tế – Đại Học Quốc Gia TP.HCM
Đại Học Quốc Tế – Đại Học Quốc Gia TP.HCM

Đại Học Quốc Tế – Đại Học Quốc Gia TP.HCM (HCMIU) là trường đại học công lập đầu tiên tại Việt Nam sử dụng tiếng Anh làm ngôn ngữ giảng dạy chính trong tất cả các chương trình đào tạo. HCMIU nổi bật với các chương trình đào tạo theo tiêu chuẩn quốc tế, đặc biệt trong lĩnh vực CNTT.

Các chuyên ngành CNTT tại HCMIU bao gồm Khoa học Máy tính, Kỹ thuật Máy tính và Kỹ thuật phần mềm. Chương trình học được xây dựng với sự hợp tác chặt chẽ với các trường đại học và tổ chức quốc tế, đảm bảo sinh viên được tiếp cận với những công nghệ và phương pháp giảng dạy tiên tiến nhất. Sinh viên tại HCMIU cũng có nhiều cơ hội tham gia các chương trình trao đổi và thực tập quốc tế.

Điểm chuẩn trong ba năm gần nhất của HCMIU thường từ 24 đến 28 điểm, cho thấy yêu cầu cao về chất lượng đầu vào. Học phí dự kiến cho năm 2024:

  • Chương trình do trường Đại học Quốc tế cấp bằng: khoảng 50.000.000 VNĐ/năm (học phí này có thể thay đổi dựa trên số tín chỉ thực đăng ký mỗi học kỳ).
  • Các chương trình liên kết: Học phí 2 năm đầu tại Việt Nam khoảng 63.000.000 đến 67.000.000 VNĐ/năm, các năm sau học tại các trường đại học nước ngoài sẽ có mức học phí theo yêu cầu của trường theo học.

Trường Đại học Sài Gòn

Trường Đại học Sài Gòn (SGU) là một trong những trường đại học uy tín tại TP.HCM với nhiều ngành đào tạo đa dạng, trong đó ngành CNTT là một trong những ngành mũi nhọn. SGU chú trọng vào việc cung cấp kiến thức nền tảng vững chắc cùng kỹ năng thực hành cho sinh viên.

Trường Đại học Sài Gòn
Trường Đại học Sài Gòn

Các chuyên ngành CNTT tại SGU bao gồm Công nghệ Thông tin, Khoa học Máy tính và Hệ thống Thông tin. Chương trình đào tạo của SGU được thiết kế để đáp ứng nhu cầu thực tế của thị trường lao động, với nhiều cơ hội thực hành và tham gia các dự án thực tế. Trường cũng thường xuyên tổ chức các hội thảo, hội nghị chuyên ngành để sinh viên có cơ hội học hỏi và trao đổi kinh nghiệm.

Điểm chuẩn trong ba năm qua của SGU thường từ 20 đến 24 điểm, phản ánh mức độ cạnh tranh vừa phải nhưng vẫn đảm bảo chất lượng đầu vào. Học phí dự kiến cho năm 2024 là khoảng 20 triệu đồng/năm, phù hợp với điều kiện kinh tế của nhiều sinh viên và gia đình.

Những trường đại học trên đều là những lựa chọn hàng đầu cho các bạn sinh viên mong muốn theo đuổi ngành CNTT tại TP.HCM. Mỗi trường đều có những điểm mạnh riêng về chương trình đào tạo, cơ sở vật chất và học phí, giúp các bạn có nhiều sự lựa chọn phù hợp với nhu cầu và điều kiện cá nhân. Việc lựa chọn trường phù hợp sẽ là bước khởi đầu quan trọng cho sự nghiệp tương lai trong lĩnh vực công nghệ thông tin.

Việc làm fresher tại TP.HCM

5 lỗi sai cơ bản thường gặp trong C#

lỗi sai cơ bản trong C#

Bài viết được sự cho phép bởi tác giả Vũ Thành Nam

#1 Sử dụng kiểu dữ liệu tham chiếu như một kiểu nguyên thuỷ hay kiểu giá trị

Trong lập trình C++ hay nhiều ngôn ngữ khác có sử dụng kiểu dữ liệu tham chiếu, tức là các giá trị cửa kiểu dữ liệu đó tham chiều tới cùng một vùng nhớ. Để hiểu về kiểu dữ liệu nguyên thuỷ (value type hay primitive type) hay kiểu dữ liệu tham chiếu (reference type) bạn cần hiểu đôi chút về vùng nhớ trong đó có heap và stack. Kiểu dữ liệu tham chiếu tuy các giá trị được lưu trên stack nhưng để truy vấn nó thì lại gọi theo heap. Hay tưởng tượng 1 ngôi nhà có địa chỉ và khi gửi thư ta thưởng gửi tới địa chỉ 123/4 chẳng hạn.

Các kiểu int, long, bool, float là kiểu dữ liệu nguyên thuỷ hay kiểu giá trị. Còn object là một loại kiểu dữ liệu tham chiếu nên khi bạn gán giá trị hãy chú ý đến sự tham chiếu của nó nhé. Nhưng Nhưng Nhưng! Đừng tưởng cứ object là tất tần tật như nhau…

Ví dụ:

  Point point1 = new Point(20, 30);
  Point point2 = point1;
  point2.X = 50;
  Console.WriteLine(point1.X);       // 20 (does this surprise you?)
  Console.WriteLine(point2.X);       // 50
  
  Pen pen1 = new Pen(Color.Black);
  Pen pen2 = pen1;
  pen2.Color = Color.Blue;
  Console.WriteLine(pen1.Color);     // Blue (or does this surprise you?)
  Console.WriteLine(pen2.Color);     // Blue

Ví dụ trên thì Point và Pen là object được tạo ra bằng cùng 1 cách, nhưng giá trị của point1 không đổi khi gán một giá trị mới từ point2, trong khi giá trị pen1 lại bị thay đổi khi gán giá trị color mới được gán từ pen2. Chúng ta có thể nhận thấy, point1 và point2 chứa giá trị sao chép đối tượng Point, trong khi pen1 và pen2 lại chỉ chứa tham chiểu tương đồng của đổi tượng Pen.

Đi sâu hơn (f12 sẽ thấy) thì Point là struct (kiểu giá trị) còn Pen là class (kiểu tham chiếu chính gốc đấy nhé).

#2 Hiểu sai về giá trị mặc định khi biến không được khởi tạo giá trị ban đầu

Trong C# kiểu dữ liệu nguyên thuỷ hay kiểu giá trị không thể null. Nhớ nhé khi khai báo 1 object chưa được gán giá trị khởi tạo thì nó là null, nhưng đổi với kiểu giá trị thì nó không null đâu đừng có mà check null biến có kiểu giá trị làm gì.

class Program 
{
      static Point point1;
      static Pen pen1;
      static void Main(string[] args) 
      {
          Console.WriteLine(pen1 == null);      // True
          Console.WriteLine(point1 == null);    // False (huh?)
      }
}

Như đề cập ở trên Point là struct nó không có giá trị mặc định là null mà là (0,0)

Các đạik C# thường dùng hàm extension IsEmpty để check cho các đa số (không phải tất cả) biến kiểu giá trị nhé.

  So sánh C# và C++ - Nên học ngôn ngữ nào?

  Học gì để trở thành C# developer? Những kiến thức quan trọng

#3 Sử dụng sai hay hiểu sai hàm string comparison

Có nhiều cách để so sánh chuỗi string trong C# và đa số khi so sánh lại sử dụng toán tử == Nó thực sự là một phương thức không hề an toàn một chút nào chính bỏi vì nó không hề tường minh khi bạn muốn so sánh chuỗi đi kèm type. Đào sau hơn xem thử có 2 cách so sánh chuỗi trong C# với Equals.

public bool Equals(string value);
public bool Equals(string value, StringComparison comparisonType);

Dấu == chính là ngầm định của kiểu so sánh Equals đầu tiên không sử dụng StringComparison. Thật chẳng có gì xảy ra khi so sánh chuỗi cơ bản các ký tự alphabet, số hay ký tự đặc biệt thông dụng. Tuy nhiên nếu bạn cần dựa trên ngôn ngữ cài đặt trên môi trường chạy (hệ điều hành chẳng hạn) thì một số ký tự sẽ được coi là khác nhau nếu chuyển đổi môi trường khác nhau (CurrentCultrure) nó khác nhau. Chính vì vậy khi so sánh chuỗi sẽ an toàn hơn nếu sử dụng hàm Equals bao gồm comparisonType. Ví dụ dưới đây cho thấy giá trị so sánh sẽ khác nhau tuỳ thuộc vào option của comparisonType.

string s = "strasse";

// outputs False:
Console.WriteLine(s == "straße");
Console.WriteLine(s.Equals("straße"));
Console.WriteLine(s.Equals("straße", StringComparison.Ordinal));
Console.WriteLine(s.Equals("Straße", StringComparison.CurrentCulture));        
Console.WriteLine(s.Equals("straße", StringComparison.OrdinalIgnoreCase));

// outputs True:
Console.WriteLine(s.Equals("straße", StringComparison.CurrentCulture));
Console.WriteLine(s.Equals("Straße", StringComparison.CurrentCultureIgnoreCase));

Không chỉ có phương thức Equals, ngay cả phương thức Compare cũng nên dùng comparisonType nhé. Chỉ dùng ==, >, <, <=, >= đối với so sánh chuỗi khá có thể sẽ gặp rủi ro vào một ngày đẹp trời đó.

Tham khảo việc làm lập trình C hấp dẫn trên TopDev!

#4 Sử dụng vòng lặp thay vì khai báo liệt kê (LINQ) trong collections (kiểu tập hợp)

C# 3.0 mang đến cho chúng ta LINQ (Language Integrated Query) với rất nhiều tiện ích khi làm việc với tập hợp khi truy vấn (queries) và liệt kê chúng. Nhưng đừng nên lạm dụng chúng nhé. LINQ được sinh ra với ý nghĩa đơn giản hoá và làm tương đồng với các hình thức truy vấn database và nó chỉ nên làm việc khi truy vấn database.

Có người cho rằng chúng chẳng làm sai kết quả mà lại gọn gàng dễ hiểu (theo mình cũng chẳng dễ hiểu đâu). Ví dụ:

decimal total = 0;
foreach (Account account in myAccounts) 
{
	if (account.Status == "active") 
	{
		total += account.Balance;
	}
}

//Or

decimal total = (from account in myAccounts
				where account.Status == "active"
				select account.Balance).Sum();

Rồi để xem nhé, với LINQ kìa nó lấy lên 1 danh sách các balance (1 lần lặp) sau đó duyệt chung và tính tổng (1 lần lặp trong Sum á) vậỵ là 2 lần lặp rồi nhá. Code ngắn vậy thôi nhưng sao nó đang làm tăng độ phức tạp lên kìa, trong khi bên trên ta chỉ có mỗi vòng lặp xử lý. Thêm vào đó LINQ không thể (đúng hơn là rất khó) debug khi gắn logic vào nó. Không tin hả! thử cộng trừ nhân chia trong LINQ và trace kết quả coi. Hãy đơn giản hoá nó và trả nó về với mục đích chính của nó nhé. Đáng cân nhắc phải không?

#5 Những lỗi cơ bản cần cân nhắc trước khi làm việc với LINQ

LINQ làm việc rất tốt đối với việc xử lý đa tiến trình (task) trong tập hợp (collections) liệu rằng chúng có lưu trên bộ nhớ của các đối tượng (objects) bảng cơ sở dữ liệu (database tables) hay xml… Đời không phải lúc nào cũng hoàn hảo, nếu có lỗi trong quá trình truy vấn thì sao, liệu rằng nó sẽ văng (throw) ra exception hay trả về một kết quả khác sai hoàn toàn. Chẳng phải bạn luôn thích try catch trong mọi hàm hay sao 😀

decimal total = (from account in myAccounts
                       where account.Status == "active"
                       select account.Balance).Sum();

Điều gì xảy ra nếu account.Status là “Active” (chữ A lại viết hoa mới đểu), vâng thật tuyệt vời khi myAccounts được lưu trong đối tượng DbSet (phía hạ tầng database) sau khi truy vấn thông qua biểu thức sẽ vẫn khớp với phần tử đó. Tuy nhiên nếu myAccounts lại được lưu trong bộ nhớ đệm của mảng, nó sẽ trả về một giá trị khác đi. Khoan đã nào, ở đây có 2 vấn đề cần được làm rõ. Thứ nhất tại sao không dùng Equals với comparisonType như ở trên nói mà lại dùng ==. Thứ 2, nếu dùng một hàm extension methods ở chỗ điều kiện kia (ví dụ account.Status.LowerCase()  == “active”) và trong hàm đó nó lăn ra chết 😀 (tức là throw exception đó) thì điều gì xảy ra đối với hàm Sum.

Câu trả lời cho điều thứ nhất là do LINQ là ngôn ngữ translate thành câu lệnh TSQL nên việc dùng == ở trường hợp này lại là một cách chính xác. Và cũng chính do nó tuân theo toán tử TSQL nên mọi Extension method đều không dùng được trong LINQ. Nên điều thứ 2 ở trên không thực hiện được đâu trừ khi đổi sang dạng lambda với extension mà .Net hỗ trợ sẵn khi đó nó mới tuân theo C# rule. Tham khảo tại đây: https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable?redirectedfrom=MSDN&view=netframework-4.7.2  và https://www.c-sharpcorner.com/article/linq-extension-methods/

Nói tóm lại là LINQ là ngôn ngữ chuyển đổi thành TSQL nó tuân theo luật rừng của TSQL nên khi đúng cần chú ý nhé!

Bài viết gốc được đăng tải tại ntechdevelopers.com

Xem thêm:

Tham khảo ngay việc làm IT mọi cấp độ trên TopDev!