自作フリーソフト
自作フリーソフト
あなたは
人目のお客様です.
▼目次▼
▼自作フリーソフトについて▼
メールは kozos(アットマーク)kozos.jp まで
坂井が作った,フリーソフトです.開発は主に FreeBSD で行っていますので,
FreeBSD でならほぼ問題無く動きます.
Linux や Solaris にも,簡単に移植できると思います.
最近は,RedHat用RPMも作成しています.(2000年3月 EyeClock, N.A.D.A.R. をRPM化)
このページは,新しいプログラムを書くたびに,下に追加していきますので,
基本的には下にいくほど新しいものになっています.(バージョンアップを除く)
下にいけばいくほど,どんどんプログラムがまともになっていくのがうれしい.
ずいぶん上達したもんだ.
ちなみに,まともなプログラム順位は,
- 1. XFireworks (かなりまとも)
- 2. EyeClock-2.0 (これもかなりまとも)
- 3. XKeyWrap (ふつうのつくり)
- 4. Nadar (わりとまとも)
かな.(
WonXもかなりまともです)
ひどいプログラム順位は,
- 1. XStarRoll (ひどい)
- 2. 初期の XMangekyou (これもひどい)
- 3. 初期の EyeClock
- 4. 初期の Nadar (ひどいというより,とんでもない手抜きプログラム)
かなあ.
XFireworks や WonX は,C言語でオブジェクト指向をやる上では,
わりといい見本にはなると思う.また,
開発の履歴を見ると,チューニングの
過程もわかるので,参考になるかも.
ダウンロード数集計(2000年5月21日〜2001年1月8日)
説明
XShodou は,UNIX の X Window System 上で動作する,
「書道」のアプリケーションです.
マウスのドラッグを繰り返すことにより,だれでも気がるに「書道」
が楽しめます.
ダウンロード
使い方・追加・備考など
インストール方法
XShodou は FreeBSD 用ですが,Tck/Tk で書いてあるので,UNIX ならば それほど苦労することなく,移植できるでしょう.
実行には Tck/Tk が必要です. 詳しい使用方法は,インストール後に man xshodou をご覧ください.
説明
画像が変化しながら,ずっと回るだけです.
ダウンロード
使い方・追加・備考など
XMangekyou-1.1b では,以下の点を修正してあります.
- Linux, FreeBSD-2.2.8R でコンパイルできない.
- ルートウインドウに張り付けると,変になる.
- イクスポーズの反応が鈍い.
- その他数ヶ所.
XMangekyou-2.0 では,以下の点を修正してあります.
- Ctrl-C をトラップして,終了時の処理をちゃんとするようにした.
(ルートウインドウに張り付けてブレークしたときの不具合が解決)
- プログラム構成を大幅に修正.
XMangekyou-2.0.1 では,以下の点を修正してあります.
- anime.c 内の ReadAnimationData() で,
if (p->lines_number == 0) や if (p->circles_number == 0) なときに,
k が初期化されていないバグを修正.
(Linux など一部で動作しなかった不具合が解消した,のだとおもう)
- HISTORY.euc を追加.
- Makefile 一部修正.
実行時のパラメータは,
% xmangekyou -geometry 600x600 -size 120 -lines 50 -circles 20 \
-line-thickness 10 -circle-size 20 -speed 200 -change 2000
てなかんじです.
-root で,壁紙にもできます.
-size を小さくしすぎると,メモリがフローする問題は,解決しました.
説明
BSD デーモン君の時計です....が,ただの時計ではなく,
マウスを追いかけて,目がきょろきょろ動きます.
ダウンロード
使い方・追加・備考など
なかなかかわいいでしょ?
自分の好きな画像を文字盤にして,時計にすることもできます.
また,データファイルを書けば,その画像の目玉が動くように,
カスタマイズすることもできます.
好きなタレントや,漫画のキャラや,知人や上司の写真などを使って,
目玉が動くオリジナルの時計を作ってください.
詳しくは,README.euc をご覧ください.
the BSD daemon
の著作権は Marshall Kirk McKusick 氏が保有しています.
EyeClock の BSD デーモン君は,Marshall Kirk McKusick 氏より
the BSD daemon の使用の許可をいただき,坂井弘亮が描いたものです.
EyeClock-1.1b では,以下の点を修正してあります.
- Linux, FreeBSD-2.2.8R でコンパイルできない.
- イクスポーズの反応が鈍い.
- その他数ヶ所.
1999年12月24日 に,EyeClock-2.0 をリリースしました.
EyeClock-2.0 では,以下の点を修正してあります.
- 独自ヴィジェットとして設計しなおした.
(他のアプリケーション上に張り付けることが,理論上可能になった)
- 設定を全てリソースで行うように変更した.
- 目玉をピックスマップにした.
- 画像の拡大縮小をサポート.
- 数文字のサポートを追加.
- サンプル画像を大幅に追加.
Linux用のペンギン画像も追加しました.
こんなのもあります.
- コピーライトを変更.
- おまけファイルを追加.
- さまざまなバグの修正.
説明
血まみれウインドウプログラムです.はっきりいって悪趣味.
ダウンロード
使い方・追加・備考など
% xblood -color red
のようにして使います.(色はデフォルトで赤)
% xblood -color blue
% xblood -color purple
とかも不気味です.
熱烈なファンもいるらしい!?
XBlood-2.0 では,さらに血しぶきが飛び散るようになりました.
説明
←こんなふうに,文章が延々と遠く宇宙の彼方へと流れていきます.
ダウンロード
使い方・追加・備考など
% ls -l | xstarroll
% echo "This is XStarRoll." | xstarroll
% xstarroll "This is XStarRoll."
% xstarroll sample.txt
% xstarroll sample.xpm
% xstarroll "This is XStarRoll." sample1.txt sample1.xpm ...
のようにして使います.
XStarRoll-1.03 では,man man | xstarroll のような使いかたで,文字がおかしく
なってしまう問題を修正しました.
XStarRoll-1.04 では,おかしなエスケープシーケンスを用いたときに,処理が止まってしまう可能性があるという問題を修正しました.
XStarRoll-1.1b では,以下の点を修正してあります.
・ルートウインドウに張り付けると,変になる.
・イクスポーズの反応が鈍い.
・その他数ヶ所.
説明
色つき mnews で,色を自由にカスタマイズできるようにするパッチです.暇つぶしに作ったものです.
mnews121PL4.tar.gz 用のパッチです.(mnews1.22PL1 でもいけるそうです)
.mnews_setup で,色をカスタマイズできるようにします.
詳しくは付属の README を読んでください.
ダウンロード
説明
風船がぷかぷかさまよいます.
ダウンロード
説明
キー入力を別のアプリケーションに送るためのラッパーです.
キー入力を記録して再生したり,繰り返し再生したり,別のXサーバ上の
アプリケーションにキー入力を送って操作したりすることができます.
ダウンロード
使い方・追加・備考など
(使いかたその1)
エディタで文章を書いたりしてると,よく,
→, →, BS, BS, ↓, →, →, BS, BS, ↓, →, →, BS, BS, ↓, ...
のようなキー操作をえんえんと繰り返したりしますよね.
そんなときに,便利です.(キー入力を記憶させて,繰り返しリピートできます)
(使いかたその2)
emacs でプログラムを書くときなどに,まさにエディタ上でプログラムを
書いていくときのキー入力を記憶して,あとでリアルタイム再生したりすることが
できます.
(リアルタイム再生すると,emacs 上でかってにカーソルが動いて,
あたかもだれかが操作しているかのようにプログラムを書き始めるので,
なかなかおもしろい)
(下のデモ用データを再生すると,坂井がemacs上で
「XKeyWrap のリアルタイム再生の速度調整の部分」を書いていくシーンを
再現することができます.(具体的なやりかたは,添付の README 参照))
(使いかたその3)
リモートのXサーバにキー入力を送信することにより,別画面上のアプリケーションの
操作ができます.
うまく使えば,ひとつのキーボードで2つのディスプレイを操作することができます.
注意
XKeyWrap は,XLib の XSendEvent() によってイベントを送っています.
したがって,アプリケーション側で,allowSendEvents が False になっていると,
XKeyWrap からのイベントを受け付けてくれません.
このようなアプリケーションには,たとえば,xterm や kterm などがあります.
これは,おそらく kterm のようなアプリケーションはその性質上,
外部からのイベントをそのまま受け付けるのは危険という,
セキュリティ上の問題だと思われます.
このことを理解した上で,XKeyWrapからの入力を受け付けられるように
するには,以下のようにします.
- .Xdefault を修正する方法
.Xdefault に,
KTerm*allowSendEvents: true
のような行を追加(man xterm 参照)します.
- ソースを修正してコンパイルしなおす方法
ktermのソースを入手して,以下のように修正します.
charproc.c の,
{XtNallowSendEvents, XtCAllowSendEvents, XtRBoolean, sizeof(Boolean),
XtOffsetOf(XtermWidgetRec, screen.allowSendEvents),
XtRBoolean, (XtPointer) &defaultFALSE},
を,
{XtNallowSendEvents, XtCAllowSendEvents, XtRBoolean, sizeof(Boolean),
XtOffsetOf(XtermWidgetRec, screen.allowSendEvents),
XtRBoolean, (XtPointer) &defaultTRUE},
に修正する.
ただし以上のことは,セキュリティのことを考えた上で,各自の責任で行って
ください.とくに kterm をコンパイルしなおす方法だと,普段使用する kterm は
すべてデフォルトで外部からのイベントを受け付けるようになってしまいます.
説明
N.A.D.A.R. は,ネットワーク対戦型戦車ゲームです.
ミサイルと砲弾を駆使して,相手を撃破してください.
ダウンロード
NADAR-b04 のダウンロード (2000年02月27日)
NADAR-b05 のダウンロード (2000年03月07日)
NADAR-b05 RedHat RPM のダウンロード (2000年03月07日)
NADAR-b05 RedHat SRPM のダウンロード (2000年03月07日)
NADAR-c01 のダウンロード (2001年03月12日)
- NADARの開発を再開しました!
- Linuxでは,戦車が黒になってしまって見えない,というバグが出るかも
しれません.そのときは,configure.h の #define MONO_COLOR_TANK を有効に
することで,とりあえずは回避できると思います.
- これからどんどん改良していきます.updateも頻繁に行っていく予定です.
- ゲームなので,みんなで遊んで,感想をどしどし寄せてください.
NADAR-c02 のダウンロード (2001年03月18日)
- HISTORY ファイルをパッケージに含むようにした.
- Path クラスをごっそり変更.通信の方法とフォーマットを大幅に変更.
(注:バージョンc01と互換無し)
- ステージが進むとキーの反応が鈍くなるというバグが再発.要チューニング.
- コンパイルオプションに -Wall 追加.ワーニングをすべてつぶした.
NADAR-c03 のダウンロード (2001年03月18日)
- ステージが進むとキーの反応が鈍くなるというバグを修正.
(原因については,HISTORY ファイル参照)
- Ctrl-C でのシグナル終了処理を多少改良した.(でもあまりまともではない)
- マップ関連で,通信データ量と描画量を削減.
- テキスト関連で,通信データ量と描画量を削減.
- ようやくふつうにゲームができるくらいにまともになった.
NADAR-c04 のダウンロード (2001年03月20日)
- XFireworks から arguments.c を移植.コマンドライン引数の展開処理を
arguments.c で行うように修正.
- ピーピング機能追加.-peep オプション追加.
- -map-width, -map-height, -width, -height オプション追加.
- バックグラウンドカラーを茶色に変更.-bg オプション追加.
- 後退禁止用に,-no-backward オプション追加.(後退できなくなるので,ゲームの
戦略がまた別になって楽しめる)
NADAR-c05 のダウンロード (2001年03月23日)
- ドキュメントを前面的に見直し.
- DispDestroy() にリソースの開放処理を追加.
- 通信データ量を減らすように修正.(注:前バージョンとの接続の互換無し)
- READ_KEY コマンド削除.(SEND_KEY 実行時に XSync() でキーイベントを
処理してからキー押下情報を読み出すように修正した.とくに反応が鈍くなって
いるようなことはなかったので,これでよしとする)
- Makefile 修正.Makefile.mk 追加.(各 Makefile の共通項をまとめた)
- 戦車の描画時のマスク処理用のピックスマップを色ごとに作成し,
ピックスマップでマスク処理をするように修正.
- その他,細かい点の修正とチューニング.
NADAR-c06 のダウンロード (2001年03月26日)
- 簡易 sqrt() 関数を追加.(誤差はあるがあるていど高速)
ミサイルの処理での平方根計算を,簡易 sqrt() 関数で行うように修正.
(-lm が必要なくなった)
- クライアントの新規参加時に,クライアント側で描画の準備ができてない間は
PLAYER_WAIT 状態とするようにして,クライアント側の準備中にもサーバ側では
ゲームを進行できるように改良した.
(クライアント起動時のキャラクタの拡大縮小処理をサーバが待っているのが
ボトルネックになっていたので,拡大縮小処理時にはサーバは待たないようにした)
クライアント側の描画準備完了&ゲーム参加用に,ADD_ME コマンド追加.
(前バージョンとの接続の互換性無し)
- サーバで時刻同期をできるように改良.(-interval オプション追加)
- クライアントに直接描画モード追加.(-direct-draw オプション追加)
キャラクタの消去のタイミングを通知するために,GAME_CLEAN コマンドを復活させた.
(前バージョンとの接続の互換性無し)
- Makefile 修正.
(install ターゲットの依存性に all 追加,gzip に -9 オプション追加)
NADAR-c07 のダウンロード (2001年03月29日)
- 256色モード時に,戦車の色が白黒になってしまうバグを修正.
(原因は HISTORY 参照)
- 通信時のフレームのフォーマットを大幅に変更.(通信量を削減した.Path.c 参照)
(前バージョンとの接続の互換性無し)
フレームのフォーマットについては,share/Path.c 中のコメント参照.
NADAR-c08 のダウンロード (2001年04月01日)
- ゲームのプレイ中のタイムアウト追加.(-timeout オプション)
ネットワークが遅くてゲームについてこれないクライアントは,タイムアウト
させることができるようにした.
(タイムアウトを短めに指定した状態で,ゲームのプレイ中になにか別の
X アプリケーションを起動すると,N.A.D.A.R. の X クライアントが
XSync() のところでポーズして,そこでタイムアウトして落ちてしまうことが
あるので注意)
- プレイヤーから参加要求(JOIN_REQUEST)があったが,準備完了の通知(ADD_ME)が
いつまでたっても送られてこない場合に,プレイヤーを削除するように修正した.
- プレイヤーの参加人数の上限を指定できるようにした.(-max-players オプション)
これらの改良により,サーバは実用に耐えるくらいに安定したかな? と思う.
- データの受信時に,返信が遅いプレイヤーはリストの先頭付近に移動するようにして,
返信の遅いプレイヤーはデータの送信時の順番を先にするように改良した.
- ピックスマップの拡大/縮小時に,X サーバとの通信量を減らすために,いったん
XGetImage() でイメージ化してまとめて拡大/縮小処理をしたあとに XPutImage() で
ピックスマップに戻すように変更.
- Socket.c の bzero(), bcopy() を memset(), memmove() に変更.
NADAR-1.0 のダウンロード (2001年04月07日)
- ようやくリリース版ができました.
- 送受信のバッファのサイズを調整した.
- プレイヤー名に文字数の制限をつけた.
- FreeBSD の ports に合わせて,Makefile, Makefile.mk を見直した.
- ゲーム中のプレイヤーの削除時(q を押したときや,タイムアウトしたとき)に,
無条件に Tank の state を TANK_EXPLOSION にしていたため,一度爆発した戦車でも
再び爆発してしまい,lose の計算がおかしくなっていたバグを修正した.
- タイムアウトの処理を改良.タイムアウト時間を短く設定しすぎた場合に,
簡単にタイムアウトしてしまう問題を修正.
NADAR-current のダウンロード (2002年11月24日)
- NADAR の開発を再開しました.今回は,以下を目標にして開発を進めます.
開発中の current 版は,随時公開していきます.
- 通信機能の改善.(インターバルやタイムアウトなどを改良)
- コンピュータ・プレイヤーとの対戦機能を追加.
(ひとりでもプレイできるようになる)
NADAR-current のダウンロード (2002年12月25日)
- コンピュータに複数の行動パターンを実装.より複雑な行動をするようになった.
(回避,接近状態,近接状態,追跡,左から回り込み,右から回り込み,後退,後退しながら攻撃,ランダムウォーク)
NADAR-current のダウンロード (2002年12月29日)
- コンピュータの行動パターンに危険モード(最接近状態)を実装.
- コンピュータの行動の選択処理を修正.
- その他,バランス調整.
NADAR-current のダウンロード (2002年12月30日)
- 危険モードの場合には,より細かい回避を選択できるように,「動かない」という
動作も有効にした.
- その他,バランス調整.
NADAR-current のダウンロード (2003年01月01日)
- ピーピングモードのときにはコンピュータは見える範囲だけ(ちょっと不十分だが)
を見て行動決定するように修正.(近くに相手がいないときには,ランダムウォークに
なる)
- STRATEGY.jpn を追加.
- その他,バランス調整.
NADAR-current のダウンロード (2003年01月11日)
- STRATEGY.jpn を追記.
- シグナル処理を大幅に改良.Ctrl-c によるブレーク時に,確実に終了処理が
行えるようになった.
- シグナル処理の改良に合わせて,Disp.c のメインループ処理を改良,見直し.
(XtAppMainLoop() でなく,独自メインループを使用する)
NADAR-current のダウンロード (2003年01月23日)
- 時刻同期,タイムアウト処理に,アラームシグナルと select() のタイムアウト
機能を使用するように変更.時刻同期,タイムアウトの時間が正確になり,
サーバの負荷を下げる効果がある.(setitimer() を使用しているので,これが使えない
場合や,なんか動作がおかしい場合には,configure.h の USE_ALARM_SIGNAL を
無効にすると,もとに戻すことができる)
- クライアントからのデータ受信の受け付けを,select() で複数の
ファイルデスクリプタを同時に監視するように修正.
(ただし,データの受信時に,Path ライブラリの内部でもう一度 select() しなおして
いるので,select() される回数はそれほど減らない(むしろ増えるだろう))
- 時刻同期,タイムアウトのデフォルト値変更,ドキュメント修正.
NADAR-2.0 のダウンロード (2003年01月29日)
- バージョン2.0をリリース.
- ステージ開始の条件を,人間のプレイヤー + コンピュータ・プレイヤーの数で
判断するのでなく,人間のプレイヤーの数のみで判断するように修正.
(人間のプレイヤーがいないのにステージが始まってしまい,サーバの負荷が
無意味に常時高くなるのを防ぐため)
- ステージ開始したとたんに,自分を発見すらしていないうちに,コンピュータに
撃墜されてしまうと悲しいので,ステージ始めの数秒は動かないようにした.
(Stage.c:StageStartAsServer() のdont_move フラグ)
- パッケージ名,バージョンを nadar-2.0, NADAR-2.0 に変更.
- ドキュメント修正.
- その他,細かい修正.
波の干渉の例
説明
ダウンロード
使ってみたいという人がいたらメールください.
もうちょっとなんとか体裁を整えます.
使い方・追加・備考など
他にも,v = fλや,縦波と横波や,定常波(定在波)や,ドップラー効果を,
実際に動くものを目で見て理解したり,説明したりすることができます.
坂井の経験だと,「波動」は,黒板でごちゃごちゃと図を描いて説明するより,
動くものを見せたほうが,一発で理解できたりします.
(縦波と横波の違いをこれで生徒に見せたら,生徒は一撃で理解してくれました)
説明
ルートウインドウ上で動作する,花火です.
花火の種類も豊富で,とってもきれい.
ダウンロード
- XFireworks の履歴
(2000年7月6日から7/23にかけての,XFireworks のβ版の開発の履歴です.
興味のある方はどうぞ.チューニングの勉強になるかも)
-
XFireworks-1.0 のダウンロード (2000年07月27日)
-
XFireworks-1.1 のダウンロード (2000年07月29日)
- 負荷(load average)を低くするために,計算用のクラス Calculator を
追加し,sin(), cos() を配列に格納するようにした.
- 負荷(load average)を低くするために,Pieces_Create(), Pieces_Move() を
修正した.(冗長な計算をループの外に出した)
-
XFireworks-1.2 のダウンロード (2000年08月01日)
-
XFireworks-1.3 のダウンロード (2000年08月02日)
- 使用が終った Pieces オブジェクトと AfterImages オブジェクトをリスト管理し,
再利用することにより,メインループ中での malloc() 呼び出しを減らした.
(XFireworks クラスの free_pieces_list, free_after_images_list メンバ参照)
負荷を抑えるための修正だが,あまり効果はないようだった.
- Obj.c の ObjList_IsEnd() にバグあり.修正.
- Makefile の install-bin, install-lib, install-man ターゲットに
$(MKDIR) を追加した.
(PREFIX = /usr/local だと,/usr/local/etc が存在しない場合があるので)
使い方・追加・備考など
XFireworks-1.4 (This is discard version! Please download xfireworks-1.3 normally)のダウンロード (2000年08月06日)
(注: xfireworks-1.4 は没仕様のバージョンです.通常は,xfireworks-1.3 を
使用してください)
- Pieces オブジェクトから AfterImages オブジェクトを生成する際に,
memcpy() を使用できるように,Pieces の座標管理を XArc で行うようにした.
CPU負荷は,多少下がったようだ.
- XArc 構造体の x,y メンバは,int 型のため,浮動小数点数での座標計算が
できないという潜在的な問題があるため,ボツ仕様とする.
(次回バージョンアップは,バージョン1.3からアップデートする予定)
(注意)
XFireworks-1.3から,使用が終った Pieces オブジェクトと
AfterImages オブジェクトのメモリは,解放せずに保存しておいて,
再利用するようにしました.
再利用できるメモリがもう無いときにはじめてメモリを新しく確保するように
なっているので,起動してしばらくの間は,top で見るとメモリリークしている
みたいに少しずつメモリを食っていきますが,これはリークしているのでは
ありません.徐々に確保しているのです.
しばらくすると定常状態に落ち着きます.
説明
xkobo の自機を超強力にするパッチです.以前に遊びで作ってみたものです.
xkobo-1.11 用です.
ダウンロード
使い方・追加・備考など
パッチはそれぞれ2つずつあります.たとえば 4-way にしたいときには
「4-way用のパッチその1」と「その2」の2つのパッチを当ててください.
パッチの当てかたは,以下のとおり.たとえば4-wayにしたいなら,
- xkobo-1.11.tar.gz を展開する.
- patch < xkobo-s4-1.patch を実行する.
(ちゃんとパッチが当たったことを確認する)
- patch < xkobo-s4-2.patch を実行する.
(ちゃんとパッチが当たったことを確認する)
- xmkmf を実行する.
- make depend を実行する.
- make xkobo を実行する.
FreeBSD で ports を使ってインストールする場合には,ports の patches
ディレクトリに,パッチのその1とその2を適切なファイル名にリネーム
(もとからあるパッチのファイル名に合わせて,patch-ae, patch-af などに
リネームする)して置いて,make install で,
簡単にパッチング&インストールできます.
手順は以下のとおり.
> cp -R /usr/ports/games/xkobo ~/> ls ~/xkobo/patches
patch-aa patch-ac
patch-ab patch-ad> cp xkobo-s4-1.patch ~/xkobo/patches/patch-ae> cp xkobo-s4-2.patch ~/xkobo/patches/patch-af> cd ~/xkobo> make ; make install
説明
カレンダー作成用のアプリケーションです.オリジナルの画像を張り付けた
HTML形式のカレンダーを作成するので,ブラウザで参照・印刷することにより,
オリジナルのカレンダーを作成できます.
サンプル画像です.こんなカレンダーができます.
ダウンロード
説明
HTMLファイル中に章番号,表番号,図番号などを自動的にふってくれる
perl スクリプトです.(TeX と同じようなことをやってくれます)
また,表や図ごとに名前をつけて,表の参照部分から表へのリンクを生成して
くれます.
目次や表目次の生成,参考文献の番号生成やリンク作成もやってくれます.
サンプルHTMLファイルです.
このようなHTMLファイルから,
このようなHTMLファイルを
作成してくれます.
(章番号や表番号が入っていて,目次や表目次もあって,
表の参照部分から表へのリンクや,参考文献のリンクが作成されていることに
注目してください)
こちらは日本語版のサンプルHTMLファイルです.
このようなHTMLファイルから,
このようなHTMLファイルを
作成してくれます.
ダウンロード