발생일: 2011.09.18 문제: 유닉스에서 파일 권한(permission 또는 mode) 변경하는 방법에 대해 알아보자. 해결책: 일단 현재 파일의 상태가 어떤 지 알아보기 위해 조회해본다. ls -l ("Long format" 으로 조회) 목록 중 가장 왼쪽의 컬럼이 현재 파일에 대한 권한(file mode) 정보를 나타내는 것이다. -rwxr-xr-- 위 문자열은 각각 아래를 의미한다. - rwx rwx rwx 파일타입 user 권한 group 권한 other 권한 파일 타입(file type)에는 아래와 같은 종류가 있다. (여기서는 - 와 d 만 알고 있어도 충분하다.) - : plain file. 일반 파일. 실행 파일도 포함한다. d : directory. 디렉토리 형식. l : link...
발생일: 2011.09.16 문제: 맥에서 루비를 돌려보려고 하는데 버전 업데이트부터 막힌다. 터미널에서 이것 저것 설정해야 하는데, 맥 터미널이 아직 익숙치가 않다. 맥은 표준 유닉스 기반이라는데, 일단 디렉토리 구조가 어떻게 생겼는지 알아봐야겠다. 해결책: 아래는 유닉스 계열의 파일 시스템의 계층 구조 중 중요한 것 몇 가지를 정리한 것이다. / "root". 루트 디렉토리 /bin "binary"의 약자. 유닉스에서 실행 가능하게 컴파일 된 바이너리 실행 파일. /dev "device". 하드웨어 디바이스 관련 파일. /etc "etcetera". 설정 파일이 저장되는 장소. '기타'라는 의미가 적당하지 않아 혹자들은 "editable text configuration"의 약자로 의미. /home ..
발생일: 2011.09.15 문제: 뒷 자리 과장님에게 맥에서 에디터는 뭘 쓰냐고 여쭤봤더니 맥빔(MacVim)을 쓴다고 하신다. '빔'이라는데, 이게 뭐지? vi 의 확장판인가? 해결책: VIM은 vi를 확장한 유닉스 문서 편집기라고 한다. (위키: http://ko.wikipedia.org/wiki/Vim) MacVim은 맥용 vim 에디터이다. (http://code.google.com/p/macvim/) 사용하고 있는 OS에 맞는 스냅샷을 다운로드 받은 후, - MacVim.app 은 애플리케이션 폴더로~ - mvim 쉘스크립트는 적당한 폴더로 옮긴 후, path를 설정해주면 된다. vi 에디터와 사용 방법은 비슷하고, 그 외에도 강력한 기능이 있다고 한다. (아직 경험은... -_-) 처음엔 좀..
발생일: 2011.09.15 문제: 아이폰으로 보고 있는 페이지의 패킷을 PC의 프록시 툴로 확인하고 싶다. 어떻게 하면 될까? 해결책: 아이폰이 PC의 프록시 툴을 통하도록 네트워크 설정을 해주면 된다. 요새는 웹디버깅 툴로 찰스(http://www.charlesproxy.com/)를 사용하고 있다. 피들러나 다른 툴을 사용하고 있다면 비슷한 방법으로 셋팅하면 되겠다. 1. PC에서 프록시 툴이 사용하고 있는 포트를 확인한다. - 찰스에서는 Proxy > Proxy Settings 에서 확인하면 된다. 2. 아이폰이 해당 프록시를 통하도록 설정한다. - 설정 > WiFi > 선택된 네트워크 > 하단의 HTTP 프록시 '수동' 선택 - 서버는 패킷을 확인할 PC의 IP를 입력한다. - 포트는 1번에서 확..
발생일: 2011.09.08 문제: 진행 중인 미니 프로젝트에서는, 캔버스에 드로잉하고 캔버스를 resize 하는 스펙이 있다. resize 할 때에는, 그려진 데이터는 (좌측 상단을 기준으로) 고정하고 캔버스만 늘리려고 한다. jquery를 이용해서 구현하고 있던 터라, 캔버스 엘리먼트를 담고 아래와 같이 크기를 변경했다. $("canvas").width(w).height(h); 캔버스 크기만 변경되길 기대했는데, 그려진 픽셀까지 함께 확대가 된다. 왜 그럴까? 해결책: 캔버스의 실질적인 크기는 canvas 태그의 속성으로 설정해야 한다. (속성을 정의하지 않을 경우 기본으로 300, 150 크기를 가진다) 만약 css 속성으로 캔버스 사이즈를 변경할 경우엔, 속성에 기재된 값과 css 속성값의 비율에..
발생일: 2011.09.07 문제: 게시판과 같은 목록을 Ajax로 가져와 출력할 때엔 간단할 것 같으면서도 주의할 것이 몇 가지 있다. 특히 여러 엘리먼트가 맞물려 있을 경우엔 코드가 꼬이는 경우가 더러 있기도 하다. 이런 경우 대체로 목록을 요청하기 위해 여러 옵션이 필요하고, 서버에서 응답을 받았을 때에도 처리해야 할 엘리먼트가 많다. 특히, 결과가 없을 경우나 에러가 발생했을 때까지 포함하여 처리할 때엔 코드가 더 복잡해지곤 한다. 목록 요청 처리 과정을 좀 깔끔하게 디자인할 순 없을까? 해결책: Ajax로 목록을 요청해 응답을 받고, 받은 데이터로 목록을 출력한다고 했을 때 고려해 볼 만한 것들은 아래와 같다. 1. 요청 시 파라미터를 어떻게 구성하는가? 2. 응답이 왔을 때엔 어떻게 되는가? ..
발생일: 2011.09.06 문제: 스크립트를 로드하기 위해 서버에서 직접 JSON 형태의 데이터를 페이지에 찍는 경우가 많다. 헌데, 종종 서버 데이터에 따옴표 등이 포함되어 있어 스크립트 오류가 나곤 한다. 또한, 전달받은 데이터가 HTML을 구성하기 위한 용도일 경우엔 모듈마다 태그 처리 방법이 달라 원하지 않는 결과가 나올 때도 있다. 이런 상황이 발생할 걸 예측하고 있지만, (헷갈리다보니) 매번 케이스 바이 케이스로 처리할 때가 많다. 애초부터 좀 일관되게 처리하면 좋지 않을까? 해결책: 예를 들어, 아래와 같은 데이터를 서버에서 출력했다고 가정해보자. var serverData = { title: "울랄라 나는 "제목"이다.", // 따옴표 때문에 오류가 발생한다. content: "본문도 중..
발생일: 2011.08.22 문제: 가벼운 팀 프로젝트로, 웹소켓과 캔버스를 이용해 동시에 그림을 그릴 수 있는 그림판 같은 걸 만들어보고 있다. 중간에 접속한 유저가 기존에 그려진 데이터를 뿅~ 받아볼 수 있는 동기화 기능이 필요했다. 이미 그려진 캔버스를 복사하려면 어떻게 하지? 해결책: 아래와 같은 순서로 처리하면 된다. 1. base64로 인코딩 된 데이터를 가져온다. 2. 이미지 객체를 만들어서, 이미지 문자열을 src에 할당한다. 3. 이미지 로드가 완료되면 로드된 이미지로 캔버스를 그린다. 이미지 로드가 완료되기 전 복사를 시도하면, 빈 이미지로 캔버스를 그리는 것과 같게 되기 때문에 아무 일도 일어나지 않으니 주의한다. 샘플 코드: // 이미지 데이터를 가져온다. var imageData ..
발생일: 2011.08.05 문제: iCloud의 귀여운 쿠키 불가 메세지를 보다가, 문득 쿠키 가능 여부를 체크하는 방법이 궁금해졌다. 자바스크립트에서 쿠키 여부를 직접적으로 확인할 수 있는 메서드가 있을까? 해결책: 쿠키 가능 여부를 직접적으로 확인할 수 있는 API는 없다고 한다. 편법으로, 테스트용 쿠키를 썼다가 읽는 방법으로 확인할 수 있다. (물론 테스트용으로 작성한 쿠키는 읽은 후에 바로 삭제한다) 서버사이드에서는 테스트를 위한 쿠키를 담은 응답을 보내고 확인해보는 방식으로 가능 여부를 알아낼 수 있다. * 참고: http://stackoverflow.com/questions/531393/how-to-detect-if-cookies-are-disabled-is-it-possible