BLOG main image
LoofBackER's Blog
Jun - Sik , Yang Blog

맥북 구매후 들릴곳

분류없음 2009.08.30 11:14 by LoofBackER
1. http://tykim.wordpress.com/2009/01/24/macwork-1%EB%85%84-%EC%9D%B4%ED%9B%84/
2. 50 Best Applications for New Mac Users
: http://www.leicakorea.com/bbs/zboard.php?id=story&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=401
3. Mac OSX를 즐겁게 사용하기 위한 프로그램들.
: http://xenologue.net/2008/05/536
4. Best Mac Software
: http://www.bestmacsoftware.org/
5. Mac OS X 설치 후 다듬기
: http://cafe.naver.com/inmacbook.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=70374
6. xguru님의 초보를 위한 어플리케이션 및 링크
: http://links.xguru.net/post/133220017
7. 맥 컴퓨터를 처음 사용하는 사람들을 위한 필수 프로그램
: http://www.mactopia.co.kr/entry/%B8%C6-%BE%D6%C7%C3-%C4%C4%C7%BB%C5%CD%B8%A6-%C3%B3%C0%BD-%BB%E7%BF%EB%C7%CF%B4%C2-%BB%E7%B6%F7%B5%E9%C0%BB-%C0%A7%C7%D1-%C7%CA%BC%F6-%C7%C1%B7%CE%B1%D7%B7%A5
8. 이런거 사용중이야 맥 애플
: http://suc.kr/2009/02/whats-in-my-mac-app/
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

아이폰

분류없음 2009.05.18 06:16 by LoofBackER

아이폰 안나오나?
삼성 핸드폰 버그가 너무 많다.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

엘레베이터

분류없음 2008.12.08 16:08 by LoofBackER
http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2007/aoc6_dah64/aoc6_dah64/
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

microCOS II

분류없음 2008.10.13 20:13 by LoofBackER
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

병렬처리 동영상

분류없음 2008.07.25 08:54 by LoofBackER
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

폴더 플러스

분류없음 2008.06.22 22:59 by LoofBackER
Joint Power Management of Memory and Disk.pdf 150KB
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

한 사람이 몇명의 마음을 움직일수 있는지에 대한 실험이 자행 되는 대한민국 역사의 현장
한 사람은 무슨 생각으로 버티는지 궁금하다.
한 사람은 남은 5년 어떻게 버틸지 궁금하다.
이제 어떻게 자신의 말을 여러 사람에게 관철 시킬지 궁금하다.
쪽팔리다. 대한민국의 한 사람 때문에

이명박 대통령, '국민의 피'를 원하십니까

 

정치

미국 쇠고기와 광우병 논란

이명박 대통령, '국민의 피' 원하십니까

불행 자초하는 대통령, 아르헨티나 타산지석 삼아야

김갑수 (kim gabsoo)

 

 

  

1일 새벽 서울 삼청동에서 청와대 방향으로 진입을 시도하던 한 시민이 경찰이 쏜 물대포를 맞고 그대로 쓰러져 응급차로 옮겨지고 있다.

ⓒ 남소연

  

미국산 쇠고기 수입을 반대하는 시민들이 1일 새벽 서울 삼청동에서 청와대 방향으로 돌진하자 경찰이 살수차로 물대포를 쏘고 있다.

ⓒ 남소연

상황이 심상치 않은 방향으로 치닫고 있다. 한 달 넘게 평화적으로 이어져 오던 촛불문화제가 5월 하순 들어 가두시위로 변모하더니, 5월의 끝 날에 이르러 이전과는 확연히 다른 양상으로 나타났다.

 

사상 최대 규모의 인파가 발 디딜 틈도 없이 들어찬 5 31일 서울광장 촛불문화제는 청와대 부근인 청운동에서 대학생들이 연행됐다는 소식에 다음 순서를 생략한 채 서둘러 끝내야 했다. 서울광장에 운집한 시민들이 이구동성으로 "어서 연행자를 구하러 가자!"라고 외쳤기 때문이다. 분별력이 있는 사람이라면 아마 이 순간에 심각하게 위기의식을 느꼈을 것이다.

 

10(경찰 추산 4)에 이르는 시민이 서울 도심으로 몰려들었다. 지방에서도 무려 100여 곳에서 반대 집회와 시위가 벌어졌다. 그들은 어린 초중등생이 아니었다. 청소년과 대학생은 물론 회사원과 자영업자에다 중·노년까지 모든 연령층이 시위에 가담한 것이다. 엄마들은 유모차에 아기를 태우고 나왔으니 이번 시위는 말 그대로 세 살에서 여든까지 모든 국민이 참여하고 있는 것이다. 이만 하면 진정한 국민 여론이 무엇인지를 알고도 남음이 있지 않은가?

 

11가 넘으면서 시민들은 약속이나 한 듯이 청와대 방향으로 걸음을 모았다. 효자동과 삼청동과 청운동 세 곳으로 도합 4만의 시위대가 순식간에 운집했다. 이미 사직터널의 방어선등 1, 2차 경찰 저지선이 거의 뚫린 상태였다. 시민들은 경찰에게 행진 길을 터 줄 것을 요구했다. 반면에 경찰은 시민들에게 해산을 종용했다. 그러면서 시민과 경찰은 한 시간 가까이 대치했다.

 

그때까지만 해도 시민들의 구호는 주로 "협상무효 고시철회"였다. 하지만 경찰의 가스 분말기와 물대포가 발사되자 구호가 격렬해졌다. 시민들의 입에서는 일제히 "독재타도"가 터져 나왔고 "이명박은 물러가라"는 훌라송이 뒤를 이었다. 그것은 옛날 "전두환은 자폭하라"는 구호를 개사한 것이었다. 이후 자정이 넘고 새벽이 되면서 물대포를 맞고 실신한 시민이 구급차에 실려 가는 장면을 본 시민들은 한결같이 "이명박은 물러가라"를 계속 외쳐댔다.

 

누가 이 사태를 만들었는지 생각해 보자

 

지금 이 시간 우리 모두는 현명해져야 한다. 이를 위해 먼저 우리 모두는 솔직해질 필요가 있다. 5 31일부로, 다시 말해 5월이 6월로 달이 바뀌면서 미국산 쇠고기 수입 반대 집회는 '반정부' 시위로 변모되었음을 인정하자. 그리고 이 시위는 특단의 대책이 나오지 않는 한 결코 수그러들지 않을 것임이 명백하다.

 

"우리는 끝까지 갑니다. 여기서 멈추지 않습니다."

 

1일 새벽 삼청동의 한 시민이 외친 말이다.

 

반정부 시위는 필연적으로 시민의 피를 요구한다. 경찰 만여 명이 투입되고도 막지 못하는 시위라면 더 이상의 시위 방어를 포기하는 것이 순리 아닐까? 경찰은 경찰대로 또 무슨 죄란 말인가? 보도에 따르면 정부는 경찰 병력을 만 오천으로 늘린다고 한다. 이것은 모두를 불행하게 만들 것이다. 이 대통령은 꼭 국민의 피를 보고 싶은 것인가?

 

이 대통령과 이하 우군 세력들은 이제라도 깨달아야 한다. 도심 촛불집회를 24회까지 이어져 오게 만들고 매번 참가자를 키운 것이 정작 누구인지를 알아야 한다는 것이다.

 

"위험하면 적게 먹으면 된다" "어린 것들이 뭐 아는가?" "악령이 출몰하는 세상이다" "청소년들이 놀이문화가 없어서 그렇다" "불순세력의 선동에 놀아나는 것이다" "괴담 진원지를 색출하겠다" "반미 친북 세력의 농간이다" "마귀들의 꼼수다" "대통령이 국민에게 항복해서는 안 된다. 국민 중에는 반역자도 있고... 금치산자도 있다."

 

이런 발언들이 있을 때마다 집회 참가자가 늘어난 것을 모르지는 않을 터이다. 그들이 오늘의 심각한 사태를 조장한 것이다. 이런 점에서 그들은 매국노에 가깝다. 그런데 대통령이 매국노의 말을 들을 수는 없는 법 아니겠는가?

 

불행을 자초하는 대통령

 

  

▲ 손 흔들며 귀국하는 이 대통령 중국 국빈방문을 마친 이명박 대통령이 30일 저녁 서울공항을 통해 귀국하고 있다.

ⓒ 연합뉴스 배재만

1일 새벽 2시 광화문 도로 곳곳에 사람들이 모여 있었다. 물대포를 맞아 온 몸이 젖은 시민들은 벌벌 떨며 나무와 박스를 구해 왔다. 그들은 도로 위에 불을 지펴 몸을 녹이면서 옷을 말렸다. 가족 단위의 시민들이 많이 눈에 띄었다. 아이와 함께 과자를 먹는 아빠도 있었고 길바닥에다 신문지를 깔아 아이를 재우는 엄마도 있었다.

 

이런 시민들에게 촛불 값을 댄 사람이 따로 있어 보이지는 않는다. 대통령이 "촛불은 누구 돈으로 샀는지 보고하라"고 해서는 정말 안 되는 일이었다. 이 대통령은 왜 어제 시위자가 급증했는지를 헤아려야 한다. 지금이라도 이 대통령이 문제를 푸는 용단을 내려야 한다. 대통령은 설령 자기 생각에 시위 군중들이 밉다고 해도 현실을 받아들여야 한다. 이 대통령은 스스로 실용주의자라고 자처하지 않았던가?

 

새벽 4시가 넘도록 시민들의 기세는 전혀 위축되지 않았다. 버스 위에 오르는 시민마다 족족 연행되었다. 하지만 시민들이 외치는 함성은 더 기가 올랐다. 이런 시민들의 욕구를 경찰력으로 막을 수 있다고 생각한다면 그것은 모두가 불행해지는 일이다.

 

이 대통령, 아르헨티나를 타산지석으로

 

이 대통령님, 아르헨티나의 델라루아 정권을 아시는지요? 델라루아는 보수우익을 표방했던 정치인이었습니다. 그는 수도권 시장 출신으로 1999년 대통령에 당선되었지요. 또한 그는 일자리 창출을 제1과제로 내세웠고 5%의 경제성장과 교육개혁을 공약했습니다.

 

그 역시 '비즈니스 프렌들리'를 지향하여 노동법을 개정하고 외국계 기업의 요구를 많이 받아들였습니다. 친미성향의 경제학자와 교수들이 그의 주위에 포진했었지요.

 

그는 초반 50%를 상회하는 국민 지지율을 기록하다가 두세 달 만에 20% 초반으로 급락합니다. 서민들의 삶을 외면했기 때문입니다. 아르헨티나의 주부들이 냄비를 들고 나섰습니다. 말 그대로 '냄비시위'였지요(우리로 치면 촛불시위 같은 것이라고 해야 겠지요).

 

하지만 대통령은 주부들의 시위를 무시했습니다. 주부들이 뭘 아느냐는 생각을 했는지도 모릅니다. 시위는 전국으로 확산되었습니다. 대통령은 성난 민심을 달래려고 하기보다는 경찰에 맡겨 단속을 강화했습니다. 시위대는 물밀듯이 대통령궁으로 달려갔습니다. 시위대를 막지 못한 경찰은 화급히 기마경찰을 투입합니다.

 

이 과정에서 5명이 사망하는 사고가 생겼습니다. 다급해진 대통령은 군부에 진압을 요청합니다. 그러나 군부는 같은 국민의 시위를 진압하는 데 병력을 투입할 수 없다고 거부했습니다. 결국 2002 12월 대통령은 사임을 결정하고 대통령궁 옥상에 대기시켜 놓은 헬기를 타고 도망쳤다고 합니다.

 

이 대통령님, 제발 아르헨티나의 델라루아처럼 되지 마시기 바랍니다.(<프레시안> 남미리포트 참조

 

끝내 우리의 사태도 아르헨티나만큼 심상치 않은 수준으로 비화하고 말았다. 이 대통령은 "이명박 퇴진"을 날이 새도록 외쳤던 시민들의 처절한 함성을 들었는지? 만약 듣지 못했다면 옆에 있는 누구라도 화급히 알려야 한다.

 

"대통령님, 이대로 가다가는 고시 철회만 하는 것으로 사태를 진정시킬 수 없게 될지 모릅니다"라고.

 

 

[관련기사 | 미국 쇠고기 수입 후폭풍]

☞ '촛불생중계' 인기폭발... '자발적 시청료' 7일만에 8000만원

☞ [6월 1 새벽 촛불 현장] 물대포에 쏘이고, 방패에 찍히고...

눈으로 밤샌 청와대, 경찰특공대는 철수했지만...

☞ #5505... 엄지손가락으로 '촛불' 쏘아주세요

☞ [특별면] 미국쇠고기와 광우병 논란 기사 모음

덧붙이는 | 양천경찰서에 연행되어 있다는 조카의 전화를 받았습니다. 뭐라 말해야 할지 종잡을  없을 정도로 착잡한 상태에서  글을 올립니다.

2008.06.01 06:19

2008 OhmyNews

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

신비

::::::Dairy::::: 2008.05.13 09:05 by LoofBackER
1 목이 간지러우면 귀를 긁어라
어렸을 때 겨드랑이 밑 부분을 가지고 놀았던 일을 기억하시는지. 그땐 그것이 참 재미난 장난이었는데. 이제 당신은 어른이 되었지만 몸을 가지고 칠 수 있는 장난은 아직 있다. 다만 좀 다른 느낌일 뿐이지. 예를 들어 목이 간지러울 때를 생각해보자. 꿀꺽 삼키는 것으로는 해결이 안 된다. 목 안의 긁을 수도 없는 간지러움을 해결하는 방법은? 귓속을 긁어서 귓속 신경들이 자극을 받으면 목 안의 반사 신경을 일깨워 근육 경련이 일어나게 됩니다. 미국 뉴저지 깁스브로의 이비인후과 전문의인 스캇 쉐퍼 박사의 말이다. 그 경련이 간지러움을 완화시킬 수 있지요.

2 소머즈의 귀도 부럽지 않아!
칵테일 파티에서 웅얼거리는 사람과 대화를 시작했다가 빠져나갈 수가 없다! 이럴 땐 오른쪽 귀를 기울여라. 말의 빠른 리듬을 따라가는 데에는 왼쪽보다 오른쪽 귀가 더 좋다고 미국 UCLA 의대 연구진들이 밝혔다. 한편 엘리베이터 안에 조용히 흐르는 노래가 무엇인지 알아내려고 잘 들어보고 싶을 때는 왼쪽 귀를 소리가 나는 쪽으로 쫑긋 세워 본다. 왼쪽 귀는 노래 소리를 잡아내는 데에 더 유리하단다.

3 원초적 본능을 극복하자!
소변이 마려워졌다고? 그런데 주위에 화장실이 없다고? 섹시한 제시카 심슨을 떠올리며 머리 속에서 판타지를 펼쳐본다. 섹스에 대해 생각하면 두뇌는 그 생각만으로 바빠지기 때문에 소변을 보고 싶은 생각이 어느새 사라진다고 미국 베일러 의과 대학의 남성 생식 약품 수석 연구원인 래리 립슐츠 박사는 말한다. 효과의 극대화를 위해서는 제시카 심슨의 These Boots are Made for Walking 비디오를 강력 추천한다.

4 고통은 이제 그만!
독일의 한 연구에서 주사를 맞을 때 기침을 하면 바늘이 찌르는 아픔을 경감할 수 있다고 밝혔다. 이 현상을 연구하고 있는 타라스 우시첸코에 따르면 이 기침 속임수는 가슴과 척추관에 일시적인 압력 상승을 일으켜 척수의 통증 유발 물질을 억제하는 효과가 있다고.

5 답답한 콧속을 청소하라!
달고 살던 코감기 약은 버리자. 코 막힘을 더 쉽고 빠르고 좀더 저렴하게 해결하는 방법은 혀로 입천장을 반복하여 밀어주면서 손가락으로 눈썹 사이를 눌러주는 것. 이렇게 하면 서골, 즉 머리와 코가 연결된 빈 공간을 가로지르는 코뼈가 앞뒤로 흔들리게 된다. 미국 미시간 대학교 의과 대학의 접골의학 조교수인 리사 드스테파노 박사에 따르면 이 동작을 해주면 코 속의 충혈을 완화시켜 20초 후에는 코가 다시 뻥 뚫릴 것이라고.

6 물 없이도 불과 싸운다!
오늘 밤 또 자다가 먹은 것을 확인할까봐 걱정이라고? 왼쪽으로 누워서 주무세요. 뉴욕 시 위장병학자이자 뉴욕 의과 대학의 부교수인 앤써니 스타폴리 박사의 말이다. 연구에 의하면 왼쪽으로 누워서 자는 환자들은 위산 역류로 고생할 확률이 더 낮았다. 식도와 위는 같은 각도로 연결되어 있다. 오른쪽으로 누워서 잘 때에는 위가 식도보다 높이 위치하게 되어 음식물과 위산이 목으로 넘어오게 만들 수 있지만 왼쪽으로 누워서 자면 위가 식도보다 낮아지므로 중력에 따라 무엇이든지 밑으로 내려가는 것이다.

7 입을 벌리지 않고 충치를 치료한다!
간단하다. 손등에 엄지손가락과 둘째손가락 사이의 V 자 모양 부위를 얼음으로 문지르면 된다. 캐나다의 한 연구에 따르면 이 방법을 쓰면 얼음을 쓰지 않았을 때보다 치통을 50% 경감시켜 준다고 한다. V 자 부위의 신경 전달로를 자극하면 두뇌에서 얼굴과 손의 통증을 느끼는 부위를 차단시키기 때문이다.

8 화상, 안녕!
실수로 손가락을 불에 그슬렸을 때, 데인 부위를 닦아내고 데이지 않은 손의 손가락 살로 살짝 눌러준다. 미시간대 의대 드스테파노 박사에 따르면, 얼음을 사용하면 통증을 더 빨리 완화시켜 줄 수는 있겠지만 손으로 누르면 데인 피부를 정상 온도로 되돌려 주기 때문에 물집을 예방할 수 있다고 한다.

9 돌고 도는 세상, 그만 돌아!
술을 너무 급하게 들이켜 어질어질하다구? 우선 손으로 무언가 단단한 것을 잡는다. 귓속에서 균형 감각을 담당하고 있는 부분, 즉 cupula는 원래 혈액과 같은 밀도로 된 체액 위에 떠다니고 있다. 알코올이 혈액을 묽게 희석시키면 cupula는 더 묽어지고 위로 뜨게 됩니다. 이비인후과 전문의 쉐퍼 박사에 따르면 이러한 현상에 의해 두뇌는 혼란에 빠지고 따라서 현기증이 일어나는 것이다. 그런데 이때 단단한 물체를 잡는 촉감적인 감각이 생기면 뇌는 재정비되고 균형 감각도 살아나는 것이다. 보통 사람들이 현기증이 날 때 바닥에 발을 붙이고 서는데 그것보다 손으로 단단하게 고정된 물체를 잡는 것이 훨씬 효과가 좋다는 말씀.

10 발 바꿔!
보통 사람은 달릴 때 오른발이 바닥에 닿을 때 숨을 내쉬게 된다. 그런데 이 때 몸의 오른쪽에 위치하고 있는 간은 상당한 하향 압력을 받기 때문에 횡격막을 끌어당겨 옆구리 격통이 유발되는 것이다. <남자를 위한 가정 요법>에 따른 해결책은? 왼발을 딛을 때 숨을 내쉬면 되지.

11 손가락 하나로 코피 멈추게 하기!
코를 눌러 쥐고 머리를 뒤로 꺾는 것은 코피를 멈추게 하는 아주 좋은 방법이다. 자기 피에 질식하는 것도 상관없다면 말이다. 보다 문명적인 접근 방법은 다음과 같다. 입 안 쪽에 코 바로 밑 부분에 해당하는 윗잇몸에 솜을 약간 끼우고 아주 세게 누르는 것이다. 대부분의 코피는 격막, 즉 코를 양쪽으로 나누는 연골 부분의 앞부분으로부터 나오는 것입니다. 남아프리카 공화국 더번의 엔타베니 병원 이비인후과 전문의인 피터 데스마라이스 박사는 말한다. 이 부분을 누르는 것이 코피를 멎게 하는 데 도움이 됩니다.

12 심장을 꼼짝 못하게 만들자!
첫 데이트의 긴장감을 떨치고 싶은 당신. 엄지손가락에 대고 숨을 불어보자. 미국 피츠버그 대학의 응급 의료 서비스 전문가인 벤 아보에 따르면, 심장 박동수를 관장하는 미주신경은 호흡에 의해 조절이 가능하다고 한다. 풍선을 불듯이 엄지손가락을 불어보면 심장 박동을 정상으로 되돌릴 수 있을 것이다.

13 뇌를 녹여보자!
한꺼번에 너무 많은 아이스크림을 먹고서 뇌까지 얼어버릴 듯한 띵한 느낌. 이럴 땐 혀를 입천장에 가능한 넓게 붙이고 혀에 힘을 주어 입천장을 누른다. 입천장의 신경들이 극도로 차가워져 있기 때문에 몸은 뇌까지 얼고 있다고 생각하게 되는 겁니다. 아보의 설명이다. 차가움을 상쇄시키기 위해 몸은 과도하게 열을 내게 되는데, 이로 인해 아이스크림 두통이 생기는 겁니다. 입천장을 세게 누르면 누를수록 두통은 빨리 진정될 것이다.

14 근시를 예방하자!
시력이 나빠지는 것은 유전적 원인이 거의 없다는 것이 미국 워싱턴 타코마의 검안사인 앤 바버의 말이다. 근시는 보통 근점 스트레스로 인해 유발됩니다. 다른 말로 하면, 컴퓨터 스크린을 너무 오래 보고 있어서 유발됩니다, 라는 말씀. 그렇다면 정상 시력으로 가는 왕도는? 낮 동안 몇 시간에 한 번씩 눈을 감고 몸을 긴장시킨 다음 숨을 크게 들이마시는 것이다. 몇 초 후 숨을 내쉬면서 근육도 같이 이완시킨다. 이두근이나 둔근 등의 근육을 조였다가 느슨하게 하는 것은 눈 근육 등의 자기 뜻대로 움직일 수 없는 근육도 같이 이완하는 효과가 있다.

15 죽은 팔다리여 깨어나라!
운전 중이나 불편한 자세로 앉았을 때 손이 저려오면 당신은 그동안 어떻게 했었나? 그럴 땐 머리를 왼쪽 오른쪽으로 흔들면 되는 것을. 그렇게 하면 1분 안에 따끔거리는 느낌이 고통 없이 사라진다고 드스테파노 박사는 말한다. 손이나 팔이 저리는 것은 보통 목에 있는 신경들이 뭉쳐서 압착되어 있기 때문이다. 따라서 목 근육을 풀어주면 압력도 느슨해진다. 그렇다면 발이 저리다면? 하반신에 있는 뭉친 근육은 발을 관장하기 때문에 발이 저릴 때에는 누워 있지 말고 일어나서 걸어 다녀야 한다.

16 친구들을 놀래키기!
다음 번에 파티에 가면 이 속임수를 한번 써보자. 한 사람에게 팔을 옆으로 쫙 펴고 손바닥을 바닥을 향하게 한 뒤 이 자세를 유지하라고 일러둔다. 그런 다음 그의 손목에 손가락 두 개를 대고 밑으로 눌러본다. 그는 저항할 것이다. 이제 바닥에 잡지를 몇 권 정도 쌓아 1센티미터 정도 높이의 표면을 만들고 그에게 한 발만 올려놓으라고 한 뒤 같은 동작을 반복한다. 이번에는 그의 팔은 어이없이 순순히 항복할 것이다. 엉덩이의 높이를 불균형하게 만듦으로써 당신은 그의 척추를 무장해제한 것이다. 미국 캘리포니아 산타 클라리타의 리졸트 피트니스의 공동 오너인 레이철 코스그로브에 따르면 우리의 두뇌는 척추가 상하기 쉽다고 감지를 하게 되면 우리 몸의 저항하는 능력을 닫아버린다고 한다.

17 물속에서 숨쉬기!
수영장 바닥에 있는 기지를 탈환해야 하는데 숨이 모자라 위험한 상황. 우선 짧은 숨을 몇 번 들이마신다. 호흡 항진, 또는 과환기를 시켜주는 것이다. 물속에 있을 때 호흡 곤란을 겪는 것은 산소가 모자라기 때문이 아니다. 이산화탄소가 생성되어 혈액이 산화되고 이로 인해 두뇌에 무엇인가가 잘못되었다는 신호가 전달되기 때문이다. 호흡 항진을 하면 산소가 유입되어 혈액의 산성도를 낮추어 줍니다. 미국 캘리포니아 어번 대학교의 생물학과 조교수인 조나단 암브러스터 박사의 말씀. 이 속임수로 두뇌는 산소가 더 많이 있나보다 하고 착각을 하게 됩니다. 적어도 10초는 더 벌 수 있다고.

18  마음을 읽자!
당신 자신의 마음을 조종하자! 다음날 프레젠테이션을 앞두고 있다면 잠들기 직전에 다시 한번 읽어 보세요. 미국 아이다호 대학교의 생물 과학 강사인 캔디 하임가트너의 조언이다. 대부분 기억들은 잠자는 동안 정리되고 편집되기 때문에 잠들기 바로 전에 읽은 것은 장기 기억으로 인코딩되기가 쉽다는 것이다.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'::::::Dairy:::::' 카테고리의 다른 글

신비  (0) 2008.05.13
학문을 닦는 다는것은?  (0) 2007.10.22
오랜만에...  (1) 2007.07.07
2007년 반이 지나다  (0) 2007.05.29
Embedded OS Engineer  (1) 2007.04.19

ITRC 끝났구나

분류없음 2008.04.26 19:49 by LoofBackER
1월부터 시작한 ITRC 제안서
드디어 끝이 보인다.
정말 이 제안서 때문에 많은 일이 있었다.
힘들고 시간도 많이 뺏기고
멤버십 과제도 못하게 되고
논문도 못쓰고 젠장.
ㅋㅋ
그렇지만 돼면 좋겠다.

경쟁률이 꽤 되던데
되길 바란다.

제안서라는 것은 돈 줄 사람들을 설득 시키는 문서

문서 쓰는 노하우를 기른 시간
하지만 별로 도움은 되지 않은것 같은 시간
항공 통신이라는 별 시덥지도 않은 분야에 대해 존나게 공부 하게된 시간

되돌릴수는 없지만 후회는 하지 않아야지

나의 아웃풋은 아직 까지 돌아 온게 없지만
이제 부터 쭉쭉 뽑아내야지

쪽팔리지만
열심히
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

내생각대로 안되는구나

분류없음 2008.04.23 05:11 by LoofBackER
멤버십과 연구실을 병행하기위한 나의 계획은 안되는구나

각자 서로의 이익만 챙기기에 바쁜 이세상이구나

서로의 이권을 챙기기에 바쁜 이세상이구나

내 맘은 누가 알아주랴?

각자 자기들만 좋게 하려는 수작

나도 너도
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

google 메일

분류없음 2008.04.22 01:52 by LoofBackER
http://www.gyro.pe.kr/tatter/gyroblog/trackback/98
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

System software paper List

:::::Want::::: 2008.03.31 10:53 by LoofBackER

논문 리스트

MSST
MASCOTS
USENIX FAST
IPCCC
WDAS
IWSSPS
RTSS
DSN
ACM CCS
Storage SS
EMSOFT

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

':::::Want:::::' 카테고리의 다른 글

System software paper List  (0) 2008.03.31

두갈래의 길

분류없음 2008.03.02 13:55 by LoofBackER

사용자 삽입 이미지
두갈래의 길이 있었다.

한가지의 길을 선택 했다.

선택 한길이 험난하다.

힘들다.

다른길을 선택을 조금 후회 한다.

어떻게든 되겠지............

내가 선택한길의 끝이 잘못된 선택이었음을 처절히 뉘우치지만 않게 길을 달려라..........


신고
크리에이티브 커먼즈 라이선스
Creative Commons License
http://www.hige-chen.com/images/20080228/rf47c64760490a71/hige-chen.mp4
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

PSP programming

분류없음 2008.02.10 23:59 by LoofBackER

출처 : http://blog.naver.com/midgardhr?Redirect=Log&logNo=19261638
<참고자료>
스크랩한 psp 개발 방법
psp-programming.com
pspdev.org
PSP Development Forum


PSP 프로그래밍을 시작해보자.


먼저 이 문서는 http://wiki.ps2dev.org/ 을 기반으로 제작되었다는 점을 명시해둔다.

이 문서를 보고 필자가 따라한 것을 다시 요약한 것이다.

위 홈페이지의 Programming FAQ를 보면 영어 문서로 자세히 설명되어 있다.


PSP SDK는 현재 Unix 기반으로 나오고 있기 때문에

Windows를 쓰고 있다면 Cygwin을 설치하는 일부터 해야한다.

물론 윈도우용 개발 도구도 있는 것 같기는 하지만, 공개용 같지 않다.


Cygwin은 http://www.cygwin.com/ 에서 다운받을 수 있다.

여기서 다운받을 수 있는 cygwin은 전체 설치 파일이 아니고,

실행한 이후 스스로 다운받아 설치하는 버전이다.

기본적으로 기본 옵션대로 설치하지만, 기본 옵션에 없는 2가지를 반드시 설치해야 한다.


첫째로는 Devel을 skip하게 되어있는데 이것을 install로 바꿔주어야 한다.

바꾸는건 skip를 클릭하다보면 글자가 바뀌는데 install이 될 때까지 클릭하면 된다.

필자가 설치했을 때는 1번만 클릭하면 되었었다.


두번재로는 wget를 설치해야 한다. 이것도 Devel과 비슷하게 하면 되는데

install이 아니라 버전 번호가 뜨도록 해주면 된다.


이 두가지는 필수이고, Vim을 사용하기 원하는 사용자는

Editor에서 Vim을 비슷한 방식으로 설치해주면 된다.

Vim도 버전 번호가 뜬다.


그림과 함께 설명하면 좋겠으나, 현재 여건이 여의치 않은 관계로 나중에 추가하기로 한다.


이렇게 하고 기다리면 알아서 다운받고 설치한다.

설치가 다 되면 바탕화면의 cygwin을 한번 실행해보자.

프롬프트가 잘 뜬다면 된것이다. exit를 입력하고 엔터를 치면 자동으로 빠져나온다.


이 실행 과정은 한번 하는게 좋은데, 문제점을 확인하기 위해서도 그렇고,

cygwin은 처음 실행했을 때 home/(Username)의 폴더를 생성한다.

이 폴더에 주로 파일을 넣게 되므로 이후의 과정으로 넘어가기 전에 한번쯤 실행해주는게 좋다.


이제 toolchain을 설치하자.

toolchain은 psp 프로그래밍하는데 필요한 컴파일러와 sdk 등등이다.

http://www.oopo.net에서 다운받을 수 있는데 psp의 toolchain을 받으면 된다.

ps2용 toolchain도 있다.


다운 받은 파일을 home/(Username) 폴더에 넣자. Username은

아마 윈도우 사용자의 이름으로 되어있을 것이다.

여기에 파일을 복사하고 다음과 같이 입력한다.


$ tar xfvz psptoolchain-20050712.tgz

앞의 $는 입력하는 것이 아니라 프롬프트를 나타낸다.

tar부터 입력하면 된다.

이 명령어는 압축을 풀라는 명령어이고, 뒤의 xfvz는 옵션을 주는 부분인데,

지금은 몰라도 된다.

그리고 뒤의 20050712.tgz는 toolchain의 버전에 따라 다르므로,

파일 이름에 있는 그 날짜를 넣으면 된다.


다음으로는

$ cd psptoolchain 으로 들어가서 압축을 푼 폴더에 들어가고

$ chmod a+x ./toolchain.sh 을 실행한 후

$ ./toolchain.sh 를 실행하면 된다.


한줄씩 보면 첫줄은 폴더에 들어가라는 의미이고

두번째 줄은 권한 변경이라고 할 수 있는데, toolchain.sh라는 파일의 속성을

변경하는 것이라는 정도만 알면 되겠다.

마지막줄은 파일을 실행시키는 명령어로, 이 명령이 실행되면

일차적으로 할 일은 다 끝난 것이다.


./toolchain.sh는 여러가지 명령을 순차적으로 처리하는데

시간이 굉장히 오래 걸린다.

어디선가 누군가가 쓴 글에 따르면 3시간 정도 걸렸다고 한다.


이 스크립트 파일을 열어보면 wget을 통해 파일을 다운로드하는 부분이 있는데

이 다운로드가 상당히 느리고, 끊어지는 경우도 많다.

다만 파일이 이미 존재하면 그냥 넘어가는데

파일을 받는 도중 끊어져서 명령 수행이 종료될 경우

다시 실행하면 파일 다운로드가 완료된 것으로 간주, 그냥 다음으로 넘어가므로

뒤에서 문제가 생긴다.

따라서 Flashget과 같은 다운로드 전용 프로그램을 이용,

주소를 붙여 다운로드를 미리해서

폴더에 미리 넣어주면 좋다. 다운로드하는 파일은 4개밖에 없으므로

크게 번거롭지도 않다.


이 작업이 끝나면 환경변수를 설정해야한다.

먼저 어느 위치에 있든지간에 cd를 입력하면 자신의 홈 디렉토리로 이동한다.


$ vim .bashrc를 입력하면 환경변수를 설정하는 파일에 들어가게 된다.

(vim을 사용하지 않는다면 .bashrc파일을 cygwin의 home/(사용자이름) 폴더에서 열어서 수정한다.)


맨 마지막에 다음 세 줄을 추가한다.


export PSPDEV="/usr/local/pspdev"
export PSPSDK="$PSPDEV/psp/sdk"
export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin"

주로 PATH를 설정하는 것이므로 내용은 신경쓰지 않아도 된다.

:wq를 입력하면 저장하고 빠져나온다.

물론 메모장이나 워드패드를 이용해도 된다.


이제 exit를 입력해서 빠져나가고 다시 실행하자.

(bashrc의 변경사항을 적용시키기 위해서다.)


$ psp-gcc -v 를 입력하자.


Using built-in specs.
Target: psp
Configured with: ../configure --prefix=/usr/local/pspdev --target=psp --enable-languages=c,c++ --with-newlib --enable-cxx-flags=-G0
Thread model: single

gcc version 4.0.0

위와같은 메세지가 보이면 성공적으로 마쳐진 것이다.


다음 번에는 HelloWorld를 출력하는 간단한 어플리케이션을 작성해보도록 하자.


출처 : http://blog.naver.com/midgardhr?Redirect=Log&logNo=19261638

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

PSP Programming Tutorial - Lesson 3

분류없음 2008.02.10 23:52 by LoofBackER
Lesson 03
 
A Programming Primer
 
Techniques to create your own programs. A crash course in the basics of C programming for the PSP.
 
After reading Lesson 01 and Lesson 02, you should now have a development environment set up, and have compiled your first basic program for the PSP. Now it's time to move on to bigger and better things. A "hello world" application is fine and dandy, a great learning experience, but it doesn't do anything. That's what this tutorial is about. How to make your programs do things.

What you need to understand is that this tutorial is not meant to be the be all and end all of PSP programming. It is much less a "how to create a game" than it is a foot in the door. What you will gain here are the basic building blocks of PSP (and C) programming. You will need to rearrange and add to these blocks together to create your own, functional application.

Having read Lesson 02, or knowing how to set up a basic program is a prerequisite for this tutorial. We will not go through the process of setting up your program in this tutorial. So, to test the code that follows replace the line
printf("Hello World.");
from Lesson 02 except where otherwise noted. Since the other lines were just setup for our program, we need not go through what they do again.

The final product of this tutorial will be a program that counts upwards until the user presses a button or until the counter hits a predefined limit. This is the perfect application for this tutorial; it combines several core elements of C programming to create a simple, yet useful result without requiring many program-specific functions. Covered in this tutorial are: variables, if/then statements, loops, text formatting, and button input.

First off, we will need to add two more header includes. The first one is to give us a little more control over the screen (we need this for one of the functions we will be using later). The second file we will be including allows us to get button input. So to do add these two files (pspdisplay.h and pspctrl.h), we need to add these two lines right below our first two "#include" statements:
#include <pspdisplay.h>
#include <pspctrl.h>
And that's all the extra setup we need. Now we'll move on to putting in the functional code. From here on, all code listed should go in your main function, replacing the "printf" statement from Lesson 02. The first thing we will do is declare the variables that we will use in our program. A variable declaration takes the following form:
//EXAMPLE (Psuedo Code)
//DO NOT ADD TO YOUR PROGRAM
type name=value;
The type is the data type of variable. Each data type can contain data (and only that data). For example, type "int" (meaning integer) can hold any non-decimal number from -32767 to 32767. A "float" is like an "int," but it can hold decimals. The "char" type can hold a letter. For our program, we will only use the built in type "int" and a PSP specific type called "SceCtrlData" which holds the button state of the PSP controls.

So, to declare the two variables that we are going to use, we insert the following two lines of code into our program (these should go where your "printf("Hello World.");" line was in Lesson 02; right after the line "SetupCallbacks();."
int counter = 0;
int i = 0; SceCtrlData pad;
So now we have tthree variables that we can use. Two of type "int," named "counter" and "i," containing a value of zero for now. And one of type "SceCtrlData," named "pad," which is filled with junk at the moment (since we haven't yet initialized it). This is something to keep in mind when writing your own programs. If you declare a variable without initializing it (like our pad variable), it will not just be empty. It will contain the information that was previously in that chunk of memory. Declaring the variable just allocates a certain amount of memory space for the variable to be stored in. The initialization is what clears it out and allows us to use it. The reason that we haven't initialized "pad" at the same time that we declared it is because it wouldn't really make sense. Since it holds button input, you can't just initialize it by typing in a value. We'll initialize it later, before we use it for anything.

Now we're going to give the user some instructions. The way we do this is by using "printf" to output a statement to them. So put this after the variable declarations:
printf("Press [X] To Start the Timer");
Look familiar? Good. It's the same function we used to output "Hello World" in Lesson 02. So if you ran the program at this point, it would be just like the "hello world" application, except it would print out "Press [X] To Start the Timer" instead of "Hello World."

Now we need the program to wait until the user presses the [X] button before it does anything else. Now, this could be a very difficult, nearly impossible thing to do. Fortunately, we have something perfect for dealing with it. It's called a loop. Basically what it does is run through a block of code multiple times. There are different types of loops available to you (for loops, while loops, do while loops, etc), but this tutorial will only introduce two of those loops, the "while" loop and the "for" loop. How this loop works is that you give it a statement, and it will execute a block of code while that statement is true. For example, if you had a block of code that incremented a variable (starting with a value of zero) by one each time the loop was run, and the statement that you passed in the loop was "i<10" it would execute your code ten times, because on the eleventh time that it checked the value of the variable, it would be 10, which is not less than 10, so the statement would be false (man, this is a run on sentence if I've ever seen one). One other important concept that you will need to grasp is that "true" and "false" are synonymous with "1" and "0" respectively.

Our loop will not be of the classic form. It could easily be, but I've looked through a handful of PSP projects' code, and they always do it this way, so I figured it would be good to introduce you to the way that you will most commonly see. Anyway, what we will be doing is having an "infinite loop" per say. It's not really infinite though, because (as I so conveniently didn't mention earlier), there is another way to exit a loop other than the control statement returning false. That is the "break" statement. Any time this is encountered, it will exit out of the loop you are currently in and your program will continue executing at the end of that loop. So, here's the start of our loop:
while(1) {
As you can see, this control statement will always evaluate to "true," because "1" is the same as "true." So the following code (the lines between the opening bracket and the ending bracket) will execute repeatedly until it encounters a "break" statement.

The next line is where we set the value of "pad." It uses a function that is defined in the "pspctrl.h" file that we included earlier. This is a function call, as you saw in Lesson 02, but there's a little bit of a twist. First of all, we are passing two values to it. No big deal here, you just seperate the two values with a comma. The second thing that's a little different is that we are going to pass a variable. Not a big deal here either, just insert the variable name instead of a number or string or whatever. The third thing that's quirky is that we need to pass it with the "&" operator in front of it. This is actually the "address of" operator, and when you get deeper into programming, you will probably get familiar with it. Basically what it does is instead of passing the value of the variable, it passes the memory address. For now, just know that in order for a function to be able to change the value of a variable you pass to it, you need to use the "&" operator. So here's how we'll set "pad" to contain the current status of the PSP controls:
          sceCtrlReadBufferPositive(&pad, 1);
If you're wondering what the "1" is for, don't worry about it. It sets the number of buffers to read, but I've only ever seen "1" used there. Honestly, I don't know why you'd want anything else there (if there's a reason, someone please enlighten me, and I can add it here).

The next line is an "if" statement. It's how you can program logic into your applications. What it does is execute a block of code "if" a statement evaluates to true. So, what we want to do is "break" out of the loop if the [X] button has been pressed. Which, effectively will "unpause" our program and go on to the next section. If the statement evaluates to false, it will just skip the code, and if there's an "else" statement, execute that block of code, or just go on. We will not have an "else" statement, so it will go through the loop again, continually checking the status of the buttons, and seeing if the [X] button has been pressed. While we're at it, we'll close our loop by ending an ending bracket.
          if(pad.Buttons & PSP_CTRL_CROSS) {
                    break;
          }
}
The statement in the "if()" translates to English as "if the [X] button is pressed." So if that button is pressed, it will break, if not, it will just continue going through the loop. Now on to the counter.

After they press the [X] button, we want to start a counter that will go until the user presses the [O] button. So what do we do? You guessed it, another loop! So we'll start this loop, and add in the exit code (with the substitution of "PSP_CTRL_CIRCLE" for "PSP_CTRL_CROSS").
while(1) {
          sceCtrlReadBufferPositive(&pad, 1);
          if(pad.Buttons & PSP_CTRL_CIRCLE) {
                    break;
          }

Now, we need to use a new function. What it does is clear the screen. Since we still have the "Press [X] To Start the Timer" on the screen, we need to erase that. Plus, the next time the loop rolls around and this code is executed, there will be the text that we're going to print out on the screen. We need to clear this off. So here's how we do it:
          pspDebugScreenClear();
This will clear off the screen, so now we're ready to print out our counter (and tell the user how they can stop the counter and exit the program).

The first line should look familiar. It's just a simple "printf" statement. The one thing that may look a little weird to you is the "\n" at the end of the string. "\n" is a special character that stands for a new line. So the new line character is the equivelant of pressing "ENTER" on your keyboard. The second "printf" statement is just a bit different. We need it to print out our "counter" variable. To do this, we will use the "%" operator. Basically this signifies that you want to display a variable, and the character that follows it tells the program what type of variable. For an integer, we will use "i" (integer; get it?). The second parameter that we will pass is which variable we want it to print. In our case, we want to pring the "counter" variable. So put these two lines in your program:
          printf("Press [O] To Stop the Timer\n");
          printf("Counter: %i", counter);

Now we need to increase our counter by one so that the next time through the loop, the number displayed is one higher. It wouldn't really be a counter if we didn't do this, now would it? We could do this in one of two ways. The first, less commmon way to do this would be by setting "counter = counter+1;" this works perfectly well, but there is an easier way. To increment a variable by one, just use the "++" operator:
          counter++;
It does the same thing as "counter = counter +1;" but it's a bit more elegant, don't you think?

Now we need to insert a short pause to make the "HOME" button work. Here we will be utilizing a "for" loop. This loop is just a tad bit different than the "while" loop. It takes three parameters. The first is the initialization; it will set the variable for the start of the loop. The second is the control statement, which does the same thing as the control statement in the "while" loop. And the third is what you want to happen to your variable at the end of each loop.
          for(i=0; i<5; i++) {
                    sceDisplayWaitVblankStart();
          }

This will execute our line of code 5 times (when i = 0, 1, 2, 3, and 4).

And finally, we need to end the code block that the loop runs through with a simple ending bracket:
}

Now for the final little bit. This is the code that will run after the "break" statement executes. We want to display a simple message, and the final count of our counter. So we'll clear the screen and use two more "printf" statements like we did in the loop, but with different text. Add:
pspDebugScreenClear();
printf("Counter Finished.");
printf("Final Count: %i", counter);
And we're done with our code! Now for a couple of cosmetic changes from Lesson 02.

The Makefile needs to be changed to reflect our new program. Go into it and change the title to one that you think suits the new program. I named mine "Counter Program." And also change your target to "count." Now go ahead and build your program, and give it a test run. You should now have the basic skills you need to create your own programs (text based ones at least). You can check out some other C programming tutorials for information on how you can use more complex logic structures (if/if else/else), loops, functions, pointers, etc. There are a few differences with programming for the PSP, but the basic stuff is all straight-up C. Good luck, and have fun!
Tutorial written by Brad Dwyer (aka Yeldarb). Copyright 2005.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

PSP Programming Tutorial - Lesson 2

분류없음 2008.02.10 23:50 by LoofBackER

Lesson 02

Creating Your First Program

A walkthrough of the setup, creation and execution of a simple "Hello World" application on the Sony PSP

So, after reading Lesson 01, you have a working development environment in which to create your programs. Now what? Well, this is the part you've all been waiting for, your very first program for the PSP. This tutorial will explain the basics of the C programming language and build the foundation upon which you will build your kingd-- err... programs.

We're going to create a folder hierarchy to organize our projects. Open up a CYGWIN bash shell, and type "mkdir projects" and then hit enter. This command ("mkdir") stands for "make directory" and it will create a directory, or folder, in your current operating directory. So now we have a new folder for all of our projects, navigate into it by typing "cd projects" and hitting enter. Now we are going to create another directory for this specific project. Type "mkdir helloworld" and hit enter. Now switch into the new directory with "cd helloworld."

The next step is to open up a text editor. It doesn't really matter what you open, it can be Notepad, Wordpad, whatever you want. I prefer using an editor that is dedicated to editting C/C++ source code because of the syntax highlighting options that are built in (I use Dev-C++), but honestly, it doesn't matter (so long as you know how to use it).

Now, create a new file and call it "main.c" in our "helloworld" directory. This is going to contain the source code for our program. For those of you who don't know what source code is (and I know there will be a few), the source code is what we write to create a program. It is written in a way that humans can understand. In most languages, the source needs to be converted to a format the computer (or in our case, the PSP) can understand. These are called compiled languages, and C and C++ fall into this category (the conversion is done by the compiler that we set up in Lesson 01). There are a few other programming languages that use what is called an interpreter to interpret the source code and send out machine code on the fly. These are called scripting languages (an example of a scripting language is PHP).

Alright, so we have a new file that is going to hold our source code. Now we need to start writing it. The first part of the program should contain comments to tell anyone reading our code what the aim of the program is, when it was written, and who the author is. Comments are lines of source code that are omitted from the compiled binary (or skipped by the interpretter in scripting languages). Comments are a very important part of your code, because when you (or someone else) come back to edit your source code later, you will not remember all of the intricacies of the program. So, you can leave yourself notes in the form of comments. Comments are signalled with the "//" and "/*" characters. Any time you see a "//" it means that the rest of the line will be a comment. A "/*" means that the compiler (or interpretter) will ignore your code until it reaches a "*/" signal. Comments signalled by the "/*" operator can span many lines, but comments signalled with "//" only comment out the rest of that line.

So, to start off our program, we are going to leave a comment at the top about what it does, when it was created, and who it was written by.

// Hello World - My First App for the PSP

/*
          This program was created by (Your Name Here) on (Date Here)
          It is a simple "Hello World" Application.
*/

The next portion of the program is where we tell the compiler which header files and which include files we are going to use in our program. Basically what the "#include" directive does is copy the code from the file you pass to it into the top of your program. This allows you to keep your program simple, while still using the advanced code that is already written for you. The include directive can include either header files that came with the compiler (or that you add to the compiler), or header files specific to the specific project that you are working on. The way that you discern which of these you are including is by whether you use "<>" to enclose the file or if you use quotes to do it. The less than and greater than signs include a file from the compiler's "include" directory, and the quotes include a file from the same directory as the file including them. We will be including two files in our program. The first is "pspkernel.h." This file will be included in every single program that you write for the PSP. It contains all of the code specific to your PSP. Your program will not work on the PSP if you do not include this file. The second file we are going to include is "pspdebug.h." This file contains several useful functions for debugging your programs, but specifically it includes the function that we are going to use to write text to the screen. So, add this code to your program:

#include <pspkernel.h>
#include <pspdebug.h>

Next we tell the PSP a little bit about the program. This isn't really that important, your program will compile without it, but it is always a good idea to keep it in (if only for forwards compatibility). The first attribute is the name of the program, but it's not really the name of the program that will appear (we'll change that later). The other values are other attributes (just leave it alone), major version, and minor version. We'll just leave all of these except for the name as the defaults. So, add the following line to your program:

PSP_MODULE_INFO("Hello World", 0, 1, 1);

Now we are going to set up the function that we will use to write to the screen. This step is optional, but it makes writing text based programs much easier. The basis behind this line is to change the function that is built into the PSP, called "pspDebugScreenPrintf" into something that's much easier to type. This function is used to write to the screen (which you will see later). What we are basically going to do here is rename "pspDebugScreenPrintf" to "printf." So every time we use "printf" from now on, the compiler will just treat it as if we have typed "pspDebugScreenPrintf." Here's how we'll do it; we'll define "printf" as "pspDebugScreenPrintf" like this:

#define printf pspDebugScreenPrintf

Ok, I have some bad news and some good news. The bad news, the next block of code is pretty complicated. The good news, you don't need to understand it. Here's a brief explanation of what it does (we'll leave the actual syntax and line-by-line explanation until later). Basically what this block of code contains is functions that will be called in our program. The functions will set up your program to run on the PSP and allow you to not worry about your PSP freezing or exiting the game when you don't want it to. Put this block into your program:

/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
          sceKernelExitGame();
          return 0;
}

/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
          int cbid;

          cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
          sceKernelRegisterExitCallback(cbid);

          sceKernelSleepThreadCB();

          return 0;
}

/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
          int thid = 0;

          thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
          if(thid >= 0) {
                    sceKernelStartThread(thid, 0, 0);
          }

          return thid;
}

Next, we are going to define the "main" function. Each program in C and C++ needs a main function. This is where the code is executed from. C (and some of C++) functions in the proceedural paradigm. This means that the code goes in a linear path. For example, if you have the following code:

//Do not put this in your program.
//It is an example.

int myFunction() {
          //Print Out 'A'
          return 0;
}
int main() {
          //Print Out 'B'
          myFunction();
          //Print Out 'C'
          return 0;
}

Where the comments (see above if you don't remember what comments are) do what they say. The program would print out 'B' then it would print out 'A' then 'C' because the compiler starts in the main function. It prints out 'B' then it sees the call to "myFunction" which is defined above it, and goes there, sees that it needs to print out 'A' and then returns to where it left off and prints out 'C.' All of your programs (until you get to advanced C++) will follow this linear structure. So, the "main" function is vital to your program. To define a function, you use the following structure: "[return type] [function name]() {". The return type is what the function will send back to the program. For "main" this should always be of type "int" (which stands for integer). The function name is your name for the function, "main" will obviously be named "main." So, define your function by putting the following line in your code:

int main() {

Now we need to add two lines to set up the screen and to use those functions that we put in earlier (which you didn't need to know how they worked). Even though you don't need to know how those functions worked, it is important to grasp the concept of how to call functions. It is actually very simply. You just put the function name with parenthesis at the end (and if it takes any parameters, you put those in the parenthesis, but we'll cover that later). Every line in your program will need a semicolon at the end. The reason for this is because the compiler does not see any white space. Between lines, you could have 100 empty lines, and the compiler wouldn't care. This is useful because it allows you to format your code how you want, in a way that you can understand. You can group lines together, or do whatever you want with your white space. But, in turn, to end a line, you need a semicolon. So add these two lines to your program to set it up:

pspDebugScreenInit();
SetupCallbacks();

Now it's time to write some code that we will actually be able to see the restults of. Remember when we defined "pspDebugScreenPrintf" as "printf?" Well, now it's time to use that function. The way that we will print text to the screen is by calling the "printf" function with a parameter (I told you we'd cover it later.) A parameter is a variable that you can pass to a function for it to use. These will come in handy later when you're writing your own functions. So, for "printf" to output to the screen, we need to pass a string to it. We will output "Hello World" by passing that string to the function. "Printf" is a powerful function because you can also use it to output other variables to the screen. We would pass these as other parameters, but that will all come in due time. For now, we will just print out "Hello World" to the screen, like so:

printf("Hello World");

And there it is, you have told "printf" to output to the screen. Now we just need to finish some things up and then our source code will be ready to build. We need to pause our program so that we can see the output. If we don't, it will just either freeze, or return you to the PSP Menu. You will never even get to see your beautiful phrase outputted to the screen because it will be erased so fast. So, add this line to pause the program until the "Home" button is pushed and the user is sent back to the PSP Operating System.

sceKernelSleepThread();

Now we need to give our function a return value, since when we defined it ("int main()"), we told the compiler that it would return an integer. So just return a '0' (that's a zero, not a capital 'o') by doing this:

return 0;

And finally, end the function by putting in a closing bracket:

}

And that's it for the program! Now we just have to tell the compiler how we want this project compiled by creating a Makefile. So create a new file called "Makefile" with no extention (ie, no .txt). Once you've done this, open it up in your text editor.

Put the following in your Makefile:

TARGET = hello
OBJS = main.o

CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Hello World

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

You can use this Makefile as a basis for all of your simple projects. Sometimes you will need to add libraries or whatnot to this file, but for now it is fairly simple. It basically just tells your compiler to take "main.c" and build it using the PSPSDK into a .pbp file that your PSP can read. What you will need to change if you use this Makefile in other projects is where it says "PSP_EBOOT_TITLE = Hello World." You can change where it says "Hello World" to the title of your program, this is the name that will appear on the PSP Game Menu when you select the file.

Now open up a CYGWIN Bash Shell and "cd" into your "projects/helloworld" directory. Type "make" and your shell should output some stuff to you. It will tell you if your source code had any errors that made it uncompilable. Generally, if it gives you a few warnings, it's not a big deal. Errors are what you want to watch out for, warnings are just possible points that could cause bugs.

If you didn't have any errors, congratulations! You have successfully created and compiled your first application for the PSP. I'll bet you're dying to test it out. So, put "C:/cygwin/home/yourUserName/projects/helloworld/EBOOT.PBP" on your PSP just like you would any other homebrew application, and try it out for yourself!

Check out Lesson 03 to learn more about programming for the PSP, such as if/then statements, variables, loops, and button input.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

PSP Programming Tutorial - Lesson 1

분류없음 2008.02.10 23:49 by LoofBackER

Lesson 01

Setting up the Development Environment

How to get the toolchain and PSPSDK up and running with CYGWIN on a windows machine. The complete newbie's guide.

This is the first installment in a series of tutorials focussed on getting a novice programmer well on his way to developing his own homebrew applications for the Sony Playstation Portable (PSP). If you are reading this, congratulations, you have hurdled one of the biggest obstacles for a programmer. Likely the most difficult thing about programming is getting started. Well, by starting to read this tutorial, you are well on your way.

The first step to creating your own program is getting your environment set up. This environment is how you will convert the source code you write into a compiled file formatted for execution on you PSP. We will be setting up two important tools on our system.

The first of these tools is called CYGWIN. It is basically a Linux emulator for windows. It will create a simulated Linux environment on your computer so that you can run native Linux applications. This may sound intimidating, but don't worry, it's very simple to use.

The second thing you'll need is the toolchain. This is the key to programming for the PSP. It will set up everything you need, from header files, to libraries, to the compiler itself, to the sample programs. Once you have this installed, you will be nearly ready to create your first program.

Now for the part we've all been waiting for: the installation.

The first step is to install CYGWIN. You can download the install file from the CYGWIN website here. After it has finished downloading, open up the executable. You will see a splash screen; click next. Now you will be asked what you want to do. Select the default option of "Install from Internet," and hit the next button. Now you will be prompted where you want to install CYGWIN. Change the install directory to "C:/cygwin" if it is not set as such already (where C: is your local hard drive). Leave the other options set to their defaults and hit next. Now you will be asked where you want to save the installation files. What you select here doesn't really matter, but I suggest putting them someplace where you will be able to find them and delete them after the installation is complete. Once you have selected a suitable location, click next. The next screen will ask about your network settings, if you don't use a proxy (or don't know what a proxy is), just click next on this screen. If it doesn't work, go back and try letting it use Internet Explorer's settings. Now you should be presented with a list of servers to download the installation files from. Any one of these will do, so select one, and then click on next. Now it will download the package list, this could take a few minutes, depending on your connection speed. Once it is done, click on "view" at the top to view the packages available for you to install. You will need the following:

·  autoconf2.1

·  automake1.9

·  gcc

·  gcc-g++

·  make

·  patchutils

·  subversion

·  wget

You can select them by clicking where it says "skip." "Skip" should then change to a version number. Don't worry if other packages are selected; packages that are required by CYGWIN or by other packages you select will be automatically set to install. When you are finished, click next. CYGWIN will now download and install the selected packages. This will quite possibly take a while, so go watch a TV show or do some web surfing while you wait. After the install has finished, you are ready to install the toolchain.

Now, we are going to install the toolchain into our CYGWIN environment. To set up our environment, we will need to run CYGWIN first. So, either from the start menu, or from "C:/cygwin," run a CYGWIN bash shell (cygwin.bat). This will open up a command line. Once you see "yourusername@yourcomputername ~" you may close the window; your environment has successfully set up. To download the latest toolchain, go here. It should be at the very bottom of the page. At the time of writing, the latest toolchain file is dated 20050725. Download this file. When it is finished, use Winrar to extract the file contents to "C:/cygwin/home/user," where "user" is your username.

The toolchain needs a bit of customization to work with CYGWIN, so fire up Wordpad, and open "C:/cygwin/home/user/psptoolchain/toolchain.sh" and do a "Find and Replace" to replace all instances of "gmake" with "make" and all instances of "gpatch" to "patch" and then save the file. Now it's time to install, so open up your CYGWIN bash shell again. Now it's time to introduce you to the Linux command line. You should see a "$" at the beginning of the line. This means that you are running the shell in user mode, as opposed to root (or admin) mode. This is of little importance in CYGWIN, but if you ever use an actual Linux command line, this is an important thing to notice.

We now need to change directories to where we extracted the toolchain. Type "ls" in the bash shell; this stands for list. It will give us an output of all of the files in our current directory (this is similar to "dir" in a Windows command line). Now you should see a folder named "psptoolchain," this is where we want to go. So type "cd psptoolchain" and hit enter. CD stands for change directory, and it will (obviously) switch the current operating directory). Now do a quick "ls" again, and you will see the files in this folder. The one that we want is "toolchain.sh." To execute this file, type "./toolchain.sh" and hit enter. In Linux, "." means the current directory, and ".." means the parent directory, so this command means to execute "toolchain.sh," which is in the current directory. The toolchain.sh script will do the rest, for you. This can take up to several hours, depending on the specifications of your machine. For a frame of reference, my 3.0GHz Pentium 4 took about three hours to run the entire script, so be patient.

Now for the last step. We have to tell CYGWIN where it can find the PSPSDK (which the toolchain just installed) and the toolchain. To do this, we need to change "C:/cygwin/cygwin.bat" to include the paths. So, close CYGWIN, and navigate Explorer to "C:/cygwin" and right click on cygwin.bat. Select "Edit" and a Notepad window should appear with the following:

@echo off

C:
chdir C:\cygwin\bin

bash --login -i


Change this to:

@echo off

C:
chdir C:\cygwin\bin

set path=%path%;C:/cygwin/usr/local/pspdev/bin
set PSPSDK=C:/cygwin/usr/local/pspdev

bash --login -i

Now you're ready to go! If you have source code that you want to compile, go into that directory with "cd" and type "make" and it should give you an eboot.pbp that you can put on your PSP. If not, check out Lesson 02 to learn how to create your own simple application for the PSP.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

windows live write

분류없음 2008.02.08 15:47 by LoofBackER

MS 에서도 좋은 OPEN API 가 있다.

그중 하나가 라이브 라이트라는 것인데.

이것을 이용하면 오프라인에서 편집한 문서를 블로그에 바로 올릴수가 있다.

작년에 부터 사용하고 있었지만 이제는 잘 사용해 보아야 겠다.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

제품사양

상세설명

모델명

IBM ThinkPad T60 2613 A53

CPU

Intel Core processor Duo T5600 1.83GHz (듀얼코어 나파)

프로세서 Bus속도

667MHz
메인메모리(기본/최대) 1024MB DDR2 667MHz / 3GB

L2 Cache

2MB

HDD

100GB (SATA / 5400rpm)

LCD

14.1 TFT SXGA+ (1400 X 1050)

그래픽어댑터

-ATI RADEON X1300 64MB   Video RAM std. / max : 128MB
- Chipset : ATI M52-64
- Type : SXGA+
- Ram타입 : DDR2 SDRAM
- 최대 해상도 (max video RAM) : 2048x1536 16777216 컬러
- Bus : PCI Express

FDD

옵션

ODD

DVD / CD-RW COMBO (24x/24x/24x/8x Max)

유선통신

MODEM + LAN(통합 Intel PRO/1000 Gigabit 이더넷)
적외선포트 4Mbps

무선통신

- Wireless speed : 11a:54Mbps, 11b:11Mbps, 11g:54Mbps
- Wireless 표준 : Intel PRO/Wireless 3945ABG
- Antenna : Ultra Connect
- Description : Intel PRO/Wireless 3945ABG
- Frequency : 802.11:2.4 to 5 GHz
- Wireless Implementation (Form Factor) : Mini-PCIe

오디오

- 칩셋 제조사/모델 : Intel High Definition Audio
- Number of speakers : 2
- Speaker Quantity : 2 (Internal Speakers)
- Speaker powe r rating : 1.0 Watts
- 내장 스피커 수 : 2

키보드

풀사이즈 / 키보드 라이트

포인팅

ThinkPad UltraNav

I/O 포트

2 USB(2.0), VGA, 이어폰, 마이크, RJ-11(모뎀), RJ-45(랜), PC 카드 슬롯, IrDA, S-Video, 패러럴
Security Client Security Solution 관리자 암호, 시동 암호, 하드 디스크 드라이브 암호

배터리

리튬이온

어댑터

AC 어댑터

크기

약 311 × 255× 26.6(mm) / Height x Depth x Width

무게

약 2.32Kg

O/S

한글 Microsoft Windows XP Home
보증기간 3년 무상A/S / 1588-5801
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

뇌연구의 공학적 응용

분류없음 2008.02.04 04:08 by LoofBackER
 

인류복지와 신경회로망

과학기술의 발전은 인류의 복지 증진에 기여하여 왔다. 특히 1733년 영국의 케이(Kay)가 방적기를 발명함으로써 시작된 산업혁명은 인류의 생활 방식을 크게 바꾸어 놓았다. 산업혁명은 인간의 물리적(物理的) 능력을 뛰어넘는 기계로 힘든 일을 보다 빨리 수행할 수 있으므로 해서 가능했으나, 20세기 후반의 컴퓨터혁명은 인간의 고속정밀 계산 및 저장 능력의 극복에 기반을 두고 있다. 현재 진행되고 있는 '제3의 혁명'은 인간의 지적(知的) 능력을 대신하는 기계에 의한 인간의 자유를 목표로 하고 있다. 예를 들면, 음성인식, 영상인식, 추론, 적응제어 등 인간만이 해온 일의 일부를 기계에게 맡기고 인간은 보다 창조적인 일에 몰두할 수 있게 하자는 것이다. 21세기 초에는 '인간기능시스템'이 인공 시각, 청각 및 촉각 장치 등으로부터 들어오는 정보를 처리하여 판단 및 추론을 하고, 걷고, 말하고, 복잡한 작업을 수행하게 될 것이다. 한 예로, 일본이 1992년부터 10년간 수행하는 신정보처리기술(영문별: Real World Computing) 과제의 주요 목표인 "인공 가정교사"와 "설거지 로봇"을 그림 1에 소개하였다. 인공 비서, 교환원, 가정교사, 운전사, 가정부, 간병인 등 인간기능시스템의 지원을 받으며 행복하게 사는 인류! 이것이 공학도가 보는 21세기의 미래상이다.

컴퓨터 또는 기계에 지능을 부여하는 방법은 크게 2종류로 나눌 수 있다. 즉, 인간의 생물학적 두뇌작용을 모방함으로써 적응 학습을 통하여 스스로 지능을 축적해가는 신경회로망(神經回路網) 기법과, 지능을 법칙으로 표현하여 논리구조로 프로그램하는 인공지능(人工知能) 기법이다. 언어를 배우는 과정을 예로 들면, 인공지능 기법이 문법이라는 법칙에 의해 배우게 되는 것에 비해, 신경회로망 기법은 반복해서 문장을 듣고 보게함으로써 언어를 배우게 한다. 한 예로 NET대화라는 신경회로망은 어린이가 말을 배우는 것과 유사한 과정(응얼응얼하는 발음에서부터 점차 명확한 발음으로 학습)을 거쳐 책을 읽도록 학습되었다. 신경회로망이 비교적 단순한 학습 법칙을 정의함으로써 주위 환경으로부터 스스로 지식을 축적함에 비해, 인공지능은 구현하고자 하는 지능에 따라 구체적인 법칙을 추출해내야 하는 어려움이 있다. 복잡한 시스템의 경우 그 법칙을 추출해내는 것이 매우 어려워, 뇌정보처리 메카니즘의 모방을 통한 신경회로망이 보다 타당한 접근방법이다. 신경회로망은 또한 단순한 소자의 대단위 병렬성을 특징으로 하므로, 효율적인 전용 하드웨어 구현이 용이한 장점이 있다.[1] 특히, 최첨단의 반도체 제조공정 기술이 있으나 복잡한 기능의 회로설계 기술이 취약한 한국의 산업에 매우 적합한 특성을 갖고 있다.

다음 절부터는 신경회로망의 주요 응용분야에 대해 보다 자세히 설명하기로 한다. 인간의 5각 중 정보량이 많은 시각과 청각을 주 정보입력원으로 하고, 이를 이용한 판단 및 추론 기능, 그리고 주위에 반응하는 팔다리 등 출력부의 적응제어가 주요 응용 분야이다.[2] 또한, 기술파급 분야로서 지능형 통신시스템, 의료시스템, 경제예측 등이 간단히 검토된다. 특히, 뇌정보처리 메카니즘의 모델과 하드웨어 구현기술이 응용 분야별 전문지식과 융화되는 시스템적 접근방법을 설명하기로 한다.

패턴인식 및 인공시각

시각은 인간이 가장 많은 정보를 얻는 부분으로, 정지영상 및 비디오로부터 특정한 패턴을 추출하여 인식하고, 필요한 경우 패턴추적까지 수행하게 된다. 기존의 패턴인식 시스템은 패턴의 크기, 방향, 위치, 조명 등에 민감하여 실세계 응용이 제한되고 있으나 인간은 이를 매우 잘 하므로, 뇌정보처리 메카니즘을 이용한 신경회로망의 주요 연구 분야가 된다. 특히, 비디오의 경우 초당 8 MB 이상의 정보가 들어오고, 다양한 신호처리가 실시간으로 수행되어야 하기 때문에 효율적인 시스템이 요구된다.

그림 2는 일반적인 패턴인식 시스템을 보인 것이다. 전처리부는 배경 영상으로부터 패턴의 영역을 분리하고, 인식에 필요한 정보는 유지하면서도 정보량을 줄이는 특징추출이 이루어진다. 후처리부는 인식된 결과에 관심문제에 대한 선택적 주의집중을 하고, 비디오에서 패턴추적을 하는 등 필요한 후속처리를 하게 된다. 기존 패턴인식 시스템의 경우, 이들이 각각 별도로 관련 분야의 지식을 이용하여 구성하게 되므로 실세계 응용에서 제한된 성능을 보이게 된다. 인간의 경우, 망막에서 수신된 영상이 초기시각계에서부터 국부특징이 추출되어 뇌에서 점차적으로 인식기로 결합되게 된다. 즉, 전처리부, 인식기부 및 후처리부가 모두 신경회로망으로 구성되게 된다.[3,4] 또한, 시스템 변수만이 아니라 시스템 구조까지도 학습에 의해 적응되게 된다.


그림 1. "인공 가정교사"와 "설거지 로봇"의 개념도



특히, 입력 패턴의 위치, 크기, 회전에 대한 불변특성과 잡음에 대한 둔감성이 요구되며, 인간 초기시각계의 국부특징추출 기능을 모델화하는 시각모델이 중요하다. 또한, 학습에 사용되지 않은 패턴에 대해서는 일반화시키는 능력이 중요하며, 이를 위한 신경회로망 모델 및 학습법칙이 연구된다.[5] 실시간 인식에 필요하는 방대한 계산량에 대처하기 위한 전용 하드웨어 칩의 구현도 연구되고 있다. 인쇄체 문자인식은 이미 널리 상용화되었으며, 필기체 인식도 PDA 등 특수기기에서 시도되고 있다. 복잡한 배경하에서 작은 목표물을 인식하고 추적하는 연구는 아직 실험실 수준에 머물고 있다.

음성인식 및 인공청각

인간에게 있어서 청각은 시각에 이은 제2의 정보원으로 초당 20 KB 이상의 정보량을 가지고 있다. 음성은 기계와 인간 인터페이스의 제일 자연스런 방식으로, 음성인식은 키보드나 마우스에 의한 정보입력의 비효율성을 극복할 수 있는 좋은 대안이다.


그림 2. 패턴인식 시스템의 구성도



음성인식 시스템은 그림 2와 같은 구조를 갖는다.[6] 전처리부에서는 귀 속의 달팽이관에서의 특징추출을 모델화한 청각모델을 통해 잡음에 둔감한 특징추출이 이루어지고 있다.[7] 음성은 사람에 따라, 같은 사람이라도 상황에 따라 많은 변화를 갖는 특성을 갖고 있으므로, 일반화 특성이 특히 강조된다. 후처리부에서는 문법과 사용 영역 등의 지식이 도입된다. 조용한 환경에서의 고립단어 음성인식은 상용화 수준까지 갔으며, 제한된 문제영역에서의 연속음성 인식은 상용화를 위한 준비실험 단계에 있으나, 실세계 잡음하 또는 무제한 연속음성 인식은 아직 실험실을 떠나지 못하고 있다. 뇌정보처리 메카니즘에 기반한 청각모델을 통한 특징추출, 일반화 성능이 뛰어난 신경회로망 모델, 선택적 주의집중 모델, 다중채널을 이용한 잡음의 제거기술 등이 음성인식의 실용화의 길을 열 것으로 믿어진다.

판단 및 추론

시청각 시스템으로부터 들어오는 정보는 뇌에서 최종 신호처리되는데, 주로 판단과 추론 기능으로 볼 수 있다. 판단 또는 인식은 현재 많이 사용되는 다층구조인식자(multilayer perceptron)나 RBF(Radial Basis Function) 등의 인공 신경회로망 모델이 잘하는 기능이다.[8] 추론은 학습된 정보로부터 새로운 정보를 예측하는 기능으로 볼 수 있으며, 신경회로망의 일반화 기능이 이에 해당한다.

현재까지의 기능은 주로 학습된 자료의 판단과 보간 수준을 크게 벗어나지 못하고 있다. 그러나, 인지과학의 발전과 더불어 사람의 사고, 감정, 창의성 등의 메카니즘이 밝혀지면, 인간과 유사한 기능을 구현하는 인공두뇌의 핵심기능이 구현될 수 있을 것으로 기대된다.

적응제어

판단과 추론을 거친 뇌는 팔다리와 입을 움직이는 제어기능을 수행한다. 제어 대상인 신체는 성장에 따라 시스템 특성이 바뀌므로, 시스템에 대한 특성을 모르면서도 학습에 의해 제어가 이루어져야 한다.[9] 따라서, 신경회로망 제어시스템은 신경회로망의 시스템 모사(identification) 기능을 직간접으로 포함하게 된다.

제어대상인 시스템의 특성은 일반적으로 미적분 방정식으로 주어지므로, 사용되는 신경회로망 모델도 회기(recurrent) 구조를 갖는 경우가 많다. 회기구조 신경회로망에도 최대경사법에 의한 학습이 가능하나, 일반적으로 학습시간이 오래 걸리는 것으로 알려져 있다. 순방향(feed-forward) 구조로 근사화하여 학습시키기도 한다.

신경회로망 제어시스템은 일부 공정제어에 실용화되고 있다. 그러나, 대규모 공정의 제어는 신뢰도 문제가 가로막고 있으며, 비교적 단순한 산업용 로봇의 제어에는 기존의 제어이론이 사용되고 있다. 인간의 신체와 같은 복잡한 로봇의 제어 등에서는 신경회로망이 매우 유리할 것으로 기대된다.

기타 응용분야

정보통신은 현대의 매우 주요한 기간산업으로 막대한 시설투자가 요구되며, 시설의 효율성을 향상시킬 수 있는 지능화에 신경회로망이 이용될 수 있다. 아직 실험실 수준에 머물고 있으나, 영상압축 및 복원, 오차보정 코딩, 잡음제거 등의 신호처리 분야와 ATM의 제어, 인공위성 통신의 제어 및 고장진단 등에 응용이 연구되고 있다.

의료분야에서는 환자의 상태를 측정하여 병의 유무 및 종류를 판단하는 진단보조 시스템이 시도되며, 심전도, 뇌파, 근전위 등의 시간함수 신호와, X-선이나 자기공명단층촬영 등의 영상신호에 대한 신경회로망의 인식기능을 이용한다. 다만, 의료용 자료의 크기가 적고, 일부 항목자료가 없을 수 있기 때문에, 이에 대한 특별한 고려가 요구된다.[10]

신경회로망의 비선형 시스템 근사화 기능을 이용하는 것으로 주가, 이자율, 환율 등 경제자료와 기상자료의 예측을 들 수 있다. 여기에 사용되는 신경회로망은 제어분야에서 사용되는 것과 유사하며, 미국이나 일본에서는 널리 실용화되고 있는 것으로 알려져 있다.

인공두뇌를 위하여!

공학에서 뇌연구의 최종 목표는 인간의 두뇌기능을 수행하는 "인공 두뇌"를 개발하는 것이다. 물론, 인간과 같은 수준의 인공두뇌를 개발하는 것은 불가능할 것이나, 인간 수준에 훨씬 못미치는 기능도 제한된 활동영역에서는 인간을 크게 도울 수 있다. 물론, 인간 수준에 가까울수록 효과는 더욱 크다. 인공두뇌는 시청각에 해당하는 인공시각 패턴인식과 음성인식 기능과 추론, 제어 기능이 핵심을 이룬다. 즉, 인공두뇌는 신경회로망 연구를 종합한 종착점이 된다. 음성합성 기능도 포함되나 이미 잘 개발된 기술이므로 별도의 연구가 필요하지는 않다.

인공두뇌의 개발을 위해서는 각 응용 부분의 융합과 동시에 효율적인 하드웨어 구현이 요구된다. 인간의 두뇌에는 100억개 이상의 신경세포가 있고, 각 신경세포는 천개에서 만개 정도의 다른 신경세포와 직접 연결되어, 총 신경연결 시냅스의 수는 약 100조개로 예상된다. 이들 시냅스가 0.01초에 한 번씩 곱셈을 하여 인간의 두뇌는 초당 약 1경번의 곱셈을 하는 것에 해당된다. 기존의 컴퓨터가 초당 억단위의 곱셈을 하며, 대규모 병렬 컴퓨터 연구가 1조번의 곱셈을 목표로 하고 있는 것을 고려하면, 인공두뇌의 구현을 위한 전용 칩의 필요성이 명확해 진다.

기계에게 지능을! 인간에게 자유를! 21세기 국가 경쟁력과 인류복지를 위한 과학기술인의 피할 수 없는 사명이 뇌정보처리 메카니즘의 이해를 통한 실세계 응용기술의 연구에 있다.

참고문헌

[1] J. W. Cho, Y. K. Choi and S. Y. Lee, Neural Processing Letters 4(1), 45-52 (1996).

[2] "신경회로망 컴퓨터: 이론, 응용 구현", 한국과학기술원 산학협동공개강좌 교재, 1988, 1990, 1991, 1992.

[3] R. P. Lippman, "An introduction to computing with neural nets," IEEE ASSP Magazine, pp. 4-22 (1987).

[4] K. Fukushima and N. Wake, "Handwritten alphanumeric character recognition by the Neocognitron," IEEE Trans. Neural Networks, pp. 355-365 (1991).

[5] D. G. Jeong and S. Y. Lee, "Merging backpropagation and Hebbian learning rules for robust classification," Neural Networks, pp. 1213-1222 (1996).

[6] R. P. Lippman, "Review of neural networks for speech recognition," Neural Computation, pp. 1-38 (1989).

[7] D. S. Kim, S. Y. Lee and R. M. Kil, "Feature extraction method based on auditory model repnesentations for robust speech recognitiona," Electronics Letters, Jan. (1997).

[8] K. Hornik, "Approximation capabilities of multilayer feed-forward networks," Neural Networks, pp. 251-257, (1991).

[9] K. S. Narendra and K. Parthasarathy, "Identification and control of dynamic systems using neural networks," IEEE Trans. Neural Networks, p. 4 (1990).

[10] S. Y. Yoon and S. Y. Lee, "Learning algorithms for robust classifications with small and incomplete data," Progress in Connectionist-based Information Systems: Proc. ICONIP'97, Dunedin, New Zealand, pp. 217-220 (1997).

이수영 교수는 Polytechnic Institute of New York, Electrophysics 박사로서 1977년부터 80년까지 대한엔지니어링(주) 대리, 83년부터 85년까지 General Physics Corp., MD, Staff/Senior Scientist를 거쳐 현재 한국과학기술원 전기 및 전자공학과 교수 겸 뇌과학연구센터 소장으로 재직 중이다.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
 

신경과학의 발달

사람들은 흔히 질문합니다. 뇌연구란 무엇인가? 뇌연구가 왜 중요한가? 한마디로 우리 자신의 문제를 연구하는 것이기 때문에 중요하다고 하겠습니다. 뇌의 활동을 이해한다는 것은 궁극적으로는 사람이란 무엇인가라는 인간의 정체성(identity)을 밝히는 일이 될 것입니다. 그리고 인류복지 측면에서는 정신신경계 질환의 원인을 규명함으로써 그 치료수단을 강구하게 될 것입니다. 또 산업적인 측면에서는 소위 "인공지능"의 개발을 가능하게 하는 것입니다. 즉 그 활용범위와 잠재적 부가가치는 가히 상상을 초월하는 것이 될 것입니다.

사람들이 뇌에 관심을 갖기 시작한 것은 매우 오래되었습니다. 서양의학의 아버지라고 하는 히포크라테스(B.C. 460-379)는 우리의 감각과 지능이 뇌에 자리한다고 하였습니다. 그러나 이와 같은 생각을 모든 사람들이 받아들인 것은 아니어서 당시의 유명한 철학자 아리스토텔레스(B.C. 384-322)는 지능은 심장에 자리하고 뇌는 혈액을 식히는 방열기의 역할을 한다고 믿었습니다. 그리스의 의학자 갈렌(A.D. 130-200)은 히포크라테스의 견해를 지지하면서 대뇌는 감각을 받아들이고 소뇌는 근육운동을 지배한다고 주장하였습니다. 이와 같은 갈렌의 생각은 1500년 동안 학계를 지배하다가 르네상스기의 유명한 해부학자 베사리우스(1514-1564)가 뇌실을 포함한 자세한 뇌의 구조를 밝히면서 뇌기능의 체액-기계설이 대두됩니다. 즉 뇌는 기계와 같은 것으로 체액이 이를 구동한다는 생각입니다. 이 생각을 지지하였던 대표적인 학자는 데카르트(1596-1650)였습니다. 그러나 사람의 행동은 마음과 뇌가 교신하여 나타나는 것이라고 그는 생각하였습니다. 즉 뇌-마음이라는 이원론을 제기하였던 것입니다.

한편 1751년 벤자민 프랑크린이 전기현상을 발표하고 18세기 말에 갈바니와 에밀 듀보아-레이몬드가 신경을 전기적으로 자극하여 근수축이 일어남을 관찰하여 신경은 뇌로부터의 전기적 신호를 전달하는 도선이라는 새로운 개념이 정립되었습니다. 대뇌의 역할 분담론을 주장했던 사람으로는 갈(Gall)을 들 수 있습니다.(그림 1) 1827년에 출판된 그의 골상학 책은 10만권이나 팔렸다고 합니다.

그림 1. 갈(Gall)의 골상학에 근거한 뇌비 기능 담당 구역도.

뇌신경과학의 역사는 이같이 오랜 역사를 가지고 있으나 신경과학이라는 학문분야가 성립된 것은 그리 오래지 않습니다. 여기에는 신경과학의 발전을 가져오게 한 여러 학문분야 즉 의학, 생물학, 심리학, 화학, 물리학의 발달이 계기가 되었고 이들 모든 학문분야를 망라한 다학제적 학문분야로서의 신경과학을 낳게 하였습니다.

금세기 신경과학의 발달과정은 노벨의학상 수상업적들을 살펴봄으로써 대강의 발자취를 더듬어 볼 수 있을 것입니다.

20세기에 접어들 무렵 신경과학의 돌파구를 마련했던 위대한 업적으로는 파브로브(1904)의 조건반사 생리학을 들 수 있겠습니다. 그의 이론은 현재에 이르러서는 많은 수정이 가해졌습니다만 자율신경계의 신경조절 이해의 새로운 전기를 마련하였을 뿐 아니라 학습과정과 대뇌피질의 분석적 및 통합적 기능을 객관적으로 해석하는 개념적 기틀을 마련하였던 것입니다.

우리의 몸이 각종 세포로 구성되어 있듯이 뇌를 구성하는 세포를 신경세포라고 합니다. 그런데 신경세포는 다른 체세포들과는 특이하게 두 개의 돌기를 가지고 있습니다. 즉 축삭과 가지돌기라고 하는 것입니다. 따라서 신경세포는 흔히 신경소자라고 부릅니다. 이같은 신경계의 세포형태학의 기틀은 골지와 카할(1906)이 신경세포의 특이적 염색법을 개발한데서 비롯되었습니다. 그 이후로 지난 100년 동안에 신경소자의 성질에 관하여 비교적 상세하게 많은 사실들이 알려졌습니다. 즉 신경계는 외적 또는 내적 환경으로부터의 자극을 뇌로 전달하고 뇌에서 발생되는 신호를 말초장기로 전달하는 신호전달도선이라고 생각하면 될 것입니다. 하나의 신경소자에서의 신호전달방식은 일종의 전기적인 현상이라 할 수 있는 활동전위라는 수단을 이용합니다. 이는 어느 신경소자에서나 예외없이 똑같습니다. 쉐링톤과 아드리안은 이같은 신경소자의 활동에 관한 업적으로 1932년에 노벨상을 수상하였습니다. 그리고 에르랑게르와 가쎄르는 활동전위를 정확하게 기록하는 방법을 고안함으로써 1944년에 노벨상을 수상하였습니다. 이같은 신경소자들이 여러개가 연결되어 말초에서 중추에 이르는 신경계를 이룹니다. 이 신경소자와 신경소자 사이의 연결부를 접합부 또는 시냅스라고 합니다. 이 접합부에서의 신호전달방식을 시냅스 전달이라고 하는데 화학물질이 전달자 역할을 합니다. 이같은 화학물질을 신경신호 전달물질이라고 합니다. 오토 뢰비와 헌리 데일은 이를 실험적으로 분명하게 증명함으로써 1936년에 노벨상을 수상하였습니다. 그리고 이어서 엑클스와 호지킨 및 헉스리(1963)는 활동전위의 발생과 전도에 있어서의 이온의 역할을 밝혔습니다. 말초 및 중추신경계에서의 전기적 전도 및 화학적 자극전달의 이온적 기전이 확실해짐에 따라 많은 신경신호 전달물질이 증명되었습니다. 아세틸콜린, 노르아드레날린, 세로토닌 등이 그것입니다. 그리고 이같은 신경신호 전달물질에 의한 신호전달과정 또한 비교적 상세하게 밝혀졌습니다. 즉 합성되어 저장되고 세포외 유출이라는 현상으로 유리되어 특이적인 수용체와 상호작용함으로써 신호가 전달되는 것입니다. 이는 악셀로드, 폰 율러 및 카츠(1970)의 업적입니다. 그러면 뇌는 신경세포가 모여서 구성된다고 하였는데 신경세포 즉 신경소자의 활동을 그렇게 상세하게 알고 있다면 뇌의 무엇이 문제인가? 이같은 신경소자가 모여 뇌의 어디서 어떻게 생각하고 기억하며 때로는 기뻐하고 때로는 슬퍼하며 보고 듣고 말할 수 있는가 하는 것이 문제인 것입니다.

최근 신경과학에 있어 대단히 중요한 두가지 발전이 있었습니다. 한가지는 여러 가지 새로운 신경신호 전달물질 또는 조절물질의 발견입니다. 특히 신경펩티드의 발견입니다. 둘째는 감각 및 운동행동에 관계되는 뇌의 세포생리학입니다. 폰 율러의 섭스탄스 피 발견으로 비롯되는 "펩티드 혁명"은 길만과 솰리 그리고 얄로우(1977)의 성장호르몬 등 뇌내 펩티드 호르몬 업적으로 이어졌습니다. 약 20년 전에 미세전극기술이 도입되면서 뇌의 세포조직을 알아볼 수 있게 되었습니다. 즉 단순하거나 복잡한 운동행동에 관계되는 해부학적으로 구별되는 단일세포의 활동을 뇌의 모든 부위에 걸쳐 기록할 수 있게 된 것입니다. 휴벨과 비젤 그리고 스페리는 시각계통에 있어서의 피질세포의 원주상 조절구조를 밝히고 이들 구조가 초기 시각경험에 의해 어떻게 영향을 받는가를 밝힌 공로로 1981년에 노벨상을 수상하였습니다. 이들의 미세생리학적 연구결과는 최근의 해부학적 기법 발달에 의해 확인되어 학습, 기억, 의식에 관계되는 뇌의 세포구성이 급속하게 발전되고 있습니다.

해마의 세포형과 그들의 회로연결을 알아보는 일은 기억, 간질, 허혈성 손상 및 알쯔하이머병에 있어서의 해마의 관련성을 이해하는데 필수적입니다. 해마의 CA1 및 CA2 영역을 중심으로 하는 부위의 신경회로를 생체세포내표식법, 조직화학적 방법 및 세포외 추적법을 이용하여 나타내 보면 하나의 신경세포(interneuron)는 적어도 25,000의 접합을 해마내에서 이루는 것으로 추산된다고 합니다.

최근 인지과학에도 몇가지 주목할 발전이 있었습니다. 첫째 복잡한 행동의 저변에는 뇌의 회로가 깔려있다는 생각입니다. 인지과학연구 초기에 대부분의 신경과학자들은 뇌의 각 부위들에 있어서의 반응을 개별적으로 연구하였습니다. 예를 들어 시각에 대한 연구는 주로 시각피질에 집중되었습니다. 그러나 시각은 물론이거니와 학습, 기억 등 복잡한 행동에는 뇌의 여러 부위가 복합적으로 관여하는 상호협동과정이라는 것이 분명해졌습니다. 둘째는 이들 회로망에서 일어나는 일을 관찰하는 시간차를 단축할 수 있게 되었다는 것입니다. 아직도 완벽한 수준에는 이르지 못하였으나 기능적 자기공명 영상기술로 자극과 반응사이의 시간을 2초까지 단축할 수 있게 되었습니다. 머지않아 뇌의 기능을 실시간에 관찰할 수 있게 될 것입니다.

의식이라는 것은 뇌의 엄청난 성취이며 또 신비라는 것에는 별로 이의가 없습니다. 그러나 지난 10년 동안에 신경생리학자들은 진지하게 의식의 신경적 기초를 찾기 시작하였습니다.

의식의 신경적 기초를 밝히려는 수단으로 가장 많이 연구되고 있는 것은 시각입니다. 의식의 연구에 시각을 이용하는 이유를 노벨의학상 수상자 프란치스 크릭은 다음과 같이 말하고 있습니다.

"인간은 대단히 시각적인 동물이다. 우리의 시각적 인식은 정보가 풍부하다. 또 그 입력은 고도로 구체적이며 조절하기 쉽다. 그리고 시각계통을 대상으로 한 많은 동물실험이 이루어졌다"고 하였습니다. 그런데 놀랍게도 많은 연구업적에도 불구하고 우리가 어떻게 사물을 보게되는가 즉 어떻게 시각적 인식이 이루어지는가를 분명하게 알고있지 못하다는 것입니다.

그림 2. 꽃병인가 얼굴윤곽인가?

우리의 시각계통은 미묘한 방식으로 우리를 현혹시킬 수 있습니다. 그림 2는 얼핏 보면 꽃병으로 보일 것입니다. 그러나 한참 들여다보면 두 개의 얼굴 윤곽이 보일 것입니다. 이같은 일이 어떻게 일어나는가? 예전에는 뇌 안에 homunculus라는 난쟁이가 있어서 이들이 이런 일을 담당한다고 생각했습니다.

보는 것이 믿는 것이다라고 하였습니다. 어떤 사물을 보게되면 그 사물이 실제로 그곳에 있다고 믿게 된다는 뜻입니다. 그러나 사실은 사물이 그곳에 있는 것이 아니고 뇌가 그곳에 있다고 믿게 한다고 할 수 있습니다. 요컨대 본다는 것은 그렇게 단순한 것이 아니라는 것입니다. 시각이라는 것은 뇌가 시각장면의 다양한 양상에 일치하도록 과거의 경험을 토대로 반응하여 의미있는 총체로 합치시키는 건설적인 과정이라 할 수 있습니다. 즉 본다는 것은 뇌 안에서 일어나는 능동적 과정이라는 것입니다.

문제는 우리가 본다는 것을 어떻게 신경소자의 활동으로 설명할 것인가입니다. 인식신경소자라는 것이 있는가? 있다면 그것은 뇌의 어느 특정부위에 국한하는가 아니면 뇌 전체에 퍼져있는가? 시각적 인식에 관계되는 신경소자를 어떻게 찾아낼 것인가? 그들 신경소자는 특수한 신호발생기전이 있는가?

문제를 단순화하기 위해 설명하지는 않았습니다만 우리가 본다고 하는 것에는 주의기전과 기억 특히 단기기억이라는 과정이 밀접하게 연관되어 있습니다. 사물에 따라 그에 해당하는 각각의 신경소자가 따로 있는 것은 아니라는 사실은 분명합니다. 그리고 여러 신경소자로 이루어진 세트가 고도의 병렬적 처리과정으로 합쳐서 시각인식이 이루어질 것이라는 것은 확실합니다. 그리고 인식신경소자라는 것이 따로 있는 것이 아니라 모든 신경소자가 인식신경소자가 될 수 있는 잠재능력이 있다고 보아야한다는 주장도 있습니다. 어느 것도 아직은 분명하게 말할 수 없습니다. 이 복잡한 실마리를 풀어갈 단서조차도 애매한 상태입니다. 그래서 뇌연구를 새로운 학문이라고 하며 이제 시작이라고 하는 것입니다.

휴벨과 비젤 박사는 눈을 통한 메시지에 대한 뇌의 해석연구에 돌파구를 마련한 업적으로 그리고 스페리 박사는 양대뇌반구에 숨겨진 비밀을 파헤치고 특히 여러 가지 고위기능이 오른쪽 대뇌반구에 위치한다는 것을 밝힌 공로로 1981년에 노벨상을 공동 수상하였습니다. 이제 조그마한 단서와 이에 접근하는 방법론이 제시되었다고 할 수 있는 것입니다.

컴퓨터와 뇌

신경회로망은 여러가지 형태로 상호 연결된 회로소자들의 집합체입니다. 각 회로소자들은 단순화시킨 신경소자와 같은 성질을 갖습니다. 신경회로망은 신경계 각 부분에서 일어나는 일을 시뮬레이션하고, 산업적으로 유용한 장치를 제작하며, 뇌의 활동에 관한 일반적인 가설들을 검증하기 위하여 이용됩니다.

한개의 신경소자가 어떻게 활동하는가를 이해하고 있다면, 상호 작용하는 일군의 신경소자들의 활동들에 대하여서도 틀림없이 예측할 수 있어야 할 것입니다. 그러나, 불행하게도 이것은 생각처럼 쉽지 않습니다. 이것은 개개의 신경소자의 활동이 단순하지 않다는 사실이외에도 신경소자들이 대부분 복잡한 방법으로 서로 연결되어 있기 때문입니다. 더욱이 계통 전체는 일반적으로 비선형적 특성을 크게 나타내고 있습니다.

고속의 디지털 컴퓨터는 지난 50년 동안의 가장 중요한 기술적 발전으로 인정되어오고 있으며, 뇌는 좀 더 복잡한 형태의 폰 노이만 컴퓨터라고 생각할 수도 있습니다. 물론, 이같은 비유는 지나치면 비현실적인 이론이 될 것입니다. 여기서 컴퓨터와 뇌의 차이점을 몇가지 들어보려 합니다.

컴퓨터는 고속의 전자부품들로 이루어져 있고 PC의 경우에도 기본사이클 또는 계산속도는 초당 1천만회 이상입니다. 한편 신경소자에 있어서는 전형적인 활동전위의 발생속도는 초당 수백회의 범위입니다. 컴퓨터가 백만배쯤 빠른 것입니다. 크레이 따위의 초고속컴퓨터는 더 빠릅니다.

넓은 의미에서 컴퓨터의 운영방식은 직렬적입니다. 즉 명령이 하나씩 차례대로 수행됩니다. 한편 뇌에서의 운영방식은 대단히 병렬적입니다. 예를 들면 약 백만개의 축삭이 각각의 눈으로부터 뇌로 병렬적으로 연결되어 있으며, 동시에 활동합니다. 이같은 고도의 병렬성은 계체의 거의 모든 부분에서 나타납니다. 이같은 운영방식은 신경소자 활동의 상대적인 느린 속도를 어느 정도 보상하는 것입니다. 여기에는 또한 분산적으로 연결되어 있는 신경소자의 일부가 상실되더라도 뇌활동에는 크게 변화를 초래하지 않도록 한다는 의미도 있습니다. 전문적인 용어로는 뇌는 "품위있게 붕괴한다"라고 합니다. 이와 비교하여, 컴퓨터는 망가지기 쉽습니다. 작은 손상이나 프로그램의 작은 오류로도 엉망이 될 수 있습니다. 컴퓨터는 파국적으로 붕괴한다고 합니다.

작동하고 있는 컴퓨터는 신뢰도가 높고 주어진 동일한 입력에 대해서 정확하게 동일한 출력을 생성합니다. 한편 각각의 신경소자들의 반응은 가변적이고 신경소자의 활동에 영향을 줄 수 있는 입력에 의하여 쉽게 그 성질이 변하며, 때로는 "계산"을 수행하는 동안에도 성질이 변합니다.

전형적인 신경소자는 적게는 수백에서 많게는 수만에 이르는 입력을 다른 신경소자들로부터 받을 수 있습니다. 그리고 이것은 축삭을 통하여 다시 다발적으로 투사합니다. 이에 비교하여, 컴퓨터의 기본단위인 트랜지스터에는 단지 소수의 입력과 출력만이 있을 뿐입니다.

컴퓨터는 고도로 정확하게 1과 0의 펄스 형태로 부호화된 메시지를 특정한 장소에서 다른 곳으로 보냅니다. 이 메시지는 특정한 주소지로 갈 수 있고, 그곳에 저장된 내용을 읽어올 수도 있으며 그곳에 저장된 것을 변경할 수도 있습니다. 즉 정보를 하나의 특정한 장소에 기억시키기 위하여 저장할 수 있고, 다음 단계에서는 이 정보의 조각들을 다른 용도로 쓰기 위해 꺼낼 수 있습니다. 뇌에서는 찾아보기 힘든 정확성입니다. 한편 신경소자가 축삭을 따라 전달시키는 스파이크(활동전위)는 정보를 실어나르는 것이지만 정확하게 펄스 형태로 부호화된 메시지 같은 것은 아닙니다. 따라서 기억이 다른 방식으로 "저장"되어야하는 것은 필연적입니다.

뇌의 여러 부분들 특히 신피질의 여러 부분들은 정보의 여러가지 종류를 취급함에 있어 최소한 어느 정도 특성화되어 있습니다. 대부분의 기억은 최근에 활동이 수행된 바로 그 장소에 저장되어 있는 것으로 믿어집니다. 이같은 성질은 모두가 전형적인 폰 노이만 컴퓨터와는 다른 것입니다. 컴퓨터에서는 기본적인 계산과정(더하기 또는 곱하기 따위)이 한 장소 또는 소수의 몇개의 장소에서만 일어나지만 그 내용은 서로 다른 여러 장소에 저장됩니다.

또한 컴퓨터는 공학자들이 정교하게 설계한 것이지만 뇌는 자연도태의 압력을 받으며 수세대에 걸친 생물학적 진화과정을 거친 것입니다. 이는 설계방식의 근본적인 차이를 가져오게 합니다.

흔히 컴퓨터에서는 하드웨어나 소프트웨어라는 용어를 사용합니다. 컴퓨터의 소프트웨어를 개발하는 프로그래머들은 하드웨어에 관한 배선 따위의 자세한 지식을 별로 필요로 하지 않습니다. 마찬가지로, 뇌의 "하드웨어"에 관해서 여러가지를 알아야할 필요가 있는가 하는 것이 특히 심리학자들 사이에 논란의 대상이 되고 있습니다. 뇌에서는 하드웨어와 소프트웨어를 분명하게 구별하기 힘듭니다. 또 그같은 이론을 이용하여 뇌의 활동 상태를 억지로 맞추어 해석하려는 것은 어려운 일입니다. 조금이라도 이같은 접근방식이 정당화되는 것은 뇌가 고도로 병렬적이기는 하지만 모든 병렬적 운영의 상위 층에는 관심의 정도에 의하여 조절되는 일종의 순차적인 기전이 있다는 것입니다. 그래서 감각입력으로부터 멀리 떨어져 있는 그 운영의 상위수준에서는 표면상 어느 정도 컴퓨터와 비슷해 보인다는 것입니다.

모든 이론의 타당성은 그 최종 결과로 결정됩니다. 컴퓨터는 특정한 종류의 일 즉 계산이 절대적으로 많은 게임, 복잡한 논리적 문제, 체스 따위는 대단히 잘 풀도록 프로그램화되어 있습니다. 이런 것들은 보통사람들이 빠르게 잘 해낼 수 없는 것들입니다. 그러나 사물을 보고 그 의미를 이해하는 따위의 일같이 현재 대부분의 컴퓨터가 잘 수행하지 못하는 과업에 직면하면 보통사람들은 이를 빠르게 힘들이지 않고 해낼 수 있습니다.

신경회로망의 발달

지난 수년사이에 좀 더 병렬적으로 작동하는 새로운 형태의 컴퓨터를 설계하려는 노력이 상당히 이루어졌습니다. 이들 대부분의 설계는 여러 개의 작은 컴퓨터 또는 작은 컴퓨터의 특정한 요소들을 취하여 이들을 연결하므로서 이들이 모두 동시에 작동하게 한 것입니다. 상당히 복잡한 배열을 이용하여 부속컴퓨터들 간에 정보를 교환하고 계산결과를 종합합니다. 이같은 슈퍼컴퓨터는 기상예보와 같이 여러 장소에서 발생되는 근본적으로 같은 성질을 갖는 문제를 계산하는 데에 특히 가치가 있음이 인정되고 있습니다.

한편 보다 뇌와 비슷한 인공지능(AI) 프로그램을 만들어 내려는 움직임도 있었습니다. 컴퓨터에서 보통 이용되는 엄격한 가부의 논리를 일종의 확률적인 퍼지논리로 대치한 것입니다. 좀 더 뇌에 가까운 형태의 컴퓨터를 개발하려는 노력이 그리 잘 알려지지 않았던 몇명의 이론가들에 의하여 시도되었습니다. 병렬분산처리(Parallel Distributed Processing)라고 불리어지는 접근 방법입니다. 이 방법은 긴 역사를 갖고 있는데, 가장 먼저 시도된 것은 1943년 와렌 맥쿨럭과 월터 피츠에 의한 것입니다. 이들은 대단히 단순한 단위들을 서로 연결하여 만든 "회로망"이 원칙적으로 모든 논리적 또는 산술적 함수를 계산할 수 있음을 증명하였습니다. 이 회로망이 현재 "신경회로망"(neural network)이라고 하는 것의 시작이라 할 수 있습니다. 이 회로망의 각 단위들은 어느 정도 단순화한 신경세포인 신경소자 같은 것이기 때문입니다.

다음의 주요 발전은 프랑크 로젠브라트에 의한 것으로 퍼셉트론(perceptron)이라고 하는 한개의 층으로 구성된 매우 단순한 형태의 신경회로망을 고안하였습니다. 퍼셉트론이라는 학습 법칙에 따라 각 회로소자간의 연결 계수를 변화시키게 됩니다. 로젠브라트는 "선형적으로 분리할 수 있는" 단순한 문제들에 대하여서는 한정된 횟수동안 학습을 반복시키므로서 정확하게 원하는 행동을 학습시킬 수 있음을 증명하였습니다. 그러나 말빈 민스키와 세이무어 패퍼트는 퍼셉트론의 설계와 학습법칙으로는 "배타적 OR 논리 문제"(즉 두개가 같은 것인지, 서로 다른 것인지를 구별하는 문제)를 실행할 수 없었고, 이를 학습할 수 없음을 증명하여 퍼셉트론의 의의가 경감되었습니다. 단층 퍼셉트론으로는 불가능했던 배타적 OR 논리문제(또는 유사한 과제)를 쉽게 실행할 수 있는 신경회로망을 단순한 단위소자들을 다층으로 연결하여 만들 수 있습니다. 칼텍의 물리학자 존 홉필드는 1982년에 현재 홉필드 신경회로망으로 알려진 신경회로망을 제안하였습니다. 이것은 자기 자신으로 되먹이는 회로를 갖는 단순한 신경회로망입니다. 홉필드는 그의 신경회로망에서 연결의 강도를 조정하기 위해서 헤브 법칙을 수정하여 이용하였습니다.

최근에 병렬분산처리라는 책이 데이비드 러멜하트, 제임스 맥크레란드 그리고 PDP 그룹에 의해 1986년에 출판되어 학계의 주목을 받게 되었습니다. 그들은 언어처리의 "상호작용 활성자"(interactive activator) 모델을 개발하였습니다. 그 안에 있는 한가지 특정 알고리즘은 놀라운 결과를 생성하였습니다. 이 알고리즘은 "오차의 역파급"(backpropagation of errors)이라고 하는 것으로 흔히 역파급이라고 하는 것입니다. 이것은 보통 세개의 다른 단위들의 층으로 구성되어 있는 것입니다. 제일 아랫층은 입력층이고 다음의 중간 층은 "숨겨진" 층이라고 합니다. 이 층의 단위들은 신경회로망의 바깥세계와의 직접적인 연결이 없기 때문입니다. 제일 윗층은 출력층입니다. 신경회로망에는 단지 전향적 연결만 있고 측방 연결 또는 후향적 연결은 없는 것입니다(그림 3).

1987년에 테리 세이노브스키와 촬스 로젠버그가 의미있는 시범을 보였습니다. 그들이 고안한 신경회로망을 NET대화(talk)기라고 불렀는데, 쓰여진 영어 텍스트를 음성으로 바꾸는 것이었습니다. NET대화는 학습의 여러가지 측면에 대하여 축소하여 설명하여주고 있습니다. 첫째로 신경회로망은 신경회로망의 설계자에 의해서 입력과 출력으로 표현되어지는 "타고난" 지식을 가지고 시작한다는 것이고 그러나 이것이 영어문자의 해독에 유용한 특이적인 지식을 가지고 시작하는 것은 아니라는 것입니다. 즉 신경회로망은 어떤 언어이건 문자와 음소의 똑같은 세트를 가지고 학습할 수 있었습니다. 둘째로 이 신경회로망은

그림 3. 세 개의 신경소자층으로 구성된 인공 신경회로망.

여러가지 단계의 과정을 거쳐서 성능 실험을 통하여 신뢰성을 획득하였다는 것입니다. 끝으로 정보는 신경회로망 안에 분산되어 저장되었고, 그래서 어느 한개의 단위나 연결이 절대적인 것은 아니었습니다. 결국 신경회로망은 손상에 내성이 있었고 손상이 증가함에 따라 품위있게 퇴행했습니다. 한편, 신경회로망이 손상으로부터 회복되는 경우에는 처음에 학습에 걸렸던 것보다 훨씬 빠르게 성능이 회복되었습니다.

사람의 학습과 기억에 대한 이같은 유사성에도 불구하고 NET대화는 인간의 독서능력 습득에 대한 좋은 모델로 이용되기에는 너무 단순한 것으로 또 다른 신경회로망은 시드니 레키와 테리 세이노브스키가 만든 것입니다. 그들이 시도한 문제는 신경회로망에게 광원의 방향을 말해주지 않고 음영으로부터 그것의 삼차원 형상을 추론하게 하려는 것이었습니다. 신경회로망의 "학습"에 있어 교육자가 없는 학습(unsupervised learning)(헤브의 법칙)과 교육자가 있는 학습(역파급처럼)이라는 극단적인 두가지 경우에 초점을 맞추어 왔습니다. 그러나 몇가지 다른 부류가 더 있습니다. 이 중 하나 중요한 것으로는 "경쟁적 학습"이라는 것이 있습니다. 기본적인 아이디어는 신경회로망의 동작에 있어 승자독차지(winner-take-all)기전이 있는데 가장 출력값이 큰 출력층의 단위(더 현실적으로는 몇개의 단위)가 다른 모든 단위들을 억제한다는 것입니다. 이들 신경회로망은 대체적으로 비생물학적인 학습 알고리즘을 사용하기 때문에 실제로 뇌가 하는 일에 훨씬 미치지 못한다는 비판이 있을 수 있습니다. 이것에 대한 두가지 반론이 있습니다. 한가지는 알고리즘이 생물학적으로 보다 더 적절해 보이도록 노력한다는 것이고 또 하나는 더 일반적이고 견고하다는 것입니다. 신경 이론가인 데이비드 지프저는 역파급이 연구가 진행중인 체계의 성질을 증명하는 대단히 좋은 방법이라는 점을 지적하였습니다. 그는 이를 "신경체계증명"(neural system identifica- tion)이라고 하였습니다. 신경회로망의 설계가 최소한 실제적인 것에 근사한 것이고, 체계의 제한성이 충분히 알려져 있다면 역파급은 오차를 최소화하는 방법을 이용하여서 그것의 일반적 성질들에 대하여 실제 생물학적인 것에 가까운 결과를 얻게될 것이라는 주장입니다. 그래서 생물학적인 체계가 어떻게 행동하는가를 이해하기 위한 올바른 방향을 제시하는 첫걸음이 될 것이라는 것입니다.

현 단계에서 신경회로망의 기본 설계는 일반 컴퓨터의 설계 보다 더 뇌에 가깝다고 하겠습니다. 그러나 그 단위들은 진짜 신경소자처럼 복잡하지는 않습니다. 그리고 대부분 신경회로망의 설계는 신피질의 회로에 비하면 매우 단순화되어 있습니다. 컴퓨터의 속도가 빨라지고, 병렬처리 컴퓨터가 상업화됨에 따라서 변화할 것이나, 중요한 장애는 여전히 남아있을 것입니다. 과거에는 뇌의 많은 부분이 전혀 이해할 수 없는 것으로 생각되어 왔으나 이들 새로운 개념 덕분에 현재는 단지 뇌활동의 일부 제한된 양상만 설명하는 모델에 지나지 않지만 언젠가는 생물학적으로 현실성이 있는 뇌의 모델의 개발이 가능하리라는 것을 희미하게나마 볼 수 있는 것입니다.

프란치스 크릭 박사는 "신경회로망은 갈 길이 멀다. 그러나 적어도 이것들의 시작은 좋았다"고 말하였습니다.

맺는말

사람이 보고 듣고 말하며 기뻐하고 슬퍼하는 이 모든 것이 뇌의 신경활동입니다. 더욱이 현대문명을 이룩한 창조적 사고 또한 뇌의 활동임에는 틀림이 없습니다. 그런데 이 뇌라고 하는 물질계의 활동으로 생성되는 비물질적인 마음을 물리학적으로 이해하려는 것에 물리학자들의 고민이 있다고 하겠습니다.

그러나 초전도 이론으로 노벨상을 수상하고 신경과학에 관심을 갖게 된 레온 쿠퍼는 학습과 기억의 신경연관을 연구하면서 "이같은 일들을 우리는 이해하게 될 것이라고 나는 생각한다. 이를 이해하게 되면 모든 것이 갑자기 단순해 보일 것이다. 오늘 불가능해 보이는 문제도 내일은 아무것도 아닐 수 있다"고 하였습니다.

참고문헌

[1] Mark F. Bear, Barry W. Connors and Michael A. Paradiso, Neuroscience, Exploring the Brain (Williams and Wilkins, Baltimore, 1996).

[2] Francis Crick, The Astonishing Hypothesis, The Scientific Search for the Soul (Charles Scribner's Son, New York, 1994).

[3] George Johnson, In the Palaces of Memory (Random House, New York, 1992).

[4] Herbert H. Jasper, Nobel Lauriates in Neuroscience 1904- 1981, Ann. Rev. Neurosci. 6, 1-42 (1983).

박찬웅 박사는 서울대학교 의학박사로서 뉴욕주립대학에서 연수를 마치고 1986년부터 96년까지 서울대학교 의과대학 신경과학연구소 소장을 거쳐 현재 서울대학교 의과대학 교수 겸 의학연구원 원장으로 재직 중이다.

출처 : http://www.kps.or.kr/~pht/7-1/21.html
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

차세대 항공 네트워크 ATN

분류없음 2008.02.01 02:54 by LoofBackER

ATN과 ATM이 있다.
물론 약자다.
흔히 쓰는 ATM이 아니다.
ITRC 과제 주제가 저거네
제안서를 오늘 까지 써야 한다네
젠장.
졸리다.
졸리지만 논문을 읽어야 되네
알아야 쓸꺼 아닌가?

내가 알아야만 하는 분야가 점점 넓어지니깐 머리가 아프네
윈도우세상에서 놀던 꼬마가 어드덧 비행기 안으로 와있다.
작년에 자동차에서 놀고 올해는 비행기에서 놀게 생겼어

논문을 위한 프로젝트를 만들어야만 하겠네...
음악 검색과 음악 추천에 관련한 창의 과제를 해야겠다.
하지만 지금은 너무나 시간이 없어서 안될꺼 같다.
하이브리드 디스크 관련 논문 하나 내고 음악 추천 관련 논문하나내고
이미지 추천 논문도 내야 하는데 큰일이네

할일은 태산이로다.
태산 태산 태산 태산 태산
아직도 대학을 졸업을 못했다.
대학만 졸업하면 나는 이제 놀러만 다녀야 겠다.
그렇지만 대학원 생활이 그리 만만치만은 안터라

오늘도 오늘이 후회없게 해

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

[해설]HDD 50년 걸린 1TB, SSD '벌써 눈앞에'
상품성은 HDD가 월등히 ↑…832GB SSD 개발의 의미
2008년 01월 20일 오후 18:21
권해주기자 postman@inews24.com

미국 비트마이크로네트웍스가 용량이 832기가바이트(GB)에 달하는 솔리드 스테이트 드라이브(SSD)를 조만간 선보이겠다고 발표한 점은 디지털기기 저장장치 역사에 또 하나의 획을 긋는 일로 평가된다.

차세대 저장장치로 꼽히는 SSD의 기술발전 속도가 눈부시게 빠르다는 점을 알려주는 한편, 하드디스크 드라이브(HDD)와 경쟁에 있어 여러 시사점을 던져주는 일이기 때문이다.

비트마이크로는 최근 보도자료를 내고 6.3㎝(2.5인치) 크기 832GB 용량 SSD의 대략적인 특성을 알렸다. 이에 앞서 지난 1월7~10일 미국에서 열린 '소비가전전시회(CES) 2008'에서 이 제품의 상용화 계획을 발표했다는 점은 800GB대 SSD 개발에 자신이 있다는 의지로 풀이된다.



이에 따라 SSD 용량이 현 HDD의 최대 용량인 1테라바이트(TB) 수준을 넘어설 날도 멀지 않은 것으로 파악된다. SSD는 지난 2007년 64GB~256GB까지 연이어 출시된 이후 올해 하반기 416GB~832GB 제품이 순차적으로 상용화될 전망이다.

◆산업분야 SSD 역사는 수년 불과…'눈부신' 기술발전 자랑

업계에 따르면 SSD가 처음 개발되기 시작한 것은 지난 1960년대 미국 항공우주국(NASA)에 의해서였다. 그러나 SSD가 일반 산업용으로 개발되기 시작한 것은 2000년대에 들어서였고, PC 및 기업시스템용 제품이 본격 출시되기 시작한 것은 지난 2006년쯤이었다.

HDD는 지난 1956년 미국 IBM이 처음 선보인 이후 PC의 대중화와 함께 발전을 지속해왔다. 일본 히타치가 지난 2007년 초 'CES'에서 세계 최초 1TB HDD를 전시한 것은 HDD의 탄생 이후 50년이 지나서였다.

SSD는 처음 등장 시기가 HDD와 비슷하지만 일반 소비자 및 산업용으로 사용되기 시작한 게 수년에 불과하다는 점을 보면, 용량 경쟁에서 월등한 우위를 보인다는 점을 알 수 있다.

SSD는 용량뿐 아니라 올해 읽기속도가 초당 200메가바이트(MB/s) 이상에 이르는 제품들이 속속 상용화되면서 30MB/s 안팎의 속도를 내는 HDD보다 성능도 크게 앞선다. 소음이 없고, 발열·충격·소비전력 등 면에서 우세한 것은 물론이다.

◆고용량 부문 상품성은 HDD가 월등히 앞서

그러나 HDD는 SSD가 따라오지 못하는 가격경쟁력을 확보하고 있다. 가격은 제품의 상품성과 직결되는 만큼, 고용량 저장장치 시장에서 경쟁은 HDD가 월등히 앞서고 있는 게 사실.

비트마이크로의 832GB SSD는 가격이 저렴한 멀티 레벨 셀(MLC) 기반 낸드플래시메모리를 활용한다 해도 현재 플래시메모리 가격 등을 감안했을 때 제품 판매가가 2천만~3천만원에 달한 것으로 예상된다. HDD 진영에서 속속 내놓고 있는 1TB 제품의 가격이 30만~50만원에 불과하다는 점과 비교하면 경쟁이 되지 않는 상황.

비트마이크로의 832GB SSD는 6.3㎝ 크기에 현재 시장에서 많이 팔리는 4~8기가비트(Gb, 1GB=8Gb) 낸드플래시를 가로·세로로 겹겹이 붙이고 쌓아야 하는 단점을 지닌다. 제품 두께가 일반적으로 활용하기에 너무 두꺼워지는 단점을 보일 수밖에 없는 부분. 지나치게 비싼 가격으로 고용량 제품을 구현하는 것보다, 더 저렴한 가격의 작은 용량 SSD를 여러 개 활용하는 게 훨씬 효율적인 상황인 것은 물론이다.

이와 달리 HDD는 제품 크기와 가격 등 면에서 최적의 상용제품을 구현하고 있다는 점에서 SSD보다 우수한 상품성을 자랑하고 있다.

◆발빠른 SSD 진화…2008년 시장경쟁 한층 가속화

이상국 ONS 대표는 "SSD는 조만간 TB급 제품이 상용화될 전망으로, 기술발전 속도가 HDD보다 크게 빠르다는 장점을 지닌 게 사실"이라며 "그러나 가격과 표준규격 면에서 아직 부족한 점이 많다"고 설명했다.

단지 현재 낸드플래시 가격의 빠른 하락세와 함께 16Gb~32Gb 제품이 현재 4Gb 제품 가격만큼 떨어지는 수년 뒤엔 가격 경쟁력 또한 어렵잖게 극복할 수 있을 것이란 전망이다. SSD는 메모리반도체와 콘트롤러의 조합으로 만들기 때문에, 시장에서 대중화되는 시점엔 현재 HDD 규격과 관계없이 다양한 외형을 가질 수 있다는 점도 SSD의 발전 가능성에 있어 긍정적인 부분이다.

이번 'CES 2008'에서 한국과 미국, 일본, 대만의 업체들이 MLC 낸드플래시를 활용한 128GB 제품을 다수 선보이면서, SSD의 고용량화 및 가격인하 움직임은 한층 더 가속화될 전망이다. 128GB SSD는 일반 소비자들이 활용하기에 적잖은 용량이란 점에서 SSD 진영의 소비가전 공략이 본격화될 조짐도 나타나고 있다.

무시 못 할 잠재력을 지닌 SSD와 높은 상품성을 확보하고 있는 HDD간 디지털기기 저장장치 시장 경쟁은 2008년 한층 치열하게 달아오를 것으로 예상된다.


IT는 아이뉴스24, 연예스포츠는 조이뉴스24   <Copyright ⓒ 아이뉴스24. 무단전재 및 재배포 금지>
본 기사는 저작권법의 보호를 받으며 기사의 원형을 변형하거나 훼손하는 것을 금지합니다

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
http://www.myheritage.com/collage
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

세미나

분류없음 2007.12.27 01:09 by LoofBackER

오늘 연구실 세미나를 하였다.
Image Recommendation Algorithm Using Feature Based Colaborative Filtering .
이라는 주제를 가지고 발표를 하였다.
나는 발표를 그리 잘하는것은 아니지만 많이 할수록 늘어 가는것 같긴하다.
멤버십에 처음 들어왔을때만 해도 거의 장애인 수준이었는데.
지금은 그래도 사람 같이 하는것 같다.
남들의 시선을 별로 좋아 하지 않아서 인지 별로 나서는 것을 꺼려 한다.
나서자 않고 뒤에서 묵묵히 자신을 갈고 닦는다.
이러한 것이 좋아 보여서 그런건 아니고 남들앞에 나설 만큼의 자신도 없고 실력도 없다.
현재는 나서지 않으면 안되는 사회이다.
그렇게 느꼈다.
정책 수립은 참모가 하지만 결정은 대통령이 내린다.
코딩은 팀원이 하지만 상은 팀장이 받는다.
책은 대학원생이 번역하지만 교수님 이름이 올라간다.
그저 뒤에서 남들을 돕는 역활은 하는것이 나쁘진 않다.
그렇지만 나는 이제 나서고 싶다.
내가 원하는 방향으로 돛대를 이끌고 배를 운항하고 싶다.
사공이 많으면 산으로 가지만 그 덕에 산경치도 볼 수 있다.

그늘에서 벗어나 햇빛으로 나가고 싶다.

세미나를 오래 준비 못했지만 아는 내용이라 그냥 들어 갔다.
깨지진 않겠지...
세미나를 잘하고 싶다.
영어를 잘하고 싶다

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

나는 공부를 못한다.

분류없음 2007.12.24 04:14 by LoofBackER

나는 학부생이다.
4학년 2학기가 이제 끝났다.
성적만 나오면 된다.
그런데 성적은 아마도 바닥을 길꺼라 생각 한다.
공부를 하지 않았다.
하기가 싫었다.
나는 공부를 졸라 못한다.
끈기가 없나 보다.
열심히도 못하고 집중력도 없다.

나는 공부를 못한다.

그렇다고 해서 연구를 하지 말라는 법은 없다.
평생 연구 하는 사람이 되야지..

몇년전에 나는 개발자가 되길 원했고 그길을 차근 차근 밟아 나갔다.
휴학을 하고 프로그래밍에 매진 했고 회사에서 일을 해보았고 멤버십에 지원해서 열심히 나의 커리어를 쌓았다.
대회도 나가고 여러 팀원들과 협업을 하기도 했다.

그러한 결과물을 가졌지만 학교에서 수업을 들으면 수업에 참여 할 수가 없었다.
왜냐하면 졸리고 수업 대신 개발이나 세미나에 참여 해야 할 시간이 더 많았다.
수업 시간에 듣는 죽은 지식에 대해 관심이 없었고 살아있는 액티브한 공부가 더 재미있었기에 나는 수업에 관심이없었다.

하지만 이러한 나의 생각은 정말 멍청한 짓이었다.
이론이 없는 프로젝트는 한낫 쓰레기에 불가 했고 이론을 위해 프로젝트를 진행 하는것이 맞는 것이다.
이론을 증명하기 위한 프로젝트를 해야된다.

나는 작년동안 임베디드 시스템 소프트웨어에 심취해 있었고 그 연구를 더 하고 싶어서 현재 시스템 소프트웨어 연구실에 들어와서 인턴생활을 하고 있다.
이 연구실은 많은 분야에서 프로젝트와 논문을 진행 하고 투고 하고 있다.
교수님은 이미지 검색이나 추천 같은 데이터 마이닝에 관련한 연구를 하셨었고 LG에서 10년정도 근무한 이력으로 임베디드에 관련하여 컴퓨터 아키텍쳐와 자료구조 데이터베이스 의 전문가 이다.
포닥으로 아리조나 대학에 다녀오셨을때 연구 하신 이미지 프로세싱에도 관심이 많으신것 같다.

내년 부터는 스토리지 시스템에 관한 연구를 많이 진행 할 것 같다.
나도 두개의 프로젝트에 어사인 되어서하이브리드 디스크와 플래쉬 메모리 파일시스템에 관해서 공부를 해야 할 것이다.

나는 올해에는 다시 윈도우즈 시스템으로 돌아와서 여러가지 애플리케이션을 제작 하였다.
하지 않을것 같았던 윈도우쪽 프로젝트만 주구 장창 참여 하여 많은 공부와 많은 경험을 하였다.
이매진컵에 나가서 여러경험을 하였고 현대기아 공모전에 나가서 많은 경험을 하였다.
웹2.0대회에서도 많은 경험을 하였다.

연구실에서는 협업 필터링과 컨텐츠 기반 필터링 의 혼합 추천 시스템인 하이브리드 추천에 관한 연구를 했다.
교수님이 주신 연구를 이어 받아서 그저 실험을 한것 뿐이지만 많은 공부를 하게 되었고 인공지능이라는 분야에 많은 관심을 쏟을 수 있게 만들어준 경험이다.
현재에도 이 분야에 많은 관심이 있어서 논문들과 프로젝트에 관해서 서베이를 진행중이다.
아주 흥미로운 분야이다.HMM 이나 SVM 등 여러가지 방법과 뉴럴 네트워크와 유전자 알고리즘 전문가 시스템 멀티에이젼트 패턴인식 등등 흥미로운 주제가 나를 자극 했다.
세상에는 많은 이론이 있고 많은 연구원이 있다.
나도 그 많은 한 연구원으로 살아가고 싶지만 그리 쉽지만은 않다.

음악추천에 관련하여 많은 고민을 해보았다.
음악을 분류하고 음악을 군집화 시키는 많은 어프로치를 보았다.
어떻게 하면 가장 효율적인가?
가장 성능이 좋은가?

그것이 문제로다.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License

학문을 닦는 다는것은?

::::::Dairy::::: 2007.10.22 02:49 by LoofBackER
화장실에 가서 행 하는 행동이 아니다.
학문이라는 것은 무엇 일까?
나는 컴퓨터공학을 전공 하고 있다.
내년 부터는 전자공학을 전공 할 것이다.
하지만 변하는 것은 없다.
같은 컴퓨터 가지고 놀 거니깐...

컴퓨터 과학은 매우 현실적인 학문이다. 이를 공부하는 사람들은 이론적인 고찰을 필요로 하는 문제 보다는 현실적이고 실제로 유용한 문제들을 현저하게 좋아 하는 경향을 가진다.
특히, 이러한 경향은 실세계에서 필요로하는 복잡하고 어려운 응용 분야를 다르는 컴퓨터 과학도에게서 두드러지게 나타난다. 이들은 자신이 원하는 해답을 구하는 데 도움이 된다고 판단한 경우에만 이론적인 문제에 관심을 갖는다.
컴퓨터를 필요로 하는 응용 분야가 없다면 컴퓨터에 대한 흥미도 없을것이고, 따라서 이와 같은 자세가 잘못된 것이라 말 할수는 없을 것 이다. 그러나 이러한 현실 지향적인 경향에서도 왜 이론을 공부 하는가? 같은 질문은 제기 될 수 있을 것이다.
이에 대한 첫번째 답으로 이론은 학문분야에 대한 일반적인 본질을 이해 할 수 있도록 개념과 원리를 제공 한다는 점을 들 수 있다.컴퓨터 과학 분야는 하드웨어 설계에서부터 프로그래밍에 이르기 까지 넓은 범위의 다양한 토픽을 포함하는 학문분야이다. 실세계에서의 컴퓨터를 사용 하는데 있어서 성공적인 응용을 위하여 배워야 할 많은 특정 세부사항들이 존재한다. 이런 측면에서 컴퓨터 과학 분야에는 몇가지 기본 원리가 존재하며, 이러한 기본 원리를 공부하기 위해서 우리는 컴퓨터와 계산에 대한 추상적 모델을 설정 하는 것이다.
이렇게 설정되는 모델은 하드웨어 및 소프트웨어에서 공통적으로 나타나는 특징들, 그리고 컴퓨터를 사용하여 작업을 진행하는 동안 접하게 되는 많은 복잡한 사항들에 필수적이고 중요한 특징들을 모두 표현한다. 비록 이러한 모델들은 실세계에 즉시 적용 되기에는 너무 단순 하지만 , 이를 공부함으로서 우리가 얻는 통찰력에 의해 우리는 앞으로 해야 할 일들에 대한 기본적인 토대를 얻게 되는 것이다. 이와 같은 접근 방식은 컴퓨터 과학 분야에만 국한되는 것은 아니다. 모델의 설정은 어느 과학 분야에나 필수적인 것이며, 그 분야의 실용성은 대부분 간단 하면서도 강력한 이론과 법칙들이 존재하는가에 달려 있다.
명확하지는 않지만 위 질문에 대한 두번째 답은 우리들이 이제부터 공부 할 이론적인 개념들이 즉각적이고 중요한 분야에 응용 가능하다는 것이다. 디지털 설계나 프로그래밍 언어, 컴파일러 분야 들리 확실한 예들이며, 이외에도 이론적인 개념즐이 즉시 응용 될 수 있는 여러 분야들이 존재 한다. 이 책에서 공부하는 개념들은 컴퓨터 과학의 기초 분야인 운영체제 에서 부터 최종 응용 분야라 할 수 있는 패턴 인식 등의 분야에 까지 사용 될수 있을것이다.
세번째 답으로는 이론분야에서는 지적인 사람들에게 매우 자극적이고 재미있는 주제들을 다루며, 수수께끼 같은 문제들을 제시 함으로서 독자들의 공부 의욕을 돋군다는 점을 들 수 있다. 이는 본질적으로 문제해결을 다르는 분야이며, 독자들은 밤잠을 설쳐가며 주어진 문제를 해결하는데 시간을 투자하게 될 것이다. 앞으로 공부하면 이러한 점들을 수긍 했으면 한다.

오토마타 수업을 들으면서 중간고사를 대비하여 공부를 하면서 책에 써있는 학문이란 무엇인가?
이론이란 무엇인가에 대한 아주 심도 있는 고찰을 읽고서 감명을 받고 내가 왜 공부를 하는지에대한
정형된 글로서 정리를 하니 정말 좋다.

나는 공부를 왜 하는가? 라는 생각을 많이 했지만 답은 그리 쉽게 나오지 않았고 이 지문을 여러번 낭독 함으로서 학문이라는 심오한 세계에 발을 기꺼히 담글 수 있을 것 같다.

컴퓨터 과학이라는 분야에 최고가 되기위해서 더 많은 경험과 더 많은 책 더많은 양식을 쌓아야 한다.
하루에 한개씩 하루에 한번씩 보람되는 시간을 갖도록 하자.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'::::::Dairy:::::' 카테고리의 다른 글

신비  (0) 2008.05.13
학문을 닦는 다는것은?  (0) 2007.10.22
오랜만에...  (1) 2007.07.07
2007년 반이 지나다  (0) 2007.05.29
Embedded OS Engineer  (1) 2007.04.19

현대 기아 자동차 공모전

:::::Computer::::: 2007.09.28 04:11 by LoofBackER
올해 나간 두번째 공모전.

대회에 나가는것을....
즐기진 않는다.

별로 좋지 않아 보일뿐.

학생은 공부를 해야 하며
공부를 위한 프로젝트가 되어야 한다고 생각 한다.

기술을 위한 프로젝트도 안되며.
프로젝트를 위한 프로젝트는 절대 금지이다.

돈을 벌기위해 프로젝트를 하는 것은 지금은 좋겠지만 나중에 안좋은 결말을 맺을 것이다.

나를 위한 시간 투자만이 미래의 첫걸음이자 현재의 디딤돌이다.
바쁘게 산다는건..

학생으로서 친구로서 아들로서의 인생을 뒤로 하고 그저 한 가지의 일에만 몰두 하는 나..

정말 이 소리 너무 지긋 지긋 하다.
너 왜이렇게 바뻐?

나도 그러고 싶어서 그러는 것 아니란 말이다.

여유롭게 맥주를 들이키며 여유롭게 여행을 다니고 싶다.
내가 하고 싶은 공부를 밤에 말고 낮에 할랜다.
밤에는 잠을 자고
낮에는 공부를 할랜다.
주경 야독 이런한 말 좋지 않다.
밤에는 자야 한다.
자신의 인생을 즐겨라~~

즐기기 위한 희생은 희생을 위한 희생으로 전락 할것이다.

이제 그만~~
학부생 마지막 프로젝트가 끝나가고 있다.

대충 수박 겉핥기시의 보여주기 위한 겉만 번지르한 프로젝트는 그만.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

':::::Computer:::::' 카테고리의 다른 글

현대 기아 자동차 공모전  (0) 2007.09.28
Kernel compile make menuconfig  (0) 2007.02.26

오랜만에...

::::::Dairy::::: 2007.07.07 11:36 by LoofBackER
오랜만에 글을 써본다.
오랜만에 멤에 왔다.
오랜만에 집중을 해본다.
오랜만에 에덴동산에서 자본다.
오랜만에 자리를 바꾼다.

오랜만에.. 이 단어를 좋아 한다.

예전으로 돌아 간다는 느낌?

예전이 좋았다 라는 느낌을 가지고 있어서 오랜만에 라는 단어를 붙여 주는 것 같다.

예전이 나빴다면 또 하고 있다 라던가 이러한 단어를 사용 한다...

아 또 이 지랄 하네.
오랜만에 이거 해본다.

두 문장 너무 다르다...


너무 비약이 심한가?

나는 누구 인가?

나는 누구 인가?

가끔 뒤를 돌아 보고 나는 누구인가?
나는 누구인가?

묻지만 아무도 가르쳐 주지 않는다.
내가 가르쳐 주는 나는 내가 너희들에게 보여 주고 싶은 나의 모습이고
다른 나는 내 안에 존재 한다.

Two Face 의 삶을 살고 있는 인간들..
남에게 어떻게 보일까? 를 먼저 생각 하면서 나를 맞춰 가는 그들의 모습은 광대 일뿐인가?
아니면 인간 발전의 모습으로 보면 되는것인가? 알고 싶다.
내가 이렇게 행동 했을 때 다른 사람들이 어떻게 생각 할까?
라는 생각을 가지고 행동을 할 때에는 조심 스러워 질 것이며 상대방을 서로 존중 할 수 있을 것 이다.
반대로 나만 생각 하고 누가 머라 생각 하던지 내 맘대로 할 것이다..
라는 생각을 가지고 있는 인간은 남들에게 피해를 줄 수 있는 나쁜 사람이 될 수 도 있는 것이며
아닐 수 도 있다.

그렇지만 앞의 두 경우는 인간이라서 어쩔 수 가 없는 것인가 보다.
인간이라는 존재는 남을 생각을 하던지 아니면 자신 편안한 대로만 자신의 몸을 움직인다던지 하는 사회적인 동물인 것이다.
동무이라는 단어가 어감이 좋지는 않지만 인간은 동물이다.
동물은 동물일 뿐

배고프면 먹고 배부르면 자고 이런게 본능이지머.


너도 동물이다.
동물들의 생산의 시초는 어디서 오는지도 모르겠고
동물들의 결말 또한 모르는 것...

앞을 향해 달릴쁜...
그길이 끈기면 잇던지 해서 달려라~
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'::::::Dairy:::::' 카테고리의 다른 글

신비  (0) 2008.05.13
학문을 닦는 다는것은?  (0) 2007.10.22
오랜만에...  (1) 2007.07.07
2007년 반이 지나다  (0) 2007.05.29
Embedded OS Engineer  (1) 2007.04.19
1 2 3 4 

카테고리

분류 전체보기 (107)
::::::Dairy::::: (5)
:::::what?::::: (1)
:::::Computer::::: (5)
:::::Idea::::: (2)
:::::Want::::: (1)

달력

«   2017/07   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

티스토리 툴바