기본 콘텐츠로 건너뛰기

라벨이 web인 게시물 표시

[tip] pico-8의 GPIO 기능

http://www.lexaloffle.com/pico-8.php?page=manual  를 읽다보니 재밌는 부분이 있다. 그건 바로 pico-8이 GPIO(General Purpose Input Output)를 지원한다는 점인데 CHIP/Pocket CHIP 뿐만 아니라 Raspberry Pi에도 대응하고 심지어 HTML으로 export했을 때도 된다는 사실. pico-8에는 가상의 메모리 맵이 있고 PEEK/POKE 명령으로 해당 주소를 읽고 쓸 수 있다. 메모리 맵은 아래와 같은데 0x0    gfx 0x1000 gfx2/map2 (shared) 0x2000 map 0x3000 gfx_props 0x3100 song 0x3200 sfx 0x4300 user data 0x5e00 persistent cart data (256 bytes) 0x5f00 draw state 0x5f40 hardware state 0x5f80 gpio pins (128 bytes) 0x6000 screen (8k) 이 0x5f80영역이 GPIO랑 붙는다. PEEK(0x5f80), POKE(0x5f81, 0xff)와 같이 접근 가능하다. CHIP류에선 0~7번 핀을 0x5f80~0x5f87까지 (PocketCHIP은 0,1 생략) RaspberryPi류에선 0x5f80~0x58f8f까지 사용할 수 있다. WiringPi Pin 번호에 주의하자 여튼 GPIO를 사용할 땐 pico8을 반드시 sudo 로 구동하여야 원활하게 사용할 수 있는 점을 명심하자. 재미있는 점은 HTML을 export 했을 때 pgio8_gpio 란 글로벌 변수로 GPIO를 시뮬레이션 할 수 있다. var pico8_gpio = Array(128); 이와 같이 미리 선언하고 PEEK, POKE하면 외부에서 pico-8 모듈로 읽고 쓰기가 가능해서 매우 유용하니 꼭 기억해두자.

docker+alias를 사용해서 golang 편하게 쓰기

이 글은 docker 설치를 했다는 가정에서 진행한다. 먼저 go docker 버전을 가져오자 docker pull 해도 되지만 필요한 걸 추가할 수도 있을 것 같아 Dockerfile 을 만들었다. FROM golang:1.7-alpine go 1.7을 비교적 가벼운 alpine linux버전에 올리자. docker build . 해서 image를 만들자 docker images를 해서 확인할 수 있다. alpine 이 아니라 그냥 1.7도 docker pull golang:1.7 해서 가져와봤는데  $ docker images REPOSITORY                  TAG                 IMAGE ID            CREATED            SIZE golang                      1.7-alpine          52493611af1e        5 days ago          241.1 MB golang                      1.7                 fe25c00086fb        5 days ago     ...

짧은 Crosswalk 사용기

HTML5 + js 를 UI로 사용하는 앱을 만들때 제일 당혹스러운 점은 크로스플랫폼으로 사용하기 위해 같은 기준인 UI 렌더러를 쓰는 목적이었는데도 불구하고 파편화가 매우 심각하다는 점이다. 해상도 같은 건 논외로 치고 공통으로 사용하는 WebView 시스템 컴포넌트가 똑같은 " Modern Browser "가 아니라는 점이다. 심지어 같은 OS라고 해도 버전별로 다르다는 건 문제가 크다. 그래서 canvas만 가지고 떼어내서 만들까 어쩔까하고 고민하면서 검색 중  https://crosswalk-project.org/  프로젝트를 발견. webRTC( https://github.com/alongubkin/phonertc )나 webAudio( https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/PlayingandSynthesizingSounds/PlayingandSynthesizingSounds.html )같은 것들도 있지만 가장 큰 관심사는 iOS에서 safari가 아니라 chrome 일지가 첫번째. 첫번째 시도. cordova platform add ios cordova run ios Safari에서 확인. 기존 mobile safari임. cordova add cordova plugin add cordova-plugin-crosswalk-webview 소스 확인. 역시 WKWebView는 없음. 없다고 했는데 확인사살. 그러면  https://crosswalk-project.org/documentation/ios/quick_start_guide.html 이렇게 소스코드를 아예 받아서 해볼 수 밖에 없다. git clone https://github.com/crossw...

Android/iOS mobile web debugging

Google Chrome 이나 Firefox, Safari 그리고 아쉽지만 그런대로 Internet Explorer까지 모두 개발자 도구를 지원하여 DOM 구조를 보거나 요청별 응답시간을 추적하거나 CSS를 살펴보거나 할 수 있다. 이건 너무 편하고 당연해서 우리가 모바일 환경(Android/iOS)에서 같은 환경을 사용할 수 없는게 모바일 웹 개발의 어려운 점이기도 한데. 역시 찾아보니 방법이 있다. 먼저 iOS 같은 경우는 설정 > Safari > 고급 > 웹속성 을 켜주면 iOS장비와 Safari가 깔린 컴퓨터를 서로 연결하여 개발자용 메뉴 > (해당 기기 이름) 을 통해 접근가능하다. 물론 컴퓨터용 Safari에서 미리 환경>고급>메뉴 막대에서 개발자용 메뉴 보기 를 체크해줘야한다. 그리고 Android의 경우 Chrome for Android 가 있다면 좀 더 좋은 환경을 제공한다. https://developers.google.com/chrome/mobile/docs/debugging  내용 참조. USB 연결 후 adb devices 에서 장비 연결을 확인하고 Chrome for Anroid 에서 Settings > Advanced > Developer tools 로 들어가 Enable USB Web debugging 를 체크 그다음 adb forward tcp:9222 localabstract:chrome_devtools_remote 를 실행해서 9222 포트를 연결하고 크롬에서 localhost:9222를 띄워서 디버깅할 창을 선택하면 된다. https://developers.google.com/chrome-developer-tools/docs/timeline 도 같이 쓸 수 있따. 센스가 있는 분들이라면 iOS건 Android건 에뮬/시뮬을 통해서도 할 수 있지 않을까라고 생각할 수도 있을텐데 맞다. iOS Simulator나 AndroVM...