[카테고리:] 컴퓨터

  • 종이 크기 바꾸기

    \documentclass[14pt,b5paper]{article}

    documentclass 명령 뒤에 옵션으로 14pt b5paper를 쓴 것은 a4종이 대신 b5종이를 쓰기 위한 노력이었다.

    근데 이걸 그대로 latex + dvipdf를 이용해서 컴파일 했더니 여전히 전체가 a4에 인쇄된다.

    정확히는, 편집된 결과는 b5위에 인쇄가 되어 있는데, 인쇄되는 종이의 크기가 a4가 되어 있었다. pdf파일에서 보이는 종이 크기는 a4인데 글자들이 b5위에 있는 것으로 된 것이다.

    geometry 패키지를 쓰면 된다고 하여 써봤다.

    \usepackage[b5paper]{geometry}

    그랬더니 문제가 해결되는 것 같았는데, 논문의 겉표지, 속표지, 인정서 부분이 a4로 나오는 것이다. 여긴 클래스 화일에서 서식을 지정할 때 형식이 없는 페이지로 지정하는 바람에 그렇게 된 것 같다. 아무튼, 그리하여 이 문제를 해결하려고 백방으로 검색을 하다가 잘 못찾아서 ktug에 문의했다. 그 결과

    http://faq.ktug.or.kr/faq/LayOut/%C6%C7%C7%FC#s-4

    을 참고하라는 답을 얻었다.

    그곳을 참고한 결과, 종이 크기가 잘 안맞을 때는 강제로 맞춰주면 된다는 답을 얻었다. 그 명령이 바로

    \special{pdf: pagesize width 190truemm height 260truemm}

    이다.

    아무튼, 덕분에 원하는 결과를 얻을 수 있게 되어 다행이었다.

    답변해주신 “도은이아빠’ 님게 다시한번 감사드린다.

  • 파이어 폭스에서 설치 안되는 플러그인 강제로 설치하기

    설치 안되는 플러그인을 억지로 설치할 수는 있습니다.

    일단 어떤식으로든 xpi파일을 다운받아서 확장명을 zip로 바꾸고 압축을 풀어주면 그 안에 install.rdf가 있습니다.

    구글 툴바 xpi파일의 주소는

    http://dl.google.com/firefox/google-toolbar-win.xpi

    군요.

    윈도우라면 이걸 IE에서 열면 다운받을 수 있고, 리눅스라면 wget을 쓰면 되겠죠.

    아무튼, install.rdf를 열어보면 maxVersion이 있는데, 이 부분을 2.0에서 3.0으로 바꿔주면 간단합니다.

    이제 수정을 마치면 저장하고, 통째로 zip형식으로 압축한 후 확장명을 xpi로 바꿔서 파이어폭스로 드래그&드롭을 통해
    넣어주면 설치가 됩니다. 1.5->2.0 갈때도 이렇게 해서 호환 안되는 많은 플러그인을 억지로 사용했었죠 -_-;

    윈도 버전에서 구글 툴바는 방금 설치 되는걸 확인했습니다. 다른 운영체제에서도 잘 될겁니다.

    물론 제작자가 보증하는 작동 가능 버전이 아니므로 무슨일이 벌어질지 절대 보증 못합니다.

    그러나 아마 괜찮지 않을까 생각합니다.

    *저자의 허락 없이 무단으로 퍼온것 같은 느낌의 글이지만 KLDP에 내가 쓴 글이다.

    http://kldp.org/node/88523#comment-419246

  • 퍼큘레이션

    후배가 좀 도와달래서 짜준 프로그램. 출력물을 gnuplot으로 점 찍어보면 뭔가 재미난게 나온다. 뭐하는 프로그램일까요? Giordano의 전산물리 교재에 보면 정답이 있다고 합니다. 저는 그냥 알고리즘만 이해하고 절반정도 도와줬지요.

    참고로 포트란 프로그램입니다.


    more..

  • beamer

    TeX을 이용해서 발표자료를 만들 수 있는 beamer class를 아주 간단하게 소개한다. 사용법은

    \documentclass{beamer}

    \usepackage{beamerthemesplit}

    \title{Example Presentation Created with the Beamer Package}

    \author{Till Tantau}

    \date{\today}

    \begin{document}

    \frame{\titlepage}

    \section[Outline]{}

    \frame{\tableofcontents}

    \section{Introduction}

    \subsection{Overview of the Beamer Class}

    \frame

    {

    \frametitle{Features of the Beamer Class}

    \begin{itemize}

    \item<1-> Normal LaTeX class.

    \item<2-> Easy overlays.

    \item<3-> No external programs needed.

    \end{itemize}

    }

    \end{document}

    을 TeX화일에 붙여넣고 컴파일해 보면 알 것이다.

    \documentclass{beamer}로 beamer를 쓴다고 알려주고

    \usepackage{beamerthemesplit}는 beamer 쓴다고 하니까 갖다 쓰라고 알려주고

    나머지는 TeX문서 만들듯이 치면 된다. 그리고서 \frame으로 나누면 된다. 일단 예제를 받아보자.

    beamerexample1.pdf에 액세스하려면 클릭하세요.



    beamerexample4.pdf에 액세스하려면 클릭하세요.



    beamerexample5.pdf에 액세스하려면 클릭하세요.

    아무튼 쓰면 된다.


    http://latex-beamer.sourceforge.net/

    가 공식 홈페이지이다.

  • 오늘의 일기 : g_strsplit

    오늘은 g_strsplit의 사용법을 배워야만 했다.

    일단 사용법은 다음과 같다.

    gchar** g_strsplit (const gchar *string,
    const gchar *delimiter,
    gint max_tokens);


    http://developer.gnome.org/doc/API/2.0/glib/glib-String-Utility-Functions.html#g-strsplit


    저거 쓰기 전에 일단 2중 포인터 **string를 선언해야 한다.

    char **string;

    이렇게 하면 string이라는 이름의 문자열 배열을 “여러개”가질 수 있는 2중 포인터가 선언된다.

    char xxxx=”abc/123″;

    string=g_strsplit(xxxx,/,2);

    이렇게 하면 string이라는 곳에는 2개의 공간이 확보되어 각각 “abc”와 “123”이라는 문자열이 하나씩 들어간다. 즉, *(string+0) = “abc” 하고 *(string+1)=”123″이 실행된 것이다.

    즉, xxxx라는 문자열을 /라는 글자를 기준으로 2개로 자르라는 뜻이다. 물론 앞에서부터 자르므로, 뒤에 /가 여러개 있으면 있어도 무시된다. 2대신에 더 큰 숫자를 넣으면 더 여러개로 잘라진다. 만약 max_tokens를 -1을 넣게 되면 /가 나오는데마다 다 잘라준다.

    물론 구분자는 /말고 아무거나 써도 된다. 1이든 g든 ^이든.

    다행인지 불행인지, 선언만 해놓고 memory allocation은 안해도 된다. 알아서 해준다.

    그리고 더불어서 앞에 g_가 말해주듯이 저것은 glib2.0에서 제공하는 함수이다. glib 설치는 알아서 하시고, 컴파일 옵션에

    `pkg-config –cflags glib-2.0` `pkg-config –libs glib-2.0`

    를 넣어줘야 한다. 역따옴표` 포함이라는 사실에 주의!

    만약 구분자를 여러개 쓰고 싶으면 g_strsplit_set을 쓰면 된다. 이건 delimeter자리에 여러개의 문자를 넣어도 되는데, 그 여러개 중 아무거나 하나 있으면 거기서 잘라준다. 나머지는 똑같다. 예를들어 !@#를 넣으면 !나 @나 #가 나오기만 하면 잘라준다는 뜻.

  • gnuplot for windows

    Windows용은 아직 써보지 못했는데, 써 보고 싶네요.

  • Manual Parallel Processing Algorithm

    물론 저 제목은 낚시다.

    오늘은 수동으로 병렬처리 알고리즘을 만드는 것에 대해서 알아보자.

    병렬처리란, 여러개의 계산을 동시에 처리하는 것인데, 복잡한건 나도 모른다.

    내가 처리해야 하는 계산은 대략 $0.2*0.4*0.2*\pi*\pi$ 정도의 공간을 부피가 $0.005^5$ 정도 되는 lattice로 쪼개서 함수값을 모두 조사하는 계산이다. 내가 사용할 수 있는 컴퓨터의 computing power가 2천만개/1시간인데, 저거 대충 계산해 보니까 300시간 좀 넘게 걸리더라. 하여, 듀얼CPU에 노드 4개니까, CPU는 8개고, 잘만 쪼개면 $\frac{300}{8}$시간 내에 어떻게 될 것 같았다. 하여…

    저기 $\pi$라고 쓴 부분의 공간을 8개로 쪼갰다. 적당히. 뭐, 방법은 그냥 엽기적인 for문 구간 나누기로.

    그리고 파일을 8개 컴파일해서 각각 같은 input파일 넣고 돌렸다. 모레쯤엔 다 돌아가 있겠지.

    다음부터는 제대로 병렬처리를 공부해서 계산해야겠다. 오늘의 일기 끝. -_-;

  • 주어진 영역 내부의 점 골라내는 프로그램 만들기

    굳이 만들어 보자.

    목표 : (x, y)의 리스트로 주어진 점 들 중에서, 임의의 다각형 영역의 내부에 있는 점의 좌표를 골라내는 프로그램.

    구현할 것 목록

    • 다각형 내부/외부 판정
    • 좌표로 주어진 다각형이 올바른지 판정 : 변 두개가 꼬였다거나 하는 등의 틀린 정보를 제거

    일단 cui로 만들고 gui 구현은 나중에.

    1.

    다각형 내부/외부 판정에는 조르당의 곡선정리를 사용할 수 있을 것 같은데, 문제는 선분 두개가 몇번 만나는지 세어야 한다는 것. 따라서 다각형의 모든 변을 특정하는 것이 필요함.

    2.

    모든 다각형은 여러개의 삼각형으로 쪼개지므로, 삼각형 내부/외부 판정만 성공하면 나머지는 가능함. 대신, 주어진 다각형을 삼각형 여러개로 쪼개는 것이 필요함.

  • 그림 돌리기

    TeX에 그림을 넣을 때 돌려서 넣고 싶을 때가 있다.

    일단 그림을 넣으려면 TeX파일 앞에

    \usepackage{graphicx}

    을 넣자.

    그림을 넣는 코드는 아래와 같다.

    \begin{figure}

    \includegraphics[width=]{filename.eps}\\

    \caption{}\label{}

    \end{figure}

    {}사이에 파일 이름을 넣으면 된다. width는 폭을 결정하는 건데, 이거 대신에 angle=xx라고 적으면 된다. xx는 도(degree)단위로 적으면 된다.

  • gnuplot 4.2

    gnuplot 4.2


    http://www.gnuplot.info


    gnuplot으로 하도 많은것을 해 보는 바람에 앞으로 써먹을 수도 있는 내용들이라 적어둔다.

    리눅스, 윈도우, 맥에서 다 돌아가지만 윈도우용은 윈도우 자체가 커맨드라인 인터페이스가 많이 허접한 관계로 쓰라고 권하고 싶지 않다. 여기서는 리눅스 용을 예로 든다.

    yum이 깔려 있으면 루트에서 yum install gnuplot 이라고 치기만 하면 설치할 수 있다. yum이 없으면, 위의 gnuplot 홈페이지 어딘가에 있는 gnuplot 저장소에서 rpm이나 deb을 찾아서 설치해 주면 된다. 소스 컴파일이나 그런 복잡한 건 나도 모르므로 건너 뛰도록 하겠다.

    일단, 기초적인 세팅부터 해야 한다. 실행을 시켜보자. 그냥 gnuplot이라고 치기만 하면 된다.

    G N U P L O T

    Version 4.2 patchlevel 0

    last modified March 2007

    System: Linux 2.6.20-1.2952.fc6

    Copyright (C) 1986 – 1993, 1998, 2004, 2007

    Thomas Williams, Colin Kelley and many others

    Type `help` to access the on-line reference manual.

    The gnuplot FAQ is available from

    http://www.gnuplot.info/faq/

    Send comments and help requests to

    Send bug reports and suggestions to

    Terminal type set to ‘unknown’

    gnuplot>

    저기 보이는 “gnuplot>”은 프롬프트인데, 그 바로 위에 terminal이 unknown으로 설정되었다는 말이 있다. 터미널은 gnuplot이 그린 그림을 어디서 볼 것인지 결정하는 건데, 그게 unknown이라는 것은 보여줄 것이 없다는 뜻이다. 4.0에서는 기본적으로 x11을 지원하는데, 4.2에서는 local x-server에서만 x11을 지원하는 것 같다.

    아무튼, 모른다고 하니까 터미널을가르쳐 주자.

    set terminal postscript enhanced color

    postscript는 ps파일로 출력할 때 사용하는데, ps파일은 나중에 pdf파일로 변환하거나 논문에 넣을 때 유용하다. 어떤 터미널을 쓸 수 있는지 알고 싶으면 set terminal만 치면 쭉 나온다.

    enhanced는 그리스문자 등 확장된 형태의 label을 붙이고 싶을 때 사용한다. 저걸 적지 않으면 뒤에 나오는 {/Symbol }명령어가 처리되지 않고 명령어 그대로 출력된다.

    color를 안붙이면 저절로 그레이 스케일로 출력되므로 흑백으로만 인쇄할거면 안붙여도 된다. 물론 color를 붙여도 흑백 프린터에서는 흑백으로 나온다.

    set output “test.ps”

    x11을 쓰는 경우는 기본적으로 모니터 화면으로 출력되므로 출력 화일을 정해줄 필요가 없지만 ps로 출력하게 되면 파일에 저장하겠다는 뜻이므로 위와 같이 파일 이름을 적어줘야 한다.

    참고로, 모든 경우에 set 명령을 취소하고 싶으면 set 대신에 unset을 그 자리에 적어서 명령하면 된다.

    set grid

    그림에 격자를 넣을 수 있다. 격자 간격은 gnuplot이 알아서 멋있게 조절해 준다. 물론 가로줄, 세로줄을 넣거나 없앨 수 있고 간격도 조절할 수 있으며 굵기와 색깔과 점선 종류도 정해줄 수 있다. 그리고 격자를 다른 그림들보다 앞에 보이게 할지(격자가 그림을 가리는 것) 뒤에 보이게 할지(그림이 격자를 가리는 것) 정할 수도 있다. 이 모든 것은

    http://www.gnuplot.info/docs/node188.html

    을 참고하시기 바란다.

    set xlabel “{/Symbol d}”

    set ylabel “{/Symbol q_{13}}”

    위의 두 명령어는 x축과 y축이 무슨 숫자를 표시하는지 알려줄 때 사용하는 레이블을 설정한다. {/Symbol d}라고 쓴 것은 그리스문자 $\delta$를 출력시키기 위해서이다. 물론 {/Symbol q_{13}}이라고 쓰면 $\theta_{13}$ 처럼 밑첨자도 출력할 수 있다.

    set label “{/Symbol Q}_L^2 – {/Symbol Q}_Q^2 = ({/Symbol p}/4)^2” front at 0.5, 0.16

    이렇게 하면 그림에 설정된 좌표상 (0.5, 0.16) 위치에 따옴표 안에 있는 글자들을 넣을 수 있다. 물론 좌표는 at 다음에 넣은 숫자이다.

    front는 label이 다른 그림들보다 앞에 있는(즉, 글자가 그림을 가리는) 것으로 출력된다. 적지 않으면 label은 그림에 가려지게 되어 안보일 수도 있다.

    set xrange [0:3.14159]

    set yrange [0.0:0.23]

    x축과 y축 좌표계의 범위를 설정해준다. [와 ]로 묶은 괄호 안에 :를 하나 넣어서 구별하는데, 만약 어느 한쪽을 적지 않으면 그쪽은 gnuplot이 알아서 대충 설정해준다.

    set object 1 rectangle from 0.0,0.0 to 1.5707, 1.5707 behind fc rgb “gray” fs solid 0.4 noborder

    이게 4.2에서 추가된 대박 기능이다. 임의의 직사각형을 from부터 to의 두 꼭지점을 지정하여 그릴 수 있다.

    behind는 앞서의 front와는 반대로 이것을 뒤로 집어넣을 수 있는 것이다.

    fc는 fontcolor라고 대신 써도 되고, 줄여서 fc라고 써도 된다. 원래는 저기에 정수를 넣는데, 저런식으로 rgb라고 써놓고 “…”안에 이름을 써도 된다. 어떤 색 이름들이 지정되어 있는지는 show palette colornames 라고 명령을 치면 알 수 있다.

    fs는 filledstyle인데, 채우는 방식을 알려준다.

    solid는 앞서 얘기한 색으로 잘 칠하는 건데, 0부터 1사이의 값을 이용해서 얼마나 새카맣게 칠할지 가르쳐 줄 수 있다. 저거 말고 pattern으로 채울 수도 있고, 그냥 fs를 안 적거나 empty라고 하면 빈칸으로 놔두게 된다.

    noborder는 직사각형의 가장자리를 그리지 말라는 옵션이다. 물론 가장자리를 그릴 수도 있으며, 가장자리를 그리는 경우에는 가장자리 선의 색, 점선 종류, 굵기 등을 조절할 수 있다.

    set y2tics (“1{/Symbol s}” 0.091, “3{/Symbol s}” 0.2)

    tics는 눈금을 뜻한다. xtics, ytics, x2tics, y2tics등을 설정할 수 있다. 2가 없는 tics는 각각 아래쪽과 왼쪽의 x, y좌표축을 뜻하고 2가 붙은 것들은 오른쪽과 위쪽의 좌표축이다. 그냥 아무것도 없으면 gnuplot이 알아서 눈금을 붙여주고, 괄호 안에 쉼표로 구별해서 “…”는 눈금 이름, 그리고 그 옆에 숫자는 눈금의 좌표를 뜻한다.

    set parametric

    gnuplot은 기본적으로 f(x)형태의 함수를 출력한다. parametric을 설정하면 변수 x대신 변수 y를 써서 x(t), y(t)형태로 그림을 그리게 된다. 3차원 그림을 그릴 때는 u,v를 매개변수로 사용하게 된다.

    plot “data” using 4:3 with filledcurves x2 lt rgbcolor “gray70” title “”, t, 0.091 with lines title “”, t, 0.2 with lines title “”

    plot은 드디어 그림을 그리라는 명령이다. 여러개를 그릴 때는 각각을 쉼표로 구별해서 여러개를 한 도표에 나타낼 수 있다. 여기서는 “data”라는 화일에 찍힌 숫자들을 그리라는 뜻이다. “data”라는 화일의 형식은 숫자 여러개를 배열한 형태다.

    -2.673592 -0.038592 0.000000 0.000000 0.628319 0.892512

    -2.673592 -0.037592 0.000000 0.000000 0.628319 0.892510

    -2.673592 -0.036592 0.000000 0.000000 0.628319 0.892508

    -2.673592 -0.035592 0.000000 0.000000 0.628319 0.892506

    -2.673592 -0.034592 0.000000 0.000000 0.628319 0.892504

    -2.673592 -0.033592 0.000000 0.000000 0.628319 0.892502

    -2.673592 -0.032592 0.000000 0.000000 0.628319 0.892501

    -2.673592 -0.031592 0.000000 0.000000 0.628319 0.892499

    -2.673592 -0.030592 0.000000 0.000000 0.628319 0.892497

    내가 쓴 파일들은 이런 형식이었다.

    숫자들을 구별하는데는 탭, 빈칸, 쉼표 등이 사용될 수 있다. using은 n:m형식으로 사용되는데, x좌표와 y좌표에 사용할 숫자를 몇번째 열(세로줄)에서 고르냐는 것을 결정한다. 4:3이라고 썼으므로 4번째 열을 x좌표로 잡고 3번째 열을 y좌표로 잡아서 그림을 그리게 된다. 아무것도 지정하지 않으면 1:2를 준 것과 같다.

    with는 그림을 뭘로 그릴지 정하는 건데, points, dots, lines, pointslines, boxes 등등등을 쓸 수 있다. points는 좀 큰 점이고 dots는 1픽셀짜리 점이다. filledcurves는 그림을 그린 내부를 색칠하라는 옵션이다. filledcurves다음의 x2는 내가 그린 그래프와 x2축(오른쪽 좌표축) 사이의 공간을 색칠하라는 뜻이다. lt는 linetype의 줄임으로 선 색깔인데, 회색을 위해서 rgbcolor로 gray70을 줬다. title은 그 그래프의 제목을 표시하는 부분인데 따옴표 안에 아무것도 넣지 않으면 출력을 안해준다. 그리고 쉼표는 다른 그래프를 겹쳐 그리기 위한 것이다.

    t, 0.091은 아까 parameter로 설정했으므로 x좌표는 그냥 전 범위이고 y좌표가 0.091인 직선을 하나 그리게 된다. 물론 이 그래프는 x축에 평행한 직선이 된다.

    !ps2pdf test.ps

    느낌표는 gnuplot내부 명령어가 아니라 그 바깥의 명령어, 즉 쉘의 명령어를 실행하고 싶을 때 사용한다. 저렇게 적으면 ps파일을 pdf파일로 바꿔주게 된다.

    이 모든것을 gnuplot은 하나하나 할 필요 없이 스크립트로 만들어서 단숨에 처리할 수 있는데, 실행시키고 싶은 모든 명령어를 다 넣은 텍스트 파일을 하나 저장하자. 가령, 그 이름을 theta.gplt라고 한다면 쉘에서 이렇게 치면 된다.

    gnuplot theta.gplt

    그럼 theta.gplt에 있는 모든 명령어가 실행되고 끝난다. 따라서 이 명령어는 쉘 스크립트에서 응용할 수 있다. 아무튼, 위의 명령어를 사용한 내 그림 예제가 아래와 같다.

    사용자 삽입 이미지

    gnuplot example