やるきなし

2016/02/05 13:55 / WordPress RSS Aggregator がうまく Feed を受け取ってくれない (Not well-formed (invalid token) at line 1, column 1)

Feedを受け取る側で以下のようなエラーが出てFeedできないという話(受け取る側は業者で,こちらはFeedする側).

Failed to fetch the RSS feed. Error: This XML document is invalid,
likely due to invalid characters. XML error: Not well-formed
(invalid token) at line 1, column 1

Feed XML は Validator をとおっていて,かつ手元の simplepie で XML をパースしてみても問題がない.

そもそも line 1, column 1 でコケているので,受け取る側の問題なのだが,対応してくれないので,こちらで対応することにした.

原因はサーバ側が deflate (gzip) されたデータを正しくハンドリングできないこと.つまり,

[S->C]
GET /?feed=rss2 HTTP/1.1
Host: client.example.org
User-Agent: SimplePie/1.3.1 (Feed Parser; http://simplepie.org; Allow like Gecko) Build/2015XXXXXXXXXX
Accept-Encoding: x-gzip,gzip,deflate
Accept: application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1
Connection: Close

のリクエストに対して

[C->S]
HTTP/1.1 200 OK
Date: Fri, 05 Feb 2016 XX:XX:XX GMT
Server: Apache
Set-Cookie: qtrans_front_language=ja; expires=Sat, 04-Feb-2017 XX:XX:XX GMT; Max-Age=31536000; path=/
Last-Modified: Mon, 01 Feb 2016 XX:XX:XX GMT
ETag: (snip)
Link: <http://client.example.org/?rest_route=/>; rel="https://api.w.org/"
Content-Length: 8000
Connection: close
Content-Type: application/rss+xml; charset=UTF-8

XMLデータ

のように Accept-Encoding: x-gzip,gzip,deflate を無視して RAW データ(といってもテキスト)を返す場合は OK だが,

[C->S]
HTTP/1.1 200 OK
Date: Fri, 05 Feb 2016 XX:XX:XX GMT
Server: Apache
Set-Cookie: qtrans_front_language=ja; expires=Sat, 04-Feb-2017 XX:XX:XX GMT; Max-Age=31536000; path=/
Last-Modified: Mon, 01 Feb 2016 XX:XX:XX GMT
ETag: (snip)
Link: <http://client.example.org/?rest_route=/>; rel="https://api.w.org/"
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 2000
Connection: close
Content-Type: application/rss+xml; charset=UTF-8

圧縮されたXMLデータ

のように律儀に(というか apache のデフォルト) Content-Encoding: gzip で返すとコケる.クライアントというか Feed する側にて,この特定のサーバに対して,以下のように圧縮しないように設定すれば解決./?feed=rss2 が Feed URL なので,以下のように RewriteCond/RewriteRule で対処(RewriteEngine Onとかはこの上付近にあることを想定).

RewriteCond %{QUERY_STRING} feed=rss2
RewriteCond %{REMOTE_HOST} XXX.XXX.XXX.XXX
RewriteRule ^ - [E=no-gzip]

先方のサーバの設定が不明だが,Google で検索してもこの問題(の上記のような解決策)は出てこないようなので,かなりのコーナーケースな模様.

2016/01/31 01:31 / NotePC CPU Fan 交換 (Let's Note CF-AX2)

先日のCPU Fanが壊れた件,だましだまし使っていたが,なかなかつらいものがあるので,CPU Fanを交換した.Note PC 自体は Let's Note CF-AX2 で,その CPU Fan は台湾AVC社のMODEL BAAA0505R5UPC01.適当に入手して交換.以下備忘.

入手した CF-AX2 用 CPU Fan (AVC BAAA0505R5UPC01)

CF-AX2 を開ける


まず通風孔(通風口)のカバーを外す.


バッテリー(取り外し可能な方)を外す.ここにSIMのスロットがある(使ってない).

CF-AX2 をさらに開ける


PC底部のネジを外して,蓋を取る(ヒンジ近くの2箇所だけ異なるサイズのネジ). 取り外したバッテリー部分にシールがあって, この時点で VOID になってしまう(分解したことの印が付く).


CPU Fan 付近.ネジは裏側からのようなので,メインボードを剥がす必要がある. メインボード左手はネジ2つ.


内蔵バッテリー.まず取り出したい.


機内モードスイッチとバッテリーを引っ掛けるもの.取れるので注意.


電源スイッチは取れてなくなったりしなさげ.


謎の黒いテープ.仕方がないので剥がす.


この辺もややこしい.


下の方,バッテリーコネクタとそこそこ幅のあるリボンケーブル.


mSSD.簡単に交換出来そう.


冷却部分.

CF-AX2 メインボードを取り出す


メインボード左側2箇所のネジ外した.


メインボード,バッテリーコネクタの部分のネジ外した.ここだけネジが長い.


その少し右にもメインボードを固定しているネジがある.


内蔵バッテリー付近.


CPU Fan の左側.無線モジュールがある.


右手側.こちらにも無線モジュールがある.


その部分をよく見ると,画像ヒンジの左付近にメインボードを固定しているネジがある.ケーブルに隠れていて見えにくい.

CF-AX2 メインボードから CPU Fan を取り出す


メインボードをとりはずしたところ.


その裏側.



メインボードが収まっていた部分.太いリボンケーブルの右付近に少し粘着質の部分があってメインボードをとりはずす時かなりビクビクしながら取り外す...


CPU Fan.メインボードとの接続ネジ(裏側)をとったところ.FANのうえのところにあるシールは剥がす必要がない(一度剥がしてしまった).


ひっくり返してFANをとったところ.FANは2つのネジとちょっとした突起でFAN枠に固定されている.この枠だが(とうか熱を伝える導体も...),簡単に曲げたりできるので,突起の部分は簡単に取れる.

元に戻す

逆の手順で新しいCPU Fanを装着して,元に戻すだけ.なお,小さめのドライバー(写真に写り込んでいるもの)と指だけで基本なんとかなった.あとエアダスターで適宜ほこりを飛ばす.

2016/01/18 10:22 / google-chrome の表示言語設定

ブラウザの言語に応じてページが切り替わる(英語・日本語)場合があって,普段ブラウザを英語で使っているつもりなのだが,たとえば Google Forms 等は別の言語設定を見て言語を切り替えているらしい.

というのは,設定(Settings)→詳細設定を表示(Show advanced settings...)→言語(Languages)の箇所は英語を一番上に設定しているのだが(かつ Google のアカウントの設定も英語),なぜか日本語で表示される.表示言語が「日本語」になっているのが問題らしい.Windows の場合は同じ設定の箇所に「Google Chrome をこの言語で表示(Display Google Chrome in this language)」という設定があるのだが(https://support.google.com/chrome/answer/173424),Linux の場合は存在しない.

いろいろ調べた結果,LANG=en_US.UTF-8 もしくは LANGUAGE=en で google-chrome を起動しないとダメならしい.

2015/12/27 00:15 / NotePC CPU Fan 故障

数日前にCPU Fanが異音を発していたような気がしたが,それが収まって,どうやら本格的にFanが壊れたらしい.微妙に回転はしているものの,冷却性能は殆どなさげ.ちなみに Let's Note.

OS は Win10Pro (Win8Pro からアップグレード)なのだが,「電源オプション」で高パフォーマンス(最小のプロセッサの状態: 100%; つまり周波数を最大値で固定)にしても,頑張らせると 800MHz ぐらいまで落ちてしまい,仕事にならない(あれこれ4時間ぐらい格闘したがどうにもならないと悟った).

ということで,Core i7 の CPU が手元にある状態で,軽い作業は VMWare 上の端末+Emacs,重い作業は ssh で 入った先,Chrome (←こいつが重い) は RDP で接続した先(もしくは Android 携帯)で,という謎の環境に...

なんというか,やはり持ち歩くということもあっていつかは壊れるということを想定すると,安めのものにするか(頻繁に買い換える),高いやつを選ぶ場合でもできるだけ駆動部が少ないものにしたほうが良いような気がしてきた.そもそも VMWare (Linux) 上の Emacs と LaTeX,Host (Windows) 上の MS Office と Chrome,を使うぐらいなので,8G メモリ搭載を最低条件にして安いものを選択しても良いようなきがしつつある.

2015/12/25 23:34 / 香港メモ