2014년 5월 28일 수요일

자신을 증명하기, 인디 개발자

오늘 페친이 올린 글에 딸린 링크를 열어서 블로그 포스팅을 하나 읽었다. 자신을, 자신의 회사를 증명하는 것에 대한 이야기와 그게 싫어서 어떻게 했는지, 어떻게 할지에 대한 글이었다. 결론은 github에 오픈소스프로젝트 뭐라도 올려서 미리 자신을 증명하자는 이야기. 결론이 뜬금없기는 하다. 나도 Github에 자잘한 것 몇가지 올려 놓거나, 다른 사람이 만들어 놓은 것을 fork해서 조금 수정해놓은 것은 있지만, 규모가 좀 되는 프로젝트는 없다. 그럴 여력이 없다고 해야 할까? 그것 보다는, 우선 순위가 높은 다른 일들이 많아서라고 하는 것이 맞겠지. 1인 다역을 하고 있는 회사일도 그렇고, 커가는 아이들 보면 언제 이 귀여운 모습들을 볼 수 있을까 조금이라도 아이들과 시간을 더 보내고 싶기도 하고, 점점 늙어(?)가는 내 몸을 보면서 노세노세젊어서노세..는 아니고..

어제는 인디게임개발자에 대한 기사를 하나 읽었다. 인디 개발자는 야생, 직장인은 동물원이라는 이야기도 나온다. 적절한 비유라고 생각. 인디 개발자는 자기가 먹을 것을 찾아 다녀야 한다. 앱을 만들어서 먹고 살든, 외주개발을 해서 먹고 살든, 아니면 굶든 그게 모두 자신이 직접 결정하고 실행해야 하는 일들이다. 꼬박꼬박 월급이 나오는 사람들과는 세상을 보는 시각 자체가 다르다.

물론 그러다 여러가지 이유로 다시 직장으로 들어가기도 하지만, 마음은 언제나 평야에.

2014년 5월 27일 화요일

Eclipse (ADT) / Maven / Android

Maven으로 안드로이드 프로젝트 빌드를 하려니 m2e-android를 설치해야 하고, 그러러면 Marketplace Client를 설치해야 한다. 그런데, Marketplace Client는 Eclipse 버전 별로 업데이트 주소가 다르다. ADT의 버전은 22.6.2인데, Eclipse 버전을 내놓으라고?

About ADT에서 하단의 Installation Details 버튼을 누르면 ADT Installation Details 창이 표시된다. Android Developer Tools를 선택하고, 그 아래의 ADT Package를 선택하면 Eclipse Platform 항목의 오른쪽에 버전이 표시된다. 4.3.1이군. Kepler.

http://www.eclipse.org/mpc/에서 Kepler의 링크를 눌러서 들어 갔더니?? 업데이트 주소가 없다. Eclipse에 내장되어 있다고? ㅠㅠ

Help > Install New Software를 선택. Work with에서 Kepler 선택.

2014년 5월 23일 금요일

Android WebDAV server using Milton

우선 Milton의 샘플 GS1을 따라해보자.

Android 개발 도구 ADT에서 Maven Project를 만들려고 하는데, Maven Project가 없다. m2e-wtp를 설치한다.

이제 Maven Project를 만들 수 있다.

실행. Jetty Server가 실행된다.


Finder에서 접속하면, 아래와 같이 보인다.
이제, 이 프로젝트를 안드로이드에서 실행되도록 수정해보자.

안드로이드 프로젝트를 만들고, jetty 파일들을 다운로드해서 프로젝트에 추가한다. jetty-distribution-9.1.5.v20140505를 다운로드했다.

실행하면, 여러 jar 파일에 about.html이 중복되어 에러가 발생한다. 아래와 같이 처리한다.

find . -name '*.jar' -exec zip -d {} about.html \;

이번에는 java.lang.management.ManagementFactory 클래스를 찾지 못한다는 에러 메시지와 함께 실행이 안된다. 한참 동안 검색한 결과, 안드로이드의 Java는 Java가 아니라는 결론과 함께 ManagementFactory를 올리는 것을 포기하고, jetty-distribution-7.6.15.v20140411을 다운로드해서 올렸다. 이번에도 마찬가지로 about.html들은 빼야 한다.

일단 포함시킨 라이브러리들은 아래와 같다.


  • jetty-continuation
  • jetty-http
  • jetty-io
  • jetty-security
  • jetty-server
  • jetty-servlet
  • jetty-util
  • jetty-webapp
  • servlet-api-2.5
안드로이드 앱을 실행한 후, 웹브라우저를 실행해서 접속하면 아래와 같이 파일 목록이 표시된다.




권한 문제로 내용이 표시되지 않는 폴더들도 있다.

일단은 jetty를 안드로이드에 올리기는 성공. 이제 milton을 올려보자.

To be Continued..

2014년 5월 22일 목요일

이상한 자바

자바는 이상해. 아니, 내가 이상한거지.

Clojure에서 나는 자바의 향기(?)는 싫은데, 막상 자바 코드를 보다 보면..좋아.. 한 때 열렬한 자바 애호가(?)였던 시절이 있었지. 통신 서비스용 소프트웨어를 모두들 C로 만들 때 자바로 하자고 주장하고, 좀더 나가서 Erlang으로 하자고;;


2014년 5월 19일 월요일

이해와 수용

나는 그를 이해할 수는 없지만, 수용할 수는 있다. 그는 어떤 사람인가?
나는 그를 이해할 수는 있지만, 수용할 수는 없다. 그는 어떤 사람인가?

그는 나를 이해할 수는 없지만 수용할 수는 있다. 나는 어떤 사람인가?
그는 나를 이해할 수는 있지만, 수용할 수는 없다. 나는 어떤 사람인가?



2014년 5월 17일 토요일

Clojure에서 Java 냄새

Clojure를 사용하다보면 어쩔 수 없이 만나게 되는 Java. Clojure에서 나는 Java 냄새가 싫다. 난 Java의 복잡함이 싫다. 언어로서의 Java가 싫은 것이 아니라, Java로 만들어진 몇몇 프레임웍들과 표준들이 싫다. 불필요한 복잡함. 과도한 아키텍팅.

Webframeworks

다양한 웹 프레임 웍의 목록.

https://gist.github.com/5HT/5522302

2014년 5월 16일 금요일

iOS용 이메일 클라이언트의 최강은?

현재 내 아이폰에 설치되어 있는 이메일 앱들이다.


과연 나에게는 어떤 앱이 제일 맞을까?

UPDATE 2014.5.21

현재 스코어 SquareOne 1위. CloudMagic 2위. 푸시알림은 Acompli가 짱. 구글은 Sparrow 뭐할라고 인수했노.

2014년 5월 14일 수요일

나 하나 꽃피어

나 하나 꽃피어
풀밭이 달라지겠느냐고
말하지 말아라
네가 꽃피고 나도 꽃피면
결국 풀밭이 온통
꽃밭이 되는 것 아니겠느냐

나 하나 물들어
산이 달라지겠느냐고도
말하지 말아라
내가 물들고 너도 물들면
결국 온 산이 활활
타오르는 것 아니겠느냐

-조동화

아마존 Kindle의 Rent 서비스

아마존에 책을 하나 찾아 들어 갔다. 책을 다양한 형식으로 판매하고 있다.


Kindle 버전을 선호하기 때문에 Kindle을 클릭하고 들어가려는데, 아래 "Rent from $4.29"가 보인다.

빌려줘? 디지털 버전을 빌려준다고? 뭐라고 할까, 기존의 상품에 제약을 추가해서 가격을 낮춘 것인데, 역시나 가격이 구매에 가장 큰 걸림돌(?)이기 때문에 상품의 사용기간을 제한한다는 다른 걸림돌을 이용해서 가격을 낮춘다.


30일 동안 보는 가격이 $4.29.

상품을 만드는 기술과 그것을 판매하는 기술은 정말 다르다는 것을 많이 느끼고 있다. 정말.

2014년 5월 13일 화요일

파이썬 랜덤 스트링

문자와 숫자로 이루어진 랜덤 스트링을 만드는 간단한 작업에도 다양한 대답들이 달렸다.

python random string generation with upper case letters and digits


파이썬의 모토가 TOOWTD 아니던가? :)

새로운 언어나 프레임웍을 빠르게 익히는 방법은?

해커 뉴스에 올라 온 글.

Ask HN: As an experienced dev, how do you learn a language/framework quickly?

간단한 튜토리얼을 읽어 보고, 뭔가를 만들어 보는 것이 가장 좋은 방법. 좌충우돌.

그리고, 다른 사람의 코드 읽기.







컴퓨터 바둑

제목이 90년대 스타일인 것 같지만, 80년대에 유행한 "컴퓨터 세탁"하고 비슷한 느낌인 것 같기도 하다.

Wired의 2014년 5월 기사 "The Mystery of Go, the Ancient Game That Computers Still Can’t Win"를 읽었다. 중간 부분은 건너 뛰기도 하며 읽었는데, 길기는 하지만 요즘 컴퓨터 바둑의 현황을 알 수 있어서 좋다. 4점 깔고 요다 9단에게 이기는 수준이라. 정말 많이 발전했다.


2014년 5월 12일 월요일

Pythonic Clojure

내가 사용하고 싶은 언어는 Pythonic Clojure.

Python과 Clojure의 장점만 합해서 만든 언어라는 것이 가능할지 모르겠다.

사실 파이썬은 GIL 때문에 CPU 코어들을 최대한 활용할 수 없다는 것이 마음에 들지 않고, 그 문제를 해결하려는 의지를 보이지 않는 Guido, 또한 마음에 들지 않는다. (PyPy에 대한 Guido의 태도는 물론이고, 2.x과 3.x 사이의 호환성 문제도 해결 못하고 있는 상황도 그렇고.)

현실에서 텍스트 파일 처리, 빠른 프로토타이핑이나 작은 규모의 웹서비스를 만들 때는 파이썬이 워낙 손에 익어서 사용하지만, 이 범위를 넘어가는 경우에는 매번 다른 도구를 찾게 된다.

그럼에도 불구하고 파이썬을 사용하는 이유는?

  • 읽기 쉬운 깔끔한 코드 형식
  • 사용하기 편한 다양한 내장 자료구조들
  • 정말로 다양한 라이브러리 & 툴들
  • 다양한 오픈소스 프로젝트와 커뮤니티

2009년도 글. Python vs Clojure에서 인상적인 부분.
Well consider a C programmer who has spent 10 years manipulation pointers. What insights has he gained into architectural challenges, concurrency pitfalls, etc? Very little, he spends his days speaking baby-language (low-level) to the compiler in order to get the behavior he wants, at the cost of personal development.

All Your Ducks In A Row: Data Structures in the Std Lib and Beyond

Cache me if you can: memcached


2014년 5월 10일 토요일

수경 구입

얼마 전 수영하던 중 수경이 망가져서 불편했던 적이 있다. 줄을 조정하는데 뚝하고 코걸이 부근의 걸개가 부러졌다. 그동안은 렌즈를 착용하고, 집에 있던 도수가 없는 수경을 사용했었는데, 새벽에 뻑뻑한 눈에 렌즈를 끼우는 것이 불편해서, 오늘 도수 수경을 다시 구입했다. TOPIDA라는 브랜드인데, 이 수경은 밴드를 쉽게 조이고 풀 수 있게 되어 있다. 코걸이 부근이 망가지면 무료 A/S를 해주겠단다. 그동안은 이마트 안경점에서 판매하는 것을 3개 사용했는데, 매번 코 걸이 부분이 똑 부러져서 수영하다 낭패였다.

2014년 5월 8일 목요일

tmate.io로 원격 tmux 접속하기

tmux의 장점 중의 하나가 세션을 그대로 놔둔 채로 다음에 다시 접속하면 원래 상태로 보존이 된다는 점. Vim으로 파일을 편집하다 끊어도, 다음에 다시 연결해서 그 상태 그대로 작업을 이어 갈 수 있다.

그런데, tmux 세션이 원격 서버에 있는 경우 ssh로 들어가서 원하는 tmux 세션을 정해서 tmux attach로 연결해야 하는 사소한 번거로움이 있다. 한방에 원격 tmux 세션에 접속하는 방법이 없을까 찾다보니 tmate.io가 딱(이라고 생각했지만, 사실 원격 세션을 유지해놓아야 하는 문제가 있다)


tmate.io에 가보면 제일 처음에 나와 있는 소개 이미지를 보면 뭐하는 툴인지 바로 알 수 있다. 이 툴은 원격 pair programming용으로도 사용할 수 있다.

한가지 걸리는 점은 tmate server를 거친다는 점인데, 직접 tmate server를 설치할 수 있다.
 

2014년 5월 6일 화요일