QRパッチ

社長:帰りましたー

経理:酒臭いですね。

社長:今日はあの、よくわからない定食屋系のお店に行ってきました。

開発:あそこのマスター、夜は必殺仕事人とかしてそうな気配を感じますね。

基盤:世を忍ぶ仮の姿。

社長:めずらしく今日のお昼時は急がったらしく、もうごはん無いよーとか、ぐったりしてたんですが。まあ、私は飲むだけですからって押し入って。

社長:で飲んで食って。いくらっですかて聞いたら、あー5LSUでいいよって。その後に一瞬考え直して、いや4LSUでいいわ。って。

社長:で、私的には、他の店なら7〜9LSU相当かなと思ったので、いや5LSU払います。いや4LSUでいいからって押し問答。

開発:不思議な問答ですね。

基盤:食後に値段交渉の出来る定食屋w

社長:食事中ですが、今週末に消化器が必要なんだよねー、どういうのがいいかなって聞くから、アマゾンで検索したら3,000円くらいからあるんですね。これプレゼントしましょうかプライムだしって言ったんですが、いやジョイフルで買うからいいわって。

経理:まさか火災保険…

社長:いや、商店街の?イベントでー、って言うことでした。消火訓練とは言ってなかったけど、当局?か誰かが来てなんかコメントするみたいな。

社長:それで帰りは例の血痕ロードをてくてく来たのですが。昨夜来の雨で血溜まりは消えてましたが、血の点々は健在でした。で、穴の空いたズボンとか、シミのついたシャツとか考えているうちに、ああこれはいっそ、派手なパッチで覆うといいかもって。

社長:わたしはあのオンボロBMWが来た時に、内装がボロボロだったんで、一旦全部剥がして、自分でスプレーして改装したんです。で、あの隅っこにワンポイントした青が今でも気に入っているのです。同じノリで、シャツの裾とかに三角形のパッチでもあててやろうかと。

開発:新選組みたいなだんだらにするとか。

基盤:ていうかあの咳込みおばさん、保健所に通報しましょうかね?

社長:ですが当社の技術的には、やはりQRかなと。遠目にはユニクロみたいなんだけど、近づいてみたらQRだったみたいな。よく低学年の児童とか名札を貼ってるけど、あれはセキュリティ上あまりよろしくない。暗号化して署名してQRにしてプリントするのが良いのではないだろうかとか。

開発:錦織とかフェデラーがあのマークをツケてるとがっかりします。

基盤:昔はアップリケ(Applique)と言ったそうな。

社長:それでQRで衣類に精細プリントするなら、そういうTシャツとか、小紋のようにびっしりQRが書いてあるとかも良いかなと。

社長:QRパッチ、アップリケ、ワッペン、小紋、メモメモ。

開発:commonや点描と通ずるものがあります。

基盤:NHKの日本人のおなまえっみたいな。

開発:え、MC桑子さんになったんですかね?パイロット版?見なくては。

経理:もう3ヶ月テレビの電源抜けてますね。そのおかげなのか、電気代も低値安定。一方でケーブルテレビ料金に8LSUが無駄に流出。

基盤:QRでタトゥーしている人とか居そうですね。

経理:そういえば車検が近いですって自動車やさんからハガキが。

社長:その件は会社とは関係ありません。あー、でもいずれ、社用車が持てると良いですね。

基盤:コロナの特例で車検を猶予してくれると良いですね。

-- 2020-0715 SatoxITS

DNSサーバの改訂

基盤:どうも新設した de.its-more.net と us.its-more.net へのアクセスが不安定だと思ったら、DNSの応答のAレコードが2つ返ってました。

基盤:このため、アプリから見るとどっちかのアドレスで行ったり来たりします。

基盤:この応答は、このデフォルトのマッチングルールのためと思われます。

開発:おや。でも7月5日のドメインの一斉引っ越し時に問題は起きてなかったような…

基盤:それは、それらのドメインがこのデフォルトルールに「のみ」マッチしたからだと思います。要するに、xso で取得してこちらにネームサーバを向け変えたドメインについてのAレコードは一切定義されていません。結局全て、デフォルトのアドレスに向けられていた。そもそもの私がDeleGate DNSサーバの仕様を勘違いしていたわけですが。

 投稿者: SATOXITS
ネームサーバ独立記念日

基盤:あ、hosts に 1.2.3.4 * って書いとけば、デフォルトが 1.2.3.4 になりますね。当面はこれで良さそうです。

開発:完全マッチが見つかったらそれ以上探さないという仕様では無いんですね?

社長:うーん、そうだったかな。何にしても、マニュアルに書かなかったってことは、決心が付いてなかったのかな。というか、DNSのオリジンサーバ部分ってほぼ自家用のつもりだったし…

社長:ちょっとソースコードを確認します。ああ、resolvy/reshosts.c の中の、RES_matchLine から呼んでる rexpmatchX でマッチングしてますね。この関数は hosts file と nis のマッチングで呼ばれている… マッチしたらそのさきは探さないというようなコードは無い。だからそういう振る舞いになります。

社長:それにしてもこの reshosts.c というソースファイル、19950817 created で 、CHANGES によるとワイルドカードを入れたのが 9.2.3 20060615です。その後 9.9.2 20090310 でユーザの要望に答えて小さな拡張、9.9.8 20140506 で yp_match にタイムアウトを入れた、となっています。足掛け20年間。青春の思い出ですね。

開発:それはそうと、今回どう対処しましょう。選択肢としては bind あたりに乗り換える。Goでシンプルなのを作る。これは小さなパッケージを作ってくれてる人がいますね。それか、DeleGateに手を入れる。

基盤:このDNSサーバが残すログとか検索カウンターとは、DeleGateの他のサービスに利用できる部分もあるので、DeleGate で行く線が有益な感じがします。

社長:そうですね。これは出身組織の知財なので、、、まあでもそれは調整します。うーん。一番簡単に実現するには。とりえあず "*" という最強ワイルドカードに対するマッチングを抑制できれば良いのかなと思いますね。これを適用するかどうかはドメイン名によるから、名前のフィールドにそういう指示を入れるのが良いでしょう。

社長:いや、ちょっと待った!CHANGESによるとこうです。

9.9.2 090310 new reshost.c: "#!max=N" in hosts-file to limit results

社長:つまり、hosts に #!max=1 って書けば、最初の一つしか結果を返さないのでは。

基盤:なるほど。やってみます。

基盤:大当たり。

開発:解決しちゃいましたね。

基盤:これはこれでとりあえず良いと思います。ただ別件ですが、例えば全ドメイン名に us. というのを頭につけたら、ドメイン名によらず xx.xx.xx.xx になるように出来ると楽なのですが。

社長:hosts に xx.xx.xx.xx us.* って書けばよいかも。

基盤:やってみます。

基盤:大当たり。

開発:けっこう気合を入れていたんですが、気が抜けてしまいました。返す最大レコード数を制限するという回避方法は、DNS/DNS や NIS/DNS の中継ではうまくいくとは限らないですが、ローカルのhostsファイルなら、単に上に書いたのが残るので確実ですね。

社長:DNSのプロキシというかリゾルバは、マッチングの結果でフィルタしたり、複数のソースからの情報を統合するのに便利なんですよね。ミクロなマウントですね。どこから聞かれたらどこを見せるとか。ドメイン名限定ですが、名前の空間を歪めたいという我社の方向性には有用なツールなんだと思います。

社長:午後までかかると思ってたんですが、終わっちゃったんでゆっくり飲んできます。

-- 2020-0715 SatoxITS

コロナ特例猶予

社長:郵便受けに年金事務所から封書が来てました。提出期限がなんとか。

経理:なんでしょうね。標準報酬の件は期限内に提出済みですが…

経理:裏面を見る…

基盤:懲役10年?

開発:漢字が少し違いますね。簡体字とか?

経理:開けます。ぺりぺり。… ああ、コロナ救済制度ですね。前年度より20%以上収入減の場合、保険料の納付を1年間猶予と。

開発:前年度に存在しなかった人や法人の場合にはどうなるんですかね?

社長:うちがこの4月に設立って言うことは把握しているはずですけどね。

経理:猶予というのは延期ということですよね?もしかして免除?

基盤:猶予… デジタル大辞泉によると、 ぐずぐず引き延ばして、決定・実行しないこと。「もはや一刻の猶予も許されない」「猶予している場合ではない」 実行の日時を延ばすこと。「返済を一か月間猶予する」「執行猶予」。大辞林では、①実行の期日を延ばすこと。また、延期を認めること。 「支払いを-してもらう」 「執行-」②ぐずぐずして物事を決めないこと。 「一刻も-すべき時ではない」 

開発:延期というイメージが強いけど、いわゆる執行猶予では執行が免除されますね。

社長:私のわかい頃はモラトリアムという言葉がはやりました。ブリタニカによると、本来は「支払い猶予期間」のであったのを転じて,社会的責任を一時的に免除あるいは猶予されている青年期をさす。

基盤:猶予されている期間は停止されているのは確かだけど、期間を過ぎた後にそのぶんをどう扱うかは事の定めによるって感じですかね。

開発:まあ、今回のの発信源によると、この猶予制度とは「国税の猶予制度は、一時に納税をすることにより事業の継続や生活が困難となるときや、災害で財産を損失した場合などの特定の事情があるときは、税務署に申請することで、最大1年間、納税が猶予される制度です(注)」で、「(注)納税の方法は、猶予の種類により、①1年間据え置かれる場合、②猶予期間中に分割納付をする場合があります。分割納付をする場合は、納税者の資力に応じて対応します。」。

基盤:据え置かれるっていうのもまた未定義語ですね。

開発:「特例猶予が認められると、猶予期間中の延滞税は全額免除されます。」。延滞したことのペナルティはないけど、結局払ってねってことかな。もう一つの特例猶予の換価の猶予では、完納は目指してる、いわゆる延期で、免除されるのは延滞税のぶん。

経理:結局は払わないといけない?

基盤:どっちにしろうちの現状はコロナのせいではないですから関係ないですよね。そろそろ仕事に戻りましょう。

社長:まあ、一年後が現在よりも好転するのかという話しでもあり。

開発:FAQを読みますか。えーと… 猶予制度とは何か…

国税の納税の猶予制度FAQ
○ 国税の猶予制度は、期限内の納税が難しい場合に、申請により税務署長の承認を受けて、期限後に(必要に応じ分割して)納税ができるようになる制度です。

(猶予と免除の違い)
問9 猶予を受けると税金の支払いが免除されたり、払った税金が還付されるのか。
(答)
○ 国税の猶予制度は、期限後の(分割)納税ができるようになる制度であり、税金の支払そのものが免除されたり、支払った税金が還付されたりすることはありません

(猶予期間中の税金の納付)
問 13 猶予を受けた後はどのように税金を払っていくのか。
(答)
猶予期間中(原則1年間)の任意の時期に納付できます(分割納付をすることもできます。)

開発:要するに「保険料の支払いを1年先送りにできる制度です」てことですね。

経理:淡い期待とぬか喜びでした。

基盤:つけ払いということですね。終了。

社長:100年ローンで払います、で通ると良いのに。

経理:結局、普通に日常生活で使う「猶予」の事なんですね。

社長:それよりあの10万円のほうをそろそろ申請しないと。あれに間に合わないとマジでヤバいです。

-- 2020-0714 SatoxITS

ヨーロッパ進出

社長:当社ライトセール、ヨーロッパ支所の件ですが。

基盤:さきほど試しにフランクフルトに作って各方面とpingしてみましたら、とても面白い結果が出ました。Googleとは1ms、近隣とは10ms、USとは100ms、東京とは200msとか。

開発:ヨーロッパ方面は面白いソフトを作ってる人が多いイメージだし、つながりを強くしたいですね。

社長:私の昔の経験でも、ヨーロッパの人はものを深く理解して評価してくれる傾向を感じました。

開発:点描のような応答性が重要なアプリですと、RTT 200msというのは実用不可です。

基盤:HTTP/TCPだともっと悲惨な事になるでしょうね。

社長:ドメイン名的にはどうするのが良いでしょうかね。pointillism.eu のようにするのか、eu.pointillism.com のようにするのか。

開発:TLDのほうがかっこいいですが、値段次第ですね。

基盤:pointillism.eu … whois.com で $3.48 です。10年でも$83.40ですからかなりお得と思います。ただしEUの中の人であること。

社長:EUに住むか法人を設立するかですか。いつかは実現できると良いな。

開発:昔の知り合いに頼むとか。

社長:存命現役ならね。€5のサーバのために動いてくれるかなw

基盤:さてそれではお楽しみのIPアドレスです。候補的にはこんなところでしょうか。

基盤:東京やオレゴンでの記憶だと、52. というのは比較的レアかな思います。

開発:3回5ではじまるのがぱっと見分けやすい。

社長:全部で8桁というのも良いですね。

基盤:ではこれにしましょう。仮想マシンにアタッチ!インスタンスは当社標準 $5プラン Amazon Linux にしました。今後 ns2 としたいと思います。これより、ns1作成時の作業メモを見ながら ns1 より複製を開始…

基盤:生端末からssh ... 遅い。接続に4秒かかりますね。しかもこのエコーの重さ。いっそ半二重にしたほうが良いかも。ping で 確認… RTT 256ms と出ました。

開発:まあ、光で往復しても120ms くらいはかかりますからね。

基盤:接続だけならまだしも、キー入力へのエコーがだるいのは仕事に差し障りますね。メンテンナンス作業すら気分が重くなります。

開発:しかしその遅延具合、昔が懐かしいですね。ファイル転送自体は5MB/s くらいでてるみたいじゃないですか。

社長:あ、またしらす丼が食べたくなりました。食事にいきましょう。

* * *

基盤:せっかく目覚めスッキリのところを、コロナで時間をつぶしてしまいました。

社長:仕事して飲んで寝る。仕事して飲んで寝る。これを1日二回規則的に回すのが、かなり良い感じに思えてきました。

基盤:っと、フランクルフルト de1、落ちました?エコーなし。ssh 別接続トライ、タイムアウト。

開発:ライトセールのダッシュボードからウェブ端末で入ってみては。

基盤:ライトセールのホームが開きません。あ、開いた。10秒以上かかりましたね。えーと、コンソール接続しました。あれ?落ちた形跡ないですね。uptime 8:42。

基盤:おっと、うちからの直接sshも回復。うーん、3分くらい不通になってましたね。

開発:まあ、もし仮想マシンを一旦止められた後に再開されたんだとしても、区別はつかないかもですね。

基盤:うーん、事象発生前後の /var/log には特になにも無いですね。

開発:ともかく、フランクフルトの de1 無応答期間にも、東京・オレゴンは問題なく応答していた。再応答後にde1で last してみると、無応答前からのセッションが残っている。 ちょうど使用していた more コマンドの窓も… あれ?どこへ行きましたかね。

基盤:Show All Windows … これって、ウィンドウの並び方がイマイチですが、サムネール化しても中身がちゃんと動いているし、素晴らしいです。もしこのサムネール状態でキー入力までできたらとんでもないですねw

社長:それが Vivaldi でもできたらなあ。

開発:MacOSXのターミナルの力の入り方は尋常ではないですね。タブになったりとか。グループ化とかって何?って。

基盤:さっき閉じたウィンドウを開くってできるんですかね?

開発:まあリブートしても再開するんですから、セッションは切れても窓だけなら。

社長:私はもう10年近くCUIから離れていて、プログラムもGUIなIDEだったもんで、こういうCUIの世界がまだ脈々と生きているのに感動しました。まだというか、多分これからも全然元気。それが本質的に一番向いている世界が厳然としてある。

基盤:まあ腐海のターミナルはDOS窓とかいう恐ろしいものですからね。

社長:私は、今使ってるアプリを新しくもう一つ開くというのを、右クリックでできるように統一されていると良いと思うんですよね。

開発:個々の仕事に使う道具のセットごとにデスクトップがある、一方で時々道具だけを横断して見たい。

社長:いろんな条件で生きてるアプリを検索して、ヒットしたものを並べて見れるようになっているのが良いのでしょうね。

開発:過去に死んだアプリも含めてですね。

社長:タイムマシンというからには、ファイルが戻せますとかじゃなくて、プロセスも戻せないとね。

開発:それはそうと、CPU負荷を表示する可愛いウィンドウ、最近のMacOSXにはなくなっちゃったのかと思ってたんですが、こんなところに見つけました。

社長:ナツカシー。昔使ってたMacProではネハレムのコアが16個並んでましたけどね。

基盤:それはそうと、昨日クラッシュした後にFUSEを切ったのですが、その後非常にメモリがゆったりになりました…

* * *

基盤:で、何をやっていたのか忘れかけましたが。要するに東京の ns1 からフランクフルトde1に65万ファイル/25GBをまるまる転送した。所要33分間。ところが、転送先でなぜか10万ファイルぶんが欠落している。find して比較していたところ、ns2 つまり de1 から応答が止まった。という事でした。欠落したのは、ssh tar c | tar x している最終に欠落した部分のファイル、ほぼカウンター類ですが、に変更があったとか inode が変わったからではないか、というのが一つの仮説です。ですが、tar のエラーは出ていなかった。それとは別に、de1ではファイルのfindとかrmが異常に速いのが不思議です。

基盤:で、運用開始前だし、通信にお金もかからないので、もう一度同じことをやってみようと思います。

社長:了解。走らせといて、飲みに行きましょう。

* * *

社長:帰りましたー。

経理:酒臭いですね。パクチー臭も。

社長:おにいさん(!)パクチーだいじょぶ?って聞かれましてね。あんまり得意では無いですねって言ったんですが通じなくて。でも食って飲んで5LSUです。先週のツケも払ってきました。

基盤:今日は無血の帰還でなによりです。

社長:帰って見たら、郵便受けに面白いチラシが入ってました。「片付け代行・遺品整理」「お見積り無料・例えばコレ♤」。「あなたの町の担当者は私です。1。よろしくお願いします。」「心の絆・安心の証。遺品整理士」(笠間市)

開発:遺品整理士。そんな資格があるですか!超インタレスティング検索。なるほど。「 現在、一般社団法人遺品整理は、遺品整理業界からの初の国家資格創設を目指している。」ほーう。

経理:当社のニーズにかなりマッチした業態ですね。

社長:経験的には、軽トラ1台ぶんで15,000円くらいですね。

経理:30LSU。

基盤:現状、社長が路上で行き倒れて事件性がうんぬんで踏み込まれると「室内はごみ屋敷のようだった(捜査関係者)」とか書かれますね。

開発:こういう記事、弱い者に対してはいいたい放題ですね。

社長:なんにしても見積もりは2社以上から。我社の鉄則です。

社長:特に法人としては消滅した後の事はまああれですが、予期せぬ終焉というのは一応考慮ですね。

開発:昨日今日とはおもはざりしを。

社長:まあギネスに載るとかでなければ、あと最長でも物理的には60年以内に終焉するわけですから。

* * *

基盤:さて、再試行の結果、やはり転送時間33分、10万ファイル欠損という結果になりました。大変不思議です。それで、コピー元とコピー先のディレクトリをじっと眺めたのです。何か似ているようで似ていない。いや、どこかで見たことのあるような。なぜこのファイル達だけが、コピー先に存在しないのだろうかとか。同じファイルなのに日付か違う?それでようやく理由がわかりました。

基盤:先代のns1 からコピーしていたつもりが、先々代のns0 からコピーしてたんですね。だから、ns0 とはうりふたつでした。

開発:なーるほど!

社長:よくわかりました。

基盤:ということで、これより ns1 より複製を開始します。終了は24:00を過ぎるかもしれません。

社長:ヒューマンエラーってエンタメですね。

基盤:引っ越し用の数行のshellスクリプトを再利用してしまったのが敗因でした。

開発:まあ、ns0 はAWS東京のUbuntuだったから、害は無かったですね。転送元が Azureだったら数百円の損失が出た可能性があり、笑い事では済まなかったかも知れません。

開発:ところでこの、ns1 と ns2 のログイン画面、何か違いをつけたいですね。

社長:というかこれ、どういう意味のAAなんでしょう? orz 系のAAにしか見えないんですが…

基盤:というか、セキュリティ関係のアップデートがあるということなので、やっておきます。sudo yum update … y。bash 方面でした。うちはこれからは zsh にするんですかね?

開発:まあ、私達のレベルでは今の所、違いがわかないですけどね。

社長:zsh のほうが断然名前がかっこいいと思います。わたし的にはZというとZeppelinなんですよね。あの、カクカクした外観と、劇的に炎上する姿が子供心に焼き付きました。

基盤:燃えたのはヒンデンブルクのようですが。

社長:なんにしても、ソユーズとか乗りたくもないですが、飛行船には一度乗ってみたいです。

開発:zshはソースからのコンパイルもサクッと終わりましたしね。うちの評価基準は、開発者の体制とか、プログラムの改変しやすさかなという気はします。動的リンクはどっちでも行けるみたいですが。まあ環境変数を子供にわたすだけですけど。

社長:shell固有のファイルシステムビューを作りやすいかどうかというところですね。そういえば、名前はgasketとかなんかで…

基盤:そういえば、だいぶ痛い思いをしてビルドしたMacOSX用 Micromium、あまりの重さが衝撃でしたね。なんか、ビルドのオプションかも知れませんが、デフォルトであの重さというのは…

* * *

基盤:あ、ファイルの移送、終わりました。37分48秒。ファイルの個数、完全に一致です。find の所要時間… ほぼ同じですね。要は、たまたまメモリのバッファに入りきってたかとうことでしょうか?

基盤:では、以前の移転のメモに従って続きの作業をやります。まずサーバ用のディレクトリを移動してシンボリックリンク。ユーザ用のディレクトリを移動。.bashrc をコピーしてsource。OK。dsgbind を chown, chmod。sh httpd でサーバ起動試験。OK。ブラウザで http://52.59.53.30 を開く。HTTPログ確認。OK。pointllism... やはり反応が遅い。sh alld で全サーバ起動。OK。LightsaleからDNS/UDPを開く。自社から dig で試験。DNSログ確認。OK。crontab をコピーして、sudo reboot で起動試験。OK。やはりリブート所要50秒ほどですね。なぜかAWSはここが遅い。…。サーバ設定完了運用開始されました。

基盤:あとはこれを xso と nso と who で ns2.its-more.jp, ns2.delegate.org , ns2.wits-more.net として登録。完了。いずれ ns0 を廃棄、代わりに全所有ドメインのセカンダリNSにこのns2を指名、という流れでやります。

開発:あとは、ヨーロッパ口としてどういう名前にするかですね。同じ名前でヨーロッパ系からはこのサーバに来てくれると良いのですが…

社長:US口もnsにするんですかね。

開発:USとEUと東京で同じコンテンツをどう維持するかということもですね。

基盤:やはり rsync するか、直マウントでファイル共有するかしたいですね。NFSでいいかなとも思うんですが。

社長:明日以降のお楽しみということで。

-- 2020-0714 SatoxITS

現場検証

社長:ただいま。

経理:酒臭いですね。

社長:今日は20年来のインド料理屋さんだったんですが、あそこは中瓶なので、つい2本いってしまうのです。

基盤:瓶なんですね。

社長:私は生にはこだわりがあるんです。生は技術によって0点から95点くらいまでばらつきが出ます。それに対して瓶には大きな外れがありません。グラスの選択で差は出ますが。一方生は最低限の信頼が無いと注文できないのです。注ぎ方以前に、量のさばけない店だと生物化学的に品質がヤバいことがある。酢になりかけみたいな。それなりの量が出ている店、まあ飲み屋でないと。

社長:それで出掛けに血染めのスニーカーが固まってガビガビなのが、履くのにも歩くのにも気になりました。

経理:このニューバランス、まだおろして1年位ですね。

社長:買ったのは4年くらいまえです。

開発:これはワイン色のようでもあり、薄い小豆色のようでもあり。例のブラウザの色と同系ですね。

基盤:なぜか小豆色はAzureのコスト分析グラフの時から、一貫してイメージが悪いですね。

開発:宇治金時の配色は素晴らしいので、実はこれに白と緑を加えると映えるのかも。

社長:今日のカレー屋と昨日の焼肉屋は同じ北方面にあるので、途中までの経路は同じなんですが、ふと見ると道路に血痕のようなものが続いているんです。50m以上も。iPhoneのカメラでは難しいですが、色はまさに小豆色でした。明らかに私由来のものです。36時間経過時点ではそういう色になるんですかね。

基盤:かなり千鳥足ですね。

開発:特に今日はずっと雨が振りそうな曇りがちですから、劣化が進まなかったのかも。

開発:パンくずリストのよう。

社長:それで、それを追っていくと血溜まりの跡が終点、というか始点でした。私が昨日未明に倒れていた場所です。ちなみに白いキューブ状の石の着色は紛らわしいですが、カビか何かです。

社長:それともう1点。出血は頭部からだと理解していたので、なぜ右のスニーカーだけ血染めになったのかと不思議だったんですが、後から見たら、ズボンに穴があいた右膝の下にもスリ傷がありました。その血が直に靴まで流れてたんですね。

開発:だいぶ大きな穴が。

社長:このズボンはそういう材質なんですね。こけるとすぐに裂ける。先代もそうでした。再現性があるので、そういう仕様なんでしょう。穴が大きくなったのはその後の2度の洗濯乾燥のためと思います。

基盤:すりきずにしては大量に血が出た形跡が。

社長:でも実際今見ると薄いかさぶたになってるだけで。今後の扱いをへましなければ一週間で消える程度です。アルコールが入っていると血小板が固まらないっていう感じですかね。なら、血栓が原因でアウトにならないようにするには、常に循環器系にアルコールをまわしておくのが良いという事なのかも。

開発:酢酸で血液サラサラって話ですし、化学式的にも似てますしね。なにぶん前駆体の間柄。

社長:いや実際、私は酢酸とかクエン酸が大好きなんで。飲み屋でもポン酢系、酢の物をしょっちゅう頼んでます。

基盤:ということは、血染めのシャツは酢酸で洗うと落ちるかもですね。いや、もうその化学変化のフェーズを過ぎてしまった感はありますが。酵素パワーで再挑戦かな。

社長:それはそうと、あの店では時々あるんですが、今日も自分のスマホを見せて、何かを尋ねてくるんです。しばらく意味がわからなかったんですが、これはどういう意味のメールかと聞いているらしく。で読むと、よくある「お申し込み受け付けました」っていう機械応答でした。だから、単にそういうメールですよと。どんとうぉーりーしんぷりーおーとまちかりリプライドて。

社長:で、食事を終えて会計する少し前にまた新しいメールが来たって見せて来たんですが「審査の結果残念ながら」という内容でした。ソーリーあんふぉーちゅねーとりーリジェくテッドて。私には関わりの無いことですがアイムソーリー。

開発:やたら間が悪かったですね。

基盤:というか、あの咳込みおばさん、ここ数日さらにグレードアップして来ましたが。

開発:思うに、あれはとなりでアパートを建て始めてから始まったと思うんです。工事関係の方だとすると、もうしばらくで現場も撤収。それまでの辛抱ですね。

-- 2020-0713 SatoxITS

タイムスリッパWindows版(着手)

社長:気乗りはしませんが、Windows版もやってはみましょう。

開発:気乗りがしませんね。まずリモートログインするのにMS製のsshだとPowerShellとかになってしまうという問題があります。仕事になりません。

社長:zshかbashに入れ替えるか、ふつうのOpenSSHにしましょう。

開発:昔は普通にOpenSSHでした。

基盤:えーと。まずオプション機能からOpenSSHサーバーをアンインストールしました。

開発:まだ繋がりますね。

基盤:netstat -ano | grep LISTEN。ああ掴んでますね。ps -W | grep -i ssh。まだ生きてます。kill …。Windows のプロセスを殺すのはどうすればよいのでしょう?

社長:忘れました。コマンドが違うか、オプションだったか…

基盤:PCのプロパティからリモートデスクトップはOn/Off出来るんですが… 

開発:サービスとして切ればいいんじゃないですかね。

基盤:機能を検索するのに日本語が入らなくなってます。とりあえずリブート… おっと、OpenSSHサーバー、消えました。sshd… 無い?Cygwinでインストール。あれ、されてる。いちおう再インストール。sshd… 無い。find /user | grep sshd。あ、/usr/sbin/sshd ですね。パスに入れる。sshd… むむ、結局フルパスで入力しろと。/usr/sbin/sshd… /etc/sshd_config が無いとな… どこかにテンプレートは無いのか。find /etc | grep sshd_config… ああ、/etc/defaults/etc にあると。ではこれをコピー。中身は…特に普通っぽい。では /usr/sbin/sshd… no hostkeys available… grep -i hostkey sshd_config… ああ /etc/ssh_host_rsa_keyだと。touch ssh_host_rsa_key; chmod 400 ssh_host_rsa_key… invalid format。どういうフォーマットなのか。なぜ man が無いのか。man sshd… あるやん。さっきインストールされたのかな?

開発:だいたいそれって何のためのキーなんですかね。何を証明するのか、何を暗号化するのか。

基盤:うわっと。またしても MacMini リブート開始。

基盤:これ送る時に自分にも自動でメールしてほしいですよね。

開発:なんなんですかねえ。疑っては失礼ながら、まず先頭に出てきてるFUSEとVirtualBoxを切りましょう。

基盤:ショックで書きかけてたブロックがいくつか飛んでしましました。WordPressの自動保存にも無し。私の記憶にもありませんが。

社長:おっと、WordPress のメディアライブラリに破片が残ってますよ。

基盤:なるほど。これ、ウェブ画面からウェブ画面に画像をコピペできるんですかね?

基盤:できた。

開発:知りませんでした。ていうか、ドラッグ&ドロップもできるんですね。

基盤:どういう話しだったかというと、man sshd したら必要な事は書いてあった。HostKey というのはFILESのところに説明があった。普通に ssh-keygen で作ったのを /etc に置けば良い。それで /usr/sbin/sshd が立ち上がってめでたし。という事でした。man がCUIでvi風でハイパーテキストになってたらもっと簡単なのにとか。で、あとは普通のユーザとしてログインできる。公開鍵でログインしたかったら、通常どおり id_rsa なり authorized_keys なりを設定すると。で環境設定完了。

社長:私は昔は自作のyyshというリモートシェルを使ってましたが。

開発:プライベートなネットの中で自分の立ち上げたログインサーバにSSLで接続してましたね。軽いし、問題もないと思いますけどね。

社長:zshを改造して、yysh/yymux復刻版を組み込んでみたいものです。

開発:ではさっそくGo。

開発:あれ?sshした時には、なんか環境変数が無いみたいですね。環境変数をダンプして diff を取ってみます。ああ、これかな。AppData/Local の下になんか作ってたから。

基盤:当たり。

社長:さてさて、準備もできましたし。お昼に行きますか。今夜はボウリングの新規リーグ初戦なんで、体力をつけて置きたいと思います。

* * *

開発:さて、ボウリング前にもう少し仕事しますかね。ちょっとライトセール達の見回りに ssh っと。げ、入れない。鍵が変わった?さっき Windows用にいじった関係ですかね?

基盤:いやー、ライトセール方面は影響してないと思うんですが… でもこういうときは慌てず騒がず。ダッシュボードでウェブのコンソールからさくっとデフォルトのアカウントへ。うーんこの安心感。はあ。.ssh の下は何も変わってないですね。ていうか、さっき MacMini を再起動した時に ssh-agent の記憶が真っ白になったのでは。

開発:あ、なるほど。デフォルトの鍵ファイルじゃないからですね。-i で指定して… はいれました。やれやれ。

経理:ところで、初代 delegate9.org の Azure機、そろそろ廃棄すべきなのでは。一日100円とは言え。 昨日請求書が来てました。

社長:こ、この突き抜けている紺色の棒は?

基盤:通信関係の従量課金ですね。bandwidth / data trafsfer outと。実際、26, 27 にアマゾンに引っ越したので、その時に30GB吸い出しました。でもまさかそれだけで、350円もかかるとは…

開発:普段アクセスしてないディスクを読みだした関係ですかね。

基盤:なんにしても、26,27 日にサーバを移行して、その後しばらくIP アドレスが消え残っている、たぶんロボットの脳内にですが、せいでアクセスは続いていますが、人間様相手にはもういつ切っても支障がない状況です。

社長:即刻止めましょう。1日100円の流出は看過できません。でも、26以降に変化したぶんだけはfindしてアーカイブしておきたいな。

経理:でも1時間に5,000円の流出は看過すると。

開発:1秒に1cc流出したら1時間で空ですね。

基盤:結局この、Azure の言うバンド幅というのが何から生じてるのかよくわかりませんでした。まあ平均して20円/日未満程度なので良いかなと思っていたのですが、それってライトセール1台分なんですよね。しかもAzureのバンド幅って、アマゾンのよりずっと狭いみたいなんですが。それが従量課金ていうのが恐ろしい。

-- 2020-0713 SatoxITS

タイムスリッパMac版

社長:やはり、MacOSXでもやりたいですね。

開発:焦点は、LD_PRELOAD と同じ機能が MacOSXにあるかなのですが、どうやら DYLD_INSERT_LIBRARIES というのがそれのようです。あと、LD_LIBRARY_PATH でなくて DYLD_LIBRARY_PATH だということは覚えています。

開発:では、さっそくやってみましょう…

基盤:できた!

開発:イキナリできてしまった・・・

社長:まじですか?しかもGoで。

開発:いや正直、そもそも実現性の目星がつくまでに数時間はかかると思っていたのですが、、5分でできてしまいました。あと、DYLD_INSERT_LIBRARIESはこういうふうに書くと、DYLD_LIBRARY_PATHも要らないようです。

社長:めでたいので飲みに行きたい…

* * *

社長:というべきところですが、少し昨日の飲み疲れが残っていまして。このまま続けましょう。何か他のアプリというかコマンドで。

開発:まず ls あたりかと思うんですが、MacOSXにはstraceというのが無いんですね。そういえば確かtruss系だったようにも思うんですが… というか一昨日、XCodeのコマンドのbinがどこかにあるのを知って試しもしたのですが、メモルのを忘れました… 全端末と全ブラウザの表示テキストを全文検索できると良いのですが… あきらめて検索します。

基盤:あれ?このページじゃないですか?Vivaldiのguestユーザで開いてます。

(2019-02-01) https://developpaper.com/install-command-line-tools-no-xcode-in-mac-os-x/

基盤:/Library/Developer/CommandLineTools/usr/bin ですね。

開発:思い出しました。その dyldinfo というのが必要だったんです。ldd みたいなやつ。

基盤:でも他はほとんど /usr/bin にもありますね。ただ、サイズが異様に違うんですが。

開発:まあ、ライブラリを静的にリンクしているか動的にリンクしてるかでしょうね。dyldinfo…

基盤:なるほど… というか、/usr/bin/ld のほうってなんにも入ってないですね。起動用のスクリプトですか?みたいな。

開発:一昨日はタイムスリップの実現性について絶望のフチをさまよいながらやたらと色々やってたんで、何やってたんだかですが、そういえば dtruss だか dtrace だか使えという結論だったように思います。dtrace … 複雑過ぎる… dtruss … sudo が必要なのか。sudo dtruss godate。おお、出た。

基盤:しかし、gettimeofdayの呼び出しは記録されていないですね。

開発:どうもよくわからないですね。うちの欲しいのは、特定の動的ライブラリの特定のシンボルの参照をトレースするということで… てかそれは実行しなくても静的にわかるか。結局ld.so相当のものが MacOSX にあるのかという話しになる。ああ思い出した、それが dyld じゃないかというところで、path になかったから SEE ALSO の dyldinfo に行ったという経緯です。あと、otool といのが objdump の後継でみたいな話しとか…

社長:objdump って昔使ってましたね。今もあるんですか?

開発:objdump… ありますね。ですが、Mach-O x86-64 がどうも、Invalid/Unsupported object file format. とか。

社長:一休みしましょう。

基盤:一休するって、子供とてまりをついたりするやつですかね。

開発:そういえば空気を吹いてでボールを浮かす健康器具、だいぶ前に届いたんですがまだ開けてませんでした。どこにいっちゃいましたかね。

社長:子供の頃よく遊びましたよね。あれって思うに、タバコ代わりにならないですかね?

* * *

開発:それで前読んで何がいいたいのかわからなかった man dyld をもう一度読んだんですが、要するに環境変数 DYLD_PRINT_LIBRARIES と DYLD_PRINT_BINDINGS を定義してやれば、動的リンクをトレースできる、ということでした。

基盤:標準エラー出力に出すって書いてないんですが、書いた人のムラ気ですかね。

開発:で、これを定義して実行してやると、ばっちりどのライブラリがロードされてどうバインドされたかが見えるのでした。

開発:そして残念なこと。/bin/date とか /bin/ls は、dyld で制御されている実行形式ではないようなのです。かといって中身がぜんぶ静的に詰まっているわけでもなく、nm でみると参照は全部 U。dyld_stub_binder というのを呼んで、自分で動的リンクをしているようなのです。

開発:Apple は dyld_stub_binder のソースを公開しています。30step 程度の小さなアセンブラのコードで、86版とARM版が入っています。

社長:うーん、ARM の LDR とか BL 命令がナツカシス。

基盤:というか、DYLDの ARM 版て… MacのプログラムがARMで動くってことですか。

開発:そういえば… だとすると衝撃的ですね。

* * *

開発:xclock dylib をタイムスリップさせようとしてちょっと行き詰まったので、気分を変えて Liunux の cal でやってみました。

社長:ブラボー!

基盤:まあ cal 1 1970 と大差ないでけどね。

開発:ところがどっこい。それだと「今日」を示すハイライトが出ないわけですよ。

開発:まあ、cal 1 1 1970 では出るわけですけど。

社長:まあこれはあくまで動的リンクの使用例のデモ用ですからね。

社長:ていうか今私は、Google IME で分節を広げたり縮めたりするのが Control-O、Control-I だというのに気づいてびっくりしています。これって onew と同じなんです。素晴らしい。

開発:それで、instantTimeSlipperのコマンド型式なんですが。コマンド名は its、時刻設定する引数の型式は date に上位互換、が良いかなと思います。

開発:実装上は、差し替えたgettimeofdayやclock_gettimeで、現時刻からその分のオフセットを足した値を返すのが良いと思います。

開発:課題は、自分で差し替えてしまったオリジナル関数をどう参照するかという点です。

社長:DeleGate でVCのランタイムを差し替えた時には、open を差し替えて _open を呼ぶ、みたいにしてましたね。ソケットのハンドルが、普通のファイルのハンドルと別世界なので、普通のハンドルと同じように見せてストリームI/Oをできるようにするためでした。

開発:それで、標準ライブラリをnmして気づいたのですが、libc もそうなっているようなんです。それで今、クロスリファレンスをみるコマンドってなんだっけと思い出そうとしているのですが…

社長:昔は性能を測定するのに使ってた prof コマンドの機能としてあったような… というかあれはソースからクロスリファレンスを作るやつでしたね。

開発:この、知りたいのはこの __ をシンボル名に前置した版はなんなのかという事ですが…

基盤:洗濯おわりました。結論として、この血痕を落とすのは絶望的です。ズボンには膝に穴もあいちゃったし、捨てるのが吉かと。

社長:しかたがないですね。というか同じズボンの一代目も、階段からころげおちた時に膝に穴があいて終わりました。あのときの膝の出血はひどくて、かさぶたがとれるまでに1ヶ月以上かかりました。

基盤:けっかん商品?

開発:それで、underscore symbol とかで検索すると、シンボル名の前につける _ には色んな意味がある。我々の育った頃にはCかアセンブラか、的な。その後は、非常に様々な定義というか仕様があるようです。

What are the rules about using an underscore in a C++ identifier? [Stackoverflow, 2008]

開発:非常に簡単なサマリーとしては、_ はプライベート、__ はコンパイラが使用する、というものです。

開発:あまりここに深入りしても仕方がないので、我々としては、Linux版ではユーザは標準関数名 func() で呼ぶ、我々は func をラップして、 __func() を呼ぶ、とりあえずこれで行けると想定して進めたいと思います。

社長:そうしましょう。

* * *

開発:Linuxについてはおおむねこれで行けることがわかりました。MacOSXですが、/bin/date などは dyld では制御できない。一方、そのアセンブリファイル(dyld_stub_binder.s)を見てみると、要するにこれを呼んでるだけなんです。

// call dyld::fastBindLazySymbol(loadercache, lazyinfo)
   bl      __Z21_dyld_fast_stub_entryPvl

開発:で、この関数の仕様がわからないのですが、動的リンクをやってるんだと思います。なので、この関数に、こちらで用意した動的ライブラリを見てもらうにはどうしたらよいか、ということになります。

開発:それと、このあたりを調べていたら、lldb というのが、MacOSXにおける dbx 相当品であることがわかりました。ただ残念ながらセキュリティ上の制約から、/bin/date とかをトレースすることはできないようです。

開発:それと、Appleが公開しているソースプログラムの中に dyld.cpp があること。これも何かに使えそうです。

開発:というようなことで、かなり状況は見えてきた気はします。まあ、gettimeofday は単に糸口だったので、そこそこのところで切り上げて、本質に切り込んで行きたいと思います。

社長:そうですね。ただ、せっかくなのでタイムスリッパはなんかの形で公開しましょう。今日はこのへんで。

-- 2020-0712 SatoxITS

血染めの帰宅

社長:ふぁぁぁ… あ?うぁーもう夕方ですか。

開発:14時間寝ましたね。

社長:昨日は久しぶりに記憶がなくなるまで飲みました。

基盤:何時まで飲んだんですか?

社長:さあ。あそこは客が居る限り閉めないという店長さんのポリシーなんで、いったい何時まで飲んだのやら。

経理:血まみれで帰って来た時はびっくりしました。

社長:気がついたら自宅の近くの歩道で寝てたというか倒れてんです。で、顔のあたりを触ったらぬるっという感覚が。それに何かポタポタと自分から液体が滴ってるし。汗では無い。

基盤:どこか痛くなかったんですか?

社長:いやそれがどこも。ふらふらと家にたどりついて鏡を見たらこんなでした。あとで見たらひじと膝に擦り傷も。

基盤:当ブログ始まって以来のグロ写真であります。

開発:見ようによっては毛ガニの通販風。

社長:昔よくプロレスで流血試合を見ましたが、ああ、あれは見た目は派手だけど痛くはないんだと理解しました。血と汗と涙っていいますが、艱難辛苦のたとえとして適切ではないのではないかとか。あと眉とその出っ張りの土手はきちんと機能していて、上からの液体を堰止めるので、目にはまったく血が入って来ないのです。

開発:どのくらい出血したんでしょうね?

社長:わかりません。血液検査と献血の中間くらい?スニーカーがぐちょぐちょする感じもしました。

経理:シャツとズボンとスニーカーが血染めになってしまって、あれはもう復活できないのでは。

開発:そういう柄なんだと言いはる手も。ITS more社の提唱するへモグロビン染め技法とか。

基盤:直感的に警戒色の血の色だと感じるからまずいんで、別の色に置換できると良いですね。

開発:鉄は動かせないとすると、どうしても赤系ですね。

基盤:あ、ズボンからレシートとアメの空袋が。ご利用日は 20/07/12 02:17:33。ずいぶん長居しましたね。

社長:うーん、ずっとカウンターで店長さんと飲んで話してたような。私はここの焼き肉の切り方が嫌だとか、ここを近未来風居酒屋に改造するITS moreプランとかw

経理:合計金額12LSU。

開発:それだけ飲んだのにですか。出血大サービスですね。

社長:うーむ、帰宅して撮った写真のタイムスタンプが 02:54。店からふらふら歩いても10分弱だから、30分近く道で寝てたんですかね。

開発:今後はGPSで記録する必要がありますね。

経理:社長にもしものことがあったら我社は消滅です。

社長:まあこのブログはしばらく残るのではw

基盤:こないだ洗濯したばかりのTスリーパーも大変なことに。血を洗い落とす洗濯技術を研究する必要がありそうです。

開発:気にしないもしくはカバーをかけるで解決。

社長:確か、熱を加えると血液成分が変成して定着しちゃうんだと思う。温水洗浄はダメですね。

基盤:とりあえずハイジアで15分洗ったところ、かなり落ちましたが、襟のあたりの血痕が難関ですね。Operaの小豆色みたいになってます。あと、ズボンは膝に穴があいてました。次はナノックスとブライトでいってみます。

-- 2020-0712 SatoxITS

インスタント・タイムスリッパ

社長:帰りました。

経理:酒臭いですね。

社長:今日は久しぶりに焼き魚屋で茹でしらす丼でございました。

開発:暗黙でビールが出てきたものの、心なし応対が冷ためでしたね。

社長:金になる客、リピータにはそれに応じて優遇サービスする。極めて理にかなっていると思います。ファミレスじゃないんで。

基盤:たくさんドメインを取ってる顧客には割引とかすべきですよね。複数まとめて更新したら割引とか。

経理:昨日のさたぽんがツケになってますね。

社長:くたばれ現金!いや、最近財布に余裕をみて現金を入れとく習慣がなくなりまして。ツケを連発しております。小さい飲食店と医院が最後の難関ですね。

基盤:おばちゃんに話は通じたんですか?

社長:いや、昨日はたまたま息子さん?が店に居て、英語で応対してくれたんです。おばちゃんは、だいじょうぶ、だいじょうぶ、ありがとね、だけ言ってました。

開発:笑い話に時が変えるよ心配いらないと笑った♪

経理:標準報酬の届けも昨日滑り込み郵送しましたので、罰金50万または懲役6ヶ月の心配はなくなりました。やれば30分で出来る作業なのに。

社長:だって意味が無い作業には5分でも人生の時間を使いたくないじゃないですか。本来、画面上で入力して複製して自動計算してクリックで承認できれば、3分で終わるべき作業なんですから。

経理:それで思い出したのですが、国税は源泉で頂いてますが、地方税の分を忘れてました。いずれこれも差っ引かせていただきます。

社長:源泉徴収じゃなくて、自分で払えたほうがわかりやすいしスッキリすると思うんですけどね。

基盤:やたら複雑なほにゃらら控除とか本当に意味というか根拠がわからない。

開発:なんにしてもしかるべく納税をシステム化すれば、わかりやすくてタイムリーで納得できるものになるんじゃないとも思うんですが。

社長:当面その方面の雇用対策は必要でしょう。

開発:これから先何十年も続くんですかねその対策。もっとクリエイティブな作業に人間の能力を活用すべきと思います。

基盤:そういえば、私は人間ではありません調査では、ロボットは一度たりともクリッカブルマップをクリックしてません。

開発:そういう意味ではやはり、reCAPTCHAみたいな大層な仕組みじゃなくて、単にsubmitをクリッカブルマップにする、ついでにイメージはポイントリスムかQRボタンにするというのが、当社の進むべき技術の道ではないかと思います。

* * *

社長:それで飲みながら考えたんですが、なんなら動的リンカーを自作すれば良いと思います。まあ、自前の shell を作るノリで。ld.so とかって、せっかくの面白さを活かしてないのでは。

開発:まあ、スタッツ取ってワーキングセットを小さくするように再配置するというのは50年前からの技術ですしね。

基盤:ELF互換のPNGとかどうですかね。それかオブジェクトの配置をCSSで決めてJavaScriptでファイアーする。

社長:手作りといっても今はもう部品は揃っているので、組み立てるだけですよ。私が学生の頃は自分でゼロからa.outのダイナミックリンカー作ってました。VAXでは簡単だったんですが、インテルに移植する時にすごく面倒で。あれで86が嫌いになってしまいました。まあ、MSDOSが悲惨だったというのもありますが。そりゃもう立派な体裁の分厚いマニュアルで、1ページに20箇所くらい誤訳があるという。

開発:なんにしてもユーザとOSの境界ですね。

社長:機能というのは境界に形作られるんですね。いわゆるインタフェースです。そこの部分に味が凝縮するから皮が美味しい。

開発:汎用のダイナミックリンカーを作るというのは別にして、特定のプログラムをダイナミックリンクで組み上げるというのも面白そうですね。関係するプログラムを同じ空間に入れちゃったり、スレッドとしてスケジュールしちゃったりとか。

社長:共有メモリで交信できると処理も実装も効率化できるものもあるかもね。そういう意味では、まさにshellを動的リンカーで作るということになりそうです。Dynamic Linking Shell というか。

* * *

開発:さてそれで、Goのバイナリに対してもこの動的ライブラリを噛まして時間を飛ばしてやろうと思ったんですが、Segmentation fault で終わってしまいます。ダイナミックリンクがうまく行ってないんだと思います。

開発:でバイナリをみると、これは statically linked だよとあります。

開発:実際 readelf -s で見ても、動的リンク用のシンボルテーブルは無いのです。不思議なのは、ld.so がそれでも動的リンクをやろうとしていることです。おかげで原因に気づくのに時間がかかりました。

開発:それで、go build shared library とか検索すると、Go build の動的リンク版があるようなのです。

Shared library in Go? [Stackoverflow/2018]

開発:早速インストールして、ビルドしてみます。

基盤:バイナリちっさ!

開発:これでフォルトはしなくなったのですが、どうもこちらが提供した時刻を使ってくれない。clock_gettime を見ているようではあるのですが。

開発:一方不思議なことに、ld.so で動的リンクをトレースすると、clock_gettimeは出てこない。これは、どこかの動的シンボルから先で静的にリンクされてしまってるのかも知れません。

開発:.map に書くバージョンでのマッチングとか、C++版の型付気シンボル名の問題もあるので、要学習です。

社長:まあ、これは急がなくても。

基盤:それはそうと、今季初めて扇風機を稼働させたら体感温度が3度くらい下がりました。室温29℃なのにやや肌寒い感じです。

経理:冷房費ゼロへの挑戦。

* * *

社長:それで、この作品のアイコンが欲しいですね。

広報:イメージ的にはサイバーな… ガラスのスリッパかなと思います。

開発:笑顔のシンデレラは野獣だった。

開発:名前はタイムスリッパですかね。i をつけて iTS とか。

基盤:i はインスタントとかですかね。

社長:instanttimeslipper 長いですね… instant と time がかぶっているようにも… さすがにどのトップレベルドメインでもイケます。とりあえず .xyz 25円、.work 1円でぽちっ。

基盤:また xso なんですか?

社長:まあよいではないですか。

基盤:すかさずネームサーバの変更。

開発:やはり、登録時にネームサーバを選択できる whois.com はまともですね。少数派なんでしょうか?

社長:さて、通じたかな?

基盤:まだこの段階です。

社長:アクセス試すのが早すぎましたかね。

広報:ロゴの素案ができました。

社長:感じは悪くはないですね。でも長いな。インスタントをちいさくするとか。いっそインスタスリッパとかにしますかね?

基盤:吹き出し的に「即席」って付けるのでも。

広報:こういう感じ?

社長:ふむ。アイコンは?

広報:たとえばそのまんまですが。

社長:うーん。これアリですね。これでしばらく行きましょう。おっと、ドメイン名も開通。ではロゴを貼り付けて。

基盤:ドメイン名長っ(笑)

開発:アイコンに圧縮されると水彩画的な感じがします。

社長:タイムスリッパと点描を連携させられると良いですね。

-- 2020-0711 SatoxITS

タイムマシンの開発(大成功)

社長:できたみたいですね。

開発:整理します。やりたいことはアプリが参照するOS機能に変更を加えること。手段は動的ライブラリのすり替え。アプリの実例は date コマンド。変更するのは現在時刻の取得関数。

開発:strace date により、date コマンドが現在時刻を取得するのに使用している関数は clock_gettime と見られます。

開発:そこで、これを以下のように置き換えてみることとします。つまり、1970年1月1日0時22分33秒に固定します。

開発:これをshared libraryにします。

開発:で、これを date コマンドが使うように仕向けます。

開発:そして実行。

基盤:やった!

社長:感動しました。

開発:ブレークスルーはこの「LD_PRELOAD」という指定で、実行開始後最初にユーザの指定した動的ライブラリをロードするというものです。「ユーザやアプリごとに固有の動的ライブラリを設定できると良いのに」と思っていたのですが、まさにそれに相当するものでした。

社長:うーむ、これを使えば、どんな関数でもラッピングできちゃうわけですね… しかも想定外にお手軽。

基盤:自分のOSにごっそり入れ替えてしまったりとか、ネットワークOSにしちゃうとか。

開発:4月に作った ITSTPプロトコルに載せて飛ばすことも出来ます。

開発:あとは、これがLinux上のどこまでのプログラムに通用するか、さらにLinux以外では同じことができるか、です。

社長:プログラム起動時に、その時々に最適な動的ライブラリを生成して使うとかもできそうですね。

開発:まさに動的ですね。

基盤:コンテツのキャッシュとかではカバーできない部分の最適化ができそうです。

社長:いやめでたい。one giant leap for us です。めでたいので飲みに行きましょう。

-- 2020-0711 SatoxITS