Rev. 2.73

슬라이드를 클릭한 후 방향키를 이용하여 다음으로 넘길수 있습니다.

OctoberSky.js가 주최하는 2016 Play.Node 개발자 콘퍼런스에서 "Electron 기반의 모바일 앱 테스트 자동화 S/W 개발"이라는 주제로 발표한 슬라이드를 공유합니다. "테스트 자동화"에 대한 개념을 인지해야 소프트웨어 구현의 전반적인 흐름에 대한 이해도를 높일 수 있을 것 같아서 잡설들을 늘어놓다 보니 제 수준에서는 40분 만에 소화하기 어려운 발표자료였습니다. 매번 느끼는 것이지만, 발표하면 할수록 더 못하는 것 같습니다. 그런데도 관심 있게 경청해 주신 여러분께 진심으로 감사드립니다.

발표연습 부족으로 전달 못 한 메시지:

  • Node의 v8 엔진은 대부분의 최신 자바스크립트 문법을 지원하므로 굳이 ES5로 Transpiling할 필요가 없고 최소한의 Babel 플러그인 사용 노하우를 소개하고 싶었어요.
  • NPM 생태계를 적절히 사용하면 꿀리지 않는 데스크탑 애플리케이션을 개발할 수 있어요.
  • PTY.js로 구현한 터미널 모듈에서 테스트 대상이 되는 모바일 앱의 실시간 로그가 출력되는 데모를 보여드리고 싶었어요.
  • 이 로그는 개발자가 만들어낸 것이어서 디버그하는 힌트가 되고, 크래시가 발생한 경우 스택-추적까지에 대한 리포팅 기능을 소개하고 싶었어요.
  • HighCharts를 이용한 실시간 모바일 시스템 리소스 모니터링 데모를 보여드리고 싶었어요.
  • OpenCV를 활용한 컴퓨터-비전 기술에 대한 가능성은 어마어마해요.('크래시 로얄'에서 교관을 이기는 AI를 개발 중이에요)
  • 동적 게임 테스트 POC를 성공시키지 못한 것이 너무 억울해요.(회사에서 할 때는 졸라 잘 돌아가는데...)
  • 로드맵에서는 모바일 기기의 파편화를 해결하는 방안을 'Test Cloud'를 통해서 만족할 수 있다는 사실과, 'Test Cloud'는 Xamarin을 시작으로 거대한 조직들이 속속 뛰어드는 트랜드를 전달하고 싶었어요.
  • 테스트 클라우드 중 비교적 최근에 출시한 NTT사의 'Remote TestKit' 제품과 연동되는 데모를 보여드리고 싶었어요.
  • 끝으로, 이 Studio 프로젝트는 무료로 풀 것이고, 2017 MWC에서 화려한 데뷔를 목표로 하고 있다는 사실을 알리고 싶었습니다.

Comments

Tesseract.js는 C++로 작성된 Tesseract OCR 라이브러리를 자바스크립트로 포팅한 것으로 텍스트의 방향을 자동으로 탐지하며, 단락을 구분해 내거나 단어 및 문자의 경계를 탐지하는 등의 인터페이스를 제공합니다. Emscripten을 이용하여 tesseract.js-core라는 이름으로 포트 되었으며, 이 자바스크립트 파일의 용량이 무려 2.7MB에 달합니다. 브라우저의 리소스를 많이 잡아먹어서인지 WebWorker에서 동작하게 되어있고 Node에서는 child_process API를 이용하는군요. 코어와 언어별 트레인드(Trained) 데이터는 최초 인식 때 한 번만 가져오고 이후부터는 캐시에서 불러옵니다.

한글의 인식률이 어떤지 궁금해서 원래 있던 데모에 한글모드를 추가해 보았습니다. 고딕 계열 폰트로 작성된 한글 이미지의 인식률이 가장 높았으며, 불분명하다고 판단하는 경우가 아주 많았습니다. 상단 탭을 한글로 맞추고 한글이 들어간 이미지 파일을 드롭하면 다른 파일의 인식 테스트도 가능합니다.

Tesseract.recognize(myImage)
         .progress(function  (p) { console.log('progress', p)    })
         .then(function (result) { console.log('result', result) })

Comments

자바스크립트로 간단하게 만들어 본 MIDI 시퀸스 플레이어입니다. 미디 모듈은 Roland사의 MT-32이며 이것은 MUNT라는 C/C++ 에뮬레이션 라이브러리를 Emscripten을 이용하여 ASM으로 포팅한 것입니다. SIERRA사의 Silpheed라는 슈팅게임 외 몇몇개의 사운드트랙을 데모용으로 올려두었습니다. (걍 플레이 버튼을 누르면 되요) MT-32용 MIDI 파일을 직접 구해서 플레이어로 끌어다 놓거나 버튼을 눌러 MIDI 파일을 선택하면 자동으로 재생합니다. 복수로 선택하는 경우 재생목록이 만들어 집니다. 더 많은 사운드트랙을 구하려면 구글링해서 어렵지 않게 얻을 수 있고, 특히, Loom, Monky Island, Ultima, Zeliard, YS의 사운드트랙을 추천합니다. 아쉽게도 GM 용으로 만들어진 MIDI 파일은 오류가 나거나 제대로 재생되지 않으며, iOS 브라우저는 ctx.createScriptProcessoronaudioprocess 콜백이 정상적으로 호출되지 못하는 이슈가 있어 작동하지 않습니다. iOS Unmute Hack을 이용하여 재생할 수 있습니다.

GM 기반 MIDI 파일은 libTiMidity 라이브러리를 ASM으로 포팅하여 재생이 되는 것을 확인하였습니다. 확실히 파워풀한 사운드를 들려주는군요. libTiMidity는 사운드폰트기반이어서 별도로 내려받아 실행해야 하고 쓸만한 폰트 파일의 크기가 100MB를 훌쩍 넘기 때문에 온라인 플레이어로 만들기는 다소 힘들어 보입니다.(폰트를 악기단위로 분리하고 MIDI 파일을 분석하여 필요한 악기만을 비동기로 로드하고 재생하는 개념의 midijs라는 프로젝트가 있네요!)

IMG_1020.PNG

유년시절에 즐겼던 대부분의 DOS 게임들이 시퀸스 모듈을 이용하여 제작되었습니다. 시퀸스드 뮤직 파일은 여러 종류가 있는데 퀄리티 순으로 나열하면 General MIDI 호환 > MT-32 호환 > OPL 시리즈(AdLib Sound) > PC 스피커 순이 됩니다. 이 중에서도 중저가형인 MT-32호환 모듈인 CM-32를 사려고 용돈을 모으다가 저가형 하이-엔드 사운드 카드인 OPL-4기반의 "옥소리"가 출시되어 지르는 바람에 물 건너 가버렸던 그런 추억이 있는 시퀸스 모듈입니다. OPL-4는 YAMAHA사에서 만든 칩셋으로 낮은 가격대비 고수준의 PCM 음원을 내장한 시퀸스 모듈입니다만, 하필이면 이즈음 하드웨어에 의존 없이 소프트웨어 믹서만으로 CD 오디오 수준의 사운드를 재생하는 분위기로 개발 동향이 바뀌면서 시퀸스 사운드는 게임계에서 자취를 감추게 되었죠.

MT-32 음향을 꼭 한번 들어보고 싶었는데, 20년이 훌쩍 지난 지금 자바스크립트로 재생해 보게 되었네요. 추억 돋게 하는군요.

Comments