ほんとうの空

東京にはほんとうの空が無い

高村光太郎は妻の智恵子がそう言っていたと詩にしています

大正の終わりか昭和のはじめの頃と思います

私は東京に暮らしたことはありませんが、そもそも私が東京に行くようになったずいぶん昔の時点で、本当のも何も、東京には既にほとんど空がありませんでした

空があるとは何のことかと言えば、要するに空が見えるということでしょう。加えて智恵子が言うのは、(彼女の思う)本当の空の色や形をした空、感情を揺さぶるような存在感の空が無い、ということかと思います

ほぼ色彩的主観に生きた人物像の智恵子の言葉、それを東京育ちの詩人の夫が「東京に空がない?」という驚きの表現に圧縮したものかと思われます。東京に「は」じゃないんですよね

味が味覚だけでなく嗅覚や視覚に支配されるように、視覚も他の感覚、それ以上に感情に左右されるものと思います

そして視覚は、他の感覚に増して思考を、というか長時間に渡って継続する作業の気分を左右し、生産性や創造性を左右します

身近なところではデスクトップの壁紙ですね

この壁紙を採用したら、生産性アップ、会社の業績もうなぎのぼり!みたいな壁紙が売れるかもしれません

ラピスラズリー色のとか

— 2020-0616 SatoxITS(土浦駅にて)

  • はじめてiPhoneから投稿してみました。特に違和感なしです。
  • これを書いてて思い立ったので当サイトのボタンはラピスラズリにしました。

◇ 私はロボットです。

開発:以前から考えていたこれですが。

社長:G社への挑戦ですね。特徴は?

開発:当社が開発した方式では、チェックを入れる手間が無く、ワンクリックで行けます。

社長:素晴らしい。

基盤:でもあれは実際にはチェックボックスでは無いですよね。どこをクリックしてもOKで、実際ワンクリックですが。まあでも、HTTPのログを見るのが楽しみです(笑)

開発:で、こいつを踏んだロボットにクッキーを食わせて、ロボット向けのコンテンツをクロールしてもらおうというわけです。

社長:ロボットがクッキーをためてくれるかが問題かもですね。

開発:まともなロボットなら。というか、悪意のある執念深いロボットとかなら絶対(笑)

社長:人間様向けのものと、検索エンジンのロボット様が喜んでくれるコンテンツはちょっと違うんでしょうね。

基盤:人間に不可視という意味では、meta description でも良い気はしますが。

開発:あれはベタテキストですから、いまひとつな気がするんですよ。

社長:人間様向けだとちょっとウザいけど、そのロボットがいつの何時何分何秒に訪問したのかわかるようにタイムスタンプとカウンターは付けたいですね。あれは検索するときに結構役に立ちます。

--
2020-0615 SatoxITS

はじめての自作Chrome Extension

社長:それではブラウザに何か機能を追加してみましょう。

開発:いわゆるプラグインですか。

基盤:Google Chrome的には「 extension 」て呼ぶようです。

社長:我が社正式ブラウザのVivaldiではどうなんでしょう?

基盤:VivaldiChromium がベースなので、共通のようです。おっと、日本語版ガイドがあるじゃないですか。

開発:「多いです」ってのがくだけけていい感じですね。

社長:Vivaldiのコミュニティっていい感じなんですかね。

基盤:いや、ブログとかボロクソ書いてる人が多いです。確かにある意味、いい感じ(笑)

開発:これ読むと、Vivaldiはユーザが拡張する必要なんて無い完璧なブラウザですからっていう気持ちが見えますね(笑)。基本的な機能についてはそうであって欲しいし、実際そうだなと感じますが。

Chromiumとextension

基盤:Chromiumベースなのは、Chrome, Edge, Opera それに Vivaldiですね。 あと Android も。EdgeがChromiumになったのは2020年1月だそうです。そういう時代なんですね。まあでも、世の中をあれだけ特殊なブラウザで苦しめた事は謝らないんでしょうけど。

開発:インターネットの普及を散々邪魔したあげく、いざ普及したら自分こそがインターネットですみたいにしれっと出てきたりする会社もいましたよね。

基盤:5大ブラウザでは Firefox と Safari が Chromeでは無いということですね。

社長:まあ、祖先をたどれば結局は Mozilla、Netscape、NCSA Mosaic に行き着くんでしょうけどね。 わたしなんてデビュー時の Mozaic から使ってますよ。英語ではモゼークって発音するらしいとか。

基盤:それで、extension てどう作るんだろう、と調べると、https://developer.chrome.com/extensions が根っこですね。

Google Chrome extensions の手引き入り口

開発:They are build on web technology such as HTML, JavaScript, and CSS。とありますから、うちの現有能力でいけますね。というか、それなら確かにポータブルだとは思われます。

社長:Apacheとかもそういうノリで作られてるといいですね。

基盤:古くはCGIで今はWordPressのプラグインでPHPとか。いずれのNode.jsとかともお付き合いするのでは。

開発:でも仕様・機能を満たしてればいいので、フロントエンド側のブラウザみたいにエンドユーザの好みで多様化っていう世界では無いですよね。

誰だって最初は Hello world

基盤:それじゃさっそく、Hello world ! 的なのを。

開発:では、このページにいきなりある Hello Extensions から。あー、この手の手引きにありがちなのですが、いきなり具体的な手順を頭から書いてますね。最初に簡単にサマリーをつけて欲しいものです。つまり、こういうことですね。

  • Chromium の extension はメタ情報と実装で構成される
  • メタ情報はマニフェストと呼ばれ、manifest.json という名前のファイルに格納する
  • manifest の中で拡張機能の外形を定義して、それを実装に対応させる
  • 実装は HTML や アイコン画像などで、そのファイル名を manifest から参照する
  • extension を組み込みには、このmanifest(を含むディレクトリ?)をブラウザに登録する
  • extension を呼び出す方法は manifest に記述する

基盤:あとはここに書いてある流れですね。

社長:これってつまり、自身に実装を持たない extension もアリエルということですよね。というか、この参照がURL一般で良いなら、data URI scheme でも行けると。

基盤:とりあえずやってみましょう。まずディレクトリを作って、このちっちゃなサンプルの json と html と png を格納します。

Last login: Mon Jun 15 01:56:30 on ttys011
MacMini% cd ~/Desktop
MacMini% mkdir ExtHello
MacMini% cd ExtHello
MacMini% cat > manifest.json
{
    "name": "Hello Extensions",
    "description" : "Base Level Extension",
    "version": "1.0",
    "manifest_version": 2,
    "browser_action": {
      "default_popup": "hello.html",
      "default_icon": "hello_extensions.png"
    },
    "commands": {
      "_execute_browser_action": {
        "suggested_key": {
          "default": "Ctrl+Shift+F",
          "mac": "MacCtrl+Shift+F"
        },
        "description": "Opens hello.html"
      }
    }
  
  }
MacMini% cat > hello.html
  <html>
    <body>
      <h1>Hello Extensions</h1>
    </body>
  </html>
MacMini% cp -p ~/Downloads/hello_extensions.png .
MacMini% ls -l
total 24
-rw-r--r--  1 xxxx  staff   74 Jun 15 13:39 hello.html
-rw-r--r--@ 1 xxxx  staff  319 Jun 15 13:41 hello_extensions.png
-rw-r--r--  1 xxxx  staff  466 Jun 15 13:39 manifest.json
MacMini% 

基盤:でブラウザに登録。登記所は Chrome では chrome://extensions だから、Vivaldi では vivaldi://extensions ですかね。

社長:まだ誰も居ませんね。

基盤:で、Load unpacked で Desktop/ExtHello を開くと・・・

基盤:追加されましたね。で、Details を見ると・・・

開発:わたしはその、「Allow access to file URLs」という設定がとても気になります。

基盤:で、manifest には「_execute_browser_action」が「"mac": "MacCtrl+Shift+F"」と定義されていましたから、その通りに押す・・・あれ、何も起こらないですね。

開発:一旦 Extension から抜けないといけないとか。

基盤:「+」で新しいタブを開いてみます・・・

基盤:あ、extension で登録たアイコンが出ましたね。あれ?でもCommand+Shift+Fで何も起こらない・・・ じゃこの「Hi」ってアイコンをクリックすると・・・

開発:出ましたね。右クリックすると?

基盤:拡張機能を直接管理できますね。でもHide Buttonて・・・ ああ、拡張機能全般のボタンの可視性制御ですかね。Vivaldi はまだよくわからないです。

はじめての自作 extension

社長:で、そこに一般のURLを直接書けるのか気になるのですが。

基盤:では、こんなふうに改変して、Update ・・・

基盤:なんか、Updating ... で固まりますね。version を変えるとアップデートできないとか?

開発:一旦 Remove して Load してみましょうか。しかしこれ、manifest に作成日付が無いっていかがなもんでしょう?

基盤:ぽち。ぽちっと。

開発:登録されましたね。で「Hi」をクリックすると・・・

基盤:出ました。窓がちっちゃいけど。

開発:これ、普通にブラウズできるのかな?

基盤:メニューをポチッと。

基盤:普通にブラウザのようです。

社長:なるほど。。。てことは、manifest だけ配って、実装は手元に置いて更新するってことができるわけですかね。

基盤:たぶん。

開発:といいますか、いっそ manifest の URL だけ配るって事はできないんですかね?

社長:それだとちょっと、ブラウザ側で何も extensions を管理できなくないですかね。まあそれはともかく、大変わかりやすいフレームワークであるという事はわかりました。一旦休憩しましょう。

* * *

jQueenアイコン作成

広報:さっそくですが、jQueen のアイコンを作成してみます。

社長:ちょっとその前に。上の画像をみて気づいたんですが、Vivaldiが右下に時刻表示をしているので、時間経過がわかってとても良いなと思います。

基盤:その時間より前には存在してなかたっという証明ができたらすごいですけどね(笑)

社長:これいっそ、タイムスタンプ付きで電子署名すると良いかなと。PNGのコメント的なチャンクに入れられますよね。

開発:できると思います。ただ、圧縮されたりした時に捨てられるかもですが。

社長:署名データ自体を画像として透かしみたいにできないですかね…

経理:証明書のモトはきっちり取らないと。まだ500回くらいしか署名してないかと。目指せ1署名1円です。

基盤:そういえば今回のAzureの課金は、ちょうど1日100円でしたね。

広報:それで、OneDrive上のロゴ集のパワポファイルを開こうとしたのですが、いつまでたってもクルクルしてて開かないのです。というか、いくつかのサイトにアクセスができなくなってます。

基盤:うーん。psするとプロセスが550ありますね。CPU負荷的には大した事ないですが、仮想メモリ4000GBを超えてます。昨日から動かしはじめたタイムマシーンが疑わしいですが・・・今は休憩中ですね。なんにしろOperaの残骸のタブとVivalidiのと100以上タブ開いてますしね・・・ うーん、topで見ると毎秒1万回くらいスワップインしてますね。ていうか、それでも割と普通に使えてるんですけどね。こないだ入れた自家製のDNSサーバ怪しくないですか?

開発:うーん、DNSのログをみると、異常は無いようなあるような。ただ、これだけヘビーにリカーシブなサーバとして動かしたことは過去に無いかもしれない。デフォの並列2プロセスというのも問題かも。そもそも内部的なRRのキャッシュがいっぱいになったとか?とりあえず delegated -r ... 。おっと、回復しましたね。どうも、しかるべき使い方をしていなかったようです(^-^;

基盤:それじゃOperaもちょっと死んでもらいます。どうせ完璧に蘇るでしょうしね。terminate。。。おおっ、固まった!すごい、load avarage 170達成です。それでも動くtopはエライなあ。。Operaプロセス全滅しました。5分くらいかかりましたね。総仮想メモリ3000GBに低下。ロードアベレージ10前後になりました。普通に使えますね。

広報:パワポ、さくっと立ち上がるようになりました。ですがさっきやりかけた編集で大事なスライドが一枚飛んでしまったようです。

基盤:そういうときはOneDriveに感謝しつつ昔のを回復ですね。

基盤:削除したわりには、いきなりサイズが大きくなってますが。しかもなんだか不自然なッジャスト800KB。。で、壊れてないらしき6月2日のを Restore 。。。復活しました。ていうか、Office 365で出来なて不便だなって思ってた、古い版を回復するんじゃなくて取り出すというのが、OneDrive ではできるんですね。これは朗報です。

開発:で中身は?

広報:ほっ。元のが回復しました。それでは、ちょっと時間がなくなってしまいましたので、適当にサクッとこんな感じで。

社長:ああ、とりあえずこれでいいんじゃないですかね。jQueern のアイコンとして表示してみましょう。

基盤:では、manifest.json のアイコン名を変えて、Update。。 やっぱり固まりますね。RemoveしてLoad。出来ました。

社長:おっと、ちゃんと jQ って読めますね。

開発:経費でハグキルーペへの野望が遠ざかりました(笑)

経理:ちょっとあれ、あり得ないです。原価数百円じゃ無いんですかね。調達請求出てたの保留中です。

基盤:それはそうと、今気づいたんですが、Vivaldi ってコンテンツの表示のズームと別にVivaldiのアイコンとかテキストとか(ユーザインタフェイスの)ズームができるですね。例えばこれ、UI 300%。

開発:うーむ。わたしらが欲しいと思ってるものの倍返ししてくるブラウザですね。そもそも離散的でなく連続的です。全部のアプリがこうなってたら、マジはゔきルーペ、いらねーな。

社長:これは本来ならMacOSで統一管理するべきところだとは思いますけどね。

基盤:お腹が空きました。

社長:飲みに行きますか。

* * *

コンテクストメニュー

社長:ひさしぶりでしたが夜に飲むのも良いものですね。

開発:事始めの〆はやはりコンテクストメニューで。

社長:context-menu.click は我が社のものですからね。

基盤:ところでこの extension のチュートリアルですが、Creative Commons (BY) だってあります。

社長:これ、なんかクールだね。うちも入れようか。

基盤:具体的には利用する時どうすればいいんですかね。引用元明示という意味ではURLを書いているからそれでいいのかなと。

開発:うちは Techno Comical Creative Commons とか標榜したいかと。

基盤:context menu のサンプルはこれですね。

基盤:これをさっきのにマージして、Remove + Load ・・・ なんかエラーが出ますね。

基盤:sample.js の最後の部分ですね。なんかテスト用にわざとやってる感じ。

基盤:じゃ、これを外して再ロード。

基盤:OK。

開発:では早速クリックをば。ワクワク。

基盤:右クリック!

社長:おー、出た出た。

開発:なるほど。でもこのサンプル、最初の一歩向けにしてはちょっと複雑ですね。あと、manifest.json にも sample.js にも「右」クリックだということは書いてない。コンテクストメニューを右クリックで出すというのはブラウザが決めることなんでしょうね。

社長:他と同居するとメニューが複雑になるから、Shift+右クリックとかにして景色をさっぱりできると良いかもですね。

開発:ともかく、とりあえず気になるコンテクストは現在のページのURLですから、これをメニューに出すには。。こんな感じですかね?

var jqueen = chrome.contextMenus.create(
  {"title": "Go upper layer"});
var uee = chrome.contextMenus.create(
  {"title": document.URL, "parentId":jqueen});

開発:で、extension reload して右クリック...

基盤:コンテクストが違いましたね、残念 (^-^)/

開発:うーん、とりあえず console log で追いたいですね… でもなんだか DevTools の console に出てこないような …

* * *

開発:んー?何だコリア。inspect views ? ・・・ おお!コンソール出た。こいつは便利。

開発:それでは早速、ページ移動して右クリック。

基盤:出ましたね。あとはこれを昨日の関数で分解してどっかに表示すると。

開発:ふー。ログさえ見れれば千人力。extension もちょといじって Updateで速反映できることがわかったし。素晴らしいです。ちょっとコーヒーブレイク。

* * *

経理:そういえば年金機構とけんぽ協会から封書がきてました。年金機構からは「報酬月額算定基礎届」を提出しろと。7月10日締め切りです。健保協会からは健診補助のお知らせ。

社長:リアル社員約1名、昇給、賞与無し。業績悪化により6月分は役員報酬ずばっとカット。そういう感じ(笑)

経理:最近設備投資で支出が増えましたしね。

* * *

開発:で、昨日の版の URL 分解はいきなり document.write してたから、今度は文字列を作って返す関数にしましょう。こんな感じ。

/*-- UrlEx HTML --*/
function surl2ahtml(surl,action){
  var pathv = surl.split('/');
  var aurl = "";
  var purl = "";
  var pi;
  var ahtml = ""; 
  for( pi = 0; pi < pathv.length; pi++ ){
    aurl += pathv[pi] + "/";
    purl += pathv[pi] + "/";
    if( pi < 2 ) continue; /* skip scheme:// part */
    ahtml += 
      "<a "+"href=" +aurl+ " " +action+ ">" +purl+ "</a>";
    purl = "";
  }
  return ahtml;
}

開発:でもってこれを jQueen にいれて。右クリック。

基盤:OKですね。

開発:さて、これをどうやってユーザに見せるかなのですが。今回は客人なのでユーザのHTMLの中に埋め込むわけにはいかない。

基礎:基本中の基本を知らないというこの面白さ(笑)

開発:もとのページにポップアップを定義しておいてその可視性を制御するという方法が使えないですからね。ウィンドを定義して開くのかな。ああ、多分この window.open() てやつだ。

function jpop(ahtml){
  window.open('https://its-more.jp', "_blank", 
    "menubar=0,width=300,height=200,top=100,lef=100");
}

開発:OK。とりあえずポップしました。もう刹那的に、 data URI で開いちゃってはどうかな?

基盤:怒られましたね(笑)

開発:うーむ。テンポラリなコンテンツを作ってその仮想的な?URLで開くか、開いているウィンドウにコンテンツを流し込むか…

基盤:blank っていうページがありましたよね。about:blank 。あれとかそのためにあったりして?

開発:about:blank 開きますね。で、これの document をどう参照するかですが…

開発:おっと、JavaScript って関数の定義は後で書いても良いのか!便利じゃのお。

開発:ん?いつも使ってるdocument て、window.document の略じゃ無いんだろうか?て事は、新しく開いた window のドキュメントに普通に write すれば良いような気がする。自分で作った window なんだから人に咎められるようなことでは無いよね。つまり、これでイケるのではなかろうか?

function jpop(ahtml){
  jwin = window.open("about:blank", "jpop","menubar=0,width=200,height=100,top=100,lef=100");
  jwin.document.write(ahtml);
}
function uee(info, tab){
  jpop("Jump to ancestors in " + surl2ahtml(info.pageUrl,""));
} 

開発:これでいかがでしょうか?Go!

基盤:大当たり。

開発:うーんしかし、開くのが遅いね。1秒くらいかかってる?

基盤:まあ、テスト用の突破口だと思えば。それに、これをずっとjQueen用のミニブラウザだと思えば。

開発:そうですね。原理的にはできた。では、残りのぶぶんもくっつけてと。

* * *

開発:生成したウィンドウに送り込んだHTMLにはマウスイベントに対する反応が含まれているのですが、残念ながら、おそらくセキュリティ上の制約で、何かのオプションを付けないと inline event は動かないよ、ということを言っていますね。この方法は無理な感じ。やはり、何か存在するURLを指定して開くのが良さそうな気はします。今日はこれにて撤収。

基盤:まあ、1日目にしてはだいぶ進みましたよね。

--
2020-0615 SatoxITS

2020-0616 追記:この件は、extension のディレクトリの下にあるリソースを可視化する設定("web_accessible_resources")があり、このディレクトリにHTMLやJavaScriptを置いて参照できることがわかったため、解決しました。

メモ帳はApple Notesに決めました

社長:わたしのメモ帳はApple の Notes にすることに決めました。もともとiPhoneでは使っていたのですが、デスクトップでもNotesにします。

社長:まず立ち上がりが1秒足らずと高速。テキスト入力がサクサク。画像がドラッグ&ドロップで扱える。それとMacとiPhoneで暮らしていますので固定とモバイルで共有が簡単。そして、月額130円50GBのiCloudのストレージがスカスカだからです。

基盤:どうせスカスカならスクリーンショットもiCloud の Notesに叩き込むと良いかもですね。

社長:いや、スクリーンショットの送り先にNotesは指定できないんですよ残念ながら。あと、iCloudに保存するのは遅いし、間違ってiPhoneに同期とかしたく無いですから。一方で、iPhoneで撮った写真をサクッとノートにして、それをすぐにデスクトップからも見えるというのは大変便利です。

社長:画像にメモをつけて保存したり、フォルダに整理したり、拡大縮小プレビューができるツールとして、Notesはとても使い易いことに気付きました。なので、ローカルディスク上(On My Mac)上のノートフォルダを作って、そこでスクリーンショットを管理することにしました。

社長:Notesへの画像ファイルの張り込みや取り出しはドラッグ&ドロップでサクサクだし、無段階で拡大縮小できるとか、動画の再生もその場でできるとか、とても気に入っています。取り出したファイルの日付が保持されているのもありがたい。まだ有効には使ってはいませんがPDFをインラインで表示してくれるツールというのは初めて見ました。

社長:残念な点も多々あります。たとえば印刷がノート単位でしかできないこと。これはMailにも言えることですが、せっかく複数を選択できるのに、それらをまとめて印刷(PDF化)できないのが残念。張り込んだ画像(アタッチメント)については、画像ファイルの属性をデスクトップやファインダーでやってくれるように表示できないことが残念です。そういうモードとか、コンテクストメニューがあると良いのですが。張り込み画像だけ一覧するビューがあって、これも便利なのですが、やはり属性情報が表示されない。それと、アタッチメントをクリックしたらそれを含んでいるノートに飛ぶとかして欲しいものです。

社長:おやおや?ノートを Small Images表示にすると、一部のファイル形式はサイズ情報付きになりますね。いまやってます中なんですかね。面白い過渡期を目撃してしまいました。パシャ。是非、デスクトップでのアイコン表示のように、日付情報もつけて欲しいものです。

社長:もう一つ残念なのが、ノートをギャラリー表示にした時の背景です。背景が真っ白でつまらないというか、各ノートに背景色が無いというか薄いから、メリハリが無いというか、どうも生気にかけます。

白装束的なNotesのギャラリー背景

社長:それで、ギャラリーの背景を変える方法を検索したのですが、以前の記事に背景はNotesアプリのフォルダにある画像ファイルだからそれを置き換えれば良い、とありました。でも現在の版ではそれは無いのです。

基盤:この、Notes.app のリソースの下にある CSS がそれっぽいですね。

MacMini% ls -l /System/Applications/Notes.app/Contents/Resources/pad.css
-rw-r--r--  1 root  wheel  2318 Nov 10  2019 /System/Applications/Notes.app/Contents/Resources/pad.css

基盤:背景を指定しているのはここでしょうか?

body {
    margin: var(--margin-top) 14px var(--margin-bottom) 19px;
    padding: 0;
    font: @[FONT_SIZE]px @[FONT_NAME];
    word-wrap: break-word;
    line-height:1.35;
    height: 100%;
    color: -apple-system-label;

    /* Notes from Mail can have a bgcolor set in the HTML, so override it to a clear color */
    background: rgba(0,0,0,0) !important;
}

開発:各ノートの背景の話のようにも見えますね。ただいずれにしても、これをいじれるといろいろ面白いことができるかもしれません。

基盤:ただ、/ って read-only で mount されてるから、rw でマウントしなおさないと。でもちょっと怖いなー。なんか壊したら当社の業務停止しますからね。

社長:来週くらいに新しい iMac が来ますから、それからにしますかね。この MacMini はいびられ役として余生を過ごすのかな。

--
2020-0614 SatoxITS

jQUEEN 計画

社長:帰りました。

経理:酒くさいですね。

基盤:今日は例のタイ料理ですか?

社長:いえ、あそこはお休みでした。日曜がかき入れ時というような店ではないのでしょう。で、斜め右50m位のところで白いのれんが揺れてたのでそちらへ。

社長:飲んでて気づいたのですが、いわゆるハッピーアワーでした。昼間はずっとハッピーなんですって。アルコール半額ですよ。これ、やばくないですか?わたしがかねてよりかくあるべしと思っていた世界が徒歩7分の場所にあったのです!

開発:その店の場所ってもしや?

社長:そう思って店長さんに聞いたら、昔つくば出身のお相撲さんがやってたちゃんこ屋さんのあった場所だったんです。

開発:就職したての頃は結構通いましたね。

社長:それで飲み食いしながらiPhoneでうちのサイトを眺めてて、思いましたね。いよいよその時が来たかなって。

営業:廃業ですか?

社長:いえ。JavaScriptだけでコンパクトなブラウザを作ったら自分の好きなようにいじれて面白いだろうなと思ったんです。で名前をどうしようかと考えていたるのですが「jQueen」 が良いかなと。

基盤:何か不遜な感じのネーミングですね。

社長:当社イメージカラーは Royal Blue ですし。陰ながら全英女王の応援もしています。毎日ひと缶、SUNTRY の Gokuriとか。

開発:Monzillo で行くと言う話ではなかったでしたっけ。

社長:昨日の UEE からピンと来てしまっていたのです。Quick URL/Unified/Universal Explorer Express みたいな。どんなブラウザにも寄生して共通のシンプルなUIを提供する、それと当社の独自機能のUIを制御する、そういう感じです。

開発:正直、Mozilla のコードを見たり、ちょっといじったりして、これはちょっと方向が違うかなとは思っています。少なくとも最初に飛び込む入り口では無い。開発作業のターンアラウンドも長い。JavaScript だとゼロ秒台ですからねぇ。

社長:ただ、全てのサイトにjQueenが居るように見せるには、ブラウザの援助は必要かなと思います。ひさしを借りて母屋のっとり計画(笑)

開発:そのあたり、client side CSS のサポートにしても、どのブラウザもイマイチサポートする気がなさそうな気配を感じます。どうやら最近は XMLHttpRequest とか WebSocket というものが普及しているようなので、これを使って独力でという可能性もありかなと思いますね。特に WebSocket は要するに Socket のようですから、HTTP以外でもなんでもできちゃうかなと。現行の技術を使い倒して多機能プロキシサーバを作るというのも面白いと思います。

基盤:jqueen という会社はありますね。まあでも、業種が全然かぶらないから良いのかな。

社長:なんとなれば GjQueen でも良いです。あ、そうしようかな。GJ。おや、.win なんていうTLDがあるんですね。面白いから取ってみよう。ぽちっと。でも、ドメイン取るのももう飽きたかな。

経費:会社の製品やサービスに繋がらない名前は経費と認められない可能性がありますね。

--
2020-0614 SatoxITS

UEE - URL Elevator Express

URL Elevator express


[ 上のURLの一部をパッと取り出せます ]

開発:例の file URL の中の上位のパスにジャンプする機能ですが。

社長:ブラウザの開発環境もできたし、そろそろまじめに作りますか。

開発:いえ、やめようと思います。

社長:あ、そうなの。なぜ?

開発:これは基本、file や ftp に限らず、URL全般に適用したほうが良いと思い直したんです。やることは同じなんですが、やる場所が変わります。といいますか、やる場所の選択肢が増えます。

基盤:でも、やる場所によって使える言語が変わりますよね。

開発:文字列の変換は同じ、表示の仕方だけの違いですから、本質的には単純ですよね。

基盤:多分本命は苦手の JavaScript ということになりますが。

開発:ゼロからのスタートです。で、まずモックアップから。やりたいことは、こういうのを自動生成することです。

開発:で、これを JavaScriptで書くとこうなる。これ、私が人生で初めて書いたJavaScript です(笑)

開発:で、一般化するために現在のページのURLを取ってくるわけですが、たぶん document.url とかじゃないかと思ったんですが、undefined になる。で、仕様を調べると document.URL なんですね。惜しかった。JavaScriptが case sensitive なんだということを初めて明確に理解しました。

開発:で、これを / を区切りに分解して、アンカーを挟み込みながら結合するわけです。そういうのは一般的に split / join というような名前の関数に違いありません。で、javascript split join でググるとたくさん例が出てきます。由緒もあるのでMDNにあるsplitのガイドから。

開発:余計なことが書いてないのでわかりやすいですね。それでちょっと変えてリロードしたら、何も出なくなりました。追加した部分で write() を wirte() と書き間違ってたんたんです。ステートメントの逐次実行即出力じゃないようです。また文字列の連結をとりあえずCと同様に並べて書いてしまったのですが、+ で連結することがわかりました。あと、JavaScriptのコメントがCと同じで /* */ だということがわかりました。

開発:for文のシンタックスがCと同じだということがわかり、少し驚きました。C風の言語は多いですが、for の構文は崩されてしまています。また、値を文字列にするのは toString() じゃないかと思ったら当たりました。

開発:ぬるぽは nil かなとおもったら null でした。

開発:ということで、文字列処理については雰囲気はつかめました。表示部分をちょっと整えて一旦休憩します。

基盤:前回、C++で同じ処理を実装する時には、もっと時間がかかってましたね。

開発:あれは、C++にsplit / join がなかったことと、自作の生文字列 split / join と Mozilla のストリングクラスとのやりとりがよくわからなかったからです。

開発:ここまでのところ、C言語に慣れている人間には、ごく普通の言語だなという印象です。ただ、タイポが多い自分としては、未定義名とか実行するまでわからないのは、ちょっと厳しい感じはしました。

社長:変更するたびに100%のカバレッジでのテストが必須なんでしょうかね。いや、昔少しだけ Google Apps Script (GAS)で遊んだことがあって、あれはその点が結構問題でした。GASとか、何時間も走らせるわけですが、えらく時間がたったあとに初めて実行するステートメントで、構文エラーですって。それまでの処理がパーになるわけです。実行前にそういう静的な検証をしてくれない処理系って、私には無理ですね。

開発:そういう意味では、ちゃんとユニットに分解してユニットテストしましょうね、っていう事かもしれませんけどね。

* * *

開発:それではなんかアクションを入れてみたいですね。その前にちょっと整理。

開発:マウスカーソルをそのパスに置いたら、その部分のURLがポップするっているのをやりたいですね。まあ、ステータスバーに出てるからいいじゃんていう話ではありますけど。マウスポインターに反応して応答するというのをやってみようかと。私が見覚えがあるのは、onMouseOver() というやつです。こんな感じ。

開発:反応しましたが、これじゃ使い物にならないですね。ただこれでわかったのは、HTMLは case insensitive だけど、JavaScriptはcase sensitive だということです。そりゃそうですね。大文字小文字を区別しない言語とかOSとかファイルシステムとか、ついでに検索エンジンも、アンビリーバブルです。

開発:じゃあ alert じゃなくて何が適切だろうかというと、ポップアップ系はユーザがなにかポチらないと消えないのでダメですね。

* * *

開発:いやはや、しばらく検索してましたが、ポップアップの仕方はすごい色々あるみたいですが、それはまあプログラム書けば何でもできますよね的な感じはします。納得感のあった一例は主にHTMLとCSSで見せ方を記述して、JavaScriptではその可視性だけを制御するという、w3scoolsの例です。

開発:それにしても感じるのは、JavaScriptで書いたページが環境依存だということです。少し昔の解説ページの例題が現在のブラウザで動かないとか。あるいは、以下には今作成中のスクリプトを貼り付けてありますが、WordPressでは動かない。編集モードやブロックのプレビューでは動くのですが・・・

Ancestors v.10


(Jump to the ancestor)

開発:と思ったもの、/* */でコメントアウトしつつ匍匐前進したら、JavaScriptの配列の使い方が間違っていたことがわかりました(笑)。splitした時に配列がnullで終端してるものと想定してしまったC言語育ちの悲しい佐賀でした。(実際、ゼロになっている場合が多いからタチが悪いわけですが)。

開発:ということで、どうやらWordPressのページには特に問題なくJavaScriptを貼り付けられる模様です。となると、何もプラグインとか使わなくてもかなりのことが出来そうな気がします。

開発:ただ、WordPressのHTML編集モードはきわめてしょぼい。まあ、これもHTML編集プラグインとかあるのかもしれませんが。デフォで提供されている「HTMLとして編集する」が寒すぎるんですよね。世の中には結構出来の良いHTMLエディタがあるのに、なんでWordPressのようなメジャーなフレームワークにそれがデフォルトで入ってないのか、理解に苦しみます。

開発:それはそうと、次に知りたいのは、JavaScriptで「現在ポイントされている部分が何であるか」をどう読み出すのか?です。ポイントされている部品は決まっているので、それぞれが「自分がポイントされている時のアクション」を記述することは簡単ですが、それはダサい。でも調べるのが面倒になってきました。指されるほうは onMouseOver とかで自分の上にマウスが出入りした事を知っていますから、onmouoverのイベントに引数を渡せれば、自分だよ、ということを知らせることができるわけです。ですが検索すると、ずばりそういうQ&Aがありました。

Determine which element the mouse pointer is on top of in Javascript

開発:この中で、後続のコメントでobsolete扱いされてますが、XY座標から何がさされているか知る方法として、document.elementFromPoint(x,y) というのが紹介されています。で私はこのQ&A本体よりもその例の中で使われている event.clientX, event.clientY というものにおーっと思ったわけです。ああ、Google の reCAPTCHA もこれ使ってるのかなって。

* * *

基盤:それはそうと、私はこの、今年に入ってからだと思いますがウエルシアで山積みイチオシの「辛辛魚」に非常み興味を持ってまして、ゲホッ、大変面白いコンセプトのカップ麺だなと。ズズッ。

社長:これは、スープを最後まで飲もうかどうか検討する価値のある品ですね。ただ残念なことに、この魚介粉がいかにも安物。ズズッ。もしちゃんとした花かつおでも使ったら、その味はいかばかりかと期待してしまいます。ゲホッ。

開発:辛さと旨味が不可分に存在しているという食材の例は多いですね。食われるほうは旨くありたいなんて意図は無いんでしょうけど。ズズー。

* * *

開発:それでは続きを進めたいと思います。で、上のv.10からコピーして来たわけですが、そのままでは動かなかったわけですよ。なぜかと言うと、CSSにもJavaScriptにも名前のスコープが無いからです。名前がぶつかったら最初の人に飛んじゃうんですね。なのでしょうがないから名前を全部11に書き変えました。

Ancestors v.11


(Jump to the ancestor)

基盤:プログラミングの分野で育った人間にはちょっと想像がつかないですね。マクロですか?BASICですか?って。

社長:それ、ずっと不思議だったんですけど、HTML5でも同じなんですかね?

開発:さあ。そもそもの出発点からそうだったっていう時点で、なんかもう価値観が違う人たちなのかなって思うじゃ無いですか。プログラム言語の世界では太古に完成してたやり方を無視して劣化版の再発明ですか。いや、スコープとかって確かに処理には邪魔臭いかもしれませんけど、それをいったらCSSの上書き上書きで一体何が最終的に採用されてんだかワカメっていうあれは何なんだと思いますね。だもんで、WordPressで指定したクラスのフォントサイズを変更するのって、今の私には無理ゲーですよ。

基盤:何かの雇用対策かもしれないですね。コロナだし。

開発:それはそうと、私のJavaScriptに関する疑問は、このElement.innterHTMLの例を見て氷解しました。シンブルで、全てを物語っているような例題です。それで、今日のお題はこのような解答になりました。

Ancestors v.12 -- Exp. Elevator


[ ↑ お望みの階層へ直行します ]

社長:なんだ、そういう事だったのですか。長年の疑問が解けました。とてもわかりやすいのですが、JavaScript って昔からこう言うものだったのでしょうかね?

社長:ところで、HTMLを書き換える方法はわかったのですが、CSSを動的に生成するってできるんでしょうか?

社長:あと、JavaScriptでマンデルブロー書いたら面白そうですね。ベンチマークにもなりそう。

社長:あと、なんちゃってreCAPTCHAも作ってみたいですね。あれ、特許に触れるのかな?

開発:今日できたものを少し整理しまました。はじめての JavaScript、記念写真をパシャ。

urlexp 2020-0613 コード

基盤:Creative Commons てプログラムコードとかにも使うもんですかね。

開発:さあ。単なるノリです。

社長:え?CCって当社クリエィティブコモデティの意味じゃないの?

営業:それなら CC BUY ですよね。

--
2020-0613 SatoxITS

世界で一番カンタンなDNSサーバ

基盤:ローカルなホストに名前を付けてアクセスしたいのですが。特に仮想マシン。

開発:/etc/hosts に書くのが一番簡単だと思います。

基盤:どのマシンでもその名前を共有したいんですよね。

開発:DNSで配ると良いと思います。

基盤:DNSサーバ立ち上げるのってかったるい気がしますが。

社長:うち的には DeleGate でやるのが一番カンタンですね。サーバの起動はこんな感じ。

delegated -P53 SERVER=dns DNSCONF=domain:p RESOLV=file

社長:それで /etc/hosts にこんな風に書く。

192.168.10.201 u201

社長:そうするとみんなにこう知らせてくれます。

u201.p のアドレスは 192.168.10.201 ですよ。

基盤:そうですか・・・ 3分で構築完了。アクセステスト。まずはMacから。

基盤:つぎはUbuntuから。

基盤:うーむ、世界で一番カンタンな方法かもしれませんね。

社長:クライアントホストのOSごとにDNSサーバの設定方法が違うので、そこがちょっと面倒と言えば面倒ですけどね。

基盤:そのへんの違いを吸収する共通の設定ツールを作ると良いかもですね。

社長:やりたいのはすごく単純な事なのに、同じことをやるのにOSごとにやり方が違うってホント疲れますからね。そういう全OSに共通の設定インタフェースを規定するのが良いかもです。というか、SNMPとかMIBってそういうものだったような気がしますが。

開発:あと、外部DNSへの中継サーバも兼ねるように、RES_NSを設定しておくと良いですね。

delegated -P53 SERVER=dns DNSCONF=domain:p RESOLV=file,dns RES_NS=192.168.10.1

--
2020-0613 SatoxITS

長期記憶力200%増(当社比)

経理:アマゾンからSSDが届きました。

社長:結局2.5インチのSATAドライブになったんですね。

基盤:それなんですが、240GBのPCI直挿し基板がかっこいいと思って検討したのですが、どうも売ってる製品の評判が芳しくない。ちゃんと性能が出ないとか。で次に M.2 スロットのを検討したのですが、このレノボ機の30mmスロットに入るものは無いようです。そうこうするうちに、サムスンの2.5インチの500GBが7千円というのを見つけてしまいまして。レノボのドライブ用のベイはポッカリ空いていますし。

開発:2.5を中でプラプラにしとくのは何なんで、3.5ベイのドンガラが必要ですね。

基盤:あのドンガラがすごく嫌だったんですが、なんか可愛いのが売ってたんですよ。これです。これで決心がつきました。

開発:あれ?「土曜日にお届け済み」って、今日は金曜日ですよね。

経理:最近のアマゾンはなんか変ですね。ていうか、なんで曜日しか書いてないんでしょう。そういう一方で、こちらには曜日が書いてない。

社長:日付情報は非常に重要なので、冗長なくらいに表示して欲しいものです。

開発:それで940円もするこのドンガラを買ったと。

基盤:だって、なんだか可愛いじゃ無いですか。ほら。

開発:一回装着しちゃったら見えないのに。

基盤:内面から美しく、です。

基盤:ということで、増設前に記念写真をパシャ。

基盤:されてそれでは再びレノボ君の蓋を開けて、あのドライブのスロットあたりこのこを突っ込みましょう。バコ。ああここがそれのようです。この安っぽいペラペラのプラって埋め草?捨てちゃっていいんですかね。

開発:うーん、それにしては何らかの機能を持ってそうというか。ねじ穴みたいなとか。そもそもこの赤い目印というのは重要な機能だよね。これにそれを納めて元の位置に戻すのでは。

基盤:なるほど。確かにネジ止めすべきみたいなところにこのでっぱりピンがちょうど刺さりそうですね。しかし、こいつふにゃふにゃしているわりには、最後の抵抗みたいな。。。

開発:それって、一方の長辺を納めてからじゃなくて、一方の短辺を確定してからにしてみてはどうだろう。

基盤:ぐいぐいっ。おー、はまりました。ではこれを元に収めると。どっち向き?ああこっちか、この赤い目印はやはり役に立ちますね。それで配線はと、、、信号線のコードと電源線のコードが別れてるんですね。

開発:先客のDVDドライブの配線をみると、SATAの口がここで、電源の口がこれじゃないですかね。

基盤:のようですね。SATAのL字型のジャックって、間違えにくくて良いですね。薄暗がりの老眼でも手探りでなんとか・・・挿さりましたました。で電源はたぶんここで・・・挿さりました。

開発:しかし、外付けのUSBなら何にも考えずにぐさっと刺すだけなのに、やはり内蔵って手間がかかりますね。

基盤:まあそのぶん安くて速いということで。さて、蓋をしめて。ケーブル戻して。電源ON!

基盤:あれ?見えないですね。

開発:まあ、フォーマット済じゃ無いんでしょうね。XPの時代だと、PCの管理から入ってフォーマットしてました。

基盤:これですね。Widowns 10にもあるようです。

基盤:ディスク1とか言う正体不明なやつ。初期化されてません、未割り当てと。

基盤:お前何者だ・・・ ああ、サムスンですね。Samsung SSD 860 EVO 500GB。

基盤:で、こいつを初期化すると。

基盤:GPTって何ですかね?

開発:さあ。デフォルトお勧めに従っとけば良いのでは。

基盤:OKっと。おお、「初期化されていません」が「オンライン」になりましたね。

開発:これを初期化と呼ぶのか… 初期化されている=オンラインなのか… どういう意味で初期化なのかよくわかりませんね。まあ、初期化されてないとオンラインにはならいんでしょうけど。

基盤:では中身をば。

基盤:ボリュームってなんですかねこれ?

開発:パーティションの事じゃ無かったっけ?

基盤:よくわからないけど、お勧め?のシンプルボリュームで。

基盤:ここからウィザードの開始なのか。出てくるの遅すぎでしょう。ウィザードって普通、初めから最後まで世話してくれるやつですよね。

基盤:ボリューム満タンでよろしく。

開発:ここはその昔ならFATにするかどうか迷ったとこですね。今時だとNTFSもデフォでMacとかUnixで読めるのかな。まあWindows内蔵だし迷わずNTFS。

開発:ボリューム名は、これはVM用SSDだ!とわかりやすくしときましょう。

基盤:じゃこれで完了します。ていうか、意味もなく無段階ですね。初めからこのフォームだけ出してくれればいいのに。完了をぷちっ。

基盤:やってるやってる。

基盤:やってるやってる。

開発:できましたね。なんか昔とやり方が変わらない感じだけど、最近はもっとスマートなウィザードとか居ないのかな?

社長:MacOSのディスクユーティリティのようにあって欲しいものです。ウィザードってほどの複雑な作業でも無いし。

基盤:OKですね。

基盤:さてエクスプローラでみてみましょう。。。あれ?Fドライブ、出てこないですね。

開発:うーん。とりあえずリブートしてみましょうかね?

* * *

基盤:かれこれ10分。くるくるしてるだけで立ち上がらないですね。何か壊れましたか?

開発:うーん。とりあえず電源OFF・ONしてみましょうかね?

基盤:ぷち。ぷち。・・・

基盤:立ち上がりました。ではさっそく、エクスプローラで。

開発:おお、出ましたね。めでたしめでたし。

基盤:なんだかんだで1時間がかりでした。

社長:Macなら5分なのにね。

基盤:でも、Macの筐体の開け閉めは半日がかりですよね。その上開けたら最後保証範囲外とか。

開発:それではMacからRemoteDesktopでつないで始めましょうか。

基盤:フィリップス 君の入力をHDMIに切り替えっと。・・・ あれ?シグナルが無いって。MacのHDMIをUSB-Cから出してみますかね。・・・ おかしいな。Macをリブートしてみますか。・・・ あれー、どういうこと?Macにリモートログインできるし元気に動いているのに。RemoveDesktopとの関係ですかね?

開発:うーん。とりあえずフィリップスを電源リセットしてみてはどうでしょう?

基盤:このスイッチ、本当に意味不明なんですよね。さわ、さわっと。立ち上がり遅いし!あ。Mac画面出ました。

開発:モニタ出力が繋がらなくなったらフィリップス君を電源リセット。これ、わが社の鉄則に追加ですね。

基盤:それではようやく、いつものシンプルベンチマーク行きます。

基盤:読み書きとも450MB/秒以上出ますね。スペック通りです。

開発:仮想マシンをSSD to SSD でエクスポートしてみましょう。

基盤:えい。

基盤:実に淡々と375MB/秒でコピーしてます。

開発:ただ気になるのは、読み出し側の旧SSD(Cドライブ)と、書き込み側の新SSD(Fドライブ)のアクティビティの違いですね。単純コピーなので読み書きどっちも375MB/秒ですが、読んでる方(C)のディスクアクティビティが15%程度なのに、書いている方(F)は95%位いってます。

基盤:Flashの読みと書きの違いですかね。それともCがM.2なのに対してFがSATAだからとか。

開発:まあ、一応SSDとしてのフル性能は出てるし、実際にはうちのVMはほぼRAMだけで動作しますから、この性能が気になるのは時々しかやらない起動・停止と、アーカイブする時くらいですけどね。

基盤:まあ、私はそこが気になっているわけですが。

--
2020-0612 SatoxITS

Vivaldiと過ごす四季

社長:Vivaldiからアップデートのお知らせが来ました。

基盤:ブラウザのアップデートの知らせが楽しみとか、そもそも更新内容を気にした事なんて山田かつてないですね。

社長:さっそくインストールしましょう。インストールしてぷち、リスタートぷちっと。あ、Vivaldi も終了して起動すると、ウィンドウ回復されるのがデフォなんですね。うーむ、これで決定的にOperaともお別れですね。

社長:じっくり味わいたいと思います。なるほど、NotesもVivaldiでいいかもしれないな… あ、でもMac Notes のようにドラッグ&ドロップで画像を張り込めないのか…



The stable release of Vivaldi 3.1 has arrived!

Get the full story by visiting the Vivaldi blog (vivaldi.com/blog)

Changelog since Vivaldi 3.0 (1874.38)

[New][Menus][Settings] “Configurable Menus”
[New][Notes] Full page “Notes Manager”
[Address bar] Mic and Camera permissions are not triggered on some sites VB-65013
[Address bar][Search field] Can’t use arrow keys to select suggestions when Num Lock is on VB-52978
[Address bar][Sync][User profiles] Profile button invisible when signed in VB-59399
[Address bar][URL field] Blinks when closing the typed history with Esc VB-64150
[Blocker] Add support for WebRTC blocking VB-68017
[Blocker] Importing locally stored tracking/adblocking lists fails VB-66311
[Blocker] Reload page when protection level is changed VB-68179
[Blocker][Themes][Settings] Invisible values in drop-down menu with dark themes VB-68316
[Bookmarks] Default bookmark folder names should use the GUI language VB-67384
[Bookmarks][Menus][macOS] Bookmark does not open in new tab via top menu VB-67239
[Chromium] Upgraded to 83.0.4103.98
[Clock] Localized dates wrongly formatted VB-65948
[Clock] Missing month and year in PT-BR short date VB-67686
[Crash] On Google Meet VB-67513
[Developer Tools] “Shift+I” opens a new DevTools instance VB-63935
[Extensions] Audiocapture popup shows when using Loom VB-68170
[Extensions] Icon is not shown if extension has no page or browser action VB-60321
[Extensions] Loom gives error message: “Allow access to your ..” VB-67033
[History] Date being formatted as “maio, 27 2020AM” VB-67973
[Keyboard] On the website krunker.io, when I press the key ESC nothing happens VB-67430
[Keyboard][macOS] ⌘T should open a new tab when no windows are open VB-66162
[Media] AV1 videos fail VB-64648
[Media] Doesn’t always leave full screen mode after closing a full screen video VB-62177
[Media][Linux] Update proprietary codecs to 81.0.4044.138
[Media][Windows] Add proprietary media availability detection and warning to users running Windows N-versions VB-62670
[Menus] Alt-key plus key does not open sub-menus VB-65700
[Menus] Horizontal menu does not get check mark in menu when enabled VB-67974
[Menus][Crash] The browser can crash when closing main menu VB-67985
[Menus][Extensions] Missing context menus VB-29932
[Notes][Panels] Cannot add address VB-68261
[Notes][Panels] Edit Note Address via right-click context menu VB-68354
[Panels] Reload causes the main page to reload instead of the web panel VB-64273
[Panels] Toggle is not shown for panel at the right side VB-63240
[Regression] Dead bird shown without crash on closing VB-63880
[Regression] Slow page load performance VB-67537
[Regression] Toolbar button ellipsis does not show VB-66335
[Regression] YouTube full screen not fully left after Esc VB-67651
[Security] Certain peripherals can be detected by a page even if it cannot use them VB-67897
[Session Manager] Does not open tabs when opening session VB-62494
[Settings] Add Mouse Gesture command selection drop down broken VB-67265
[Settings] Columns in the password manager are misplaced VB-65376
[Settings] Copy list origin doesn’t work VB-68041
[Settings] Modal view cannot be dismissed by outside click in settings popup VB-67365
[Settings] Move Updates into General settings category VB-67185
[Settings] Sort-able list keyboard navigation not working in settings popup VB-67351
[Settings] Window is blank when opened from private window VB-65717
[Settings] “Suggestions in Address Field” cannot be changed from privacy settings VB-67353
[Settings][Status bar] Play Image Animation option order is mixed up VB-67906
[Settings][Win][Linux] Enable “Remove tab spacing in maximized window” by default VB-63069
[Settings][macOS] Make silent auto-update ON by default: can be disabled in settings VB-65832
[Settings][macOS] Move “Enable JavaScript from Apple Events” to settings VB-45484
[Spatial Navigation] Better handling of images inside links
[Sync] Make various UI settings sync-able VB-66172
[Tabs] Cannot reach close buttons in vertical tab stack tool-tip VB-58734
[Tabs] Right-click Close Tab Fails in a Tab Stack VB-67041
[Tabs][Crash] While trying to close tiled tab VB-56868
[Tabs][Windows][Linux] Gradient color show behind tabs VB-67174
[Tabs][macOS] Closing the last tab anytime during/after full-screen also closes a tab in the next active window VB-67389
[Themes] Accent color not fetched from favicon on some sites VB-66634
[Themes] No visual indicator on selected Light and Blue background colors VB-64765
[Themes][Regression] Not enough space for speed dial background names VB-65908
[UI] Only focus-able elements in popup should be focused via Tab key VB-66786
[UI] Partial button in blocked cookies dialog VB-59241
[Windows] Use native system for geolocation: enable first in Windows settings VB-65329
[Windows] Visual glitch in tab with audio icon VB-63898

--
2020-0612 SatoxITS

Googleアカウント停止されました

社長:このような恐ろしい通告が来たのですが。

社長:これ、正式契約済ませてますよね?支払い確認と利用開始のお知らせメールを見た記憶があります。一体どういうことでしょう?Googleってこういう会社になっちゃったんですか?グレちゃったんでしょうか?

経理:至急調べます。

社長:実際、メールを送ってみると、そんな人はここには居ませんて返ってくるし。

社長:Gmailには入れなくなってるし。。。とても悲しいです。事業継続の危機です。

経理:… 原因がわかりました。先日当社の .jp と .com のGoolgeアカウントを同時に作成したのですが、.jp のほうの支払い情報設定作業が抜けていました。管理コンソールに入るとこのように。

社長:おーっと、Googleが赤色を使ってくるとは。ここぞの時の警戒色ですね。そうですか、じゃすぐに設定して支払いを。

経理:はい、急いで。あー、これの入力、郵便番号からオートコンプリーションとかしてくれないんですよね。。。ヨドバシの会員登録なんて建屋名までずっとクリックでしたけどね(恐怖!)。。複数ドメインを一括管理できないんですかね。。。カチャカチャ。ぷち。カード登録?あー、そういえばおしとやか銀行のカードはGoogle方面に通らないんだ。メインバンク更迭ですね。カチャカチャ。ぷち。ぷち。ぷちっ。はい、設定しました。じきに開通するかと。

社長:そうですか。早めに気づいてよかった。しかし、止められている間についたメールって消えちゃうんですかね?

経理:支払い確認メール来ました。

社長:所要数分でしたね。んー、Gmailログインできました。あー、やっぱり、アカウント止められてる間の受信メールは残ってないです。そりゃそうですよね。なんせ、不達メールを返してしまってるわけですし。んー、GoogleDrive のほうもちゃんと繋がりますね。OK。業務復旧です。

経理:不覚でした。基盤としてのロールに気を取られていて。

社長:いや、なかなか面白い経験をしましたね。Googleはタダだという残像が消えました。緊急対応の良いシミュレーションにもなったかと。

--
2020-0612 SatoxITS