블로그 이미지
.
속눈썹맨

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

내가 원하는 Text file editor(or viewer) 기능들

2004. 11. 18. 01:59 | Posted by 속눈썹맨
Text file editor(or viewer)

1. UI : outlook, outlook express와 비슷할 것
   왼쪽 : 폴더 탐색
          vim -> 창 -> 파일 익스플로러 나누기

   오른쪽 상단 : 파일 탐색(혹은 text 파일의 첫번째 줄 보여주기)

   오른쪽 하단 : 파일 내용

   outlook처럼 버튼 하나로 쉽게 저장됨

2. 정렬 기능 : 파일명순, 날짜순, 크기순
   -> 탐색기

3. 문자열 search 기능
   문자열을 입력하면 그 문자가 들어있는 모든 문서를 찾아줌.
   -> acroedit, crimson editor

4. 폴더의 파일 갯수 표시 기능

5. MDI 지원(여러창이 탭으로 표시됨)
   -> acroedit, crimson editor

6. vim 모드 지원
   참고 gvim 6.3부터 MDI 모드를 지원함 :help -P
   http://www.karpfenteich.net/pit/vimall.html
   http://vimdoc.sourceforge.net/htmldoc/starting.html#MDI

7. IDE(Integrated Development Environment)
    - eclipse, jEdit, CWD Text edit, zeus edit

참고
http://www.jedit.org/
http://www.wim.org/
http://www.gwdsoft.com/
http://www.zeusedit.com/
http://www.crimsoneditor.com/
crimsoneditor : acroedit와 비슷하나, 좀 더 보기 좋음.

perl 자주 쓰는 것 tip

2004. 11. 18. 00:00 | Posted by 속눈썹맨
if (조건) {

} elsif (조건) {

} else {

}

숫자 비교 : >, <, >=, <=, ==
문자 비교 : le, ge, gt, lt, eq, ne

표준 입력 읽기
while ($line = <STDIN>)
{

}

출력하기
print "문자열\n";

hash 선언 : my %변수명;
hash 입력 : $변수명{"키"} = 값;
hash 출력 : $변수명->{"키"}
array 선언 : my @변수명 = ();
array 입력 : $변수명[인덱스];
array 출력 : $변수명[인덱스];

function argument 넘기기

sub 함수명 {
    my $변수1 = shift;
    my $변수2 = shift;
}

sub 함수명 {
   my ($변수1, $변수2) = @_;
}

array나 hash를 넘기려면 함수의 prototype을 정해줘야 함. 아무튼 매우 까다로움.

array의 array 만들기(n차원 array)
my @template
push @template, [ $url_pattern1, $html_pattern1, $replacement_pattern1 ];
push @template, [ $url_pattern2, $html_pattern2, $replacement_pattern2 ];
template의 1차원 마지막 index에 [0], [1], [2] 에 값이 들어감

값 꺼내기
for my $i (0 .. $#template) {
  my $url_pattern = $template[$i][0];
  my $html_pattern = $template[$i][1];
  my $replacement_pattern = $template[$i][2];
}

참고) Oreilly, Programming Perl, Chapter 4. References and Nested Data Structures
        4.6 A Brief Tutorial: Manipulating Lists of Lists

변수에 들어가 있는 값을 evaluation하여 substitution하기
($1, $2를 evaluation하기 위함임)
$line =~ s/$html_pattern/ eval "$replacename_pattern" /eg;
$replacename_pattern의 내용
"> <a href=\"http:\/\/게시판.com?id=$1&num=$2\"><\/a>" - 파일에서 읽어들인 것임.

알파벳 a~z까지 찍기
for my $i ('a' .. 'z')
{
   print $i."\n";
}

perl module 만들기(*.pm 파일)

2004. 11. 17. 14:51 | Posted by 속눈썹맨
[pm 파일에 들어갈내용]
#!/usr/bin/perl -w
package 패키지명
use Exporter:
@ISA = ('Exporter');
@EXPORT = qw(&함수명, &함수명, ... , 변수명);

sub 함수명 {

}

1;

[*.pl에서 사용할 때]
#/usr/bin/perl -w
require "파일명.pm";
use 패키지명;

함수명(argument);

참고
perl cookbook chapter.12

공무원과 군인의 일반적인 처분들

2004. 11. 17. 00:21 | Posted by 속눈썹맨
파면 : 해고되고 연금도 안나옴, 형사범 취급을 받음
해임 : 해고되지만 연금은 나옴, 퇴직금 수령가능
직위해제 : 직업은 유지되고 직위만 없어짐
강등 : 지위가 낮아짐
정직 : 일정기간동안 일을 못함
감봉 : 월급이 줄어듬
영창 : 구금
근신 : 일정 장소에서 비행을 반성함
견책 : 훈계하고 회개함

Boost - Portable C++ source libraries

2004. 11. 16. 15:48 | Posted by 속눈썹맨
work well with the C++ Standard Library
http://www.boost.org/

Document
http://www.boost.org/libs/libraries.htm

환경 : RedHat 9.0

boost-jam 다운로드
http://prdownloads.sourceforge.net/boost/boost-jam-3.1.10-1.i386.rpm?download

boost-jam 설치
sudo rpm -Uvh boost-jam-3.1.10-1.i386.rpm

boost 다운로드
http://prdownloads.sourceforge.net/boost/boost_1_32_0.tar.gz?download

boost 설치
cd /svc/neo/local/src
tar xzvf boost_1_32_0.tar.gz
cd boost_1_32_0
export PYTHON_LIB_PATH="/usr/lib/python2.2/config"
export PYTHON_INCLUDES="/usr/include/python2.2"
bjam "-sTOOLS=gcc" --prefix=/svc/neo/local/boost_1_32_0 install
설치 소요시간 : 30분(Intel Xeon 2.8 Dual 서버, Hyperthreading을 켰을 때 - CPU 4개로 보임)

include path
-I/svc/neo/local/boost_1_32_0/include/boost-1_32

library path
/svc/neo/local/boost_1_32_0/lib

Redhat 7.3의 경우
1. glibc 2.2.5가 깔려있기 때문에 boost-jam-3.1.4를 설치해야 함.
2. python 1.5만 깔려 있으므로 python 2.2를 설치 해야 함.
ftp.sayclub.com:/pub/Linux/redhat/linux/7.3/en/os/i386/RedHat/RPMS/python2-*
(python2-2.2-16.i386.rpm
python2-devel-2.2-16.i386.rpm
python2-docs-2.2-16.i386.rpm)
sudo rpm -Uvh python2-*

설치시 실패 혹은 통과한 부분이 72개 나오고, 설치 후 application의 컴파일이 안됨.
(기본 헤더파일인 locale, ostream 등. include 파일이 없다고 나옴.
locale.h, ostream.h 등을 symbolic link 건 후에도 다른 에러가 계속 남.)
-----------------------
test code
$ cat Makefile
CXXFLAGS=-W -Wall -g
INCLUDES=-I./ -I/svc/neo/local/boost_1_32_0/include/boost-1_32
LIBS=-L/svc/neo/local/boost_1_32_0/lib

all: test1

test1: test1.cpp
        $(CXX) $(CXXFLAGS) $(INCLUDES) $(LIBS) $@.cpp

$ cat test1.cpp
#include <iostream>
#include <string>
#include <vector>
#include "boost/algorithm/string.hpp"

using namespace std;
using namespace boost;

int main()
{
// 문자열 split 예제

    string test1 ="Hello, wordl!, hmm";

    vector<string> result;
    split(result, test1, is_any_of(" "));

    vector<string>::iterator iter = result.begin();
    vector<string>::iterator iter_end = result.end();

    for (; iter != iter_end; iter++) {
        cout << *iter << endl;
    }
}

. Visual Studio .NET 2003에서 boost 사용하기
. 다운로드
http://www.boost.org/
-> download -> boost-jam-3.1.11-1-ntx86.zip, boost_1_33_1.exe

. 압축풀기
boost-jam-3.1.11-1-ntx86.zip를 푼다.
c:\lib에 boost_1_33_1.exe를 푼다.(self-extracted file)
(c:\lib\boost_1_33_1이라는 디렉토리가 생기고 풀린다.
bjam.exe를 c:\lib\boost_1_33_1\ 로 복사한다.

. 설치
Visual studio의 cmd 실행
C:\lib\boost_1_33_1>"c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat
bjam -sTOOLS=vc-7_1 --without-python stage
=> .NET 2002의 경우 vc7 .NET 2003의 경우 vc-7_1
(탐색기에서 모든 *.jam 파일을 검사하여 알아냈음)
.NET 2003에서 vc7으로 컴파일하면 컴파일은 잘 되지만
나중에 사용할 때 lib 파일을 다른 것으로 찾아서 실행이 안됨.
=> libboost_wave에서 error : buffer overrun detected가 몇 번 남
=> failed updating 6 targets
skipped 24 targets
updated 3734 targets
=> install, stage 옵션을 안주면 컴파일만 하고 include, lib 디렉토리가 안 생김.
install 옵션을 주면 c:\boost라는 디렉토리를 만들고 복사
stage 옵션을 주면 c:\lib\boost_1_33_1\stage에 만듬

. 이용
Project -> Property -> C/C++ -> General -> Additional Include Directories -> C:\lib\boost_1_33_1
Linker -> General -> Additional Library Directories -> C:\lib\boost_1_33_1\stage\lib

. 참고
http://blog.naver.com/chalgoguma?Redirect=Log&logNo=100005083301
http://blog.naver.com/redsusia?Redirect=Log&logNo=60002340337

[펌]색온도(色溫度, color temperature)

2004. 11. 13. 13:28 | Posted by 속눈썹맨
광원의 빛을 수치적(數値的)으로 표시하는 방법.
  
본문

이상적인 흑체[完全黑體]가 방출하는 빛의 색은 플랑크의 복사법칙(輻射法則)에 의해 온도에 의해서만 정해진다. 물체가 가시광선을 내며 빛나고 있을 때 그 색이 어떤 온도의 흑체가 복사하는 색과 같이 보일 경우, 그 흑체의 온도와 물체의 온도가 같다고 보고 그 온도를 물체의 색온도라고 한다. 즉, 물체의 색온도는 같은 색광의 흑체의 온도(절대온도 K)로 표시된다.

가령 전구의 빛은 2,800K, 형광등의 빛은 4,500∼6,500K, 정오의 태양빛은 5,400K, 흐린 날의 낮빛은 6500∼7000K, 맑은 날의 푸른 하늘 빛은 1만 2000∼1만 8000K 정도의 색온도이다. 색온도의 측정법은 국제적으로 정해져 있으며, 적당한 색유리 필터와 표준광원을 써서 측정한다. 색온도는 일반적으로 실제 온도보다 다소 높게 매겨진다. 고온의 노(爐) 안 온도를 측정하는 데에는 이 원리를 응용한 광고온계(光高溫計)가 있다.

socket++

2004. 11. 11. 14:21 | Posted by 속눈썹맨
socket++ 설치
http://members.aon.at/hstraub/linux/socket++/
wget http://www.hstraub.at/linux/downloads/RPMS/RedHat-8.0/socket++-1.12.10-1.i386.rpm
sudo rpm -Uvh socket++-1.12.10-1.i386.rpm

URL parsing하기

2004. 11. 10. 17:29 | Posted by 속눈썹맨
URL을 입력 받아 domain만 얻기(shell script)

grep "http:" | sed "s/http:\/\/\([a-z0-9\._-]*\).*\( \)/\1 /g"

URL을 domain, path, query로 나누기
my ($host, $path, $query, $frag)
     = ($url =~ m|http://([^\?/\#]*)([^\?\#]*)?([^\#]*)?(.*)?|);

shell scripts에서 text 파일 읽기

2004. 11. 10. 15:55 | Posted by 속눈썹맨
shell script에서 $SEED_URL_LIST라는 파일을 한 줄씩 읽고
URL, FILENAME으로 parsing하여 출력하는 예제(공백문자를 기준으로 split)

예)
while read URL FILENAME; do
     echo "URL : $URL";
     echo "FILENAME : $FILENAME";
done < $SEED_URL_LIST

DDD(Data Display Debugger) 사용법

2004. 11. 10. 15:16 | Posted by 속눈썹맨
ddd 사용법
http://www.gnu.org/manual/ddd/html_mono/ddd.html

실행하기 : run
command line argument 넣는 법 : run "command line argument"
다음 줄로 넘어가기(subroutin으로 안 들어감) : step
다음 줄로 넘어가기(subroutin으로 들어감) : next
종료 : finish

break point 설정 : 소스에서 마우스 오른쪽 클릭 "Set breakpoint"
                   소스의 변수 위에서 마우스 오른쪽 클릭 "break at 변수"

Data View창에서 값 보기 : graph display 변수명
                          graph display 배열시작위치@(범위)

보기 싫은 변수값 숨기기 : data view 창에서 마우스 오른쪽 "undisplay"
data view창에서 보여주는 위치 변경 : drag and drop

변수값 보기 : 변수 위에서 마우스 왼쪽 클릭 -> display 변수

창 크기 바꾸기 : 스크롤 바 근처에 붙은 튀어나온 작은 상자를 클릭