View allAll Photos Tagged CodeGym
MIT Open Courseware có các chương trình học trực tuyến cực kỳ nổi tiếng. Mọi người có thể tìm những bài học trong thư viện hoặc duyệt trong mục khóa học máy tính để tìm được những khóa học liên quan. Tại trang web này có khá nhiều chương trình như: Nhập môn khoa học máy tính, C++ primer và đặc biệt là đều được miễn phí. Tuy nhiên, học viên cần phải tải về các nguyên liệu thô thay vì những video hay các bài học so với những website lập trình miễn phí khác. Free Code Camp được đánh giá là một website cực kỳ thú vị vì học viên có thể học trực tuyến cùng họ. Sau khoảng 1 năm học tập thì mọi người có thể tham gia phát triển các dự án nguồn mở cho những tổ chức phi lợi nhuận. Đặc biệt là bạn có thể sử dụng thời gian cũng như kinh nghiệm đã học tập tại Free Code Camp để chuyển hóa thành những danh mục ngoài đời thực, giúp học viên tìm được việc làm một cách nhanh chóng. Tuy nhiên, bạn cần phải tạo tài khoản GitHub trong quá trình đăng ký. MyClass là website dạy lập trình hoàn toàn bằng Tiếng Việt, được thành lập từ năm 2014. Học viên có thể tiếp cận với cực kỳ nhiều những kiến thức lập trình căn bản trực tuyến như: C++, C#, Android, Java, JSP, SQL, HTML, WordPress,…Đặc biệt, website này có khá nhiều những gói học theo dự án và theo nghề. Ngoài ra, tại MyClass còn có những lớp học lập trình miễn phí để đáp ứng nhu cầu phổ cập kiến thức lập trình tại Việt Nam. - aj42boyko0 - codegym.vn/blog/2021/10/31/nhu%CC%83ng-trang-web-ho%CC%A3...
Giới thiệu tổng quan về kiểm thử phần mềm (tester) - Ngoài tìm hiểu về khái niệm kiểm thử phần mềm, kiểm thử phần mềm. Thì trong bài học đầu tiên các giảng viên sẽ giới thiệu đến các học viên về quy trình kiểm thử phần mềm. Các vòng lặp tĩnh và động trong khi lập kế hoạch. Chuẩn bị và đánh giá phần mềm để quá trình tìm lỗi được diễn ra đúng quy trình hơn: Khái niệm phần mềm, phân loại phần mềm Quy trình phát triển phần mềm Các mô hình phát triển phần mềm phổ biến hiện nay (Mô hình thác nước, mô hình chữ V, mô hình Agile, mô hình Scrum). Lỗi phần mềm: Lỗi phần mềm là gì? Những thuật ngữ diễn tả các lỗi phần mềm, quy tắc để xác định lỗi của phần mềm, các vòng đời của lỗi. Tìm hiểu kiểm thử phần mềm (Khái niệm, các nguyên tắc cơ bản, quy trình kiểm thử phần mềm, phân loại kiểm thử, các cấp độ của kiểm thử phần mềm, thiết kế kịch bản kiểm thử phần mềm). Các kỹ thuật trong kiểm thử phần mềm: Kiểm thử hộp đen, hộp trắng và hộp xám. Kiểm thử tự động: (Khái niệm kiểm thử tự động, ưu và nhược điểm của kiểm thự tự đồng, các loại kiểm thử tự động). Có 16 khái niệm kiểm thử phần mềm mà bất cứ học viên nào cũng cần phải biết là: Trong quy trình kiểm thử phần mềm sẽ có những bước như sau: Phân tích yêu cầu của khách hàng và phần mềm: Requirement analysis. Lên phương án và lập kế hoạch kiểm thử: Test planning Thiết kế kịch bản kiểm thử: Test case development Thiết lập môi trường kiểm thử: Test environment set up Bắt đầu thực hiện kiểm thử: Test execution Đóng chu trình kiểm thử: Test cycle closure Tìm hiểu yêu cầu khách hàng: Khi nhận phần mềm cần - jwehrx66co - codegym.vn/blog/2022/08/03/khoa-hoc-kiem-thu-phan-mem/
Chắc hẳn, các bạn đã nghe nhiều về transaction rồi. Nhưng không phải ai cũng hiểu và sử dụng thành thạo transaction. Nên bài hôm nay mình sẽ phân tích chi tiết về transaction và dựa trên ví dụ để chúng ta hiểu rõ hơn về nó.
1. Transaction là gì và mục đích sử dụng
Là kỹ thuật xử lý nhiều tiến trình được thực hiện tuần tự.
Các tiến trình đó có thể là: create, read, update hoặc delete.
Nếu tất cả tiến trình thực hiện thành công, thì transaction sẽ được commit và dữ liệu sẽ được cập nhật vào DB.
[Database] Transaction (Part 1)
[Database] Transaction (Part 2)
2. Ví dụ về transaction
Transaction bên dưới đang có 2 tiến trình:
Thực hiện rút tiền từ tài khoản #1.
Sau đó, gửi tiền vào tài khoản #2.
Nhưng nếu tiến trình 1 bị lỗi, tức là tiền không thể rút từ tài khoản 1, thì tiến trình 2 không thể thực hiện, dữ liệu sẽ được phục hồi về ban đầu.
Tương tự như vậy, nếu tiến trình 1 thành công, nhưng tiến trình 2 gặp lỗi, thì dữ liệu không thể được commit và sẽ toàn bộ dữ liệu ở các tiến trình trước cũng sẽ phục hồi về ban đầu.
Cuối cùng, cả 2 tiến trình đều thực hiện thành công thì toàn bộ dữ liệu sẽ được commit vào DB.
3. Hướng dẫn cách tạo transaction
Cú pháp
Để bắt đầu một transaction:
START TRANSACTION;
Khi muốn trả về trạng thái DB ban đầu trước khi transaction hoạt động, hoặc có thể trả về SAVEPOINT:
ROLLBACK;
Cuối cùng, để cập nhật dữ liệu ở transaction đến DB:
COMMIT;
Ví dụ
Bạn còn nhớ ví dụ ở bài STORED PROCEDURE (SP) không? Nó sẽ thực hiện tạo ra thông tin khám bệnh, bằng cách đăng ký dữ liệu lần lượt vào các table medical_record, doctor_treatment. Nhưng trong trường hợp dữ liệu đăng ký thành công ở table medical_record, sau đó thực hiện thêm dữ liệu vào table doctor_treatment lại xảy ra lỗi. Vậy thì dữ liệu ở table trước đó (tức là table medical_record) đang bị dư thừa và có thể gây ra sự không đồng bộ về việc liên kết dữ liệu sau này.
Nên mình sẽ áp dụng transaction vào SP để giải quyết vấn đề trên, nếu một trong các tiến trình xảy ra lỗi, thì sẽ phục hồi lại trạng thái của DB về ban đầu.
delimiter //
CREATE PROCEDURE sp_register_treatment_transaction (p_doctor_id INT
, p_patient_id INT
, p_fee DOUBLE)
BEGIN
START TRANSACTION;
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
INSERT INTO medical_record (date_of_examination, fee, patient_id)
VALUES (CURDATE(), p_fee, p_patient_id);
INSERT INTO doctor_treatment (doctor_id, record_id)
VALUES (p_doctor_id, LAST_INSERT_ID());
SELECT d.doctor_id, d.last_name, mr.fee, p.patient_id, p.`name`
FROM doctor d
INNER JOIN doctor_treatment dt ON d.doctor_id = dt.doctor_id
INNER JOIN medical_record mr ON dt.record_id = mr.record_id
INNER JOIN patient p ON mr.patient_id = p.patient_id
WHERE mr.record_id = LAST_INSERT_ID();
COMMIT;
END;
END //
delimiter ;
Với dòng DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK, nó sẽ giúp thoát SP và rollback lại toàn bộ dữ liệu khi xảy ra lỗi ở một dòng lỗi nào đó trong transaction.
4. Các tính chất của transaction
Bao gồm 4 tính chất, kết hợp lại thành cụm là ACID.
4.1. Atomicity
Toàn bộ các tiến trình đều thành công, thì transaction sẽ được đánh giá là thành công. Ngược lại, nếu có một điểm bị lỗi thì tất cả tiến trình trước đó sẽ rollback.
4.2. Consistency
Các dữ liệu được thực hiện ở transaction phải đảm bảo theo các quy định, ràng buộc (constraints), cascade và trigger.
4.3. Isolation
Tất cả transaction sẽ thực hiện độc lập với các transaction khác.
4.4. Durability
Những cập nhật đến từ transaction vẫn luôn đảm bảo thành công, thậm chí nếu hệ thống có bị lỗi.
Kết luận
Tóm lại, một chuỗi lệnh được xảy ra và các lệnh cần có tính ảnh hưởng lẫn nhau thì transaction sẽ là giải pháp cho vấn đề này. Và các dữ liệu từ transaction sẽ luôn được đảm bảo.
Nguồn: codegym.vn/blog/2023/11/22/transaction-va-cac-tinh-chat/