情報科学総合演習・実験 下平研 計算機実験においてのヒント集


ここでは下平研の情報科学総合演習・実験で行う計算機実験を行う際に、過去にあった質問についてヒントを与えます。(ヒントというかほぼやり方です。)質問はTAまでメールを下さい。(もしくは演習中でも構いません)


Q1 : epsファイルで印刷する時に途中で切れてしまう。回転させて印刷したい。

Q2 : バッググラウンドジョブで走らせている(&をつけてプログラムを実行させている)途中で、ログアウトすると、計算が止まってしまうのだけど…

Q3 : cmd201でエラーが出ます?なぜでしょう?

Q4 : cmd351でエラーが出ます?なぜでしょう?new


Q1 : epsファイルで印刷する時に途中で切れてしまう。回転させて印刷したい。

epsファイルを直接拡大したり、縮小したりする方法は、郡司も知りません(知っていたら教えてください。)その代り、latexを使って、epsを拡大したりする方法をここでは紹介します。まず、以下のようなtexファイルを用意してください。 latexの使い方は、1年生のコンピュータリテラシの本等を参照してください。

	\documentclass{jarticle}
	\usepackage{graphicx}
	\begin{document}
	\includegraphics{sin.eps} \\ %% 等倍
	\includegraphics[scale=1.5]{sin.eps} \\ %% 拡大
	\includegraphics[height=4cm,width=1.5cm]{sin.eps} \\ %% 変形
	\end{document}

(注意、\マークは端末ではバックスラッシュ)

で囲った

	\includegraphics
は、実際には1行で十分である。そのままのスケールならば、4行目を利用する。拡大には5行目を、変形ならば6行目を利用する。それぞれ数字を変更すれば、それに対応して、大きさが変更されるので、

	\includegraphics[scale=0.5]{sin.eps} \\ %% 縮小
などとすれば、縮小される。

中カッコの中のsin.epsは、印刷するファイルを指定する。

また、大カッコの中は、scale,height,widthの他にも、

	angle=角度
で、回転されるし、
	bb=左下x 左下y 右上x 右上y
を指定すれば、印刷される部分が変更される。bbにあわせて、
	clip
を指定すれば、上で指定した領域以外は印刷されない。パラメータを複数する場合には、上の例の6行目のように大カッコ内に,に続いて指定する。他のパラメータで何があるかはlatexの書籍を参照。

platexを実行後、xdvi(*.dvi)やgv(*.ps)で大きさを確認して欲しい。まだ、途中で切れているようであれば、数字を小さくして縮小して欲しい。あとはこの*.dviや*.psを印刷すれば良い。


Q2 : バッググラウンドジョブで走らせている(&をつけてプログラムを実行させている)途中で、ログアウトすると、計算が止まってしまうのだけど…


一応回答しますが… 間違えると他人に迷惑をかけることになります。ですから、以下の話は理解できない人は無視してください。

ログアウトすると、あなたが動かしているプログラムは全て終了されるのは、普通の動作です。間違えではありません。

でも、これでは、端末室から近くにはいけるけど、飯を食べにいったりすることができない。これでは困る。そのため、ログアウトしても、プロセス(よくわからない人はプログラムとほぼ同等と思ってください。)をそのまま走らせるには、nohupという、コマンドを使う。使い方は

	/usr/bin/nohup コマンド &

である。コマンドは普段使っている使い方でよい。

ただし、このnohupを使って動かしたプロセスは簡単に落とせる方法は無い!(高等な方法は下記参照)従って、いくつもプロセスを動かすと、他の方に迷惑をかける。最悪、アカウント停止の処分も考えられるので、nohupで実行するのは1回に限るべきである。

nohupを使った時には、通常画面に出力される文字はnohup.outに出力される。プロセスが終了したかどうかを確認する時には、nohup.outを確認したり、 ls -lで最近ファイルが更新されてないかなどで調べるのが簡単である。

bashではnohupだけで入力すれば/usr/bin/nohupだが、 tcsh(やcsh)ではnohupと入力すると/usr/bin/nohupではなく、tcsh独自のnohupである。このtcsh独自のnohupはおかしい事が多く、 端末室では使えないので、/usr/bin/nohupを使う。(これは郡司が確認してます)

(以下はちょっと難しいので、わからない人はわからなくてもいいです。) ps -Afとすると、現在動いているプロセスの一覧が表示される。従って、この表示をパイプでつなげて、grepで必要な分だけ表示を抑えよう。

	ps -Af | grep コマンド名

これで見つからなければ、もうプロセスは動いてない。(ただし、他人の動かしたプロセスの可能性もあるので、注意)

どうしても、プロセスを止めたい時には、psで出力されたプロセスIDを覚えておいて、

	kill プロセスID

である。これでも止まらなければ、

	kill -9 プロセスID

を行う。他人のプロセスで無い限りこれで落ちる。ただし、変なプロセスを落とすと自動的にログアウトされてしまう可能性もある。


Q3 : cmd201でエラーが出ます?なぜでしょう?


cmd121が終わったあと、work-ND1.nsqなどのファイルを確認してますか?先生のページにも書いてあるように、 cmd121はこの方法では上手くいかない場合がある。

チェックすることは、

work-ND1.nsqなどのファイルに、用意したデータが全て入っているか?

ということです。

もし、入ってなかったら、NC_****.txtを良く見て欲しい。 ND1などは略称なので、正式名称で入っている場合もあるからである。正式名称などで入っていた場合には、各自emacsなどで書いて、補ってもらいたい。

余力がある人は、正式名称などでも動くようにスクリプトを書き換えてみよう。


Q4 : cmd351でエラーが出ます?なぜでしょう?


work-conc-constraint.tplはありますか?先生のページにも書いてあるように、

work-conc-ml.tplを編集して、work-conc-constraint.tplを作成する。

と書いてあります。

cmd331 が終わると、 work-conc-ml.tpl ができるはずです。ここで、work-conc-ml を編集しないで、

	cp work-conc-ml.tpl work-conc-constraint.tpl

で、 work-conc-ml.tpl をコピーして、 work-conc-constraint.tpl の方を編集して下さい。 それから cmd351 をかけてみてください。

これで駄目ならば、constraintの構文が間違っている可能性があります。

注意する点は、{}をつける場所以外での、 work-conc-ml.tplとwork-conc-constraint.tplの構造が異なると、エラーが出力されるので、work-conc-ml.tplとwork-conc-constraint.tplをよく見比べて間違っていないか、もう一度確かめてください。


このページは郡司が作成しました。