Dashboard
All activity
Khi tôi bắt đầu làm việc với React Native chưa lâu trước đây, tôi đã rất thất vọng bởi quá nhiều thông tin xung quanh việc testing ứng dụng React. React được biết đến là phát triển nhanh, thường đưa ra những thay đổi đột phá, vì vậy điều này không ngạc nhiên đối với các developer. Tuy nhiên, số lượng nội dung cũ, không dùng nữa sẽ mang laị cảm giác tệ, đặt biệt là các developer mới...
#AppMobileVới sự gia tăng của các ứng dụng cloud native và sự ra đời của các kiến trúc microservice, đã có rất nhiều thay đổi về cách chúng ta phát triển các application, một trong số đó là sự áp dụng Development Container. Mục đích chính của việc áp dụng Dev Container là làm cho dự án dễ tiếp cận hơn với các developer trong tương lai. Development containers Dev container là container Docker đang chạy với tool /...
containerI. Giới thiệu: 1. Vấn đề: Trong thực tế khi triển khai những dự án thì bạn sẽ gặp những khó khăn trong vấn đề trong cấp các quyền truy cập cho từng Model ở những màn hình đặc thù nhằm để bảo mật thông tin thì đây có thể là bài viết bạn đang cần có thể giúp bạn dễ dàng hơn trong quá trình xây dựng dự án của mình. Có 2 cách đơn giản để bạn phân quyền cho hệ thống của mình...
PHP Laravel policiesTóm lược Kết thúc phiên là một phần quan trọng của vòng đời phiên. Giảm đến mức tối thiểu thời gian tồn tại của mã thông báo phiên giúp làm giảm khả năng xảy ra một cuộc tấn công chiếm quyền điều khiển phiên thành công. Đây có thể được coi là biện pháp kiểm soát ngăn chặn các cuộc tấn công khác như Cross Site Scripting và Cross Site Request Forgery - các cuộc tấn công dựa vào việc...
happy children dayLàm thế nào để đặt biến môi trường trong XCode. Các bạn sẽ hẳn rất quên thuộc đối với Preprocessor Directive. #if DEBUG print("print debug value", x) #endif Nhưng hôm này mình sẽ giới thiệu ProcessInfo để sử dụng trong dự án. Process Info The process information agent can return information such as arguments, environment variables, host name, and process name. The processInfo class method returns the shared agent for the...
Xcode environmentSự khác biệt giữa Props và State trong React là gì? Props là viết tắt của Properties. Nó là một object tích hợp trong React lưu trữ giá trị của các thuộc tính của thẻ và hoạt động tương tự như các thuộc tính HTML. Props cho phép chúng ta giao tiếp giữa các components với nhau bằng cách truyền tham số qua lại giữa các components. State là một đối tượng React tích hợp được sử dụng để chứa dữ...
ReactJHôm nay mình sẽ tiếp tục gửi đến các bạn bài viết về cách Deploy một dự án Laravel lên một server mới và bạn cần setup tất cả môi trường cần thiết cho việc khởi chạy dự án trơn tru ngay lần đầu tiên. Thông thường công việc sẽ có rất nhiều thứ cần phải làm và lệnh cài đặt, tuy nhiên các bạn đã làm quen với những bài viết trước đây của mình về Laradock chắc hẳn đã có sẵn...
PHP Laravel LaraDockI. Giới thiệu Như vậy ở phần trước mình đã giới thiệu phần khởi tạo app vue 3, phần fake backend cũng như phần auth cho app. Ở phần 3 này mình sẽ hướng dẫn tiếp phần tạo router, xây dựng các hàm cũng như hoàn thiện ứng dụng. II. Router Router xác định các tuyến đường cho ứng dụng Vue 3 và tạo một phiên bản Vue Router mới bằng hàm createRouter (). Router sẽ được nhập vào main.js nơi nó...
VueJS Vue31. Giới thiệu Ở phần trước mình đã giới thiệu 1 phần về vẽ sequence với plant uml. Do nội dung dài nên mình chia nhỏ ra để mỗi bài viết không quá dài. Hôm nay mình tiếp tục chia sẻ về nội dung này. 2. kí hiệu, cách vẽ a. Đánh số trình tự Từ khóa autonumber được sử dụng để tự động thêm một số tăng dần vào thư. vd: @startuml autonumber Bob -> Alice : Authentication Request Bob <- Alice :...
sequenceNhư đã biết Redux là thư viện dùng để quản lý state cho React. Nhưng để config redux vào react của mình thì khá phức tạp và mất nhiều thời gian, và code cũng cần viết nhiều. Để giải quyết các vấn đề này thì Redux Team đã tạo một package khác là Redux Toolkit. Sau khi generate project xong, nó đã có đầy đủ thư viện và config sẵn cũng như các helper để mình có thể dùng redux một cách hiệu qủa...
React redux redux toolkitQuarkus là gì? Quarkus là gì ? Đầu tiên, chúng ta cần biết Quarkus là gì. Nó thật ra chỉ là 1 framework support người chơi hệ cloud serverless cực kỳ tốt, để biết thêm chi tiết thì bạn có thể xem ở đây. Trong bài viết hôm nay mình sẽ init 1 project sử dụng quarkus, kotlin để tìm hiểu cơ chế quarkus load biến môi trường vào project Init project Khá đơn giản, nếu bạn thích dùng maven thì sử dụng command...
environment quarkus aws ssmDưới đây là một vài thứ liên quan đến Unit Test trong dự án iOS. Enable Unit Tests in Xcode Project Trong khi tạo một Dự án mới, hãy tick vào checkbox “Include Unit Tests”, “Include UI Tests”. Sau khi project được tạo, bạn có thể thấy một thư mục trong dự án có tên “ProjectNameTests” và XCode đã tạo một test class mặc định với một mẫu được tạo để bắt đầu làm việc. XCode tạo một Target mới...
Unit TestMình dạo này cũng có lướt lướt đọc về S3 thấy bài này cũng gọi là hữu ích với đứa gà non như mình nên up lên cho cả nhà đọc thêm ạ. Nguồn mình lượm từ bên S3 về ạ https://aws.amazon.com/vi/blogs/compute/10-things-you-can-do-today-to-reduce-aws-costs/ Giới thiệu về Tối Ưu Chi Phí trên AWS (AWS Cost Optimization) AWS cung cấp các gói dịch vụ đa dạng với các mức giá khác nhau giúp cho khách hàng có thể...
Tối ưu chi phí trên AWSNhiều người trong chúng ta tin rằng Docker là một phần không thể thiếu của DevOps . Vì vậy, đằng sau công cụ đáng kinh ngạc này, phải có một kiến trúc tuyệt vời. Trong blog này, tôi sẽ trình bày mọi thứ mà bạn phải biết về kiến trúc Docker. Đây là những điểm mà tôi sẽ thảo luận ở đây: Traditional Virtualization vs Docker Docker’s Workflow Docker Architecture Docker’s Client Docker Host Docker...
DockerI. Giới thiệu NestJS là một backend framework, được xây dựng trên nền NodeJS và ExpressJS để tạo các ứng dụng bên phía server-side. NestJS có một số điểm đặc biệt sử dụng Javascript hiện đại được xây dựng bằng Typeccript duy trì khả năng tương thích với Javascript thuần. NestJS sử dụng ExpressJS nhưng đồng thời cung cấp khả năng tương thích với rất nhiều các thư viện khác như Fastify... cho...
JavaScript May Fest Node jsHiện nay, với sự phát triển của các công nghệ đã thay đổi cách chúng ta xây dựng kiến trúc của một ứng dụng. Cùng với sự phát triển của Docker, cloud service... đã mang lại cho chúng ta khả năng phát triển các giải pháp phân tán, có thể mở rộng và đáng tin cậy hơn. Trong bài viết này mình sẽ so sánh kiến trúc microservices và monolith để thấy được ưu nhược điểm của từng loại. Để...
microserviceĐây là bài dịch từ trang medium.com. Mời các bạn xem bài gốc tại đây: https://medium.com/codex/xcodes-built-in-refactoring-tool-is-awesome-21492b236ab6 Các công cụ giúp tái cấu trúc mã có sẵn của Xcode có thể là một công cụ tiết kiệm thời gian tuyệt vời. Hơn nữa là các tính năng tái cấu trúc này cực kỳ đơn giản để học và làm thực hiện. Công cụ tái cấu trúc mã trong Xcode đã có được một thời...
Xcode Code refactoringỞ bài viết này, chúng ta sẽ cùng tiếp tục điểm qua những cách thức để có thể tiến hành thực hiện một vụ tấn công an ninh mạng... 1. Tấn công bằng mã khoá(Compromised-Key Attack). Key ở đây được xem là một mã, một số cần thiết để có thể diễn giải những thông tin được bảo mật. Tuy việc lấy được key không phải là điều dễ dàng, nó có thể tốn thời gian và tài nguyên của kẻ...
Hack kaliLà một web developer, chắc hẳn bạn đã quá quen Chrome DevTools. Đó là một công cụ tuyệt vời, cung cấp nhiều tính năng giúp bạn đẩy nhanh quá trình phát triển, đồng thời cũng là công cụ cần thiết cho frontend developer với mọi level. Tuy nhiên, chắc hẳn vẫn có một số tính năng hữu ích mà có thể bạn chưa biết. Cùng tìm hiểu ở bài viết này nhé. 1 . Kiểm soát tốc độ mạng Trang web của bạn...
devtoolsKhi thực hiện code với các framework như Django, Flask, Ruby on rail, ... bạn có bao giờ thắc mắc 'SQLite là gì? Tại sao nó lại được tích hợp sẵn vào các framework?'. Để giải đáp thắc mắc này chúng ta hãy cùng tìm hiểu về SQLite nhé! SQLite là gì? SQLite là hệ quả trị cơ sở dữ liệu (DBMS) quan hệ tương tự như Mysql, ... Đặc điểm nổi bật của SQLite so với các DBMS khác là gọn, nhẹ, đơn giản,...
SQLiteNhư các bạn đã biết, Material cho phép chúng ta có một giao diện người dùng thống nhất tuân theo các nguyên tắc và phương pháp hay nhất về giao diện người dùng Android, nhưng đồng thời, nó rất hạn chế khi ứng dụng cần mức độ tùy chỉnh UI phức tạp hơn. Trong bài đăng này, chúng ta sẽ tìm hiểu cách điều chỉnh, tùy chỉnh và mở rộng Compose Material Theme để đáp ứng các yêu cầu về UI ứng...
Android Jetpack Compose materialLet's talk about how you think a date should be? Ask this question to yourself and let the answer come. Now try to execute on it. Remember, if even one thing goes wrong in your date, it can become your last too. Always execute on something once you are sure about it. Now note down your plan or dream you think the date should look like and crosscheck it with the first date advice mentioned below. Following is the first date tips for men :- Behave normally: The first date tip for men is, be what...
dating auto chat relation Random eloquent relationshipsI. Tổng quan: Hey mọi người, nhìn vào chiếc ảnh trên kia chắc rằng mọi người sẽ tự hỏi rằng : " Hệ thống này dùng để làm gì ? Hệ thống này điều khiển bằng tay hay tự động hoàn toàn nhỉ ? blabla ". Mình cũng từng có cơ hội được nhìn những hệ thống như thế này rồi và nó sử dụng với nhiều mục đích nhất định tùy theo nhu cầu của mỗi người như: xây dựng hệ thống...
tool Automation ADB Android wifi adb android adbThe short answer is yes. The longer answer involves this question: how are we developing students’ understanding of intellectual property, copyright, piracy, stealing, and a host of other issues that involve our desired outcome for students: being productive citizens. To address the short answer: I recommend having every student turn in an electronic version of each assignment that is a significant writing assignment (one page or more). I recommend cutting and pasting ONLY suspicious lines,...
Plagiarism CheckerĐầu tiên chúng ta sẽ làm 1 phiên bản chọn các màu gần giống để thay thế thành các loại màu khác. Shader color là 1 vec4 kiểu float, bạn có thể chuyển chúng thành 1 float nằm trong khoảng 0 -> 1. Tiếp theo ta sẽ chọn các màu mà bạn muốn chuyển đổi. Bạn có thể để chúng là biến kiểu uniform để bạn có thể dễ chính sửa bằng cách sử dụng color picker thay vì chuyển đổi chúng thành vector...
Shader GodotSometimes you might want to detect when some special keys are pressed from your app. Some of which the regular onKeyDown or OnKeyUp just wont suffice. You may want to restrict them or simply detect when pressed only so in the episode ill show you how to easily hook your keyboard. Create a class KeyHook.cs KeyHook.cs class KeyHook { public delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); private const int WH_KEYBOARD_LL = 13; private const int WM_KEYDOWN...
WPF(Dịch lại bài viết trên Qiita: GitHub Actionsを使ってリポジトリ間でファイルを機械的に同期する https://qiita.com/a_jike/items/9d454bf1efad0370ae03) Thường xảy ra trường hợp ứng dụng có file giống với resource hiện có ở phía server. Nếu làm thủ công, thì mỗi lần đều cần sao chép resource file mới nhất từ repository ở phía server sang repository ở phía ứng dụng, và mình thường hay lãng quên thao...
Github Actions GitHubBài viết này chúng ta sẽ cùng nhau tìm hiểu về những điều nhỏ nhặt trong HTML nhưng lại có tác dụng không hề nhỏ khi biết được công dụng của nó nhé! Bắt đầu thôi nào! 1. Thuộc tính alt trong tag image <img src="user.png" alt="User Profile Image" /> alt được sử dụng như một văn bản thay thế khi image không thể hiển thị. Hay cụ thể hơn là dùng để mô tả về ảnh, dành cho các công cụ tìm...
HTML alt Input Autofocus Auto Complete1. Migrations Lệnh php artisan migrate nó sẽ ngay lập tức xây dựng database giúp chúng ta. Tạo một table mới trong laravel, chúng ta có thể chạy lệnh: php artisan migrate:make create_users_table Lỡ migrate rồi, chúng ta muốn khôi phục lại thì làm cách nào? Đơn giản, chúng ta chỉ cần chạy lệnh chạy lệnh php artisan migrate:rollback Định nghĩa struct cho table với cấu trúc: public function up() { Schema::create('faqs',...
LaravelVào đầu năm 2017, GitLab gặp phải một incident rất nghiêm trọng. Trong quá trình khắc phục vấn đề liên quan đến replication của PostgreSQL, một kỹ sư (tạm gọi là kỹ sư A) đã vô tình rm -rf nhầm hơn 300GB dữ liệu database tại server database chính của GitLab. Thiệt hại mà GitLab phải gánh chịu nói ngắn gọn thì: Mất hoàn toàn dữ liệu database của 6 tiếng đồng hồ, từ 17:20 đến 00:00 UTC. GitLab...
database GitLab May Fest sharpbackupPython là một ngôn ngữ được sử dụng vô cùng rộng rãi trong phân tích dữ liệu. Nhờ vào hệ sinh thái đa dạng các packages chuyên dụng cho dữ liệu, Python giúp ta tăng tốc và đơn giản hóa việc xử lý data, giúp tiết kiệm thời gian. Trong số đó, Pandas là một thư viện rất mạnh mẽ và phổ biến phục vụ cho cả nghiên cứu lẫn phát triển các ứng dụng về khoa học dữ liệu. Dataframe là cấu...
Pandas May FestChào các bạn, là một nhân lực ngành IT, hẳn các bạn đều đã nghe qua khái niệm "Agile" rồi nhỉ? "Agile" là một mô hình phát triển sản phẩm linh hoạt, có tính tùy biến cao nếu so với mô hình "waterfall" có tính ổn định trong các ngành sản xuất truyền thống. Thế nhưng để có thể phát huy tối đa ưu điểm của Agile, chúng ta cần có những công cụ hữu ích. Nói đến đây,...
Agile scrum managementKanban là gì? Kanban là một framework rất phổ biến để phát triển trong phương pháp luận phát triển phần mềm linh hoạt. Nó cung cấp một cái nhìn minh bạch về các nhiệm vụ và năng lực làm việc của một nhóm. Nó chủ yếu sử dụng bảng vật lý và kỹ thuật số để cho phép các thành viên trong nhóm hình dung trạng thái hiện tại của dự án mà họ đang làm việc. Kanban có nguồn gốc từ Toyota vào...
QA Translated Article1. Introduction Width: Auto width mặc định của các block-element như <div> hoặc <p> đều là auto, điều này làm cho chúng chiếm toàn bộ chiều rộng của block chứa chúng. Theo thông số CSS: ‘margin-left’ + ‘border-left-width’ + ‘padding-left’ + ‘width’ + ‘padding-right’ + ‘border-right-width’ + ‘margin-right’ = width of containing block Khi một element có width là auto, nó có thể có margin, padding và...
flexbox CSS grid markup AutoVào đầu năm 2017, GitLab gặp phải một incident rất nghiêm trọng. Trong quá trình khắc phục vấn đề liên quan đến replication của PostgreSQL, một kỹ sư (tạm gọi là kỹ sư A) đã vô tình rm -rf nhầm khoảng 300GB dữ liệu database tại server database chính của GitLab. Thiệt hại mà GitLab phải gánh chịu nói ngắn gọn thì: Mất hoàn toàn dữ liệu database của 6 tiếng đồng hồ, từ 17:20 đến 00:00...
database GitLab May Fest incident sharpbackupDependency Injection là gì ? Dependency Injection (DI) là một pattern nhằm hỗ trợ lập trình viên chia tách các thành phần khác nhau trong ứng dụng của họ. Nó cung cấp cơ chế cho việc xây dựng các đồ thị phụ thuộc độc lập của các định nghĩa class. Thông qua bài viết này, tôi sẽ tập trung giới thiệu về contructor injection, nơi những phụ thuộc được cung cấp để có thể sử dụng chúng thông qua các...
Dependency Injection ASP.NET CoreTại bài viết trước, chúng ta đã tìm hiểu tổng quan về Recommender System. Tại bài viết này, chúng ta sẽ tiếp tục tìm hiểu thuật toán và cách thức xây dựng demo một hệ thống Contented-based Filtering Recommender System. Thuật toán Với contented-based Recommender System, hệ thống sẽ đánh giá các đặc tính của items được recommended. Hệ thống sẽ gợi ý các item dựa trên hồ sơ (profiles) của người dùng...
Beginner Python Basic Python Machine Learning Recommendation System Content-Based Recommendation SystemTại bài viết trước, chúng ta đã tìm hiểu về Content-based Filtering Recommender System. Như bài viết đã trình bày, content-based chỉ đề xuất các bộ phim có tính chất tương tự mà không đề xuất đa dạng phim hay các bộ phim được cộng đồng xem phim đánh giá cao. Bên cạnh đó, contented-based Recommender System trên có hai nhược điểm: Thứ nhất, khi xây dựng mô hình cho một user, các hệ thống Content-based...
Beginner Python Basic Python Recommendation System collaborative recommendation hệ thống gợi ýTại bài viết trước, chúng ta đã tìm hiểu tổng quan về Recommender System. Tại bài viết này, chúng ta sẽ tiếp tục tìm hiểu thuật toán và cách thức xây dựng demo một hệ thống Contented-based Filtering Recommender System. Thuật toán Với contented-based Recommender System, hệ thống sẽ đánh giá các đặc tính của items được recommended. Hệ thống sẽ gợi ý các item dựa trên hồ sơ (profiles) của người dùng...
Beginner Python Basic Python Machine Learning Recommendation System Content-Based Recommendation SystemGIỚI THIỆU Recommender System là một trong những ứng dụng phổ biến nhất của khoa học dữ liệu ngày nay. Chúng được sử dụng để dự đoán "rating" hoặc "preference" mà người dùng sẽ dành cho một mặt hàng. Hầu hết mọi công ty công nghệ lớn đều đã áp dụng chúng dưới nhiều hình thức. Hầu hết mọi công ty công nghệ lớn đều đã áp dụng chúng dưới một số hình...
Basic Python Machine Learning Recommendation SystemTại bài viết trước, chúng ta đã tìm hiểu tổng quan về Recommender System. Tại bài viết này, chúng ta sẽ tiếp tục tìm hiểu thuật toán và cách thức xây dựng demo một hệ thống Contented-based Filtering Recommender System. Thuật toán Với contented-based Recommender System, hệ thống sẽ đánh giá các đặc tính của items được recommended. Hệ thống sẽ gợi ý các item dựa trên hồ sơ (profiles) của người dùng...
Beginner Python Basic Python Machine Learning Recommendation System Content-Based Recommendation System4. Xây dựng Collaborative Filtering Như bài viết đã trình bày ở trên, content-based chỉ đề xuất các bộ phim có tính chất tương tự mà không đề xuất đa dạng phim hay các bộ phim được cộng đồng xem phim đánh giá cao. Bên cạnh đó, contented-based Recommender System trên có hai nhược điểm: Thứ nhất, khi xây dựng mô hình cho một user, các hệ thống Content-based không tận dụng được thông tin từ các...
Beginner Python Basic Python Recommendation System collaborative recommendation1. Brainstoming Lấy hết tất cả những ý tưởng từ các thành viên trong dự án. Từ đó có thể thống kê lại và cả team cùng xem xét và quyết định chọn ra những ý tưởng phù hợp, cần thiết để từ đó quyết định công việc cần phải làm sau buổi Retrospectives Tham khảo 3 phương pháp sau để lấy được ý tưởng từ các thành viên: Quiet Writing: Chuẩn bị giấy bút, mỗi người sẽ ghi các ý...
retrospective agile retrospectiveGiới thiệu Google OR-Tools OR-Tools là 1 phần mềm mã nguồn mở do Google phát triển, dùng để giải quyết các bài toán tối ưu hóa tổ hợp, nhằm tìm kiếm lời giải tốt nhất cho 1 bài toán trong số rất nhiều lời giải khả thi. Dưới đây là 1 số bài toán mà OR-Tools giải quyết: Lộ trình xe (Vehicle routing): Tìm đường đi tối ưu cho xe nhận và giao các đơn hàng có các ràng buộc nhất định Ví dụ:...
May FestĐể hiểu một cách cơ bản các chương trình hoạt động như thế nào, tôi đã tóm tắt những gì xảy ra trong nội bộ khi một chương trình hoạt động. Bình thường thì tôi không đặc biệt chú ý đến nó nhưng có lẽ sẽ hữu ích nếu bạn biết được, hy vọng các bạn sẽ thích thú khi đọc nó. Ngôn ngữ máy Trước hết, chúng ta cần phải biết rằng máy tính chỉ hiểu được 2 giá trị là 0 và 1....
@translate1. GIỚI THIỆU Recommender System là một trong những ứng dụng phổ biến nhất của khoa học dữ liệu ngày nay. Chúng được sử dụng để dự đoán "rating" hoặc "preference" mà người dùng sẽ dành cho một mặt hàng. Hầu hết mọi công ty công nghệ lớn đều đã áp dụng chúng dưới nhiều hình thức. Hầu hết mọi công ty công nghệ lớn đều đã áp dụng chúng dưới một số hình...
Basic Python Machine Learning Recommendation SystemLà developer, chúng ta luôn có những bài test cho ứng dụng của mình trước khi chúng được public. Như chúng ta đã biết, cho dù chúng ta kiểm tra đến đâu, thì các lỗi trong quá trình vận hành là không thể tránh khỏi. Do đó, việc giám sát mọi khía cạnh của ứng dụng là điều bắt buộc. Bài viết này mình sẽ giới thiệu 5 công cụ khác nhau để giám sát hệ thống nói chung, và frontend nói riêng. 1....
monitoring errorChào các bạn. Ở phần 1 mình có giới thiệu về xác thực 2 bước đối với google authenticator cơ bản. Ở phần 2 này mình sẽ giới thiệu với các bạn làm config code làm sao để có thể xác thực bước thứ 2 bằng mã otp từ google authenticator Ở phần trước chúng ta đã tạo được mã QR và thực hiện verify rồi, bây giờ ta tiếp tục tạo ra mã backup codes sau khi verify Backup codes Chúng ta tạo ra 10 mã...
Ruby on Rails google authenticatorQuản lý dự án không phải là một công việc dễ dàng. Trên thực tế, đó là một công việc khó khăn, bao gồm từ giai đoạn bắt đầu, lập kế hoạch, thực hiện, kiểm soát và kết thúc một dự án. Khó hơn nữa, dự án được giao trong một khoảng thời gian nhất định và phải đưa ra các mục tiêu cụ thể để đạt được trong một thời hạn xác định với một ngân sách giới hạn. Và bạn...
lessonVới Breakpoint, bạn có thể chặn API để sửa Request và Response. Tình huống đơn giản nhất mà mình đang áp dụng với breakpoint là sửa đổi giá trị của yêu cầu hoặc phản hồi để xem liệu quá trình xử lý giao diện có như mong đợi trong những trường hợp cụ thể hay không? Đầu tiên cần kết nối Charles và device, các bạn có thể xem hướng dẫn cụ thể trong bài viết trước của mình đây nhé: ...
API testing May Fest charlesSubscribe to your news feed