기본 콘텐츠로 건너뛰기

Arduino+Bluetooth 연결 후 터미널에서 테스트하기

Arduino를 보고 있다. Bluetooth 모듈하고 연결은 tx,rx를 서로 교차연결하고 전원만 받아주면 만사 오케이더라. 이렇게 해서 이렇게 하긴 했는데 테스트 하기 위해선 nc 같은 터미널로 하면 쓸 수 없을까 싶었는데 그냥 screen 명령을 쓰면 되더라. Bluetooth Pairing 후 $ ls /dev/tty.* /dev/tty.Bluetooth-Incoming-Port /dev/tty.HC-06-DevB /dev/tty.Bluetooth-Modem 해보니 테스트 용으로 쓰고 있는 HC-06-DevB가 보이더라. $ screen /dev/tty.HC-06-DevB  으로 접근하면 시리얼 터미널로 돌입한다. 에코가 있으면 에코를 쏠테고 아니면 그냥 받아준다. 뒤에 전송속도를 써서 $ screen /dev/tty.HC-06-DevB 9600 이렇게 접근도 가능하다. 커맨드를 치고 enter를 치면 텍스트를 전달한다. 테스트를 마치고 나갈땐 ctrl+a, ctrl+\ 를 입력하면  Really quit and kill all your windows [y/n] 하고 물어본다. y를 눌러서 나가면 된다.

Meteor에서 웹서버 설정 - nginx

http://www.andrehonsberg.com/article/install-nginx-141-meteor-js-websocket-ubuntu-1204 3000->80포트 포워딩하느라 nginx를 사용하긴 했는데 (그리고 ssl도 해야하고 등등) 맘에 걸리는 점이 두가지 있었다. gzip을 안써도 되나 정적 resource를 meteor가 다루지 않도록 해야 그래서 찾아보니  http://stackoverflow.com/questions/18003689/recommended-nginx-configuration-for-meteor  이런 글이 있더라 딱 내가 찾던거네! 근데, meteor에선 css의 경우 경로가 /fc376dc60222227945af14b78724770fb1dbb699.css?meteor_css_resource=true 이런 식으로 뒤에 ?meteor_css_resource=true  가 붙는다. 정규식만 조금 고쳐주자. location ~* "^/[a-z0-9]{40}\.(css|js)$" { 이 부분을 css 뒤에 개행이 아닌 아무거나 와도 되도록 .*를 추가해주자.  location ~* "^/[a-z0-9]{40}\.(css .* |js)$" { 어 이거 하고 나니 PageSpeed Insights 가 100점이 되넹?

오늘의 닭짓일기 - iOS iOS iOS... plugins

자 이제 더러운 짓을 할 때다. 각종 권한들 왕창 플러그인들도 왕창 미리 설치해놓고 잠수함 패치로 앱스토어를 거치지 않고 업데이트할 수 있도록 미리 준비하는 것이다. TestFlight에 올리록 Archive를 하니 'Cordova/CDVViewController.h' file not found 오류가 계속 나서 stackoverflow를 전전하다 보니 아뿔싸 내 Cordova 버전이 너무 낮다. 3.5로 다시 업글 npm install -g cordova 그리고 iOS 7에선 Status bar가 내용을 가린다. MainViewController.m을 좀 수정하자. - (void)viewWillAppear:(BOOL)animated {     // View defaults to full size.  If you want to customize the view's size, or its subviews (e.g. webView),     // you can do so here.     //Lower screen 20px on ios 7     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {         if(self.webView.frame.origin.y == 0) {             CGRect viewBounds = [self.webView bounds];             viewBounds.origin.y = 20;             viewBounds.size.height = viewBounds.size.height - 20;   ...

오늘의 닭짓일기 - Amazon EC2 + Meteor

wwwizer  적용이 생각보다 오래걸리더라. 아무튼 지금은 잘됨. RalphChat 이 오픈소스가 되어 기쁨. 적절한 타이밍. AWS는 신청하니 별거 없는데 Security-Group 에서 Type Protocol Port Range Source SSH TCP 22 0.0.0.0/0 HTTP TCP 80 0.0.0.0/0 이렇게 잡아주고 nginx 설치 후 포트포워딩 등등을 함 http://www.andrehonsberg.com/article/install-nginx-141-meteor-js-websocket-ubuntu-1204 이거 보고 했는데 내 경우엔 apt-get 으로 설치하고보니 include sites-enabled/*; 부분은 필요 없었고 sites-available 에 설정파일 만들고 sites-enabled에 심볼릭 링크 만드는 게 전부였다. 그리고 DB는 따로 분리했는데 MongoHQ로 지정하였음. 어드민 겸 잘됐지뭐. 속도는 meteor.com 호스팅 보단 빠르지 않나 싶음. google analytics의 웹페이지 속성도 변경하고 안드로이드 버전업도 함. 벌써 0.0.7 도메인 문제가 전부 해결되었으니 다른 호스팅을 써도 이젠 의존성이 없음. pm2 를 써서 디플로이 하도록 했는데 watch 옵션을 쓰면 "거의" 무정지 운영도 가능할 듯.

오늘의 닭짓일기 - Cordova + Meteor

app에 meteor-rider 적용 기존 url scheme 관련 plugin인 com.borismus.webintent을 지웠다가 재설치 iOS 적용. 정상작동 확인 talk 섭 도메인 생성 및 meteor deploy새로 완료 wwwizer 에 naked domain 신청함. 아직은 안됨. 마이그 완료 새 도메인으로 앱 업뎃도 해야겠군. 언제든지 호스팅을 바꿔도 되도록. meteor-rider는 hijacking DOM을 이용해 로컬에서 먼저 기동하고 호스팅하고 있는 원격지 앱으로 갈아타기 하는 아주 간단한 방식인데 단점은  http://zeroasterisk.com/2013/08/22/meteor-phonegapcordova-roundup-fall-2013/  몇몇 하드웨어 관련 플러그인이 작동하지 않을 수도 있다고 한다. 그런데 RalphChat이 쓴걸 보니 별 문제는 없어보인다. Push 같은 게 작동하지 않으려나? iOS 적용은 초기에 네트웍 연결 불가능한 상태에서 404메시지 같은 걸 뿌릴 때 심사팀에서 매우 안좋아하더라. 거의 리젝이라고 보면 된다. https://github.com/apache/cordova-ios/blob/master/guides/Cordova%20Custom%20URL%20Scheme%20Handling.md iOS의 경우 URL Scheme을 적용하는 건 Android보다 간단. 원래 내부적으로 지원하나보다. 단 android의 경우는 meteor app에서 사용한 반면 iOS는 최초 index.html로 진입할때 하도록 함. 뭐 상관없나 싶기도 하지만.

3D가속을 지원하는 Ubuntu 12.04LTS 를 Multiboot RK3188 설치 후 설정

https://plus.google.com/+IanMORRISON 님에게 감사의 말씀을 일단 1. SD 준비하기 먼저 용량 넉넉한 MicroSD를 FAT32로 포멧한 후 MiniTool Partition Wizard 같은 걸로 Ext4 파티션을 만들어준다. 2. 듀얼부팅용 Flash하기 RKAndroidTool.exe 를 일단 받자 순서대로 올려보는데 일단 기본적으로 USB Driver 등은 설치+적용해놓고 리커버리모드로 부트. update.img는 https://drive.google.com/file/d/0B99O3A0dDe67NjVLSHlhQXVnX0k 받아서 v1.7에서 올려서 upgrade했다. 파일이름이 아마 rikomagic-linuxium-bootloader 인데 내용 물은 update.img임. 이걸로 듀얼부팅은 끝. (최신 kitkat 적용 radxa 롬이 있긴 하지만 안정화도 그렇고 멀티부팅도 아직이라 보류http://radxa.com/2014/03/25/android-4-4-2-preview-firmware-released/ ) 하지만 몇가지 패치는 해주자 v1.37에서 boot(5번째)에 https://drive.google.com/file/d/0B99O3A0dDe67NjVLSHlhQXVnX0k minix-linuxium-updated-boot.img 요거 한번 올리고 run v1.37에서 Kernel(4번째)에 https://drive.google.com/file/d/0B99O3A0dDe67LXIzLU5nUk9mZW8 rikomagic-linuxium-updated-kernel.img 요거 한번 올리고 run 3. 이미지를 올릴 차례다. https://docs.google.com/file/d/0B99O3A0dDe67S1hQQ2VybldVYU0/edit  를 sd카드에 올리고 부트한 뒤 c 를 선택 커맨드라인 모드로 돌입. 쭉쭉 입력해주자. mke2fs /...

Meteor/handlebars에서 radio/select 다루기

자주쓰지만 은근 귀찮은 것이 radio와 select다. 특히 최초에 렌더링 할때 선택하게 하는게 번거롭다. #each로 option이나 input에 들어갈 별도의 키를 find의 transform에서 만들거나 아예 fetch를 하거나 array를 조작하거나 하는 건 어렵지 않지만 매번 같은 상황일때마다 코딩을 해야되니까 안 이쁘쟈나. (그렇쟈나 손구락 뿌러지쟈나 카피엔 페이스트 귀찮쟈나 짜증나쟈나!) 물론 checkbox도 귀찮지만 비슷하게 응용하면 될 것이니 handlebars의 block helpers를 사용하여 이 귀찮음을 해결해볼 수 없을까 해서 코드를 만들어보았다. 먼저 select를 해보면 다음과 같은 그림인데 <select>   {{#each array}}   <option value="{{code}}">{{name}}</option>   {{/each}} </select> array중 code가 특정값과 일치하면 selected="selected"가 되도록하려면 간단하게는 option이라는 Helper를 만들어 {{option name code value}}식으로 할 수도 있겠지만 <option> 이라는 객체가 없어지니까 별로 좋지 않다. 그렇다면 특정 블록을 감싸안아서 인자로 받은 값과 같은 option이 있는지 찾아서 수정한 후 대치하면 될 것이다라고 생각. Handlebars . registerHelper "select" , (value, options) -> select = document . createElement ( "div" ) $ ( select ). html options () $ ( "option" , select ). filter ( "[value=' #{ value } ']" )....