1.

 

안드로이드 adb가 최신버전 우분투 64bit 버전에서 안도는 문제 :

 

ia32-libs 설치

 

sdk의 adb가 32비트 라이브러리로만 돌아가서 그럼.

 

2.

 

2.1.

/etc/mysql/my.cnf 에 추가

 

 

[client]
default-character-set=utf8

[mysqld]
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

 

2.2.

테이블 생성 시 문자셋 지정

 

CREATE TABLE `test`.`test` ( `test_id` int(11) NOT NULL AUTO_INCREMENT, `test_name` VARCHAR(30) NOT NULL, PRIMARY KEY (`test_id`) ) ENGINE = MyISAM DEFAULT CHARSET=utf8 COMMENT = 'test';  

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
2011/11/18 15:09 2011/11/18 15:09
Tag //

0.

 

옛날에는 사람보다 컴퓨터가 귀했기 때문에 쓸데없는 작업을 위해 컴퓨터의 연산능력을 사용하는 것은 터부시되었다고 한다. 포탄의 탄도 계산을 위해 중견 도시의 전력 사용량에 맞먹는 전기를 빼먹던 초기 컴퓨터 시대를 생각하면 그럴법도 하다. 지금은 NASA에서 사람을 달로 보내기 위해 필요했던 연산 능력을 누구나 손에 들고 다니면서 닭을 돼지에게 날리는데 쓰는 시대이기 때문에 사람이 하기 귀찮은 일은 컴퓨터에 맡기는 것이 미덕이 되고 있다.

 

그런 의미에서 텍스트 파일 포맷의 스프레드시트 파일인 csv를 읽어서 db에 때려박는 작업을 하려는데 한글 문자가 아스팔트에 갈린 수박처럼 깨져서 나오는 난관에 봉착했다. 파일 입력부의 소스는 다음과 같다.

 

FileReader fr = new FileReader(props.getUploadPath()+path);
BufferedReader br = new BufferedReader(fr);
String str = new String(new byte[835],"euc-kr");

인코딩이 깨지는 이유는 파일을 읽어오는 단계에서 이미 난도질 당해서 가져오는 것이라 그렇다.

해결책은 다음과 같다. 별 것도 아닌 내용을 굳이 태그 붙여서 블로그에까지 남기는 이유는 후손들이 이딴 문제로 시간 낭비하지 않기를 바라는 마음에서이다.

1.

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(props.getUploadPath()+path,"euc-kr"));
String str = new String(new byte[835]);

2. 윈도우에서 손을 뗀다.

3. 한글에서 손을 뗀다.

4. 코딩에서 손을 뗀다.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
2011/10/20 15:37 2011/10/20 15:37

winter is coming

from 분류없음 2011/10/18 08:55

  '겨울이 오고 있다'는 얼음과 불의 노래에 나오는 유명한 문구인데 오늘 자전거를 타고 출근을 하다보니 이 말이 문득 생각났다. 아침 칼바람을 뚫으면서 생각해 봤는데 자전거는 그렇다치더라도 오토바이는 버프와 장갑, 내복, 점퍼로 아무리 버텨도 다음달까지가 한계일 거 같다. 경험상 주행 중 추위는 손이 시린 것이 가장 심각한 데미지를 준다. 손토시를 살까 생각도 해봤지만 손토시가 절실할 때쯤 되면 도로가 얼 때가 많고 도로의 결빙은 딱히 대책이 없으니까.

 

  생명을 위해서라도 겨울 시즌은 건너 뛰는게 현명할 거 같다. 뭐 수명을 포함해서 이래저래 두바퀴는 신경 쓸 것이 많다.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
2011/10/18 08:55 2011/10/18 08:55
Tag //

WoW와 Linux와 pie

from 분류없음 2011/10/12 14:16

  한국에서 가장 활성화된 오픈 소스 프로그램 커뮤니티를 꼽자면 몇 군데가 있겠지만, 실질적으로 사용 가능한 소스가 생산되고 수정되고 공유되는 측면에서 따져보면 아무래도 세 손가락 안에 월드오브워크래프트(이하 WoW) 게임 커뮤니티가 들어갈 것이다. 왜냐면 WoW에서 UI단에서 쓰이는 애드온이나 매크로 등의 제작, 수정 활동은 굉장히 일상적으로 이루어지며 그것은 프로그래밍 언어인 lua에 기초하고 있기 때문이다. 재미있는 것은 이 사람들은 소스를 공개하고 수정하는 과정을 수행하면서 많은 경우 이것을 오픈 소스 혹은 프로그래밍 활동이라고 생각하지 않는다는 것이다.

 

  여하간 WoW를 좀 한다는 사람의 게임 영상을 보면 그 UI가 모두 제각각이다. 기본 UI를 고수하는 유저도 있고, 심하게는 과연 이것이 WoW가 맞나 싶을 정도로-얼핏보면 FPS게임이나 SF 장르의 게임으로 보일 정도로-커스터마이징한 경우도 찾아보기 어렵지 않다. 결국 이 다양성은 사람에게 최적화된 UI는 사람마다 다를 수 있다는 생각에서 출발하며, 그 충족은 회사 안의 개발자들을 혹사시키는 것이 아니라 개발 기회를 사용자들에게 열어둠으로써 가능하다는 결론으로 수렴한다.

 

 

  위의 영상은 WoW의 애드온 OPie의 소개 영상이다. 단축키로 각 계열별 스킬을 원형 형태로 배치시키고 마우스 이동으로 스킬을 선택하고 좌클릭으로 시전하는 UI이다. 개인적으로는 모든 기술은 1단계의 조작으로 완료되어야한다고 생각하지만, 개인의 취향을 떠나서 생각해보면 분명 유용할 사람도 있을 것이며 실제로도 꽤 많이 쓰이는 애드온이다.

 

 

  그리고 이 것은 이 애드온에서 영감을 얻은 것이 분명한 GNOMEPie의 소개 영상이다. 이러한 방식의 런치 메뉴가 MS의 시작 메뉴나 애플의 독만큼 혁신적인 방식의 UI인지는 모를 일이다. 하지만 Linux가 좋은 점이 있다면 그 혁신성이나 유용성을 판단하는 것이 유저 자신이라는 것이고 오픈 소스 운동이 가능성이 있다면 그 혁신성과 유용성을 충족시키는 것이 한 기업과 개인의 몫이 아니라 운동 전체의 몫으로 남겨져 있기 때문일 것이다.

 

 

덧. 개인적으로는 키보드로 아이콘을 불러내서 마우스로 선택하는 구성보다는 키보드로 불러낸 아이콘에 단축키를 매겨서 키보드 상에서 끝낼 수 있게 하는 것이 더 유용할 것 같다. 어떤 언어로 짠 프로그램인지는 모르겠지만 한 번 뜯어보고 고쳐볼만한 가치는 있어보인다.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
2011/10/12 14:16 2011/10/12 14:16

이 뭔 소리.

from 분류없음 2011/10/01 22:11

 

reverie

 

 

(전략)

 

그리고 최근에 요그님은 제가 왜 반말과 욕설을 하는지 궁금하다고 했어요. 그렇게 궁금하시면 아이피주소 다 공개하고 같이 경찰서 가요. 그게 저에겐 훨씬 덜 폭력적일 것 같아요.

 

 

------------------------------

 

1. 반말과 욕설을 하고 다니는 이유가 궁금하면 경찰서 정모를 하자는 건 경찰에 끌려가기 전까지는 반말과 욕설을 하고 다니겠다는 단호한 의지라고 보면 되나요?

 

2. 그리고 아이피주소 다 공개하라는 이야기는 뭐죠? 저에게 아이피 맡겨 놓으신 거라도 있으십니까? 아이피가 궁금하면 whatismyip.org같은데나 들어가 보시죠.

 

3. 누가 누구에게 폭력을 쓰고 다니는지는 잘모르겠지만 마지막또한 뜬금이 없군요.

 

4. 길게 쓴다고 다 문장이 아닙니다. 앞 뒤가 최소한은 맞아야 이야기가 통하죠.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
2011/10/01 22:11 2011/10/01 22:11
Tag //

개고기

from 분류없음 2011/09/22 13:23

http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=103&oid=031&aid=0000237330

 

  진짜 그런지는 모르겠지만 타조는 위협을 받으면 땅 속으로 머리를 숨긴다고 한다. 자기 시야에서 위협이 사라지면 위협이 실제로 사라진다고 생각해서인지. 물론 그런 동물이 엄혹한 디스커버리의 룰이 지배하는 아프리카 사바나에서 살아남았을 거 같지는 않지만 좌우지간 농림축산부 역시 사바나에 살고 있다면 타조와 비슷한 처신을 하고 있지 않을까 싶다.

 

  농림축산부는 개고기를 식품으로 볼 수 없다라는 한 마디로 모든 책임을 내려놓고 싶어하는 것 같은데 농림축산부의 바람과는 달리 개는 현실에서 식품으로 사육되고  유통되고 도축되고 있다. 어떤 이유에서건 농림축산부가 개고기가 인간의 건강에 유해하고 인류의 식재료로 적당하지 않다고 판단한다면 그 근거를 설명하고 식육견의 도축/유통의 금지를 추진해야 한다. 혹은 그 근거가 없다면 개의 도축 및 검역 등에 대한 기준을 설정하고 관리할 필요가 있을 것이다.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
2011/09/22 13:23 2011/09/22 13:23
Tag //

게임 셧다운제

from 잡기장 2011/03/23 17:26

http://goo.gl/PpDF4

 

  개인적으로 게임 셧다운제에 찬성하는 쪽이다. 비록 경험적으로 그것이 게임 중독 문제에 아무런 도움이 되지 않는다는 것을 알고 있지만 적어도 충분한 수면을 지키기 위해 인류가 노력했다는 흔적 하나를 남기는 것도 나름 의미가 있지 않을까 해서이다. 다만 그것에는 하나의 조건이 붙어있는데 오후 3시 정도에 학업 셧다운제가 걸려있다는 전제이다. 솔까 0교시부터 한밤중까지 학교니 학원이니 뺑뺑이 돌려놓고 집에 와서 좀 쉬어보려는데 수면이 중요하니 내일 정상적인 학업에 지장이 있니 개소리를 듣는 것은 건강에 좋을리가 없잖아.

 

  여가, 수면, 학습. 어른의 경우라면 여가, 수면, 노동의 밸런스를 맞출 필요가 있다. 하지만 높으신 분들이 생각하는 이상적인 황금비란 항상 여가를 최대한 단조롭고 짧게 만들자는 거라 맞춰주기 괴로운 구석이 있다. 더 안타까운 것은 높으신 분들의 이 괴로운 구상이 게임 중독을 막는 것은 물론이거니와 사람들이 게임 외에 다른 다양한 여가를 갖는 것에 아무런 도움을 주지 못한다는 것이다. 솔직히 도시에서 지하철 끊길때쯤 중고삐리가 즐길만한 여가 중 그나마 건전한게 게임이나 만화책 같은 거 아니냐는 거. 우리집 주위 학생들이 오토바이 절도 및 폭주나 수퍼 유리창 깨고 술담배 도적질을 하지 않고 얌전히 게임을 하며 밤을 지샌다는 것은 주민 한 사람으로서 다행한 일 아니냐는 거지. 반면 학업 셔터제, 즉 학교 3시 반에 영업 끝내고 학원들을 모두 폐쇄시켜버리면 애들이 실질적으로 선택할 수 있는 여가의 폭은 상당히 넓어지게 된다. 여행이라던가 자전거를 탄다던가 알바를 한다거나 오토바이 면허를 딴다거나 ...

 

  사실 게임을 좋아하는 청소년들에게 셧다운제 따위가 큰 골치가 아닐 것이다. 뭐 문제에 대한 여러가지 합법 혹은 비합법 솔루션들이 있으니까. 이 친구들의 혹은 우리들의 진정한 골치는 어른이 되어서도 게임이나 술먹는거 외에 즐길만한 취미가 별로 없다는 것이고 혹 있더라도 즐길 시간 혹은 즐길 돈이 참 애매하다는 것이겠지.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
2011/03/23 17:26 2011/03/23 17:26
Tag //

이 달의 소프트웨어

from 리눅스 2011/02/10 13:06

사용자 삽입 이미지

 

XVidCap Screen Capture

 

아마 아직도 그러겠지만 유튜브에서 ogg포맷을 지원하지 않는 통에 recordMyDesktop에서 캡쳐 뜬 영상은 바로 올릴 수가 없습니다. 구글에서 압축의 효율성이니 하드웨어 가속 지원이니 쉰소리를 해대고 있는데다가 코덱 문제에 요즘 각 벤더들의 주도권 다툼까지 겹쳐 있는지라 쉽게 해결이 될 거 같지는 않군요. 이 캡쳐툴은 RMD와 인터페이스 등이 거의 유사하면서 Xvid코덱(mpeg4였나?)으로 결과물을 토해냅니다. 그래서 유튜브에 쉽게 걸 수 있습니다.

 

단점은 RMD보다 녹화 퀄리티가 후진 거 같긴한데 대충 찍어서 빨리 올리려면 이 쪽이 좋을 거 같군요.

 

 

JustResizeIt

 

air 어플이니까 윈도우에서도 사용 가능할 겁니다. 말 그대로 설정해둔 크기로 이미지를 자동 리사이즈시켜주는 툴입니다. 드래그 앤 드롭으로 파일 여러개를 한꺼번에 바꿔줄 수 있습니다. 심미적으로도 괜찮은 디자인이므로 아무 이유없이 화면 구석에 띄워놓아도 괜찮습니다.

 

구하려면 http://goo.gl/nv5Qm

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
2011/02/10 13:06 2011/02/10 13:06

 

파일:Ada Lovelace 1838.jpg

 

프론트엔드와 백엔드 (1)

 

- 에이다 러브레이스 혹은 이 양반이 특허만 냈어도 지금쯤 블로깅은 주판으로 하고 있겠지

 

새삼스러운 이야기지만 컴퓨터는 많은 일은 한다. 물론 결정적인 일들1 해주지 않지만 그래도 시키는 일은 데꺽데꺽 잘하는 편이다. 예민한 감성을 가지고 있거나 컴퓨터와 장시간 대화를 나눠본 사람이라면 쉽게 알 수 있겠지만 컴퓨터는 사실 사람의 말을 이해하지 못한다. 컴퓨터의 내면은 상당히 하드보일드한 편인데 그 속에는 수많은 집적 회로들 사이로 깜박거리는 전기 신호만이 있을 뿐이다. 전기가 흐르지 않는 상태와 흐르는 상태, 이른바 0과 1의 세계-바로 디지털-가 그것이다. 이 0과 1의 삭막한 세계와 꽃이 피고 눈이 내리는 현실의 세계를 이어주는 것이 프로그래밍 언어이다.

 

프로그래밍 언어의 알파와 오메가를 정립한 사람은 에이다 러브레이스 백작 부인으로 알려져 있다. 에이다는 찰스 베비지란 사람과 친했는데 그 양반은 오늘날 컴퓨터의 조상이라고 할 수 있는 해석 기관이란 걸 구상하고 있었다. 확실히 천재적인 발상이긴한데 아쉬운 점은 당시 기술로 이 해석 기관을 구현하는 것은 불가능했다는 것이고 그래서 이 해석 기관이란 걸 이해할 수 있는 혹은 관심이 있는 사람 역시 거의 없었다는 것. 하지만 수학과 과학에 관심이 많고 딱히 할 일이 없었던 에이다는 이 해석기관에 관심을 가지고 베비지의 연구를 이해하고 더 나아가 이 해석기관과 인간을 이어주는 언어 체계의 기초를 잡기에 이른다.

 

그 내용인즉 소위 프로그래밍의 알파와 오메가인 분기문,  반복문, 서브루틴 등의 개념을 정립한 것인데, 이를 간단히 설명하기 위해 또 컴퓨터가 사람의 명령을 이해하기 위해 어떠한 과정을 겪게 되는지 다음과 같은 예제를 보도록 하자.

 

 

1. 프로그래머의 애인이 프로그래머에게 명령을 내린다.

 

“시장에 가서 사과 1개를 사고 달걀 있으면 6개 사와.”

 

2. 프로그래머가 명령을 프로그래밍 언어로 재구성한다.

 

(시장에 간다)

 

(사과를 1개 고른다)

 

[가게에 달걀이 있는가?]

 

         > 있을 경우

 

         *(사과를 1개 더 고른다)

 

          [사과가 모두 6개 인가?]

 

                         > 그렇다

 

                         계산을 하고 집에 간다

 

                         > 아니다

 

                         *로 돌아간다

 

           > 없을 경우

 

           계산을 하고 집에 간다

 

// 여기에서 달걀이 있는가 이 부분이 분기문이며, 특정 조건을 충족하느냐의 여부로 다음 행동을 결정하게 된다. 그리고 달걀이 있을 경우 사과를 5개 더 사는 과정이 반복되는데 이것이 바로 반복문이다.  

 

3. 코딩을 한다.

 

go(market);

get(apple, 1);

if(egg!=null){

         while(ihave(apple)<6){

                     get(apple, 1);

          }

}

buy();

 

// 대충 이런 느낌이라고 표현하기 위한 코드이다. 위 아래와 비교해보면 이 중간적인 언어의 존재 이유를 알 수 있다. 사람이 보기에도 대충 어떤 뜻인지 알거 같으면서도 컴퓨터가 알아듣기 쉽게도 간결하고 명확하달까. 여담이지만 가게가 없거나, 가게에 사과가 없거나, 돈이 없거나 하는 경우에는 어떻게 될까? 사람이라면 변명하거나 다른 가게에 가거나 훔치거나 하겠지만 컴퓨터는 소위 말하는 에러 메시지를 띄우며 프로그램은 뻗게 된다. (...)

 

4. 프로그램 코드가 기계어로 변환된다.

 

001001 11101 11101 1111111111111000
001000 00001 00000 0000000000001010
001000 00001 00001 0000000000000010
101011 11101 00001 0000000000000000
001000 00010 00001 0000000000000100
101011 11101 00010 0000000000000100
001001 11101 11101 0000000000001000

...

 

// 역시 대충 이런 느낌이라고 표현하기 위한 야메 기계어. 이 명령은 컴퓨터가 알아들을 수 있고 컴퓨터는 상점에서 사과를 몇개 사올 것이다.  그리고 프로그램은 정상적으로 종료된다. 물론 애인이 원하는 것은 사과 6개가 아니라 사과 1개와 달걀 6개일지도 모른다는 느낌이 들지만 뭐 역시 대충 이런 느낌의 사례는 현실에도 많으니까.

 

 

여튼 에이다 선생은 위의 개념2들만 있다면 이 해석기관과 그 자손들이 모든 계산을 할 수 있을 뿐 아니라 그림을 그리거나 작곡을 하는 것 역시 가능할 수 있을 것이라고 예견했다. 그리고 그것은 현실이 되었다. 그리고 인간의 언어와 점차로 더 닮은 프로그래밍 언어들은 수많은 개발자들이 더 수많은 사람들의 욕망을 충족시켜주는 프로그램을 만들도록 인도하고 있다. 여담이지만 에이다 자신도 경마 확률3을 계산하는 프로그램을 만들어 인류에 공헌도 하고 살림도 좀 펼려고 하였으나4 안타깝게 실패하고 실의 속에 세상을 떳다. 지금 잡스나 게이츠의 무리들을 본다면 아마 저승에서 특허나 낼 걸 생각할지도 모르겠지만:) 그랬다면 아마 잡스나 게이츠의 무리들은 커녕 업계 자체가 남아있으려나..

 

프론트엔드와 백엔드에 대한 이야기를 하려다-진짜 했었다-이야기가 좀 샌 감이 있지만, 프로그램에 대한 이야기를 했다. 다음 기회가 있다면 프론트엔드와 백엔드에 대한 이야기를 하게 될 것이다.

 

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
  1. 가령 돈을 벌어 온다거나텍스트로 돌아가기
  2. 분기나 반복텍스트로 돌아가기
  3. 지금도 어디선가 많은 컴퓨터들은 로또 등의 통계/예측을 위해 오늘도 돌아가고 있다. 읭읭.텍스트로 돌아가기
  4. 도박 중독 덕에 말년에 궁핍했다고도텍스트로 돌아가기
2010/11/30 16:50 2010/11/30 16:50
Tag //

아무거나 깔아쓰기

from 리눅스 2010/11/29 16:37

  가끔 설정을 하기 위해서 컴퓨터를 하는 사람도 있지만1 대부분의 경우업무건 취미건 어떠한 작업을 수행하기 위해 컴퓨터를 사용한다. 거의 대부분의 이 작업들은 어플, 즉 응용 프로그램을 통해서 이루어진다. 가령 가계부를 작성하기 위해 우리는 스프레드쉬트(가령 엑셀)을 사용하고, 일기를 작성하기 위해 워드 프로세서를 쓰고, 특별한 용무는 없지만 와우에 접속하고, 또 인터넷에 접속하기 위해 브라우저를 열고, 사진을 편집하기 위해 ...

 

  결국 일반적인 pc사용자에 있어 자기의 필요에 적합한 프로그램을 찾는 것이 컴퓨팅의 알파요, 사용하는 것이 오메가가 될 것이다. 리눅스에서의 프로그램 설치는 웹 등에서 설치 파일을 구해서 다운 받는 경우도 있지만 많은 경우 소프트웨어 관리 툴2을 통해서 이루어진다. 설치 파일(dev이나 rpm)을 통해서건 툴을 통해서건 설치된 프로그램들은 툴을 통해 삭제하거나 할 수 있고 통합적으로 시시때때로 업데이트 관리도 해준다.

 

  다음은 웹서핑을 하다가 우연히 마음에 드는 색깔을 발견하고 html색상 코드를 추출하기 위해 프로그램을 설치/사용하는 예제이다.

 

 

  사실 많은 경우 리눅스는 쉽지 않다. 적어도 윈도우만큼은 어렵고 그보다 더 낯설다. 하지만 프로그램을 찾고 설치하는 것만큼은 직관적이며 단순하다. 또한 자유/오픈소스 소프트웨어가 보통 그러하듯이 많은 프로그램은 무료3이다. 대개 검색하고 설치하고 삭제하고 다시 검색하는 시도들을 통해 사용자는 점차로 컴퓨터를 사용하는 것에 익숙하게 된다. 그런 의미에서 리눅스는 쉽지 않지만 그닥 어렵지도 않다.

진보블로그 공감 버튼트위터로 리트윗하기페이스북에 공유하기딜리셔스에 북마크
  1. 의외로 설정 매니아들은 우리 주위에 쉽게 찾아볼 수 있다.텍스트로 돌아가기
  2. 우분투의 소프트웨어 센터나 시냅틱, 수세의 yast와 같은.텍스트로 돌아가기
  3. 즉 결재나 크랙에서 자유로울 수 있다는 것.텍스트로 돌아가기
2010/11/29 16:37 2010/11/29 16:37
Tag //