'분류 전체보기'에 해당하는 글 655건

ubuntu 12.04 의 resolv.conf 가 비었어요.

설치하고 나니 서버 내부에서 밖으로 연결이 안된다.
외부에서 서버로 되는게 이상하다.

암튼. 찾아보니 /etc/resolv.conf 가 비어있다.
친절한 메시지와 함께.

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

요약하면, resolvconf 가 먼저 접수했다. 만지지마!!
암튼. resolv.conf 를 건드리는 패키지가 dhcp client 였나 그게 그랬던것 같다.


직접 수정해도 되지만, 재부팅하면 다시 비워져 있을 것이다.

/run/resolvconf/resolv.conf  에 심볼릭 링크되어 있다.
resolvconf 패키지가 부팅하면서 저 파일을 생성하고, symlink 시킨다.

부팅해도 설정 안 바뀌게 하려면.

/etc/resolvconf/ 이 폴더에 뭐가 있지 않을까?

cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

어! 여기에 같은 내용이 들어 있네.

저기에 넣으면 부팅할때 그대로 있지 않을까? 해보자.

nameserver 8.8.8.8
nameserver 164.124.101.2

등 넣고 싶은 네임서버를 넣어준다.

그리고 재부팅해볼까?
싫어 명색이 서버인데, 재부팅은

그냥

# service resolvconf restart

또는 /etc/init.d/resolvconf restart


역시 예상대로 /etc/resolv.conf 가 head 에 넣은대로 되었다.

다른파일도 있는데, head , base 이렇게 있다.
말뜻이 뭔가 구분을 한것 같은데, head 가 아니라 base 에 넣어야 할 것 같아서 바꿔서 넣었다.

좀더 찾아보니.
http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

대충 읽어보니 head 에 넣는게 맞는 것 같다. 제일 먼저 찾게 만들려면.



언제 부터 바뀌었는지 모르겠지만, ubuntu 12.04 는 저렇게 되어 있군.
뭔가 심오한 뜻이 있는 것인가?

보통 저 패키지를 지우는 방법을 쓰기는 한다.(마치 centos/redhat 쪽의 selinux 를 끄는 것 처럼)

그래도 배포판이 지지하는 방법을 따라주는 것이 좋지 않을까?
(근데 좀 이유좀 알려줘 - 링크 정도는 하나 던져줘도 되잖아?)


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,


구글 크롬 주소창에서 검색시 바로 구글검색이 되어서 편하다.

그런데, 언제 부터인가, 

http://www.google.co.kr/blank.html#hl=ko&newwindow=1&output=search&sclient=psy-ab .........

이런 주소로 넘어가고 빈화면만 나온다.


구글 크롬 설정

기본설정 -> 검색 -> 검색엔진 관리 -> 기본검색옵션

구글 항목에  다음처럼 되어있음.

{google:baseURL}search?{google:RLZ}{google:acceptedSuggestion}{google:originalQueryForSuggestion}{google:searchFieldtrialParameter}{google:instantFieldTrialGroupParameter}sourceid=chrome&ie={inputEncoding}&q=%s


저 값을 복사해서 기타 검색엔진에 추가해준다.

앞부분인 {google:baseURL}search  를  http://www.google.co.kr/search  이렇게 직접 바꿔준다.

추가한 검색엔진을 기본검색엔진으로 설정한다.




반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

php extension , memcache 와 memcached 의 차이점은 뭐지?

php 에서 memcached 데몬을 사용하기 위해서는 php 확장이 필요하다.

pecl 패키지로 설치하게 되는데, 두가지 버전이 있다.

http://pecl.php.net/package/memcache ( stable : 2.2.6 - 2010/10/03 , beta : 3.0.6 - 2011/04/11)
http://pecl.php.net/package/memcached ( stable : 2.0.1 - 2012/03/03 )


memcache 와 memcached 의 차이점은 뭔가?


memcached 는 memcached 데몬에 딸려오는(?) libmemcached 를 활용한다.

memcache 는 직접 처리하는 것 같다.

그래서,   http://us3.php.net/manual/en/book.memcache.php
보다  http://us3.php.net/manual/en/book.memcached.php

가 기능이 더 많다. libmemcached 의 전체 기능을 쓸 수 있기 때문이다.(memcache 는 직접 구현해야 한다)


php 버전 지원차이는

memcache 는 이전 버전 php 4.3.11 이상
memcached 는 php 5.2 이상

즉, 이전버전 php4 를 쓰면 어쩔 수 없이 memcache 를 써야 한다.
(우리 모두 php5 이상으로 업그레이드 하자. 현실은 ㅜㅜ)



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

불법사찰 저지른 이명박 정부는 책임져라

이 블로그는 정치적인 글을 쓰지 않으려했다.

그러나, 지금의 시국은 국가가 잘못된 지도자에 의해 얼마나 추락할 수 있는지 보여주고 있다.

이명박 정부는 불법사찰에 대한 명확한 사실관계를 밝히고, 연루된 자들을 처벌하라.

그리고 모든 부분에 책임을 면할 수 없는 이명박대통령은 즉각사퇴하라.

스스로 물러나지 않으면, 개처럼 끌려내려올 것이다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
ssh 원격 실행을 하고 싶을때
  ssh {host} {명령}
이런식으로 해주면 된다.

그런데, 불편한 메시지가 나온다. 
  Pseudo-terminal will not be allocated because stdin is not a terminal

항상 나오는 것은 아니고, 단일명령을 주면 나오지 않는다.
command.sh 에 실행명령을 작성하고,  ssh {host} < command.sh  형식으로 할때 메시지가 나온다.

그런경우  ssh -t -t (두번)  옵션을 주어 실행하면 된다.

근데, 실행명령이 다 보인다. 

이때는 ssh -T 옵션을 준다.

그런데, 또 불편한 메시지가 보인다.
   TERM environment variable not set.

 ssh 실행시 해당 TERM 환경변수가 설정되지 않아서 그렇다.
타겟서버의 .ssh/environment 파일에(보통 파일이 없다. 그래서 새로 만들고)
  BASH_ENV=.profile
을 추가해준다. (경우에 따라서 .profile 을 .bash_profile 로 변경)

또는 그냥 간단하게, 명령셋에 다음을 추가해준다.
  export TERM=xterm
 
좀 이상하다. 나오다가 지금은 또 안나오네.(TERM ..)
 

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
마스터는 mysql 5.0.77  이고,  슬레이브는 mysql 5.5.19 이다.
잘될까? 지금 테스트 중이다.

1. mysql 5.5.x 에서 slave 설정시 다른점?
mysql 5.5.19 에서 my.cnf 쪽 설정이 조금 다른것 빼고는 잘 작동하는 듯 하다.
예전글 http://blog.1day1.org/454 과 큰차이는 없는데.
버전업이 되서 그런지, 뭔가 바뀐것인지
master-host             = master
master-user             = replication
master-password     = slave
다음과 같은 옵션이 먹지 않는다.
이런 메시지가 나오면서, 5.5 자체이거나 해당 패키지에서 해당 옵셥이 빠진듯 하다.
/usr/libexec/mysqld: unknown variable 'master-user=replication'

대신에, mysql 콘솔에서 직접
CHANGE MASTER TO MASTER_HOST='master', MASTER_USER='replication', MASTER_PASSWORD='slave';
이렇게 해주면 된다. (안되는 이유는 좀더 알아봐야 겠다)



2. master 데이터 slave 로 복제.

slave 를 하나더 만들고 싶어서 복제 세팅을 한다.
그리고 데이터를 복제하려한다.

# master 쪽 : 데이터 덤프
master 에서 dump 할때 position 을 기록한다.
mysqldump --master-data=2 --databases DB1 DB2 > slave.dump.sql
진한 부분의 옵션이 중요하다. 저 옵션이 있어야, master 로그 포지션이 기록된다.
1 은 명령으로 dump , 2 는 기록은 되는데, 코멘트로 덤프됨( -- CHANGE ... 처럼)
둘중 어느것으로 해도 상관없음.
slave 에서 직접 CHANGE MASTER ... 명령을 내리느냐 restore 시 같이 하느냐 그 차이.

# slave 쪽 : 위치에 맞게 restore.
slave 에서 데이터를 업데이트한후(stop slave; 를 먼저 한 상태) 다음명령으로 위치를 잡아준다
아래 위치는 덤프파일을 앞 부분을 보면 나온다. ( head slave.dump.sql -n 30 정도면 나온다)
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000200', MASTER_LOG_POS=200500;
그리고, start slave;



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

authorized_keys2 를 .ssh 디렉토리에 넣으면 바로 접속이 가능했다.
그런데, centos6 에서는 계속 비번을 물어본다.

다음명령을 내려준다.

restorecon -R -v /root/.ssh

selinux 와 관련있는듯 하다. 버그라고도 하고.(좀더 살펴봐야 겠다)

selinux 를 끄는게 정답인가?


ps. authorized_keys2 의 권한설정 , sshd_config 를 이리저리 설정해봐도 안되는 경우가 바로 저 문제.
  selinux 를 끄는 것이 좀 찜찜하다면 저 방법으로.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
http://blog.1day1.org/429
에서 x11vnc 로 설정하는 부분이 있다.
아래부분처럼 설정하면, shift key 가 안 먹힐것이다.
 server_args = -inetd -o /var/log/x11vnc.log -display :0 -auth /var/lib/gdm/:0.Xauth -many -bg -noxdamage -rfbauth /etc/x11vnc.passwd
 
다음처럼 바꿔주면 된다.
 server_args = -inetd -o /var/log/x11vnc.log -display :0 -auth /var/lib/gdm/:0.Xauth -xkb -repeat -many -bg -noxdamage -rfbauth /etc/x11vnc.passwd

-xkb 옵션을 넣으면 shift key 가 먹힐 것이다. 그리고, -repeat 옵션도 추가되었는데.
키보드의 키를 누르고 있으면 반복입력되는데, 기본옵션이 -norepeat 라서  반복입력이 되지 않는다.
반복입력이 필요하면 -repeat 옵션을 넣어준다.


설정후 이런 메시지가 /var/log/x11vnc.log 쪽에 남으면서 안되는 경우가 있다.

vnc 를 띄울 적절한 X display 를 찾지 못했다. 접속할 권한? 대략 그런의미.(정확한 이해를 아직 ...)
윈도우매니저 별로 차이가 있다.  gdm , kdm , ubuntu 11.04 부터인가 바뀐 unity 도 좀 다르다. 
 
-auth /var/lib/gdm/:0.Xauth 부분이 안되는 경우이다.

ps wwwwaux | grep auth
로 넣어야 하는 값을 찾을 수 있다. 
또는 x11vnc -findauth 로 찾아본다.

 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
우분투 11.04 를 사용하는데, grub 메뉴를 숨기는게 잘 안된다.

부팅시 grub 메뉴를 숨길때

예전 grub 에서는 /boot/grub/menu.lst 에서
hiddenmenu
를 넣어주면 되었었다.

그런데, grub2 에서는 설정이 좀 복잡하게(체계적으로?) 바뀌었다.

사용자가 만질 부분은  /etc/default/grub 에서 만져준다.
그리고, update-grub 명령으로   /boot/grub/grub.cfg 파일을 생성해준다.

/etc/default/grub 에서 
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
이렇게 해주면 되었던것 같은데, 잘 안될때가 있다.
 
버그인가?
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/444495
http://ubuntuforums.org/showthread.php?t=1287602

공식(?) 환경변수가 아닌 별도로 만들어서 처리해주었다.
GRUB_FORCE_HIDDEN=true
export GRUB_FORCE_HIDDEN
를 /etc/default/grub 에 추가한다.

저 변수를 처리해주는 곳은
/etc/grub.d/30_os-prober 를 수정해준다.
if [ "x${found_other_os}" = "x" ] ; then
를 다음처럼 바꿔줬다.
if [ "x${found_other_os}" = "x" ] || [ "x${GRUB_FORCE_HIDDEN}" = "xtrue" ] ; then

일단 동작은 하는 듯 한데, 좀더 손을 봐야 겠다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
웹개발자라면 필수로 알아야 하는 javascript.
jquery 등의 프레임웍이 있어서 참 편해졌다.

가끔 필요한 소스를 보려고 할때 minified 된 소스들이 있다.
http://jsbeautifier.org/
에서 decoding? unminified 할 수 있다.

소스는 참고만 하자.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
fsockopen 을 쓰는 API 의 라이브러리를 사용하다가 이런 메세지를 만나게 되었다.

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in ....

php.ini 의 allow_call_time_pass_reference  부분을 고치느냐.
API 라이브러리를 고치느냐.

10초 고민하다가, fsockopen 에서 value 를 받는 방식으로 바꿨다.
(fsockopen 에서 reference 로 받아야 하는 이유가 있나?)

 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
요즘 jquery 가 대세인듯 하다. js 프레임웍의 편리함을 한번 맛보면 벗어날 수 없다.

우선 결론을 말하면 "IE 야! 제발 쫌" 버그라고 말해야 겠다.
다양하게 확인을 하지는 않았지만, IE9 는 제대로 동작을 하는 듯 하다.
IE8 포함 이전버전에서는 오동작을 한다.
jquery 새버전에서는 될지도 모르겠다. jquery 테스트 버전은 1.4.2 이다.

보통 이런식으로 처리한다.
<input type=text name='phone' onchange='check_phone_number();'>
  
jquery 에서 이런식으로 처리할 수 있다. html 과 js 코드를 분리하기 위해 자주 사용하게 된다.
$(document).ready(function(){
  $('input[name=phone]').change(function(){
     check_phone_number();
  });
}); 

그런데, 저렇게 처리하면 IE 에서 이상하게 동작한다는 것을 느낄 것이다.
text 입력창에 값을 입력하고 out focus 되면 onchange 이벤트가 발생해야 하는데, 발생하지 않는다.
input 태그에 직접 onchange 를 쓴경우 정상적으로 발생하는데, jquery 의 ready 를 사용하면 안된다.
한번 focus 되고 나서, 다시 해볼때는 정상적으로 된다.

오! IE 야 제발.

이를 해결하기 위해 일부러 focus 이벤트를 발생해 주어야 한다.

다음처럼 추가해준다.(ready 안에)
if( $.browser.msie ) {
  $('input:text').click(function(){
    this.blur();
    this.focus();
  });
}

IE 브라우저인 경우 click 시 blur , focus 이벤트를 발생시켜준다.
그러면 바로 change 이벤트가 같이 발생하여 정상적으로 보인다.

더 좋은 방법이 있는지 모르겠지만, 이와 같이 해결했다.

 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
우체국에서 우편번호 조회 API 를 제공하고 있다.
http://biz.epost.go.kr/eportal/custom/custom_10.jsp?subGubun=sub_4&subGubun_1=cum_20  

php 에서 사용하다보면 잘 안 될 것이다. 인코딩을 utf-8, euc-kr 등으로 바꿔봐도 안될 것이다.

문제는 한글 검색시 헤더값에 accept-language: ko 값을 넘겨줘야 한다.
(우체국 openAPI 에서 저 값을 확인하는 듯 하다.)
$api_key = "우체국에서 받은 API KEY";
$epost_url = "http://biz.epost.go.kr/KpostPortal/openapi?regkey=$api_key&target=post&query=을지로3가"; 
 
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: ko\r\n" 
  )
);

$context = stream_context_create($opts);

$fp = file_get_contents($epost_url , false, $context);
이런식으로 하면 되는데, php 버전 5.0.x 이상에서 사용가능하다.(file_get_contents 에서 context 사용)

php 버전 5.0.x 이하 버전인 경우, curl 이나, fsockopen 을 사용한다.

fsockopen 으로 열고, 
fputs($fp, "Accept-language: ko\r\n");
처럼 헤더를 넘겨준다.

curl 에서는
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-language: ko") ); 
처럼 헤더를 넘겨준다.
 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
얼마전 우분투 11.04 가 출시되었다.
그런데, 개인적으로 바로 업그레이드 하지 않고 있다.(좀 말이 많은 버전이다. unity 등)
좀더 상황을 지켜보기로 했다.


ubuntu 버전에서 firefox 4 를 설치하고자 한다. (우분투 공식? 버전은 3.5 또는 3.6 일 것이다)

PPA 저장소를 추가해서 설치한다.

# add-apt-repository ppa:mozillateam/firefox-stable
명령으로 저장소를 추가한다.
# apt-get update
# apt-get upgrade
로 업그레이드 한다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
nginx 와 php-fpm 을 설치하고, tomcat 을 연동해서
php 와 jsp(spring,ibatis) 를 구동하기 위한 작업을 하고자 한다.

tomcat 설치는 생략. (centos 에서 패키지로 설치하는 방법을 사용했다.)
방법은 이곳을 참조
http://wavded.tumblr.com/post/258713913/installing-tomcat-6-on-centos-5
http://www.how2centos.com/installing-tomcat-6-on-centos-5-5-tutorial/
설치한 후에는 tomcat 구동설정.

주의 : java(jsp) 쪽은 잘 몰라 용어,설명에 오류가 있을 수 있으니 알아서 해석하세요.

1. invoker 주석해제.(서블릿 자동호출?)
  tomcat 기본 샘플,예제는 잘 돌아가는데, 본인이 만든 예제가 안된다면 아마도 invoker 설정이 되어 있을 것이다.   /etc/tomcat6/web.xml 을 열어서 2곳의 주석을 해제.
이 부분과
    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
이 부분이다.
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
 이렇게 했는데 안되면.
context.xml 을 열면
그냥 <Context> 로 되어 있는데, <Context reloadable="true" privileged="true"> 이렇게 바꿔준다.

localhost:8080 으로 정상구동되는지 확인한다.
여기까지 되면 tomcat 쪽은 완료된것이다.

2. nginx 에서 php/static html 이외에는 모두 톰캣으로 넘기기

tomcat 을 연동할 부분은 다음과 같다.
이런식으로 server 설정한 부분에 추가해준다(php 등의 설정한 곳.)
    location / {
        try_files $uri $uri/ @tomcat;
    }

    location @tomcat {
        proxy_pass      http://localhost:8080;
    }
이렇게 설정하면 php 파일이외의 모든 접속은 톰캣에서 처리하게 된다.

이때 CI(Codeigniter) 등을 쓴다면, 따로 설정해 준다.
내 경우는 CI 로 된 어플을 각 CI_forum , KI_Board 폴더에 넣은 경우이다.
    location /CI_forum/ {
        try_files $uri $uri/ $uri/index.html @ciforum;
    }
    location /KI_Board/ {
        try_files $uri $uri/ $uri/index.html @kiboard;
    }

    location @ciforum {
        rewrite ^/CI_forum/(.+)$ /CI_forum/index.php/$1 last;
    }
    location @kiboard {
        rewrite ^/KI_Board/(.+)$ /KI_Board/index.php/$1 last;
    }
위 설정은 최적의 설정이 아닐 수 있으니, 참조 정도로만 쓰길 바람.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
nginx 는 보통 다음과 같은 설정을 사용한다
location ~ \.php$ {
    #fastcgi_pass  127.0.0.1:9000;
    fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    include        fastcgi_params;
}
이때 보안 문제가 생긴다.

aaa.com/bad.hack/bbb.php  이런식으로 비정상적인 접근이 허용된다.
이를 막기 위해 설정을 변경해줘야 한다.

참조 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=73442
/etc/nginx/fastcgi_params 파일에 다음을 추가한다.
set $fastcgi_script_realname $fastcgi_script_name;
if ( $fastcgi_script_name ~ ^(.*\.php)(/.*)$ ) {
    set $fastcgi_script_realname $1;
    set $path_info $2;
}
if (!-f $document_root$fastcgi_script_realname) {
    return 404;
}

또는 /etc/php.ini  설정을 바꿔준다.
cgi.fix_pathinfo=0
nginx 에서 php-fpm 으로 넘기기전에 막아주는 것이 좋을 듯 하니 첫번째 방법이 좋을 듯 하다.


참조 : CI 에서는 다음처럼 rewrite 룰을 적용했다.
if (!-f $request_filename) {
    rewrite ^/CI_forum/(.+)$ /CI_forum/index.php/$1 last;
}
CI 를 설치한 폴더에 따라 변형해서 사용하면 된다.



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
bind 에서는 nsupdate 로 zone 파일을 동적으로 변경할 수 있다.
ddns , dynamic dns 라고 한다.

1. 키값 만들기
 아무나 변경하면 안되니까, 보안을 위해 키값을 만든다.
 dnssec-keygen -a HMAC-MD5 -b 512 -n USER  mail.domain.com.
USER 대신에 ZONE , HOST 등으로 할 수 있다.
    -n <nametype>: ZONE | HOST | ENTITY | USER | OTHER
         (DNSKEY generation defaults to ZONE)
각각의 정확한 의미는?

위 명령을 내리면
Kmail.domain.com.+157+43746.key
Kmail.domain.com.+157+43746.private
두개의 파일이 생긴다. 보안키에서 흔히 볼 수 있는 public key , private key 라고 보면 된다.

2. named.conf 설정바꾸기.
  centos / chroot named 에서는  설정파일은
 /var/named/chroot/etc 에 있다.
rndc.key 에 다음을 추가한다. 별도 파일을 만들고 include 시켜도 된다.
key "mail.domain.com." {
   algorithm  hmac-md5;
   secret     "wTd1YkCIdFtpa4ncsdfsdfwMiGB789p8xR1fixWqDAW8fO9urKmdbalkjdsklfjAQqPA==";
};
Kmail.domain.com.+157+43746.key  값의 뒤 부분을 복사해서 넣으면 된다.
( 설정의 }; -> ; 를 빼먹지 않게 주의한다. )

 그리고, 변경하려는 도메인의 zone 을 업데이트 허용해야 한다.
zone "domain.com" {
  type master;
  file "domain.com.zone";
  allow-update { key "mail.domain.com."; };
};
위와 같이 allow-update 에 key "keyname" 형태로 넣어준다.

여기까지 하면 기본 준비는 끝난다.  named 재시작.

3. 외부에서 nsupdate 로 zone 변경해보기.

생성한 키쌍에서 private 키를 외부에 복사한다(로컬에서도 해도 되지만, 외부에서 해보자)
그리고 다음 명령으로 접속해 변경할 수 있다.
nsupdate -v -k Kmail.domain.com.+157+43746.private
접속하면 다음 처럼.
> server ns.domain.com
> zone domain.com
> update add some.domain.com. 86400 A 192.168.10.10
> show
> send
위 명령들을 파일로 만들어서 일괄처리할 수 있다.

DDNS 는 IP 가 동적으로 변경하는 환경 또는 서버의 Failover 처리등을 위해 사용하면 편리하다.
nsupdate 로 변경된 zone 파일은 직접 수정하지 않는것이 좋다.
named 에서 {zone file}.jnl 에 해당하는 임시파일을 만들고 추후 실제 zone 파일을 업데이트하기 때문에
zone 파일을 직접수정하면 수정한 부분이 사라질 수 있다.
직접 수정하려면 다음 방법중 하나를 사용한다.
# 방법1 - 9.3 이전버전
        rndc stop
        remove the journal file (.jnl)
        edit the zone
        start named
# 방법2 - 새버전 9.3
        rndc freeze zone
        edit the zone
        rndc unfreeze zone


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
mysql 리플리케이션 설정은 어렵지 않군.
장애대응이 어려운것 같다.

# 기본 mysql replication 설정.(마스터-슬레이브)
1. mysql config 설정
  master , slave 각각 config 파일에 replication 설정을 해준다.
  우분투의 경우  /etc/mysql/conf.d 에 replication_slave.cnf (파일명은 임의로 )
  /etc/mysql/my.cnf 의 마지막줄에 이렇게 되어 있어서 불러오게 된다
!includedir  /etc/mysql/conf.d/
 my.cnf 의 [mysqld] 탭에 직접추가해줘도 된다.

내용은 이런식이다. (슬레이브쪽)
[mysqld]
server-id               = 2
master-host             = master
master-user             = replication
master-password     = slave
replicate-do-db         = master_db
replicate-do-db         = other_db
마스터쪽은 다음과 같다.
[mysqld]
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = master_db
binlog_do_db            = other_db
binlog_ignore_db        = mysql
binlog_ignore_db        = information_schema
설정만 보면 이해할 수 있을 것이다.
binlog_do_db 등을 각자의 서버설정에 맞게 바꾸어 주면 된다.

2. replication 접근 권한설정
 replication 은 slave 쪽에서 master 의 자료(bin_log)를 참조해서 데이터를 가져가는 것이다.
 그래서 슬레이브쪽에서 마스터에 접근할 수 있어야 한다.

 그 명령은 다음과 같다.(마스터쪽에서 mysql 명령을 내려준다)
mysql> grant replication slave on *.* to 'replication'@192.168.0.1 identified by 'slave';
진한부분이 conf 에서 설정한 master-user / master-host / master-password 에 해당한다.
IP 주소대신 /etc/hosts 에 설정한 호스트명을 적어줘도 된다. ( master-host = master  같은..)

3. 사용 및 장애대응
작동 중지/실행
start slave ;
stop slave ;
슬레이브 상태 보기
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: master
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000018
          Read_Master_Log_Pos: 958292
               Relay_Log_File: slave-relay-bin.000271
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000018
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: master_db
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 958292
              Relay_Log_Space: 556
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)
마스터의 상태를 보려면
mysql> show master status\G
*************************** 1. row ***************************
            File: mysql-bin.000018
        Position: 958292
    Binlog_Do_DB: master_db
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
진하게 표시한 position 이 일치하는지 확인하면 된다.

slave 의 position 값이 일치하지 않는경우.
다음처럼 해준다.
mysql > stop slave;
mysql > reset slave;
mysql > start slave;
cron 등으로 주기적으로 확인해주도록 한다.




다음에는  master-master 설정 과 mysql proxy

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
2012-09-24
epel 패키지 주소가 바뀌었다.(언제인지 모르겠지만) - 기존 주소가 사라진듯.
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
(날짜를 보니 바뀌었다기 보다. 아래 주소가 사라진듯)


2011년 12월 19일
remi 패키지를 이용하는 방법

http://www.if-not-true-then-false.com/2011/install-nginx-php-fpm-on-fedora-centos-red-hat-rhel/

Centos 5 를 기준으로 설명(다른 버전은 위 링크를 참조)

## Remi Dependency on CentOS 5 and Red Hat (RHEL) 5 ##
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
 
## CentOS 5 and Red Hat (RHEL) 5 ##
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
Epel 과 remi  저장소를 이용한다.

nginx 는 nginx.org 에서 패키지를 제공하는 것 같다.
다음처럼 nginx.org 쪽으로 저장소 지정 (/etc/yum.repos.d/nginx.repo )
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

nginx , php-fpm 그외 php 모듈등을 설치한다.
yum --enablerepo=remi install  nginx php-fpm php-mysql php-gd php php-pear
php-mysql 때문에 mysql-libs 가 설치되는데, mysql 5.5.19 버전에 의존성이 있다.
기존 centos5 는 5.0.77 이다. 기본패키지를 쓰면서, remi 패키지를 사용하는 방법이 있을 듯 한데.
그냥 mysql 5.5.19 로 설치했다.
yum --enablerepo=remi install mysql mysql-server
의존성 에러가 발생하면 재설치 해주면 된다.
데이터가 없다면 /var/lib/mysql 을 삭제하고 설치해주는 것이 좋다.




[그냥 잡다한 정리]
핵심은 centos 에서 epel,ius repository 를 등록하고, php53u-fpm , php53u-pecl-apc 를 설치한다.
그외 추가 패키지는 알아서 설치 - php53u-mysql 같은...
상세한 설명은 생략.


nginx 를 설치하는 방법. 컴파일, 패키지


# 새 방법  ius 의 패키지 사용법 - 현 작동중지



# 컴파일
최신 버전에 좋다.
http://blog.sor.co.kr/32
  spawn-fcgi
http://starforum.kr/336
http://interfacelab.com/nginx-php-fpm-apc-awesome/

http://adityo.blog.binusian.org/?p=428

# php 를 사용하는 방법
spawn-fcgi 예전방식 - 컴파일이 필요없다. 간단함.
최근은 php-fpm 방식 - php 최신버전은 컴파일 필요없음. 그외에는 컴파일 필요.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
sysmon 이 공식지원하는 버전은 python 2.4 인 것 같다.
그런데, 2.5 까지도 무난하게 동작하는 듯 하다.

ubuntu 10.04 LTS 버전을 사용하는데, 깔려 있는 버전이 python 2.6 이다.
처음에 동작을 안하기에 python 2.5 로 다운그레이드해서 시도했는데, 문제가 더 커졌다.
그래서 그냥 2.6 에서 동작하도록 sysmon 소스를 수정하기로 했다.

설치후에 CheckDaemon , SysmonDaemon , SysmonAgent 를 마스터와 각 호스트에서 동작시키는 부분에서 각 소스를 조금수정하면 된다.(처음에는 많을 줄 알았는데, 그리 많지 않다.)
세개의 파일만 고치면 된다.

./SysmonDaemon 을 실해시켰을때,
DeprecationWarning: the sets module is deprecated
이런 메세지가 나온다.
22번줄정도에
from sets import Set
이 부분을
try:
    set
except NameError:
    from sets import Set as set
으로 바꿔준다.  그리고, "Set(" 으로 검색해서 소문자 "set(" 으로 바꿔준다. (2군데 정도 나온다.)

그리고 세 파일에 공통적용되는 부분. centos 에서는 정상작동할 것이니 패스.
pgrep 으로 검색해보면  pgrep -l -f 'python.*SysmonDaemon'  같은 부분이 나온다.
(몇군데 있으니 모두 바꿔준다. 각 파일마다 1,2개정도)
저 항목이 해당프로세스의 PID 만 나와야 하는데, 우분투에서는
12178 python SysmonDaemon
이런식으로 프로세스명도 같이 나온다. -x 옵션을 넣어준다.



이걸로 끝이다. 그 부분만 고치면 python 2.6 에서도 무리없이 동작한다.


ps. sysmon 이 네이버오픈소스로 공개하고나서 업데이트를 별로 안한다.
  네이버 내부에서는 많이 개선이 되었을 듯 한데...(아닌가?)

sysmon 을 보다보니, 같이 공개한 dist 도 같이 사용하는게 편하다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
추가: python 2.5 로 다운그레이드해서 쓰니 다른문제들이 더 많다.
  python 2.6 에서 작동하도록 수정하는 것이 더 쉽다.
  python 2.6 에서 sysmon 사용하는 것은 따로 포스팅 예정.


sysmon 으로 서버모니터링을 해볼까 테스트하는데.
ubuntu 10.04 에서 python 2.6 이 깔려있는데, sysmon 이 오류를 뿜어낸다.
2.5 로 다운그레이드를 해야 겠다.

이미 시도한 분들이 있다.
http://yoophi.sshel.com/wp/?p=164
http://kovshenin.com/archives/installing-python-2-5-on-ubuntu-linux-10-10/

$ sudo add-apt-repository ppa:fkrull/deadsnakes
$ sudo apt-get update
$ sudo apt-get install python2.5
add-apt-repository 명령이 없다면, 아래 명령으로 패키지를 설치해주면된다.
sudo apt-get install python-software-properties


launchpad 의 패키지를 사용하는 방법.
첫줄을 수동으로 할려면 /etc/apt/sources.list 에 다음줄을 넣어준다.
deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main
deb-src http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main

sysmon 이 잘 작동해야 할텐데. 근데, sysmon 설명이 참 부실하다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
웹카메라를 가지고 놀다 보니. 어떤 캠에서는 LED 가 계속 켜져 있는 상태가 되기도 한다. 볼륨조절하듯 조절가능한 것도 있기는 한데, 안되는 황당한 놈들이 있다.

생각으로는 usb port 별로 전원컨트롤 할 수 있는 방법이 있지 않을까 찾아보았다.
비슷한 것들이 있기는 한데, 완전히 차단시키지는 못하는 듯 하다.
root@ubuntu:/sys/bus/usb# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0ac8:3332 Z-Star Microelectronics Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@ubuntu:/sys/bus/usb# echo suspend > devices/2-2/power/level
root@ubuntu:/sys/bus/usb# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@ubuntu:/sys/bus/usb# echo on > devices/2-2/power/level
root@ubuntu:/sys/bus/usb# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0ac8:3332 Z-Star Microelectronics Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@ubuntu:/sys/bus/usb#
위와 같이
echo suspend > /sys/bus/usb/devices/{device usb port}/power/level

처럼 값을 주면 usb 장치가 사라졌다 on 하면 다시 보인다.
 
그런데, 그것이 완전히 전원을 차단하는 것은 아니다. 작동상태정도만 조절하는 듯 하다.(메인 보드 마다 다를 수 있을지는 모르겠다)

또 다른 방법도 있다고 하는데.
echo "0" > /sys/bus/usb/devices/{device usb port}/power/state
다음과 같은 에러가 난다.
bash: devices/2-2/power/state: No such file or directory
가상장치같은 개념이라 없는 파일(state)을 만들 수는 없나 보다.


망할LED 계속 켜져있는 웹캠은 쓰지 말아야 겠다. 다른곳에서나 써야겠다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
그동안 KBS 수신료를 내지 않고 있었다. 왜. 낼 이유가 없으니까?
지금까지 세금처럼 전기요금에 끼워서 수신료를 거둬가고 있었다.
신고하지 않으면 TV 가 없는 가정집도 꼬박꼬박 내야 한다.

그런 더러운 짓거리를 아주 자연스럽게 하고 있다.

2009 년이었나. 한전홈페이지에서 TV보유대수를 없애서 내지 않고 있었다.
이렇게. 바꾸주면 되었었다.


그런데, 2010년말경 11월이던가, KBS 가 수신료를 1000원인상해서 3500 원 받는다고 한때 이슈가 되었었다. 그 즈음 슬쩍 TV 보유대수 부분을 바꿔놨다.
잘 보면 증가만 되고, 감소는 전화로 하게 만들어 놨다.

게다가 이미 내고 있지 않던 수신료를 한전 전기요금 고지서에는 TV수신료를 끼워넣었다.
아무런 고지 없이...
자동이체를 하고 있어서 지금에서야 살펴보고 알았다.
2010년 10월에는 TV대수가 0 으로 나오고 수신료 항목은 없다.

그러다가.
2010년 11월에는 바뀌어 있었다. 아무런 고지없이.
참 절묘하지 않은가? 수신료 인상 이슈가 나오던 2010년 11월에 바뀌었다.
그런데, 아직 인상을 하고 있지 않으니, 1000원 올리는게 너무 적다고 생각하는 것인가?

아무튼 전화해서 한바탕 싸워야 겠다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
웹캠이 노는게 있어서 2개를 연결해서 테스트 해봤다.

모델은
Samsung Electro-Mechanics Co. MPC-C30 AnyCam Premium for Notebooks [pwc]
OmniVision Technologies, Inc. OV511+ Webcam
Z-Star Microelectronics Corp. ZC0301 Webcam

현재 쓰고 있는 모델은 마지막 ZC0301
모듈은 gspca_zc3xx 를 올려서 사용한다.(자동으로 모듈이 올라온다)
OV511 은 gspca_ov519 를 사용한다.
MPC-C30 은 pwc 라는 것을 사용하는데, 드라이버가 잘 안 맞는지 작동하지 않는다.

OV511 은 Cheese 로 연결해서 보면 잘 나온다.
그런데, motion 쪽에 연결하면 motion 이 segfault 를 내뱉으며 죽는다.


그래서 최근에 구매한 놈을 연결하기로 했다.
연결하니  Sirius USB2.0 Camera 라는 놈인것 같다.
이것은 UVC 연결을 지원한다.  드라이버도 uvcvideo 모듈이 올라온다.
치즈도 잘되고 motion 에서도 잘 연결되어 작동한다.

카메라 두개를 motion 에서 사용하려면
/etc/motion/motion.conf 에서 마지막 부분의 주석처리를 빼주고 적당한 경로로 바꿔준다
thread /etc/motion/thread1.conf
thread /etc/motion/thread2.conf
이런 부분이 있다. thread1 이 첫번째 카메라, thread2 는 두번째 카메라 의 설정이 된다.
threadN.conf 파일을 주석빼고 보면
cat thread1.conf | grep -v '#'
이런 내용이다.
videodevice /dev/video0
input 8
text_left CAMERA 1
target_dir /tmp/motion1
webcam_port 8081

;on_picture_save /usr/local/motion-extras/camparse1.pl
;on_movie_end /usr/local/motion-extras/mpegparse1.pl
카메라가 인식되면  /dev/video0 , video1 으로 장치드라이버가 생기게 된다.
각 thread1,2 에 각각 장치드라이버를 적어주다.
input 8 은 기본 usb 카메라일때를 말하는 듯(주석설명에 그렇게.)
target_dir 은 움직임이 포착되면 이미지로 저장이 되는데 그 저장위치를 지정한다.
webcam_port 는 웹브라우저로 카메라 영상을 볼 수 있는 포트를 지정한다.
카메라별로 다르게 포트를 지정해준다.

on_picture_save , on_movie_end  부분은 추후 카메라영상 원격 저장하기에서 다룰 예정이다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
윈도우PC를 FTP 서버로 만들어 주는 filezilla server 를 이용해서
공유기내에서 정상작동하도록 설정해본다.

1. filezilla server 다운로드
http://filezilla-project.org/download.php?type=server

2. 설치후에 server 설정
 User 설정 에서 사용자를 등록하고, Shared Folder 를 설정한다.(자세한 설명은 생략)
  Setting 에서 General settings 에서 기본 포트 21 대신에 다른 포트를 지정해준다.
  보통 ISP 에서 기본 FTP 포트를 막아놓는다.
  예를 들어 2221 포트등을 지정한다. 이 포트는 나중에 공유기 세팅에서 포트포워딩 해줄 것이다.

Passive mode settings 부분에서 Retrieve external IP address from  부분을 체크해준다.(Default 로 해도 되긴하는데 특정 client 에서 접속이 되지만, ftp data port 접속이 안되는 경우가 있다.)
포트범위도 지정해준다. (이 포트 범위를 공유기에서 설정해 줄 것이다.)

여기까지하면 FTP 서버 설정은 끝났다. 로컬에서 접속해보면 이상없이 접속이 되어야 한다. 접속이 안되면 접속port 확인, User 설정, 공유폴더 설정 등을 다시 확인한다.

3. 방화벽 설정 해제.
 윈도우XP SP2 이상에서는 방화벽이 작동한다. 방화벽에서 FTP 접속을 할 수 있도록 FileZilla Server 를 등록해준다.
  제어판 -> Windows 방화벽 -> 예외  항목에서
프로그램 추가 로 FileZilla Server 폴더로 찾아들어가서 FileZilla Server.exe 를 직접등록해준다.
기본으로 나와 있는 FileZilla Server Interface 라는 것을 선택하면 안된다.

여기까지 하면 공유기 내부의 다른PC 에서 접속할 수 있다. 접속이 안된다면 방화벽 설정을 다시 확인한다.

4. 외부 접속 가능하도록 공유기의 포트포워딩 설정.
 공유기관리 접속을 한다. (보통 192.168.0.1 이지만, 공유기 마다 다를수 있으니 매뉴얼참조)

FTP 서버를 설치한 IP 주소와 설정에서 포트범위를 적고 포트포워드 설정을 추가한다. (프로토콜 부분을 tcp ,udp 모두 지정해주는 것이 좋을 듯 하다)
(공유기에 따라 범위지정이 안되고, 하나씩 추가해줘야 하는 경우도 있다.그런경우 범위를 좀 줄여서 설정한다. 20~25 정도)


여기까지 하면 외부접속이 가능해진다. 1,2,3 까지 다 접속이 되는데, 4번에서 안된다면 포트지정이 잘못된 것이다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
구글톡이 윈도우,맥,리눅스 를 모두 지원한다.
우분투에서 구글톡 플러그인을 설치할 수 있다.

1. gmail -> settings -> Chat 에서 두번째 항목
  Voice and video chat 항목을 보면 구글톡 플러그인을 다운받는다.
  직접링크 : http://www.google.com/chat/video?hl=ko 에서 다운받아 설치한다.
  리눅스(우분투)에서는 deb 파일을 다운받아 설치하면 된다.
  dpkg -i google-talkplugin_current_i386.deb
  설치하면 /opt/google/talkplugin 에 설치된다.

2. firefox 를 실행해서 도구 -> 부가기능 -> 플러그인 항목을 보면
  정상적으로 구글 플러그인 에 나와야 한다.

우분투 버전에 따라 다르겠지만, 쓰고 있는 ubuntu 10.04 에서는 정상적으로 나오지 않았다.

이유는 apparmor 때문이다.
/var/log/kern.log 나 message.log 등을 확인해보면
kernel: [77536.598461] type=1503 audit(1295939125.913:24):  operation="open" pid=4565 parent=4561 profile="/usr/lib/firefox-3.6.13/firefox-*bin" requested_mask="::r" denied_mask="::r" fsuid=1000 ouid=0 name="/opt/google/talkplugin/libnpgoogletalk.so"
이런 메세지를 볼 수 있다. 우분투의 보안강화를 위해 적용된 기술인데, 불편하지만 가급적 따라 주는것이 좋다고 본다.

3. /etc/apparmor.d/usr.bin.firefox  파일에 다음을 추가한다.
  # for google talk
  /opt/google/talkplugin/* mr,
  /opt/google/talkplugin/GoogleTalkPlugin Uxr,
  /opt/google/talkplugin/lib/* mr,
  /dev/ati/card0 rw,
  /proc/ati/major r,
   위 3줄은 플러그인을 사용할 수 있는 권한을 추가한 것이다. 그 밑의 ati 나오는 부분은 사운드카드를 사용하기 위한 것인데, 사용자의 보드에 따라 다른 값이 나올 수 있을 듯 하니 kern.log 에 나오는 메세지를 확인해서 추가해준다.

gmail -> settings -> chat 항목에서 비디오,사운드 등을 확인해본다.
실제 영상채팅을 테스트해보진 않았지만, 테스트시 화면과 사운드가 정상적으로 나오는 것 까지 확인했다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

경고 : 이 방법은 정확한 해결책이 아닐 수 있다. 꼭 필요한 경우에만 적용하자.

roundcube 를 쓰면서 좀 불편한 점이 한글메일이 간혹 깨지는 경우였다.
깨지는 경우는 roundcube 가 이상있는 것이 아니라, 보내는 쪽에서 메일의 헤더에 charset 을 지정하지 않은 경우이다. 대부분 메일 규칙을 지키지 않는 아주 불량한 메일이라고 봐도 된다.

그래도 간혹 봐야 하는 경우가 생기니. 정부(관공서)메일에서도 심심찮게 발견된다.
간단하게나마 몇 부분(파일2개)을 수정해서 한글을 볼 수 있게 해보자.

1) config/main.inc.php ( 라인 수는 다를 수 있다. )
497    //$rcmail_config['default_charset'] = 'ISO-8859-1';
498    $rcmail_config['default_charset'] = 'EUC-KR';
기본 ISO-8859-1 으로 지정된 것을 EUC-KR 로 지정했다.(위처럼 주석처리하거나 바꿔준다)

2) program/include/rcube_imap.php
2369 라인 정도 ( _set_part_filename 함수 내 )
if( $part->charset == 'us-ascii' ) $part->charset = 'euc-kr';

 // decode filename
if (!empty($filename_mime)) {
    $part->filename = rcube_imap::decode_mime_string($filename_mime,
    $part->charset ? $part->charset : ($this->struct_charset ? $this->struct_charset :
    rc_detect_encoding($filename_mime, $this->default_charset)));
}
else if (!empty($filename_encoded)) {
    // decode filename according to RFC 2231, Section 4
    if (preg_match("/^([^']*)'[^']*'(.*)$/", $filename_encoded, $fmatches)) {
    $filename_charset = $fmatches[1];
    $filename_encoded = $fmatches[2];
    }
    $part->filename = rcube_charset_convert(urldecode($filename_encoded), $filename_charset);
}


2449 라인 정도.( &get_message_part 함수내 )
if ($body && $o_part->charset
    && preg_match('/^(text|message)$/', $o_part->ctype_primary)
) {
    if( $o_part->charset == 'us-ascii' ) $o_part->charset = 'euc-kr';
    $body = rcube_charset_convert($body, $o_part->charset);
}

imap 으로부터 charset이 지정되지 않으면 us-ascii 로 지정되는데, 이런 것들을 euc-kr 메일로 가정하는 것이다. roundcube 는 내부적으로 UTF-8 로 변환한다.
더 하부적으로 내려가서 바꿔줄수도 있을 듯 한데. 일단 여기까지.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
테이블 구조를 볼때.
보통
mysql> desc {table_name}
이런식이다.

이것도 좋은데.
이게 더 보기 편하다.
mysql> show create table {table_name}\G

http://dev.mysql.com/doc/refman/5.0/en/show-create-table.html
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
지난번 roundcube 0.3 버전 을 설치했었는데, 그동안 버전업그레이드 되었다.

업그레이드 방법을 간단히 정리한다.

1. http://roundcube.net/download
여기서 새버전을 다운로드 한다.

2. 압축을 풀고. 다음 파일,디렉토리들을 복사한다
index.php
bin/
SQL/
installer/
plugins/
program/
skins/

3. 웹메일주소/installer/ 로 접속해서 3단계의 test config 메뉴를 클릭해 설정을 확인한다.
DB 스키마 가 변경되고, 변경된 설정값을 수정한다.
config/ 의 main.inc.php , db.inc.php

DB 스키마는 SQL/mysql.upgrade.sql 을 참조해서 변경한다.
자신의 버전을 확인하고, 그 버전 윗부분은 제거하고
mysql roundcube < mysql.upgrade.sql
등의 명령으로 변경된 DB 스키마를 적용한다.

다시 test config 를 해보면 모두 ok 인 것을 확인한다.


ps. 아직 버전이 0.5 이긴 해도 꽤 완성도가 높다.
 다만 한글관련해서 몇가지 오류가 발생하는 부분도 있다.
 그런 부분을 수정해서 정리해야 겠다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
CES 에서 발표했나봅니다. 기존 버전과는 완전히 느낌이 다릅니다.
실제 써보고 싶네요. 갤탭은 별로 써보고 싶지 않았는데, 이건 다르네요.



갤탭도 허니콤으로 업그레이드 될 수 있을지는 모르겠지만, 지금의 갤탭은 좀 이상한 느낌이었습니다. (갤탭은 뭔가 빠진느낌.)
허니콤은 태블릿의 장점을 잘 활용할 수 있을 듯 합니다. 물론 실제로 써봐야 정확한 느낌을 알 수 있겠지만, 기대.

2011년은 태블릿이 이슈가 될 듯 합니다. (2010년은 스마트폰)
실제 기기로는 언제쯤 볼 수 있을지. 기대가 됩니다.

폰쪽과 태블릿쪽을 다른 라인업을 가져가는것인지 하나로 통합되는 것인지는 모르겠지만, 아마도 따로 개발을 분리하지는 않을 것 같습니다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,