기본 콘텐츠로 건너뛰기

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

Meteor에서 file API를 사용한 upload 방법

https://gist.github.com/4132544 코드는 이쪽에. Meteor.saveFile = (file)->   fileReader = new FileReader()   fileReader.onload = (blob) ->     Meteor.call 'saveFile',       file:file       blob:blob.srcElement.result   fileReader.readAsBinaryString file   return # event for upload _.extend Tempalte.something,   events:     'change input[name=attach]': (e)->       _.each e.srcElement.files, (file) ->         Meteor.saveFile file 클라이언트에서 FileReader 객체를 생성하고 onload 시 파일속성과 바이너리를 인자로 Call을 해준다. submit을 타지 않고 Call을 사용하여 직접 전송한다는 점에 주목. app=__meteor_bootstrap__.app   fs=__meteor_bootstrap__.require 'fs'   app.stack.unshift     route: '',     handle: (req, res, next)->       Fiber(->         unless /upload\/\/*/gi.test req.url           next()     ...

play.node() 노드 컨퍼런스 코리아 종료.

우여곡절은 있었지만 발표도 잘 했고 재밌는 것들도 많이 들었고 나름 의미 있는 것들을 몇몇 건졌다고 생각한다. Isaac(node.js 원년멤버.풀타임 node.js 개발자이지 npm을 만든 장본인)은 생각보다 아니 생각대로 싱거운 사람이었다. 몇몇 질답이 오갔는데 다 그가 알고 있거나 우리들이 아는 뻔한 이야기의 범주를 벗어나지 못했달까. 밀도의 차이는 있지만 우리랑 별로 다르지 않구나라는 안도감도 약간. 매끄럽지 못한 부분도 있었지만 1회 치곤 괜찮았고 네이버 행사장도 꽤 좋았음. 앞으로도 계속 이런 행사 유지했으면 한다. 근데 솔까 스피커/오거나이저한테 뭔가 좀 더 현실적인 보상이 있었으면 자봉문화(?)가 못마땅하달까. 뭐만 하면 다 자봉이야. 이런 거 애들이 배워서 나중에 "우리도 열정을 가지고 공짜로 했으니 너희들도 당연히 그래야지"라고 말하는 꼰대가 될까봐 후덜덜. 스폰서들이 쓰는 비용 전체에 비하면 적은 투자인데 반해 그들은 열성적인 홍보자라서 고효율 아닌가? 컨퍼런스를 무료로 하는 것이 컨퍼런스의 질을 떨어뜨린다고 생각한다면 스텝에 대해서도 마찬가지라고 생각. 오전 세션을 사정상 참여않아 못봤는데 해외 스피커들에게 영어로 질문하는 사람들이 있었다고 한다. 당연히 이런 거 사전에 미리 제재하고 명확한 의미 전달을 위해 한국어로 질문하게 하고 전문 분야의 지식과 한국어의 의미를 잘 파악하는 전문 번역자가 통역하게 해야한다. 그나저나 우리도 뭔가 언어나 프레임워크 같은 거 만들어서 전문 통역자(당연히 현지에서 준비해주는)끼고 한국말로 연설하는 전세계 투어 같은 거 하면 정말 재밌겠네. 마무리로 Isaac 하고 찍은 사진이랑 인증 샷들 몇개 투척.