Skip to main content

Posts

Complete Electronics Self-Teaching Guide

http://www.amazon.com/dp/1118217322 저의 눈높이에 딱 맞는 책이네요. 전기 전자 회로 잘 모르고 Arduino 시작하는 분들에게 추천합니다.

The Arduino Starter Kit

http://arduino.cc/en/Main/ArduinoStarterKit Arduino로 뭘 좀 해볼까해서 구입한 스타터 킷인데 쓸만합니다. 저처럼 전기회로 잘 모르지만 Arduino 시작하는 분들에게 추천. 아직은 킷에 들어있는 매뉴얼 따라하고 있습니다. 집에 있는 레고 마인드스톰이랑 잘 붙여서 이런거 만들어보는게 현재 목표. http://blog.arduino.cc/2008/10/08/arduway-and-arduino2lego/

오리지널 레고 마인드스톰 부활 프로젝트

아... 이 사이트 너무 놀리는거 같아서 스킨 새 단장하고 글 하나. 참 스킨은 www.plaintxt.org  비슷하게 만들어 봤습니다. 약 12년전에 산 레고 마인드스톰이 있어서 애들한테 어떻게 굴러가게 만드는지 보여주려고 하니 여러가지가 걸리더군요. 일단 박스에 딸려온 소프트웨어는 Windows7에선 안 돌아가고 집에 있는 랩탑엔 씨리얼포트가 없고... 씨리얼포트... 정말 오랫만에 들어보는군요. 예전에 한번 써봤던 NQC 로 코딩은 하면 될것 같은데 씨리얼포트는 달리 방법이 없어서 일단 아마존에서 어댑터 를 하나 구입했습니다. 어댑터 도착 후 테스트해보니 씨리얼포트는 정상적으로 인식하더군요. 감동... ㅜㅜ   Brix Command Center (BCC) 라는 GUI도 있어서 설치해서 사용해보니 한 2%정도 편해지더군요. 이렇게되니 얼마전 쌍둥이들이 잃어버린 터치센서 하나가 무척 아쉬워지네요. 애들은 레고 시티 시리즈를 주로 가지고 노는데 나중에 자동문이나 회전목마같은거나 만들어줘야겠네요.

Blogger.com으로 이전했습니다.

근 1년반만에 쓰는 포스팅인데 블로그 이전 메일이군요. ㅎㅎ 워드프레스 호스팅을 사용하고 있었는데 바꿨습니다. 사용한 방법은 워드프레스 관리 페이지에서 export 메뉴로 xml 파일 다운로드 이미지 파일의 링크들을 찾아 피카사 앨범에 업로드 (이미지 파일은 10개 이하라 일일이 손으로 피카사 앨범으로 옮겨주었습니다.) 1번에서 백업했던 xml 파일에서 이미지 파일 링크들을 피카사 링크로 변경 http://wordpress2blogger.appspot.com/  를 사용하여 블로거 export 파일로 변경 블로거 관리 페이지에서 import 끝. 이미지 외 일반 파일들은 모두 무시하였습니다. ㅎㅎ

arraysizeof macro

다음 macro는 array의 length를 구하는 것인데 해석이 되시나요? template <typename T, size_t N> char (&Helper(T (&array)[N]))[N]; #define arraysize(array) (sizeof(Helper(array))) ... 안되신 분들을 위한 설명입니다. ;) 위 코드는 다음 두가지 사실만 알고 있다면 (비교적) 쉽게 이해됩니다. sizeof는 function call syntax에 대해서도 동작하며 그 function의 return type에 대해 동작한다. int foo() { return int(); } ... sizeof(foo()) == sizeof(int) array type의 reference를 리턴하는 method의 signature는 다음과 같다. char (&bar)[10]() { ... } 이를 바탕으로 arraysizeof를 만들려면 char(&)[N]을 리턴하는 method를 만들면 되죠. 여기서 N은 array의 length. template <typename T, size_t N> char (&Helper(T (&array)[N]))[N] { ... } 위 함수는 T(&)[N]을 parameter로 받아 char(&)[N]을 리턴합니다. 물론 T(&)[N] parameter는 이 template method의 implicit instantiation이 동작하도록 하기 위해 필요합니다. 마지막으로 sizeof는 method body가 필요없으므로... template <typename T, size_t N> char (&Helper(T (&array)[N]))[N]; 끝. 참고로 이런 코드가 필요한 이유는 널리 쓰이는 "sizeof(array) / sizeof(*array)" macro가 다음과 같은 경우 compile error없이 오동작하기

Java generic in return context

아래 코드를 보시고 1, 2번 라인중에 어디서 에러가 날 지를 찾아보세요. interface B { void doB(); } class D implements B { public void doB() {} } interface H { B getB(); } class HImpl implements H { public B getB() { return new D(); // 1) } } ... H h = new HImpl(); D d = h.getB(); // 2) 네, 2번 라인입니다. 그럼 다음 코드는? interface B1 { void doB1(); } interface B2 { void doB2(); } class D implements B1, B2 { public void doB1() {} public void doB2() {} } interface H { <T extends B1 & B2> T getB(); } class HImpl implements H { public <T extends B1 & B2> T getB() { return new D(); // 1) } } ... H h = new HImpl(); D d = h.getB(); // 2) 네, 1번입니다. 잘 이해가 되질 않아 사내 메일링 리스트에 물어보니 I think you're seeing and interpreting it as "this method can return anything that implements both interfaces". What it's actually saying is "the caller is going to tell you a specific class that implements both interfaces, and you must return one of those" . 이랍니다. 즉 T 타입이 아직 결정되지 않은 상태라 D와 T는 compati