WordPressでJavaScriptを使う

WordPressでJavaScriptを書こうとすると、それ用のプラグインを入れたりするのが一般的かと思います。
が、はっきり言ってプラグイン使ってやるのは超面倒。

JavaScriptだけでなく、JavaScriptで使うinputタグやボタン配置など。
WordPressの編集画面でちまちま入力したり、もう面倒でやってられません。
JavaScriptを含んだHTMLは自前で書くから、それをそのまま読み込んで表示できないの?と思って調べると、同じこと思っている方を発見!

WordPressで固定ページでHTMLをちまちま入力するのが面倒なのでHTMLファイルをインポートするだけのショートコードを作った

なるほど、ファイルを直接PHP側でincludeしちゃうわけですね。
(includeなのでPHPにも使える!)
で、ショートコードを利用してそのパスを渡すと。

これを使えば簡単に自前のHTMLを取り込めますね。

ちなみに公開されているソースではファイルの親ディレクトリ指定が

$path = sprintf('%s/static_html/%s.html',
                get_template_directory(), $path);

とテーマ配下のstatic_htmlディレクトリになっているため、テーマをアップデートしたらディレクトリごと消えました…
(このショートコードを書くfunction.phpもテーマのものに直接書くとテーマのアップデートで消えます)

元々function.phpやcssは子テーマを作って更新しても消えないようにしていたので、static_htmlも子テーマのディレクトリ配下に移しました。
(もちろんソースのパスも子テーマ配下へ書き換える必要があります)
これでテーマをアップデートしても消えません。

子テーマについて書くと長くなるので、子テーマについては以下のページをご紹介します。
WordPressの子テーマを作る理由と子テーマを自作する方法

GPD PocketでMB16AC(Asusモバイルモニター)が使えるか その2

前回の記事でGPD PocketのUSBバスパワーの電力供給能力が低いことは書きました。
GPD PocketでMB16AC(Asusモバイルモニター)が使えるか

それではバスパワーではなくセルフパワーでMB16ACに電力を供給したらどうなるのか?
当然セルフパワーであれば大丈夫だと思うのですが、私のGPD PocketのType-A端子は小型のUSBメモリが常時刺さっていますし、Type-Cでモバイル環境を揃えていることもあり、折角なのでPDで充電できるタイプのType-Cハブを使って試しました。
(ELECOMのものがパソコン工房の新春初売り特価で1,000円ほどで売られていたので買ってみました)

ELECOM USB Type-Cコネクタ搭載USBハブ(PD対応) U3HC-A413BBK

GPD PocketにU3HC-A413BBKから出ているUSB Type-Cのケーブルを接続すれば、Type-A x2、Type-C x1のハブとして使えます。
(この状態ではもちろんバスパワーです)

PD対応の充電アダプターとU3HC-A413BBKをPD対応ケーブルで接続すると、ハブ機能をそのままにGPD Pocketの充電も可能になります。
ただこの状態でバスパワーからセルフパワーになるのかは、U3HC-A413BBKの説明を読むだけでは買う前にはっきり分からなかったので、実際に接続して試すしかありません。

GPC PocketとU3HC-A413BBKをType-Cで接続し、更にPD対応アダプターからU3HC-A413BBKに接続。
この状態でGPD Pocketが充電されているのを確認。

U3HC-A413BBKのType-A端子にUSBメモリを刺せば内容が読み書きできることも確認。
ここまでは予想通りで特に問題なし。

U3HC-A413BBKのType-A端子にMB16ACを接続したら外部モニターとして利用できるのか。

何の問題なく外部モニタとして使えました。
U3HC-A413BBKにPD対応アダプターを接続するとハブはセルフパワーで動くようです。
もちろんアダプターの線を外すとMB16ACは電力不足で再起動を繰り返します。

まああえてMB16ACを持って行くようなケースなら最初からHP Spectre13を持ち出すので、恐らく外でこの環境を使うことはないと思いますが…

GPD PocketでMB16AC(Asusモバイルモニター)が使えるか

GPD Pocketはmicro HDMI、USB Type-C、USB Type-Aの端子を持っています。
外部モニターを使う場合は基本的にmicro HDMIを使ってモニターと接続することになるかと思います。

ただ私のモバイル環境では既にType-C一本にして行く方向で機器を揃えています。
持っているモバイルモニターも電源端子すらないType-C端子のみのMB16AC(Asusモバイルモニター)という機種です。
モバイルで電源とHDMIの2本繋ぐの面倒ですし、モバイルで面倒なのは一番駄目で段々使わなくなるんです。
そういう意味ではType-Cのみで接続が済むのは非常にモバイル向けだと思います。

ただType-Cを持たない機器もまだ多く、MB16ACはType-CからType-Aに変換するアダプターも付属しており、Type-Aしか持たない機器でも使えるようになっています。

ちなみに以前の記事でも書いた通りGPD PocketのType-CはThunderboltの規格に対応していないため、Type-CのAlternate Modeを利用した外部モニタ接続には対応していません。

実際にGPD PocketのType-A端子からアダプター経由でMB16ACに接続してみましたが、モニターの起動画面(Asusのロゴが出る)が出て真っ暗になり、また起動画面がでて真っ暗になるを繰り返します。
MB16ACのマニュアルを見ると、この動作は機器からの電力供給不足だそうです…
つまりGPD PocketのUSB Type-A端子は十分な電力供給能力がないようです。

GPD Pocketのバスパワーで動かないバスパワー対応のDVDドライブや外付けストレージがあるという報告もあるようですし、USBの電力供給能力には期待しない方がよさそうです。

GPD PocketでMB16AC(Asusモバイルモニター)が使えるか その2へ続きます

GPD Pocketでシャットダウン(再起動)時の不具合の原因と解決策

GPD Pocketを色々とセットアップしていた時、いつからかWindowsを再起動しても電源が完全に落ちない現象が発生するようになりました。
(画面が消えても電源ボタンの白色LEDが点いたまま消えない状態になります)
再起動だけでなく電源OFFでも白色LEDが点いたままになるので、電源ボタンを長押しして強制的に電源OFFにしていました。
流石にこの状態で使い続けるわけにもいかないので、原因を調べることにしました。

そもそもこの現象はGPD Pocketだけで起きるのか?
他のPCでも同じような現象が起きることはないのか?

色々と調べていたらWindows8.1ではありますが、以下のサイトを発見しました。
(Solution) Windows 8.1 hangs on sleep/standby, can’t wake up

これによるとVirtualBoxが原因と書いてあります。
確かに私のGPD PocketにもVirtualBoxが入っています。
が、今までVirtualBoxが入った他のPCでは同じような経験がありません。
半信半疑でVirtualBoxをアンインストールしてみると…

直りました!
シャットダウンも再起動も全く問題ありません。

しかしVirtualBoxは入れておきたいので、先ほどのサイトに書かれているように「VirtualBox Bridged Networking」を入れずにインストールしてみました。
(私の環境ではUSB Supportも入れてませんが、恐らくBridged Networkingだけで解決すると思います)

「VirtualBox Bridged Networking」を入れないことでVirtualBoxインストール後も問題なくシャットダウン(再起動)できるようになりました。

GPD Pocketの充電について

今回はGPD Pocketの充電について書きます。

GPD PocketはType-Cの端子を持っており、USB PD(USB Power Delivery)での充電に対応しています。
USB PDは高速な充電を可能にする規格です。

今回のテストではGPD Pocketに付属する充電器、60W対応のMicro Solutionの充電器、60W対応のSpectre13付属のHP純正充電器を利用しました。

以前使っていたノートPCのAsus Transbook3や、現在使っているHP Spectre13もUSB PD対応の機器です。
Transbook3が45W、Spectre13が60Wで充電可能ですが、GPD Pocketは20Wでの充電が可能なようです。

ただ普通に充電してる時にPlugable USB-C 電圧・電流チェッカーで計測してみたところ、最大でも10Wでしか充電しませんでした。

下の写真のようにPlugableのチェッカーをGPD Pocketに繋ぐと表示が上下逆になってしまいますので、以降の写真は全て上下逆さまにしています。

まずバッテリーが減った状態で充電を始めました。
最初は約10Wで充電されています。

バッテリの容量が増えてくると約5Wまで充電量が下がります。

満充電になると1.75Wで電流が流れ続けるようですが、これはFANが回っているのもあって、実際に充電はされていないが電流は消費されている状態のようです。
(バッテリー充電には制御が入っているので、満充電のまま更に充電し続けるような危険なことはありません)

なぜか20Wでの充電が行われません。
不思議に思って調べてみるとGPD Pocketは完全に電源OFFの状態から充電を始めると10Wでしか充電されないのだそうです…

Windowsを起動してから充電を行えば20Wで充電をするとのことで試してみました。
確かに約20Wでの充電が始まりました。

一旦20Wでの充電が始まれば、Windowsを終了して電源OFFの状態になっても引き続き20Wでの充電が続くとのことなので、実際に電源をOFFにしてみました。

問題なく電源OFF後も20Wでの充電が続きました。

ちなみにGPD PocketはType-Cの端子こそあるもののThunderbolt3には対応していないため、Type-CのAlternate Modeを利用した外部モニタ接続や、外部のグラフィックボードを利用するeGPUには対応していません。

試しにGTX-1070を搭載したRazer Core Xの外部GPUにType-Cで接続しましたが、GPD Pocketにはエラーメッセージが表示され、USB PDの充電すらも行われませんでした。
Thunderbolt3は駄目でもUSB PDでの充電くらいはいけるかと思ってましたが、Razer Core Xでは充電すら駄目でした。

GPD Pocketの熱対策(ファンの静穏化)

GPD Pocketは小型故の弱点があります。
冷却のためのファンも必然的に小さくなってしまうため、ファンが回転すると風切り音が結構してしまいます。
Atomという省電力なCPUを採用しているのでファンはあまり回らないのかと思っていましたが、何も操作しない時以外はほとんど回っています。

これが気になって熱対策をしている人は結構いるようです。
対策で多いのは「CPUグリスの塗り替え」と「熱伝導シートを貼る」の2通りのようです。

私はデスクトップのCPUを殻割するくらいなので、CPUグリスは自宅にありますが、グリスの塗り直しでは効果が薄いという人が多いようです。
(CPUグリスの常識である薄塗りをすると、逆に悪化したという報告例もあるようです)

そこで最初からグリスの塗り替えは行わずに熱伝導シートだけで対策することにしました。
使うのはとても評判がいいThermal Grizzly社製の高性能サーマルパッドになります。
(殻割する人にはクマメタル化などでお馴染みのメーカーです)

Thermal Grizzly minusPad8 オーバークロッカー向け高性能サーマルパッド TG-M8-120-20-20-1R

今回はアルミ筐体へ熱を逃がすべく、厚さが2mmのものを使用しました。

裏ブタのネジを6本外せば裏ブタが外せます。
(液晶ヒンジ側の真ん中の1本だけネジの長さが長いので、取り付ける際には注意が必要です)

メモリと元々サーマルパッドが貼ってあるチップ周りを中心に、結構適当に貼っていきました。
(元々貼ってあったものは剥がしてから貼りました)
バッテリーは大して熱くならないので無視で構わないと思います。

作業を終えて実際に動かしてみると多少はマシになった気はしますが、やはりファンは結構回ります。
まあ裏ブタを触るとそこそこ温かくなっているので、効果がないわけではないと思います。

次にやったのは、直接ファンを制御しているサービスが見ているレジストリの値を変更することです。
そもそもファンが回り始める温度が低すぎでは?という疑問が湧きました。

GPD Pocketのドライバ集GPD pocket drivers(20170509)の中にあるFandevice/wfan0109.regが制御する温度をレジストリに登録するファイルです。
中身を見てみると
“t0″=dword:00000028
“t1″=dword:0000003c
“t2″=dword:0000004b

となっており40℃でファンが回り始めるのが読み取れます。
(設定は16進数で書かれており、16進数の28は10進数では40になります)
40℃、60℃、75℃でファンの回転数を変えるようです。

今回はファンが回らなくてもアルミ筐体である程度熱を逃がせるように対策もしたことですし、40℃の部分を少し引き上げようと思います。
“t0″=dword:0000002d ← 45℃にする場合

ぶっちゃけ50℃でも問題ない気はしますが、取り合えずは45℃で様子見をすることにしました。

値を書き換えて保存したらファイルをダブルクリックして実行すれば、レジストリの値が書き換わります。
レジストリの値を書き換えた後は、Windowsを再起動すれば設定した値が反映された状態でサービスが動き始めます。

この辺の数℃は、ファンが回転するかしないかに結構影響するようで、ファンの回転が結構少なくなりました。
(もちろん負荷が掛かれば、今までと変わりなくガンガン回りますが…)