Category Archives: 삽질

Qt 4.2.0/VS2005 SP1 문제 해결

윈도 비스타에서는 어쩔 수 없이 VS2005 SP1을 사용해야 한다. 그런데 윈도 비스타에서 VS2005 SP1을 사용하여 아마 QMap/QHash가 들어간 프로그램을 컴파일하는데 오류가 생겼다. 다행히토 트롤텍은 둘러가기 패치를 제공하고 있었지만, 이마저도 듣지 않았다. 그래서 이 문제 가지고 MSDN과 각종 Qt 포럼이 아직도 들썩대고 있다.
그런데 그 둘러가기 패치의 코드와 내가 가지고 있는 Qt의 문제성 헤더의 줄 번호가 약간씩 차이가 났다. 그리고 둘러가기 패치는 그 주변 코드를 알 수가 없어서 뭐가 문젠지 알아내는 데 시간이 좀 걸렸다. 실제로 내가 적용시킨 것은 다음과 같다.

<QHash.h>
일단 390줄 부근에서 찾기 바란다.
private:
       // ### Qt 5: remove
       inline operator bool() const { return false; }
   };
   friend class const_iterator;
typedef typename QHash<Key, T>::iterator DummyHashIterator;
   // STL style
   inline iterator begin() { detach(); return iterator(d->firstNode()); }
   inline const_iterator begin() const { return const_iterator(d->firstNode()); }

그리고 한 890줄 부근에 있다.
public:
   QMultiHash() {}
   QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {}

   inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value);
   inline typename QHash<Key, T>::iterator insert(const Key &key, const T &value);
    
       inline typename DummyHashIterator replace(const Key &key, const T &value);
       inline typename DummyHashIterator insert(const Key &key, const T &value);

   inline QMultiHash &operator+=(const QMultiHash &other)
   { unite(other); return *this; }

파란색 부분을 찾은 다음 지우고 빨간색으로 바꾸면 된다.

<QMap.h>
310줄 부근에서 찾기 바란다.
private:
       // ### Qt 5: remove
       inline operator bool() const { return false; }
   };
   friend class const_iterator;

       typedef typename QMap<Key, T>::iterator DummyMapIterator;
   // STL style
   inline iterator begin() { detach(); return iterator(e->forward[0]); }
   inline const_iterator begin() const { return const_iterator(e->forward[0]); }

그리고 한 890줄 부근에 있다.
public:
   QMultiMap() {}
   QMultiMap(const QMap<Key, T> &other) : QMap<Key, T>(other) {}

          inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value);
    inline typename QMap<Key, T>::iterator insert(const Key &key, const T &value);

           inline typename DummyMapIterator replace(const Key &key, const T &value);
           inline typename DummyMapIterator insert(const Key &key, const T &value);

   inline QMultiMap &operator+=(const QMultiMap &other)
   { unite(other); return *this; }

파란색 부분을 지우고 빨간색 부분으로 바꾸기 바란다. 그 결과 해결되는 척 하였다.

아아아아아아아아아아아아안돼애애애애애애애애애애애!

사용자 삽입 이미지트롤텍에서 하는 Qt 세미나란 것이 있어서 너무 끌려서 서울행 KTX 예약할 생각하고 #tokigun에서 이거 가지고 이야기하고 있었다. 기분좋게 International Registration 눌러 보니까, Registration is free, but seating is
limited, so reserve your spot today!
이 말에 조낸 흥분해서 예약하려고 했다. 그런데 그런데, 국내의 한 사이트에 가 보니, 아예 죽여라 죽여. 트롤텍 홈페이지가 구라를 치는 건지 너희가 구라를 치는 건지. 나는 접수 한다고 해도 트롤텍 홈페이지에다가 할 꺼니까, 그냥 차라리 안가고 만다.
혹시 이거 가실 수 있는 분이 있다면, 누군가가 저 경험담 좀 전해 주시기 바랍니다. 저도 꼭 가고 싶다고요!

V43에 USB 사운드카드 인식시키기

집을 뒤지다보니까 엘레콤 상표가 붙어 있는 USB 사카가 나와서, V43에서는 어떻게 인식이 안 되나 고민해 봤다. 내 쿠분투에서도 꼽으면 USB HID 장치로 인식을 하고 출력 방향을 특별히 돌리지 않아도 USB 쪽으로 소리가 나서 V43에도 되는가 실험해 봤다. USB 호스트를 활성화시키고 dmesg를 떄려 보니, USB 사카가 잡히고 /dev/dsp1이 나왔다.
그런데 아무리 쥐어 박아도 /dev/dsp1로는 신호가 안 간다? 프로그램을 뜯어 보니까 /dev/dsp에 직접 쓰도록 하드코딩이 되어 있었다. 홧김에 /dev에 들어가서 dsp와 dsp1을 바꿔치기해 버리니까 그제서야 USB 쪽으로 소리가 났다. 그런데 최대 음량으로 소리가 나서 깜짝 놀래서 꼽고 있던 이어폰을 뺐다. V43의 기본 제공 믹서로는 소리 조절이 되지 않는다는 게 좌절이다.
아놔 alsa, oss, 너희 좀 나와 봐~ 하면서 a 누르고 tab 키를 누르는 순간, amix라는 녀석이 나왔다. 대강 보니까 믹서 같은데…

(여기서 스토리는 중단됩니다.)

증거자료는 디카 꺼내기 귀찮아서 다음에. 그리고 현재 리눅스 시스템이 alsa를 쓰는지, oss를 쓰는지, 아니면 프로그램이 /dev/dsp 같은 데 출력하도록 하드코딩되어 있는지 누가 좀 알려 주세요. 그리고 amix의 자세한 용도도요.

V43 AS 완료

김 모군이 V43을 너무 오랫동안 충전 안 한 채로 방전시켜 두었는지, V43의 슈퍼 캐퍼시터가 방전되어 버렸다. 문제는 이것이 나한테로 넘오 오면서 제대로 충전이 안되는 등의 ㅁㄴㅇㄹ스런 짓을 하면서, 오늘 윤리 수업 마치자마자 서면으로 뛰어가서 디큐랑 싸웠다. 부산 서면에는 디큐 AS가 무려 2개씩 있다. 하나는 디큐 직영이고 하나는 위탁 센터이다. 우선 직영부터 가 봤다. 이 심각한 슈퍼 캐퍼시터 이상을 고치는 데 무슨 1주일 이상이 걸린다고 생쇼를 하던가. 하여간 거기에 전시되어 있던 디큐 PMP나 만지고 나서 그냥 나왔다.
그 다음으로는 길을 걸어가다가 근처의 디큐 센터를 찾았다. i-Station 간판이 안 걸려 있어서 사람들이 거의 오지 않았던 그 센터에 가 보니까 내부 캐퍼시터 이상이라고 하면서 수리에 약 30분 정도 걸린다는 말만 하였다. 아놔 디큐 직영보다 위탁이 이렇게 친절하면 어쩌냐. 결국은 배터리를 뽑아도 시간이 리셋되지 않는다는 것에 만족하면서 디큐 AS를 벗어났다.
AS 직원분의 말대로 1시간 동안 충전시킨 다음 배터리를 뽑았다 끼웠더니 시간이 유지되었다. 이 간단한 것을 가지고 디큐 직영에서는 몇일을 끌더니만 위탁이 더 친절하게 해서 좀 이해가 가지 않았다. 자 이제 수리 후 별로 달라지지 않은 V43 사진을 보자.
사용자 삽입 이미지그 여느 사진과 다를 바 없는 V43이다.
사용자 삽입 이미지흔히들 마삼이라고 부르는 V43/Qtopia 부팅 화면이다. 오리지널 V43과는 조금 다르다. 많은 사람이 Qtopia를 운영체제라고 오해하는데, Qtopia는 그놈, KDE와 같은 데스크탑 환경이다. 단지 임베디드용으로 특화되었을 뿐.
사용자 삽입 이미지배터리를 뽑았다 끼워도 시간은 유지되어 있다. 와 ㅁㄴㅇㄹ!
사용자 삽입 이미지크라스탈과 하이컬러 아이콘을 이식해서 데스크탑 KDE 분위기 내 보려고 삽질하다가 만 것. 설정 탭이 지댄데 못 보여줘서 ㅈㅅ.
사용자 삽입 이미지마지막으로 파이썬 재컴파일 기념 샷.