カテゴリー
Windows

本家のお世話-#60。(PHP5.4.12へアップデート)

 さて,PHP5.4.12が Feb-20 @19:06:24UTC に出たので,我が家用として,VC9 x86 Thread Safe 版の php-5.4.12-Win32-VC9-x86.zip を落とす。 ChangeLog を読むと,Core のバグフィックスも結構あるようなので,早速アップデートする。official PHP binary の 5.4.10 以降は php5apache2_4.dll が同梱されるようになったのだが,その辺にも変わりはないか,一応, Apache Lounge の該当部分も見に行った。特に変わりなし。

 php.ini-productionは5.4.11からの変更点なしだし, php5apache2_4.dll も同梱されているから,新旧のファイルを入れ替えて php.ini を放り込み, Apache をrestartするだけ。新規に導入する方は,「本家のお世話-#28。」を参考にしてください。

 ところで,PHP5.5 が Alpha5 まで進んでいる。1年位前に書いたように, 5.5 からは WindowsXP はサポートされないんだよね。 PHP ではいろいろ起こるようだから,どうなるかわからないけど,それでも 5.5 の GA が出るのもそう遠い日ではないだろう。真剣に準備しないとなあ(溜息)。

カテゴリー
everyday life

invite+~@facebookmからのメール。

 つい先日,携帯(SH906i)に迷惑メールがやってきた。私の携帯に迷惑メールなんて,何年ぶりのことだろうか。「どっからだよ」と思って開いてみた。PCのHTML形式のメールの場合,これさえも危ないことがあるのかもしれないが,ガラケーのテキストメールの場合は,そこまでの話は聞いたことがないので,開けちゃった(汗)。

 で,こんなやつです。

To: 携帯のメールアドレス
Date: 13/02/xx 20:05
From: invite+~@facebookm
 (注)~の部分には,長々と自動生成らしき文字列が入っている。
Subject: Facebookで○○さんの写真をチェック
 (注)○○は実在の知人の名前。しかし,ものすごく長くあっていないし,そこまで親しくない。
添付: [添付ファイル削除]
本文: Facebookで○○さんの写真をチェック

Facebookに登録すると、友達の写真や動画や近況を見たり、メッセージを交換したり、さまざまな形で友達とつながることができます。

Facebookで○○さんと交流しましょう
http://www.facebook.com/p.php?i=nnnnnnnnnnnnnnn&k=xxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxx&r&app_id=nnnnnnnnnn

すでにアカウントをお持ちの場合は、このメールアドレスを追加してください。
http://www.facebook.com/merge_accounts.php?e=私の携帯メールアドレス&c=xxxxxxx_xxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxx_qRt2Q&source=unknown

=======================================
このメッセージは(私の携帯メールアドレス)宛てに送信されました。 今後Facebookからこのようなメッセージを受けとりたくない場合、またはメールアドレスを友達の紹介に使用したくない場合は、購読を停止するには以下のリンクをクリックすることができます。
http://www.facebook.com/o.php?k=xxxxxxxxxxxxxxxx&e=私の携帯メールアドレス&mid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Facebook, Inc., Attention: Department 415, PO Box 10005, Palo Alto, CA 94303

 facebookmというドメインを見たことがなかったので,「スワッ,なりすましか」って思ったのだが,どうやら,
facebookmail.comのモバイル版ドメインのようだ。だから,なりすましではないわけだが,
facebookmail.com同様,モバイルでもお邪魔虫なのねー。まったく,facebookのポリシーって,日本人には(いえ,私だけかも知れませんが―汗)理解しがたいよ。

 自分が,迷惑メールの発信元にならないように,facebookの設定を見直しとこうね。例えば,アカウント設定とか,プライバシー設定とか。<<--- 誰に言ってんだよ。自分にだろ(爆)。 facebook それに,今回調べてみて知ったんだが,「もっと友達を探そう」なんていうところをクリックしたときに赤丸のところをチェックしたままだと,招待のメールが送られるが,設定によっては,「招待とインポートした連絡先を管理」に入っているメンバーにも勝手に送られるらしい。未確認だけど。

 で,「招待とインポートした連絡先を管理」の情報って,今回見てみたら,Yahooでメールをやり取りしただけの相手のものまで入っていた。
 Yahooで友人を探してみたのは,参加したころ(2011年1月)に試しただけなので,そのときのYahooの受信箱に入っていた情報だと思う。私の場合,Yahooのアドレス帳は空なので,これの中のものでないことははっきりしている。この辺は,ネット上で読んだこととは違うようだ。
 というわけで,「インポートした連絡先をすべて削除」しておいた。幸いにして自分の設定がキチキチだったので,誰にも迷惑メールは送られていなかったようだ。ホッ。

 で,今回携帯にやってきたメールは,おそらく相手が携帯(あるいはスマホか)上で,右上画像類似のところをタップしたのだと思う。しかし,相手は携帯でしかメールのやり取りをしたことのない相手だよ。ということは,差出人の携帯アドレス帳にメールアドレスのあった全員宛に,これが送られたんじゃないだろうかと勘繰っちゃうね(未確認だから,あくまで,憶測ですよ。どんな操作をしたのかなんて確認するほど,親しい相手ではないので)。キャリアのトラフィック的にも,立派に迷惑メールだ。人によってだが,携帯なんて,どのくらいアドレスが入ってるか分かったもんじゃない。
 私の憶測が正しい場合に限っての話だけど,営業の方とか,ついうっかり,仕事用の携帯でやっちゃいけない私用のfacebookアクセスして,「問題のリンクをタップ」とかしたら,最悪だねぇ。

 さて,メールの購読中止を使うのは,別の問題がある気がするので,facebookmは受信拒否ドメインにした。我が家的には,解決!!!

追記:
 シバケンさんから早速のコメントをいただきました。結構,みなさん経験があるんですね。しかし,
> 今回携帯にやってきたメールは,おそらく相手が携帯(あるいはスマホか)上で,右上画像類似のところを
> タップしたのだと思う。
と書いたように,先方に確認したわけではない未確認の憶測ですので,くれぐれも頭から信じないように(爆)& m(_”_)m。

カテゴリー
Vulnerability

80年後のKENJI-#1

The same article in English

 なんかまた,いろいろ出てますね。こんなのとかこんなのとか。どれも緊急ですワ。我が家は,ついにJREをアンインストールしてしまいました。まあ,Webのほうだけ無効にしてもいいのですが,最近あまり使わないもので。

 昔(といってもネットの世界なので,つい2年位前の話ですが),WindowsUpdateは安定するまであてないとかいう時代もあったのですが,こんなこともある当世なので,OSや有名どころのプラグインなど(なんといっても有名どころは狙われやすいです。ただし,対応も早いですが)は必ず最新のパッチをあてた状態にし,ウイルス対策ソフト・ファイアーウォールは統合ソフトを導入し,これまた最新にしておくことが肝心ですナ。どこの水飲み場で襲われるかわかったもんじゃありません。昔と違い,昨今の悪者は,目に見える症状を表してくれないからたちが悪いですよネ。

 さて,本題。

 昨夜,80年後のKENJI~宮沢賢治 映像童話集~というのがありまして,恐る恐る見てみました。何で,恐る恐るなのかといいますと,長岡さんの死の話のときにチラッと「雨ニモマケズ」の件に触れたことがありますが,それに限らず,KENJIの作品には昔からかなりの思い入れがありまして,他の人が作った映像作品が,なかなかに受け入れがたいということがよくあるのです。まあ,昨夜のところは,それほど拒否反応を起こすものはありませんでした。シグナルとシグナレスについては,あのキャラはやめてほしいなと思いましたが……
 今回使われた原作について,また,青空文庫を利用させていただき,縦書きにしてみました。縦書き集にも入れておくつもりです。よかったらお読みください。

80年後のKENJI~宮沢賢治 映像童話集~ 第1回「ちいさき命」

80年後のKENJI~宮沢賢治 映像童話集~ 第2回「畏れる」

 書き忘れていましたが,縦書き集は,Javascriptを有効にしないと読めません。(最低でもo6asan.com,
ajax.googleapis.com,nehan.googlecode.com,googlecode.comに対しては。) また,IE9,10の場合は互換表示で読んでください。

カテゴリー
WordPress

今更ながらのアクセス制限。

投稿アップデート情報  追記(2/22)  追記2(4/16)

 ほんと,今更ながらなんですが, wp-login.php にアクセス制限をかけました。なんのためかというと, AWStats の統計から外すためです。

 この件については,ずっと,ほったらかしだったんです。というのが,不正アクセスされてるみたいだなという程度で,数もそれほどでなく,特に問題はないようだったもんで。それに,WordPressのフォーラムを見ても,常に最新版を使うようにし,強いパスワードを使っていれば,うちのようなサーバの使い方(使用者は,私だけ)であれば,そこまでする必要もないだろうと感じていたものですから。
 そんなわけで,ときどきパスワードを変えたりでお茶を濁していたのですが,年末から, wp-login.php への不正アクセスがドッと増えちゃって。どうも,英語版の「ブログに雪が降る。」を書いてからのような気がします。先年,大震災についての記事を英語版で書いたときも,ドッとスパムが増えたような覚えがありますが,英語版でタイムリーなトピックを取り上げたときは,そういうほうでも反応が早いみたいで,いい迷惑です……

 なにしろ,ログイン画面が表示された時点で,HTTPステータスコード 200 が戻るもんで,これのアクセス数がすべて AWStats の統計に入ってきちゃって,参った参ったというところです。で,このさい, access-denied.conf という extra-conf を作り apache に読み込ませることにしました。
 ついでに,主な迷惑サイト(主として,*.163data.com.cn―苦笑)のアクセス制限もこっちに移しました。

 access-denied.conf の中身は,下記のようなものです。 G:/WEB というのは,ドキュメントルートです。ディレクティブは新しいほうの形で書いてみました(笑)。
 wp-login.php のアクセス制限をどんな形にしようかと思ったのですが,当面,自宅からだけ認める形にしました。さっき設定したばかりなんですが,error.log に,[authz_core:error] がすでに 10 個ばかり並んでますから,効果大ですねぇ。これで AWStats の統計から wp-login.php への不正アクセスが外せます。やれやれ。

<Files “wp-login.php”>
Require ip xxx.xxx.xxx.xxx/xx  <<--- 自宅LANのIPアドレス </Files> <Directory "G:/WEB"> <RequireAll> Require all granted # [*.163data.com.cn] # [110.80.0.0 - 110.91.255.255] Require not ip 110.80.0.0/12 # [112.112.0.0 - 112.115.255.255] Require not ip 112.112.0.0/14 # [116.52.0.0 - 116.55.255.255] Require not ip 116.52.0.0/14 # [117.24.0.0 - 117.31.255.255] Require not ip 117.24.0.0/13 # [117.60.0.0 - 117.63.255.255] Require not ip 117.60.0.0/14 # [117.80.0.0 - 117.95.255.255] Require not ip 117.80.0.0/12 # [119.96.0.0 - 119.103.255.255] Require not ip 119.96.0.0/13 # [120.32.0.0 - 120.43.255.255] Require not ip 120.32.0.0/12 # [121.204.0.0 - 121.207.255.255] Require not ip 121.204.0.0/14 # [121.224.0.0 - 121.239.255.255] Require not ip 121.224.0.0/12 # [121.32.0.0 - 121.35.255.255] Require not ip 121.32.0.0/14 # [123.184.0.0 - 123.187.255.255] Require not ip 123.184.0.0/14 # [123.52.0.0 - 123.55.255.255] Require not ip 123.52.0.0/14 # [124.72.0.0 - 124.72.255.255] Require not ip 124.72.0.0/16 # [124.76.0.0 - 124.79.255.255] Require not ip 124.76.0.0/14 # [125.112.0.0 - 125.112.127.255] Require not ip 125.112.0.0/17 # [125.77.0.0 - 125.78.255.255] Require not ip 125.77.0.0/14 # [125.88.0.0 - 125.95.255.255] Require not ip 125.88.0.0/13 # [218.78.0.0 - 218.83.255.255] Require not ip 218.78.0.0/11 # [218.85.0.0 - 218.86.127.255] Require not ip 218.85.0.0/14 # [219.128.0.0 - 219.137.255.255] Require not ip 219.128.0.0/12 # [220.160.0.0 - 220.162.255.255] Require not ip 220.160.0.0/14 # [220.185.192.0 - 220.185.255.255] Require not ip 220.185.192.0/18 # [220.191.0.0 - 220.191.127.255] Require not ip 220.191.0.0/17 # [221.236.0.0 - 221.237.255.255] Require not ip 221.236.0.0/15 # [222.170.0.0 - 222.172.127.255] Require not ip 222.170.0.0/13 # [222.208.0.0 - 222.215.255.255] Require not ip 222.208.0.0/13 # [222.76.0.0 - 222.79.255.255] Require not ip 222.76.0.0/14 # [27.148.0.0 - 27.151.255.255] Require not ip 27.148.0.0/14 # [58.37.0.0 - 58.37.255.255] Require not ip 58.37.0.0/16 # [58.48.0.0 - 58.55.255.255] Require not ip 58.48.0.0/13 # [58.60.0.0 - 58.63.255.255] Require not ip 58.60.0.0/14 # [59.32.0.0 - 59.42.255.255] Require not ip 59.32.0.0/12 # [59.52.0.0 - 59.61.255.255] Require not ip 59.52.0.0/12 # [60.176.0.0 - 60.176.255.255] Require not ip 60.176.0.0/16 # [60.188.128.0 - 60.188.255.255] Require not ip 60.188.128.0/17 # [61.140.0.0 - 61.146.255.255] Require not ip 61.140.0.0/11 # [61.154.0.0 - 61.154.255.255] Require not ip 61.154.0.0/16 # [61.169.0.0 - 61.173.255.255] Require not ip 61.169.0.0/13 </RequireAll> </Directory> 追記(2/22):  題名のせいか,wp-login.phpのせいか,WordPressのセキュリティ強化の記事として読みに来る方が結構いらっしゃるようなので,現時点で参考になりそうなサイトを3つあげておきます。まあ,セキュリティ関係はナマモノなので,あくまで現時点の話です。上げられてる10個のうちの半分は,WordPressに限る話ではないですよね。up-to-dateとか,パスワード強度とか,ユーザの啓蒙とか。最後のものなんて一番苦労するとこじゃないですか。  記事は番号順にお読みください。

  1. WordPress のセキュリティ、こんな記事は要注意
  2. WordPress使いならこれだけはやっておきたい本当のセキュリティ対策10項目
  3. Re: WordPress使いならこれだけはやっておきたい本当のセキュリティ対策10項目

追記2(4/16):
 以下のようなニュースがあった。対策していない場合は,やった方がいい。なにしろ,うちのような零細ブログでも,wp-login.phpへの不正アタック数は,1日平均
     2012/11 — 99   2012/12 — 370   2013/01 — 290
     2013/02 — 320   2013/03 — 117   2013/04 — 377 15日終了時点
なんて感じだから,何も対策ができていない場合は,結構,破られる可能性はあると思うよ。しかし,本当に,12月にブログに雪が降るの話を書くまでは,アタック数少なかった気がするんだけどなあ。

  1. 全世界のWordPressサイトに大規模攻撃; デフォルトのアドミンユーザ名’admin’がねらわれている
  2. Brute Force Attacks Build WordPress Botnet
  3. WordPressを狙った大規模な攻撃

 とりあえず, 管理者ユーザ名を「admin」から他の何かに変更するとか,強いパスワードを使うとかいう対策が推奨されているようだが,先日の「2013年4月マイクロソフト定例。」あたりにも出てきた話だけど,パスワードの使いまわしとかはやめた方がいい。

カテゴリー
everyday life

今年も梅が……

今年の一番花 今年も梅がほころぶ季節になりました。今日は,雨でしたが,昨日は天気晴朗なれど風強き中,1輪だけ開いている花を見つけました。毎年,大体同じような場所の枝の花が,一番乗りなのです。日当たりとか,風とか,枝の勢力とか,いろいろ関係しているのでしょう。

 先日入院させた例の Let’s note J10 なんですが,2月1日に戻ってきまして,雪まつりにも持っていきました。退院してきてから,全く問題なしです。右のような修理報告書が添付されて戻ってきたのですが,メーカーでは症状が再現しなかったようです。

J10-WLAN これを心配して,長いこと自分でいろいろいじっていたのですけどね。何しろ,症状が初めて発現したのは,バスクに行ったときですから,かれこれ3月になります。そのまま返されることのないように厳重にお願いしておきましたので,モジュールの予防交換をしてくれたようです。MACアドレスが変わってますから,換えてくれたのは間違いないでしょう。

 ドライバが古いみたいな書き込みがありますが,これは当たり前でして,リカバリしてから修理に出しましたのでねぇ。この前にも,デバイスの競合やソフトの不具合なども考えて,リカバリを何度かやったのですが,修理に出す前のリカバリは,単なるリカバリでなく,ハードディスク上のデータの破壊をしてからリカバリしましたから,二手間くらい,余計に手間がかかりました。まぁ,メーカーは絶対にやってくれないだろうと思ったんですが,万が一,本体ごと交換してくれた時のことを考えましてね。その辺の用心については,ちょっとOCD気味なところがありますもんで(苦笑)。

カテゴリー
Windows

本家のお世話-#59。(MySQL5.6.10へアップグレード)

The same article in English

投稿アップデート情報  追記(2/9)  追記2(8/2)

 MySQL5.6.x が出てから大分経ち,現在,バージョンは 5.6.10 になっている。で,これが,初の正式版だそうだ(2/6のリリース)。 MySQL のアップグレードについては,5.1 から 5.5 のときに痛い思い出があって二の足を踏んでいたのだが,いつまでも放っておくのは日ごろのポリシーに反するので,重い腰を上げてアップグレードに取り組むことにした。

 5.5 系では, msi を使っていたが,今回はインストールパスを変えたくない(単に,前回の轍を踏まないため―爆+笑)ので, Zip アーカイブを使うつもりだ。現時点の我が家のサーバOSは, WinXP SP3(x86)である。

  1. 何はともあれ,現状をバックアップする。WordPress のアップデートのときと違い,すべてのユーザについてデータベースを phpMyAdmin でバックアップ。 zip から zip のアップグレードなら,MySQL Server x.x への上書きでいいようなのだが,前回までが msi なので,アンインストーラーを使わないと「プログラムの追加と削除」にゾンビが残ってしまう。アンインストーラーはすべてを削除するので,作業の前に my.ini の保存とインストールパス名(うちの場合は C:Program FilesMySQLMySQL Server x.x だった)の記録をしておく必要がある。
  2. コントロールパネル >> 管理ツール >> サービス
    MySQL のサービスを停止する。
  3. コントロールパネル >> プログラムの追加と削除
    MySQL Server x.x を削除する。

    これを削除しても, C:Documents and SettingsAll UsersMySQLMySQL Server x.x は残るはずなので,元のデータベースはそのまま使えるはずだが,何が起こるかわからないので,バックアップは取っておくに越したことはない。再起動のメッセージが出ない場合は,再起動はしなくても大丈夫なようだ。

  4. mysql-5.6.10-win32.zip をダウンロードし,展開する。
  5. C:Program FilesMySQL に MySQL Server x.x フォルダを再作成し,この中に先ほど展開でできたファイル群を移動する。すべて移動してもよいのだが,我が家の場合,リモートでドキュメントなどを使うことはないので,以下の5つのフォルダと2つのファイルのみを移動した。
    • フォルダ
        bin
        data
        include
        lib  
        share
    • ファイル
        COPYING
        my-default.ini

     先ほど保存しておいた my.ini を my-default.ini と同じ階層にコピーする。

  6. アンインストーラーを使ったので,サービスとしての MySQL も削除されている筈であるから,MySQLを改めてサービスとして登録する。
    コマンドプロンプトを立ち上げて, cd コマンドで C:Program FilesMySQLMySQL Server x.xbin に移動し,
    mysqld.exe –install
  7. コントロールパネル >> 管理ツール >> サービス
    MySQL のサービスを開始する。
    「スタートアップの種類」が自動になっていない場合は,この時に,自動に直しておく。

    開始したら,エラーが出た orz。
     

  8. イベントビューアを見に行ったら,説明のところに MySQL: unknown variable ‘table_cache=256’ が出ていた。どうやら, table_cache はデフォルトでは無効になっているようだ。
    しかし,何でこのパラメータを入れたんだっけ。覚えていないよ。 table_cache, max_connections, open_files_limit 関係を改めて読んでみたが,我が家での必要性がよくわからない。
    新サーバを調べてみると, max_connections はデフォルトで 151 になっており, Upgrading from MySQL 5.5 to 5.6 によれば,5.6.6 からいろいろ変わったのに付随して,ここも変わったと書いてある。
    5.6.6 以降では,max_connections の値によって自動的にいろいろやってくれるようだ。で,エイヤッと my.ini 内の table_cache と max_connections の行を削除した。

    改めて,起動。成功。
     

  9. コマンドプロンプトで, C:Program FilesMySQLMySQL Server x.xbinに移動し,
    mysql_upgrade
    とやったら,
    Got error: 1045: Access denied for user ‘root’@’localhost’ (using password: NO) when trying to connect
    FATAL ERROR: Upgrade failed
    になったので,改めて
    mysql_upgrade –password[=password]
    で,再チャレンジ。今度は,無事終了。ただし,
    Warning: Using a password on the command line interface can be insecure.
    と言われた。我が家では,この手のコマンドは,外には出ていかない設定になっているが,コマンドがインターネット上を飛ぶ設定になっているとか他のユーザーもサーバを使う場合は,気をつける必要があるのだろうと思う。正直な話,この辺よくわかっていないのだが(汗), Using a password on the command line interface をやるとメモリ上(?)にパスワードが残る形になって,それを簡単に読み取る方法があるらしい。でもさ,管理者以外,誰も MySQL マシンにアクセスできなければ問題ないよね???

    mysql_upgrade — Check and Upgrade MySQL Tables の指示通り MySQL のサービスを再起動。成功。

  10. この後,ブログにアクセスしたらちゃんと見えたので,よしッと思ったんだが,何となく,イベントビューアを見に行ったら,ひとつ警告が出ていた。
    TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
    というの。 5.5 から 5.6 の変更のせいでよく出る警告らしく, Upgrading from MySQL 5.5 to 5.6 にそのものズバリが載っていたので,仰せの通り, explicit_defaults_for_timestamp を有効にするために, my.ini の [mysqld] のセクションに
    explicit_defaults_for_timestamp=true
    を追加。
    MySQL のサービスを再起動。警告が出なくなった。

 以上で,おしまい。ああ,疲れた。

追記(2/9):
 xxxx.err にもう一つ warning が出ていた。

  • InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB’s internal memory allocator.

というやつ。調べてみると, innodb_use_sys_malloc は on のままだけど,厳密にはどういう意味かな。

 innodb_use_sys_malloc を off にしてみたら,以下の warning が出た。

  • InnoDB: Warning: Setting innodb_use_sys_malloc to FALSE is DEPRECATED. This option may be removed in future releases, together with the InnoDB’s internal memory allocator.

ということで,どうやら,「 innodb_additional_mem_pool_size の設定はしなくていいよ」ということらしいので, my.ini から削ることにした。しかし, MySQL 5.6 系の進化はすごいと評判なんですね。スキルのない零細なブロガーには宝の持ち腐れだね(爆)。

 そういえば, warning じゃないが, IPv6 is not available. もあった。 IPv6 への対応という課題もあったなあ。しかし……これだしなぁ。あれ以降,どうなっているのだろう。準備は進んでいるのだろうか。

追記2(8/2):
 アップグレードではなくて,新規導入の記事を「Windows7上にWamp系WebServerを建てる-#3。」に書いた。

カテゴリー
everyday life

雪像を見てきました。

 節分が過ぎ,天気は良くないけど,「梅一輪一輪ほどの暖かさ」という感じ。2・3日寒いところにいたもので,一層そんな気がします。

 ところで,團十郎が亡くなりましたねえ。三之助のうち二人が逝ってしまったことになります。先日の勘三郎よりは大分年上ですが,いまどき,この年で逝かれるのは「早世」と言ってもいいかもしれません。三之助では一番年上の音羽屋の七代目の心中はいかがなものでしょう。私自身は,勘三郎ほど團十郎には思い入れはありませんが,残念な気持ちに変わりはありません。新生歌舞伎座のこけら落としはどうなるんだろう。雪でできた歌舞伎座を見ながらそんなことを考えていました。

 そうなんです。なんと,雪まつりをのぞきに行ってきました。オープンは5日からなのですが,人出が嫌い(汗)なので,チトずらして3日から5日の日程で夕べ帰ってきました。昨日の午前中は,すごい降りで,服にもどんどん積もるのに,一向に溶けなくて積もったまま。これが北の雪なのだと感心して札幌を後にした次第です。

 この間,初詣に持って行ったトレッキングポールを持って行って,現地で靴につけるシンプルな滑り止めを買いました(ファミリーマートで598円)が,この2つのアイテムが実に頼りになり,一度も転ばずに済みました。また,写真を載せておきます。中にトレッキングポールと滑り止めも入れておきます(笑)。手抜きで,英語ブログと同じ表を使っているので,キャプションが英語のままです。すみません。

Beer fairy KEI chan
Beer fairy KEI chan
 
Shīsā
Chibi Maruko-chan
Chibi Maruko-chan
 
 
Ise Jingū
Ise Jingū
And at its work
And at its work
CIMG3526 CIMG3527 CIMG3528
National Chiang Kai-shek Memorial Hall
National Chiang Kai-shek Memorial Hall
And its lighting-up.
And its lighting-up.
Yōkai Ningen Bem
Yōkai Ningen Bem
Wat Benchamabophit
Wat Benchamabophit
New Kabuki-za
New Kabuki-za
Ultraman
Ultraman
Hōheikan
Hōheikan
Ōdōri Kōen from Sapporo TV Tower
Ōdōri Kōen from Sapporo TV Tower
 
Street night view
anti-skid devices
anti-skid devices
attached anti-skid device
attached anti-skid device
trekking pole
trekking pole
カテゴリー
everyday life

文字コードの勉強(正規表現がらみ)。

 なんで突然,文字コードのお勉強に取り組んでいるかというと,久しぶりに,Joyful Note を見に行ったら,Ver.4.5 になっていて,カスタマイズしようと思ったら,正規表現で引っかかっちゃったのだ。何で,Joyful Note のカスタマイズに取り組もうとしているかというと,去年かかわったこれのせい。

 引っかかったのは, joyful.cgi の中の,
     # キーワード検索準備(Shift_JIS定義)
     my $ascii = ‘[x00-x7F]’;
     my $hanka = ‘[xA1-xDF]’;
     my $kanji = ‘[x81-x9FxE0-xFC][x40-x7Ex80-xFC]’;
というところ。これは,もとの掲示板が Shift_JIS エンコードだから,(Shift_JIS定義)をやっているのだろう。ということは, EUC-JP にするなら,当然,(EUC-JP定義)を, UTF-8 にするなら,(UTF-8定義)をしなければいけないのではないかと思ったわけだ。前のバージョン(この間カスタマイズしたのは,3.71)には,この部分はなかった。実際には,同じ作業をやっている部分があったのかもしれないが,こういう形では見えなかったので,気づかなかった。

 で,まずは改めて文字コードのお勉強から。参考にさせていただいたサイトはここ。参考にさせていただいたところは,間違いないようだが,文字コードについては,間違ったことを書いているところもあったから,要注意。まぁ,ネットていうのは,いつもそうだけどね。不安なときの確認は,やはり,本家。JISについては, 日本工業標準調査会 , UNICODE については, The Unicode Consortium を参照すること。
 それから, Unicode そのものや Unicode と UTF-8 や UTF-16 との関係についての話は,ここの説明が一番よくわかった。大変に読みやすい。ありがたかった。

 では,順番に調べて行ってみる。

  1. $ascii = ‘[x00-x7F]’ について。
    これは,EUC-JP,UTF-8でも同じだから,このままでいいだろう。

    • 注:厳密にいうと,UTF-8の場合,円マーク &#x00A5 (Shift_JIS,EUC-JPと同じ16進コードの場合は &#x005C になる) とオーバーライン &#x203E (Shift_JIS,EUC-JPと同じ16進コードの場合は &#x007E になる) は,( )内に書いたように異なっている。オーバーラインのほうはあまり意識に上ってこないかもしれないが, &#x00A5 を打ったつもりなのに,表示が &#x005C になってしまったという経験は,よくあると思う。日本語用フォントにおいて,この部分は,いまだに特例扱いのようだ。何しろ,円マークは日本の一般社会の頻出記号だから,さかのぼって直すとなると大変なんだろうと,推察した。本当の理由は知らない。
  2. $hanka = ‘[xA1-xDF]’ について。
    これは, JIS0201.TXT の第1列をを見ると,半角カナの話であることが分かる。半角カナは,EUC-JPでは, 8EA1~8EDF だから,$hanka = ‘x8E[xA1-xDF]’でいいのか。それとも,EUC-JP の場合,1バイト目に 8E が出て来るのは,半角カナだけだから, x8E 部分のチェックだけでいいのだろうか。この辺は,実装の問題なのか?

    JIS0201.TXT 見ると,UNICODEの場合,半角カナに対応するのは,FF61~FF9Fとなっている。これを The Unicode Consortium の文書 Conformance の Table 3-6. UTF-8 Bit Distribution と Table 3-7. Well-Formed UTF-8 Byte Sequences に則って変換してみる。
    UNICODEからUTF-8へ
      
     まずは,FF61 (16進) —> 11111111 01100001 (2進) とする。
     Table 3-6.に照らし合わせると,対応は以下のようになる。

    z z z z y y y y y y x x x x x x
    1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1

     さらに,Table 3-6.のルールを適用すると,結局,1バイト目から3バイト目は,以下の3つの2進数になる。

    1バイト目 2バイト目 3バイト目
    ルール 1 1 1 0 z z z z 1 0 y y y y y y 1 0 x x x x x x
    対応する2進数 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 0 0 0 1

    したがって,11101111 10111101 10100001 (2進) —> EFBDA1 (16進) となることがわかる。同様に,FF9F (16進) —> EFBE9F (16進) になる。

    細かく調べてみると, UTF-8 で Shift_JIS の A1~DF に対応する部分は, EFBDA1~EFBDBF までと, EFBE80~EFBE9F に分かれていることがわかる。ということになると, UTF-8 の場合は,
    $hanka = ‘xEFxBD[xA1-xBF]|xEFxBE[x80-x9F]’
    ということになりそうだ。

  3. $kanji = ‘[x81-x9FxE0-xFC][x40-x7Ex80-xFC]’ について。
    これは, JIS0208.TXT の第1列だと,実体のあるところだけをズラッと並べてあるから見づらいんだが,範囲は Shift_JIS だと,上位1バイト 0x81~0x9f , 0xe0~0xef ,下位1バイト 0x40~0x7e , 0x80~0xfc に収まっている。 JISX0208 の範囲だから,JIS第1第2水準漢字だということだ。
    まあ,この範囲だと, EUC-JP は,上位1バイトも下位1バイトも 0xa1~0xfe に収まっているから,多分,$kanji = ‘[xA1-xFE][xA1-xFE]’ でいいんだろう。

    問題は UTF-8 で, Shift_JIS と EUC-JP はコードにしたときの並び順が同じだからいいが, UTF-8 は UNICODE 由来だから順序が違う。といって, Shift_JIS と EUC-JP の順序を無視して, UNICODE だけで行くと,日本語では一般的でない漢字も遠慮なく入ってくる。その辺が,日本国内を視点に考えられた Shift_JIS ・ EUC-JP と, UNICODE の違いだ。
    こういう場合は,1度 UTF-8 になっているものを EUC-JP とかに戻して考えるのが一般的なのだろうか。

    どういう方法が,一般的なのかは,別にして, JISX0208 の範囲の UNICODE から, UTF-8 を考えて変換表を作ってみた。上記の参考ページにあるようなものを自前で作ってみたわけだ。これをやるには,いろんな方法があるのだろうが,使い慣れているEXCELでやってみた。で,出来上がったのが,これ。並び順は,作成した UTF-8 順。UTF-8 と UNICODE の部分の色分けは,Table 3-7.の Well-Formed の確認のためにつけたもの。 Shift_JIS と字の部分の色分けは,青が第一水準,黄が第二水準(厳密にいうと,第一,第二は漢字に対して使うものらしいが……)。

    漢字の部分で,青と黄が入り混じっている。おまけに, UTF-8 は連続数になっていない。 UNICODE の漢字は基本的に画数で並んでいるから,常用漢字が基本に来る JIS と対比すると,こうなるのはまあ当然。うーん,やはり,EUC-JP に戻してフィルタかけるのが現実的なのかなぁ。

と,ここまでやってきて,ようやく,Joyful Note のカスタマイズに入れそうな気がしてきたが,まだ簡単には,行きそうにない(爆)。

カテゴリー
WordPress

本家のお世話-#58。(WordPress3.5.1へアップデート)

 昨日の午後もだったが,今朝もちらちら雪が降っている。積もるほどではないが,寒い。

 今日,日本語版のWordPress 3.5.1 が出た。メンテナンス & セキュリティリリースということなので,早速,アップデート。何はともあれ,先に,データベースとファイルをバックアップ。このことを書くのを忘れることがあるが,前に,痛い目に合ったので,実際の作業としては,これを飛ばすことはない。皆さんも,転ばぬ先の杖として,お忘れなく。

 いつもながら,マルチサイトの親を英語設定にしているせいで,WordPress Updates に wordpress-xxx-ja.zip が現れないので,別途ダウンロードしてアップデートする。マイナーアップデートということで,ファイル数の増減などはないようだ。

【書き忘れ】 
 ついでに, xrea の s370 と @pages の www39 についても, WordPress3.5.1へアップデートした。動きは問題ないようだ。

 xrea は大丈夫だが,相変わらず, @pages はうまく自動アップデートできない。前にも書いたが,「覚え書-#8。」のことを済ませておくと,大体のプラグインなどは自動アップデートできるようになるが,WordPress本体はうまくいかない。この間,Jetpackのアップデートもうまくいかなかったことで,アップロードサイズの制限に引っかかるのではないかという疑念が,確信に変わりつつある。

カテゴリー
Windows

本家のお世話-#57。(PHP5.4.11へアップデート)

 17日の17時ごろから,降雪。見る間に,真っ白になったので,スイミングをサボってしまった(テヘヘ)が,その後あまり降らなくて,18日の昼までには,ほとんど消えた。もっとも,昨日の昼くらいまでは,屋根の北側にはまだわずかに消え残った雪が見えていた。今朝は,とっても,いい天気。

 ところで,例の Let’s note J10 ,ついに入院。今(10時過ぎ),クロネコくんが取りに来てくれた。
 実は,昨年10月ごろから,無線ランの調子が悪くて,いろいろやってみたが,結局,ハードの問題のようだというところに落ち着いた。そういうわけで,メーカー修理と相成った。しかし,1年経たずにこういうことの起こる個体って,1か所修理しても不具合が続く恐れがあって,ハズレ個体と言っていい。本当のところ,修理ではなく,丸ごと交換してほしいけど,そうはならないだろうなあ(悲)。

 さて,PHP5.4.11が Jan-16 @21:52:07UTC に出たので,我が家用として,VC9 x86 Thread Safe 版の php-5.4.11-Win32-VC9-x86.zip を落とす。 ChangeLog を読んでも,大きな変更はなさそうだし,2・3日たつけど,怖い話も聞かないので,アップデートしても大丈夫かなというところである。official PHP binary の 5.4.10 以降は php5apache2_4.dll が同梱されるようになったのだが,その辺にも変わりはないか,一応, Apache Lounge の該当部分も見に行った。特に変わりなし。

 php.ini-productionは5.4.10からの変更点なしだし, php5apache2_4.dll も同梱されているから,新旧のファイルを入れ替えて Apache をrestartするだけ。あっと,php.iniを入れ忘れないように!! 新規に導入する方は,「本家のお世話-#28。」を参考にしてください。

 今,気づきましたが,大鵬が亡くなったんですね。ご冥福をお祈りします。合掌。