2015년 12월 23일 수요일

HP 6715b Windows Vista 재설치

HP 6715b 노트북에는 Windows Vista가 설치되어 있는데, 몇년 사용하고서 부팅에 문제가 생겼다. 디스크 드라이브나 마더보드에 하드웨어적인 고장이 있을 것으로 생각하고 한동안 내버려두었는데, 얼마 전에 꺼내서 살펴보다가 BIOS에서 제공하는 검사(?) 기능을 사용해서 초기화 후 부트에 성공했다.

죽어있던 시스템을 부활시키기는 했지만, 실제로 사용하기 위해서 좀 더 손질이 필요했다. 그런데, 그 과정이 너무나 험난하다.

Windows Vista에는 인터넷 익스플로러 7이 포함되어 있다. 2015년 12월 현재, IE7에서 마이크로소프트 웹사이트에 접속하면 IE를 업그레이드하라는 페이지로 이동시키기 때문에, 원하는 페이지를 읽을 수 없다. 심지어는 IE9를 다운로드하기 위한 조건인 서비스팩2를 갖추는 데에 문제가 있어 SP의 오프라인 인스톨러를 구하려고 해도, IE로는 원하는 페이지를 볼 수 없다. 이런 식이다. 그밖에도 많은 함정이 있어서 사람을 괴롭힌다.

다음의 순서대로 밟아가는 것이 아마도 최선일 것이다... 라고 생각했지만,
  1. 복구 파티션을 사용하여 공장 초기화
  2. 노트북 제조사의 최신 칩셋 드라이버를 다운로드하여 설치
  3. 크롬 브라우저 설치
  4. KB947821 오프라인 인스톨러 다운로드 및 설치
  5. Windows Vista SP1 (KB936330) 오프라인 인스톨러 다운로드 및 설치
  6. Windows Vista SP2 (KB948465) 오프라인 인스톨러 다운로드 및 설치
  7. Internet Explorer 9 오프라인 인스톨러 다운로드 및 설치
  8. Microsoft Security Essentials 다운로드 및 설치
  9. 그밖의 애플리케이션 설치
IE9는 설치 도중에 실패하더니 메뉴가 영어로 나오고, CPU 점유율은 100%에서 떨어질 줄을 모른다. 1번부터 다시.
  1. 복구 파티션을 사용하여 공장 초기화
  2. 노트북 제조사의 최신 칩셋 드라이버를 다운로드하여 설치(생략)
  3. 크롬 브라우저 설치
  4. KB947821 오프라인 인스톨러 다운로드 및 설치(실패)
  5. Windows Vista SP1 (KB936330) 오프라인 인스톨러 다운로드 및 설치
  6. Windows Vista SP2 (KB948465) 오프라인 인스톨러 다운로드 및 설치
  7. Internet Explorer 9 오프라인 인스톨러 다운로드 및 설치
  8. Microsoft Security Essentials 다운로드 및 설치
  9. 그밖의 애플리케이션 설치
결국에는 Windows Vista SP1 + Internet Explorer 7 + 크롬 브라우저를 사용하는 것으로 마무리.


덧붙임


2016년 10월 현재 Windows Vista SP2 + Internet Explorer 9 + 크롬 브라우저를 사용 중이고, CPU 점유 문제를 해결했다.

2015년 11월 21일 토요일

Raspbian 미러

Raspberry Pi의 공식 운영체제인 Raspbian은 Linux 배포본 중 Debian을 기초로 만들어진 것이다. Raspbian의 패키지를 업그레이드하기 위해서는 다음의 명령을 사용한다.
sudo apt-get update
sudo apt-get upgrade

위의 명령을 실행하면 http://mirrordirector.raspbian.org/raspbian/를 거쳐 미러 사이트에서 패키지를 다운로드하도록 되어있는데, 이때 raspbian.org 사이트에서 응답하지 않으면 미러를 찾지 못해서 오류가 발생한다. 자주 일어나지는 않을 것 같은 일을 겪었다.

http://www.raspbian.org/RaspbianMirrors 페이지에서 미러 사이트를 확인하고 싶었지만 사이트 전체가 먹통이라 확인할 수가 없었다. 다행히 인터넷 아카이브를 이용해서 미러 목록을 확인할 수 있었다.

https://web.archive.org/web/20150905134220/http://www.raspbian.org/RaspbianMirrors

한국에서는 KAIST네오위즈 등에서 미러를 운영하고 있는 것을 목록에서 확인할 수 있다.

root 권한으로 /etc/apt/sources.list의 첫 행을 다음과 편집하여 문제를 해결했다. (사용하는 릴리스에 따라 wheezy는 jessie 등으로 변경)

#deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb http://ftp.kaist.ac.kr/raspbian/raspbian/ wheezy main contrib non-free rip


참조


2015년 11월 13일 금요일

맥북의 크롬 브라우저 인증서와 OTP를 이용한 인터넷 뱅킹

얼마 전에 은행 송금을 할 일이 있었는데, 보안 카드를 갖고있지 않았다. 인터넷 뱅킹과 모바일 뱅킹에 익숙해지다보면, 은행 창구나 자동화기기를 이용하는 방법도 있다는 것조차 잊어버릴 때가 있고, 생각이 나더라도 귀찮고 불편하게 느껴진다.

마침  OTP 발생기를 발급 받으려고 마음먹고 있던 참이라, 은행에 방문하기로 했다. 보안 카드의 보안이 취약하다는 경고는 계속 무시하고 있었지만, 얼마 전에 구입한 맥북에서 인터넷 뱅킹을 하기 위해서는 크롬 브라우저와 OTP가 반드시 필요하기 때문이다.

안드로이드 폰 사용자는 스마트 OTP를 이용할 수도 있지만, 나는 아이폰을 쓰고 있기 때문에 OTP를 신청했다. 5천원의 수수료를 내면 그 자리에서 받은 즉시 사용할 수 있으며, 기존의 보안 카드는 사용할 수 없다.

OTP를 직접 사용해보니 보안 카드를 뒤적일 필요가 없고, 번호를 잘못 입력하는 실수도 줄고, 은행에서 걸려오는 확인 전화를 받아서 번호를 입력하는 절차를 거치지 않게 되어 여러 모로 편리하다. 하지만 지갑에 넣을 수 없고, 배터리의 수명이 다하는 등의 고장이 발생하면 은행 창구에 다시 방문해야하는 것은 불편할 수 있겠다.

다음은 Mac의 크롬 브라우저에서 은행 계좌 이체를 하기 위한 준비 및 이제 과정을 정리한 것이다. 1, 2번은 OTP가 없어도 가능하다.

1. Windows에서 인증서 내보내기:
IE에서 은행 홈페이지 열기 → 공인인증센터 → 인증서 관리 → 내보내기 "pfx" 파일로 저장

2. Mac의 크롬에 인증서 저장:
인증서 파일을 Mac으로 복사 → 크롬 브라우저 설치 및 실행 → 은행 홈페이지 주소 열기 → <로그인> 버튼 클릭 → <브라우저 인증서 로그인> 버튼 클릭 → 인증서 찾기 → 파일 선택 → 인증서 암호 입력 (여기까지 했으면 계좌 조회는 할 수 있다)

3. 브라우저 인증서와 OTP를 이용한 은행 계좌 이체:
크롬 브라우저 실행 → 은행 홈페이지 주소 열기 → <로그인> 버튼 클릭 → <브라우저 인증서 로그인> 버튼 클릭 → 인증서 선택 → 인증서 암호 입력 → 계좌이체(계좌 비밀번호를 포함한 출금 계좌 정보와 입금 계좌 정보 입력) → OTP(일회용 비밀번호) 입력 → 인증서 암호 입력


2015년 11월 9일 월요일

USB 드라이브의 RAW 파티션을 FAT32로 되돌리기

Raspberry Pi에서 OpenELEC 운영 체제를 시험해보았다. Raspbian wheezy는 4 GB의 SD 카드가 필요했지만 OpenELEC은 1 GB만으로도 셋업에 문제가 없었다.

Pi의 하드웨어가 과연 블루레이 영상을 부드럽게 재생할 수 있는지 테스트해볼 겸, 놀리고 있는 8 GB 짜리 USB 플래시 드라이브를 이용해서 멀티미디어 저장 공간을 확보해두면 좋겠다는 생각이 들었다. (고용량 SD 카드를 구입하자니 돈이 아깝고, 갖고 있는 외장형 3.5인치 HDD를 쓰기에는 전류가 부족해서 별도의 전원을 사용하는 USB 허브를 사용해야하는 불편이 있다)

그런데 그 USB 드라이브는 예전에 구형 노트북에 Lubuntu를 설치하기 위해 Live USB로 만들어놓은 것이었다. 그래서 파티션을 조정과 포맷을 거쳐, 다시 쓸 수 있게 만들었다.

그런데, 좀 이상한 일이 일어났다. USB 드라이브가 Windows나 Raspbian에서 마운트했을 때에는 새로운 파티션과 포맷이 적용되어 있지만, OpenELEC에서 마운트했을 때에는 라벨도 파일 내용도 예전의 Live USB의 내용으로 보이는 것이었다.

이런저런 삽질을 거쳐, 결국 Windows 컴퓨터에 HP USB Disk Storage Format Tool을 설치하고 실행하여 깔끔히 해결했다.

참조: http://answers.microsoft.com/en-us/windows/forum/windows_7-hardware/how-to-format-a-raw-file-system-pen-drive-to-fat32/2666a777-13f2-42ec-ab73-a1dbfa11b802?auth=1





2015년 11월 7일 토요일

Raspberry Pi 유선 LAN 고정 IP 설정

Raspberry Pi 문서를 번역하면서, Model B를 구해서 사용해보고 있다.

Raspbian을 설치하면 기본적으로 DHCP 클라이언트가 동작해서 유동(dynamic) IP를 갖는데, 다른 시스템으로부터 SSH 접속을 위해 고정(static) IP를 사용하고자 하였다.

일반적으로 소개되는 고정 IP 설정 방법은 /etc/network/interfaces에서 eth0(유선 LAN 포트)를 manual에서 static으로 변경하는 것이다. 그런데, 이 방법대로 하면 eth0가 고정 IP와 유동 IP를 둘 다 갖게 된다. 그렇게 사용해도 큰 문제는 없지만, 나는 고정 IP 하나만 사용하도록 하고 싶었다.

그래서 interfaces 파일은 원래대로 되돌리고,  /etc/dhcpcd.conf의 마지막에 다음과 같은 항목을 추가하는 방법으로 설정했다.
interface eth0
static ip_address=192.168.2.101
static routers=192.168.2.1
static domain_name_servers=192.168.2.1
static domain_search =
변경사항을 적용하려면 시스템을 리부트해도 되고, 다음의 명령으로 dhcpcd가 eth0에 대하여 변경된 설정을 적용하도록 할 수도 있다.
sudo dhcpcd -n eth0

참고:






2015년 10월 24일 토요일

라즈베리 파이 공식 문서 번역

쓰다만 Linux 교과서의 원고를 어떻게 살려볼 방법이 없을까 궁리해보았지만, 채우거나 빼고 다듬어야 할 일이 너무 많아보이는데다가 시간도 흘러버려서 계속 버려두기로 했다. 그러던 중에 라즈베리 파이의 공식 문서를 아무도 번역하지 않는 것 같기에 한번 해볼까하는 생각이 들었다.

내게는 가장 편안한 플랫폼이 위키독스이다. 이번에는 Omega T를 사용하지 않고, Github에서 fork도 하지 않은 채로, 위키독스에만 의지하여 작업을 해볼까한다. 끝까지 갈 수 있을지는 미지수.

Raspberry Pi 문서

번역을 하면서 Raspberry Pi에 NOOBS라는 것이 새로 생긴 것을 알게 되었다.

러시아로부터의 트래픽

오랜만에 blogger에서 통계를 보니 피겨와 IT 블로그의 주간(週間) 독자 수가 한국과 러시아에서 같은 숫자로 나타난다. 피겨 블로그는 영어로 쓰기 시작했으므로 영어권에서 읽을 것이라는 예상이 빗나간 것은 그렇다 치고, IT 블로그는 한글로 쓰는데 러시아에 독자가 있다니 의아하다.

구글에서 'blog russia traffic'이라는 키워드로 검색해보면 스팸에 관련된 이야기가 많다. 내 경우는 스팸 리퍼러에 해당하지는 않는 것 같다. 트래픽 소스에 특이한 사이트가 나타나지 않기 때문이다. 또 다른 가능성으로는, 광고성 댓글을 다는 프로그램이 방문했을 수 있다. 댓글을 달기 위해서는 OpenID 등으로 로그인하고 보안문자도 넣도록 설정했기 때문에 그 단계에서 스팸이 걸러졌을 수 있다.

2015년 10월 19일 월요일

Windows 10 페북 앱 설치, 크롬에서 IE로

주 PC로 사용하는 노트북의 윈도우를 7에서 10으로 업그레이드한 지 시간이 좀 흘렀다. <업데이트 기록 보기>에는 지난 8월에 설치한 것으로 나온다.

디스플레이 색 보정


오늘은 노트북의 화면과 책상의 모니터 사이의 색상 차이를 줄이기 위해 조정을 했다. 모니터를 초기화한 상태에서, 윈도우의 <디스플레이 색 보정> 기능을 이용했다. 각각의 화면에서 조정을 마친 후 두 화면을 함께 보았더니 여전히 색감이 달라서, 크롬 창을 이리저리 옮겨가면서 두 화면이 거의 비슷한 색을 나타낼 때까지 조정하느라 시간이 좀 걸렸다.


페이스북 앱


지금까지는 페이스북을 크롬 브라우저에서 이용해왔는데, 윈도우의 <스토어>에 페이스북 앱이 있기에 설치해보았다. 메뉴가 영어로 표시되고, 링크는 기본 브라우저인 <에지>를 열어서 보여준다.


크롬에서 IE로


요즘 크롬 브라우저가 어쩐지 불편하게 느껴지던 차에 작업 표시줄에서 크롬을 제거했다. 앞으로 윈도우에서는 인터넷 익스플로러 11을 주로 사용해볼까하는 생각이 든다. 단, 윈도우에 설정된 기본 브라우저는 그대로 <에지>로 둔 채로.


캘린더


윈도우 10의 기본 캘린더를 사용해볼까하고 iCloud 계정을 설정해보았는데, 일정이 30분 씩 밀린다. 같은 증상으로 마이크로소프트에 문의한 내용이 있어 살펴보니, 자기들은 어찌할 수 없고 애플에서 해결해줘야 한다는 답변. 한참을 더 씨름하며 다른 대안(구글 캘린더를 다시 사용한다든지)도 궁리해보다가 내린 결론은 지금까지와 마찬가지로 아이폰과 맥에서는 iCalendar를 기본으로 사용하고, 윈도우 PC에서는 에지 브라우저에서 icloud.com에 접속하여 캘린더를 사용하는 것이다(윈도우 10의 캘린더보다 UI도 더 편리하다).

2015년 10월 9일 금요일

윈도 10 + 크롬에서 한자 깨짐

현상


윈도우 10 + 크롬 환경에서 한자가 네모로 표시되어 기사(예: http://news.donga.com/Inter/3/all/20151008/74060822/1의 본문)를 읽을 때 거슬린다.


원인


윈도우의 DirectWrite를 크롬에서 사용할 때에 문제가 있는 것으로 보인다.


해결


다음의 방법 중 하나를 선택할 수 있다.


1. 다른 브라우저 사용


해당 사이트를 반드시 크롬에서 볼 필요가 없다면 인터넷 익스플로러나 엣지를 사용할 수 있다.


2. CSS 덮어쓰기


StyleBot은 웹사이트의 CSS의 일부를 사용자가 원하는 속성으로 편집할 수 있는 크롬 앱으로서, 설정값이 저장되므로 사이트에 방문할 때마다 편집할 필요가 없다.

1) StyleBot을 설치한다.
2) 방문한 사이트 주소 표시줄 옆의 앱 아이콘을 클릭하고 Open Stylebot ...을 선택
3) 화살표 모양의 버튼을 누르고, 웹사이트에서 원하는 부분(div)을 선택
4) Font Family를 Helvetica 등으로 지정

이 방법으로 기사 본문의 한자가 깨지는 현상을 피할 수 있다.


3. DirectWrite 끄기


페이스북에 링크를 공유하면 미리보기가 나타나는데, 이곳에 한자가 포함되어 있을 경우에는 CSS 오버라이드로도 되살릴 수 없다. 이를 해결하려면 주소창에 chrome://flags를 입력하고 DirectWrite를 사용하지 않도록 설정한다. (http://qq1234.tistory.com/25 참조)

2015년 10월 1일 목요일

스탠포드 Swift 강좌 팁

iTunes U에서 제공하는 스탠포드 대학의 Developing iOS 8 Apps with Swift 강좌를 듣고있다.

2강 예제 컴파일 오류


2강의 계산기 예제에는 다음과 같이 제곱근 계산을 위한 메서드가 있다.

    func performOperation(operation: Double -> Double) {
        if operandStack.count >= 1 {
            displayValue = operation(operandStack.removeLast())
            enter()
        }
    }

이 부분에서 다음과 같은 컴파일러 오류가 발생한다.
Method 'performOperation' with Objective-C selector 'performOperation:' conflicts with previous declaration with the same Objective-C selector

이유는 Swift 1.2에서 오버로딩에 대한 규칙이 엄격해졌기 때문이라고 하며, 다음과 같이 private을 붙여서 해결할 수 있다.

    private func performOperation(operation: Double -> Double) {
        if operandStack.count >= 1 {
            displayValue = operation(operandStack.removeLast())
            enter()
        }
    }


자세한 설명은 다음을 참조. http://stackoverflow.com/a/29670644/309046

프로젝트 1


파이(π)를 계산하는 버튼을 만들어야 하는데, XCode에서 해당 기호를 입력하려면 단축키 option + p를 사용한다.

2015년 7월 30일 목요일

Python 종강

뜻하지 않게 학교에서 Python을 강의할 기회가 주어져서 강의 자료를 만들고 수업을 하며 한 달 여를 보냈다. 정규 과목에는 Python이 없지만 방학 특강을 통해 학생들에게 소개하고자 수업을 구상하고 강사를 찾던 학부장님과 출판사를 통해 이어진 것이다.

잘 해낼 수 있을지 걱정이 되었지만 흔치 않은 기회를 놓치고 싶지 않았기에 덤벼들었다. 덕분에 수업 준비에 많은 시간을 쏟았고, 그 와중에 꼭 필요하지도 않은 맥북을 구입하고 스타벅스에서도 돈을 많이 썼다. 내가 알고 있는 것을 다른 사람에게 설명하고 글로 풀어내는 것과는 또 다른 것이 바로 수업자료 만들기였다.

준비가 된 상태에서 수업에 임하는 것은 힘들지 않고 재미있고 보람 있었다. 학생들 앞에서 떨지나 않을까 걱정도 했지만, 전혀 그렇지 않았다. 하지만 제대로 공부하지 않고 섣부르거나 잘못된 말을 했을 때 학생들이 나를 어떻게 생각할 지에 대해선 신경이 쓰였고, 정신을 차리게 하는 채찍 역할을 했다.

강의 자료를 처음엔 종이에 출력했다가 슬라이드셰어에 올려서 공유하는 것으로 바꾸었다. 종이도 아끼고 편리하지만, 불특정 다수의 리뷰를 받는 셈이라 어설픈 내용으로 나쁜 이미지를 얻지 않기 위해 신경을 더 써야했다. 그리고 나눔고딕코딩 글꼴로 작성한 부분이 슬라이드셰어에서는 다른 폰트로 대체되어버리기 때문에 추가적인 손질이 필요했다.

http://slideshare.net/sk8erchoi/

2015년 7월 20일 월요일

Python 강의

전에 책을 내었던 출판사를 통해 한 전문대학과 인연이 되어 방학 동안의 특강을 맡게 되었다. 2주 동안 Python에 대한 수업을 하는데, 그 중에서 1주일은 학교 교수님이, 나머지 1주일은 내가 수업을 하기로 했다. 지난 주에 개강을 했고, 모레부터는 내 차례이다.

내 책을 교재로 채택하기는 했지만 수업을 위한 슬라이드는 책을 요약하지 않고 인터넷의 자료를 찾아가면서 완전히 새로 만들었다. 지난 한 달 동안 많은 시간을 들였다(덕분에 스타벅스의 매상도 약간 올라갔을 것이다). 직장을 다니고 있었다면 그만큼 시간을 투자하기가 쉽지 않았을 것이다.

수업 시간만 따지면 벌이가 나쁘지 않지만, 준비에 몇 배의 시간이 들어갔다. 겉보기에 그럴 듯해 보이는 일이라 해도, 실속이 없을 수 있겠다는 생각이 들었다. 그렇기는 해도 이참에 Python의 요즘 흐름을 따라잡고 자료도 만들었으니, 나로서는 그리 손해는 아니다. 오히려 학교에서 강의를 하는 특별한 경험을 할 수 있다는 것만으로 감사한다.

강의 개설과 폐강의 기준이 되는 인원수를 아슬아슬하게 오가고 있어서 폐강을 고려할 정도의 상황이지만 다행히 내 차례가 없어지지는 않았다.

수업을 듣는 학생들 스스로는 아직 잘 모를 수도 있겠지만, 이번에 배우는 것들이 그들의 커리어에 있어서 큰 도움이 될 수도 있을 것이다. 강의를 개설한 학교와 교수님, 나는 그들을 물가에 데려다주는 역할을 하는 것이고, 그 후에 일어나는 일은 학생들의 몫이다.

오늘은 슬라이드의 분량이 부족하다는 피드백이 있었다. 한 시간에 30 페이지 정도 나간다고. 수업 리허설도 해보고 싶었지만 슬라이드 쓰기도 벅찬 현실. 첫술에 배부르랴.

2015년 7월 18일 토요일

아이폰 5 강제 재시작

iPhone 5를 쓴 지 2년이 넘었다. 오늘은 운동을 하고 폰을 보니 화면이 들어오지 않는다. 전원 버튼을 눌러도 답이 없다. 배터리는 충분했는데도.

애플 매장에 들러서 아이패드 미니 2와 3를 번갈아 구경하면서, 충전 케이블을 폰에 연결해보았지만 역시 켜지지 않는다. AS가 필요한 것 같다는 생각이 들어, 매장 직원에게 "폰 점검이 가능하냐"고 물었다. 그랬더니 직원은 증상이 어떤지 반문하고는 바로 해결해주었다.

홈 버튼과 전원 버튼을 함께 10초 정도 누르면 강제로 재시작이 된다고. 하나 배웠다.

2015년 7월 17일 금요일

맥에서 zsh 사용

Mac의 터미널은 bash를 기본으로 설정되어 있다. Jython 2.7.0 설치 경로를 PATH에 등록하려다가, Mac에는 다른 셸들도 들어있다는 것을 알게되어 zsh을 사용해보기로 했다.

기본 설치된 zsh의 버전이 낮아서 따로 설치했다는 글도 보였지만, 내 맥북에는 그보다 더 높은 버전이 설치되어 있다. 특별한 이유가 없다면 시스템에 포함된 셸을 쓰는 것이 좋으며, OS 업데이트만으로 충분하다는 것이 내 생각이다.

% zsh --version
zsh 5.0.5 (x86_64-apple-darwin14.0)

터미널의 기본 셸은 환경 설정에서 변경할 수 있다.

zsh 매뉴얼은
man zsh
또는 다음을 참조. http://linux.die.net/man/1/zshall

2015년 7월 15일 수요일

맥북 12인치 구입

iPad 1세대와 iPhone 5에 이어, 이번에 12인치 맥북을 구입했다.

기존의 IBM 노트북은 집에서 메인으로 쓰고, 맥북은 항상 갖고 다니면서 토막 시간이 날 때 카페에서 쓸 생각으로 샀다. 하지만 집에서도 자꾸 손이 간다.

맥은 처음이라 키보드 배열과 단축키 등이 익숙하지 않다. 조금씩 익혀나갈 생각이다.

좋은 점

  • 작고 예쁘다.
  • 11인치 맥북 에어보다도 더 가볍다. 가방에 늘 스케이트를 넣어다니는 내게는 무게가 중요한 요소.
  • 배터리가 오래 가므로 충전 케이블을 들고 다니지 않게 되었다.
  • 시스템 시작과 종료에 시간을 낭비하지 않는다.
  • 레티나 디스플레이의 높은 해상도에서 얻어지는 높은 선예도.
  • 터치 패드의 품질이 월등하다. 두 손가락 스크롤이 아주 편리하다. 터치 패드에 포스 터치가 적용되어, 적은 힘으로, 모든 위치에서 동일한 힘으로 눌러지는 점이 마음에 든다.
  • 애플 제품끼리 자연스럽게 연동된다. 심지어 iPhone 번들 이어폰으로 볼륨 조절도 된다.
    • 캘린더와 주소록 프로그램이 탑재되어, 웹 브라우저를 사용하여 icloud.com에 접속할 필요가 없어졌다. UI가 비슷하지만 웹 버전에 비해 UX가 더 좋다.
    • iPhone으로 온 문자 메시지를 맥북에서 볼 수 있어,  작업 도중에 맥북에서 눈을 돌려 확인할 필요가 없다.

사용하거나 검토 중인 프로그램

  • Dropbox: Windows, 폰과 태블릿을 이어주던 Dropbox가 Mac까지 맡아주니 연간 요금이 아깝지 않다. N 드라이브나 One Drive는 별로 사용하지 않는다.
  • 오피스 365: 매월 요금을 내고 구독 중이라, 추가 비용 없이 설치했다. Mac 용의 오피스 2016이 설치되었다. 파일이 Dropbox를 통해 동기화되므로, 집에서 작업하던 파일을 밖에 나가서는 맥에서 작업하고, 집에 돌아오면 또 작업을 계속할 수 있다. 물 흐르듯 이어지니 효율이 높다. 
  • 캘린더, 주소록, 메시지 등 기본 프로그램
  • 카카오톡: 일단 설치해보았는데, 자주 쓰지는 않을 것 같다.
  • 페러렐스: 맥북 구입 전에는 꼭 필요할 것만 같았지만, 아직까지는 필요를 못 느끼고 있다.
  •  bluestacks: 안드로이드만 지원하는 앱을 사용할 일이 있을 때를 위해 설치해보았는데, 곧 지우게될 것 같다.
  • 바쁜 일이 지나가면 번역 프로그램인 OmegaT를 사용할 생각이다.

한계, 불편한 점

  • 윈도우 PC와 iPhone에서 사용하고 있는 클머니 가계부 앱은 맥을 지원하지 않고, 앞으로도 지원할 계획이 없다고 한다. 그래서 bluestacks에서 안드로이드용 클머니 앱을 설치해보았는데, iPad 에디션처럼 태블릿 화면에 맞춘 UI가 아니라 조그맣고 조악한 화면이 보이길래 환불해버렸다. 아름다운 하드웨어와 소프트웨어 사이에 끼인 에뮬레이터란 얼마나 보기 싫은 존재인지.
  • 요즘은 성가신 ActiveX를 피하기 위해, 쇼핑몰 웹사이트에서는 장바구니에 넣어두고 결제는 폰으로 처리한다는 사람들이 있다. 그 점에 착안해서 은행 앱을 bluestacks 내에서 설치해보려고 했지만, 루팅 폰은 설치 불가라는 메시지가 나타나며 실패.
  • 메인 PC는 따로 있어야 한다. 특히 한국의 환경에서는 Windows가 필요.
  • Command 키에 아직 익숙하지 않아서인지 한/영 전환이 불편하다. 오른쪽 Command 키가 한/영 키 역할을 하도록 매핑하는 사람도 있던데,  별로 내키지 않는다.
  • 켄싱턴 락을 물릴 곳이 없다. 화장실 갈 때에도 들고 다녀야겠다고 생각하지만, 그렇게 하기보다는 짐을 정리해서 나오게 된다. 가방은 더 가벼워져서 좋다.
  • 맥북에는 포트가 USB-C 한 개 밖에 없다. 이 점 때문에 맥북 에어와의 사이에서 고민을 했지만, 없으면 없는대로 쓰면 될 일이다. 포트를 확장하는 어댑터도 사지 않았다. 아이폰을 충전할 수 없다는 아쉬움이 있지만 요즘은 전화가 꺼져도 그리 문제되지 않는다.

2015년 7월 14일 화요일

해킹 프로그램 도입

이 글에 국가 기관의 선거 개입과 민간인 사찰을 옹호하려는 목적은 없음을 밝혀둔다.

국정원으로 추정되는 모처에서 해킹 프로그램을 구입한 정황으로 인해 들썩이고 있다. 다른 군부대와 경찰도 구입을 고려한 것으로 보인다.
http://m.ohmynews.com/NWS_Web/Mobile/at_pg.aspx?CNTN_CD=A0002127086#cb

물론 내국인을 대상으로 법적 절차를 무시한 채 자행하는 해킹은 잘못된 것이다. 하지만 군부대가 군사 목적으로 해킹하는 것은 다른 문제다.

해킹은 무조건 범죄일까. 살인이 범죄인지 생각해보면, 군인과 경찰이 올바른 명령에 따라 저지른 살인에는 죄를 묻지 않는다. 해킹도 군사작전일 수 있고 이때 작전에 필요한 무기는 바로 해킹 프로그램이다.

역지사지로 외국의 어느 부대에서 한국인을 대상으로 해킹과 도감청 작전을 수행한다면 섬뜩하겠지만, 그것이 한국의 부대에서 해킹을 하지 말아야할 이유는 되지 않는다. 공격과 방어는 따로 생각할 수 없고, 국민을 보호하기 위해 군경은 무기를 갖출 필요가 있다.

숨어서 몰래 들여올 일이 아니라 전투기 도입과 같이 드러내놓고 추진해야 할 일이다. 몰래 구입해서 사용해온 것은 뭔가 켕기는 일이 있거나, 혹은 국정원이 굳이 외부에 알릴 필요가 없다고 생각했기 때문일 것이다. 가능하면 드러내놓고 했으면 좋겠다. 국내 보안 업체에게 쓰잘데기 없는 액티브엑스 대신 고품질의 군사 무기를 개발할 기회도 주고 말이다.


2015년 7월 10일 금요일

네이버 블로그 방문자 급증

운영 중인 네이버 블로그의 방문자수가 6월 22일 376명으로 최고점을 찍은 이후 쭉 빠져서 7월 초 들어 10명 남짓으로 떨어졌다. 그러다가 7일 하루는 다시 269명으로 뛰었다.

방문 트렌드


시간대별 분포를 보니 7일 밤 10시에서 11시 사이에 258건이 들어왔다. 내가 마지막으로 글을 올린 것이 1일이니, 새로운 글로 인한 방문은 아닐 것이다. 지식in의 질문 몇 개에 답변을 한 것도 7일 새벽 5시경이므로 이 그래프를 설명하지 못한다.

시간대별 분포

또한 유입 URL도 딱 한 개.
http://section.blog.naver.com/sub/SearchBlog.nhn?type=post&option.keyword=1

유입 URL 분석

여러 모로 보아 정상적이지 않은 현상이다.

블로그 방문자수에 연연하는 것은 아니지만, 이상한 현상에 대해서 이해를 하고 싶어 검색을 해보고 잠정적으로 내린 결론은 다음과 같다.

내 블로그가 방문자수 통계를 부정한 방법으로 끌어올린 것처럼 보이게 해서, 부정 사용을 방지하려는 네이버 검색 알고리즘으로 하여금 검색 결과 순위가 떨어지도록 유도하기 위해 누군가가 고의로 저지른 범행이다. 흔히 하는 표현으로는, 네이버 검색 엔진에게 "저품질" 블로그로 낙인찍히게 할 목적의 "방문자수 테러"이다.

어떤 사람은 경찰청에 사이버 범죄로 신고를 하던데, 나도 그렇게 하는 것이 좋을지.

2015년 6월 22일 월요일

네이버 블로그에 분석 도구 적용 시도

운영 중인 네이버 블로그의 방문 행태에 대해, 기본 분석 도구인 스마트리포터만으로 얻을 수 있는 정보 외에 더 많은 것을 얻고자 조사와 실험을 해보았다. 아직 성공적인 시도는 없었다.


  1. Google 웹로그 분석 혹은 Google 애널리틱스는 자바 스크립트 추적 코드를 삽입해야 하는데, 네이버 블로그에서 이를 허용하지 않아서 사용할 수 없다.
  2. 그와 비슷한 서비스를 네이버에서도 네이버 애널리틱스라는 이름으로 제공하는데, 마찬가지로 네이버 블로그에는 적용할 수 없다.
  3. 오픈 소스로 눈을 돌려 Piwik이라는 제품을 찾았다. 그런데,
    • piwik은 PHP로 만들어져 있어, 무료 웹호스팅 계정에 쉽게 설치해서 사용할 수 있다.
    • 자바 스크립트 추적 코드를 사용할 수 없을 경우, HTML에 이미지 태그를 심는 방법으로 대체할 수 있다. 이미지 추적은 자바 스크립트에 비해 기능에 제한이 있다.
    • 그러나 네이버 블로그의 분석은 Piwik으로도 실패했는데, 그 이유는 아마도 게시물에 포함된 img 태그에 대해 네이버 블로그에서 자동으로 변경을 가하는 것과 관련이 있는 것 같다.
    • 위젯에 이미지 추척 코드를 심어보기도 했지만, 왠지 작동하지 않았다. 작동한다 치더라도, iframe에 갇혀 있는데다, 모바일 방문을 추적하는 데에는 어려움이 있을 것 같아서 그만두었다.

2015년 6월 19일 금요일

트래픽

버려두었던 네이버 블로그를 피겨 스케이팅 기술 관련으로 개편한 지 석 달 정도 되었다. 5월 한 달 간의 페이지뷰가 900이 채 안되니, 하루 평균 30번 정도 보여지는 셈이다. 그나마도 포스트가 뜸해져서 손님이 줄어드는 듯 했다.

그런데, 스포츠 지도사 실기와 구술 시험을 앞두고 관련 정보를 올렸더니, 요즘에는 그와 관련한 검색어를 통해서 들어오는 것이 검색 유입의 80% 가량, 전체 유입에 대해서는 50% 정도를 차지한다. 그러니까, 250 건의 포스트 중 단 한 건이 전체 트래픽의 절반을 끌고온다.

더 재미있는 사실은, 내가 올린 글은 피겨 스케이팅 종목에 국한된 정보이기 때문에, 수많은 운동 종목에 걸쳐있는 대다수 방문자들에게는 적합한 정보가 아닐 가능성이 아주 높다는 것이다. 그렇지만 내 입장에서는 방문자를 끌기 위해 꼼수를 쓴 것도 아니고, 블로그 주제에서 벗어나지도 않는다.

이것을 어떻게 받아들여야 할까. 별 것 아닌 해프닝일까, 혹은 발상의 전환을 요구하는 신호일까.

2015년 5월 23일 토요일

책상

작년에 모니터를 구입한 후로 책상 배치가 바뀌었다.

  • 모니터는 LG 제품으로, IBM 노트북과 미니 디스플레이포트를 통해 연결하여 가로 2560 픽셀 해상도에 맞춰서 사용한다. 모니터를 기본 디스플레이로 설정.
  • Lubuntu를 설치한 구형 HP 노트북은 거실로 옮겼다. 리눅스 책 집필을 관두었기 때문에 별로 필요가 없어져서, 가끔 CD를 리핑할 때에나 켜서 사용한다.
  • 아이패드 거치대 겸 키보드는 잘 사용하지 않아서 상자에 넣어두었다.
  • 음악 감상은 한동안 모니터 내장 스피커를 사용하다가, UE 메가붐 스피커를 구입한 이후로는 주로 아이패드와 페어링해서 듣는다. PC와 페어링하는 것은 어딘가 사용성이 매끄럽지 않기도 했고, 음악을 듣기만 할 때에는 왠지 PC의 아이튠즈를 사용하는 것보다 아이패드를 조작하는 것이 편리하게 느껴진다.
  • 사진 가운데의 JBL 스피커는 이제 잘 사용하지 않아서 박스에 넣어둔다. 충전을 위해 잠시 책상에 올라왔다.
  • MS 키보드의 숫자 키패드는 수은 전지의 수명이 다했는지 작동을 멈췄다. 평소에 거의 사용하지 않는지라 그다지 불편을 느끼지 않는다. 먼지 들어가지 말라고 엎어두었다.
  • 노트북에 유선 랜 연결을 하기 위해 거실에 있던 광모뎀을 방으로 옮겼다.
  • 6구 멀티탭을 책상 위에 두었다.





UE 메가붐 공장 초기화

운동할 때에 쓸, 소리가 큰 휴대용 블루투스 스피커가 필요해서 얼마 전에 UE Megaboom을 구입했다. 국내에서는 애플 온라인 스토어에서 유일하게 판매 중이다.

전반적으로 만족스럽지만 몇 가지 문제가 있긴 하다.

  • 가격이 비싸다.
  • PC에 블루투스로 연결하였을 때에 뭔가 매끄럽지 않았다. 자세한 증상은 잊음.
  • 음악을 재생할 때에 가끔 소리가 나지 않는다. 스피커의 문제인지 아니면 연결된 장치(아이패드) 쪽 문제인지는 잘 모르겠다. 음악을 정지했다가 다시 재생하면 다시 소리가 난다.

오늘 새로운 문제를 하나 발견했다. 다른 사람의 안드로이드 폰과 페어링해서 사용한 후에 집에 돌아와서 보니, 기존에 사용하던 내 iOS 장치들과 연결이 되지 않는 증상이다. 초기화를 해보면 어떨까 하는 생각이 들어서 인터넷 검색을 통해 로지텍 지원 포럼에서 초기화 방법을 찾아냈다. 주소는 다음과 같다.


http://forums.logitech.com/t5/Logitech-UE/UE-MEGABOOM-not-being-discovered-connecting-to-computer-with/td-p/1375429

초기화 방법은 알고 보면 간단하다. 볼륨 감소 버튼(-)과 전원 버튼을 동시에 10~12초 동안 누르면, 평소에 들리는 것과 조금 다른 신호음이 들린 후에 스피커가 꺼진다. 이제 다시 켜면 처음 샀을 때와 같은 상태가 되므로, 페어링하면 된다.

2015년 5월 19일 화요일

인터넷

TED


오랜만에 TED 자막 번역작업을 하려다가, 실수로 영어 자막을 만드는 작업을 시작하게 되었다. 그런 어처구니 없는 실수를 한 것은, TED의 번역 시스템이 2012년에 Dotsub에서 Amara로 이전하던 즈음부터 손을 놓고 있었기 때문이기도 하다. 물론 실수로 시작했다거나 힘이 부칠 때에는 클릭 한번으로 포기할 수 있지만, 한번 도전해보고 싶어졌다. 영어를 한국어로 번역은 몇 번 해보았어도 영어 자막을 만든 것은 처음이다. 다른 언어로 번역할 때 영어 자막을 원문으로 삼기 때문에 정확성에 대한 부담이 있어서 시간이 오래 걸렸고(Revision이 30을 넘었다) 그만큼 많은 공부도 되었다. 제출한 후에 뒤늦게 구글 문서위키로 작성된 가이드를 읽어보니 몇 가지 실수가 있었던 것도 알게 되었다.

작업한 것은 아마추어 로켓 제작자 Peter Madsen의 TEDxKyiv 발표 영상으로, 인명과 전문 용어를 올바로 쓰기 위해 Copenhagen Suborbital 웹사이트와 유튜브 채널, 그리고 다음과 같은 위키피디아 페이지들을 참고했다.


알아듣기 어려운 부분 중 몇 군데는 유튜브에서 자동으로 생성한 자막의 도움을 받기도 했다.

Internet과 internet


발표 내용 중에 인터넷에 대한 언급이 있어, 그 표기를 Internet으로 할 지, internet으로 할 지 생각하다가 인터넷 검색을 통해 위키피디아의 관련 항목을 찾았다.

https://en.wikipedia.org/wiki/Capitalization_of_%22Internet%22

결론은 Internet이다. Internet은 internet이지만, 그 반대는 성립하지 않는다. 자세한 내용은 위의 링크를 참조.

"The Internet makes this possible"


발표자는 아마추어 로켓 제작자로서 우여곡절을 겪으며 작업을 진행해왔다. 작은 부품 하나에서부터, 제작에 필요한 정보, 함께 할 사람들을 찾는 데에까지 인터넷을 활용하였고, 인터넷이 없었다면 이루지 못했을 것이라고 했다.


온라인 프라이버시


작업을 마친 후에 여운이 남았는지, 일거리를 하나 더 물었다. 유럽 입자 물리 연구소에 근무하던 중에 이메일 암호화를 간편하게 이용할 수 있는 ProtonMail을 개발한 Andy Yen의 발표 영상에 대한 한글 자막을 검수했다.

Peter Madsen이 인터넷을 통해 꿈을 이루어가는 희망적인 모습을 보여주었다면, Andy Yen은 인터넷 기업들의 수익 추구로 인해 개인의 프라이버시가 침해되는 것에 대한 경각심을 일깨웠다.


자산


좋든 싫든, 인터넷은 인류의 삶을 크게 바꿔놓았고 앞으로도 많은 변화가 있을 것 같다. 소수가 권력과 이익을 독점하도록 휘둘리지 않고, 모든 사람과 환경을 위해 선용되도록 다같이 노력해야할 소중한 자산이라는 생각을 해본다.

2015년 4월 7일 화요일

Dropbox 및 GitHub Pages에서 홈페이지 운영하기

현재 운영하고 있는 네이버 블로그와 같은 주제로 한국인 뿐 아니라 전세계 사람들에게 보여줄 웹사이트를 만들어보면 어떨까하는 생각을 하고 있다. 블로그보다는 일반적인 홈페이지 형태가 더 알맞을 것 같다.

홈페이지를 운영하기 위해 웹 호스팅이나 서버 호스팅을 이용하는 것이 일반적이지만, 정적(static) 홈페이지, 즉 HTML, CSS, javascript 만으로 이루어지고 데이터베이스와 서버 프로그래밍 없이 구현되는 홈페이지를 만든다면 다른 방법이 있다. Dropbox 또는 GitHub을 이용하는 것이다.

Dropbox는 파일을 저장하고 공유할 수 있는 클라우드 서비스인데, 그것을 이용하여 홈페이지 서비스가 가능하다고 한다. GitHub은 프로그램 개발자가 소스 코드를 저장하고 협업을 쉽게 할 수 있는 서비스로, GitHub Pages라는 하위 서비스를 제공한다.

경험자에 따르면, 이러한 서비스들을 사용하여 홈페이지를 운영하는 것에는 일반적인 호스팅에 비해 다음과 같은 장점이 있다.

  • 무료
  • 백업과 복구가 쉬움
    PC와 동기화 되는 것으로, 엄밀하게는 백업이 아니라고 볼 수도 있다.
  • 쉽고 편리함
    Dropbox는 아주 쉽고, GitHub은 개발자가 아니라면 까다로울 수 있다.
  • 빠르고 안정적임


자신의 홈페이지 등에 광고를 싣고 수익을 올릴 수 있도록 해주는 구글 AdSense를 GitHub Pages에 포함시켜도 문제가 없는지에 대한 질문답변을 찾아보았다.

Dropbox의 경우에는 문제가 되는지 찾지 못했다.

그보다도, 다른 사람의 YouTube 비디오를 자신의 홈페이지에 게재할 경우에 AdSense 광고를 붙이는 것은 문제의 소지가 있을 것 같다. 물론 홈페이지를 통해 반드시 수익을 거둘 필요도 없지만 약간의 금전적 보상이 따를 때에 더 재미도 있고 좀 더 좋은 결과물이 나오는 것 같다. 동영상을 직접 찍어서 올린다든지, AdSense가 아닌 다른 대안을 찾아볼 수도 있겠다.

2015년 3월 23일 월요일

전업

7년 가까이 다니던 직장에서 퇴사한 지 석 달이 되어간다. 주업은 바뀌었지만, 가끔씩 일을 도와주러 고객사에 나가는 투 잡 생활을 하고 있다.

그 와중에 뜻밖의 기회가 생겼는데, 이전의 업무와 관계가 깊은 외국계 회사에서 나를 필요로 한다는 것이다. 급여 수준이 높고, 일단 외국계 회사에 발을 들이면 비슷한 수준을 옮겨다니거나 해외 근무의 기회를 잡기가 쉬워지지 않을까하는 기대와, 업무상 외국인과 의사소통할 기회가 많아져서 뭔가 배울 수 있을 것이라는 기대가 있어 뿌리치기 어렵다. 한편으로는 IT 업종에 대한 권태감과, 고객과의 소통에서 오는 불편한 감정에 대한 기억이 투신을 망설이게 만든다. 과중한 업무에 매몰되어 버리지 않을까하는 것에 대한 두려움도 있다.

이력서를 보내서 관련이 있는 부서의 윗사람에게는 긍정적인 반응이 있었고, 그 아랫사람과 전화 인터뷰를 하게 될 것이라는 말을 들었다. 4월부터 일을 시작하는 것으로 이야기가 되더니, 5월이나 6월부터로 미루어진 상태이다. 원래 외국계 회사가 그런 것인지는 알 수 없으나, 지인의 채용이 오랫동안 질질 끌다가 성사된 것을 지켜보았기 때문에 그리 큰 기대를 갖지 않고 느긋하게 기다리고 있다. 다만, 이것 때문에 현재의 본업에 대해 적극적으로 일을 늘리지 못하게 되고, 거주지라든지 커리어에 대한 단기적인 계획은 확정하기 어려운 상태이다. 장기적으로는, 이번 건이 잘 되면 현재 하고 있는 일은 잠시 쉬거나 줄여서 병행하다가 어느 정도 결과(성공이든 실패든)가 보이고 저축을 약간 한 후에 현 상태로 되돌릴 생각이다.

작년에 집필하던 리눅스 책은 반년 가량 손을 놓고 있고, 파이썬 커뮤니티에도 참여하지 못하고 있다. 전업과 맞물려 내버려두고 있던 이런 일들도, 역시 또 한 번의 전업이 어떻게 되느냐에 영향을 받게 될 것 같다.

2015년 2월 27일 금요일

Graph API

페이스북의 그래프 API를 간단하게 사용해보았다.

발단


페이스북에 이런 글이 보였다.
혹시 지인 중에 ㅇㅇ학과 졸업생이나 재학중인 사람 있는분?
일주일 정도 아르바이트 할 사람이 필요한데, 아는 사람이 없네요-
ㅇㅇ하고 ㅇㅇ하는 작업하면 될 듯-
추천할 사람 있으면 댓글이나 메세지 좀 주세용!
지인 중에 해당 학과를 전공했다는 말을 들은 사람은 없지만, 페이스북 친구 중에는 있을 지도 모르고, 페이스북에 출신학교와 전공을 기재한 사람들에 대해서는 자동화된 방법으로 조회할 수 있지 않을까하는 생각이 들었다.

그래프 API


페이스북에서는 그래프 API라는 것을 제공한다. Graph API Explorer를 사용해보면 그래프 API를 보다 쉽게 이해할 수 있다. 그 주소는 다음과 같다.


API Version


현재 그래프 API의 버전은 v2.2이다.

Access Token


그래프 API에 접근하기 위해서는 Access Token을 발급받아야 한다. Get Access Token 버튼을 클릭고, 권한 선택 팝업에서 Get Access Token 버튼을 클릭한다.



Graph API Explorer가 공개 프로필에 접근할 것임을 알리는 팝업 창이 뜨면 확인 버튼을 클릭한다. (원상 복구, 즉 삭제는 앱 설정에서 가능하다.)


이제 Graph API Explorer의 Access Token 필드에 값이 채워져 있을 것이다.

Graph API와 FQL Query 


Graph API와 FQL Query 중 Graph API가 선택되어 있을 것이다. Graph API만 사용할 수 있고, FQL Query는 사용 금지(deprecate)되었다.

GET


GET 버튼 옆에는 질의를 입력하는 란이 있고 다음과 같은 질의가 채워져있을 것이다.
/v2.2/me?fields=id,name

이 질의는 /me라는 노드에 대하여 id와 name 필드를 조회하며, Submit 버튼을 클릭해보면 다음과 유사한 결과를 얻는다.
{
  "id": "714517298603516",
  "name": "Yong Choi"
}

Locale


로케일이 English(US)로 선택되어 있다면 한국어로 변경해보자. 질의가 다음과 같이 변경되었을 것이다. 다시 submit해보자.

GET /v2.2/me?fields=id,name&locale=ko_KR

페이스북에서 한국어 이름을 설정하였다면 name 필드의 값이 한국어로 바뀐 것을 볼 수 있을 것이다.

{
  "id": "714517298603516",
  "name": "최용"
}

필드


왼쪽의 박스에는 질의에 관련된 필드들이 표시되며, Search for a field를 클릭하여 다른 필드를 추가할 수 있다.


currency를 클릭하면 질의 입력란이 다음과 같이 변경된다.
GET /v2.2/me?fields=id,name,currency&locale=ko_KR

Submit 버튼을 클릭하고 그 결과를 확인해보자.

{
  "id": "714517298603516",
  "name": "최용",
  "currency": {
    "currency_offset": 1,
    "usd_exchange": 0.000898425,
    "usd_exchange_inverse": 1113.0589642986,
    "user_currency": "KRW"
  }
}

질의 중첩


위의 결과에서 currency 중 user_currency만 보고 싶다면, 다음과 같이 질의를 수정할 수 있다.

GET /v2.2/me?fields=id,name,currency{user_currency}&locale=ko_KR

그 결과는 다음과 같다.
{
  "id": "714517298603516",
  "name": "최용",
  "currency": {
    "user_currency": "KRW"
  }
}

학력


이번에는 나의 학력 및 전공을 조회해보자. Get Access Token 버튼을 클릭하고, 권한 선택 팝업의 User Data Permissions 중 user_education_history를 선택한 다음, Get Access Token 버튼을 클릭한다.

페이스북이 Graph API Explorer 앱에 제공하는 정보에 변동이 생겼으므로 다음 그림과 같은 팝업에서 다시 한번 확인을 해주어야 한다.


이제 다음과 같이 학력에 대하여 질의해보자.

GET /v2.2/me?fields=id,name,education&locale=ko_KR

다음 그림과 비슷한 결과를 얻을 수 있을 것이다.


친구 리스트


 이제 페이스북 친구를 질의해보도록 하자. 접근 권한이 필요하므로 Get Access Token 버튼을 클릭하고, user_friends를 선택한다. 다음의 질의를 제출(submit)하면 친구들의 name과 id를 볼 수 있을 것이다. .

GET /v2.2/me?fields=friends&locale=ko_KR

친구들의 학력(education)을 조회하기 위해서는 다음과 같이 할 수 있다.

GET /v2.2/me?fields=friends{name,education}&locale=ko_KR

다른 사용자의 정보 조회


내가 아닌 다른 사람의 정보를 알고 싶으면, 앞에서 살펴본 질의의 me 대신에 해당 사용자의 ID를 넣으면 된다.

GET /v2.2/100001357580243?fields=id,name,education&locale=ko_KR


페이스북에서 사용자를 식별하는 기본적인 방법은 숫자로 된 ID이다. 해당 사용자의 프로필 페이지 주소가 다음과 같은 형식으로 나타난다면 id 값을 복사한다.

https://www.facebook.com/profile.php?id=100001357580243


사용자에 따라서는 다음과 같이 영문자와 숫자로 이루어진 프로필 주소를 갖기도 한다.

https://www.facebook.com/sk8erchoi

이때에는 다음과 같이 주소의 www를 graph로 바꾸어서 열어보면 ID를 알아낼 수 있다.

https://graph.facebook.com/sk8erchoi

{
   "id": "100001357580243",
   "first_name": "\uc6a9",
   "gender": "male",
   "last_name": "\ucd5c",
   "link": "https://www.facebook.com/sk8erchoi",
   "locale": "ko_KR",
   "name": "\ucd5c\uc6a9",
   "username": "sk8erchoi"
}

다른 사용자의 친구 리스트


그렇다면, 앞에서 나의 친구 리스트를 얻은 것과 마찬가지로, me를 다른 사용자의 ID로 바꾸어서 질의하면 해당 사용자의 친구 리스트를 얻을 수 있지 않을까하는 생각을 하게 된다.
그렇지만, 그 시도는 다음과 같은 메시지와 함께 실패하였다.

{
  "error": {
    "message": "Unsupported operation", 
    "type": "OAuthException", 
    "code": 100
  }
}

한계와 의문점


이번 시도를 통해 그래프 API에 대한 대략적인 이해를 얻었고, 다음과 같은 몇 가지의 한계 및 의문점을 확인했다.

  • 다른 사람의 친구 목록은 조회할 수 없다.
    원래의 아이디어는 내 지인이 아니라, 구인한다고 글 올린 사람을 중심으로 해서 그 지인의 지인까지 2단계를 찾아보고자 하는 것이었다. 그렇지만 Graph API Explorer를 사용해서는 다른 사람의 친구 목록을 조회할 수 없다. 권한을 요청하고 조회를 수행하는 앱을 만들어서 배포한다면 1단계까지는 가능할 것 같고, 링크드인처럼 널리 퍼진다면 다단계도 가능하겠다.
  • 어떤 사람의 학력은 나오고, 어떤 사람은 안 나오는데 그 이유를 모르겠다.
  • 페이징으로 인해서 Graph API Explorer에서는 전체 결과를 읽어볼 수가 없다. 페이지를 차례대로 넘겨보든지, 페이징을 disable시키든지 해야하는 데 방법을 모르겠다.

참고

2015년 2월 19일 목요일

AP 위치 변경

고향 집에서 스마트폰의 위치 정보 관련 앱을 사용할 때에 위치 정보가 올바로 표시되지 않는 문제가 있어, 다음과 같은 방법으로 해결 시도 중이다.

증상

이사 후 스마트폰의 위치가 새로운 주소가 아닌 이사 전의 주소로 표시됨. 네이버 지도와 다음 지도에서 동일한 문제 발생. Wi-Fi를 켰을 때에만 발생하며, Wi-Fi를 끄면 올바른 주소가 표시됨.

원인

무선 AP의 MAC 주소와 지도 상의 위치를 매핑하는 데이터베이스가 갱신되지 않았기 때문으로 보임.

해결


  1. 무선 AP의 MAC 주소 확인
    Windows CMD에서 다음 명령을 실행
    netsh wlan show networks mode=Bssid
  2. AP 위치 데이터베이스 등록 신청
    http://www.skyhookwireless.com/submit-access-point
  3. 결과는 다음에 올 때 확인해봐야 함

참고

http://www.clien.net/cs2/bbs/board.php?bo_table=cm_mac&wr_id=264435




추가


위의 해결책을 시도한 결과를 확인해보니, 여전히 잘못된 주소로 나온다. 그리 아름다운 해결책은 아니지만 공유기를 교체하면 해결이 되지 않을까 하는 생각도 있었는데, 마침 최근의 인터넷 불통 건으로 공유기를 교체한다고 했으니 아마도 해결되지 않았을까 싶다. 추후 확인 필요.