計算機関連の自分用メモ
パワーポイント(2013)からの eps を作成
- 新規作成 (4:3)
* デザイン→ユーザー設定(スライドの向き:縦, W19.05cm, H25.4cm)
- 白紙ページ(ページ番号も無し)に絵をペースト
- 印刷
* PostScript printer (OKI Microline Pro 930PS-S(PS)使用)
* ファイルへ出力を選択
* プリンターのプロパティー → PostScriptタブ → 出力形式 EPS
- スライド指定で一ページだけ印刷
- 出力ファイル名指定: hoge.prn → hoge.eps
# - gsview
# * Option: EPS clip (必要か不明)
# * File: PS to EPS(Auto BB にcheck) → hoge2.eps
# - Linux で eps2eps hoge2.eps hoge3.eps
# (cygwin の場合は eps2eps -r6000 とかしないと font が汚い.ファイルサイズは多少大きくなる)
# - BoundingBox を hoge2.eps から hoge3.eps へコピー
gs -q -dNOPAUSE -dBATCH -sDEVICE=bbox hoge.eps
として BBOX の情報をえる。
## BBOXの確認: gs -dEPSCrop hoge.eps
platex で
\includegraphics[width=\textwidth,clip,bb=xx1 yy1 xx2 yy2]
のようにoption 指定する
(xx1と yy1 は,gsで得た値から10くらいを引いた方が良い。
何故か dvipdfmx で pdf 化すると図の左辺と下辺が少し削れる)
gs で得た BBOX 情報で eps ファイルのヘッダー部分を修正して,
> epstopdf hoge.eps
で pdf に変換すると,BBox が反映された pdf ができる。
pdf の bb 情報は,
> extractbb hoge.pdf
で,hoge.xbb ファイルが作られ確認出来る。
localhost 以外からの imap 接続を禁止する.imaps
接続は,許可.
imap と imaps は,同じ imapd で動くので tcp wrapper では,無理.
iptables を使う.
[root]# iptables -A INPUT -s 127.0.0.1 -p tcp
--dport 143 -j ACCEPT
[root]# iptables -A INPUT -p tcp --dport 143 -j
REJECT
/etc/init.d/iptables save active
PostScript 関連
- 複数ページの PostScript file を page 毎に画像(png, jpg, etc)に変換
convert -density 150x150 hoge.ps hoge%d.png
- convert で PostScript を変換する際に antialias を外す
convert +antialias hoge.ps hoge.png
- fig2dev で .fig -> .ps(A4/center/portrait) に変換
fig2dev -Lps -p0 -zA4 -c -P hoge.fig hoge.ps
- 1 Page からなる Postscript file が複数あるとき、それを一つの PDF file(A4) にしたい:
cat A.ps B.ps C.ps ... > hoge.ps
ps2pdf -g595x842 -r72 hoge.ps hoge.pdf
ps2pdf -g4956x7014 -r600 hoge.ps
ps2pdf -sPAPERSIZE=a4 hoge.ps
- A4 size: 210x297mm 8.26x11.69in 595x842pt(1in=72pt)
- Letter size: 216x279mm 8.5x11in 612x792pt(1in=72pt)
SMTP と直接お話
HELO ホスト名
MAIL FROM: 返信アドレス
RCPT TO: 受信者
DATA (Subject: とか書いたり、本文を書く。`.' でおわる)
QUIT
画像連結
- 1.gif 2.gif を縦に並べる場合
画像の size は、display, xv や gifsicle -I 等を使って調べておく。
-> ImageMagick の identify で調べられる。(03/04/15)
convert を使って rgb 形式に変換
> convert 1.gif 1.rgb
> convert 2.gif 2.rgb
> cat 1.rgb 2.rgb > 3.rgb
> convert -resize [width]x[height] 3.rgb 3.gif
- [2.gif][1.gif] の順で横に並べる場合。(01-Jul-2001)
> convert -rotate -90 1.gif 1r.rgb
> convert -rotate -90 2.gif 2r.rgb
> cat 1r.rgb 2r.rgb > 3r.rgb
> convert -resize [height]x[new_width] -rotate 90 3r.rgb 3.gif
Emacs 20.x での文字コードの変更
下部に「-UUE:」等の表示の意味
E: euc-jp, S: ShiftJIS, J: JIS(iso-2022-jp), U: utf-8
左から1番目: 入力される文字コード
C-x RET k (M-x set-keyboard-coding-system) で変更
左から2番目: 端末上に表示される文字コード
C-x RET t (M-x set-terminal-coding-system) で変更
左から3番目: バッファ(及び保存ファイル)内の文字コード
C-x RET f (M-x set-buffer-file -coding-system) で変更
.emacs 内に記述する場合
(set-default-coding-systems 'euc-jp) -> 新しく作成する buffer の coding を
euc-jp にする場合
(set-buffer-file-coding-system 'euc-jp) -> 現在の buffer を euc-jp にする関数
(prefer-coding-system 'euc-jp) -> default の coding を euc-jp にする
.emacs の設定
;
; BS (C-h) キーと DEL キーを入れかえます。
;
(load-library "term/bobcat")
;
; ショートカットキーの定義
;
(global-set-key "\C-cg" 'goto-line)
;
; C-x t で時刻を入れる (31-Mar-1999 といった文字列が挿入される)
;
(defun insert-time ()
(interactive)
(call-process "env" nil t nil "LANG=C" "date" "+%d-%b-%Y")
(delete-char -1))
(define-key ctl-x-map "t" 'insert-time)
;
; バックアップファイル(*~) は、~/trash にまとめて作る。
;
(setq backup-by-copying t)
(defun make-backup-file-name (filename)
(concat "~/trash/" (file-name-nondirectory filename) "~"))
kterm, xterm
でのエスケープシーケンス
23-Sep-2000
○ Title bar の文字列を指定 ^[ は、ESC ( tcsh だと ^VESC )
echo '^[]2;STRING^G'
○ clear
echo '^[[2J'
○ position
echo '^[[y;xHstring'
x,y の位置に string を表示する。x,y は、左上が 1,1
○ color
^[[%dm
0 ... normal 30 ... black 34 ... blue
1 ... bold 31 ... red 35 ... magenta
4 ... underline 32 ... green 36 ... cyan
7 ... reverse 33 ... yellow 37 ... white
40-47 ... reverse color
○ characters
echo '^[(0%c^[(B'
` ... diamond
a ... hatched
jklmn ... ┘┐┌└┼
opqrs ... line ( heighest -> lowest )
tuvwx ... ├┤┴┬│
~ ... cdot
Bash
Link
「Bourne Shell
自習テキスト」を google 検索
.bash_profile
PS1='\h:\w \$ ' -> yourHost:~/cwd $
Commandline argument
- $# Number of argument
- $0 Command name itself
- $1..$n = $*
if [ $# = 0 ]; then
echo "usage: ..."
exit
fi
Option analysis
OPTIONS=""
while true
do
case "$1" in
-*) OPTIONS="$OPTIONS $1" ;;
*) break ;;
esac
shift
done
echo ${OPTIONS}
Function
func () { ... }
call は、 func arg1 arg2 で行なう。call は、function の define の後でなければならない。
argument は、$#, $1..$n ($0 は、function name ではなくて command name)
制御構文
if [ cond ]; then
com1
elif [ cond ]; then
com2
else
com3
fi
[ cond ] || com1 -> if cond is false then com1
[ cond ] && com1 -> if cond is true then com1
array="elm1 elm2 elm3 end elm4 elm5"
for idx in ${array}; do
...
done
i=0
while [ $i -lt 10 ]; do
i=`expr $i + 1`
echo $i
[ $i -gt 5 ] && break
done
# loop forever
while true; do
echo -n "*"; sleep 1
done
# continue
for x in $@; do
echo "${x}"
[ ${x} = 5 ] && continue # ${x} が 5 なら次の処理をとばす
echo "${x} done."
done
cat [file] | while read line; do
echo ${line}
done
case "$1" in
1*) echo "1*" ;;
*1) echo "*1" ;;
*) echo "default" ;;
esac
比較
文字列: =, !=
数値: -eq, -ne, -lt, -gt, -le, -ge
計算
expr 1 + 1
$[1+2] -> bash only
a=1; echo $[$a+2] -> bash only
file 記述子
echo "stderr" 1>&2 ( stderr に出力 )
exec 2>errs.out ( stderr を errs.out に出力 )
exec > /dev/null 2>&1 ( stdout & stderr を /dev/null に流す )
shell 変数
undef= -> 変数を undefined にする。
echo ${undef:-not_defined} -> 後ろを表示
echo ${undef:=def} -> 後ろの値を代入
echo ${undef:?variable not defined} -> stderr に表示
echo ${def:+varialbe def has some value} -> define されていたら表示
echo ${var} has ${#var} charactors. -> strlen と同じ
fpath=foo/var/baz
echo ${fpath%/*} -> 後ろから match する min 部分を削る。 -> foo/var
echo ${fpath%%/*} -> 後ろから match する max 部分を削る。 -> foo
echo ${fpath#*/} -> 前から match する min 部分を削る。 -> var/baz
echo ${fpath##*/} -> 前から match する max 部分を削る。 -> baz
etc
status は、$? (csh なら $status)
$( shell command; command2 ) 子shell で実行,結果の文字列を返す
{ command1; command2; } current shell で複数実行
外部コマンドを実行して,結果を変数に取り込む
var=$( expr 5 - 2 ); echo ${var}
外部コマンドを実行して,結果をスペース区切りで配列として変数に取り込む
var=( $(ls -l ~/.bashrc) ); echo ${var[4]}
Bash で連想配列
# perl や ruby における hash={ JAN=>31, FEB=>28,
MAR=>31 ... }
dollar='$' # <- $ を用意
hash_JAN=31 # <- 連想配列の定義
hash_FEB=28
hash_MAR=31
#var=JAN # <- key を与えて
var=FEB
res=`eval echo ${dollar}hash_${var}` # <- key に対応した value を返す
echo $res
cshの場合
- :r 拡張子を削る
- :h パスの部分を取り出す
- :e 拡張子を取り出す
- :t パスの部分を削る
例
# set fpath = foo/hoge/aaa.txt
# echo $name:r -> foo/hoge/aaa
# echo $name:h -> foo/hoge
# echo $name:e -> txt
# echo $name:t -> aaa.txt
Wnn+Egg メモ
QWERTYキーボードなら、
z+
1 2 3 4 5 6 7 8 9 0 − = `
○ ▽ △ □ ◇ ☆ ◎ ¢ ♂ ♀ 〜 ≠ ´
q w e r t y u i o p [ ] ¥
《 》 ぜ 々 〆 zy ず じ ぞ 〒 『 』 \
a s d f g h j k l ; ’
ざ ヽ ゝ 〃 ‐ ← ↓ ↑ → ゛ ‘
z x c v b n m , . /
zz :- 〇 ※ ° ′ ″ ‥ … ・
z+ Shift+
! @ # $ % ^ & * ( ) _ +  ̄
● ▼ ▲ ■ ◆ ★ £ × 【 】 ∴ ± ¨
Q W E R T Y U I O P { } |
〈 〉 zE 仝 § zY zU zI zO ↑ 〔 〕 ‖
A S D F G H J K L : ”
zA ヾ ゞ → ― zH zJ zK zL ゜ “
Z X C V B N M < > ?
zZ :-)℃ ÷ ← ↓ 〓 ≦ ≧ ∞
boiled-egg で nn で終る単語で Wrong argument:
integerp, nil という error が出る場合。
.emacs の (load "boiled-egg") の後ろに
(defun its:simulate-input (i j input map)
(while (< i j)
(setq map (get-next-map map (sref input i))) ;
(setq i (+ i (char-bytes (sref input i))))) ;
map)
と入れるとうまくいくかも。
「。」「、」の代わりに「.」「,」を使う場合。
Freewnn の場合
(setq use-kuten-for-period nil)
(setq use-touten-for-comma nil)
tamago 4.0.6 の場合 ;; .emacs
の文字コードを iso-2022-jp でセーブする
(custom-set-variables
'(its-hira-enable-double-n t)
'(its-hira-comma ",")
'(its-hira-period "."))
(custom-set-faces)
Wnn7 で boiled-egg
http://www.chibutsu.org/AIC/elisp/boiled-egg7.html
Wnn7 で kinput2 (Vine2.6CR)
kinput2 -wnn -jserver localhost -wnnenvrc6 /usr/lib/wnn7/ja_JP/wnnenvrc
port forwarding を使って jserver に接続
hostB から port 22273 が途中経路で塞がれている場合に hostA で動いている jserver に access
する方法.ssh の port forwarding を使う.
hostB: ssh -L 22273:hostA:22273 hostA
これで hostB の 22273 port への access は,途中経路は,22 port に変換されて hostA
に接続され,hostA での 22273 prot への access になる.
更にhostBにおいて port 22273 で Listen状態にする (-g)
ssh 先の hostAにおいて background jobとなる (-f), hostAで何も実行せずにexitする(-N)を
併用して
hostB: ssh -g -f -N -L 22273:hostA:22273 hostA
とすると,firewall 内部の hostA:22273の service を hostB上で clone 可能となる
Settings for egg on XEmacs 21.4
(setq default-input-method "japanese-egg-wnn")
;; "nn" で「ん」を入力
(setq enable-double-n-syntax t)
;; "." で「.」、"," で「,」を入力。
(setq use-kuten-for-period nil)
(setq use-touten-for-comma nil)
Programing
Date command を使って Default の Random seed を生成する
date +%s
とすると seconds since 00:00:00, Jan 1, 1970 が得られる。ただし、この機能は GNU
extension なので GNU の date command が必要。Linux の場合は、OK.
Fortran でコマンドライン引数を使う
program test
integer iargc
character*80 string
print *, iargc()
call getarg(1,string)
print *, string
end
CPP
#if
X == 1
...
#elif X == 2
...
#else /* X != 2 and X != 1*/
...
#endif /* X != 2 and X != 1*/
C で関数を変数に代入する方法
int func1(int x, int y) // 引数を二つとる関数その1
{
return x+y;
}
int func2(int x, int y) // 引数を二つとる関数その2
{
return x-y;
}
int main()
{
int (* func)(int, int); // 関数へのポインタ型の変数の宣
func=func1; // 関数へのポインタの代入
printf("%d\n", func(2, 1));
}
C で Fortran 的な配列の使いかた 16-Nov-2002
一次元配列の場合
int bb[201];
int *b= &bb[100];
とすれば、b[-100] .. b[100] での参照が可能。
二次元の場合は、
int aa[201][201];
int (*a)[201] = (int (*)[201])&aa[100][100];
とすれば、a[-100][-100]〜a[100][100]のように参照できる。
C と FORTRAN での memory 上での配列のつまり方
14-Nov-2002
C: a[2][3]
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
FORTRAN: a(2,3)
a(1,1) a(2,1) a(1,2) a(2,2) a(1,3) a(2,3)
C での多次元配列の引数渡し 14-Nov-2002
int func(int a[][3][2]) // このように受ける
{
a[0][2][1]=4;
}
int main()
{
int qq[4][3][2]; // 多次元配列の定義
func(qq); // 呼び出し
}
C utility functions
loren4.c ローレンツ変換
strSplit.c AWK like な文字列分解 " xxx,
yyy , zzz www ; comment" -> "xxx", "yyy", "zzz", "www"
Perl
Script の先頭に書くおまじない
#!/bin/sh
exec perl -Sx $0 "$@"
#!perl
ファイルハンドルをサブルーチンに渡す方法
open(fh, "file");
flock(fh, LOCK_SH); # <- 読み込みのみ共有を許したロック
subroutine_name( *fh, arg2, arg3, ... );
close( fh );
fopen( *fh );
while (<fh>) {
print $_;
}
close(fh);
sub fopen {
my $fh=shift;
open( $fh, "test.txt" );
}
sendmail を使ったメールの出し方
open(MAIL,"| $sendmail -t");
print MAIL <<EOF;
To: $mailto
From: $mailfrom
Subject: $subject
MIME-Version: 1.0
Content-type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
$content_in_jis
EOF
close(MAIL);
crypt
perl -e 'print crypt("string", "salt(2byte)")."\n"'
時間
perl -e 'print "".localtime(time())'
# UTC -> readable
use Time::Local;
# Source of information:
# > perldoc -f localtime
# 0 1 2 3 4 5 6 7 8
# ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
# localtime(time);
$time=$ARGV[0];
@ltime=localtime($time);
($sec,$min,$hour,$day, $mon, $year)=@ltime[0,1,2,3,4,5];
$year+=1900;
$mon+=1;
print "$time -> $year.$mon.$day $hour:$min:$sec\n";
---
# Tomorrow
use Time::Local;
($year, $mon, $day)=(2001, 02, 28);
$time = timelocal(59,59,23,$day,$mon-1,$year-1900);
@ltime=localtime($time+1);
($day, $mon, $year)=@ltime[3,4,5];
$year+=1900;
$mon+=1;
print "$year.$mon.$day\n";
sort
sort {$a cmp $b} @array :
文字列、昇順(default)
sort {$b cmp $a} @array : 文字列、降順
sort {$a <=> $b} @array : 数値、昇順
sort {$b <=> $a} @array : 数値、降順
Ruby
Script の先頭に書くおまじない
#!/bin/sh
exec ruby -S -x $0 "$@"
#!ruby
ruby でPoisson 分布の確率を計算する(exp=31で 0..39をobserveする確率の総和)
ruby -e 'exp=31; p=0; n=1; (0..39).each{|i| n*=(i==0 ? 1: i);
p+=(exp**i)*2.7182818285**(-exp)/n; print "n=#{i} sum_p=#{p}
n!=#{n}\n"}'
TeXmacs 関連
- ショートカットキーの定義
- initialize script my-init-texmacs.scm(for ver1.0.2, for ver1.0.1) を ~/.TeXmacs/progs/
に置く
- "C-h" Remove character backwards
- "C-x $" Enter math-mode with formula style
- "C-i" Make rigid space by 10mm
- "C-x C-i" Make rigid space by 50mm
- myseminar package
- Obsolete! スタイルの定義 (セミナー用:縦置きスタイル)
- Portrait seminor myseminar-p.ts を
~/.TeXmacs/styles/ に置く
- Document->Style->myseminar-p
- Document->Page->Screen layout->Margins as on paper
- View->Shrinking factor->7
- Document->Page->Layout->Set margins Left:8mm
Right:8mm Top:8mm Bottom:20mm
- \my-title
- \my-footer
- \em - text in blue
- \tev - \inv-pb - \inv-fb - \ttbar
- \bluearrow - long rightarrow in blue
- \item1 - \item2
- \fbox - \fbox* - \pbbox - \prtab
- Templete: sample-p.tm
- Obsolete! 横置きスタイル
- Tips
- Multiple line at a cell in a table:
- Table->Special cell
properties->Hyphenation->Multi-Paragraph
- Multiple column/row in a table:
- Table->Special cell properties->Set span/Sub table
- PDF を export する時にきれいな出力を得る:
- File -> Page setup -> Font type -> True type
- 日本語化
- Change.log によると 1.0.6.1 から Basic CJK support for TeXmacs
とある。Document -> language -> Japanese
とやると、IPAフォントという日本語のTrueTypeフォントが無いとメニュー等が空白になり、当然日本語もでない。
- IPAフォントは、https://moji.or.jp/ipafont/
から Download できるので、展開して、*.ttf を ~/.TeXmacs/fonts/truetype/
以下に置いてやると日本語が見える。Ctrl+Space で日本語入力も可能。
rpm
パッケージの中身をみる
rpm -ql -p <filename.rpm 複数可>
tcsh だと
foreach a ( /mnt/cdrom/.../RPMS/*.rpm )
echo "----------- $a:t"
rpm -ql -p $a
end
bash だと
(for idx in /mnt/cdrom/.../RPMS/*.rpm; do
echo "----------- ${idx##*/}";
rpm -ql -p ${idx};
done) > /tmp/vine2.6cr.plus.rpmlist.txt
rpm -ivh PACKAGE_FILE パッケージファイルをインストールする。
rpm -ivh --nodeps PACKAGE_FILE
依存関係を無視して、パッケージファイルをインストールする。
rpm -e PACKAGE パッケージをアンインストールする。
rpm -qpi PACKAGE_FILE 未インストールのパッケージファイルについて、情報を表示する。
rpm -qi PACKAGE インストール済みのパッケージについての説明を表示する。
rpm -ql PACKAGE パッケージに関し、インストールされた個々のファイルを表示する。
rpm -qa インストール済みのパッケージ名をすべて表示する。
rpm -qf FILE FILE がどのパッケージに含まれているかを表示する。
JF:
RPM-BUILDING-HOWTO
RPM-HOWTO
xfig
Link http://www.xfig.org/
- To use URW (Postscript Type1) font with xfig
- Prior to urw-fonts-2.0-19.rpm, Zarp Dingbats font is missing.
- For urw-fonts-2.0-19(or later), replace
u_fonts.c with this.
- Prior to urw-fonts-2.2-6.1.rpm, bug in Helvetica fonts.
- For urw-fonts-2.2-6.1(or later), apply this patch to xfig.3.2.4.
xfigpad --- Tiny pad to support
drawing mathematical equations in xfig. [screenshot]
Required softwares:
ruby - http://www.ruby-lang.org/
lout - http://savannah.nongnu.org/projects/lout/
pstoedit - http://www.pstoedit.net/pstoedit
gs
VNC
server側で
vncpasswd
vncviewer [:X]
ssh SERVER -L 590X:SERVER:590X
vncviewer :X
twm をkill して gnome-session &
cygwin
- mintty 設定
- mintty window から right click で options ->
Text:Font (MS ゴシック 12pt), Window:size 80x24
- mintty のshortcut -> プロパティ
C:\cygwin\bin\mintty.exe --option locale=ja_JP.eucjp -t 'mintty [EUC]' -
- mintty のshortcut -> プロパティ
C:\cygwin\bin\mintty.exe --option locale=ja_JP.sjis -t 'mintty [SJIS]' -
- mintty のshortcut -> プロパティ
C:\cygwin\bin\mintty.exe --option locale=ja_JP.UTF-8 -t 'mintty [UTF8]' -
Back