<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3389582557551425142</atom:id><lastBuildDate>Mon, 01 Dec 2025 03:47:23 +0000</lastBuildDate><category>プログラミング</category><category>ストレージ</category><category>ThinkPad</category><category>ネットワーク</category><category>SSD</category><category>WinRT</category><category>DPI</category><category>ReadyNAS</category><category>USBメモリ</category><category>Windows 8</category><category>Microsoftストア</category><category>宇宙</category><category>Windows 8.1</category><category>電力</category><category>キーボード</category><category>Surface</category><category>マウス</category><category>モニター</category><category>ヘッドホン</category><category>PC</category><category>Visual Studio</category><category>Window Hello</category><title>8th way to explore the world</title><description></description><link>http://8thway.blogspot.com/</link><managingEditor>noreply@blogger.com (EMO)</managingEditor><generator>Blogger</generator><openSearch:totalResults>201</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4181016179620450744</guid><pubDate>Sat, 25 Jan 2025 08:28:00 +0000</pubDate><atom:updated>2025-01-25T17:34:27.354+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ヘッドホン</category><title>軟骨伝導ヘッドホン</title><description>audio-technicaの軟骨伝導ヘッドホンの新モデル&lt;a href=&quot;https://www.audio-technica.co.jp/product/ATH-CC500BT2&quot;&gt;ATH-CC500BT2&lt;/a&gt;が出ていたので、チェック。&lt;br/&gt;
&lt;br/&gt;
性能面は旧モデルATH-CC500BTからよくなっているだろうから心配してなくて、自分の関心はデザインとフィット感。&lt;br/&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvjXaxuZ431uGzWa1TMfCFFh9Dcx825nDrlVIiMrAeC20louUFxS6H5Ba7c4rY5AthPAfCPXMFDaxxjFsgIBCpU-0zEzCJ5E6enLM1HYm_eljp5qIAqhi_FJFFY28QnPiu_22xLtwVhSsV7zHkzOLgcBYa2Idq6CwavZ4sZAWzhk3Vrz-UAQhfslJlNVdd/s1600/ath-cc500bt2-1.jpg&quot; style=&quot;display: block; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;600&quot; data-original-height=&quot;1600&quot; data-original-width=&quot;1374&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvjXaxuZ431uGzWa1TMfCFFh9Dcx825nDrlVIiMrAeC20louUFxS6H5Ba7c4rY5AthPAfCPXMFDaxxjFsgIBCpU-0zEzCJ5E6enLM1HYm_eljp5qIAqhi_FJFFY28QnPiu_22xLtwVhSsV7zHkzOLgcBYa2Idq6CwavZ4sZAWzhk3Vrz-UAQhfslJlNVdd/s600/ath-cc500bt2-1.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;
旧モデル（上）はShokzなどの既存の骨伝導ヘッドホンとはあえて違う形状を目指した感があったが、新モデル（下）は既存製品に近い形状になっている。&lt;br/&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhauvV0Qopc0iykTFPGoY4SViGGKJR_6A2BBtWObP0S2evWfnVDiGewNIcF7c_dKjIs3-iSBSrE_bZidSCEL9iGQ78ac6TGJJ_h4B3rnc9IREIkZ3Wn-1cswG0YN9KvedVQj8oUtr6uHsuq_4O0ohAL_zYo0hrAGMQM6pioMKr6URnjXp4VgedyoQODsTME/s1396/ath-cc500bt2-2.jpg&quot; style=&quot;display: block; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;600&quot; data-original-height=&quot;1396&quot; data-original-width=&quot;1000&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhauvV0Qopc0iykTFPGoY4SViGGKJR_6A2BBtWObP0S2evWfnVDiGewNIcF7c_dKjIs3-iSBSrE_bZidSCEL9iGQ78ac6TGJJ_h4B3rnc9IREIkZ3Wn-1cswG0YN9KvedVQj8oUtr6uHsuq_4O0ohAL_zYo0hrAGMQM6pioMKr6URnjXp4VgedyoQODsTME/s600/ath-cc500bt2-2.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;
旧モデルはスピーカー部（振動ドライバー）が妙に丸っこく膨らんだ形で、謎のエングレーブが入っていたりして、ここはあまり好きではなかったが、新モデルは小さくすっきりした形になっている。&lt;br/&gt;
&lt;br/&gt;
旧モデルではスピーカー部にボタンとマイク穴（左側）があって、開発陣は、ボタンはここに置いた方が直感的で、マイク穴も口に近い方がよいと考えたのだろうけど、これらをつるに移動させたのは、ボタンは音量ボタンと同じ位置の方がむしろ操作しやすく（オーバーヘッド型ヘッドホンではそうしている）、マイク穴はつるでも声は十分拾えると考えたのだろうと思う（想像）。&lt;br/&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigm__Ko4MsOeT8DTObCaYBakINC0hUCOHNqPrZeqAHvGPZaVeYHAIGclSpuyCIbjBMUmAJ0dRPfeUT-Dhc-9HkKXUbRDYRdjo6s3DWud3azwZsXtxo9RW8kOQj1uTuRtxN7xVLcd5P6DXEddZGL9E8iPb7Vs2vMc0JSRmbUwCHHFG-vhMu1CDZNrBt3nOX/s1000/ath-cc500bt2-3.jpg&quot; style=&quot;display: block; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;986&quot; data-original-width=&quot;1000&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigm__Ko4MsOeT8DTObCaYBakINC0hUCOHNqPrZeqAHvGPZaVeYHAIGclSpuyCIbjBMUmAJ0dRPfeUT-Dhc-9HkKXUbRDYRdjo6s3DWud3azwZsXtxo9RW8kOQj1uTuRtxN7xVLcd5P6DXEddZGL9E8iPb7Vs2vMc0JSRmbUwCHHFG-vhMu1CDZNrBt3nOX/s400/ath-cc500bt2-3.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;
振動ドライバーが耳珠に接触する面積は、旧モデルは形状の関係で意外と小さく、新モデルの方が大きいので、位置調整できる幅は大きい。&lt;br/&gt;
&lt;br/&gt;
フィット感については、自分の頭へのフィット感は確実によくなっている。総じて順当な進化なので、旧モデルもまだ十分使えるので惜しくはあるが、買換えに値すると思う。</description><link>http://8thway.blogspot.com/2025/01/athcc500bt2.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvjXaxuZ431uGzWa1TMfCFFh9Dcx825nDrlVIiMrAeC20louUFxS6H5Ba7c4rY5AthPAfCPXMFDaxxjFsgIBCpU-0zEzCJ5E6enLM1HYm_eljp5qIAqhi_FJFFY28QnPiu_22xLtwVhSsV7zHkzOLgcBYa2Idq6CwavZ4sZAWzhk3Vrz-UAQhfslJlNVdd/s72-c/ath-cc500bt2-1.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-2916039620929018918</guid><pubDate>Thu, 13 Apr 2023 21:43:00 +0000</pubDate><atom:updated>2023-04-14T06:43:31.596+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoftストア</category><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>インストールされたアプリの情報取得</title><description>別に新しくも何ともないですが、パッケージされたアプリをインストールした後、登録された情報はPowerShellで簡単に確認できます。&lt;br/&gt;
&lt;br/&gt;
PowerShellコンソールから以下です。
&lt;pre class=&quot;code&quot;&gt;Get-AppxPackage
&lt;/pre&gt;
&lt;br/&gt;
これをファイルに記録するには、デスクトップにpackages.txtというファイル名で保存するとして、こうです。
&lt;pre class=&quot;code&quot;&gt;Get-AppxPackage &gt; $env:USERPROFILE/Desktop/packages.txt
&lt;/pre&gt;
&lt;br/&gt;
ちなみに、UWPをVisual StudioからLocal Machineで実行したときに自動インストールされたものは、IsDevelopmentModeがTrueになるようです。</description><link>http://8thway.blogspot.com/2023/04/appxpackage.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4338259188063776103</guid><pubDate>Tue, 29 Nov 2022 15:57:00 +0000</pubDate><atom:updated>2023-01-06T10:49:08.335+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoftストア</category><category domain="http://www.blogger.com/atom/ns#">WinRT</category><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>パッケージされたアプリのファイルの保存場所</title><description>AppDataフォルダーへのファイル作成について、発見があったのでメモしておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. 基本&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Microsoftストア用にパッケージされたデスクトップアプリの場合、設定情報等の保存場所としては基本的に以下の3通りがあります。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;WinRTのApplicationData.LocalSettings&lt;/li&gt;
  &lt;li&gt;WinRTのApplicationData.LocalFolderに作成したファイル&lt;/li&gt;
  &lt;li&gt;AppDataフォルダー（に作成したフォルダー）に作成したファイル&lt;/li&gt;
&lt;/ul&gt;
1番目と2番目はUWP用のものですが、パッケージされたアプリであればこれらを使えます。3番目は、使い方は普通のアプリと同じですが、実際のAppDataフォルダーではなく、OSが管理する別の場所に自動的にリダイレクトされるところが違います。&lt;div&gt;&lt;div&gt;
&lt;br /&gt;
これらのファイルはアプリのアンインストール時に自動的に削除されます。つまり、アプリの実行ファイルのみならず、その作成する情報・ファイルもOSがまとめて管理することで、ゴミとなるファイルを残さずきれいに削除できるようにしているわけです。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;Understanding how packaged desktop apps run on Windows&quot;&gt;Understanding how packaged desktop apps run on Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
ちなみに、AppDataフォルダー以外にもアクセス権に応じてファイルは作成できますが、あえてやることでもなし。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. 発見&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
ここまではDesktop Bridgeの基本ですが、3番目について、ふとしたことから例外があるのに気づきました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;すなわち、アプリをインストールした後、最初にAppDataフォルダーにファイルを作成しようとした際に、
&lt;ol&gt;
  &lt;li&gt;AppDataフォルダーに指定のフォルダーが存在しない場合、自動的にリダイレクト先の場所が作成され、以後のアクセスはその場所になる。実際のAppDataフォルダーには何も作成されない。これは公式情報どおり。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;u&gt;AddDataフォルダーに指定と同名のフォルダーが既に存在する場合、そのフォルダーにファイルが作成される。このファイルはアプリをアンインストールしても削除されない。&lt;/u&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;この2通りのどちらになるかは、最初にアクセスしたときに決まるようです。一旦、1.になった後は、AppDataフォルダーに同名のフォルダーを作成しても、ファイルはそこに作成されません。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;開発環境では、パッケージされた状態で実行するときもあれば、されていない状態で実行するときもあり、2.のようなケースがあるのには何となく気づいていましたが、改めて確認したところ、こういうことだったと。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;これがどういう意味を持つかというと、例えば、ユーザーごとのTempフォルダーであるAppData\Local\Tempに作成するファイルはリダイレクトされないし、作成された後はアプリをアンインストールしても自動的に削除されないということになります。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;他人のことはあまり言えませんが、説明が足らないと思います。&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;</description><link>http://8thway.blogspot.com/2022/11/microsoftstore-file-location.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-3913091874417855837</guid><pubDate>Mon, 06 Jun 2022 03:29:00 +0000</pubDate><atom:updated>2023-01-08T02:41:12.322+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">マウス</category><title>Razer Pro Click Mini</title><description>ゲーミングマウスの性能で高速スクロール可能なモバイルマウスがほしいという願望がずっとあって、サブに使っていたMX AnyWhere 2Sの買い替えを機に、&lt;a href=&quot;https://www2.razer.com/jp-jp/productivity/razer-pro-click-mini&quot;&gt;Razer Pro Click Mini&lt;/a&gt;を買ってきた。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMYrtCppHNydxVncje-mJQpRYXmBciHDMzWzIutchhiIMemONhLHY1kYqzTVPOAyEjYJMPshGM422aR4wHytfg-6OA1694HCMtBk5GGR5PNk3QqBX1nfnaVfR0cTy5QVw-DxSjXvnS91qezBTs4KULPDUaGhed2l8CX8d3avs2YLA5fIxl0dLqE8b12w/s1024/pro-click-mini-0.jpg&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMYrtCppHNydxVncje-mJQpRYXmBciHDMzWzIutchhiIMemONhLHY1kYqzTVPOAyEjYJMPshGM422aR4wHytfg-6OA1694HCMtBk5GGR5PNk3QqBX1nfnaVfR0cTy5QVw-DxSjXvnS91qezBTs4KULPDUaGhed2l8CX8d3avs2YLA5fIxl0dLqE8b12w/s600/pro-click-mini-0.jpg&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
エクステリアデザインはエクセレント。Logicoolのモバイルマウスの最上位ラインはちょこちょこデザインを変えてきているが、「こういうのでいいんだよ」をとてもきれいにまとめた感じ。一応チェックした大きい方のRazer Pro Clickは縁にクロームのラインをあしらっているが、別にそういうのは要らない。&lt;br /&gt;
&lt;br /&gt;
製品としては明らかにMX AnyWhere 3の対抗馬で、バッテリーが固定内蔵でないのが違うが、重量は単3一本の状態で実測でほぼ同じ（4g軽い）なので、使用上は大きな違いはない。単4一本にすればさらに軽くできる。
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;Pro Click Mini: 92g（単3一本）&lt;/li&gt;
  &lt;li&gt;Pro Click Mini: 81g（単4一本アダプター込み）&lt;/li&gt;
  &lt;li&gt;MX AnyWhere 3: 96g&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyjsvRhj9LS3rGPwhQDXiZl7wpl7BkSZg_c9LcT3IChsTeH7KrBixykPbxPr0RK8aKQ4qYHcxd20pB3kzLcEhYnCTjI1VqYkkRv56HD7lOOjqIAL6Rs2O9a0lDyaawydnynMSJ_cdkZ8m6NQ1j2xPsZPoWQbyXz_we4RO_zYJbzlyO5MYhb0PWesO0rg/s1324/pro-click-mini-1.jpg&quot; style=&quot;display: block; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;600&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1324&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyjsvRhj9LS3rGPwhQDXiZl7wpl7BkSZg_c9LcT3IChsTeH7KrBixykPbxPr0RK8aKQ4qYHcxd20pB3kzLcEhYnCTjI1VqYkkRv56HD7lOOjqIAL6Rs2O9a0lDyaawydnynMSJ_cdkZ8m6NQ1j2xPsZPoWQbyXz_we4RO_zYJbzlyO5MYhb0PWesO0rg/s600/pro-click-mini-1.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
ちなみに、上面蓋をどう固定しているのかと思ったら、本体の最後部にマグネットが仕込んであって、それで蓋のネジを引き付ける仕組みになっていた。したがって、爪が折れたりする心配とは無縁だが、机から落としたりすると簡単に外れて飛んでいくので、それはそれで注意が必要かも。&lt;br /&gt;
&lt;br /&gt;
追随性とかは自分には正直差が分からないので、確認点はクリック音とホイールの回転。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;クリック音&lt;/h2&gt;
&lt;br /&gt;
Pro Click Miniはクリック音が小さいのを売りの一つにしているが、確かに小さい。擬音的には、「カチッ」というより、小さく「ポクッ」という感じで、音が小さくかつ低音なので響かない。まあこれは、むしろLogicoolがMX AnyWhereのラインで重視していないのが謎な点ではある。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;ホイール&lt;/h2&gt;
&lt;br /&gt;
まずフリーホイールとの切り替えはホイール手前のシーソースイッチで行うが、これが少し硬い。ただ、自分は常にフリーホイールで使うので（TrackPointで鍛えられた人間なので、ノッチに頼らなくても支障はない）、むしろ勝手に変わらなくてよい。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTHIAEJIie7rsEllMYoQsLAzNtMJTaZk6yqE3s3SnRDAjQvNUYRK8h9U5yu8x8DGtax7eQ4Tdpcry5HRKsYLdl2OfJbNgGcjlX9ivxoEnTX-wg3ciNS94iZAdZtqPBUGP0c0vumi6C1NHmQCiywroiI9jvLusgE5b-U5WCrz622ByG3SqEOb7SJOycow/s1024/pro-click-mini-3.jpg&quot; style=&quot;display: block; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;600&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTHIAEJIie7rsEllMYoQsLAzNtMJTaZk6yqE3s3SnRDAjQvNUYRK8h9U5yu8x8DGtax7eQ4Tdpcry5HRKsYLdl2OfJbNgGcjlX9ivxoEnTX-wg3ciNS94iZAdZtqPBUGP0c0vumi6C1NHmQCiywroiI9jvLusgE5b-U5WCrz622ByG3SqEOb7SJOycow/s600/pro-click-mini-3.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
ホイールにはラバーに四角錐が5個並んだ滑り止めが施されている。&lt;br /&gt;
&lt;br /&gt;
肝心のホイールの回転については、MX AnyWhere 3の&lt;b&gt;極まったホイール&lt;/b&gt;（無音・無抵抗で、ブレもなく、とてもよく回る）に比べると、回転音がしてかすかにブレがある分、少し劣ると言わざるを得ない。シフトスイッチのあるMX AnyWhere 2Sよりも劣るので、この点はLogicoolに一日の長があるのだろうと思う。&lt;br /&gt;
&lt;br /&gt;
ただ、これは極まったMX Anywhere 3と比べての話で、実用上の問題はない。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;まとめ&lt;/h2&gt;
&lt;br /&gt;
結論としては、クリック音の小ささではPro Click Miniに、ホイールの回転ではMX AnyWhere 3に軍配が上がる。どちらも使い倒すけど。</description><link>http://8thway.blogspot.com/2022/06/razer-pro-click-mini.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMYrtCppHNydxVncje-mJQpRYXmBciHDMzWzIutchhiIMemONhLHY1kYqzTVPOAyEjYJMPshGM422aR4wHytfg-6OA1694HCMtBk5GGR5PNk3QqBX1nfnaVfR0cTy5QVw-DxSjXvnS91qezBTs4KULPDUaGhed2l8CX8d3avs2YLA5fIxl0dLqE8b12w/s72-c/pro-click-mini-0.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-2635987374837703163</guid><pubDate>Fri, 03 Jun 2022 14:26:00 +0000</pubDate><atom:updated>2023-01-06T10:37:12.408+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoftストア</category><category domain="http://www.blogger.com/atom/ns#">WinRT</category><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>.NET 5でのアプリの更新</title><description>Microsoftストアで公開したアプリはストアのAPIを使って更新できますが、.NET 5以降は変わった点があるので、メモしておきます。
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://8thway.blogspot.com/2021/08/microsoftstore-update.html&quot;&gt;Microsoftストアからのアプリの更新&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
更新の際に出るダイアログのために、このオーナーとなるWindowを先に登録する必要がありますが、これは.NET 5より以前は以下のようなものでした。
&lt;script src=&quot;https://gist.github.com/emoacht/195e6c34ee935726b3fcdbc6cd9bc043.js&quot;&gt;&lt;/script&gt;

見てのとおり、COMのIInitializeWithWindowを定義しておいて、StoreContextのインスタンスをこれにキャストするものですが、.NET 5以降はInvalidCastExceptionが出て実行できなくなります。&lt;br /&gt;
&lt;br /&gt;
このための修正としては、usingにWinRTを加えた上でAsでIInitializeWithWindowキャストする。
&lt;script src=&quot;https://gist.github.com/emoacht/518e9d91c28aa24d672c0c74ed1ab0fd.js&quot;&gt;&lt;/script&gt;

もしくは、WinRT.Interop.InitializeWithWindow.Initializeを使う。これが公式に出ている方法で、StoreContextをキャストする必要がなく、したがってCOMの定義も要らなくなるので、やるならこちらだと思います。
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/uwp/monetize/in-app-purchases-and-trials#for-net-5-or-later&quot;&gt;Using the StoreContext class with the Desktop Bridge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/41f5885e6f995d682cfdc27ed222e85b.js&quot;&gt;&lt;/script&gt;

これを含めた更新のためのヘルパークラスの全体は以下のようになります。
&lt;script src=&quot;https://gist.github.com/emoacht/5f8e4d210c45a26b0c3bf0d1b9fd2b89.js&quot;&gt;&lt;/script&gt;</description><link>http://8thway.blogspot.com/2022/06/microsoftstore-update-net5.html.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-2969316372772945596</guid><pubDate>Sat, 27 Nov 2021 14:50:00 +0000</pubDate><atom:updated>2023-01-08T03:34:31.378+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ヘッドホン</category><title>ソリッドなL型ミニプラグ</title><description>ヘッドホンのミニプラグをオヤイデ電気の&lt;a href=&quot;https://shop.oyaide.com/products/p-4122.html&quot;&gt;P-3.5 SRL&lt;/a&gt;＋スプリングに交換したので、記録として。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg22ye6UFCvJ53oV2h95wKGARng45YswhANNsGBiGSEooXOuCB6FgvzDixhsQXH1Dq1S7LaXWPgeQ_S2a6FN4h8rllzk9K0m8KFpG2krlZQF7q_xrSSlyTAlLWSkbrmA8ceoLelsnPXS9Um/s1292/P-35-SRL-SurfacePro8.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1292&quot; data-original-width=&quot;1024&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg22ye6UFCvJ53oV2h95wKGARng45YswhANNsGBiGSEooXOuCB6FgvzDixhsQXH1Dq1S7LaXWPgeQ_S2a6FN4h8rllzk9K0m8KFpG2krlZQF7q_xrSSlyTAlLWSkbrmA8ceoLelsnPXS9Um/w508-h640/P-35-SRL-SurfacePro8.jpg&quot; width=&quot;508&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
有線ヘッドホンは、定番のオーソドックスなものにしておこうという理由でSonyの&lt;a href=&quot;https://www.sony.jp/headphone/products/MDR-CD900ST/&quot;&gt;MDR-CD900ST&lt;/a&gt;を随分前に買って、これは実際に交換部品の入手のしやすさで正解だったのだけど、元のプラグは太い標準プラグなのでミニプラグへの改造が前提で、これを何度か交換してきた。&lt;br /&gt;
&lt;br /&gt;
PCやタブレットのオーディオジャックは側面にあるので、L型のプラグの方が取り回しがよさそうということで、オヤイデのP-3.5 SRLを買ってみたものの、ハンダ付けの難易度が高そうなのと、スプリングが付いておらず、ケーブルの穴径が6mmで穴が余るので（後に穴径が4mmのものが出た）、使わずじまいになっていた。&lt;br /&gt;
&lt;br /&gt;
で、前回の交換時にハンダ付けに手間取っている間に熱で樹脂部分が傷んでいたのか、プラグが壊れたので、P-3.5 SRLを出して眺めていて、ふと思いついて前のプラグに付いていたスプリングをぐいぐい押し込んでみたら、スプリングの外径がぴったり合うことが分かったので、これでやってみるかと作業開始。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8hpWA0c05ASP-q3lEd7fogJc0enrFYfZRtNz_l4xutqoRwOQKRSoI3iwrQifRAt3eLUjtb-AUsLoyJDwln9ymdJIiHvmsi1XBBDQVlt2mTbCDvkumcjsZ_X2i51dnsevjskOmaX6aTqD4/s1024/P-35-SRL-Wiring1.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;738&quot; data-original-width=&quot;1024&quot; height=&quot;289&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8hpWA0c05ASP-q3lEd7fogJc0enrFYfZRtNz_l4xutqoRwOQKRSoI3iwrQifRAt3eLUjtb-AUsLoyJDwln9ymdJIiHvmsi1XBBDQVlt2mTbCDvkumcjsZ_X2i51dnsevjskOmaX6aTqD4/w400-h289/P-35-SRL-Wiring1.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
黒のアースを付ける位置に迷ったが、フラックスを塗布しておくことでハンダ付けは問題なく終了。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUHep5TTG8psQFbwLEnpcEYPBaBNn7ifeAU9Id9a9Ipv6utEN2JJPvKphl-mgTCTRDg-xQg_yIAyWmvlgo_XOQB4CVRPst0uxPcp8MFVREQMc1E497Vrf0E75vo7nNYvHA1Ej-ApaZh2_k/s1024/P-35-SRL-Wiring2.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;616&quot; data-original-width=&quot;1024&quot; height=&quot;241&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUHep5TTG8psQFbwLEnpcEYPBaBNn7ifeAU9Id9a9Ipv6utEN2JJPvKphl-mgTCTRDg-xQg_yIAyWmvlgo_XOQB4CVRPst0uxPcp8MFVREQMc1E497Vrf0E75vo7nNYvHA1Ej-ApaZh2_k/w400-h241/P-35-SRL-Wiring2.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
と思ったら、かしめるためにケーブルをねじる途中で黒が切れたので付け直してから固定。ちなみに、現行製品とは端子の穴が違う。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_x3EACQC49lA1XqAREro8mK2DKL0njPOLEaXQ6AHsbiPprRi1kdQjlLgzO-XvYdM1skbtdq39oqXnlTpHzWYo6yXh8UME9Wn7TMB1E7Jmgq6r4aKQUw7gEWKnp2oa0973KsP2vwy-zBDt/s1024/P-35-SRL-MDR-CD900ST.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;854&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_x3EACQC49lA1XqAREro8mK2DKL0njPOLEaXQ6AHsbiPprRi1kdQjlLgzO-XvYdM1skbtdq39oqXnlTpHzWYo6yXh8UME9Wn7TMB1E7Jmgq6r4aKQUw7gEWKnp2oa0973KsP2vwy-zBDt/s600/P-35-SRL-MDR-CD900ST.jpg&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
よく見ればスプリングとはメッキの光沢が違うものの、コンパクトかつソリッドな外見で、断線防止のスプリングもあるという、個人的に理想のL型ミニプラグができた。</description><link>http://8thway.blogspot.com/2021/11/L-shaped-miniplug.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg22ye6UFCvJ53oV2h95wKGARng45YswhANNsGBiGSEooXOuCB6FgvzDixhsQXH1Dq1S7LaXWPgeQ_S2a6FN4h8rllzk9K0m8KFpG2krlZQF7q_xrSSlyTAlLWSkbrmA8ceoLelsnPXS9Um/s72-w508-h640-c/P-35-SRL-SurfacePro8.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4543736602335741356</guid><pubDate>Sun, 14 Nov 2021 09:31:00 +0000</pubDate><atom:updated>2023-01-08T03:34:20.211+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Surface</category><category domain="http://www.blogger.com/atom/ns#">USBメモリ</category><category domain="http://www.blogger.com/atom/ns#">ストレージ</category><title>Surface Pro 8にWindows 10をインストール</title><description>Surface Pro 8はSurface Proシリーズのユーザーが待ち望んでいた新機種ですが、発売タイミングの関係か、一般向けはWindows 11プリインストール機のみの販売となっています。&lt;br /&gt;
&lt;br /&gt;
純粋に使うだけなら別にWindows 11でもいいですが、検証などを考えるとWindows 10の環境も当面必要なので、Windows 10をクリーンインストールしてみたところ、3点引っ掛かったことがあったので、メモしておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. インストール用USBメモリ&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
これはSurface Pro 8に特有の点ではないですが、Surface Pro 8のUSBコネクタはUSB-C（Thunderbolt 4）だけなので、インストール用USBメモリは、USB-Cのものを使うか、USB-CとUSB-Aの変換コネクタをかませる必要があります。&lt;br /&gt;
&lt;br /&gt;
ここで、容量が大きめ（32GB＝32768MB超）のUSBメモリを使おうとすると、フォーマットでファイルシステムが自動的にexFATになりますが、USBメモリからブートするにはFAT32である必要があるので、何らかの方法でFAT32にする必要があります。&lt;br /&gt;
&lt;br /&gt;
ただ、この点はMicrosoftのメディア作成ツールでUSBメモリの作成までやってしまえば、自動的に32GBでFAT32のパーティションが作られるので、たいした問題ではありません。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. 入力デバイス&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
インストール用USBメモリからブートすると、最初に言語や地域を設定する画面が出ますが、ここで&lt;u&gt;本体のタッチスクリーンもSignatureキーボードも全く反応せず、何も操作できない&lt;/u&gt;ので詰みます。&lt;br /&gt;
&lt;br /&gt;
この原因が分からず、しばらく試行錯誤したのですが、ふと外付けUSBキーボードを繋いでみたら動きました。
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX0HlB_9hX3fY34cBpZ3LhuxqeTSeSO5_KtcFPrmxBTzd58Hb2SmYKAgZ1ZgOl_erZhkoIInhVdXHhYyJAsA7XL_MGIXSsTtmKWM_v1voV_5aOF0rMaV7lbST5Q6xJUu_9Pzba9hpKbTUP/s1204/SurfacePro8-Install.jpg&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;954&quot; data-original-width=&quot;1204&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX0HlB_9hX3fY34cBpZ3LhuxqeTSeSO5_KtcFPrmxBTzd58Hb2SmYKAgZ1ZgOl_erZhkoIInhVdXHhYyJAsA7XL_MGIXSsTtmKWM_v1voV_5aOF0rMaV7lbST5Q6xJUu_9Pzba9hpKbTUP/s600/SurfacePro8-Install.jpg&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
つまり、タッチスクリーンにせよ、Signatureキーボードにせよ、これらのためのどこかのデバイスがインストーラーに含まれたインボックスドライバーでは動かないらしいというオチでした。これはOSのインストール後もWindows Updateをかけて各種ドライバーを更新するまで解決されないので、そういうことなのでしょう。&lt;br /&gt;
&lt;br /&gt;
正攻法で行くならば、Surface Pro 8のドライバーパッケージ（後述）から該当するドライバーを探し出し、予めインストーラーに組み込んでおく方法で解決できるはずですが、USBキーボードを繋いだ方が百倍速いということで。&lt;br /&gt;
&lt;br /&gt;
なお、使用したインストーラーは21H1のもので、Windows 11のインストーラーでも同じでしたが、いずれ修正されるかも。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. 内蔵カメラ&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
OSのインストール後にWindows Updateをかければ、ほとんどのデバイスは使用可能になりますが、内蔵カメラだけは使えません。カメラが使えないということはWindows Helloの顔認証も使えないということで、実用上見過ごせない問題です。&lt;br /&gt;
&lt;br /&gt;
デバイスマネージャーをWindows 11と見比べると、Windows 11では「カメラ」に存在する「Intel(R) TGL AVStream Camera」が存在せず、代わりに「ほかのデバイス」に「ISP Camera Device」があるので、これがそれらしいと目星はつきましたが、Windows Updateではドライバーが入りません。
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIAH0XqaB8N7HC2135AxsCRowXgWf2q7RhNZYMkMo1OKvntAboNwVM99tmPUGPgr1hAfd3v3CFShomX19ey4P-7zT1VWKJ-HD3uJhnYqkRHaDH2YLoLl43rGALcEGzNrtDbyVnFQ5t-NjA/s1258/isp_camera_device.png&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;1258&quot; data-original-width=&quot;1194&quot; height=&quot;600&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIAH0XqaB8N7HC2135AxsCRowXgWf2q7RhNZYMkMo1OKvntAboNwVM99tmPUGPgr1hAfd3v3CFShomX19ey4P-7zT1VWKJ-HD3uJhnYqkRHaDH2YLoLl43rGALcEGzNrtDbyVnFQ5t-NjA/s600/isp_camera_device.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
しばらく探したところ、MicrosoftがSurface Pro 8のWindows 11用のドライバーパッケージを公開していました。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.microsoft.com/en-us/download/details.aspx?id=103503&quot;&gt;Surface Pro 8 Drivers and Firmware&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style=&quot;color: red;&quot;&gt;この中のWindows 10用（SurfacePro8_Win10_19042で始まるもの）をインストールし、展開された「SurfaceUpdate」フォルダーの中から「Cameras」フォルダーを指定して、&lt;/span&gt;「ISP Camera Device」のドライバーの更新をかけたところ、「Intel(R) TGL AVStream Camera」が出現し、カメラが使えるようになりました。これでWindows Helloの顔認証も問題なし。&lt;br /&gt;
&lt;br /&gt;
以上で、とりあえずのところ、Windows 10の動作に支障は出ていません。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[追記]&lt;/b&gt;&lt;br /&gt;
11/19に&lt;span style=&quot;color: red;&quot;&gt;Windows 10用のドライバーパッケージが追加されたので、Windows 11に一旦インストールする工程は不要になりました。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4. おまけ&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
今回のSurface Pro 8はi7のモデルを買いましたが、季節柄か普段使いではファンはほとんど回らないので静かです。&lt;br /&gt;
&lt;br /&gt;
ストレージは512GBですが、ベンダーは予想外の&lt;span style=&quot;font-size: large;&quot;&gt;KIOXIA&lt;/span&gt;。
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEaE5nO5c0x-c4-kV-fUbMukQ61_YmSSAE3uMnsOEOWqR4RwLDqVYLETvuOcGHzOrZRMi9_NEgPe8cG6I0cDdoPnzDPEqjGs4tsAIY1VV87sf3Byokf1Krx1Udu3PPeeKQbMQ8SX2WL7PL/s2004/CrystalDiskInfo_20211110181249.png&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;1379&quot; data-original-width=&quot;2004&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEaE5nO5c0x-c4-kV-fUbMukQ61_YmSSAE3uMnsOEOWqR4RwLDqVYLETvuOcGHzOrZRMi9_NEgPe8cG6I0cDdoPnzDPEqjGs4tsAIY1VV87sf3Byokf1Krx1Udu3PPeeKQbMQ8SX2WL7PL/s600/CrystalDiskInfo_20211110181249.png&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
型番のKBG40ZNSで検索してみると、&lt;a href=&quot;https://business.kioxia.com/ja-jp/ssd/client-ssd/bg4.html&quot;&gt;BG4&lt;/a&gt;というシリーズのSSDのようです。ホワイトペーパーによると、CrystalDiskMark 6.0による計測でシーケンシャルリードが最大2,336MB/s、シーケンシャルライトが最大1,815MB/sということなので、以下のCrystalDiskMark 8.0の結果は大体こんなものかと思います。
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEpnZx9KDTphyphenhyphenudKKLTIpmOkjkW_Noj3nfCn_nZDIXkJTqO1h6S-Zj7SWD2EeMrBwU1sInswo8QsP6joacCWjtGkuYHV82PtDIETR5srvpKcOmf1geGh8yFE9IbMpji_Ma_FQswanoG-MB/s2004/CrystalDiskMark_20211110182159.png&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;1099&quot; data-original-width=&quot;2004&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEpnZx9KDTphyphenhyphenudKKLTIpmOkjkW_Noj3nfCn_nZDIXkJTqO1h6S-Zj7SWD2EeMrBwU1sInswo8QsP6joacCWjtGkuYHV82PtDIETR5srvpKcOmf1geGh8yFE9IbMpji_Ma_FQswanoG-MB/s600/CrystalDiskMark_20211110182159.png&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
SignatureキーボードはUS版をAmazon USから購入。色はSurface Pro 7で使ってきたプラチナという名のグレイの使用感が今一だったのでブラックにしましたが、地味だったかも。
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNIc7fvORhYbmd1mtMJn3zRaq07RRrkvpM27ySG37I1lp3kHNYO9qGM1-HCUpkG-qFK0Y5TZWj1Ob0IzCqbZAtXWdOuIXE0ONc6I8EN3GfZEKFolno43DLiwT9nA1-_2p0K14b9Okk4wYR/s1124/Signature-Keyboard.jpg&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;848&quot; data-original-width=&quot;1124&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNIc7fvORhYbmd1mtMJn3zRaq07RRrkvpM27ySG37I1lp3kHNYO9qGM1-HCUpkG-qFK0Y5TZWj1Ob0IzCqbZAtXWdOuIXE0ONc6I8EN3GfZEKFolno43DLiwT9nA1-_2p0K14b9Okk4wYR/s600/Signature-Keyboard.jpg&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description><link>http://8thway.blogspot.com/2021/11/SurfacePro8.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX0HlB_9hX3fY34cBpZ3LhuxqeTSeSO5_KtcFPrmxBTzd58Hb2SmYKAgZ1ZgOl_erZhkoIInhVdXHhYyJAsA7XL_MGIXSsTtmKWM_v1voV_5aOF0rMaV7lbST5Q6xJUu_9Pzba9hpKbTUP/s72-c/SurfacePro8-Install.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4656756017976497574</guid><pubDate>Fri, 08 Oct 2021 06:55:00 +0000</pubDate><atom:updated>2021-11-15T23:17:45.478+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoftストア</category><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>Winget 1.1</title><description>CUIからソフトウェアパッケージのインストールができるWindows Package Manager、別名WingetのVer 1.1がリリースされています。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://devblogs.microsoft.com/commandline/windows-package-manager-1-1/&quot;&gt;Windows Package Manager 1.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Wingetは活発に開発が進められていますが、今回の大きな変化としてMicrosoftストアのアプリにもアクセスできるようになっています。これがどういうことかというと、従来はアプリをWingetでインストールできるようにするには、Wingetのレポジトリに登録する作業が必要だったのですが、Microsoftストアにあるアプリはこれが不要になり、そのままでWingetから見えるようになりました。&lt;br /&gt;
&lt;br /&gt;
したがって、Wingetが使える環境であれば、例えばMonitorianをインストールするのに、コマンドプロンプトから以下を実行するだけでできてしまいます。
&lt;pre class=&quot;code&quot;&gt;winget install Monitorian
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;超簡単！ 便利！ 楽！&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
まあ実用的に使うには、どうオプションを付けるか考えて詰める必要はありますが。&lt;br /&gt;
&lt;br /&gt;
既存のChocolateyもありますが、追加的な手間がかからないというのは大きいです。</description><link>http://8thway.blogspot.com/2021/10/winget-11.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4515648338826372956</guid><pubDate>Wed, 04 Aug 2021 03:35:00 +0000</pubDate><atom:updated>2023-01-06T10:48:44.145+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoftストア</category><category domain="http://www.blogger.com/atom/ns#">WinRT</category><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>Microsoftストアからのアプリの更新</title><description>Microsoftストアで公開したアプリは、Desktop Bridgeの場合も含めて、新しいバージョンが公開されているときは「Microsoft Store」アプリでそのアプリのページを開くと自動的に更新がかかります。ただ、これは往々にしてエラーになり、一旦アンインストールしての再インストールを強いられたりします。&lt;br /&gt;
&lt;br /&gt;
一方、ストアのAPIには、アプリからアプリ自身の更新ができるAPIが用意されています。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/uwp/packaging/self-install-package-updates&quot;&gt;Download and install package updates from the Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
このAPIはてっきりUWP用かと思っていたのですが、Desktop Bridgeでも使えるようなので、試してみました。&lt;br /&gt;
&lt;br /&gt;
上のページにあるサンプルを必須部分だけにして、&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/uwp/monetize/in-app-purchases-and-trials#desktop&quot;&gt;Desktop Bridge用の処理&lt;/a&gt;を加えると以下のようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/82065c05b4a98167c45162acf4516644.js&quot;&gt;&lt;/script&gt;
見てのとおり、&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/windows.services.store.storecontext.getappandoptionalstorepackageupdatesasync&quot;&gt;StoreContext.GetAppAndOptionalStorePackageUpdatesAsync&lt;/a&gt;メソッドで新しいバージョンのあるパッケージ情報（&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/Windows.Services.Store.StorePackageUpdate&quot;&gt;StorePackageUpdate&lt;/a&gt;）を取得して、この有無をチェックする&lt;/li&gt;
  &lt;li&gt;この情報を使って&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/windows.services.store.storecontext.requestdownloadandinstallstorepackageupdatesasync&quot;&gt;StoreContext.RequestDownloadAndInstallStorePackageUpdatesAsync&lt;/a&gt;メソッドを実行する&lt;/li&gt;
&lt;/ol&gt;
これだけ見ると簡単です。が、テストしてみると全然ダメでした。&lt;br /&gt;
&lt;br /&gt;
1.は、常にパッケージ情報が1つ返ってくるが、このパッケージのバージョン（StorePackageUpdate.Package.Id.Version）は、新しいパッケージのバージョンではなく、現在実行中のパッケージのバージョンを示すので、新しいパッケージがあるかは判別できない。&lt;br /&gt;
&lt;br /&gt;
2.は、このパッケージ情報を使って実行しても現在のパッケージが再インストールされるだけのようで、更新にならない。&lt;br /&gt;
&lt;br /&gt;
これは使い物にならないかなと思いつつ、数少ない先例を見てみると、少し気になることが。
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/microsoft/Windows-Dev-Performance/issues/22&quot;&gt;GetAppAndOptionalStorePackageUpdatesAsync Still Broken&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/answers/questions/59707/how-can-we-check-the-new-version-of-app-update-is.html&quot;&gt;How Can we Check the New Version of app update is available in store [UWP] programmatically.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
この下の方で、Microsoftの人がどの環境（テスト用か、本番用か）で実行したか聞いているので、環境によって動作が違うのかも。と、自分もローカルでWindows Application Packaging Projectからインストールした場合と、ストアでPackage flight（特定ユーザーへの限定公開＝テスト用）として公開した場合で試しただけだったので、この際、ストアでSubmission（一般ユーザーへの公開＝本番用）として公開してみました（これを実行する古いパッケージと、新しいパッケージの両方）。&lt;br /&gt;
&lt;br /&gt;
その結果、この状態であれば期待どおりに更新に使えることが分かりました。&lt;br /&gt;
&lt;br /&gt;
1.は、新しいパッケージがないときはパッケージ情報が返ってこないので、その有無を捉えればよい。すなわち、以下のように、上のメソッドの前半だけで判別可能。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/0f8852e4eda8f93323d52636c91cd53c.js&quot;&gt;&lt;/script&gt;
2.は、このパッケージ情報を使って実行すると新しいパッケージがインストールされる。&lt;br /&gt;
&lt;br /&gt;
ということで、Desktop Bridgeでも使えることが確認できました。このAPIを利用すればアプリに手動/自動での更新機能を付けられるので便利、なのですが、デバッグを本番環境でやらなければならない、そのために修正の度にパッケージをSubmissonとして公開しなければならないのは、時間的に勘弁してほしいとこです。</description><link>http://8thway.blogspot.com/2021/08/microsoftstore-update.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-8232657861735494246</guid><pubDate>Sat, 29 May 2021 15:25:00 +0000</pubDate><atom:updated>2021-05-30T11:05:25.402+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ストレージ</category><title>タフな2.5インチドライブ用ケース</title><description>2.5インチドライブ用の外付けケースとして最もタフな部類に入るSilverStoneの&lt;a href=&quot;https://silverstonetek.com/product.php?pid=644&quot;&gt;SST-MMS01B&lt;/a&gt;を使っていましたが、StarTech.comの&lt;a href=&quot;https://www.startech.com/ja-jp/hdd/s251bru31c3&quot;&gt;S251BRU31C3&lt;/a&gt;に買い替えたので、記録として。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj26732HMJRDZ4wlsihdV6CEFZbbcrnVMNkAoVOm2DVz3TmJt79YXLyCOKU5Q4FXh0N0J1wFlw7Hqlopbd4fbJubpvBIHascuKhXXyx0_UtLugh7Tk5fVN80xI2ji39BbI7Ft5-cXZ7McTl/s1024/s251bru31c3-1.jpg&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;822&quot; data-original-width=&quot;1024&quot; height=&quot;411&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj26732HMJRDZ4wlsihdV6CEFZbbcrnVMNkAoVOm2DVz3TmJt79YXLyCOKU5Q4FXh0N0J1wFlw7Hqlopbd4fbJubpvBIHascuKhXXyx0_UtLugh7Tk5fVN80xI2ji39BbI7Ft5-cXZ7McTl/w400-h321/s251bru31c3-1.jpg&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
この2つ、ベンダーは違いますが、コントローラー基板以外の筐体は見たとおり全く同じなので、ODM元は同じなのでしょう。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHQDQrksoXg41gJ0O5KFcHvAJ6X8IsKKVXSw3Y72V2lEaiHV6-aZhY0lHOcY-dPBbnhM2RqwvcONx9xFgrByu_Fuq6wmAchKOxOytH9uzQpoWO4NNhVzgQMXYKFBKYV6vwADI3DS__OQTj/s1024/s251bru31c3-2.jpg&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;460&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHQDQrksoXg41gJ0O5KFcHvAJ6X8IsKKVXSw3Y72V2lEaiHV6-aZhY0lHOcY-dPBbnhM2RqwvcONx9xFgrByu_Fuq6wmAchKOxOytH9uzQpoWO4NNhVzgQMXYKFBKYV6vwADI3DS__OQTj/s600/s251bru31c3-2.jpg&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
インターフェイスとコネクタは以下のとおり。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;SST-MMS01B : USB 3.0 : Micro-B 3.0&lt;/li&gt;
  &lt;li&gt;S251BRU31C3 : USB 3.1 : USB-C&lt;/li&gt;
&lt;/ul&gt;
Micro-B 3.0はとにかく華奢で、SST-MMS01Bでもいかにもタフな筐体に見合っていない感がありましたが、どうもコネクタが歪んでしまったようで、わざと傾けて力をかけないと認識されなくなったので、引退となりました。その点、S251BRU31C3のUSB-Cはコネクタがカチリと固定されて安定感があります。&lt;br /&gt;
&lt;br /&gt;
筐体の中はどんなものかというと、ドライブはコネクタ以外の全方向がゴム素材で支えられる構造になっていて、縁には防水のパッキンがあります。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsH8gcf9Ja9yaU9AOzLlHZGcRxrKADVtQGiBftuNsJciYiiIOeji5KVw8ic4IaXHFOdK5WmVJSteOB5-VTwSqWd3IuXfPnQvEMmzCf01yr1kyGTNMUu-ZRN-5UDJxSthhg3QaFW3FHDAOW/s1536/s251bru31c3-3.jpg&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;992&quot; data-original-width=&quot;1536&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsH8gcf9Ja9yaU9AOzLlHZGcRxrKADVtQGiBftuNsJciYiiIOeji5KVw8ic4IaXHFOdK5WmVJSteOB5-VTwSqWd3IuXfPnQvEMmzCf01yr1kyGTNMUu-ZRN-5UDJxSthhg3QaFW3FHDAOW/s600/s251bru31c3-3.jpg&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
蓋は六角ネジで固定するようになっています。外側のゴムジャケットも合わせて厚みは30mmとなるので、ドライブが9.5mm厚として上下に10mmの緩衝スペースがある計算になります。見えませんが、ネジ穴部分の内側にワッシャー型のパッキンがあり、ネジ穴からの防水になっています。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyeRLaec57EgPwuwGttiywh8od_fVf72AyTYkKxaNJMao3qzJJHGgx2RcWd8XtXdCCbIPAIYurUk0GXJGrUnAwYILUtpt59kOWY335Zk_Q73wbCx5qd1_GxePveasbavM88Dve2dljHHO_/s1536/s251bru31c3-4.jpg&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;1020&quot; data-original-width=&quot;1536&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyeRLaec57EgPwuwGttiywh8od_fVf72AyTYkKxaNJMao3qzJJHGgx2RcWd8XtXdCCbIPAIYurUk0GXJGrUnAwYILUtpt59kOWY335Zk_Q73wbCx5qd1_GxePveasbavM88Dve2dljHHO_/s600/s251bru31c3-4.jpg&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
コネクタにはパッキン付きの蓋があります。コネクタの貫通部はシールされているようには見えないので、蓋は閉めておかないと防水性は発揮されないかと。
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9Kl00nbKtK0B5I6OGxLL5bkk_Xu9q927kPLcK1rCfsUAivMD7JAkXXsFVEBi_ZTg__YPRlBB_NmwA5vPxJrYvoTzzYBxqL2dHCMxvTcB9Aazce78XKgJH5NARbMUyQHjk1F5glooCRJnM/s1024/s251bru31c3-5.jpg&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;836&quot; data-original-width=&quot;1024&quot; height=&quot;418&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9Kl00nbKtK0B5I6OGxLL5bkk_Xu9q927kPLcK1rCfsUAivMD7JAkXXsFVEBi_ZTg__YPRlBB_NmwA5vPxJrYvoTzzYBxqL2dHCMxvTcB9Aazce78XKgJH5NARbMUyQHjk1F5glooCRJnM/w400-h327/s251bru31c3-5.jpg&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
一応性能確認のため、古いものですがSanDiskのExtreme Proを繋いでMBP2019からAmorphousDiskMarkで計測した結果。コントローラーはasmediaのASM235CMでした。
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87bhKn3pSQ8zp9ha1y5-li2e1-YvlnF1BMttQ4kvEvZA9j5oAvknPHNBTckMWM-w6Ebj1vEAI6G2bIaj0UBwFOO8sPgI_F76gBCeoW7UmRdXDo1wOAomlZBDzKCtx3XdqHjahozI9oqQ6/s0/amorphouse.png&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;396&quot; data-original-width=&quot;560&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg87bhKn3pSQ8zp9ha1y5-li2e1-YvlnF1BMttQ4kvEvZA9j5oAvknPHNBTckMWM-w6Ebj1vEAI6G2bIaj0UBwFOO8sPgI_F76gBCeoW7UmRdXDo1wOAomlZBDzKCtx3XdqHjahozI9oqQ6/s0/amorphouse.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
性能的には十分かと思います。&lt;br /&gt;
&lt;br /&gt;
ということで、データを物理的要因から保護するケースとして現状不満点はないです。なお、難点というほどではないですが、アクセスランプはなく、HDDでも動作音はほとんど漏れてこないので、外からは動作状況が分からないのが注意点ではあります。</description><link>http://8thway.blogspot.com/2021/05/s251bru31c3.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj26732HMJRDZ4wlsihdV6CEFZbbcrnVMNkAoVOm2DVz3TmJt79YXLyCOKU5Q4FXh0N0J1wFlw7Hqlopbd4fbJubpvBIHascuKhXXyx0_UtLugh7Tk5fVN80xI2ji39BbI7Ft5-cXZ7McTl/s72-w400-h321-c/s251bru31c3-1.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4408853051404901034</guid><pubDate>Tue, 04 May 2021 12:32:00 +0000</pubDate><atom:updated>2023-01-08T03:34:05.119+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Window Hello</category><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>Hello Switcherのサービス化</title><description>ノートやタブレットPCでWindows Hello対応の内蔵カメラがある場合、Windows Hello対応のWebカメラを接続しても、Windows Helloに使われるカメラを切り換えられない問題は、Microsoftでも認識されているようです。
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/hello-faq#can-i-use-an-external-camera-when-my-laptop-is-closed-or-docked&quot;&gt;Can I use an external camera when my laptop is closed or docked?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
最近ようやくというか、周辺機器メーカーから普及帯のWindows Hello対応Webカメラが出ましたし（エレコムの&lt;a href=&quot;https://www.elecom.co.jp/news/new/20210302-03/&quot;&gt;UCAM-CF20FBBK&lt;/a&gt;）、既にDellやLenovoからWindows Hello対応カメラ付きのモニターも出ています。中でもMicrosoft Teams専用機能を謳った&lt;a href=&quot;https://japancatalog.dell.com/pd/c2422he.html&quot;&gt;C2422HE&lt;/a&gt;について、Dellのサポートに問い合わせてみたところ、やはりPC本体にWindows Hello対応カメラがある場合はモニターのカメラは使えないとの回答でした。この問題にぶち当たるケースが増えるにつれ、Microsoftでもいつまでも放置はされないかもと想像しています。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiZa-w8f7K9hWbSVnbOWmSHGgXVwlhR1TiMP4xASMzCEcDh2p-K1Vs1i2thpo7Jq6qLSWBnQGII-nnEKTL7o6vLKzO6JBkaTrPm-4JMTnqVBKf3FDfvjScFhMya6cdkO1FXnUl0Py8W8ow/s1024/500fhd-surfacepro4.jpg&quot; style=&quot;display: block; padding: 1em 0px; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;928&quot; data-original-width=&quot;1024&quot; height=&quot;363&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiZa-w8f7K9hWbSVnbOWmSHGgXVwlhR1TiMP4xASMzCEcDh2p-K1Vs1i2thpo7Jq6qLSWBnQGII-nnEKTL7o6vLKzO6JBkaTrPm-4JMTnqVBKf3FDfvjScFhMya6cdkO1FXnUl0Py8W8ow/w400-h363/500fhd-surfacepro4.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
ともあれ、この問題を解決するためのHello Switcherですが、これまでの実績上、切換え機能自体には問題なさそうです。
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/emoacht/HelloSwitcher&quot;&gt;emoacht/HelloSwitcher&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
一方で、ログイン後という起動タイミングに起因する問題は如何ともしがたく、未解決の問題として残っていました。すなわち、電源オフの間やサスペンド中にUSBカメラの着脱があった場合、その後のログイン前にカメラの切換えは当然できません。&lt;br /&gt;
&lt;br /&gt;
試しにタスクスケジューラでの開始タイミングをスタートアップ時に変えてみましたが（この状態だとUIを出せないので、実用的ではない）、ログイン前にカメラの切換えが間に合う場合もあれば合わない場合もあり、解決策にはならず。&lt;br /&gt;
&lt;br /&gt;
よって、Windowsサービスの実行ファイルも作成し、通常のアプリと併用する（アプリの実行中はサービスはPausedにしておく）方針に変えました。
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzCl1cBDBzI-jrqzEutMJjVCvZD87Dfzlc1xb-_w59oE1wFfBX0kcattBCiqIMfzWmlHesD7hETrVwmbOzMd6VdB26rBQ4RyKTVEGpnLJaLp0ulvhuBnNHZPalBTIMRXwzvBE3CTbn_GDL/s860/services.png&quot; style=&quot;display: block; padding: 1em 0px; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;400&quot; data-original-width=&quot;860&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzCl1cBDBzI-jrqzEutMJjVCvZD87Dfzlc1xb-_w59oE1wFfBX0kcattBCiqIMfzWmlHesD7hETrVwmbOzMd6VdB26rBQ4RyKTVEGpnLJaLp0ulvhuBnNHZPalBTIMRXwzvBE3CTbn_GDL/s600/services.png&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
この結果、切換えが間に合わなくなる場面はほぼなくなりました。ということで、ようやくアプリとして所期の要求を満たすようになりました、パチパチ。&lt;br /&gt;
&lt;br /&gt;
実際、サービスとして動かしている限り、表に出ることもなく自動的に切り換えるので、OSの標準機能と変わりません。これで、この問題は実質的には解決かなと。
</description><link>http://8thway.blogspot.com/2021/05/hello-switcher.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiZa-w8f7K9hWbSVnbOWmSHGgXVwlhR1TiMP4xASMzCEcDh2p-K1Vs1i2thpo7Jq6qLSWBnQGII-nnEKTL7o6vLKzO6JBkaTrPm-4JMTnqVBKf3FDfvjScFhMya6cdkO1FXnUl0Py8W8ow/s72-w400-h363-c/500fhd-surfacepro4.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-652049854174424940</guid><pubDate>Mon, 03 May 2021 05:57:00 +0000</pubDate><atom:updated>2021-05-08T07:02:22.746+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>Windowsサービスでデバイスイベントを捕捉する</title><description>実行ファイルをWindowsサービスとして動かすために.NETではSystem.ServiceProcess名前空間に&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicecontroller&quot;&gt;ServiceContoller&lt;/a&gt;と&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicebase&quot;&gt;ServiceBase&lt;/a&gt;クラスが用意されていて、これらに則れば比較的容易にサービスを実装できますが、このServiceBaseの派生クラスからデバイスイベント（USBデバイスの着脱）を捕捉するにはどうすればいいか、鉄板的なものが見当たらなかったので、メモしておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. 基本&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Win32的には、Windowsサービスは大体以下のような仕組みになっているようです。
&lt;ol style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;まずサービス名を指定してCreateService関数でサービスを生成する。&lt;/li&gt;
  &lt;li&gt;このサービス名とコールバック関数を指定してRegisterServiceCtrlHandler関数を実行すると、サービス自体の管理用（開始、停止等）のコントロールコードがこのコールバック関数に流れてくるようになる。また、この関数の実行時にサービスステータスハンドルが返ってくるので、これをサービスステータスの管理等に利用する。&lt;/li&gt;
  &lt;li&gt;または、このサービス名とコールバック関数を指定してRegisterServiceCtrlHandlerEx関数を実行すると、２のコントロールコードに加えて、デバイスイベントを含めたシステムイベントのコントロールコードも流れてくるようになる（デバイスイベントの場合は、さらにサービスステータスハンドルを指定してイベントへの登録が必要。この部分はWindowを持つアプリでWindowメッセージを処理するのと基本同じ）。具体的なイベントについては、このコールバック関数（&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nc-winsvc-lphandler_function_ex&quot;&gt;LPHANDLER_FUNCTION_EX&lt;/a&gt;）を参照。&lt;/li&gt;
&lt;/ol&gt;
ServiceBaseはこの2と、3のシステムイベントについては電源イベント（SERVICE_CONTROL_POWEREVENT）とセッションイベント（SERVICE_CONTROL_SESSIONCHANGE）まで実装していますが、デバイスイベント（SERVICE_CONTROL_DEVICEEVENT）は実装していません。というか、&lt;a href=&quot;https://github.com/microsoft/referencesource/blob/master/System.ServiceProcess/ServiceBase.cs&quot;&gt;ソース&lt;/a&gt;を見ると、&lt;a href=&quot;https://github.com/microsoft/referencesource/blob/5697c29004a34d80acdaf5742d7e699022c64ecd/System.ServiceProcess/ServiceBase.cs#L386-L417&quot;&gt;実装しかけたまま放置された&lt;/a&gt;ようで、これも実装してあれば手間が省けたのですが。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. 実装&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
デバイスイベントの捕捉については、ざっと探して以下の先例がありました。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.codeproject.com/Articles/32026/Capturing-Device-Events-in-a-C-Windows-Service&quot;&gt;Capturing Device Events in a C# Windows Service&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
このコードをダウンロードして見ると、ServiceBaseの派生クラス上で上記の3を行い、イベントを独自のコールバック関数で捕捉するようにしています。つまり、ServiceBase内と二重にRegisterServiceCtrlHandlerEx関数を実行しているわけですが、こうするとServiceBase内のコールバック関数へのポインターが上書きされるようで、ServiceBase内のサービスステータス管理用の処理が実行されなくなります。このため、独自のコールバック関数の方でSERVICE_CONTROL_STOPを捕捉してServiceBase.Stopメソッドを呼んでいます。&lt;br /&gt;
&lt;br /&gt;
とりあえず確認したところ、デバイスイベントの捕捉は問題なくできましたが、致命的な問題が。サスペンド時（Windows 10では、標準では「シャットダウン」がサスペンドになる）にAccessViolationExceptionが発生します。これは少し確認したところ、RegisterServiceCtrlHandlerEx関数を実行しただけで起こり、たぶんアンマネージドなハンドル絡みだと思うので、ほぼ対処不能。&lt;br /&gt;
&lt;br /&gt;
ではどうするかというと、既にServiceBase内にコールバックの仕組みはあるので、これを利用できないかとソースを改めて見ると、コールバック関数に来たコントロールコードは途中で捕捉されなければ最終的に&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicebase.oncustomcommand&quot;&gt;ServiceBase.OnCustomCommand&lt;/a&gt;メソッドに流れてくるので、これを捕捉すればよいと発見（LPHANDLER_FUNCTION_EXにおけるdwControl ＝ ServiceBase.OnCustomCommandにおけるcommand）。カスタムコマンドは128から255までという決まりがあり、SERVICE_CONTROL_DEVICEEVENTは11なので、この範囲に入りませんが、わざわざフィルターしているわけでもないので。&lt;br /&gt;
&lt;br /&gt;
ということで、これなら簡単に実装できます。デバイスイベントへの登録はWindowメッセージの場合とDEVICE_NOTIFY_SERVICE_HANDLE以外は同じ。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/cc2f336acc388d8921079d53a8f4e96b.js&quot;&gt;&lt;/script&gt;
なお、OnStartでRegisterの前にUnregisterしているのは、OnStartの後に必ずOnStopが来るとは限らないため。&lt;br /&gt;
&lt;br /&gt;
惜しむらくは、一緒に来るdwEventType（WM_DEVICECHANGEにおけるwParamと同じ）とlpEventData（同じくlParamと同じ）は流れてこないので、デバイスイベントが起きたことしか分からないことですが、イベントがあったことが分かればやりようはあるので。&lt;br /&gt;
&lt;br /&gt;
このサンプルのレポジトリは以下。
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/emoacht/DeviceDetect&quot;&gt;emoacht/DeviceDetect&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
以上で用には足りますが、ServiceBaseクラスは.NETでサービスを使うには必須の基底クラスなので、もう少し拡張にオープンにしてほしかったというのが率直な印象でした。</description><link>http://8thway.blogspot.com/2021/05/windows-service.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4730735884709923971</guid><pubDate>Sat, 10 Apr 2021 14:08:00 +0000</pubDate><atom:updated>2021-12-27T15:23:47.101+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>ストライプ付きプログレスバー</title><description>プログレスバーの最近の流行りは、コンテンツを邪魔しないように細くして、存在感を主張しないものだと思いますが、控えめにアクセントを付ける方法として、ストライプを付けるものがあります。それで、進行中はストライプをアニメーションさせると。&lt;br /&gt;
&lt;br /&gt;
WPFというかXAMLのアニメーションはその辺柔軟なので、それほど難しくはないです。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/febe527df16dd302d55f80921e044be0.js&quot;&gt;&lt;/script&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOkWMAREZUjUnmLKbh-2p7LFYo9sE3PTh5TOLvfcVMSMCB4aoJMK8AnZb44cZ0aHL3wZN8ByX96ldKwDjTDCPn_JhlmOOrfe78lGJn1-3mURokl3Z9cTelGgYuK2p72oAilc38CXBpT2E9/s678/StripedProgressBar.png&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;193&quot; data-original-width=&quot;678&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOkWMAREZUjUnmLKbh-2p7LFYo9sE3PTh5TOLvfcVMSMCB4aoJMK8AnZb44cZ0aHL3wZN8ByX96ldKwDjTDCPn_JhlmOOrfe78lGJn1-3mURokl3Z9cTelGgYuK2p72oAilc38CXBpT2E9/s600/StripedProgressBar.png&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
ポイントとしては、連続して描画するタイプの要素をアニメーションさせるときは、その開始位置の値を変えていくようにすれば、比較的簡単にできます。上の例ではDrawingBrushをTileMode=&quot;Tile&quot;を指定して敷き詰め、位置をViewportで決めていますが、このXの値を変えてアニメーションさせています。&lt;br /&gt;
&lt;br /&gt;
ここでもう一つポイントとして、アニメーションにはプリミティブな値を変えるDoubleAnimationやColorAnimationをよく使いますが、Viewportの型はRectなので、この中のXはDoubleAnimationでは対象に指定できません。こういう場合は、複合的な値であるRectを変える&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.animation.rectanimation&quot;&gt;RectAnimation&lt;/a&gt;が用意されているので、これを使えばいいわけです。&lt;br /&gt;
&lt;br /&gt;
同じようにThickness（Marginの型）を変える&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.animation.thicknessanimation&quot;&gt;ThicknessAnimation&lt;/a&gt;、Pointを変える&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.animation.pointanimation&quot;&gt;PointAnimation&lt;/a&gt;、Sizeを変える&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.animation.sizeanimation&quot;&gt;SizeAnimation&lt;/a&gt;もあるので、幾何学的に変化させるアニメーションは大体カバーできます。これら以外にも、&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.animation.animationtimeline&quot;&gt;AnimationTimeline&lt;/a&gt;の派生クラスを見ると、予め用意されているAnimationをチェックできます。&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/emoacht/WpfControlCollection&quot;&gt;emoacht/WpfControlCollection&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://8thway.blogspot.com/2021/04/striped-progressbar.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOkWMAREZUjUnmLKbh-2p7LFYo9sE3PTh5TOLvfcVMSMCB4aoJMK8AnZb44cZ0aHL3wZN8ByX96ldKwDjTDCPn_JhlmOOrfe78lGJn1-3mURokl3Z9cTelGgYuK2p72oAilc38CXBpT2E9/s72-c/StripedProgressBar.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-1307983741921855393</guid><pubDate>Thu, 11 Feb 2021 05:43:00 +0000</pubDate><atom:updated>2023-01-08T03:33:55.130+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>マルチタッチによるクリックの判別</title><description>WPF上のタッチ操作でシングルタッチによるものか、マルチタッチによる（指を複数使う）ものかは、Manipulation系のイベントであれば直接判別できるようになっていますが、移動を伴わないTouch系のイベントのときは直接分かるものがないので、どうするか考えてみた話です。&lt;br /&gt;
&lt;br /&gt;
そんなに難しいことでもなく、Touch系のイベントで来る&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.windows.input.toucheventargs&quot;&gt;TouchEventArgs&lt;/a&gt;のTouchDeviceがイベントを起こした個々のデバイス（指）を示すので、このIdを記録して、これが一連のイベントが終わるまでに一つしか来ていなければシングルタッチ、複数来ていればマルチタッチと判別できます。&lt;br /&gt;
&lt;br /&gt;
以下のButtonの例では、PreviewTouchDownイベントごとにTouchDeviceのIdをHashSetに記録していき、Clickイベントのときに複数来ているか判別した後で、HashSetを初期化しています。なお、タッチ操作の終わりに常にClickイベントが来るわけではないので、PreviewTouchUpイベントを引っ掛けた上で、これはClickイベントより先に来るので、1秒の猶予をおいてから初期化するようにしています。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/f8c00c6423c8cc50614eb0d43345c37f.js&quot;&gt;&lt;/script&gt;

なお、一つのTouchDeviceがPreviewTouchDownで何回も来ることはないと割り切れば、単なるカウンターでも十分な気はします。&lt;br /&gt;
&lt;br /&gt;
より実用的に、ClickイベントからBehaviorのCallMethodActionを実行するようにしている場合、そのIsEnabled依存関係プロパティとbindingを張ってもいいですが、そのために妙にコードが増えるのもうまくないので、CallMethodActionの分も含めてBehaviorにまとめたのが以下。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/50b3301532494baec679121925cf1e2a.js&quot;&gt;&lt;/script&gt;

サンプル全体は以下。
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/emoacht/WpfMultiTouch&quot;&gt;emoacht/WpfMultiTouch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
以上でシングルタッチかマルチタッチかに応じて実行するメソッドを切り替えられるようになりましたが、実際に試してみると、2つの指を合わせて、それぞれ認識されるまでタッチしてから離す（完全に同時にタッチする必要はない）操作は慣れが必要で、タッチデバイスにもよるでしょうが、この操作の実用性自体が少し微妙なことに気づきました。</description><link>http://8thway.blogspot.com/2021/02/multi-touch.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4207519837918962425</guid><pubDate>Sun, 31 Jan 2021 05:52:00 +0000</pubDate><atom:updated>2021-01-31T14:56:44.338+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>階層的なロケール</title><description>.NETアプリではリソースファイル（.resx）をロケールごとに用意しておけば、実行時にユーザーの表示言語に合ったリソースが自動的に選択されます。ロケールは基本的に[言語名]-[地域名]の構成ですが、中国語だけはこれが簡体字と繁体字のために階層的になっているので、確認してみました。&lt;br /&gt;
&lt;br /&gt;
各ロケールのCultureInfoのParentプロパティを辿るとInvariantCultureに辿り着きますが、その一つ前までをまとめてMarkdownの表を生成するコードが以下のとおり。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/b11514cba3069f3b34af529941195de4.js&quot;&gt;&lt;/script&gt;
これを.NET Framework 4.8の上で実行した結果。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/2d0e458375da01f123154e44d99f27ad.js&quot;&gt;&lt;/script&gt;
自動選択では表示言語と同じリソースがあればそれが、なければ上に辿って存在するリソースが選択されるはずなので、簡体字の場合、表示言語がzh-CN（中国本土）のときはzh-CNのリソースがあればそれが、なければ（zh-CHSは古いものなのでスルーするとして）zh-Hansのリソースがあればそれが選択されることになります。ここで、簡体字なのは中国本土だけだろうと思っていたら、実はシンガポールも簡体字を使っていて、リソースをzh-CNで作成すると表示言語がzh-SGのときには選択されません。&lt;br /&gt;
&lt;br /&gt;
同じように、繁体字の場合、表示言語がzh-TW（台湾）のときはzh-TWのリソースがあればそれが、なければ（zh-CHTはスルーするとして）zh-Hantが存在すればそれが選択されますが、リソースをzh-TWで作成すると香港かマカオで表示言語に繁体字を使っているときには選択されないことになります。&lt;br /&gt;
&lt;br /&gt;
したがって、簡体字のリソースはzh-Hansで、簡体字のリソースはzh-Hantで作成するのが正解で、もし分ける必要が出てきた場合に、その下のロケールで該当部分を上書きすればいいわけです。&lt;br /&gt;
&lt;br /&gt;
念のため、.NET 5.0の上で実行した結果。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/ff082139c00b6cf9a6cb3ecf01b8a710.js&quot;&gt;&lt;/script&gt;
これも古いzh-CHSとzh-CHTが消えた以外は同じですが、説明に簡体字か繁体字か明記していないのが不親切。&lt;br /&gt;
&lt;br /&gt;
以上、中国語のロケールはそれぞれzh-Hansかzh-Hantにしておけばよい、という確認まで。</description><link>http://8thway.blogspot.com/2021/01/layered-locales.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-8925897219149972710</guid><pubDate>Thu, 28 Jan 2021 00:17:00 +0000</pubDate><atom:updated>2023-05-26T12:34:01.985+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">モニター</category><title>Dellモニタースタンドの限界突破（下方向）</title><description>Dell U2415をサブモニターとして使っていますが、設置場所の関係でやや高い位置に置かざるを得ず、モニタースタンドの下限一杯にしてもモニターの位置が視線の高さに対して高くなるという問題がありました。&lt;br /&gt;
&lt;br /&gt;
こういう場合の解決策としてモニターアームの使用が考えられますが、あれはあれで設置に手がかかり、かつ位置調整も全く融通無碍にできるわけではありません。そこでモニタースタンドの改造で何とかできないかと検討。&lt;br /&gt;
&lt;br /&gt;
スタンドのモニターとの接続部のプレートを一旦取り外し、カバーを外して取り付け直したところ。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2f9-Zajo2rUp-fIzNY9VlkD1m-8z6NAL8JXnUjUFQu4yka8ctbMRLHPW8Wa9qVr_qVLkCz1jqt8FONUgL70ii9HUv1b2qcsCDPg7OuXSzB5vO3AeY1rzzroO87Ef4PCLOOMS4XACZf3IJ/s1280/dell_stand_1.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;1280&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2f9-Zajo2rUp-fIzNY9VlkD1m-8z6NAL8JXnUjUFQu4yka8ctbMRLHPW8Wa9qVr_qVLkCz1jqt8FONUgL70ii9HUv1b2qcsCDPg7OuXSzB5vO3AeY1rzzroO87Ef4PCLOOMS4XACZf3IJ/w640-h640/dell_stand_1.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
この左右の端の中央の高さにある横長の穴は、カバーのダボがはまっていた部分で、組み立て時の位置決め用と推測しますが、もしかしてこれにVESAマウントのネジを通せないかと思い付き、穴の間の距離を測ったところ、ネジの中心になる位置の間で101mm。VESAマウントは100mmなので、微妙に合いません。&lt;br /&gt;
&lt;br /&gt;
穴をそれぞれ内側に削る手もなくはないですが、このスチールのプレートを手作業で加工するのは率直に言って苦行。どうしたものかと手持ちの金具を漁っていたら、ピカーンと。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJjSfe_2I7ClM3g6R4ttvVJ5agGID33iAECt0dGEdH2uRgEBxyJJHQZEvZ2ZFcTuT22MediVwuRVkaPWYsIovBnCn1ac69vZvFLs18C3gyjW0TAbRTZbnn2KAGMI_1-tL5TmVUpBE3umTq/s1280/dell_stand_2.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;960&quot; data-original-width=&quot;1280&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJjSfe_2I7ClM3g6R4ttvVJ5agGID33iAECt0dGEdH2uRgEBxyJJHQZEvZ2ZFcTuT22MediVwuRVkaPWYsIovBnCn1ac69vZvFLs18C3gyjW0TAbRTZbnn2KAGMI_1-tL5TmVUpBE3umTq/w640-h480/dell_stand_2.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
モニターのVESAマウントのネジ穴に黒いクランク型の金具を少し傾けて取り付けることで、ネジ位置をスタンドのプレートの穴に合わせることができると。いずれにせよスペーサーが必要だったので、一石二鳥。何かの用に使おうと買ったまま長らく死蔵していたものですが、まさか役に立つ日が来ようとは、&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;「こんなこともあろうかと」&lt;/span&gt;&lt;/b&gt;が本当にあるとは、自分でも少々びっくり。&lt;br /&gt;
&lt;br /&gt;
とりあえずスタンドに取り付けてみたところ。横2点だけの固定なので縦の揺れはあるものの、厚みのあるスチールの金具なので、それ自体の強度には問題なさそう。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Zf2fDGt-i8TAhv0b_-zCbfj0n5hCun9YnbLsqxRF3OCt7J4nKjC9xi5B_7_FDuctwQl0XlLTCYfDkrnbMyiWRcxblIybvcWg5MDo6_VLDt-vXpcIVf796AJkLbweOavOlyxV5nwx8UyS/s1706/dell_stand_3.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1706&quot; data-original-width=&quot;1280&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Zf2fDGt-i8TAhv0b_-zCbfj0n5hCun9YnbLsqxRF3OCt7J4nKjC9xi5B_7_FDuctwQl0XlLTCYfDkrnbMyiWRcxblIybvcWg5MDo6_VLDt-vXpcIVf796AJkLbweOavOlyxV5nwx8UyS/w480-h640/dell_stand_3.jpg&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;まあ大丈夫そうなので、根本のカバーを戻し、プレートの下型の爪の部分にゴムを挟んで揺れ止めにして、一応の完成。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpi3-X-DhJR3LO64csiUZgn7IS5dDfyBN3nQSCy-N2sIhnEzPH1AwqbAq5aRvqxUYD6ELrmONtFNuYMSuOBpk5JLJz4EEtWkYyjoEK_VUHoTNGgJXgcAGfLttst9ctZJCJc4-0G4mACvln/s1706/dell_stand_4.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1706&quot; data-original-width=&quot;1280&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpi3-X-DhJR3LO64csiUZgn7IS5dDfyBN3nQSCy-N2sIhnEzPH1AwqbAq5aRvqxUYD6ELrmONtFNuYMSuOBpk5JLJz4EEtWkYyjoEK_VUHoTNGgJXgcAGfLttst9ctZJCJc4-0G4mACvln/w480-h640/dell_stand_4.jpg&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
この結果、モニターの位置を大きく4cm弱下げることに成功（スタンドの台座との隙間は8mm）。このスタンドのプレートの穴はU2720QMのスタンドにもあったので、Dellのモニターで割と汎用的に使えるテクではないかと思います。あくまで緊急避難的なものですが。&lt;br /&gt;</description><link>http://8thway.blogspot.com/2021/01/dell-monitor-stand.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2f9-Zajo2rUp-fIzNY9VlkD1m-8z6NAL8JXnUjUFQu4yka8ctbMRLHPW8Wa9qVr_qVLkCz1jqt8FONUgL70ii9HUv1b2qcsCDPg7OuXSzB5vO3AeY1rzzroO87Ef4PCLOOMS4XACZf3IJ/s72-w640-h640-c/dell_stand_1.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-2887071981280497240</guid><pubDate>Thu, 31 Dec 2020 09:26:00 +0000</pubDate><atom:updated>2021-08-04T12:26:56.484+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoftストア</category><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>アプリ実行エイリアス</title><description>Microsoftストアにアプリを出すときに、app package manifestで「アプリ実行エイリアス」というものを指定できます。この効能はストアからインストールしたアプリ（デスクトップアプリを含む）をコマンドプロンプトからファイルパスなしのファイル名だけで起動できるというものです。
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/desktop-to-uwp-extensions#start-your-application-by-using-an-alias&quot;&gt;Start your application by using an alias&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
一応OSの設定にも出てきます。
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://news.mynavi.jp/article/win10tips-300/&quot;&gt;「アプリ実行エイリアス」とは&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
ストアからインストールしたアプリの実行ファイル等はOSが管理するので、アプリの起動は基本的にスタートメニューに作成されるアイコンからか、自動起動に登録するか以外にはできませんが、そのコマンドプロンプト向けの救済策のようなものです。&lt;br /&gt;
&lt;br /&gt;
これだけならコマンドプロンプトを使わせたいケース以外には関係ない話ですが、&lt;a href=&quot;https://github.com/emoacht/HashPad&quot;&gt;Hash Pad&lt;/a&gt;を開発しているときに別の利用法があるのを見つけました。すなわち、これを宛先に指定することでアプリを起動するショートカットを自由に作成できます。&lt;br /&gt;
&lt;br /&gt;
このアプリ実行エイリアスは以下のパスに自動的に作成されるようです。&lt;br /&gt;
C:\Users\[ユーザー名]\AppData\Local\Microsoft\WindowsApps&lt;br /&gt;
&lt;br /&gt;
タネ明かしとしては、PATHを一覧表示するとこのパスが入っているので、それでパスなして起動できるというわけですね。&lt;br /&gt;
&lt;br /&gt;
これはフルパスとしては以下のコードで取得できます。
&lt;script src=&quot;https://gist.github.com/emoacht/3ffae1dad27f56f23c690d43444f36de.js&quot;&gt;&lt;/script&gt;
これ自体はエイリアスというかシンボリックリンクみたいなもので、実体のあるファイルではないですが、これから直接アプリを起動できるほか、ショートカットのターゲットパスに指定してアプリを起動することもできます。&lt;br /&gt;
&lt;br /&gt;
もう一つ重要な点は、WinRTのAPIにはパッケージされたアプリからしか利用できないものがありますが、これから起動するとパッケージからの起動になることです。&lt;u&gt;実行ファイルを探し出して直接起動した場合はパッケージからの起動にならない&lt;/u&gt;ので、この点は大きな違いです。&lt;br /&gt;
&lt;br /&gt;
というわけで、アプリ実行エイリアスを使うことでストアにアプリを出すときの難点の一つを解決できます。Hash Padでは、これによりコンテキストメニューの「送る」フォルダーにショートカットを作成しています。</description><link>http://8thway.blogspot.com/2020/12/app-execution-alias.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-8598607724415602265</guid><pubDate>Wed, 14 Oct 2020 10:40:00 +0000</pubDate><atom:updated>2021-01-28T09:35:45.209+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>GitHubのWikiブランチへのアクセス</title><description>特に難しい話ではないですが、GitHubのレポジトリでWikiを作成すると、wikiというブランチが作成されます。このブランチにリモートのWindowsからアクセスする方法としてはGitHub Desktopが手軽ですが、ぱっと見では分からなかったので、メモです。&lt;br /&gt;
&lt;br /&gt;
初めにパスとしては、そのレポジトリのパスの.gitの前に.wikiを挿入したものになります。したがって、自分のMonitorianを例にとると、レポジトリ自体は&lt;br /&gt;
https://github.com/emoacht/Monitorian.gitなので、&lt;br /&gt;
https://github.com/emoacht/Monitorian.wiki.gitとなります。&lt;br /&gt;
&lt;br /&gt;
後はGitHub DesktopのAddからClone repositoryを選んで、URLのタブで直接指定してしまいます。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_xw0NIvYYBVfM2ilSZ_JIMIf62egi1I8b21EEUaJ4cxFT4uG8rCYnDaKck96-x2wJgjFwpyAUpbFw5UDGpm515vcz_V_CP9EiIOTOV1-AojoMtjoA9FOqooWpgoLWrvUYotqsO4NR_lms/s960/github_desktop.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;660&quot; data-original-width=&quot;960&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_xw0NIvYYBVfM2ilSZ_JIMIf62egi1I8b21EEUaJ4cxFT4uG8rCYnDaKck96-x2wJgjFwpyAUpbFw5UDGpm515vcz_V_CP9EiIOTOV1-AojoMtjoA9FOqooWpgoLWrvUYotqsO4NR_lms/s600/github_desktop.png&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
これでクローンしてしまえば、後は普通のレポジトリと同じです。&lt;br /&gt;
&lt;br /&gt;
GitHubの機能や他のサービスを活かしたレポジトリは機能的でいいのですが、それぞれノウハウがあってなかなか面倒です。</description><link>http://8thway.blogspot.com/2020/10/github-wiki.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_xw0NIvYYBVfM2ilSZ_JIMIf62egi1I8b21EEUaJ4cxFT4uG8rCYnDaKck96-x2wJgjFwpyAUpbFw5UDGpm515vcz_V_CP9EiIOTOV1-AojoMtjoA9FOqooWpgoLWrvUYotqsO4NR_lms/s72-c/github_desktop.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-2353100751480886171</guid><pubDate>Fri, 12 Jun 2020 05:27:00 +0000</pubDate><atom:updated>2023-01-08T03:33:36.331+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Window Hello</category><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>Lenovo 500 FHD Webcam</title><description>数少ないWindows Hello対応のUSBカメラの新製品であるLenovo 500 FHD Webcamが到着したので、レビューします。この製品に関しては、Lenovo公式から以外の情報があまりないので。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;1. 外観&lt;/h3&gt;
&lt;br /&gt;
パッケージをLogicool C920sと並べたところ。店頭陳列用に派手なデザインのLogicoolに対して、色もサイズもおとなし目です。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGE81unmeFr9WPfkrLkNU_1b4S3m3yxirr5rdErPQUUJYF2V-i4uIprZVKmuBjuldfuMUpKQF8XR_GYuZTHzPLcihi71cHBULhu9bXnKiZwbSL5YuDDzCnFj2D3atiKAObolb-ixDkdcO7/s1600/lenovo500fhd-01.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;819&quot; data-original-width=&quot;1600&quot; height=&quot;324&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGE81unmeFr9WPfkrLkNU_1b4S3m3yxirr5rdErPQUUJYF2V-i4uIprZVKmuBjuldfuMUpKQF8XR_GYuZTHzPLcihi71cHBULhu9bXnKiZwbSL5YuDDzCnFj2D3atiKAObolb-ixDkdcO7/s640/lenovo500fhd-01.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
最初にこの製品の名称ですが、Lenovo公式では「&lt;a href=&quot;https://www.lenovo.com/jp/ja/accessories-and-monitors/webcams-and-video/webcams/NET-BO-500-FHD-Webcam/p/4XC0V13599&quot;&gt;Lenovo 500 Full HD Windows Hello対応 Webカメラ&lt;/a&gt;」という、どこまでが製品名でどこからが機能説明なのか分からない表記になっていますが、パッケージにある表記が本来の名称なのでしょう。というわけで、「Lenovo 500 FHD Webcam」です。&lt;br /&gt;
&lt;br /&gt;
Windows Hello対応のUSBカメラとしては、長らくマウスコンピューターのCM01とその後継のCM02が実質的に唯一の選択肢で（Logicool Brio Webcamはこれだけのためには高すぎ）、ようやく選択肢が増えたことになります。&lt;br /&gt;
&lt;br /&gt;DellのU2720QMの上に設置したところ。C920sはカメラ本体が台座の前にあるのに対して、500 FHDは台座の上にあるので、カメラの位置は少し奥になります。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyrHmLjghq4rPLcDOL0CNMcT06PC-692pAzfFcoxz1vbhRgehRTlt4gJ2Xm297tEWn8k9yBuOyM1s9TQOp9KLs_iIypQakjjWvKPA4WHYVwhcIeK4oZnBepGDII4He6SfPs_bvnw2nUb3n/s2048/lenovo500fhd-02.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;712&quot; data-original-width=&quot;2048&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyrHmLjghq4rPLcDOL0CNMcT06PC-692pAzfFcoxz1vbhRgehRTlt4gJ2Xm297tEWn8k9yBuOyM1s9TQOp9KLs_iIypQakjjWvKPA4WHYVwhcIeK4oZnBepGDII4He6SfPs_bvnw2nUb3n/w640-h222/lenovo500fhd-02.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhmRE-DOyZGg37jO6e9v_VCzB5Q0YlKokO5Amoq7fXT8rNBQ8mYDm_zKtjTpvW2h33TydgB9STvvOnyLFlMDUw3Fi9zB8-KOteeYHMI5OGeiXHKOs3HhQhN7LRG54OuBeYk81hRg6LjeJ8/s2048/lenovo500fhd-03.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;634&quot; data-original-width=&quot;2048&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhmRE-DOyZGg37jO6e9v_VCzB5Q0YlKokO5Amoq7fXT8rNBQ8mYDm_zKtjTpvW2h33TydgB9STvvOnyLFlMDUw3Fi9zB8-KOteeYHMI5OGeiXHKOs3HhQhN7LRG54OuBeYk81hRg6LjeJ8/w640-h198/lenovo500fhd-03.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
デザイン的には、レンズとマイクのモチーフが盛り込まれたC920sとは対照的に、500 FHDは余分な装飾も凹凸も一切ないミニマルなデザインになっています。&lt;br /&gt;
&lt;br /&gt;
高さはC920sは本来もっと低いのですが、台座のモニターの前に掛ける爪が長く、そのままだと表示域（縁から6mmぐらい）にかかってしまうので、3mmのゴムを挟んで上に上げています。これはC920sの元設計が古くてベゼルレスのモニターが考慮されてないのでしょう。500 FHDの方は台座の爪が短く、そのままで問題ありません。ちなみに、台座の幅はどちらもきっかり45mmです。&lt;br /&gt;
&lt;br /&gt;
首振りは上下のみのC920sに対して、500 FHDはボール雲台式で自由度は高いです。ただ、C920sは俯角が大きく取れるようになっているので、それには及びませんが、台座自体の設置角でも調整幅は増やせるので（油気圧サスペンションの戦車の如く）、問題にはならないかなと。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIxGUU2O7TJX5S-3hEQw57KbITfe5ktYjtB4UmTZn2R-2qS8OvyLUqCAhpk0Av_AmRmG7bDEUuz5B8fs2Pov61-m-mabQ_b4q2YbC8HQ0bxJ67NUwBKu9_GsyTYT6MZEJCnCl0IGJ1bYin/s1886/lenovo500fhd-04.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1886&quot; data-original-width=&quot;1024&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIxGUU2O7TJX5S-3hEQw57KbITfe5ktYjtB4UmTZn2R-2qS8OvyLUqCAhpk0Av_AmRmG7bDEUuz5B8fs2Pov61-m-mabQ_b4q2YbC8HQ0bxJ67NUwBKu9_GsyTYT6MZEJCnCl0IGJ1bYin/w348-h640/lenovo500fhd-04.jpg&quot; width=&quot;348&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdcV6bcOsRraPweIwewjwRa_QV8yf4aFA1tMLnwiDgQd-rPABxPJQfWbPdNTZxUTln5EDXcRpYWprrD6Nk8aCT7wXIUfIKphVBQDcM7wdVAs4suDZ7dNHPer7FAwUeUXkX3u0G_-VzjhYp/s1796/lenovo500fhd-05.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1796&quot; data-original-width=&quot;1024&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdcV6bcOsRraPweIwewjwRa_QV8yf4aFA1tMLnwiDgQd-rPABxPJQfWbPdNTZxUTln5EDXcRpYWprrD6Nk8aCT7wXIUfIKphVBQDcM7wdVAs4suDZ7dNHPer7FAwUeUXkX3u0G_-VzjhYp/w364-h640/lenovo500fhd-05.jpg&quot; width=&quot;364&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
上面にはLenovoのロゴがうっすら入っています。これは表面仕上げの違いでロゴだけツヤを付けて見せているだけなので、角度によって見えることがあるという程度です。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0013GsK4UMC2g8zXR3CdOOwgw6CxADeCk_tQe2NPdkV-LW-bSaNyPfs_kTuzhpHA4w1UFoziW-JUILjvfxM9kKC8Y396Qal3STfmyLiOlX6qR0zV-J1B_lu1Ghyphenhyphendxrf0ARLF2yeXBBCmi/s2048/lenovo500fhd-06.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;984&quot; data-original-width=&quot;2048&quot; height=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0013GsK4UMC2g8zXR3CdOOwgw6CxADeCk_tQe2NPdkV-LW-bSaNyPfs_kTuzhpHA4w1UFoziW-JUILjvfxM9kKC8Y396Qal3STfmyLiOlX6qR0zV-J1B_lu1Ghyphenhyphendxrf0ARLF2yeXBBCmi/w640-h308/lenovo500fhd-06.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
USBケーブルはC920sが直出しなのに対して、500 FHDはUSB-Cコネクタに挿す形式（USB-C to USB-Aケーブルが付属）で、この方が自由度は高いですが、ケーブルが宙を走ることになって収まりが悪い面もあり、良し悪しという気がします。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;2. 機能&lt;/h3&gt;
&lt;br /&gt;
カメラには4つ窓があって、中央から左側に向かって普通のカメラ、赤外線カメラ、赤外線ライト、プライバシーライトです。右側にも何かありそうに見えますが、ここには中にプライバシーシャッターがあるので、センサーはないです。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIiqLCVdAsRjF9k0GsGaH2JOB_FQ7_igBLfb7zfSTyRAvfq7GDvwL9aqaedUAJr3mg-V-woVIi-wtSaGvl1VqinkxZU47DHIikOUxZscyutONWTPUNkcE7AQHr92P-Bw2r-s3nC3VixfI0/s1536/lenovo500fhd-07.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;928&quot; data-original-width=&quot;1536&quot; height=&quot;386&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIiqLCVdAsRjF9k0GsGaH2JOB_FQ7_igBLfb7zfSTyRAvfq7GDvwL9aqaedUAJr3mg-V-woVIi-wtSaGvl1VqinkxZU47DHIikOUxZscyutONWTPUNkcE7AQHr92P-Bw2r-s3nC3VixfI0/w640-h386/lenovo500fhd-07.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
このシャッターは上のつまみを押さえて横にスライドさせると、中のシャッターも動く仕組みです。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAkvlRoYBA12uE0BvwcPGGT0V1ZvuZpPYyOdBNanYUONHYG_-jnn-oRrG2lTl43ZRiK6bttCrHlziPbWkdXoGMLeky8Yn8iOAqiufKRtI2yk47NM0m1CuGRjfmoTx38wifblj-AZo3gjJV/s1536/lenovo500fhd-08.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;928&quot; data-original-width=&quot;1536&quot; height=&quot;386&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAkvlRoYBA12uE0BvwcPGGT0V1ZvuZpPYyOdBNanYUONHYG_-jnn-oRrG2lTl43ZRiK6bttCrHlziPbWkdXoGMLeky8Yn8iOAqiufKRtI2yk47NM0m1CuGRjfmoTx38wifblj-AZo3gjJV/w640-h386/lenovo500fhd-08.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
シャッターには赤丸があるので、よく見れば閉じているのが分かります。ただ、カメラに赤丸は一般的には録画中を示すサインなので、閉じている状態を示すにはUI的にどうかなという気がします。つまみの大きさから見て、頻繁に変えるというより念のために付いている感じですが。&lt;br /&gt;
&lt;br /&gt;
普通のカメラの撮影中はプライバシーライトが点灯します。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAlt8KFCSPGHLhzo3eNo24iq898MyJXZegFhwvT_GUlZzgkAb1OF1n-Zn3A0bsSYKCX8WV3zhMzBhhyphenhyphen2_NGafNQYB49FdNT-h8khQXoU0KWMrqnL72nAaqLySH3PZ10OPJErIGVoq4biqL/s1536/lenovo500fhd-09.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;774&quot; data-original-width=&quot;1536&quot; height=&quot;322&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAlt8KFCSPGHLhzo3eNo24iq898MyJXZegFhwvT_GUlZzgkAb1OF1n-Zn3A0bsSYKCX8WV3zhMzBhhyphenhyphen2_NGafNQYB49FdNT-h8khQXoU0KWMrqnL72nAaqLySH3PZ10OPJErIGVoq4biqL/w640-h322/lenovo500fhd-09.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Windows Helloの認識中は、赤外線ライトが点滅します。色はSurface Proと同じく赤ですが、光はもっと強いです。認識はうまく行けば一瞬なので、Surface Proと変わりません。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwaJ4mRPQelwQffkZ9lhUUdVohYeZUTda1j8XQP5zoyn0hp2WpdDW_EdWzgTjCWGr8wY6RN221kTAsErPfRhu9r7zxQXeft_vyxQGtomNGy8zFPsUkdXfMQMYar2APHPfsu2-C3M5jUE4e/s1536/lenovo500fhd-10.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;774&quot; data-original-width=&quot;1536&quot; height=&quot;322&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwaJ4mRPQelwQffkZ9lhUUdVohYeZUTda1j8XQP5zoyn0hp2WpdDW_EdWzgTjCWGr8wY6RN221kTAsErPfRhu9r7zxQXeft_vyxQGtomNGy8zFPsUkdXfMQMYar2APHPfsu2-C3M5jUE4e/w640-h322/lenovo500fhd-10.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;画質&lt;/h4&gt;
&lt;br /&gt;
500 FHDの普通のカメラは、基本スペックとしてはFull HD（1920×1080）で、C920sの1080pモード、Surface Pro 4のフロントカメラと変わりません。&lt;br /&gt;
&lt;br /&gt;
画質については……自分ではそれほど差が分からないというのが実際のところです。C920sはさすがに自動調整がうまく効いているぐらいは分かりますが……一番古いSurface Pro 4のカメラでも映りは悪くないと感じるので。試していて気づいたのは、むしろ映りにダイレクトに影響するのは、カメラというより照明の方かなと。&lt;br /&gt;
&lt;br /&gt;
なお、LogicoolのLogi Captureのようなカスタマイズソフトは付属しません。余談ですが、Logi Captureは、使ってみるまで知らなかったのですが、カメラの設定ソフトではなく、それ自体がカメラ入力を受けて画像をリアルタイムに加工して他のソフトに出力するもので、当然リソースを結構使うのですよね。カメラ入力は他のソフトで直接受けられるので、画像にこだわりがなければ使わなくていいかなと。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;互換性&lt;/h4&gt;
&lt;br /&gt;
試した範囲では、Microsoft Teams、Cisco Webex、Zoomで入力元に使えるのを確認しました。&lt;br /&gt;
&lt;br /&gt;
なお、C920sとは違ってマイクはありませんが、個人的には別に求めていないので問題ありません。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;3. Windows Helloカメラの切換え&lt;/h3&gt;
&lt;br /&gt;
自分は数年来、Surface Pro 4に外部モニターを接続して使っていますが、そのときにはSurface Pro 4の画面に被せる形にするので、Surface Pro 4に内蔵のWindows Helloカメラは使えなくなります。これが500 FHDを購入した理由ですが、実は&lt;a href=&quot;https://answers.microsoft.com/en-us/windows/forum/windows_10-hello/toggling-between-integrated-webcam-and-external/53882771-d8c7-4aae-8b5a-0b8a573d29e2&quot;&gt;Windows 10には複数のWindows Helloカメラを切り替える機能がない&lt;/a&gt;らしく、500 FHDを接続してもそのままではWindows Helloに内蔵カメラを使おうとします。&lt;br /&gt;
&lt;br /&gt;
対処療法として、内蔵カメラをデバイスマネージャーで無効にしてしまえば、代わりに500 FHDが使われるようになるのが分かったので、500 FHDの有無に応じてこれを自動化するツールとしてHello Switcherを作成しました。
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/emoacht/HelloSwitcher&quot;&gt;emoacht/HelloSwitcher&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
注意点として、OSのサインイン前には動作できないので、前回サインアウト時の最後の状態は次回サインイン前には変更できません。具体的なケースで言うと、前回サインアウト時に500 FHDがある状態だった場合、内蔵カメラは無効化されているので、次回サインイン時に500 FHDがない場合は、有効なWindows Helloカメラが存在しないことになり、Windows Helloが使えません。こういう場合はPIN認証などでサインインして下さい。サインイン後にこのツールが実行された際に内蔵カメラは有効化されます。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;4．評価&lt;/h3&gt;
&lt;br /&gt;
まとめると、良い点は以下のとおりです。
&lt;ul&gt;&lt;li&gt;ミニマルですっきりしたデザインがとても良い。&lt;/li&gt;
&lt;li&gt;Windows Helloカメラとして問題なく使える。&lt;/li&gt;
&lt;li&gt;普通のカメラとしても使える。&lt;/li&gt;
&lt;/ul&gt;
個人的に悪い点はないですが、一般的な注意点としては以下のとおりです。
&lt;ul&gt;&lt;li&gt;カスタマイズソフトは付いてこない。&lt;/li&gt;
&lt;li&gt;マイクはない。&lt;/li&gt;
&lt;/ul&gt;以上です。</description><link>http://8thway.blogspot.com/2020/06/lenovo-500-fhd-webcam.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGE81unmeFr9WPfkrLkNU_1b4S3m3yxirr5rdErPQUUJYF2V-i4uIprZVKmuBjuldfuMUpKQF8XR_GYuZTHzPLcihi71cHBULhu9bXnKiZwbSL5YuDDzCnFj2D3atiKAObolb-ixDkdcO7/s72-c/lenovo500fhd-01.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-440627826457719348</guid><pubDate>Thu, 30 Apr 2020 23:45:00 +0000</pubDate><atom:updated>2021-08-04T21:18:43.533+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">モニター</category><title>スマートフォンのモニター用マウント</title><description>スマートフォンをウェブカメラの代用としてモニターに固定する方法を思案して工作したところ、これが意外といい出来だったので残しておきます。&lt;br /&gt;
&lt;br /&gt;
モニターはDellのU2720QMで、これにキングジムの&lt;a href=&quot;https://www.kingjim.co.jp/sp/displayboard/&quot;&gt;DB-200&lt;/a&gt;から工作したマウンタを置いて、moto g7を固定したところ。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-RvWp6YRKIw0YT-G4inp380OJtO-OAB4EgJuUSTCK3QdsUlEeNnFmcL0EqZNeaTXPRlANkI9jkyztD7sP29JWjx-SePJ3L_kkwgQndn-m-2twkj4E9zKWSiBVvevE-ov6CVXRm4Cj7Ixl/s1600/smartphone-mounter1.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1067&quot; data-original-width=&quot;1600&quot; height=&quot;428&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-RvWp6YRKIw0YT-G4inp380OJtO-OAB4EgJuUSTCK3QdsUlEeNnFmcL0EqZNeaTXPRlANkI9jkyztD7sP29JWjx-SePJ3L_kkwgQndn-m-2twkj4E9zKWSiBVvevE-ov6CVXRm4Cj7Ixl/w640-h428/smartphone-mounter1.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;DB-200の前面にある小物入れというか樋部分は、狭額縁のモニターだと表示域にかかり（サイトの説明では5mmとなっているが、実物は6.5mmあった）、かつ間に挟んで上にずらしても庇みたいになって邪魔なので、3mmぐらい残して切除。&lt;/li&gt;
&lt;li&gt;スマートフォンのカメラの位置をなるべく下げたかったので、g7に合わせて現物合わせで穴を開けて嵌め込むようにした。&lt;/li&gt;
&lt;li&gt;固定はg7の軟質ケースの弾性による。&lt;/li&gt;
&lt;/ul&gt;工作自体は単純ですが、経験的には、DIYではどうせ精度は出せないので、工作は単純なものほど結果はよいです。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6fRbbFixOonUxQjE9Ikn0QI4cx8JSovzJINnoRxkvZ2A_O8D7tMjHmKeupJvmXD6okW-6bZQ-GKhjN6GCnhgKqhy8teFsWaFkXDvuF8yRSqy_TTJ56kYToYXUtkr8cs1qm2mYvfGg47KC/s1600/smartphone-mounter2.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1440&quot; data-original-width=&quot;1920&quot; height=&quot;384&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6fRbbFixOonUxQjE9Ikn0QI4cx8JSovzJINnoRxkvZ2A_O8D7tMjHmKeupJvmXD6okW-6bZQ-GKhjN6GCnhgKqhy8teFsWaFkXDvuF8yRSqy_TTJ56kYToYXUtkr8cs1qm2mYvfGg47KC/s512/smartphone-mounter2.jpg&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjejxMaKvjNkzZVUeHVwl8t23bEv9xvSOwOTagQFldLvl2ITDcmgH-rBmWALP0q_k8A4Fk5ZloGXJpW_3iFCHC5lCGA8mNyPuGnAavZrZ80wfy8fSUpI8p7SeawufyykHCDMFL05G1wPX6I/s1600/smartphone-mounter3.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1920&quot; data-original-width=&quot;1920&quot; height=&quot;512&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjejxMaKvjNkzZVUeHVwl8t23bEv9xvSOwOTagQFldLvl2ITDcmgH-rBmWALP0q_k8A4Fk5ZloGXJpW_3iFCHC5lCGA8mNyPuGnAavZrZ80wfy8fSUpI8p7SeawufyykHCDMFL05G1wPX6I/s512/smartphone-mounter3.jpg&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
穴はg7がモニターの筐体のアールに合う位置にしてありますが、これは先に試して、このアールに合わせると角度的に丁度いいことが分かっていたので。&lt;br /&gt;
&lt;br /&gt;
DB-200の足は角度を無段階に調整できるように見えますが、実際は中にラッチが仕込まれていて無段階ではなかったので、ゴムワッシャーを間に挟んで自由に調整できるようにしています。これでカメラの角度を多少調整することも可能という見込み。&lt;br /&gt;
&lt;br /&gt;
正面からはこんな感じ。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmyeGB9eoNnMiVwEDbll_zNBVFAGbVw4TsfGa2-A8WMW1QkpeB5YF9m3Xpqe6Braw9E6XjywKxT9ym23QodKFdM74EAQEqHeG5lf9hVJrBaMb20WDC6PKSQJCEfwT4Ip0MnlSDV2IVUQy4/s1600/smartphone-mounter4.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;960&quot; data-original-width=&quot;1920&quot; height=&quot;256&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmyeGB9eoNnMiVwEDbll_zNBVFAGbVw4TsfGa2-A8WMW1QkpeB5YF9m3Xpqe6Braw9E6XjywKxT9ym23QodKFdM74EAQEqHeG5lf9hVJrBaMb20WDC6PKSQJCEfwT4Ip0MnlSDV2IVUQy4/s512/smartphone-mounter4.jpg&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
カメラのモニター上端からの距離は22mm程度なので、ボール雲台式のウェブカメラと同程度です。位置をこれ以上下げるとカメラの視界にDB-200の前端が入ってくるので、DB-200を削る必要が出てきます。&lt;br /&gt;
&lt;br /&gt;
なお、この状態でもあらかじめアイコンが上に出るよう配置しておけば基本的な操作は可能。&lt;br /&gt;
&lt;br /&gt;
これでスマートフォンの固定自体は満足できる状態になりましたが、実際に使っているとスマートフォンを代用することによる遅延が気になってきたので（DroidCamXを720pで使用）、注文してあるウェブカメラが到着すれば使用終了の予定。
</description><link>http://8thway.blogspot.com/2020/05/smartphone-mount.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-RvWp6YRKIw0YT-G4inp380OJtO-OAB4EgJuUSTCK3QdsUlEeNnFmcL0EqZNeaTXPRlANkI9jkyztD7sP29JWjx-SePJ3L_kkwgQndn-m-2twkj4E9zKWSiBVvevE-ov6CVXRm4Cj7Ixl/s72-w640-h428-c/smartphone-mounter1.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4931444743552618933</guid><pubDate>Mon, 13 Jan 2020 06:35:00 +0000</pubDate><atom:updated>2020-01-14T18:59:39.841+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>Gitのcore.autocrlfの設定</title><description>改行コードはWindowsアプリでは便宜的にCrLfに揃えることにしていて、.gitattributesでは「* text=auto」はコメントアウトし、.editorconfigでは「end_of_line = crlf」と設定していますが、にもかかわらず自分が認識しないところでLfに変わっていることがあり、さらにCrLfに修正してVisual Studio上でStageしようとするとStage対象に移動しないまま消える、という問題がしばらく前から起こっていて、少々困っていました。&lt;br /&gt;
&lt;br /&gt;
Git絡みの問題であろうことは想像できましたが、VSの問題か、GitHub Extension for Visual Studioの問題か、Git自体の問題かよく分からず、Gitの設定にある「core.autocrlf」が関係ありそうな気がする一方、説明を読んだ限り関係なさそうに思えたので特に触らずにいました。&lt;br /&gt;
&lt;br /&gt;
それが、まとまった数のファイルをCrLfに修正してcommitした後、PowerShellのCUIからそのcommitを含めてrebaseし、VSでリロードしたら全部またLfに戻っていたという問題が発生したので、思い切って以下のコマンドを実行。&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;git config --global core.autocrlf false
&lt;/pre&gt;&lt;br /&gt;
そうしたら、変な動作が全部消えました。&lt;br /&gt;
&lt;br /&gt;
この設定を意識してtrueにした記憶はないものの、Git環境の構築は何度もやり直してるので、正確なところは不明。Gitの設定への理解不足といわれればそうかもしれませんが、こういう問題が起こるとは想像し難いものがあり、謎動作されるぐらいなら切っておいた方が面倒がないと思われます。</description><link>http://8thway.blogspot.com/2020/01/git-core-autocrlf.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-958461476052327728</guid><pubDate>Mon, 13 Jan 2020 03:57:00 +0000</pubDate><atom:updated>2023-01-08T03:46:11.155+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ストレージ</category><title>HDDの波形の変化</title><description>HDDが性能的にSSDに置いて行かれて久しい現在、それでも3.5インチHDDにはぼちぼちと進化が見られるが、2.5インチHDDには目ぼしい進化は見られない（と思う）。それは仕方ないとして、特に変化は期待せずNAS用のHDDを更新したら、HDDの「波形」について発見があったのでメモしておく。&lt;br /&gt;
&lt;br /&gt;
HDDの「波形」というのは、HDDの速度を計測すると現れる位置固定のパターンのことで、記録面の記録密度に由来するものと個人的に考えているもの。基本概念は以下参照。&lt;br /&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://8thway.blogspot.com/2010/02/hdd-waves1.html&quot;&gt;記録面と速度の実際&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
購入したのは東芝の2TBのMQ04ADB200。店はいつものように秋葉原のArk。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4l4TbVY2kd5Q_vrStsh4c00rCvArB4v-vaIgWWaqPrfh1_ZMpRLpHBRnlJyv8sfkr8ZGnpcWkbt73ZF3X4CJshx9xgAk2XiK5_p08Pb-BtDmqrroIWKqHw-irdfvnqMzr9a3WkHhMcVzK/s1600/mq04abd200-2tb.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; height=&quot;384&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4l4TbVY2kd5Q_vrStsh4c00rCvArB4v-vaIgWWaqPrfh1_ZMpRLpHBRnlJyv8sfkr8ZGnpcWkbt73ZF3X4CJshx9xgAk2XiK5_p08Pb-BtDmqrroIWKqHw-irdfvnqMzr9a3WkHhMcVzK/s512/mq04abd200-2tb.jpg&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
9.5mm厚なのでプラッタは2枚で記録面は4。東芝以外も含めて4TBのモデルは存在するが、どれも厚みは15mmのようなので、プラッタは4枚と推測され、したがってプラッタ当たり容量は同じと思われる。&lt;br /&gt;
&lt;br /&gt;
2台のうち1台目のDisk Gazerの結果。上に出ている水色のグラフが最外周（先頭）100GiB、下の黄色が最内周（末尾）100GiBを示す。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1sgEd-2nXZzszM5ENYMIlCrTdbOvJAG-ol6F7OZbPZIVGf8ARuhQMPYLsVdmDd9h86khyWHNqX397_gIUJuRHG5ZQq1uhaxDX40eJg1eeboBoGcLuVox5RJeUImtOsaUFedpxxQuKjliP/s1600/DG-mq04abd200-A-2.png&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;514&quot; data-original-width=&quot;586&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Y4q-QQfnNrUSABOK8NNxyLDiIxiMifr4mehkA3RtNh227hBlnco_ppZrJpMYmAclavU9U4tvwLRBB-E2kNYLfTOlRn8cbLKbGEWvwoaZVpdoYF_iHb8Mlo54xRKejyoJItO8Xk8gr9fc/s1600/DG-mq04abd200-A-1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
まず計測幅が100GiBなのは、初めは先頭10GiBで計測したら水平線だけで波形が出てこなかったので、広げたから。水色の方だけではやや迷うが、黄色の方を見れば特徴的な4つの水平面の波形が分かる。これには注目すべき点が2つあって、&lt;br /&gt;
&lt;ul&gt;
  &lt;li&gt;先頭の水平面の長さは約19GiBで、これは以前のHDDより桁違いに長い。4つの水平面を合わせると約71GiBにもなる（水平面ごとの長さは同一ではない）。末尾の4つでも約27GiBとなる。&lt;/li&gt;
  &lt;li&gt;同じ記録面のものと推測される水平面でも高さが微妙に異なるので、完全に同じ波形の繰り返しではない。&lt;/li&gt;
&lt;/ul&gt;
次に2台目のDisk Gazerの結果。こちらも上の赤紫色が最外周100GiB、下の黄色が最内周100GiB。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCc-_kDN8qEIZI8DGxg5ahcf09y-sH4kc99Jx3h1ZTOjQOdUfkkfQsizExEU-el2CUPCyCJ3Uqt0WGZ-I2TNdYIwaaKfcaKtmXE1PkI9kYaOCflO0DgfuxSFQsvyOyAWkiSaFqPhn2Y4MX/s1600/DG-mq04abd200-B-1.png&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;513&quot; data-original-width=&quot;586&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-YQMTuaRjQU1TF7zTNaLJq8_9NQnYKNSj-16Jj46Dogf23DPgPn2-hr8tYTgGua_xQ-aUuhIjyVXvvxtkZQuP-wOweL_k37IhbFtdv-ij-QZu-VDHXqP5XjKUZ_xyGNFrVHi6c35cwltf/s1600/DG-mq04abd200-B-2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こちらも同じ特徴を示しているが、赤紫色の方でも4つの水平面の波形が分かりやすい。&lt;br /&gt;
&lt;br /&gt;
これらが何を意味するか。一番シンプルな解釈は、あるゾーンの記録面（この場合は4つある）中のトラックを移動するのに、以前のHDDのように1つの記録面のトラックをある程度使ったら別の記録面に次々に移っていくという、記録面を小刻みに切り替える使い方ではなく、&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;1つの記録面のトラックは（そのゾーンに属する）全トラックを最初から最後まで使った後に次の記録面に移る&lt;/b&gt;&lt;/span&gt;という、記録面をゾーンの途中で切り替えない使い方になっていることが考えられる。&lt;br /&gt;
&lt;ul&gt;
  &lt;li&gt;4つの水平面が1つのゾーンを構成するとして、1台目のように最初のゾーンの容量を71GiB、最後のゾーンの容量を27GiBとし、この間で容量が一定幅で減っていく（正確には2次関数的に減ると思うが）と仮定すれば、1863GiBは38ぐらいのゾーンに分割できる。この数はゾーン数としてあり得なくはない。&lt;/li&gt;
  &lt;li&gt;水平面ごとに同じ記録面でもゾーンが違うとすれば、高さ＝速度＝記録密度が違うのは普通。概ね末尾に行くにつれ同じ記録面でも微妙に高さが下がる＝速度が遅くなるのは、ゾーンが変わっていると捉えれば自然な推移（同じ記録密度であっても末尾（内周）に行くにつれ線速度が遅くなるので、アクセス速度も遅くなる）。&lt;/li&gt;
&lt;/ul&gt;
この記録面の使い方の違いがユーザーにとって何か意味があるかといえば、別に何もないが、個人的には波形の健在を確認できた。&lt;br /&gt;
&lt;br /&gt;
なお、過去には専らHGSTのHDDを見てきたので、ベンダーによる違いも考慮すべきではあるが、過去の東芝のHDDの波形は他社のHDDと基本的には変わらなかった。いずれにしても、そもそも2.5インチHDDの存在自体いつまで続くのか分からないし、ベンダーの違いにこだわる話でもない気がする。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[追記]&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
今更気づいたが、この&lt;a href=&quot;https://toshiba.semicon-storage.com/jp/storage/product/internal-specialty/pc/articles/mq04ab-series.html&quot;&gt;MQ04 シリーズ&lt;/a&gt;は公式スペックによれば、Drive-Managed SMR (瓦記録) 技術とのこと。&lt;br /&gt;
&lt;br /&gt;
ということは、水平面が長いことはSMRと関係がありそうではある。また、SMRだとキャッシュの影響があるかもしれないが、Disk Gazerはリードだけなので関係ないか。</description><link>http://8thway.blogspot.com/2020/01/hdd-wave-change.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4l4TbVY2kd5Q_vrStsh4c00rCvArB4v-vaIgWWaqPrfh1_ZMpRLpHBRnlJyv8sfkr8ZGnpcWkbt73ZF3X4CJshx9xgAk2XiK5_p08Pb-BtDmqrroIWKqHw-irdfvnqMzr9a3WkHhMcVzK/s72-c/mq04abd200-2tb.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-4696989443443152897</guid><pubDate>Fri, 06 Sep 2019 23:08:00 +0000</pubDate><atom:updated>2023-01-08T03:33:10.714+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Surface</category><title>Surfaceのバッテリ問題</title><description>スマホやタブレットのリチウムイオンバッテリが膨張する問題は珍しくないが、自分のSurface Pro 4でも発生し、Microsoftで交換してもらったので、記録しておく。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;1. 状況&lt;/h3&gt;
&lt;br /&gt;
問題に最初に気づいたのは6月頃で、使用期間はほとんど毎日使って2年10か月になる。それまでハードウェア的な問題が起きたことはなかったので、その点は優秀と言えた。&lt;br /&gt;
&lt;br /&gt;
気づいた兆候は、一つはキックスタンドが畳んでも筐体とぴったり合わなくなったことで、フローリングの床に落としたことはあったので、そのときに歪んだかぐらいに思っていた。これは段々ひどくなって、交換に出す直前でこの状態。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpf-pxjMlt3BxF9sXrxU3OPmSvYdQa8bCWGY0QgcVSKdoWAtGDhLxt4FUjRvGuTMIYh94ik-0bSrUegKCHJ8D5jmuI31HJjuem1z-yIISguW7iF_Ans2BEFKkCrPGcCXcYBICNbWYvYFFC/s1600/surface_battery1.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;258&quot; data-original-width=&quot;1024&quot; height=&quot;256&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpf-pxjMlt3BxF9sXrxU3OPmSvYdQa8bCWGY0QgcVSKdoWAtGDhLxt4FUjRvGuTMIYh94ik-0bSrUegKCHJ8D5jmuI31HJjuem1z-yIISguW7iF_Ans2BEFKkCrPGcCXcYBICNbWYvYFFC/s640/surface_battery1.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
もう一つは暗い中で画面の周縁部に顕著なムラが出ることで、経年劣化かと思っていた。これも段々明るい中でもはっきり分かるようになり、画面向かって左側に黄色い模様、最も圧迫された中央に明るい斑点が出てきた。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJvOMEBZ4GFXguH7HNz8MwbRhn-QFlkKAa4h17Jn1OWXrZ-KdcdYLQokxn_588bXwk97OSt_AyjP4zaj12hjOj_fafChDfd8fdihpRole0IpiVQz6intW5HpuQ_ohp6KVJe3-cISs_7s_X/s1600/surface_battery2.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;800&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJvOMEBZ4GFXguH7HNz8MwbRhn-QFlkKAa4h17Jn1OWXrZ-KdcdYLQokxn_588bXwk97OSt_AyjP4zaj12hjOj_fafChDfd8fdihpRole0IpiVQz6intW5HpuQ_ohp6KVJe3-cISs_7s_X/s400/surface_battery2.jpg&quot; width=&quot;313&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
筐体の歪みなら力をかければ戻せないかなと試みた後で（そう簡単に曲がるような筐体ではなかった）、ふと表と裏の両方に内側から圧力がかかるような原因といえば、バッテリの膨張があったと思い当たった。&lt;br /&gt;
&lt;br /&gt;
表側の膨らみに定規を当てて測ると3mmぐらいで、裏側も同程度だったので、計6mmぐらい膨らんだことになる。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrlZ15fN1EVXtAj1WTt1JbB9dUVQt0-JuXqGvt0Nt_1Aws6zk-b_cul_KK9Tp-80iw5QLNbKvJ-tX8S-qQEnPbf0149jE1Y8hkhav43lAwfrSD37ouqWal_a-TME037CNLOveYsrpP8LH6/s1600/surface_battery3.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;162&quot; data-original-width=&quot;1024&quot; height=&quot;99&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrlZ15fN1EVXtAj1WTt1JbB9dUVQt0-JuXqGvt0Nt_1Aws6zk-b_cul_KK9Tp-80iw5QLNbKvJ-tX8S-qQEnPbf0149jE1Y8hkhav43lAwfrSD37ouqWal_a-TME037CNLOveYsrpP8LH6/s640/surface_battery3.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ちなみにBattery reportでは、MANUFACTURERはSMPで、サイクルカウントは225回。容量はDESIGN CAPACITYが38,152 mWhに対し、FULL CHARGE CAPACITYが33,922 mWhだったので、それほど劣化していない感じではある。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;2. 手続&lt;/h3&gt;
&lt;ol&gt;&lt;li&gt;MicrosoftのSurfaceのサポートに朝一で電話したところ、昼頃に写真のアップロード先を指示するメールが来る。&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;側面から表裏を撮った写真とシリアルナンバーの写真をアップロードし、4日後に注文を受け付けたとのメールが来る（注文とは、交換の注文という意味らしい）。翌日Microsoftから電話があり、専用の返送用パッケージを送るので、それを受け取った後、Blu Logisticsという会社に集荷依頼するようにとの説明（返送先は日本国内）。費用は発生しないとのこと（保証期間は切れていたので、この点は太っ腹？）。&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;返送用パッケージを受け取り。専用というのでどんなものかと思っていたら、確かに専用ではあるけど、梱包自体は簡単なものだった。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4LBAjkTAXwRt60cx-lSLXr-HeZIerVH-MStzGmo31zcP7aeUbUcKLskeKSB1TR7tuQLwNUKpA_0CST40YD6kAisLMfVnsfL20CVDC2u_zz1crKLopob1eJEYS78XTBTTYVl9cLCrCnod7/s1600/surface_battery4.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;702&quot; data-original-width=&quot;1024&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4LBAjkTAXwRt60cx-lSLXr-HeZIerVH-MStzGmo31zcP7aeUbUcKLskeKSB1TR7tuQLwNUKpA_0CST40YD6kAisLMfVnsfL20CVDC2u_zz1crKLopob1eJEYS78XTBTTYVl9cLCrCnod7/s512/surface_battery4.jpg&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikgiqeFCM5EnI8Fmjpuncd3phTqkcWkf2DQ0K6q_gfxUTjAAJdSBWpcnK3xrYnOebaK463JciSGxCHUHNagot1jrxrTECiKMfeHwoIbCwR6t7vim8l5mDtr-OMHG2sp9N9auXZ2vqYwcJ3/s1600/surface_battery5.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;686&quot; data-original-width=&quot;1024&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikgiqeFCM5EnI8Fmjpuncd3phTqkcWkf2DQ0K6q_gfxUTjAAJdSBWpcnK3xrYnOebaK463JciSGxCHUHNagot1jrxrTECiKMfeHwoIbCwR6t7vim8l5mDtr-OMHG2sp9N9auXZ2vqYwcJ3/s512/surface_battery5.jpg&quot; width=&quot;512&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
梱包はSurfaceのサイズに切り抜かれた台紙に嵌め込んで、銀色の平たい箱を上に載せるだけ。リチウムイオンバッテリの発火リスクを考慮したものっぽい。&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Blu Logisticsに集荷依頼の旨を書いたメールを送る。2日後、アリスペッドジャパンという会社から連休前の夜になって集荷の希望日時を確認するメールが来るが、注文番号は正しいのに、依頼人は別の人と間違えていた（管理大丈夫か？）。連休中なら対応可能と返すも反応はなく、休み明けに改めて集荷時間を指定するメールを送ると、2日後以降でないと対応できないという（それなら初めに書いてほしい）。改めて指定するメールを送ると、佐川に集荷を手配したとのこと。&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;佐川から発送して営業日で3日後にMicrosoftからデバイスを受領したとのメールが来る。翌日にデバイスを発送したとのメールがあり、その2日後に代替品が到着。発送元は東京都内。&lt;/li&gt;
&lt;/ol&gt;以上のうち、Microsoftが自社でやっている部分は迅速だが、引取りを他社に委託している部分は非効率。過去のLenovoでは（現在は知らない）、サポートに引取りを依頼すると梱包資材を持って引取りに来て一発で終わったものが、無駄に手間がかかる。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;3. 代替品&lt;/h3&gt;
&lt;br /&gt;
代替品は同スペックのSurface Pro 4で、特に使用感なし。&lt;br /&gt;
&lt;br /&gt;
ただし、初めはバッテリが充電されない問題があり、何をしても充電が始まらなかった。デバイスマネージャーでは普通に表示されるものの、Battery reportを取得しようとするとエラーになり、何か問題があるようだった。&lt;br /&gt;
&lt;br /&gt;
色々試すうちに充電は始まったが、直前にやったのはサスペンドからの復帰中に固まったときに電源を抜いたことで、何かのフラグが解除されたのかもしれない。改めてBattery supportを取得すると成功し、MANUFACTURERはDYN、サイクルカウントは「-」だったので、未使用だと思う。DESIGN CAPACITYは38,152 mWhで前と同じだが、FULL CHARGE CAPACITYは40,485 mWhになっていた。&lt;br /&gt;
&lt;br /&gt;
ということで、本体の方が新しくなったのに合わせてタイプカバーも新しくした。</description><link>http://8thway.blogspot.com/2019/09/surface-battery.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpf-pxjMlt3BxF9sXrxU3OPmSvYdQa8bCWGY0QgcVSKdoWAtGDhLxt4FUjRvGuTMIYh94ik-0bSrUegKCHJ8D5jmuI31HJjuem1z-yIISguW7iF_Ans2BEFKkCrPGcCXcYBICNbWYvYFFC/s72-c/surface_battery1.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-2119091590530872530</guid><pubDate>Tue, 03 Sep 2019 19:22:00 +0000</pubDate><atom:updated>2020-06-25T07:42:45.279+09:00</atom:updated><title>パトリオットパーク（クビンカ戦車博物館）</title><description>ロシアのモスクワ郊外にある「クビンカ戦車博物館」といえば、第二次大戦の戦史に興味があれば一度は訪れたい場所ですが、簡単に行けるところでもありません。先日のMAKSのついでに行ってきたので、特にツアー以外で公共交通機関を使って行くことを検討する人のために、説明しておきます。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidODAMeQ4t__D_AjK1luQ2I1G03GTsA8xwc7PJ9C2yAS4rWztCxe5e7aJOjZdon6UxuZGlJucc9KDlabosMEe5-CMPVLirsDxSXmVJftRP34IjFj9rq2A_OAVhKuqZLOloED7SeFLXfA2Q/s1536/patriotpark_image0.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidODAMeQ4t__D_AjK1luQ2I1G03GTsA8xwc7PJ9C2yAS4rWztCxe5e7aJOjZdon6UxuZGlJucc9KDlabosMEe5-CMPVLirsDxSXmVJftRP34IjFj9rq2A_OAVhKuqZLOloED7SeFLXfA2Q/w640-h426/patriotpark_image0.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;1．概要&lt;/h3&gt;
&lt;br /&gt;
基本情報については、小泉悠著「徹底抗戦都市モスクワ」を読んでください。一言でいえば、モスクワの軍事関係施設のガイド本です。自分も電子版をスマートフォンに入れて持っていきました。&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.amazon.co.jp/gp/product/B07BPTT4G4/ref=as_li_tl?ie=UTF8&amp;amp;camp=247&amp;amp;creative=1211&amp;amp;creativeASIN=B07BPTT4G4&amp;amp;linkCode=as2&amp;amp;tag=emo880-22&amp;amp;linkId=8ea9ef03671042f8c1f96a8eee2f50e2&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=JP&amp;amp;ASIN=4798616613&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL250_&amp;amp;tag=emo880-22&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
まず「クビンカ戦車博物館」（Танковыи Музей Кубинка）は、現在ではパトリオットパーク（Парк Патриот）の一施設として（飛び地のような形で）組み込まれています。「クビンカ戦車博物館」という略称が有名ですが、地図等での実際の表記はそうではない点に注意が必要です。&lt;br /&gt;
&lt;br /&gt;
ロシア語が主ですが、以下が公式サイト。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://en.patriotp.ru/&quot;&gt;Парк Патриот&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;収蔵していた戦車も、特にドイツ戦車の多くは新たに設置された施設に移動されています。これらの正式名はよく分からなかったのですが、&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;新しい施設：地図アプリ（Yandex Maps）によればПарк Патриот Музейный комплекс N&lt;u&gt;o&lt;/u&gt;1、またはチケットの表記によればМузейный площадки N&lt;u&gt;o&lt;/u&gt;1（英語でいえば、Museum complex No.1、またはMuseum site No.1に相当）。なお、テント張りの仮設構造物。&lt;/li&gt;
&lt;li&gt;元の「クビンカ戦車博物館」：地図アプリによればПарк Патриот Музейный комплекс N&lt;u&gt;o&lt;/u&gt;2（英語でいえば、Museum complex No.2に相当）、またはチケットの表記によればЦентральный музей бронетанкового вооружения и техники（英語でいえば、Central museum of armored arms and technology）。&lt;/li&gt;
&lt;/ul&gt;このNo.1の博物館にティーガーを始めとするドイツ戦車は移動され、No.2に残っていたのはIII号戦車、III号突撃砲、パンター、カール、マウスぐらいでした（2019年8月時点）。したがって、両方行かないわけにはいきませんが、No.1の方が問題でした。&lt;br /&gt;
&lt;br /&gt;
パトリオットパークに関する情報の多くは、年一回のARMY（AРМИЯ）を前提にしているようで、この期間外には当てはまりません。パトリオットパーク（No.2の博物館を除く、新しい方）の中には幾つも施設がありますが、ARMYの期間外に普通に一般人が入れるのはNo.1の博物館だけのようで、それはいいとしても、掲示等にある巡回バスは実際には走っておらず（中を徒歩で移動中に一度も見なかった）、路線バスもありません。シャトルバスがあるような記述も見かけますが、「そんなものはない」&lt;br /&gt;
&lt;br /&gt;
したがって、移動手段は実質的にタクシーのみですが、行きは駅でタクシーを捕まえればいいとして、帰りは駅等から遠いためか、タクシーアプリで呼んでも来てくれません。となると、他の客を乗せてきたタクシーを捕まえるしかないわけですが、そういうタクシーもたまにしか来ず、何とか捕まえて駅に戻りましたが、全く洒落にならない状況でした。&lt;br /&gt;
&lt;br /&gt;
ということで、&lt;u&gt;No.1にタクシーで行くことはお勧めしません。&lt;/u&gt;リスクを回避するなら、少々高くついても、ツアー業者を利用した方がよいと思います。もしくは、ARMYの期間中であれば事情は変わってくるでしょうし、他の施設も見られるしで、その方がいいのではないかと。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;2. 地理的情報&lt;/h3&gt;
&lt;br /&gt;
現地の地理に関しては、駅はKubinka-1（Станция Кубинка-1）を利用することになると思います。No.1には他の駅の方が近いように見えますが、道路網的にKubinka-1駅の辺りが結節点のようなので。&lt;br /&gt;
&lt;br /&gt;
Kubinka-1駅を出ると、早速T-62Mとパトリオットパークの説明板があります。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8_LIK2MTrCxBsm6PzaDHDpJ0mShwzf78Pb8vm6MymYz4AI5uZWRkqLN1hpmZB-0WyJrIuWCltfu8uI7R2AnhSfP99nweN4fAjcqGsFu7bqWQkgcw_yLxADb7yLvTBREORjHcRywUXd0iU/s1600/patriotpark_image1.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;768&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8_LIK2MTrCxBsm6PzaDHDpJ0mShwzf78Pb8vm6MymYz4AI5uZWRkqLN1hpmZB-0WyJrIuWCltfu8uI7R2AnhSfP99nweN4fAjcqGsFu7bqWQkgcw_yLxADb7yLvTBREORjHcRywUXd0iU/s640/patriotpark_image1.jpg&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
上の絵ではコンパクトそうに見えますが、実際はかなり広く、下の地図（Yandex Mapsによるもの。以下同じ）の中で、西にあるKubinka-1駅から東南方向に出る線路（電車は走ってない）のTechnical Center駅の近くにNo.2が、Park Patriot駅の近くにNo.1が位置しています。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirP94JHp_ASF0Xwda3xQbJY1oikRQv3whunj-yGdPp5cMLn-5LBGOeukbvXzflPygIZbz396d-tCldE_t_9qMxhY47rjKmiPRkDe53wnfGHUKkwwHKI1LswzMSuGgLNKfh94giJ70E8t3e/s1600/patriotpark_map0.png&quot;&gt;&lt;img class=&quot;chart&quot; border=&quot;0&quot; data-original-height=&quot;580&quot; data-original-width=&quot;840&quot; height=&quot;440&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirP94JHp_ASF0Xwda3xQbJY1oikRQv3whunj-yGdPp5cMLn-5LBGOeukbvXzflPygIZbz396d-tCldE_t_9qMxhY47rjKmiPRkDe53wnfGHUKkwwHKI1LswzMSuGgLNKfh94giJ70E8t3e/w640-h440/patriotpark_map0.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ちなみに、これだけ見るとNo.1とNo.2の間を直線で移動できそうに思いましたが、実際に行ってみると細い構内道路で、一般車両が走るようなものではないです。&lt;br /&gt;
&lt;br /&gt;
駅からNo.1に車で移動するときは以下のルートになります。Aが駅で、Bがここまではタクシーで入れる地点。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-3Kpzlr3OLb78owxdcZwy8qJVczKRtBu0ET1z_-_8WhyphenhyphenLws7ZHB1wJVriO0jc1Jxme4aybdPwT9eRDZcPQ_4ueYGpeYX4HQSG__ApGwbNan58g22Qjk_gNhGajojH5ikysdvvlovxwKL1/s1600/patriotpark_map1.png&quot;&gt;&lt;img class=&quot;chart&quot; border=&quot;0&quot; data-original-height=&quot;380&quot; data-original-width=&quot;820&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-3Kpzlr3OLb78owxdcZwy8qJVczKRtBu0ET1z_-_8WhyphenhyphenLws7ZHB1wJVriO0jc1Jxme4aybdPwT9eRDZcPQ_4ueYGpeYX4HQSG__ApGwbNan58g22Qjk_gNhGajojH5ikysdvvlovxwKL1/w640-h296/patriotpark_map1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
BからNo.1までは徒歩で20分ぐらいかかります。すぐ前の駐車場までツアーの車らしきものが入っていたので、ツアーで来る人は歩かなくて済むようです。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM1EiJsVchTDZBJpr6YWO0V5v5M8S-8bz7Ib0MK8dTefB7JfOqXiDW9LRzyw7o-n4tda2AMeQ9D27hXhAOVSHBUQia7SatpXec1ZsIwHDeWiNQ9QnCVlgITP7D1-r6wdrojHhdKVVw5hpI/s1600/patriotpark_map1%252B.png&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;600&quot; data-original-width=&quot;580&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM1EiJsVchTDZBJpr6YWO0V5v5M8S-8bz7Ib0MK8dTefB7JfOqXiDW9LRzyw7o-n4tda2AMeQ9D27hXhAOVSHBUQia7SatpXec1ZsIwHDeWiNQ9QnCVlgITP7D1-r6wdrojHhdKVVw5hpI/s1600/patriotpark_map1%252B.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
No.1は大きな仮設構造物の各棟が連結されていて、その中央に入口があります。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcM4U2IF5AZMqcEpLnIhArCtpjkW4WQ5-Mq99YDkKbc58Bui3k-KM1LaR5C9c4qGcXPb5O7GmJNGPdCiTUQdJNCz5J-WjVMkYhPN5mycnJOY5V5Dfy6KO0O2F_y6DtYFeXR-7tIbMVlbE0/s1600/patriotpark_image2.jpg&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcM4U2IF5AZMqcEpLnIhArCtpjkW4WQ5-Mq99YDkKbc58Bui3k-KM1LaR5C9c4qGcXPb5O7GmJNGPdCiTUQdJNCz5J-WjVMkYhPN5mycnJOY5V5Dfy6KO0O2F_y6DtYFeXR-7tIbMVlbE0/w640-h480/patriotpark_image2.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
チケットブースは閉じており、チケットは受付で販売。内部は公式サイトの写真のとおり、スペースに余裕をもって配置され、照明も明るいので、鑑賞条件は良好でした。&lt;br /&gt;
&lt;br /&gt;
各棟の北側に屋外展示場への出入口があり、衛星写真でも点々と見えるように航空機（Su-27、Mig-31、Mig-29他）、車両（T-72、T-80他）等が置かれています。柵はないので、じっくり至近距離から観察可能。航空機は痛みがありましたが、モニノ空軍博物館ほどではなし。&lt;br /&gt;
&lt;br /&gt;
一方、駅からNo.2に行くには以下のルートになります。先の本で実践されていたように徒歩で戻ることも現実的な距離です。丁度客待ちのタクシーがいたので、歩きませんでしたが。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWPXymPz5c2fbhN4Fnb-jd_AKNM8zTBJfEk6WuFSiBULMzWyDOlobQDvM1CDcgAZflAyfcNP6kMQJYXtr-z2M404g5d8p9FESkW8gauo6TFw8T3D1OCusFrHH2vmhCJbRM-JypA0Q85PN6/s1600/patriotpark_map2.png&quot;&gt;&lt;img class=&quot;chart&quot; border=&quot;0&quot; data-original-height=&quot;380&quot; data-original-width=&quot;820&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWPXymPz5c2fbhN4Fnb-jd_AKNM8zTBJfEk6WuFSiBULMzWyDOlobQDvM1CDcgAZflAyfcNP6kMQJYXtr-z2M404g5d8p9FESkW8gauo6TFw8T3D1OCusFrHH2vmhCJbRM-JypA0Q85PN6/w640-h296/patriotpark_map2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
入口は北側にあります。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwJaml4vDHebhhgzAG0S4tUaEwjau2Btlg0p4ATd-xTkdLG-DBihCiRGEFeWkm4lSm-LxidTtOY4w7pvDwJ11kexyHnRYsEuXxt3RXMTU1TJ-ExgQjNLmoyEouzkcxNbAw2iYnYzsgE-ah/s1600/patriotpark_map2%252B.png&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;400&quot; data-original-width=&quot;440&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwJaml4vDHebhhgzAG0S4tUaEwjau2Btlg0p4ATd-xTkdLG-DBihCiRGEFeWkm4lSm-LxidTtOY4w7pvDwJ11kexyHnRYsEuXxt3RXMTU1TJ-ExgQjNLmoyEouzkcxNbAw2iYnYzsgE-ah/s1600/patriotpark_map2%252B.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
No.1と違って独立した棟が並んでいる形式ですが、内部は詰込み気味で、光線の状態も悪いので、鑑賞条件は良くないです。&lt;br /&gt;
&lt;br /&gt;
下の配置図では下側が入口で、上の地図と正反対になりますが、入口から見て左側の4棟にソ連（СССР）の戦車が、右側の手前側の棟にアメリカ（США:Сполучені Штати Америки）、カナダ（Канады）、英国（Великобритании）、奥側の棟にドイツ（Германии）の戦車があります。さらに奥側の棟に日本戦車があったようですが、No.1に移動されていました。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_VxCIEhba1IfSkHZtNKS5HXqIUSsdloPk6siEb2iJMgBVmSibPA4_3NlP0Azyb9cJ4nLsDePo_RPZvamlE6D5ASJ7l80AZ9JeA26lCZ-WW4DZy75aTon2Tt8ed2kSMFTrxTym70SsOYrx/s1600/patriotpark_image3.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;768&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_VxCIEhba1IfSkHZtNKS5HXqIUSsdloPk6siEb2iJMgBVmSibPA4_3NlP0Azyb9cJ4nLsDePo_RPZvamlE6D5ASJ7l80AZ9JeA26lCZ-WW4DZy75aTon2Tt8ed2kSMFTrxTym70SsOYrx/s640/patriotpark_image3.jpg&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ソ連の棟にはレアな実験的車両が多数あります。現用のT-90Aもあり。ドイツの棟は前述のとおりNo.1に移動されたものが多く、スカスカ。&lt;br /&gt;
&lt;br /&gt;
所要時間はどこまでじっくり見て回るかによりますが、No.1の方はさくさく回れば屋外展示を含めて2時間半、取りこぼしなくディティールまで写真に収めようとすれば5時間ぐらい。No.2の方は一台一台をきれいに写真に収められる状態でないこともあり、急げば1時間、丁寧に回れば2時間ぐらいでしょうか。No.1との移動がスムーズに行くことを条件に、両方を1日でまあ大体見て回ることが可能です。&lt;br /&gt;
&lt;br /&gt;
以上、参考までに。&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://8thway.blogspot.com/2019/09/patriotpark-kubinka.html</link><author>noreply@blogger.com (EMO)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidODAMeQ4t__D_AjK1luQ2I1G03GTsA8xwc7PJ9C2yAS4rWztCxe5e7aJOjZdon6UxuZGlJucc9KDlabosMEe5-CMPVLirsDxSXmVJftRP34IjFj9rq2A_OAVhKuqZLOloED7SeFLXfA2Q/s72-w640-h426-c/patriotpark_image0.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3389582557551425142.post-507292828749289681</guid><pubDate>Sun, 12 May 2019 13:32:00 +0000</pubDate><atom:updated>2023-01-06T11:02:22.063+09:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoftストア</category><category domain="http://www.blogger.com/atom/ns#">WinRT</category><category domain="http://www.blogger.com/atom/ns#">プログラミング</category><title>Microsoftストアのサブスクリプション情報の取得</title><description>Microsoftストアでは、しばらく前からアプリのアドオンのサブスクリプション販売が可能になっています。アプリ自体を販売する場合は、アプリ側の対応はそれほど手間ではないですが、アドオン（アプリ内販売となる）でかつサブスクリプションとなると、割と面倒な対応が必要になります。&lt;br /&gt;
&lt;br /&gt;
ストアの販売用のAPIは新旧の2種類ありますが、Desktop Bridgeのアプリを前提とするならば、新しい&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/windows.services.store&quot;&gt;Windows.Services.Store&lt;/a&gt;の方を使うことになります。このAPIは&lt;a href=&quot;https://docs.microsoft.com/ja-jp/uwp/api/windows.services.store.storecontext&quot;&gt;StoreContext&lt;/a&gt;オブジェクトのメソッド群で構成され、それなりにサンプルがありますが、肝心な情報の取得方法が抜けているので、その補完がお題です。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/uwp/monetize/in-app-purchases-and-trials&quot;&gt;In-app purchases and trials&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;1. サブスクリプションのライフサイクル&lt;/h3&gt;
&lt;br /&gt;
サブスクリプションの状態によってアドオンの動作を切り替えるだけなら、&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;使用権があるか否か&lt;/li&gt;
&lt;/ul&gt;が分かれば十分で、詳しいことはウェブ上のMicrosoftアカウントを見てくれ、と割り切るやり方もなくはないです。&lt;br /&gt;
&lt;br /&gt;
ただ、使用期間といっても、サブスクリプションのライフサイクルを考えると、以下のような期間に分かれます（サブスクリプションは自動更新が既定で、現在の期間の使用期限までにキャンセルされない限りは自動更新され、また、キャンセルされた後も現在の期間の使用期限までは使用できる）。&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;試用期間&lt;/li&gt;
&lt;li&gt;試用期間中にキャンセルされた後の使用期限までの期間&lt;/li&gt;
&lt;li&gt;試用期間/有償期間後の自動更新により開始された有償期間&lt;/li&gt;
&lt;li&gt;有償期間中にキャンセルされた後の使用期限までの期間&lt;/li&gt;
&lt;/ol&gt;サブスクリプション販売の場合、ユーザーの当然の関心事は意図せずに課金されないことだと思います。使用期限前にキャンセルするつもりだったのが、しそこねるといったケースですが、これを避けるにはユーザーが以下の情報を簡単に確認できるようにするのが望ましいです。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;現在が（無償）試用期間か有償期間か&lt;/li&gt;
&lt;li&gt;現在の期間の使用期限&lt;/li&gt;
&lt;li&gt;自動更新が有効になっているか（キャンセルされていないか）否か&lt;/li&gt;
&lt;/ul&gt;これらの正確な情報の取得方法が、このAPIのサンプルでは説明されていません。仕方ないので試行錯誤した結果が以下ですが、これもストアのサーバー次第でいつ変わってもおかしくないので、そのつもりで。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;2.1. 使用権があるか否か&lt;/h3&gt;
&lt;br /&gt;
これだけなら簡単で、&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/windows.services.store.storecontext.getapplicenseasync&quot;&gt;GetAppLicenseAsync&lt;/a&gt;メソッドで可能です。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/uwp/monetize/get-license-info-for-apps-and-add-ons&quot;&gt;Get license info for apps and add-ons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;これで取得できる&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/windows.services.store.storeapplicense&quot;&gt;StoreAppLicense&lt;/a&gt;オブジェクトのうち、アドオンのライセンス情報はAddOnLicensesプロパティの&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/Windows.Services.Store.StoreLicense&quot;&gt;StoreLicense&lt;/a&gt;オブジェクトにあります。ここに目的のアドオンのものがあれば、使用権があるということです。なお、このSkuStoreIdプロパティはStore IDの後にSKU番号が引っ付いたフォーマットで、Store IDそのままではないので要注意。&lt;br /&gt;
&lt;br /&gt;
このメソッドだけは結果がキャッシュされていて、オフラインでも使うことができます。したがって、使用権の確認だけできればいいという場合は、アプリの起動時にこれを実行するだけというシンプルなやり方もあり得ます。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;2.2. 現在が試用期間か有償期間か&lt;/h3&gt;
&lt;br /&gt;
これには&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/windows.services.store.storecontext.getusercollectionasync&quot;&gt;GetUserCollectionAsync&lt;/a&gt;メソッドが使えます。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/uwp/monetize/get-product-info-for-apps-and-add-ons#get-info-for-add-ons-for-the-current-app-that-the-user-has-purchased&quot;&gt;Get info for add-ons for the current app that the user has purchased&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;これで取得できる&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/windows.services.store.storeproduct&quot;&gt;StoreProduct&lt;/a&gt;オブジェクトに含まれる&lt;a href=&quot;https://www.blogger.com/StoreCollectionData&quot;&gt;StoreCollectionData&lt;/a&gt;オブジェクトのIsTrialプロパティが目的のものです。サンプルは以下のとおりです。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/emoacht/f4ec6660d5cccd7e33b48c50cf610831.js&quot;&gt;&lt;/script&gt;この方法に辿り着く前にStack Overflowで質問したのですが、答えを付けたMSFTの人には理解されなかったようで。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/54837363/how-to-determine-whether-add-on-subscription-of-windows-store-app-is-in-trial-pe&quot;&gt;How to determine whether add-on subscription of Windows Store app is in trial period or in paid period&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;このメソッドは経験的には、有償期間に入った後にキャンセルされた後は使用期限前であっても（上記の期間4.のケース）そのStoreProductを返してきません。また、オフラインでは使えないので（実行の度にストアのサーバーと通信するらしい）、必要ならローカルに記録しておく必要があります。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;2.3. 現在の期間の使用期限&lt;/h3&gt;
&lt;br /&gt;
上記のStoreLicenseにあるExpirationDateプロパティがいかにも使えそうに見えますが、これが曲者で、これ単体では使えません。経験的に整理したところでは、サブスクリプションの自動更新が有効のときは正しい日時から3日後の日時になり、無効のときは大体正しい日時（1日のズレあり）になるようです。&lt;br /&gt;
&lt;br /&gt;
この点からすると、自動更新が有効のときは課金処理の遅延を見越して数字をいじっているのではないかという合理的な疑いがありますが、こういう辻褄合わせのために大元のAPIのデータをいじるのはやってはならないことだと思います。さらに問題なのは、StoreCollectionDataのEndDateプロパティも含め、他のメソッドで取得できる使用期限の日時にも同じ問題があり、どれも信用できないことです。&lt;br /&gt;
&lt;br /&gt;
したがって、自前で計算するしかないわけですが、そのためには、&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;現在の期間の開始日&lt;/li&gt;
&lt;li&gt;現在の期間の長さ&lt;/li&gt;
&lt;/ul&gt;が必要になってきます。&lt;br /&gt;
&lt;br /&gt;
まず現在の期間の開始日は、StoreCollectionDataのStartDateプロパティが使えます（上記サンプルのとおり）。なお、これにはAcquiredDateプロパティもありますが、これは実際に購入した日時を指すようで、StartDateとは微妙にズレがあります。このズレの法則性はよく分かりませんが、この計算のための開始日としてはStartDateの方が正しいようです。&lt;br /&gt;
&lt;br /&gt;
次に現在の期間の長さは、先に現在が試用期間か有償期間かを判別する必要がありますが、これは上記のとおりStoreCollectionDataのIsTrialプロパティで分かります。期間の長さは、&lt;a href=&quot;https://docs.microsoft.com/ja-jp/uwp/api/windows.services.store.storecontext.getstoreproductsasync&quot;&gt;GetStoreProductsAsync&lt;/a&gt;メソッドで取得できるStoreProductオブジェクトで分かります。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/uwp/monetize/enable-subscription-add-ons-for-your-app#get-info-about-subscription-add-ons-for-the-current-app&quot;&gt;Get info about subscription add-ons for the current app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;なお、この例にある&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/windows.services.store.storecontext.getassociatedstoreproductsasync&quot;&gt;GetAssociatedStoreProductsAsync&lt;/a&gt;メソッドでは有償期間の長さは分かりますが、一旦試用期間に入った後は試用期間の長さは分かりません。というのも、このメソッドが返すのは現在の期間の次に購入可能なSKUだけなので、一旦試用期間に入った後は、次にはもう試用期間はなく、試用期間のSKUは取得できないからです。&lt;br /&gt;
&lt;br /&gt;
この2つが分かれれば、後は&lt;a href=&quot;https://docs.microsoft.com/en-us/uwp/api/windows.services.store.storedurationunit&quot;&gt;StoreDurationUnit&lt;/a&gt;に気を付けて計算するだけです。&lt;br /&gt;
&lt;br /&gt;
なお、上記のとおり期間4.のケースではUserCollectionDataは取得できませんが、このケースでは自動更新が無効となっている結果、StoreLicenseのExpirationDateプロパティが大体正しい日時を示すので、それをそのまま使えばいいでしょう。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[追記]&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
自分で計算した日時とMicrosoftのサーバーで期限切れまたは自動延長の処理が行われる日時にはズレがあるので（1日以内）、アプリで期限切れに伴う処理を行う前にはこのズレを考慮する必要があります。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;2.4. 自動更新が有効になっているか否か&lt;/h3&gt;
&lt;br /&gt;
これはどこにも説明はないですが、情報はあります。&lt;br /&gt;
&lt;br /&gt;
このAPIで取得できるオブジェクトにはExtendedJsonDataプロパティがあり、ストアのサーバーから取得したらしきJSONが格納されています。この中にはそのオブジェクトのプロパティに出てこないものもあり、そういうのはこれを直接見て使えということですね。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/uwp/monetize/data-schemas-for-store-products#schema-for-storeproduct-storesku-storeavailability-and-storecollectiondata&quot;&gt;Schema for StoreProduct, StoreSku, StoreAvailability, and StoreCollectionData&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;StoreCollectionDataのJSONはこのスキーマのcollectionDataに相当するようですが、この中にautoRenewの要素があります。これが経験的には自動更新の状態を示していて、これが存在してtrueなら有効、存在しないかfalseなら無効です。上記のサンプルでは、JSON全体をパースする必要もないので、該当部分を正規表現で抽出して判別しています。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;3. まとめ&lt;/h3&gt;
&lt;br /&gt;
以上のように必要な情報は取得できるようになりましたが、ここに至るまでの試行錯誤に相当な時間を費やさざるを得なかったので、正直どうかと思います。わざわざ新APIを作ってサンプル等もそれなりに用意したにもかかわらず、詰めが甘いというか。結局、ストアのサーバーにある情報をどう引っ張ってくるかという問題なので、一発で必要な情報が揃うようにした方がクエリ数も減っていいと思いますが。&lt;br /&gt;
&lt;br /&gt;
こんな当てにならないAPIに頼るより、購入日をローカルに記録しておけば後は何とでもなるのではないか、と思ったこともありましたが、調べていくにつれそのやり方ではむしろ色々なケースで整合性を保つのが大変すぎると気づいて断念しました。&lt;br /&gt;
&lt;br /&gt;
なお、Desktop Bridgeのアプリの場合でも、Windows Application Packaging Projectを使えばこのAPIのデバッグ実行はUWPと同じようにできるので、それ自体は難しくないです。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/ja-jp/windows/uwp/porting/desktop-to-uwp-packaging-dot-net&quot;&gt;Package a desktop application by using Visual Studio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://8thway.blogspot.com/2019/05/microsoftstore-subscription.html</link><author>noreply@blogger.com (EMO)</author><thr:total>0</thr:total></item></channel></rss>