티스토리 툴바

 

 


우분투 메일 서버

리눅스 | 2011/12/11 21:35 | Posted by 발칙한사람
<qmail, sendmail이 존재>
qmail
  - /home/[개인디렉토리]/Maildir에 저장하는 방식
sendmail
  - /var/spool/mail/[개인아이디]에 저장하는 방식
두 메일에는 장단점이 있으니 알아서 찾아보셈

<sendmail을 qmail 방식으로 변환시켜주는거>
# apt-get install mb2md


<우분투는 postfix를 사용, dovecot 설치>
# apt-get install postfix xinetd dovecot-imapd dovecot-pop3d dovecot-imapd dovecot-common
# vim /ete/postfix/main.cf
home_mailbox = Maildir/
mailbox_command = /usr/bin/procmail -a "$EXTENSION" DEFAULT=$HOME/Maildir/ MAILDIR=$HOME/Maildir
메일 저장이 개인 디렉토리에 Maildir에 저장되도록 하기 위한 설정

# vim /etc/dovecot/dovecot.conf
protocols = imap imaps pop3 pop3s
dovecot은 메일을 수신하기 위해서 씀
메일 수신 방식은 pop3, imap 방식이 존재

# /etc/init.d/postfix restart


<메일 계정 생성>
# adduser [아이디]
# cd /home/[개인디렉토리]
# maildirmake.dovecot ./Maildir
# maildirmake.dovecot ./Maildir/.Drafts
# maildirmake.dovecot ./Maildir/.Sent
# maildirmake.dovecot ./Maildir/.Trash
# maildirmake.dovecot ./Maildir/.Templates
# chown [계정]:[계정] -R Maildir
새로운 계정에 대해서는 디렉토리를 생성



<메일 암호화, 전송>
postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth-client'
postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_recipient_restrictions =  permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'


postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_tls_security_level = may'
postconf -e 'smtpd_tls_security_level = may'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'myhostname = ss.ssu.ac.kr'

postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'




# vim /etc/dovecot/dovecot.conf

socket listen {
    #master {
      # Master socket provides access to userdb information. It's typically
      # used to give Dovecot's local delivery agent access to userdb so it
      # can find mailbox locations.
      #path = /var/run/dovecot/auth-master
      #mode = 0600
      # Default user/group is the one who started dovecot-auth (root)
      #user = 
      #group = 
    #}
    client {
      # The client socket is generally safe to export to everyone. Typical use
      # is to export it to your SMTP server so it can do SMTP AUTH lookups
      # using it.
      path = /var/spool/postfix/private/auth-client
      mode = 0660
      user = postfix
      group = postfix
    }
}

mechanisms = plain login

# /etc/init.d/dovecot restart



<postfix-dovecot>
# apt-get install dovecot-postfix
# /etc/init.d/postfix restart


<다람쥐 메일 테스트>
http://localhost/mail/src/configtest.php

[참고 사이트]
http://www.pocock.com.au/portal/portal/pocock/wiki/Wiki;jsessionid=D68D857D58E96458D6F554523FB28AAF?action=e&windowstate=normal&page=ConvertMboxToMailbox&mode=view&language=EN
https://help.ubuntu.com/10.04/serverguide/C/postfix.html
저작자 표시

부팅시 하드 자동 마운트

리눅스 | 2011/11/05 21:12 | Posted by 발칙한사람
1. 하드에 uuid 를 알아 낸다.
# ls -l /dev/disk/by-uuid/

2. 마운트 할 하드를 추가
# vim /etc/fstab
[마운트 할 디바이스] : [ UUID=06F6A49EF6A48F8B ]
[마운트 디렉토리] : [ /mnt/disk ]
[파일 시스템 종류] : [ ext4 ]
[파일 시스템 옵션] : [ default, noauto, ro, usrquota ]
[dump 명령어 사용여부] : [ 0 or 1 ]
[fsck 무결성 체크] : [ 0 or 1 ]

default : 읽고 쓸 수 있고 비동기 엑세스, 일반 유저에 의한 마운트 금지
noauto : 명시적으로 지정하지 않는한 마운트 할 수 없음
ro : 읽기 전용, user 마운트 허가
usrquota : 일반 사용자에게 디스크 사용량을 제한 
저작자 표시

다시 시작

그냥 잡 솔 | 2011/11/01 12:57 | Posted by 발칙한사람
개 뵵신 같은 삽질을 하며 느끼는건 역시...
다 적어두어야 한다는것..
그래서 다시 시작 
저작자 표시

디비 백업

자료, 정보 | 2011/11/01 12:36 | Posted by 발칙한사람
$ mysqldump -u [아이디] -p [디비이름] > [백업_파일_이름]
$ mysql -u [아이디] -p [패스워드] [디비이름] < [백업_파일_이름]
 
저작자 표시

리눅스 스크립트 자동 실행 등록

리눅스 | 2011/11/01 12:10 | Posted by 발칙한사람
vim로 스크립트 파일 생성
update-rc.d [스크립트 파일] default 
저작자 표시

멍~

그냥 잡 솔 | 2011/04/11 19:45 | Posted by 발칙한사람
뭔가 중요한걸 잃어버린 느낌..
대체 뭘까..
그냥 멍~ 
저작자 표시

그냥 잡 솔 | 2011/04/07 15:37 | Posted by 발칙한사람
내 말하는게 문제인가....
겉 모습이 전부인가....

진심 신나서 하는게 뭐가 있을까나....
오토캠핑이나 가고 싶네....

짜증 날 땐..시끄러운 음악을 시끄럽게 듣는게 乃
legend - death knight 
 
저작자 표시

우물 안 개구리

그냥 잡 솔 | 2011/03/25 15:27 | Posted by 발칙한사람
그냥 그렇다고..
내 자신이 죠낸...........
저작자 표시

그냥 잡 솔 | 2011/01/14 17:00 | Posted by 발칙한사람
돈에 대한 나의 생각은 적당히 분수에 맞게 라고 생각했다.
있는데서 최대한 아껴쓰기
버는 만큼에서 그에 맞게 생활하기

적당히 분수에 맞게.....
난 한달에 벌 수 있는 최대가 연구실 돈이야..
난 아직 대학원 생이니까...
바빠서 다른건 생각 할 수도 없어..

개풀뜯어 먹는 소리다
게으른 놈의 이야기다
자신 없는 놈의 이야기다

이제 더이상 돈 없다 소리 하기 싫다.
돈 때문에 거짓말하기 싫다
돈 떄문에 사람 만나는게 꺼려지는 것도 싫다
돈 떄문에 참아야 하는게 싫다.

개 처럼 벌어 볼 생각도 안했던거 같다
돈 좀 벌어봐야겠다. 개 같이..

이런 이야기를 해도 아직 난........
삶의 가치에 가장 중요한 것은 사람이다.
사람을 배신해서 돈을 많이 번다해도 배신따윈 하지 않을 것이다.
그 상황이 나에게 일어나지 않아서 일지 모르겠으나 아직까지 내 생각은 이렇다..
그런 상황이 왔을 때 난 배신할지 궁금하긴 하다 -_-a
저작자 표시

리눅스 log

리눅스 | 2010/11/12 20:22 | Posted by 발칙한사람
vim log.sh
#!/bin/bash                                                                 
DATE=`/bin/date +%y%m%d`
/bin/cp /root/re/login.log /root/log/login_log.$DATE
cat /dev/null > /root/re/login.log
/bin/gzip /root/log/login_log.$DATE

/bin/cp /root/re/char.log /root/log/char_log.$DATE
cat /dev/null > /root/re/char.log
/bin/gzip /root/log/char_log.$DATE

/bin/cp /root/re/map.log /root/log/map_log.$DATE
cat /dev/null > /root/re/map.log
/bin/gzip /root/log/map_log.$DATE

chmod 755 log.sh

crontab -e
0 6 * * * /root/log.sh      << 매일 아침 6시에 실행함
저작자 표시

git

리눅스 | 2010/08/18 11:31 | Posted by 발칙한사람
1. 설치
  ecilpse에서 git를 써보자 해서 찾아 보니 역시나 있었다..
  ecilpse - help - install new software - add | 아래 주소 추가
  http://download.eclipse.org/releases/helios/

2. 사용
  file - team - share project

참고
저작자 표시

얼마만이야..

그냥 잡 솔 | 2010/06/08 21:39 | Posted by 발칙한사람
글 안쓴게 엄청 오래 된거 같은 느낌이다.
이거 글 쓰는거도 동기놈이랑 숙제 같이 낼라고 기다리면서 쓰는것.
사실 숙제가 또 있지만 귀찮아서 ㅠㅠ

아..가상파일 시스템도 그렇고 스케줄러도 그렇고
왜 이렇게 어려운것이냐ㅜㅜ
두 개 숙제 완전 제대로 다 해보겠다 삽질 하였으나..
둘다 제대로 못 해서 냇따!!! 줴길!!!

가상 파일 시스템은 동적으로 구현을 못 하였고...
스케줄러는 2.6.32 왜케 어렵나여...자료도 없음 ㅜㅜ..
책이건 인터넷이건 2.4 아니면 2.6.11 ㅡㅡ;;

사람들이 나에게 이런 말을 한다.
"그거 버전 낮은거에서 되는거에서 하면 되자나??"
물논 저거 실제로 구현 어디가서 해볼까 만들어져 잇는거
그냥 고대로 갔따 쓰겠찌..
그래서 내가 그냥 뻘짓꺼리만 하는것인지..

그러나 나는 현재까지 이런 생각이다. 앞으로 변할런지 모르겟으나..
it로 밥먹고 살려면 최신 기술을 누구보다 빨리 습득해야 한다고 본다.
사용하는거도 먼저 사용해야 하고 지식을 쌓아야 한다고 생각한다.(뻘지식인가 -.-;)

언제까지 되는거 되는거 찾아가며 머무를 껀가요??
남들은 2010년을 사는데 왜 들 편한 것만 찾으며 과거에서 살껀가요??
2.6.32 나왔는데 왜 아직도 2.4에 머무르려 하나여???

그리고 교수님께 대놓고 말 못하겠으나 여기엔 써야겠네..
제발..좀..가르쳐 주시고 숙제 좀 내주세요 ㅜㅜ
아니면 난이도를 좀 고려해서 내주세요!!!!!!!
맨날 밤새다 나 이러다 골로 가겟음 ㅜㅜ....

다음주 화까지 아직도 숙제2와 시험3이 남았꾸나...ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
저작자 표시

<kmalloc, kfree>

리눅스 | 2010/06/08 21:26 | Posted by 발칙한사람
<kmalloc, kfree>
#include <linux/slab.h>

void * kmalloc (size_t size, int flags);
    * GFP_USER – 커널 영역에 메모리를 할당합니다.  유저 영역에 메모리를 할당하는 것이 아니라 우선순위가 낮을 뿐입니다. May sleep
    * GFP_KERNEL – 커널 영역에 메모리를 할당하는 가장 신뢰할 수 있는 방법입니다. May sleep
    * GFP_ATOMIC – Interrupt handlers에서 사용됩니다. Not sleep

void kfree (const void * objp);


struct my_struct *my;
my = (struct struct_my *) kmalloc(sizeof(struct struct_my), GFP_KERNEL));
kfree(my);

<참고>
어디서 했는지 까먹었다 ㅡ.ㅡ;;;;
저작자 표시

우분투 커널 소스 & 컴파일

리눅스 | 2010/06/08 21:26 | Posted by 발칙한사람
<패키지 설치>
# apt-get install build-essential kernel-package linux-source

<컴파일 코어 설정 >
/etc/kernel-pkg.conf
CONCURRENCY_LEVEL = 2
듀얼일 경우 2 쿼드면 4

<컴파일 명령어>
# make-kpkg --initrd kernel_image kernel_headers    컴파일 하기
# make-kpkg clean                                   컴파일 지우기

<컴파일 한거 적용>
# dpkg -i linux-headers-어쩌구저쩌구.deb
# dpkg -i linux-image-어쩌꾸.deb

<참고>
http://debianwiki.or.kr/index.php/%EC%BB%A4%EB%84%90_%EC%BB%B4%ED%8C%8C%EC%9D%BC
http://smartsaver.springnote.com/pages/1173140
저작자 표시

filesystem in userspace

문제!! | 2010/05/22 20:32 | Posted by 발칙한사람
목적
 - pstree와 비슷한 동작을 하는 파일 시스템 구현.

요구사항
 - 파일 시스템을 마운트 하여 ls -R, cat 명령 등을 이용해 탐색 가능해야 함.
 - 프로세스 실행 이미지 이름이 디렉토리가 되며 자식 프로세스는 하위 디렉토리로 존재해야 함.
 - 디렉토리에는 프로세스 관련 정보가 읽기 전용 텍스트 파일 형태로 존재.
 - rm 명령으로 디렉토리를 지우면 프로세스에 kill -9 명령 전송.
 - 커널 API만 이용하여 구현.

실행 환경
 - 우분투 10.04( 64bit )

삽질 과정
<fuse>
 - fuse lib 설치
  # apt-get install libfuse-dev
 - 컴파일 옵션
  #  gcc -Wall `pkg-config fuse --cflags --libs` $(FILE) -D_FILE_OFFSET_BITS=64

<가상 파일 시스템 모듈 소스>

<마운트 방법>
 # mount -t hw4_fs_type none /root/tmpfs
 # umount /root/tmpfs

아..어려워 -_-...

참고
http://fuse.sourceforge.net/
http://www.win.tue.nl/~aeb/linux/lk/lk-8.html
http://lwn.net/Articles/57369/
http://thecoffeedesk.com/geocities/rkfs.html
http://mail.nl.linux.org/kernelnewbies/2010-04/msg00118.html
저작자 표시
TAG '_^乃

parallel port

문제!! | 2010/05/21 23:09 | Posted by 발칙한사람
가상 머신에서 parallel port를 쓰고 싶음.
virtualbox 에서는 지원을 안하는거 같음.
vmware에서 된다는 사람들이 있는데.. 난 설정해도 안됨 ㅡㅡ;;
/dev/parport0 이거 난 없는데 어떻게 생성해야 vmware에서 사용이 가능한지 알아 볼 것.
저작자 표시
TAG '_^乃

pthread

문제!! | 2010/05/21 23:06 | Posted by 발칙한사람
병렬 처리 실습 프로그램
리눅스에서 쓰레드 6개 생성하면 에러 나면서 죽음.
학교 enter 서버에서 그 코드 그대로 돌리면 돌아감.
왜?? 어디가 문제인가?? 뭔가 이상함 ㅡ.ㅡ;;
저작자 표시
TAG '_^乃

이곳에 목적.

문제!! | 2010/05/21 23:04 | Posted by 발칙한사람
이솝 사이트를 보다가 나도 내 스스로 요론고 해봐야지 싶어서 만듬 ㅡ.ㅡ.
일단 왜 안되는지에 대해서 써 놓고 시간 날 때 찾아서 왜 안되나를 검색 할 예정!!
급하지는 않지만 시간 날 때 삽질 거리 모아두는 용도???
급한불 다 끄거나 급한불이 하기 귀찮을 때 기분 전환 뻘짓 용도??
내가 해야 할 것들에 관하여도 일단 여기서 작성후 완료된 후 이동시킴.
저작자 표시
TAG '_^乃

딱히 뭐 없다만..

그냥 잡 솔 | 2010/05/17 10:34 | Posted by 발칙한사람
그냥 블로그에 글을 너무 안 쓴거 같아서..
뻘글이라도 써야지 싶네 =.=;
지난 한주는 완전 피곤했다...
코앞에 살면서 침대에서 잔게 하루라니 ㅠㅠ
그래도 주말에 아무것도 신경 안쓰고 축 늘어져서 쉬니까 좋더라!!
이제 보드에 전원 좀 넣어 볼까 했는데...........
데탑에.. uart가 없다... 이게 뭐냐.. 망할... 젠장...
키보드 맛탱이도 갔는데 용산 가따와야 하나...아후..기차나 ㅠㅠ

망할 우분투..
사운드 볼륨 조절이 x에서 안된다..
검색해보니 root라서 그렇단다..
사람들은 그냥 root를 쓰지 말라고 한다...
우분투 원 사용이 안된다..
버그로 보냈더니 답변 온게 root라서 그렇단다 쓰지 말란다.
root 사용자도 고려를 좀 해달란 말이다....
저작자 표시
TAG '_^乃

우분투 10.04

리눅스 | 2010/04/30 13:09 | Posted by 발칙한사람
넹 10.04 나왔습니다.
그럼 깔아야겠쬬? 캬캬캬캬캬캬캬
ㅠㅠ 할꺼도 많은데.. 어쩔 수 없었음..
근데 참 맘에 드는 10.04!!
우분투 깔자마자 스킨부터 갈아치우는데
10.04 스킨 그냥 쓰기로 함 ㅋㅋ

1. nvidia 드라이버 설치
 # add-apt-repository ppa:nvidia-vdpau/ppa
 # apt-get update
 # apt-get install nvidia-185-modaliases nvidia-glx-185 nvidia-settings
 # nvidia-xconfig
    재붓.

2. vim
 # apt-get install vim

3. avant-window-navigator
 # apt-get install avant-window-navigator
 루트로 로그인해서 쓰는 사용자를 위해!
 # vim /usr/bin/awn-settings
   if os.geteuid()==0     << 0을 1로 바꿔주면 root로 awn 사용 가능!

4. 압축 관련
 # apt-get install unalz unrar p7zip

5. 일정 관리 rainlendar
 http://www.rainlendar.net/cms/index.php

6. firefox 플래시 플레이어
 adobe 사이트 들어가서 tar.gz 파일을 받아서 압축 풀면
 어쩌구.so 파일이 하나 등장하는데 이것을!
 # cp 어쩌구.so ~/.mozila/firefox/(폴더하나 있음)/extensions

7. 네이트온
 # apt-get install pidgin-nateon

8. ssh
 # apt-get install ssh

9. ftp 설치
 # apt-get install vsftpd
 기타 설정은 아래 참조
 http://flslg.tistory.com/entry/ftp-%EC%84%A4%EC%A0%95

10. 음악 태그 관리
 # apt-get install easytag

11. 개발 관련
 # apt-get install build-essential

12. java
 sun-java-jdk 라는 패키지가 없다! 젠장!!
 자바 홈피가서 파일 다운 받아서
 # chmod +x jdk-6u20-linux-x64.bin
 # ./jdk-6u20-linux-x64.bin
  생성되는 디렉토리를 환경 변수 추가
  나능 /opt 에 생성된 디렉토리를 복사햇음
 # vim /etc/profile 
   export JAVA_HOME=/opt/jdk1.6.0_20
   export CLASSPATH=$JAVA_HOME/lib
   export PATH=$PATH:$JAVA_HOME/bin
   재붓

13. 한글 문제
  # rm /etc/fonts/conf.d/29-language-selector-ko-kr.conf
  # rm /etc/fonts/conf.d/69-language-selector-ko-kr.conf


참고
http://myubuntu.tistory.com/entry/1004-%EC%84%A4%EC%B9%98%ED%95%98%EA%B3%A0-%EB%82%98%EC%84%9C-%EB%B0%94%EB%A1%9C-%EC%B0%BE%EB%8A%94-%EB%AC%B4%EB%A5%B8%EB%AA%A8
저작자 표시
TAG '_^乃

갑자기 쓰고 싶어진 뻘글

그냥 잡 솔 | 2010/04/27 18:11 | Posted by 발칙한사람
삽질을 많이 한다..참..뻘짓을...
삽질이 도움 된적이 많기는 하다..
하지만 삽질에 관해서 요즘은 그렇게 삽질한 시간이 아깝다는거다.
이런 생각이 든 이유는 일이 큐에 들어가게 되는데
아둥바둥 거려도 이 큐가 줄어들지 않는다.
삽질한 시간이 많으면 큐에 저장되는게 점점 많아진다.
마음에 여유가 점차 사라져 간다.
징징거림만 늘어간다.

사람들은 자기가 아는 분야에서 쉽다라고 생각 하는 것을
다른 사람도 당연히 알고 있어야 하는 지식 아닌가? 라고 생각한다.
그리고 그런 것도 모르냐고 이야기한다.

사람들에게 주어진 시간은 같다.
사람이 전부 다 알 수는 없다.
A가 아는 것 만큼 알려면..
B는 A가 투자한 시간만큼 시간을 써야 한다.
그런데 꼭 A가 투자한 시간만큼 쓰지 않아도 된다.
A가 한 것을 보면 훨씬 적은 시간으로 알 수 있다.
이런 생각도 할 수 있다..
쉽네? 이거 뭐.. 금방하네..
줄어든 시간에 더 많은 것을 알 수도 있다.
놀 수도 있고 다른 것에 더 시간을 투자할 수 있다.

당연하게 넘길 수도 있는 거다...
그런데 뻘짓한 시간에 비례하여 손해 보는 느낌이 크다...
여유롭게 놀고 싶기도 하고 무시당하고 싶지도 않다...
신경쓰지 않으려 하는데 자꾸 신경이 쓰인다...
쿨하지 못함, 소심함, 뱅댕이?

이 분야에서 만큼은 최고가 되야지 생각했었다.
최고..글쎄 어떻게 해야 최고라고 할 수 있는가..
최선을 다하면 될 수 있는가?
최고라는것... 그냥 막연한거 같다.
최선이라는것 부담스러운 단어인거 같다.
무시당하지 않을 정도..
하고 싶은거 알고 싶은 만큼...
이게 적절한거 같다..
뭐 될대로 되겠지...ㅋ
저작자 표시
TAG '_^乃

AXIS2(작성미완)

| 2010/04/15 09:43 | Posted by 발칙한사람
웹서비스를 만들기 위해 사용!

1. 설치 & 실행에 관하여

  http://ws.apache.org/axis2/download.cgi
 버전이 4개가 있을껀데 binary 하나만 받아도 됩니다
 최신 버전 다운로드하고 압축 풉미다

 # vim /etc/profile
    AXIS_HOME=/디렉토리

방법 1
 # cd $AXIS_HOME/bin
 # axis2server.sh
 위에 파일을 수행해서 따로 톰캣없이 실행이 됩니다.
 확인은 http://localhost:8080/axis2/service

방법 2
 ant가 설치 되어 있어야 합미다
 # cd $AXIS_HOME/webapps
 # ant create.war
   $AXIS_HOME/dist/axis2.war  << 파일이 생깁니다
 위에 생성된 파일을 톰캣에 webapps 에 복사해 줍니다
 # cp $AXIS_HOME/dist/axis2.war CATALINA_HOME/webapps/
 그리고 톰캣을 수행하여 확인해 봅시당
 확인은 http://localhost:8080/axis2/service


2. 사용에 관해...
wsdl 생성
  코드를 컴파일하여 StockQuoteService.class 가 있는 디렉토리로 이동
  # %AXIS2_HOME%/bin/java2wsdl -cp . -cn StockQuoteService -of StockQuoteService.wsdl
  명령어를 수행하면 wsdl 파일이 생성된다.

테스트 코드
  import java.util.HashMap;

  public class StockQuoteService {
      private HashMap map = new HashMap();

      public double getPrice(String symbol) {
          Double price = (Double) map.get(symbol);
          if(price != null){
              return price.doubleValue();
          }
          return 42.00;
      }

      public void update(String symbol, double price) {
          map.put(symbol, new Double(price));
      }
  }

webapps에 생성된 디렉토리 구조
------------------------------------------------------------
axis2-web
META-INF
WEB-INF
    classes
    conf
        axis2.xml
    lib
        activation.jar
        ...
        xmlSchema.jar
    modules
        modules.list
        addressing.mar
        ...
        soapmonitor.mar
    services
        services.list
        aservice.aar
        ...
        version.aar
    web.xml
------------------------------------------------------------

*.aar 파일의 형태로 서비스를 배치
------------------------------------------------------------------------
- StockQuoteService
   - META-INF
     - services.xml
   - samples
     - quickstart
       - service
         - pojo
           - StockQuoteService.class
------------------------------------------------------------------------

웹서비스 를 생성하는 방법
 
* Plain Old Java Objects (POJO)
  * AXIOM의 OMElement
  * Axis2 Databinding Framework (ADB)
  * XMLBeans
  * JiBX  << 참고로 나는 이것을 사용할 것이다.

Deploying POJOs
  # cd $AXIS_HOME/samples/quickstart
   디렉토리 구조
   ----------------------------------------------------------------------
   - quickstart
      - README.txt
      - build.xml
      - resources
        - META-INF
          - services.xml
      - src
        - samples
          - quickstart
            - service
              - pojo
                - StockQuoteService.java
   ----------------------------------------------------------------------
  # ant generate.wsdl                             wsdl 생성
  # ant generate.service                          프로젝트 빌드
     build 디렉토리에 StockQuoteService.aar  파일이 생성
  # cp build/StockQuoteService.aar $CATALINA_HOME/webapps/axis2/WEB-INF/services

  톰캣 실행
  http://localhost:8080/axis2/services/listServices   등록 되었는지 서비스 목록 확인
  http://localhost:8080/axis2/services/StockQuoteService?wsdl  wsdl 확인
  http://localhost:8080/axis2/services/StockQuoteService?xsd    schema 확인

  테스트
  http://localhost:8080/axis2/services/StockQuoteService/getPrice?symbol=IBM
  <ns:getPriceResponse xmlns:ns="http://pojo.service.quickstart.samples/xsd">
      <ns:return>42</ns:return>
  </ns:getPriceResponse>
  위와 같은 결과가 나옴

  http://localhost:8080/axis2/services/StockQuoteService/update?symbol=IBM&price=100 
  위에 링크를 클릭해서 웹서비스를 호출한 후에 getPrice?symbol=IBM을 확인하면
  값이 100으로 바뀐것을 알 수 있다.



JiBX
 














참고
저작자 표시
TAG '_^乃

관악산 가다!!

그냥 잡 솔 | 2010/04/11 16:49 | Posted by 발칙한사람
연구실 생활한지 2달인데 6달된 느낌..
기분 전환이 좀 필요했다..
뭘할까 하다가 산 가자!!
그리하여 오늘 관악산에 갔다왔다.

오늘 기억에 남는거 몇자 적자면
한 젊은 아주머니와 아이들끼리 왔는데.....
물속에 도롱뇽 알보고 뱀 허물 아니냐고 하는거에 미소가 지어지더군 =.=

난 아직 젊으니까란 생각과 초반에 아주 기운 넘쳐 쌩쌩하니까
아..뭐 이것도 산이라고 라는 생각으로 막 뛰고 걷고 해서 올라가기 시작했다
깔딱 고개까지 가니까 완전 기운 빠져서 한 5분 앉았다 쉬고
깔딱 고개 올라가는데 왜이렇게 힘든거냐!!!!! 완전 퍼져서 헥헥대고 ㅜㅜ
지나가는 아저씨가 아주머니에게 저봐 여기 힘든데라고.....
젊은 사람도 저렇게 헥헥 대는데.... 밍냐라멎디랴너이라머ㅑ대로머니아러
내 몸 돌려주삼요 ㅜㅜ

등산하는데 애완용 개를 끌고 올줄이야....
난 안고 올라오는줄 알았다
끌고 오더라 -_-;;; 불쌍한놈..


꽃도 이뻐보이네 아놔 오늘 컴퓨터가 아닌건 다 이뻐 보인듯
산에 다니는 "임자있는" 이쁜 누나들도 많더군 -.-..

다람쥐인지 청솔모인지 이름은 모르겠고 사진을 찍고 싶었는데 못 찍은 그놈!!
오나전 가까이서 앉아서 구경했는데....................
등산객이 버린건지 애들 먹으라고 준건지 땅에 비닐씌워져 있는 사탕.............
쭈어 처묵더라 뭐 이런게 다있어 동물이 문명에 맛을 보다니 도토리나 머그라고!!!!

절밥 드실라고 줄서서 사람들 오나전 기다리던데..
나도 먹고 싶었다규 ㅠㅠ 한놈만 더 있었어도 기다려서 먹었을듯 ㅡㅡ..


잘 안보이지만 저기 공부하는 애기 스님 귀여움요


정상 핸드폰에 뭐가 보이는지도 잘 안보여서 대충 찍었는데
이따구로 나왔었구나 ㅡㅡ!!


뭐 이러저러한 소소한 즐거움이 있었고
내몸은 만신창이가 되었고 기분 전환도 되었고
나쁘지 않은거 같다 ㅋㅋㅋㅋ

매주 뭐든 기분 전환을 해야것다....
그래서 다음주는 한강이다!!!!!!
>>ㅑ~~~~~

사진기 캐 사고 싶다...아..이거 찍어두고 싶은데 그런거 핸드폰으로 찍었떠니 쬴구리다..
다람쥐 새퀴는 너무 작아서 핸드폰으로 찍으니 숨은그림찾기도 아니고 ㅅㅂ 그래서 지움 ㅠㅜ...

사당으로 내려오려고 햇는데.....
길을 잘 못 들어서.......과천으로 내려옴 ㅅㅂ..ㅜㅜ
저작자 표시
TAG '_^乃

USB 포멧

리눅스 | 2010/04/10 16:31 | Posted by 발칙한사람
일단 usb가 어떤건지부터 찾아야 포멧을 하던 말던
  # ls /dev/sd*
    거럼 sda, sdb, sdc 뭐 이런식으로 다양하게 많을꺼다
    하드가 1개면 아마 usb는 sdb1 일꺼고 하드가 두개면 sdc1 3개면 sdd1 이 된다는거다.
    usb가 sdc1 이라 치자 그러면 일단 마운트를 해제한다.
  # umount /dev/sdc1
  제대로 마운트 해제 되었나 확인해 보고 아래 명령어 수행해서 포멧하면 됨
  # mkfs.vfat -F 32 /dev/sdc1
저작자 표시
TAG '_^乃

Network-Manager & Networking

리눅스 | 2010/04/10 16:20 | Posted by 발칙한사람
아오!!! 이거때문에 삽질한거 생각하면 눈물이 다 날라고 하네!!!!
Ignoring unknown interface eth0=eth0. << 이딴 에러 나고
ifdown ifup 이게 안 먹히는거다..
근데 ifconfig를 치면 분명있는뎅?????
바로 network-manager 가 문제가 있는데
network-manager로 설정 백날해도 터미널에는 적용이 되지 않는게 문제다!!!!!!!
으헝허엏어헝헝허어
network-manager는 무선환경을 고려하고 동적인 ip를 사용하면 참 좋다고 한다.
그러나 문제는 난 고정 아이피이며 클라우드 할껀데 서버아님여????
자..열폭은 여기서 고만하고 network-manager 끄고 networking 을 사용해서 인터넷을 설정해보자
일단 network-manager 끄기
  # /etc/init.d/network-manager stop
   참..쉽죠?..

다음 networking 설정을 하자
ex> 아이피 : 203.253.45.63
     게이트웨이 : 203.253.45.254
     도메인 : 203.253.41.1, 168.136.63.1
     뭐 이렇다 치자
  # vim /etc/network/interfaces
    auto lo                                                                                                                        
    iface lo inet loopback

    auto eth0
    iface eth0 inet static
    address 203.253.45.63
    netmask 255.255.255.0
    network 203.253.45.0
    broadcast 203.253.45.255
    gateway 203.253.45.254
    dns-nameserver 203.253.41.1 168.136.63.1

  # vim /etc/resolv.conf
    nameserver 203.253.41.1
    nameserver 168.136.63.1

  # /etc/init.d/networking restart

  인터넷 되나 확인 해보자!!
저작자 표시
TAG '_^乃

adobe reader

리눅스 | 2010/04/04 16:51 | Posted by 발칙한사람
우분투 9.10(64Bit)
  # dpkg --force-architecture -i AdbeRdr9.3.1-1_i386linux_enu.deb
  # apt-get install ia32-libs

  기본적으로 우분투에서 pdf를 볼수는 있지만 복사 붙여넣기가
  잘 안되는 pdf 파일들이 있어서 설치해봤다
  잘된다 ㅡ.ㅡ!!
저작자 표시
TAG '_^乃

java 객체 <-> xml schema

| 2010/04/01 09:50 | Posted by 발칙한사람
xml schema로 자바 객체 생성하고 생성한 객체를 다시 xml 문서로 쉽게 바꿔주는거 뭐 없나!?
찾아본 결과 jaxb와 jibx 가 있었음!!
나머지 다른것도 많지만 사용 용도에 따라 둘 중 하나 선택해서 사용하면 될 것 같다.
비교 사이트도 링크 걸어 뒀으니 참고하고 사용하면 될 듯 하다.


JAXB

  Java Architecture for XML Binding의 약자로 자바 클래스를 XML로 표현하는 자바 API
  JAXB는 주로 2가지 기능이 있는데 자바 객체를 XML로 직렬화하는 것과 반대로 XML에서 자바 객체로 역 직렬화 한다.
  복잡한 스키마를 사용한다면 JAXB를 추천!

JIBX
  XML 데이터를 Java 객체로 바인딩하기 위한 프레임워크
  복잡한 스키마가 아니고 빠른 속도를 원한다면 JIBX를 추천!
 
나능 복잡한거도 안할꺼고 속도를 원하니까!! JIBX!!!
일단 설치부터 하자!
http://sourceforge.net/projects/jibx/files/ << 가서 최신버전 받자!
현재 1.2.2가 최신인듯.
  # unzip jibx_1_2_2.zip
  # vim /etc/profile
     JIBX_HOME=/경로    << ant 빌드 할때 이렇게 선언되어 있으니까!! 이렇게 홈 디렉토리 잡아줏메
   # source /etc/profile

  # cd /jibx/examples/bindgen
  # ant compile
  # ant bindgen
  # ant bind
  # ant run-base

BindGen 사용자 정의
  BindGen 작업을 사용자가 정의하여 데이터의 XML 표현을 제어하고 이름 및 네임 스페이스의 양식을 변경
  스키마 구조의 일부 특성을 제어한다.

  BindGen은 기본적인 Java 클래스 처리 작업을 효과적으로 처리하지만 사용자의 지시 없이 수행할 수 있는
  작업이 제한 되어 잇다. 예를 들면 기본 처리에서는 정적, 임시또는 최종 필드를 제외한 모든 필드가
  XML 표현에 포함된다. 이 방법은 간단히 데이터 오브젝트를 나타내는 클래스의 경우 적용되지만
  클래스에 상태 정보나 계산된 값이 포함된 경우에는 클래스 외부에 노출하지 않으려는 값이 XML 표현에 포함
  될 수 있다. 그래서 사용자 정의를 통해서 XML 표현에 사용할 내용을 두 가지 방법으로 제어 할 수 있다.
  - 필드를 직접 엑세스 하는 대신에 getXX(), setXX(), isXX() 메소드를  사용하는 방법
  - 클래스에 대한  XML 표현에 포함할 값을 표시할지 제외할지의 여부를 선택하는 방법


망할 삽질
  jibx로 코드에서 자동으로 스키마를 생성할 때 
  int float는 attribute로 나머지는 element로 들어간다
  망할 것 이것 때문에 삽질을 얼마나 한거냐
  그래서 스키마->코드, 코드->스키마 가 만들어 지는게 다르다
  다르게 만들어 지지 않도록 숫자는 attribute, 나머지는 element로 스키마를 생성해서
  코드 생성하고 다시 그 코드로 스키마가 제대로 만들어지는지 확인 하자 ㅡㅡ! 망할!!
  현재 jibx 버전은 1.2.2



참고
http://www.ibm.com/developerworks/kr/library/tutorial/j-jibx2/index.html
https://bindmark.dev.java.net/old-index.html
http://www.ibm.com/developerworks/xml/library/x-databdopt2/
http://ko.wikipedia.org/wiki/JAXB
https://jaxb.dev.java.net/
저작자 표시
TAG '_^乃

openssl

리눅스 | 2010/03/30 11:15 | Posted by 발칙한사람
네트워크 보안이라는 수업 숙제 때문에 하게 됨
예전에 RSA 인증 구현 함 해봤지만
이번에 이것 저것 해 볼것 같군.
그렇지만..좀..살살 해요.. 교수님들 아우 힘들어 ㅜㅜ

http://www.openssl.org/
소스 다운 받아서 압축 풀기~
# cd 소스 디렉토리/include
# cp -rf ./openssl /usr/include/openssl
# ./configure
# make
# make install
# cp libcrypto.a libssl.a /작업디렉토리

# vim Makefile
CC=gcc

SOURCES = decrypt.c encrypt.c keygen.c test.c

OBJECTS = ${SOURCES:.c=.o}

OUT = test

$(OUT): $(OBJECTS)
    $(CC) -o $(OUT) $(OBJECTS) libcrypto.a libssl.a

clean:
    rm -f test *.o

# vim header.h
#include <openssl/bn.h>
#include <openssl/rand.h>
#include <openssl/aes.h>
#include <openssl/evp.h>

#define AES_KEY_SIZE 128           // AES key size
#define SK_SIZE 128              // Session key size

#define TRUE    1
#define FALSE    0

typedef unsigned char uchar;
static unsigned char IVseedConstant[AES_BLOCK_SIZE]
    = { 0xcb, 0xce, 0xcb, 0xcd, 0xcb, 0xce, 0xcb, 0xcd,
        0xcb, 0xce, 0xcb, 0xcd, 0xcb, 0xce, 0xcb, 0xcd }; // Initialize AES IV


# vim decrypt.c
#include "header.h"

int SSU_SEC_aes_decrypt( uchar *enc_msg, int enc_msg_len, uchar *sk, int sk_len, uchar **msg, int *msg_len )
{
    // 입력 파라미터: uchar *enc_msg; int enc_msg_len; uchar *sk; int sk_len;
    // 출력 파라미터: uchar **msg; int *msg_len;
    // 내부변수
    int ret = TRUE;
    int tmplen;

    // EVP 객체를 이용한 AES 암호화
    // ctx(암호화에 사용되는 데이터들이 저장되는 임시 저장소) 초기화
    EVP_CIPHER_CTX ctx;
    EVP_CIPHER_CTX_init(&ctx);

    // 초기화: 암호 알고리즘 할당, 키 할당, IV 할당
    EVP_DecryptInit_ex(&ctx, EVP_des_ofb(), NULL, sk, IVseedConstant);

    // 초기화가 끝난후에 해야 한다. 복호문 저장할 버퍼 생성
    *msg = malloc( enc_msg_len );
    if( *msg == NULL )
        return FALSE;

    //업데이트, 마지막 블록을 제외 하고 모두 복호화
    if(!EVP_DecryptUpdate(&ctx, *msg, msg_len, enc_msg, enc_msg_len))
        ret = FALSE;

    // 종료. 마지막 블록을 복호화
    if(!EVP_DecryptFinal_ex(&ctx, *msg+(*msg_len), &tmplen))
        ret = FALSE;

    // 복호문 길이는 업데이트, 종료 과정에서 나온 결과의 합
    *msg_len += tmplen;

    EVP_CIPHER_CTX_cleanup(&ctx);

    return ret;
}

# vim encrypt.c
#include "header.h"

int SSU_SEC_aes_encrypt(uchar *msg, int msg_len, uchar *sk, int sk_len, uchar **enc_msg, int *enc_msg_len )
{
    // 입력 파라미터: uchar *msg; int msg_len; uchar *sk; int sk_len;
    // 출력 파라미터: uchar **enc_msg; int *enc_msg_len;
    // 내부변수
    int ret = TRUE;
    int templen;

    // EVP 객체를 이용한 AES 암호화
    // ctx(암호화에 사용되는 데이터들이 저장되는 임시 저장소) 초기화
    EVP_CIPHER_CTX ctx;
    EVP_CIPHER_CTX_init(&ctx);

    // 초기화: 암호 알고리즘 할당, 키 할당, IV 할당
    EVP_EncryptInit_ex(&ctx, EVP_des_ofb(), NULL, sk, IVseedConstant);

    // 초기화 끝난 후에 암호문 저장될 메모리 할당
    *enc_msg = malloc( msg_len + EVP_CIPHER_CTX_block_size(&ctx) );
    if( *enc_msg == NULL )
        return FALSE;

    // 업데이트: 메시지 암호화(마지막 블록 제외)
    if(!EVP_EncryptUpdate(&ctx, *enc_msg, enc_msg_len, msg, msg_len))
        ret = FALSE;

    // 종료: 마지막 블록 암호화
    if(!EVP_EncryptFinal_ex(&ctx, *enc_msg+(*enc_msg_len), &templen))
        ret = FALSE;

    // 암호문 길이
    *enc_msg_len += templen;

    EVP_CIPHER_CTX_cleanup(&ctx);

    return ret;
}

# vim keygen.c
#include "header.h"
#include <openssl/rand.h>

int SSU_SEC_sk_gen(int *sk_size, uchar **sk, int *sk_len)
{
    BIGNUM *rnd;
    int ret;

    rnd = BN_new();

    *sk_size = SK_SIZE;    // SK_SIZE = 128 bits (for AES)

    RAND_seed(*sk, sizeof(*sk));            // random seed
    ret = BN_rand(rnd, *sk_size, 1, 0);

    *sk_len = BN_num_bytes(rnd);
    BN_bn2bin(rnd, *sk);

    BN_free(rnd);

    return ret;
}

# vim test.c
#include <stdio.h>
#include <openssl/bn.h>
#include <string.h>
#include <stdlib.h>

typedef unsigned char uchar;

typedef struct
{
    uchar *key;
    int key_len;
} SSU_SEC_key;

char* BinaryToBN( uchar *msg, int msg_len )
{
    BIGNUM *temp;

    temp = BN_new();
    BN_init(temp);

    BN_bin2bn(msg, msg_len, temp); // binary to BN

    return BN_bn2hex(temp); // BN to hex
}


int main(void)
{
    SSU_SEC_key Secret;

//    char message[64] = "This is the sample message for a coursework of Network Security, Spring 2010. It is for testing AES cipher in OpenSSL.";
    char message[128] = "This is the sample message for a coursework of Network Security, Spring 2010. It is for testing AES cipher in OpenSSL.";

    char *enc_data;
    char *dec_data;

    int enc_data_len;
    int dec_data_len;

    int iRet = 1;
    int sk_size;

    FILE *fp = NULL;
    fp = fopen( "result.txt", "w+" );
    if( fp == NULL )
        return 0;

    Secret.key = (uchar *)malloc( 16 * sizeof(uchar) );
    Secret.key_len = sizeof(Secret.key);

    fprintf( fp, "<main>\n" );
    fprintf( fp, "original  message = %s\n\n", message);

    // 0. key Gen
    if( SSU_SEC_sk_gen(&sk_size, &Secret.key, &Secret.key_len) )
    {
        fprintf( fp , "\t* Generation Secret Key \n");
        fprintf( fp , "\tSecret key len : %d bytes\n", Secret.key_len) ;
        fprintf( fp , "\tSecret key : %s\n\n", BinaryToBN( Secret.key, Secret.key_len) );
    }

    // 1. AES Encrption
    enc_data = NULL;
    enc_data_len = 0;
    if( SSU_SEC_aes_encrypt( message, strlen( message ) + 1, Secret.key, Secret.key_len, &enc_data, &enc_data_len ) )
    {
        fprintf( fp, "* AES encryption OK.\n" );
        fprintf( fp, "Encyrpted message = %s\n", BinaryToBN( enc_data, enc_data_len ) );
        fprintf( fp, "Encrypted message len = %d\n", enc_data_len );
    }
    else
    {
        fprintf( fp, "* AES encryption fail!\n" );
        iRet = 0;
        goto END;
    }
   
    // 2. AES Decryption
    dec_data = NULL;
    dec_data_len = 0;
    if( SSU_SEC_aes_decrypt( enc_data, enc_data_len, Secret.key, Secret.key_len, &dec_data, &dec_data_len ) )
    {
        fprintf( fp, "\n* AES decryption OK.\n" );
        fprintf( fp, "Decrypted message = %s\n", dec_data );
        fprintf( fp, "Decrypted message len = %d\n", dec_data_len );
    }
    else
    {
        fprintf( fp, "* AES decryption fail!\n" );
        iRet = 0;
        goto END;
    }

END:
    fprintf( fp, "++++++++++++ END of PROGRAM ++++++++++++\n" );
    fclose( fp );

    //메모리 해제  이부분 에러 난다!! 흠..
//    SAFE_FREE( Secret.key );

//    SAFE_FREE( enc_data );
//    SAFE_FREE( dec_data );
//    free( Secret.key );
//    free( enc_data );
//    free( dec_data );

    return 1;
}


위에 빨간 부분만 아래에 있는 함수로 바꾸면 알고리즘이 바뀜..
참 쉽죠~?
– EVP_aes_128_ecb()
– EVP_aes_128_cfb()
– EVP_aes_128_ofb()
– EVP_des_ecb()
– EVP_des_cbc()
– EVP_des_cfb()
– EVP_des_ofb()

참조
http://www.openssl.org/docs/crypto/BN_rand.html
http://linux.die.net/man/3/rand_seed
저작자 표시
TAG '_^乃

twhirl

리눅스 | 2010/03/30 11:01 | Posted by 발칙한사람
트위터를 메신저처럼 쓸 수 있게 해주는거 같다.
나도 트위터 좀 해볼까! 했으나 나에겐 좀 안 맞는거 같네..
무튼 설치는 아래 주소에서 그냥 인스톨 누르면 쉽다..
http://www.twhirl.org/

Adobe AIR 64-bit 에러
AIR를 사용하는데 우분투가 64bit라면 에러가 난다.
  Error loading the runtime (libadobecertstore.so: cannot open shared object file: No such file or directory)
  아래 명령으로 설치해주면 다 해결.
  # apt-get install lib32nss-mdns
저작자 표시
TAG '_^乃

gedit

리눅스 | 2010/03/30 10:56 | Posted by 발칙한사람
ctags를 좀 더 좋게 편하게 즐겁게!
쓰고 싶은 마음에 검색을 해 봤다
gedit에서 플러그인을 설치하여 ctags를 사용 할 수 있다는 소리가!!!

설치 : 우분투 9.10

class-browser
  둘중 하나로 받을 수 있음
  1. http://www.stambouliote.de/projects/gedit_plugins.html
  2. # svn checkout http://geditclassbrowser.googlecode.com/svn/trunk/ geditclassbrowser-read-only
  # cp -rf classbrowser ~/.gnome2/gedit/plugins

symbol-browser
  http://sourceforge.net/projects/symbol-browser/files/
  소스 설치 귀찮으니까 그냥 바이너리 받아서 압축을 푸삼
  # cp -rf symbols ~/.gnome2/gedit/
  # cp libsymbolbrowser.so symbolbrowser.gedit-plugin ~/.gnome2/gedit/plugins
  # apt-get install libgnomeprintui2.2-0  << 우분투 9.10에서 이거 설치해줘야 symbol browser 동작 됨

file-search
  http://oliver.github.com/gedit-file-search/
  # cp * ~/.gnome2/gedit/plugins
  grep 으로 파일 찾았었는데...이거 완소인듯.
  이건 대박! ctrl + shift + f !!

gedit - 편집 - 기본 설정 - 플러그인 가서 적용시키자.
  근데 솔직히 위에 두개 브라우저는 좋은 점 모르겠다
  내가 아직 ctags랑 연동하는걸 어떻게 하는지 몰라서 일지도...

gedit CP949 사용
/apps/gedit-2/preferences/encodings/
  -> auto_detected
       UHC를 추가하고 UHC를 맨 앞으로 이동

저작자 표시
TAG '_^乃