記憶力200%増(当社比)

基盤:さっきアマゾンから届いたメモリを増設しましょう。

社長:それが、そば屋の帰りに郵便受けから持って来たのですが、どこかにぽいっと置いたきり、お昼寝して起きたらどこに置いたのか全く思い出せないのです。

開発:社長の動線て社内では総延長7mくらいしかないから、そう複雑な隠れ方はしないのでは。

* * *

基盤:結局、台所にありました。さーて、メモリの増設なんて十何年ぶりかな。まずはレノボ君のフタを開ける。十円玉でネジをくりくりっと。よくできてますね。では、えいえい。あれ動かないですね。あー、二箇所にネジがあるのか。もひとつクリクリ。えーい、ずるずるっ、パコっと。いきなり見えてるこのスロットがそれかな?でも先客が挿さってない…幅も違うし。これPCIってやつだっけ?何にしてもがらんどう、このこは拡張性というか伸び代無限大ですね。

開発:奥のほうに見えるやつじゃないですか?先客も居るし。

基盤:おっと、するとこの光学ドライブのモジュールにどいてもらわないといけないわけですか。どこか可動部分があるはずで。えいえい。うーん、これ赤い印がヒントですかね。どうもフロントパネルが外れるらしい。三箇所ぷちぷちっとしてパコ。とれました。あとはこのモジュール。どうもここらを軸にして回転して上がるような気配ですね。赤い印をぐいぐいっと。おー、動いた。パコ。開いた。

開発:これも簡単だけど、昔の ThinkCentre はもっと簡単だったと思います。カポって開く方式で。

社長:PowerMacやMacProはもっとずっと中身がエレガントでしたね。ソユーズとスペースシャトルの内装の違いくらい。

開発:お、先住民が1枚だけで寂しそうにしてます。

基盤:これからは賑やかになりますからね。ほら、お友達の2枚が来ましたよ、よろしくね。グサ、グサ。

社長:その、かなり硬いところへ思い切りガスっと押し込んでカチッと鳴る、すごく懐かしいですね。しかしまあ、メモリ基板ていえば昔は板にびっしり石が載ってたものですが、今どきのこれって石が飾り程度にしか見えないですね(笑)。ただの板ですかっていう。

基盤:さて、モジュールを戻してフタ閉めてと。

開発:やはりこのコンパクト筐体、軽々と扱えて正解でした。いやしかし、昔はRAMが4GBあればかなりリッチなマシンて感じでしたが、この安っぽい板2枚で16GBってねえ。でも、CPUは当時も8コアの使ってたけど、そっちが増えてないのが意外な感じです。

基盤:はい。それでは電源とディスプレイとEtherとUSBを挿し直して、電源ON!・・・

* * *

基盤:立ち上がらないですね。配線は全部挿し直したんですが・・・レノボ君にはディスプレイポートが2口あるから、違う口に挿したんですかね。自動判別じゃないのか・・・こっちが正解?ブスっと。うーむ、画面が出ませんねー。どうしたかねフィリップス君。うーむ、DisplayPort信号無し。この、モニター、やたらスリープに入りたがるの、なんとかしたいですね。

開発:このこのマニュアルどこに行きましたかね。まだ買って二年も経ってないと思うんですが、サポートサイトに無いんですよね。

基盤:このタッチして出るメニューの反応が異常にセンシティブだったり鈍感だったり訳わかんないですよね。こんな設定がイミフなモニター、過去に使った事無いです。

開発:訳がわからない時はまず下のレイヤから疑うという鉄則で行きますか。昨日から抜いたり挿したりしてるんで、電気的におかしくなったとか?画像信号をセンスしないとはどういう理由があり得るのか。ケーブルに問題は無いか・・・

基盤:あ、ディスプレイポートのケーブル、モニター側に挿さって無いですね。ずっとRemoteDesktop でやってましたしたから。グサっと。

開発:そうでしたか。

基盤:で、モニタの入力をディスプレイポートに変更・・・おー、画面出ました。実装メモリ24GB!

開発:長い道のりでした(笑)

* * *

基盤:こうなるとあと16GB付けたくなっちゃいますね。8千円で。合わせて40GB。

社長: 必要であれば、全然アリです。

開発:クラウドのVMの1GBメモリっていったい何なんですかね。

経理:今度来る iMac のメモリオプション8GBは、2万円でした・・・

* * *

基盤:さてそれではお待ちかねの仮想マシン性能測定です。クローンのVMで、一台は全てがHDD上に、一台は全てがSSD上にあります。まあ当然ですが、実メモリ上で収まる処理については、2台には全く性能差がありません。一方、du -s /home (21万ディレクトリ)で走査したところ、HDD版は84秒、SSD版は14秒と出ました。ここはさすがに、ランダムアクセスに強いSSDです。

基盤:一方、これはまあ滅多にやられないことだと思いますが、巨大ファイルの書き出し。6GBのファイルを書くというのをやったところ、HDD版では53秒。つまり、約113MB/秒です。想定通り。

基盤:さて、同じ事をSSD版でやると、おおよそ500MB/秒は出ます。ですが、実験するうち、悲劇が起きました。

開発:このこのSSD容量、もうヤバイんだよね。

基盤:そうです。そもそもその前に作成した10GBのファイルを削除したのですが、Hyper/V的にはそれが削除されたファイルの中身かどうかとか、中身は知らないわけで、仮想ディスクを整理中に、作業エリアが無くなって固まった模様です。([1]その後自動回復)

基盤:教訓としては、こういったテンポラリな巨大ファイルを仮想ディスク上に置くのは、仮想ディスクを肥大化させるし、まったく馬鹿げたことであった。ということです。そもそも、仮想ドライブが100GBを超えたあたりから、Hyper/Vでの仮想マシンの停止・開始が異常に遅く、1分とか2分とかかかるようになってしまいまして。

開発:外部のドライブをマウントするとか、共有ディスク?とかにすると良い、ということですね。そもそも、SSDはもうちょっと増やした方がよいのでは。

基盤:そうなんです。それで、さっきレノボのフタを開けた時にPCIの空きスロットを見て、あれ?ここに増設メモリのノリで増設SSDの基板をさせばいいんじゃね?と思ったわけです。今時ドンガラドライブの箱とかダサいですからね。それで検索すると、PCIに直挿しのSSDって256GBで5,000円くらいのようです。こういうやつ。

開発:どんぴしゃですね。

社長:購入しましょう。

基盤:こういうものがあったらいいなと思うと必ず売ってる、しかもリーズナブルな価格で。今はそういう時代ですね。


2020-0610 SatoxITS

[1] 2020-0610 追記:しばらく放置しておいたら、片付けられて回復していました。

さたぽん(sathaporn)

社長:ところで「さたぽん」てどういう意味なんですかね。タイ語だとは思うんですが。私は一時期さとぽんと呼ばれていた事もあるしどうも気になります。

基盤:さあ。ああ、sataponドットコムってサイトがありますね。永遠の?どうも Sathaporn ていうほうが正統に近い綴りのような。日本語ではthaiがタイになりますが、タイでもそういう略記的な表記があるんですかね。んー、Google翻訳にかけてみると…「สถาพร แดงสี」赤色?

社長:同音異義とかですかね?店の名前にするくらいだから名詞か形容詞かどっちかの句かなと思うんですが。

開発:どうもそこにある空白が分かち書きのようでないような。タイ語って分かち書きするんですかね?さた ぽんにゃんしー?なぜサタのあとに一拍入るんでしょう。さたとぽんに分解されるんですかね。

基盤:Google翻訳させてみると「hello」と「hellow world」の間に空白は入らないですね「สวัสดีชาวโลก」。「a small step of man… 」。分かち書きは無いような。

開発:やっぱアジア圏で分かち書きは無いですかね。まして自国語の文字セットのテキストにASCIIでスペースを入れることは無いと。日本語だって正式にはそう。句点、読点に相当するものがあるかという事になりますが。

基盤:日本語の句読点はASCIIの’,’と’.’になるようです。自国語には無いんじゃないですかね。中国語では全角的になります。CJKはそうなのか?というとハングルは…ASCIIになるような。でもハングルって、分かち書き的な空白が入りませんか?そもそも日本語に句読点が入ったのっていつの時代からなんですかね。レ点起源とか?

開発:まあGoogle翻訳だけ信じて頼っててもねえ。しかしすごいよね、少なくとも日本語・英語間の翻訳はかなりしっかりしている。少なくとも私よりは(笑)。「同時翻訳」って新しいよね。これ、そのままWordとかふつうのエディタに組み込めないんですかね?

社長:私は、そういうサービスにこそ、しかるべきお金を払うべきだと思いますね。それはそうと、ふつうに検索エンジンで探すと良いのでは。

開発:今日は Vivaldiの顔を立てて bing で行きますか。

基盤:satapon sathaporn … 人名にもありますね。タイって姓名どっちを先に書くんでしょう。wikipedia… サッカー選手に居るようですね。英語のWikiでこういう順序だから、first name のようですが。あー、First name : Sathapornとあります。

社長:それはそうとタイの文字って表意文字なんですかね表音ですかね?

開発:ぱっと見少なくとも英語的なアルファベットじゃないですが漢字的な表意文字とは思えないですね。そもそもどうやって入力してるんでしょう?日本語みたいにローマ字かな変換?だとすると、satapon とか sathaporn と入れたらそのタイ語に変換されるとか。

基盤:日本語の訓令式とヘボン式みたいなものかもですね。

開発:各国語のローマ字表記で検索できる辞書があると良いですね。

基盤:うーん、どうやら発音記号入力ですかね。ところでこの、国際音声記号(IPA)キーボードというの、すごく気になります。説明が超わらかします。こっちのは真面目なサイト。ASCIIに無い文字の入力を助けてくれるって事ですね。

開発:こっちのサイトは同時変換してくれますね。

社長:もうすぐお昼になっちゃいますが(笑)。その Sathaporn 選手のタイ語のページがあったら、そこに書いてあるんじゃないですかね。

基盤:まあそうですね。で Wikipedia 英語版では「Sathaporn Daengsee」。タイ語版では「สถาพร แดงสี」さん。これ、Wiki だからASCIIの空白で区切ってますね。Google翻訳にかけると「赤色」。英語では「red color」。

基盤:それで、この単語と思われる区切りを強制的に切ってやると、なんとこんなふうになるんです。

社長:なんと。さたぽんなくても red color なのか。てことは、なにか赤色にかかる強調とか枕詞的な?なんだろう。めっちゃ赤色とか。でもそういう名前ってふつう無いよね。緑と緑色みたいな関係?

基盤:てか、サッカー選手で英語名が red card だったらまずかったでしょうねw

開発:さたぽん単体では英語や日本語に翻訳できないというのが面白いですね。あるようなないような。色即是空ですかね。

社長:いずれにしても「さたぽん」=「สถาพร」=「sathaporn」 =「satapon」ということですね。それではタイ語の辞書を引きますか。

基盤:オンライン辞書とか。

基盤:bingで翻訳とか。

社長:なかなか難攻不落ですね。

開発:というか私、Google 翻訳がすごいと思ってましたが、bing の翻訳も十分よいですね。最近ちょっと Google の洗脳から冷めた気がします。これも Vivalidi のおかげ。

基盤:こっちを検索するとどうですかね?お?

基盤:おおっと!クライアント認証に電子証明書を求めてくるサイトに生まれて初めて出会いました!

開発:ほー。これはうちもやりたいですね。でも辞書検索で本人認証って、、、どっか違うアンカーを叩きましたかね。

社長:辞書が無償っていうのも、今ではふつうですが、インターネット開闢の頃は全然そうではなかったんですよね。実際、金を払う価値のあるコンテンツだと思いますし。それをただにしたら、別経路で回収できないマイナー辞書屋さんは食ってけないでしょう。

基盤:で結局、無償のオンライン翻訳辞書では無理。その言語のオンライン辞書で引いて、オンラインで翻訳する。そういうフローになりますね。このあたりがファイナルアンサーじゃないですか。

社長:うーん、結局さたぽんどっとコムに書いてあったことか。日本語名で言えば「久」かな。

基盤:赤色にひきずられちゃいました。あと、Google も Bing も、アジア系言語に対しては、大したこと無いのかなと、現状では。

開発:ちょっと応用してみますか。「わが巨人軍は永久に不滅です」…

基盤:さたぽん出てこないですね。

社長:中性的な軽い形容詞じゃなくて、願望とか祈願とか色付きの形容詞なのかもですね。タイのお坊さんウェアって赤黄色だし、それも関係あるのかも。そういう文脈でしか使われないとか。常緑ではなく常磐ですが、みたいな。

常磐(常盤、ときわ)とは永久不変なの事を指し、転じて永久不変なことを指す。[Wikipedia]

基盤:その部分、英語版の Wikiではスルーされてますね。

社長:ときわ御前は「常盤御前」です。ever green。古来日本人は「常」を好みますよね。古事記にも出て来る「常世」。竜宮城も時間の流れが違うから、たぶん常世の一種でしょう。まあ、人生がずっと短かった時代は特に、無常感が強かったでしょうから、「常」に対する憧れは強かったでしょうね。地名にも多い。

開発:私はじょうばんて読むとハワイアンセターと反射してしまう新人類です(笑)。あそこでスケートしたことあります。

基盤:「さたぽん」は日本語で言う「常」に近い、そういうことですね。

社長:うちの社名は「いつもお世話になっております」から始まったので、いつも、つねに、さたぽん。・・・あれ?つながりましたね。

基盤:珍しくオチましたね。

社長:すっきりしたのでお昼に行きましょう。今日はあの、なぜだか不滅のそば屋かな。

経理:ぶーぶー言いながらかなりのリピーターですね。かれこれ100回以上。

社長:だってうちから一番そばにある、ある意味そば屋なんです。コンセプト的には歩いて40秒で到達できる牛丼屋です。私は蕎麦にはかなりこだわりがあるんです。でも、気に入ってる蕎麦屋までは車で15分かかるし、車で行くと飲めないわけです。

開発:そういえば、あのそば屋ではめったに蕎麦は食べませんね(笑)


2020-0610 SatoxITS

公式Facebook停止されました

社長:なぜかこういう事になっちゃってますが。

基盤:なんか悪いアクティビティとかやらかしたんですか?どれに該当?

社長:というか、まだなんのアクティビティもないですが(笑)

基盤:審査をリクエストしてみては。

社長:そうですね。私のどこがいけないの〜っと。電話番号を入れてポチっ。おお速攻でぶぶーっと来ましたね。パスコード入力。プチプチッと。おおっと一瞬で審査終了。

社長:なんすかこれ?そういえば私はFacebookには携帯電話を(まだ)登録してなかったような気がするんですが。まんまと電話番号をFacebookに詐取されたんでしょうか?

基盤:Facebookを騙った詐欺だったりして。

社長:いや、Sign up時のメールのリンクから行ったんで。しかしなんだかむかつきますね。プンプン!どっちが怪しげな会社だっちゅうの。こちとら人様に迷惑かけるなんてこれっぽっちもしてませんけどー、個人情報をかき集めるとかさー、ってね。

開発:それはそれとして、社用の携帯は持ちたいですね。格安スマホで良いですので手配をお願いします。


2020-0610 SatoxITS

G Suite正式契約

経理:G Suiteから試用期間終了のお知らせが。契約するんですよね?

社長:はい。当社の.comと.jp 2つで独自ドメイン名のGmail。1TB GoogleDrive 付きで1,360円/月 x 2。妥当だと思います。

基盤:Acrobatの月1,700円を考えると、お得感が実感できますね。MS 365もExchange足したら似たような金額だし。1,500円/月って、なんかこういう今時のサブスクリプションの基準単価に思えます。抵抗感なく払える線なんでしょうね。

社長:でもねー。Acrobatって結局1日10回くらい電子署名するのにしか使ってないし、あのUIをみるたびに気持ちが塞ぐんですよ。来年は打ち切りでしょうね。

経理: この「monthlyあたりのおおよその料金」というのがお茶目ですね。プチプチっと。契約成立です。それで支払いなんですが、ちょっとあのおしとやか銀行、海外送金がダメダメですね。桁間違ってるとか、ちょっとがっかりです。ペイジーもカバー狭いし。今後は、ぶっきらぼー銀行のほうにシフトしたいと思います。

基盤:G Suite申し込む時でしたが、Googleに対してその独自ドメインが実際にうちの所有だって証明するプロセスはちょっと面白かったですね。DNSのTXTレコードをあんなふうに使うとか。index.html のmeta tagにあんなふうに仕込むとか。しかしあの時ちょっと手間と時間がかかってしまったのは、みーんなXSOのせいなわけです。1日も早く脱出したいです。

開発:片方のGoogleDriveは一般公開して、外部向けデータ配布用にすると良いかもですね。VMまるごととか。


2020-0610 SatoxITS

ラズパイでMonzilloをビルド

基盤:ラズパイが暇そうにしてるので、Monzilloをコンパイルさせてみることにしました。とりあえず Mercurial をダウンロドして makeして hg を作成、現在 firefox のソースをクローン中です。

基盤:Raspberry pi 4 の 4GB版を使用してますので、メモリ的にはイケると思われます。足りなかったらスワップ追加ですが、SDでスワップが使い物にならないようなら、8GB版を導入するか、SMBマウントを試すか、ということになるかと思います。ただ、そもそも Firefox がラズパイに対応してるかは不明ですが。

開発:そうですね、リソースは必要なら継ぎ足せば良いと思います。

基盤:そもそも Mercurial の make all の時点でなんかぶーたれてましたから、雲行きは怪しいです。

ディスプレイ真っ暗

基盤:それはそうと、ラズパイのHDMIを繋いだら Mac のディスプレイが映らなくなるという恐ろしい経験をしました。この999円の3口HDMIスイッチが何か悪さをしてMac様のHDMIを破壊したのではあるまいな?と深く深く疑いました。

開発:この下賤のモノめって切り捨て御免ですかね。

基盤:しかたがないのでThunderbalt からHDMIを出してそれを挿したらつながったのですが、しばらくするとまた画面が消えます。リモートログインはできてMac本体は元気なことを確認しました。なんやかやしているうちに非常に不思議な現象に出会いました。Macに挿しているマウスでラズパイのデスクトップのカーソルが動くのです。

開発:はは。つまりラズパイにVNC接続をしていて、マウスとキーボードは転送されているけど、画面は映らないって、感じ?

基盤:そうでした。VNCを繋いだ記憶がイマイチなかったのですが。いろいろやっているうちにホットコーナーに行くとカーソルが止まる。そう、Mission Control でMacに制御が移るんでしょう。ですがそれなのに、HDMIをMacに切り替えても No video inputなわけです。どうもフルスクリーンモードでMacからラズパイにVNCすると、そういうことが起き得るようです。しかも、Mission Controlに戻るショートカットが全部ラズパイにとられてしまってるから、ブラックホールからの抜け方がはっきりしない。とりあえずラズパイVNCフルスクリーンはやめました。

基盤:いずれにしても、この生産者不祥のHDMIスイッチ君には疑いをかけて申し訳なかったという気持ちで一杯です。

開発:結局、HDMIチップと電源と基盤とコネクタ、部品代的には数百円なんでしょうね。それにこの五十円くらいのプラケースをかぶせてアマゾンで900円+消費税で売ってると。この妙ちくりんなACアダプタって必要なんですかね?これで100円くらいしたりして。

基盤:アダプタは廃品利用かもですね。ある意味地球に優しい商品です。というか実質上、廃棄物質の輸出?

bingの類似画像検索

開発:ところで、Vivaldi のデフォルト検索エンジンが bing だったんで、しばらく使ってるんですが、なんか全然問題を感じませんね。というか bing って類似画像検索できるんだ。例えばうちのウェブサイトのこれで検索すると・・・

基盤:ほー。こんなふうに見事に似た画像を見つけてくれる。すごいなー。

社長:これ、色のパターンとかだけじゃなくて、何か構造的な認識も入っているんですかね・・・単色で検索してみればわかりますか。例えばこんなのとか。

基盤:なんすかこれ。

社長:あー、Previewで「あ」って描こうとしたんですけどね。あ、ってどう書くんだっけて迷ってたら、先が閉じてしまったと。それで検索するとこんな結果でした。

開発:うーむ。閉じた円を含む赤単色の線画。そんなくくりですかねー。ある種のメタなOCRでもあるのでしょうか。面白い。

社長:手書きのスケッチで検索してみたいんですが、なぜかそういう機能をつけてないみたいで不思議です。

基盤:私はロボットではありません。を手書きでぶつけてみたいですね。あ、今度来る iMac には手書き入力できるなんちゃらパッド的なものが付属しています。楽しみですね。

検索エンジン第2次大戦?

開発:検索エンジンは Google って決めてたけど、そうとも限らないのかもね。検索エンジン第二次戦国時代とか来るのかな。

社長:AltaVista はいまいずこ、ですね・・・

開発:日付でソートする機能、大文字小文字の区別、そして正規表現。Googleが席巻して諦めちゃった機能を、だれかが実現してくれるといいですね。当時は無理だったのが、今なら実現できるのかも知れない。

社長:そういえば、以前話してた画面の常時自動録画なんですが、実現性は?

基盤:全く問題ないと思いますね。CPU負荷的には1%とかのレベルですし、データ量的にも1秒に1MB程度。つまり1時間で3.6GB、1日撮っても100GBにもならないわけです。

社長:まあそりゃ、4K動画を楽勝で処理できる能力があるわけですしね。この子達は。

開発:おそらくキーになる問題は、動画からの特定シーンの検索でしょうね。

社長:まあ我々のは固定カメラだし、検索したいシーンというか事象もコンピュータが生成したものだから、ベテランの鑑識さんとか刑事さんとかはいらないよね。

基盤:あとは録画ツールがそういう風に画像を切り分けたりagingしてくれると楽ですね。できれば RemoteDesctop や VNC が録画機能を持っててくれたら、いちいちいろんなマシンで設定しなくて良いので楽かもです。

開発:ちょっと休憩しましょうか。

* * *

だからモニタの物理的切り替えは嫌

開発:ありゃ、またMacの画面が真っ暗モード。

基盤:VNCフルスクリーン起因説、破れましたね。んー、HDMIスイッチでパイの画面には切り替わると。でラズパイのキーボードからMacには入れる。でもってHDMIスイッチをMacにして見る・・・おー、Macデスクトップ画面復活した。つまり、スクリーンセーバモードとVNCの関係のような。スクリーンセーバをNeverにしましょう。

開発:うーん。つまりスクリーンセーバ状態からはキーかマウスの入力で戻るはずだけど、それがVNC経由でラズパイデスクトップに取られちゃってる、って感じですかね。でも前にはそうならなかった・・・ひょっとして、ラズパイのHDMIを抜いてないことと関係が?ラズパイはVNC経由だけにして柿の種にしましょう。

基盤:そうしましょう。それで、ラズパイはダウンロードを終えてビルドの準備に入ってます。ここで一発キャプチャー・・・あ、あれ?画面が真っ暗に。アイドルという話でもないんですね。しかたがないのでラズパイの手足を戻して、Macに入って起こす。回復。

開発:うーん、スクリーンセーバ説も外れなのかな。なんでしょうね。さすがにVNCがらみだとは思うんですけどねー。Misson Control で別のデスクトップで開いているVNCの問題とか。不可解な現象は物理層を疑ってみるという格言もありますが。まあしばらく VNC Viewer は閉じときましょう。

基盤:そのまえに現状をパシャ。

開発:この、ターミナルに残っているエスケープシーケンスって、回復中に押した何かですかね?

基盤:さあ。

開発:思うに先日ラズパイが来て遊んだ時は、いつも作業中のデスクトップの中に小さなVNC Viewer で表示するようにしてたんだよね。だから、Mission Control 説はありだと思うな。小さく表示しといてみましょう。昔はそういう、どのデスクトップに移動しても同じ位置に現れるウィンドウっていう設定ができたと思うんですが、今はどうなんですかね。

基盤:これ、VNCってウィンドウを小さくするとデスクトップがミニチュアになってしまって、それが良い時もありますが、実質的な仕事ができないんですよね。RemoteDesktopみたいな実サイズでスクロールっていうモードはあるんですかね?んー、VNC Viewer のオプション・・・Scall automatically、なんかこれっぽい。プッシュ。

開発:おー、リアルのサイズになりました。なるほど。

基盤:ちなみにこの ESC [ 25 ~ というのは、Print Screen key (F13) だったということもわかりました(笑)

マルチディスプレイとMission Control

開発:おもうに、Mission Control で物理ディスプレイを一つだけみていれば良いのはよいけど、存在する全てがいつもどっかにミニチュアで表示されてい欲しいとは思いますね。

基盤:まあ近いうちに iMac が来ますからね。現在のフィリップス君が拡張ディスプレイになりますから、そこに監視対象のウィンドウを集めとけば良いのではないかと。どうやってミニチュア化するかですけどね。Mission Controlはイマイチそういう使い方を想定してないような。

開発:そういえば私もついこないだまでそういう環境で仕事はしてたわけですけどね。一つのディスプレイだけで仕事するって、たぶん二十年ぶりくらいだと思う。でもこれが結構良いのです。目と首に優しいというか。あ、そういえばハヅキルーペを経費で購入しましょう。

基盤:Missiion Control と物理的なマルチディスプレイはどういう関係になるんでしょうね。来てのからのお楽しみですかね。

開発:そのへん、実のところまさに自分達で作ってみたいところではあるんですよね。自分の好きなように作れるデスクトップ。昔は X Window のウィンドウマネジャでみんな遊んでたよね。

基盤:まあ今は今で、プログラムを作らなくても結構できちゃうんだとは思いますけどね。

社長:それはそうと、MacのMailに乗り換えてから、新着メールがメニューバーでサクッと見えるようになったのが良いですね。

開発:ところで、UbuntuのVMのほうはどうしてますかね。

基盤:それが、ホストのRAMが8GBしか無い中、VMを2台並列で立ち上がらせるのに、VMに割り当てるRAMを2GBに制約してみたんですが、めっちゃ実行が遅いです。4GBメモリがあれば10分で終わるプロセスが、SSD版では100分、HDD版ではおそらく1000分くらいかかりそうです。ひたすらdiskI/Oしてますね。面白いので最後まで見届けようかなと。明日RAMが24GBになったら、良い思い出話になるかなと。

基盤:あ、ラズパイのMercurialが悲しい終わり方をしました。

基盤:一時的な問題っぽいですね。再チャレンジ、っと。

開発:でも、ラズパイの本命用途はブラウザじゃなくて、サーバだよね。Apatchと WordPressとか。

基盤:ああ、それは apt でとってこれるようです。少なくともバイナリは。firefoxコンパイルは 試金石ですね。

社長:たばこが切れたので買ってきます。

* * *

行き止まり

基盤:再びエラーで終わってました。

開発:これはもう、だめかもですね。

基盤:tarball から行ったほうが良いですかね・・・ 先日ダウンロードした 77.0 を使いましょう。展開してみると。

pi@raspberrypi:~ $ pwd
/home/pi
pi@raspberrypi:~ $ du -s mozilla-central
1605172	mozilla-central
pi@raspberrypi:~ $ du -s thunderbird-77.0
2882172	thunderbird-77.0

基盤:tarball を展開したのが 2.9GB、Mercurial でできたのが 1.6GB。けっこうなとこまでは行っている感じなんですけどね。

基盤:さて、tarball から build しようとすると、まず nodejs が無いと怒られます。で apt install nodejs しようとすると何かバージョンがーと言われる。それでこの際 apt upgrade 行っときます。それにしても、サーバのアドレスが IPv6なのがなかなかですね。

エラー:3 http://raspbian.raspberrypi.org/raspbian buster/main armhf libnode64 armhf 10.19.0~dfsg1-1+rpi1             
  404  Not Found [IP: 2a00:1098:0:80:1000:75:0:3 80]

基盤:ああ、apt upgrade 終わってますね。とりあえず apt install nodejs。mach build。おや zip が無い。apt install zip。rpm。autoconf。。。?libpulse.pcというものがないようだ。Ubuntu版からもらってきて真似しよう。/usr/lib/arm-linux-gnueabihf/pkgconfig/libpulse.pcっと。apt install rustc。おおっと、rustc が古すぎるとな。でも apt ではこれが最新だと言ってるし・・・

Mozilla 66に後退

開発:ちょっと古めの mozilla にしましょうか (^-^;

基盤:では、thunderbird のリリースから。。thunderbird-70.0b4.source.tar.xzあたりで・・・展開して、mozconfig をコピーして、mach build。おーっと惜しい。まだちょっと古かった。

開発:rustc -V によると、この rustcは 1.34.2。でもリリースの日付がわからないんですよね。なんで日付を表示しないんだろう? 理解に苦しみます。でも /usr/bin/rustc のファイルの日付が2019-06-21 になっているから、少なくともこれより前ですね。

基盤:ではキリのいい番号で mozilla 66 行きましょう。日付は 2019-03-08 ですね。そうこうするうちに、ラズパイの32GB SDカード、50%くらい来ました。ではビルド再開。apt install cbindgen。cargo install rustfmt。。。ふー。なんかこう、もっと若い人手が必要ですね。

社長:いや、これは年寄りの道楽というやつですから。若者と同じ体験をできる貴重な機会なのです。

手持ち無沙汰でGo

開発:なんかしばらくコンパイルが続きそうなので、Go言語でもやってみますかね。ラズパイで。

基盤:あれ、もうインストール済みですね。では、まずは Hello World!。

pi@raspberrypi:~/go $ cat hello.go
package main
import "fmt"
func main() {
    fmt.Println("Hello World!!")
}
pi@raspberrypi:~/go $ time go run hello.go
Hello World!!

real	0m1.466s
user	0m1.381s
sys	0m0.434s

開発:うーん、今は rustc がしゃかりきでCPU食ってるからな。ちょいと失礼 control-Z。再度どうぞ。

pi@raspberrypi:~/go $ time go run hello.go
Hello World!!

real	0m1.360s
user	0m1.352s
sys	0m0.475s

撤退の空気

基盤:うーん。3GHzのx86-64で real 0.25s というところだから、その5分の1位の性能って感じですかね。

基盤:おっと、rustfmt インストール終了しました。

  Installing /home/pi/.cargo/bin/rustfmt
  Installing /home/pi/.cargo/bin/cargo-fmt
warning: be sure to add `/home/pi/.cargo/bin` to your PATH to be able to run the installed binaries

基盤:ようやくここまでかって感じですね。mach build。そうですか。apt install llvmと。apt install clangと。んー、なぬ?

 0:18.12 checking rustc version... 1.34.2
 0:18.25 checking cargo version... 1.34.0
 0:19.12 DEBUG: Executing: `/usr/bin/rustc --crate-type staticlib --target=armv7-unknown-linux-gnueabihf -o /tmp/conftestc2HXAw.rlib /tmp/conftest8qU5zT.rs`
 0:19.13 DEBUG: The command returned non-zero exit status 1.
 0:19.13 DEBUG: Its error output was:
 0:19.13 DEBUG: | error[E0463]: can't find crate for `std`
 0:19.13 DEBUG: |   |
 0:19.14 DEBUG: |   = note: the `armv7-unknown-linux-gnueabihf` target may not be installed
 0:19.14 DEBUG: |
 0:19.14 DEBUG: | error: aborting due to previous error
 0:19.14 DEBUG: |
 0:19.14 DEBUG: | For more information about this error, try `rustc --explain E0463`.
 0:19.15 ERROR: Cannot compile for armv7l-unknown-linux-gnueabihf with /usr/bin/rustc
 0:19.15 The target may be unsupported, or you may not have
 0:19.15 a rust std library for that target installed. Try:
 0:19.15   rustup target add armv7-unknown-linux-gnueabihf
 0:19.31 *** Fix above errors and then restart with\
 0:19.31                "./mach build"
 0:19.31 make: *** [client.mk:115: configure] エラー 1

基盤:こっち方面は行き止まりっぽいですね。

開発:うーん、検索するとラズパイ用のFirefoxやっている人もいるみたいですけどね。というかこれ、ARM用のFirefoxだから、Androidにも通じてるわけですよね。いずれまたトライということで、今日は撤収しましょう。

打開の兆し

基盤:・・・ちょっと待った。mach bootstrap をやれって、そのAndroidの記事にありますよね。その段階からやると良いのかも。やってみます。mach bootstrap –no-interactive・・・ おっと、なんか通りましたよ。

Your version of Mercurial (5.4.1) is sufficiently modern.
Your version of Python (2.7.16) is new enough.
Your version of Rust (1.34.2) is new enough.
Rust supports armv7-unknown-linux-gnueabihf targets.
Creating global state directory: /home/pi/.mozbuild
...
Once you have such a checkout, please re-run `./mach bootstrap` from the
checkout directory.

で mach build ・・・

基盤:あこがれの compile フェーズに突入いたしました!

開発:なるほど、mach bootstrap てのをやらないといけなのかー。新しいプラットフォームに来た時とか?しかしこの、「Rust supports armv7-unknown-linux-gnueabihf targets.」。unknownをサポートするって面白いね。この部分、誰がどこで定義するんでしょう。

基盤:いずれにしても、コンパイルは3GHzのx86-64ですら90分以上かかりましたから、もし単純にこのARMが5倍遅かったら9時間掛かりですかね。まあ最後まで届けばの話ですが。

開発:果報は寝てまてですね。あーでも、メモリが厳しそう。

基盤:例によってスワップを8GBばかりプレゼントしておきますか。

SWF=/swapfile
dd if=/dev/zero of=$SWF bs=1M count=8192
mkswap $SWF
swapon $SWF

開発:これで安心して放置ですね。しかしまあ、8GBのファイルの作成に10分くらいかかりましたねー。


2020-0609 SatoxITS

設備投資

社長:いま我が社に一番足りないリソースは何でしょうね?

開発:時間です。

基盤:RAMです。

社長:とりあえずRAMから。具体的に。

基盤:HDDの増設で仮想マシンのディスクは余裕しゃくしゃくになりました。しかし、ホストの実メモリが足りないと、実行の性能が1/10以下に落ちます。ホストの実メモリにキャッシュ・バッファされてないと実ディスクとのI/Oが発生するわけです。ディスクとのI/O量は1MB/秒程度なので、ページフォルトに伴うものと思われます。量的には大したことがないですが頻度が高いため、特にHDDでは悲惨なことになります。待ち行列が伸びてます。

SSDとHDDの上でそれぞれ動作するクローンVM

基盤:一つ技術的にわかっていないのは、Hyper/Vが仮想マシンの立ち上げの際に「メモリが足りないので立ち上がれません」と言ってくるくることで、この立ち上がりさえ乗り切れればあとは、実行中にいい感じに調整される可能性はあります。ただいずれにしても、mozillaのビルド時のように仮想マシンの実使用メモリが8GB以上ある状況で、ホストの実装メモリが8GBしかないというのはいかにもアンバランスです。

開発:増設しましょう。

基盤:このレノボ機にはメモリの空きスロットが3つあります。メモリの仕様はPC4-21300 (DDR4-2666) SDRAM UDIMM。

経理:8GBで4,000円くらいが相場みたいですね。2枚セット8,000円前後で売ってる場合が多いようです。16GBで1枚もありと思いますが。メーカーは?

基盤:この、サムスンのちょっと安いけどちゃんと洗えてるかなあ(笑)。でもどこのでもいいんでは。どうせ永久保証ですよね。

経理:ではこっちの8GBを2枚。5%還元です。注文を確定する、プチッ。明日 08:00 – 12:00 にお届け指定しました。

基盤:いきなりメモリ3倍かー。幸せの値段って結構安いな。というか、PCメーカのオプションRAM容量って、なんであんなに高いのかな。4倍ぼったくりですよね。

開発:しかしこのレノボ Think Centre 君もキャンペーンを終えて手の届かない人になっちゃったね。一方このTinyシリーズ。MacMiniほどではないにしろコンパクト。4万円台から。会社設立時にも検討しましたが、やはり魅かれるものがあります。少なくともエンドユーザ環境でのテスト用にはぴったりですよね Home だし。

社長:最近はエンドユーザっていっても業務系は Pro なんでしょうけどね。

基盤:Pro にするなら Hyper/V 使わなきゃ絶対損です。

営業:何かアドオン的なちっちゃい仮想マシン作って売れないですかねえ。アプリのノリで。MyWordPressVMとか。

開発:クラウドのドライブをSMBにゲートウェイするVMとか。

基盤:何を独自の付加価値にするかですね。


2020-0609 SatoxITS

さたぽん(satapon)

社長:帰りました。

経理:酒臭いですね。

基盤:その間にVMのバックアップ、無事終わりました。所要52分13秒。SDD to SDD での圧縮保存と変わりません。お値打ちHDD作戦、完全勝利ですね。

ついにバックアップ完了!

開発:今日はどこへ。

社長:あの不思議でanonymousな和食の店に行ったのですが閉まってたので、40mばかり隣のタイ料理の店へ流れました。あそこのおばちゃん、鉄人ですかね。いつ行っても開いてる。

開発:さすがにトムヤムもグリーンカレーも飽きたと言ってましたが。

社長:今日はランチメニューでいってみました。あそこって、内外装はあれですが、メニューはすごく綺麗なんですよね。メニュー①ほにゃららライスにビール++。

社長:それで、飲みながらゴルフ系の掲示板を眺めてポストしようとしたら「規制」。私のような善良な投稿者が悪い人の巻き添えで投稿を規制されるなんて、納得できない!。いっそ我が社でも互換の掲示板立ち上げましょうかね?そもそも匿名とか。昔は anonymous coward と呼ばれたものです。

基盤:まあそういう時はお店のWiFiで回避。

経理:というかデフォでWiFi Onにしませんか。通信費を数千円削減できる可能性があります。

基盤:いっそAndroidの格安スマホで良いのでは。

経理:公用携帯ですね。

社長:ですから、WiFiをOnにしたら、トップに出てくる元気のいい APがあったんでこの店のかなと思うわけですが、STATION RESTAULANT とか書いてあるのでTXつくば駅ですか??って。あたり前ですがカギマークがかかっているわけです。で、おばちゃんにスマホ見せて、これここの店の?パスワードは?って聞いたんです。

基盤:おばちゃん、定形外の日本語通じるんですか?

社長:それなんですが、日本語以前にテクニカルに?だったんですが、隣から助け舟が入ったんです。うら若い女性、そう外見的には優香を可愛くして85%くらいに縮小して聡明にしたような。

広報:優香の時点で可愛くないですか?

基盤:優香のリアルサイズって実感的にはわからないですが。

営業:うら若いとか、妙齢のとか、使ってみたい形容詞だったんですね。

社長:それでその女性が、うしろの壁面にパスワード書かれてますよって。そもそもSSIDはSTATIONではなくてSATAPONでした。

基盤:だいぶ違いますね。

開発:ところでタイ系の名前にみられる「ぽん」ってなんなんでしょうね?どうも、ぺこぽんみたいでユーモラスに感じちゃいますね。ゆずぽんとかポンジュースとか。あれ?ぺこぽんじゃなくてぽこぺんだったっけ。

社長:敬愛されてた元国王がそうでしたね。それでその後ですが、その妙齢の女性が携帯で話をしているのが耳に入ったのですが、あれはたぶん、タイ語だと思われます。彼女が店に入ってきた時に、ほー、こういうエスニックな店にこの時間帯にこのへんの女子大生が一人で来るんだなとは思ったんですが。実は微笑みの国から来た人だったのかなって。

基盤:その店、タイ料理って断定してますが、判断する根拠はあるんでしょうか?

社長:理由?トムヤムクン出してるからかな。でも私はあまり細かい出自は気にしないです。タイ方面から来たのかなくらいな。なんとなくマヤデビ的でも、うまければ良いのです。

社長:あれ?そういえば店内でタイ語の文字っぽいの見かけた記憶が無いですね・・・

開発:民話的には、厨房でタヌキが頭に葉っぱ載せてでんぐり返してたって流れですね。

社長:うーむたしかに、梅雨時にカタツムリが這ってる草みたいな匂いの散らしてあった。

基盤:それはたぶん、パクチーのことですね。


2020-0608 SatoxITS

VMイメージの高速アーカイブ

基盤:VMのバックアップ、遅いですねー。128GBのzipに3時間半とかいってるわけですが。

開発:zip の時間見積もりはいつもいい加減ですからね。多分実際には数十分でしょうけど。

基盤:不思議なのは、CPUもディスクのI/Oも、全然空きがあるってことなんですが。何がネックなんでしょうね?

開発:まあ、何かの待ち合わせですかねぇ。SSDの書き込み待ちとか。キャッシュとかは簡易パフォーマンスモニタでは見られないんでしたっけ?

基盤:あー。ディスクが足りなって、zipがへこたれました。40GBの作業スペースでは足りなかったみたいですね。なんで途中こうなるだろうと予測しないんですかねぇ?エラーで終わらずに、開けてくれるのを待つとか。どこかにワークディスクを追加してもらうとか。

開発:そのへんはUnix、特に最近のLinuxはよくできてますね。Hyper/Vもそういう感じがしますね。

基盤:gzip でやってみますかね。

基盤:gzipの場合の波形もzipと似たようなものですね。時々全く圧縮が効いてなそうな区間があるのが面白い。

開発:乱数データでも入ってるんですかね?暗号化されているとか。何にしても、凡庸な区間を見てると、いかにも圧縮率1/4なんだろうなって感じがしますね。

基盤:この凡庸な区間には何がつまってるんでしょね?

開発:やっぱ凡庸なファイルですかねえ(笑)

基盤:おおっと、gzipも最終版になってディスクフルで終了しそうですね。まあ圧縮率は似たようなもんでしょうから。

開発:なんにしても論理的につながってない脈絡の無いブロックの連鎖でしょうから、ハードディ数の生圧縮というのは通常の圧縮プログラムが期待する入力データじゃないですね。特化した圧縮方法というかオプションがあるべきだと思います。

基盤:おっと、gzip もディスク無しで終了です。

開発:スペースの問題は簡単に解消できますが、128GBの圧縮保管に1時間。このやり方は実用的ではないですね。

社長:チェックポイント、スナップショット、バックアップ、アーカイブ。用途によっていろいろ工夫のしどころがありそうですね。おっと、携帯が。

経理:アマゾンから、HDD置配完了のメールです。

開発:噂をすればというかなんとタイムリー。

基盤:ドアを開けたらそこにありました。さっそく開封してUSBをぐさっと。おー、よい景色ですね。

開発:救世主来たる。というか、一瞬なんのことかわからない空間ですね。NTFSですかね。

社長:バックアップ走らせといてお昼にいきましょう。


2020-0608 SatoxITS

これからのブラウザはVivaldiかも

社長:Chromeよりはずっと良かったのですが、Operaにもそろそろ不満が鬱積してまいりました。それでちょっと探したらVivaldiというのが面白そうだなって。

基盤:これからは一生Operaだって、ほんの一月前に。

社長:そうですね。Operaが最高だと思ったのはまずあのリカバリー能力。それとサイドバーブックマークの使いやすさと編集し易さです。ですが、最近リカバリーのお世話になることがあまりなくなりまして。一番嫌気がさしているのは、プライベートウィンドウのあの色使いです。あれはすごく嫌。もう耐えられない。

別れの決定打

ブックマークはサイドバーで

社長:それで検索したのですが、Vivaldiというのもサイドバーのブックマークだっていうから、ダウンロードして使ってみたのです。こんな感じ。

良い色は気分を良くする

社長:くーっ、なんていい色でしょうねえ。その上、枠の色をコンテンツに合わせて適当に選んでくれるんですよ(!)。しかもそれが極めて適切な色なんです。

社長:機能的には、わたしがOperaの長所だと思っていたほとんどの美点をVivaldiも備えていることがわかりました。

社長:そのうえ表示方法が良い。たとえば右下に時刻表示がされてて、そこをクリックするとさくっと時計が出るというのがデフォルトというこのセンス。ただの時計じゃなくてアラーム機能付きです。

気の利いたネーミング

社長:機能へのアクセスにしてもそう。コンテクストメニューでタブの「Duplicate」じゃなくて「Clone」ですって。このセンスにも共感します。私があと欲しいのはウィンドウのクローンですが、それもあるのかも知れません。

アクセシビリティ

社長:操作性にしてもそう。拡大縮小がスライドバーでできるって、目からウロコでした。拡大率も常に表示されてる。この点は、マウスホイールで拡大縮小ができなくなってる私の環境の問題ではあいますが、まったくもって素晴らしい。

拡大率表示

社長:あ、あれ?Command+ホイールで拡大縮小できますね・・・なんだ、OperaではAllt+ホイールだったんですか。これはまた失礼。なんにしても、たとえばWordとかパワポでできる表示の制御は、ブラウザにもできて欲しいわけです。そういう意味でこれはなるほどと思いました。

遊び心

社長:その上遊び心。この3D変換。実用的な意味があるのかわかりませんが、面白すぎます。潤沢になったコンピュータの能力を楽しく生かしてますね。

タブそしてウィンドウの回復

社長:あれ?でもクローズしたタブを復活する機能が見つからない。Operadではウィンドウの枠部分で右クリックなんだけど… でも、あそこが狭いとやりにくいんだよね・・・

開発:その代わりに右端にゴミ箱がありますね・・・

社長:とりあえず右クリック・・・

社長:そうか、そういうことか。私の考えが浅かった。この考え方が正しい。・・・というか左クリックでも出てくる。背景色だけの違い?

開発:なんかの遊びかも?でその Windows with 3 Tabs ってひょっとして・・・

社長:Restore All でウィンドウごと回復しました。降参です。あ、でも、タブのセットに名前をつけて保管したいんだけど、さてできるかな?Vivaldi君。

遅い時もイライラさせない

社長:これ、リロードすると、進行状況というか、ロードしたリソース数とサイズが表示されるんです。これもいいなー。

開発:初期のブラウザーはそうなってた気はしますけどね。

社長:プログレス情報ってイライラを緩和するのにすごく良いと思うんですよね。終わるのを待つのが楽しくなったり。ネットワーク状況もコンテンツの素性もなんとなくわかるから一石N鳥です。

複雑なものを簡単に見せる

社長:うおー、なんだコリア!

開発:カスタマイズ能力もすごいですが、設定のし易さが素晴らしい。

基盤:画面のソコに歯車がいつもあるって、理念を体現してますね。

社長:設定の「Display ALL」。こういうのが欲しかった。

開発:ブックマークをその

結論

開発:豊富な機能がありつつ、機能へのアクセスが簡単である。考え方が斬新で、なんだか楽しい。昔良かったものもちゃんと残っている。そういう感じですね。

社長:そう、これは実にまったくクリエイティブです。Vivaldiは我が社認定CC金賞候補、社長推薦枠で。

社長:思うのですが、会社設立前から、この使いにくいブラウザ達は何とかならないのか、そのために自社で何かやろうかと考えていたのですが、Operaで80%くらい満足、そしてついにVivaldiで90%以上満足してしまいました。私が欲しかったもの、やりたいと思っていたことは、ほぼVivadoで実現されています。これって、お金払いたいですね。

経理:会社の経費ではちょっと・・・

開発:コードで貢ぐとか。


2020-0608 SatoxITS

Monzilloの第一歩

開発:さーてそれではなんかやってみましょうか。

社長:宿願のfile URLの表示を。特にパンくず。

基盤:ソースはどこでしょうね。find . -type f -exec grep “Up to higher “{}” “”;” ・・・重い。帰ってこないですね。Eclipseとか使いたいなー。

開発:Windows Explorer は「File Explorer」と名前を変えました。ですって。2018年5月。というか、コマンドキーを押しながらEを押すと開くんだそうです。知らなかった。アイコンまでマウスを動かす必要なかったのかー。

基盤:あ、ぽろっと出た。

u18$ find . -type f -exec grep "Up to higher" "{}" ";"
DirGoUp=Up to higher level directory

基盤:しまった、どのファイルかわからない(笑)。なんにしても、Cで書いてあるわけじゃないですね。ちょっと嫌な予感。でファイル名を表示したいんですが。man grep。あ、-H オプションというのがあるのか。再実行。

開発:それって、あるとは思ってたんですが、30年以上man もせず、不便してました (^-^;

社長:そう言えば、Mercurial とか何も使って無いですね。検索機能とかあるのでは?

基盤:あ、出ました。

u18$ find . -type f -exec grep -H "Up to higher" "{}" ";"
./thunderbird-77.0/netwerk/locales/en-US/necko.properties:DirGoUp=Up to higher level directory

開発:なんだ、プロパティというか定数集めたファイルみたいなやつか。

基盤:開いたら、あちこちに非ASCIIというかバイナリみたいのが入ってるげなんですが。生成したファイルですかね?で当該の定義がこれ。

# Directory listing strings
DirTitle=Index of %1$S
DirGoUp=Up to higher level directory
ShowHidden=Show hidden objects
DirColName=Name
DirColSize=Size
DirColMTime=Last Modified
DirFileLabel=File:

開発:まー locale てあるから、言語ごとにあるんでしょうね。

基盤:いえ、en-US しかないですね。打ち捨てられ感。まあちょこっといじってみましょう。全部大文字にしちゃえ UP TO HIGHER LEVEL DIRECTORY。バイナリだといじっちゃいけないかも。でもちょっとおまけして、make。make run。おー、大文字に変わった。

最初のいたずら

開発:それでこの necko っていうパーツというか何か、何ですかね。firefox necko でぐぐる。あー、ネットワークモジュールのことですか。https://developer.mozilla.org/ja/docs/Necko

ネットワークライブラリ (Necko) は、トランスポートからプレゼンテーションレイヤーに至るネットワーキングにおける、複数のレイヤーに対応したプラットフォームに依存しない API を提供します。この API は Mozilla クライアントで利用されますが、他のネットワーククライアントを書く際にも使用することができます。
・・・
最新のソースコードは netwerk/ で見ることができます。

基盤:ああ、netwerk/の下ですか。検索が速くなります。でもそのハイパーリング、Service Unavailable ですね (^-^;

u18$ find netwerk -type f -exec grep -H "DirGoUp" "{}" ";"
netwerk/streamconv/converters/nsIndexedToHTML.cpp:    rv = mBundle->GetStringFromName("DirGoUp", parentText);
netwerk/locales/en-US/necko.properties:DirGoUp=UP TO HIGHER LEVEL DIRECTORY (^-^)/

基盤:cpp でした。ホッ。vi nsIndexedToHTML.cpp。けっこうでかいですね861行。ファイルにもファイル内にも更新日付が無いというというのが悲しいですが。/DirGroup。ああ、ここです。

  if (!parentStr.IsEmpty()) {
    nsAutoString parentText;
    rv = mBundle->GetStringFromName("DirGoUp", parentText);
    if (NS_FAILED(rv)) return rv;

    buffer.AppendLiteral(R"(<p id="UI_goUp"><a class="up" href=")");
    nsAppendEscapedHTML(parentStr, buffer);
    buffer.AppendLiteral("\">");
    AppendNonAsciiToNCR(parentText, buffer);
    buffer.AppendLiteral("</a></p>\n");
  }

基盤:でその直下に、こう続きます。てことは、これ、file だけなくて、FTP とかにも共通なんですかね。

  if (uri->SchemeIs("file")) {
    nsAutoString showHiddenText;
    rv = mBundle->GetStringFromName("ShowHidden", showHiddenText);
    if (NS_FAILED(rv)) return rv;

    buffer.AppendLiteral(
        "<p id=\"UI_showHidden\" style=\"display:none\"><label><input "
        "type=\"checkbox\" checked onchange=\"updateHidden()\">");
    AppendNonAsciiToNCR(showHiddenText, buffer);
    buffer.AppendLiteral("</label></p>\n");
  }

  buffer.AppendLiteral(
      "<table>\n"
      " <thead>\n"
      "  <tr>\n"
      "   <th>");

開発:HTMLべた打ちがうれしいような悲しいような。まあこれで全然問題ないと思うけど。つまりその、AppendLiteral してる buffer あたりをいじればいいのかな。

基盤:そうですねぇ・・・どんなHTMLソースになってるのかと見てみると、こんなのが出て来ちゃて。

基盤:いったんHTMLを生成してそれを普通に解釈するという作りにはなってない感じですね。ちなみにOperaはこんなふうに、ごく普通です。

開発:すこし雲行きが怪しいですね・・・まあでも、そのAppendLiteral というのを試してみましょう。

基盤:ではとりあえずこんな感じで。

buffer.AppendLiteral("<pre>\n");
buffer.AppendLiteral(" @ @ <br>\n");
buffer.AppendLiteral("( - ) {DirGoAncestors} <br></pre>\n");

開発:あれ?

基盤:あはは、途中まで書きかけてコンパイルしちゃいまたね。というかここで生産性上の深刻な問題が。main()とかさっきのlocaleとかは firefox 本体にあってmakeでサクッとできますが、Neckoとかはshared libraryになるわけです。で、それを作るのに例のクソ重いrastccとldが走る。これ10分がかりです。おそらく、リリース用の入念チェックか何かをしているんで、開発用のmakeにすればいいんだとは思いますが。あできた。mach run。あれー、鼻の下が長くなっちゃいました(笑)

社長:ところでこれ、Goで書いた部品を組み込んだりしちゃいけないんですかね?

開発:Mozilla Public License ってすごく緩いんじゃ無いですかね。そもそも社内でいじってるうちは何の問題も無いかと。

基盤:あー、さっきからUbuntuが反応しないなと思ってたら、こんなことに。またディスクフルです。「ディスクでの重大なIOエラー」で一時停止してます。

基盤:VM用に139GBに達してますね。あー、まずはAvast削りますかねっと。さようならー。1GB空きました。あと大口だとAcrobat DCが2.5GB。当面もうWindowsでAcrobat使うことないですね。アンインストール。しかしAcrobatのくせになんで2.5GBもガメてるんですかねえ?しかもいつまで削除の準備中なのやら…。Windows Softoware Development Kit, 18/04/2020。なんすかこれ?2.35GB。

開発:いや、ちょっとWindows のドライバーでも書いてみようかなと・・・

基盤:削除で。しかし、Acrobatは何やってるんでしょうね?最後の抵抗?

開発:どっかに何か隠れて無いですか?

基盤:・・・このようなものが。なんで派手派手しくポップアップしなかったんですかね。RemoteDesktopのせいかな?でも、前から時々あるんですね。タスクバーでこっそりチカチカしてるとか。

基盤:あれ、どこからともなく8GBの空きが。またHyper/Vの仕業でしょうか?おー、HV復活してますね。

基盤:Development Kit の削除も忘れずにっと。

開発:ただ、思うにホストのディスクが256GBしかないのに、半分以上VM用ってのは、何かアンバランスですね。

社長:うーん。レノボ君にはSSDを増設しますかね。内蔵か外付けか。それが問題。

基礎:さて、10GB空きができたのでUbuntu再開。おや、今回はちょっと時間がかかりましたね。fsck的な回復してたのかな・・・あれ、またおかたまりですか。作業用のディスクが足りないのかなー。

開発:あれー、Windows版のDeleGateのmakeができなくなっちゃってます。Visual Studio の include がない。シクシク。アンインストールした Development Kit というのに含まれてたんじゃないですか・・・

基礎:この際 Office もアンインストールしましょう。

開発:マジ?

基礎:だってもう1ヶ月以上、Winodwsでは使って無いですからね。今後も使うことはないでしょう。アンインストール。ぽちっと。iTunesもTeamsもぽいぽいぽいっと。エンドユーザ様が使うツールはWindowsにはいらん。このVisualStudio系の山のようなのも一旦削ります。かたっぱしからぽいぽいぽいっと。あーっ快感!

開発:社長・・・

社長:構いません。続けて下さい。

基礎:全てはHyper/Vのために!わーいHyper/Vが再開しました。おー、40GB空きましたね。もう Hyper/V無しで生きていけない。

社長:ところで私は、以前から赤系が苦手なんですが、好きな赤もあります。茜とか柿右衛門とか。Ubuntu18デスクトップの右上のほうは、かなり好きです。

開発:でも、圧縮すると、パレットのせいなんでしょうけどずいぶんひどい色になっちゃいますね。l好ましいといっているのはこの部分ですが。

基盤:そのへんは、WordPressで使ってる圧縮ツールの問題じゃないですかね。あんまり色あいの保持を考えてないとか。MacのPreviewで小さくすればこんな感じ。

開発:かなりまともです。

社長:Apple製品はすべてまともです。ただし iClould を除く。

開発:うちで構築するWordPressサーバにはこういうのを使いたいですね。

基盤:そういえばコンパイル終わってました。こんな感じ。

社長:おお、良いですね。あとはパスにアンカーつければ。

開発:しかし、リブートしちゃうと、複数ログインしていたヒストリーの一つしか残らないのが悲しいです。さっき何やってたんだろうと。

社長:そもそもSSHとかじゃなくて、ふつうにブラウザからHTTPサーバに入って、ブラウザをターミナルエミュレータとして使えればいいんじゃないですかね。mod_terminal とかあるんでは?接続後にプロトコルを変更(UPGRADE?)するメソッドってありましたよね。

開発:Upgradeヘッダですね。

基盤:どのブラウザも ssh://hostname とか telnet://hostname というスキームは受け付けますが、いずれも端末アプリに投げるだけですね。まー、ブックマークとして管理できれば多少便利かも。

開発:それはそうと file URLのアンカーを片付けましょう。要は、file:///p1/p2/ という文字列を、こんなふうに変換するだけで良いはずです。

file:///p1/p2/...

 ↓ 生成

<a href=file:///>file:///</a>
<a href=file:///p1/>p1/</a>
<a href=file:///p1/p2/>p2/</a>

社長:split と join ですかね。scanf と printf というか。

開発:C++でどうやるのかというと・・・ぐあー、なんかやたら std:: というのがうざいんだけど。

* * *

社長:それでどうなりました?

開発:C++流のやり方でやろうかと5分くらい調べたのですが、嫌気が差してCで書くことにしました。

社長:(笑)

開発:それで問題だったのは、mozilla が使っている文字列のクラスと名前のCの文字列とのやりとりです。その文字列は nsCString というやつなんですが、どういう定義なのかソースコードを探してもよくわからず、結局ようやくMDNにドキュメントがあることがわかりました。

開発:それで思ったのですが、ちょっとかじっただけですがGo言語なら、ライブラリを検索するのも簡単だし、その仕様もとてもわかりやすく、かつ見やすく説明されていることがほとんどです。一方、mozillaのは、どこの廃屋?感がヒシヒシ感じられます。まあ、わかってみれば何の事は無いのですが。とにかく、とっつきにくいというか、最初の一歩の敷居が高いです。

開発:そもそも私は文書、特にウェブのページとかでその作成・更新日が記載されてないのって、アンビリーバブルなんです。それがいつ記述されたものなのか、文書を読む上で、どのくらい真剣に読むか、あるいは読まずにスキップか判断する上で、最も重要な情報のはずなのに。プログラムにしたってそうです。

基盤:とまー、ぶーたれていたわけですが、実は先ほど、mozilla のソースやドキュメントについて、まともな記載がされているサイトを見つけました。その名も firefox-source-docs.mozilla.org です。Firefoxのビルドについてもとてもわかりやすくまとめてあります。で、いまその指示書どおりにやり直しているところです。基本的には同じ事のようではあるのですが。まあ、MDNは実際、廃屋だったんですね。

基盤:で、こっちのやり方でやったら、流石に最初のダウンロードだけは数十分かかりましたが、ビルドは1分15分で終了でした。

 1:15.13 Packaging quitter@mozilla.org.xpi...
 1:15.26 Packaging mozscreenshots@mozilla.org.xpi...
 1:15.40 0 compiler warnings present.
 1:15.43 Overall system resources - Wall time: 75s; CPU: 0%; Read bytes: 0; Write bytes: 0; Read time: 0; Write time: 0
To view resource usage of the build, run |mach resource-usage|.
 1:15.44 Your build was successful!
To take your build for a test drive, run: |mach run|
For more information on what to do now, see https://developer.mozilla.org/docs/Developer_Guide/So_You_Just_Built_Firefox

基盤:高速化のミソは、コンパイル済みのオブジェクトを自動的に落としてくれることです。そうさせるには、mozconfig ファイルに以下の一行を書く、これだけです。

ac_add_options --enable-artifact-builds

開発:ただ、少しでもいじるとその影響範囲はどうなるんでしょうね。特に、全体におよぶオプションを変えた時には、結局全体の再コンパイルになるのではないかと思います。

開発:それはともかく、最初の第一歩の要件だった、「上のディレクトリ」でなく「上位の各ディレクトリへの直接移動」ができる機能はできました。

開発:mozilla の流儀に慣れるのに少し手間取りましたが、やることは簡単なので、実際簡単に実現できました。この機能は少なくとも私にとってはとっても必要なものでした。このような機能がこれまで Mozillaで、あるいはApache等のサーバ側でも、実現されてこなかったのが不思議でなりません。

基盤:できましたねー。ただ、もうちょっと何か見栄えのする見せ方が必要かもしれませんけど。カーソルあてるとポップアップするとか 。details活用するとか。既存の表示の中に差し込むのもあれなので、完全にオリジナルのページにしたほうが良いと思います。あとやっぱり、Windows版もMacOS版も欲しいなあ。

社長:素晴らしい。地味だけど、one giant leap for our company です。


2020-0607 SatoxITS