발생일: 2013.06.18 문제: HTML5의 WebStorage API 중 하나인 Local Storage에 대해 살펴봤다. 해결책: 개요 HTML5에서는 클라이언트에 데이터를 저장하는 2개의 객체를 제공한다.하나의 세션 단위로 데이터를 저장하는 SessionStorage 와,만료 기간이 없는 LocalStorage 가 있다. 두 가지 모두 key/value 쌍으로 저장하며, 사용 방법은 거의 비슷하다.여기서는 Local Strorage 에 대해 자세히 살펴보려고 한다. 간단 사용법 사용법은 정말 간단하다.전역으로 할당되어 있는 localStorage의 메서드를 사용하며, 데이터는 key/value 쌍으로 구성된다. 아래와 같이 setItem() 과 getItem()으로 값을 저장하거나 가져올 수 있..
발생일: 2013.06.17 문제: 국제 표준시를 표기하는 방법에 대해 대충 알고는 있었지만,지금까지는 직접적으로 처리할 일이 없어서 자세히 살펴보는 건 늘 미뤄왔었다. 오늘 잠깐 여유가 있어, 궁금하던 차에 처음부터 자세히 살펴보고 정리했다. 해결책: 협정 세계시(UTC) 협정 세계시(UTC)는 1972년 1월 1일부터 시행된 국제 표준시이다. "UTC"는 보통 "Universal Time Code"나 "Universal Time Convention"의 약어로 사용되기도 하는데,이는 틀린 것이라 한다.실제로 국제 전기 통신 연합은 통일된 약자를 원했지만,영어권의 사람들과 프랑스어권의 사람들은 각각 자신의 언어로 된 약자를 사용하길 원했다.영어권은 CUT(Coordinated Universal Time)..
발생일: 2013.05.22 문제: 개인적으로 진행하는 프로젝트에서 ImageMagick 으로 이미지를 처리하고 있다.이미지를 처리할 OS는 Unix 기반이라, Unix용 바이너리를 받아서 `convert` 명령을 실행했다. 헌데, jpg 확장자를 가진 이미지는 정상적으로 처리되지 않고,아래와 같은 에러메시지가 출력됐다. convert: no decode delegate for this image format `test.jpg' @ error/constitute.c/ReadImage/532 음.. 뭐가 문제일까? 해결책: JPEG 형식의 이미지 디코더가 ImageMagick 바이너리 안에 포함되어 있지 않는 게 문제였다.JPEG 뿐만 아니라, PNG 형식도 마찬가지로 디코더가 존재하지 않는다. 이와 같이..
발생일: 2013.06.03 문제: 그 동안은 개인 프로젝트에서만 GitHub을 사용했는데,이번에 회사를 옮기면서 회사 프로젝트에서도 GitHub을 사용할 기회가 생겼다.^^ GitHub을 여럿이서 적극적으로 사용해보는 건 처음이라, 팀원들끼리 여러 방법으로 실험해봤다. 다른 팀원들은 맥용 GUI 도구인 SourceTree 앱을 주로 사용하는데,난 아직까지 커맨드라인이 익숙하고 편하다. 이번에 자세히 살펴보면서, 요긴하게 사용할 수 있는 몇 가지 명령어를 메모해뒀다. 해결책: 리모트를 포함한 브랜치 정보 보기$ git branch -va 리모트 정보가 업데이트 필요할 때$ git remote update 로그 보기$ git log 그래프 형태로 보기$ git log --graph 한 줄로 보기$ git ..
발생일: 2013.06.03 문제: 난 주로 커맨드라인에서 Git을 사용하고 있다.그러고보니, git 명령어도 자동완성이 되게 사용할 수 있을 것 같은데~어떻게 설정하면 될까? 해결책: `git bash completion osx` 키워드로 구글링하면 여러 방법이 나온다. homebrew나 macports 같은 패키지 도구를 이용해 다운로드 받는 방법도 있지만,난 Git 소스 리파지터리에서 bash_completion 쉘스크립트를 다운받아 실행하는 방법으로 해결했다. 1. Git 소스를 다운로드 받는다. $ git clone git://git.kernel.org/pub/scm/git/git.git 2. 다운로드 받은 리파지터리에서 `contrib/completion/git-completion.bash` ..
발생일: 2013.04.29 문제: 지난 주 스터디 주제는 정규식이었다. 이미 정규식은 모두 익숙하고,챕터의 내용 자체가 짧기도 해서 금방 끝내고 커피 마시러 갔더랬다.ㅎㅎ 스터디 때 몇 가지 알려드리려고 메모해둔 게 있어 옮겨둔다.나름대로 특징적인 내용을 뽑아 정리했던 건데, 다시 읽어보니 딱히 그렇지도 않더라.그냥 복습 삼아 한 번 주-욱 읽어보면 좋다. ^^ 해결책: ES5에서 리터럴 정의는 항상 새로운 객체를 리턴한다. var pat = /abc/; ES5에서는 이 구문이 실행될 때마다 새 RegExp 객체를 생성한다. lastIndex 속성이 잘못 사용될 것을 우려한 의도적인 설계이다. /a/ === /a/; //--> false 구형 IE에서는 항상 같은 객체를 리턴한다. 유니코드 문자열 사용..
발생일: 2013.04.29 문제: Trello 로는 웹 기반의 프로젝트 관리 서비스다. 개인 프로젝트에서 사용하고 있는데, 아주 쓰기 쉽고 명확하다.요고요고, 정말 참 잘 만들었다. 여튼, 이번에 마음 맞는 사람들끼리 작은 프로젝트를 하나 진행하기로 했다.관리 도구를 뭘 쓸까 고민했는데,github 이슈 보드를 활용할까 하다가, 개발자가 아닌 친구도 있어 트렐로를 선택했다. 여럿이 써보는 건 처음이라,어떻게 하면 잘 쓸 수 있을까 이것 저것 찾아보다 좋은 아티클을 발견했다. Five Tips for Using Trello for Scrum http://www.civicactions.com/blog/2012/oct/10/five_tips_for_using_trello_for_scrum 이 포스트의 내용을..
발생일: 2013.04.29 문제: 요새 C Programming Language 책을 읽고 있는데,책 초반부에 Parameter 와 Argument 의 차이점에 대한 설명이 있다. 두 가지가 서로 다른 의미를 갖고 있지만,그 동안은 거의 구분하지 않고 사용하고 있었던 것 같다. 실제로 얼마 전 스터디에서는,두 가지를 같은 의미로 혼용해서 설명하다가 의사 전달이 제대로 되지 않았던 경험도 있다. 책에서 두 단어의 차이를 명확하게 설명하고 있어, 그 구문을 옮겨둔다. 해결책: We well generally use parameter for a variable named in the parenthesized list in a function definition, and argument for the valu..
발생일: 2013.04.29 문제: 노드 모듈에서 상대적인 파일의 위치를 찾는 방법이 좀 헷갈린다. 이해하기 쉽게, 간단히 메모해둔다. 해결책: 1. arguments 로 파일명을 전달받고, 해당 파일의 위치를 가져오려고 한다면. 노드가 현재 실행되고 있는 디렉토리 정보는 아래 명령으로 알 수 있다. process.cwd(); // process 모듈은 전역이다. 상대 경로로 파일명을 전달받았다면, 아래와 같이 해당 파일의 절대 경로를 가져올 수 있다. var path = require('path'); path.join( process.cwd(), filename ); 2. 현재 파일을 기준으로 다른 파일을 읽어오려 한다면. 현재 파일의 디렉토리는 `__dirname` 변수에 저장되어 있다. 따라서, 아..
발생일: 2013.04.29 문제: Grunt 로 테스트를 빌드 과정에 포함시키려 한다. 헌데, grunt-contrib-qunit 나 grunt-contrib-jasmine 을 써서 빌드에 포함하려고 하는데,phantomjs 가 설치되어 있지 않다며 실행되지 않는다. 이미 phantomjs 를 설치해뒀는데, 아무래도 제대로 인식되지 않는 모양이다. 어떻게 해결해야 할까? 해결책: grunt-contrib-qunit 과 grunt-contrib-jasmine 모듈은,headless 브라우저인 phantomjs 위에서 동작한다. 두 모듈 모두 phantomjs 노드 모듈에 의존하고 있는데,이 모듈은 다른 노드 모듈에서 phantomjs를 사용할 수 있도록 API를 제공하는 어댑터이다. 두 모듈이 제대로 실..