GN⁺: Vim에서 검색하는 6,500개의 정규 표현식으로 구성된 Bad Apple
(eieio.games)Bad Apple을 vim에서 재생하기
-
Bad Apple이란?
- Bad Apple은 시각적으로 매력적인 뮤직 비디오로, 다양한 곳에 삽입되어 밈으로 사용됨.
- 스마트 냉장고에서 DOOM을 실행하는 것과 비슷한 밈으로 인식됨.
-
프레임 얻기
- Bad Apple의 각 프레임 데이터를 얻기 위해 Felixoofed의 저장소를 클론하여 약 6,500개의 PNG로 변환.
- Python 코드를 사용하여 각 PNG를 0과 1로 이루어진 2D 배열로 변환.
-
vim에서 그리기
- 텍스트 그리드에 그림을 삽입하여 vim에서 그림을 그릴 수 있음.
- vim의 하이라이팅 기능을 사용하여 매칭된 문자에 동일한 색상을 적용.
- 사각형 폰트를 사용하여 정사각형 픽셀을 구현.
-
임의의 사각형 그리기
- vim의 검색 기능을 활용하여 특정 라인과 열을 매칭하는 패턴을 생성.
- 여러 패턴을 OR 연산자로 결합하여 여러 사각형을 한 번에 그릴 수 있음.
-
프레임을 사각형으로 변환
- 90x120 그리드를 사각형으로 분해하여 검색 문자열을 생성.
- 다양한 알고리듬을 사용하여 최적의 검색 패턴을 선택.
-
vim에서 실행하기
- vim 매크로를 사용하여 비디오를 재생.
- 매크로는 검색 패턴을 설정하고 다음 줄로 이동하여 반복 실행 가능.
-
마무리
- 이 프로젝트는 하루 만에 완성되었으며, 더 많은 시간을 투자한다면 몇 가지 개선점을 고려할 수 있음.
- Recurse Center에서 첫 주에 이 프로젝트를 발표하여 긍정적인 반응을 얻음.
- 코드가 복잡하지만 관심이 있다면 GitHub에서 확인 가능.
Hacker News 의견
-
Nolen의 1,000배 성능 향상에 대한 신뢰에 대한 유머러스한 반응. 과거에 비슷한 전술을 사용했지만 하루에 모두 사용하지는 않았음
- Bad Matrix: 터미널에 블록을 출력하는 방법
- Animating Text Art in Javascript: 고정된 그리드에 텍스트를 출력하여 애니메이션 효과를 주는 방법
- oxo: 터미널에 틱택토 보드를 출력하고 정규 표현식을 사용하여 결과를 확인하는 방법
- Bad Apple이 가장 인상적임
-
NES에서 Bad Apple을 실행하는 기술 데모에 감명받았음. Everdrive에서 실행 중인 Bad Apple을 보여주는 링크 제공
- 오디오 포함, 데이터 크기는 약 1GB. 일반적인 게임 크기가 몇백 KB에 불과한 시스템에서 실행됨
-
Vim 매크로를 다음 줄로 이동하여 "재생 가능"하게 만드는 방법에 대한 설명. 매크로를 한 줄씩 실행하는 명령어 제공
-
지난달 판매된 Govee 커튼 라이트에 대한 정보. 애니메이션 GIF를 업로드할 수 있으며, "bad apple" GIF를 만들 계획임
-
직사각형 최소화 문제에 대한 의견. StackOverflow에서 논의된 문제와 다르게 중첩이 허용되는 Vim 프로젝트에 대한 설명
-
병렬 후보 솔루션 생성기가 좋은 아이디어라는 의견. 최적의 알고리즘을 만들 필요가 없다는 것을 깨닫는 데 시간이 걸림
-
2006년 월드컵을 직장에서 SSH를 통해 집 서버에 접속하여 터미널에서 시청한 경험 공유. 대역폭이 부족하여 다른 방법은 불가능했음
-
창의적인 아이디어에 대한 긍정적인 반응. 기반이 된 게임들도 좋으며, 탄막 게임이 최면적임
-
작업에 걸린 대략적인 시간에 대한 질문
-
저자가 인정하듯이, Vim이지만 정규 표현식이 아닌 "화면 좌표 검색"임. Vim에서 그리기지만 패턴 매칭은 아님