WordPressのxmlrpc.phpへのアクセス数をLogwatchで通知する

WordPressのxmlrpc.phpへの大量アクセスで時々サーバーが息をしなくなってしまうので、IPアドレスでアクセス制限をかけています。ただ、毎回アクセスログを見てアクセス元のIPアドレスを確認するのも面倒です。

日頃からLogwatchでサーバーの状態を確認しているので、ここでxmlrpc.phpへのアクセス数の集計も見られると便利だと思い設定しました。Ubuntu 12.04.4 LTSにtaskselからLAMP環境を構築しWordPressを設置した状態を前提にしています。

まずLogwatchをインストール。

sudo aptitude install logwatch
sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/
sudo cp /usr/share/logwatch/default.conf/services/* /etc/logwatch/conf/services/

/etc/logwatch/conf/logwatch.conf の最低限の設定を変更します。

TmpDir = /tmp
Output = mail

MailTo = myname@example.com

ここで動作確認

sudo /etc/cron.daily/00logwatch

メールが届けばOKです。

/etc/logwatch/conf/services/services に wp-xmlrpc-access-count.conf を作成

Title = "WordPress xmlrpc.php Access Count"
LogFile = http

/etc/logwatch/scripts/services にログの集計を行うスクリプト wp-xmlrpc-access-count を追加

#!/usr/bin/python
import sys;

ipcount = {}
for line in sys.stdin.readlines():
    if "xmlrpc.php" in line:
        ip = line.split(" ", 1)[0]
        if (ip in ipcount):
            ipcount[ip] = ipcount[ip] + 1
        else:
            ipcount[ip] = 1

count_length = 0
for ip, count in sorted(ipcount.items(), key=lambda x:x[1] * -1):
    if count_length == 0:
        count_length = len(str(count))

    print ((ip + ":").ljust(17) + str(count).rjust(count_length) + " Time(s)")

スクリプトの動作確認

logwatch -service wp-xmlrpc-access-count -output stdout

これで集計結果が表示されればOKです。

この設定を行うにあたってLogwatch にサービス・フィルタを追加するを参考にしました。

Limit Login Attemptsプラグインはxmlrpc.phpへのブルートフォースアタックも防ぐのか

ふと不安になって調べてもわからなかったので実験しました。iPhoneにWordPressアプリをインストールして3G回線でまずは正しいID/パスワードでログイン、アクセスログを見て自分のIPアドレスを確認しました。
今後は出鱈目なID/パスワードでログインを連打してLimit Login Attemptsの設定画面を確認。iPhoneのIPアドレスが登録されてブロック対象に自動設定されていることを確認しました。

いつの間にか大きな不満が解消されていたWindows8.1 Update1

いつの間にかなので本当にUpdate1で解消されたのかはわかりませんが、嬉しいことです。

onedrive_in_task_tray

通知領域にOneDriveのアイコンが復活しています。Windows8からWidows8.1になる際にOneDrive(当時はまだSkyDriveだった?)がWindowsに統合され、通知領域のアイコンも無くなってしまっていました。
以前はこのアイコンでOneDriveの同期が終了したのを確認してからシャットダウンしていたのですが、アイコンが消えて確認出来なくなったためにシャットダウンした夜は安心して眠れませんでした。
このアイコンの復活は大歓迎です。

更に嬉しいのがファイル履歴に関する不満の解消です。ファイル履歴はWindows8で追加された手軽さと効果のバランスが取れたバックアップ機能で、ライブラリに登録したフォルダの内容を外部ドライブやネットワークドライブに世代別にバックアップしてくれて、簡単な操作で復元出来る機能です。

ファイル履歴はOneDriveのディレクトリもライブラリに登録すればバックアップしてくれていたのですが、Windows8.1からはライブラリに登録されていてもOneDriveのディレクトリはバックアップされなくなりました。OneDriveには削除したファイルを復元する機能もありますが、不慮の上書きによるファイルの破損等には対処出来ません。そういった不安からOneDriveの中味もまるごとバックアップの対象に設定していたので、Windows8.1でのこの変更には絶望しました。バックアップが完全ではない不安から安心して眠れない夜が続きました。

ところが、いつの間にかOneDriveの中味もファイル履歴によってバックアップされているではありませんか。きっとUpdate1で改善されたのでしょうね。有り難いことです。

PHPStormでSQLを含む大きなPHPファイルを開くと重い

PHPStormはPHPコードの文字列に含まれるSQLを認識して補完、色分け表示をしてくれます。コーディングが極めて捗る機能ではあるのですが、うん万行も延々とSQLが連なるPHPファイルを開くと流石の軽快なPHPStormも数秒の間フリーズしてしまいます。
そんなときは機能を無効にしてしまうと軽くなります。

  1. File→Settings…で設定画面を開く
  2. 左側の一覧のProject Settings→Language Injectionsを開く
  3. php:”SQL select/delete/insert/update/create”のチェックを外す
  4. php:”<<< SQL”のチェックを外す
  5. OKで設定画面を閉じる

自転車通勤始めました

20140429_051805589_iOS_smallize_for_blog
ここ最近体調不良が続いていて、体重もジワジワと増加中。全ては自転車に乗っていないことが原因であるという思い込みから自転車通勤を始めました。電車15分+徒歩15分の通勤が自転車30分+徒歩15分(駅付近の有料駐輪場を定期契約したので徒歩区間は変わらず)に変わりました。開始1週間程度でまだ特に体の変化は感じませんが、ちょっとだけ日常生活が楽しくなりました。

通勤に使う自転車なのですが、10年埃をかぶっていたMTBを引っ張り出しました。変態だったときに履かせていたスパイクタイヤのままだったのでスリックタイヤを購入。以前の僕なら1.2インチ程度の軽量なタイヤにするところですが、細いタイヤで無駄にやる気が出て仕事前に汗だくになっても困ります。そこで今回はシュワルベのKOJAK 26*2.0、太めのスリックタイヤにしました。これが太いのに漕ぎが軽くてビックリ。エアボリュームだけじゃなくケーシングの良さもあって多少路面が荒れていても乗り心地はそんなに悪くありません。MTBに細いスリックタイヤだと見た目がショボくなりがちですが、2.0だと見た目もそんなに悪くならないのもいいですね。これは、良いものです。

タブレットでも快適オススメWindowsストアアプリまとめ

メール、カレンダー、People

メール:特に褒めるところも無ければ不満もない、質実剛健なメーラーです。POP3には対応していないので、Outlook.comやGmail等を経由して受信すると良いでしょう。

カレンダー:予定を書き込む欄が大きい紙のカレンダーありますよね。あれをそのままPCの画面に再現したようなカレンダー。こういうのあんまり無いんですよね。とても重宝しています。

People:Outlook.comのアドレス帳と主要なSNSのアカウントを連携して扱えるWindows8の中核になるアプリです。連絡を取りたい人を検索して表示すると、その人の主要なSNSのタイムラインを一覧出来ます。そこでFacebook、Skype、Twitter、電話、メール等の連絡手段を選んでそのままコミュネーションを取れます。

各サービスのアプリが起点になるのではなく、人を起点に各サービスを利用出来る点が素晴しいです。

Tweetium

Twitterクライアントはそこそこの数揃っているのですが、その中でも抜群の使いやすさです。大抵のクライアントは一芸に秀でていてもどこかイライラする点があったり、機能に不足があったりするのですが、これだけは期待する機能を一通り備えていて、常に期待した動作をします。スクロールの制御とか本当に良く出来ています。UIの構成もそこそこ熱心なツイッターユーザーの生態を良く考えた作りになっています。有料アプリですが、試用すればきっと買いたくなります。アプリの購入に加え半年間のサブスクリプションを購入することでプッシュ通知、複数アカウント等の機能を利用出来ます。

LINE

皆が使ってるあのLINEです。

mixi

もっと本気出して欲しいけどWebも重いんで…タイムラインのチェックくらいなら使えます。困ったらWebで見ればいいんです。

Facebook

Webの機能を上手くWindowsストアアプリに落とし込んでいます。このアプリがあればWebから見ることは殆んどないでしょう。

Skype

デスクトップ版もあるのでお好みで。複数アカウントに対応していないのが残念なところ。純正らしく動作はとても安定していて使いやすいです。

IM+ Pro

Windowsストアアプリ版Skypeが複数アカウントに対応していないので、Surface2ではこのアプリを補助的に使ってます。

2ch Sanka

3ペインの馴染みやすいUIの2ちゃんねるビューアです。複数端末でお気に入りの同期がされないのが惜しいところ。

OneNote

主要なプラットフォームで使えるノートアプリのWindowsストアアプリ版。機能は限定的ですが必要にして十分。デスクトップ版のOneNoteも無料で使えるようになったので、それらと連携して快適に使っています。

黒板

簡単な手書きメモを取るのに何となく使えます。黒板らしい効果音が心地良いです。

Wikipedia

Wikipediaが見られるだけです。Windowsの検索に統合されるのが便利です。

NAVITIME

他プラットフォームでもお馴染のナビアプリ。GPS付きのタブレットであれば有料プランを使ってみるのも良いでしょう。ちょっとクセがあるので必要になったときに使おうとしても上手くいかないかも。事前に弄って使い方をマスターしておきましょう。

乗換NAVITIME

NAVITIMEから乗り換え案内の機能を切り出して無料にしたようなアプリ。

Bing 翻訳

チャームの共有から翻訳にかけられるのが良いです。

Windows 電卓

普通の電卓です。

Windows リーディング リスト

後で読む系アプリです。共有チャームからどんどん突っ込んで、思い出したときに読む用。

Windows アラーム

タブレットであればロックやスリープしてても鳴る普通のアラームです。カップ麺作るのが捗ります。

MetroPass Free

Keepassのファイルをそのまま扱えるパスワード管理アプリ。OneDriveに保存しておいて、Win7マシン上ではKeepassからパスワードを参照するというような使い方も出来ます。

Nextgen Reader

WindowsストアアプリでRSSフィードリーダーといえばこれでしょう。とりあえずこれ使っとくといいです。

リモート デスクトップ

デスクトップ版のリモートデスクトップとはリモート先のチャームやAppバーの開き方等の操作が違うので、お好みの方を使うといいでしょう。

Wake Up

LAN内の他のPCを電源OFFの状態から起動出来るアプリ。ベッドでタブレットからリビングのノートPCを起動して、リモートデスクトップで接続して使うなんてダラダラライフを送れます。

Remote Terminal

SSHクライアントはいくつかあるのですが、これが日本語の表示、コピペの操作性等の実用性で及第点。タブレットを縦に持って親指キーボードにすると意外と作業出来ちゃいます。

Microsoft Solitaire Collection

皆大好きソリティアはここにありますよ!

Microsoft Minesweeper

皆大好きマインスイーパはここにありますよ!かなり派手な演出になっています。

Microsoft Mahjong

皆大好き上海はここにありますよ!

Pinball FX2

これまたド派手になったピンボールです。

Halo: Spartan Assault Lite

Windowsストアのキラーアプリ。楽しいです。

Angry Birds Star Wars

貴重な時間の多くを奪われました。

Bejeweled LIVE

じっくりやれるLINEPOPみたいな感じ。BGMが不気味で頭から離れません。

Reckless Racing Ultimate

俯瞰視点のレースゲーム。ジムカーナが超楽しい。

Parking Mania

俯瞰視点の駐車ゲー。やめられなくなります。

Drift Mania Championship 2

やたら操作が難しいのですが、慣れてきてドリフトが決まるようになるとそこそこ気持ち良いです。

将棋オンライン

たまに指したくなるんですよね。

Big Buck Hunter

走り回る鹿をタップすると猟銃で狩れるんです。雌鹿を誤射すると失敗になるので、タイミング良く雄鹿だけを撃ちます。和訳がシュールで楽しいです。

艦隊タイマー

拙作の艦これ用タイマーです。クラウド連携でプッシュ通知が来るし、複数端末で同期もされます。

POPFileを使った捗りメール処理術

毎日届く大量のメールに貴重な時間を浪費しないために、何らかの方法でメールを整理している人は多いんじゃないかと思います。スパムフィルターでスパムメールを隔離したり、宛先や件名でフォルダに振り分ける設定をしたり、結構苦労してる人もいるんじゃないでしょうか。
振り分けたら振り分けたで、チェックするフォルダの数が増えるだけでそんなに楽になってなかったり。

意味のある基準で分けないとメールの処理は楽になりません。そこで、メールに対して取るべき対応を基準に以下のように振り分けます。

  • Inbox:読んで何らかの対応を取る必要がある。これは振り分けずに受信トレイに残す。友人や会社からのメール等。
  • Info:即時対応は必要ないが内容に目を通しておく必要があるもの。
  • News:必ずしも読まなくていいが、件名を眺めて興味があれば読んでもいいもの。
  • Spam:読まないもの。

ジャンルで分けるのであれば差出人や件名での振り分けである程度対応出来ますが、上記のような基準で分けるのはとても大変です。そこでPOPFileの出番です。

 

POPFile – Automatic Email Classification

 

POPFileはスパム対策に限定しないメールの振り分けを自動で行うソフトウェアです。ユーザーが振り分けたメール内に含まれる単語の出現頻度の統計をもとに学習し振り分けを行います。面倒な振り分け条件を設定する必要がなく、振り分け精度は抜群です。POPFileはWindows、Linux、Macで動作し、POPとIMAPに対応しています。

POPの場合はプロキシサーバーとして振る舞い、振り分け結果に応じてヘッダを付加したり件名にタグをつけたりするので、そのヘッダやタグをキーにしてメーラーの機能で振り分けることになります。誤振り分けの訂正はブラウザで開くPOPFileの画面で行い、メーラー側でのフォルダの移動も自分で行う必要があってちょっと手間です。複数の端末でメールの受信をする場合はどれか一つの端末でしか使えません。

IMAPの場合はPOPFile自体がメーラーとして振る舞い、受信トレイと振り分けフォルダの内容をポーリングします。新しいメールを見つけると振り分け結果に応じてフォルダ移動を行います。誤振り分けの訂正は使っているメーラーで正しいフォルダに移動するだけです。POPFileはメールが移動されているのを見付けると振り分け結果を訂正します。常時稼働しているマシン上で動かす必要はあるのですが、複数端末で受信をする場合も意識することなく、振り分け結果の訂正も簡単に行えるため非常に快適です。

POPを選ぶ理由はないので、ここではIMAPで設定していきましょう。POPFileのために常時稼動させるマシンを用意するならUbuntuが最も安上りで簡単なのではないかと思います。VPSを借りてPOPFileを動かすのも良いと思います。このWordPressが稼動しているサーバーでもPOPFileが動いています。

#GUIのブラウザがあればlynxは不要
sudo apt-get install popfile libtext-kakasi-perl lynx
#GUIのブラウザがあれば、それでlocalhost:7070を開く
lynx localhost:7070

ヘッダメニューの"Configuration”→”Choose language"を"Nihongo"にしてApply

ヘッダメニューの”Configuration”→”Choose language”を”Nihongo”にしてApply

ここからはテキストのみで進めます。

”詳細設定”に移動

imap_enabled:1
pop3_enabled:0

で更新

”バケツ”に移動

ここで振り分けるバケツを作ります。
バケツごとに設けられているチェックボックスは全て外します。

メーラーで振り分け用のフォルダを作成

”設定”に移動

IMAPの接続情報を入力して更新
監視フォルダにどんどんフォルダを追加
バケツとフォルダの対応を設定

これで設定完了。念の為にPOPFileを再起動しましょう。

sudo service popfile stop
sudo service popfile start

あとは快適なメールライフを送りましょう。特に問題が起こらない限りはこの管理画面を弄ることはないでしょう。

 

使ってるメーラーによっては複数のフォルダに同じメールが重複することがあります。設定の”監視フォルダから移動されたメッセージを削除する。”にチェックを入れると改善されます。

POPFileをインストールしているマシンとは別のマシンで管理画面を開きたい場合もあるかと思います。そんなときは”セキュリティ”→”リモートマシンからの HTTP 接続”を”はい”にしてPOPFileを再起動します。あとはパスワードを設定するなりファイアウォールに穴を開けるなり良い感じで環境構築しましょう。特に暗号化等はされていないのでそのままLANの外に出すのは良くないと思います。私はSSHのポート転送でVPS上のPOPFileの管理画面にアクセスしています。

 

何かおかしい!メールの振り分けがされてない気がする!と不安になることもあるかと思います。そんな時は”設定”の下の方にある”<現在のログファイル>”から詳細なログを見られます。

PHPStormの補完とかが何となく調子悪くて困ってた

補完候補が出るのに妙に時間がかかったり、表示される候補も不完全だったり、正しいコードなのに波線で怒ってきたり。
そんなとき C:\Users\USERNAME\.WebIde*\system\index を丸ごと削除すると快調になったのでメモ。
いろんな箇所を疑いつつ数日イライラしながら仕事してたけど、こんな単純なことで解決して拍子抜け。

@Vexus2 さんより以下の情報を頂きました。ありがとうございます。

ちゃんと正攻法が用意されていたんですね。

艦これ用タイマーアプリ 艦隊タイマーをWindowsストアに公開

遠征、入渠、建造の時間を一覧出来ます

遠征、入渠、建造の時間を一覧出来ます

スナップでもOK

スナップでもOK

遠征は選ぶだけ。遠征リスト上で遠征IDをキーボードから入力することで選択出来ます。 遠征を選んだ状態で時間を入力すれば途中からのカウントダウンもOK。

遠征は選ぶだけ。遠征リスト上で遠征IDをキーボードから入力することで選択出来ます。
遠征を選んだ状態で時間を入力すれば途中からのカウントダウンもOK。

建造も選ぶだけ

建造も選ぶだけ

入渠時間もキーボードから直接入力出来ます。

遠征の繰り返しも簡単

遠征の繰り返しも簡単

アプリを閉じていてもプッシュ通知が届くので他の作業に集中出来ます。

アプリを閉じていてもプッシュ通知が届くので他の作業に集中出来ます。

タイマーの設定は複数のデバイスで素早く同期されるで外出先、職場、自宅と忙しく艦隊を指揮する提督に最適です。

Windows ストア の Windows 用 艦隊タイマー アプリ

艦隊タイマーは2013流行語アプリ選手権&総選挙 by @IT Windowsタブレット向けアプリ開発にエントリーしています。気に入って頂けたら「クラウドで取り返す…… BaaS返し」部門は艦隊タイマーに投票お願いします。

投票所

PHPでの文字列の扱いには注意しよう、と自分への戒め

if ('0' == '00') {
    //trueになる
}

if ('0' === '00') {
} else {
    //falseになる
}
//文字列の比較には===、!==の3文字シリーズを使わないと事故るよ!文字列と文字列の比較でも数値に変換可能な場合は数値として比較されちゃうよ!

if ('0') {
    //falseになる
}
if ('00') {
    //trueになる
}
//ifに文字列を突っ込んでも何の判定にも使えないよ!

PHPをdisるのはプログラマの嗜みではあるけれど、disってもPHPは無くならないんだから戦い方を身に付けないとね。

幸いマニュアルは大変に親切な作りなので最大限に活用しましょう!

http://php.net/manual/ja/index.php