目次: Windows
先日(2022年9月19日の日記参照)はJavaScriptと画面起動ロックAPI(Screen Wake Lock API)にてWindows PCの画面ロックを妨害する方法を紹介しました。
今回はWindows API(SetThreadExecutionState)を使って同様の機能を実現します。詳細はMicrosoftのAPIドキュメント(SetThreadExecutionState function (winbase.h) - Microsoft Learn)と、スリープに関する日本語の解説(システム スリープ条件 - Microsoft Learn)が参考になります。
そういえばWindows APIのドキュメント、今の名前はMicrosoft Learnになっていますね。昔はMSDN OnlineとかMicrosoft Docsとか呼ばれてた気がしますが、統合されて消えてしまったのかな……?
さておきコードはこんな感じです。簡単すぎるのでわざわざ載せるまでもないですけども。
#include <iostream>
#include <windows.h>
#include <winbase.h>
int main()
{
EXECUTION_STATE r;
r = SetThreadExecutionState(ES_CONTINUOUS | ES_AWAYMODE_REQUIRED);
if (r == NULL) {
std::cout << "failed!" << std::endl;
}
std::string hoge;
std::cin >> hoge;
return 0;
}
アプリケーション実行中にpowercfgでチェックすると、こんな風になるはずです。なおpowercfgを実行するには管理者権限でコマンドプロンプトを起動する必要があります。アプリケーション名は適当に読み替えてください。
C:\Windows\system32>powercfg /requests DISPLAY: なし。 SYSTEM: なし。 AWAYMODE: [PROCESS] \Device\HarddiskVolume3\dat\projects\c\ConsoleApplication1\x64\Debug\ConsoleApplication1.exe 実行: なし。 PERFBOOST: なし。 ACTIVELOCKSCREEN: なし。
画面起動ロックAPIはDISPLAYモードを要求していましたが、今回はAWAYMODEを要求しているので違うカテゴリに表示されています。もちろんAPIの引数を適切に変更すればDISPLAYも要求できます。
画面ロックの妨害機能のユーザーは意外と多いです。前回挙げたPowerPointの他に、Teamsのような会議アプリケーション、メディアプレーヤーなども使っているようです。個人的に意外だったものとしてはセットアッププログラムです。
例えば、下記はVisual Studioのセットアップ中にpowercfgを実行した結果です。
C:\Windows\system32>powercfg /requests DISPLAY: なし。 SYSTEM: なし。 AWAYMODE: なし。 実行: [PROCESS] \Device\HarddiskVolume3\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe Visual Studioインストーラー PERFBOOST: なし。 ACTIVELOCKSCREEN: なし。
普通はセットアップ中にスリープされることなんて想定していませんから、セットアップがエラーになる可能性があります。不都合が起きなかったとしても、スリープ中はセットアップが進みません。と、考えると時間がかかるセットアップ中にスリープを妨害するのは筋が通ってますね。
ニンテンドーのポイントが期限切れになるぞよ、とメールが来ていたのでゼルダの伝説スカイウォードソードに出てくるボム袋を模した巾着をもらいました。思っていたよりでかい。
ゼルダの伝説はほとんどやったことがなくて、家に届いた巾着を見ても何の模様かわからなかったのですが、奥さんに見せたら一発で「あ!ボム袋だ!」って気づいてました。ゲーム画面のキャプチャを観ると思っていたより再現度が高いです(ゲームのボム袋の方がもう少し背が低いくらい)。良いですね。
なぜかシューティングの練習で使うフロンガス缶のサイズと、この巾着のサイズが超ぴったりでした。フロンガス缶はそんなに種類があるわけじゃない(マルイ、レイラックス、サンダーシュート、ウッドランドがメジャーどころ?)し、同じ種類のガス缶を使っている人も多くて紛らわしいので、こういう個性的&コンパクトな袋はありがたいです。
メモ: 技術系?の話はFacebookから転記しておくことにした。色々と加筆修正。
だいぶ周回遅れですが、リコリス・リコイルの最終回を見てました。最終回に限らず銃撃アクションはどの回も良かったな〜と思います。設定はイマイチ良くわからないですけど、あまり気にしても仕方ないです。それはさておき。ニコニコ動画は、
があって、有料版はちょっと変わってるらしいので、試しに契約してみました。サブスクリプション方式でした、月額440円だそうです。
現在のニコニコ動画の配信方式はHLS(HTTP Live Streaming, 規格は RFC8216 にて規定)といいまして、MPEG2-TSファイルを細かく(3〜10秒程度)分割して、クライアントから再生要求された位置から順に送るだけのシンプルな方式です。MPEG2-TSの弱点はインデックスなどの情報が一切なくてサーチが大変なことですが、あらかじめ分割しているため苦労してサーチをする必要がありません。
ちなみにリコリス・リコイルの無料放送版の場合、コーデックは見ての通りでFull HDじゃないです……。有料版でもHD 720pですから、画質が気になる方にはイマイチかもしれません。他のアニメも同じなのでしょうか?調べていないのでわかりませんけど。
HLSではプレイリスト(ファイル名が*.m3u8)も一緒に送られてきて、リストにTSファイル名が全て載っています。プレイリストにあるTSを順番にダウンロードし、単純連結するだけで動画全体のTSファイルが引っこ抜けます。これはセキュリティホールとかではなく元々HLSはこういう仕様です。
有料版も同様にHLSで配信されていますがAES-128-CBC暗号化されていて、TSファイルを引っこ抜いても再生できません。しかしなぜか無料版は暗号化されておらずTSファイルを引っこ抜くと再生できてしまいます。設定ミス……?わざと?まあどっちでもいいですけど。
キャプチャだとわかりにくいかもしれませんが、右下に「ニコニコ」の透かしが入っています。有料版は入っていません。
TSファイルのサイズを比較(AES-128-CBC暗号化でファイルサイズは変化しないので、この比較には意味がある)してみましょうか。使ったのはリコリス・リコイル最終話です。
有料版(dアニメ支店版)は100MBくらい小さいです。無料版は先ほど説明したように右下に透かしを入れるために再エンコードしていると思いますが、再エンコードだけでは説明できないほどサイズが違います。なんで?と思って調べてみたら、どうやら、
になっているようです。オープニングのエレベータが降りていくシーンが非常にわかりやすいです。高速(120fpsとか)で動画が撮れるカメラを使うと、無料版は5コマに1回、画が止まることがわかります。
有料版(24fps)が
1 2 3 4 5 6 7 8
このような出方だとして、無料版(30fps)は
1 2 3 4 4 5 6 7 8 8
みたいな出方をします。
意図通りか間違えたか知りませんが、無料版だけ30fpsに変換しているためファイルサイズがやたらデカいようで、暗号化もされていません。どちらかといえば無料版の方が不思議な作りですね。
メモ: 技術系の話はFacebookから転記しておくことにした。色々と加筆修正。
ニコニコ動画の24p → 30pの変換の仕方と、テレビなどが行っている24p → 60iの変換の仕方(2-3プルダウン、3-2プルダウンとも呼ぶ)を図示してみました。もうちょっとわかりやすくしたかったけど……絵心が足りませんでした。
24pから30p, 60i(2-3プルダウン), 60pへの変換
24p → 30p変換は非常にシンプルで、24pフレームの表示すべき時間(PTS: Presentation Timestamp)に到達していたら表示、まだだったら前と同じフレームをリピート、という非常に単純な処理です。利点は画が自然なことで、欠点はカクつくことです。縦や横に一定速度でスクロールするシーンは進んで止まってを繰り返すためガクガクします。
2-3プルダウンは若干ややこしく、インターレース(偶数ラインと奇数ラインが交互に更新される)の特徴を使います。60iの3コマ目(5-6フィールド)に24pの2, 3コマ目の偶数、奇数ラインを混合した画を出します。4コマ目(7-8フィールド)は24pの3, 4コマ目の混合です。利点はカクつきが少ないことで、欠点は画が不自然になることです。例えば24pの2コマ目にリンゴ、3コマ目に突然オレンジが映る場合、60iの3コマ目はリンゴとオレンジが縞々に合わさったキメラ画像になります。
このように2-3プルダウンは良くできているものの完全無欠ではないので、テレビによって扱われ方が違います。最近のテレビであればおそらく画像が24pだと検知すると自動的に2-3プルダウンが発動すると思いますけど、製品によっては「映画モード」とかに変えないと発動しないかもしれません……。
最後に24p → 60p変換ですが、何の工夫もないのにほぼカクつきなしで不自然な画もありません。24pは下手に30pとか60iに変換せず、60pで殴りなさいという悲しい結論ですね。細かく見れば2コマ、3コマ、2コマ、3コマ……と繰り返されるので1/120秒の揺らぎがあります。でも人間にはわからないと思います。たぶん。とりあえず私はさっぱりわかりません。
メモ: 技術系の話はFacebookから転記しておくことにした。色々とマージ&加筆修正。
興味本位で調べていたんですが、ニコニコ動画のHLSの暗号化の仕組みがわかりました。基本的には暗号化HLSと同じです。m3u8ファイルにEXT-X-KEY Tag(仕様は RFC8216 4.3.2.4 EXT-X-KEY にあります)があって、METHOD=AES-128(暗号化方式がaes-128-cbc方式)、鍵のありかを示すURI、IV(Initial Vector)が書いてあるタイプです。他のAttributesは使っていません。
暗号化自体はaes-128-cbcですが、復号用の鍵の扱いはHLSの規格と異なっておりURIに示されたファイルを使っても復号できません。暗号化の仕組みを見た限り、コスト度外視でガチガチにガードするDRMというより、ffmpegなどのHLS再生に対応した有名ツールを使ってお手軽ダウンロードされなければヨシ!という作りに見えます。HLS規格から大改造すればするほど既存ライブラリが使えなくなったり、クライアントもサーバーも作るのが大変になるからではないかと推測しています。
AESは鍵さえわからなくすれば復号できませんから、基本的にはHLSに準拠して扱いを楽にしておき、鍵だけ規格から外した扱いで実装してある、なかなか面白いバランスでした。商用サービスの設計を垣間見た気がします。なるほどなあ。
鍵の取得方法も調べましたが詳しくは述べません。RC2から(※)のニコ動ユーザーとして、これからも末永く利用したいので、ニコ動の不利益になることは本意じゃないです。ニコ動がんばって。応援してるぜー。
改正著作権法ではDRM回避行為そのものも違法(今は罰則はありませんが……)です。回避装置の譲渡には懲役刑や罰金刑といった刑事罰があります(参考: 私的リッピングも違法!?いよいよ改正著作権法が一部施行 - 週刊アスキー)。
「再現可能なレベルの回避手段の解説」=「回避装置の譲渡(懲役刑や罰金刑といった刑事罰がある)」とみなされて当然だと思うので、私は絶対にDRM解除方法は公には書きません(方法を知っても他人に教えません)。皆様もパズルの答えの感覚で「DRMの解き方がわかった!方法はこうしてこう!」ってその辺に書かないようにしましょう。
(※)ニコニコ動画の変遷を見るとRC2は2007年〜2008年頃だから約15年経ちましたか。早いもんですね。
Microsoft Edgeは独自のHTMLレンダリングエンジンを捨てて、Google Chromeと同様BlinkというHTMLレンダリングエンジンに切り替えました(2020年くらい)。という経緯を知っていたので、今までEdgeとChromeは大差ないと思っていたのですが、Alt+Tabを押したときの挙動が違うことに気づきました。
Windows 10はAlt+TabでEdgeのタブ切り替えができる
Edgeのウインドウは1つしかありませんが、Alt+Tabを押すとEdgeが2つ表示され、EdgeのタブがWindowsのウインドウのように特別扱いされることがわかります。普段Edgeを使わないため全くこの機能を知りませんでした。またWindows 10の設定ウインドウを見ていて、この機能をOFFにできることも知りました。
Edge以外のブラウザ、ファイル管理、ターミナルなど、タブ機能を持ったアプリはそこそこ多いと思いますが、EdgeのタブだけAlt+Tabで切り替え、他のタブ機能は切り替えできない、という一貫性のなさは混乱しますが……。ウケが良かったらそのうちOSの標準機能になるかもしれませんね。
目次: 射的
保存場所がないのでエアガンはハンドガンしか買わないようにしていたのですが、頑張れば1つくらいなら置けるか?ってことで1つだけ買いました。
台湾のWE-Tech製、SVDことドラグノフ狙撃銃です。ロシア語は良くわかりませんが、Sがスナイパー、Vがライフル、Dがドラグノフに相当するみたい。英語(Dragunov Sniper Rifle)とは逆順ですね。
シンプルかつ細身のフォルムがカッコいいです。形だけで言えば一番好きなのはH&K PSG-1ですが、スコープがなくても撃てる方が都合が良かったので、次くらいにカッコいいと思うSVD先生を選びました。
黒いプラスチックのストックより、木というかフェイクウッドのストックにするとさらにソビエト感が出るんですけど、値段見たらすっごい高かったのでヒヨってやめました……。
BB弾を発射すると、銀色のボルト(アルミ製かな?)のところがガス圧で後退&前進します。大きく重いボルトなだけあって、ガシーン!という強めの衝撃、良い金属音が鳴ります。おおーこれはなかなか良いです。家だと相当ウルサイのが難点ですが……。
ボルト以外の部分も基本的に金属らしき部品が多いです。鉄とアルミ製かな?これも重量感があって良いですね。
家に箱が届いた瞬間に「何だ?デケェな!」って思いましたが、箱を開けてもやっぱりデカいです。約120cmあります。狙撃銃は最長の部類ですから当たり前ですね。1つ目に買う銃じゃありませんでしたか……?まあ、カッコ良ければ全てヨシ!ヨシ!!
家で試し打ちしましたが、銃身が長すぎてBB弾が飛ぶ方向が良く見えません。サイトをどこに合わせたら良いかわからなくて困ったので、レンジで試し打ちしながら調整した方が良いかもしれません。今度頑張って背負って行きましょうか。
あとはWE-Techに限らず海外製ガスガンではあるある現象らしいですが、
BB弾は未だにコツが良くわからないです。失敗してパカーーンってぶちまけてしまい地味にイライラします……。
目次: Kindle
Amazonは荷物が消えるといううわさは聞いていましたが、ついに自分も荷物消滅事件に遭遇しました。最近のAmazonはコストカットなのか、配達業者が代わって配達の質が雑になっている気がします。
先日注文した商品が届いていない気がしたのでステータスを見ると「お荷物の状況を確認できません」となっています。
ヘルプの「配送について」を押すとエラーになってしまいました。あららー。
顛末としては、Amazonのカスタマーサービスに連絡したところ「配送のトラブルのようだ」とのことで、返金処理になりました。幸いにもこの世に1つしかない商品の類ではなく、再び購入できて特に困りませんでした。が、もし二度と買えない(限定品など)場合は返金されても非常に困るでしょうね……。
目次: 射的
東京マルイ製のU.S.M9やM9A1といったベレッタ92を基にしたエアガンは非常に良くできているのですが、イタリアのベレッタ社とのライセンスの関係上?ベレッタ社のロゴが使えないようです。エアガンのグリップには似た形のニセのロゴが描かれています。
ちなみにベレッタ社は純正のプラグリップを販売しています。銃本体ではないので日本に持ち込んでも問題はないし、思っていたより安かった(4,000円くらい)ので試しに買いました。
届いた品物を見たところ、面白いことにベレッタ純正のプラグリップの方が安っぽく、東京マルイ製のニセ物ロゴグリップの方が明らかに質が良いです。
ベレッタ92のグリップ、左: ベレッタ純正、右: 東京マルイ製
左がベレッタ純正、右が東京マルイ製です。東京マルイ製の方がグリップの山が均一で見た目もきれい、つや消しもぬかりなくて、手触りもよいです……。可能ならロゴだけ移植したいくらいの出来です。
今回のグリップ交換は見た目改善だけですが、副次的な効果として銃が軽くなります。なぜかというと東京マルイのグリップ内には重りが入っていて、ベレッタ純正のグリップでは重りが入っていないためです。エアガンの銃本体は実銃と異なりプラスチック製で軽いため、グリップを重くして実銃らしさを出そうとしています。なのでマルイ→ベレッタグリップに交換するとグリップ内の重りのぶんだけ軽くなってしまうのです。
届いた商品の箱を開けると、各トイガンメーカーのベレッタ92タイプのエアガンに対して、そのまま付くか付かないか(=多少の加工が必要)を説明した紙が入っていました。
検索用に文字起こししておきました。
★★東京マルイ ガスBLK★★
M9A1
取り付け可能です。
M92Fミリタリー
右側のグリップスクリューナットの位置とグリップがずれているので、グリップ部の穴を広げ、トリガーバーの可動部のすり合わせを行えば取り付け可能です。
タクティカルマスター
スライドストップがロングタイプの為、取付不可。それ以外はM92Fミリタリーと同様です。
★★KSCガスBLK★★
M9シリーズ
両側のグリップスクリューナットの位置がグリップがずれている為、穴を広げる調整が必要です。
★★マルシン モデルガン★★
M92Fシリーズ
取り付け可能です。
★★タナカ モデルガン★★
M92Fシリーズ
両側のグリップスクリューナットの位置がグリップがずれている為、穴を広げる調整が必要です。
(注意書きの部分)
当社製品はエアソフトガンの分解・修理・調整に熟知された方を対象としております。
銃本体とグリップにも個体差があり必ずしもフィットするとは限らないのでご注意ください。
誤使用及び、経験不足/加工による破損等の諸問題が発生した場合いかなる状況でも保証はいたしかねます。
実銃用のグリップを日本で売る=エアガンに装着するしかない、ということはベレッタ社もわかっているようですね。
おそらく10年前くらいに買ったシーリングライトの蛍光灯が切れてしまいました。交換用の蛍光灯を検索したところ既に廃番で、2世代ほど世代交代していました。蛍光灯は長持ちですねえ。
今日買ったユーザーが次買うのは3世代先の製品だと考えると、開発は難しいですね。安易に口金の形を変えたりすると「交換しようとしたが嵌らないよ(泣」というクレームの嵐になりそうですし。設計に失敗したら新型で置き換えるまで尋常じゃない時間掛かります。
要らないお世話ですけど、たった数千円なのにこんな低い交換頻度で儲かるんだろうか?とも思います。2回目交換する前にシーリングライト本体が壊れそうですよね。
< | 2022 | > | ||||
<< | < | 09 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | - |
合計:
本日: