Archive for the ‘WordPress’ Category

苦節4か月。どうにか新しいアンプBA3886が完成した。あとは もう本当に些細なことしか残っていない。それで、まとめとして、作ったアンプの構成・仕様・特性に関する資料(カタログとか詳しい紹介資料的なもの)を書いたので載せる。

なお、Markdownから本文を生成した都合で図や写真をクリックしても拡大できないが、(元の画像は大きいので、)ブラウザの右クリックメニューで大きく表示できるはずだ。

→ 「何とか」した。画像をクリックすると、オリジナルサイズの画像が表示される。 (6/22 14:08)

また、あとで特性に関するコメント(他製品との比較も?)や技術的でない余談も書きたい。


ステレオ オーディオアンプ BA3886の構成・仕様・特性

2021/6/19-23 Butty

構成

BA3886は以下の各部よりなる。

  • アンプ部
    • アンプ本体
      • アンプIC LM3886により入力信号を増幅して、スピーカー出力に出す。
    • DCサーボ部
      • アンプのDC出力(オフセット)をカットする。
  • スピーカー保護部
    • アンプの出力に大きなDCオフセットを検出した時に、アンプの電源をoffにしてミュートし、スピーカーを保護する。
  • 電源部
    • 外部の元電源(ACアダプタ)を本機が使用する電源(±15V)に変換して供給する。
    • リップルフィルタにより、電源に含まれる雑音(主に高周波)を低減する。

全体的な構成図

BA3886 構成図 2021-6-21.png

スピーカー保護機能の構成図

BA3886 SP保護 構成図 2021-6-21.png

スピーカー保護部と電源部の回路図

BA3886 SP prot 20210604.png

全体的な仕様・特性

入出力

  • ライン入力(非平衡, 入力インピーダンス: 100kΩ)
    • RCAジャックx2 (白: L. 赤: R)
  • スピーカー出力(4-16Ω)
    • 丸・Y端子用端子(5.8Φ) x2(+, -) x2組(L, R)
    • 8Ωで特性の測定と動作確認をした。
  • 温度センサ出力
    • ミニジャックx1
      • RチャネルのLM3886付近に設置したサーミスタの出力
      • 温湿度計: タニタ TT-585 (改)に接続して使用する。

電源

  • DC 10-35V, 約31W (約0.89-3.1A)
    • 12, 24Vで動作確認した。
  • コネクタ: XHコネクタ 4ピンジャック
    • ピン1, 4を使用

スイッチ類

  • 電源スイッチ
  • ミュート ラッチスイッチ
    • スピーカー保護基板上のスライドスイッチ
    • Onにすると、しきい値付近のオフセットでの断続的ミュートを防止することが可能。 (通常はon)
  • スピーカー保護機能チェックボタン (L+, L-, R+, R-)
    • スピーカー保護基板上のプッシュスイッチ (青: L+, 白: L-, 赤: R+, 黒: R-)
    • 押すとスピーカー保護回路のセンス入力にオフセットが入力されてミュートする。

保護機能など

  • アンプIC(LM3886)内蔵の保護機能
    • 電源: 低電圧・過電圧
    • SPiKe(過負荷など?)
    • 過熱
  • DCサーボ機能
    • アンプのDC出力(オフセット)をカットする。
  • 出力オフセット検出でのミュート機能
    • 何らかのトラブルにより、スピーカー端子に しきい値以上のDC出力を検出した場合、アンプの電源をoffにして音を停める。
    • しきい値付近のオフセットでの断続的ミュートを防止することが可能。 (ミュート ラッチスイッチで切り替え)
    • チェックボタン(L+, L-, R+, R-)で保護機能をテスト可能

消費電力

  • アイドル(無音)時, 常用出力(約11mW)時: 約4.6W
  • 出力: 約0.8W(片チャネル)時: 約8W
  • 最大出力(約9.6Wx2)時: 約31W

大きさ・重さ

約14x14x7cm (突起物を含まず), 約530g (付属品を含まず)

外観

色・材質

  • 本体: 黒色
    • 材質
      • カバー(メッシュ): PP
      • ケース: PC+ABS
      • 滑り止め(底面): ハネナイト(NBR)
  • ランプ
    • 電源ランプ: 薄オレンジ色
    • ミュート通知ランプ: 赤色

正面より

DSC_3895_2964489332_v2.JPG

内部

DSC_3899_2964489332_v2.JPG

付属品

付属品一式

DSC_3911_2964489332_v2.JPG

(写真の左上から右下に)

  • 特性測定用アダプタ
    • 出力端子: RCAジャックx2
    • 内部接続コネクタ: XH 4ピン プラグ, ジャック 各1
  • ランプ光拡散キャップ (通常版)
  • 特性測定用負荷抵抗(8Ω)x2
  • 消費電流測定用アダプタ(抵抗 1Ω)
    • コネクタ: XH 4ピン プラグ, ジャック 各1
    • 電流(電圧)測定用ミノムシクリップ x2
  • 温度測定用温湿度計 (タニタ TT-585 (改))
  • 特性測定用アッテネータ
    • ゲイン: -16.5dB
    • コネクタ: 両端ピンプラグx2
  • テスト用スピーカー
  • ミュートのしきい値測定用オフセット生成用ボリューム (10kΩ B)
  • ミュート確認用電池ホルダー (単3x1)
  • リップルフィルタバイパス用ショートプラグ

アンプ部の特性・仕様

以下、特に記載のない限り、値は実測値。

最大許容入力(振幅)

  • 仕様: 約1V
  • 実測値: 約0.93V (片チャネル時)
    • 出力がクリップしない振幅

最大出力

  • 仕様: 約4Wx2チャネル
  • 実測
    • 片チャネル出力時: 約11W (THD: 0.0021%@1kHz)
    • 両チャネル時: 約9.6Wx2 (THD: 0.0021%@1kHz)

コメント

仕様と実測値の乖離が大きいが、短時間は上の出力を出せるものの、連続出力できるのは仕様どおり4Wx2程度が上限と考えられる。

ゲイン

信号発生器で生成した1kHz, -30dBFSの正弦波を入力し、出力との比を求めた。

  • 仕様: 10倍 (20dB)
  • 実測: 約11倍 (約21dB)

出力オフセット

入力をショートした時の出力のDC電圧を測定した。

LRともに1mV以下 (使用した機器では測定不可)

残留雑音・SN比

入力をショートして出力を測定した。

残留雑音

約17μV (A)

  • L: 14.6μV (A)
  • R: 16.6μV (A)
残留雑音の周波数特性

BA3886 Final check RN cmp 1.png

  • L: 青, R: 赤
  • 灰色: サウンドカードのみ

SN比 (1W出力時)

約105dB (A)

  • L: 106dB (A)
  • R: 105dB (A)

測定帯域は5Hz-20kHz。

本節の測定値はサウンドカード自体の雑音を補償したもの。ただし、グラフは補償していない。

コメント

使用したアンプIC LM3886のデータシートでのSN比は92.5dB(A, 1kHz, 1W)だが、本機のSN比がそれより大きい(約5倍)のは、以下の原因が考えられる。

  • 測定方法が本資料と異なるため。
    • データシートでは1kHzのSN比を求めている。
      • 実はデータシートの記載が誤っていて(、あるいは誤解させるもので)、広い帯域(例: 80kHz)の雑音で計算している可能性もある。
    • データシートに記載されている"Rs= 25Ω"がどの抵抗なのか不明。入力をショートする抵抗なのであれば、本資料(0Ω)と異なるので、雑音が増してSN比が低下する可能性がある。
  • BA3886のゲインが10と通常の約1/2のため。

周波数特性

振幅

両チャネル約8W出力時: 3Hz-20kHz: +0, -1.1dB

振幅の周波数特性

BA3886 Final check Amp cmp 1-2-1.png

  • L: 青系, R: 赤系
  • 暗色(一番下): 常用音量(約11mW)時
  • 中間色(中間): 出力約1W時
  • 明色(一番上): 出力約8W時
  • 灰色: サウンドカード直結 (出力: -10dBFS)

位相

両チャネル約8W出力時: 20Hz-20kHz: -0°, +3°

位相の周波数特性

BA3886 Final check Phase cmp 1-2.png

  • L: 青系, R: 赤系
  • 暗色: 常用音量(約11mW)時
  • 中間色: 出力約1W時
  • 明色: 出力約8W時
  • 灰色: サウンドカード直結 (出力: -10dBFS)

本節の測定値はサウンドカードの入出力特性を補正・補償したもの。ただし、グラフは補正・補償していない。

コメント

PCの再生系(JACK)を現状(44.1kHz)以外のサンプリングレートにするのは手軽でないため、測定は約20kHzまでとなっているが、サウンドカードは高いサンプリングレートをサポートしているし、本機も特に制限をしている訳ではないので、更に高い周波数も再生可能と思われる。ただ、そこに必要性を感じていないので、測定する予定はない。

歪み(THD)

  • 常用出力(約11mW)時 (ボリューム使用: 12時辺り): 約0.0070% @1kHz
    • L
      • 30Hz: 0.0019%
      • 1kHz: 0.0072%
      • 4kHz: 0.0078%
    • R
      • 30Hz: 0.0024%
      • 1kHz: 0.0068%
      • 4kHz: 0.0083%
  • 約1W出力時: 約0.0027% @1kHz
    • L
      • 30Hz: 0.0050%
      • 1kHz: 0.0025%
      • 4kHz: 0.0032%
    • R
      • 30Hz: 0.0059%
      • 1kHz: 0.0029%
      • 4kHz: 0.0035%
  • 約8W出力時: 約0.0014% @1kHz
    • L
      • 30Hz: 0.0026%
      • 1kHz: 0.0010%
      • 4kHz: 0.0015%
    • R
      • 30Hz: 0.0028%
      • 1kHz: 0.0017%
      • 4kHz: 0.0028%
各出力での歪み(THD)の周波数特性

BA3886 Final check Dist cmp 1-2.png

  • L: 青系, R: 赤系
  • 暗色(1kHzで一番上): 常用音量(約11mW)時
  • 中間色(1kHzで中間): 出力約1W時
  • 明色(1kHzで一番下): 出力約8W時
  • 灰色: サウンドカード直結 (出力: -10dBFS)
  • 各曲線の色が薄い部分(例: 高域)は、歪みがノイズフロア以下であることを示し、歪み率の信頼性は低い。
特記事項
  • 測定帯域(フィルタ)は10Hz-20kHz、負荷は8Ω。
  • 約1W, 約8W出力時はスピーカー出力のあとにアッテネータ(-16.5dB)を入れて測定した。
コメント
  • 使用したアンプIC LM3886のデータシートでの1kHz, 10WのTHD+Nは約0.003% (1kHz, 8Ω, Vcc=±28V, 10W, 80kHz)だが、本機の8Wでの歪み率がその約1/2なのは、以下の原因が考えられる。
    • データシートはTHD+Nのため。
    • 本資料の測定帯域が狭いため。
    • BA3886のゲインが10と通常の約1/2のため。

    今のところ、測定帯域が狭いためではないかと考えている。

  • 8W出力時に超低域(30Hz以下)の歪みが増大しているのは、電源やその配線の容量不足(、あるいはインピーダンスが充分に低くないこと)によると思われる。上述のとおり、仕様上の最大出力が約4Wなので仕方ない面もある。

クロストーク(チャネル・セパレーション)

片チャネルだけに信号を入れ、そのスピーカー出力(振幅)に対する、反対チャネル(入力なし)からの漏れ信号の振幅の比を求めた。

約0.6W出力時: 約92dB @1kHz

  • L→R (Lチャネルに信号を入れ、Rチャネルのスピーカー出力を測定)
    • 1kHz: 92.0dB
    • 10kHz: 77.6dB
  • R→L (Rチャネルに信号を入れ、Lチャネルのスピーカー出力を測定)
    • 1kHz: 106dB
    • 10kHz: 77.2dB

反対チャネルからの漏れ信号の振幅の周波数特性

BA3886 Final check Cross talk cmp 4.png
緑: L→R, 紫: R→L, 灰: サウンドカードL→R, R→L; スピーカー出力は-6.6dBFS相当(上の線)

本節の測定値はサウンドカード自体の漏れを補償したもの。ただし、グラフは補償していない。

特記事項

大出力(振幅)を測定するためにアッテネータを入れるとクロストークが悪化するため、アッテネータが不要な最大出力で測定した。

コメント

中高域でL→RとR→Lに差があるが、原因は分からない。一時はサウンドカード自体の特性かと思ったが、そうではなかった(上のグラフでは差がない)。線の引き回しや基板の作りが関係しているのだろうか。

アイドル時のアンプIC LM3886の温度

  • 無風時: 室温+18℃前後
  • 風がある時: 室温+16.5℃前後

スピーカー保護部の特性

以下、値は実測値。

出力をミュートするオフセットのしきい値(振幅)

DC (オフセット)

約+1.2V, -1.4V

AC (超低音をオフセットとみなす特性)

  • 1Hzの正弦波をミュートするスピーカー出力の振幅: LRともに約1.9V
  • 最大出力となる振幅(約9.3V)の正弦波がミュートする上限周波数(Hz): LRともに1.75Hz

制限事項

短時間(下記以下)で電源を再投入(off→on)すると、ミュートされて起動できない。再投入は、少なくともミュート通知ランプ(赤)が消灯するまで待つこと。

  • 電源の再投入間隔: 約5秒
  • ミュート後の電源の再投入間隔: 約20秒

コメント

起動(電源on)時のミュートを防止するコンデンサが放電するまで待たないと、起動時にDC-DCコンバータの電源制御端子が"L"にならず、アンプの電源がonにならないため。

主な使用モジュール・部品

  • アンプ部
  • スピーカー保護部: 自作
    • オペアンプ: MUSES 8820D
      • 手持ちを使った。特に指定はない。
    • ダイオード: RL205x4
      • 手持ちを使った。特に指定はない。ただし、オフセットのしきい値に関係する。
    • トランジスタ: 2SC1815 GRx3
      • 特性が近ければ何でも良いが、オフセットのしきい値に関係する。
    • リレー: オムロン G6A-274P-15 12VDC
      • アンプが稼働中はコイルが常時onのため、消費電力が小さい高感度型にした。
  • 電源部
    • DC-DCコンバータ: コーセル MGFW302415
      • 出力: ±15V, 1A
      • 上部にヒートシンク(約4x4x2cm, アルミ製)を付けた。
    • リップルフィルタ: コーセル SNA-03-223
  • その他
    • ヒートシンク兼ベース板: AData SSD SX900のマウンタ (アルミ製, 約10x10cm)
    • ケース: バッファロー Wi-Fiルータ WSR-300HPのケース (上半分を加工)
    • カバー: ダイソー 鉢底ネット 角型 (C029 No.4) (加工)

補足・コメント

アンプとは別だが、入力接続用コードは雑音に大きく関係する(とは言え、聞いて分かるほどの違いはない)。試したうちでは、エイトワンのもの(例: EAC-110)が一番雑音が少なかった。

また、外付け部品の元電源(ACアダプタ)は、歪み特性(特に低域)に大きく関係する。手持ちの数種類を試したところ、SAYAのアンプ SP192ABのACアダプタ(24V, 2.7A)が最も良かったので使っている。

測定に関して

使用した機材 (主要なもの)

  • 周波数特性、雑音などの測定
  • DC電圧・抵抗値などの測定
    • テスター: 三和 YX-360TR

測定結果についてのコメント

PCのサウンドカードとソフトを使用して測定したため、測定値の一般的な保証・認証や他者との比較妥当性はない。すべて「自称値」である。

測定しなかった・できなかったもの、載せなかったもの

  • ダンピングファクター: 手持ちの機材では正確に測定できないため。
  • スルーレート: 手持ちの機材では正確に測定できないため。
  • ダイナミックレンジ: 定義が想像していたものと異なっていたのと、様々な定義があるので、残留雑音から求めたSNRで代用することにした。
  • 矩形波(方形波)応答: 測定したが、あまり意味がないと思うので割愛した。

 


(6/22 7:05 測定方法などを加筆・修正, 残留雑音とSN比の測定値を修正; 6/22 8:49 クロストークの測定結果を修正; 6/22 11:27 クロストークの測定方法を修正して結果を訂正、全体を更新; 6/22 13:30 細かい加筆・修正; 6/22 14:00 本分をJoplinのRAWのMDを使うように変更; 6/23 7:32 元電源について記載, クロストークにコメントを追記, いくつかの特性の代表値を記載, 細かい加筆・修正)

 

PS. JoplinでMarkdown(MD)で書いたファイルを簡単にWordPressに入れられると思って居たが、意外に面倒だった。テキスト部分はコピー・ペーストやMD用プラグインで容易にできるが、画像までは面倒見てくれず、自分でファイルをアップロードし、Joplinの生成したファイルのパスをサーバ用にURLに変換してサイズを調整する必要があった。いろいろ試して、Better Find and Replaceというプラグインを使ってページ内で画像を指定する部分を自動変換することで対処した。他の同様なものだと、なぜかページが真っ白になるものがあった。相性問題か。

途中までは、MDでは手間が掛かり過ぎるからPDFを載せようとしたのだが、馬鹿らしいしビューアのプラグインでは見にくいので、MDを何とかした。

また、MDをインポートするプラグインも いろいろあるものの、画像込みの場合にはImport Markdownが一番手間が少なそうだ(ただし、画像は手でアップロードする必要がある)。

こういう、本題とは関係ないところで半日くらい潰れたw

(6/22 14:22) 備忘録として、JoplinのMD中の画像を表示できるようにするためのBetter Find and Replaceの変換ルールを書いておく。

  • Rule's type: Regular exp. (正規表現)
  • Find: (変換対象のパターン: JoplinのMDの画像リソース名(":/"で始まる32文字)を見付け、"alt="から画像ファイルのsuffixを見つける。)
(<img +)(src="):/([0-9a-f]{32}(\.[^"]+)?)" +(alt="[^"]+(\.[^"]+)")?( .*)?( />)
  • Replace With: (変換方法: 画像のパスをアップロード先にし、幅を制限する。クリックしたら画像を表示する。)
<a href="/wp-content/uploads/JMD/_resources/$3$4$6"
$1$2/wp-content/uploads/JMD/_resources/$3$4$6" width="100%" $5$7$8
</a>
  •  0
  •  0

起こりうる問題の検討と対処が終わったので、このドメインをIPv4/v6両対応にしました。当然ながら、このブログも両方対応です。

とは言え、アクセスする側からは何も変化はありません(何もする必要もないです)。あったら駄目ですw IPv6が使えて、IPv4より優先されているクライアントからは、IPv6でアクセスされます。もし問題がありましたら、お知らせ下さい。

なお、確認のため、当面、ブログのページ最下部にサーバとクライアントのIPアドレスを表示するようにしています。アドレスがなんか見慣れなくて : が含まれている場合はIPv6で繋がっています。

 

PS. やっぱり、個人的には、鳴り物*も、したり顔でユーザーに押し付ける下らねえ作業(例: 良く、「Aにしたら最初にすること10個」みたいなクソページにある、「AではBはこうする」)もなしの、「気付いたら なってた」ってのが一番いい。(v6追加なんて全然ローンチじゃないが※、)「シームレスローンチ」とでも言うのだろうか?

*ファンファーレ、「パフパフ」、「ドンドン」とかティーザーとかカウントダウンとかシャンパンとかクラッカーとか花火? それはそれで面白そうだwww

※もちろん、日本語で「ローンチ」って言うのすら嫌いで、ここに書くのも嫌だったw そういう人たちとは住む世界が違うと思っている。

そういう意味では、IPv6はなかなかうまいことやっている(運がいい)。IPv6自体は全くうまくなかったが、手をこまねいているうちにOSなどが対応していて、日本に限ってだが、フレッツのPPPoEがクソになったという無関係な方向から圧力が掛かって、意外にうまい具合に移行が進んでいる感じだ(棚ぼた?)。

こんなの、当時は全然思ってもいなかったw (「こんな複雑なの、永遠に使われねーよ」と思って居た。: まあ、先見の明がなかったな)

  •  2
  •  0

サーバのIPv6対応の一環でブログ関係の対応チェックと調整をしたついでに、ページ表示が遅いのを改善してみた。

実は、今までにも、MySQLの調整をしてわずかに速くなった「気が」していたw

無駄な処理やコメントを省いたら、気のせいか少し速くなった。

それから ちょっと調べたら、想像どおり、OGP(Open Graph Protocol, 説明)の画像の読み込みでの遅れがかなり効いていたので、LazyLoadというプラグインを使って画像を遅延読み込みにした。スクロールさせると画像がワラワラ出るのは個人的には余り好きでないが、遅いよりは良かろう。

最初は、画像が大き過ぎる場合(OGPに幅1000画素以上とかサイズ数MBの画像が指定されている、馬鹿みたいなサイトが多い)は使わないことを考えたが、画像のサイズを取得する時に読み込むので速くならない。

あと、OGPの処理(+画像取得・表示)をJS(= ブラウザ)にやらせて非同期にすれば綺麗だしかっこいいし軽い(仕事を押し付けられたブラウザにすれば迷惑かもw)が、JSは苦手でなかなか面倒なので※、上記の遅延読み込みにして、結果的に非同期に近くなるようにした。

※探せば、OGPを上記のようにJSでやるようなプラグインがあるかも知れない。 → ちょっと探した限りでは、なさそうだ。

そうしたら随分速くなって、今までは最初に表示する時は1秒を超えることがほとんどだったのに、新しいページなら0.3秒くらいで出るようになった。まあ、処理を後回しにしているので当たり前ではあるが、余り手間を掛けずに3倍速くなったw

(12/2 18:41) その後、やっぱり遅いことがあることが分かった。1秒以上掛かることがある。画像の遅延読み込みでOGPは速くなっても、MySQLが遅い場合がありそうだ。別のDBに換えたいが、なかなかいいものがない・・・

  •  0
  •  0

訳あって(まあ、訳もなく何かを作る人も少ないがw)、題に書いた機能が欲しくなった。が、調べても(プラグインでも)できないようだったので、自分で何とかした。

少し詳しく書くと、WordPress(およびプラグイン)では、サイト全体または投稿ごとににコメントできるかどうかの設定はできるが、既にコメントがある投稿をコメントできないようにすると、過去のコメントが表示されなくなってしまう。それは嫌なので、過去のコメントは表示されたまま、新しいコメントを投稿できないようにした。実装中に気付いたのだが、コメントの表示や投稿欄はテーマごとに実装している(新しいテーマはそうでないのかも知れないが、調べてはいない)ために、WordPressの設定やプラグインでは不可能なのかも知れない。

なお、「コメントの手動承認」を必須にすれば、新しいコメントは即座には表示されなくなるが、いちいち捨てるのは手間だし、(説明を読まずに)不可なのを知らずに投稿する人が出そうだから良くない。

いろいろなやり方はあるだろうが、以前、投稿の期限切れ処理をしないようにした時と同様に(結構安直に)、対象の投稿にタグで「コメント追加不可」をマークし、コメント表示・投稿ページでは、マークされている場合にはコメント投稿欄を表示しないようにして、新しいコメントを投稿できないようにした※。また、本ブログのWordPressの登録ユーザー(といっても自分だけだが)は引き続きコメントの追加ができるようにして、保守できるようにした。なお、コメント追加不可のタグは""とした。

※本ブログではタグを使っていないので、このような利用方法が可能である。

参考までに、以下にコメント表示・投稿ページでの追加処理に関係する関数などを挙げる。

  • 投稿($post)のタグ一覧の取得
    • $tags= wp_get_post_tags($post->ID);
  • 「コメント追加不可」タグが設定されているかの判定: 取得した投稿のタグのスラグが「コメント追加不可」タグのスラグ(RO_COMM_SLUGとする)と一致するかどうか(スラグ以外も使用可能と思う)。
    • $tags[N]->{"slug"} == RO_COMM_SLUG : Nはタグのインデックス(0..)。
  • WordPressのユーザーID: $user_ID (テーマの中などで使用可能)

なお、この機能はコメント投稿欄を表示しないだけなので、裏技を使えば投稿できそうな気がするが、不可にしているのに投稿して来たら問答無用でスパムにしてブロックすればいいので、大きな問題はない。

  •  0
  •  0

以前作って廃止した仕事用サイト、もしかしたら再就職活動の足し(例: 経歴に書く時の元ネタ、Webやアプリのサンプル)に使えるかと思ってちょっと見たくなったのだが、なかなか問屋が卸してくれなかった。WordPressでは画像などの添付ファイル以外のコンテンツはDBに入っているので、HTMLのようにブラウザで簡単には開けないのだ。そこで、一式を手元のデスクトップPCに移して、最小限でもいいから表示できるようにしようとした。

実は、サイトが生きていた時には定期的にPDFで保存していたのだが、(良くあるパターンで、)欲しいところを取ってなかったのでw、この作業をする羽目になった。

要は、WordPressのサーバ移行にからむ作業である。最初から面倒なことは分かっていたが、やる気(時間)はあった。

いろいろな作業が要るが、一番面倒なのは、文中の自サイト(自サーバ)へのリンクや画像のURLを書き換えることである。それらは大抵絶対パスのように格納されていて(例: "https://blog.piulento.net/archives/94939")、例えば新しいサーバのドメイン名やポート番号が違っていたら、問答無用で無効になってしまう。そして、WordPressは何も対処してくれない(何が正しいか分からないので、不可能だ)。

おそらく、自サイトへのリンクを付ける時に、ドメイン名などを外して相対パスのように(例: "/archives/94939")すればいいのだが、そういうサポートがないので、すぐに忘れてしまう。更に、画像のリンクは自動で付くので無理だ。

対処にはいくつかの方法があるが、コンテンツ(DB)を書き換える方法と、表示時に書き換える方法があるだろう。前者はまあ簡単だろう(置換するプラグインがあるだろうし、インポート機能でできるのかも知れない)が、移転のたびに手間が掛かるうえに、そのうちおかしくなってしまう(しかも、気付かない)可能性がある。そこで、僕は後者の、コンテンツやDBはそのままにして、表示時に変換する方式(オンザフライ)で対処したいと思った。

今気付いたが、コンテンツ中のローカルURLを相対パスのように置換すれば、オンザフライでの変換も不要になっていいかも知れない。ただ、上にも書いたように、WordPressにはそういうサポートがないので、投稿が増えるたびにそういう処理が要るだろう。

このサーバでは、(別な「小手先対処」のために)URLの書き換えをRewriteというプラグインでしているので、今回もそれが使えると思ったのだが、URL中のパスの部分だけしか変換できないようで(サーバからWordPressに来る時にそうなってしまうのか)、ポート番号は変更できかった。それで他を探したら、Real-Time Find and Replaceでできた。

なお、Rewriteは古過ぎるせいか、最新のWordPressではエラーになったので、修正が必要だった(今まで知らずに使えていたので、設定だけの問題かも知れない)。ご入用の方はお知らせ下さい。

今回は、ドメイン名は変えずに(ドメインは廃止するので、ホストテーブル(/etc/hosts)に書いて誤魔化すことにした)、スキーム("https"を"http"に)とポート番号(下例では80を9999に)を変えたので、以下のようなルールで変換するようにした。

元: @(http)(s)?:(//AAAA\.BBB)(/blog)(/.*)?@
置換後: $1:$3:9999$4$5

見ても「は??」であろうが、正規表現というもので、ワイルドカードの千倍以上便利だw 上で、"AAAA\.BBB"は元のドメイン名("AAAA.BBB")、"9999"は新しいポート番号である。例えば、元々のURL: "https://AAAA.BBB/blog/94939"(httpsはhttpでも可)は"http://AAAA.BBB:9999/blog/94939"に変換される。

なお、公開サイトで使うなどの場合のように「ちゃんと」(完全に)変換するにはいろいろな例外条件への配慮が要るが、今回は自分で見るだけなので、手を抜いた。

 

(7/31 21:40 一部の誤りを取り消し, 8/1 15:31 補足・修正)

  •  0
  •  1

Firefoxのアドオン(ContentBlockHelperとHTML Content Blocker)で切れるか試した。

テスト用動画 (テスト時は埋め込みプレーヤーにしていた)

↓ HTML Content BlockerでObjectをブロックしたら、表示されなくなった。

設定はPCの画面だが、スマフォでも同様の設定でブロックできる。設定の方法が分かりにくいが、種類のアイコンを押すとon/offし、下線がある状態でブロックされる。念のため、Mediaもブロックすることにした。

これで一安心か?

(3/16 21:06) 結局、どうしてか、実際にはうまく動かなかった(データ量が多かった)ので、今はFirefoxを使うこと自体を止めた。

 

※ページサイズを軽量化するため、動作確認後、動画の内容と個数を変えた。 → 動画の表示形態を変えた。 (3/16 21:06)

  •  0
  •  0

さっき、Wi-Fiでの画像取り込み機能の確認のついでに、何の気なしにスマフォのモバイルデータ量を見て驚いた。いつもは大体1日3MB以下なのに、どういう訳か、30MBくらいに激増していたのである。原因のアプリを調べたらOperaで、昼食の時に外でwebを見たら25MBくらい使っていた。それで、てっきりOperaが変なことをやるようになったのかと思って、(Wi-Fiで)Firefoxを試したが同様だった。Chromeでも同じだった。

良く考えてみたら、その時はこことリンクしている方のブログだけしか見なかったので、ページに問題がありそうだ。フォントをダウンロードしたのかと思ったが、このブログのスマフォドラレコの投稿に動画のリンクを貼っていた(動画の挿入するのにURLのペーストや「URLから挿入」を使うと、埋め込みプレイヤーになって便利なのでそうしていた)のを思い出した。調べたら、確かにその3つの動画は合計で21MBくらいだった。

それで、とりあえず、動画のリンクの出し方を普通のリンクにしてみた。それからキャッシュを削除してリロードしたところ、データ量は2MBくらいだったので、直ったはずだ。

極限までデータ量を削減していたつもりなのに、とんでもなく間抜けなことをしていた。。。 まったく油断も隙もない。

そして、今までモバイルで見られた方は(スピードもデータ量も)すごく重かったと思いますが、大変失礼しました。

 

PS. ブラウザにこういう大きいのを読まない設定があるといいのだが、なさそうだった。WordPressの出し方にも問題がありそうだ。テーマをいじって、モバイルの時はそういうのを出さないようにするのがいいのだろうが、面倒だ・・・

それに、自分のサイトは制限できるとしても、他人のサイトでも同様なことは起こるから、ブラウザなどでの対策が要りそうだ。と言っても、僕が余りにもケチっているだけで、実は、普通の人はだーれも気にしていないのかも知れないw

Firefoxのアドオンで埋め込み動画を切れることが分かったので、それを使うことにした。スマフォ版Firefoxは遅いが、データ量の削減の方が重要だ。

それから、PCでもスマフォでもOSを問わず同じアドオンが動くのは、Firefoxの大きなメリットだ。Chromeもスマフォでだってできると思うのだが、Googleの方針で無効にしているのか、できない構造なのか。 (3/11 6:03)

(3/16 21:01) ところが、今日外で使ったら、自分のブログを開くだけでもものすごく遅かったうえにモバイルデータを3MBも使った。前に家で見た、動画の入ったページを再度読もうとしたのだろうか。ただ、アドオンが効くはずなのにそれも駄目だったようだ。結局、Firefoxは使い物にならないことが分かったのでアンインストールし、Operaに戻した。

  •  1
  •  0

このブログでは、投稿後5年経過したものを自動で非表示にしている(以下、自動expire)。ただ、需要の点から一部の投稿(「MusicBeeの使い方」)は表示させたままにしたくなった。

今は自作のスクリプト(以下、expireスクリプト)で自動expireの処理をしているのだが、探すと自動expireするプラグインはいくつかあるから、それで手軽に実現できるなら乗り換えようと思った。が、どれも僕の要求をすべては満足できないことが分かった※。以下に要求と理由を示す。

  • 新規記事がデフォルトで自動expire対象になる。: 毎回設定するのは面倒だし、設定し忘れを防ぎたい。
  • (非表示になる日でなく)非表示までの期間(日数)が指定できる。: 日付を考えることなく、例えば「5年」という設定にしたい。
  • 自動expireした投稿にカテゴリやタグが付けられる。: 意図して非表示にしたものと、期限切れで非表示になったものを区別したい。
  • 可能なら、何もせずに既存の投稿が自動expire対象になる。: 最初に全部の既存の投稿に非表示までの期間を設定するのは手間(負荷が掛かる)なので。

※試したうちで一番要求に近かったプラグインは、Post ExpiratorとContent Schedulerだった。二つを合わせるといい感じなのだが。。。

それで、expireスクリプトを改良することにした。方法としては、自動expireさせたくない投稿にWordPressの管理画面で「印」(以下、保持マーク)を付けておき、expireスクリプトは、その保持マークがあるものは期限切れでも非表示にしないようにする(= 非表示対象にしない)のだ。

至ってシンプルで容易に実装できるのだが、すごく細かいところが気になった。どのような手段で保持マークを格納するかである。以下を検討した。

  • 「自動expireしない」というカテゴリを追加する。
  • 「自動expireしない」というタグを追加する。
  • 「自動expireしない」というカスタムフィールドと値を設定する。

カテゴリは一番使いやすいのだが、「自動expireしない」というのは属性なので、カテゴリ(投稿の分類・分野)にするにはふさわしくない気がした。実際には、非表示になっている投稿には期限切れになったことを示すカテゴリが付いているからそれと似たようなものなのだが、避けたい気がした(非表示になっている投稿の余計なカテゴリは、(その投稿自体が非表示なので、)外からは見えない点は異なる)。

タグもまあまあ使いやすいのだが、カテゴリ同様にふさわしくない気がする(ところで、タグとは何なんだろうか? 投稿のキーワード?)のと、投稿の下に表示されて今ひとつ美しくない(カテゴリも同様)。あと、一括して設定できるのに、一括して解除する方法がないのも不便だ(プラグインでもいいものがなかった)。

カスタムフィールドは、まさに属性を設定・格納する機能なので、「机上」では理想的で、投稿に見えないところもいいのだが、全然使いやすくない。プラグインを使わないと一括して設定・解除できないし、管理画面の投稿一覧に表示もできないし、検索もできない。投稿に見えないから、どうして残っているのかも分からない。

結構迷ったのだが、タグを使うことにした。投稿の下に表示される点は、見えることで残っている理由が分かるメリットはあるし、隠したくなった場合にはテーマを直せばどうにでもできるし、一括して解除できない点は、今のところ自動expireさせない投稿は少ないから、できなくても大きな問題ではない(もし多くなったら、スクリプトを作ればいい)と考えた。

なお、自動expireにしないタグは""と表示するようにした。これなら、一見意味不明(だけど、何となく重要そうなことが分かるw)で普通のタグ(文字列)とは区別できていいと思ったのだ(まあ、実際には僕はタグを使わないのだが)。本当は、(さまざまな案はあったものの、)金庫とか錠の絵文字が良かったのだが、(広く使える絵文字は)探しても見つからなかった。

自動expireにしないタグを付けた投稿の例

その機能を実装したので、明日テスト結果が出る。ちゃんと動いていたら、「MusicBeeの使い方」の各投稿にそのタグを付ければ、無事、「保全措置」が終わる。予定より随分前倒しだ(もっと先にすべきことはあるのだが、なかなか進まないw)。

(19:37 細かい修正・画像の追加)

 

PS. 余談だが、「MusicBeeの使い方」を電子書籍にすることも検討した。が、最新版のMusicBeeに対応していないことと(最新版はその次に対応しようかとも思った)、(自分の興味を除き、)電子書籍にすることにそれほど大きなメリットが感じられなかったのと、自分の仕事のプロモーションにするとしても、効果やその先が期待できなかったからである。もし効果があるのであれば、形態に関わらず既にあるはずだと思うのだ。

PS2. あとから気付いたのだが、「MusicBeeの使い方」だけならば、WordPressの「固定ページ」というものに変換すれば自動expireにはならない。ただ、ページのURLが変わってしまって見る方が不便だし(以前、国税庁が顰蹙をかっていた)、検索もリセットされてしまうので、そうしない方が良かっただろう。もちろん、従来のブログのURLからジャンプさせるようにもできるが、仕組みが複雑になって間違いが起こりやすいので得策ではない。 (2/4 6:53)

  •  0
  •  1

WordPress 5が出たので、とりあえず更新してみた。が、このサイトはテーマが古いせいか(調べたら、ベースはもう十年前のものだった・・・)、新しいエディタがうまく動かない。自動保存ですら「更新に失敗しました」と出るし、プレビューもできない。ダッシュボードのイベントにも同様の被害者の投稿が載っていたw ちなみに、仕事サイトは新しいテーマなので、大丈夫そうだ。

仕方ないので、クラシックエディタに戻した(プラグインで"Classic editor"で検索すれば出て来る)。まあ、新しいエディタをちょっと見た感じだと、「知的に進歩したWord」()みたいに却って面倒なだけの雰囲気なので、クラシックでいいやw

  •  0
  •  0

アクセス解析に使っているSlimstatに問題があるのでサポートに連絡したが、約1か月経っても回答がないので、悪い評価を付けた。その時に他のコメントを見たら、作者のとんでもない回答があってびっくりした。

コメント:

I requested an older version be an option after an upgrade. They decided to trot me out as a ‘naysayer’ in their Changelog. It shows a lack of concern for their users.

最後の回答 (太字にしたのは筆者):

Oh, and I would have expected that you stopped using Slimstat on your website, since you consider it such a poor product. Instead, I see that to this day you still (shamelessly) use it. Well, that in my book speaks to the quality of our product more than your own petty review. Thank you for being a loyal user anyway!

Best,
Jason.

(抄訳を載せようと思いましたが、馬鹿らしいので止めました。Google翻訳がなかなかいい感じです。)

上記回答のコピー:

Slimstat作者のすごい回答...

いくらなんでも、ユーザーに対してこの言い草はないだろう。更に、変更履歴にも揶揄する言葉を使うとは・・・ 余程のDQNなのだろうか。僕の問い合わせが無視されたのは当然だと納得した。Slimstat(随分改良した)を使って、このブログと仕事サイトへのアクセス状況に関していろいろ分かったから、あと少しで1か月経つので、そうしたら削除しよう。

そうか、僕も★1個を付けて使い続けていたら、同じように罵倒されるのか。早く消さなくちゃ。。。

 

PS. (後で知ったのだが)Slimstatは過去にセキュリティの問題を起こしていたし、作者はネットワークに関する知識があまりないようで、バグに関係するコードが酷いものだったので、使い続けるのは得策ではなさそうだ。

PS2. なんか、自分のことじゃないのに、読むだけで胸糞が悪くなる。。。英語でもこういう感情は伝わって来るものだな。

PS3. この作者は、元になったコメントを書いた人が相変わらずSlimstatを使っていると指摘しているが、どうやって調べたのだろうか? 偏執狂なのかスパイコードでも入れているのか、使う時には気付かなかったけど、結構怖い。

  •  0
  •  0