목록프로그램 (11)
Dharma
parseSdkContent failed Could not initialize class android.graphics.Typeface 정확히는 위와같이 발생합니다. 그래서 다른 프로젝트를 가져와서 막상 실행시킬려고 하면 에러가 발생하는데 OSX 에서는 $HOME/.android 폴더를 강제로 지워주고 다시 시작하니까 문제 없이 동작합니다.
NDK (Native Development Kit Environment) 입니다. 구글은 Java 환경의 SDK 만 가지고 모든 것이 가능할 것이라고 주장했었으나, 몇 버젼 지나지 않아 자신들의 주장을 철회하고 Native C/C++ 프로그램이 가능한 NDK 를 공개했습니다. 왜 NDK 를 사용하는가에 관해서는 몇가지 이유가 있겠지만 - 빠른 연산을 위해서 (아무래도 C/C++ 이 자바 보다 속도가 빠른것은 주지의 사실입니다) - 수많은 Open Source 들이 아직도 C/C++ 로 되어 있기 때문에 일단 이 두개를 크게 들 수가 있겠습니다. 그렇다고 해서 윈도우 다루는 부분까지 전부 NDK 로 하는 것을 추천하지는 않습니다. 속도가 필요한 부분이나 위에서 언급된 오픈 소스로 만들어진 라이브러리를 응용..
오픈소스를 만지작 거리다 보면 남의 소스를 볼 일이 무지하게 많습니다. 가장 최근만 해도 이동통신 관련한 소스를 줄기차게 보고 있는데 (지금까지 본것중에서 난이도가 openssl 에 필적합니다.) 이러한 소스는 보통 여러 사람이 몇년동안 작업을 한 것이 대부분 이기 때문에 처음부터 전부 이해하려고 하다보면 들어가는 시간이 엄청 걸립니다. 단기간에 필요한 부분만 꺼내서 이용할 수 있는 신공을 익혀야만 제대로 쓸 수가 있다는 이야깁니다. 이러한 오픈소스 (그 중에서 특히 C 로 만들어진) 들이 어려운 이유가 몇가지가 있습니다. 그중에서 개인적으로 어렵게 만드는 요인이라고 볼 수 있는 것 몇가지만 이야기 해 볼까 합니다. 1. 엄청 많은 매크로 코드를 이해하는 것만큼 이 엄청난 수의 매크로도 이해해야 합니다...
ClojureScript 라고 들어 보셨는가요? 자바 스크립트 (Javascript) 는 대단히 편리한 언어이고 렉시칼 스코프 (Lexical Scope)를 지원해서 Anonymous Function 이나 Closure 를 지원하는 등, 고급 추상적인 언어가 지녀야할 몇가지 장점을 지니고 있습니다. 또한 문법도 쉽고 그래서 빠르게 전파되고 있습니다. 게다가 V8 엔진을 쓰는 Node.js 등 이제는 속도면에서도 자바(Java)에 필적하고 있습니다. (예전 제 포스트 참조) 그러나 자바스크립트는 또한 약점이 존재합니다. 자바스크립트 지지자들도 여러번 지적하는 사항이라고 하는데요 (사실 저는 잘 모르겠습니다 -ㅅ- ). 지나치게 단순하고 어딘가 허술하며, 확장시키기 좋지 않으며 어떤 기능을 구현하기 위해서 ..
예전에 언급 했듯이 확산성 밀리언 아서 게임을 열심히 하고 있습니다. 뭐 불법적인것은 안하는 주의지만 부캐가 필요해 지더군요. AP 를 이빠이 올려서 요정만 팝시키고 다닐 수 있는 ... 그렇다고 그 목적을 위해서 기기 한개를 새로 살 수는 없지 않겠습니까? (사실 살려고도 생각했습니다.. 넥서스가 30만원 선이라고. 쩝쩝) 게임은 현질은 죽어도 안하면서 이런 기계는 마구 마구 사지르다니 그럴 수는 없다고 생각했습니다. 공짜로 해결할 수 있으면 공짜로 해결하자! 가 제 모토기 때문에 편안한 길을 찾다가 답을 찾았습니다. http://www.bluestacks.com/bstks_mac.html 바로 안드로이드 머신을 맥 OSX 에서 돌릴 수 있게 해주는 어플입니다. (제가 주로 사용하는 노트북이 맥이 관계..
Node.js 와 express 를 이용해서 개발하다 보면 아쉬운 것이 한가지 있습니다. 본의 아니게 서버가 죽어버리는 일입니다. 물론 이런일이 발생하지 않게 에러 핸들링을 속된 말로 빡세게 해야 하지만 뭐 어떻게 알아서 그걸 다 하고 있습니까... (후다다다닥) 만약 서버가 죽는다고 하더라도 우아하게 재시작 된다면 (gracefully restart 라는 표현을 쓰더군요) 추후에 비슷한 에러가 발생하지 않도록 조치를 취해줄 수가 있습니다. 역시나 설치법은 무지 쉽습니다. npm 이 설치되어 있다고 가정한다면 $ sudo npm install forever -g 이러면 설치되고, 원하는 스크립트 서버를 띄워주고 싶다면 $ forever start app.js 하면 데몬 형식으로 구동됩니다. 아! 로그도 ..
You think you know when you learn, are more sure when you can write, even more when you can teach, but certain when you can program - Alan Perlis (Yale University computer scientist) 배울때 알게되고 , 글로 쓸 때 더 분명해 지며, 가르칠 수 있을 때 더욱 더 분명해진다. 그러나 프로그램을 할 수 있다면 더욱 확실 해진다.
"How to Design Programs" 라는 책에서 언급된 DESIGN RECIPE 라고 불리우는 프로그램 디자인을 하는데 필요한 몇가지 단계 Contract 단계 area-of-ring : number number -> number area-of-ring 이라는 프로그램은 number 2개를 인자로 받아서 number 를 리턴하는 프로그램이다. 라고 구상하는 단계 Purpose 단계 outer 라는 바깥쪽의 원의 반지름과 inner 라는 안쪽 원의 반지름을 가진 두원의 사이에 끼어져 있는 고리의 영역을 계산하기 위한 것이 목적이다. Example 단계 (area-of-ring 5 3) 이거나 area-of-ring (5, 3); 은 50.24 의 값이 나와야 한다. Definition 단계 (de..
프로그램을 오래 짜 왔지만, 주로 시스템 베이스의 프로그램만 만들어 왔습니다. Windows 나 unix 시스템 계열의 코딩만 하다보니, c/c++ 에 너무 익숙해져서 뭔가 허전하더군요. 요즘 대세인 web programming 도 못하고, 그러던 차에 몇년전 부터 후배의 꼬임에 넘어가서 emacs 라는 툴을 다루기 시작하면서 lisp 에 관한 관심이 가더군요. 무지하게 매력적인 lisp 이란 언어에 푹 빠졌습니다. 뭐 사업하면서 코딩을 하고 있을 수는 없고 해서, emacs 라는 툴만 간간히 다루고 마음속에만 담아두고 있었는데, 요즘 회사 일손이 부족하여 저도 본격적으로 코딩을 다시 시작하게 됐습니다. 3년만에 다시 잡는 코딩이라 많이 생소한 느낌에 또 새로운 분야(아이폰 앱스 개발)라 진행도가 느린데..
저도 산전 수전 다 겪은 프로그래머 출신인지라 , 메모리 관리는 왠만하면 잘 지키는 편인데, object-c 는 자동으로 관리하는 것도 있고, 수동으로 지워줘야 하는 것도 있고, 클래스 함수들도 난립하는 터라 마구 마구 헷갈립니다. 예제로 시작하는 아이폰 개발 의 '부록' 에서 메모리 관리 팁을 설명하고 있어서 조금 정리했습니다. (부록이 참 잘 되어 있습니다..) 1. 블록 내에서는 alloc, retain, copy 의 수와 release, autorelease 의 수가 동일해야 합니다. 2. factory 함수( 보통 class method 인 경우가 많습니다 )를 사용해 생성한 객체의 경우는 대부분 autorelease 로 반환됩니다. 따로 release 를 다시 할 필요가 없습니다. 3. 클래스..