dfsdf

12-18,2018

ついにわたしは風邪をひいてしまったのだ・・・

この大変なときに!!!!

DELPHI 3

12-14,2018

DELPHI 3で開発中に、突然エラー
『無効なポインタ操作です』

しかも、アプリを終了させた時に発生する。

これにこれまで何度悩まされてきただろう。

そして今日もそれが発生し
2時間くらい奮闘してしまった。


しかし、DELPHI 3は、こうしたエラーがでた時、容易に探せるのがいい所です。
最近の開発環境にありがちなブラックボックスとさして変わらないような深遠が、
DELPHI 3にはないし、
型の取り扱いやメモリ・インスタンスなどにおいても、昨今の環境のような複雑な構造はありません。限りなくシンプルです。

そんなDELPHI 3で、こんなエラーが終了時に出たら、
疑うべきは、DELPHI 3の古さです。

しかし私は、まぬけにも2時間も素直に奮闘してしまいました。

もしこれが正当なバグなら、シンプルが故に、すぐに見つかるはずだと、むきになって・・・。


たとえば、DELPHI 3のIDEは、数十万行のコードを想定していないので、
その閾値を超えると、意味不明のエラーをはきます。
これは、コードを分散させると、何事もなかったように動きます。

あるいは、配列範囲を超越するようなバグ発生時、
それがあまりに多いと、デバッガーが取り扱う範囲を超えてメモリを汚染させ、
デバッガーがそれを処理しないままにしてしまいます。
すると、バグを修正したとしても、
その後コンパイルするたびに、この汚染によって、エラーが発生し続けます。

今回のは後者の方でした。

これを直すのは簡単で、DELPHI 3を再起動させるだけです。
2時間悩んだけど、仕方ないです。

DELPHI 3は本当にいいです。
これくらいのことしか、欠点がありません。
これくらいの欠点は、物凄く少ない欠点です。

そして私はDELPHI 3を再起動させました。


DELPHI 3を再起動するのは、ものすごく簡単です。

なぜなら、5秒で再起動できるから。
これが、今の多くの最先端の開発環境にできるかな!?

更に、コンパイルだって簡単。

シーツリーはもうコードだけで20万行に届こうしています。

20万行のコードを、DELPHI 3はどれくらいの速さでコンパイルすると思うかな?

たったの2秒です。

部分的なコンパイルだけなら、0.1秒くらい。
これが、最先端の開発環境たちにできるかな!?


どんなプログラムを書こうとも、必要なのは、試行回数だと私は考えます。
コーディング→実行
の果てしない繰り返し。
この回数の多と、品物の良質さは、きっと比例しているでしょう。

品物は大きくなればなるほど、この回数も増していきます。
たいしたことのない品でも、この回数は100回以上は絶対にかかるし、
1000回や1万回は余裕だろうし、
きっと数えたことなんてないだろうけど、
この繰り返しは、10万回や100万回も、ざらかもしれません。

だとすると、その1回に、
10秒くらいかかってしまうコンパイラなんて使い物にならない、
と思ってしまいます。

10秒×10万 = 100万秒 = 約11日

コンパイルだけで11日もかかることになる。
これがDELPHI 3なら1日の計算に。

ちなみにunityだと、イブニングパークを1回コンパイルするのに、
どれくらいだろう・・・。

unityは、開発IDEとコード用のIDEが分かれているので、
コードを書いたあと、unityのIDEがそれを読み込むのに、時間差が発生します。
これが私のPCだと、体感1.5秒くらい。
そして、そこからコンパイルするんだけど、時々固まったりして5秒くらいかかります。
固まらなければ、2秒くらい。
全部で3.5~6.5秒。

これは、イブニングパークが、あんまり巨大なリソースを
使わないように設計しているからだと思います。
外部ライブラリやアセットを使ってたら、この一回のコンパイル時間は更に跳ね上がるでしょう。

Visual Studioだと、どれくらいだったっけ。
unityより速かったような気がします。
でもDELPHI 3より遅いでしょう。

ちなみにXCODE上のSwiftは、unityより遅かったような記憶があります。
もう忘れてしまったから、あまり思い出せません。

そして、これはデバッグ上のコンパイルの話で、これがアプリビルドになると、
昨今の開発環境は、致命的な時間を食います。
特に、iOSとAndroidは、この世の終わりのように時間を無駄にします。

unityだと、スマホプログラムの場合、ビルドだけで1分くらいはかかります。
XCODEはもっと遅かった気がします。
そんな時間を10万回も試行できるわけがありません。
だから、フルビルドと、デバッグコンパイルを分離する状況が昨今の主流でしょう。

でも、DELPHIは、そこは分離していません。
一度コンパイルすれば、すぐに品物の全てが出力されます。
たった1秒もかからずに。
なんてすごいんだろう。

そして、再起動はどうですか?
開発環境が、起動するまでに何十秒も・・・。
起動した頃には、創造力は霧散していそうです。


でも、このDELPHI 3を、もうアップデートの必要のない最良の開発環境だと、Borland社自体も認めなかったようです。

ファミコンは0.1秒もかからず起動します。

Nintendoも、ファミコンを同じようには捉えなかったようです。


シーツリーの改変と、Winsock通信

12-12,2018

数日前、永久未来くんと数年ぶりに会い、
「未来くん、数年ぶりだね、
 でも数年前に話した常時通信が、まだできないんだよ・・・」
という会話をしました。

ちなみに、永久未来くんとは、
GGDの人であり、GGD CHATの管理人でもあります。

未来君とは、深い技術的な話はほとんどできませんでしたが、
でも、永久未来くんと会話をしていると、
何故か脳内がスパークしたようで、

翌日、早朝にふと目が覚めて、
気がついたら、20年前に書かれたWinsockのサイトを読み漁っていました。

そして、13:00頃、実験を試みました。
ヒルトン台地にいるかいっつぁんというNPCに窓口を実装。

もし、接続がうまくいくなら、ユーザーに『Hello!』という文字と、
『これが届いたらポセイドンに祝辞を』という文字を返すようにして・・・。

5分経過し、誰も接続してこない……。

やはりダメかと諦めて、ご飯を食べ、戻ってくると、
Kaayaさんの接続があったことが、サーバーの形跡から判明。

やった!!!!

そしてその後も、数人から接続が。

やったぞ!!
実験は成功だ!!!
ついに私は20年前の技術に追いついたんだ!!!!

しかし、ポセイドンに祝いの言葉を返してくれる人は
一人もいませんでしたが・・・・。


このような実験は、思えば、20年前から何度もやってきたことでした。
ある時は福良君に電話をかけて、ちょっとこのプログラムで繋いでみてくれない?
とか、それから数年経ってまたある時に脳内がスパークした時、
まめたんにメッセンジャーで話しかけて、ちょっとこのプログラムやってみてくれない?
とか、
数年おきに訪れるスパークのたびに、試行し、
打ち砕かれていました。
しかし、それがついに・・・
うううう、嬉しくて涙がでます。


そしてそれからは、
3日間、食うも寝るも惜しみ、
ぶっ通しでシーツリーを拡張し続け、
数十回の更新をしまくりました。


今では、シーツリーは完全に常時接続状態で、
色々なことが常時共有化されています。


これにより、この3日間で、
シーツリーの収益がぐぐーーん!!!と上がる
・・・ということなどは一切ないですが、
久しぶりに体を酷使するほど、プログラムに没頭しました。


さておき、
Winsock常時通信は、完全にまだ手探りだけど、自分なりに構築してうまくいっております。

でも、きっとこの面白さは常時接続感の高さと基本的には比例するに違いありません。
しかし、それがどこまで限界があるのか、
そしてその効率についてはまだ法則性が分からないことだらけです。
例えば、常時通信における接続負荷とは、回数なのか、それとも量なのか。

今は恐る恐るという感じでやっており、
クライアントに変化があれば、毎秒送信し、
また、特定の行動に関しては即送信。
そしてサーバー側はそれらを毎秒ごとにまとめて結合し全員にフィードバック、
ということをしています。

今は多い時でも常時20人くらいしか接続していないので、
サーバーからの送信は最大でも毎秒3Kbyteほど。

1人頭100bytesほどしか送受信せずに、構築できています。

しかし、もっともっと常時感を出したいところ。
できるなら、ばんばんくらい。


そうすると色々分からないことを試す必要があるかもしれません。
例えば、クライアント側も全部結合して1回の送信にしたほうがいいのかどうか、とか。 どうせwinsock内部でも、キャッシュを貯めてから送信しているでしょうから、あまり意味はないのかも。
それでも、毎度共通のタグなどを送信しているから、それらを圧縮する意味はあるかも。
などなど。


もちろん、このままシーツリー拡張に、生活リソースを全投入し続けても、
シーツリーの課金収益が上がるというのは、ほぼほぼ考えにくいので、
そんなことをしていたら、来月くらいにはアンディーメンテが
閉鎖していることになるので、そんなこともできませんが、
できるならもっとシーツリーをあらぬ方向へと拡張したい所です。

とりあえず、
今日はシーツリーをいじるのは午前だけにして、
午後からは、心機一転して、
例のことをやらないといけません。

例のこととは、今夜0時から始まる、のことです。


fghfghfggh

12-07,2018

今日は12月7日です。

東京は、さむかったり、ちょっとさむくなかったり、な冬です。

銀杏が綺麗です。

銀杏の葉が、いっぱい落ちています。


f

12-06,2018

ぬれぎぬ

ぬれぎぬ


ぬれーぎーーーーーぬ