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