• Rug pull

    Rug pull

    Một vụ rút rug trong ngành công nghiệp tiền điện tử là khi một nhóm phát triển bất ngờ bỏ dở một dự án và bán hoặc gỡ bỏ toàn bộ thanh khoản của nó. Tên gọi này xuất phát từ cụm từ ‘to pull the rug out from under (someone)’, có nghĩa là rút… Continue reading

  • Impermanent loss

    Impermanent loss

    Impermanent loss hay còn gọi là ‘temporary loss‘(tổn thất/mất mát tạm thời) của số tiền xảy ra do biến động giá khi tham gia vào cung cấp thanh khoản(Add Liquidity) cho các Pool AMM(Auto Market Marker). Impermanent loss diễn ra như thế nào? Cùng xem một ví dụ Giả sử bạn cung cấp thanh khoản… Continue reading

  • Social Engineering

    Một vài hacker dựa vào khai thác lỗ hỗng từ con người thay vì lỗ hổng công nghệ – tìm các chúng hoạt động thế nào và bảo vệ bản thân khỏi “social enineering” nhé. Tóm tắt: Kỹ thuật “Social engineering” dựa vào lỗ hổng của con người, không phải năng lực kỹ thuật của… Continue reading

  • Governance Attacks(Tấn công quản trị)

    Governance Attacks(Tấn công quản trị)

    Governance là gì? Quản lý và thực hiện các thay đổi đối với chuỗi khối(on-chain) thông qua bỏ phiếu được gọi là quản trị.Những thay đổi với giao thức, tính năng của chuỗi khối được thực hiện thông qua loại hình quản trị này. Mỗi holder token có thể bỏ phiếu(vote) để chấp thuận hoặc… Continue reading

  • Các hình thức tấn công DeFi

    Các hình thức tấn công DeFi

    Decentralized finance(DeFi) là một công nghệ tài chính mới nổi thách thức các hệ thống ngân hàng tập trung hiện nay. DeFi loại bỏ các khoản phí mà các ngân hàng và các công ty tài chính khác khi sử dụng dịch vụ của họ và thúc đẩy việc sử dụng các giao dịch P2P(peer-to-peer).… Continue reading

  • Structural Design Patterns

    Ở bài đầu tiên giới thiệu về Design Pattern chúng ta có nhắc đến 3 loại Design Pattern. Chúng ta đã đi hết về Creational Pattern, tiếp theo chúng ta sẽ đến loại thứ 2: Structural Pattern. Structural Design Pattern giải thích cho chúng ta làm các nào có thể tổng hợp, lắp ghép các đối tượng,… Continue reading

  • Singleton

    Singleton

    Singleton là một mẫu thiết kế tạo đối tượng (creational design pattern) cho phép bạn đảm bảo rằng một lớp chỉ có một instance, và instance này sử dụng trong toàn chương trình Problem Mẫu Singleton giải quyết hai vấn đề cùng lúc, vi phạm nguyên tắc Single Responsibility Principle: Solution Tất cả các cài… Continue reading

  • Prototype

    Prototype

    Prototype là một mẫu thiết kế tạo đối tượng cho phép bạn sao chép các đối tượng hiện có mà không làm cho mã của bạn phụ thuộc vào lớp của chúng. Problem Thử tưởng tượng rằng bạn có một đối tượng và bạn muốn tạo một bản sao chính xác của nó. Làm thế… Continue reading

  • Builder

    Builder

    Builder là một mẫu thiết kế (design pattern) tạo đối tượng (creational design pattern) giúp bạn xây dựng đối tượng phức tạp bằng cách thực hiện từng bước. Mẫu thiết kế này cho phép bạn tạo ra các loại đối tượng và biểu diễn khác nhau của một đối tượng sử dụng cùng một đoạn… Continue reading

  • Abstract Factory

    Abstract Factory

    Abstract Factory là một creational design pattern cho phép tạo ra các đối tượng liên quan đến nhau mà không cần chỉ định các lớp cụ thể của chúng. Giả sử bạn đang viết 1 ứng dụng cho một cửa hàng nội thất. Code của bạn bao gồm các lớp đại diện cho: Bạn cần… Continue reading

  • Factory Method

    Factory Method

    Factory Method là một mẫu thiết kế tạo đối tượng mà cung cấp một giao diện(inteface) cho việc tạo đối tượng trong một lớp cha, nhưng cho phép các lớp con thay đổi loại đối tượng sẽ được tạo ra. Problem: Hãy tưởng tượng rằng bạn đang tạo một ứng dụng quản lý logistics. Phiên… Continue reading

  • Creational Design Patterns

    Ở bài đầu tiên giới thiệu về Design Pattern chúng ta có nhắc đến 3 loại Design Pattern. Chúng ta sẽ tìm hiểu về loại đầu tiên: Creational Patterns Creational Design Patterns cung cấp các cơ chế tạo object khác nhau, giúp tăng tính linh hoạt và tái sử dụng những đoạn code đã có.… Continue reading

  • [D]ependency Inversion Principle

    Với cách code thông thường, các module cấp cao sẽ gọi các module cấp thấp. Module cấp cao sẽ phụ thuộc và module cấp thấp, điều đó tạo ra các dependency. Khi module cấp thấp thay đổi, module cấp cao phải thay đổi theo. Một thay đổi sẽ kéo theo hàng loạt thay đổi, giảm khả năng… Continue reading

  • [I]nterface Segregation Principle

    Hiểu đơn giản là không 1 Interface không nên chứa quá nhiều các function. Ví dụ trong 1 Interface khai báo tới 20 – 50 functions và ta có 10 class kế thừa Interface này. Trong đó chỉ có 1-2 class là sử dụng hết các function của Interface —> các class chỉ sử dụng… Continue reading

  • [L]iskov Substitution Principle

    Để giữ tính đúng đắn của chương trình, class con phải thay thế được  class cha. Giả sử, ta muốn viết một chương trình để mô tả các loài chim bay. Đại bàng, chim sẻ, vịt bay được, nhưng chim cánh cụt không bay được. Do chim cánh cụt cũng là chim, ta cho nó kế… Continue reading

  • [O]pen–closed principle

    Ý nghĩa chính của nguyên tắc này để giữ cho code không bị phá vỡ khi bạn thực hiện impl một tính năng mới. Example: Bạn có 1 ứng dụng e-Commere với 1 class Order tính toán shipping cost và tất cả các method shipping được Hard-code trong class Order Continue reading

  • SOLID Principles

    Hiện tại chúng ta đã biết một số nguyên tắc thiết kế cơ bản, chúng ta sẽ tiếp tục xem 5 nguyên tắc hay dùng đó là: nguyên tắc S-O-L-I-D. SOLID được Robert Martin giới thiệu trong cuốn sách [Agile Software Development, Principles, Patterns, and Practices] SOLID là một cách ghi nhớ cho 5 nguyên… Continue reading

  • Nguyên tắc thứ 3: Favor Composition Over Inheritance

    Tính kế thừa là cách đơn giản và rõ ràng nhất để tái sử dụng lại mã giữa các class. Bạn có 2 class với cùng những đoạn mã. bạn có thể tạo 1 class base cho 2 class này và move những đoạn code giống nhau vào đó rồi sử dụng lại đoạn mã… Continue reading

  • Nguyên tắc thứ 2: Program to an Interface, not an Implementation

    Bạn có thể nói thiết kế đó là đủ linh hoạt nếu bạn có thể dễ dàng mở rộng nó mà không phá vỡ bất kì đoạn code nào có sẵn. Hãy đảm bảo tuyên bố trên là chính xác bằng cách xem ví dụ về class Cat ở dưới. Một Cat có thể ăn… Continue reading

  • High-level vs Low-level Languages

    Đầu tiên để so sánh chúng, ta cần hiểu Ngôn ngữ lập trình là gì? Là những quy tắc mà 1 người lập trình viết viết đoạn mã code, sau đó máy tính có thể hiểu được và thực thi chúng. Mỗi ngôn ngữ lập trình có các quy tắc và cú pháp khác nhau… Continue reading

  • Làm thế nào để tăng tốc độ phát triển phần mềm

    Nếu bạn từng làm một quản lý phát triển phần mềm – hoặc có 1 kế hoạch sẽ trở thành như vậy – có 1 điều có lẽ bạn cần ưu tiên hơn hầu hết những điều khác trong quá trình phát triển 1 phần mềm: Speed. Bất kể bạn đang làm việc với loại… Continue reading

  • Top 5 Network Security Risks in 2023

    Top 5 Network Security Risks in 2023

    Network security đề cập đến các công nghệ, tiến trình và chính sách bảo mật được sử dụng để bảo vệ mạng lưới, network traffic và khả năng truy cập từ các hình thức tấn công mạng, truy cập trái phép, và mất mát dữ liệu. Tất cả các tổ chức với mọi quy mô… Continue reading

  • Nguyên tắc thứ nhất: Encapsulate What Varies

    Mục tiêu chính của nguyên tắc này là giảm tối thiểu các hiệu ứng gây ra khi bạn thay đổi code. Bạn có thể chia nhỏ chương trình của mình ra thành các module độc lập, bảo vệ các đoạn code khác khỏi sự thay đổi khi bạn update 1 tính năng nào đó. Và… Continue reading

  • Software Design Principles

    (Các nguyên tắc khi thiết kế phần mềm) Features of Good Design Trước khi tiếp tục về các pattern thực tế, chúng ta cùng thảo luận tiến trình của thiết kế kiến trúc phần mềm: những điều cần hướng tới và những điều cần tránh. Những điều hướng tới: Chi phí và thời gian là… Continue reading

  • What’s a Design Pattern

    Design Pattern là gì? Là những giải pháp tiêu biểu(mẫu thiết kế) để giải quyết các vấn đề thường xảy ra trong thiết kế Phần mềm. Chúng giống như là những bản thiết kế được làm sẵn mà bạn có thể tùy biến để giải quyết những vấn đề trong code của bạn Bạn không… Continue reading

  • Giới thiệu về ASP. NET Core Framework

    Trong bài này, tôi sẽ giới thiệu ngắn gọn về ASP.NET Core Framework. Ngày nay, nói đến phát triển phần mềm, mọi người đều nói về miễn phí, open-source(mã nguồn mở) và đa nền tảng(cross-flatform). Chúng đa biết Microsoft nổi tiếng với các sản phần trên HĐH Windows. Và bây giờ là. thời đại phát… Continue reading

  • Công nghệ Blockchain là gì? Cuộc cách mạng thay đổi thế giới? (P1)

    Ok, Blockchain là gì? Sao lại hot đến vậy? Gần đây nhà nhà người người FOMO, các F0 chen nhau lao vào thị trường tiền điện tử (cryptocurrencies) không cần biết đến nó là gì và nó giúp ích gì. Hôm nay, tôi sẽ nói về tất cả những gì cần biết về công nghệ… Continue reading

  • Bài 4 – Cấu trúc cú pháp cơ bản trong Python( Phần II)

    Tiếp tục bài trước, hôm nay chúng ta sẽ tìm hiểu kĩ hơn về cách sử dụng lệnh trên 1 dòng, nhiều dòng, cách thụt lề, comment… trong Python. Line Structure: Một chương trình Python bao gồm các dòng logic. Một dòng mới sẽ là 1 câu lệnh logic. Python bỏ qua các dòng trống.… Continue reading

About Me

Với niềm đam mê công nghệ và mong muốn Blog là nơi note lại các kiến thức mình đã học và làm. Ngoài ra có thể là 1 nơi để trao đổi, chia sẻ các kiến thức, kinh nghiệm tới các anh em cùng đam mê.