Quản trị mạng – Bổ sung thêm vào các bản vá lỗi và nâng cấp bảo mật trong bản Mac OS X 10.6.3 vừa được phát hành gần đây, Apple trích dẫn một tính năng mới gây ra lỗi thoát các dialog một cách không mong đợi: “Mac OS X 10.6.3 có thể tự động thu thập các thông tin sử dụng, triệu chứng từ máy tính Mac và gửi nó đến Apple để phân tích”.
Các phiên bản trước của Mac OS X đều có thể thu thập các thông tin triệu chứng sau một đổ vỡ xảy ra. Tuy nhiên điểm mới trong Mac OS X 10.6.3 chính là sự thu thập “thông tin sử dụng” nặc danh (cho ví dụ, dữ liệu về cách bạn sử dụng Apple và các phần mềm, phần cứng và dịch vụ của các hãng thứ ba). Tuy nhiên trong việc bổ sung này, Apple cũng đã chủ động ngừng một phần trong cách làm việc của các dialog có liên quan.
Tôi không giám chắc đó là gì với Apple và những dialog bị thoát không mong đợi. Dường như khá đơn giản trong việc làm cho các dialog này làm việc như mong đợi. Tuy nhiên sự việc bên ngoài lại không diễn ra như vậy. Apple đã tạo thêm lộn xộn và tạo lỗi cho tính năng đã có lịch sử lâu đời.
Sự lộn xộn dialog thoát không mong đợi
Sau một hành động thoát không mong đợi, một dialog sẽ xuất hiện với ba tùy chọn: Ignore, Reopen và Report (xem hình bên dưới).
Kích Report, một dialog khác sẽ xuất hiện với ba tùy chọn khác: Show Details, Don’t Send, và Send to Apple (như hình bên dưới).
Kích Send to Apple, một sheet sẽ sổ xuống và ở đó bạn có thể chọn Agree hoặc Disagree để gửi các triệu chứng cũng như các thông tin sử dụng đến có liên quan Apple (hình bên dưới).
Bất cứ lựa chọn nào được chọn, bạn cũng có thể kích hoạt hoặc vô hiệu hóa hộp kiểm “Don’t ask me again”. Nó được kích hoạt mặc định. Đây chính là tiêu điểm cho mối quan tâm của chúng ta. Nếu để kích hoạt, thời điểm tiếp theo khi một lỗi thoát không mong đợi xảy ra và bạn kích Send to Apple, hộp thoại Agree/Disagree sẽ không xuất hiện (chính xác như được ngụ ý bởi “Don’t ask me again”).
Tuy nhiên giả định bạn thay đổi quan điểm; chẳng hạn như muốn chuyển từ Agree sang Disagree. Bạn có thể thực hiện điều này như thế nào nếu không có sheet sổ xuống để cho phép bạn thực hiện thay đổi?
Câu trả lời là khởi chạy Console và chọn Preferences. Trong cửa sổ mở ra (hiển thị phía bên phải), sẽ có một hộp kiểm “Automatically send anonymous and diagnostic usage data to Apple”. Nếu vô hiệu hóa tùy chọn này, Agree/Disagree sheet sẽ xuất hiện lại ở thời điểm tiếp theo khi bạn gặp phải một lỗi thoát không mong đợi.
Chí ít đó là cách nó được giả định và đã làm việc. Tuy nhiên đối với trường hợp của tôi, tùy chọn đã bị chuyển xám màu và không thể thay đổi. Điều đó có nghĩa không có cách nào tôi có thể gặp lại Agree/Disagree sheet – và như vậy không có cách nào có thể thay đổi lựa chọn trước đây của mình.
Lưu ý: Trong Mac OS X 10.6.2, Preferences thay vì cung cấp một nút Reset cho Diagnostic Reporting. Nút này cũng cung cấp chức năng cơ bản như mục “Automatically send…” trong 10.6.3.
Làm việc với file plist
Một giải pháp là vô hiệu hóa hộp kiểm “Don’t ask me again” mỗi lần. Tuy vậy, sau một chút tìm tòi thử nghiệm, tôi đã phát hiện ra cách có thể dẫn tới thành công thậm chí nếu đã chọn “Don’t ask me again”.
Đó là file .plist dùng để phát hiện xem hộp chọn Console liệu đã được kích hoạt và xem Agree/Disagree sheet liệu có sổ xuống hay không. Nó được gọi là com.apple.SubmitDiagInfo.###,plist (ở đây ### biểu thị chuỗi hex duy nhất đối với máy tính của bạn). Bạn sẽ tìm thấy file .plist trong thư mục Library/Preferences/ByHost của thư mục Home. Nếu xóa file này, Agree/Disagree sheet sẽ xuất hiện lại vào lần tiếp theo khi một lỗi thoát không mong đợi xuất hiện.
Tuy cách thức này cho phép bạn thay đổi lựa chọn đã thực hiện trước đó, nhưng nó không phải là một bản vá vĩnh viễn. Hộp kiểm trong Preferences sẽ vẫn bị xám màu khi bạn thay đổi quan điểm của mình lần nữa. Tuy nhiên sau khi tìm hiểu thêm, tôi đã tìm ra chính xác những gì đã làm cho nó diễn ra như vậy.
Nếu mở file .plist trong Property List Editor, bạn sẽ thấy hai thuộc tính Boolean giống nhau: AutoSubmit và AutoSubmitV2. (sau đó là một thuộc tính mới trong 10.6.3.)
AutoSubmit xuất hiện để phát hiện xem hộp kiểm Console có thể bị thay đổi khi thích hợp hay không. AutoSubmitV2 xuất hiện để xác định xem Agree/Disagree sheet có sổ xuống hay không. Về mặt lý tưởng, các giá trị cho hai thuộc tính này sẽ tương xứng. Tuy nhiên điều này không hẳn lúc nào cũng vậy. Những gì có thể xảy ra, cho ví dụ, là AutoSubmitV2 được kích hoạt nhưng AutoSubmit thì không. Điều này sẽ dẫn đến tình huống được miêu tả ở trên, nơi sheet không sổ xuống nhưng tùy chọn Console đưa nó trở lại lại không thể lựa chọn.
Dòng cuối cùng là, không có cách nào tôi có thể kích hoạt cả “Don’t ask me again” và ngăn chặn triệu chứng trả về. Lúc này, nếu phát hiện thấy những điều tương tự, bạn chỉ có thể sử dụng file .plist hoặc hy vọng một bản vá trong Mac OS X 10.6.4.
Giao diện người dùng của các dialog
Ngay cả khi bỏ qua lỗi này, giao diện người dùng của dialog thoát không mong đợi có thể sử dụng một số điều chỉnh.
Cho ví dụ, bạn có thể chọn Ignore từ dialog đầu tiên. Nếu như vậy, không có dữ liệu nào gửi đến Apple.
Nếu chọn Report, bạn có thể kích Don’t Send từ dialog thứ hai khi nó xuất hiện. Điều này cũng có nghĩa rằng không có dữ liệu nào được gửi đến Apple.
Nếu khăng khăng và chọn Send to Apple, bạn sẽ nhận được tùy chọn Disagree (đây là lần thứ ba, có nghĩa rằng dữ liệu của bạn sẽ không được gửi đến Apple, thậm chí bạn đã chọn gửi dữ liệu).
Tất cả dường như có một chút lộn xộn và rườm rà. Liệu nó có thể được đơn giản hóa – có lẽ bằng cách cung cấp ngay ban đầu ba tùy chọn được liệt kê trong bài báo hỗ trợ của Apple có liên quan: Automatic Reporting, No Reporting và Ask Each Time?