<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='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'><id>tag:blogger.com,1999:blog-4595852719405409409</id><updated>2025-02-11T09:27:27.940+09:00</updated><title type='text'>mofu犬blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mofuken.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>164</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-2148937810842766622</id><published>2024-06-16T00:47:00.001+09:00</published><updated>2024-06-16T00:47:34.728+09:00</updated><title type='text'>spotDL で YT-DLP download error が発生</title><content type='html'>
&lt;p&gt;spotDL で Spotify の音楽をダウンロードすると、&lt;br/&gt;
  &lt;code&gt;AudioProviderError: YT-DLP download error&lt;/code&gt; が発生した。&lt;/p&gt;
&lt;p&gt;調査のため、引数を付けてデバックログを出力してみる。&lt;br/&gt;
&lt;code&gt;spotdl https://open.spotify.com/track/xxxxx --log-level DEBUG&lt;/code&gt;&lt;p&gt;
&lt;p&gt;すると、Spotify の url を指定しているが、実際は同じ楽曲を YouTube Music からダウンロードしていることが判明。
私の環境だと、フィルタリングで youtube へのアクセス制限をしているので接続エラーとなっていた。&lt;p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/2148937810842766622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/2148937810842766622'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2024/06/spotdl-yt-dlp-download-error.html' title='spotDL で YT-DLP download error が発生'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-165263221701477795</id><published>2023-06-14T00:22:00.002+09:00</published><updated>2023-06-14T00:22:46.671+09:00</updated><title type='text'>Thunderbird アカウントの順番を変更する</title><content type='html'>Thunderbird でアカウントの順番を変更する方法です。&lt;br /&gt;
&lt;br /&gt;
「Manually sort folders」アドオンでアカウント順を変更することもできるが、Thunderbird バージョン 91 以上にアップデートすることで、アドオンを使わなくても変更することができるようになります。&lt;br /&gt;
&lt;br /&gt;
アカウント設定画面を開いて、移動したいメールアカウントを、このように移動できるようになります。&lt;br /&gt;
&lt;br /&gt;
Thunderbirdの ツール＞アカウント設定を開く&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/AVvXsEiPJUcuojYXBPWQjDaESVF1SBs0nEfkWybi1kCmazC0epfjLYozKP8pN_O-XVuxLh_olunwkjGgbMCU6Dq6k6qSMl9PkzAAF2cptmt4n8flRJScNmh6TkMRsRTSwL1YtcL3k4VZxUwIC2LB1q5F4uakGCKAp7DNMz4U4eZgbIfjQJULGs_wcWDfPjpA/s594/Thunderbird%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E8%A8%AD%E5%AE%9A.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;330&quot; data-original-width=&quot;594&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPJUcuojYXBPWQjDaESVF1SBs0nEfkWybi1kCmazC0epfjLYozKP8pN_O-XVuxLh_olunwkjGgbMCU6Dq6k6qSMl9PkzAAF2cptmt4n8flRJScNmh6TkMRsRTSwL1YtcL3k4VZxUwIC2LB1q5F4uakGCKAp7DNMz4U4eZgbIfjQJULGs_wcWDfPjpA/s320/Thunderbird%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E8%A8%AD%E5%AE%9A.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/165263221701477795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/165263221701477795'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2023/06/thunderbird.html' title='Thunderbird アカウントの順番を変更する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPJUcuojYXBPWQjDaESVF1SBs0nEfkWybi1kCmazC0epfjLYozKP8pN_O-XVuxLh_olunwkjGgbMCU6Dq6k6qSMl9PkzAAF2cptmt4n8flRJScNmh6TkMRsRTSwL1YtcL3k4VZxUwIC2LB1q5F4uakGCKAp7DNMz4U4eZgbIfjQJULGs_wcWDfPjpA/s72-c/Thunderbird%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E8%A8%AD%E5%AE%9A.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-1311312553364368793</id><published>2022-08-12T09:54:00.000+09:00</published><updated>2022-08-12T09:54:01.144+09:00</updated><title type='text'>HUAWEI P10 lite の fastboot デバイスエラー</title><content type='html'>&lt;p&gt;HUAWEI P10 lite を Windows10環境に接続して adbコマンドは使えるが、デバイスマネージャの Fastboot2.0 デバイスに△マークが付いて、fastbootのコマンドが反応しない。&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK2xOexWdSmtkAGBcj3iHhKGZ47N_W0wbsY-HoNSshCpB5ncN5oLJDi34jReRFSEh7sYbhE11tcNJS20F0dNJd_GdSe9Ls_rVfb2CkVIOnpjEglE6WcLmqCedOLpXOESOuukRG9DOKk5lWRwPWf-0gfgKAFSJMA2xzIHq-MGZqV_m5pln3xqG3irik/s1600/fastboot2.0%20%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%20%E3%82%A8%E3%83%A9%E3%83%BC.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;75&quot; data-original-width=&quot;257&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK2xOexWdSmtkAGBcj3iHhKGZ47N_W0wbsY-HoNSshCpB5ncN5oLJDi34jReRFSEh7sYbhE11tcNJS20F0dNJd_GdSe9Ls_rVfb2CkVIOnpjEglE6WcLmqCedOLpXOESOuukRG9DOKk5lWRwPWf-0gfgKAFSJMA2xzIHq-MGZqV_m5pln3xqG3irik/s1600/fastboot2.0%20%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%20%E3%82%A8%E3%83%A9%E3%83%BC.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;これは例えば、PotatoNV のマニュアルに出てくる Huawei Testpoint Drivers のドライバを使うと解消できる。&lt;br /&gt;
（ドライバの問題だけなら、インストールしなくてもドライバの更新でこれを指定すればよいだけ。）&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;PotatoNV（OEM アンロックコードを検出）&lt;br /&gt;
&lt;a href=&quot;https://github.com/mashed-potatoes/PotatoNV&quot;&gt;https://github.com/mashed-potatoes/PotatoNV&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Huawei Testpoint Drivers&lt;br /&gt;
&lt;a href=&quot;https://files.dc-unlocker.com/share.html?v=share/18B15B9D02C945A79B1967234CECB423&quot;&gt;https://files.dc-unlocker.com/share.html?v=share/18B15B9D02C945A79B1967234CECB423&lt;/a&gt;&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1311312553364368793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1311312553364368793'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2022/08/huawei-p10-lite-fastboot.html' title='HUAWEI P10 lite の fastboot デバイスエラー'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK2xOexWdSmtkAGBcj3iHhKGZ47N_W0wbsY-HoNSshCpB5ncN5oLJDi34jReRFSEh7sYbhE11tcNJS20F0dNJd_GdSe9Ls_rVfb2CkVIOnpjEglE6WcLmqCedOLpXOESOuukRG9DOKk5lWRwPWf-0gfgKAFSJMA2xzIHq-MGZqV_m5pln3xqG3irik/s72-c/fastboot2.0%20%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%20%E3%82%A8%E3%83%A9%E3%83%BC.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-4879152933239307102</id><published>2022-08-11T01:37:00.000+09:00</published><updated>2022-08-11T01:37:38.348+09:00</updated><title type='text'>VMwareのゲストOSで、USBデバイスが接続できない（グレーアウト）</title><content type='html'>&lt;p&gt;VMwareのゲストOSを構築したところ、USBデバイスが全く使えそうにない状態になった。&lt;/p&gt;

&lt;p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;環境&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;VMware Workstation 16 Player&lt;/li&gt;
&lt;li&gt;ゲストOS：Windows 10 November 2021 Update&lt;/li&gt;
  &lt;li&gt;ホストOS：Windows 10&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;症状としては&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;[Player] &gt; [取外し可能デバイス] から見ると、全てのUSBデバイスがグレーアウトされる。&lt;br /&gt;
（これは仮想マシン設定の USBコントローラの設定で、「すべての USB 入力デバイスを表示する」にチェックを入れている場合。チェックしていないと、何も表示されないはず。）&lt;/li&gt;
  &lt;li&gt;仮想マシンのタスクバーで、USBのデバイス アイコンがグレーアウトされる。&lt;/li&gt;
&lt;li&gt;新しいUSBデバイスが検出されると「動作を確認」に設定していると、確認ダイアログはあるが、その結果に関わらず接続できない。&lt;/li&gt;
&lt;li&gt;諦めてUSBデバイスを取り外した時にダイアログが表示されるが、何のデバイスも表示されていない。&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;

&lt;br /&gt;
&lt;p&gt;取外し可能なUSBデバイスが、全てグレーアウトされた状態&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-xesPrTWoxk3QvUXPZPhSmR5yGCHMUIU8EUOnsMcDnSFfRN4HeCjvknG3eBcbr1k8J1-zB5LRRgr30_Ya1lkJcufdcn1gv03-4YbTm4eGV5_IBNoDaNaefu1N5amNtzq0NtJUNlyo7T-IBg2qyzWU6fLUzgxUMKLROsKW0WzU6XDjwwshF3J13ZDy/s679/vmware%20usb%20devices%20grayout.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;263&quot; data-original-width=&quot;679&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-xesPrTWoxk3QvUXPZPhSmR5yGCHMUIU8EUOnsMcDnSFfRN4HeCjvknG3eBcbr1k8J1-zB5LRRgr30_Ya1lkJcufdcn1gv03-4YbTm4eGV5_IBNoDaNaefu1N5amNtzq0NtJUNlyo7T-IBg2qyzWU6fLUzgxUMKLROsKW0WzU6XDjwwshF3J13ZDy/s320/vmware%20usb%20devices%20grayout.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;
&lt;p&gt;取り外し可能デバイスに、何のデバイスも表示されていない&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqGK2jKMK3aCST6tPUP8Da79JPvGI0ug53th3wAMRCKqx8OPtLOMx30I1c12b-ECu2UBuX9hUW4MybbjpKxtMxqJzgpNQlCXmVWc_GnWeDUOJG53EMGkrto40Wg7JEotsgB9ZGe3wQvzngx14pdC5QCcmQQGUyqsLm_bNaEfk5krzC3Y_Js5Q5mXKB/s408/%E5%8F%96%E3%82%8A%E5%A4%96%E3%81%97%E5%8F%AF%E8%83%BD%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;200&quot; data-original-height=&quot;269&quot; data-original-width=&quot;408&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqGK2jKMK3aCST6tPUP8Da79JPvGI0ug53th3wAMRCKqx8OPtLOMx30I1c12b-ECu2UBuX9hUW4MybbjpKxtMxqJzgpNQlCXmVWc_GnWeDUOJG53EMGkrto40Wg7JEotsgB9ZGe3wQvzngx14pdC5QCcmQQGUyqsLm_bNaEfk5krzC3Y_Js5Q5mXKB/s200/%E5%8F%96%E3%82%8A%E5%A4%96%E3%81%97%E5%8F%AF%E8%83%BD%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;調べたところ、これは仮想マシンの設定ファイル(vmx) にある設定が影響していた。&lt;br /&gt;
&lt;code&gt;usb.restrictions.defaultAllow = &quot;FALSE&quot;&lt;/code&gt;&lt;br /&gt;
これを&lt;code&gt;TRUE&lt;/code&gt;に変更すると障害は改善した。&lt;/p&gt;

&lt;br/&gt;
&lt;p&gt;All USB devices are greyed out&lt;br /&gt;
&lt;a href=&quot;https://communities.vmware.com/t5/VMware-Workstation-Player/All-USB-devices-are-greyed-out/td-p/2878067&quot;&gt;https://communities.vmware.com/t5/VMware-Workstation-Player/All-USB-devices-are-greyed-out/td-p/2878067&lt;/a&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/4879152933239307102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/4879152933239307102'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2022/08/vmwareosusb.html' title='VMwareのゲストOSで、USBデバイスが接続できない（グレーアウト）'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-xesPrTWoxk3QvUXPZPhSmR5yGCHMUIU8EUOnsMcDnSFfRN4HeCjvknG3eBcbr1k8J1-zB5LRRgr30_Ya1lkJcufdcn1gv03-4YbTm4eGV5_IBNoDaNaefu1N5amNtzq0NtJUNlyo7T-IBg2qyzWU6fLUzgxUMKLROsKW0WzU6XDjwwshF3J13ZDy/s72-c/vmware%20usb%20devices%20grayout.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-3133827856659705585</id><published>2022-08-09T23:02:00.001+09:00</published><updated>2022-08-09T23:02:10.647+09:00</updated><title type='text'>Oracle11gクライアントから12cへの接続エラー</title><content type='html'>&lt;p&gt;Oracle11gのクライアントから、12cのサーバに接続するための手順です。&lt;/p&gt;
&lt;p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;１．サーバのファイアウォールで、ポート1521の受信を許可する。&lt;/h3&gt;
確認方法は、クライアントからコマンドで&lt;br /&gt;
&lt;code&gt;tnsping [ip address]&lt;/code&gt;&lt;br /&gt;
OK と出力されること。&lt;/p&gt;

&lt;p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;２．クライアントから接続試行、認証できない&lt;/h3&gt;
接続試行したエラーメッセージ&lt;br /&gt;
&lt;code&gt;ORA-28040: 一致する認証プロトコルがありません&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
これは11gからサーバに接続できる設定になっていない。サーバの sqlnet.ora にパスワード検証機能の設定を追加する。&lt;br /&gt;
&lt;code&gt;SQLNET.ALLOWED_LOGON_VERSION_SERVER=11&lt;/code&gt;&lt;br /&gt;
（SQLNET.ALLOWED_LOGON_VERSION は非推奨、上記の _SERVER を使用する）&lt;br /&gt;
（リスナーの再起動は不要）&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;３．クライアントから接続試行、パスワードが無効&lt;/h3&gt;
接続試行したエラーメッセージ&lt;br /&gt;
&lt;code&gt;ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
パスワードが正しくても、改めてパスワード・バージョンを再構成すると解消した。これは ALLOWED_LOGON_VERSION_SERVER の設定変更後に実施する。&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;SELECT USERNAME, PASSWORD_VERSIONS FROM DBA_USERS;&lt;/code&gt;&lt;br /&gt;
現在の PASSWORD_VERSIONS は [11G 12C] となっており、11G が含まれるので問題ないと思われたが、[11G 12C] というのは、上記の ALLOWED_LOGON_VERSION_SERVER のパラメータ値だと 12 に該当し、Oracle11gリリース2(11.2.0.3以上)に該当するので要注意。&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;ALTER USER user IDENTIFIED BY password;&lt;/code&gt;&lt;br /&gt;
同じパスワードで再設定すると、[10G 11G 12C] （同じくパラメータ値 11 相当）となり、11gのリモートから認証できるようになった。&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;SQLNET.ALLOWED_LOGON_VERSION_SERVER リファレンス&lt;br /&gt;
&lt;a href=&quot;https://docs.oracle.com/cd/E96517_01/netrf/parameters-for-the-sqlnet-ora-file.html&quot;&gt;https://docs.oracle.com/cd/E96517_01/netrf/parameters-for-the-sqlnet-ora-file.html#GUID-1FA9D26C-4D97-4D1C-AB47-1EC234D924AA&lt;/a&gt;&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3133827856659705585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3133827856659705585'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2022/08/oracle11g12c.html' title='Oracle11gクライアントから12cへの接続エラー'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-2446856495633198224</id><published>2022-07-31T23:17:00.007+09:00</published><updated>2022-07-31T23:40:07.821+09:00</updated><title type='text'>Android 6.0 (Marshmallow) で MACアドレスを永続的に変更</title><content type='html'>&lt;p&gt;GooglePlayにあるMACアドレス変更アプリ（Wifi Mac Changer など）では、変更できても一時的なものが多い。デバイスの再起動などでMACアドレスは再びデフォルト値に戻ります。&lt;/p&gt;
&lt;p&gt;この状態でWiFiに繋げると、「認証に問題」というステータスになって接続できなかった。これはどうやら変更前のMacアドレスを参照したままWiFiの認証している様子。&lt;/p&gt;
&lt;p&gt;WiFiの認証過程におけるHandshakeでは、MACアドレスから認証鍵を生成しているので、このままではWiFiに接続できる見込みがない。&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;Android Debug Bridge(adb) コマンドでやる場合は、&lt;br /&gt;
&lt;code&gt;$ adb shell&lt;br /&gt;
$ su&lt;br /&gt;
# ifconfig wlan0 down&lt;br /&gt;
# ifconfig wlan0 hw ether 00:11:22:33:44:55&lt;br /&gt;
# ifconfig wlan0 up&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;結果の確認&lt;br /&gt;
&lt;code&gt;$ ip link | tail&lt;br /&gt;
22: wlan0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc mq state UP mode DORMANT qlen 100&lt;br /&gt;
  &amp;nbsp; &amp;nbsp; link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff&lt;/p&gt;
&lt;p&gt;ただしこの変更も一時的なものです。&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;永続的に更新する場合は、以下&lt;br /&gt;
  &lt;code&gt;# echo -n &quot;001122334455&quot; &amp;gt; /persist/wifi/.macaddr&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;ただしこの後、この人みたいな状態になってしまった。&lt;br /&gt;
&lt;a href=&quot;https://androidforums.com/threads/corrupted-wifi-mac-address.919147/&quot;&gt;https://androidforums.com/threads/corrupted-wifi-mac-address.919147/&lt;/a&gt;&lt;br /&gt;
・再設定できない&lt;br /&gt;
・後半の3セットは再起動のたびに変動（00:11:22:XX:XX:XX）&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;これを解消するために試したのがこれ。&lt;br /&gt;
&lt;a href=&quot;https://www.androidiani.com/forum/modding-google-nexus-4/344310-mac-address-cambiato-ad-ogni-riavvio-persistent-partition.html#post4592489&quot;&gt;https://www.androidiani.com/forum/modding-google-nexus-4/344310-mac-address-cambiato-ad-ogni-riavvio-persistent-partition.html&lt;/a&gt;&lt;br /&gt;
&lt;code&gt;# chown root:root /persist/wifi&lt;br /&gt;
# chmod 755 /persist/wifi&lt;br /&gt;
# chown wifi:wifi /persist/wifi/.macaddr&lt;br /&gt;
# chmod 660 /persist/wifi/.macaddr&lt;br /&gt;
# /system/bin/conn_init&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;これでMacアドレスを更新できるようになった。&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/2446856495633198224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/2446856495633198224'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2022/07/android-60-marshmallow-mac.html' title='Android 6.0 (Marshmallow) で MACアドレスを永続的に変更'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-7118382348999879967</id><published>2022-07-17T23:39:00.002+09:00</published><updated>2022-07-18T00:29:15.287+09:00</updated><title type='text'>ESP32 Video-Recorder-junior で malloc failed</title><content type='html'>&lt;p&gt;ログを見ても原因が分かりにくいが、これは PSRAM の Disable を Enabled に変えると解消した。以下エラーログ&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cam_hal: cam_dma_config: frame buffer malloc failed&lt;br /&gt;
cam_hal: cam_config: cam_dma_config failed&lt;br /&gt;
camera: Camera config failed with error 0xffffffff&lt;br /&gt;
Camera init failed with error 0xffffffffE gpio: gpio_install_isr_service: GPIO isr service already installed&lt;/code&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;・設定方法&lt;/h3&gt;
&lt;p&gt;Arduino IDE＞ツール と辿る&lt;br /&gt;
  PSRAMを選んで、設定をEnabled に変更&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/7118382348999879967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/7118382348999879967'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2022/07/esp32-video-recorder-junior-malloc.html' title='ESP32 Video-Recorder-junior で malloc failed'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-5457624550583814831</id><published>2022-07-17T23:26:00.009+09:00</published><updated>2022-07-18T15:26:50.486+09:00</updated><title type='text'>ESP32 Video-Recorder-junior を使ってみる</title><content type='html'>&lt;div&gt;ESP32-CAM で Motion JPEG 方式のビデオを microSD に保存するプログラムです。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ESP32-CAM Video-Recorder-junior&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/jameszah/ESP32-CAM-Video-Recorder-junior&quot;&gt;https://github.com/jameszah/ESP32-CAM-Video-Recorder-junior&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;以下、今回のインストール方法&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;１．GitHub からファイル一式をダウンロード&lt;/h3&gt;&lt;div&gt;リポジトリ全体のzipファイルをダウンロードしました。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;２．Arduino IDE でスケッチで開く&lt;/h3&gt;&lt;div&gt;　今回はv58を使いました。ダウンロードした中のv58フォルダを の ESP32-CAM-Video-Recorder-junior-58x.ino ファイルを Arduino IDE で開きます。&lt;/div&gt;&lt;div&gt;（※事前にフォルダ名を ino ファイルと同じ名前に変更する必要あり。そのまま Arduino IDE で開いたときの案内に従わず、事前にフォルダ名を変更します。）&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;３．設定&lt;/h3&gt;&lt;div&gt;（※設定はデフォルトのままで良いなら、設定は不要です。WiFiにも接続しません。）&lt;/div&gt;&lt;div&gt;v58フォルダにある config.txt ファイルに、ssid、ssid password を設定する。&lt;/div&gt;&lt;div&gt;その config ファイルを microSD に保存する。&lt;/div&gt;&lt;div&gt;microSD を ESP32-CAM に挿す。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;４．準備&lt;/h3&gt;&lt;div&gt;　もし ESP32 の開発が初回なら、ESP32 のボードマネージャをインストール&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	使用するボードの情報が取得できなかったので、&lt;/span&gt;今回は「ESP32 dev Module」というボードを選択した。（ESP32 のボードマネージャ インストールは、既に資料が多くあるので省略）&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;　ライブラリマネージャから、「WiFiManager by tablatronix」をインストール&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;これは WiFi.h 等のコンパイルエラーで気が付く。&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;ライブラリマネージャだと、「WiFiManager tzapu」で検索すると見つかります。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;　シリアルモニタ ボーレートの値を 115200 bps に変更する。&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;これはシリアルモニタが文字化けするから気が付く。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;　PSRAMの設定を Disabled から Enabled に変更する。&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;	&lt;/span&gt;これはエラーログからは分かりにくい。&lt;a href=&quot;./esp32-video-recorder-junior-malloc.html&quot;&gt;ログの詳細&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;５．マイコンボードに書き込む。&lt;/h3&gt;&lt;div&gt;最後に Hard resetting via RTS pin... と出力されるので、ここでリセットボタンを押すのかと思いきや、実は押さなくてもそのまま録画が始まってます。なのでログを見逃さない為にはシリアルモニタを事前に開いておく。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;６．ESP32-CAM のリセットボタンを押す&lt;/h3&gt;&lt;div&gt;Arduino IDE のシリアルモニタに Filemanager のURL（http://192.168.*.*:8080/）が出力される。ここから録画したファイルをダウンロード可能。&lt;/div&gt;&lt;div&gt;そのまま録画が開始されるので、録画終了まで30分待ちます。&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;iframe frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; sandbox=&quot;allow-popups allow-scripts allow-modals allow-forms allow-same-origin&quot; scrolling=&quot;no&quot; src=&quot;//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=mofuken0d-22&amp;amp;language=ja_JP&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=as_ss_li_til&amp;amp;asins=B09L6LF7BB&amp;amp;linkId=b0b95c067105d2646a88240a364ecac1&quot; style=&quot;height: 240px; width: 120px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/5457624550583814831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/5457624550583814831'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2022/07/esp32-video-recorder-junior.html' title='ESP32 Video-Recorder-junior を使ってみる'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-1706350781892397896</id><published>2022-07-17T01:17:00.002+09:00</published><updated>2022-07-17T13:18:26.027+09:00</updated><title type='text'>Hyper-V 環境で Arduino IDE の開発</title><content type='html'>Hyper-V の仮想環境で Arduino IDE を開発してみる。&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;しかし、Hyper-V だと、USB接続でマイコンボードに書き込めない。これは Hyper-V の COMポートは仮想シリアル(COM)ポートであって、物理COMポートと繋がっていないため。&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hyper-V の仮想COMポートは、物理マシンから仮想マシンへの接続用です。Hyper-V マネージャで COM設定いじっても無理でした。ここは別にドライバなど導入して仮想COMポートと物理COMポートを接続する必要があるが、かなり面倒です。&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ただし、VMware の仮想環境だと普通にマイコンボードと接続できます！&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1706350781892397896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1706350781892397896'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2022/07/hyper-v-arduino-ide.html' title='Hyper-V 環境で Arduino IDE の開発'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-3312537003382823895</id><published>2022-02-21T09:08:00.004+09:00</published><updated>2022-02-21T09:13:01.821+09:00</updated><title type='text'>[VBA] Range.Value すると「エラー 2015」</title><content type='html'>&lt;p&gt;Excel VBA でセルがエラー値だと、Range(&quot;A1&quot;).Value の結果が「エラー 2015」等となる。&lt;/br&gt;
このエラー値は、XlCVError 定数と同じであり、例えば、&lt;/br&gt;
  「エラー 2015」だと、「#VALUE!」のこと。&lt;/p&gt;

&lt;p&gt;この内容を変えたい場合は、
&lt;ul&gt;&lt;li&gt;「#VALUE!」と表示したいなら、Range(&quot;A1&quot;).Text&lt;/li&gt;
&lt;li&gt;・エラーとなった数式を表示したいなら、Range(&quot;A1&quot;).Formula&lt;/li&gt;
&lt;li&gt;・エラーを判定したいなら、IsError(Range(&quot;A1&quot;))&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;
&lt;/br&gt;
&lt;p&gt;XlCVError 列挙 (Excel)&lt;/br&gt;
  &lt;a href=&quot;https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlcverror&quot;&gt;https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlcverror&lt;/a&gt;&lt;/p&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3312537003382823895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3312537003382823895'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2022/02/vba-rangevalue-2015.html' title='[VBA] Range.Value すると「エラー 2015」'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-4230632924830262075</id><published>2021-08-29T15:58:00.000+09:00</published><updated>2021-08-29T15:58:56.045+09:00</updated><title type='text'>MSAccessのパススルークエリをCSV出力すると、3251エラー</title><content type='html'>MSAccessのVBAで、DoCmd.TransferText にパススルークエリを指定すると、エラーになる。&lt;br/&gt;
以前のMSAccessだと出来ていたはずだが。。&lt;br/&gt;

&lt;pre&gt;DoCmd.TransferText
  TransferType:=AcTextTransferType.acExportDelim,
  TableName:=パススルークエリ名,
  FileName:=出力ファイル.csv&lt;/pre&gt;

（結果）3251 この操作は、このタイプのオブジェクトには実行できません。&lt;br/&gt;
（環境）MSAccess 2013 (32bit)&lt;br/&gt;
&lt;br/&gt;
この対策として、&lt;br/&gt;
・パススルークエリをやめて、リンクテーブルを作成する。&lt;br/&gt;
・そのリンクテーブルを SELECT するビューを作成する。&lt;br/&gt;
・そのビューを、TransferText に指定する。</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/4230632924830262075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/4230632924830262075'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2021/08/msaccesscsv3251.html' title='MSAccessのパススルークエリをCSV出力すると、3251エラー'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-7368178492122554617</id><published>2021-07-30T21:36:00.001+09:00</published><updated>2021-07-30T22:11:36.995+09:00</updated><title type='text'>HUAWEI P20 lite (ANE-LX2J) をテレビで見る</title><content type='html'>&lt;div&gt;手段について
&lt;table border=&quot;1&quot; style=&quot;border: 1px solid gray;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;１&lt;/td&gt;&lt;td&gt;USB Type-C － HDMI 変換ケーブル&lt;/td&gt;&lt;td&gt;非対応&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;２&lt;/td&gt;&lt;td&gt;ミラキャスト(Miracast)、クロームキャスト等&lt;/td&gt;&lt;td&gt;対応&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;HDMI 変換ケーブルについて&lt;/h3&gt;
これは、P20 lite では非対応。&lt;br /&gt;
（USB Type-C 2.0 なので、Thunderbolt 3 / DisplayPort over Alternate Mode には非対応）&lt;br /&gt;
&lt;br /&gt;
P20 lite 詳細スペック&lt;br /&gt;
https://www.gsmarena.com/huawei_p20_lite-9098.php&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;ミラキャストについて&lt;/h3&gt;
これは対応しています。&lt;br /&gt;
ただし、動画配信をテレビで見るには、クロームキャストでないと非対応のサービスが多いです。&lt;/div&gt;
&lt;br /&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;https://rcm-fe.amazon-adsystem.com/e/cm?ref=qf_sp_asin_til&amp;t=mofuken0d-22&amp;m=amazon&amp;o=9&amp;p=8&amp;l=as1&amp;IS2=1&amp;mobile=1&amp;asins=B07JGP3VC7&amp;linkId=c3f0548faa2ee0a82b5bd2ba4dedcd96&amp;bc1=ffffff&amp;amp;lt1=_top&amp;fc1=333333&amp;lc1=0066c0&amp;bg1=ffffff&amp;f=ifr&quot;&gt;&lt;/iframe&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/7368178492122554617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/7368178492122554617'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2021/07/huawei-p20-lite-ane-lx2j.html' title='HUAWEI P20 lite (ANE-LX2J) をテレビで見る'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-3388623795498298031</id><published>2021-07-25T09:51:00.002+09:00</published><updated>2021-07-30T21:23:08.779+09:00</updated><title type='text'>MS Access ナビゲーション ウィンドウのグループをVBAで変更</title><content type='html'>&lt;div&gt;Microsoft Access の Navigation Pane にある Group を VBA で変更する方法です。&lt;br /&gt;
&lt;br /&gt;
DoCmd のメソッドで提供されていれば助かるのだが、残念ながら見当たらない。 システムテーブルを直接編集して、CREATE したオブジェクトをグループに追加します。&lt;br /&gt;
&lt;br /&gt;
今回の前提だと、手動で作成したグループに、VBA でオブジェクトを追加します。&lt;/div&gt;
&lt;br /&gt;

&lt;style&gt;
table { border-style: none; empty-cells: hide; }
th,td { border: 1px black solid; }
.ex { border: 1px gray solid; }
&lt;/style&gt;

&lt;h3 style=&quot;text-align: left;&quot;&gt;使用するシステムテーブルと、その項目&lt;/h3&gt;

&lt;div&gt;MSysNavPaneGroups で必要な項目
&lt;table&gt;
  &lt;tbody&gt;&lt;tr&gt;
  &lt;th&gt;&lt;/th&gt;
  &lt;th&gt;Id&lt;/th&gt;
  &lt;th&gt;Name&lt;/th&gt;&lt;/tr&gt;

  &lt;tr&gt;&lt;td&gt;&lt;/td&gt;
  &lt;td&gt;一意のId&lt;/td&gt;
  &lt;td&gt;グループ名&lt;/td&gt;&lt;/tr&gt;

  &lt;tr&gt;&lt;td class=&quot;ex&quot;&gt;（例）&lt;/td&gt;
  &lt;td&gt;9&lt;/td&gt;
  &lt;td&gt;グループ1&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;br /&gt;

&lt;div&gt;MSysNavPaneGroupToObjects で必要な項目
&lt;table&gt;
  &lt;tbody&gt;&lt;tr&gt;
  &lt;th&gt;&lt;/th&gt;
  &lt;th&gt;GroupID&lt;/th&gt;
  &lt;th&gt;Id&lt;/th&gt;
  &lt;th&gt;Name&lt;/th&gt;
  &lt;th&gt;ObjectID&lt;/th&gt;
  &lt;th&gt;Position&lt;/th&gt;&lt;/tr&gt;

  &lt;tr&gt;&lt;td&gt;&lt;/td&gt;
  &lt;td&gt;MSysNavPaneGroupsのId&lt;/td&gt;
  &lt;td&gt;一意のId&lt;/td&gt;
  &lt;td&gt;任意の項目&lt;/td&gt;
  &lt;td&gt;MSysObjectsのId&lt;/td&gt;
  &lt;td&gt;表示順&lt;/td&gt;&lt;/tr&gt;

  &lt;tr&gt;&lt;td class=&quot;ex&quot;&gt;（例）&lt;/td&gt;
  &lt;td&gt;9&lt;/td&gt;
  &lt;td&gt;15&lt;/td&gt;
  &lt;td&gt;テーブル1&lt;/td&gt;
  &lt;td&gt;86&lt;/td&gt;
  &lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;br /&gt;

&lt;div&gt;MSysObjects で必要な項目
&lt;table&gt;
  &lt;tbody&gt;&lt;tr&gt;
  &lt;th&gt;&lt;/th&gt;
  &lt;th&gt;Id&lt;/th&gt;
  &lt;th&gt;Name&lt;/th&gt;&lt;/tr&gt;

  &lt;tr&gt;&lt;td&gt;&lt;/td&gt;
  &lt;td&gt;一意のId&lt;/td&gt;
  &lt;td&gt;名称1&lt;/td&gt;&lt;/tr&gt;

  &lt;tr&gt;&lt;td class=&quot;ex&quot;&gt;（例）&lt;/td&gt;
  &lt;td&gt;86&lt;/td&gt;
  &lt;td&gt;テーブル1&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;グループに登録する手順&lt;/h3&gt;
&lt;div&gt;&lt;ol&gt;
&lt;li&gt;VIEW 等のオブジェクトを CREATE&lt;/li&gt;
&lt;li&gt;MSysObjects から、そのオブジェクトの Id を検索&lt;/li&gt;
&lt;li&gt;MSysNavPaneGroups から、追加するグループの Id を検索&lt;/li&gt;
&lt;li&gt;MSysNavPaneGroupToObjects から、Idの最大値＋１を算出（一意の Id）&lt;br /&gt;
&lt;code&gt;SELECT Max(Id) + 1 FROM MSysNavPaneGroupToObjects&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;MSysNavPaneGroupToObjects から、Position の連番を算出、開始は１（Position に登録する連番）&lt;br /&gt;
&lt;code&gt;SELECT Nz(Max(Position), 0) + 1 FROM MSysNavPaneGroupToObjects&lt;br /&gt;
WHERE GroupID = [追加するグループの Id]&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;/div&gt;

&lt;div&gt;この結果を元に、MSysNavPaneGroupToObjects にレコードを追加
&lt;table&gt;
  &lt;tbody&gt;
  &lt;tr&gt;&lt;td&gt;Flags&lt;/td&gt;&lt;td&gt;0（固定値）&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;GroupID&lt;/td&gt;&lt;td&gt;追加するグループの Id&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Icon&lt;/td&gt;&lt;td&gt;0（固定値）&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Id&lt;/td&gt;&lt;td&gt;一意の Id&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;追加するオブジェクトの名称（任意）&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;ObjectID&lt;/td&gt;&lt;td&gt;追加するオブジェクトの Id&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Position&lt;/td&gt;&lt;td&gt;連番&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3388623795498298031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3388623795498298031'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2021/07/ms-access-vba.html' title='MS Access ナビゲーション ウィンドウのグループをVBAで変更'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-5077323957015151185</id><published>2020-10-10T10:26:00.000+09:00</published><updated>2020-10-10T10:26:49.899+09:00</updated><title type='text'>[python] locateCenterOnScreen で TypeError</title><content type='html'>&lt;div&gt;pyautogui の locateCenterOnScreen では、&lt;br /&gt;アイコンが見つからなかった場合に、Exception が発生しなくなっている。&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;code&gt;import pyautogui&lt;br /&gt;x, y = pyautogui.locateCenterOnScreen(&#39;icon.png&#39;)&lt;br /&gt;pyautogui.click(x, y)&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;・リファレンス&lt;br /&gt;image が画面にない場合は、ImageNotFoundException&lt;br /&gt;https://pyautogui.readthedocs.io/en/latest/screenshot.html&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;・実際&lt;br /&gt;Exception は発生せず、None が戻る。&lt;br /&gt;このためサンプルの実装だと、None を x,y(タプル)に代入できず、以下のエラーとなる。&lt;br /&gt;TypeError: cannot unpack non-iterable NoneType object&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/5077323957015151185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/5077323957015151185'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2020/10/python-locatecenteronscreen-typeerror.html' title='[python] locateCenterOnScreen で TypeError'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-4931409755351995811</id><published>2020-09-10T17:58:00.000+09:00</published><updated>2020-09-10T17:58:52.920+09:00</updated><title type='text'>[VBA] Sgn 関数で内部エラーが発生</title><content type='html'>&lt;div&gt;VBAの Sgn 関数で配列の未割り当てをチェックしている場合に、内部エラーが発生する。&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;■ サンプルコード&lt;br /&gt;
&lt;code&gt;Dim arr() As String&lt;br /&gt;
If Sgn(arr) = 0 Then Debug.Print 0&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;■ エラーメッセージ&lt;br /&gt;
「実行時エラー 51、内部エラーです。」&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;これは Sgn 関数本来の使い方ではないが、どうやら以前に配列のチェック方法として広まったらしく、MS Office 32bit 環境では そこそこ動いていた。これが Office 64bit だとエラーになる。（※Windows の 64bit のことではない）&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;言語仕様でない使い方なので、この方法は止めましょう。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;

&lt;div&gt;Office VBA リファレンス - Sgn 関数&lt;br /&gt;
&lt;a href=&quot;https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/sgn-function&quot;&gt;https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/sgn-function&lt;/a&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/4931409755351995811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/4931409755351995811'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2020/09/vba-sgn.html' title='[VBA] Sgn 関数で内部エラーが発生'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-6646379639083754945</id><published>2020-07-19T17:16:00.002+09:00</published><updated>2020-07-19T17:16:09.166+09:00</updated><title type='text'>[ラズパイ] タスク バーを復旧する</title><content type='html'>Windows でいうと「タスク バー」になりますが、Raspberry Pi だとデフォルトの「パネル」になります。&lt;br /&gt;
&lt;br /&gt;
パネルを削除していないユーザ、もしくは別の環境から設定ファイルをコピーして再ログインすれば、元に戻ります。&lt;br /&gt;
設定ファイルは以下&lt;br /&gt;
&lt;br /&gt;
$HOME/.config/lxpanel/LXDE-pi/panels/panel</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/6646379639083754945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/6646379639083754945'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2020/07/blog-post.html' title='[ラズパイ] タスク バーを復旧する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-1153289061476710373</id><published>2020-06-30T10:24:00.001+09:00</published><updated>2020-06-30T10:24:13.821+09:00</updated><title type='text'>[Oracle] VIEWのSQLを出力する</title><content type='html'>Oracle のビュー定義は、データ・ディクショナリ・ビューを検索することで確認できますが、SQL*Plus で出力する場合は、システム変数の調整が必要です。&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;SET PAGESIZE 2000（SQLの行数、ヘッダの繰り返しを防ぐ）&lt;br /&gt;
SET LINESIZE 500（１行に表示するバイト数、途中での改行を防ぐ）&lt;br /&gt;
SET LONGCHUNKSIZE 500（これも１行のバイト数として必要）&lt;br /&gt;
SET LONG 10000（SQLのバイト数）&lt;br /&gt;
&lt;br /&gt;
SELECT TEXT FROM USER_VIEWS&lt;br /&gt;
WHERE VIEW_NAME = &#39;view name&#39;&lt;/code&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1153289061476710373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1153289061476710373'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2020/06/oracle-viewsql.html' title='[Oracle] VIEWのSQLを出力する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-6434727699529944993</id><published>2019-09-08T07:44:00.000+09:00</published><updated>2019-09-08T07:44:35.639+09:00</updated><title type='text'>[Python ] Flask + Blueprint で no attribute &#39;name&#39;</title><content type='html'>サンプルを参考に Blueprint を始めてみたところ、エラーが発生した。&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;if blueprint.name in self.blueprints:&lt;br /&gt;
AttributeError: module &#39;...&#39; has no attribute &#39;name&#39;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
どうやら、同じエラーに直面した人も多い様子。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://flask.palletsprojects.com/en/1.1.x/blueprints/&quot;&gt;https://flask.palletsprojects.com/en/1.1.x/blueprints/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
simple_page.py&lt;br /&gt;
&lt;div style=&quot;border: 1px solid gray;&quot;&gt;&lt;code&gt;simple_page = Blueprint(&#39;simple_page&#39;, __name__)&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Flask側&lt;br /&gt;
&lt;div style=&quot;border: 1px solid gray;&quot;&gt;&lt;code&gt;app = Flask(__name__)&lt;br /&gt;
app.register_blueprint(simple_page)&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
このサンプルに限らず、同じ識別子の使いまわしのサンプルが多くて、誤誘導気味です。&lt;br /&gt;
&lt;code&gt;register_blueprint()&lt;/code&gt; の引数に使っている &lt;code&gt;simple_page&lt;/code&gt; は、モジュール名などではなくて、変数名です。&lt;br /&gt;
&lt;br /&gt;
違和感ある設計ですね。。。</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/6434727699529944993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/6434727699529944993'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2019/09/python-flask-blueprint-no-attribute-name.html' title='[Python ] Flask + Blueprint で no attribute &#39;name&#39;'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-3145795000508479070</id><published>2019-08-12T10:24:00.001+09:00</published><updated>2019-08-12T10:24:24.455+09:00</updated><title type='text'>yum で https 接続エラー</title><content type='html'>yum で https のファイルをインストールできない場合の対処について。&lt;br /&gt;
&lt;br /&gt;
IUS Community のリポジトリ追加で問題が発生した。&lt;br /&gt;
&lt;code&gt;yum install https://centos7.iuscommunity.org/ius-release.rpm&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
■ 今回の状況&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;環境：CentOS7 64bit (DTI VPS)&lt;/li&gt;
&lt;li&gt;エラーメッセージ：&lt;br /&gt;
Cannot open: https://centos7.iuscommunity.org/ius-release.rpm. Skipping.&lt;br /&gt;
Error: Nothing to do&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
■ 問題を調査したところ、&lt;br /&gt;
・wget だと https に接続できる。&lt;br /&gt;
・curl だと https に接続できない。&lt;br /&gt;
&lt;br /&gt;
yum の内部では curl を使っているため、https への接続が失敗していた。&lt;br /&gt;
&lt;br /&gt;
■ 今回の対策&lt;br /&gt;
シンプルに対処するには、curl をアップデートすると解消する。&lt;br /&gt;
&lt;code&gt;yum update curl&lt;/code&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3145795000508479070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3145795000508479070'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2019/08/yum-https.html' title='yum で https 接続エラー'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-1336941336253196338</id><published>2019-07-28T12:17:00.001+09:00</published><updated>2019-07-28T12:17:31.098+09:00</updated><title type='text'>Raspberry Pi の USB 電源を ON/OFF</title><content type='html'>Raspberry Pi 3 Model B+ の USB 電源をオフにする方法です。手順としては、事前にUSBデバイスを解放、次に電源OFF となります。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;１．USBデバイス を unbind する。&lt;/h2&gt;単なる電源用のUSBデバイス（USBライト等）でなければ、USBデバイスを解放します。&lt;br /&gt;
&lt;br /&gt;
（※もし USB フラッシュドライブ等なら、その前に umount する）&lt;br /&gt;
（※解放せずに下記の電源OFF をしても、モノによっては直後に再認識／電源ON となって、電源が落とせないケースあり。例えば、バッテリーを持っている USB デバイス等を USBポート2 に接続すると発生）&lt;br /&gt;
&lt;br /&gt;
USBのポート番号は以下の図（内部的には、LAN ポートも USB 扱い）&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg49ZM6_GUDBNVckicLGooCc6-bAvR9e2mPfEyutiNvcY4LAiVqxYzaaJ0PmNiXucpoLTMAuz0iD6T28J6sTp676JNO0WGQNDH6peJmGRMCj3LuTmBq8oKicXeiYKchTeL0l-qGOzuaGrc/s1600/usb_port.png&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg49ZM6_GUDBNVckicLGooCc6-bAvR9e2mPfEyutiNvcY4LAiVqxYzaaJ0PmNiXucpoLTMAuz0iD6T28J6sTp676JNO0WGQNDH6peJmGRMCj3LuTmBq8oKicXeiYKchTeL0l-qGOzuaGrc/s200/usb_port.png&quot; width=&quot;200&quot; height=&quot;134&quot; data-original-width=&quot;422&quot; data-original-height=&quot;282&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
今回は、iPod mini を USBポート2 へ接続している。&lt;br /&gt;
&lt;div style=&quot;border: 1px solid gray;&quot;&gt;&lt;code&gt;pi@raspberrypi:~ $ ls /sys/bus/usb/drivers/usb&lt;br /&gt;
&lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;1-1&lt;/span&gt;  &lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;1-1.1&lt;/span&gt;  &lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;1-1.2&lt;/span&gt;  bind  uevent  unbind  &lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;usb1&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
この名称 &lt;code&gt;A-B.C&lt;/code&gt; の様式は、&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;A：USBバス&lt;/li&gt;
&lt;li&gt;B：バスのポート&lt;/li&gt;
&lt;li&gt;C：USBハブのポート&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;
この状態から、Raspberry Pi 3B+ のハードウェアとしては、こうなっている。&lt;br /&gt;
・USB の4ポートは、USBハブとして提供されている&lt;br /&gt;
・LANポートが USBハブのポート1 として管理されていた&lt;br /&gt;
&lt;br /&gt;
さらに追加でUSBハブ等を挿していると、この名称も長くなる。追跡するにはカーネルのメッセージなら探しやすい。&lt;br /&gt;
&lt;div style=&quot;border: 1px solid gray;&quot;&gt;&lt;code&gt;pi@raspberrypi:~ $ dmesg | grep usb&lt;br /&gt;
[11002.555034] usb &lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;1-1.2&lt;/span&gt;: Product: iPod mini&lt;br /&gt;
[11002.555042] usb &lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;1-1.2&lt;/span&gt;: Manufacturer: Apple&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
iPod mini は 1-1.2 だと判明&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
lsusb コマンドでも番号を追跡できるが、確認できるポートは「バスのポート」なのか「ハブのポート」なのか分かりにくい。&lt;br /&gt;
&lt;pre style=&quot;border: 1px solid gray;&quot;&gt;pi@raspberrypi:~ $ lsusb
Bus 001 &lt;span style=&quot;font-weight:bolder; color:teal;&quot;&gt;Device 004&lt;/span&gt;: ID 05ac:1205 Apple, Inc. iPod Mini 1.Gen/2.Gen
Bus 001 &lt;span style=&quot;font-weight:bolder; color:teal;&quot;&gt;Device 003&lt;/span&gt;: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 &lt;span style=&quot;font-weight:bolder; color:teal;&quot;&gt;Device 002&lt;/span&gt;: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 &lt;span style=&quot;font-weight:bolder; color:teal;&quot;&gt;Device 001&lt;/span&gt;: ID 1d6b:0002 Linux Foundation 2.0 root hub

pi@raspberrypi:~ $ lsusb -t
/:  Bus 01.Port 1: &lt;span style=&quot;font-weight:bolder; color:teal;&quot;&gt;Dev 1&lt;/span&gt;, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: &lt;span style=&quot;font-weight:bolder; color:teal;&quot;&gt;Dev 2&lt;/span&gt;, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ &lt;span style=&quot;font-weight:bolder; color:red;&quot;&gt;Port 1&lt;/span&gt;: &lt;span style=&quot;font-weight:bolder; color:teal;&quot;&gt;Dev 3&lt;/span&gt;, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ &lt;span style=&quot;font-weight:bolder; color:red;&quot;&gt;Port 2&lt;/span&gt;: &lt;span style=&quot;font-weight:bolder; color:teal;&quot;&gt;Dev 4&lt;/span&gt;, If 0, Class=Mass Storage, Driver=usb-storage, 480M&lt;/pre&gt;状況的に&lt;span style=&quot;color:red;&quot;&gt;赤字が「ハブのポート」&lt;/span&gt;である様子。lsusb と lsusb -t の関係は &lt;span style=&quot;font-weight:bolder; color:teal;&quot;&gt;Device番号&lt;/span&gt; で紐づけできる。これまでの調査から USB デバイスの正体は、&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;usb1&lt;/span&gt;：Linux Foundation 2.0 root hub（コネクタは無い）&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;1-1&lt;/span&gt;：Standard Microsystems Corp. SMC9514 Hub（コネクタは無い）&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;1-1.1&lt;/span&gt;：Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter&lt;br /&gt;
（有線LAN コネクタ）&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;1-1.2&lt;/span&gt;：Apple iPod mini（Pi 3B+ の USBポート2 へ接続中）&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
これで操作するデバイスが確認できたら、以下のコマンドで unbind します。&lt;br /&gt;
&lt;div style=&quot;border: 1px solid gray;&quot;&gt;&lt;code&gt;pi@raspberrypi:~ $ echo 1-1.2 | sudo tee /sys/bus/usb/drivers/usb/unbind&lt;br /&gt;
※ファイルの変更権は root のみなので、単にリダイレクトするのは無理です。&lt;br /&gt;
&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;２．USB コネクタの電源OFF&lt;/h2&gt;USBハブのポート毎に電源管理できる製品でないと、ポート毎に電源OFF できない。Raspberry Pi 3B+ 基盤にあるUSBは、完全にはできないタイプなので、USBの4ポートを一括で電源OFFすることになる。（per-port power switching に対応するスマートHub 製品が必要だが、希少）&lt;br /&gt;
&lt;br /&gt;
利用できるツールを２つ挙げる。&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;産総研のお偉いさんが提供しているツール（これはコンパイルするだけなのでコンパクト）。&lt;a href=&quot;https://www.gniibe.org/development/ac-power-control-by-USB-hub/&quot;&gt;個人用のページ&lt;/a&gt;のうち、「6. Implementation」にある、&lt;a href=&quot;https://www.gniibe.org/oitoite/ac-power-control-by-USB-hub/hub-ctrl.c&quot;&gt;C&lt;/a&gt; もしくは &lt;a href=&quot;http://git.gniibe.org/gitweb/?p=gnuk/gnuk.git;a=blob;f=tool/hub_ctrl.py&quot;&gt;Python&lt;/a&gt; 実装&lt;br /&gt;
&lt;br /&gt;
もしくは githubサイト（簡単なリファレンスあり、上と同じ C のプログラム）&lt;br /&gt;
&lt;a href=&quot;https://github.com/codazoda/hub-ctrl.c&quot;&gt;https://github.com/codazoda/hub-ctrl.c&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;上記の派生ツール（これはmake install が必要）&lt;br /&gt;
&lt;a href=&quot;https://github.com/mvp/uhubctl&quot;&gt;https://github.com/mvp/uhubctl&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
今回は、hub-ctrl.c を使用する。github の説明の通りにコンパイルする。&lt;br /&gt;
&lt;div style=&quot;border: 1px solid gray;&quot;&gt;&lt;code&gt;wget https://www.gniibe.org/oitoite/ac-power-control-by-USB-hub/hub-ctrl.c&lt;br /&gt;
sudo apt-get install libusb-dev&lt;br /&gt;
gcc -o hub-ctrl hub-ctrl.c -lusb&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
使用方法は github にもあるが、番号のつけ方が分かりにくい。&lt;br /&gt;
&lt;code&gt;hub-ctrl -b [Bus Num] -d [Device Num] -P [Port Num] -p [off:0/on:1]&lt;/code&gt;&lt;br /&gt;
この Port は Bus のポートでなく、USBハブのポート番号が該当する。&lt;br /&gt;
&lt;pre style=&quot;border: 1px solid gray;&quot;&gt;pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 05ac:1205 Apple, Inc. iPod Mini 1.Gen/2.Gen
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
&lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;Bus 001 Device 002&lt;/span&gt;: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

pi@raspberrypi:~ $ lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ &lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;Port 1&lt;/span&gt;: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ &lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;Port 2&lt;/span&gt;: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M&lt;/pre&gt;USBハブとして機能しているのが、「（Bus 001 Device 002）Standard Microsystems Corp. SMC9514 Hub」なので、このハブのポートの電源を切る操作となる。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Bus Num：1&lt;/li&gt;
&lt;li&gt;Device Num：2&lt;/li&gt;
&lt;li&gt;Port Num：1～5（USBハブのポート番号）&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style=&quot;border: 1px solid gray;&quot;&gt;LANコネクタの電源OFF（ハブのポート1）&lt;br /&gt;
&lt;code&gt;pi@raspberrypi:~ $ sudo ./hub-ctrl -b 1 -d 2 -P 1 -p 0&lt;/code&gt;&lt;br /&gt;
USBコネクタの電源OFF（ハブのポート2）&lt;br /&gt;
&lt;code&gt;pi@raspberrypi:~ $ sudo ./hub-ctrl -b 1 -d 2 -P 2 -p 0&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
※電源管理が完全ではないので、ポート2の電源を切るとUSB全ポートの電源が切れる。ポート3～5 は個別に電源管理できない。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
もしくは USBハブの番号を指定して操作する、ハブの番号は hub-ctrl ツールの中で連番を付けているだけなので、そちらで確認する。&lt;br /&gt;
&lt;div style=&quot;border: 1px solid gray;&quot;&gt;&lt;code&gt;pi@raspberrypi:~ $ ./hub-ctrl&lt;br /&gt;
Hub #0 at 001:002&lt;br /&gt;
INFO: individual power switching.&lt;br /&gt;
WARN: Port indicators are NOT supported.&lt;br /&gt;
Hub #1 at 001:001&lt;br /&gt;
INFO: ganged switching.&lt;br /&gt;
WARN: Port indicators are NOT supported.&lt;br /&gt;
&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
この様式は、Hub #[Hub Num] at [Bus Num]:[Device Num] となっているので、今回ではUSBハブとの対応はこのようになっている。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Hub #&lt;span style=&quot;font-weight:bolder; color:blue;&quot;&gt;0&lt;/span&gt;：（Bus 001 Device 002）Standard Microsystems Corp. SMC9514 Hub&lt;/li&gt;
&lt;li&gt;Hub #1：（Bus 001 Device 001）Linux Foundation 2.0 root hub&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
上記より、電源を切るのは Hub #0 になる。（Hub #1 を電源OFFしちゃうと、この後の電源管理が全くできないうえ、このハブの再電源ONすらできず、OS再起動することになる。）&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px solid gray;&quot;&gt;LANコネクタの電源OFF（ハブのポート1）&lt;br /&gt;
&lt;code&gt;pi@raspberrypi:~ $ sudo ./hub-ctrl -h 0 -P 1 -p 0&lt;/code&gt;&lt;br /&gt;
USBコネクタの電源OFF（ハブのポート2）&lt;br /&gt;
&lt;code&gt;pi@raspberrypi:~ $ sudo ./hub-ctrl -h 0 -P 2 -p 0&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
※同じく電源管理が完全ではないので、ポート2の電源を切るとUSB全ポートの電源が切れる。</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1336941336253196338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1336941336253196338'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2019/07/raspberry-pi-usb-onoff.html' title='Raspberry Pi の USB 電源を ON/OFF'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg49ZM6_GUDBNVckicLGooCc6-bAvR9e2mPfEyutiNvcY4LAiVqxYzaaJ0PmNiXucpoLTMAuz0iD6T28J6sTp676JNO0WGQNDH6peJmGRMCj3LuTmBq8oKicXeiYKchTeL0l-qGOzuaGrc/s72-c/usb_port.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-8103436825607821129</id><published>2019-07-26T12:50:00.001+09:00</published><updated>2019-07-26T14:35:54.938+09:00</updated><title type='text'>東芝gigashot の ZIF HDD からデータコピー</title><content type='html'>東芝gigashotが起動しなくなったので、内臓ハードディスクからデータをバックアップする。内臓HDDは、東芝 1.8インチHDD（MK4009GAL ZIFコネクタ）でした。&lt;br /&gt;
&lt;br /&gt;
データを転送するのに、2つの変換アダプタを組み合わせた（千石電商秋葉原本店 の隣にある２号店で購入）。パソコンはWindows10です。&lt;br /&gt;
&lt;br /&gt;
&lt;table style=&quot;text-align:center; border-style:none;&quot;&gt;&lt;tr&gt;&lt;td&gt;GROOVY HDD-USB UD-301S&amp;nbsp;&amp;nbsp;&lt;br /&gt;
IDE接続3.5ドライブ &lt;br /&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=mofuken0d-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=B001NKBCK8&amp;linkId=7645510d0b1c81f7e22da00e46d36733&quot;&gt;&lt;/iframe&gt;&lt;/td&gt; &lt;td&gt;TFTEC JAPAN (変換名人) IDE-ZIFB35A&lt;br /&gt;
ZIF HDD → 3.5&quot;HDD変換&lt;br /&gt;
&lt;iframe style=&quot;width:120px;height:240px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=mofuken0d-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=B004UQ9UHE&amp;linkId=333ad9ebf3f2af3e610b1a0fb5aea917&quot;&gt;&lt;/iframe&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
まず、変換名人には、マニュアルなんて無いです。&lt;br /&gt;
ZIFコネクタは、フラップを上げてケーブルを挿します。フラップは写真（下記）の赤矢印&lt;br /&gt;
&lt;br /&gt;
&lt;table style=&quot;text-align:center; border-style:none;&quot;&gt;&lt;tr&gt;&lt;td&gt;黒色のフラップ（分かりにくい）&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisHQfIhf9IF4EJdOaFzxEmGhz9-n8dp6ZgqW0zCXWIvuGqa-UFsmZzVCzx2JR9hoSYjngNJyfP9vN8d1LskAMSH0KVDXLkU0ZEjF-yNUwcTsPWMDCUd2Ea86RRCdvhc8BEvY7xLm82pYY/s1600/IDE-ZIFB35A.jpg&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisHQfIhf9IF4EJdOaFzxEmGhz9-n8dp6ZgqW0zCXWIvuGqa-UFsmZzVCzx2JR9hoSYjngNJyfP9vN8d1LskAMSH0KVDXLkU0ZEjF-yNUwcTsPWMDCUd2Ea86RRCdvhc8BEvY7xLm82pYY/s200/IDE-ZIFB35A.jpg&quot; width=&quot;175&quot; height=&quot;200&quot; data-original-width=&quot;285&quot; data-original-height=&quot;325&quot; /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td&gt;黒色のフラップ&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDS5Pm6Naz5fNz0yybSkx4ch0BM9ZTGKvtzyPysYRTN4YOrguKoAT-Tjqu5Qm7sLNSYAC7ivQDZusIN9Ewvd8Ul6jE9GL6_lIfDxbEJgZy8iQHvbH2Sez_PSEst9LvFzQAIuxoEl3w_m4/s1600/UD-301S.jpg&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDS5Pm6Naz5fNz0yybSkx4ch0BM9ZTGKvtzyPysYRTN4YOrguKoAT-Tjqu5Qm7sLNSYAC7ivQDZusIN9Ewvd8Ul6jE9GL6_lIfDxbEJgZy8iQHvbH2Sez_PSEst9LvFzQAIuxoEl3w_m4/s200/UD-301S.jpg&quot; width=&quot;175&quot; height=&quot;200&quot; data-original-width=&quot;285&quot; data-original-height=&quot;325&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
ZIFケーブルは、変換名人側にはケーブルの青が挿せる。&lt;br /&gt;
東芝（青）日立（白）と区別があるが、東芝HDDなのに青が挿せない（コネクタが狭い）&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY__eNGwIg8q_ekgat6QwxALWIJei4q1zOhqqK_1B1U3xkTX6RbRVBrvdRMbLIPdA9JKxgdcbm1eqXHA0KgMnXrYLdV1fp8bZJcwDkr_cZYtbemth5oX354tp3DZ_KuL6bqPqu__JEODM/s1600/cable.jpg&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY__eNGwIg8q_ekgat6QwxALWIJei4q1zOhqqK_1B1U3xkTX6RbRVBrvdRMbLIPdA9JKxgdcbm1eqXHA0KgMnXrYLdV1fp8bZJcwDkr_cZYtbemth5oX354tp3DZ_KuL6bqPqu__JEODM/s200/cable.jpg&quot; width=&quot;200&quot; height=&quot;148&quot; data-original-width=&quot;364&quot; data-original-height=&quot;270&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ZIF（Zero Insertion Force）名前の通り「挿す力ゼロ」のはずなので、ねじ込む必要は無い。厚みが違う（青：厚め、白：薄め）ので、白だと挿せて、正常に動作した。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimX7r-frHhiOWOaoKNkpNHdafFekr7OZagc-VSpPDS3KiXHXWx95HBxBwFtaSlOs3eDwcNnErS6-8EVy-5uNYwnWCdKDzDh8Z8rj-J567QJag0GFYmJDdkUC2kuDXY-ROCiEqdczQRV3Y/s1600/IDE-ZIF-USB.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimX7r-frHhiOWOaoKNkpNHdafFekr7OZagc-VSpPDS3KiXHXWx95HBxBwFtaSlOs3eDwcNnErS6-8EVy-5uNYwnWCdKDzDh8Z8rj-J567QJag0GFYmJDdkUC2kuDXY-ROCiEqdczQRV3Y/s200/IDE-ZIF-USB.jpg&quot; width=&quot;200&quot; height=&quot;90&quot; data-original-width=&quot;1037&quot; data-original-height=&quot;467&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
他に気がついた点では、&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;変換名人の赤ランプは、電源ケーブルを繋げばHDDの有無に関わらず点灯する。&lt;/li&gt;
&lt;li&gt;変換名人の緑ランプはアクセスランプのはずだが、データ転送中も一切点灯しなかった。&lt;/li&gt;
&lt;li&gt;IDE変換ケーブルのUSBをパソコンに挿せば、電源もしくはHDDの有無に関わらずWindows側で一時的にディスクが認識されて消える挙動をする。&lt;/li&gt;
&lt;/ol&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/8103436825607821129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/8103436825607821129'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2019/07/gigashot-zif-hdd.html' title='東芝gigashot の ZIF HDD からデータコピー'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisHQfIhf9IF4EJdOaFzxEmGhz9-n8dp6ZgqW0zCXWIvuGqa-UFsmZzVCzx2JR9hoSYjngNJyfP9vN8d1LskAMSH0KVDXLkU0ZEjF-yNUwcTsPWMDCUd2Ea86RRCdvhc8BEvY7xLm82pYY/s72-c/IDE-ZIFB35A.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-8687129696390083416</id><published>2019-07-16T22:58:00.001+09:00</published><updated>2019-07-16T22:58:41.650+09:00</updated><title type='text'>(IFTTT)Webhooks - Beebotte 連携でエラー</title><content type='html'>今回は IFTTT を利用して&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;トリガー：Mail（Send IFTTT any email）&lt;/li&gt;
&lt;li&gt;アクション：Webhooks（Make a web request）&lt;br /&gt;
Webhooks の通知先は、Beebotte&lt;/li&gt;
&lt;/ol&gt;というアプレットを作って、発生した障害を調査した記録です。&lt;br /&gt;
&lt;br /&gt;
Webhooks の設定は以下&lt;br /&gt;
&lt;table border=&quot;1&quot; style=&quot;border-collapse:collapse;&quot;&gt;&lt;tr&gt;&lt;td&gt;URL&lt;/td&gt;&lt;td&gt;https://api.beebotte.com/v1/data/publish/[Channel]/[Resource]?token=[Channel Token]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Method&lt;/td&gt;&lt;td&gt;POST&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Content Type&lt;/td&gt;&lt;td&gt;application/json&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Body&lt;/td&gt;&lt;td&gt;{&quot;data&quot;:&quot;{{Subject}}&quot;}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;URL の根拠がリファレンスから探せなかったが、cURL の json 送信を参考にした。&lt;br /&gt;
&lt;a href=&quot;https://beebotte.com/docs/publish&quot;&gt;https://beebotte.com/docs/publish&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
問題はメールの件名（Subject）でなく、メールの本文（Body）を使うと発生する。&lt;br /&gt;
（例）上記のBodyを変更する &lt;code&gt;{&quot;data&quot;:&quot;{{Body}}&quot;}&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
トリガーとなるメールを送信すると、このアプレットの View activity log で、エラーが確認できる。メールで送った本文（Body）の内容も併せて確認できるが、特に問題は見当たらない。&lt;br /&gt;
&lt;br /&gt;
＜View activity log の表示＞&lt;br /&gt;
&lt;code&gt;Applet skipped&lt;br /&gt;
Unable to make web request. Your server returned a 400&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
検証として、cURL を使ってメールの本文を json 送信してみる。&lt;br /&gt;
&lt;br /&gt;
（１）Beebotte の Console 画面を開く&lt;br /&gt;
「Secret Key」と「Subscribe」の項目を埋めて、「Subscribe」ボタンをクリック&lt;br /&gt;
黒い Messages 枠に結果の表示あり。（これで json の受信を待機している状態）&lt;br /&gt;
&lt;br /&gt;
（２）Beebotte の Console 画面で、以下のパターンを実施した結果を確認する。&lt;br /&gt;
&lt;br /&gt;
[パターン１] メールの件名（Subject）を使う設定の状態で、IFTTTのトリガーとなるメールを送信&lt;br /&gt;
&lt;br /&gt;
[パターン２] メールの本文（Body）を使う設定の状態で、IFTTTのトリガーとなるメールを送信&lt;br /&gt;
&amp;nbsp;→ エラーの場合は、Console 画面に表示されず。&lt;br /&gt;
&lt;br /&gt;
[パターン３] メールの本文の内容を、cURL を使って json 送信&lt;br /&gt;
&lt;code&gt;curl -i -H &quot;Content-Type: application/json&quot; \&lt;br /&gt;
-X POST -d &#39;{&quot;data&quot;:&quot;テストメッセージ&quot;}&#39; \&lt;br /&gt;
https://api.beebotte.com/v1/data/publish/[Channel]/[Resource]?token=[Channel Token]&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
直接状況を確認できないが、これだと問題見当たらず。Webhooks でメールの本文（Body）を使うと、何か余計な改行などで json の様式エラーとなってしまうのではないかと推測します。&lt;br /&gt;
（cURL のメッセージ文を途中で改行すると、「HTTP/1.1 400 Bad Request」になった。）</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/8687129696390083416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/8687129696390083416'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2019/07/iftttwebhooks-beebotte.html' title='(IFTTT)Webhooks - Beebotte 連携でエラー'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-3464958179496166880</id><published>2019-07-10T21:40:00.005+09:00</published><updated>2019-07-18T12:51:01.303+09:00</updated><title type='text'>Lenovo ideapad MIIX 310 のAC電源を探した</title><content type='html'>Lenovo ideapad MIIX 310&lt;br /&gt;
&lt;a href=&quot;https://www.lenovo.com/jp/ja/static/catalog/tablet-2016-miix310_rt_0906&quot;&gt;https://www.lenovo.com/jp/ja/static/catalog/tablet-2016-miix310_rt_0906&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
移動先で使うＡＣアダプターを探してみた。&lt;br /&gt;
&lt;br /&gt;
ノートＰＣ側の電源入力はＤＣ５Ｖ４Ａだった。USB充電器からUSB → ＤＣプラグに変換すれば便利だが、４Ａも流せるUSB電源は無いor高価なので、秋月電子で普通のＡＣアダプターを入手&lt;br /&gt;
&lt;br /&gt;
スイッチングＡＣアダプター　５Ｖ４Ａ　ＡＤ－Ａ５０Ｐ４００&lt;br /&gt;
&lt;a href=&quot;http://akizukidenshi.com/catalog/g/gM-10660/&quot;&gt;http://akizukidenshi.com/catalog/g/gM-10660/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
しかし、プラグのサイズが合わない（プラグが大きい）&lt;br /&gt;
こういう場合は、変換アダプタが豊富な千石電商で探す&lt;br /&gt;
&lt;br /&gt;
千石電商で、ノンブランドのバルク品（100円）を発見、これで繋がった。&lt;br /&gt;
内径 2.1mm → 内径 1.3mm のＤＣ変換プラグ（ＤＣ２１１３）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
正規品ならこれが合います。&lt;br /&gt;
DC 異径変換アダプタ(メス:外径5.5mm内径2.1mm-オス:外径3.5mm内径1.3mm)&lt;br /&gt;
&lt;a href=&quot;https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4PD5&quot;&gt;https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4PD5&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
もしくは、L型のほうが邪魔にならないので&lt;br /&gt;
カモン(COMON)製 5521-3513L DC異径変換アダプタ L型(メス:外径5.5mm内径2.1mm-オス:外径3.5mm内径1.3mm)&lt;br /&gt;
&lt;a href=&quot;https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4WCK&quot;&gt;https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4WCK&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3464958179496166880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/3464958179496166880'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2019/07/lenovo-ideapad-miix-310-ac.html' title='Lenovo ideapad MIIX 310 のAC電源を探した'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-5708528514319495631</id><published>2019-07-07T16:18:00.001+09:00</published><updated>2019-07-07T16:18:20.805+09:00</updated><title type='text'>docomo の音声合成API を Raspberry Piで再生する</title><content type='html'>docomo Developer support の 音声合成API を、Raspberry Pi の Python で試してみる。gTTS ライブラリ(Google Text-to-Speech)だと、話速が遅くて使いにくかったので、今回のdocomoでは、少しだけ早く喋るように調整した。&lt;br /&gt;
&lt;br /&gt;
音声は WAVE 形式にして  aplay コマンドで再生する。ファイルに保存しないで pygame ライブラリで再生することもできるが、再生スピードが爆速になってしまったので断念、ファイルを使わないと不安定なようだ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
音声合成API 機能別リファレンス&lt;br /&gt;
&lt;a href=&quot;https://dev.smt.docomo.ne.jp/?p=docs.api.page&amp;api_name=text_to_speech&amp;p_name=api_7#tag01&quot;&gt;https://dev.smt.docomo.ne.jp/?p=docs.api.page&amp;api_name=text_to_speech&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;import requests&lt;br /&gt;
import json&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
TTS_URL = &#39;https://api.apigw.smt.docomo.ne.jp/crayon/v1/textToSpeech?APIKEY=発行したKEY&#39;&lt;br /&gt;
&lt;br /&gt;
params = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;Command&quot;:&quot;AP_Synth&quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;SpeakerID&quot;:&quot;1&quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;StyleID&quot;:&quot;1&quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;SpeechRate&quot;:&quot;1.25&quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;AudioFileFormat&quot;:&quot;2&quot;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&quot;TextData&quot;:&quot;こんにちは&quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
r = requests.post(TTS_URL, data=json.dumps(params))&lt;br /&gt;
if r.status_code == requests.codes.ok:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;wav = r.content&lt;br /&gt;
&amp;nbsp;&amp;nbsp;with open(&quot;docomo_tts.wav&quot;,&quot;wb&quot;) as fout:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fout.write(wav)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;os.system(&quot;aplay docomo_tts.wav&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;print(&quot;ok&quot;)&lt;br /&gt;
else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;print(r.status_code)&lt;/code&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/5708528514319495631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/5708528514319495631'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2019/07/docomo-api-raspberry-pi.html' title='docomo の音声合成API を Raspberry Piで再生する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4595852719405409409.post-1445681019686086447</id><published>2019-07-06T16:15:00.000+09:00</published><updated>2019-07-06T16:21:15.707+09:00</updated><title type='text'>Raspberry Pi の pygame で音源を再生できない</title><content type='html'>Raspberry Pi の Python で pygame モジュールを使用しましたが、簡単なサンプルで全く音が出なかったので、調査しました。&lt;br /&gt;
&lt;br /&gt;
サンプルコード&lt;br /&gt;
&lt;code&gt;import pygame.mixer&lt;br /&gt;
pygame.mixer.init()&lt;br /&gt;
music = pygame.mixer.Sound(&quot;./sample.wav&quot;)&lt;br /&gt;
music.play()&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
調査を進めたところ、スクリプトではなく Python の対話モードだと再生できることが判明した。これはつまり、再生が始まる前にプログラムが終了してしまうことが問題らしい。&lt;br /&gt;
&lt;br /&gt;
そこで、&lt;br /&gt;
&lt;code&gt;import pygame.mixer&lt;br /&gt;
import time&lt;br /&gt;
pygame.mixer.init()&lt;br /&gt;
music = pygame.mixer.Sound(&quot;./sample.wav&quot;)&lt;br /&gt;
music.play()&lt;br /&gt;
print(music.get_length())&lt;br /&gt;
time.sleep(music.get_length())&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
play が非同期だから、再生が終わる前に終了しちゃうんですね。とりあえず再生が終了するまで sleep してやれば済みます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pygameライブラリ 公式&lt;br /&gt;
https://www.pygame.org/download.shtml&lt;br /&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1445681019686086447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4595852719405409409/posts/default/1445681019686086447'/><link rel='alternate' type='text/html' href='http://mofuken.blogspot.com/2019/07/raspberry-pi-pygame.html' title='Raspberry Pi の pygame で音源を再生できない'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>