BackWPupがエラーになるから無理やりパッチをあてたゾ

screenshot-1WordPressのバックアップを取るのに便利なツールを探していて、BackWPup というプラグインを見つけた。さっそくインストールしてみたところ、評判通りなかなか良いのだが、肝心要なお仕事用のサーバでエラーが発生し、犬のおまわりさんみたいにわんわんわワンと泣くはめになった。

このサーバは、大阪の某レンタルサーバを使っている。2年ほど前に大チョンボをしてしまったアソコだ。だからよけいにバックアップをとりたい。

さて、調べてみると、MYSQL_SOCKET = /tmp/mysql.sock となっているのに、mysql.default_socket = /var/run/mysql/mysql.sock となっていて、これらが一致していないためにデータベースへ通信エラーとなっていることがわかった。

普通ならMySQLの定義ファイル my.cnf か、PHPの定義ファイル php.ini でこれらを一致させれば良いのだが、サーバ屋さんの運営方針でここらをいじらせてくれない。いけず。

ということでパッチを当てる

BackWPupはソースで提供されているので、中をごそごそと調べてみた。

inc/class-mysqldump.php の85行目付近

このように ini_get()mysql.default_socket の値を取り出し、強制的に dbsocket にセットしている。これで幸せになれた。

直前の部分を見ると、wp-config.php の DB_HOSTdbhost:port:socket の書式で与えてやれば良さそうだが、これではデータベース接続エラーになってしまい、うまく行かなかった。

中の人を殺すゾ

mm-blue-w-textとあるドキュメントの翻訳をしている。静的なWebサイトを作成するのに、middleman というツールを使っている。

ビルドが終わると内蔵のWebサーバが起動するので、ブラウザですぐさま結果を確認することができてとても便利だ。しかし、CTRL+C でサーバを落とすことができることになっているのだが、

== The Middleman is standing watch on port 4567
^Clog writing failed. can't be called from trap context
^Clog writing failed. can't be called from trap context
^Clog writing failed. can't be called from trap context

ということになって、ちっとも終了できない。Google先生にお尋ねしたところ、これは MiddlemanのBug であるらしい。

新しいバージョンもでているようだが、バージョンの依存関係がややこしそうなので躊躇してしまう。

しかたがないので、プロセスを殺すことにした。以下がそのスクリプト。

#! /bin/bash
kill -9 `ps ax | grep middleman | grep -v grep | awk '{print $1}'`

ps でプロセスIDを取得して、grepawk で必要なIDだけを抜き取り、kill でシグナルを投げるという、原始的な方法だ。これに適当な名前を付けて、別のターミナルウィンドウから実行すれば、期待通りに死んでくれる。

追記

pkill -9 -f middleman だと、名前指定で殺せた。こんなコマンドしらんがや。

LaTeXのエラーが消えたゾ


とある小冊子を翻訳している。最終形態はPDFにすることだ。もともと英語版のPDF出力用のスクリプトは用意されているので、ちょこっと改造して日本語版を出力できるようにした。

ただ、日本語フォントではイタリックが出力できない。嫌いだけれどMeiryoを使えばボールドは出力できる。ぐぐる先生に教えていただいて、なんとか解決策がありそうなことがわかった。

いきなり本番では致命的なことをやらかしそうなので、テストファイルをLaTeXにかけてみた。

documentclass[letter]{jsarticle}
begin{document}

吾輩は猫である。名前はまだ無い。

どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所で
ニャーニャー泣いていた事だけは記憶している。
吾輩はここで始めて人間というものを見た。

end{document}

ところが、

! LaTeX Error: This file needs format `pLaTeX2e'
               but this is `LaTeX2e'.

というエラーが出てどうにもならない。

まる1日ぐぐる先生と格闘して、ようやく解決策がわかった。ヒントとなったのは「babel のセットアップ」という記事だった。これによると現在のLaTeXでは日本語対策が行われているということだが、拾ってきたのが悪いのか、対策されていない。手動でセットアップを行う必要があった。

まず、locate japanese.ins としてセットアップ用のファイルを探す。このマシンでは、/usr/local/texlive/2013/texmf-dist/source/platex/japanese/ にそれがあった。このディレクトリで、

sudo platex japanese.ins

として、ファイルをコンパイルする。japanese.ldfsample.tex というファイルが出力される。

次に、

sudo mkdir -p /usr/local/texlive/texmf-local/tex/generic/babel/

としてディレクトリを作成する。

ここへ japanese.ldf をコピーする。

sudo cp japanese.ldf /usr/local/texlive/texmf-local/tex/generic/babel/

これで pLaTeX2e に関するエラーがでなくなる。

ああ苦労した。

サーバがちうこくぢんになったゾ

2013-07-25T09-51-32_0オフィスに行ってみると、共有フォルダにアクセスできないと訴えられた。Windows 2008 R2マシンをみると、電源は入っているがエラーが出ていた。

そのメッセージがコレだ。漢字が一切(1文字以外)入っていないのは幼稚園生にでもわかるようにしているのだろうか。それは良いとして(良くない)、メッセージの意味が分からない。

コンピューターにされているデバイスとのにがしました。

けUSBドライブのようなリムーバブルがデバイスがにりされた
や、ハードディスクやCD-ROMドライブなどのハードウェアにがあるにこのエラー
はきるがあります。リムーバブルがしくされていることを認
して、コンピューターをしてください。

このメッセージがききされるは、ハードウェアのにいわせてくだ
さい。

   : 0xc00000e9

   :   しない I/O エラーがしました。

どんなに酷い翻訳エンジンでもこうはなるまい。いったいどうやったらこういう翻訳になるのだろう。

中の国の人の日本語にちょっと似ている。「デバイスがり(利)された」だとか、「このエラーはきる(切る)があります」なんてのは、いかにもやつらがいいそうだ。でも、ヤツらならばもっと漢字を使うだろう。漢字がわからないのならば鮮人か?

logを見てみると、どうやら深夜に行われたWindows Updateからの復帰に失敗したようだが、詳細はわからない。

どうやらこのメッセージを表示したかったようだ。

コンピューターに接続されているデバイスとの通信中問題が発生しました。
外付けUSBドライブのようなリムーバブル記憶装置がデバイス使用中された
や、ハードディスクやCD-ROMドライブなどのハードウェアに傷害があるにこのエラーは
きる可能性があります。リームバブル記憶装置しく接続されていることを認
して、コンピューターを再起動してください。

このメッセージが表示される場合は、ハードウェアの製造元わせてください。

状態:0x00000e9

情報予期しない I/O エラーが発生しました。

「認」が認められるということは、漢字フォントにアクセスできなかったというわけでもなさそうだが。スタックが壊れて、printf()の第2パラメータ以降がヌルポになったといった感じだろうか。

でもなぁ、USBドライブは一切つながってないんだけどな。HDDもDVDもSATA接続になっているのに。

なめんなよ

2013-05-31T16-20-40_0うちで出荷したとある製品に、USBのケーブルが入っていないという問い合わせがあったらしい。調べてみると、中の国の製造元で入れなかったのだとか。

そもそもケーブルだけは大量に在庫が残っていたので、それを中の国に送りつけ、それと合わせて出荷することにしていたそうだ。しかしどういう手違いか、ケーブル無しで届いたらしい。

急遽手持ちのケーブルを流通倉庫に送り、そこで封入してもらうことになったのだが、保守用にとってあるケーブルなのでビニール袋に入っていない。同じサイズの袋を使っている別のものから流用することにした。

中の国との交渉を担当している第二の台湾人くん(上海に詰めている例の台湾人くんの大学の後輩)がいて、袋詰めの作業を始めたのだが、この彼の作業も雑だ。第一の台湾人くんは不器用でダメなのに対し、こちらは器用なのだが性格なのだろう、没有問題でやっつけてしまう。中古品だ!と言われること請け合いだ。日本人の神経質さをなめんなよ。

ということで偽装工作に定評のあるうさぎ亭主みずからがほとんどの作業を行うハメになったのであった。

特定しました 外伝

スクリーンショット 2013-04-18 18.31.04うちで扱っているとある商品は、別のモデルを他の会社でも扱っている。ネームプレートとバックパネル等を見ればわかるのだが、ちょっと見は区別がつかない。

もう半年以上前のことだが、ショップ経由で初期不良として数台まとめて返ってきた。たいていはユーザの知識不足でセットアップができなかったことを、「不良」扱いしてくるパターンがほとんどだ。
受け取ってしばらく放っておいたのを、チェックしようと開封した。競合メーカの下位機種が入っている。箱はうちのものだし、ちょっと見はわからないので、ショップは気づかなかったのだろう。

おそらくは、先に下位機種を買ったけれど、上位機種が欲しくなり、それを購入。直後に不良だと言って下位機種を箱に入れて素知らぬ顔で返金させたのだろう。

さて、その下位機種を通電してみると、各個体に付けるマシンネームが残っていた。xx_gu**i。xx の部分は該当機種の略号のようだ。ということは、掠め取ったうちのやつにも同じような名前を付けているに違いない。ネームサーバを参照してみると、ビンゴ! はたしてその名前が出てきた。これでグローバルIPがわかる。

whoisをかけてみると、保土ヶ谷のOCNを利用している、川崎市から横浜市にかけての住人らしいことがわかった。さらにいくつかの情報を元においかけると、コイツだ。マビノギとかいうゲームの装備を売りまくっている。どうせそれも不正なことをして手に入れたものだろう。

武士の情けでモザイクかけてあげるけど、悪いことしちゃだめだよ。

特定しますた

昨日のデータセンター火災の続きだが、これまで秘密とされていたデータセンターの位置をどうやら特定した。

情報は【リアル炎上】GMOクラウドのデータセンターが火事、通信トラブルが発生というまとめが詳しかった。

ここに載っている写真と、台北市内湖区陽光街という住所をもとにGoogleMapsでみると、このビルがそれのようだ。

http://www.ithome.com.tw/itadm/article.php?c=78937
http://www.ithome.com.tw/itadm/article.php?c=78937

ストリートビューでふり返ると、隣にAcerが入っているが、なんだかここのAcerには行ったことがあるような気がしてならない。地下にそこそこ大きなPCショップが入っていたはずだ。

nttcom_saitai

この台湾の新聞によると、ここは中華電信関連の企業がここを運用しているが、使われていない地下2階の駐車場に設置したUPSルームから出火、消防車11台、救急車4台が出動する騒ぎとなり、二酸化炭素消火器による影響等で4名負傷ということだ。顧客にはYahoo!奇摩、オンラインゲームなどがあり、さらにIP電話網も影響を受け、マクドナルドの宅配ができなくなった…のはどうでもいいが。

うちの上海オフィスは、グレートファイアウォールに閉ざされた中の国のネットワークではなく、台湾までVPNを引いて利用している。これも影響を受けてしまい、インターネットが使えなくなってしまったそうだ。

ちょうど24時間ほどたった本日12時ころに、ようやく復旧した。

半年ほどまえに、大阪のファーストサーバがミスでレンタルサーバの中身を飛ばしてしまったという事件があった。実はこの会社とはしばらく一緒に仕事をしたことがある。そして、今回のGMOはサーバを借りている。なにかに祟られているのだろうか。さくらインターネットにもサーバを借りているが、ここも逝ったりしたら、もう間違いがない。お祓いをしてもらわなくては。

サーバがこけてさあ大変

utrace会社で使っているwebサーバは、とあるレンタルサーバ屋さんに借りている。どうやらデータセンタは台湾にあり、NTT Taiwanが管理を行なっているようだ。

そのサーバが突然停止した。障害情報を見ると、データセンタ内で火災があり、ラックに電源を送れないのだそうな。NTT Taiwanの謳い文句には火災に強いと書いてあるのに皮肉なものだ。

で、IPアドレスをもとに場所を特定しようとしたら、以前は圓山大酒店のあたりを指していたピンが、玉山に刺さっている。ニイタカヤマに登ったのか? そのページの広告が、今回事故を起こしたサーバ屋さんというのは皮肉としか言いようがない。

いつになったら復旧するんだろう。

これを機に冗長化を考えなくてはならないな。

TG-TV100

まぁ、こういうのがある。なんでまた今頃単機能な地デジオンリーのチューナを!?というと、いろいろと訳ありなわけだが。

まぁ、これのおかげで、アナログチューナしかない我が家にも遅ればせながら地デジが導入された。地上波に観るべき番組はなく、NHKとクレヨンしんちゃんと笑点くらいしか観ていない。後はふしぎ発見くらいか。

このチューナのいいところ(?)は、マクロビジョンの コピーガード信号を出さない こと。他のチューナではHDDレコーダにアナログ接続しているにもかかわらず、ノーコピーにされてしまう。コピー禁止にしてまで守るべきものを放送していないくせに。

Bugzillaでもハマる

某台湾人クンがbug管理にBugzillaを使いたいと言い出した。ずっと以前はMicrosoftのそんなのを使っていたらしいが、いつの間にか誰もメンテしなくなっていた。

暇だったので、というよりもこれまで数週間、新人君(歳くってるけど)のお世話のために自分のことができなかった反動で、無性になにかをしたくなったので、サーバにインストールしてあげることにした。

Bugzillaをインストールするのに必要なものは、MySQLとPerl、Apacheだ。問題ない。tar ballをダウンロードして必要なディレクトリに展開して、まずは環境設定のためのチェックスクリプト checksetup.pl を走らせる。出るは出るは、あのモジュールがない、このモジュールがないと山のように警告が出る。install-module.plでモジュールを入れていくのだが、指定するモジュール名がよく分からない。

The following Perl modules are optional:
Checking for                   GD (v1.20)     ok: found v2.46 
Checking for                Chart (v2.1)      ok: found v2.4.5 
Checking for          Template-GD (any)       ok: found v1.56 
Checking for           GDTextUtil (any)       not found 
Checking for              GDGraph (any)       not found 

この場合、GDTextUtilとGDGraphが不足しているのでインストールしなければならないのだが、

./install-module.pl GD::Text

という具合に指定する。Chartの時はChart::Baseだった。規則性がない。

困っている人が多くいるようで、このようなページを見つけた。モジュール名が列挙されている。ありがとうRamesh。インド人かな?

なお、このリストになかったものは以下のようになっていた。


JSON-RPC        JSON::RPC
JSON-XS         JSON::XS
Test-Taint      Test::Taint
Encode-Detect   Encode::Detect

って、おい、install-module.pl –all で勝手にインストールしてくれたの!?