Đăng bởi Để lại phản hồi

Code Coverage (Độ bao phủ mã nguồn) 

Trong Visual Studio, Code Coverage (Độ bao phủ mã nguồn) là một tính năng giúp bạn xác định xem có bao nhiêu phần trăm mã nguồn của dự án đã được chạy qua bởi các bài kiểm thử đơn vị (Unit Tests)

1. Mục đích của Code Coverage

  • Đánh giá chất lượng kiểm thử: Giúp bạn biết những phần nào của code đã được kiểm tra và những phần nào còn bị bỏ sót.
  • Giảm thiểu rủi ro: Phát hiện các đoạn code “chết” hoặc các logic chưa bao giờ được thực thi, từ đó giảm thiểu lỗi tiềm ẩn khi vận hành.
  • Định hướng viết Test: Dựa vào báo cáo coverage, lập trình viên có thể bổ sung các test case cho những vùng code chưa được bao phủ. 

2. Các chỉ số đo lường phổ biến

Thông thường, Visual Studio cung cấp các loại bao phủ sau:

  • Line/Statement Coverage: Đo lường tỷ lệ các dòng code được thực thi.
  • Branch/Decision Coverage: Kiểm tra xem các nhánh của câu lệnh điều kiện (if/else, switch) đã được chạy qua hết các trường hợp đúng/sai chưa. semiconvn.comsemiconvn.com +1

3. Cách sử dụng trong các phiên bản Visual Studio

Tính năng này có sự khác biệt tùy thuộc vào phiên bản bạn đang dùng:

  • Visual Studio Enterprise: Đây là phiên bản cao cấp tích hợp sẵn công cụ Analyze Code Coverage mạnh mẽ trong menu Test.
  • Visual Studio Community/Professional: Các phiên bản này thường không tích hợp sẵn tính năng báo cáo coverage chi tiết. Tuy nhiên, bạn có thể sử dụng các tiện ích mở rộng (extensions) miễn phí hoặc thư viện bên thứ ba:
    • Fine Code Coverage: Một extension phổ biến và miễn phí cho Visual Studio giúp hiển thị kết quả ngay trong IDE.
    • Coverlet: Một thư viện cross-platform cho .NET dùng để thu thập dữ liệu coverage.
    • ReportGenerator: Công cụ giúp chuyển đổi dữ liệu thô từ các bộ quét coverage thành báo cáo HTML dễ đọc. 

4. Cách xem kết quả

Khi chạy Code Coverage, Visual Studio thường hiển thị:

  • Bảng thống kê: Cho biết tỷ lệ % bao phủ của từng Project, Namespace, Class và Method.
  • Đánh dấu màu sắc trực tiếp trên Code:
    • Màu xanh: Dòng code đã được thực thi bởi ít nhất một test case.
    • Màu đỏ: Dòng code chưa được chạy qua.
    • Màu vàng: Dòng code chứa điều kiện và chỉ một phần của nhánh điều kiện được thực thi. semiconvn.com
Đăng bởi Để lại phản hồi

bài hn

$(‘#myTable’).DataTable({
dom:
‘rt’ +
“<‘dt-bottom'<‘dt-info’i><‘dt-length’l><‘dt-paging’p>>”
});

.dt-bottom {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
}

.dt-bottom .dt-length select {
margin: 0 5px;
}

Đăng bởi Để lại phản hồi

Hướng dẫn sử dụng SSH

1. Mở file key ssh lưu trên máy client
notepad $env:USERPROFILE\.ssh\known_hosts
2. Xóa hoặc thay đổi key trong file ssh trên notepad
Xóa bình thường sau đó lưu lại
3. Connect ssh tới server
ssh [user]@[host]
4. Mở port ra ngoài internet
1 - Kiểm tra UFW: sudo ufw status
2 - Nếu chưa bật: sudo ufw enable
3 - Mở port:
    sudo ufw allow 80 // Mở port cụ thể
    sudo ufw allow from 123.123.123.123 to any port 3306 //Mở cho ip cụ thể để an toàn hơn
    sudo ufw allow 8000:9000 // Mở port theo dải
    sudo ufw allow 22/tcp  //Mở port kèm protocol
    sudo ufw allow 8000:9000/tcp // Mở port theo dải kèm protocol
    sudo ufw allow ssh //Mở port cho service
    sudo ufw allow http //Mở port cho service
    sudo ufw allow https //Mở port cho service
4 - Kiểm tra port đã mở
    sudo ss -tuln //dùng để xem các port đang mở và đang lắng nghe
    //Ý nghĩa từng tham số
       ss : Socket Statistics (thay thế cho netstat)
       -t : TCP
       -u : UDP
       -l : Listening (đang mở)
       -n : Hiển thị số port (không resolve tên)

    sudo ss -tuln | grep 80 //Lọc port cụ thể

5 - Cách đóng port
    sudo ufw deny 3306 // Đóng port đang mở

    sudo systemctl stop mysql // Dừng service đang mở port
    sudo systemctl disable mysql // Disable service luôn

6 - Reload lại UFW
    sudo ufw reload

    

    

Đăng bởi Để lại phản hồi

Mysql – Kết nối từ máy khác (client)

1 Dùng MySQL CLI:

mysql -h 192.168.1.50 -P 3306 -u lanuser -p

2. Connection String trong .NET

string connectionString = "Server=192.168.1.50;Port=3306;Database=testdb;User ID=lanuser;Password=password123;SslMode=none;";

🔥 Lưu ý: Kiểm tra MySQL có lắng nghe đúng port

sudo netstat -tulnp | grep mysqld

Hoặc:

sudo ss -tulnp | grep 3306

Bạn phải thấy:

LISTEN ... 0.0.0.0:3306

🔥 Lưu ý:Tạo user MySQL cho LAN

Truy cập MySQL:

mysql -u root -p

Tạo user được phép truy cập từ mạng LAN:

CREATE USER 'lanuser'@'%' IDENTIFIED BY 'password123';

Cấp quyền:

GRANT ALL PRIVILEGES ON *.* TO 'lanuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

🔥 Lưu ý: Mở port 3306 trên CentOS Firewall

CentOS dùng firewalld, mở port như sau:

sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

→ Kiểm tra:

sudo firewall-cmd --list-all