발생일: 2014.01.16 키워드: 서브라임 테스트, Sublime Text 문제: 최근에는 서브라임 텍스트 에디터를 사용하고 있다. 처음엔 폴더 단위로 열어서 사용하고 있었는데, 찾아보니 프로젝트란 컨셉이 있더라. Project > Save Project As… 메뉴로 현재 환경을 프로젝트로 저장할 수 있다. 프로젝트로 설정해두면, 파일 검색의 범위도 구체적으로 설정할 수 있고, 무엇보다 간편하게 프로젝트를 전환할 수 있다. 여튼, 이렇게 프로젝트를 설정해서 쓰고 있는데, 파일 검색을 하려고 하니 프로젝트 내 임시 디렉토리의 파일까지 모두 검색이 된다. 얘네들은 검색 대상에서 뺄 수 없을까~ 해결책: 프로젝트 설정 파일을 열어서, 프로젝트 대상 폴더를 설정하고, 제외 폴더와 패턴을 등록할 수 있다. ..
발생일: 2014.01.06 키워드: RequireJS, module 문제: 진행 중인 프로젝트에서는 RequireJS를 써서 모듈 관리를 하고 있다. 각 모듈에서 자기 자신의 모듈 이름을 가져와 처리하는 케이스가 생겼는데, 어떻게 하면 될까? 해결책: 매직 모듈이 있었다. `module`을 import 한 후, `id` 속성으로 가져오면 된다. define([ ‘module' ], function (module) { module.id; //—> 현재 모듈의 아이디 }); https://github.com/jrburke/requirejs/wiki/Differences-between-the-simplified-CommonJS-wrapper-and-standard-AMD-define#wiki-magic
발생일: 2014.01.16 키워드: 아두이노, arduino, 디버깅 문제: 요새 아두이노로 놀아보고 있다.^^ 디버깅은 우찌하는 걸까? 해결책: 간단 요약! Serial.begin(9600); 으로 시작하고 Serial.print(); Serial.printf(); 로 출력한다. 참고: http://knight76.tistory.com/entry/%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8-%EB%94%94%EB%B2%84%EA%B7%B8-%EB%B0%A9%EB%B2%95 http://plming.tistory.com/46
발생일: 2014.01.15 키워드: VIP, 가상 아이피, Virtual IP 문제: 이번 프로젝트에서는 서버 설정도 함께 해보기로 했다. 다른 팀에서 요청한 샘플을 봤는데, VIP를 요청하지 않아도 될 것 같은데 요청한 케이스가 있더라. 내가 뭔가 잘못 알고 있었나보다. 이 분야는 기초가 잘 닦여있지 않아서… ^^;; 공부하자… ㅎㅎ 해결책: http://blog.naver.com/ctlim2/50002915287 아주 쉬운 설명 http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/cloud/NetworkVirtualization/VirtualIP 이건 좀 정석적인 설명 VIP는 하나의 호스트에 여러 개의 IP주소를 할당하는 기술 이 기술을 이용하면, 하나..
발생일: 2013.12.13 키워드: CPU, 코어 개수 문제: 패신저라고, 웹서버인 nginx와 루비/노드 등의 앱서버를 쉽게 엮어주는 모듈을 살펴보고 있었다. 난 노드 앱을 띄울 생각을 하고 있었는데, 노드는 싱글 스레드라 앱서버의 인스턴스를 띄울 때 코어 개수만큼 띄우는 게 가장 효율적이라고 하더라. 가만, 코어 개수를 어떻게 가져오지? 해결책: 맥에서 코어 개수를 가져오려면. $ sysctl hw | grep cpu 참고: https://www.ibm.com/developerworks/community/blogs/brian/entry/linux_show_the_number_of_cpu_cores_on_your_system17?lang=en http://osxdaily.com/2011/07/15/g..
발생일: 2013.12.29 키워드: MutationObserver, DOM 감시, DOM 변경, 변경 추적 문제: 네이버 뉴스 사용자 댓글 간편보기 익스텐션(http://ohgyun.github.io/naver-news-user-comments-viewer/)을 만들었다. 뉴스 목록이 있고 간편보기 버튼이 각 엘리먼트의 옆에 붙어있는 UI이다. 이 버튼은 페이지가 로드된 후에 붙이도록 했는데, 뉴스를 ‘더보기’로 불러온 경우에도 버튼이 붙도록 처리가 필요했다. 특정 엘리먼트의 DOM Tree 변경을 감지하고 있다가, 렌더링할면 될 것 같다. 어떻게 하면 될까? 해결책: 검색해보니, DOM Tree 변경 감시를 위한 `MutationObserver`라는 API가 있다. https://developer.m..
발생일: 2013.11.23 키워드: RequireJS, r.js, 압축, optimizer, 최적화, minification 문제: 진행하고 있는 프로젝트에선 RequireJS를 사용하고 있다. 전반적으로 싱글 페이지 애플리케이션이지만, 별도로 분리되어 있는 페이지도 있어서, 스크립트의 공통 부분과 각 페이지에서 필요한 부분을 나눠서 압축하려고 한다. RequireJS에는 전용 압축 도구인 `r.js`가 있고, 구미에 맞게 처리할 수 있도록 다양한 옵션을 제공한다. 옵션을 자세히 살펴보고, 리서치하면서 정리한 메모들이다. 해결책: ## Require.js Optimizer http://requirejs.org/docs/optimization.html - 다이나믹으로 로드되는 모듈은 `include` 옵..
발생일: 2013.12.15 키워드: 익스텐션, extension, 웹폰트, webfont 문제: 네이버 영어사전 익스텐션(http://goo.gl/Ui7kBU)에 나눔고딕 웹폰트를 적용하려고 한다. 어떻게 하면 될까? 해결책: 일단, 간단 정리! 익스텐션의 컨텐트 스크립트에서 웹폰트 사용하기 1. 웹폰트를 익스텐션 내 임의의 디렉토리에 넣어둔다. 2. manifest 파일에서 `web_accessible_resources` 속성에 해당 경로를 추가한다. 3. 자바스크립트에서 동적으로 스타일을 추가한다. 영어사전의 경우 본문에 로드되는데, CSS에서는 익스텐션의 경로를 알 수 없기 때문이다. 3.1 `chrome.extension.getURL()`로 현재 익스텐션의 URL을 가져온다. 3.2 스타일 태그..
발생일: 2013.12.17 키워드: 크롬, 단축키, 본문 문제: 난 마우스보단 키보드로 네비게이팅하는 걸 선호하고, 크롬에서 Vimium(http://goo.gl/m4XUa)이라는 익스텐션을 쓰고 있다. vi 커맨드로 웹서핑을 할 수 있는 아주아주아주 유용한 도구다. 헌데, Command + L 로 주소창으로 간 후 특정 페이지로 이동한 다음엔, 꼭 한 번은 마우스로 본문을 클릭해줘야 한다. Vimium은 자바스크립트로 구현되어 있어서, 일단 본문에 포커스가 들어가야 동작하기 때문이다. 마우스 말고 키보드로 본문에 포커스를 줄 수 있는 방법은 없을까~? 해결책: 별도의 단축키가 존재하진 않는다. 찾아보니 몇 가지 꼼수가 있긴 하다. 1번 꼼수: - 주소창에 `javascript:`를 입력하면 바로 본문..
발생일: 2014.02.15 키워드: curl 문제: curl로 특정 요청을 보낸 후 응답으로 받은 쿠키를 저장하고, 그 쿠키를 재사용해 다음 요청을 보내고 싶다. curl 매뉴얼을 보니 다 있다. :)이참에 쓸만한 옵션들을 보기 쉽게 좀 정리했다. 해결책: 요약 정리 # page1.example.com 으로 요청을 보내고, 응답 쿠키를 cookie.txt에 저장한다.$ curl -c cookie.txt http://page1.example.com # 저장한 쿠키(cookie.txt)를 헤더에 추가해서, page2.example.com 으로 요청한다.$ curl -b cookie.txt http://page2.example.com 요청 데이터 관련 -X, —request HTTP 메서드를 설정할 수 있다..