April 2012
1 post
안드로이드 라운드 테이블에 여러분을 초대합니다.
안드로이드 라운드테이블 행사에 여러분을 초대합니다.
안드로이드 라운드테이블 (Android Roundtable)은 안드로이드에 관심있는 개발자들이 모여서 서로의 관심사와 경험을 공유하는 자리입니다. 안드로이드 라운드 테이블은 모두가 참여하는 행사입니다. 라운드테이블에 앉아 자유롭게 경험을 공유하는 자리입니다.
함께 저녁 식사를 하고 자유롭게 이야기를 나누었으면 좋겠습니다.
일시: 2012년 4월 17일 오후 7시 ~ 9시 30분
장소: 구글코리아 21층 회의실
참석하신 분들에게는 구글 코리아가 마련한 식사와 소정의 선물이 있습니다.
참가신청은 4월 16일 오후 2시까지 받겠습니다.
참가자로 선정된 분들에게는 4월 16일까지 입력해주신 이메일로 연락드리겠습니다.
선착순이 아니기 때문에 급하게...
March 2012
4 posts
렌더스크립트를 소개합니다.
안드로이드 허니컴부터 소개된 렌더스크립트는 아직 미지의 기술인 것 같습니다. 여러 모임을 참석해 보면 많은 사람들은 막연히 허니컴 이후에 추가된 그래픽 기술이라고 생각하고는 뭔가 향상점이 있겠지하고 지나가더군요. 또, 렌더스크립트에 대해 기술된 쓸만한 글들도 거의 없는 실정입니다. 그렇기 때문에 개발자 블로그에 올라왔던 세개의 렌더스크립트 기사는 꽤 유용했던 것 같습니다. 아래는 제가 렌더스크립트 기사들을 번역한 것입니다.
렌더스크립트를 소개합니다.
렌더스크립트 2부
렌더스크립트로 레벨 바꾸기
위 아티클 들은 실제 그래픽 처리보다는 렌더스크립트가 보일 수 있는 분산 처리를 이용한 연산 가속(compute acceleration)에 더 비중을 두고 있습니다. 그래픽 관련 아티클을 보고자 하시는 분들은...
안드로이드 렌더링의 특징: 디스플레이 리스트
안드로이드 3.0(허니컴)부터 렌더링 부분이 많이 향상되었습니다. 하드웨어 가속이라는 특성도 그 중의 하나이죠. 또 다른 변화 중 하나는 디스플레이 리스트가 추가된 점입니다. 진저브레드까지 안드로이드는 변화를 전파하는 모델을 가지고 있었습니다.
이런 모델은 변경 사항을 ViewRoot까지 전파하는 문제가 있었습니다.
전파되어 올라간 후 다시 아래로 내려오면서 그려야 합니다.
이런 모델은 하나의 뷰 변경이 꽤 많은 코드를 접근하게 하여 비효율적이었습니다. 하나의 뷰를 다시 그리기 위한 정보가 상단의 유아이 요소까지 올라가야만 얻을 수 있기 때문에 변경 내역을 전파하고 다시 그려야만 했습니다.
이 비효율에 대한 대안은 디스플레이 리스트를 사용하는 것입니다.
뷰가 위와 같은 목록을...
안드로이드 소스 개별 리포지토리
안드로이드 소스는 여러개의 리포지토리가 합쳐 구성되어 있습니다. 전체를 받는 것은 많은 시간이 들기도 하고 용량이 많기 때문에 부담이 된다는 분들이 계시더군요.
개별 리포지토리의 주소를 따 두었습니다. (이렇게 따두는 것은 어려운 일은 아니긴 하지만 조금 귀찮은 일입니다.)
https://docs.google.com/document/pub?id=1TigHy4rEIOKyCoiAbuUYt_X7twrNXbLmmwbDTc3Xh7Y
하나씩 https 주소를 따 두어서 git clone <https 주소> 이렇게 입력하면 하나 씩 받을 수 있습니다.
PS: 안드로이드는 서브모듈을 쓰지 않고 repo라는 도구를 씁니다. repo는 여러 리포지토리를 받아와 소스 트리를 구성해주고 변경된 내역을...
스핀락의 구현
스핀락에 대해 어렵게 생각하시는 분들이 많으시더군요.
static inline void arch_spin_lock(arch_spinlock_t *lock)
{
unsigned long tmp;
/*
* 스핀락의 ARM 아키텍쳐 구현입니다.
* 1. lock->lock의 값을 가져와서 tmp에 저장합니다.
* 배타적 로드(ldrex)를 썼기 때문에 이후에 오는 배타적
* 스토어(strex)가 오기 까지 변경이 되었는지
* 하드웨어가 검증합니다.
* 2. 값이 0인지 확인하여, 0인 경우에만 lock->lock에 1을
* 저장합니다.
* 3. 배타적 로드와 스토어 사이에...
February 2012
4 posts
Vim vs IDE (and Emacs)
hongminhee:
사람의 욕구는 기본적으로 비슷한 면을 많이 공유한다. 코딩에 있어서 손을 적게 움직여서 원하는 것을 이루고자 하는 욕구는 비슷하다. 하지만 Vim 사용자의 해법은 코드의 분량을 줄이는 것이고, IDE 사용자들의 해법은 키스트로크의 횟수를 줄이는 것이다. 그러다보니 어느쪽 사람들은 값의 타입이 추론될 수 있어야 한다고 보는 한편 다른쪽 사람들은 값의 타입이 무엇인지 코드 상에서 눈에 보여야 한다고 다르게 생각하게 되는 것이다. 어떤 편집기를 사용하느냐가 이렇듯 언어에 관한 취향에 반영된다.
Vim 사용자와 Emacs의 사용자의 입장도 또 많이 다를 것 같다. 나는 Vim으로 시작했지만 결국 Emacs로 갔는데 Vim이 키스토르크가 지나치게 많다고 생각한게 그 이유였다.
나는...
우분투 11.10 amd64 버전에서 안드로이드 빌드 환경 구축
우분투 11.10 64비트 버전에서 안드로이드 빌드 설정을 위해 테스트 해보고 있습니다. 여기를 참고해서요.
lib32readline5-dev가 설치되지 않아 우선 배제하였습니다. apt-get install의 메시지에서 lib32readline-gplv2-dev의 사용을 권고하네요. 이 패키지를 설치하면 제대로 설정되는 것 같습니다.
우분투 업데이트 후에 무선랜이 느릴 때
저는 우분투 11.04나 11.10으로 업데이트하면 SENSX170노트북에서 무선랜이 기어가더군요. 1kbps정도 나오는 걸 보면 제 예전 모뎀보다 느립니다.
nm-tool 명령을 이용하면 무선랜/유선랜 드라이버를 확인할 수 있습니다. 저는 iwlagn인데 인텔 내장 랜입니다. 드라이버에서 11n을 쓰게 되는 경우 구형 랜 칩에서 문제가 되나 보더군요. 해결책은 다음과 같습니다. 해결책 1, 해결책 2
저는 인텔 칩과 같이 범용적인 구성인데 우분투 11.04부터 아직까지 문제가 고쳐지지 않고 있는 이유를 모르겠습니다. 우분투는 정말 유지보수를 너무 똥으로 여기는 것 같습니다.
그래도 우분투가 세상을 지배했으니깐 우분투를 쓰지 않으면 더 어려워지기 때문에 계속 쓰렵니다. -_-
새누리 당에 대한 평가
새누리 당에 대해 평가합니다.
우리말로 되어 부르기 쉽고 이해하기 쉽다. (+100점)
비슷한 이름이 또 나오지 않을 테니 혼란스럽지 않다. (+100점)
좋은 의미를 가졌다. (+100점)
나쁜 당원들을 가졌다. (-1억점)
January 2012
6 posts
커니님으로부터 선물
감사합니다. 잘 보겠습니다.
8비트 PC의 컬러 번짐 현상
초기 8비트 시절을 이야기할 때 빼어먹을 수 없는 회사가 있는데 싱클레어 리서치다. 영국 캠프리지에 있던 작은 회사는 PC 산업이 성공하는데 혁신적인 발명을 했다. (이상하게 영국 캠브리지는 컴퓨터 그래픽과 연관이 깊은 지역인 것 같다. 최근 게임들을 위한 실시간 글로벌 일루미네이션 (광역 조명)도 이 지역에서 많이 연구되었다.)
싱클레어가 한 짓(?)은 픽셀 버퍼와 컬러 버퍼의 분리였다. 픽셀 버퍼에 해당 위치에 점이 있는지 1과 0으로 저장한다. 그리고 컬러버퍼는 8x8 픽셀로 이루어진 타일에 대해 적용시키는 것이다. 하나의 타일에 대해 두가지 색상을 지정하는 방식이 흔히 사용되었다. 그 당시 상당수 하드웨어가 하드웨어 가속되는 “배경 그리기”가 지원되고 있었고 사실상...
HTML 5는 썩었다.
한 때 높은 접근성을 가졌던 문서가 있었다. 제대로 작성만 (well-formed) 된다면 여러 디바이스에서 제대로 동작하는 것 처럼 보였다. 어떤 장애가 있어도 컴퓨터가 도와주며 해결할 수 있을 것만 같았다.
현실은 어떠한가? 페이스 북은 자바스크립트가 동작하지 않으면 어떤 서비스도 사용할 수 없고, 많은 모바일 웹 페이지는 모바일 웹킷 계열에서만 제대로 돈다. (그것도 상당수는 아이폰 계열에서만) 웹과 앱이 결합된 대부분의 하이브리드 앱은 거지같다. WebGL이나 HTML 5은 화려하지만 더 낮은 접근성을 가진다.
충분히 좋은 하드웨어와 정상적인 눈과 손을 가진 사람만 제대로 쓸 수 있는 환경이 우리가 꿈꿔왔던 미래였던건가?
집어치우자. 차라리 여러 환경에 안드로이드 API를 포팅하는게 훨씬...
정치적인 대안이 없었다고 뻥치지 말자.
지난 대선에서 왜 이명박을 선택했냐 물으면 대안이 없었다는 답변을 하는 사람이 많다. 대안이 없었긴 무슨 개뿔.
당신이 관심이 없어 성공한 CEO라고 착각하는 것을 백번 양보해서 이해해주자. 그래도 BBK와 여러 전과를 몰랐다고 주장하는 것은 당신의 지성에 대한 기만이다. 난 당신이 그렇게 멍청하리라 생각하지 않는다. 당신이 누굴 선택하든 그 사람이 이명박 대통령 보다 도덕적인 우위에 있는 것은 확실하고 그보다 뻘짓을 덜 했을게 확실하다.
대안이 없었다고? 뻥치지 말자. 당장의 경제적인 이득이나 미래의 이익. 탐욕을 위해 양심을 저버렸던 것을 왜 합리적인 결정인양 속이는가?
GIT 작업 흐름
이 글은 nvie의 A successful Git branching model을 기반으로 하였습니다.
개발 브랜치
GIT을 쓰는데 몇가지 작업흐름을 생각해 볼 수 있습니다. 먼저 개발 브랜치로 development를 쓰는 것입니다.
마스터 브랜치 master는 언제나 안정 버전으로 릴리즈 예정인 코드 중의 하나임을 의미합니다. 필요에 따라 릴리즈 브랜치와 개발 브랜치가 구별이 없을 경우에는 (웹 서비스 등에서 릴리즈 시간이 의미가 없는 경우) development 브랜치 단계를 생략할 수도 있습니다. 또 다른 작업흐름 중 하나는, 별도의 릴리즈 리포지토리가 있는 경우입니다. 이 경우 master에서 머지된 것을 일정 릴리즈 주기로 다른 리포지토리에 푸쉬하면 됩니다.
기능 브랜치
그림에서...
안전을 생각한다면 SVN을 쓰지 맙시다.
뿌리깊은 SVN은 상당 수 확률로 과거 리비전이 박살나있습니다. 하드디스크는 망가질 수 있는 장비입니다. 백업을 하더라도 가장 최근의 저장소가 파괴되있는 경우가 많습니다. 즉 망가진 저장소의 백업입니다.
반면에 Git이나 Mercurial를 쓰는 경우에 여러 사람들이 완전한 백업을 가지고 있습니다. 작업하는 사람이 100명이명 100개의 백업이 마련되어 있는 것입니다.
속도, 브랜치, 작업 흐름을 떠나서 (이 부분도 SVN의 심각한 결점입니다만) 안전성만 따져도 우리는 더 이상 SVN을 쓰면 안됩니다.
우리는 SVN 저장소를 Git이나 Mercurial로 이전해야 합니다.
December 2011
10 posts
안드로이드 4.0에 대한 몇가지 이야기
안드로이드 4.0에 대한 잘못된 이야기가 인터넷에 보여 몇가지 주제에 대해 답을 달았습니다.
1 . 운영체제는 여러 소프트웨어 스택이 합쳐진 것이기 때문에 개별적인 소프트웨어들이 제대로 동작하기 위해 시스템 요구사항이 존재합니다. 더 다양하고 강력한 기능을 위해서는 어느 정도의 리소스를 사용할 수 밖에 없습니다. 리눅스 중에 가장 널리 쓰이는 우분투 배포판도 시스템 요구사항이 존재하죠. 1
안드로이드도 버전 별로 요구사항은 존재하고 아이스크림 샌드위치를 구동하기에 넥서스 S의 메모리가 충분하지 않기 때문에 일부 기능이 제외됩니다. 2 안드로이드 인증의 최소 조건은 340메가 이상의 메모리를 가지고 있고 350메가 이상의 비 휘발성 스토리지를 가지고 있는 것을 요구합니다.3 물론 이 조건은 인증을...
데이터 주도 개발 혹은 데이터 지향 개발
보통 성능 개선을 할 때 바틀 넥 구간을 향상시키라고 합니다. 현대 컴퓨팅에서는 어디가 바틀넥일까요? 바로 메모리입니다. CPU는 점차 빨라졌지만 메모리의 속도는 별 향상이 없어 점점 서로 간의 격차는 커지고 있죠. 그래서 우리는 인스트럭션 캐쉬와 데이터 캐쉬의 히트율을 높이는 쪽으로 프로그래밍을 해야합니다.1
객체 단위로 하나의 필드를 저장하고 그 객체를 여러개 담는 객체지향 방법의 경우에는 객체를 가져올 때 마다 이종의 데이터들을 가져와야 하기 때문에 여러 객체의 하나의 필드들을 연속적으로 사용할 때 심각한 데이터 캐쉬 미스가 발생합니다. 예를 들어 화면을 구성하는 윈도 객체의 x축을 모두 오른쪽으로 10씩 이동한다고 한다고 합시다. 우분투나 맥에서 왼쪽에 있는 워크스페이스로 이동하는 행동이죠. 뷰...
블로그 히트 글 모음
블로그 히트 글입니다. 정리한 방식은 구글 랭크 2 이상인 글들입니다. 아직 랭크 4 이상이 글은 없네요 :)
안드로이드 플랫폼 서적 3종 개인적인 리뷰 Rank: 3
데이터모델링의 어려움 Rank: 3
RDBMS에서 여러 값을 가지는 셀을 만들고 싶을땐? Rank: 3
function 개발새발(): ssh-agent, bash-it plugin Rank: 2
어떤 하드웨어 Rank: 3
Re: Romantic Binaries: Steve Jobs Rank: 2
갤럭시 탭 7.0과 갤럭시 탭 10.1을 쓴 느낌 Rank: 2
현대 웹 애프리케이션의 접근성 문제 Rank: 2
Hbase 인덱스 패턴 Rank: 2
Hbase 스키마 디자인 Rank: 2
Hbase, Thrift...
맥/리눅스에서 갤탭에 테그라크 커널 설치하기 (헤임달)
안드로이드의 장점은 자유롭게 운영체제를 변경할 수 있다는 점입니다. 하드웨어 벤더가 제공하는 소프트웨어 스택은 일정이나 여러 어른들의 사정으로 품질이 부족할 수 있는데 사용자들이 만든 소프트웨어 스택으로 교체할 수 있는 것이지요. 저는 제 갤럭시 탭의 커널은 테그라크 커널로 바꾸기로 마음 먹었습니다.
그런데 한가지 작은 문제가 있습니다. 삼성전자에서 유출된 것으로 보이는 오딘 소프트웨어는 윈도우즈 전용입니다. 저는 지금 윈도우를 쓸 수 없습니다.
저는 대부분의 시간을 리눅스와 맥에서 보내고 있고 윈도우가 있는 환경은 센스 노트북 밖에 없습니다. 그리고 제 센스는 운영체제가 완전히 맛이 갔습니다. 어제 키스가 윈도우즈 8에서 작동되지 않아 윈도우즈 7으로 돌아가기 위해 복구 모드를 진입했는데 복구...
여러 컴퓨터에서 안드로이드 작업을 할 때를 위한 팁
안드로이드 소스 코드를 다운로드 받는 데는 매우 오랜 시간이 걸립니다. 컴퓨터 마다 새롭게 다운로드 받는 것은 매우 힘든 일이죠. 그렇다고 작업 디렉토리 전체를 복제해서 들고 다니는 것은 부담입니다. 게다가 심볼릭 링크를 지원하지 않는 매체 (USB, CD)에서는 망가질 가능성도 꽤나 높죠.
여기에 간단한 방법이 있습니다.
mkdir ~/backup
cp -ar .repo ~/backup
맥이라면 -ar 대신 -aR을 쓰세요.
다시 복원하는 방법은 아래와 같습니다.
cd ~/backup
repo sync
네트워크 연결이 필요하지만 대부분의 프로젝트는 새로 받지 않고 넘어갈겁니다. 거기에서 시작하세요.
이제 폰 노이만이란 단어를 그만 씁시다.
사람들이 오해하고 쓰는 단어 중 하나가 폰 노이만 아키텍쳐입니다. 폰 노이만 아키텍쳐는 물리적으로 인스트럭션과 데이터 메모리를 하나로 쓰고 하버드 아키텍쳐는 별도로 나누어서 쓰고 있다고 이해하고 있죠. 일부 교과서에서 그렇게 설명하고 있습니다.
이건 말도 안되는 겁니다. ARM에서는 ARM 칩을 하버드 아키텍쳐라고 부릅니다. MIPS사는 자사의 M14K를 하버드 아키텍쳐라고 부르고 있죠. 인텔은 70년대에 하버드 아키텍쳐를 썼습니다. 우리가 폰 노이만인줄 알고 썼던 대부분의 하드웨어는 벤더들이 스스로를 하버드 아키텍쳐라고 부르고 있습니다. 그럼 혼란이 생기죠. 우리가 쓰는 하드웨어들이 4기가를 인스트럭션에 쓰고 4기가를 데이터 영역으로 나눠서 쓰던 그 하버드란 말인가요? 사실은 일부 교과서와 산업의...
homebrew 포뮬러 수정하는 법
homebrew를 쓰다보면 의외로 설치할 패키지(포뮬러라 부름)가 부족하다는 것과 잘못된 포뮬러가 많다는 점에 놀라게 된다. 그럴 경우 포뮬러를 추가하거나 삭제할 필요가 있다. 이번에는 포뮬러 수정에 살펴보겠다.
먼저 수정에 앞서 brew의 포뮬러를 최신 버전으로 업데이트 시킬 필요가 있다.
brew update
이 명령은 brew --prefix 경로에 git을 사용하여 최신버전을 업데이트 한다.
$ cd `brew --prefix`
$ ls .git Library/
.git:
COMMIT_EDITMSG HEAD config hooks info objects
FETCH_HEAD ORIG_HEAD description index ...
안드로이드 그래픽의 진실 2부
주: 안드로이드 그래픽의 진실은 뭘까요?에 이어 다이앤 핵본(Dianne Hackborn)의 새 글을 번역하였습니다. 편의상 기존 번역 글의 2부라고 명명하였습니다.
몇 일 전 나는 안드로이드 그래픽 작동 방식에 관해 자주 언급되는 부정확한 진술들을 정정하는 글을 썼습니다. 그 글이 여러 좋은 토론을 이끌었습니다. 하지만 불행히도 일부 사람들은 이 토론을 새롭고, 독창적이고, 가끔은 기술적으로 정확하지 않은 불평으로 발전시켰습니다.
이러한 새로운 주제들은 몇 가지 안드로이드의 근본적인 설계 결정과 관한 것이며 그들의 주장이 잘못된 이유가 됩니다. 안드로이드 UI가 왜 이렇게 설계되었고 실제로 어떻게 동작하는지 몇몇 실 배경 지식을 제공하여 논의를 이해하고 (판단하는 것을) 돕고자 합니다.
...
Thoughts on Python 3 →
hongminhee:
Flask, Werkzeug, Jinja2 등을 만든 Armin Ronacher가 블로그에 Python 3에 대한 생각을 올렸다. 급진적인 주장은 별로 없고 뭐 다들 알만한 사람들은 아는 내용이지만 전체적으로 잘 정리되어 있으니 관심 있는 사람들은 전문을 읽어보면 되겠다. 여기에는 개인적으로 인상깊었던 부분만 인용해보겠다.
“Always complaining, not doing anything”. There is just so much stuff I would love to see Python go but at the end of the day, I’m a user of Python more than a developer.
세상에 Python 사용자는 많지만 Python...
안드로이드 그래픽의 진실은 뭘까요?
다이앤 핵본(Dianne Hackborn)이 쓴 How about some Android graphics true facts?의 번역입니다.
안드로이드 그래픽의 진실 2부 도 참고하세요.
전 안드로이드가 그래픽을 어떻게 렌더링하는지에 대한 잘못된 글들이 여러 장소에 자주 올라오는 것에 지쳤습니다. 정답은 여기있습니다.
안드로이드는 항상 어떤 종류의 하드웨어 가속을 사용해서 그립니다. 1.0 이전부터 화면을 구성하는 모든 윈도우가 하드웨어와 함께였죠.
이 말은 여러분이 보아온 많은 에니메이션이 항상 하드웨어 가속되었다는 얘깁니다. 메뉴가 보여지고, 알림 그늘(notification shade)1가 아래로 내려오고, 엑티비티간의 전환 하고, 팝업이 뜨고, 대화창이 보여지고 사라지는 모든 것이...
November 2011
3 posts
렌더스크립트 번역
안드로이드 허니컴 (3.0) 부터 렌더스크립트가 추가되었습니다. 사용하기 어려운 OpenGL ES 2.0을 보조하고 어려운 글루코드를 해소하기 위한 기술입니다. 이전에는 허니컴 단말기가 드물어서 사용하기 어려웠지만 곧 아이스크림 샌드위치(4.0)가 대중화되면 범용화되리라 생각합니다.
하지만 렌더스크립트에 대한 기술 문서를 찾는 것은 쉬운 일이 아닙니다. 한국어로 “렌더스크립트”로 구글에 검색하면 나오는 글이 별로 없지만 영어로 “renderscript”를 검색해도 나오는 글은 거의 없습니다.
그래서 먼저 구글 개발자 블로그에 있던 두 개의 글을 번역했습니다.
렌더스크립트를 소개합니다
렌더스크립트 2부
부족하겠지만 어떤 기술인지 살펴보는데 도움이...
페이스북 그룹, 구글 그룹, 구글 플러스.
페이스북의 그룹은 메일을 보내어서 포스팅할 수 있습니다. 또 그룹의 모든 글들을 메일로 받을 수 있습니다. 무엇이 떠오르나요? 네 메일링리스트입니다. 과거의 메일링리스트가 완벽하게 페이스북에 하나로 결합된 것이지요.
저는 구글 그룹스도 그래야한다고 생각합니다. 구글 그룹스가 구글 플러스와 별개로 있을 이유가 전혀없습니다. 구글 그룹스는 구글 플러스에 결합되어야 합니다. 이번에 생긴 구글 그룹스 페이지 기능에 이 모든 것이 통합되어야 합니다. 기존에 레거시 메일링 리스트의 글들이 거기로 이동해야 합니다. 뉴스 그룹을 구글 그룹스가 통합한 것 처럼. 메일링리스트 자체를 구글 플러스에 통합시켜야합니다. C, C++, 리눅스 커널과 같은 기술적인 이야기부터 요리, 패션등과 같이 다양한 주제들이 구글 페이지에...
jQuery originalEvent
touchmove 이벤트를 등록하여 쓰는 데 콜백의 eventObject가 targetTouches가 없어 문제가 될 수 있다. 이럴 경우 originalEvent를 사용하라.
October 2011
14 posts
구글 리더 유감
구글리더가 새 디자인으로 바뀌면서 내면까지 바뀌었다.
Like의 소멸. - 구글 플러스로 바뀜.
구글 노트의 소멸 - 구글 플러스로 바뀜.
부드럽게 통합만 되었다면 이렇게 까지 불만은 없을 거다. 기존 Like의 정보는 그냥 백업만 가능하고 내 구글 플러스와는 아무 상관없다.
구글 노트가 사라지면서 예전 내 구글 공유 노트는 바보가 되었다.
구글 리더 리뉴얼은 기존의 사용자를 모두 바보로 만들어 버렸다. 기존과 기술적인 차이가 없는 상황인데 왜 데이터 마이그레이션을 생각하지 않았는지 궁금하다.
Go 투어 #1
구글 코리아에서 진행한 GO 작은 세미나 이후로 GO 언어에 관심이 생겼습니다. 그래서 오늘 저녁은 GO와 함께 하려 합니다.
GO의 설치
제 맥에는 brew가 설치되어 있기 때문에 brew에 패키징이 있나 살펴보았는데 다행이(?) 패키징이 있네요. 설치하겠습니다
brew install go
빌드가 끝나면 저는 6g 명령을 통해 컴파일러를 수행시켜볼 수 있네요.
gc: usage: 6g [flags] file.go...
flags:
-I DIR search for packages in DIR
-d print declarations
-e no limit on number of errors printed
-f print stack frame structure
-h panic on...
안드로이드 플랫폼 서적 3종 개인적인 리뷰
1. 인사이드 안드로이드
가격: 3만
장점 : 분량이 적절하고 편한 마음으로 볼 수 있음. 적어도 이해 안되는 것은 없었음.
단점 : 나온 시기가 오래되어 프로요 기반. 당연히 ueventd 등은 설명되어 있지 않다. 그리고 너무 앞부분. 그리고 책의 앞뒤의 표기나 서술방식이 좀 많이 다른 편. 저자별로 다른 듯. 진저브레드가 나왔을 때 init 부분 만이라도 빠르게 수정되었으면 더 좋지 않았을까?
2. 안드로이드 아나토미
가격: 4만
장점 : 그림이 많다. 바인더와 서비스를 상세히 다룬다. 오디오플링어, 카메라, 서피스플리어 3종 세트를 쉽게 접할 수 있다. HAL에 대해 간단히 리뷰할 수 있다.
단점 : 의외로 진도가 안나간다. 특히 4장 애쉬맵 부분은...
HTC 발전의 한계가 올까?
HTC를 보면 가끔 노키아가 생각난다. HTC와 노키아는 초기 전략이 비슷했다고 생각한다. 둘다 2저가격 하드웨어에 높은 수준의 소프트웨어를 제공하는 컨셉을 채용했다. 피쳐폰 시대에 노키아의 심비안 운영체제는 다양한 애플리케이션을 사용할 수 있으면서 PDA 스럽지 않은 사용 경험을 줬고 HTC는 윈도우즈 모바일 운영체제를 극한으로 발전시켰다고 볼 수 있다. 두 회사 모두 저가의 하드웨어를 주로 다루었기 때문에 프리미어 급의 하드웨어를 잘 만들지 못한다는 점도 동일하다. HTC는 안드로이드 폰 초기의 터치 패널 버그부터 조금씩 부족한 모습을 보여줬다. 노키아는 주로 저가를 담당하다 보니 고가 상품의 기획에 문제가 있는 것 같다.
아이폰이 등장한 이후로 두 회사의 길은 달랐다. 노키아는 심비안을 발전시키지...
Siri는 에이전트가 아니다.
음성인식
Siri의 음성인식은 소음 제거기술이 도입되어있는 마이크로폰 기술과 단말기로 부터 비교적 가까이 사용하는 문화를 가진 모바일 환경의 이점을 얻었지만 음성인식은 여전히 불충분하다. 한 예로 Andrew와 Andrea를 제대로 구별하지 못한다.
하지만 명령이 한정되어 있기 때문에 한정된 영역에 대해서는 실수없이 처리하는 편이다.
명령
Siri에게 내릴 수 있는 명령은 아래로 제한된다.
Ask for a reminder.
Ask to send a text.
Ask about the weather.
Ask for information (from Yelp, Wolfram|Alpha, or Wikipedia).
Ask to set a meeting.
Ask to send an...
데이터모델링의 어려움
1947년 에니악이 발명된 이후로 사람들은 연속적인 데이터 나열과 포인터 구조에 의존해서 세상을 구축해갔습니다. 연결 리스트, 연관 배열, B+ 트리등의 자료 구조는 모두 메모리 모델에 근거하고 있습니다. 이런 모델로 데이터를 전산화하기는 쉽지 않습니다. 실 세계의 자료들은 상당수가 표 기반이기 때문입니다. 우리가 어릴 때 부터 받는 많은 자료들은 표로 구성이 되어 있고 우리가 만들 수 많은 자료도 표입니다. 이 표를 어떻게 메모리 모델로 옮겨야 할까요? 1976년에 Peter Chen이 제창한 ER 모델(개체 관계 모델, Entity-Relation Model)이 해결의 단초가 되었습니다. ER 모델의 개체(Entity)는 여러개의 속성(Attribute)를 가져 테이블의 한 컬럼을 정의하는데...
RDBMS에서 여러 값을 가지는 셀을 만들고 싶을땐?
Multiple Values Attribute Pattern을 사용하세요.
유감스러운 복합 결제 인터페이스
회사 식대는 정해져 있는데 음식 가격은 오르니 카드와 현금을 같이 사용하는 복합 결제를 할 때가 많아졌다. 오늘 계산하려는데 점원이 계속 실수하는게 아닌가? 내가 한번 보겠다고 이야기했는데 쉽지 않았다. 우주선 조작기같은 입력 환경을 갖추고 있었기 때문.
복합 결제 화면은 결제금액과 개별 결제 가격과 결제 종류 버튼이 있는데 결제금액이 입력폼이다. 사실 이거 입력하면 안된다. 그럼 총 결제 금액이 변경된다. 나눠서 결제하니깐 더 적은 숫자를 입력할 수 있는데 그럼 원치 않게 디스카운트 해주는 셈이다.
다음 관문은 카드 결제다. 금액이 총금액이 표기되어있는데 변경해야한다. 이 금액 변경하는 인터페이스 조금 까다로운데 금액을 탭한 후 멀리 있는 숫자패드를 탭해야한다. 금액을 C를 눌러 날려버려야한다. 백...
맥 이맥스에서 command키를 meta로 사용하기
control과 meta (보통 키보드에서는 alt)를 많이 쓰는 이맥스와 맥은 상극과 같았다.
그런데 아래의 명령어를 오늘 발견해서 적용해보니… 정말 살 것 같다.
(setq ns-command-modifier 'meta)
이제 더 이상 구석에 박힌 option을 meta로 누르겠다고 고생하지 말고 command를 버리자.
function 개발새발(): ssh-agent, bash-it plugin →
dogfeet:
ssh key를 이용해서 인증 할때 매번 key 암호를 입력하는 것이 아니라 메모리에 올려놓고 계속 사용할 수 있다. ssh-agent를 사용하는 방법은 이미 잘되 있는 문서가 많아서 다시 거론하지 않는다. 다음과 같이 코드를 작성한다. 기본적으로 ssh-agent는 8 hours(28800 sec)안에 timeout 된다. $SSH_AGENT_TIMEOUT를 등록해서 값을 바꿀 수 있다: #!bash
RUNINNG_AGENT_PID=`ps -ef | grep ssh-agent | grep -v grep | awk...
Keyphrase가 없다면 물어보지 않습니다. 이미 있는 키에서도 변경하거나
폐기할 수 있죠. 그만큼 보안은 떨어지지만요.
어떤 하드웨어
어떤 하드웨어가 있다.
코어 i-3 2100, 4G 메모리, GTS540 1GB 그래픽 카드, 500GB의 하드디스크, 화면 사이즈는 벤더가 생각한 가정에 가장 적합한(?) 사이즈 21인치 모니터로 고정된다.
이태리 디자이너가 만든 멋있는 디자인의 하드웨어와 몇년간 심혈을 기울여 만든 운영체제가 설치되었다고 한다.
애플리케이션은 하나씩 밖에 못 띄우는 환경 마켓을 통해서만 앱을 받아야 하는 환경. 자신이 어떠한 애플리케이션도 만들 수 없다.
과연 이 제품을 200만원에 사겠는가?.1
다나와 기준으로 중간 정도의 사양을 골랐고 운영체제를 포함한 것을 가정해서 가격을 측정했다. 모니터는 시중에 팔리는 모니터 사이즈보다 약간 작은 모니터로 잡았다. 마진은...
1 tag
Re: Romantic Binaries: Steve Jobs →
hongminhee:
할아버지는 내가 태어났을 적, 혹은 그 이전부터 Macintosh 사용자셨다.
저는 애플소프트 베이직으로 프로그래밍을 처음 시작했네요. 태어나서 처음으로 접했던 전자 기기가 애플에서 만들었고 처음으로 접했던 소프트웨어가 마이크로소프트가 만든 셈입니다. 애플소프트 베이직은 애플이 아닌 마이크로소프트가 만들었거든요.
문법은 하나도 기억나지 않지만 그 작은 화면에 제가 입력했던 것에 대해 결과가 나왔던 그 순간의 즐거움만은 평생 잊지 못할겁니다.
hongminhee:
iPhone 4S가 iPhone for Steve이며 그의 유작이니 사자고 선동하는 사람들이나 거기에 현혹되는 사람들은 Steve Jobs의 업적과 정신에는 관심이 없고 번드르르한 Apple의 제품에만...
갤럭시 탭 7.0과 갤럭시 탭 10.1을 쓴 느낌
자비로운 구글 덕에 갤럭시 탭 10.1을 쓰게 되었습니다. 몇가지 느낀 점이 있어 정리합니다.
갤럭시 탭 10.1은 더 이상 화장실에 들고가기 힘들어졌습니다. 갤럭시 탭 7.0은 화장실 휴지걸이에도 올라가는 사이즈입니다.
길을 걸어가면서 타이핑 하기에도 갤럭시 탭 7.0이 훨씬 뛰어 납니다. 특히 가로로 잡고 타이핑하는 것은 갤럭시 탭 10.1에선 사실상 불가능에 가깝습니다. 저는 불편하기도 하지만 떨어뜨릴까 겁이 났습니다.
은근히 갤럭시 탭 10.1의 기본 키보드가 불편합니다. 한/영 변환의 위치나 스페이스 바 사이즈, 일부 키를 연타가 아니라 롱 탭으로만 입력할 수 있는 점 등이 문제입니다. (?를 입력하기도 짜증납니다.) 이건 다른 적절한 키보드를 찾아 바꿔야 할 것 같습니다.
화면 하단...
September 2011
4 posts
7 tags
현대 웹 애프리케이션의 접근성 문제
materiality:
HTML5가 지원되는 현대적 웹 브라우저들이 데스크탑과 모바일 환경 모두에서 보편화되어가는 상황에서, 우아한 퇴행으로 대표되는 ‘전통적’인 웹 호환성에 대한 고려, 그 중에서도 특히 자바스크립트를 사용할 수 없는 상황에 대한 고려가 반드시 필요한가? 누군가 이에 대한 시원한 답변을 해 줬으면 하는 바람이 있다.
저는 지금과 같이 우아한 퇴행이 사라져가는 세태에 대해 우려합니다. 페이스북과 트위터에 시각 장애인이 과연 무엇을 할 수 있겠습니까? 전용 애플리케이션에서 또 무엇을 하고요?
우리는 과거 그 어떤 시절보다 웹 접근성을 떨어트리고 있습니다. 그리고 앞으로도 더 퇴보할 것 같아 더 안타깝습니다 우리가 필수적으로, 혹은 편의를 위해 사용하는 도구가 표준적인 인터페이스가...
Hbase 인덱스 패턴
Hbase에서는 로우키 이외에 인덱스가 제공되지 않습니다. 이런 특성 때문에 인덱스용 테이블이 스키마 설계에서 고려해야할 부분이 됩니다. 구글 엔지니어 Ryan Barrett가 2008년 구글 I/O에서 컬럼 기반 데이타베이스에서 사용할 인덱스에 대해 설명한 적이 있습니다. 이 패턴들은 구글의 빅 테이블(Big Table)을 위해 만든 것이지만 Hbase에도 적절합니다.
인덱스
Ryan Barrett는 인덱스를 세 종류로 나누었습니다.
Kind index
Single-property index
Composite index
Kind index
Select * from grandparent
조금 예제가 작위적인 면이 있는데요. 이 예제에서는 RDBMS에서는...
Hbase 스키마 디자인
Evan Liu가 작성한 Hbase schema design case stuied를 참고하여 Hbase 스키마 디자인을 알아봅니다.
예 1 locations을 봅시다.
China
- Beijing
- Shanghai
- Guangzhou
- Shandong
- Jinan
- Qingdao
- Sichuan
- Chengdu
기존의 RDBMS라면 다음과 같이 만들 수 있습니다.
loc_id PK
loc_name
parent_id
child_id
1
China
-
2,3,4,5
2
Beijing
1
-
…
-
-
9
Chengdu
1, 6
-
썩 좋은 설계 방식은 아니지만 의도는 이해할 수 있습니다.
...
2 tags
Hbase, Thrift 응용프로그램과 연결하기.
단독으로 설치된 Hbase에 Thrift를 설치합니다. Thirift는 페이스북이 만들기 시작한 이종 언어간의 소통을 위한 인터페이스입니다. 애플리케이션에서 Hbase에 접근할 때 주로 이 기술을 사용합니다.
먼저 서버에 Thrift가 설치되어 있어야 합니다. 이번에는 우분투 서버에서 설치하였는데 다른 환경에서도 큰 차이는 없을 것 같습니다. 아직까지 우분투에서 Thrift 패키지를 지원하지 않는 것 같아 빌드하였습니다. 다운로드에서 최신 버전을 받고 빌드를 해야합니다.
빌드에 앞서 우분투 요구사항을 확인하여 미리 패키지를 설치해줍니다. Required packages와 Optional packages의 항목들을 적절히 선택합니다. 맥을 쓰시는 분은 여기를 참고하십시요.
빌드를 하고...
1 tag
Hbase, 단독(standalone)으로 설치하기.
이 글은 Hbase QuickStart를 해본 것을 기록을 남긴 것입니다.
Hbase를 단독으로 설치하기 위해 미러를 이용합니다. Hbase가 Google의 BigTable이 Google File System에 의존하 듯 Hadoop에 의존할 줄 알았는데 단독 구성도 가능하네요.
tar xvzf hbase-0.90.4.tar.gz
mkdir rootdir
cd hbase-0.90.4
Hbase에서 쓸 rootdir을 만들었습니다. 이 디렉토리를 설정파일(conf/hbase-site.xml) 의 hbase.rootdir에 설정합니다.
<configuration>
<property>
<name>hbase.rootdir</name>
...
August 2011
2 posts
맥에서 아이튠즈 제거하기
난 정말 자주 아이튠즈를 제거한다. 맥을 써오는 동안 대략 10번 정도 제거한 것같다. 아이튠즈 베타 버전을 썼다가 이후 베타 버전이나 정식 버전으로 돌아가기 위해 제거했다. 아이튠즈를 오래동안 방치했더니 자동 업데이트가 깨져서 다시 설치하기도 했다. 정말 사려깊지 못한 업그레이드 정책이다. 앞으로 애플리케이션을 개발할 일이 생길 때 아이튠즈를 반면 교사 삼아야 겠다. 이 글을 적는 이유는 또 아이튠즈가 깨어졌기 때문. 정말 신물이 난다.
먼저 애플리케이션을 제거해야한다. Finder에서 찾아서 제거하면 된다. 다른 프로그램이라면 여기서 끝이겠지만 아이튠즈는 몇가지 작업을 더 거쳐야 한다. 이제 아이튠즈 헬퍼의 동작을 멈추고 시작 프로그램에서 제외해야 한다. 이럴 바엔 차라리 언인스톨러가 있는게 더...
한국 사극의 문제점
전투는 언제나 난전이다.
장수는 소리만 지르거나
장수는 항상 점프하고 뒹구른다.
피하거나 점프할만큼 적은 크고 느리고 움직인다.
하단 공격을 하는 것은 예의에 어긋나는 행동이다.
꼭 빙글 돌면서 쓰러진다.
화살은 반드시 불화살이다.
투석기의 돌은 꼭 성벽에서 폭발한다.
성벽이 무너지는 일은 거의 없다.
왕실을 비롯한 실내는 항상좁다.
주요 인물은 허구의 인물이다.
주인공은 어릴 때 항상 험한 곳에서 뒹군다.
갑옷의 재질은 고무며 형태는 시대를 알 수 없다.
엑스트라의 옷이 고증이 잘된 경우가 많다.
다른 드라마의 소품 돌려 쓰다 우연히 맞아 떨어졌기 때문.
July 2011
6 posts
Emacs로 Java 작업할 때 cscope 쓰기.
cscope에 java 파일들이 인덱스 되어 있다면 .emacs 파일에 아래와 같이 입력한다.
(add-hook 'java-mode-hook (function cscope:hook))
왜 Java에선 기본으로 할당안되어 있는지 모르겠다.
칩 수준 멀티쓰레딩 (CMT: Chip-level Multithreading)
최근 프로세서에서는 ILP(명령어 수준 병렬화, Instruction-level Parallelism) 보다 TLP(쓰레드 수준 병렬화, Thread-level parallelism) 지원의 중요성이 커지고 있다. ILP에서 TLP로 관점이 옮겨간 이유가 두가지 있는데, 하드웨어 설계 상의 한계와 멀티쓰레딩 프로그램의 대두를 들 수 있다. CPU와 메모리의 상대적인 성능 차이로 생기는 메모리 벽(memory wall), 본질적으로 순차적으로 수행되어야 하는 작업, 깊은 파이프라인으로 인해 증가되는 실패 비용 등의 이유로 높은 수준의 ILP를 달성하기가 어려워졌다. 동시에 사용자 응용프로그램(application)과 운영체제에서 한번에 수행되는 쓰레드와 프로세스의 양의 증가가 높은 수준의 TLP를 의미있게...