Mảng là một kiểu dữ liệu cơ bản có cấu trúc mà mọi lập trình viên đều phải nắm vững, tuy vậy khi một mảng có nhiều chiều thì cấu trúc dữ liệu này sẽ trở nên phức tạp hơn. Với ngôn ngữ lập trình thiên về khả năng tính toán như C++, cấu trúc mảng 2 chiều là một phần kiến thức quan trọng có tính ứng dụng cao giúp chúng ta có thể xử lý các bài toán lưu trữ và thao tác với dữ liệu thực tế. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về mảng 2 chiều trong C++ và làm quen với nó thông qua các ví dụ cụ thể nhé. Mảng 2 chiều trong C++ Trong C++, mảng 2 chiều được hiểu đơn giản là một mảng có 2 phần tử mà trong đó mỗi phần tử chính là một mảng. Định nghĩa này cũng có thể được mở rộng ra với mảng nhiều chiều. Mả [...]
Read more →Toán tử (Operator) là một khái niệm cơ bản trong mọi ngôn ngữ lập trình, một yếu tố không thể thiếu trong mọi chương trình chạy và cũng là một phần kiến thức quan trọng mà chúng ta cần nắm vững khi viết code. C++ là một ngôn ngữ lập trình đa năng, bậc cao được sử dụng nhiều trong tính toán; vì thế nó cũng được trang bị đầy đủ các loại toán tử khác nhau. Bài viết hôm nay chúng ta cùng tìm hiểu về toán tử trong C++, các loại toán tử với cách sử dụng và thứ tự ưu tiên thực hiện của nó nhé. Toán tử trong C++ là gì? Toán tử - Operators là những ký hiệu, biểu tượng được quy định sẵn từ trước; hoạt động trên các giá trị (có thể thông qua các biến) để thực hiện các phép tính toán cụ thể trong chương trình. Ví dụ chúng ta muốn thực hiện phép toá [...]
Read more →Trong thời đại công nghệ số, thanh toán di động đang ngày càng trở nên phổ biến, đặc biệt tại Việt Nam. Theo báo cáo, đến cuối năm 2023, Việt Nam có khoảng 36 triệu tài khoản ví điện tử đang hoạt động, nắm giữ khoảng 3000 tỷ đồng. Vậy làm thế nào để khoa học dữ liệu có thể thay đổi hành vi thanh toán di động? Bài viết này sẽ cung cấp cái nhìn chi tiết về cách khoa học dữ liệu có thể thay đổi hành vi thanh toán di động. Tầm Quan Trọng của Thanh Toán Di Động Thanh toán di động không chỉ tiện lợi mà còn nhanh chóng và an toàn, giúp người dùng tiết kiệm thời gian và công sức. Việc sử dụng ví điện tử và các ứng dụng thanh toán di động ngày càng phổ biến, đặc biệt trong bối cảnh dịch bệnh COVID-19 thúc đẩy sự phát triển của các phương thức thanh toán không tiếp xúc. Khoa [...]
Read more →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 [...]
Read more →Bài viết được sự cho phép của tác giả Duy Phan Ở bài viết này mình sẽ hướng dẫn bạn bắt đầu xây dựng một ứng dụng HMVC với Laravel, và tận dụng sức mạnh của Composer khi quản lí modules. Tạo mới một dự án Laravel Khởi tạo một dự án Laravel mới bằng dòng lệnh sau $ composer create-project --prefer-dist laravel/laravel hmvc-project $ cd hmvc-project Lúc này cấu trúc thư mục của chúng ta sẽ có dạng như thế này |- app/ |- Console/ |- Exceptions/ |- Http/ |- Providers/ User.php |- bootstrap/ |- config/ |- database/ |- public/ |- resources |- routes/ |- storages/ |- tests/ |- vendor/ ... Khởi tạo thư mục chứa các modules HMVC Chúng ta sẽ cố gắng không sử dụng cấu trúc thư mục mặc định để tránh tối đa sự xung đột hoặc khó khăn lúc nâng cấp lên các phiên bản cao hơn khi mà Laravel định kỳ release 6 tháng một lần. Điều này cũng giúp bạn đạt được sự thuận tiện tối đa [...]
Read more →Trong lập trình, toán tử có thể hiểu là một hàm với các toán hạng là các giá trị đầu vào (input), thực hiện một số các phép toán cụ thể và trả về một giá trị đầu ra (output). Mỗi toán tử được quy định với các ký hiệu, biểu tượng riêng đặc trưng trong từng ngôn ngữ lập trình. Hầu hết các ngôn ngữ lập trình đều sẽ hỗ trợ các loại toán tử cơ bản giống nhau. Với một ngôn ngữ mạnh về khả năng tính toán như Python, việc nắm được các loại toán tử và sử dụng chúng là điều cực kỳ quan trọng để tối ưu source code dự án. Bài viết hôm nay chúng ta cùng tìm hiểu xem Python hỗ trợ những loại toán tử nào và cách sử dụng chi tiết từng loại toán tử đó nhé. Giới thiệu về toán tử Python Trong Python, các toán tử được khai báo bằng các biểu tượng, [...]
Read more →Bài viết được sự cho phép của tác giả Lê Nhật Thanh Target của bài viết: Những bạn muốn trở thành Senior backend developer hoặc mong muốn tìm hiểu CQRS là gì. Một số thuật ngữ mình dùng trong bài viết các bạn có thể search thêm cụ Google để nắm hơn: High availability: Một hệ thống website có tính sẵn sàng cao. Hoạt động liên tục 24/7 trong mọi điều kiện, kể cả khi có sự cố xảy ra. High consistency: Tính nhất quán về dữ liệu, tất cả request của user đều thấy được dữ liệu mới nhất nếu nó được update. Trade-off: Đánh đổi khi thiết kế hệ thống lớn GIỚI THIỆU MỘT CHÚT TRƯỚC KHI TÌM HIỂU CQRS LÀ GÌ Bài viết này rất dài, có thể sẽ mất của bạn vài chục phút đến vài giờ để đọc và hiểu nội dung. Nhưng nó sẽ rất đáng nếu bạn bỏ ra từng ấy thời gian vì những gì bạn sẽ thu lại được. Mì [...]
Read more →Bài viết được sự cho phép bởi tác giả Vũ Thành Nam Có lẽ đây là một chủ đề nói đơn giản cũng không hẳn mà nói phức tạp cũng không hẳn, đi sâu hơn vào lĩnh vực này mình cảm thấy mình thật nhỏ bé, vì vậy có thể bài viết này sai sót ở đâu đó do mình còn ít kinh nghiệm mong các bạn có thể bổ sung góp ý thêm nhé! Đầu tiên thì bạn thường đặt câu hỏi tại sao lại phải làm phức tạp hóa vấn đề lên trong khi một phần mềm chỉ cần đáp ứng đúng và đủ nhu cầu hiện tại của mình. Nếu như bạn đã đọc qua về quá trình phát triển của các kiến trúc phần mềm thì bạn sẽ nhận thấy chúng ta thiết kế không phải nhằm mục đích đáp ứng mỗi nhu cầu hiện tại, mà nó còn để giải quyết những vấn đề phát triển trong tương [...]
Read more →Bài viết được sự cho phép bởi tác giả Vũ Thành Nam Trong quá trình tuyển dụng và đánh giá ứng viên trong lĩnh vực công nghệ thông tin, phỏng vấn về thuật toán là một phần không thể thiếu. Không chỉ là một bước để kiểm tra kiến thức và kỹ năng của ứng viên, mà còn là cơ hội để hiểu rõ hơn về khả năng giải quyết vấn đề, tư duy logic và khả năng ứng dụng thực tiễn của họ. Trong bài viết này, cùng mình tìm hiểu tại sao lúc phỏng vấn lại hay hỏi về thuật toán nhé! Đầu tiên là giúp người phỏng vấn đánh giá nền tảng kiến thức và kỹ năng cơ bản của ứng viên. Có thể bạn đã biết thì thuật toán là nền tảng quan trọng của lập trình cũng như ngành khoa học máy tính. Việc phỏng vấn về thuật toán giúp nhà tuyển dụng đánh [...]
Read more →Thuật toán là một chuỗi các bước có trình tự rõ ràng để giải quyết một vấn đề. Trong lập trình C++, thuật toán đóng vai trò quan trọng trong việc phát triển phần mềm hiệu quả và tối ưu. Do đó, việc hiểu được các c++ algorithm cơ bản là nền tảng cho bất kỳ ai muốn bước vào thế giới lập trình. Khái quát về thuật toán C++ C++ là một ngôn ngữ lập trình hướng đối tượng và được sử dụng rộng rãi trong các ứng dụng khoa học máy tính, game và hệ thống nhúng. Với sự phát triển của công nghệ, việc tối ưu hóa và xử lý dữ liệu trở thành một yếu tố quan trọng trong lập trình và đây chính là lý do tại sao thuật toán lại trở nên cực kỳ quan trọng trong lập trình C++. Trong C++, thuật toán được sử dụng để giải quyết các vấn đề liên quan đến xử lý dữ [...]
Read more →Bài viết gốc được đăng tải tại thuvienphapluat.vn Các cá nhân thuộc diện tự quyết toán thuế TNCN năm 2023 Những trường hợp không được ủy quyền quyết toán thuế TNCN thì phải tự quyết toán thuế TNCN từ tiền lương, tiền công. Cá nhân cư trú có thu nhập từ tiền lương, tiền công trực tiếp khai quyết toán thuế TNCN với cơ quan thuế nếu có số thuế phải nộp thêm hoặc có số thuế nộp thừa đề nghị hoàn hoặc bù trừ vào kỳ khai thuế tiếp theo. Cá nhân có mặt tại Việt Nam tính trong năm dương lịch đầu tiên dưới 183 ngày, nhưng tính trong 12 tháng liên tục kể từ ngày đầu tiên có mặt tại Việt Nam là từ 183 ngày trở lên thì năm quyết toán đầu tiên là 12 tháng liên tục kể từ ngày đầu tiên có mặt tại Việt Nam. Cá nhân là người nước ngoài kết thúc hợp đồng làm việ [...]
Read more →Bài viết được sự cho phép bởi tác giả Sơn Dương Nằm trong series học thuật toán – cấu trúc dữ liệu và giải thuật, chúng ta cùng nhau tìm hiểu các phương pháp để tìm ước chung lớn nhất, code được minh họa bằng Java. Trước hết, chúng ta cùng nhau tìm hiểu lý thuyết trước đã nhé. Định nghĩa ước chung lớn nhất Trước khi hiểu ước chung lớn nhất, bạn cần phải biết ước số là gì? Đơn giản lắm, ước số của một số nguyên a là số nguyên b khi và chỉ khi số a chia hết cho số b. Ước chung lớn nhất (GCD – Greatest Common Divisor) của hai hay nhiều số nguyên là số lớn nhất trong tập hợp ước chung. Ngược với ước chung lớn nhất là bội số chung nhỏ nhất. Mình sẽ dành riêng bài viết sau để hướng dẫn sử dụng thuật toán để tìm bội số chung nhỏ nhất. Các bạn đón đọc nhé. Ứng dụng thực [...]
Read more →Bài viết được sự cho phép bởi tác giả Sơn Dương Dijkstra là một trong những thuật toán rất nổi tiếng trong giới lập trình. Nghe tới những bài toán liên quan tới tìm đường đi ngắn nhất là nghĩ ngay tới thuật toán Dijkstra. Dijkstra là thuật toán được đặt tên theo nhà khoa học máy tính người Phần Lan, người đã phát minh ra nó. Thuật toán này nhằm mục đích tìm đường đi ngắn nhất trong đồ thị có cạnh với trọng số dương. Tổng quan thuật toán Dijkstra Trước khi đi vào chi tiết nội dung thuật toán, chúng ta cần phải hiểu những thuật ngữ sau: Graph (đồ thị): Đồ thị là một cấu trúc dữ liệu phi tuyến tính được định nghĩa là G = (V, E), trong V là tập hợp hữu hạn các đỉnh (node), E là tập hợp hữu hạn các cạnh, cạnh là một đường nối giữa hai node với nhau. Weighted graph (đồ thị có trọ [...]
Read more →Thuật toán Brute Force hay còn được gọi là thuật toán vét cạn là một trong những giải thuật cơ bản trong lập trình mà mọi người thường xuyên sử dụng. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về thuật toán này và áp dụng nó để giải quyết bài toán Trapping Rain Water nhé. Thuật toán Brute Force Thuật toán vét cạn (Brute Force) đúng như cái tên của nó sẽ thực hiện việc xét qua tất cả các trường hợp có thể xảy ra để tìm kiếm kết quả. Thuật toán này cho chúng ta một cách tiếp cận đơn giản, dễ hiểu, dễ nhận thấy nhất mặc dù nó không phải là cách tốt nhất. Linear Search (tìm kiếm tuyến tính) là một bài toán tiêu biểu của thuật toán vét cạn, với việc duyệt qua lần lượt các phần tử trong mảng cho đến khi tìm ra đượ [...]
Read more →Bài viết được sự cho phép của tác giả Thanh Lê Tại sao nên đọc bài này Đập vào mặt những đứa nói làm Frontend thì không cần logic, thuật toán Xem tui khoe công việc đang làm thôi Vấn đề Chuyện là mình đang build một feature cho https://getnimbus.io, trong đó có một tính năng gọi là Term explain, cơ bản khi bạn đang xem một trang web nào đó mà có một vài từ về web3 thì Nimbus sẽ giải thích từ đó là gì, một cách ngắn gọn nhất. [video width="2842" height="1806" mp4="https://topdev.vn/blog/wp-content/uploads/2024/01/term-explain.mp4"][/video] Đó cơ bản feature là vậy, tuy nhiên có một vấn đề nhỏ: Một trang web sẽ có rất nhiều content, và thường user khi đọc một article hay news thì thường sẽ chỉ focus vào content đó thôi. Nếu vậy sẽ cực kì khó chịu nếu mình show một đống term explain mà không năm trong main content. Vậy câu hỏi tiếp theo, làm sao mình tự động detect được node nào trong cây DOM chứ [...]
Read more →