1 điểm bởi GN⁺ 2025-01-13 | 1 bình luận | Chia sẻ qua WhatsApp

Phát Bad Apple trong vim

  • Bad Apple là gì?

    • Bad Apple là một video nhạc có hình ảnh ấn tượng, thường được nhúng vào nhiều nơi và dùng như một meme.
    • Nó được xem như một meme tương tự việc chạy DOOM trên tủ lạnh thông minh.
  • Lấy các khung hình

    • Để lấy dữ liệu cho từng khung hình của Bad Apple, tác giả clone kho lưu trữ của Felixoofed và chuyển đổi thành khoảng 6.500 tệp PNG.
    • Dùng mã Python để chuyển mỗi PNG thành một mảng 2D gồm các giá trị 0 và 1.
  • Vẽ trong vim

    • Có thể vẽ trong vim bằng cách chèn hình vào một lưới văn bản.
    • Sử dụng tính năng tô sáng của vim để áp dụng cùng một màu cho các ký tự khớp.
    • Dùng phông chữ vuông để tạo các pixel hình vuông.
  • Vẽ các hình chữ nhật tùy ý

    • Tận dụng chức năng tìm kiếm của vim để tạo các mẫu khớp với dòng và cột cụ thể.
    • Có thể kết hợp nhiều mẫu bằng phép OR để vẽ nhiều hình chữ nhật cùng một lúc.
  • Chuyển khung hình thành các hình chữ nhật

    • Phân rã lưới 90x120 thành các hình chữ nhật để tạo chuỗi tìm kiếm.
    • Sử dụng nhiều thuật toán khác nhau để chọn mẫu tìm kiếm tối ưu.
  • Chạy trong vim

    • Dùng macro của vim để phát video.
    • Macro thiết lập mẫu tìm kiếm rồi di chuyển sang dòng tiếp theo để có thể lặp lại liên tục.
  • Kết thúc

    • Dự án này được hoàn thành chỉ trong một ngày, và nếu đầu tư thêm thời gian thì có thể cân nhắc một vài cải tiến.
    • Tác giả đã giới thiệu dự án này trong tuần đầu tiên tại Recurse Center và nhận được phản hồi tích cực.
    • Mã nguồn khá phức tạp, nhưng nếu quan tâm thì có thể xem trên GitHub.

1 bình luận

 
GN⁺ 2025-01-13
Ý kiến Hacker News
  • Phản ứng hài hước về mức độ tin cậy đối với tuyên bố tăng hiệu năng gấp 1.000 lần của Nolen. Trước đây đã từng dùng chiến thuật tương tự, nhưng không dùng hết trong một ngày

    • Bad Matrix: cách in các khối trong terminal
    • Animating Text Art in Javascript: cách tạo hiệu ứng hoạt hình bằng cách in văn bản trên một lưới cố định
    • oxo: cách in bàn cờ ca-rô trong terminal và dùng biểu thức chính quy để kiểm tra kết quả
    • Bad Apple là ấn tượng nhất
  • Ấn tượng với bản demo kỹ thuật chạy Bad Apple trên NES. Có cung cấp liên kết cho thấy Bad Apple đang chạy trên Everdrive

    • Có âm thanh, kích thước dữ liệu khoảng 1GB. Chạy trên một hệ thống mà game thông thường chỉ có dung lượng vài trăm KB
  • Giải thích cách làm cho macro Vim có thể "phát lại được" bằng cách chuyển sang dòng tiếp theo. Có cung cấp lệnh để chạy macro từng dòng một

  • Thông tin về rèm đèn Govee được bán ra tháng trước. Có thể tải lên GIF động và đang định tạo GIF "bad apple"

  • Ý kiến về bài toán tối thiểu hóa hình chữ nhật. Giải thích về một dự án Vim cho phép lồng nhau, khác với bài toán được thảo luận trên StackOverflow

  • Ý kiến cho rằng trình tạo lời giải ứng viên song song là một ý tưởng hay. Phải mất một thời gian mới nhận ra không cần tạo ra thuật toán tối ưu

  • Chia sẻ trải nghiệm xem World Cup 2006 ở chỗ làm bằng cách SSH vào máy chủ ở nhà và xem trong terminal. Băng thông quá thấp nên không thể dùng cách khác

  • Phản hồi tích cực về ý tưởng sáng tạo. Những trò chơi làm nền tảng cũng rất hay, và game bullet hell mang tính thôi miên

  • Câu hỏi về khoảng thời gian thực hiện công việc

  • Như tác giả thừa nhận, đây là Vim nhưng không phải biểu thức chính quy mà là "tìm kiếm tọa độ màn hình". Là vẽ trong Vim chứ không phải so khớp mẫu