電右衛門さんが……。

 こちらにもよく書き込みをしてくださり,ウォシュレットのときには,約1か月半気長に付き合ってくださった,電右衛門さんが亡くなられてしまった。8月20日だったそうだ。前の日まではお元気で,急なことだったらしい。

 2010年の12月に急性大動脈解離で手術をされたが,その後,順調に回復されていた。ただ,今年の6月には再手術をされた。しかし,お元気になられていたのに。

 先月の19日からおいでがなくて,心配していたのだが。考えてみると前日までおいでいただいたことになる。いろいろ,ありがとうございました。

 心から,ご冥福をお祈りいたします。

本家のお世話-#79。(MySQL5.6.14へアップデート)

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

 自鯖の (Windows7HP+SP1(x86)) の MySQL を 5.6.12 から 5.6.14 にアップデートした。

  1. mysql-5.6.14-win32.zip をダウンロードする。
  2. Zip を展開する。
  3. MySQL のサービスを停止。
    cmd.exe を管理者として起動。
    >net stop mysql
  4. 用心のために, Drive_SV (自鯖のサーバウェア用パーティション) 内の ‘MySQL’ と ‘MyDATA’ をバックアップする。
    注: 通常の ‘MySQL’ の場所は C:\mysql , ‘MyDATA’ の場所は C:\mysql\data である。
  5. 使用中の ‘MySQL’ 内の同名のものを,以下の4つのディレクトリと1つのファイルで上書きする。 my.ini は残ったままになる。
    • ディレクトリ
        bin
        include
        lib
        share
    • ファイル
        COPYING
  6. 使用中の ‘MyDATA’ 内の同名のものを,以下の2つのディレクトリと3つのファイルで上書きする。ただし, ‘MyDATA’ の mysql にあるdb.MYD, db.MYI, user.MYD, user.MYI の4ファイルは上書きしない。これを上書きすると,ユーザとパスワードを再設定する羽目になる。 auto.cnf は残ったままになる。
    • ディレクトリ
        mysql
        performance_schema
    • ファイル
        ib_logfile0
        ib_logfile1
        ibdata1
  7. MySQL のサービスを開始。
    cmd.exe を管理者として起動。
    >net start mysql

 以上。

追記(9/25):
 このアップデートと関係あるのかどうかは定かでないんだが,一昨日から WordPress のデータベースのひとつについてエラーが頻発していた。よくわからないので, WordPress 関連のデータベースをそっくりドロップし,バックアップと入れ替えてみた。今のところよくなったように見えるんだが,何が原因だったんだろう。

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

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

 Sep-18 23:44:17UTC に PHP5.5.4 が出た。

 PHP 5.5.3 のバグ・フィックスだけらしい。 ( ChangeLog )

 といいながら, php.ini-production の中身は,下記のように,若干変わっていた。

 short_open_tag について
———————————————————————————————————————————————
PHP5.5.3 では —
; このディレクティブは, <? と ?> に挟まれた部分を PHP ソースとして扱うかどうかを判断します。
; ここ何年か,ショートタグ <? ?> の代わりに,フルタグ <?php ?> を使うことが推奨されてきました。
; XML などのように, PHP 以外でこのタグを使うものが増えたため,サーバ上で混乱が起き,間違った解釈が
; 起こることが多くなっています。長い間使われてきた機能であるため,ショートタグは今も以前のバージョンとの
; 互換性を保つために残されています。
; しかし,できる限りこの機能を使わないようお願いいたします。
———————————————————————————————————————————————
PHP5.5.4 では —
; このディレクティブは, <? と ?> に挟まれた部分を PHP ソースとして扱うかどうかを判断します。
; 以前のバージョンとの互換性を保つために,いまだにサポートが続いている機能ですが, XML との併用時の
; 不具合を回避するために,通常はこの機能を使わず,フルタグ <?php ?> を使用してください。
; (注)このディレクティブは shorthand タグ <?= とは関係ないことに注意してください。
;   <?= はここの設定にかかわりなく,使用できます。
———————————————————————————————————————————————

ということなんだが,面白い話を mail-archive.com で見つけた。新しいショートタグが生まれちゃったりして!!

 やっと,session.use_strict_mode についても出現
———————————————————————————————————————————————
PHP5.5.3 では —
 当然ながら,記述なし。
———————————————————————————————————————————————
PHP5.5.4 では —
; Strict session mode を使用するかどうかを設定します。
; On の場合は,未初期化 ID は受容しませんので,ブラウザが未初期化 ID を送ってきた場合に,セッション ID が
; 再生成されることはありません。
; Strict session mode はセッションアダプション脆弱性を使ったセッション固定化攻撃からアプリケーションを
; 保護します。互換性を考慮して,デフォルトでは Off になっていますが, On にされることを推奨いたします。
; https://wiki.php.net/rfc/strict_sessions
session.use_strict_mode = 0
———————————————————————————————————————————————

 まっ,とにかく,我が家用 (Windows7HP+SP1(x86)) として,VC11 x86 Thread Safe 版の php-5.5.4-Win32-VC11-x86.zip を落としアップデート。 VC11 がいるので,インストールがまだの場合は PHP のコンフィグの前に vcredist_x__.exe を入れておく必要がある。

 php5apache2_4.dll はオフィシャルバイナリに含まれているので,新旧のファイルを入れ替えて php.ini を放り込み, Apache をrestartするだけ。

 新規に導入する方は,必要なら「Windows7上にWamp系WebServerを建てる-#2。」を参考にしてください。

追記(9/21):
 徳丸さんが,「PHP5.5.4にてstrict sessionsのバグ(bug65475)が修正されたがテストがないことに気づいた」という記事を書いていた。

 別件。上記の「(注)このディレクティブは shorthand タグ <?= とは関係ないことに注意してください。<?= はここの設定にかかわりなく,使用できます。」について確認してみた。
———————————————
  <? echo “1.使えますか?”; ?>
  <br>
  <?php echo “2.使えますか?”; ?>
  <br>
  <?= “3.使えますか?”; ?>
———————————————
というスクリプトを走らせてみたら,
———————————————

  2.使えますか?
  3.使えますか?
———————————————
になった。自鯖の場合, short_open_tag は off だが,確かに,ショートハンドも使えている。 PHP のマニュアルによれば,

注意:

PHP 5.4.0 より前のバージョンでは、 このディレクティブは、<? echoと同じ形式の ショートカット<?=も影響を受けます。 このショートカットを使用するには、 short_open_tagをonとする 必要があります。 PHP 5.4.0 以降では、<?= は常に有効となります。

ということらしい。

JAVAの話。

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

 TODOSでの話だが, JAVA のプログラミングについて,初歩の初歩の質問があって,回答のプログラムを書いた。こんなの ( Enzan.java )。

 何しろ,生まれて初めて,ネットを拾い読みしつつ組んだプログラムなので,引き算の答えが負になる場合の処理とか,エラー処理とかなにもやっていないが,まあ,初歩の初歩の回答としては,そのほうがゴチャゴチャしないでわかりやすいかもしれない。プログラムのチェックは, jdk-7u40-nb-7_3_1-windows-i586.exe でやった。

 で,昨日,次のものとして, for 文の使い方についての質問があった。 TODOS に回答を書けばいいようなものの,スレッドの流れからどうも書きにくくなってて,JAVA の勉強にはなるから,ここに書いてしまおうかと。

 ところで,質問文中に「実行結果があやふやなことになりました」とあるが,締めくくりの } が2つないのもさることながら,これでは,実行以前にコンパイルが通らないと思うのだが,実行というのをコンパイルの意味で使っているのだろうか。しかし,コンパイルでははっきりエラーメッセージが出るはずだから,「あやふや」という表現は当たらないよなあ。

 質問文中のプログラムには,まず,何よりもまず最後に } が2つ必要である。さらに,変数の型宣言が for ループの中に入ってしまっているから,これを外に出さないといけない。こんな具合 ( Sample1.java )。これで,コンパイルは通る。これは,私の間違い。もう一度確認してみた。型宣言が中にあっても,一般には通る。しかし, for ループの中が空のときは通らないようだ。
 さらに,追記(汗)―― Sample2_1 は通るが, Sample2_2 は通らない。考えるに, JAVA のコンパイラはお利口さんで, for ループが空だと実質何も行わずに無視するのだろう。したがって,インデックスの宣言と値代入が同位置だと, for ループが空の場合,そこが無視されているから,型宣言が行われていないことになって,あとの print 文の変数が未宣言になってエラーが出ると見た。多分,これで正解。したがって,通常は,インデックスの型宣言は for 文の中で構わないことになる。――追記,ここまで。

 しかし, (int i=1; 1/i<=500; i++) ってどういう意味だろう。多分,条件と for ループの中でやるべき処理とがごっちゃになったんだろう。しかし, 1/i で i が int だと計算結果も int で 1/2 からはずっと 0 になるわけだから,ナンジャラホイということになってしまう。プログラムを実行可能にするためには,せめて, (int i=1; i<=500; i++) じゃないといけない ( Sample2.java )。

 さて,空っぽの for ループの中になにか処理することを入れないといけない。 i をインクリメントさせて, 1/i を加えていくわけだから,計算結果を記憶させる変数が必要だ。彼の考えに沿って行くと, int j=0; を宣言しておいて使うということになるだろう ( Sample3.java )。しかし,これの実行結果は, 1 になる。ここまで来て,「実行結果があやふやなことになりました」というんなら納得できるんだけどな。なんでこんな結果になるかというと,型が int だからだ。 i が整数型だから, JAVA だと, Sample3.java の 1/i の場合, 1/1 以外はすべて 0 になるはずだ。

 追記(9/26): (float)i と明示的に書いてやると, 1/(float)i の結果が float になることを知った。

 この手の計算なら,小数を扱う必要があるから, float か double を使うべきだろう。桁落ちの発生する float や double での 1 + 1/2 + 1/3 + … + 1/500 の計算結果は,誤差が大きくなって大変にまずいわけだが,初級レベルのプログラミングの for 文の使い方でそんなところまで要求するとは思えないから, float でも使っておけばいい。実行結果は, 6.7928243 になる ( Sample4.java )。

 しかし,今回の質問の文章にも,彼は全く悪びれたところがない。この間,りりさんが,「このまま去れられると、別のご相談をしたくなったとき、もう、ここでは応えて貰えないと思いますよ。」と書かれていたのに,この書き方ということは,彼の中では,もう一度来たから「このまま去った」わけではないということなんだろうな。よー分からんが,そういうことなんだろう。

 初心者の場合,相談後,教えてもらったことを使って実際の手順がうまくいっても,掲示板の今後の利用者のために結果を詳細に報告と言われても,どう書けばいいかわからないということはある。だから,「解決しました」しか書かない,いや書けない投稿者も存在する。だからそれはそれでいいのだが,前回の文章に「ありがとうございました」の一文を入れるか,今回の文章に「この間は,失礼しました。遅くなりましたが,改めてお礼申します。ありがとうございました」とか書いてから,今回の質問を書けば何も問題ないんだが。そこがないので,私は流れ上スレッドの続きを書きづらい。

 私としては,もう一度彼に注意を促しながら,回答をしてもいいのだが。 JAVA の勉強にいい機会だと思って付き合いだしたのだが,なんともすっきりしないことになってきたワイ。

追記(9/27):
 りりさんの提案で,彼の投稿をネタに TODOS でトライをやった。「何十も見つかった」という話だったのだが,重複が多かったらしく,9度で打ち止め。9個並べてリンクを貼っておきます。

 「その23」以降は,「JAVAの話-#2。」にリンクしてある。

いい月夜でした。

中秋の名月(2013)
中秋の名月(2013)
 なんとも,煌々たる十五夜ですねぇ。

 今年も,カメラに収めました。この調子で,「後の月」も見て,久々に「二夜の月見」を完成させたいものです。

 あまりに冴えた月影だったので,「月」の1番が頭の中で鳴り響いていました。これの1番です。 (^^)

  1. 出た出た 月が
    丸い丸い まん丸い
    盆のような 月が
  2. 隠れた 雲に
    黒い黒い まっ黒い
    墨のような 雲に
  3. また出た 月が
    丸い丸い まん丸い
    盆のような 月が

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

 半年くらい前に,こんな記事を書いた。 wp-login.php に対するアクセス制限の話だ。その後, SSL を有効にして,モバイルアクセスもできるようにしていたのだが,本日,また少し変更した。

 あのときに作った, access-denied.conf を開けて以下のように変更した。見ていただくと分かるように, wp-login.php と同じ制限を wp-admin にも加えたわけだ。

旧:
<Files “wp-login.php”>
  Require ip xxx.xxx.xxx.xxx/xx  <<--- 自宅LANのIPアドレス   Require host モバイルのホスト名 </Files> 新: <Files "wp-login.php">   Require ip xxx.xxx.xxx.xxx/xx  <<--- 自宅LANのIPアドレス   Require host モバイルのホスト名 </Files> <Directory "drive_DC:/WEB/htdocs/wp-admin">  <<--- drive_DC:/WEB/htdocs/ は自鯖のドキュメントルート   Require ip xxx.xxx.xxx.xxx/xx  <<--- 自宅LANのIPアドレス   Require host モバイルのホスト名   <Files "wp-admin-ajax.php">     Require all granted   </Files> </Directory>  このルールから, admin-ajax.php を外しているのは,「Re: WordPress使いならこれだけはやっておきたい本当のセキュリティ対策10項目」に書いてあったからだが,実際に調べてみると,我が家のプラグインのいくつかも, wp_ajax_(action) フックを使用していたので,前もって, wokamoto さんのメモに気づいていてよかったと思った。でなかったら,きっと,ハマりまくっていたことだろう。

 変更は,ちゃんと効いている。メデタシ。 (^^)

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

 2・3日前に, WordPress 3.6.1 メンテナンスとセキュリティのリリースが来てたんでアップデートをやったんだが,ついでに, xrea の s370 と @pages の www39 でもアップデートしたら, @pages の www39 のほうで少し様子が変わっていた。

 しょっぱな,アクセスしたら,「データベース接続確立エラー」が表示されて,えっ。
 考えてみたら,この間うちから,【@PAGES】【お詫び】ユーザ情報流失に関するお知らせ 2013.08.28【@PAGES】【お詫び】ユーザ情報流出に関するお知らせ【第2報】2013.08.29 ナンチャラがあったときに,「データベースのパスワードも変えておいたほうがいいですよ」と言われて,パスワード変更したのに, wp-config.php の中の記述を変えてなかったんだった。テヘヘッ。
 それを直したら,当然ながらあっさり,O.K.

 ダッシュボードに入ったら,上部に「WordPress の自動更新に失敗しました。再度、更新を行ってみてください。」メッセージが出ていて,「なんだろう」と思ったが,まずは溜まっていたプラグインの更新を先に行った。いつも失敗する Jetpack の更新もスンナリ。ホーッと,思ったので, WordPress3.6.1 の自動更新をやってみたら,データベースアクセスのための設定がいらなくなっていた。しかも,あっさり,更新完了。

 ここにいたって,「なるほどな」と思った。  @pages の www39 においては,今後, WordPress 本体の更新はサーバ側がやってくれるということなんだろう。今回は,「データベース接続確立エラー」が出るような状態だったので,「WordPress の自動更新に失敗しました。再度、更新を行ってみてください。」が出たわけだ。この推測,間違っていないよね。

 ロリさんのことなんかも関係あるんだろうか。それとも,以前から計画済みだったのか。セキュリティ面からいうといい話だが,ブログが動かなくなっちゃったりするユーザがいたりして,サポートが大変だろうな。でもまぁ,その辺をきっちりやっていくのは,今後の生き残りのためには,大事なことなんだろう。一ユーザとして,陰ながら,ご健闘をお祈りいたします。

イプシロンロケット再打ち上げ成功。

 この間(8/27)延期になったイプシロンの再打ち上げがあったので,ニコ生でドキドキしながら見ていた。

 点火して,今,上がっている。(14:01)

 1段目が無事燃え尽きた。分離した。2段目の燃焼に入った。(14:02)

 速度 190km/分 (14:03)

 2段目が無事燃え尽きた。(14:04)

 あともう少しだよ,がんばれ。

 2段目分離完了。

 3段目燃焼開始。速度がどんどん上がるネ。もう燃え尽きた。ハヤッ。(14:12)

 搭載カメラの映像,すごい。

 3段目分離完了。(14:18)

 第1回目 PBS 燃焼開始。(14:21)

 第1回目 PBS 燃焼終了。(14:25)

 SPRINT-A の VTR きたー。ニコ生視聴者は,門松と命名したみたい。www

 高度 1000km 超えた。(14:41)

 搭載映像第2弾来た。ぐるぐるアース。(14:53)

 第2回目 PBS 燃焼開始。(14:56)

 第2回目 PBS 燃焼終了。(14:59)

 衛星分離完了。(15:01)

 打ち上げ成功。バンザーイ。

 搭載映像第3弾来た。衛星分離。よく判別できんかった。 orz (15:05)

 放送も終わった。めでたしめでたし。(15:10)

 追記と言っては何だが, JAXA にも寄付金のページがあるみたいだ。事業仕分けもあったし,こういう方面は,どこも苦しいんだろう。

起きてびっくり,サイト改竄? at よそ様-続々々々々報。

 ぐふふ,ついに踊り字4つだよー。まっ,これで打ち止めだとは思うけどね(汗)。

 2013/09/09第三者によるユーザーサイトの改ざん被害に関するご報告ということで,09/09 20:42 追記後は増えていないから,これが公式な最終報告なのかなと思う。結局のところ,

■原因

  • 改ざんの原因
    簡単インストールを利用して設置された WordPress においてインストールが完了していない WordPress が狙われ、WordPress の管理者権限を第三者に取得されたことで、サーバー上にサーバー構成上の不備を悪用するスクリプトが設置されました。また、wp-config.php のパーミッションが 644 だったことを利用して、設置されたスクリプトによりデータベースの接続情報の取得がおこなわれ、データベース上のデータの書き換えが可能な状態となっておりました。
  • 改ざんが拡大した原因
    サーバー側のディレクトリパーミッションが不適切だったことと、FollowSymLinks の設定を有効にできる状態であったため、同一サーバー上のユーザー領域を辿り、他のユーザー様の wp-config.php の内容を参照し、データベースの更新を実行することで改ざんの被害が拡大しました。

    上記の事象と原因に関して、被害の拡大を防ぐため以下の対策を実施いたしました。

ということで,今回,被害が拡大したことについては, WordPress は無関係ということだ。無罪放メーン。

 もっとも,前記事で「大穴があいていたもので,個別の穴狙いでチョコチョコ出入りしていたクラッカーが,図に乗っちゃったということになるのか。」と書いたように,チョコチョコ出入りしようとするクラッカーはどのサイトでも見受けられるわけで, WordPress は売れ筋の CMS であるだけに,狙われやすいのだということは,肝に銘じておいたほうがいい。 Mac より Windows 狙いのマルウェアが多いのと同理由である。

 ロリさんのところがどのくらい改善されたのか試してみたい気もするが,最近は,あちこち手を出すのは止めてるので,どうなるかな。

 よそ様の運営に口を出すのもおこがましいが, WordPress の簡単インストールというサービスを提供するのであれば,もう少しガチガチにしといたほうがいいだろうと思う。ロリさんところで,簡単インストールを利用しようってユーザの場合,「パーミッション,何それ,おいしいの?( <-- 先に謝っときます。この表現,気に障ったらゴメンナサイ)」レベルの場合が考えられるわけで,インストールされそこなって放置される場合はもちろん,運営する状況に至っても,パーミッションまで気が回らないことは十分考えられるはずだから,簡単インストールなら,当然,そこまで面倒見るべきだろう。アップデートサービスについても然りだ。  WordPress はテーマやプラグインが豊富なのも魅力の一つだが,簡単インストールの場合だと,これらについては個別ユーザが自由にインストールできないようにしておくべきだ。それをやっておかないと,テーマやプラグイン由来の穴に対する保守が不可能になる。メリットも殺しちゃうことになるんで,痛し痒しだろうけど。  マルチサイトの子サイトとして提供するのがいいんだろうが,それだと,簡単インストールサービスじゃなくて,ブログのサービスになっちゃうからなぁ。  我が家の場合は,自鯖の上にユーザは私一人という特殊事情だから,そんな難しいことは考えなくていいんだけど,共用サーバって難しいんだろうね。

本家のお世話-#76。(WordPress SSL ログイン-#3)

 「WordPress SSL ログイン-#2」の設定をしたときに,「define( ‘FORCE_SSL_ADMIN’, true );」は使わなかった。あの時点でのサーバ機は LaVie PC-LC5505D で,ちょっと過重かなと思ったからだ。

 今朝, Ajax Edit Comments Version 5.0.30.0 のアナウンスがあったのだが,その Changelog

Fixing SSL error when FORCE_SSL_ADMIN is set to true. See trac ticket: http://buddypress.trac.wordpress.org/ticket/4761

というふうに書いてあった。そのせいで,「define( ‘FORCE_SSL_ADMIN’, true );」を使っていなかったことを思い出した。ちかごろ世上を賑わしたセキュリティ関係のゴタゴタもあるし,ちょっと触っとくかと……

 で, wp-config.php を開けて,「define( ‘FORCE_SSL_LOGIN’, true );」行をコメントアウトし,その下に,「define( ‘FORCE_SSL_ADMIN’, true );」行を追加した。

 この後で,管理画面にアクセスしたら,証明書を要求されるようになった。動きもそんなに遅くなったようにも思えないが,読みに来る方の体感はどうだろうか。

 phpMyAdmin4.0.6 になっていたので,ついでにそれもやっておいた。