April 2011
6 posts
iOS와 안드로이드
아이폰은 국내 출시전부터 만져왔고, 최근에는 일, 취미로 안드로이드를 만지고 있다. iOS와 안드로이드 두 운영체제를 만지면서 느껴지는 가장 큰 차이점은 두가지다.
iOS의 UI의 디테일함은 안드로이드에 비해 2-3년은 앞서있다.
안드로이드는 인텐트와 서비스를 이용하여 구조적인 설계가 되어있다.
iOS의 UI는 아주 미묘한 룩앤필과 동작들까지 세밀하게 설계가 되어 있다. 1 당장 몇년 내 구글이 UFO를 줍지 않는 한 UI의 격차를 바꾸기는 힘들 것이고, 5년이 지나도 안드로이드보다 iOS의 UI가 좋을 것이다. 안드로이드가 이 영역을 추월하긴 힘들다. 하지만 지금도 안드로이드 폰이 사용자에게 좋은 반응을 얻고 있고 격차는 조금씩이나마 계속 줄어들 것.
안드로이드는 인텐트를 통해 많은...
카이스트 징벌적 치킨 게임
징벌적 등록금을 회피하기 위한 전략으로 선택할 수 있는 한가지 방법은 평균 점수가 높은 과목을 선택하는 것입니다. 카이스트의 미적분학의 평균 학점은 2.95였습니다. 저런 과목들을 주로 듣는 평균적인 카이스트 학생은 징벌적 등록금을 낼 확률이 높을겁니다.1 저런 과목을 피하는 것이 가장 합리적인 선택이 되는 거죠.
카이스트가 상대평가를 선택한 것을 알고 있는 사람이라면 의문이 들 수 있습니다. “어떻게 평균 점수가 높은 과목이 존재하는 것이지?” 한국 대학들의 상대 평가 시스템은 주로 학점당 퍼센테이지 상한선을 정하는 형태로 이루어집니다. A학점은 20%를 넘을 수 없다는 식입니다. 하한선은 보통 잘 정하지 않습니다. 조금 유연한 상대평가 시스템인거죠.2
학교에서는 시스템적인...
실시간 채팅 IRC 클라이언트
홈민희씨는 오징거 서버 #langdev 채널에 상주하고 있다. 이 채널에서 이뤄지는 여러 언어와 구현의 이야기들이 그의 언어 작업에 도움이 되기 때문이다.
그는 최근에 유학 준비로 시간이 많지 않아 항상 채널에 상주할 수 없다. 그래서 IRC 클라이언트 프로그램인 레몬 챗을 작동시켜 하루 종일 접속을 끊지 않는다. 이렇게 항상 접속을 유지해 두면 공부가 끝난 뒤 내용을 확인할 수 있다.
그는 오늘 일과를 마치고 컴퓨터로 돌아왔다. 마우스 스크롤을 이용해서 대화를 확인해보지만 1시간 전까지의 대화만 화면에서 볼 수 있다. 그는 접속 기록(로그)를 확인하여 대화를 살펴보겠다고 결심한다.
그런데 로그의 위치가 기억나지 않는다. 보통의 사람이라면 이쯤에서 로그를 읽지 않겠다고 결심할 수 있다.
하지만...
안드로이드 메모리 관리 low memory killer
low memory killer는 구글 직원 Arve Hjønnevåg가 2009년에 안드로이드 메모리 관리를 위해 작성한 리눅스 커널 모듈이다. 주석에 남아 있는 misc 드라이버 (drivers/misc/lowmemorykiller.c) 흔적으로 보아 Arve는 이 모듈이 misc에 남길 기대했다고 판단된다. 하지만 이 커널 모듈은 2.6.31~32에서는 staging 드라이버 (drivers/staging/android/lowmemorykiller.c)로 그 이후에는 공식 커널에선 제외되어 안드로이드 커널에서만 볼 수 있다.
이 커널이 등장한 배경은 리눅스 메모리 정책이 현재 임베디드 환경에 맞지 않다는 것이다. 리눅스 커널의 기본 메모리 정책은 OOM Killer로 대표되는데 메모리가 부족한...
툴킷과 프레임워크
컴퓨터 소프트웨어에서 라이브러리를 만드는 방법은 크게 둘로 나눌 수 있습니다.툴킷과 프레임워크입니다. 전자는 사용자가 필요한 도구를 모아 둔 것이고 후자는 해야할 일에 사용자가 집중 할 수 있도록 소프트웨어 구성물의 얼개를 제공하는 것입니다.
프레임워크는 설계자가 상상하는 세상을 투영합니다. 설계자는 도구에 대해 지나치게 협소하게 생각하거나 더 크게 볼 때가 많습니다. 그 결과 많은 프레임워크는 협소함이나 유연함을 사용자에게 강요하게 됩니다.
협소함이 강요되는 경우될 때 사용자가 원하는 쓰임에 소용이 없어 결국 그 도구를 벗어나야 할 경우가 생깁니다. ASP.net는 전통적인 게시판 모델에 RDBMS 모델을 결합시키기 적합한 모델입니다. 하지만 이 도구로 XML을 다루고 외부 웹 환경과 소통하는 웹...
포인터를 선언하는 방법의 차이 →
materiality:
loveholy:
“애스터리스크를 타입에 붙여 쓰는 사람(ex. int* aPointer)은 이 변수가 포인터타입 변수라고 생각하는 사람이고, 변수 이름에 붙여 쓰는 사람(ex. int *aPointer)은 이 변수가 해당 타입이되 포인터라고 생각하는 사람입니다.” — Cyrus.H 나는 원래 개념적으로 전자가 맞다고 생각하는데 C/C++ 문법의 한계 때문에 후자처럼 쓰는 부류다. 이를테면 int* a, b;와 같은 경우. 아무 생각 없이 이렇게 썼다가 피 볼 확률이 0이 아니니까. 가끔 차라리 ...
identification에 *, [], ()가 붙어야 된다고 생각하는 사람도 있습니다. 선언을 해석할 때는 identification을 중심으로 해석합니다. 아마 The...