티스토리 툴바


IT2012/05/01 23:38

얼마전부터 집에서 쓰고 있는 공유기 iptime 에 접속이 되지 않은 스마트폰이나 노트북이 점점 늘어나게 되었다. 곰곰히 생각해보니 갑자기 접속이 안되는 기기들은 외부에서 다른 wi-fi 에 접속을 한번이라도 하고 오면 그렇게 되는 것이었다. 이럴 때는 역시 오류 메시지 안에 답이 있었다.


접속이 되지 않은 Macbook Air의 오류 메시지를 확인해보니 iptime 의 private ip 범위를 벗어나는 주소로 고정되어 있었다. 집에서 쓰는 iptime 의 private ip 주소 범위는 192.168.0.1 ~ 192.168.0.253 (Gateway 를 192.168.0.254 로 쓰고 있음) 인데 wi-fi 오류 메시지의 주소는 192.168.236.221 이었다.


이 경우에는 DHCP (자동으로 ip 주소를 할당해주는 기능) 서버가 제대로 동작되지 않는 경우인데 혹시나 하고 iptime 의 gateway 주소를 이용해 공유기 관리자모드로 접속해보니 DHCP 서버가 중지되어 있었다. DHCP 서버가 중지된 줄 모르고 온갖 삽질을 다 했는데 아주 간단한 문제였다.


DHCP 서버를 다시 on 시키니 문제없이 접속이 된다. 집에 공유기에 접속이 되지 않을 경우 DHCP 서버부터 확인해봐야 겠다.

저작자 표시 비영리 변경 금지
Posted by SHL SHL
Programming tips2012/04/19 23:54

Windows 환경이 아닌 경우 일반적으로 eclipse 를 사용한다. 그만한 plug-in 과 기본 기능이 충실한 IDE 가 없기 때문이다. 하지만 역시 Windows 환경에서 최고의 IDE는 Visual Studio이다. debugging 할 때 이만큼 최고의 기능을 지원하는 툴을 본적이 없기 때문이다.


Visual Studio 2010을 주로 쓰는데 집에서 2011 developer preview 버전을 설치해서 써보고 있다. Visual Studio라면 버전에 상관없이 제공하는 debugging 기능이 있는데 간단하면서도 아주 강력한 기능이다. 일반적으로 debugging을 할 때 변수값을 보려면 breakpoint를 걸어놓고 그 위치에 mouse를 클릭하거나 add to watch 라는 메뉴 기능을 이용해서 다른 창에 변수값을 확인한다.


이 기능은 계속 변경되는 변수값을 해당 파일의 breakpoint 로 이동할 때 값이 어떤지 자신이 원하는 위치에 그 값만 고정시켜서 볼 수 있는 기능이다. 주변에 의외로 많은 사람들이 모르고 있어서 공유하고자 글을 쓴다. 아래 그림에서 보이는 것처럼 breakpoint 로 이동했을 때 해당 값에 mouse 를 이동시키면 변수값이 pop-up 되는 것을 확인할 수 있다.



이 상태에서 pop-up 된 오른쪽 끝의 핀모양을 클릭하면 아래 그림과 같이 변수 값이 화면에 고정되는 것을 확인할 수 있다. 이 고정된 값을 클릭해서 원하는 위치로 이동시킬 수 있으며 항상 보이는 것이 아니라 해당 파일의 breakpoint 로 이동할 때만 고정된 위치에 나타나므로 debugging이 훨씬 용이해진다.



Visual Studio 의 debugging tool 은 정말 최고라고 생각된다.


저작자 표시 비영리 변경 금지
Posted by SHL SHL
C & C++2012/03/19 22:32

Reference: http://linux.die.net/man/3/backtrace

회사에서 요새 주로 Linux kernel 에서의 system programming 을 하는데 embedded system (android) 기반이다 보니, 제대로 된 디버깅을 하기가 힘들다. Kernel 내부에서 놀다보니 이클립스를 통한 것은 꿈도 못꾸고 printk 만을 이용해 message 를 통한 추적을 하는수 밖에 없다.

이럴때 도움이 되는 것이 call stack 을 보면 어떤 flow 에서 무슨 동작을 하다가 문제가 있었는지 분석하는 데 많은 도움이 된다. 그래서 assert 구문에 Linux 에서 지원하는 call stack function 을 넣어서 사용하면 매우 유용하다. 위의 참조 링크에 있는 코드를 terminal (MacOS 용 - 이것도 결국 리눅스이므로) 에서 아래와 같이 구현하고 실행하면 call stack 을 확인할 수 있다.


backtrace() 와 backtrace_symbols() 함수를 이용해서 위와 같이 call stack 함수를 구현할 수 있다. 주어진 버퍼에 커널 함수를 이용해서 디버깅을 용이하게 할 수 있다. 결과는 아래와 같이 나온다.

myfunc3 까지 제대로 호출된 것을 확인할 수 있다. 이 방법이 복잡하다면 Linux kernel 에서 제공하는 dump_stack() 이라는 함수를 호출해도 된다. 이 함수를 assert macro 를 작성하고 macro 안에 직접 삽입(define 문)하면 제대로 동작하지 않는 경우가 있으므로 wrapper function 으로 한번 간접 호출을 하고 wrapper function 을 assert define 문에 추가하면 사용할 수 있다.

저작자 표시 비영리 변경 금지
Posted by SHL SHL
IT/iPod and iPhone2012/03/09 23:46
아이폰이나 아이패드를 사용하면 초기에는 한국 앱스토어에 어플(앱)이 많지 않기 때문에 미국 계정과 한국 계정을 두개씩 가지고 있는 사람들이 있다. 사실 이렇게 사용하는 사람들이 많기 때문에 갑자기 iOS 기기에서 설치한 앱이 실행이 안되면 다중 계정을 사용해서 문제가 되는것으로 생각하기 쉽다.

실제로는 다중 계정의 문제가 아니라 컴퓨터 인증을 하지 않은 경우이다. iTunes 를 통해 인증받을 수 있는 컴퓨터의 대수는 최대 5대이므로 인증을 할 때는 신중해야 하고 인증을 한 컴퓨터에서만 동기화를 수행해야 iOS device 에 설치한 앱들이 정상적으로 수행이 된다.

그러므로 앱이 갑자기 종료된다면, 현재 사용하고 있는 컴퓨터가 iTunes 를 통해 인증을 받아서 해결할 수 있다. 
저작자 표시 비영리 변경 금지
Posted by SHL SHL
IT/iPod and iPhone2012/03/09 23:28
명칭이 iPad 3 가 아닌 새로운 iPad 를 발표가 있는 날 Apple 의 iOS 5.1 이 정식 릴리즈 되었다. 이전과 달리 이번 iOS 의 버전 업데이트가 상당히 더딘 편인데, 무엇보다 맘에 드는 건 아래 그림과 같이 새로운 iOS 의 한글 폰트이다. iOS 5.0 beta version 에는 수록되었지만 끝내 정식 버전에 포함되지 않았던 애플SD네오고딕이 포함된 것이다.

iOS 5.1 의 한글 폰트



iPhone 4를 사용하므로 Siri를 이용할 일도 없고 이번 버전에 한글이 수록되지 않았으므로 (한글이 상당히 어려운데 수록될 수 있을지 궁금함) iOS 5.1 의 가장 큰 관심은 배터리 개선과 한글 폰트였다. 아쉽게도 배터리 수명의 개선은 크게 느끼지 못할 정도로 거의 변화가 없는 거 같고 한글 폰트는 상당히 맘에 든다. 
저작자 표시 비영리 변경 금지
Posted by SHL SHL
IT/MacOS2012/02/17 23:18
SSD 는 하드 디스크와는 달리 NAND device 로 구성이 되어 있기 때문에 수명적인 측면에서 디바이스에 read, write 가 많을 경우 오래 쓸 수가 없다. 맥북에어의 경우 저장공간이 SSD 로 이루어져 있고 게다가 가장 사람들이 자주 쓰고 나 역시 자주 쓰는 web browser 의 경우 web cache 공간이 device 이기 때문에 웹 서핑을 자주 하는 것만으로도 SSD 에 부담을 줄 수 있다.

iRamDisk 는 Mac Appstore 에 있는 Ram Disk app 인데 쓰지 않는 DRAM 의 일부를 device 공간으로 사용할 수 있다. 이럴 경우 DRAM 의 일부가 저장 공간으로 인식이 되나 volatile 공간이므로 쓰여진 데이터는 저장되지는 않는다. web cache 의 경우 저장할 필요가 없으므로 굳이 저장하지 않고 이렇게 DRAM 의 쓰지 않는 공간을 이용하면 SSD 에 실제 write 가 일어나지 않으므로 device 의 수명을 늘리는 효과가 있다.
뿐만 아니라 DRAM 같은 memory 영역에 write 를 하게 되면 device 에  write 를 하는 것보다 훨씬 빠르게 읽고 쓸수 있기 때문에 좀 더 쾌적한 web surfing 을 할 수 가 있다.

Macbook 에서 iRamDisk 를 검색하여 설치하면 아래과 같은 과정을 통해서 Ram 영역 (DRAM) 을 device 공간으로 사용할 수 있다.

Mac appstore 에서 구입(1.99$)한 후 설치가 완료된 화면. Mac OS 는 점점 iOS 같아진다. 10.7 버전 이후부터는 아래 그림과 같이 LaunchPad 에서 실행할 수 있다.


 iRamDisk 를 실행하면 아래와 같은 화면이 나온다. 왼쪽 아래에 "+" 버튼을 누르면 Ram의 일부를 device 로 쓸수 있는 환경을 구성할 수 있다.


+ 버튼을 누르면 아래와 같이 설정할 수 있다. Capacity 에서 Ram 에서 얼만큼을 쓸지 결정하고 Name 은 device 의 이름이 된다. Options 에서는 설정한 RamDisk를 언제 실행할지를 결정한다. 보통 Log-in 때 하면 특별한 설정을 하지 않고 사용할 수 있다.

Post Command 는 빈칸으로 두엉 한다. 위의 그림과 같이 아무거나 입력하면 안됨.


설정을 마치고 Create 버튼을 누르면 아래 그림과 같이 왼쪽 메뉴에 SHL_Disk 와 같이 Ramdisk 가 생성된 것을 확인할 수 있다. 이제 Ram 의 일부를 device 로 사용할 수 있게 된다.


이렇게 하고 Ram 의 일부를 device 로 인식한 부분을 어디에 써야 할지 결정을 해야 한다. 보통 주로 많이 사용하는 app의 cache 를 이쪽에 옮겨두면 되는데 (물론 날라가도 상관없는 것) 보통 web browser 일 것이다. Mac 은 기본적으로 Linux based OS 이기 때문에 symlink 를 이용해서 web browser 의 cache 에 연결하면 된다.

나의 favorite web browser 인 Chrome 의 경우 아래와 같이 Terminal 을 실행하고 Chrome 의 원래 web cache 를 삭제해주고 SHL_Disk (Ramdisk) 를 해당 web cache 경로에 symlink 로 연결시켜주었다.


이렇게 연결을 해놓고 Chrome 을 사용하면 아래 그림과 같이 web cache data 가 SHL_Disk (Ram) 에 기록되는 것을 확인할 수 있다. 좀 더 쾌적하게 웹서핑을 하고 SSD의 수명을 늘릴 수 있는 권장하는 방법이다.


저작자 표시 비영리 변경 금지
Posted by SHL SHL
IT/applications2012/01/28 16:50
7 zip 을 이전에 소개한 적이 있다. 원래 freeware 인 파일 압축 및 해제 프로그램이다. 그런데 이 tool 의 또 하나의 쓸만한 점이 있다. ISO 파일을 mount 하지 않고 압축 파일처럼 7-zip 으로 압축해제해서 사용할 수 있는 것이다. ISO 파일은 보통 Daemon 같은 image mount tool 을 이용해서 가상 drive 로 mount 을 해서 사용한다.

즉, 가상 드라이브로 mount 하는 방식을 7 zip 으로 하나의 폴더로 보이게 하는 방식이므로 실제 사용하는데 있어서 차이가 없다. 7 zip 을 이용해서 ISO 파일을 압축해제해서 사용하면 별도의 image mount tool 을 사용하지 않고 쉽게 ISO 파일을 이용할 수 있다. 
저작자 표시 비영리 변경 금지
Posted by SHL SHL
Diary2012/01/25 21:29
살면서 고민 없는 사람이 있겠느냐만은 작년보다 올해 더 고민이 늘어난 거 같다. 이래저래 두려움과 걱정이 앞서는 성격이지만 정말 올해에는 많은 것을 생각하게 된다. 나를 믿어주는 사람들에게 내가 얼마만큼 기대를 저버리지 않고 잘 해낼 수 있을까 또, 하고 싶은 일이 있어서 나를 믿어주는 이들을 등지고 그냥 가버릴 수 있을까

아니면 하고자 하는 것에 그 기대가 두려워 도망가듯이 등지고 그냥 피하는 것은 아닐까. 결정해야 할 것들을 미루고 미루어 올해까지 온 느낌이다. 과감하게 결정하고 나를 과장하고 있는 껍질들을 벗기고 용기있게 현실에 마주해야 하는데 미루고 미뤄서 포장을 하고 나태해지고 회피하면서 올해까지 온 것 같다.
 
다시 미룰 수 있겠지. 좀 더 기다리면 나아질거야 라는 말로 자신을 위로하고 지금도 그러고 있다. 어떨 때는 예상보다 좋은 성과를 얻거나 믿음을 얻고 반대로 미움을 받고 멀어지기도 하고. 내가 가진 것보다 더 가진 것처럼 보여서 혹은 실제 능력보다 더 잘난 것처럼 보여서 과대포장되었을 때 그것을 아니라고 용기있게 밝히고 실제의 나를 보여주지 못하는 것 같다.

Overreaction 일수도 있겠지. 그렇지만 그러기엔 한 없이 부족하다. 뒤돌아 보면 뭐하나 내 힘으로 이룩한 것이 없다. 온전히 하나의 과제를 완성시켜본 일도 내 힘으로 무언가를 제대로 된 값을 주고 얻어본 적이 있지를 않다. 아무런 도움 없이 모든게 없어진다면 나는 한없이 초라한 인간일 것이다.

이제 결정을 할 때가 된 것 같다. 실제 내가 어느정도 위치인지, 지금 과장된 껍데기를 쓰고 울타리 속에서 인정받는 척 의기 양양하게 회사나 집에서 안주하면서 산 내가 실제 그러한 것들을 탈피하고 밖으로 발을 내딛었을 때 얼마나 혼자서 성취하고 이루어나갈 것인지. 실패할 수도 있고 기대를 저버릴수도 있다. 그래도 나를 끝까지 믿어주는 이들이 있기에 이제 결정을 하고 나아갈 때라 믿는다. 
저작자 표시 비영리 변경 금지
Posted by SHL SHL
IT/MacOS2012/01/15 20:21
Mac app store 에서 쓸만한 구글 리더 앱들은 대부분 유료이다. 가장 유명한 것으로는 역시 iOS 에서도 높은 인지도를 가진 Reeder 라고 할 수 있겠다. 그런데 꽤 괜찮은 Google Reader Viewer(?) 가 공짜로 app store 에 등장헀다. 물론 Mac 용이다. iOS 에서는 요새 Flipboard 에 꽂혀서 다른 RSS reader app 은 아예 쓰지도 않는데, 맥에서는 쓸만한 것이 없다가 마침 잘 되었다 해서 냉큼 깔아보았다.

Mac app store 에서 Cappuccino 로 검색하면 아래와 같이 해당 앱을 확인할 수 있다. 아직 문제가 있는지 최초 Google Reader account 을 입력하면 RSS feed 를 잘 긁어오나 그 이후로 제대로 긁어오지 못한다. 무엇이 문제인지 아직 모르겠다.
머 하지만 다음에는 고쳐질 것으로 기대하며...

깔끔한 UI 를 가진 Cappuccino

 
설치를 하고 실행을 하면 아래 그림과 같이 Google account 을 입력하도록 되어 있다. Google account 를 입력하면 Google Reader 에 등록된 RSS feed 정보들을 이용해 정보들을 긁어와서 Cappuccino 에 업데이트를 수행한다.


앱을 실행하면 Google Reader Account 를 요청한다.

 

Cappuccino 에서 실행되는 구글 리더의 뉴스들. 깔끔하고 읽기가 좋다. 무엇보다 영어 폰트가 맘에 듬.


당연히 Cappuccino 를 통해서 Facebook, Twitter 와 SNS 를 통한 기사를 sharing 을 할 수 있다. 그러나 바로 되는 것은 아니고 Twitter, Facebook에 등록하기 위해 Cappuccino 의 오른쪽 상단의 share 를 수행하면, 실제 웹 (Safari, Chrome) 에서 해당 SNS 사이트가 실행되며 거기에 해당 기사의 헤드라인과 link 가 자동으로 적히게 된다.

상당히 깔끔하고 쓸만해서 사용하려고 했으나 Google Reader 와 연동 문제인지 앱 자체의 문제인지 update 를 해도 제대로 Google Reader 에서 RSS feed 의 최신 news 들을 가져오지 못하고 있다. 좀 더 안정화가 되면 꽤나 쓸만한 Reeder app 이 될 것으로 보인다. 

저작자 표시 비영리 변경 금지
Posted by SHL SHL
IT/Google Chrome Story2012/01/12 23:06
Chrome Extension 중에서 Recent History 라는 확장 프로그램이 있다. 구글 크롬에서 방문했던 페이지를 기본적으로 확인할 수 있지만 이 프로그램을 쓰면 날짜별로 다양한 view mode 로 확인할 수 있다.

Recent History - Chrome Extension

 
해당 확장 프로그램을 설치하면 크롬 URL 의 오른쪽 편에 시계 모양 아이콘이 생긴다. 해당 아이콘을 클릭하면 방문 목록이 나오고 검색도 할 수 있다. 맨 밑쪽의 모든 방문 목록 표시를 누르면 아래 그림과 같이 날짜별로 다양한 view mode 로 방문 목록을 확인할 수도 있다.

Recent History

 
우연히 발견한 좋은 사이트를 history 목록에서 찾을 때 꽤나 유용하게 사용할 수 있을 것으로 생각된다. 
저작자 표시 비영리 변경 금지
Posted by SHL SHL