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

Bài đăng

Hiển thị các bài đăng có nhãn Theo dòng lịch sử

Hiển thị công thức toán học bằng Katex

Lịch sử ra đời: Từ TeX đến LaTeX Vào cuối những năm 1970, Donald Knuth, một huyền thoại trong ngành khoa học máy tính, đã vô cùng thất vọng với chất lượng in ấn của các bản thảo cho bộ sách kinh điển của ông, "The Art of Computer Programming". Ông quyết định tự mình tạo ra một công cụ để giải quyết vấn đề này. Kết quả là TeX ra đời vào năm 1978. TeX là một engine sắp chữ (typesetting engine) ở cấp độ thấp. Nó cực kỳ mạnh mẽ, cho phép người dùng kiểm soát vị trí của từng ký tự trên trang với độ chính xác tuyệt đối. Tuy nhiên, sức mạnh này đi kèm với sự phức tạp; việc sử dụng TeX trực tiếp đòi hỏi nhiều lệnh chi tiết và tỉ mỉ. LaTeX: Giúp TeX thân thiện hơn Nhận thấy hầu hết mọi người không cần đến mức độ kiểm soát chi tiết của TeX, vào đầu những năm 1980, Leslie Lamport đã phát triển LaTeX. LaTeX không phải là một chương trình độc lập, mà là một tập hợp các macro (lệnh được định nghĩa sẵn) chạy trên nền của engine TeX. Thay vì yêu cầu người dùng chỉ định "hãy đặt ký tự nà...

Lịch sử C#: Từ Java đến J++ và sự ra đời của một ngôn ngữ mới

C# (đọc là "C sharp") là một ngôn ngữ lập trình hiện đại, hướng đối tượng do Microsoft phát triển. Ra đời từ một quá trình phức tạp liên quan đến Java và những tranh chấp pháp lý, C# đã vươn lên trở thành một trong những ngôn ngữ phổ biến nhất thế giới, đặc biệt trong hệ sinh thái .NET. Anders Hejlsberg Kiến trúc sư trưởng tài ba Đứng sau sự thành công của C# là Anders Hejlsberg , một kỹ sư phần mềm lỗi lạc người Đan Mạch. Trước khi gia nhập Microsoft, ông đã tạo nên tên tuổi tại Borland với việc là tác giả của Turbo Pascal , một công cụ đã làm nên cuộc cách mạng cho việc lập trình trên PC. Sau đó, ông tiếp tục là kiến trúc sư trưởng của Delphi , một môi trường phát triển ứng dụng nhanh (RAD) cực kỳ thành công. Với kinh nghiệm dày dặn trong việc thiết kế ngôn ngữ lập trình, Hejlsberg đã được Microsoft tin tưởng giao trọng trách dẫn dắt việc phát triển một ngôn ngữ mới cho nền tảng .NET Framework, và C# đã ra đời từ đó. Con đường từ Java đến J++ Vào giữa những năm 1990, ngôn n...

Sơ lược về các thuật toán mã hóa: MD5, SHA1, SHA256

Hash Function (Hàm băm) là gì? Hàm băm là một hàm toán học nhận đầu vào là một chuỗi dữ liệu (văn bản, tệp tin, mật khẩu...) với độ dài bất kỳ, và trả về một chuỗi giá trị cố định (gọi là mã băm – hash value, digest hoặc checksum). Ví dụ: Input: "ChatGPT" Output (MD5): 62290c06718fbef3ca1e3be8a5a145f2 Đặc điểm chính của một hàm băm Đầu ra cố định (Fixed-length output) Dù bạn nhập 10 ký tự hay 10.000 ký tự, kết quả băm luôn có độ dài như nhau. MD5: 128 bit SHA-1: 160 bit SHA-256: 256 bit SHA-512: 512 bit VD: Nhatkyhoctap -> df30cb178eb8e37728f39b3e6551c8de https://www.md5hashgenerator.com/ -> bd041e3f1821cbb99795412b64508a05 Không thể đảo ngược (One-way function) Rất khó – gần như không thể – tìm ra dữ liệu gốc chỉ từ mã băm. Tính kháng va chạm (Collision resistance) Không nên có hai đầu vào khác nhau cho ra cùng một mã băm. Nếu điều này xảy ra, thuật toán được coi là yếu. Deterministic – Tính xác định Cùng một đầu vào luôn cho ra cùng một kết quả băm. Ví dụ: Hash(...