‘プログラミング’のエントリ

Visual Studio.NET 2003 を購入。あまり変わってないけど,これでビルドするとまた MFC の DLL を変えなければならないわけで。ウェザタイをビルドするのは保留か。とりあえず C# で遊んでみよう。

ロビーにいる方たちにワードサーバを試してもらった。使い方はすぐに分かってもらえたが,

  • ひらがながちゃんとひらがなになっているかのチェック
  • 長すぎるワードのチェック
  • 全ワードダウンロード機能

などが必要なことが分かった。

ワードサーバのワード一覧を作ってみた。で思ったのだが,このシステム,ユーザの良心にかかってるというか,すぐ崩壊するような気がしないでもない。まあとりあえず運営してみて,だめそうだったらユーザを制限するなどしよう。

3ヶ月半ぶりに開発版をアップ。ワードクライアント機能に対応。ワードクライアント機能とは,ワード指定に URL を指定することでワードサーバからワードをダウンロードする機能である。かなり前から構想はあったが,やっとクライアント側だけ完成。

現在ワードサーバが未完成だが,テスト用問題を打つことができる。ルール設定のワード欄に「公式ワードサーバ」が追加されているので,それを選択する。するとエディットボックスに URL が表示されるので,そのまま OK を押せばいい。

今後,問題を誰でも登録できるワードサーバを作っていこうかと。まあ,変な問題が登録されたらどうするか,という問題もあるが,とりあえず私が定期的に見て手動削除する方針で。

ちなみにサーバ側はワードをそのまま返すだけなので,Webサーバがあれば誰でもワードサーバを構築することができるし,テキストファイルをアップすればそれを指定することも可能。また,他のタイピングソフトからでもアクセスすることができる。てことで,これに対応したサーバとクライアントがたくさんあれば,タイピングソフト使用者側はいろんなワードが使えるし,タイピングソフト作成者側もワード作らなくて楽,とか思ってるわけだが,そこまでは大変ですかね。

プロトコルとしては,GETリクエストに対して

漢字文章1
ひらがなぶんしょう1
漢字文章2
ひらがなぶんしょう2
・・・

を返すことになっている。「ワード自動生成」についてはサーバ側で組合せを行う仕様なので,ここでは考えない。これによってウェザタイのワードファイルを URL で指定することができないわけだが,この機能は汎用性を重視したいのでこういう仕様で。

brpuzzle Windowsアプリケーション版をアップしておいた。まあただの15パズルなわけだが,たまにはこういうプログラミングをしないと忘れちゃう。

日記を7月にするのを忘れていた。まあ書いてないわけだが。

近頃の動きとしては,裏で動いている計画のためにランキングを Hi-HO から移動させようとか,もっと前から停滞しているワードサーバ計画とか。そろそろ落ち着いてきているので開発できそうなんだけどなかなかやる気にならないのは PC デスクがないからってことにしておいて。


久々にロビーを覗いてみたところ,最近がラグが多いという話を聞く。しかし,サーバの状況が分からないので何とも言えない。サーバを手元で動かしたいところだ。


歯医者へ行ってきた。被せ物を被せ直すだけ,とか思ったらいろいろメンテしてもらうことに。しかしこんな噛み合わせだったかな。違和感ありすぎ

以前作った Windows + PHP + mySQL のシステムが Linux 上で動かない問題。結局 PHP のソースを EUC にして,MySQLの文字コードも EUC にしたところ動くようになった。あとは本番環境で動くか,なのだが,そこは YN 氏にお願いするとして,ここではインストールメモだけ残しておく。


PHP + MySQL 環境を RedHat Linux に作成。PHP は既に入っているので MySQL だけ入れればいいかと思ったら php-mysql のバージョンが合わずにうまくいかなかったので apache,PHP,MySQLをソースからインストール。

apache(httpd-2.0.46.tar.gz)インストール

// make
./configure --enable-shared=max --enable-module=most
make
make install

// httpd.conf
DirectoryIndex に index.php を追加

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

// 起動
/usr/local/apache2/bin/apachectl start

mysql(mysql-4.0.13.tar.gz)インストール

// make
./configure --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql --prefix=/usr/local/mysql
make
make install

// 設定
scripts/mysql_install_db
chown -R root  /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql
cp support-files/my-medium.cnf /etc/my.cnf

// 起動
/usr/local/mysql/bin/safe_mysqld --user=mysql &

// データベース作成
mysqladmin -u root password (パスワード)
mysqladmin -u root -p create (データベース名)
mysql -u root -p mysql
grant all privileges on (データベース名).* to (ユーザ名)@localhost identified by '(パスワード)';
mysql -u (ユーザ名) -p (データベース名)

php(php-4.3.2.tar.gz)インストール

// make
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

InnoDB: Error: log file .ib_logfile1 is of different size 0 0 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!

というエラー。これは何度もインストールしてファイルサイズの整合性が失われたせいで,

ib_logfile
ibdata

を削除して直った。


PHPからMySQL接続時に

/var/lib/mysql/mysql.sock

に接続できないというエラー。これは MySQL の設定と PHP の設定が合っていないため。今回は PHP 側の設定を直して,DB接続時のサーバを

localhost
から
localhost:/tmp/mysql.sock

にした。


php コマンドで直接 .php を起動すると

File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2)
Character set '#12' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file

というエラーが出てくるのだが,今のところ実行には影響していない模様。ujis.conf がない,という意味のようだが,未解決。

以前作った Windows + PHP + mySQL のシステムを Linux 上で動かしたいらしいが,動かないらしい。調べないと。

ロビーサーバは14~18日まで停止し,復旧完了。また停止するかも知れないが,とりあえずしばらくは大丈夫かと。管理者様ありがとうございます。


いつのまにかカウンタが65536を超えていた。どうでもいいけど。

ロビーはなかなか管理者に連絡を取れない。サーバ PC 自体を再起動させれば直るのかも知れないが,どうなんだろう。


そういえば忘れてたが,先月の24日に宝島社『DiGi/USER』07月号に紹介されてたらしい。今日本屋で見てみたが,WeatherTyping と書いてロビーの写真が載っていた。なんでもいいから exe 実行してプリントスクリーンしとけばいいや,みたいな。ま,どうせ今時雑誌では何の宣伝にもならないのでどうでもいいんですが。

近頃ピタゴラスイッチが気になる。中学の3階から1階まで手摺り球転がしをしていた身としてはピタゴラ装置が気になるし,プログラマの身としてはアルゴリズムたいそうとこうしんが気になる。


ランキング。コメントが遅いけどレベル10ですか。現1位の方は前からランキング登録ができないと報告されてたので,本当は結構前からですね。申し訳ありません。

気付けば 6 月。生活は落ち着いてきたんだけど,環境がどんどん変わってるのでまだまだ落ち着かない。


親指シフトキーボードを見てきた。なるほど,親指キーはあんな風になってたのか。しかし,15000円くらいなので,テストのために買うのにはちょっと高い。多分対応できないと思うし。

ロビー。新サーバに移行してから何度かルータの再起動が行われていたようで,強制ログアウトしていた模様。今後は一応掲示板などで告知すると思います。

削除依頼を反映。今まで削除は手作業だったのだが,なんとか自動化することができた。データベースが使えればこんな苦労はないのに。

ランキングはこの前のまま変わらず。何件か削除依頼もされているのだが,ランキングの調整が終わるまでは待ち状態で。

と言っても明日からまた忙しくなるわけで,早くやらないと。ルービックキューブやってる場合じゃない。

ウェザタイランキングをちょっとだけ高速化。ソートとかファイルからの読み込みを早くしてみたが,あんまり変わらないか。

時間が少しあったので掲示板を見てみる。とりあえず 1 つとして原因は分からない。とりあえず細かい話題しか書けない段階なので日記の方に書いておく。

MFC70.DLL はパスの通っている場所に入ってればいいはずなんだけど。レジストリ登録はいらないはずだし。というわけで原因不明。

フルスクリーンモードで起動すると強制終了というのはメールでログを送ってもらったのだが,DDERR_WRONGMODE というエラーだった。このエラーは DirectDraw のサーフェスをリストアするときに,サーフェスを作成したときのモードと違ってる,というエラー。最初からフルスクリーンにしてから作成してるはずだが。とりあえず直すにはサーフェスを最初から作り直す必要があり,これは途中でフルスクリーンとウィンドウモードを切り替えるのと同じくらいの手間がかかるわけで。

BGM が流れないというのは Me で試してないというか引っ越し元に実験 PC を置いてきたので試せないわけだが,そもそも Wav なのか MIDI なのか,DirectAudio 全般で流れないのかウェザタイ上だけなのか。

何もしていないのにエラーが発生し強制終了というのは再現不能。エラー時のスタックダンプとかがあると少しは分かるかも知れないけど,そこまで要求していいものだろうか。

「同じ名前のメンバがいます」は一旦強制終了するとタイムアウトするまではログインしっぱなしなので,約 90 秒ほどはそうなる。

親指シフトキーボードは親指シフトキーボードの構造がよく分からない。そもそも親指キー単独では文字コードを出さずに他のキーとの組合せで初めてコードを出す場合,もしくは IME を有効にしなければ使えない場合は対応は不可能。ウェザタイは IME を使っていないので。次にキーボードは普通? でドライバとかエミュレータで対応する場合は親指キーのコードが DirectInput で反応すれば大丈夫なんだけどいろんな書き込みを見る限り無理なんでしょう。ともかくそのキーボード自体を見たことがないし何も知らないのでその辺の情報がない限りは対応は不可能。せめて手元に親指キーボードがあればいいけど,どんなのがあるかどこで手に入るのかも分からない状態だし。

以上。何か分かったら掲示板に報告しますので。

忘れた頃に親指シフトスレで話題が出るわけで。ドライバって普通にアルファベットを打つときも配置違うのかな,とか,親指同時打鍵の判定っぷりはどうなのか,とかありますが,その前に掲示板の書き込みですね。回答する時間がなくて申し訳ありません。ロビーも全然行ってないけどちゃんと動いてるかな。

なんとか時間を作って 15 パズル for PocketPC を作ってるのだが,だいぶできてきた。

2003041701

あとは 1 ドットごとに動く処理とか画像選択処理とかを付ければ完成。折角だから Windows 版も作って時間測定機能とかも付けるか。

で,開発してて思ったのだが,移植は結構楽かも。簡易 MFC とか STL とかあるし。リモートスクリーンキャプチャとかツール類も揃ってるし。思わず CF LAN カードを揃えてしまったほど。あとはエミュレータへのファイルコピーができればいいんだけど,うまくいかない。

というわけでウェザタイ本体はかなり大変だけど,これならウェザタイロビー移植くらいならできそう。…需要がないけど。

掲示板に返信。といっても情報提供のお願いばっかりだけど。


メールで指摘があって気付いたのだが,Internet Game Maker(IGM) さんが復活していた。ただ,ウェザタイについては 1.6 のままなので 1.7 だとうまく使えないようだ。

というわけで Weather Typing1.6 をしばらく置いておきます。ただ Hi-HO に置ける容量に制限があるので,いつまで残すか分かりません。必要な方はお早めに。

# というかスクリプトをこちらで提供させてもらえばいいんですが,ロビーもあるし,いいかな,ということで。


ようやくBASICマガジン最終号を読んだ。今後の展開はないのかなあ。

引っ越し準備のために家にいた,はずなのだが結局ずっと PocketPC 開発環境を整えていた。

まず STL と標準 C++ ライブラリがないという問題。全部最初から作るならなくても構わないが,今までのソースを使いたいのでネットをあさって STLPort を使わせてもらった。しかし,コンパイルして使おうと思っていたのだがいろいろ試してもダメだった。で,stream を使わないように設定すればコンパイルせずに動くのでそれでいくことに。

ここまでで string とか vector とか sort とかが動くようになったのでなかなか使いやすくなった。次に stream が使えない問題だが,必要な部分だけ(ifstream::open iofstream::open ifstream::read ofstream::write くらい)CFile を用いて実装。

次。標準の例外処理が使えない問題。ってかなり致命的な問題な気もするが,MFC のソースを見ていると CException TRY CATCH マクロを使っているようなのでこれなら使える,ってことで CException から派生させてマクロで対処することにした。

ついでに画像ファイルを読みたいので zlib libpng を探すと,WindowsCE パッチが作られていたのでそこからライブラリを構築。

ここまでで画像を PocketPC に表示させることは成功。とりあえず 15 パズルでも作ってみるか。練習には丁度いいし。

PocketPC 用 DirectPlay というのを見つける。Play だけ(?)というのがなかなかいい。Embedded Visual C++ には簡易 MFC もあるし,PPC 版ウェザタイとか PPC 版ロビークライアントとか作ったら面白いだろうか。でも STL がないとかなりつらいか。

というわけだかなんだか,もはや CLIE しかなくなってしまった Palm から PocketPC に乗り換え。初代ザウルスも持ってるから,Zaurus-Palm-PocketPC と一通り使ったことになる。PocketPC は開発環境も整ってていい感じ。


「マイコンBASICマガジン」休刊ですか。物心付くか付かないかの頃から読んでたし,投稿プログラムコーナーにも 2 回ほど載せて頂いた私としてはかなり残念。まあ近頃は読むところも OF コーナーくらいだったし,仕方ないんですかね。

在庫のある分のスキャンとか PDF とかを DVD かなんかに入れて発売してくれれば絶対買うんだけど,出してくれないかな。

ロビーサーバ復活。結果的に 1 日半くらいのサービス停止で済んだのかな。新サーバ管理者に感謝。

本日24時,ロビーサーバを一時停止しました。一応区切りなのでちょっとデータを。

ロビーサーバ開始日時
2002/05/15 01:33:28
ロビーサーバ稼働時間(途中再起動時等も含む)
311日22時間26分32秒
総ユーザーアカウント
3992人
最大同時ログイン数
47人

ちなみにユーザーアカウントについては1人で複数アカウントを使っている人が結構いるので実際何人かは分からない。

復旧については新サーバの準備が完了次第なので明日かも知れないし1週間後かも知れない。というか管理者に連絡が取れないよう。

引っ越しに備えて通信環境を整理。

まず @Niftyを解約。というかインターネット接続には使ってなくて,NIFTY-Serve を解約と言った方がピンとくる感じだが,ここ数ヶ月全く接続してなかったのでお引っ越しを機に。

次に今更なテレホも解約しなくては,と思って Web を見てみたけどネットからは申込みはできるけど解約はできないのかな。

Hi-HO は今までのように電話回線でつなげなくなるが,デナスのためにそのまま契約を残す方向で。まあその代わりに他の接続手段を用意してたりするわけだが。

あと denasu.to が使えなくなる関係上ミラーサーバとかサイト内検索が使えなくなる。ミラーサーバは既に更新してないからいいけど,検索はどうしよう。はっぱ氏サーバに置いておこうかな。あと denasu.to のメールアドレスとメーリングリストが使えなくなるのは結構痛い。

最後にロビーサーバ。そろそろ廃止の時期なわけだが,ここにきてデナス基地で新たな動きが。元々4~5月解散予定だったが,だらだらと存続するらしい。というわけでロビーもそっちに移転できるかな。移転と言ったり廃止と言ったりころころ変わってるが,まあそういう方向で。


ウインドウズROM!のタイピングソフト企画にウェザタイが掲載される予定になってたので本屋でその部分だけ確認。

第2回WT大会が開催されるというのがありましたが,

3月第4週~4月第1週、午後10時~1時

というとロビーの休止or廃止or移転と完全にかぶってるわけで。ま,まあロビーがなくても大会できます,よね。


てなわけでロビー。サーバ管理者は3月中に常時接続不能な環境に引っ越すことが決定。さらに,高速回線を持つ denasu 基地については数ヶ月内の解散が既に決まっている。ちなみに私は 3 月終わりから 6 月くらいまでネット接続がかなり制限されると思われ,安定した後も常時接続固定 IP というのは無理な環境なのでサーバ運営は不可能。今残された可能性を模索中というかこのままだと 3 月中に廃止だろう。

サーバが復活することが決まっていればはっぱ氏のところへ移転も考えられるけど,denasu.to サーバの廃止が完全に決まった以上,永続移転になってしまうので,その辺はどうですかね>はっぱ氏

あとはサーバを公開して,ユーザーさんで(内輪で)ロビーサーバを立ててもらうくらいしかない。

ま,そんなところで。

ゾンビ部屋問題を修正してロビーを再起動しておいた。

昼間,ロビーを荒らしつつゾンビ部屋解明を行っていた。一応原因は判明。ロビーの仕様上1人が複数の部屋に入ることを許しているのだが,1人が同じ部屋に3回以上入った場合,部屋に残ってしまっていた。通常のロビークライアントを使っている分には問題が出ることはほとんどないはずだが,telnet で入って適切なデータを流したりタイミングが悪いとそういうことが起こるようだ。とりあえず明日ロビーを再起動して修正版にする予定。

開発版をアップ。とりあえず変更点は3つ。1つ目は昨日書いたロビーの検索機能。2つ目は本体側でウィンドウがアクティブでない場合,FPSを落とすように変更したこと。これは,ゲーム中にロビーなどでチャットしてるときに必要以上に重くならないようにするため。3つ目は本体側でゲーム中に速度と正確性を表示したこと。少々見づらいが,まあ表示方法はこれから深く考えるとして。

RedHat Linux。Apache,PostgreSQL は入っていたらしい。ので java だけインストールした。とりあえずロビーは動くようになった。


ロビークライアントに検索機能を付けてみた。というか ID_EDIT_FIND メニューアイテムを付けただけなのだが。まだ開発版アップはしていない。

まっちー氏が RichEdit を使ってエディタを作っていた。で,構文強調用に色を付けるとアンドゥで問題が出るとのこと。実際やってもらうと,文字挿入-色付けが別々の操作になっててアンドゥが確かに変。この辺は融通が利かないので結局最初から自分で作るしかないのかな。

ついでに RichEditView で作ると勝手に検索機能が付くことを教えてもらった。ロビークライアントにも検索機能付けようかな。