'개발/linux'에 해당되는 글 6건

  1. 2008/08/06 Dsp 초보용 vi팁 하나 (1)
  2. 2008/07/23 Dsp gdb 정리
  3. 2008/03/17 Dsp htaccess rewrite module (2)
  4. 2007/08/20 Dsp Linux에서 프로세스 관련 명령들 (2)
  5. 2007/08/17 Dsp [Lua] Lua Online 서적 (4)
  6. 2007/07/20 Dsp Cron 사용법 (3)
저는 요즘 sourceinsight로 각각의 application들별로 project로 만들어 쓰고 있는데요, 이렇게 하면 다른 모듈로의 호출을 따라가지 못하는 불상사가 생깁니다. 그렇다고 한방에 프로젝트를 만들면 너무 관리가 어려워서 어쩔까 고민을 하던 와중에 vi + ctags의 기능을 알게 되었습니다.
( 머 이미 아는 분이 대다수라 생각 중 --; 사실 안써도 그만 --;)

 최상위 폴더에서 ctags를 실행.

# ctags -R

그런 후 원하는 함수명을 다음과 같이 입력하면 vi가 해당 함수로 이동.

# vi -t 함수명


그리고, vi 내에서 이동은 다음과 같습니다.

ctrl + ] : 함수구현부로 이동

ctrl + T : 빽

2008/08/06 12:55 2008/08/06 12:55

Translate to English

번역 api에 대한 설명은 이 포스트를 참조하세요...

트랙백 주소 :: http://cybershin.x-y.net/tt/trackback/233

댓글을 달아 주세요

  1. dsp 2008/08/08 09:04  댓글주소  수정/삭제  댓글쓰기

    팀내 다른분의 답변 :
    ctags과 함께 VIM의 taglist script을 사용하시면 좀 더 편한 개발환경을 사용하실 수 있습니다.

    아래 사이트에서 받으실 수 있어요. (Screenshot 보시면 taglist가 어떤놈인지 알 수 있으실 거에요)
    http://vim-taglist.sourceforge.net

    Ubuntu에서는 apt-get install vim-scripts 하시면 한방에 설치됩니다.
    .vimrc 파일에
    map <F2> :TlistToggle<cr>
    이렇게 적어주시면 F2키로 taglist 를 On/Off 시킬 수 있습니다.

    참고로, http://www.vim.org/scripts/script_search_results.php?order_by=rating 사이트에 보면 좀 더 다양한 script 목록을 보실 수 있습니다.~

gdb 정리

개발/linux 2008/07/23 18:52
회사에서 개발환경이 eclipse만 지원해줘도 좀 편했을텐데,
eclipse가 안되는 관계로 gdb를 써야 할 듯 합니다.

마침, gdb에 대해 잘 정리된 사이트가 있네요.

gdb 정리 : http://psyoblade.egloos.com/2653919
2008/07/23 18:52 2008/07/23 18:52

Translate to English

번역 api에 대한 설명은 이 포스트를 참조하세요...

트랙백 주소 :: http://cybershin.x-y.net/tt/trackback/226

댓글을 달아 주세요

helloboy님의 블로그에 정리가 잘 되어있길래 퍼왔습니다.
전 우분투를 써서 설정과 설치가 좀 다르지만,
잘 몰랐던 htaccess rewrite module에 대해서 이제야 대충 감이 잡히네요 ^^


Apache rewrite Module


Apache 는 추가적으로 사용할 수 있는 유용한 모듈들을 제공합니다. 이번강좌에서는 Apache의 URL Rewrite 모듈을 사용하기 위한 컴파일,설치와 httpd.conf의 설정방법 그리고 활용방법에 대해 알아보겠습니다.


Apache 다운로드 : http://www.apache.org

1. rewrite 모듈을 사용하기 위한 Apache 컴파일옵션

Rewrite 모듈을 쓰기위한 Apache 컴파일 옵션은 --enable-rewrite 입니다. Configure 실행시에  --enable-rewrite 만 추가하시면 Apache에서 rewrite 모듈을 사용할 있게 됩니다.

[root@superuser root]# ./cofigure prefix=/usr/local/apache2 --enable-rewrite

[root@superuser root]# make

[root@superuser root]# make install


1. Rewrite 를 적용할 수 있는 범위

Rewrite 설정은 Server Config, Virtual Host, Directory, .htaccess 에 설정할 수 있습니다. Apache 서버 전체에 Global 설정과 특정 가상호스트에만 적용하도록 할수 있고 특정 디렉토리에만 적용시킬수도 있습니다.


2. Rewrite 모듈 지시자

RewriteEngine

설정문법 : RewriteEngine On|Off

Rewriteing 엔진을 사용할지 여부를 설정합니다. 기본설정은 당연히 Off로 되어 있으며 RewriteEngine On 으로 설정하지 않는 이상 Rewritng 엔진을 활성화 시키지 않습니다.


현재 Apache에서 실행중인 모든 RewriteRule을 비활성화 시킬 때 RewriteRule 라인을 주석처리 하기보다 RewriteEngin Off 로 설정하는 것이 더 간편하고 올바른방법입니다.


RewreteLog

설정문법 : RewriteLog FILE-PATH

RewriteLog 지시자는 Rewrite 엔진의 로그를 그록할 파일을 지정합니다.
RewriteLog 파일을 항상 남기기 보다 잘못된 Rewrite 규칙들을 디버킹할 때 사용하기를 권장합니다. 아파치와 마찬가지로 RewriteLog 파일도 방문자수가 많은사이트에서는 감당못할 정도의 로그파일을 남기기 때문에 시스템 여유공간이 많이 없는 시스템에서는 해당 파티션의 하드사용률 100%로 인한 재앙(?)을 불러올수도 있습니다. 다음강좌에서 소개될 로그파일 분석에서 언급하겠지만 로그파일은 유용한 디버깅 도구가 될수 있지만 잘못 관리하면 시스템의 치명적인 악으로 존재할수도 있습니다.


RewriteLog 지시자는 반드시 RewriteLogLevel 지시자와 함께 사용하여야 됩니다.


RewriteLogLevel

설정문법 : RewriteLogLevel Level

RewriteLogLevel 지시자는 RewriteLog 지시자로 설정한 로그파일에 기록할 로그들에 대해 얼마나 자세한 내용을 로그로 남길것인가에 대해 설정하는 지시자입니다.

기록할 로그 Level 은 0 ~ 9까지 사용할 수 있으며 0은 로그를 기록하지 않겠다는 의미입니다. Level 숫자가 높을수록 자세한 로그를 기록합니다


RewriteCond

설정문법 : RewriteCond TestStirng CondPattern

RewriteCond 지시자는 RewriteRule 과 함께 사용되는 규칙으로 RewriteCond 다음에 오는 RewriteRule은 RewrieteCond 에서 설정한 패턴과 일치해야지만 RewriteRule들을 실행한다.


RewriteRule

설정문법 : RewriteRule Pattern Substitution

Rewrite 모듈의 실질적인 Rewrite 규칙들을 적용하는 지시자입니다.

Pattern(Input URL) 을 Subtitution(Return URL)로 변경하기 위한 모든 규칙들은 이 지시자를 사용해서 설정해야 됩니다.


Pattern(Input URL) 에는 Perl 정규표현식을 사용할수 있기 때문에 Input URL 의 규칙을 유연하게 적용할 수 있습니다. 이 강좌에서는 기초적인 정규표현식 사용방법만 다루고 정규표현식에 대해 자세히 알고 싶으신 분은 정규표현식에 대한 강좌나 인터넷 문서를 참고하시기 바랍니다.


정규표현식 기초

. : 다수의 한문자

? : 0개 이상의 한문자

* : 0개 이상의 문자 또는 문자열

+ : 1개 이상의 문자 또는 문자열

(chars) : (, ) 안의 문자또는 문자열을 그룹으로 묶습니다. 이 문자그룹은 Substitution(return URL)에서 $N 의 변수로 활용할수 있습니니다.

^ : 문자열의 첫문(열)을 지정합니다.

$ : 문자열의 끝 문자(열)을 지정합니다.

\(역슬래쉬) : 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거합니다.(예:(, ), [, ] . 등)

{n} : 정확히 n번 반복

{n,} : n번 이상 반복

{n,m} : n 이상 m 이하 반복

[chars] : 문자들의 범위 또는 표현할 수 있는 문자들을 설정합니다.
예) [a-z] : a 부터 z 까지의 소문자, [tT] : 소문자 t 또는 대문자 T

 

정규표현식 단축표현들

[:alpha:] : 알파벳. [a-zA-Z] 와 같은 표현

[:alnum:] : 알파벳과 숫자. [a-zA-Z0-9] 와 같은 표현

[:digit:] : 숫자 [0-9] 와 같은 표현

[:upper:] : 대문자. [A-Z] 와 같은 표현


RewriteRule 플래그

forbidden|F : 요청하는 페이지를 403 에러로 redirect 시킵니다. RedirectRule 이 적용되고 있는 페이지를 일시적으로 사용중단을 시키거나 사용자로 하여금 페이지 접근을 할수 없게 할 때 사용합니다.

) RewriteRule ^/test /home/blog/html/test.php [F]

사용자가 /test 로 접근할 경우 403 에러를 보냅니다.


gone|G
: 요청하는 페이지를 410 에러로 redirect 시킵니다. 410 에러는 페이지가 사라젔거나 존재하지 않는다는 메시지입니다. 이것도 forbidden 과 마찬가지로 RedirectRule 이 적용되던 페이지를 일시적으로 중단시킬 때 유용하게 사용할 수 있습니다.


last|L
: 이 플래그가 적용되면 뒤에 어떤 룰이 있더라도 이룰 아래의 규칙들은 적용되지 않고 RewriteRule 을 빠져나가게 됩니다. C, Perl, PHP 프로그램에서 루프를 빠져나가는 break 와 같은 의미를 가집니다.


chain|C
: 이 플래그의 결과를 다음 RewriteRule 의 input 값으로 사용합니다.
예)

RewriteRule ^(.+) %{HTTP_HOST}$1 [C]

RewriteRule ^([^.]+)\.domain\.com(.*) /home/$1/public_html$2

이 룰은 사용자 홈의 도메인을 2차 도메인으로 자동설정해 줄 때 많이 쓰는 룰입니다. RewriteRule의 input은 도메인을 제외한 URI 를 인식하기 때문에 도메인까지 인식을 시켜서 다음 RewriteRule 로 체크를 하기 위해 사용한 것입니다.


http://user_id.domain.com/hello.html 이란 요청이 들어오면  /home/user_id/public_html/hello.html 로 redirect 시켜줍니다. 위와 같이 2차 도메인을 이용해 계정 사용자의 홈을 지정하기 위해서는 DNS 세팅이 선행되어야 됩니다.


RwriteRule 설정예

1. http://yourdomain.com/user_id  ->  http://yourdomain.com/home.php?id=user_id

 

RewriteRule ^/([a-zA-Z0-9])$   /home/user_id/public_html/home.php?id=$1

설명 : 도메인(http://yourdomain.com) 뒤에 오는 영문숫자로된 문자열을 지정하면서 그룹으로 묶었습니다. 이렇게 그룹으로 설정된 문자열 Pattern 은 Substitution(return URL) 에서 $1 이라는 변수로 받아 사용하게 됩니다. 즉 http://yourdomain.com/superuser 라는 페이지 요청이 들어오면 실제로는 http://yourdomain.com/home.php?id=superuser 라는 페이지로 redirect 시켜줍니다. 블로그나 카페(동호회) 사이트에서 블로그 사용자의 ID 로 개인 블로그 주소를 부여할 때 http://blog.com/user_id 로 부여해 주지만 실제 실행되는 파일은 이와 같이 redirect 시켜주는 경우가 많습니다.

 

2. http://yourdomain.com/daum  -> http://www.daum.net

RewriteRule ^/daum$  -> http://www.daum.net

설명 : http://yourdomain.com/daum 라는 페이지 요청이 들어오면 도메인이 다른 http://www.daum.net 이라는 페이지로 redirect 시켜줍니다.



RewriteOptions

설정문법 : RewriteOptions Options

현재 사용할 수 있는 option 은 MaxRedirects=number 를 사용할 수 있으며 설정된 number값에 도달하게 되면 500 Internal Server Error 를 남기고 RewriteRule을 종료합니다.

잘못된 RewriteRule에 의한 무한 루프를 방지하기 위한 목적으로 사용되는데 시스템이 이유없이 다운된다거나 할 때 이 옵션과 Log 기록을 참고하여 디버깅 및 시스템 다운을 방지할 수 있습니다.


이 지사자는 Apache 2.0.45 이상에서 사용할 수 있습니다.


3. 실제 적용예

가상호스트 blog.xxx.ac.kr 에 대해 Rewrite Rule을 적용한 예입니다. 이 부분은 실제 운영되는 블로그 사이트를 위해 RewriteRule 을 적용한 예입니다.


DocumentRoot /home/blog/html

ServerName blog.xxx.ac.kr

# 여기까지는 일반적인 가상호스트 설정입니다.

RewriteEngine on

# RewriteRule을 사용하기 위해 On 으로 설정합니다.

 

RewriteLog /home/blog/rewrite_log_admin3.log

RewriteLogLevel 9

# Rewrite 실행중 Log를 남기기 위해 로그파일과 로그레벨을 지정했습니다.

 

RewriteRule ^/tb/([a-zA-Z0-9]+)/([0-9]+)$ /home/blog/html/blog/trackback\.php\?id=$1&post_no=$2

# 위설정은 블로그에 등록된 포스트의 트랙백 주소를 부여하기 위해 설정한 RewriteRule 로써 Pattern에 두개의 그룹이 존재하고 return URL에 순서대로 각 그룹을 $1 과 $2 로 받아 GET 변수로 치환한것입니다.

 

RewriteRule ^/xml/([a-zA-Z0-9]+)$ /home/blog/html/blog/rss_feed\.php\?id=$1

# 각블로그별 RSS 주소를 실제 파일로 지정한것입니다.

 

RewriteCond %{REQUEST_URI}     !^/admin$

RewriteRule ^/([a-zA-Z0-9]+)$ /home/blog/html/blog/main\.php?id=$1

# 먼저 RewriteCond 로 실제 존재하는 admin 이라는 디렉토리를 이어지는 RewriteRule에서 제외시키고 http://domain.com/user_id 로의 요청을 모두 /home/blog/html/blog/main.php?id=user_id로 redirect 시키는 룰입니다.

 

RewriteRule ^/([a-zA-Z0-9]+)/([0-9]+)$ /home/blog/html/blog/main\.php\?id=$1&post_no=$2

# /user_id/1345 로 요청하는 페이지를 /home/blog/html/blog/main.php?id=user_id&post_no=1345 로 redirect 시키는 룰입니다.

 

 

4. 마치면서

위에서 언급한 RewriteRule 뿐만 아니라 여러가지 상황에서 RewriteRule을 잘 활용한다면 아주 유용하게 웹페이지를 컨트롤 할수 있습니다.

RewriteRule 을 세팅하기 이전에 반드시 정규표헌식에 대해 어느정도 공부한후 적용해 보실 것을 권합니다.

2008/03/17 10:27 2008/03/17 10:27

Translate to English

번역 api에 대한 설명은 이 포스트를 참조하세요...

트랙백 주소 :: http://cybershin.x-y.net/tt/trackback/178

댓글을 달아 주세요

  1. kraznaya 2008/03/23 13:47  댓글주소  수정/삭제  댓글쓰기

    http://www.ilovejackdaniels.com/cheat-sheets/mod_rewrite-cheat-sheet/

리눅스 환경은 너무나도 익숙치 않아서,
그때그때 쓸일이 있을 때 마다 정리해 노코 있는 중...
금새 까먹을게 뻔하니 ㅠㅜ;


ps : process statistics. 실행 중인 process들을 보여줌.
     ps ax를 일반적으로 쓰며, grep으로 특정 process만을 출력함.
ex. ps ax | grep python


top : 사용중인 process들의 cpu 사용률을 계속적으로 보여줌


nice : process의 우선 순위 변경,
       -20 ~ + 20까지의 우선 순위 설정 가능
Usage: nice [OPTION] [COMMAND [ARG]...]


renice : 실행 중인 process의 우선 순위 변경
usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]
ex. renice -19 24785


sudo : 임시로 루트 권한으로 작업.
위의 명령 중, process의 권한을 바꾸는 작업은 관리자만 가능한 작업이므로
매번 로긴하는 귀차니즘으로 피하기 위하여 sudo 명령을 써서 관리자 권한으로 작업을 한다.
ex. sudo renice -19 24785
2007/08/20 16:26 2007/08/20 16:26

Translate to English

번역 api에 대한 설명은 이 포스트를 참조하세요...

트랙백 주소 :: http://cybershin.x-y.net/tt/trackback/105

댓글을 달아 주세요

  1. 2007/08/20 22:35  댓글주소  수정/삭제  댓글쓰기

    nice가 뭔지 궁금했는데, 이거로군...<br />
    sudo만 쓰면 "sudo"와 "sudo -"가 의미가 달라~<br />
    근데 뭐가 달랐지? ㅡ.,ㅡ)? ... 현재 계정의 프로파일에 관한 건데...

  2. Dsp 2007/08/21 12:14  댓글주소  수정/삭제  댓글쓰기

    물독 // 사장님 나이쓰... 머 그런거지 --;
    <!-- <zogNick><A HREF=&#039;http://www.dsphome.net/blog/&#039; title=&#039;http://www.dsphome.net/blog/&#039; target=_blank >Dsp</A></zogNick> <zogURL>http://www.dsphome.net/blog/</zogURL> -->


Programming in Lua
http://www.lua.org/pil/

위의 PIL을 redwiki 님께서 번역하셨네요.
( PIL2지만... http://www.redwiki.net/wiki/wiki.php/Lua )

저도 물론 며칠 전 질렀습니다~
위의 PIL이 공개되어서 사실 필요 없긴 하지만,
역시 인쇄된 한글판을 소장하고 싶어서 ㅠㅠ;
2007/08/17 16:22 2007/08/17 16:22

Translate to English

번역 api에 대한 설명은 이 포스트를 참조하세요...

트랙백 주소 :: http://cybershin.x-y.net/tt/trackback/104

댓글을 달아 주세요

  1. 태원 2007/08/18 02:29  댓글주소  수정/삭제  댓글쓰기

    루아의 세계에 들어오셨군요 ㅡ.ㅡ<br />
    게임에서 많이 쓴다고 해서 저도 어쩔 수 없이 보게 됐는데.. 다른 언어랑 조금 다른 특이한 면이 있더군요~

  2. Dsp 2007/08/18 10:20  댓글주소  수정/삭제  댓글쓰기

    태원 // 안녕하세요 ^^ 입문은 예전에 했습니다, wow 덕에요 ㅎㅎ.. <br />
    한글판이 나와서 곧바로 산거에요~ 전 영어 시러해서요 ㅎ
    <!-- <zogNick><A HREF=&#039;http://www.dsphome.net/blog/&#039; title=&#039;http://www.dsphome.net/blog/&#039; target=_blank >Dsp</A></zogNick> <zogURL>http://www.dsphome.net/blog/</zogURL> -->

  3. 2007/08/20 12:56  댓글주소  수정/삭제  댓글쓰기

    Python에 이어 Lua까지...? 스크립터 언어를 섭렵할 생각이냐?

  4. Dsp 2007/08/20 16:22  댓글주소  수정/삭제  댓글쓰기

    물독 // 섭렵이랄게 있냐... 파이썬은 회사에서 어쩔수 없이 쓰는거구... 루아는 와우 를 편하게 하려면 어쩔수 없이 알아야하는거구... ㅠㅜ;
    <!-- <zogNick><A HREF=&#039;http://www.dsphome.net/blog/&#039; title=&#039;http://www.dsphome.net/blog/&#039; target=_blank >Dsp</A></zogNick> <zogURL>http://www.dsphome.net/blog/</zogURL> -->

Cron 사용법

개발/linux 2007/07/20 19:06
리눅스 왕초보이다 보니 Cron에 대해서 정리해야겠다. ㅜ,.ㅠ;


기본적인 정보는 man cron 또는 crontab 을 통해 볼수 있다.
cron이 사용하는 기본적인 파일은 /ect/crontab이고 이는 보통 root권한으로 수행되는 작업들을 기술한다.
일반 사용자들은 crontab -e 를 이용하여 자신의 크론을 편집할수 있다.
일반 사용자가 정의한 crontab파일은 unix별로 약간씩 틀리지만 대개 /var/cron 또는 /var/spool/cron에 정보를 저장한다.
FreeBSD의 정확한 위치는 /var/cron/tabs 이다.

사용자별 crontab은 보통 user id를 파일명으로 하고 있다.
이 파일내의 형식을 살펴보면 기본적으로

분, 시간, 날짜, 월, 요일, 실행파일의 순서로 정의된다.

예를 들어,
35 17 * * * echo "Dinner time"
35 12 * * * echo "Lunch time"

이 예제는 매일 오후 5:35분, 12:35분에 메시지를 출력한다.
('*'는 모든 범위를 나타낸다.)

다음은 각 필드에 대한 범위이다.
+---------------------------
  1    2     3    4     5
+---------------------------
  분  시간 날짜  월  요일
0~59  0~23 1~31 1~12 0~6
+---------------------------
(요일은 일요일부터 시작(0=일요일) 한다)
2007/07/20 19:06 2007/07/20 19:06

Translate to English

번역 api에 대한 설명은 이 포스트를 참조하세요...

트랙백 주소 :: http://cybershin.x-y.net/tt/trackback/96

댓글을 달아 주세요

  1. 2007/07/22 22:54  댓글주소  수정/삭제  댓글쓰기

    뭐하는 명령어인고?

  2. 신호철 2007/07/23 01:19  댓글주소  수정/삭제  댓글쓰기

    엉... 설정한 시간에 주기적으로 자동 수행시키기 놀이...

  3. Dsp 2007/08/10 17:21  댓글주소  수정/삭제  댓글쓰기

    숫자의 범위가 사용될 수 있다. 범위는 하이픈(`-&#039;) 문자로 지정하며, 앞에 숫자가 뒷 숫자보다 작아야한다. 예를 들어, 시간 필드에 ``8-11&#039;&#039; 이 오면, 8, 9, 10, 11시를 뜻한다.<br />
    <br />
    또한 이 값들은 나열될 수 있으며, 그 구분은 쉼표(`,&#039;)로 한다. 예: ``1,2,5,9&#039;&#039;, ``0-4,8-12&#039;&#039;.<br />
    <br />
    값의 범위를 지정할 때, 특정 단위로 건너 뛸 수 있는데, 이것은 그 범위 다음에 ``/<숫자>&#039;&#039; 형식으로 덧붙혀 준다. 예를 들어, 시간 필드에 ``0-23/2&#039;&#039; 값이 사용되면, 이것은 두시간 마다, 즉 ``0,2,4,6,8,10,12,14,16,18,20,22&#039;&#039; 시를 뜻한다. 또한 ``매 두시간 마다&#039;&#039;라는 뜻으로, ``*/2&#039;&#039; 이런식으로 사용될 수 있다.<br />
    <br />
    ``달&#039;&#039;과 ``요일&#039;&#039; 필드에는 그 달의 이름과, 요일의 이름이 사용될 수 있다. 이 이름의 앞에서부터 세글자 정도만 구별되면 된다. 이 이름을 사용할 때는 범위가 지정될 수 없다.<br />
    <br />
    여섯번째 필드(줄의 마지막)에는 실행시킬 명령이 온다. 그 명령이 실행될 때 줄을 나누는 것은 `%&#039; 문자로 하며, 즉, 이것은 쉘에 의해서 다른 명령이 실행됨을 의미한다. (`%&#039; 문자 앞에 있는 것이 하나의 쉘 명령이며, 뒤에 있는 것이 또다른 하나의 쉘 명령임을 뜻한다.) 또한 한 명령인데, 부득이하게 줄을 나누워야 할 경우에는 백슬래쉬(\) 문자를 사용한다.<br />
    <br />
    참고: 날짜와 요일의 지정에서 중복되는 경우는, 그것이 모두 포함된다. 예를 들어,<br />
    ``30 4 1,15 * 5&#039;&#039; 이것은 매달 1일, 15일날 4시 30분에 실행되면서, 또한 매주 금요일날도 함께 실행됨을 의미한다.