[windows10]SuperfetchがSysMainに改名していたのでやっぱり停止した話

概要:
「Superfetch」が「SysMain」に改名していた。
古いPCや相性が悪い場合はオフにした方が快適になるかも知れない
SSDのみ搭載しているPCには関係ない。

サービスの管理から「SysMain」のスタートアップを無効にする

windowsのアップデートが来た。(2018/10/04)
October 2018 Update(バージョン1809、ビルド17763.1)

windowsアップデート適用後は一部設定がリセットされているので
何かしら変更している場合は再設定が必要になる。
(パスワードなし共有とか旧式ALT+TABとか)

再設定しようとしたサービスの1つ「SuperFetch」が見当たらない。
調べてみたら、なくなっていたらしい。

Windows 10 ビルド17134.286では消滅している。

wikipedia – Windows_SuperFetch
https://ja.wikipedia.org/wiki/Windows_SuperFetch

「Superfetch」が「SysMain」に改名していた。

が、もっと調べたら名前を変えて残っていた。

2018年6月2日にGuru3dへ投稿された記事。
投稿者が「superfetchが見当たらない。変更リストにも無ぇ。バグか?」と困惑。
非推奨とも廃止とも言われていないのに消えてしまった。
マイクロソフトに質問するも返答なし。

あと、みんな「SysMain = Superfetch」という認識で話しているのだけれどもソースが見つけられなかった。

Guru3d – Superfetchがどっかいった。死んだ?(意訳)

https://forums.guru3d.com/threads/win10-x64-build-17682-1000-superfetch-is-gone-deprecated.421318/

続いて2018年7月1日にマイクロソフトのフォーラムに投稿された記事。
質問者の「なんで名前変わったの?」という疑問に対し、
マイクロソフトの人は「わからん。開発者に聞いてみては?」と回答している。

マイクロソフト コミュニティ – SuperfetchはSysMainに昇格しました。おめでとう!(意訳)

https://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_perf-insiderplat_pc/superfetch-service-has-been-promoted-to-sysmain/395cd8b7-7a02-44fa-af91-dd6b358b7276

redditにもスレッドが立ってた
抜粋&意訳:
「今回のアップデートで「Superfetch」が「SysMain」に改名したけどどうよ?」
 ・オフにするのは時代遅れ
 ・実際オフにしたら快適になった
 ・メモリ16GでHDDの人はオンで良いんじゃ?
 ・不良セクタがあるHDDだと激重になる
 ・そもそもSSDのみ使用の場合は勝手にオフになってる

掲示板だから鵜呑みには出来ないが、
「・そもそもSSDのみ使用の場合は勝手にオフになってる」
これは公式発表で裏取りしている人もたくさんいるので信用したい。
サービスは動作していてもアクセスはしていない…らしい。

今回のアップデートで「Superfetch」が「SysMain」に改名したけどどうよ?(意訳)

reddit – PSA: Microsoft renamed the Superfetch service to SysMain in Services.msc
https://www.reddit.com/r/Windows10/comments/9l0jvx/psa_microsoft_renamed_the_superfetch_service_to/

実害があるならオフにしろ

会社のPCは「メモリ8GB+HDD」で時々激重になった。
なので「オフ」にしていた。

家のPCは「メモリ16GB+SSD(system)+HDD」で重さを感じた事は無い。
なので「オン」のままである。

「HDDアクセスが多くて実害がある場合はSysMain(Superfetch)はオフにしてみろ」が正解ではないだろうか。

ちなみに1809入れ終わった会社PCのレジストリには
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
EnableSuperFetch = 3
が入っていた。
0が停止、1がシステムのみ、2がアプリのみ、3が両方との事。
とりあえず0にしておいた。

マイクロソフト コミュニティ - SuperFetch がキャッシュするアプリケーションやファイルを設定することはできますか?

https://answers.microsoft.com/ja-jp/windows/forum/windows_vista-performance/superfetch/af4187bb-463c-45e4-8f85-b447881c97b6

Google Maps Platformの料金上限を設定する方法

概要:
「Google Maps Platform」の料金の上限を直接設定する方法は無い。
コンソールから表示回数の上限を設定して実現する。
アラートは金額で指定できる。

2018/07/16からGoogle MAP APIが有料になりました。
ついでに名前も「Google Maps Platform」に変わりました。
簡易な埋め込み以外はクレジットカード登録してAPI keyを発行しないと警告を吐きます。

「For development purpose」の文字

登録はこちらから
Google Maps Platform
https://cloud.google.com/maps-platform/

いくらかかるのか

料金表 – Google Maps Platform
https://cloud.google.com/maps-platform/pricing/sheet/

雑にまとめると

  • スマホに組み込むタイプは「無料」。
  • Google MAPの共有オプションからコピーして埋め込むタイプも「無料」。
  • ルートや検索結果を含む埋め込みは「1000回ごとに$14」。
  • 地図を画像として使用するstatic Mapsは「1000回ごとに$2」。
  • Javascript使って任意の場所にピン立てたりする奴は「1000回ごとに$7」。
  • 静的ストリートビューも「1000回ごとに$7」。
  • 動的ストリートビューは「1000回ごとに$14」

ただし、毎月$200までは無料にしてくれる。
例えば$210使った月は、はみ出た$10だけ請求される仕組み。

上限の設定方法

Q.使い過ぎないためにはどうしたら良い?
A.上限を設定しろ。アラートもあるぞ。(※意訳)
https://developers.google.com/maps/faq#usage_cap

apiの呼び出し上限の設定

Google Cloud Platform 管理画面
https://console.cloud.google.com/
左上ナビゲーションメニューボタン >「IAMと管理」>「割当」から該当するAPIを指定する

APIごとに
・Map loads per day ………………………………「1日の表示上限」
・Map loads per 100 seconds ……………………「100秒間の表示上限」
・Map loads per 100 seconds per user ……「100秒間かつ1ユーザーの表示上限」
が設定できる。

例えば「Dynamic Maps(Maps JavaScript API)」の1つしかAPIを使っていない場合は
1000回あたり$7 → 1回あたり$0.007。
$200 ÷ 0.007 ≒ 28571
無料の$200で28571回まで表示できる
それを31日で割ると921回。
よって「Map loads per day(1日の表示上限)」を「900」程度に指定すれば請求は発生しない。

※上限を超えると前述の「For development purpose」の文字と警告を吐きます(20180929現在)

複数のAPIを使う場合はこの900をAPIの数で割れば良い。
同率に表示される前提ではあるが。

アラートの設定

Google Cloud Platform 管理画面
https://console.cloud.google.com/
左上ナビゲーションメニューボタン >「お支払い」>「予算とアラート」>「予算を作成」を指定する

注意事項
・無料は「$200」だが予算の指定は「¥」
・請求先のデフォルトが「請求先アカウント」

[wordpress]gutenbergでシングルクォーテーションが入力できなかったのはWAFのせい

概要:
gutenbergをインストールしたら特定の文字を入力するとエラーが出るようになった。
サーバーのセキュリティ装置「WAF」をオフにしたら正常に動作した。
でも全部オフは怖いので一部だけオフにして両立できるようにした。

エラーの内容:
自動保存のタイミングで「更新に失敗しました」とエラーが表示される。
・「’」(半角シングルクォーテーション)
・「’」や「’」などの一部エンティティ
・「echo ○○」

対応:
方法は「WAFを停止」か「一部許可」の2通り。
ロリポップの場合を表記。

  • 「WAFを停止」
    • ユーザー設定ページより「セキュリティ」>「WAF設定」 > 該当ドメインの設定変更を「無効にする」
  • 「一部許可」
    • 1.ユーザー設定ページより「セキュリティ」>「WAF」設定 > 該当ドメインの「ログ参照」
      不具合が起きた時間とpost_id(投稿を編集しているページのURLにあるpost=xx)を参照して該当するシグネチャを記憶する。
      ※シグネチャは「xss-xxx-99」や「sqlinj-99」など防いだ攻撃につけられた名前。
    • 2.「.htaccess」を編集。
      アタマの方に
      「SiteGuard_User_ExcludeSig xss-xxx-99(※該当するシグネチャ)」
      を追加する

余談:
Gutenbergのデモが表示されない症状もこれで正常に動作するようになってた。

[wordpress]post_expiratorで一括編集するとバグる

概要: wordpres用の公開期限を設定できるプラグイン「Post Expirator」を一括編集に対応させる方法を述べる。

Plugin Name: Post Expirator Version: 2.3.1.1 で確認

post-expirator.phpの1716行目のコメントアウトされているあたりを以下のように変更する。

//1711行目から
foreach( $post_ids as $post_id ) {
  // Only update posts that already have expiration date set.  Ignore Others
  $ed = get_post_meta($post_id,'_expiration-date',true);
  if ($ed) {
    $opts = get_post_meta($post_id, '_expiration-date-options', true);
    //_scheduleExpiratorEvent($post_id,$ts,$opts);
    _scheduleExpiratorEvent((int)$post_id,$ts,$opts);
  }
}

編集とクイック編集だとpost_idをintで渡しているのに一括編集時(bulk)だとstrで渡しているっぽい。

wp_scheduleの中ではintとstrは別物として扱うが どちらも正しくスケジュール動作してしまうので二重登録されるおそれがある。 というか、なった。 気をつけよう。

非公式な修正なのでアップデートで上書きされます。ご注意。