@kyanny's blog

革命は金銭ではない - 孫文

New Evernote for iOS: the elephant is back

CEO 交代からずっと伝えられてきた「基本に立ち返る」改善を経て、ついに Evernote アプリの新バージョンがリリースされた。

ベータプログラムに参加申し込みしていて、招待メールも受け取っていたけど、時間のある時にやろうと開封を後回しにしていたら招待リンクの有効期限が過ぎてしまって参加し損ねたのだった。もったいないことをした。

新バージョンの感想

  • 動作は速くなった。特にノートを開くとき。以前は内容の多寡に関わらずタップして数秒待たされたのが、いまは一秒以内に表示される感じ。検索も速い
  • ただし、おそらく Web 版との同一化の副産物だと思うが、挙動がいかにも Web アプリっぽい感じになった(画面描画時のリフレッシュされる感じとか)。どの技術で作られているのか気になる
  • UI はまだ粗さがめにつく。文言のレイアウトや余白がずれてたりとか
  • そして UI も、先入観があるせいかもしれないが、やはり Web アプリにありがちな薄っぺらさがみられて少し残念
  • 象は生まれ変わって戻ってきたのです。 思わず原文ブログのほうの表記を確認した

余談

正直これで復権するとは思えないが*1、 二度の CEO 交代を経て復活を目指す Evernote であるにもかかわらず、やっぱりおれの中では「フィルリービンの会社」という印象が薄れない。

なぜここまではっきり覚えてしまっているのかよくわからないが、さぞかしカリスマな経営者なのだろうなという予感がする。暴君でもありそうだけど、たぶんおれはああいうパッションあふれるビジョナリーにめっぽう弱いのだろう。機会があれば(ないとは思うが)彼の下で働いてみたいのもだ。

*1:Notion のことを言っているわけではなく、 Evernote のコンセプト自体がマニアックに留まるのではないかという話

Microsoft Authenticator と iCloud バックアップ

勤務先の Office 365 アカウントや各種 SaaS アカウントの二要素認証のために Microsoft Authenticator を使っていて、バックアップを有効にしたときの覚え書き。

やり方や注意事項

Back up and recover accounts with the Microsoft Authenticator app - Azure AD | Microsoft Docs

iCloud アカウントについて

  • 個人所有の Microsoft アカウントが必要
  • iOS の場合、 iCloud をバックアップ保存用ストレージとして使うので iCloud アカウントも必要、とある
  • これは Microsoft Authenticator アプリをインストールしている iOS 端末(iPhone)でログインしている iCloud アカウントを指す
  • つまり Microsoft Authenticator アプリ内から iCloud アカウントにログインしたりはしない。というかどの iCloud アカウントを使うか選ぶ余地は無い
  • バックアップを有効化するために個人所有の Microsoft アカウントを追加したらほかに何もせずバックアップが有効になった
  • iPhone の設定から iCloud ストレージ利用状況を確認すると、 Microsoft Authenticator がストレージを使っていることがわかる

個人所有の Microsoft アカウントのワンタイムトークンについて

  • バックアップのために個人所有の Microsoft アカウントを Microsoft Authenticator アプリに追加すると、そのアカウント用のワンタイムトークンも表示される
  • しかし個人所有の Microsoft アカウントの二要素認証は他の 2FA アプリ(Authy)に登録済みだった
  • Authy と Microsoft Authenticator で、表示されるワンタイムトークンが違う
  • Authy は6桁の数字
  • Microsoft Authenticator は8桁の数字
  • これについて上記ページに記載があった。結論、どちらも有効らしい

After you finish your recovery, you might notice that your personal Microsoft account verification codes in the Microsoft Authenticator app are different between your old and new phones. The codes are different because each device has its own unique credential, but both are valid and work while signing in using the associated phone.

  • この説明を読むと、複数の端末にそれぞれ Microsoft Authenticator アプリがあって表示される番号が違う場合を指していそう
  • 異なるアプリを使っている場合も両方有効なのか、桁数が違う場合も両方有効なのかは、明言されてはいない
  • もし片方ダメでも両方試せば良いので問題ない
  • 逆に言うと、両方とも消さずに残しておくほうがよい

Google アプリ

また UI や機能の AB テストでもしているのだろうか。

ここ数日、検索結果からウェブ閲覧してるとき、アドレスバーの右側に「ページを読み上げる」ボタンが出現していた(どんなアイコンか忘れたが、見慣れなかった)。

しかし今日はまた UI が変わって、アドレスバー右は「共有」アイコンに。下部メニューも、ホームに戻るアイコンが中央にあったのが、左右にアイコン位置が分散して中央が空白になった。

f:id:a666666:20200918200724p:plain

読み上げは試さずじまいだったので、惜しいことをした。もう一度遭遇したい。

アイコン位置の変更は、指が慣れなくて使いづらい。共有から Safari で開いたり Pocket に送ったりしてたので、下から上に移動してとても押しづらくなった。ホームに戻るのも、空振りしてしまう。

Go: if err := expr; err != nil { } // initialization statement

戻り値が error 一つの関数を呼び出してエラーチェックする際、以下の二種類の書き方がある。

  1. err := expr で受け、改行し、 if err != nil { } でエラーチェックする
  2. if err := expr; err != nil { } とワンライナーでエラーチェックする

このうち 2 のやり方の呼び方が知りたかった*1

if err := expr; の部分は initialization statement と呼ぶらしいので、 2 のエラーチェック方法は if with initialization statement と呼ぶことにした。

package main

import "os"

func main() {
    err := os.Chdir("/tmp")
    if err != nil {
        return
    }
 
    if err := os.Chdir("/tmp"); err != nil {
        return 
    }
}

でも、 When Should I Use One Liner if...else Statements in Go? - Calhoun.io に倣って? one liner if statement と呼ぶのでも良いかもしれない。

*1:1 から 2 に書き方を変更する際のコミットログメッセージとして

ssh: Too many authentication failures

scrapbox.io

[ssh-add] に4つ以上の鍵を登録している これに該当した。

ssh-add -D で鍵を消すと、試行回数が0になるので解決する で対応した。

事情により鍵を四つ以上登録することは必須なので、 sshd 側で対応すべきではあるが、対処法が分かっていれば大して面倒な作業ではないので。