리얼포스 & 해피해킹 오사카 키보드 구매기

지난 주말, 해피해킹 키보드를 구매했다. 2년전 첫 번째 키보드는 기계식 레올포드 FC700R 중고를 구매하면서 부터다. 구매전에는 리얼포스, 해피해킹, 레오폴드, DECK등 많은 키보드들을 알아보았지만 처음에는 가장 무난한 FC700R의 적축으로 사용했다. 기계식 키보드에는 적축, 갈축, 청축, 흑축이 있는데, 타건을 해보면 축마다 특유의 차이점이 있다. 구매전 리더스키레오포들 사이트를 자주 들어가보면서 가격과 재고를 자주 확인하기도 했었고 만약 직접 타건을 해보고 싶으면 용산역 리더스키에 가서 키보드를 직접 사용해볼 수 있다.

FC700R

FC700R

첫 번째 키보드를 구매할 때 가장 좋고 비싼 해피해킹이나 리얼포스를 살까라고 생각했지만, 한국에서 구매하기엔 부담스러운 가격이라 FC700R 중고를 구매해서 사용해보기로 했다. 첫 번째 기계식 키보드 FC700R은 나에게 대만족이었다.

그리고 작년 9월, 미국에서 만난 일본 친구들을 보기 위해 오사카를 여행을 계획했고, 이왕 가는김에 키보드 구매를 결심했다. 검색으로 여기저기 돌아다니며 블로그 구매후기도 찾아 읽어보고가 덴덴타운에 대한 단서를 찾을 수 있었다. 20만원 정도에 구매를 했다는 후기를 보았던 것 같다.

리얼포스

Real Force

작년 오사카에서 리얼포스를 구매했다. 오사카 난바역에서 Nippombashi St을 찾아 걷다보면 오타쿠 천국이라고 불리는 거리를 볼 수 있게 된다. 길 양쪽으로는 게임, 피규어, 만화, 전자기기등 용산전자상가같은 느낌으로 길게 나열된 스토어들이 있다. 일본 만화나 피규어, 게임을 좋아한다면 하루도 충분히 보낼 수 있다. 지금까지 한번도 피규어를 사본적 적도 관심도 없던 나였지만 리얼포스를 사러 가던길에 피규어 샵에 들러서 구경하다 보니, 나도 모르게, 정말 나도 모르게 스토어를 나올 땐 내 손에는 두 개의 피규어가 있었다.

많은 스토어들을 찾아 들어가 리얼포스의 행방을 물었지만 87키가 없을 뿐더러 제품을 찾기는 어려웠다. 처음에는 1’s라는 가게를 모르고 모든 곳을 찾아다니면서 가격을 비교해봤고 가장 저렴하게 판매되던 곳이 1’s였던 것으로 기억한다. 덴덴타운에서는 리얼포스 파는 곳이 3~4곳은 있었던 것 같다.

1’s

1’s(one’s) PCワンズ Google Maps

가게에 도착해서 아래 계단으로 내려가면 다양한 키보드가 나열되어 있고, 올 해에는 작년에 보지 못한 레올폴드 FC660C도 봤는데 일본에서는 리얼포스보다 비싼 가격이었다. 리얼포스 가격은 작년 내가 구매한 20,980엔으로 변함이 없었다. 텍스프리를 작년 리얼포스 구매할 때 알았다면 이보다는 훨씬 싼가격으로 구매했을 텐데 사기전에 잘 알아보고 구매하는 것이 현명하다. 예상하기론 1’s에서도 텍스프리로 구매가 가능하겠지만, 만약 되지 않는다면 요도바시카메라나 다른 스토어에서 사는게 더 저렴할 수 있을 것 같다. 그리고 차등을 구매해서 물어보지 않아서 균등, 저소음 차등은 구매가 가능한지는 모르겠다.

Realforce Price

사용후기는 FC700R을 반년 정도 사용하다가 리얼포스로 바꾸니 처음에는 묵직한(?) 느낌으로 오히려 손가락에 부담이 되는거 같았지만, 일주일 정도 개발을 하다보니 어느새 리얼포스가 더 부드럽고 타건 재미에 빠졌다.

해피해킹 프로2 – 요도바시 카메라

Happy Hacking Pro2

지난주 일본 친구의 결혼식으로 다시 한번 오사카를 방문했다. 비행기 티켓 예약보다 먼저 구글 검색에 해피해킹 프로2 구매관련 키워드를 입력을 하고 있었다. 한 분의 구매기를 읽었더니 19,800엔 정도로 오사카에서 구매를 했다는 글을 읽고 구매를 결심했다. 작년에 리얼포스를 구매했던 곳(one’s)에서 구래를 할 수 있을 거라 생각하고 오사카 도착 후 일본친구와 함께 one’s를 갔지만 아쉽게도 해피해킹은 판매하지 않았다.

검색이 필요한 타이밍이다. 글 보다는 댓글에 초점을 맞추었다. 댓글 중에서 우메다 역에 있는 요도바시카메라에서 구매한 사람을 발견하고 교토를 가기전에 우메다역에 있는 요도바시카메라를 잠시 들러서 찾아보았다.

Happy Hacking Pro2

해피해킹 프로2 가격은 약 24,000엔. 분명 어제 보았던 글에서는 분명 19,800엔으로 봤던거 같은데 싸게 산 사람을 글을 읽고 났더니 구매의욕이 떨어졌다. 하지만 일본친구가 점원을 불러 이야기를 하더니 TAX FREE로 싸게 살 수 있다고 한다. 가격은 2개에 39,600엔, TAX FREE를 왜 몰랐을까라는 생각은 잠시 점원이 VISA카드로 결제하면 6% 할인을 더 해주겠다고 한다. 추가 할인이 가능하고 했을 경우 2개에 37,236엔, 하나에 18,600엔 정도 되는 가격으로 해피해킹 프로2를 구매할 수 있었다.

Happy Hacking Pro2 Price

아직까지 어떤 키보드를 살지 구매를 고민하고 있다면 일단 구매하고 사용해 보면 돈이 아까운 생각은 들지 않는다. 자신이 사고 싶은 키보드를 빨리 구매해서 그 시간만큼 열심히 개발하자.

Keyboard

Twitter Flock Seoul 2015 – Fabric

Awesome ! Twitter Flock Seoul 2015

백앤드 개발자들을 통해 빌드 및 배포 자동화를 위해 fabric을 사용하고 있다는 이야기를 들은 적이 있다. 그리고 얼마전 알고 지내는 스타트업에서 fabric을 통해 배포 직전인 앱을 사람들의 이메일 등록을 통해 배포하는 것을 보았다. 물론 앞서 말한 두 개의 fabric은 서로 다른 이야기다. 이번 Twitter Flock 행사는 한국에서는 처음 열렸고, 모바일 개발자들에게 도움될 만한 주제들이 많았다.

먼저 패브릭(fabric)은 모바일 개발자들이 트위터에서 제공해주는 툴을 사용해 더 안정된 앱을 만들 수 있도록 도와주고 있다. 앱 개발에서의 안정성, 사용자 확보, 수익성, 사용자 인증 등을 해결하기 위해 여러가지 툴(Kit)를 내놓았고, Crashlytics, MoPub, Twitter Kit Answers 등이 있다.

App Stablilty(안정성)
  • Crashlytics : 모바일 충돌(오류) 감지 및 분석
  • Beta for Crashlytics : 앱 베타 오픈 테스트 관리
Identity(사용자 인증)
  • Digits : 전화번호를 통해 서비스 로그인
  • Log in with Twitter : 트위터 인증 로그인
Distribution(사용자 확성)
  • Twitter Kit : 네이비트 트윗 임베드, 드윗 컴포저 기능 제공
Mobile Analytics(사용자 분석)
  • Answers : 실시간으로 앱 최적화를 위한 분석
Monetization(수익성)
  • MoPub : 모바일 앱 개발자들을 위한 최고의 광고 플랫폼

더 자세한 사항은 패브릭(fabric)소개 에서 읽어 볼 수 있다.


행사 등록 (오후 13:00 ~ 14:00)

Flock은 개발자 컨퍼런스를 뜻하고, Fabric은 작년 10월 Twitter Flight 개발자 컨퍼런스에서 앱 제작을 지원하는 모듈식 개발 도구 모음이다. 장소는 학동역 부근 Patio9이었고 네임택을 받고 입장했을 때는 해외 기업 컨퍼런스라 그런지 다른 컨퍼런스와는 달리 클럽 조명과 음악으로 분위기가 더 좋았던 것 같다. 마치 2년전 샌프란시스코 TechCrunch를 갔었던 느낌이다. 세션 대부분은 Fabric 개발 도구를 만든 엔지니어, 개발자들의 세션이었고, 정보와 지식을 공유하기 위한 자리였다.

기조 연설, 데모, 파트너 성공 사례 (오후 14:00 ~ 15:00)

Twitter 코리아 대표가 나와 기조 연설을 했고, 왜 Fabric을 만들게 되었으며, 왜 사용해야하는지에 대해서 이야기를 들을 수 있었다. 그리고 이어서 파트너 성공 사례로 한국 스타트업의 개발 담당자들이 패널로 참석해 정보를 공유하는 자리를 가졌다.

현재 스타트업에서 Fabric 개발 도구 중 무엇을 어떻게 사용하고 있으며, 어떤 장점을 가지고 있는지 정보를 들을 수 있었고, 왜 스타트업에서 Fabric을 사용하면 좋은지에 대해서 들을 수 있는 자리였으며 ‘Between’을 개발한 VCNC, Flitto, ‘배달의 민족’의 우아한 형제들, ‘알람몬’의 말랑스튜디오 개발자 분들이 직접 앞에 나와 트위터 코리아 소영선 대표와 서로 질문과 답변식으로 대화를 나누었다. 사실 Fabric의 장점만 나열되는 것 같아 조금 아쉬운 질의응답 시간이었던 것 같다. 더 궁금하면 직접 실행으로 옮기자! 게을러지지 말자!

Digits: A Better Way to Login (오후 15:00 ~ 15:30)

우리가 대부분의 앱을 처음 사용할 때 거치는 첫 번째 단계는 회원 가입이다. 지루한 가입 단계로 인한 유입율을 높이기 위해서 대부분의 기업에서 페이스북, 트위터, 구글+ 로그인을 사용해서 수 십초 이내에 앱의 첫 화면을 볼 수 있도록 해주고 있다. 여기에 트위터는 더 좋은, 더 쉬운, 더 빠른 로그인 방법인 휴대폰 번호를 위한 인증을 내놓았다. 휴대폰 번호를 통한 인증은 보통 본인 인증때 우리가 사용하는 방식으로, 그 방법을 이용해서 회원 가입을 하도록 새로운 방안을 제시했다. 휴대폰 번호만 있으면 회원 가입이 가능하도록 하며 간편하고 그 만큼 안전하다고 한다. 무엇보다 개발자가 이를 개발하기 위한 단계도 굉장히 심플하게 만들었다. Fabric을 맥에 설치하면 상단 메뉴를 통해서 가이드와 관리를 할 수 있도록 제공해주고 있다.

Crashlytics: Quality First (오후 15:45 ~ 16:15)

대부분 현재 서비스하고 있는 기업이라면 Flurry, BugSense, Google Analytics 등을 통해 광고, 분석, 버그 추적 등을 하고 있을 것이다. 기본적으로 이를 사용하는 이유는 버그를 가진 앱을 배포했을 때 발생하는 피해, 앱 순위 하락과 좋지 못한 리뷰로 상처를 덜?받기 위해서(덜 받아도 상처는 상처) 그리고 개발 시간을 보다 단축시키기 위해서 사용한다. 이에 Twitter에서는 Crashlytics라는 도구를 만들었고 무료로 기업들이 사용할 수 있도록 배포하고 있다는 점, 또한 정말 사용하기 쉽도록 구현되어 있다는 것이다. 간단한 코드에 키를 등록해주면 자사 서비스와 연동이 되도록 만들어져 있다.

TwitterKit: Tap Into the Pulse of the Planet (오후 16:15 ~ 16:45)

예전에는 트윗을 임베드하기 위해서는 네이티브에 별도의 구현을 해야하기 때문에 비용이 많이 들었다. 이에 Twitter Kit은 코드 몇 줄을 통해 트윗 임베드를 편리하게 할 수 있도록 다양한 기능을 제공해주고 있다. 또한 트윗 컴포저는 앱 내에서 사용자가 트위터 팔로우들에게 사용자 자신만의 경험을 편리하게 공유할 수 있도록 제공해주는 기능이다. 디자인 또한 앱의 테마에 맞도록 커스텀하게 변경이 가능하여 스타일을 변경할 수 있다. 이 중에서 가장 필요했던 기능은 트위터 로그인(Log in with Twitter)인데, 기존의 트위터 로그인 인증시 사용자의 이메일을 알지 못했다. 이제는 사용자 동의를 통해서 사용자의 이메일을 수집할 수 있도록 기능을 제공해준다고 한다.

앞서 말한 모든 툴은 트위터에서 무료로 제공한다. 베타 버전 준비부터 서비스 오픈, 서비스 버그 관리, 사용자 분석, 개별 광고까지 모두 하나의 툴에서 할 수 있다는 점은 정말 놀랍다. 전화번호 인증, 크래시리틱스, 트위터의 타임라인 가쟈오기, 트위터로 공유하기, 앱에서 테마 수정 등 이 모든 툴을 사용하기 위해 필요한 것은 단 코드 몇줄이면 가능했다. 맥북 오른쪽 상단에 있는 패브릭 아이콘을 이용해서 베타 버전 배포를 위한 테스터 이메일 등록 후 배포, 툴을 사용하기 위핸 API 문서부터 코드까지 관리를 해주었고 코드를 복사/붙여넣기로 간단하게 개발할 수 있도록 되어 있었다. 패브릭은 개발자가 사용하는 개발 비용을 줄여주고 편리하게 개발할 수 있도록 정말 많은 노력을 기울였다는 생각이 들었고 많은 준비를 한 것 같다. 모바일 앱 개발자를 위한 정말 좋은 툴 하나가 나온 것 같다.

패브릭은 개발자 여러분이 사용하는 엑스코드(Xcode), 이클립스(Eclipse), 안드로이드 스튜디오(Android Studio), 인텔리제이(IntelliJ) 등의 IDE와 연동되어 있습니다. 패브릭은 또한 자동화된 코드 빌더와 테스트 툴과도 연동되어 있습니다. 덕분에 개발자 여러분은 키트의 업데이트에 대해 걱정할 필요가 없습니다. 패브릭이 업데이트가 올라올 때마다 여러분에게 알림을 줄 것이기 때문입니다. from 트위터 블로그

AWSome Day 한정판? 티셔츠와 수료증 받기

얼마전에 AWSome Day를 행사에 참여했다. AWSome Day는 아마존 클라우드 웹 서비스에서 지원하는 교육 프로그램으로 1년에 한번 열린다. 작년 행사 시기에 해외에 있었기 때문에 참여하지 못했고, 이번 행사때는 회사에서 지원해준 덕분에 출근 대신에 코엑스로 향했다. 회사 바로 앞이 코엑스라는 점, 사실 출근과 비슷하다.

평일이기 때문에 등록을 위한 줄을 선 분들은 모두 직장인들일 것이다. 많은 회사에서 AWS 교육을 지원하고 있는 것으로 보였고 네임택을 봐서나 경품 추천 때 불려지는 근무 중인 회사 이름은 대부분 우리가 알고 있는 대기업이었다. 등록은 이미 SNS로 보내준 태그로 쉽게 확인이 가능했고 경품 추천을 위해 명함을 한 부를 경품통에 넣고 입장했다. 이번 행사의 경품은 무선 마우스와 킨들로 나름 저번 자바 컨퍼런스에서 경품으로 주었던 리얼포스 키보드에 비해 소홀하다. 지금까지 경품을 받아본 이력은 사실 없다…

마련된 좌석이 부족할 정도로 많은 사람들이 행사에 참여했고, 모든 교육이수 후 한정판(?) 티셔츠를 준다는 Ash Willis의 환영사로 행사가 시작되었다. 환영사에서 행사의 개요와 일정은 다음과 같다.

첫 번째 스피커는 이국희 팀장님으로 AWS의 소개와 AWS 관리 콘솔의 간단한 사용법, 관리 콘솔의 보안 관련 기능 및 보안 기본 원칙에 대해서 이야기 해주셨고, 스피치에 비유를 빗대어 설명을 해주셔서 이해하는데 흥을 돋구었다. 클라우드가 나오기 전과 후를 비교하자면 전기, 수도와 같이 혁신적이다고 말했다. 또한 AWS 웹서비스를 컴퓨터와 비유하자면 CPU+RAM은 Amazon EC2, HDD는 EBS, 웹하드는 S3와 같다고 한다. 현재 회사에서 AWS를 사용하고 있기 때문에 설명을 이해하는데 어렵지는 않았다. 물론 스피커 분들이 설명을 아주 쉽게 자세히 설명해주었기 때문에 서비스를 처음 접해 보는 사람도 이해할 수 있을 것 같았다

가장 대표적인 서비스 EC2에 대해서는 검색을 해본다면 더욱 자세한 자료를 얻어 볼 수 있지만, 현재 교육 수료자인 본인이 직접 기억하는 바로는 용량 조절이 가능한 가상 서버이며 컴퓨터 리소스에 대한 제어가 가능한 인스턴스이다. 서버 인스턴스를 획득하여 부팅하는데 필요한 시간을 수분내로 단축시킴으로써 개발자가 개발 환경 구축을 위한 시간을 줄일 수 있다. 실제로 이미 t1.micro를 사용해본 경험상 쉽게 인스턴스 즉 서버를 만들고 실행하는데 수분내로 가능하다. 또한 운영체제의 선택과 운영 요금의 경우 사용자 본인이 선택할 수 있으며 사용하지 않을 경우는 잠시 꺼두어 절약이 가능하다. 예를 들어 말하자면 수도꼭지를 잠그지 않고 외출을 한다면 한달 후 통지서에 폭탄을 맞은 금액을 받아 볼 수도 있으니 사용하지 않을 땐 반드시 잘 잠그어야 한다고 충고를 덧붙여주셨다.

2교시는 양승도 수석님이 S3에 대해서 설명해주셨고 시작전 “AWS 스토리지는 빨간색 표현한다” 이것만 기억해달라는 당부의 메시지도 전했다. S3를 간단히 설명하자면 우리가 흔히 사용하는 HTTP나 HTTPS로 액세스가 가능한 스토리지이며 오브젝트로 저장, 조회가 가능하다. 특히 기억나는 것은 내구성이다. Eleven Nine을 강조하셨는데 11개의 9 소수점까지의 내구성을 보장한다고 한다. 예를 들면 10000개의 오브젝트트를 100만년 저장한다면 1개를 잃어버릴 확률이 이에 해당한다. 이외에도 오브젝트를 담기 위한 버킷을 만들기 위해서는 유일한 이름을 지정해주어야 한다고 당부했다.

행사에 참여해서 기록한 교육 내용은 이곳에서 모두 설명하기엔 많으므로 1교시와 2교시에 대해 간단히 이야기를 했고 나머지는 네트워킹과 데이터베이스 마지막으로 관리 및 배포를 수강했다. 이 강의가 좋은 점은 바로 설명을 중간에 스피커 분들이 직접해주시는 시연이다. 직접 관리 콘솔에서 하나씩 설명을 덧붙여 클릭으로 실행해주셔서 이해하는데 도움이 되었다.

현재 AWS 웹서비스에서 제공하는 서비스들이 무수히 많기 때문에 대표적인 몇 가지에 대해서만 자세히 설명을 해주었고 이외에 필요한 정보들은 http://aws-training-apac.com 에 접속하여 동영상과 자료를 볼 수 있다고 한다. 이렇게 5교시 까지 모든 세션 교육과정이 끝이난다.

마치 하루 동안 5개의 대학 수업을 들은 느낌이 들었지만, 실제로 하나씩 다 사용해보고 싶은 생각이 들었다. 바로 이것이 이 교육이 추구하는 목표가 아닐까라는 생각을 하면서 문을 나서는데 눈앞에 보이는 것은 바로 수료증과 한정판(?) 티셔츠를 받기 위한 긴 줄이다. 6교시가 남은 기분이다. 교육도 교육이지만 무엇보다 직접 해보는 것만한 것은 없다. 만약 신규 회원 가입을 하게 되면 1년간 일정량씩 모든 서비스를 사용해 볼 수 있는 기회가 주어진다. 그 기회를 이용해 관리 콘솔에서 직접 해보는 것이 가장 큰 공부가 아닐까 생각한다.

[Andorid] Gradle Test Case 개발시 겪은 에러

이전 글 처럼 우연히 TDD에 대해서 알게되었고, 그에 관해 공부해보고 싶은 마음에 시작했다. TDD란 의미는 테스트를 기반으로 한 개발방법론이기 때문에 현재 내가 진행중인 프로젝트에 적목해 보기가 쉽지 않았다. 그로 인해 기본 프로젝트에 맞는 Test Case 개발을 진행해 보면서 겪은 문제점들에 대해서 적으려고 한다.

ActionBarActivity 사용시 겪은 에러

@Test
public void createAdapter() throws Exception{
    MainActivity activity = Robolectric.buildActivity(MainActivity.class).create().get();
    assertThat(activity, notNullValue());

MainActivity를 생성하는 과정에서 NullPointerException 에러가 발생한다. 그 이유는 MainActivity가 ActionBarActivity를 상속을 받고 있기 때문이었고 Activity를 상속 받게 되면 에러는 발생하지 않았다. 이를 위한 해결책으로 activity를 생성하고 사용하는 함수들 위에 @Test와 마찬가지로 @Config(reportSdk = 10)을 다음과 같이 선언해 주어야 한다.

@Test      @Config(reportSdk = 10)
public void createAdapter() throws Exception{
        MainActivity activity = Robolectric.buildActivity(MainActivity.class).create().get();
        assertThat(activity, notNullValue());

이유를 명확히 하기 위해서 찾아보았지만 자세한 이유에 대해 찾기가 어려웠다. 이후에 자세히 알게 된다면 다시 적을 예정.

Andorid Studio, Gradle 테스트 셋팅하기

4주 전쯤 서울에서 Vingle과 함께 하는 ‘가을밤의 코딩이야기’에 다녀왔습니다. 행사의 주제는 현재 Vingle에서는 어떻게 프로젝트를 진행하고 있는지에 대해 알려주는 자리였습니다.

TDD & Agile in Vingle

50명 정도를 초대하는 자리였지만 200명 이상이 지원했다고 합니다. 행사 이후에 실제로 어떻게 개발하는지 웹, 안드로이드, 아이폰으로 세션을 나누어 Vingle 개발자들분들이 직접 TDD로 개발하는 방법을 알려주는 자리를 가졌습니다. 그래서 이번에 배워온 것들을 기반으로 Android Studio 설치도 해보고 TDD 개발을 위한 셋팅을 일주일 가량 걸려서 해보았습니다.

Android Studio 에서는 기본으로 프로젝트를 생성하거나 기존의 프로젝트를 가져올 때 Gradle로 가져옵니다. 전 기존의 프로젝트를 가져오는 것을 목표로 셋팅을 했구요. 그래도 기본 부터 알아야 셋팅을 할 수 있을 거라 생각해서 Robolectric, Gradle 설정 부터 시작했습니다.

Gradle은 기본적으로 build.gradle 이라는 파일에서 라이브러리 설정이나 프로젝트 관계 설정과 같은 전체적인 프로젝트 설정을 담당하고 있습니다. 사실 Maven으로 설정을 시작해보려다가 요즘엔 Maven에서 Gradle로 넘어오는 추세라고 해서 그냥 일일이 찾아가며 설정을 했구요. 시작해보도록 하겠습니다.

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
        // 추가할 부분
        classpath 'com.github.jcandksolutions.gradle:android-unit-test:1.0.+'

    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 17
        // 추가할 부분
        packageName "com.kevin.tddtest"
    }
}

apply plugin: 'android-unit-test'

dependencies {
    repositories {
        mavenCentral()
    }

    compile 'com.android.support:support-v4:18.0.0'
    compile 'com.android.support:appcompat-v7:+'

    // 추가할 부분
    // test 관련
    testCompile 'junit:junit:4.10'
    testCompile 'org.robolectric:robolectric:2.1.+'
    testCompile 'com.squareup:fest-android:1.0.+'
}

그리고 여기에서 Robolectric 을 왜 사용하는가 하면 Android에서 기본적으로 제공해주는 UnitTest Framework는 실행시 시간이 오래 걸리는 단점이 있기 때문에 이를 보완한 Robolectric을 사용합니다. packageName 또한 잊지 말고 프로젝트 생성할 때 넣어준 프로젝트 패키지 이름을 적어주면 됩니다. 또한 build.gradle 파일은 컴파일 할 때 순서를 의미하기 때문에 정확하게 입력해야 오류를 최소화 시킬 수 있어요. 특히 apply plugin: ‘android-unit-test’를 꼭 추가하셔야 합니다.

이렇게 셋팅을 하고 나면 설정한 라이브러리를 가져오기 위해서 상단 메뉴에 위치한 Sync 버튼을 눌러서 작성한 스크립트가 적용될 수 있도록 합니다. 그러면 왼쪽 프로젝트 하단에 있는 External Libraries에 많은 라이브러리들이 자동으로 추가가 될거에요.

그리고 테스트 패키지를 만들기 위해서 다음과 같은 구조가 되도록 패키지를 만들어야 합니다.

Project Root

+  My Application

  +– src

  |   +– main

  |   |   +– java

  |   |   +– res  

  |   |   \– AndroidManifest.xml

  |   ㅏ— test    

  |   |   +— java      <-------------- Mark Directory As 에서 Test Source Root로 바꿔줍니다

  +– build.gradle

|– build.gradle

ㄴ–settings.gradle

이해가 되지 않으신다면 main가 같은 폴더 안에 test 폴더를 만드시구요. test 폴더 안에 다시 java폴더를 만드시면 됩니다. My Application에 있는 build.gradle은 비워두시면 됩니다. 이렇게 기본 설정을 마쳤는데 아직 많은 내용이 빠진 것 같아서 여러번의 수정이 필요할 것 같습니다. 저도 LittleInnov 님이 올려 놓으신 블로그를 참고해서 설정을 했거든요. 많은 도움 주셔서 감사합니다.

LittleInnov 님 블로드 주소 : http://valley.egloos.com/viewer/?url=http://deepseadk.egloos.com/1795460

JUnit Test Code

import org.junit.Before;
import org.junit.Test;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

/**
 * Created by kevin on 2013. 11. 8..
 */

// jUnit Test
public class RobolTest {
    int a;
    int b;

    @Before
    public void setUp() {

    }

    @Test
    public void testRobolTest2() {
        assertThat(1, is(1));
    }

    @Test
    public void testRobolTest1() {
         assertThat(1, is(1));
    }
}

Robolectric Test Code

package com.kevin.tddtest;

import org.junit.runners.model.InitializationError;
import org.robolectric.AndroidManifest;
import org.robolectric.AndroidManifestExt;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.res.Fs;

/**
 * Created by kevin on 2013. 11. 8..
 */
public class RobolectricGradleTestRunner extends RobolectricTestRunner {
    public RobolectricGradleTestRunner(final Class<!--?--> testClass) throws InitializationError {
        super(testClass);
    }

    @Override
    protected AndroidManifest getAppManifest(final Config config) {
        final String manifestProperty = System.getProperty("android.manifest");
        if (config.manifest().equals(Config.DEFAULT) && manifestProperty != null) {
            final String resProperty        = System.getProperty("android.resources");
            final String assetsProperty     = System.getProperty("android.assets");
            final String packageProperty    = System.getProperty("android.package");

            final AndroidManifestExt a  = new AndroidManifestExt(Fs.fileFromPath(manifestProperty), Fs.fileFromPath(resProperty), Fs.fileFromPath(assetsProperty));
            a.setPackageName(packageProperty);
            return a;
        }
        return super.getAppManifest(config);
    }
}

org.robolectric 패키지 생성 후 AndroidManifestExt 생성

package org.robolectric;

import org.robolectric.res.FsFile;

/**
 * Created by kevin on 2013. 11. 8..
 */

public class AndroidManifestExt extends AndroidManifest {
    private static final String R = ".R";
    private String mPackageName;
    private boolean isPackageSet;

    public AndroidManifestExt(final FsFile androidManifestFile, final FsFile resDirectory, final FsFile assetsDirectory) {
        super(androidManifestFile, resDirectory, assetsDirectory);
    }

    @Override
    public String getRClassName() throws Exception {
        if (isPackageSet) {
            parseAndroidManifest();
            return mPackageName + R;
        }
        return super.getRClassName();
    }

    @Override
    public String getPackageName() {
        if (isPackageSet) {
            parseAndroidManifest();
            return mPackageName;
        } else {
            return super.getPackageName();
        }
    }

    public void setPackageName(final String packageName) {
        mPackageName = packageName;
        isPackageSet = packageName != null;
    }
}

글로벌 해커톤 AngelHack Seoul 참여

6월 8-9일, 2일간의 길었던 기획자·개발자 디자이너 파티

저번 주 토요일, 서울에서 열린 세계 최대 개발자 파티로 알려진 ‘엔젤핵’에 참여했다. 기획자와 개발자, 다자이너로 팀 빌딩을 한 다음 24시간 동안 함께 프로젝트를 진행한다. 2일 동안에는 식사와 간식이 계속해서 제공되고, 모두가 2일 동안 마음껏 실력을 발휘할 수 있도록 좋은 환경을 제공해주었다. 이번 해커톤에는 생각보다 많은 외국인들이 참여했었고, 앞에서 피티나 스피치를 할 때 많은 사람들이 용기를 내어 영어를 사용했다.

팀을 미리 구성해서 참가 할 수 도 있고, 또한 윗쪽 사진(행사 6층)처럼 개발시작 이전에 기획자·개발자 디자이너 자신이 가져온 아이디어를 소개하거나, 개발자나 디자이너가 직접 기획자를 찾아가 아이디어를 자세히 듣고 나서 팀이 구성 되었다. 보통 팀 구성을 보면 3~5명, 많게는 6명 정도까지 팀을 구성한다. 이렇게 팀 빌딩이 프로젝트 시작을 알리기 전까지 계속 되며 많은 사람들이 돌아다니며 자유롭게 이야기를 나눈다, 이렇게 팀 빌딩이 마무리가 되면 오후 1시 정식으로 행사 시작을 알리고 본격적인 게임이 시작된다.

시작과 동시에 스폰서를 하고 있는 회사들의 개발 주제를 소개하는 워크숍이 열렸고 15분 가량 참가한 사람들에게 자신들의 개발 주제에 대해서 소개하고 개발자들과 이야기를 나누는 시간을 가졌다. 스폰서로 참여한 기업들은 삼성전자, SK플래닛, 아마존, VATOS, 블랙베리 등……등…. 자사의 API에 대해서 소개하고 이를 이용할 경우 특별한 상을 받을 수도 있다는 내용이었다.

현재 기업들이 준비된, 또는 준비하고 있는 서비시들을 참여한 개발자들이 이용할 수 있도록 자세하게 설명을 해주며, 궁금한 점이 있으면 별도로 연락을 해서 궁금한 사항을 물어볼 수 있다. 물론 이렇게 스폰서가 제공하는 주제를 사용하지 않고 자신들의 개인적인 아이디어로 프로젝트를 진행해도 문제는 없다.

저녁시간에는 이태원에서 유명한 바토스에서 제공한 브리또와 타코를 먹었는데 미국에서 먹어본 브리또, 타코와는 다르지만 정말 맛있었다. 바토스 또한 실제로 작은 스타트업이었다고 하는데 지금은 규모가 큰 레스토랑이 되었다고 한다. 저녁을 먹은 후 많은 인원들이 빠져나가서 남은 사람들 중에는 의자에서 자는 사람, 책상을 붙여서 자는 사람, 개발에 여전히 집중하는 사람 등 정말 재밌는 구경거리가 있었다. 우리 팀도 잠 한 숨 안자고 개발에 매진했고, 마무리가 되어 갈 때쯤 이미 해는 중천에 떠있었다.

일요일 오후 1시 작업이 종료되었고 팀별로 심사위원들에게 결과물 발표를 하는 시간을 가졌다. 1, 2등은 해외 실리콘 밸리를 일주일간 보내주는 기회를 가질 수 있다. 심사를 받기위해 방에 들어갔고, 유명한 분들이 심사위원으로 앉아 있었다. 4분 정도? 그리고 한 분씩 차례대로 질문을 했었고, 질문이 어렵지는 않았다.

심사가 끝나고 마지막으로 시상식, 이전 심사를 통해 선발된 6팀이 2분간 심사위원과 참여한 모든 사람이 있는 앞에서 작품 결과에 대해서 프리젠테이션하는 시간을 가졌다. 6팀을 발표하는데 거기에 우리팀도 불려졌다. 팀의 대표가 정해진 시간 2분동안 자신의 팀에서 만듬 제품에 대해서 설명했고, 심사위원 중에는 절반이 외국인이었기 때문에 피티 또한 영어로 진행되었다. 한 팀씩 피티를 들어보니 다들 아이디어가 창의적이고 열정이 대단하다. 우리 팀도 5번째로 발표를 마쳤고, 최종 발표를 남겨두고 있었다.

결과는 아쉽게도 3등을 해서 넥서스4를 받았지만, 더 좋은 팀들이 많았기 때문에 생각하지 못한 상이라 너무 감동을 받았다.

시상식이 끝나고 대회를 마무리 하기 위해서 에프터 파티가 압구정역에서 있었다. 특이한 행사는 제한된 시간내에 문제를 해결하는 음주 코딩, 문제로는 여자의 이름과 번호로 구성된 16진수 코드를 푸는 것이었는데 일정 시간마다 술은 한잔씩 원샷해야하는 남자들을 위한 세기의 대결로 해커톤은 마무리가 되었다.

[San Francisco] 도시 전체가 아름다운 샌프란시스코, 두 번째 이야기

Palace of Fine Arts

This palace of Fine Arts built for the 1915 Panama-Pacific International Exposition, is beloved by locals and visitors for its unique architecture and peaceful setting

금문교로 가던 가다 보면 우측에 아주 웅장하고 둥근 지붕을 가진 성 같은 건물을 볼 수 있다. 본래 가기로 예정된 곳은 아니지만 인터넷으로 찾아 보니 유명한 장소였다. 도착해서 보니 정말 크고 웅장하다. 그리고 아름답다. 성 주위로 작은 호수와 새들이 볼 수 있는 공원도 있다. 별다른 입장료를 받는 곳은 아니다. 호수 옆 잔디에는 사람들이 누워서 책도 보고 저마다 여유를 즐기는 모습이 눈에 들어왔다. 저 여유 부럽다. 갈망하던 삶이 아니었던가. 보기만 해도 마음이 한결 평화로워진다.

그림 같은 도시 이 곳 샌프란시스코의 매력에 더 빠지는 것 같다.

Coit Tower

그 다음 장소는 바로 코잇 타워다. 람바르다 스트릿에서 볼 수 있는 타워다. 전망대가 있어서 밤 야경을 보기 위해 가보려 했지만, 다른 일정이 있어서 다른 선택권은 없었다. 샌프란시스코는 생각보다 크지 않기 때문에, 여행 코스를 사전에 잘 계획한다면, 쉽게 찾아가서 구경할 수 있다.

이 타워는 어느 유명한 부자가 많은 돈을 시에 기부 하면서 그것을 기념하기 위해 세운 것이 코잇타워다. 그리고 타워가 당시 순직한 많은 소방관들을 기리기 위해서 소방 호수의 끝 부분을 본 떠 만들어졌다고 한다. 그 뜻을 알고 나니 느껴지는 감정이 다르다. 높은 전망대까지 올라 가려면 입장료를 내야하고 가격은 10~20불 사이었던 것으로 기억하는데 정확하지는 않다.

전망대를 올라가면 샌프란시스코를 다양한 각도에서 즐길 수 있다. 다운타운, 알카트라즈 교도소, 금문교 어느 하나 빠짐 없이 볼 수 있는 샌프란시스코의 최고 전망대라 불릴 만 한 것 같다.

구경 중 우연히 한 남성이 여성에게 청혼하는 모습을 보았다. 남자가 무릎을 꿇고, 여자 분에게 반지를 끼워주며 청혼하는 모습에 많은 사람들이 박수를 보내주었다. 너무 아름다운 모습이다.

영화 ‘더록’에서 나와 유명해진 알카트라즈 섬, 섬 안에는 교도소가 있는데 항구까지 2마일이 안되는 거리지만  단 한명도 탈옥에 성공하지 못할 정도로 물의 유속이 빠르다고 한다.

샌프란시스코는 6~7개의 언덕이 있으며 그 위는 많은 집들이 마치 모내기 판 처럼 그룹지어 지어져 있다. 언덕에 사는 사람들은 주로 패스를 구매해서 전차를 이용한다고 한다.

Alamo Squre

알라모 스퀘어(Alamo Square)는 사람들이 모여사는 거주지역이고 바로 앞에 공원이 있어서 강아지와 함께 노는 사람들도 많았다. 그리고 흔히 ‘페인티드 레이디스(Painted Ladies)라는 별명을 가지고 있었다. 그리고 이 곳은 많은 영화, TV쇼 등이 많이 촬영되어 대중들에게 널리 알려진 곳이다. 가족이 함께 미국에서 살 수 있는 기회가 있다면 그 곳은 샌프란시스코였으면 좋겠다는 생각이 들었다.

Cable Car

유니온스케어에서 Market St 중앙길로 걸어 내려가면 케이블 카를 탈 수 있는 곳이 나온다. 사람들이 줄 서 기다리고 있으면 바로 그 곳이다. 여기에서 2가지 방향의 케이블 카를 타실 수 있다. 다운타운을 한 바퀴 돌아보고 싶다면 가격이 비싸지 않기 때문에 한번 타보는 것도 좋은 경험이 될 것 같다.

케이블카를 타기 위해서는 줄 서기전 표를 구매해야 한다. 가격은 One way에 6불이었고 Two way는 12불, 하루 동안은 15불이었다. 비싼 주차비에 비하면 싼 가격이기 때문에 하루권을 구매해서 샌프란시스코를 돌아다닌 다면 괜찮은 가격이라고 생각한다.

처음 전차를 타면 신기하고 밖을 구경하느라 정신이 없다가도 막상 오른막길을 천천히 올라가면 불안해진다. 샌프란시스코의 언덕은 상상 이상이기 때문이다. 그래도 천천히 안전하게 운행되기 때문에 걱정은 하지 않아도 된다.

대부분 사람들이 알다시피 샌프란시스코의 물가는 다른 도시에 비해 비싸다. 샌프란시스코에서 괜찮은 호텔은 가격이 비싸기 때문에 우리는 공항 근처에 있는 Inn을 예약했다. 숙박 예약은 Expedia 통해서 했고, 시간 내어 찾아보면 조식을 제공하면서 가격까지 저렴한 곳이 많다. 여행을 한다면 여러 채널로 검색해보고 저렴한 곳으로 예약하면 된다. 호텔 체크인할 때 예약자의 이름과 여권의 이름을 확인하기 때문에 신분증이 반드시 필요하다.

공한 근처 Inn에서 숙박을 하고 샌프란시스코를 둘러보기 위해 아침을 먹고 러시아워를 피하기 위해 일찍 길을 나섰다. 숙소에서 샌프란시스코까지 걸리는 시간은 약 30분 정도 소요된다.

Twin Peaks

마지막으로 샌프란시스코의 전체를 감상하게 위해 다녀온 곳은 ‘앞서 말한 Coit TowerTwin Peaks이다. Coit Tower 같은 경우에는 전망대에서 360도로 볼 수 있었다면 트윈 픽스에서는 한 뷰에 다운타운의 main st부터 금문교까지 한꺼번에 볼 수 있다.

언덕에 도착하면 정면으로 샌프란시스코를 한번에 즐길 수 있다. 다운타운 뿐만 아니라 금문교까지 볼 수 있고 사진 촬영하기에는 정말 좋은 곳이다. 그리고 금문교 가기전에 금문교의 상태를 확인할 수 있는 장소라고 생각한다.

[IT나들이] 실리콘 밸리(Silicon Valley) 세 번째 이야기

세 번째 이야기의 시작은 Google 본사 방문이다. 오래전 부터 꿈꿔온 Google 미국 본사 방문이 바로 오늘! 아침부터 기분 좋은 설렘이다. 게다가 오늘은 날씨까지 아주 좋다. 구글 엔지니어와 점심 약속을 했기 때문에 오늘은 아침에 조금 더 여유를 가질 수 있었다.

네비가 알려주는 곳을 따라 운전하다 보니 표지판에 Google이 보였다. 미국은 돈을 내서 회사 앞 길 이름을 바꿀 수 있다고 한다. 그래서 어느 도시를 가든 가장 많이 볼 수 있는 길 이름은 도요타길, 내가 사는 곳 바로 옆 길도 도요타 길이다. 한국을 예로 들자면 삼성 본사가 있는 강남역 앞의 도로 강남대로를 삼성길로 바꾼거라고 볼 수 있다. 이제 사진으로만 볼 수 있던 구글 본사를 볼 수 있다고 생각하니 믿기지가 않는다. 구글 색이 들어간 파라솔, 뷔페식 식사가 머리속에서 떠올랐다.

주차를 하고 찍은 첫 사진, Google이라는 큰 간판이 있는 건물에 도착했다. 그 옆에는 구글러가 타고 다니는 구글 자전거까지, Here is Google Headquater!

다른 회사와는 다르게 구글 본사 주위에는 일반, 단체 방문객들로 붐비는 것을 볼 수 있었다. 구글이 다른 본사들 보다는 일반인들에게 더 많이 오픈 되어 있는 것 같다는 생각이 들었다. 그 만큼 본사 주위에 구글을 상징하는 조형물들로 잘 꾸며져 있고 구글 자전거도 일반인들이 탈 수 있다고 한다. 점심 먹고 산책할 때 저녀석을 사용해야겠다.

구글 엔지니어와 만난 후 방문객 태그를 받고 점심을 먹기 위해 식당으로 향했다. 식당앞 셔터앞에서 사람들이 우르르 기다리고 있었는데 점심시간이 되면 셔터가 열리면서 식사가 시작된다. 나라별로 음식들이 나눠져 있는데 피자, 파스타, 샐러드, 햄버거… 커리 없는게 없었다. 정신 없이 이것저것 적당히 담아 나와 파솔에 앉아서 점심을 먹었다. 식사 중에는 어떻게 구글에 들어오게 되었는지 과정도 들어보고 구글에서 어떤 일을 하는지 이야기를 들으면서 디저트로 식사를 마쳤다.

식사를 마치고 주변을 돌아보던 중에 안드로이드의 버전 별로 특유의 조형물들이 모여 있었고, 하나의 새로운 안드로이드 버전이 나오면 조형물이 설치 된다고 한다. 자전거를 타고 주변을 돌면서 이것저것 구경을 하고 티셔츠와 텀플러, 머그컵 등 기념품을 사고 구글 방문을 마쳤다. 구글의 경우 본사의 규모가 정말 크기 때문에, 자전거를 타고 한 바퀴 돌면서 사진도 찍고, 구경하다 보면 하루를 보낼 수 있을 것 같다.

구글 방문 후 간 곳은 페이스북, 그런데 전날 찾은 주소가 페이스북 본사 이전하기전 주소였다. 도착해서 보니 분명, 페이스북으로 검색했을 때 보았던 건물들, 공장 건물을 리모델링해서 페이스북 사무실로 사용했던 곳이었는데 지금은 다른 개인이 사무실로 사용하고 있다고 한다. 다시 검색해서 새로운 주소를 얻어 다시 30분을 달려 Thumbs up(좋아요)이 보이는 새로운 본사 건물에 도착할 수 있었다.

도착은 했지만 사람 한명도 다니지 않고 보이는 건 건물 뿐이었다. 조금 당황스럽기도 했다. 왠지 사막에 온 것 같은 느낌? 건물 주위에는 경비원들이 순찰을 돌고 있었서 오래 있지 못하고, 다시 오게 된다면 꼭 건물 안을 들어가봐야겠다는 다짐과 함께 그냥 돌아서야 했다.

마지막으로 간 곳은 세계 최고의 스탠포드 대학교로 향했다.

스탠포드 대학 앞 길, 수 많은 식당들 중에서 사람들이 많은 곳을 선택해 들어갔는데 파스타 맛 또한 괜찮았다. 역시 사람들이 많은 식당은 맛은 보증이 된다. 식사 후 대학안에 주차하고 걸어서 스탠포드 대학을 둘러보았다.

스탠포드 대학의 규모가 워낙 크기 때문에 우리가 돌아 본 곳은 스탠포드 대학교에서 중앙의 일부라고 생각된다. 분수대, 탑, 도서관 건물을 돌아보니 정말 건물들이 오래되었지만 우아했다. 걷다가 주변을 보면 잔디에 주워서 책을 보는 사람, 자전거를 타는 사람 그리고 조깅을 하는 사람등 운동하는 학생들이 정말 많았다. 수업을 마치고 운동을 하는가보다. 한국 대학생활은 어떠한가? 바로 앞이 대부분 술집, 피시방, 당구장과 같은 곳이 많아서 수업이 끝나면 현실 도피를 위해 즐겨 찾는데, 한국과 비교해 보자면 미국 학생들의 얼굴에는 여유가 있어 보인다. 이렇게 3일 간의 실리콘 밸리 여행을 마치고 다음 여행 ‘샌프란시스코’로 떠났다.

수정됨

한국으로 귀국 후 실리콘 밸리로 다시 돌아 갈 수 있는 기회가 생겼고, 다시 실리콘 밸리를 방문 했을 때는 페이스북과 구글 등 여러회사를 더욱 자세히 볼 수 있었다. 내가 이 글을 쓰면서 했던 다짐이 기회가 된 것이 아닐까? 주변만 보고 돌아서야 했던 페이스북을 황량한 사막 같다고 생각했었는데, 그것은 나의 실수, 새로운 버전의 기업 방문기를 적을 예정이다.

[Los Angeles] LA 다져스에서의 류뚱 첫 승

LA Dodgers Stadium

류현진 선수가 LA Dodgers에 입단 후, 첫 번째 경기를 손 꼽아 기다렸는데 그 경기를 놓쳐서 정말 많이 아쉬웠다. 젠장… 얼마나 아쉬웠는지… 그래서 두 번째 선발 확정 후 표를 구매했고 미국 와서 처음으로 다져스 스터디움(Dodgers Stadium)을 갔다. 부산 출신이라 롯데를 좋아라 하지만 본래 경기 시간이 긴 야구에 빠져 살지는 않아서, 부산에서도 롯데 경기를 손에 꼽힐 정도로만 가봤었다. 그래도 사직구장의 경기장 규모를 알터, 다져스 구장은 정말 어마어마 했다. 주차장부터 스케일이 다르다. 경기장 하나를 더 지어도 될 정도?였던 것으로 기억한다.

표는 친구가 지인을 통해서 구해왔고, 2층 루프가 1층의 우리 좌석을 살짝 덮어주고 있어서 쨍쨍한 햇빛은 피해서 경기를 관람할 수 있었다. 이것도 운인가보다. 아니였으면 오늘 같은 날은 살이 익었을 지도 모른다.

으리으리한 다저스 전광판, 주차장에서 주차요원이 시키는 대로 주차하고 사람들이 우르르 가는 쪽으로 가다보면 입구를 쉽게 찾을 수 있다. 표 검사를 마치면 바로 구장으로 들어 갈 수 있었다.

경기 시작전 애국가가 울리고, 경기장의 사람들 환호를 직접 느껴보니 미국의 시민의식이 정말 대단하다. 본받아도 될 듯하다. 그러고 보면 애국가가 나올 때 힘차게 불러보던게… 언제였을 까.

류현진 선수가 소개되자 한국인들이 많아서 그런지 환호가 다른 잘하는 선수들 못지않게 환호 소리가 뻥뻥! 정말 크다. 정말 같은 나이지만 류뚱 멋지다. 한국을 널리 알려주는 멋진 선수가 있기에 한국인이라는 자랑스러웠다. 무엇보다 다저스 구장에 어마어마한 한국인들이 있다는 것을 실감할 수 있다.

실감할 수 있었던 것은 바로 1회 부터 2점 홈런을 맞았다. Damn!! 좌절이다. 내가 이 경기를 보기위해 얼마나 기다렸거늘. 옆 친구도 실망했는지 말 없이 조용히 자리에서 일어났고, 돌아온 그의 손에는 핫도그와 맥주가 있었다. 속상했나보다. 맥주 없이는 관람이 안되겠거늘 했나보다.

그래도 스포츠에서 무슨 경기든 반전은 있는 법. 그 반전 오늘 보여달라고 류뚱에게 외쳤더니 다행히 1회말 2점을 뽑아내면서 경기는 다시 원점으로 돌아갔다. 결국 승부는 6대 2 ~ 류뚱이 첫 승을 볼 수 있는 기회를 나에게 주었다. 한국 돌아갈 날이 얼마 안남은 나에게 주는 선물이었을까? 아무튼 너무 감사하다.

유니폼에 별로 관심이 없었지만 그래도 류뚱의 흔적을 보기 위해 스토어를 찾았고, 여기까지 왔는데 류뚱 유니폼 가격이나 알아봐야겠다는 생각으로 봤더니 가격이 엄청나다. $250불이 넘는 가격이다. 과감히가 아닌 쉽게 구매 포기했다. 빠른 포기가 때론 평온을 가져다 주는 법. 그래도 첫 승을 본 것으로 만족하자.

[San Francisco] 도시 전체가 아름다운 샌프란시스코, 첫 번째 이야기

금문교 – Golden Gate Bridge

샌프란시스코를 갔다 왔다는 이야기를 듣는 다면 첫 번째 질문은 “금문교 보셨어요?” 일 것이다. 샌프란시스코를 여행하는 사람이라면 꼭 가보는 첫 번째 장소가 바로 이 곳이다. 샌프란시스코는 날씨 변화가 심하기 때문에 갑작스러운 물 안개로 가까이 또는 멀리서 금문교를 볼 수 없는 상황이 자주 발생한다.

여행 첫 째날은 운이 좋게 다리 밑으로 물안개가 껴서 새로운 금문교를 볼 수 있었지만 깨끗한 다리를 못 보는 것이 많이 아쉬웠다. 여행 셋 째날, 물안개가 낀 금문교를 봤지만 아쉬움이 남아 발걸음이 다시 금문교로 향했다. 이번에는 아주 깨끗한 금문교와 멀리 서 보이는 샌프란시스코 다운타운까지 볼 수 있어 한결 마음이 놓였다.

블루버스 – Blue Bus

샌프란시스코를 전체적으로 한 바퀴 돌아보기 위해서 도시 순환버스를 알아 보았더니 가격이 하루 $30 훨씬 넘었다. 유니온 스퀘어에서 맛본 첫 번째 좌절이다. 유니온 스퀘어에 가면 버스 티켓을 살 수 있고 코스가 다른 3가지의 버스가 있다. 그 중에서 선택한 버스는 블루버스! 어떻게 흥정을 하다보니 $25 로 탈 수 있었다. 배차 간격은 정류장마다 20~30분 사이에 한 대씩 다닌다고 한다. 가장 많은 버스는 레드버스 – Red Bus였고 가격이 비쌌지만 배차간격이 10분으로 훨씬 짧다. 블루버스를 타본 경험으로는 이 버스도 이용하는데 불편함은 없었다. 다만 버스를 타기전에 어디를 들릴 것 인지 잘 고민만 해서 간다면 좋은 선택이 될 것이다.

롬바르드 길 – Lombard Street

이번 여행에는 자차로 이용했고 숙소를 돌아 가기 전에 높은 곳에서 금문교를 보고 싶어서 언덕을 넘다보니 많은 관광객들이 웅성웅성 서있었다. ‘이 곳도 유명한가 보구나’. 그 곳은 여행 전 가볼 예정이었던 롬바르드 길이다. 높은 언덕이라 그런지 동서남북 어딜 봐도 길이 시원시원하게 일직선으로 이어져 있었다. S자 꽃길로 유명한 롬바르드 스트릿, 하지만 11월이라 꽃은 볼 수 없었다. 언덕이 생각보다 엄청 가파르기 때문에 자차를 이용한다면 조심해서 운전해야 한다.

이 길은 왠지 마음에 쏙 드는 여행장소다. 게다가 꽃 피면 정말 예쁘겠다는 생각이 계속들었다.

피어 39 – PIER 39

샌프란시스코라고 하면 빠질 수 없는 PIER 39에 도착했다. PIER39 하면 피셔맨스 와프 – Fisherman’s Warf에 많은 레스토랑과 볼 거리가 있는 장소다. 그리고 여기에서는 알카트라즈 교도소가 가깝게 보인다. 가지고 있던 여행책에 나와있는 곳 중 하나다. 이 곳에서 보아야 하는 한 가지 더는 바로 바다사자다. 하지만 들어서는 입구부터 지독한 냄새가 진동한다.

범인은 바로. 묵직한 아름다운 몸매를 과시하며 누워있는 바다 사자다. 귀여운 생김새를 가지고 있지만 자신의 영역을 차지하기 위해서 서로를 밀치며 싸우는 모습을 흔히 볼 수 있다.

PIER 39를 나와 오른쪽으로 걸어가다 보면 식사 시간에 많은 사람들이 모여있는 모습을 바로 찾을 수 있을 것이다. 음식을 사서 앉아서 먹는 관광객들, 음식이 나오길 기다리는 엄청난 줄도 있다.

길을 걷다보면 싱싱한 게와 새우 같은 해물을 전문으로 하는 많은 레스토랑들이 있었고 입구 쪽에 보면 길에서 사서 먹을 수 있도록 크램차우더를 파는 곳이 많았는데, 사실 레스토랑에서 먹는 가격이랑 차이가 없어서 앉아서 편하게 먹기 위해 레스토랑에서 들어갔다.

한번 먹어 보고 싶었던 크램차우더다. 맛은 참 맛있었다. 그렇지만 느끼하기 때문에 2명 당 하나를 먹어도 충분할 것 같다는게 개인적인 생각이다.