Top
Photo Drawings Software Writing Reading Memo Study Profile Bookmark 
Amethyst DumLambda PetitLambda Yamanba JSharp JFlat OOPS yash KumonoIto ML Toys 

小品

スクリプト、小さなプログラム。
コマンドをあまり知らないので自作したものなど。

ディスクの使用量

「JAIST情報科学科の同一学年の学生中で、自分のディスク使用量はどれくらいの位置にあるか」
を知るコマンド。
わたしは今までに二回、ディスク使用率を100%にしたことがあるので、気になる。

ソース

for d in 0 1 2 3 4 5 6 7;do for h in /home/i000$d/*;do du -sk $h;done ;done | sort -nr | grep -n $USER

出力例

4:1285304       /home/i0003/kiyoshiy
堂々の第4位。

grawho

JAISTネットワーク全体でワークステーションにログインしているユーザ の数を学科・階別にグラフ化して出力する。
rwhoコマンドの出力を棒グラフにするだけ。

社会人時代はずっとウィンドウズだったが、 あるとき上司が、ユニックスのコマンドを組み合わせ、社員の名簿を集計したグラフをつくって みせてくれて、ユニックスって便利だなと感心した覚えがある。
それを思い出して書いてみた。

ソース

改行しているが本当は一行。
バリエーション1
rwho | egrep '^.........(is|ms|ks)' | cut -c0-9,10,13 | sort -k 2b | uniq |
awk 'BEGIN{p=""} p != $2{if(p!="")print "";printf ($2 ":");p=$2;} p != ""{printf("*");} END{print ""}'
バリエーション2
rwho | egrep '^.........(is|ms|ks)' | cut -c0-9,10,13 | sort -k 2b | uniq | cut -c10,11 | uniq -c | 
awk '{l = sprintf(("%" $1 "s")," ");gsub(/ /,"*",l);print $2 ":" l;}'

出力例

bash$ date
Wed Jan 24 01:01:49 JST 2001
bash$ date
Wed Jan 24 01:01:57 JST 2001
bash$ grawho
i2:*
i3:**
i4:****
i5:**
i6:***
i7:*
i8:********
i9:****
k3:*
k5:*
k7:*
m3:*
m4:**
m7:*
みなさん夜遅くまで頑張っておられるようで。

ホストにログインしているユーザのフルネームを得る

使い途: CGIスクリプト中でこのコマンドを実行して、アクセスしてきたユーザへ のあいさつをHTMLに埋め込む。一つのホストに複数のユーザがログインし ていたら意味なし。

gawkプログラムは、fingerのヘッダ行をスキップするため。
cutは、各行の先頭のユーザ名を取り出すため。
fingerフォーマットがリモートホストのOSにより違うので、 とりあえず、連続するスペース二つまでを名前とみなしている。

finger  @$1 | gawk 'FNR > 2 { print $0;skip--;}' | cut -c10- | sed 's/  .*//g' | sort | uniq
このスクリプトをgetfullnamesという名前のファイルに保存して、つぎのように使う。
bash$ getfullnames myhost
Yamatodani Kiyoshi

REMOTE_HOSTをtcsh以外で使えるようにする

ここで発見。
REMOTEHOST=`who am i |awk '{print $6}' | sed 's/^(//' | sed 's/)$//'`
    

maketar

autoconfで作成したMakefileでは、make distと実行すると tar-ballを作成してくれる。 これと同じようなことをおこなうスクリプト。 MLプログラムのように、autoconfに対応していないプロジェクトの配布パッケージを作成するとき に使用。

ソース

maketar

使い方

プロジェクトのルートディレクトリに移動し、 プロジェクト名とバージョンを必ず指定してコマンドを実行する。
    maketar -p project -v version files...
たとえばJ#のパッケージを作成するときには、
cd ~/src/Jsharp
maketar -p Jsharp -v 0.1 jp/ac/jaist/kiyoshiy/jsharp/*.java
と実行してtar-ballを作成している。

sources2tex/source2tex

プログラムパッケージを構成するソースファイルからtexソースを生成す る。
単に\begin{verbatim}\end{verbatim}で囲んで行番 号つけてTABを展開するだけ。
ゼミ資料にソースコードを埋め込む際に使用。
Tex付属のtgrindというツールがあるそうだが、WSに入っていないので作成。

ソース

sources2tex
source2tex

使い方

sources2tex
 sources2tex [-a author] [-t title] [-o outfile] packagename file ... 
author
著者
title
題名
outfile
出力先
packagename
パッケージ名
source2tex
source2tex [-s sectiontitle] file ...
sectiontitle
"section","subsection","paragraph"などから指定

結果

outfileに指定された名前でtexファイルが作成される。
-oオプションで指定しなかった場合、packagename.texがoutfileに指定される。

バグ

ソース中に"\end{ verbatim}"という文字列が含まれていると、それ以降の出力が乱れる。

showtime

単に経過時間を表示するだけ。
修論発表の練習の際に使った。
アクロバットを全画面表示しても最前面に表示され続ける。 (わたしは、修論発表のスライドをTexでつくってpdfに変換し、 アクロバットで表示して発表した。)

使い方

"Start"ボタンクリックで開始。ウィンドウをダブルクリックでリセット。
パワーポイントやアクロバットを全画面表示すると、 ウィンドウが真っ黒に塗り潰されますが、そこをクリックすると描画され 直します。

スクリーンショット


exeとソース

Windows

ShowTime.exe(For Windows)
ソース(zip,Borland C++ Builder Project)

Linux

Kylixで作ってみました。
ウィンドウを最全面に表示し続けることができないようです (WindowManager依存?)。
ShowTimer(For linux)
ソース(Kylix)

notifyschedule

大堀研究室で使っているスケジュール管理ソフト( webcal2 )の補助プログラム。
登録されているイベント(ゼミなど)を、事前にメールで通知する。

ソース

notifyschedule.sml
notifyschedule.crontab

使い方

notifyschedule.crontabのコメントを見てください。
ファイルの位置などを環境に合わせて適当に変更する必要があります。

gtkdict.py

PythonとGtkを利用したdictコマンドのラッパ。
PyGtkを使ってみたかったのが目的。

ソース

gtkdict.py

使い方

gtkdict.py
とコマンドラインで入力すると次のような画面が表示されます。

この画面で"help"と入力されているエリアに、検索する単語を入力してリター ンキーを押すか、左の"Search"ボタンをクリックすると、検索した結果が 下のエリアに表示されます。

注意

dictコマンド、pygtk・pygnomeモジュールが利用できる環境でないと動作しない。たとえば学校 のWSでは、自分でモジュールをインストールしない限り動作しない。 また、pygtk・pygnomeモジュールのバージョン不整合のために実行できないこともある。