웹 어플리케이션들이 다양해 지면서 Javascript로 다양한 Binary 파일들을 읽는 시도들이 나오고 있습니다.
관련링크를 정리해 봅니다. 거의 소스가 공개되어있으므로 내부코드를 참고해보세요.
- Javascript – Ajax Binary Reader
현재 JavaScript 자체는 바이너리 데이타를 지원하지 않기 때문에 charCodeAt 함수와 & , | , << , >> 같은 비트연산자를 이용하여 바이너리 데이타를 읽어내야 합니다. 이 Binary Reader 라이브러리는 이 비트연산자를 이용한 Binary-Parser 라이브러리에 기초하여 , readChar / readString / readInt8 / readFloat / seek / getPosition 같은 함수를 제공합니다. 데모에서 GIF 파일을 읽어서 헤더에서 파일의 Width,Height 를 읽어오는걸 보여주고 있습니다. 어떤 용도로든 Javascript 내에서 Binary 파일을 읽어야 한다면 꼭 참고해야할 라이브러리입니다. - Flash Runtime with Javascript – Gordon
몇달전에 큰 이슈를 불러일으켰던 Tobias Schneider 의 Gordon 은 Javascript 를 이용해서 Flash 파일 ( SWF ) 을 실행하는것을 보여주고 있습니다. SVG 를 이용해서 벡터 그래픽을 처리하며, 속도향상을 위해 Web Workers 를 이용해서 백그라운드에서 처리하기도 합니다. Github에 오픈소스로 공개되어 있습니다. 내부의 stream.js 를 보면 앞의 Binary-Parser 와 비슷한 함수들을 작성해서 사용하는걸 알수 있으며, Javascript 만으로 ZIP 압축까지 풀어냅니다. Flash 를 HTML5/Javascript 로 변환하는 좀더 확장된 데모를 선보였던 Smokescreen 도 있습니다만, 아직 소스가 공개되지 않았습니다. - WPS : Postscript for the Web
WPS 는 HTML5 Canvas 와 Javascript 를 이용한 Postscript 와 PDF 인터프리터입니다. PS 와 PDF 자체가 엄청 방대한 포맷이라 아직 일부분밖에 구현이 안되긴 했지만, 기대해볼만한 프로젝트 입니다. 이게 어느정도 실현되면 아무런 플러그인의 도움없이도 웹 브라우저에서 PDF 파일을 볼수 있게 될지도.. - Shapefile-JS
GIS 관련 작업을 하시는 분들에게 익숙한 Shape ( SHP ) 파일은 ESRI 사의 GIS 툴에서 사용되다가 공개된 포맷입니다. 주로 점 / 선 / 폴리곤 으로 되어있는 지리 데이타를 표시하기에 좋은데요. 이 SHP 파일을 Javascript 로 읽어서 HTML Canvas 에 그려주는 라이브러리입니다. 내부의 속성들은 요즘은 잊혀져 버린 dBase ( dbf )포맷으로 되어있는데 이걸 자바스크립트로 읽는 dbf.js 도 들어있습니다. - JSNES : A Javascript NES Emulator
NES ( Nintent Entertainment System ) 은 우리에게 패미콤/현대 컴보이로 잘 알려진 닌텐도의 8비트 게임 콘솔입니다. 1983년 발매되어 6천만대 이상이 판매되었습니다. 이 NES 를 HTML5 의 Canvas 와 Javascript 를 이용하여 에뮬레이트 하는 라이브러리입니다. ROM 파일을 AJAX를 이용해서 동적으로 로드하여 실행합니다. 심지어 Sound 까지도 지원됩니다. 오픈소스로 GitHub에 공개되어있습니다. 데모페이지에는 보글보글,곤두라,동키콩,젤다의전설,슈퍼마리오 등 명작 게임들이 링크되어 있습니다. 한번 즐겨보세요. 크롬에서 가장 빠르게 동작됩니다. - JSC64 – Javascript Commodore Emulator
앞의 NES 와 마찬가지로 게임기인 Commodore64 를 에뮬레이트 합니다. NES 에 비해서는 게임이 좀 단순합니다 ^^ - jsGB – A Gameboy emulator in Javascript
닌텐도의 Gameboy 를 에뮬레이트 합니다. 제작자인 Imran Nazar 가 어떻게 만들었는지를 블로그에서 자세히 설명하고 있습니다. Z80 CPU 를 어떻게 에뮬레이트 했는지 설명해주고 있는데 Z80 단어만 들어도 향수가 느껴지는군요.
GuruLinks 는 제가 제 트위터 ( @xguru ) 에서 소개했던 링크들을 모아서 소개하는 포스트입니다.
제 트위터를 팔로우 하시면 더 다양한정보를 빠르게 접하실수 있습니다 🙂