Topics: , , , , , , , , , , and more...
주말 저녁에 시간이 남아서 Wii 리모콘으로 장난질을 초큼 더 해봤어요. 적외선 발광 다이오드라도 있으면 마이너리티 리포트 놀이를 해봤을텐데 어디서 구해야하는지 몰라서 --; 일단은 중력 센서를 가지고 놀아봤습니다.

뭘 할까 하다가 실제로 쓸만한걸 만들어봐야겠다 싶어서 제스처를 인식해서 키보드 입력으로 전환하는 프로그램을 하나 짜봤습니다. 일단은 왼쪽으로 움직이면 키보드 LEFT, 오른쪽으로 움직이면 키보드 RIGHT로 전환하게 해봤습니다.

자기 전에 누워서 음악 듣거나, 침대에서 프로젝터로 영화 보거나 할 때 좋을 것 같아요 ㅋ (SendKeys를 쓰기 때문에 사실 iTunes가 아니라 뭐든 제어할 수 있습니다)

조금 더 일반화해서 Firefox 제스처 플러그인처럼 만들면 아주 좋겠다는.



근데, 만들어놓고보니 어째 방향이 반대인듯 ㅎㅎ

Johnny Chung Lee 아저씨가 만든 .NET용 라이브러리를 사용했고, 코드는 대략 다음과 같습니다( 아쉽게도 JS가 아니고 C#으로 했어요 --; 간만에 C#을 하려니 완전 뭐가 뭔지 ㅋ ).

    class GestureDetector : IDisposable
    {
        private Wiimote wiimote;
        private bool started;
        private float init;
        private string dir;

        public GestureDetector()
        {
            this.wiimote = new Wiimote();
            this.wiimote.Connect();
            this.wiimote.SetReportType(Wiimote.InputReport.ButtonsAccel, true);
            this.wiimote.WiimoteChanged +=
                new WiimoteChangedEventHandler(wiimote_WiimoteChanged);
        }

        void wiimote_WiimoteChanged(object sender, WiimoteChangedEventArgs args)
        {
            WiimoteState state = args.WiimoteState;
            bool buttonB = state.ButtonState.B;
            float x = state.AccelState.X;

            if (!started && buttonB)
            {
                started = true;
                init = x;
            }
            else if (started && buttonB)
            {
                if (dir == null && x > init + 0.2)
                {
                    dir = "{LEFT}";
                }
                else if (dir == null && x < init - 0.2)
                {
                    dir = "{RIGHT}";
                }
            }
            else if (started && !buttonB)
            {
                started = false;
                if(dir != null) SendKeys.SendWait(dir);
                dir = null;
            }
        }

        public void Dispose()
        {
            this.wiimote.Disconnect();
        }
    }

(코드에 대한 설명은 생략)

아참, Wii Remote랑 PC를 연결하려면 블루투스 수신이 가능해야 합니다. 저는 USB 동글이? 라는걸 하나 샀어요. Wii Remote의 1, 2 버튼을 동시에 누르면 장치를 등록할 수 있습니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
Tags c#, iTunes, Wii

"다윈의 동화"를 읽고 2008/05/09 00:08

"다윈의 동화"라는 책이 나왔길래 읽어봤습니다.

제목의 의미는 대략... "다윈의 진화론은 동화와 같이 허무맹랑한 내용이다"라는 것이고, 내용을 요약하자면 "다윈의 진화론을 인간에게 적용하기엔 무리가 있다" 정도가 되겠습니다. 좀 더 구체적으로는:
  • 다윈의 진화론
  • 신다윈주의 종합설
  • 진화심리학
등을 비판했다고 합니다.

하지만 그 내용이 상당히 어설픈데요, 인용을 초큼 해보면 이런 식입니다:
음악의 아버지라 불리는 바흐가 죽기 직전 많은 재산이 있었고, 그래서 재능이 뛰어난 젊은 작곡가에게 해마다 장학금을 제공하라는 유언을 남겼다고 가정해보자. (...omitted...) 오늘날 신다윈주의 생물학자들은 분명 이런 행동들도 이기적이라고 할 것이다. 여기에서 그들은 '자기복제적인' 경향이라는 말을 내세운다. 즉 바흐와 뉴턴이 이런 행동을 한 것은 그것이 그들 입장에서 자신과 닮은 사람들의 숫자를 증가시킬 수 있는 최고의 수단이었기 때문이라는 것이다. --p233~234

자기복제자(유전자) 입장에서야 자신을 담고 있는 운반자(바흐)를 닮은 운반자(바흐를 닮은 다른 사람)의 숫자를 증가시키는 것은 아무 의미도 없습니다. 한마디로 유전자 선택론을 완전 잘못 이해하고 있는 것이죠.

포괄적응도(Inclusive Fitness) 개념에 대해서는 뭐라 했냐하면:
포괄적응도 이론이 말하는 것 중 하나는 자식에 대한 부모의 헌신적인 사랑이 부모의 유전자 절반을 자식이 가지고 있기 때문이라는 것이다. 하지만 인간의 경우 자신과 동일한 유전자의 절반을 가지고 있는 것은 자식만이 아니다. 모든 여성은 수정을 하던 하지 않던 자신이 생산해내는 난자와 절반의 유전자를 공유하고 있다. 각각의 남성은 자신이 생산해내는 정자와 유전자 절반을 공유하고 있다. 그러므로 포괄적응도 이론은 모든 여성이 자식과 마찬가지로 자신의 난자를 사랑해고, 아버지가 아들을 사랑하는 것처럼 모든 남성은 자신의 정자를 사랑한다고 단언하는 것처럼 보일 수도 있다. --p284

헌신적인 사랑 자체가 중요한게 아니라, 유전자를 퍼트리는 것이 중요한 것이고, 자식에 대한 투자(Parental Investment)는 자식의 생존 가능성을 높여주고 따라서 번식 가능성을 높이는 결과로 이어지며, 번식은 결국 유전자를 퍼트리는 것이기 때문에 자식에 대한 투자는 (유전자 입장에서) 합리적입니다. 하지만 난자나 정자를 사랑한다고 해서 유전자가 퍼지는 것은 아니기 때문에 그런 웃기는 일은 일어나지 않는 것이죠. 이 또한 심각한 몰이해에서 비롯된 주장입니다.

음. 저는 책 살 때 돈을 안 아끼는 편인데, 가끔은 아까울 때가 있기도 합니다. --;
이올린에 북마크하기(0) 이올린에 추천하기(0)