# Vim에서 검색하는 6,500개의 정규 표현식으로 구성된 Bad Apple

> Clean Markdown view of GeekNews topic #18704. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18704](https://news.hada.io/topic?id=18704)
- GeekNews Markdown: [https://news.hada.io/topic/18704.md](https://news.hada.io/topic/18704.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-13T09:48:50+09:00
- Updated: 2025-01-13T09:48:50+09:00
- Original source: [eieio.games](https://eieio.games/blog/bad-apple-with-regex-in-vim/)
- Points: 1
- Comments: 1

## Topic Body

#### 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에서 확인 가능.

## Comments



### Comment 33331

- Author: neo
- Created: 2025-01-13T09:48:50+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42674116) 
- 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에서 그리기지만 패턴 매칭은 아님
