Bài viết được sự cho phép bởi tác giả Vũ Thành Nam Bài viết trước mình đã đi tổng quan về caching, bài viết này mình sẽ đi cụ thể hơn về một loại cache phổ biến trong các ứng dụng monolithic. Bắt đầu nhé! In-memory cache là gì? In-memory cache sử dụng bộ nhớ (RAM) của máy server để lưu trữ data. RAM cho chúng ta tốc độ đọc ghi đáng kinh ngạc tùy vào vào từng loại nhưng thường cho tốc độ hàng chục Gigabyte trên giây so với tốc độ từ khoảng 50 ~ 250MB/s của SSD. Nhìn vào những con số đó ta thấy rõ ràng tốc đọc và ghi giữa 2 vùng lưu trữ là rất lớn. In-memory cache tham chiếu tới bộ nhớ đệm và dùng nó để lưu trữ dữ liệu trong bộ nhớ của server khi mà server đang chạy ứng dụng. Điều này đồng nghĩa với việc khi server khởi động lại hoặc bị tèo thì dữ liệu được lưu trong cache sẽ bị mất đi. Vậy nên lựa chọn [...]
Read more →Bạn mới dấn thân vào con đường lập trình web và bối rối vì quá nhiều thuật ngữ như .NET, .NET core, .NET framework. Vậy sự khác biệt giữa chúng là gì? Nên chọn cái nào tốt nhất để học phát triển web? Trong bài viết này của TopDev, chúng ta sẽ tập trung đi sâu tìm hiểu về .NET core là gì và lịch sử hình thành của nó, đồng thời giúp bạn giải đáp thắc mắc ở đầu bài. [caption id="attachment_62869" align="aligncenter" width="1100"] .NET core là gì? Lịch sử hình thành và phát triển của .NET core[/caption] Tổng quan về .NET Core .NET Core là gì? .NET Core là phiên bản cải tiến của .NET Framework, là một nền tảng phát triển đa năng, mã nguồn mở, miễn phí được duy trì bởi Microsoft. Nó là một framework đa nền tảng chạy trên các hệ điều hành Windows, macOS và Linux. .NET Core có thể được sử dụng để xây dựng các loại ứng dụng khác nhau [...]
Read more →.NET Core là một nền tảng mã nguồn mở miễn phí được phát triển và duy trì bởi Microsoft và cộng đồng lập trình viên .NET trên GitHub. Ra đời từ năm 2016, cho đến hiện nay thì .NET Core định hướng phát triển đa nền tảng sử dụng trong các ứng dụng Universal Windows platform và ASP.NET; nhờ đó được cộng đồng lập trình viên ưa chuộng và lựa chọn. Bài viết hôm nay mình sẽ giới thiệu về các khái niệm và kiến thức cơ bản trong .NET Core để các bạn cùng nắm được rõ hơn về phiên bản này nhé. .NET Core là gì? Nhắc đến .NET sẽ có nhiều người nhầm lẫn giữa các khái niệm bao gồm .NET, .NET Framework, .NET Core. Thực tế thì .NET Core là 1 trong 3 phiên bản khác nhau của .NET bên cạnh .NET Framework và Mono, mỗi phiên bản có Runtime, Libraries và Toolings riêng. Cả 3 phiên bản đều được kế thừa sử dụng hệ thống thư viện cơ bản của .NET (. [...]
Read more →Java là một ngôn ngữ lập trình được sử dụng phổ biến nhất hiện nay với ứng dụng của nó trong nhiều lĩnh vực khác nhau từ lập trình Web, viết ứng dụng cho desktop, thiết bị di động hay các phần mềm hệ thống lớn. Ngôn ngữ lập trình Java bao gồm nhiều thành phần, phiên bản khác nhau và khiến cho anh em lập trình viên có thể dễ bị nhầm lẫn giữa các khái niệm như Java Core, Java SE, Java EE,… Bài viết hôm nay chúng ta cùng đi trả lời cho câu hỏi Java Core là gì và phân biệt được Java Core và các phiên bản Java khác để hiểu sâu hơn về ngôn ngữ này nhé. Các phiên bản của ngôn ngữ lập trình Java Java là ngôn ngữ lập trình bậc cao, thiết kế cho việc triển khai lập trình hướng đối tượng; đây là ngôn ngữ độc lập với nền tảng tức là khô [...]
Read more →Công nghệ Đám mây (Cloud) đã trở thành một phần không thể thiếu trong các nền tảng lớn hiện nay. Với vai trò ngày càng quan trọng và phức tạp, điện toán đám mây đặc biệt được chú trọng trong lĩnh vực tài chính. Không nằm ngoài cuộc chơi, các ngân hàng lớn tại Việt Nam cũng đang tiến hành quá trình chuyển đổi số cho toàn bộ hệ thống của mình. Chị Elizabeth Nguyễn, một Quản lý Dự án Cao Cấp - Dự án Cloud tại Techcombank, sẽ mang tới những chia sẻ giúp chúng ta hiểu được tầm quan trọng của công nghệ Cloud trong công cuộc chuyển đổi số của lĩnh vực tài chính ngân hàng. Dịch vụ Cloud giải quyết gì cho bài toán kinh doanh (business) nói chung & bài toán nghiệp vụ ngân hàng (banking) nói riêng? Một trong những lý do quan trọng nhất cho việc chuyển đổi sang Cloud của Techcombank là [...]
Read more →Bài viết đến từ anh Trần Minh Thiện - Giám đốc Kiến trúc Giải pháp Enterprise Architect team @Techcombank 1. Tổng quan Trong các hệ thống phân tán (distributed systems), các giao dịch thương mại (business transactions) qua nhiều tầng dịch vụ (multiple-layer services) cần thiết có một cơ chế để đảm bảo dữ liệu phải nhất quán xuyên suốt. Vì vậy, khái niệm SAGA đại diện cho một mô hình hoạt động thương mại tổng quát (như khi ta đặt một chuyến du lịch) gồm nhiều yêu cầu chuyên sâu (low-level requests) mà mỗi yêu cầu này sẽ thực hiện cập nhật dữ liệu trong từng service đơn lẻ. Mỗi yêu cầu cũng sẽ chứa một yêu cầu khôi phục (compensating request) chỉ được thực hiện khi yêu cầu ban đầu bị lỗi. 2. Ngữ cảnh Giao dịch (transactions) là thành phần chủ yếu trong mọi ứng dụng doanh nghiệp (enterprise application). Không có giao dịch sẽ không thể duy trì tính nhất [...]
Read more →Bài viết đến từ Nguyễn Việt Cường - Quản lý Cao cấp Khoa học dữ liệu Data Science team @Techcombank Giới thiệu Tỷ lệ khách hàng rời bỏ, hay tỷ lệ khách hàng dừng giao dịch với Techcombank, là một chỉ số quan trọng ảnh hưởng đến sự phát triển và lợi nhuận của ngành ngân hàng. Việc dự đoán chính xác khách hàng rời bỏ cho phép Techcombank xác định trước khách hàng có nguy cơ rời bỏ và áp dụng các biện pháp chủ động để giữ chân họ, từ đó tiết kiệm đáng kể chi phí thu hút khách hàng. Trong bối cảnh này, việc sử dụng các mô hình học máy cho việc dự đoán khách hàng rời bỏ đã thu hút được sự chú ý đáng kể. Trong bài viết này, chúng tôi sẽ đi vào giải thích chi tiết về phương pháp phát triển một mô hình dự đoán khách hàng rời bỏ cho khách hàng doanh nghiệp. [...]
Read more →Bài viết được sự cho phép của tác giả Lưu Bình An Thiết đặt babel Với input là code js với các syntax mới, babel sẽ transform thành code mà trình duyệt có thể hiểu được. Chúng ta sẽ cần các gói babel cần thiết npm i @babel/core @babel/preset-env @babel/cli --save-dev Bên trong file config của babel, babel.config.json chúng ta sẽ tìm thấy phần thiết đặt preset-env { "presets": [ "@babel/preset-env" ] } @babel/preset-env là một bộ các plugin của babel để nó có thể transform các syntax mới, tùy theo trình duyệt mà chúng ta chỉ định Trình duyệt được chỉ định có thể set trong file babel.config.json hoặc dùng một file riêng .browserslistrc, hoặc trong package.json Dùng file package.json "browserslist": [ "defaults", "not IE 11", "maintained node versions" ] Dùng file .browserslistrc defaults not IE 11 maintained node versions Ví dụ với đoạn code như sau const obj = { arr: [1, 2, 3, 4], printArr() { console.log(...this.arr); } }; obj.printArr(); Sau khi transform với thiết đặt browser là IE11, chúng ta sẽ có "use strict"; function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn [...]
Read more →Bài viết được sự cho phép của blogchiasekienthuc.com Để tiếp nối series cài đặt Hackintosh, hôm nay mình sẽ tiếp tục hướng dẫn cho các bạn cách để cài đặt macOS lên Laptop và PC với OpenCore Bootloader một cách dễ dàng nhất nhé. Lưu ý rằng trong bài viết này mình sẽ không đề cập đến Clover Bootloader, vậy nên nếu bạn muốn cài đặt macOS lên PC/ Laptop với bootloader này thì hãy xem lại những bài viết trước về chủ đề Hackintosh trên Blog chia sẻ kiến thức nhé ! #1. Cần chuẩn bị những gì? Cách lựa chọn phần cứng (Laptop hoặc PC) để tương thích và chạy tốt Hackintosh. Bạn có thể xem lại bài viết hướng dẫn lựa chọn phần cứng của mình tại đây ! Bộ cài macOS và tạo USB cài đặt macOS với OpenCore Bootloader. Các bạn có thể xem lại bài hướng dẫn tạo USB cài macOS với bootloader này của mình tại đây (rất đầ [...]
Read more →Bài viết được sự cho phép của BBT Tạp chí Lập trình Bài viết sẽ hướng dẫn từng bước xây dựng giải pháp kiểm thử đơn vị. Bài viết này đề cập tới việc kiểm thử một dự án .NET Core. [irp posts="9837" name="So sánh tốc độ List collection và HashSet collection trong C#"] [irp posts="29039" name="Namespace trong C#"] Tạo dự án Tạo một thư mục có tên là “unit-tests-using-nunit” để lưu trữ solution. Trong thư mục này, hãy chạy lệnh sau để tạo solution mới cho class library và test project: >> dotnet new sln Tiếp theo, tạo thư mục PrimeService. Các phác thảo sau đây cho thấy cấu trúc thư mục và tập tin: Đi đến thư mục PrimeService và chạy lệnh sau để tạo dự án nguồn: >> dotnet new classlib Đổi tên Class1.cs thành PrimeService.cs. Tạo ra một triển khai fail của lớp PrimeService: using System; namespace Prime.Services { public class PrimeService { public bool IsPrime(int candidate) { throw new NotImplementedException("Please create a test first."); } } } Đi đến thư mục “unit-tests-using-nunit”. Chạy lệnh sau để thêm dự án class [...]
Read more →ĐÓN ĐẦU XU THẾ & TỐI ĐA HÓA TIỆN ÍCH TRONG LĨNH VỰC NGÂN HÀNG VÀ CẤU TRÚC BACK-END LIÊN QUAN Ngân hàng mở (Open Banking) đang trở thành một xu thế mới trong lĩnh vực ngân hàng. Năm 2018 được ghi nhận là năm của "cuộc cách mạng lặng lẽ" ngân hàng mở, đặc biệt tại châu Âu và châu Mỹ. Đến năm 2020, tại Việt Nam, ngân hàng mở đang là từ khóa được quan tâm trong lĩnh vực tài chính, nhất là sau khi Việt Nam đã trải qua 2 đợt chống đại dịch. Xu thế về Open Banking được dự đoán sẽ ngày một phổ biến hơn ở các nước châu Mỹ và châu u, tuy nhiên, đối với Việt Nam và các nước châu Á thì vẫn chưa. Do đó, một trong những xu hướng mà các ngân hàng có thể lựa chọn vào thời điểm này là xây dựng các Platform Banking trên nền tảng công nghệ số. Riêng tại Việt Nam, Techcombank [...]
Read more →ASP.NET Core là gì? ASP.NET Core là gì? Nó là một open-source mới và framework đa nền tảng (cross-platform) cho việc xây dựng những ứng dụng hiện tại dựa trên kết nối đám mây, giống như web apps, IoT và backend cho mobile. Ứng dụng ASP.NET Core có thể chạy trên .NET Core hoặc trên phiên bản đầy đủ của .NET Framework. Nó được thiết kế để cung cấp và tối ưu development framework cho những dụng cái mà được triển khai trên đám mây (clound) hoặc chạy on-promise. [irp posts="13086" name=".NET core vs ASP.NET core: Phân biệt .NET Framework, .NET Core và Mono"] Nó bao gồm các thành phần theo hướng module nhằm tối thiểu tài nguyên và chi phí phát triển, như vậy bạn giữ lại được sự mềm giẻo trong việc xây dựng giải pháp của bạn. Bạn có thể phát triển và chạy những ứng dụng ASP.NET Core đa nền tảng trên Windows, Mac và Linux. Đồng thời nó đã trở thành một mã nguồn mở. Đây là [...]
Read more →Bài viết được sự cho phép của goatysite Dù là một lập trình viên có kinh nghiệm nhưng bạn đã phân biệt được .NET core vs ASP.NET core? Một trong những điểm mạnh của hệ sinh thái .NET là sự hỗ trợ rất tốt của các công cụ như Visual Studio. Tuy nhiên đây cũng là điểm yếu vì nó ngăn cản rất nhiều lập trình viên tiếp xúc với những lý thuyết căn bản của Framework. Trong bài viết này chúng ta sẽ tìm hiểu xem .NET là gì, và các nền tảng .NET Framework, .NET core, và Mono khác nhau như thế nào. TẠI SAO CẦN NẮM RÕ LÝ THUYẾT CĂN BẢN? Mình đã từng gặp rất nhiều những người đã làm việc với .NET lâu năm nhưng vẫn mù mờ về những khái niệm, định nghĩa của Framework. Điều này rất nguy hiểm vì nó gây ra việc hiểu sai về nền tảng, dẫn đến việc sản sinh [...]
Read more →