2 điểm bởi GN⁺ 2024-03-10 | 1 bình luận | Chia sẻ qua WhatsApp
  • Monodraw là trình chỉnh sửa ASCII art cho Mac, dùng để vẽ sơ đồ, lưu đồ và cấu trúc dữ liệu bằng văn bản thuần túy để có thể đọc trực tiếp trong tài liệu kỹ thuật và mã nguồn
  • Vì kết quả đầu ra là văn bản nên rất dễ sao chép và dán, và khi cần cũng có thể tạo dưới dạng hình ảnh bằng cách xuất PNG·SVG
  • Hỗ trợ cả mind map, sơ đồ ER và tạo banner, tập trung vào trực quan hóa phục vụ tài liệu hóa hơn là chỉ chỉnh sửa văn bản đơn thuần
  • Cung cấp FIGlet cùng 148 phông chữ mặc định, đường kẻ, hình chữ nhật, căn chỉnh guide, nhóm và phím tắt để giảm bớt các tác vụ text art lặp đi lặp lại
  • Yêu cầu macOS 11 Big Sur trở lên, và công cụ dòng lệnh phải được tải trực tiếp từ website, chỉ đi kèm với phiên bản mua từ store

Công cụ trực quan hóa cho Mac vẽ bằng văn bản

  • Monodraw là trình chỉnh sửa để tạo ASCII art trên Mac
  • Có thể soạn các cấu trúc như sơ đồ, bố cục và lưu đồ theo kiểu dựa trên văn bản
  • Được dùng để sắp xếp trực quan những đối tượng khó nắm bắt chỉ bằng mã nguồn như thuật toán, cấu trúc dữ liệu và định dạng nhị phân
  • Vì đầu ra là văn bản thuần túy nên có thể chèn gần như nguyên trạng vào tài liệu, mã nguồn và đặc tả
  • Khi cần hình ảnh, có thể xuất ra PNG và SVG

Biểu diễn tài liệu kỹ thuật và mô hình dữ liệu

  • Sơ đồ văn bản được đưa vào mã nguồn và đặc tả giúp hiểu cấu trúc nhanh hơn
  • Việc trực quan hóa cấu trúc dữ liệu, thuật toán và định dạng dữ liệu rất quan trọng để người đọc nắm được mối quan hệ và luồng xử lý
  • Vì thời gian đọc mã thường nhiều hơn thời gian viết, sơ đồ văn bản có thể hữu ích trong quá trình bảo trì và review
  • Mind map

    • Kết hợp sự đơn giản của văn bản thuần túy với cách làm mind map
    • Có thể di chuyển văn bản đến vị trí mong muốn trên canvas vô hạn
    • Không bị ràng buộc bởi cấu trúc tuyến tính của tệp văn bản
  • Sơ đồ ER

    • Trực quan hóa mô hình dữ liệu bằng sơ đồ thực thể - quan hệ đơn giản
    • Hỗ trợ ký pháp Crow’s Foot với 3 biến thể

Tính năng tạo text art

  • Có thể tạo banner chỉ với một lần nhấp
  • Tích hợp sẵn FIGlet và bao gồm 148 phông chữ mặc định
    • Hỗ trợ cả phông chữ tùy chỉnh
    • Có thể xử lý tương tác việc thay đổi kích thước hộp văn bản, đổi phông và điều chỉnh căn lề mà không cần terminal
  • Công cụ văn bản hoạt động trên một text engine tùy chỉnh dựa trên CoreText
    • Có thể điều chỉnh căn lề, vị trí, hướng tiến của dòng và việc dịch dòng
    • Có thể thêm viền quanh văn bản chỉ với một lần nhấp
  • Công cụ đường kẻ giúp tạo kết nối giữa các hình dễ dàng, hỗ trợ đường trực giao và đường bậc thang
    • Có thể thiết lập mẫu nét đứt cho đường kẻ
    • Có thể gắn động đường kẻ vào hình khác bằng các điểm kết nối, giảm công sức sắp xếp lại sau khi di chuyển hình
  • Công cụ hình chữ nhật dùng để tạo các hộp thường thấy trong text art
    • Có thể chỉ định viền và nền chỉ với vài lần nhấp
    • Có thể thêm bóng đổ
    • Có thể gắn đường kẻ vào vị trí chính xác bằng các điểm kết nối tùy chỉnh

Các tính năng hỗ trợ giúp giảm thao tác trên canvas

  • Cung cấp các công cụ vẽ cơ bản như Pencil, Eraser, Bucket Fill, Picker
    • Có thể phủ một hình ảnh lên canvas để dùng cho mục đích tracing
  • Tính năng nhóm giúp gom nhiều hình thành một để dễ sao chép và di chuyển
  • Guide căn chỉnh giúp không cần phải tự đếm số ký tự khi bố trí nội dung và thay đổi kích thước
  • Tính năng focus cho phép khóa hoặc ẩn các hình còn lại khi muốn tập trung vào một phần cụ thể của canvas
    • Có thể phóng to để tập trung vào các phần tử hiện đang hiển thị
  • Mọi tính năng đều có thể truy cập bằng phím tắt
    • Có thể chọn công cụ nhanh bằng một phím đơn mà không cần phím bổ trợ

Hỗ trợ macOS và điều kiện của công cụ dòng lệnh

  • Monodraw được thiết kế là ứng dụng native cho macOS, từ text layout engine đến giao diện
  • Có thể xuất text art bằng cách sao chép và dán vào trình soạn thảo văn bản mong muốn
  • Yêu cầu hệ thống là macOS 11 Big Sur trở lên
    • Trên các phiên bản macOS cũ hơn có thể dùng Monodraw v1.3, yêu cầu macOS 10.10 Yosemite trở lên
    • Monodraw v1.5 yêu cầu macOS 10.14 Mojave trở lên
  • Giao diện dòng lệnh chỉ có trong phiên bản tải trực tiếp
    • Có trong phiên bản tải trực tiếp từ website và mua tại store
    • Phiên bản Mac App Store không thể bao gồm công cụ dòng lệnh do giới hạn của App Sandbox
    • Có thể dùng với hook của hệ thống quản lý phiên bản để tự động tạo tài liệu khi commit
    • Cũng hỗ trợ đầu ra JSON để chương trình dễ xử lý
  • Monodraw cho biết họ hoàn toàn không thu thập dữ liệu

1 bình luận

 
GN⁺ 2024-03-10
Các ý kiến trên Hacker News
  • Cuối cùng lúc nào cũng quay lại với Monodraw
    Các ứng dụng khác có quá nhiều tính năng và lựa chọn phong cách, khiến khó tập trung vào nội dung thực sự, còn Monodraw thì không làm mình bị phân tâm
    Dù vậy nó vẫn có đủ tính năng để tạo được khá nhiều thứ, và tôi đặc biệt thích anchor: https://tamasruss.com/articles/monodraw-anchors

    • Hơi trớ trêu khi nói các ứng dụng khác khiến không tập trung vào nội dung, nhưng lại thấy ổn khi chỉnh đường phân cách đáp ứngđiểm neo trong Monodraw
      Dù vậy bản thân kỹ thuật này khá gọn gàng
    • Hộp UML cho class thực sự hữu ích, tutorial cũng tốt
  • Công cụ này là một trong những ứng dụng tôi rất thích, và tôi đã trả tiền ngay khi nó ra mắt
    Tôi đã dùng nó nhiều lần cho kiểu tài liệu như thế này: https://github.com/ivank/potygen/blob/main/packages/potygen/...
    ASCII rất đa dụng, giúp chèn các hình minh họa đẹp ở những chỗ không ngờ tới để dễ hiểu hơn

    • Những góc đó trông giống ký tự khối Unicode
    • Ví dụ này là một minh họa tuyệt vời cho thấy ngay sức hấp dẫn của phần mềm, khiến tôi muốn tự mình xem thử
    • Sơ đồ "With Expression" ở dòng 656 trông ổn trong emacs, nhưng khi mở liên kết thực tế bằng chrome thì toàn bộ phía bên phải bị vỡ
      Ký tự thì bình thường, nhưng có vẻ lựa chọn phông chữ của github không xử lý tốt phần “khoảng trắng có ý nghĩa” ở phần mở rộng
    • Nên chọn dòng muốn hiển thị rồi liên kết thẳng tới vị trí đó thì tốt hơn
  • Tôi đang duy trì một danh sách các công cụ văn bản-thành-sơ đồ trên web: https://xosh.org/text-to-diagram/
    Các lựa chọn web thay thế cho những công cụ vẽ ASCII kiểu này gồm https://fsymbols.com/draw/, https://textik.com/, https://asciiflow.com/#/, https://web.archive.org/web/20210503172024/https://fatiherik..., https://app.monosketch.io và vài công cụ khác

    • Cũng đáng cân nhắc đưa Pikchr vào danh sách
      Đây là công cụ do tác giả SQLite tạo ra: https://pikchr.org/home/doc/trunk/doc/userman.md
    • Với các sơ đồ tôi vẽ tay gần đây, những công cụ trong danh sách này không có đủ các tính năng tôi muốn
      Trong danh sách, có vẻ chỉ https://textik.com/ xử lý được đường chéo, và dường như nó cũng không có chức năng tô nền
      Sơ đồ tôi định vẽ có dạng như thế này: https://pastebin.com/NPXFS1Fi
      Tôi đã tạo được hộp và tam giác trên textik.com, nhưng phải tự sửa nhiều góc và tự tô phần bên trong
      Dù Monodraw chỉ có 10 đô la, vì là ứng dụng native chỉ dành cho Mac nên tôi không chắc có trả tiền hay không
      Tôi làm việc nhiều trên web, dùng nhiều thiết bị, và mỗi năm chỉ vẽ sơ đồ vài lần, nên công cụ nền web hoặc plugin VSCode có vẻ tốt hơn
    • Các danh sách trên https://fmhy.net cũng đáng xem thử
      Có thể có công cụ thú vị
    • Một công cụ khác đáng đưa vào danh sách là https://mbarkhau.github.io/asciigrid
    • Vài năm trước tôi đã làm một công cụ đơn giản và hiện vẫn đang host tại https://letterbrush.com
  • Tôi rất thích công cụ này
    Tôi đã dùng nó để viết sơ đồ cho Mapless: https://sebastianconcept.github.io/Mapless/guides/2024/01/28...
    Và cũng dùng để ghi tài liệu cấu hình builder cho Pharo VM Plugin: https://github.com/sebastianconcept/PharoPluginBuilder

    • Tức là tạo sơ đồ văn bản bằng công cụ vẽ ASCII, rồi chụp màn hình nó để đăng lên website?
      Cách đó trông hơi vòng vèo chỉ để vẽ vài hình chữ nhật; có cách nào dễ hơn không?
    • Tôi dùng nó để viết tài liệu cho mã nguồn, và rất thích vì có thể trực quan hóa buffer hoặc bố cục struct ngay trong code
  • Giá mà nó đa nền tảng thì thật tuyệt
    Tôi cũng muốn dùng trên Linux
    Tôi hiểu công sức để tạo ra một ứng dụng có độ hoàn thiện cao, nhưng vẫn mong các công cụ ứng dụng desktop nhắm tới Linux, Windows, Mac tốt hơn
    Có lẽ đây cũng là một lý do lớn khiến ứng dụng nền web ngày càng nhiều

    • Hơi ngạc nhiên là Qt không được dùng nhiều hơn cho ứng dụng desktop
      Nó thực sự rất phù hợp với loại ứng dụng này
  • Công cụ hay
    Một lựa chọn thay thế bản web là https://github.com/tuanchauict/MonoSketch do bạn tôi viết bằng Kotlin
    Tôi cũng có một phiên bản kém hoàn thiện hơn viết bằng Rust: https://github.com/huytd/ascii-d

  • Trông có vẻ ổn
    https://asciiflow.com/ là một lựa chọn thay thế dựa trên web, và là công cụ tôi chủ yếu dùng suốt 10 năm qua

    • Tôi luôn dùng ASCIIFlow
      Chỉ có điều tôi vẫn chưa tìm ra cách làm cho trình duyệt render đúng phông chữ monospace
      Có thể xem sơ đồ ví dụ trên trang này: http://uggly.bytester.net/#how-it-works
    • Có vẻ screen reader không đọc được phần văn bản trong những sơ đồ kiểu này
  • Đây là kiểu ứng dụng mà dù chỉ thỉnh thoảng dùng, bạn vẫn sẽ mua và giữ lại mãi

    • Tôi tò mò không biết bạn đã dùng nó từ lâu, hay chỉ đang đoán rằng đây là kiểu phần mềm mình sẽ thích
      Nếu đã trực tiếp dùng, tôi cũng muốn nghe bạn đã dùng các sơ đồ tạo ra như thế nào
      Tôi có thể hình dung việc dùng ảnh chụp màn hình của sơ đồ, nhưng phần văn bản gốc thì có vẻ quá lớn để đưa vào những nơi như terminal
    • Thiết kế website cũng gọn gàng
  • Ứng dụng này đã chuyển sang chế độ bảo trì vào năm 2018, từ đó đến nay có gì thay đổi không? https://blog.helftone.com/monodraw-maintenance-mode/

    • Tôi là nhà phát triển Monodraw
      Cảm ơn mọi phản hồi tích cực về ứng dụng
      Tôi cực kỳ thiếu thời gian nên chưa thể phát hành nhiều bản cập nhật hơn
      Tôi đang làm một vài tính năng được yêu cầu nhiều, nhưng không thể hứa khi nào sẽ công bố
      Thường thì tôi tranh thủ tiến triển từng chút trong các kỳ nghỉ
      Dù vậy, tôi vẫn sẽ tiếp tục sửa các lỗi phát sinh do nâng cấp OS và duy trì để sản phẩm tiếp tục hoạt động
    • Nhìn https://x.com/Monodraw thì có vẻ thực tế đã có cập nhật
    • Câu trả lời ở cuối FAQ hơi lạ
      Họ nêu lý do rằng việc duy trì một dự án mã nguồn mở là gánh nặng lớn, và nếu công bố sản phẩm hoàn chỉnh dưới dạng mã nguồn mở thì có thể xảy ra chuyện các bản clone được bán cho những khách hàng không hay biết
      Nhưng nếu mở mã nguồn, người đóng góp có thể đảm nhận một phần công việc, và một số giấy phép nhất định có thể ngăn việc bán các bản clone như vậy
  • Trước đây tôi đã dùng thử và thấy tốt
    Theo tôi nhớ, một điểm không hài lòng là để giữ các tính năng hay như anchor hoặc hộp có thể thay đổi kích thước, bạn phải dùng định dạng tệp tích hợp riêng của nó
    Việc chỉ trỏ thẳng tới một hình ASCII trong tài liệu Markdown không tự động đem lại tất cả các tính năng đó
    Nếu thật sự muốn, có lẽ có thể giải quyết phần nào bằng các thuật toán thông minh và LLM; thực tế tôi đã dùng LLM khá nhiều để phác thảo sơ đồ ASCII và đạt được một số thành công
    Nhưng tôi vẫn chưa tìm được sự cân bằng tốt giữa khả năng bảo trì — tức là xử lý hộp như một hộp và khi di chuyển thì các đường nối cũng đi theo — với tính di động, tức là mọi thứ đều là văn bản thuần
    Nếu Monodraw phiên bản mới khác đi, hoặc có công cụ khác giải quyết được điều này, tôi rất muốn biết
    Ít nhất thì Monodraw hợp với tôi hơn artist mode của Emacs

    • Đây là một góc nhìn thú vị
      Tôi tò mò không biết bạn có nhiều sơ đồ hiện có muốn quản lý hay không
      Nếu tạo từ đầu, tôi lại kỳ vọng có một định dạng tệp trừu tượng như vậy, và muốn xem nó giống quan hệ giữa tệp gốc kiểu PSD với kết quả render kiểu PNG
      Hoặc cũng tương tự quan hệ giữa mã nguồn và tệp nhị phân
      Tôi nghĩ việc phân tích ngược sản phẩm đầu ra thành một dạng trừu tượng có ý nghĩa là điều khó làm hoàn hảo