티스토리 툴바


공부2012/01/13 06:50
HPC 서버에 접속해서 작업하기 위해서는 Kerberos로부터 ticket이란 걸 얻어와야한다. 문제는 실험실 컴에 원격로긴해서 krb5 GUI프로그램를 실행시키면 PIN을 입력하는 곳에서 멈추고 만다. 간혹 Kerberos 서버에 접속장애가 생기는 경우가 있어서 정말 그런가 하고 직접 데탑에서 접속해보면 ticket을 잘 가져온다. 아마도 원격접속했을 때는 무언가 장애가 생기는 것 같다. 그래서 직접 command 입력으로 하면 어떻게 될까싶어 명령어를 찾아봤다. 보통 암호카드를 이용해서 ticket을 가져오려면 kinit명령어면 되는데 htoken을 이용해 인증하는 경우는 pkinit 명령을 이용해야했다. 아래와 같이 사용하면 된다.

pkinit -5 -l 0d10h0m -f

여기서 -5는 verkeros version 5를 이용하겠다는 의미이고 -l은 ticket의 유효기간을 의미하며 인자내용은 순서대로 일 시 분을 의미한다. 일 시 분을 전부 지정할 필요는 없으며 필요한 내용만 적어넣으면 된다.(저 형식대신 분으로 치환해서 입력해도 된다.) -f 는 ticket이 forwadable 속성을 가지게 한다.

pkinit 명령을 내리면 PIN 을 요구하는데 아직 이를 자동으로 입력할 방법을 찾질 못했다. 처음엔 표준 입력 redirection을 이용하면 될 줄 알았는데 되질 않는다.

'공부' 카테고리의 다른 글

Windows에서 Kerberos tiket 주기적으로 갱신시키기  (0) 2012/01/13
Digitizer  (0) 2011/12/27
How to extract data along a straight line with Tecplot 360  (0) 2011/12/20
Useful software  (0) 2011/11/30
Posted by 다루치기
공부/LaTeX2011/12/31 08:53
보통 참고문헌을 정리하기 위한 목적으로 많이 사용되는 것이 EndNote라고 한다. 하지만 이 프로그램은 MS Windows 환경만을 지원하는데다가, 특히 MS Word와의 연계가 좋은 것으로 알려져있다. 게다가 EndNote는 bibtex 포맷을 지원하지 않기 때문에 나같이 LaTeX 환경을 좋아하는 사람에게는 그다지 사용하고 싶은 툴은 아닌 것 같다. 대신에 나는 Jabref를 사용하는데 이 녀석은 기본적으로 bibtex 파일포맷으로 저장해주는데다가 Open software이면서 EndNote에서 제공하는 기능 중 많은 부분을 제공하고 있기때문에 EndNote 대신으로 크게 불편하지 않게 사용할 수 있는 것 같다. 물론 java로 만들어져있다는 것이 마음에 걸리긴 하지만.

이 프로그램에서 제공해주는 기능중에 Push to XXX 라는 것이 있다. 이 기능은 Jabref 에서 선택한 citation을 편집중인 editor로 citation key를 보내주는 역할을 하는데, 물론 수작업으로 citation key를 찾아서 TeX 편집창에 직접 넣을 수도 있지만 여러개의 citation을 인용할 때 일일이 key를 찾아서 넣는 것도 만만치만은 않은 일이다. 그런데 이 기능 중에서 Emacs와 동작하는 기능이 제대로 작동하지 않는 문제가 있다. 원인은 push 기능을 구현하기 위해서 jabref가 gnuserv/gnuclient를 이용하는데 Emacs가 23으로 판올림하면서 인터페이스를 gnuserv/gnuclient에서 emacsclient로 바꾸었기 때문이다. 그래서 Jabref 사이트에서 gnuclient 대신 emacsclient를 이용할 수 있게 하는 plugin (http://jabref.sourceforge.net/resources.php) 제공하고 있는데 emacsclient에서 사용하는 문법이 바뀌기 전의 내용을 반영하고 있어서 이 또한 제대로 동작하지 않는다. 인터넷을 뒤진 결과 plugin 소스파일 중에서 PushToEmacsClient.java (소스파일을 받아서 열어보면 이 파일 하나밖에 없다.)을 열어 다음과 같은 줄을 찾아서
   new String[] {"emacsclient", "--eval",
       "(insert \\\"\\\\" + 
       Globals.prefs.get("citeCommandEmacs").replaceAll("\\\\", "\\\\\\\\") +
       "{" + keys + "}\\\")"}
    :   // Linux gnuclient escaping:
        // java string: "(insert \"\\\\cite{Blah2001}\")"
        // so sh receives: (insert "\\cite{Blah2001}")
        // so emacs receives: (insert "\cite{Blah2001}")
    new String[] {"emacsclient", "--eval",
       //              new String[] {"gnuclient", "-batch", "-eval",
       "(insert \"" +
       Globals.prefs.get("citeCommandEmacs").replaceAll("\\\\", "\\\\\\\\") +
       "{" + keys + "}\")"};

아래와 같이 고쳐주면 된다고 한다. (출처 http://manuelonsoftware.wordpress.com/2010/05/10/fixing-jabref-to-work-with-emacs23-in-ubuntu-10-04/)
new String[] {"emacsclient", "--eval",
        "(with-current-buffer (window-buffer) 
         (insert \\\"\\\\" + 
         Globals.prefs.get("citeCommandEmacs").replaceAll("\\\\", "\\\\\\\\") +
         "{" + keys + "}\\\"))"}
    :        // Linux gnuclient escaping:
        // java string: "(insert \"\\\\cite{Blah2001}\")"
        // so sh receives: (insert "\\cite{Blah2001}")
        // so emacs receives: (insert "\cite{Blah2001}")
    new String[] {"emacsclient", "--eval",
//      new String[] {"gnuclient", "-batch", "-eval",
        "(with-current-buffer (window-buffer)  
        (insert \"" + Globals.prefs.get("citeCommand.replaceAll("\\\\", "\\\\\\\\") +
        "{" + keys + "}\"))"};

하지만 내가 해본 결과 emacsclient 경로를 찾지 못하는 문제가 있는 것을 알았다. 이런저런 시행착오 끝에 직접 emacsclient를 full path로 적어주고 실행해본 결과 제대도 동작하는 것을 확인하였다. ( 내 컴의 경우에는 /usr/bin/emacsclient 로 되어있다.).

덧붙여서, plugin을 많이 사용하는 것도 아닌데 emacs 하나때문에 plugin을 사용하는게 싫어서 직접 소스코드를 수정해서 재컴파일해서 사용중이다. 파일이름은 src/java/net/sf/jabref/external/PushToEmacs.java 을 수정하면 되는데 수정내용은 plugin 수정 내용과 동일하다. 참고를 위해서 patch 파일을 첨부한다.

P.S. 현재 Jabref 2.6 을 사용중인데 최신 버전은 Jabref 2.7.2 이다. 하지만 소스파일을 열어본 결과 Push to emacs 기능은 여전히 gnuclient를 사용하고 있는 것을 확인하였다.




Posted by 다루치기
공부2011/12/27 07:36
리서치를 하다보면 비교를 위해 다른 논문에 게재된 그래프들을 이용해야할 때가 자주 있다. 헌데 이런 그래프들은 거의 이미지 파일로만 (간혹 저자에게 요청하는 raw data를 얻을 수 있는 경우도 있다.) 이용할 수 있기때문에 이미지 데이터로부터 비교를 위한 수치 데이터를 얻는 과정은 지루하기도 하고 시간도 많이 들 수 밖에 없다. 이 때 유용하게 사용할 수 있는 것이 digitizer인데 그 중에서도 WinDig(http://www.unige.ch/sciences/chifi/cpb/windig.html)가 사용해 본 것중에 제일 기능도 많고 사용하기에도 편한 것 같다. 이 프로그래므이 한가지 단점이라면 Win95 까지만 지원된다는 점이다. Win XP 이상 OS에서 실행해보면 지원되지 않는 OS라며 더이상 실행하기를 거부하게 된다. 저자가 개발을 중단했는지 더 이상의 버전업은 없는 듯 싶다. 그렇다고 WinXP에서 지원하는 compatability 항목에서 win 95를 선택하여 실행해도 실행이 안되기 때문에 이 좋은 프로그램을 사용할 방법이 없다. 하지만 리눅스를 사용하고 있다면 wine을 이용해서 사용하는 방법이 있다. 내 컴에서는 그래픽 카드 문제때문인지 redraw 가 잘 안되는 문제가 있는데 (최소화 최대화 메뉴를 활용하면 그냥 간단히 활용할 정도는 된다.) 그것만 빼면 사용하는데 지장이 없다. 좋군.

'공부' 카테고리의 다른 글

Windows에서 Kerberos tiket 주기적으로 갱신시키기  (0) 2012/01/13
Digitizer  (0) 2011/12/27
How to extract data along a straight line with Tecplot 360  (0) 2011/12/20
Useful software  (0) 2011/11/30
Posted by 다루치기
공부/LaTeX2011/12/23 07:32
간호 latex code를 보면 \makeatletter 와 \makeatother 라는 명령을 보게 되는데 처음엔 이게 무슨 의미인지를 몰랐었는데 오늘 stack overflow 사이트에서 답을 찾은김에 기록차 남겨둔다.

일단 위 두 명령어는 macro 이름에 과여하는 명령들이라는 것을 알아두면 편하다. 일반적으로 .cls 파일 (class 파일)과 .sty 파일 (style 파일)에는 매크로 이름에 @ 를 사용할 수가 있다고 한다. 반대로, user file, 즉 class나 style 파일이 아닌 일반 문서에서는 @를 매크로 이름에 사용할 수 없다. 즉 @를 매크로 이름에 사용가능하게 한 것은 일종의 macro 보호목적으로써, c++에서 사용되는 namespace나 class의 public, private 지시자와 비슷한 역할을 하기 위한 것으로 보인다.  그런데 부득이하게 user file에서 class나 style file에서 internal purpose로 사용되는 macro에 접근해야할 필요가 생길경우 TeX 컴파일러에게 @를 사용할 수 있게 해주세요라고 알려주는 역할을 하는 것이 위 두개의 명령어가 된다. stack overflow에 좀 더 상세한 설명이 기술되어 있는데 요약하자면 TeX에서 각 문자에 category code 혹은 catcode라는 일종의 일련번호를 부여했는데, 예를 들어 \ 는 catcode가 0이고 일반 알파벳문제들은 catcode가 11이다. 그리고 @는 catcode가 12로 일반 알파벳문자들과 구분하고 있다는 것을 알 수 있다. 그래서
\makeatletter라고 하면 @의 catcode를 12 -> 11 로 변경시켜 macro 이름에 사용할 수 있게 하는 것이고 볼일이 다 끝나고 나면 \makeatother 명령으로 @의 catcode를 원래대로 11->12 바꾸어 주는 것이다. 그리고 한가지 주의사항이 있는데 class와 style 파일 내부에서는 이 명령어들을 명시적으로 사용하지 않아야한다는 것이다. 왜냐하면 class파일과 style 파일을 불러오면서 내부적으로 \makeatletter와 \makeatother 명령을 불러오기 때문에 오작동의 소지가 있기 때문이다.
Posted by 다루치기
공부2011/12/20 14:32
 CFD 계산결과에서 특정 section내의 data를 추출할 일이 생겨 방법을 찾다가 기록삼아 남겨둔다. 방법은 상당히 간단했는데

1. tecplot 360 (이하 tecplot) script메뉴에서 macro record 를 실행한다.
1. 메뉴중에 insert 명령으로 polyline을 클릭한다.
2. 시작점과 클릭한 후 끝점을 더블클릭하던지 클릭한후 ESC 키를 누른다.
3. macro record를 종료하고 저장된 macro file을 텍스트 에디터로 불러온다.
4. polyline 좌표입력부분을 찾아 원하는 좌표로 바꿔준 후 저장한다. 참고로 tecplot에서 polyline은 시작점의 좌표를 입력받은후 이어지는 좌표들은 전부 delta 값(끝점-시작점)이다.
5. 수정한 macro를 실행시킨 후 그려진 polyline을 선택한다. 메뉴에서  data/extract에서 extract from geometry를 선택한 후 추출한 data point 수를 수정한 뒤에 실행시키면 된다.

'공부' 카테고리의 다른 글

Windows에서 Kerberos tiket 주기적으로 갱신시키기  (0) 2012/01/13
Digitizer  (0) 2011/12/27
How to extract data along a straight line with Tecplot 360  (0) 2011/12/20
Useful software  (0) 2011/11/30
Posted by 다루치기
공부2011/11/30 05:35
Plot digitizer : data acquiring tool from graph which is saved in bitmap and jpeg image file format.

http://www.southalabama.edu/physics/software/software.htm

'공부' 카테고리의 다른 글

Windows에서 Kerberos tiket 주기적으로 갱신시키기  (0) 2012/01/13
Digitizer  (0) 2011/12/27
How to extract data along a straight line with Tecplot 360  (0) 2011/12/20
Useful software  (0) 2011/11/30
Posted by 다루치기
공부/LaTeX2011/08/12 05:31
LaTeX 문서를 컴파일할 때 매번 C-c C-c 하다보면 새끼손가락이 아파져서 바꿔보았다. key binding 은 visual studio의 build key binding인 control+shift+b로 하였다.  AucTeX의 기본 key binding은 auctex 설치 폴더내의 tex.el 파일에 정의되어있기 때문에 다른 key binding이 필요하면 이 파일을 참조하면 된다.

LaTeX mode에 있을 때만 key binding을 정해주고 싶어서 local set key를 이용하였다. C-c C-c key binding은 TeX-command-master 를 의미하므로 아래와 같이 정의해주면 된다.


(add-hook 'LaTeX-mode-hook
      (lambda ()
        (local-set-key [(control shift b)] 'TeX-command-master)
               ))

P.S.
I have no idea of the reason, but above key binding does not work with putty. So, I modified the binding for the putty as follows,

(add-hook 'LaTeX-mode-hook
      (lambda ()
        (local-set-key [(control meta b)] 'TeX-command-master)
               ))

Therefore, now the keybinding is ctrl+alt+b.
Posted by 다루치기
공부/LaTeX2011/01/11 07:22

간단하게
\mathcal{L}
\mathcal{F}

하면 수학교재에서 보는 것과 비슷한 curled symbol을 얻을 수 있다.
Posted by 다루치기
TAG LaTeX