풍문으로만 듣던 Golang. 황무지에 꽃을 피우자.

벤치마크-'Go 언어. Golang.'

(출처 : http://www.techempower.com/benchmarks/#section=data-r9&hw=i7&test=json)

'Go가 이렇게 빠르다고?'
JSON serialization에서 특히 강세를 보이고, 다른 테스트에서도 상위권을 차지하는
이 벤치마크 결과를 본 후 Go 언어에 본격적인 관심을 두게 되었다.

웹을 주로 다루는 개발자의 관점에서 Go 언어의 첫 느낌.
그동안 많은 개발자의 사랑을 받은 자바, 파이썬, 루비, PHP 등엔 필요한 도구들이 이미 개발되어있다.
농사로 치자면 이런 언어들엔 트랙터와 콤바인은 물론, 이앙기와 탈곡기 등 필요한 도구가 다 잘 갖춰있다.
그런데 Go 언어로 개발하려니, 삽 한 자루로 굳은 땅을 개척해야 하는 느낌이었다.
와. 진짜.
잡초 조차 보기 힘든 황무지에 삽 한 자루 들고 발을 디딘 느낌이란...
참으로 막막하지만, 소로우가 살던 월든 호수를 동경하는 개발자로서 이런 황무지가 왠지 끌린다.
이 황무지 Go언어를 근 일 년 정도 접하며 느낀 점은 썩 괜찮다는 거다.
아직 많은 도구가 개발되진 않았지만 충분히 발전 가능성이 있는 언어라고 본다.

혹자는 시대를 역행하는 언어이고 후지니까 쓰지 말자고 한다.
초보자를 위한 언어지, 똑똑한 프로그래머를 위한 언어는 아니라고 한다.
그러나 Google, Spotify나 Docker같은 커다란 서비스에서 사용한다는 건,
그만큼 매력이 있다는 뜻이 아닐까?
만으로 여섯 살도 안된 언어가 이 정도면, 오 년 후에는 더 나은 모습을 기대할 만 하지 않을까?

사실 커뮤니티만 좀 더 발전해도 아주 흥하겠다.
루비나 파이썬과 비슷한 생산성을 가지고 성능은 몇 배 낫다면, 충분히 매력적이니까.
이 황무지에서도 잘 자라는 아몬드 나무를 심어볼 만하다.
그럼 봄이되면 꽃이 필테고, Go언어에도 봄 기운이 만연할 터이다.

아래에는 Go 언어에 아몬드 나무나 개나리, 진달래, 목련, 철쭉 등을 심어보고자 하는 개발자가 읽어볼 만한 거리를 정리하였다.


맛보기


패키지 정보


커뮤니티


파이썬 사용자라면?


더 읽어볼 거리


긍정적인 평가


비판



by


Tags : , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

스마트폰 잃어버렸을 때 원격에서 잠금‧초기화. Android device manager.

요즘 대부분의 사람이 스마트폰을 이용한다.
그만큼 도난‧분실도 잦은데 막상 스마트폰을 잃어버린다면, 하드웨어뿐 아니라 소프트웨어도 함께 분실한다.
중요한 자료가 스마트폰에 담겨있다면?
주소록의 연락처가 모두 유출된다면?
공인인증서가 남의 손에 넘어간다면?
가뜩이나 휴대폰 잃어버린 것도 서러운데, 정보까지 유출될까 걱정해야 한다니!

구글에서는 이를 어느 정도 해소해줄 방법을 제공한다.
안드로이드폰은 구글 계정과 동기화할 수 있는데, 동기화에 성공하면 안드로이드 기기관리자를 통해 스마트폰을 원격에서 제어할 수 있다.

현재 위치를 추적하고, 벨을 울리도록 하며, 화면도 잠그고, 기기의 초기화까지 제공한다.
단, 휴대폰에 원격에서 접근할 수 있는 상태(전원이 켜져 있고, WIFI나 데이터네트워크가 가능한 상태)여야만 한다.
온라인에서만 작동한다는 것은 아쉽지만, 스마트폰 분실‧도난에 대비하여 미리 설정해 둔다면, 기기가 없어졌을 때 발 빠른 조치를 할 수 있다.
이걸 미리 알았다면 어제 휴대폰을 잃어버리자마자 조치를 했을 텐데, 늦게 알게 되어 아쉽다.

안드로이드 기기 관리자 (https://www.google.com/android/devicemanager)


안드로이드 기기 관리자는 휴대폰의 전원이 꺼져있다면 방법이 없지만, 오프라인 상태의 스마트폰 이동 경로를 추적하는 방법이 있다.
스마트폰의 지난 이동 경로를 보려면 구글 지도의 지난 이동 경로 보기를 이용하는 것이다.
지난 이동 경로를 본다고 해도 휴대폰에 아무런 조치를 할 순 없지만, 휴대폰이 꺼져있는 경우 마지막 위치를 확인하는 데 도움이 된다.
구글 지난 경로 보기-'안드로이드 기기 지난 경로 보기'

나의 구글 지난 경로 보기로 다시 본 결과, 나의 스마트폰은 분실지점에서 45분가량 주인을 기다리다가, 주인이 휴대폰을 찾으러 그 장소에 다시 도착하기 10분 전부터 이동을 시작했다.
이동속도로 보면, 휴대폰은 자전거로 이동한 듯 보인다. 마지막 신호는 도림천에서 끊겼다.

혹시 2014년 04월 25일 오전 9시 55분경 서강대교 인근 한강변 의자에서 휴대폰을 습득하시고, 한강변과 안양천을 따라 자전거를 타신 후, 2014년 04월 25일 오전 10시 56분경 도림천에 도착하신 분이 이 글을 보신다면 연락 주시면 좋겠다.
약 10KM를 달리는데 45분가량 걸린 걸로 추측건대 천천히 라이딩을 즐기시는 여유로운 분으로 생각된다. :D

구글 지도 지난 경로 보기 (https://maps.google.com/locationhistory)



이동전화를 분실하여 통신사에 분실‧도난 신고를 했다면, 이동전화 단말기 자급제 사이트에서 신고가 제대로 되었는지 IMEI 번호를 통해 확인할 수 있다.
이동전화 단말기 자급제(http://www.checkimei.kr/search/search_1.php)

분실된 휴대폰을 찾고 싶다면, 아래의 사이트에서 확인할 수 있다.


분실된 스마트폰 찾기



by


Tags : , , , , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

크롬 개발자들이 들려주는 개발 노하우. Chrome developer day.

오랜만에 오프라인 강연을 들었습니다.
Chrome developer day.
평소 사용하는 Devtool 활용법과 PageSpeed 세션을 들으려고 갔어요.
PageSpeed는 뭔가 새로운 팁을 듣고 싶었는데 일반적인 이야기뿐이라 좀 아쉬웠습니다.
그래도 원래 들으려던 강연 말고도 전체적으로 만족스러웠어요.
특히 렌더링 관련 강연이 좋았습니다.
또 이런 좋은 행사가 열리면 찾아들어야겠어요.:D


신기술

flex-direction과 Position: sticky등 CSS와
Geolocation, Orientation등 자바스크립트 기능을 소개했다.
가장 눈에 띄었던 건 Offline events인데 네트워크에 연결되지 않은 상태라면 웹사이트에서 이를 인식한다. 이걸 이용하면 오프라인시에 웹에서 안내를 제공하면 되겠다.
localSotrage, Websql, indexdb 세 종류의 storage API도 소개했다.
semantic input types는 사용성 향상에 도움을 준다.
성능 측정이 필요하면 navigation timing API나 Resource timing API를 쓰면 된다.
그 밖에도 Camera, Web audio, getuserMedia, Web rtc(real time communication), webGL, android intend (QR) 등도 간략히 소개했다.


Polymer 라이브러리.

Web components.
DOM 엘리멘트로 되어있어 친숙하다.
그러나 템플릿 코드와 혼재하여 사용하면 코드가 지저분해지겠다.


DevTools

workspace를 이용하면 페이지 새로 고침을 하지 않고 실시간으로 확인할 수 있다.
workspace를 사용하려면 resource에서 원하는 파일을 add to workspace로 추가 해 주어야 한다.
sass와 less도 지원한다.

모바일 웹 환경에서 리모트 디버깅(https://developers.google.com/chrome-developer-tools/docs/remote-debugging)을 사용하면 편리하다.

타임라인(https://developers.google.com/chrome-developer-tools/docs/timeline)

  • 파랑은 로딩(Loading)
  • 노랑은 스크립팅(Scripting)
  • 보라색은 렌더링(Rendering - Recalculate Style)
  • 녹색은 그리기(Paint)

적절한 타임라인 순서 예시

  • Function Call
  • Recalculate Style
  • Layout
  • Paint Setup
  • Paint
  • Composite Layers

DevTools 페이지에 들어갔다가 테마를 입맛에 맞게 바꾸는 법을 발견해서 취향대로 바꿨다.
zerodarkmatrix(https://github.com/mauricecruz/chrome-devtools-zerodarkmatrix-theme)테마 참 잘 만들었다. 테마는 아래 폴더에 넣으면 된다.
Chromium: ~/.config/chromium/Default/User\ StyleSheets/

Html5 Games

Canvas, WebGL(OpenGL ES 2.0)(2007년에 나왔는데 IE11에서 이를 지원한다.), WebAudio, Fullscreen API, Pointer lock API, Web Workers, PNaCl(Portable Native Client) 등의 라이브러리를 이용하여 게임을 개발하면 된다.


Chrome Apps

  • 오프라인에서 동작(Offline by default)
  • 클라우드 친화적(Cloud ready)
  • OS에 자연스럽게 통합(Natively Integrated)
  • 다양한 장치 지원(Multi device support)

하드웨어를 제어할 수 있다.
Phonegap(http://phonegap.com/)을 이용하면 크롬 앱을 안드로이드나 iso 플랫폼 앱으로 변환할 수 있다.


성능

  • Element를 모두 렌더링 하는 것은 아니고 보이는 것만 렌더링 한다.
  • 모바일에서 touch시에 클릭 이벤트는 300ms를 기다려야 하니 touch 이벤트 리스너를 사용하여 지연을 줄여준다. (Canjs에선 touchstart 이벤트를 사용하면 되겠다.)
  • 1초에 60프레임 보여주려면 최대 지연율이 16.67ms 이하여야 한다.
  • 에니메이션 함수에 setTimeout(function, 16.67)을 이용한다.(http://stackoverflow.com/questions/729921/settimeout-or-setinterval)
  • redirect 쓰지 말자. 외부 api를 쓸때 dns lookup이 여러번 일어나는데 dns prefetch를 이용하면 성능이 향상된다.
  • CSS animation에

    {
    -webkit-transform: translateZ(0);
    -moz-transform: translateZ(0);
    -ms-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
    }

    를 이용해 GPU 가속을 활성화한다. (이건 핵이다.)
  • 웹 페이지 성능을 알아보려면 Pagespeed extension을 이용한다.
  • ATF(http://whatis.techtarget.com/definition/above-the-fold) 컨텐츠가 처음 15kb안에 배달되야 한다.(https://developers.google.com/speed/docs/insights/PrioritizeVisibleContent)

배치를 바꿀 때 transform을 이용하는 게 좋다고 하나, 문서(http://blog.tumult.com/2013/02/28/transform-translate-vs-top-left/)를 찾아보니 transition을 사용하지 않는다면 top/left로 위치를 잡는 것이 더 빠르단다. 심지어 불투명한 요소만 포함하고 있다면 GPU 가속 핵을 사용하지 않는 것이 더 빠르다. 배터리 소모도 고려해야 하므로 핵을 쓸 땐 잘 생각해서 쓴다.


Dartlang(https://www.dartlang.org)

구조화된 웹 앱을 개발을 돕는 새로운 개발 언어.
이미지 처리에 강점을 보인다니, 혹 게임을 만들 일이 생기면 한번 써봐야겠다.



by


Tags : , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

What will happen to me (WWHtoMe)



소개



“What will happen to me?"는 웹에 등록된 각종 공연/행사 정보,

학교 시험 시간표,커뮤니티 스케쥴 등을 RSS로 받아와서,

앞으로 무얼 할까 고민하는 사람들에게 도움을 주는 소프트웨어입니다.

정보를 제공하는 사이트에서 포스팅할때 publish date를 수정할 수 있는것을 이용하여,

일정이 있는 날에 포스팅 한 것을, RSS Feed로 받아오게 됩니다.

사용자는 각종 행사 정보가 가득한 달력을 보며 휴일이나, 일과후의

계획을 좀 더 편하게 잡을 수 있습니다.



사용방법

어플리케이션을 실행하면 다음과 같은 화면이 나옵니다.





일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



메뉴 버튼을 눌러서 RSS Feed를 받아올 채널을 추가해주세요.(RSS1.0,RSS2.0,ATOM)

받아올 feed items의 publish date는 일정이 잡힌날로 posting 되어 있어야 합니다.



- 채널 예제 - (6월)

Exam : http://dorajistyle.pe.kr/scheduleExam.php?tempskin=_rss2

Exhibition : http://dorajistyle.pe.kr/SDexhibition.php?tempskin=_rss2

Movie : http://dorajistyle.pe.kr/SDmovie.php?tempskin=_rss2




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



채널명 주소를 적고 채널을 잘 나타내 줄 수 있는 아이콘을 선택하고 Enter키나 Dpad의 Center 버튼을 누르면 채널이 추가됩니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

예제 채널들을 추가 하였습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

메뉴의 Retrive all을 이용하여 추가한 채널들에서 일정을 받아옵니다.

하나의 채널에서만 받아오려면 채널을 선택후, Retrieve this를 선택하시면 됩니다.

받아오기를 하는동안 상태바에 아이콘이 표시됩니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

받아오기가 완료되었으면 일정을 확인하기 위해 Schedule Viewer로 이동합니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

뷰어에서는 다양한 키가 사용됩니다.



스케쥴 리스트 보기 모드 변경키

Q: show all schedule items 토글 (과거의 일정은 포함하지 않는다)

E: favorites schedule items 토글

F: 전체화면 모드 토글



달력 컨트롤을 위한 키

A: 3달 전으로 커서를 이동

D: 3달 후로 커서를 이동

W: 한달 전으로 커서를 이동

S: 한달 후로 커서를 이동

DPAD_UP: 일주일 전으로 커서를 이동

DPAD_DOWN: 일주일 후로 커서 이동

DPAD_LEFT: 하루 전으로 커서 이동

DPAD_RIGHT: 하루 후로 커서 이동



리스트 컨트롤을 위한 키

NEW_LINE , DPAD_CENTER: 선택된 아이템 자세히 보기

PERIOD : 리스트 커서를 한칸 위로 이동

COMMA : 리스트 커서를 한칸 밑으로 이동

M : favorites에 추가/해제



약속을 만들고 싶은날로 커서를 이동해서 어떤 일들이 벌어지고 있는지 볼 수 있습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



favorites 보기에서는 favorites로 추가한 아이템들을 볼 수 있습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



스케쥴이 있는 날로 커서를 이동하면, 그날의 스케쥴이 보이게 됩니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



메뉴키를 눌러서 채널 리스트 화면으로 갈 수 있습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



리스트의 아이템을 선택하면 일정에 대한 좀 더 자세한 정보를 볼 수 있습니다.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



메뉴키를 눌러서 채널 리스트 화면으로 갈 수 있습니다.




What Will Happen to Me?



Introduction



“What Will Happen to Me?” is an Android application, which allows users retrieve performance/event information,class schedules and community schedules that are registered on Internet sites through RSS and helps people decide what they should do instantly.

When website administrators post such information, users can retrieve posted information that are scheduled on the date of the event.

The users can easily plan and make schedules according to the calendar with information of the events.



How to use?

Once you execute this application, you will see the screen like below:





일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



Press [menu] to add RSS Feed channels.(RSS1.0,RSS2.0,ATOM)

The publish date should be posted on the date of event.



- Channel sample - (June)

Exam : http://dorajistyle.pe.kr/scheduleExam.php?tempskin=_rss2

Exhibition : http://dorajistyle.pe.kr/SDexhibition.php?tempskin=_rss2

Movie : http://dorajistyle.pe.kr/SDmovie.php?tempskin=_rss2




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



Put channel address and select the icon that can show the channel type well. Then press [Enter] or [DPAD_CENTER] buttun, and the channel will be added.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

Sample channels are added.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

Download schedules from added channels through “Retrieve all” in the menu.

If you want to retrieve from one channel, select channel and press “Retrieve this".

While retrieving channel, icon on status bar will appear.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

When retrieving gets completed, move to “Schedule Viewer” to check schedules.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

In the viewer various types of buttons are used.



Buttons to change to schedule list view mode.

Q: toggle show all schedule items. (except the schedules in the past)

E: toggle show favorate schedule items.

F: toggle full screen list.



Buttons to control calendar.

A: move the cursor to three months before.

D: move the cursor to three months after.

W: move the cursor to a month before.

S: move the cursor to a month after.

DPAD_UP: move the cursor to a week before.

DPAD_DOWN: move the cursor to a week after.

DPAD_LEFT: move the cursor to a day before.

DPAD_RIGHT: move the cursor to a day after.



Buttons to control list.

NEW_LINE , DPAD_CENTER: view details of selected list item.

PERIOD : move the list cursor to the previous list item.

COMMA : move the list cursor to the next list item.

M : add or remove to/from favorites



You can view the schedules of the date you want to make appointments by moving cursor to that day.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

You can see added favorites items in the favorites view mode.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

Once you move the cursor to the date of event, you will see the schedules of the date.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

You can move to the channel list screen by pressing [menu].




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]

Once you select the item of the list, you can see more detail information about the schedule.




일정관리 어플리케이션 What will happen to me? - 안드로이드 어플리케이션[안드로이드,android,application]



You can move to the channel list screen or schedule viewer screen by pressing [menu].





by


Tags : , , , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

안드로이드에서 데이터베이스를 열지 못할때. [안드로이드,데이타베이스,DB,database,android]

이미지출처 : news.cnet.com

안드로이드에서 데이터베이스를 열지 못할때.








안드로이드를 사용해서 뭔가 만들어보려고 뚝딱거리다가,



어느순간 m5버젼이 나왔다.



m3버젼을 쓰고 있었는데, m5버젼이 나왔다.



돌아가는 모습을 좀 보려고 튜토리얼을 실행시켰는데.. 이런!



데이터베이스를 열지 못한다. nullPointerException이 나온다.



프로그램을 처음 접했을 때부터 무던히도 날 괴롭히던 녀석이..



여기서도 어김없이 등장했다.



디버깅 모드를 써서 추적을 해봐도..



추적이 쉽지않다.



결국 추적을 위해 비슷한 어플리케이션을 만들어서..



아직 api 소스가 나오지도 않았기에 역컴파일까지 해서 추적을 했더니…



db를 쓰지도 못하고 읽지도 못하는것 아닌가!



그래서 db에 null값이 들어있기 때문에 이런 현상이 발생하는 것이었다.



이런! 이 문제를 어떻게 해결할 것인가..



이건 코드 레벨에서 어찌 할 수 있는 문제가 아니었다.



방법은..



기존에 있던 유저파일을 리셋하는것이다.



에뮬레이터 실행할때.



-wipe-data 옵션을 줘서 유저데이터를 지울 수 있고,



혹은 아래의 경로에서 직접 삭제 할 수 있다.


Code:





Linux: ~/.android/userdata.img

Windows: C:\Documents and Settings\<loginname>\Application

Data\Local\Android\userdata.img


Upgrading the SDK 문서가 좀 더 일찍 나왔더라면 이런 수고는 하지 않았을텐데 아쉽다.



Reference




by


Tags : , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.