Chuyển đến nội dung chính

Bài đăng

Umbraco: Rebuild index

Bạn đăng nhập vào umbraco: https://your-website.com/umbraco Ở trang admin, bạn bấm Settings => Examine Management Bấm vào từng content bên dưới => Rebuild index

Sử dụng jQuery để download file

Để download file mà không sử dụng thẻ Form, ta có các cách sau: Tạo thẻ Form giả và gọi submit form Sử dụng thư viện JS để hỗ trợ download byte array data Convert Byte Array data sang base 64 và gởi trả về phía client. Trong bài viết này, mình sẽ sử dụng cách 3. Các bước gồm có: End user dùng Ajax gọi download file Hệ thống render ra file data với kiểu dữ liệu Byte Array Convert Byte array sang base 64. base64 là phương thức convert dạng mã hóa 2 chiều từ binary sang string để có thể gửi đi được trong network một cách dễ dàng Sau khi gọi Ajax thành công, gọi hàm _base64ToArrayBuffer() để chuyển base 64 sang dạng Byte Array Tạo link chứa Blob object. Tạo thẻ <a> để thực hiện việc download file. (Binary Large Object (BLOB) là Object lớn nhị phân (BLOB) Remove thẻ <a> sau khi download file Ví dụ Giả sử bạn tạo file excel. Ở đây mình sử dụng thư viện Epplus Tạo file excel using OfficeOpenXml; using System.Drawing; namespace Nhatkyhoctap.Implement { public class ClassServi...

C#: Init only property

Init-only là feature được thêm vào C# 9.0. Vậy tác dụng của nó là gì? Trước hết chúng ta cần hiểu khái niệm mutable và immutable Mutable nghĩa là “can change” – có thể thay đổi. Một đối tượng sau khi được tạo, data member có thể được thay đổi. Immutable nghĩa là “can’t change” – không thể thay đổi. Data member không thể thay đổi giá trị sau khi đối tượng được tạo ra. VD: string là immutable type. Mỗi khi bạn gán giá trị, biến string sẽ được khởi tạo mới. String Builder được dùng đại diện cho kiểu dữ liệu string có thể thay đổi được. Giả sử bạn có kiểu dữ liệu Member với 3 properties (Id, Name, Address). Làm sao để Id là kiểu Immutable type. Xử lý dữ liệu kiểu truyền thống Tạo class Member với 3 thuộc tính sau: public class Member { public int Id { get; set; } public string Name { get; set; } public string Address { get; set; } } Dưới đây là đoạn code gán giá trị var memberObj = new Member(); memberObj.Id = 1; memberObj.Name = "An Binh Trong"; memberObj.Address = ...

Hướng dẫn cách gởi message lên Telegram

Trong bài viết này, mình sẽ hướng dẫn bạn cách tạo 1 channel mới ở Telegram, tạo mới bot và gởi 1 message đơn giản từ C# application. Các bước: Tạo mới 1 channel Tạo mới 1 bot Gửi message từ console application Tạo mới 1 channel Nhấp vào biểu tượng cây bút -> New Channel Nhập tên Channel, Description, thêm hình ảnh cho Channel, sau đó chọn Public hoặc Private. VD bạn tạo 1 bot tên AAA Tạo 1 bot Mục đích tạo 1 bot ở đây là để bạn có thể gởi message từ application hoặc từ ứng dụng nào đó.  Nhập Botfather tại thanh tìm kiếm, chọn BotFather có stick xanh. Sau đó bạn nhấn nút Start Hệ thống sẽ hiển thị các lệnh liên quan tới việc tạo mới, và chỉnh sửa bot. Nhấp vào /newbot để tạo 1 bot mới. Do telegram khá phổ biến nên bạn phải chọn tên bot sao cho không trùng Lưu ý tên mới của bot phải kết thúc bằng chữ bot: <ten bot>_bot. Bạn sẽ nhận được thông báo bao gồm đường link dẫn đến bot mới và mã HTTP API Telegram. Mã API rất quan trọng trong việc sử dụng Bot Telegram. Sau đó bạn thê...

Cài đặt Umbraco 9 template

Một tin vui là Umbraco 9 đã hỗ trợ .NET 6. Việc cài đặt Umbraco 9 ở localhost hơi khác so với việc cài đặt Umbraco từ bản 8 trở xuống. Để sử dụng Umbraco Template trên Visual Studio, bạn cần cài đặt Umbraco template từ PowerShell Mở PowerShell, gõ lệnh: dotnet new -i Umbraco.Templates::* Mở Visual Studio lên, bạn chọn New Project, gõ Umbraco > Chọn Umbraco Project (Umbraco HQ)  Gõ tên Project name   Project mới sẽ được tạo ra như sau Bạn bấm F6 để build project, sau đó Ctrl + F5 để run lên. Các bước tiếp theo tương tư như việc cài đặt Umbraco 8. Bạn có thể tham khảo thêm tại: https://nhatkyhoctap.blogspot.com/2021/03/umbraco-8-bai-1-cai-at-va-su-dung-part-1.html Chúc các bạn thành công

.NET Fiddler

.NET Fiddler là một công cụ hỗ trợ bạn code và compile online. Homepage: https://dotnetfiddle.net/ Mình có chạy thử 1-2 ví dụ và thấy chạy khá ok. Các bạn thử xem. Tìm số nguyên tố: https://dotnetfiddle.net/bUkoxj Enum: https://dotnetfiddle.net/AJw5BA

Angular: Chia sẻ dữ liệu giữa các component

Trong bài viết này, mình hướng dẫn chia sẽ dữ liệu giữa Parent component, child component, và sibling component trong Angular. Có 4 cách để chia sẽ dữ liệu: Parent to child: thông qua Input() Child to Parent: thông qua ViewChild Child to Parent: thông qua Output() và EventEmitter Giữa các component bất kỳ: thông qua Subject. Parent to child: thông qua Input() Giả sử chúng ta cần viết 1 trang bao gồm 2 phần tử: Parent component và child component, trong đó Parent component chứa child component như trong hình. Vấn đề đặt ra là làm sao để truyền value “message from parent” từ Parent component tới child component? Cách tiếp cận đơn giản nhất là dùng javascript để update DOM. Hoặc bạn dùng 1 thư viện nào khác như jQuery, AngularJs để update DOM. Khuyết điểm là có sự liên kết giữa giao diện (DOM) và business. Thay vì liên kết trực tiếp trên DOM, bạn có thể liên kết qua business logic, cụ thể là variable được định nghĩa trong class typescript của child component. Để có thể truyền value từ Par...