Archive for the ‘Utility Programs’ Category

gnuplot으로 3차원 그래프 그리기

일요일, 5월 31st, 2009

image

 

 

plot.txt를 다음과 같이 만듭니다.

1   1   23899.419542
1   2   12610.944833
1   3   8971.098750

1   20  8601.175000

2   1   23887.139833
2   2   12471.028667
2   3   9263.998792

2   17  8109.114042
2   18  8234.272542
2   19  8234.607792
2   20  8223.569792

3   1   23882.014542
3   2   12674.229583
3   3   9317.152625

이렇게 3 개 값이 한 줄에 있도록.

그리고 파일의 맨 첫째줄과 중간중간 빈 줄을 넣어줘야 합니다.(아마 앞의 값이 바뀔 때마다..)

 

그리고 gnuplot을 실행하고 프롬프트에서

gnuplot> splot “plot.txt” with pm3d

이렇게 splot과 with pm3d를 쓰면 됩니다.

 

splot [0:5] [0:20] [24500:25500] “plot0.txt” with pm3d

이렇게 x y z 축 범위를 정해줄 수 있습니다.

gnuplot으로 3차원 그래프 그리기

일요일, 5월 31st, 2009

image

 

 

plot.txt를 다음과 같이 만듭니다.

1   1   23899.419542
1   2   12610.944833
1   3   8971.098750

1   20  8601.175000

2   1   23887.139833
2   2   12471.028667
2   3   9263.998792

2   17  8109.114042
2   18  8234.272542
2   19  8234.607792
2   20  8223.569792

3   1   23882.014542
3   2   12674.229583
3   3   9317.152625

이렇게 3 개 값이 한 줄에 있도록.

그리고 중간중간 빈 줄을 넣어줘야 합니다.(아마 앞의 값이 바뀔 때마다..)

 

그리고 gnuplot을 실행하고 프롬프트에서

gnuplot> splot “plot.txt” with pm3d

이렇게 splot과 with pm3d를 쓰면 됩니다.

원격 데스크탑에서 화면이 까맣게 되고 아무것도 안나올 떄

토요일, 5월 23rd, 2009

Ctrl-Alt-End 키를 시도해보세요.

 

접속에 한번 실패하거나 해상도 관련된 문제로 프로세스가 죽거나 해서 원격데스크탑에 접속해도 화면이 까맣게 되고 아무것도 안나올 떄가 있습니다.

 

이럴 때는 Ctrl-Alt-Del로 나오는 메뉴에서 작업관리자를 부르거나 로그오프하면 될 겁니다.

 

원격데스크탑에 Ctrl-Alt-Del을 보내는 방법은 Ctrl-Alt-End 키입니다.

http://qaos.com/article.php?sid=2740

꼼수로 그린 트레이스 그래프 - gnuplot

금요일, 4월 24th, 2009

image

4개 쓰레드가 돌고 있는데 언제 다른 쓰레드를 기다리고 언제 일했는지 보고자 했습니다.

다른 방법이 없나 모르겠는데 엄청 삽질했습니다.

gnuplot으로 그리긴 했는데 완전 꼼수

방법은 object rect로 상자 그리고

화면 밖에다가 그래프 그어서 그리기 입니다.

set object 197 rect from 10572.5589,1.6 to  10590.3039,2.4 fc lt 1 lw 0
set object 198 rect from 10600.7679,1.6 to  10603.6261,2.4 fc lt 1 lw 0

이런식으로 object에 일련번호 붙여서 상자 만들어놓고

plot [0:10819.649917] [-1:4] -2

이렇게 plot 영역을 0~10819 세로로 -1~4 로 잡고 그래프는 y=-2로 잡았습니다. 화면 밖이라 그래프는 안나오구요.

추가로

set key off

로 legend 없앴습니다.

눈금 없애기나 마지막 포인트 값 프린트 그런 것도 필요하지만 일단 여기까지만 해도 감지덕지

참고로 pthread_cond_wait을 잡은거라 쓰레드가 스케줄 아웃되었는지 어쩐지는 안나옵니다. 저렇게 빨갛게 다 칠해놨어도 중간에 다른 프로그램이 돌거나 idle로 나간 경우가 있단 얘기. lock이나 세마포어도 안나오는 거구요

상자 색깔은 fc lt 다음에 숫자로 나타냅니다. 아마 논문서 나오는 게 이런걸로 한 거 같네요. 라인 타입이 대시면 흑백으로 대시로 나오나봅니다.

image
lw는 line width입니다. 테두리 없는 게 예쁘길래 0 으로 했죠

gnuplot 실행뒤에

load “plot_cond.txt”

로 불러와도 되고

$ gnuplot -persist “plot_cond.txt”

로 셸에서 입력해도 됩니다.

저 그림을 나오게 하는 plot 파일입니다. plot_cond1

참고 페이지
http://gnuplot.sourceforge.net/demo/rectangle.html
http://nucl.sci.hokudai.ac.jp/~ohnishi/Lib/gnuplot.html
http://coffeenix.net/doc/gnuplot/gnuplot.html

netcat으로 원격 실행

목요일, 3월 19th, 2009

신뢰하는 시스템간에서 간단하게 원격 명령을 시키고 싶을 때

(저는 임베디드 보드랑 호스트의 경우였습니다)

호스트에서 스크립트로 명령어를 전송하면 타겟에서 실행하게 하고 싶었어요

 

nc를 사용했습니다.

타겟은 서버가 되고 호스트는 클라이언트가 됩니다.

서버(타겟)

서버 스크립트 (/root/ncsrv_daniel.sh)

#!/bin/sh
while true
do
echo starting new nc session
nc -v -l -p 1234 -e /bin/sh
done

shell 을 띄우도록 설정.

타겟의 프롬프트에서 해당 스크립트 실행

 

클라이언트(호스트)

호스트 스크립트

echo ./remCmd.sh\;exit | nc 192.168.1.111 1234[1]

nc로 접속한다음 ./remCmd.sh;exit를 입력하도록 함.

remCmd.sh가 원격으로 타겟에서 실행하고자 하는 프로그램. 타겟의 /root/에 있음.

 

테스트 스크립트 (nctest.sh)

#!/bin/bash

ok_count=0
fail_count=0

for i in `seq 1 100`;     100번 반복 테스트.
do
echo ${i}th run…
echo ./remCmd.sh\;exit | nc 192.168.1.111 1234
result=$?
echo done ${i}th run. return $result
if [ $result -eq 0 ] ;
then
((ok_count++))
else
((fail_count++))
fi
sleep 1      종료후 nc 서버가 다시 뜨는 데 시간이 걸려서 기다려줌.
done
echo OK: $ok_count
echo FAIL: $fail_count


[1] 또는

nc 192.168.1.111 1234 –c “echo ./remCmd.sh\;exit” (또는 적절한 스크립트)

를 실행해도 될 것임. (테스트해보진 않았음)

awk 에서 shell 변수 사용하기

금요일, 2월 13th, 2009
awk 에서 shell 변수 사용하기 - http://devfrog.egloos.com/293560

#!/bin/sh
if [ $# -ne 4 ]
then
    echo “Usage: log_cnt <file_name> <err_code> <log_point|0> <proc_hour>”
    exit
fi
cnt=1
if [ $3 -ne 0 ]
then
cat $1 | awk ‘BEGIN{FS=”;”}{ if ( $10 == ‘”${2}”‘ && $7 == ‘”${3}”‘ ) print }’ | grep ^$4 | wc -l
else
while [ "$cnt" -ne 5 ]
do
    echo “log point $cnt: c”
    cat $1 | awk ‘BEGIN{FS=”;”}{ if ( $10 == ‘”${2}”‘ && $7 == ‘”${cnt}”‘ ) print }’ | grep ^$4 | wc -l
    cnt=`expr $cnt + 1`
done
fi
—–
shell script 에서 awk 표현식 안에서 shell 의 input parameter 를 쓸 경우가 있다.
이때, awk 에서 shell 변수로 인식시키기 위해서는 ‘ ” ${변수명} “  ‘ 과 같은 방식으로 사용해야 한다.

vim에서 탭 사용하기와 마우스

금요일, 11월 14th, 2008

image

putty에서 탭을 사용한 vi를 띄운 상태입니다.

vim7.0이상에서 지원되며

사용법은

:tabnew 파일명

입니다 (맨 윗줄에 탭 바가 생김)

http://kltp.kldp.org/stories.php?story=07/01/25/5010287

:tabn

:tabp

로 이동가능한데

이게 귀찮아서 마우스를 enable 시켰습니다.

:set mouse=n

전 으로 했습니다. (n이나 a가 적당한 듯)

그런데 그렇게 하니 putty에서 편리하게 쓰던 더블클릭(낱말이 선택됩니다)이 기능이 바뀌더군요

그래서 약간 불편하지만 마우스 모드를 바꾸고 쉬프트를 활용했습니다

:set mousem=popup

이렇게 하고,

쉬프트로 더블클릭하면 원래 터미널(putty)에서 마우스 기능과 비슷하게 선택이 됩니다. 드래그도 먹구요

이렇게 쓰려구요.

shc - 셸 스크립트 컴파일러

목요일, 10월 30th, 2008

image

http://www.datsi.fi.upm.es/~frosal/sources/shc.html

셸 스크립트를 컴파일할 수 있습니다. 스크립트를 그냥 텍스트형태로 쓰지 않고 바이너리 파일로 만들어서 쓰게 해줍니다.

셸 코드를 보여주고 싶지 않을 때 쓸 수 있겠지요.

사용법

$ shc -f <script.sh>

 

shc를 실행하면  -f로 이름을 준 스크립트 파일을 읽어서 <스크립트이름.x.c> 파일의 C 소스코드를 만들고 그걸 컴파일 해서 스트립한 바이너리를 <스크립트이름.x>를 만들어줍니다.

 

$ ls run_tests.sh*
run_tests.sh  run_tests.sh.x  run_tests.sh.x.c

$ file run_tests.sh.x
run_tests.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped

Camstudio로 vista 에서 화면 녹화하기

수요일, 8월 6th, 2008

[Flash] recorded rmrf2.swf

이전에 쓴 글처럼, camstudio로 화면 녹화를 할 수 있습니다.
http://camstudio.org/

현재 2.5 베타1이 나와있네요.
윈도 vista에서 실행하려면 어찌해야 할 지 살펴봤습니다.
avi로 녹화하는 건 잘 되는데 플래시로 녹화하거나 변환하는건 에러가 나는군요
일단 avi로 먼저 만든 후에 swf 변환에 가서 옵션중에 Add preloader와 Add player control을 없애니 안죽고 나옵니다.
추가로 Camstudio->options->program options->Temporary directory for encoding을 Use installed directory로 경로조정하였습니다.
그렇게 해서 만든 화면이 저겁니다.
rm -rf /
(실제로 실행하면 큰일 나는 무서운 명령어죠. 그럴수록 자꾸 해보고 싶어지는.. 재미삼아 모양 내봤습니다.)
그림 1) camstudio의 옵션에서 temporary 디렉토리 변경.(죽는 것을 해결하는데 도움이 되는건 아닐 수도 있음)

사용자 삽입 이미지

그림2) swf 변환시 옵션.(먼저 avi로 녹화후 변환할 때 옵션 변경해준다)

사용자 삽입 이미지

putty에서 ls 색상 맘에 안들 때

화요일, 6월 3rd, 2008

image

레드햇 페도라 코어 6입니다.

putty로 접속하면 이처럼 디렉토리 색깔이 맘에 참 안듭니다.

그래서 매번 putty 색상을 수정하곤 했습니다.

image

데비안 4.0입니다. 색깔이 좀 더 보기 쉽지요?

디렉토리 색깔이 특히 밝아서 맘에 듭니다.

이 차이는 어디서 나오냐면, LS_COLORS라는 환경변수입니다. (관련 링크, 관련링크2)

LS_COLORS를 보지요.

# echo $LS_COLORS
no=00:fi=00:di=00;34:ln=00;36:…..생략

규칙은 [특수파일|*.확장자]= [속성];[색]
이고, 구분자는 “:” 입니다.

di는 디렉토리를 의미하고 속성 00에 색 34라고 돼 있네요.

데비안의 세팅을 보면

$ echo $LS_COLORS
no=00:fi=00:di=01;34:ln=01;36:

이렇게 01 로 속성이 돼 있습니다. 이러면 putty에서 bold 색상이 됩니다.

image image

이렇게 Blue Bold와 그냥 Blue는 차이가 있습니다.

putty에선 Bold 색상이 더 밝아서 어두운 배경에 더 잘 보입니다.

> 그러므로 putty에서 색이 맘에 안들 때는 LS_COLORS를 고쳐주면 됩니다.

이렇게 .bashrc에 써줍니다.

export LS_COLORS=’no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:’

이런식으로 맘에 안드는 부분들을 Bold로 변경하면 됩니다.

————
ansi 색상표
————
[text num] [bg num] [color]
30 40 black
31 41 red
32 42 green
33 43 yellow
34 44 blue
35 45 magenta
36 46 sky
37 47 white

——-
속성(?)
——-
00 delete_method
01 bold
05 blink
07 reverse

[출처] 리눅스의 터미널 색상 변경.|작성자 레올로

http://dag.wieers.com/blog/improving-putty-settings-on-windows

Change dark colours on a black background.
One of the more annoying things with terminal applications (xterm has the same issue) is that by default dark-blue is too dark to be visible on a black background. Not only is this frustrating, it makes the experience for new users so bad that they prefer to disable colours (or hate the ls colour output or syntax highlighting in vim).

So if you are like me, go to Category: Window > Colours and select ANSI Blue in the Select a colour to adjust to Red:74 Green:74 Blue:255. I do the same for ANSI Blue Bold to Red:140 Green:140 Blue:255.