Pandora Pocket

IT系と日常系の備忘録。三日坊主。

指定時間にディスプレイの電源をオンオフするだけのミニツールを作るなどした

普段テーブルの端にSurface Proを置き、Twitterクライアントを常時起動させつつ、音楽を再生したりしています。
朝起きた時に夜中のツイートもささっと流し読みしたいので24時間電源を入れっぱなしなのですが、使っていない時間ずっとディスプレイがつきっぱなしなのは電気代がもったいない。かといって電源設定でディスプレイの電源を切る時間を設定すると、普段見たいときにいちいち画面タップするなりしないといけないので面倒。

というわけで、指定した時間にディスプレイの電源をオンオフするだけの機能を持ったタスクトレイ常駐アプリを作りました。

続きを読む

Raspberry Pi 4でUSBブートするための備忘録

Raspberry Pi 3までは(途中から)MicroSDブートでなくUSBメモリー単体でのブートが可能になってましたが、Raspberry Pi 4は構成が変わったため、現時点でのファームウェアではUSBブートができません。

MicroSDUSBメモリー以上に劣化が激しいので極力常時利用する際には利用したくない。

そこで、ブートに必要なデータだけをMicroSDに配置し、実際のLinux(今回はRaspbian)をUSBメモリーに配置することで、ブート処理だけMicroSDで行う疑似USBブートを行うようにします。

続きを読む

サンワサプライの机にひっかける肘置き台(100-TOK004BK)を購入した

たまたま見かけた下記のツイートを見て衝動買いしました。

購入をした理由は、今の座り方だとモニターとの焦点距離が短すぎるから。
昨年作ったスタンディングデスクは天板の奥行きが約75cmあるのですが、普段天板の端におなかがくっつくように座って作業をしているため、4Kの43インチモニターを使っているとどうも顔とモニターが近づきすぎて、目が疲れる・・・。

その点これを使えば物理的にモニターとの距離が離れるので、目に優しいだろうな、と。

続きを読む

Entity Framework 3.0 Coreだと LastOrDefaultが利用できない

よく考えればそりゃそうか感はあるんですが。

Entity Framework 3.0 Coreでは破壊的変更としてLINQ クエリがクライアントで評価されなくなった という修正があります。

.NETの関数を内部的に使っているなどして、SQLに変換できない系統のものが動かなくなったんですが、それに関係なさそうな LastOrDefault も利用できなくなっていました。

例えばこんな感じのLINQ

await Context.Set()
.Where(r => r.COLUMN1 == "hoge")
.Select(s => s.COLUMN2)
.LastOrDefaultAsync();

GitHubのIssueを見てると該当するものが。

対応としては OrderByDescending()を使って明示的に降順に並び替えてからFirstOrDefaultAsync()を呼び出す感じ。
LastOrDefaultAsync()だと結果が確定的でない可能性があるので、厳密に判定できるようにこういう対応をしたようで。

つい最近のEFCoreへのP-rで、もう少しわかりやすいエラーメッセージになるようです。

Kindle SearchでKindleのキャンペーン・セールに特化した検索をする

投稿したものがすべてを語ってるんですが、しんじさん(id:Shinji_Japan)が公開されているChrome拡張の「Kindle Search」にBrowseNode(以下node)検索機能を実装していただきました。

これによって、特定のnodeに紐づくKindle本のみを抽出することができるようになります。

nodeとはAmazonの商品カテゴリのことです。
例えば日用品なら「170563011」となります。

これ、何がうれしいかというと、Kindleがたまに行っているキャンペーン・セールは(例外もありますが)nodeを発行して、対象本を紐づけて表示しているので、このnodeさえわかればキャンペーン中の本だけが表示、並び替えできるんです。

例えば今(2020/02/17)行われている翔泳社Kindle本セール。

このセールはnodeとして「8011818051」が発行されています。

f:id:Ovis:20200217005930p:plain

Amazonで普通に検索すると、Amazonお勧め順、価格の安い(高い)順、出版年月順では検索できるものの、タイトル順が存在しません。
これが曲者で、シリーズものを探すときに本当に苦労します。

で、このChrome拡張を使うと、 f:id:Ovis:20200217010111p:plain

こんな感じ。
タイトル順なので、10日でおぼえるシリーズがまとまっているのがわかるでしょうか。
なぜAmazonで実装されていないのか理解に苦しむのですが、ABテストとかで実装しないほうが売れる結果が出たとかなんでしょうか・・・。

さて、このnodeなんですが、普通はAPI(Amazon Product Advertising API)を叩かないと判明しません。

さすがに面倒なので、きんどうさんやキンセリさんのサイト、ツイートをチェックして、そのURLからnodeを探しましょう。
(nodeだけ拝借するとタダ乗りになってしまうので、URL開いてアフィリエイトタグだけ反映させておくのがよいかと)

特にキンセリさんのサイトは上記APIを叩いて自動更新しているだけあって、使いやすいです。
f:id:Ovis:20200217011003p:plain