적절한 MTB기어 조합 끄적끄적

MTB나 MTB를 흉내내는 철티비도 기어는 보통 3x7 이상씩 달려있다. 이론상 앞쪽 3단과 뒤쪽 7단으로 총 21단계의 기어비가 있지만 실제로 이것을 다 사용할 필요는 없고 사용해서도 안 된다. 1-7이나 3-1처럼 앞 뒤의 기어가 극단적으로 반대쪽으로 가면 체인이 비틀려서 체결되는 꼴이라서 실 주행시 성능과 수명에 안 좋은 영향을 준다.

이번에 3x10단짜리 유사MTB를 산 기념으로 계산을 해 보았다.

표를 보면 1-10단이 2-8단과 같고 3-5단보다도 기어비가 높다. 그렇기 때문에 1-10을 쓸 바에는 2-8을 쓰는 것이 여러모로 낫다.
이것을 조금 더 보기 쉬운 표로 바꾸었다.

그래서 앞1단은 최대 4단까지, 2단은 3~8단, 3단은 7~10단을 쓰는 것이 가장 적절하다는 결론을 내렸다. 하지만 막상 타보면 2-8로 타다가 다음 단계인 3-6으로 가는게 영 귀찮아져서 2-8 -> 3-8 로 앞단만 바꾸거나 아예 앞단을 3으로 고정하고 3-6 ~ 10까지만 왔다갔다 하면서 쓰게 되긴 한다.

참고로 며칠전까지 타고 다니던 3x7 짜리 철티비의 기어비이다.



mybatis에서 키와 값이 다른 기본타입 컬렉션 매핑하기 JAVA

같은 값이 포함될 수 있는 컬렉션이 멤버인 클래스가 있다고 치자.


class DataContainer {
    private String name;
    private ArrayList<String> values;
}

이 클래스 정보를 아래와 같은 DB테이블에 저장하려고 한다.
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| NAME    | varchar(16)  | NO   | PRI | NULL    |       |
| SEQ        | int(11)      | NO   | PRI | NULL    |       |
| VALUE    | varchar(256) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+

이렇게 하고 name과 values의 배열 인덱스를 PK로 잡아서 저장한 다음 가져올 때 매핑을 하면 될 것처럼 보였는데...
<mapper namespace="DataContainer">
    <resultMap type="confmultiitem" id="DataContainerMap">
        <id column="NAME"/>
        <collection property="values" resultType="string" javaType="java.util.ArrayList" column="VALUE">
        </collection>
    </resultMap>
...

이러면 value가 동일하면 중복된 값이 하나만 들어온다. 미치고 환장한다.
id와 result를 이용해서 나눠보기를 시도했다.
    <resultMap type="confmultiitem" id="DataContainerMap">
        <id column="NAME"/>
        <collection property="values" resultType="string" javaType="java.util.ArrayList" column="VALUE">
            <id column="SEQ" />
            <result column="VALUE" property="value" />
        </collection>
    </resultMap>

근데 이것도 잘 안 된다. SEQ값이 원소에 들어간다.

결국 해결한 방법은 스트링을 위한 별도 매핑을 추가한 것이다.

    <resultMap id="dupStringMap" type="string">
        <constructor>
            <arg column="CONF_VALUE" />
        </constructor>
        <id column="SEQ" />
    </resultMap>
    <resultMap type="confmultiitem" id="DataContainerMap">
        <id column="NAME"/>
        <collection property="values" resultMap="dupStringMap"  javaType="java.util.ArrayList">
        </collection>
    </resultMap>

혹시 더 좋은 방법을 알면 추천바람.

mybatis 설정파일 xml 에서 validation에러 발생

이클립스에서 mybatis설정파일을 저장했더니 아래와 같은 에러가 나오는 일이 있다.

아래 화면처럼 configuration 원소에 에러가 뜬다.


그리고 에러 메세지는 아래와 같다.
The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)".

근데 암만 봐도 에러 원인이 안 나온다. 에러 설명에 나온 것처럼 하위 원소로 environment , typeAliases, mappers 만 썼는데도 이런다.

해결 방법은 참 허무한데 원소 순서를 바꾸는 것이다. settings -> typeAliases -> environments - > mappers 이 순서대로 한다.
(출처 http://mybatis-user.963551.n3.nabble.com/Problem-with-config-XML-file-validation-td4029331.html ) 문서에도 안 나와있는 내용이라 찾기가 더 그지같았다.

Gnome3 eclipse luna에서 팝업 색상 변경 (Quick Type Hierarchy 등) LINUX

젠투에서 GNOME3로 정착을 해서 사용중이던 중 언제부터인가 (아마도 gnome 3.1x 로 업데이트 후인 듯) 이클립스에서 ctrl+T 로 빠른 타입 계층을 보면 그림처럼 클래스 이름이 안 보이는 것이다. 더 찾아보니 텍스트도 흰 색이고 배경도 흰 색이라 안 보이고 마우스가 올라간 곳만 하일라이트로 배경색이 바뀌어서 보이는 것이었다.

한동안 이 문제를 해결해보려도 시도를 했는데 방법을 못 찾아서 그냥 불편한대로 쓰다가 오늘 방법을 알아냈다. 아래 사이트를 참조했다.
http://iwf1.com/how-to-change-gtk-apps-tooltips-text-and-background-color/

방법은 홈 디렉토리에 .gtkrc-2.0 파일에 툴팁 색상을 설정하면 된다. 파일이 없으면 새로 만들어서 넣자.
$ vim ~/.gtkrc-2.0

style "gnome-color-chooser-tooltips"
{
bg[NORMAL] = "#FFFFFF"
fg[NORMAL] = "#444444"
}
widget "gtk-tooltip*" style "gnome-color-chooser-tooltips"

fg[NORMAL] 값에 원하는 색상의 RGB값을 넣으면 된다. 내 경우는 어두운 회색에 해당하는 #444444 를 지정했다.
이렇게 수정하고 나서 이클립스를 다시 실행한 결과는 짜잔!

이 현상에 대한 더 자세한 해설을 하려고 한다.
현재 내가 사용중인 이클립스 버전은 4.4 Luna이다. 이 버전은 그래픽 출력에 GTK+2 버전을 기본으로 사용한다. 그리고 이클립스의 팝업창은 gnome시스템의 tooltip 색상 설정이 반영되는 것으로 보인다. 그 텍스트 색상이 하얀색이다. 근데 원래 이런 것인지 내 시스템 설정이 꼬여서 그런지 텍스트 색상 설정만 반영하고 배경색은 자체적으로 흰색으로 설정해서 뿌려주고 있다. 이 설정값을 gtkrc-2.0 파일에서 강제로 바꾸어서 시스템 색이 아닌 다른 색으로 나오도록 한 것이다.

한가지 덧붙이자면 이클립스 4.5 Mars부터는 기본 설정이 GTK+3 버전으로 바뀐다. 만약 이 쪽에서도 색을 바꾸어야 할 경우라면 위의 링크로 들어가서 따라하면 된다. 다만 아직 안정화가 덜 되었는지 GTK+3에서는 자잘한 UI나 색상 문제가 더 많이 발생한다. 그래서 mars이후도 당분간 GKT+2 위에서 돌아가는 게 더 편할 수도 있다. 이것은 eclipse.ini 파일에서 GTK버전을 지정하는 식으로 해결할 수 있다. eclipse.ini파일에서 --launcher.appendVmargs 항목 바로 앆에 아래 두 줄을 삽입하면 된다. 반드시 바로 앞에 두어야한다.
--launcher.GTK_version
2
값에서 유추할 수 있듯이 3을 넣으면 GTK+3을 사용한다. 참고로 이 설정은 luna에서도 먹힌다. 루나는 기본이 2라서 3을 넣으면 수동으로 GTK+3위에서 실행시키는 것이 가능하다. (내 경우는 잠깐 써보니 영 아니어서 2로 돌아왔다.)

리눅스에서 일부 nvidia VGA 팬 속도 이상 LINUX

올 초였나 한동안 업무가 바뀌어서 방치되고 있던 리눅스를 다시 구동시켜 업데이트를 하고 나니 엄청 시끄러워졌다.
찾아보니 VGA쿨링팬이 미친듯이 돌아가고 있었다. 이게 나름 잘 되던게 최신 nouveau 드라이버 (리눅스에서 사용하는 nvidia 계열용 오픈소스 드라이버)에 버그가 생긴 것인지 쿨링팬 속도 조절이 안 되고 항상 최고속도로 돌아가게 되 버린 것이다.

여러 군데 삽질 끝에 찾아낸 것이 하나 있는데, 일단 임시방편으로 간단히 쓸 수 있는 것은 루트 계정으로 들어가서
# echo 45 > /sys/devices/pci0000\:00/0000\:00\:01.0/0000\:01\:00.0/hwmon/hwmon0/pwm1

식으로 팬 속도를 강제 지정하는 것이었다. (VGA가 설치된 슬롯 위치 같은 것에 따라서 파일명이 약간 다를 수도 있다)
그런데 이게 젠투에서는 되는데, CentOS6에서는 안 되는 것이다. 좀 찾아보니 (100% 장담할 수는 없지만) CentOS가 커널과 드라이버 같은 것의 버전이 낮은 것이라서 지정하는 기능이 없는 것으로 보인다. - 그래서 CentOS는 아직 해결을 못 했다.

Gentoo기준으로 다시 쓰자면 위에 쓴 것은 부팅하고 매번 새로 해 줘야하는 것이라 불편하다. 자동으로 하려면 sys-apps/lm_sensors 패키지를 설치하고, 해당 패키지에 들어있는 프로그램인 pwmconfig로 적절히 설정은 한 다음 (그러면 프로그램인 /etc/fancontrol 파일을 알아서 생성해 줄 것이다. )
fancontrol서비스를 활성화시키는 것이다. 현재 gentoo가 사용하는 systemd 기반으로 쓰자면 아래와 같다. 실제 작업을 하고 나서 한참후에 글을 쓰는 것이라 세부 방법을 까먹었다. ㅜㅜ 어쨌든 결과 파일은 아래와 같다.

/etc/fancontrol
# Configuration file generated by pwmconfig, changes will be lost
INTERVAL=10
DEVPATH=hwmon0=devices/pci0000:00/0000:00:01.0/0000:01:00.0
DEVNAME=hwmon0=nouveau
FCTEMPS=hwmon0/pwm1=hwmon0/temp1_input
FCFANS=hwmon0/pwm1=
MINTEMP=hwmon0/pwm1=30
MAXTEMP=hwmon0/pwm1=90
MINSTART=hwmon0/pwm1=44
MINSTOP=hwmon0/pwm1=30
MINPWM=hwmon0/pwm1=30
MAXPWM=hwmon0/pwm1=53

그리고 systemd에서 fancontrol을 활성화시키는 것은
# systemctl enable fancontrol

참 쉽죠?

1 2 3 4 5 6 7 8 9 10 다음



메모장

W 위젯