Posts for: #Upnote

ホットクックのレシピを upnote で書く

2時半に寝て5時過ぎに起きた。それから二度寝して7時に起きた。

今日の運動はレッグレイズ(椅子),腹筋ローラー,腕立て,散歩をした。統計を 運動の記録 にまとめる。

トランクルームの契約

家電を購入すると大きな箱が付いてきて物理的にその置き場所がない。箱を捨てるという戦略もあるが、オリジナルの箱があると引っ越しや売買/処分するときに便利なのでできれば残しておきたい。これまでデスクトップマシンの箱やオフィス備え付けの椅子などをマンションの部屋に保管したりしていたけど、家電の箱が増えてくると邪魔になってきて、トランクルームを借りることにした。面倒なのであまり調べていないが、スペラボ というサービスの屋内型トランクルームをレンタルすることにした。0.7畳で6,450円/月(税込)になる。会社の経費だしこのぐらいの金額ならいいかと思って、朝から内見に行って問題なさそうなので即決した。

ホットクックレシピの公開

ホットクックのレシピをどこかに整理したい。スマホ上でも調理しながら簡単に確認したいとなると web よりもアプリの方がよい。そこで evernote から移行した upnote に書くことにした。実際に調理してみて、デスクトップマシンでレシピを編集・整理して、写真はスマホアプリからアップロードするといった使い方ができる。View shared notes によると、ノート単位で web 公開もできる。試しに次のレシピを公開してみた。ノートブック単位で公開設定して一覧ページがあるともっとよいが、その機能はないみたい。公開リンクを作成する一手間はあるけれど、そんなにレシピノートを書くわけでもないから気にはならない。

ホットクック調理は材料入れてボタン押したら終わりではないか?と思うかもしれない。いや、そうでもないようだ。たしかに材料を内鍋に入れてボタン押したら人間ができることは何もない。だからこそ、ボタンを押す前の過程が大事になってくる。どんな切り方をするのか、素材のサイズはどうか、初期配置はどうか。例えば、豚ロース肉の生姜焼き用を買ってきて、適当に切って3枚4枚重なった状態で投入したらそのままの状態で出来上がった。かき混ぜ棒があるからうまいこと豚肉もバラけるだろうと期待したが、ぴったりくっついているようなお肉をバラかすほどのパワーはないようだ。人間が最初からバラかした状態で内鍋に投入すると、出来上がりのときに豚肉のかたまりがなくなってよいと思う。

あと気付いたこととして、野菜もお肉も素材を少し小さめに切った方がおいしいように感じる。というのは、ホットクックは圧力鍋ほどの火力で調理しない。圧力鍋に慣れていると、少し大きめに切っても原形がなくなって溶けてしまったり、出来上がり時点で原形があっても混ぜたりしているうちに角がとれて、どんどん小さくなっていく。小さくならなくても口の中でとろけるので大きいままでも問題ない。相対的にホットクックはそこまでの火力はないから、小さめで味が染み込むような出来上がりになるため、小さめに切っても原形は保ったままで溶けてなくなってしまうことはない。これは良い悪いではなくて、それぞれの製品の特徴と言えるだろう。ホットクック調理は素材を小さめに切るというのが、いまところ、私が作ったレシピではうまくいっている。ホットクックでは、小さく切った複数の素材をほお張って食べるのがおいしい。

go-ldap への context 導入の考察

go-ldap の issue は subscribe しているので、たまたま initial cut of context support #406 の draft pr のコメントに気付いた。過去に context を導入しようとして途中で断念した残骸みたいな pr になっている。いまの go の api は context を受け取るのが当たり前になっているので確かにほしいというのは理解できる。

代わりに私がやってみようかとソースコードを読んでみた。オリジナルの draft pr は client の interface に WithContext なメソッドを追加しようというもの。go の context の扱いとしてもっとも基本的なもの。それでもよいけれど、net/http の実装はどうなっているのかを調べていたら Request 構造体のメンバーとして context を保持していることがわかった。このやり方は原則のルールに反するものだけど、context を状態として扱わず、限定的な用途にのみ使っている。これは既存の interface を変えずに context 導入をしようという意図があると推測する。この考え方でいくと、go-ldap の Request 構造体に context を保持するように変更する方が既存の API の変更を少なくして net/http の Request も同様にやっているからと説明もしやすいように思えた。

type Request struct {
...
	// ctx is either the client or server context. It should only
	// be modified via copying the whole Request using Clone or WithContext.
	// It is unexported to prevent people from using Context wrong
	// and mutating the contexts held by callers of the same request.
	ctx context.Context
...
}

今日のところは go-ldap と net/http のソースコードを読んで設計をしていた。また明日余裕があったらサンプル実装してみる。

evernote から upnote への移行

6時に寝て8時半に起きた。オフィスで3時前ぐらいまで調べものして、帰ってからも眠れなくてネットしてたら朝になった。

今日の筋トレは腹筋:15x2,腕立て:10x1,スクワット10x1をした。

サンライズ出雲の予約

以前 やまさきさんに教えていただいた夜行列車 を予約してみた。列車は瀬戸と出雲の2つがある。岡山〜東京間は瀬戸と出雲が連結して運行するそうなのでどちらを選択しても同じだと思うけれど、出雲で予約してみた。乗り込む車両が異なるのかな?

三ノ宮(00:11発) => 東京 (07:08着)

  • 特急サンライズ出雲(シングル)
    • 料金券部分 10,460円 (三ノ宮 - 東京)
    • 乗車券部分 9,460円 (神戸市内 - 東京都区内 2月6日~2月9日まで有効)

前回に 専用の予約画面 があることを調査済みだったので迷わず予約を取れた。唯一、面倒なところがオンラインで予約した後に紙の切符を発行しないといけないところ。切符を発行するには緑の窓口・券売機へ行かないといけない。三ノ宮駅にはあるので問題はない。発行には次の3つが必要になる。初めてだから予約後、すぐに駅へ行って発行してみた。迷わず簡単にできたのでこれなら乗車する直前でもそう困らないように思える。

  • 予約したクレジットカード
  • 電話番号の下四桁
  • 予約番号

upnote への移行

数年前から evernote のビジネスが安定していないのは既知になっていたが、ここ1-2年でフリープランをどんどん縮小して投資回収的な値上げを強行している。

値上げするだけならまだしも、アプリを開くたびに有料プランにアップグレードするためのダイアログを表示して、意図的にユーザー体験を悪化させて、フリープランのユーザーを退会させたいようにみえる。ここまで露骨にやって既存の課金ユーザーだけで十分にビジネスはペイするという目論見なのか、経営陣が短期的にV字回復させたという実績作りなのか。いずれにしても、私のようなちょっと使いのフリープランユーザーはターゲットではないらしい。どうやら2011年6月から使っていたらしいが、件数にすると216件のノートしかない。週に1-2回は使うのだけど、なくなったら別アプリに移行しても困らない程度の用途にしか使っていない。

ずっと移行したいと思いつつ、なおざりにしていた理由として移行先のアプリを選定していなかった。私の用途としては次のような使い方をしている。

  • 買いものの備忘録として思いついたときにパソコンから記録し、スマホでチェックしながら買いものする
  • 法人番号、住所、家族の誕生日など、オンラインで手入力しないといけないときなどのコピペ元
  • 郵便受けのダイヤルロックを忘れたときのメモ
  • パソコンやデバイスを購入したときのスペックを記録しておく
  • オンラインの記事やサイトを保管しておくときの web クリップ

正直メモ帳アプリでなくても、他のアプリへ移行することもできるが、惰性で使っているのでできればそのまま移行したい。私の周りでは obsidian を使っている人も多く評判もいいからこれでもよかったんだけど、いくつか記事を読んでいると upnote の評判もよさそうにみえた。また upnote はサブスクリプションモデルではなく、パッケージライセンスなのでコストが安い。app store 経由でプレミアムのライセンスを購入する。為替によって値段が変わると思うが、いま買ったら3,500円だった。この値段で未来永劫 upnote のインフラコストを賄えるのかは懐疑的だが、3,500円ぐらいならそうなったときにまた別のメモ帳アプリへ移行するのでもよいかなというぐらいの気持ちで upnote を使ってみることにした。

web 版はなくて、それぞれのデバイスごとにインストールする。linux は snap パッケージが用意されているので ubuntu なら次のようにインストールする。

$ sudo snap install upnote

evernote から移行をするにあたり、.enex という xml ファイル形式でデータをエクスポートできる。これは macos または windows アプリでないとエクスポートできない。仕方ないから macos に evernote のアプリをインストールしてエクスポートする。ノートブック単位でエクスポートできる。

その後、upnote の macos アプリでインポートしようと試みるも macos 版にはインポート機能が見当たらない。linux 版にはインポート機能があったので .enex ファイルを linux にコピーしてきて linux 版でインポートしたら移行を完了した。移行の制約事項は次の通り。216件のノートしかないので10分もあれば完了した。同期もかなり速くて、すぐに iphone, macos, linux でノートが同期された。

最適なパフォーマンスを得るには、次の点に注意してください。

  • 多数のノートをインポートすると、アプリのパフォーマンスに影響を与える可能性があります。
  • 20MBを超えるファイルはインポートされません。
  • 300,000文字を超えるノートはインポートされません。

インストールしてから、このアプリの開発元はどこなんだろう?と調べてみるとベトナムの会社らしい。ややセキュリティは大丈夫なのかな?と不安に思ってしまう。Frequently Asked Questions から引用する。firebase を使っているならストレージは強固だし、同期も firebase に委譲すればおかしなことも起こらないだろう。

アップノートはどのように私のデータを保存するのですか?

UpNoteは、アカウントにサインアップしなくても確実に動作するように設計されています。サインインしない場合、メモはあなたのデバイスにローカルに残ります。デバイス間でメモを同期したい場合は、アカウントにサインアップすると、UpNoteが中央サーバーにメモを保存し、他のデバイスと同期できるようになります。

お客様はご自身のデータを完全に管理することができ、アップノートがお客様のデータにアクセスしたり、お客様のデータを第三者に販売したりすることは決してありません。プライバシーに関する詳細は、プライバシーポリシーをご覧ください。

アップノートのサーバーはどこにありますか?安全ですか?

UpNoteはFirebaseサーバー(Googleが提供するサービス)にデータを保存します。Firebaseプラットフォームは、主要なプライバシーおよびセキュリティ基準で認定されており、EU一般データ保護規則(GDPR)およびカリフォルニア州消費者プライバシー法(CCPA)を完全にサポートしています。Firebaseは、HTTPSを使用して転送中のデータを暗号化し、静止時のデータを暗号化します。詳しくは https://firebase.google.com/support/privacy をご覧ください。また、お客様のデータが安全に保護され、お客様だけがアクセスできるように細心の注意を払っています。

アップノートはエンドツーエンド暗号化に対応していますか?

エンドツーエンド暗号化(E2EE)は、データを暗号化・復号化するための高度なセキュリティ手法で、機密性の高い情報を保護するために設計されています。実装が複雑なため、アップノートでは現在E2EEをサポートする予定はありません。パスワードやクレジットカード番号などの機密情報を保存する場合は、機密情報を暗号化するために特別に設計されたパスワードマネージャーアプリケーションを使用することをお勧めします。

e2ee に対応していないところは残念なところ。未対応のセキュリティリスクの懸念としては、upnote 社の社員が私のノートの内容を閲覧できる可能性があったり、攻撃者が upnote 社のインフラに侵入してしまった場合、メモ帳の内容が外部に漏洩してしまう可能性がある。とはいえ、値段も安いのだからそこは割り切って機密情報はすべてパスワードマネージャに移行せよという戦略は理解できる。私の用途だと、メモ帳に機密情報はほとんどないけれど、賃貸の部屋のインターネット接続のアカウント情報や wifi パスワードなどを書いていたりする。こういった内容もこの機会に整理して 1password へ移行していくのがよいように思う。