기본 콘텐츠로 건너뛰기

글

meteorite 기동시 spawn ENOENT 오류가 날때

OS X를 Lion 에서 Moutain Lion 으로 업그레이드 후 mrt를 가동시켰더니 $ mrt Stand back while Meteorite does its thing smart.json changed.. installing from smart.json Installing Meteor   branch: https://github.com/meteor/meteor.git#master Installing smart packages events.js:72         throw er; // Unhandled 'error' event               ^ Error: spawn ENOENT     at errnoException (child_process.js:948:11)     at Process.ChildProcess._handle.onexit (child_process.js:739:34) 이런 오류가 날때가 있다. spawn 을 하다가 오류가 났다는 건 외부 파일 실행을 하는 게 실패해서 인가 싶어서 보니 meteorite은 git을 사용하고 있었지. 그랬었지. which git 해보니 없었다. http://git-scm.com/ 여기 가서 다운받고 설치하자. 평화적으로 잘 해결이 되었다. 사실 해보고 나서 생각해보니 OS X에서 업글을 할때 git path를 잡아놓았던게 없어져서 그런 것인데 path 에 /usr/local/git/bin를 추가해주기만 해도 해결된다. git을 다시 설치하면 /etc/paths.d/git 아래에 path를 잡아준다. sudo sh -c 'which git > /etc/paths.d/git' 이런 식으로 잡아줘도 무방.

go로 android notification server를 만들었다.

내가 처한 갑갑한 상황은 이런 것이었다. 1. Android 용 notification server + client 를 구현해야한다. 2. 서비스 서버는 내가 손을 댈수 없지만 windows+asp 기반으로 되어있다. 3. 내 컴퓨터는 OS X다 (....) 4. 소스가 노출되는 형태의 결과물은 안된다(script류 X) 5. 서버 구동을 위해 별도의 프로그램을 설치할 수 없다 (java 안됨) 6. exe 파일을 만들어야한다. 그것도 OS X에서 7. C/C++로? 8. 테스트 용으로 디플로이도 해야할 것 같다. 그래서 떠올린 것이 go. 유지보수도 겸해서 천치도 읽을 수 있게 짜고 싶었다. go-gcm package를 일단 써서 후지고 빠르게 만들자. https://gist.github.com/acidsound/5121536#file-tinygcmserver-go // +build !appengine package main   /* * Usage: ./TinyGCMServer.go <API_KEY> <Server URL(:port)> * Test: curl -d "<NOTIFICATION MESSAGE>" http://serverURL/sendMessage?target=<REGISTRATION_ID> */ import ( "fmt" "github.com/googollee/go-gcm" "io/ioutil" "net/http" "os" )   var API_KEY string   func main () { serverURL := "localhost:8000" if len ( os . Args ) > 1 { API_KE...

Meteor server-side debugging Tip

Meteor는 수정할때마다 소스를 다시 생성하는 방법이라서 기존 IDE상에서 node.js 디버깅은 어렵다. 하지만 방법이 없는 건 아닌데 의외로 간단하니 breakpoint나 watch가 필요한 경우 잘 보고 적용해보도록 하자. 사실 Meteor 에서 지원하는게 아니라 node 자체의 debugging 옵션을 사용하는 것인데 환경 변수 하나를 설정한다. export NODE_OPTIONS='--debug' 그리고 meteor(혹은 mrt)서버를 시작한다. 시작할때 로그를 보면 Running on: http://localhost:3000/ debugger listening on port 5858 5858포트로 디버거를 열었음을 확인할 수 있다.(default:기본값이 5858) 만일 특정포트로 열고자 하면 export NODE_OPTIONS='--debug=47977' 이런 식으로 하면 된다. 그리고 자신이 애용하는 node debugger로 보면 된다. node-inspector( https://github.com/dannycoates/node-inspector )나 node-webkit-agent ( https://github.com/c4milo/node-webkit-agent )같은 걸 사용하면 되겠다. webstorm을 사용한다면 Run/Debug Configuration으로 가서 설정하면 된다. node-inspector를 설치하고 해당 meteor 프로젝트가 있는 경로에서 터미널에 wstorm . 과 같이 커맨드라인 실행을 했다는 가정이다. (커맨드라인 실행은 webstorm > tools > Create Launcher Script 에서 지정한 name으로 할 수 있다) 그리고 Command Line Tools Console 에서 node-inspector나 node-webkit-agent 를 띄워서 본다. 내 경우엔 브라우저에서 창을 왔다갔다 하는게...

intelliJ IDEA 12에서 flash + starling framework 시작하기

내가 어쩌다 이 글을 쓰게 된건지는 모르겠지만 나를 위해 일단 기록을 남긴다. 요새 Flash에 관심이 가서 보던 중 intelliJ IDEA 12에서 Flash/Flex지원을 기본으로 한다는 이야기를 듣고 바로 알아보기로 함. Preference > Plugins를 보았다. 있다! 맨바닥에서 하는 건 싫으니까 조금 찾아봤더니 Starling 이니 Feather 니 하는 것들을 발견. 일단 둘다 clone 하고 보자 zip 파일로 받아놓는 것도 좋지만 업데이트 편하게 library 디렉토리 하나 만들고 git clone git://github.com/PrimaryFeather/Starling-Framework.git git clone git://github.com/joshtynjala/feathers.git Flex SDK도 받아놓자. 현재 4.6버전임 http://www.adobe.com/devnet/flex/flex-sdk-download.html iOS Simulator 를 돌리려면 (OS X전용) Air SDK 3.3 이상이 있어야한다고 하니 이것도 받자. http://www.adobe.com/devnet/air/air-sdk-download.html 준비는 다 되었다. 이 다음은 친절한 분이 잘 정리해놓으셨네. http://wiki.starling-framework.org/manual/project_setup 이걸보고 하나씩 해본다. Project Structure로 가서 Platform Settings > SDKs 를 찍고 +를 눌러서 Flex SDK를 선택 받아놓은 Flex SDK 경로를 설정하고 추가 후 Document 를 위해 Documentation Paths 탭을 선택 +지구본 모양 아이콘을 클릭. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/를 추가하자. 자동으로 URL을 따주는 것 ...

[git] fork 해온 저장소를 최신 상태로 유지하기

Go 관련 번역 작업을 할 일이 있어서 했던 일들을 기록해둔다. 이슈에 내가 할 작업 분량을 공지하고 (다른 사람이 두번 삽질 안하게) 바로 fork 해서 내 저장소로 옮겨놓고 수정하고 pull request 까지 끝낸 뒤 원본에서 merge까지 끝났다. 그 다음은? 내가 fork 한 저장소의 작업과 별개로 원본의 작업은 진행되고 있고 아마 내 저장소의 것들은 상대적으로 구버전일 것이다. 원본에서 pull로 땡겨와서 merge 하기 위해 remote 를 먼저 등록해두자. $ git remote add upstream git@github.com:golanger/go-tour-translator.git 확인해본다. $ git remote origin upstream origin 과 새로 추가한 upstream. 두개를 확인할 수 있다. 그러면 upstream으로부터 pull 해보자. $ git pull upstream From github.com:golanger/go-tour-translator  * [new branch]      master     -> upstream/master You asked to pull from the remote 'upstream', but did not specify a branch. Because this is not the default configured remote for your current branch, you must specify a branch on the command line. 그냥 pull 하니까 오류를 뱉는다. 어떤 브랜치인지 지정 안했다는 얘기지뭐. 디폴트로 master를 해줬으면 좋겠지만 확실한게 좋다. upstream에서 master를 가져오도록 해보자. $ git pull upstream master From github.com:go...

go를 사용하여 Google App Engine에 정적 웹서버를 올려보자.

작년에 미뤄뒀던 Go 를 다시 보고 있다. 동기부여를 위해 회사 안내 홈페이지를 망할 일도 없고 비용이 안드는 곳으로 옮기고 싶은 생각이 있었는데 Google App Engine (이하 GAE)정도면 뭐 망할 일이 없겠지 싶다. Google Apps 처럼 유료화해도 먼저 만들어 놓은 서비스/계정은 안건드니까 먼저 침이라도 발라놓아야지. 개발환경 세팅은 간단했다. Download 에서 package 를 받고 설치한 다음 goide를 쓰고 싶었으나 아직 완성도 문제가 있어서 sublime을 사용하기로 결정. http://wbond.net/sublime_packages/package_control/installation 는 전에 설치해놓았다. 그저 sublime을 띄운 상태에서 ctrl+` (OS X에서도 ctrl+` 임)을 누르면 나타나는 하단 콘솔창에 import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation' 요 내용을 붙여넣으면 끝. 그 다음 sublime용 golang plugin인 GoSublime 을 추가 데모 동영상을 보면서 사용법을 간단하게 알아보면 0:11즈음에 나오는 package 삽입 기능은...

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...