


Python là một ngôn ngữ lập trình bậc cao, mã nguồn mở được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, vì thế mà nhu cầu học để trở thành lập trình viên Python ngày càng lớn. Để học bất cứ ngôn ngữ lập trình nào thì việc tối quan trọng là cần phải thực hành nhiều nhất có thể. Bài viết hôm nay mình sẽ giúp các bạn phân loại, giải quyết các bài tập Python theo cấp độ từ cơ bản đến nâng cao thông qua các ví dụ cụ thể nhé. Cấp độ lập trình Python Lập trình Python thông thường được chia thành 3 cấp độ: Beginner, Intermediate và Advanced; tương ứng với đó là các kiến thức liên quan đến Python sẽ được áp dụng vào thực tế. Ở level Beginner, chúng ta tập trung vào các khái niệm cơ bản, về kiểu dữ liệu, cách viết hàm và một số thư viện cơ bản trong Python. Khi đã nắm vững đượ [...]
Read more →
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 →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 →
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 →
Test plan là một tài liệu thiết yếu được sử dụng trong quá trình phát triển và cải thiện chất lượng phần mềm. Trong bài viết này, chúng ta sẽ tìm hiểu về khái niệm test plan là gì, các thành phần chính và mục đích của test plan. Test plan là gì? Test plan là một tài liệu chi tiết mô tả các hoạt động, phương pháp và kế hoạch để thực hiện một quá trình kiểm thử cho một sản phẩm hoặc một hệ thống. Đây là một phần quan trọng trong việc kiểm thử phần mềm, giúp nhóm phát triển xác định được tất cả các thông tin cần thiết về mục tiêu, phạm vi, lịch trình, tài nguyên và các bước cụ thể để tiến hành thực hiện kiểm thử. >>> Xem thêm: Stress testing là gì? Phân biệt stress testing và load testing Mục đích của test plan là gì? Test plan được sử dụng phổ biến vì: [...]
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 →
Kong Gateway hiện đang là giải pháp API Gateway mã nguồn mở phổ biến nhất hiện nay. Nó giúp chúng ta có thể nhanh chóng, thuận tiện và bảo mật trong việc triển khai kiến trúc Microservices; cũng như cung cấp thêm các dịch vụ mở rộng khác. Bài viết hôm nay chúng ta cùng nhau tìm hiểu xem Kong Gateway là gì cùng một số hướng dẫn thiết lập để sử dụng API Gateway này nhé. API Gateway là gì? Trong một hệ thống Microservices, nếu như client giao tiếp trực tiếp với các services thì sẽ tạo ra một sơ đồ kết nối rất rối rắm và cực kỳ khó quản lý, cùng với đó thì các vấn đề sau có thể phát sinh: Code phía client trở nên phức tạp vì phải tracking nhiều endpoint Khó maintain phía client và refactor các service Mỗi service phải handle nhiều vấn đề chung như Authentication, SSL, client rate limiting. Giải pháp được đưa ra cho vấn đề trên là API Gateway – một cổng trung gian [...]
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? Để bạn có một cái nhìn đa chiều hơn về ngành phần mềm, không phải hoàn toàn là việc nhẹ lương cao như thằng em sn 96… Một số sự thật khó tiêu hóa trong ngành phần mềm. Có khi nó giúp bạn nhận ra và unlock được một level mới Nối tiếp phần 1 được rất nhiều người đón nhận, thì đây là phần 2222222 ✌️ Disclaim lại lần nữa: Đây là bản dịch từ bài gốc https://vadimkravcenko.com/shorts/things-they-didnt-teach-you/ dưới lời văn đã thay đổi nhiều cho phù hợp với cảm nhận của bản thân mình . Khuyến khích mọi người đọc cả bài gốc lẫn bài của mình để có nhiều góc nhìn hơn. Gét gô Bạn lúc nào cùng sống trong trạng thái mập mờ (Uncertain time) Đối phó với con người đã khó, đối phó với trạng thái mập mờ còn [...]
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? Để bạn có một cái nhìn đa chiều hơn về ngành phần mềm, không phải hoàn toàn là việc nhẹ lương cao như thằng em sn 96… Một số sự thật khó tiêu hóa trong ngành phần mềm. Có khi nó giúp bạn nhận ra và unlock được một level mới. Nội dung của bài viết này sẽ được dịch từ bài gốc ở trên, dĩ nhiên là dưới góc nhìn của mình, có thêm bớt khá nhiều. Tác giả cũng disclaim là đây cũng chỉ là góc nhìn chủ quan của tác giả. Tuy nhiên mình thấy đây là bài viết cực kì hay về ngành mà mình đang làm. Bác nào giỏi tiếng anh thì nên đọc bài gốc và skip qua bài của mình cũng được nhé. Đọc xong back lại đây comment cũng được . Gét gô! Bạn hiếm khi được code thứ gì đó từ đầu [...]
Read more →
Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Những năm gần đây sự bùng nổ của các Framework về UX/UI như Angular hay React đang tạo nên một cuộc cách mạng về việc phát triển một trang web chú trọng vào tương tác người dùng và giao diện được xử lý hoàn toàn phía trình duyệt. Những trang web như thế người ta gọi là Client Side Rendering (CSR) và thường được triển khai theo cách Single Page Application (SPA). Chúng tận dụng sức mạnh xử lý của thiết bị người dùng để giảm tải cho máy chủ, bên cạnh đó những trang web này thường mang lại trải nghiệm mượt mà bởi vì máy chủ chỉ cần gửi về mã Javascript cho thiết bị và việc lấy dữ liệu từ máy chủ chỉ cần thông qua API với dữ liệu cần thiết thay vì phải tải toàn bộ mã HTML. CSR đang làm rất tốt nhiệm vụ của [...]
Read more →
Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Khi viết chương trình, chúng ta có các Design Pattern nên hoặc thậm chí cần được tuân theo để giúp cho mọi người trong nhóm có thể hiểu và phối hợp với nhau một cách nhịp nhàng. Các "mẫu thiết kế" là minh chứng rõ nhất cho việc đọc hiểu dễ hơn khi con người chúng ta cùng chung một lối suy nghĩ. Design API cũng vậy, việc tạo ra hàng tá endpoint trong một khoảng thời gian là khá dễ nhưng làm sao để duy trì được sự thống nhất trong suốt quá trình phát triển mới là điều khó. Dự án phát triển theo năm tháng, con người cũng thay đổi, càng có nhiều bộ óc tham gia vào quá trình, càng có nhiều tính cách được bộc phát qua những dòng code. Thực tê, Design API phụ thuộc vào tính sáng tạo của từng cá nhân, tổ [...]
Read more →
Thuật toán quay lui là một trong những câu hỏi thường gặp nhất khi phỏng vấn liên quan đến giải thuật trong lập trình. Trong đó bài toán phân tích số là một ví dụ thường được sử dụng để xem các ứng viên hiểu và triển khai kỹ thuật này như thế nào. Bài viết hôm nay chúng ta cùng nhau tìm hiểu về cách giải bài toán này sử dụng thuật toán quay lui với ngôn ngữ lập trình JavaScript nhé. Bài toán phân tích số Bài toán: Ở một quốc gia có n loại tiền gồm các mệnh giá a1, a2, …, an. Có những cách nào để lấy các tờ tiền sao cho tổng tiền của chúng là S. Trong đó mỗi mệnh giá có thể lấy được nhiều lần. Ví dụ chúng ta có 3 loại mệnh giá 10 đ, 20 đ và 50 đ, để lấy được ra số tiền 100 đ chúng ta có thể có một số cách như là : 10 tờ 10 đ 2 tờ 50 đ 3 tờ 10 đ + 1 tờ 20 đ + 1 tờ 50 đ … [irp posts="38084" name="JavaScript có thể làm đượ [...]
Read more →
Bài viết được sự cho phép của BBT Tạp chí lập trình Tôi đã từng nghe một cuộc thảo luận thú vị giữa hai người bạn lập trình viên của tôi, tranh luận liệu một người có thể trở thành lập trình viên mà không cần tiếng Anh hay không. Bạn tôi, A, có hơn 5 năm kinh nghiệm trong lĩnh vực phát triển web và phần mềm, khẳng định rằng tiếng Anh không bao giờ là bắt buộc đối với một lập trình viên. Mặc dù tôi đã không ghi lại những gì anh ấy nói ngày hôm đó, nhưng tôi vẫn nhớ hầu hết các lập luận của anh ấy, điều mà rất có ý nghĩa đối với tôi: "Bạn có thể trở thành một lập trình viên mà không cần tiếng Anh" Không biết tiếng Anh có thể khiến việc lập trình trở nên khó khăn ở một mức độ nhất định; tuy nhiên, mộ [...]
Read more →