유럽 여행 준비

멤버십 오티를 끝내고 온 후 ‘지금 아니면 정말 못가겠다.’ 라는 맘으로 운영자 형께 허락(?)을 맡고~
유럽 가는 비행기 표를 끊었습니다. KLM 네덜란드 8/3 인천에서 13:35분에 출발하는 런던으로 들어가고 8월 27일 오후 4:25분에 파리에서 Out하는 비행기 표였어요.
인터파크에서 예매했는데, 이 것 참.. 주말에 예매했더니 월요일에 오후 3시까지 입금하라는 상담내용을 오후 1시에서야 보내준 겁니다. 전 밖이었는데 말이죠. 입금하라는 문자는 오후 4시쯤 오고.. 헐..
암튼 천신만고 끝에 비행기 표를 예매하고!
유레일 패스도 끊었습니다. 전 나이때문에 유스가 안되서 1등석으로;;
10일짜리 4개국 셀렉트로 끊었는데, 나라는 독일, 스위스, 이탈리아, 프랑스 이렇게 4개를 끊었지요.
더불에 유로스타를 끊으면서 유레일 패스에 프랑스를 골랐으니까, 프랑스의 릴(Liile)로 가자! 라고 생각하고 끊었습니다.(하지만… ㅠㅠ)
처음 생각은 이동 뭐 많이 하겠어? 그러면서 10일 짜리 셀렉트에 프랑스를 골랐으니 릴! 하며 나름 머리를 잘썼다고 생각했었습니다.(하지만… ㅠㅠ)
그리고, 준비물들을 준비하기 시작했죠. 여행일정은 시간이 없으니 런던 만 알고가고, 나머지는 이동중이나 밤중에 짜야겠다 라고 생각하고 준비물만은 확실히 챙기자! 란 맘으로 말이죠.
준비물 챙기는 건 유랑의 다른 분들 준비물들과 얘기 들었던 걸로 준비하기 시작했습니다.
일단 제 자리입니다. 여기서 전부 준비를 했죠. ㅋㅋㅋ
사용자 삽입 이미지
막 사놓은 준비물들!
사용자 삽입 이미지
그리고 준비물들을 담을 남대문표 배낭. ㅋㅋ
사용자 삽입 이미지

배낭에 보이시는 건 유레일 패스 끊었더니 주었던 유랑 배지입니다. ㅋㅋ 멤버십 로고도 붙였어요.. ㅋㅋ
사용자 삽입 이미지

뭐 이런 걸 가지고! 떠나게 됩니다! ㅎㅎ
사용자 삽입 이미지

유럽여행에서 돌아왔습니다! ^^

8월 3일부터 시작한 유럽여행을 28일날 인천 공항에 도착하면서 마치게 되었습니다~
시원섭섭하기도 하고 그러네요~
짐되는거 다 버렸더니 배낭이 12.3 kg? ㅎㅎㅎ 대체 20 kg 넘기시는 분들은 어떻게 넘기시는 건가요~
가족들 선물 샀더니 완전 알거지되고, 정작 저한테 주는 선물은 없지만!
그래도 25일(?)동안 열심히 돌아다니면서 즐긴 경험을 선물이라 생각하렵니다~
한국에 돌아오니 평소에는 그냥 지나쳤던 조그마한 것들에서 괜히 웃음이 나고, 미소가 지어지고, ‘아, 그랬었지.’ 하고 그러네요.
지하철타면서 카드를 대는 것이, 갈아타는 것이 왠지 어색하고, 괜히 걸으면서 싱글싱글 웃었던 오늘의 느낌을 잊을 수 없을 것 같습니다.
여행 중에 많은 사람들을 만나서 같이 돌아다니고, 떠들고 이야기했던 경험들도 정말 즐거웠던 것 같습니다. ‘역시 난 사람들을 정말 좋아하는구나’ 하는 것을 느꼈어요.
여유만만하게 다녀오려했던 여행이 갈수록 저를 조여오면서 더 많은 욕심을 냈던 것도 신기했고,
그러면서 반사적으로 셔터를 누르고 있는 저 자신을 보면서, 카메라와 원래 친하지 않았던 저를 보면서,
‘원래 난 이런 사람이 아니었는데. 눈에 담고, 마음에 느낀 것을 담는 사람이었는데.’ 하는 생각도 했었어요.
그래도 역시나 계속 셔터는 누르고.. ㅎㅎ. 그래도 하나둘셋! 에 표정이 굳는 저를 바꿀 순 없더군요. ㅋㅋ
아직도 왠지 돌아왔다는 느낌보다는, 또다른 여행지에 도착한 것 같이 착각하고 있는 듯하기도 하구요.
돌아오는 비행기 안에서 시계를 다시 돌리면서 ‘아, 정말 돌아가는 거구나.’ 했던 것과 다르게 말이예요.
사용자 삽입 이미지
여행하면서 보고, 듣고, 느꼈던 것들을 언제까지 기억하고 떠올릴지는 모르겠지만..
조금을 오래가주었으면 하는 바람을 가지면서..
뭔가 조금 서운하네요.. ㅎㅎ

아무튼, 이제는 다시 일상으로 돌아가야겠습니다.
아마도, 그냥 느낌에, 평소와는 다른 일상을 느끼게 될 것 같은 예감이 드네요.

정말로, 사고가 편협하고, 좁았던 저 자신을 돌아볼 수 있었던 여행이었던 것 같아요.
늦게나마 정말 잘 다녀온 것 같습니다.

..다녀왔습니다.
사용자 삽입 이미지

유럽여행 중입니다~

지금 아니면 못가 라는 맘을 품고 8월 3일날 무작정 비행기에 올랐더랬죠 ㅋㅋㅋ
그 덕에 멤버십에서는 제 자리를 뺀다느니 뭐 그런 얘기가 들려오고 있네요 ㅎㅎ;;
암튼 어디 한군데 갈때마다 그 때 그 때 닥쳐서 여행 책자를 읽으면서 그렇게 다니고 있습니다.
지금은 독일의 프랑크푸르트의 한 유스호스텔입니다.
로비에서 무선인터넷이 되네요 ㅎㅎㅎ
근처에 다 외국인들 투성이구요. 아, 영어 못하는게 참 이럴 땐 한이 됩니다.
역시 열심히 해야겠어요. 영어만 좀 더 잘해서 왔으면 두배는 즐거웠을텐데..
암스테르담에서 만난 여자애는 미국에서 1년간 호텔에서 인턴을 했다던데 영어 완전 잘하더라구요. 완전 부러웠습니다. 버스에서 만난 사람들과 이야기하고.. 전 듣고만 있고;; 들어보면 다 아는 말인데 할 땐 왜 그렇게 생각이 안나는지..
근데.. 어째.. 여행을 하면 할 수록 영어가 더 잘 안들리고 있습니다.
첨엔 오히려 잘 알아들은 것 같은데.. ㅎㅎ
암튼 8월 27일날 파리에서 출발하는 그 날까지 소매치기나 도둑/강도 안만나게 기원해주세요~
물건 일어버리면 정말 속상할 것 같아요. ㅎㅎ
사용자 삽입 이미지사용자 삽입 이미지

18-2기 OT 다녀오겠습니다.

삼성 소프트웨어 멤버십 신입회원 OT가 7/21~23일까지 진행됩니다.

그저께 처음 본 18-2기 신입회원들과 함께 자치회로 또 한번 OT에 참여하게 되었습니다.

OT 동영상이 오늘 완성되었는데, 저의 망가진 모습이 아주… 죽입니다. OTL

다음은 아직 공개되지 않았던 무삭제 비공개 영상의 한 장면입니다.

물의 한번 일으키고 오겠습니다-_-

멤버십 기술면접 기간만 되면 늘어나는 방문자 수..

이번에도 어김없이 멤버십 기술 면접 시기가 되면 제 블로그 방문자 수가 두 배 이상 늘어나는군요..
제가 처음 지원했을 때 기술 면접에 대한 경험을 써놓은 글을 찾아오시는가 봅니다.
리퍼러 기록을 보면 “멤버쉽”, “기술면접” 등등으로 구글에서 검색해서 오시는 분들이 많더라구요.
이제 1년반 동안 멤버십 생활을 하고 있는데..
가끔 기술면접에 오신 분들이나 합격해서 들어온 사람들이 제 블로그를 봤다는 이야기를 하면
부끄럽기도 하고.. 기분 좋기도 하고 그럽니다. ㅋㅋ
뭐.. 보셨으면 댓글 하나라도 남겨주시지 하는 맘도 들긴 합니다만..
제 욕심이겠지요. ㅎㅎ
수원 멤버십 기술전형은 그제로 끝이 났으니.. 이후로 오셔서 글을 보실 분들은 아마도 제가 얼굴을 못 볼 듯하네요..
제가 올해까지 멤버십 생활을 할 것 같으니 말입니다. ㅎㅎ

기술전형 보시는 분들 화이팅입니다. 🙂
붙으시면 아마도 신입회원 OT 때 뵙게 될 겁니다.
그 때 블로그 글 잘 봤노라고 인사나 한마디 해주시면 감사하겠네요.^^

Crosstool을 이용한 Softfloat EABI 툴체인 빌드 방법

 안드로이드에서 구동될 커널이나 C/C++ 애플리케이션, 라이브러리 등은 ARM용 EABI와 soft-float을 지원하는 툴체인으로 빌드되어야 합니다. 현재 많이 쓰이는 안드로이드 포팅이나 라이브러리 빌드를 위해 사용하는 툴체인을 실제 구글링해보시면 대부분 Codesourcery 사의 툴체인을 사용 중인 것 같은데요. 저 역시, 처음에는 Codesourcery 사의 2008q3 버전의 툴체인(arm-none-linux-gnueabi-*)을 사용했었습니다. 그런데, 그 툴체인으로 커널을 빌드하니까, 왠 일인지 이미지만 3GB인지, 300MB인지가 나와서 실제 부팅 중 Uncompressing Linux…………….. 메시지에서 재부팅되거나 멈춰버리는 것이었습니다.
 그래서, 자체적으로 툴체인 빌드를 하기 위한 방법을 찾아보았습니다. KLDP 위키의 Android Porting On Real Target 에서 역시 툴체인 빌드를 해서 썼다고 되어 있기 때문이기도 하구요. 일단은 KLDP 위키의 방법과 같은 방법을 사용하기로 하고(저 역시,
“To make life easier,”) 같은 방법인 crosstool과 EABI patch를 이용하기로 했습니다. 다음은 그 방법을 설명합니다.

 일단, http://www.kegel.com/crosstool/ 에서 crosstool 0.43을 다운로드 받고 압축을 해제합니다.
 crosstool의 사용법은 http://www.kegel.com/crosstool/current/doc/crosstool-howto.html 에서 설명하고 있습니다. 약간 설명을 드리자면, 빌드하고자 하는 툴체인의 .sh 파일 안의 TARBALLS_DIR, RESULT_TOP, GCC_LANGUAGES 를 수정해야 하는데, TARBALLS_DIR은 crosstool이 받아올 Source tarball을 저장할 디렉토리이고, RESULT_TOP은 빌드된 최종 툴체인이 저장될 디렉토리의 탑 디렉토리(이 디렉토리는 만들어져 있어야 하고, 빌드하는 유저에게 쓰기 권한이 있어야 합니다.), GCC_LANGUAGES 는 빌드할 툴체인에서 지원할 언어에 대한 것입니다. 파일을 열어보시면 금방 아실 수 있을 겁니다.
 자, 이제 soft-float eabi 패치를 구하여야 합니다. KLDP 위키 글을 따라가보면, Khem Raj의 a glibc 2.5+ nptl build for arm softfloat eabi patch를 적용했다고 나와 있습니다. 링크된 글의 본문에 나와있는 패치를 파일로 저장한 후 아까 받았던 crosstool에 적용시킵니다. 패치를 적용한 후 빌드를 수행하면, 잘 되지 않습니다. follow된 글을 따라가보면 스크립트 안의 "-nounpack" 옵션을 제거하고 다시 해보란 코멘트를 찾아볼 수 있습니다.
 그럼 -nounpack을 제거하고 다시 시도해 봅시다. 그래도 잘 안될텐데, 기억에는 아마도 arm-softfloat.dat 파일 안의 “KERNELCONFIG=`pwd`/arm.config” 내용을 그대로 복사해서 arm-softfloat-eabi.dat 파일 안에 넣어주었던 것 같습니다. 그리고 나서도 저는 안되었는데, 그 이유는 스크립트 내부에서 사용되는 awk를 gawk가 아닌 mawk를 사용해서 발생한 문제였습니다. 우분투 8.04에서 기본으로 깔린 awk가 mawk더군요(제가 진행한 작업은 모두 우분투 8.04 하에서 진행되었습니다.). mawk를 사용하고 싶다면, http://sourceware.org/ml/crossgcc/2007-07/msg00029.html 을 참조하여 패치한 후 진행합니다. 그냥 귀찮다면, 패치 제작자가 권장하는 gawk를 사용하시구요. 우분투에서 기본 awk를 gawk로 바꾸는 방법은 gawk를 내려받아 설치한 후(sudo apt-get install gawk), 기본 awk를 gawk로 설정하시면(sudo update-alternative –config awk:확실하지 않습니다.;;) 될 겁니다.
 아무튼, 이제 빌드하면(당연히 빌드 이전에 demo-arm-softfloat-eabi.sh 파일 안의 세 변수는 적절히 설정되어 있어야 합니다.) 설정되어 있던 디렉토리에 툴체인이 빌드되어 있는 것을 보실 수 있습니다.

 KLDP의 원문을 곱씹으며 읽어볼겸, 영어공부도 할겸, 영어에 익숙하지 않은 개발자를 위해서겸, 겸사겸사, 번역해 보았습니다. 허접한 번역이지만 보실 분은 http://wiki.dasomoli.org/wiki.php/AndroidPortingOnRealTarget/ko 를 보시면 됩니다(우리나라 사람이 쓴 원문을 번역한다는 것이 참 아이러니합니다만..).

우분투 8.04를 고진샤 K800x에서 사용하기

몇 달 전부터 고진샤의 K800X 모델을 사용중입니다.

감도는 떨어지지만 나름 터치스크린도 갖추고 있고, 하드도 120G나 되는 놈입니다.

IDE to USB 젠더를 이용해서 CD롬을 연결하고 거기에 우분투 8.04 CD를 이용해서 Hardy Heron을 설치했습니다.

그런데 지금까지는 터치스크린이 작동은 하는데 제대로 포인트가 잡히지 않아서 있으나 마나였습니다.

Calibration하려고 했었는데 아직 지원이 제대로 안되는 것 같길래 두고 있었습니다만,

어제 밤에 갑자기 생각이 나서 구글에 검색해보니, 런치패드에 버그로 제출된 내용이 있더군요.

어느 사용자가 결국 배포하는 드라이버를 패치해서 사용하는데 성공한 것 같습니다.

이 패치를 사용해서 penmount에서 드라이버를 작성해서 배포 중인 것 같네요.(버전은 비록 Beta2지만요)

설치해서 조금의 삽질을 하니 잘 작동합니다. ㅎㅎ

관련 xorg.conf 내용입니다.

[#M_PenMount 터치스크린 관련 xorg.conf 설정|<<접기>>| Section “InputDevice”
    Identifier    “Configured Mouse”
    Driver        “mouse”
    Option        “CorePointer”
    Option        “Device”    “/dev/input/mouse0”
EndSection

Section “InputDevice”
    Identifier    “Synaptics Touchpad”
    Driver        “synaptics”
    Option        “SendCoreEvents”    “true”
    Option        “Device”        “/dev/psaux”
    Option        “Protocol”        “auto-dev”
    Option        “HorizEdgeScroll”    “0”
EndSection

Section “InputDevice”
    Identifier    “PenMount”
    Driver        “penmount”
    Option        “Protocol”        “PM6000USB”
    Option        “Device”        “/dev/input/event2”
    Option        “PMode”            “1”
    Option        “MinX”            “10”
    Option        “MaxX”            “1000”
    Option        “MinY”            “10”
    Option        “MaxY”            “1000”
    Option        “ADBit”            “10”
    Option        “Baudrate”        “19200”
    Option        “Beep”            “0”        #  0 = no beep, 1 = beep enabled
    Option        “HoldTime”            “700000”
    Option        “SendCoreEvents”    “True”   
EndSection

….

Section “ServerLayout”
    Identifier    “Default Layout”
    Screen        “Default Screen”
    InputDevice    “Synaptics Touchpad”
    #InputDevice    “Penmount” “AlwaysCore”
    InputDevice    “Penmount” “SendCoreEvents”
EndSection
_M#]

/usr/share/penmount/gCalib 16

위와 같은 명령으로 Calibration이 가능합니다. 16 대신 0, 4, 9, 25 와 같은 값을 써서 Calibration point를 몇 개로 할 것인지 정할 수 있습니다.

터치스크린은 OneNote와 같은 프로그램에서 강점을 발휘합니다. 리눅스용 프로그램으로 뭐가 있을까 찾아보니 jarnal 이란 프로그램이 있는 것 같은데, 우분투에서는 그 비슷한 프로그램으로 xournal 이란 프로그램을 패키지로 제공하는군요. 조금 써보니, 프로그램의 문제인지, 원래 포인트가 흔들리는 건지는 알 수 없지만, 선이 좀 삐뚤군요.

한영키 설정은 ~/.Xmodmap 에

keycode 113 = Hangul

추가로 가능합니다.

이제, 여기다 졸업 논문과 진행 중인 프로젝트 관련 몇 가지 설정을 해서 사용해봐야겠습니다. 흐흐..

C++ library를 안드로이드에서 돌리기 위한 삽질

요즘 C/C++ 로 된 OpenCV 라이브러리를 안드로이드 플랫폼 안에 포팅해서 자바 라이브러리로 만드는 과정 중인데.. 순수 C App는 안드로이드 내부의 라이브러리로 빌드/실행이 가능한데 C++ 쪽은 문제를 겪고 있다.

내가 생각한 해결 방법은 그냥 GNU C++ library를 통째로 안드로이드 안으로 이식하려고 생각한 것이었다.

그러나 나같은 삽질을 한 사람이 또 있겠지 싶은 마음에..

여기저기 뒤져보던 중 구글의 Andorid Interanls 그룹에서 여러가지 포스팅 들을 찾을 수 있었는데,

글 들 중 가장 최신의 글은 삽질하지 말고 기다려라. 라는 것이다-_-

좌절이다.. OTL…

그러나 그 이전인 2월의 글 들 중 C++ Application 을 포팅하는데 성공했다는 사람(Susmith M R)이 있다.

이 포스팅(Dynamic Shared Library in Android Another Approach – Don’t Use android Linker)에서 찾을 수 있는데, 안드로이드 내부의 링커(/system/lib/linker)를 사용하지 말라는 이야기이다.

gcc의 옵션으로 -dynamic-linker=/system/lib/linker 대신,

링커 파일(ld-linux-so.6)을 넣고 –dynamic-linker=/system/lib/ld-linux-so.6 옵션으로 컴파일 한다는 건데.

링커 자체가 바뀐다면 추측상으론 DATA 섹션에서 RO 영역과 RW 영역 구분을 없앴던 부분도 수행하지 않고(바꿔 말하면 armelf_linux_eabi.xsc 를 사용하지 않고) 사용할 수 있을 듯도 하다. 음.. 잉? 아닌가? 음.. 생각해봐야겠다..

한번 해봐야겠다.

참고 :

Problem loading C++ library in android


Need little help for JNI


Dynamic Shared Library in Android Another Approach – Don’t Use android Linker