Archive for the ‘Tips’ 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

엑셀에서 가로 세로 셀을 바꾸기

목요일, 3월 19th, 2009

http://k.daum.net/qna/view.html?qid=2d7Pn

image

image

내용을 그대로 복사합니다
다른위치에 오셔서 마우스 오른쪽 버튼을 누르고
선택하여 붙여넣기를 실행합니다
대화상자 아랫쪽에 행/열 바꿈을 선택하고 확인을 클릭합니다

Date로 시간 세팅

목요일, 3월 19th, 2009

date “+%Y%m%d %T”

하면

20090319 07:20:25

이런 식으로 나옵니다.

한 서버에서 이렇게 프린트한 다음,

이걸 복사해다가

다른 서버에

date “+%Y%m%d %T” -s “20090319 07:20:25″

해주면 그 시간으로 세팅됩니다.

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” (또는 적절한 스크립트)

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

gizmosms 해외에 문자보내기

월요일, 3월 2nd, 2009

http://www.gizmosms.com/

image

http://paperinz.com/789 에 나온 겁니다.

Gizmo SMS 는 인터넷 웹사이트에서 무료로 문자를 보낼 수 있는 곳이다  재미있는 점은 세계 50여개국에 어떤 핸드폰이든 상관없이 문자를 보낼 수 있다는 점이다  게다가 회원가입도 필요없고 이메일 조차 요구하지 않는다

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 변수로 인식시키기 위해서는 ‘ ” ${변수명} “  ‘ 과 같은 방식으로 사용해야 한다.

bash wait 명령어

수요일, 2월 11th, 2009

bash 스크립트에서 백그라운드로 실행시키는 스크립트가 있을 때 그 스크립트의 종료를 기다려 처리하고 싶은 일이 있을 때가 있죠

그때 쓰는 게 wait입니다.

#!/bin/sh
./sort_db.sh &
echo “1st Line”
./bkptmp.sh &
echo “2dn line”
wait
echo “Some operation will follow this”

이런식으로 쓰면 됩니다. &로 백그라운드 실행한 스크립트를 기다려줍니다.

http://unstableme.blogspot.com/2008/06/bash-wait-command.html

Task contention상황에서 QoS를 위한 연구를 하는 중인데 스크립트로 돌리려니 이게 필요해서 찾아봤습니다.