bicycle2012. 6. 1. 11:30

전에 사용하던 튜블러 타이어 투포 PRO S33과 새로 교환한 울트리모 HT를 비교해 보겠다.

S33->HT 교환한 느낌 의견을 남기기 위해서 글을 썼다.

로드바이크를 타기 시작한지 1년이 안되었기 때문에 객관적이지 않고 주관적인 생각이 많이 들어 있다는 것을 미리 알린다.

 

 S33 처음 튜블러 휠셋으로 교환했을 달았던 타이어로 정가 4 3천원 짜리다.

 연습용 타이어답게 정말 질긴 놈이다. 대략 9개월 동안 5000km 탔는데 펑크가 2 그것도 바퀴에만 있었고 그나마 실란트로 쉽게 수리 있었다. 정비된 한강길 뿐만 아니라 파리-루베를 상상하게 하는 그런 길로도 다녔는데, 정말 신기하게도 펑크가 거의 나지 않았다. 항상 가지고 다니던 펌프에게 미안해지는 기분이 들 정도로…

  리뷰에서 S33 너무 미끄러져 위험해서 사용하지 말라는 문구가 보이는데, 초보가 쓰기엔 S33 그립능력은 충분하다고 생각한다. 레이싱, 우중 라이딩, 급격한 내리막에서 빠른 속도로 코너를 공략 때가 아니라면 S33 충분한 그립능력을 가지고 있다고 생각한다.

. 노면이 젖어 있을 때는 정말 조심해야 한다. S33 사용하면서 타이어가 미끄러져 낙차 적이 2 있는데, 모두 비 오는 날이었다.

 

5000km 넘어가면서 타이어 마모도 많이 진행되었고, 표면이 갈라지기 시작해서 울트리모 HT 교환했다.

울트리모 HT 정가 125000, 최고급 튜블러로 레이싱을 위해서 수작업으로 만들어졌다고 한다. 가격이 너무 비싸 중고게시판 매복하고 있다. 값에 2개를 구할 수가 있었다.

투포의 글루잉 테잎을 이용해서 설치했고, 대략 200km 탔다.

우선 승차감을 이야기 수가 없다. 분명 똑같은 공기압으로 탔는데 푹신한 느낌이 들었다. 타이어 교환 처음 라이딩 했을 공기압을 넣은 게 아닌지 의심했다.

그립은 S33 비교를 없을 정도로 뛰어나다. 초보라서 반응성이 좋다던지, 스프린트 댄싱 유리하다고 하는 의견이 사실인지는 확인 수가 없었다.

어떤 사람은 최상급 타이어를 사용했더니 평속이 올라 갔다고 하던데, 별반 달라진게 없었다. 하지만 편안한 승차감과 그립력은 라이딩에 긍정적인 영향을 끼치는 것은 확실하다.

 

펑크와 마모에 대한 것은 나중에 울트리모  HT 교환할 다시 이야기 하겠다.



-------------------- 추가 ---------------------------------------------


울트리모 HT 사용 후기. HT로 바꾼지 대략 2개월 1000km를 탔다. 2개월 동안 타고 난 뒤 느낌 점은 편안한 승차감과 정말 뛰어난 접지력.


하지만 앞 뒤 바퀴중에 앞 휠 타이어는 HT가 아니라 컨티넨탈 스프린터 가토 스킨이다. 


왜냐고? 라이딩 도중 돌을 밟고 펑크가 나서 교체 했기 때문에. 600km 쯤.


정말 성능은 뛰어나나 내구성은 극악이다. 


살아 남은 뒷 타이어도 펑크가 나서 실란트로 한 번 수리했고, 트레이드도 많이 달았다. (살살 탔는데)


특히 타이어 사이드는 정말 부실하다. 전곡항 라이딩 도중 작은 돌을 밟았는데. 아래 사진 처럼 사이드가 쫙 찢어져 버렸다.







Posted by 평면우주
study2012. 4. 23. 17:18

질문을 하나 받았다. Python/C API 관련 질문인데 이게 조금 복잡하다.

 

C/C++에서 파이썬을 사용하고 싶으면 Python/C API 사용해 파이썬을 프로그램에 포함시키면 된다. 아래 예제에서


#include "Python.h"


int

main(int argc, char *argv[])

{

   Py_Initialize();

 

   PyRun_SimpleString("from time import time,ctime\n"

                              "print('Today is', ctime(time()))\n");

   Py_Finalize();

}

 

현재 시간을 가져오는 프로그램을 파이썬의 time 모듈을 이용해서 구현한 것이다.

Python/C API 상위 레이어 함수인 PyRun_simpleString 사용해 쉽게 파이썬을 C/C++에서 실행 시킬 있다.

 

그렇다면 PyRun_SimpleString 번째 인수인 파이썬 구문에서 C/C++ 함수를 호출 있을 ? 물론 가능하다. 이를 위해서 파이썬 확장 모듈이라는 것이 있다.

 

파이썬에서 사용할 모듈 -여기서는 spam- 만들고 컴파일 하면 shared library 만들어 지고 이를 파이썬이 설치되어 있는 디렉터리에 옮겨 놓으면 된다.

 

그리고 아래와 같이 사용하면 된다.


PyRun_SimpleString("import spam\n"

                          "print('String Length is : ', spam.strlen('abc'))\n");

 

하지만 so 매번 옮겨 놓을 수도 없는 노릇이고, 원하는 것은 소스코드 안에서 파이썬과 C/C++ 서로 통신하듯이 쓰는 것이기 때문에   방법은 문제가 있다.

 

일단 C/C++ 함수를 파이썬에서 사용하게 하려면 함수들을 파이썬 확장 모듈로 만들어야 한다.

여기까지는 순조로웠는데, 만든 모듈을 파이썬에서 임포트 없었다.

문제는 PyRun_SimpleString안의 파이썬구문이 실행 , 우리가 만든 spam 모듈이 파이썬 built-in 네임스페이스에 포함 되지 않는 다는 것이다.

 

참고할 예제도 없어서, 주말 내내 Python Document 읽어보았다.

 

그래서 찾아낸 함수가 PyImport_ExtendInittab, PyImport_AppendInittab이다.

(http://docs.python.org/py3k/c-api/import.html?highlight=pyimport_#PyImport_ExtendInittab)

해당 모듈을 build-in 추가 해주는 고마운 함수이다. Importing Modules(http://docs.python.org/py3k/c-api/import.html) 보면 모듈을 C API에서 임포팅 하는 함수들이 나온다. PyImport_AppendInittab으로 예제를 만들고 테스트 해봤다.

 


#include "Python.h"

 

static PyObject *

spam_strlen(PyObject *self, PyObject *args)

{

    const char* str=NULL;

    int len;

 

    if (!PyArg_ParseTuple(args, "s", &str))

         return NULL;

 

    printf("argument = %s\n", str);

    len = strlen(str);

 

    return Py_BuildValue("i", len);

}

 

static PyMethodDef SpamMethods[] = {

{"strlen", spam_strlen, METH_VARARGS,

 "count a string length."},

 {NULL, NULL, 0, NULL}

};

 

static struct PyModuleDef spammodule = {

    PyModuleDef_HEAD_INIT,

    "spam",           

    "It is test module.",

    -1, SpamMethods

};

 

static PyObject* PyInit_spam(void)

{

    return PyModule_Create(&spammodule);

}

 

int

main(int argc, char *argv[])

{

 

   PyImport_AppendInittab("spam", &PyInit_spam);

 

   Py_Initialize();

 

   PyRun_SimpleString( "import spam\n"

       "print('String Length is : ', spam.strlen('abc'))\n"

   );

  

   Py_Finalize();

   return 0;

}

 


 

PyImport_AppendInittab에서 built-in 포함될 모듈의 이름과 만든 모듈 포인터를 넣어준다.

한가지 특이한 점이 PyInit_spam처럼 모듈을 바로 입력 받지 않고 함수 포인터를 받는 다는 것이다.

PyImport_AppendInittab는 Py_Initialize() 호출하기 전에 호출 되야 한다.

 

PyRun_SimpleString안의 파이썬 구문에서 spam 모듈이 정상적으로 임포트되고, 함수도 호출 되는 것을 있다.

  

 

Tip.

테스트는 리눅스에서 파이썬 3.1에서 진행했다. 파일을 컴파일 , 파이썬의 헤더 라이브러리 파일이 필요한데 아래처럼 간단하게 구할 있다.

 

cflags, ldflags 알아내는

$ /opt/bin/python3.2-config --cflags

$ /opt/bin/python3.2-config --ldflags

Posted by 평면우주
study2011. 12. 20. 13:25

처음 들어본 이름의 tool도 많이 있네요. ㅠ.ㅠ

자세한 내용은 아래 URL 참고.

http://isao76.egloos.com/2252874


Posted by 평면우주