エミュレータ上でそれなりに動くようになってるので当時の雑誌からプログラムを打ち込んで楽しんでます。
PiO、マイコンは全部終わり。I/Oもほぼ終わり。マイコンゲームの本の打ち込みを中断してるのでそれが終われば官僚なのですが。Oh!MZ関係も手付かず。その原因はベーマガだったりします。全部で260本の掲載があり、145本終わった状態で、進捗は56%といったところ。90年まで掲載し続けた最強の雑誌なので仕方ないかな。
MZ-2000は最初に触れたパソコンがMZ-80Bだったのが選定の原因です。町の電気屋さん、文房具屋さんにパソコンが置いてあって、電気屋AにはPC-8001、電気屋BにJR-100、文房具屋AにMZ-80B、文房具屋BにMZ-1200がありました。電気屋Aは遠かったのと、自由にいじれなかったのでそれまでだった。それ以外をいじりまくった訳ですが、見た目、速度的にも80Bが魅力的だった訳です。その後、文房具屋Bがパソコンショップを作り、MZ-2000、PC-8801、PC-6001なども陳列するようになり、そこで拍車がかかったのかもね。ここで展示されていたMZ-2000を後日展示中古として手に入れることになるのです。
そんな感じで思い入れのあるマシンなので復活させるのに気合が入ってしまいます。未だに人気があるマシンなのでソフトの入手も難しいです。DISKベースのソフトなんて当時夢だったからやってみたいですけど、無いものは仕方ないです。
キャラメルコーン
再生してからいろいろなパッケージのものが発売されてましたが、期間限定で国民的漫画家にキャラメルコーンの顔を描いたものが販売されていた。赤塚不二夫と高橋留美子の奴があった。前者はハニーバター味だったので、バター風味の油菓子ははずれが多いから保留。顔はチビ太風かな?後者がミックスベリー味で甘酸っぱいということなので、こちらを買ってみました。顔はラムだと思う。
開けると酸味っぽい香りが一瞬しました。一口食べてみたら、甘い箇所もあるものの、酸味が多少感じる部分もあって、なかなかいい感じでした。基本甘いので、1/3程度でちょっと飽きてきたかな?基本油系菓子は食べないようにしてるので、これまでかなと思います。それでも気が向いたら別のを食べてみようかと思ってます。
そういえば、キャラメルコーンのスタンダードにはピーナッツが少し入ってたような記憶があるのですが、これには入ってませんね。結局スタンダードが一番いいかな?とか思ったり。
noipへの強制更新2
エラーの原因がわかった。接続とか送受信でエラーと思ってたら、レスポンスを解析して成功してないと判断してのエラーだったみたい。更新処理でwgetコマンドを動かして応答をpopenかけてそこから読み込んで戻されるHTMLを会席してます。応答で返されるのは、captcha認証ページが戻されており、2.1.9のクライアントソースでは強制更新が対応されてないという結論になりました。
検索すると自動更新の問題で悩んでる人も居まして、そこに書いてあるシェルスクリプトをいただくことにしました。これをcronで動かしておけば問題ないですし。
noipへの強制更新
先日noip_updaterのソースを見て、強制的にIPアドレスを更新させる処理が動くようにしたバージョンのプログラムを動かしておきましたが、syslogを見てみるとどうも更新処理が失敗してるみたいです。
Can’t activate host xxxx.no-ip.com
こんな感じのエラーが出てました。
これだけではよくわからんので、デバッガを使って調べてみたいと思います。
まあ、動くのは一日一回なので動くまで待つしかないですが。
Gentooの起動時のログ
OpenRCのログが取れることを今更知った。
起動中にメッセージが出るのを何とか覚えて対処してたり、当該デーモンを単一で動かしてメッセージを確認してましたが、/etc/rc.confの設定でログを記録できる事がわかった。やはり/etc内の設定は全部確認しておかないと駄目ですね。
コミック
最新刊が出てたので買った。気づけば5巻目という感じですかね。
青年向け雑誌かつ作者が元々成人向け作品が多いので内容は成人向けです。絵的には好みですけど、話の大半がエグいものが多いので趣向が合えばって薦められます。まあ、書店での入手は人によっては恥ずかしいか?
話はだいぶ盛り上がってきてそろそろまとめるかなって展開でした。この作品は夢と現実をテーマによくできた話だと個人的にはよくできてると思います。元の雑誌は読んでない・・・というか、田舎なので手に入らないので単行本が出たら手に入れるので続いてるのかどうかもわかりません。
no-ipの自動更新
no-ip.comからツールが提供されてるので、特に問題はないのですが、光回線となるとIPアドレスもそれほど変わることがありません。ツールはIPアドレスの変更がないと更新しません。no-ip.comは一定期間更新が無いと、そろそろ消すぞメールを送ってきます。これまた面倒なのでこれを回避したくて模索してました。
方針としては、IPアドレスが変わってなくても一定期間で更新を行えばいいのですが、提供ツールでは駄目っぽかった・・・と思ったら、#defineの指定で強制更新が可能なことがわかりました。
Webを調べてると大抵の人はシェルスクリプトを作ったりしてそれをcronで実行してるという事例が多くてそれに従うしかないのか?と思ってたのですが、ソースを調べてみたら機能があったという。最悪、共有メモリを持ってるので、それを何とかすればと思いましたが、共有メモリはIPアドレスの変更には参照してないので駄目だった。
で、何を指定したら強制更新が出来るかというと、FORCE_UPDATEを指定すれば可能となります。コンパイル時に-DFORCE_UPDATE=1とすれば機能が動きます。デフォルトは30日後です・・・って長いよね。そこで、-DFORCE_INTERVAL=タイマ値(分単位で指定。1440で一日です)を指定すれば、この時間がExpireすると強制更新するというわけです。念の為、gdbで当該機能がちゃんと有効になってるか確認したら問題なさそうでした。また、当然IPアドレスが変われば更新されるので、万事解決となりました。めでたしめでたし。
・・・のはずでしたが、うちのサーバはGentooなのでこれまた悩むことに。
ツールはemergeで追加できるのですが、コンパイルオプションの指定は全く出来ません。なので、自前のebuildを作成してアップデートする必要がありました。まあ、自分でバイナリを作って上書きしてしまうのが楽なのですけど、万が一パッケージが更新された場合にアップデートしたのを忘れてると思うので、正攻法でいきました。
自分用のebuildを作成し、コンパイルオプション指定と思われるところに上記の指定を行い、emergeしてインストール完了です。
ファンタ
http://www.cocacola.co.jp/products/lineup/fanta06.html
フルーツパンチが売られてました。ペットボトルではありますけど、デザインは昔風なのが何ともです。個人的には今でも売ってるオレンジ、グレープも当時のデザインで出して欲しかったです。あと、復刻するならレモンが飲みたいです。あっという間に消えてしまったのが非常に残念でならない
野良ebuildをやってみる
noip-updaterの細かい#defineの指定が出来ないので、野良ebuildを作ってインストールしてみました。
まず、ebuildのファイルを置くディレクトリの大本を決定します。うちは/usr/local/portageにしました。これを/etc/make.confへPORTDIR_OVERLAY=/usr/local/portageの設定を書き加えます。
Gentooはportage配下にカテゴリのディレクトリとパッケージ名のディレクトリを持ちますので、上記ディレクトリにnet-dns/noip-updaterのサブディレクトリを作成します。そこへ.ebuildファイルをコピーして編集します。
.ebuildファイルは同じバージョンだと駄目なので、うちは-r1を加えたものを作成し、ファイルの編集を行います。
ソースはファイル名のバージョンを取得してダウンロードするので、直接オリジナルのバージョンを含むファイル名に変更しました。コンパイルっぽい箇所へ#defineの指定を加えてファイルを書き込み終了。
次にebuildコマンドで「ebuild ebuildファイル digest」でダイジェストを作成します。これで関連ファイルのダイジェストも作られるので準備OKです。
あとはemergeでアップデートを行えば問題ありません。コンパイルエラーなどが出たらebuildファイルを見直し、ダイジェストを作成、emergeを行えばいいわけです。
ebuildファイルの書き方を覚えれば対応してないパッケージも追加が出来ます。
グローバルIPアドレスの取得
通常は取得するケースは無いと思いますが、気になったので調べてみました。
うちは外向けサーバのドメイン名をno-ip.comを使用してます。IPアドレスの更新がないとサイトへの通知も行われず。そしてある程度更新が無いと消すかもよ?ってメールが届くわけです。Activateを毎回やってもいいのですが、認証やら面倒なので可能なら定期的にIPアドレスを更新したい訳です。
アップデータプログラムはno-ip.comで公開されてるnoip_updaterというプログラムで、Windows用やらLinux用やら用意されてます。Gentooの場合はPortageが用意されてるので、emergeでパッケージ追加が可能です。今回はこのプログラムを調べることでIPアドレスの扱いを調べてみようかと。
○自分のIPアドレス
これはソケットを作り、ioctlで取得することが出来る。ソケットはSOCK_STREAMでもSOCK_DGRAMでもどちらでもOK。そしてioctl(SIOCGIFADDR)でIPアドレスの取得が出来ます。
これは利用するポイントが不明ですがおまけで。
○グローバルIPアドレス
APIで何とかなるのか?と思ったら結局無理だった。つか、大抵のケースはルータマシンならまだしも、ルータ配下にサーバを置くわけで、人様が持つ情報をどうやって取るんだ?ってのが結論でした。
SNMP辺りから攻めてもいいのですが、no-ip.com提供のプログラムは次のように行っていた。
仕組みは、no-ip.comのサーバ(dynupdate.no-ip.com)のポート8245へSTREAMソケットで接続し、HTTPプロトコルのGETメソッドを送ることで、そのリプライにIPアドレスが戻される仕組みだった。
結局他のddns提供されてるのと同じで、サーバへ接続してIPアドレスを調べるしか手がないということです。