- Trong công việc hằng ngày, việc đồng nghiệp chụp màn hình văn bản rồi gửi đi xảy ra rất thường xuyên, và đây là một cách làm kém hiệu quả khiến việc tìm kiếm mã và nắm bắt ngữ cảnh trở nên cực kỳ khó khăn
- Với đoạn mã nhận qua ảnh chụp màn hình, hoàn toàn không thể biết được ngữ cảnh như định nghĩa biến, vị trí module, cách xử lý ngoại lệ; vì thế phải gõ thủ công vào ô tìm kiếm hoặc huy động coding agent
- Khi log lỗi build được gửi dưới dạng ảnh chụp màn hình, không thể biết mục tiêu build, dòng bị lỗi, hay thông báo lỗi chính xác, nên gần như không thể xử lý sự cố
- Nếu dùng sao chép-dán văn bản hoặc chia sẻ file/liên kết GitHub, có thể tận dụng chức năng tìm kiếm của IDE và kiểm tra toàn bộ ngữ cảnh
- Trừ khi là vấn đề liên quan đến hiển thị trên màn hình, văn bản nên được chia sẻ ở dạng có thể sao chép thay vì ảnh chụp màn hình để bảo đảm hiệu quả cộng tác
Ví dụ vấn đề với ảnh chụp màn hình 1: Mã nguồn
- Khi thảo luận với đồng nghiệp về một vấn đề liên quan đến mã, bạn lại nhận được ảnh chụp màn hình mã nguồn
- Hoàn toàn không thể nắm được ngữ cảnh cốt lõi như nơi định nghĩa biến
slug, cách tạo baseUrl, lý do hardcode domain, cách xử lý ngoại lệ, hay vị trí của module đó
- Phải gõ thủ công đoạn mã trong ảnh vào ô tìm kiếm hoặc dùng coding agent để tìm module liên quan
- Nếu dùng sao chép-dán, ngay cả cùng một dòng cũng có thể xem được nhiều ngữ cảnh hơn, đồng thời có thể dán trực tiếp vào chức năng tìm kiếm của IDE
- Chia sẻ chính file đó hoặc liên kết GitHub sẽ hiệu quả hơn nhiều
Ví dụ vấn đề với ảnh chụp màn hình 2: Log lỗi build
- Bạn nhận được ảnh chụp màn hình log lỗi kèm theo yêu cầu: "Build bị lỗi, bạn có thể kiểm tra giúp không?"
- Hoàn toàn không thể biết đã build cái gì, lỗi ở dòng nào, hay thông báo lỗi chính xác là gì
- Có những trường hợp khi tự chạy lại toàn bộ build trên workstation của mình thì lại thành công
- Đây là kiểu vấn đề có thể giải quyết đơn giản nếu sao chép toàn bộ log lỗi hoặc dump log ra file rồi gửi đi
Cách chia sẻ văn bản đúng đắn
- Đừng gửi văn bản bằng ảnh chụp màn hình; hãy chia sẻ ở dạng có thể sao chép
- Chỉ nên dùng ảnh chụp màn hình khi cần cho thấy vấn đề thẩm mỹ trong hiển thị màn hình, hoặc khi có thông tin liên quan sẽ bị mất nếu chỉ dùng văn bản thuần túy
- Chia sẻ file hoặc cung cấp liên kết GitHub là cách tốt nhất để nắm ngữ cảnh và tìm kiếm mã nguồn
4 bình luận
Đôi khi tôi cũng chụp mã rồi đăng lên vì tính dễ đọc khi hiển thị trong editor lúc chụp, cùng sự tiện lợi của phím tắt chụp màn hình được OS hỗ trợ sẵn.
Nếu có một chương trình chỉ với một phím tắt có thể biến đoạn mã trong ảnh chụp thành liên kết như Text fragments để chia sẻ ra bên ngoài và cho phép dán ngay, thì có lẽ tôi sẽ dùng nó.
Khi đăng lên Slack thì có thể hiện preview, và khi bấm vào liên kết thì có thể sao chép mã
Tôi ghét ảnh chụp màn hình chứa văn bản
Để câu tương tác một chút, tôi xin đưa ra một trang web biến code thành ảnh chụp đẹp mắt, dễ nhìn. haha
https://ray.so/
Bản thân tôi khi gửi gì đó qua messenger hay email cũng cố dùng văn bản nhiều nhất có thể, nhưng thật ra tùy trường hợp thì chỉ dùng văn bản đôi khi lại còn bất tiện hơn.
So với vậy, chụp screenshot thì chỉ cần bấm một phím tắt, quét vùng màn hình rồi dán vào là xử lý xong trên GUI, nên từ phía người gửi chắc chắn sẽ thấy tiện hơn.
Tuy nhiên, như bài viết gốc cũng đã chỉ ra, từ phía người nhận thì chỉ với screenshot thôi nhiều khi không truyền tải hết ngữ cảnh, lại còn bất tiện cho việc tìm kiếm hay sao chép-dán, nên tôi nghĩ việc phát sinh sự khó chịu là điều dễ hiểu. Chưa kể nó còn tạo ra overhead cho việc truyền và lưu trữ dữ liệu lớn hơn rất nhiều so với mức thực sự cần thiết.
Mà nếu cá nhân tôi bắt đầu soi từng chuyện như thế này thì ngay cả việc trong công ty làm tài liệu nội bộ bằng file Word thay vì wiki chẳng hạn, cũng đã là điều khiến tôi khó chịu rồi…
Ý kiến Hacker News
Như đã được nhắc ở các bình luận khác, tính năng OCR tự động trên nền tảng Apple thực sự mang tính cách mạng
Tôi nghĩ tính năng như vậy nên được tích hợp mặc định vào trình xem tài liệu trên mọi nền tảng
Một điều nữa tôi mong muốn là đưa siêu dữ liệu vào ảnh chụp màn hình. Ví dụ, nếu chụp một ảnh trên Instagram thì sẽ kèm URL tương ứng; trong trình duyệt thì kèm URL hiện tại và đường dẫn DOM; trong ứng dụng bản đồ thì kèm tọa độ; trong trình xem PDF thì kèm hash SHA1 của tài liệu và offset
Dĩ nhiên sẽ có vấn đề quyền riêng tư, nhưng tôi nghĩ ý tưởng này hẳn đã từng được giới học thuật nghiên cứu rồi
Ngày nay khái niệm tệp đã trở nên trừu tượng hơn, nên có cảm giác ảnh chụp màn hình đã trở thành ngôn ngữ chung của thời đại điện toán di động
Nhân tiện, tôi cũng rất muốn nhắc đến Screenshot Conf
Ảnh chụp màn hình được xử lý ở cấp hệ điều hành, nên việc ứng dụng biết mình vừa bị chụp hay biết cả thông tin vị trí là rất nguy hiểm
Các công ty như Evernote hay CloudApp đã từng thử, nhưng cuối cùng đều thất bại. Ảnh chụp màn hình chỉ hữu ích khi nó đơn giản
Hệ thống tôi xây dựng đưa rất nhiều thông tin ngữ cảnh vào URL, nhưng ảnh chụp màn hình lại không chứa phần đó
Vì vậy tôi luôn phải yêu cầu URL dưới dạng văn bản riêng
Họ đang thêm các tính năng như insight từ AI, tìm kiếm sản phẩm, trò chuyện với Gemini/LLM vào giao diện sau khi chụp màn hình
Vì ai cũng đang dùng ảnh chụp màn hình để lưu trữ hoặc tìm kiếm thông tin
Nhưng vì sợ người dùng sẽ dùng nó như trình xử lý văn bản nên tính năng đó đã bị loại khỏi bản phát hành
Tôi là người dùng ảnh chụp màn hình khá thường xuyên
Lý do là nó giữ được độ rộng 80 ký tự để dễ đọc, đồng thời vẫn bảo toàn phông chữ monospace và tô sáng cú pháp
Nếu muốn mã nguồn hay đầu ra terminal không bị hỏng khi gửi qua email hoặc chat trên di động, thì ảnh chụp màn hình là cách chắc ăn nhất
Tất nhiên khi cần cả tệp đầy đủ thì tôi vẫn đính kèm, nhưng phần liên quan thì tôi gửi thêm bằng ảnh chụp màn hình
Ảnh chụp màn hình phải phóng to mới xem được, và cũng bất lợi cho khả năng truy cập
Nếu gửi dưới dạng văn bản thì việc tìm kiếm và sao chép sẽ dễ hơn
Hầu hết hệ thống giờ đã hỗ trợ phông chữ monospace, và vấn đề thực ra lại nằm ở yếu tố môi trường như cách Gmail hiển thị
GMail không có giới hạn chiều rộng và kích thước phông chữ cũng không đồng đều nên rất khó đọc
Với URL dài hoặc màn hình rộng thì độ dễ đọc còn giảm mạnh hơn
Vì màu sắc, định dạng và ngữ cảnh đều được giữ nguyên
Khi giải thích vấn đề thì câu “một bức ảnh đáng giá ngàn lời nói” là hoàn toàn đúng
Như vậy tôi có thể xem trong editor của mình với phông chữ, chiều rộng, màu sắc đúng theo sở thích, lại còn tìm kiếm và chỉnh sửa được
Ảnh chụp màn hình rốt cuộc chỉ làm người khác bất tiện
Tính năng nhận diện và sao chép văn bản trên Mac và iOS thật sự mang tính cách mạng
Có thể sao chép ngay văn bản trong ảnh chụp màn hình hoặc ảnh chụp rồi dán vào ghi chú
Khoảnh khắc đó đúng là có cảm giác đang sống trong tương lai
Trong Safari còn có thể dịch văn bản trong ảnh, đặc biệt hữu ích khi dịch các trang web tiếng Nhật
Không cần lưu tệp mà xử lý ngay nên rất tiện
Trước đây người ta từng dán ảnh chụp màn hình vào tài liệu Word để gửi đi
Nhưng giờ lại đề xuất dùng LLM để trích xuất văn bản lần nữa thì quá lãng phí
Điều thực sự cần cuối cùng vẫn là một đổi mới UI để chia sẻ văn bản dễ như chia sẻ ảnh chụp màn hình
Thấy những người mới muốn làm lập trình mà còn làm vậy thì thật bực mình
Tức là chèn các tệp Word khác vào trong tài liệu như các đối tượng thực sự
Quy tắc thứ 7 trong bài tôi viết, “Cách xin trợ giúp trên Slack”, là “đừng đăng ảnh chụp màn hình chứa văn bản”
Dù OCR của Apple có tốt đến đâu thì vấn đề không thể tìm kiếm vẫn còn nguyên
Liên kết bài gốc
Tôi thích cách gửi kèm cả tài liệu đầy đủ hoặc liên kết đến mã nguồn, đồng thời đính kèm ảnh chụp phần liên quan
Vì ngữ cảnh trực quan được giữ lại nên khi xem lại sau này ký ức cũng dễ quay lại hơn
Các lập trình viên mới thường chia sẻ ảnh chụp màn hình chứa văn bản trong vài tuần đầu tiên
Nhưng vì đọc trên di động rất bất tiện, mà Slack lại nén ảnh nên cũng không phóng to được
Thế là cuối cùng phần lớn họ đều học cách chia sẻ bằng văn bản
Trong MS Teams, hỗ trợ code block quá tệ nên nhiều trường hợp phải dùng ảnh chụp màn hình
Tính năng này có tồn tại, chỉ là không dễ thấy
Ảnh chụp màn hình là một cách làm nhanh và nhất quán
Nó hoạt động theo cùng một cách ở web app, native app hay website
Dù có thể gây bất tiện cho người nhận, nhưng với người gửi thì rất hiệu quả
Trên Linux, tôi nối hành động tùy chỉnh của xfce4-screenshooter với một script OCR dùng tesseract
Khi chụp vùng chọn, văn bản sẽ tự động được sao chép vào clipboard
Khi gặp trường hợp khó nhận diện thì tôi dùng Gemma3-4B + llama.cpp
Dạo này hầu hết các trình duyệt đều có tính năng Text Fragment, và tôi đang dùng nó khá hữu ích.
Hãy thử kiểm tra xem nó có hoạt động với liên kết được tô sáng trong bài viết này hay không.