Trong thống kê và học máy truyền thống (như hồi quy tuyến tính), chúng ta thường tập trung trả lời câu hỏi: "Sự kiện có xảy ra không?" hoặc "Giá trị dự báo là bao nhiêu?" . Tuy nhiên, trong thực tế có những bài toán cốt lõi lại là: "Khi nào sự kiện sẽ xảy ra?" . Đó chính là lý do Survival Analysis (Phân tích sống còn) ra đời. 1. Survival Analysis là gì? Survival Analysis là một nhánh của thống kê chuyên dùng để nghiên cứu và dự đoán khoảng thời gian cho đến khi một sự kiện cụ thể (Event) xảy ra . Khoảng thời gian này được gọi là Survival Time hoặc Time-to-event . Ban đầu, kỹ thuật này được phát triển trong y học để theo dõi thời gian sống sót của bệnh nhân. Ngày nay, khái niệm "sự kiện" đã được mở rộng ra mọi lĩnh vực: Y sinh: Thời gian từ khi điều trị đến khi bệnh nhân tái phát hoặc khỏi bệnh. Kỹ thuật (Reliability Engineering): Thời gian từ khi máy móc hoạt động đến khi một linh kiện (như ổ cứng, động cơ) bị hỏng. Quản...
Thiết lập CI/CD cho ASP.NET Core trên IIS với GitHub Actions: Build, Test, Deploy và Quản lý Secrets
Ở nhiều dự án ASP.NET Core chạy trên IIS, quy trình deploy thường bắt đầu khá đơn giản: Publish từ Visual Studio Remote Desktop vào server Copy đè file Restart IIS Cách làm này ổn khi dự án còn nhỏ. Tuy nhiên khi số lần release tăng lên, việc deploy thủ công bắt đầu xuất hiện nhiều vấn đề: Dễ quên bước Khó rollback Khó truy vết lỗi Mất thời gian khi release nhiều lần trong ngày Trong bài viết này, mình sẽ cấu hình một pipeline CI/CD bằng GitHub Actions cho ASP.NET Core chạy trên IIS với ba giai đoạn riêng biệt: flowchart TD A[Build] --> B[Test] B --> C[Deploy] Pipeline sẽ tự động: Build source code Chạy Unit Test Publish artifact Thay thế Connection String bằng GitHub Secrets Deploy lên IIS thông qua MSDeploy Kiến trúc Pipeline Thay vì đặt toàn bộ logic vào một job duy nhất, mình tách pipeline thành ba job: Job Mục đích Build Restore, Build và Publish Test Chạy Unit Test Deploy Deploy lên IIS Luồng hoạt động:...