ツールサイトの異常をメール通知するMojoliciousアプリを作ったコメントをどうぞmojo-down-monitorっていうものを作った。Mojoliciousの自習と自作プラグインのテストを目的に作ったので、あまり人に勧められるものではありませんが。Alertというサービスを利用していましたが、いい自作ネタだと思ったので作ってみた次第です。ブラウザ上のフォームでサイトのURLを登録し、URL毎に期待するステータスコードやContent-Type、コンテンツの内容などを設定します。アプリは定期的にサイトをGETし、指定された条件を全て満たしているかチェックします。異常があればサイト毎に指定したメアドに通知します。Mojoliciousと、ビューの構築用の自作プラグイン「MojoX::Tusu」を使っています。あと、最近流行りのpjaxを真似た仕組みの画面遷移を試してみたりとか、あくまでExperimental。アプリは下記のように起動。http://127.0.0.1:8010.停止。--stop半月ほど前から、プライベートや仕事で作ったサイトに対して、1分毎にチェックを走らせてみてますが、正常に監視されてるようです。時間帯によって10秒のタイムアウトが頻発するサイトがいくつか見つかったり。Linuxでは正常に動いてますが、Macの場合はメールが送られないようです。Postfixを有効にする的なひと手間が必要ぽいですが、あまり詳しく調べてません。jamadammojo-checkbotがHTMLの構文エラーも報告するようになったコメントをどうぞmojo-checkbotがHTMLの構文エラーも報告するようになった。XML::LibXMLを事前にインストールすると–html-validateオプションが有効になります。挙動が若干微妙だけど。jamadamCSSセレクタでgrepするコメントをどうぞCSSセレクタでgrepするxml-grepっての作った。Mojo::DOMとFile::Findで50行でできた。行番号出したいけど出せない。jamadamリンクチェッカー「mojo-checkbot」がv0.26になったコメントをどうぞリンクチェッカー「mojo-checkbot」がv0.26になった。inputのsrc属性がクロールの対象となった。formダイアログの表示条件を変更し、action属性と、子要素のname属性が全て同一でなければ、別のフォームとみなしてダイアログを表示するようにした。ユーザー認証情報の使用範囲の条件にportの同一性を追加した。jamadamリンクチェッカー「mojo-checkbot」がv0.24になったコメントをどうぞmojo-checkbotがv0.24になった。目玉はform送信ダイアログの追加です。Basic認証やフォームでユーザー情報を送信する必要のある要認証サイトのチェックが楽になりました。formを検出した場合、レポートビュー上からデータ送信してクローラーのキューを追加可能とした。401のユーザー認証を要求された場合、レポートビューからユーザー情報を送信可能とした。matchオプションがDeprecatedになり、代わりにmatch-for-checkとmatch-for-crawlを追加した。sleepオプションが全体のパフォーマンスに影響するのを改善した。jamadamリンクチェッカー「mojo-checkbot」がv0.21になったコメントをどうぞリンクチェッカー「mojo-checkbot」の最近の改良点。sleepオプションがリクエストの開始の間隔だったのを、終了と開始の間隔とした。noevacuateオプションが追加されたコマンドがシンプルになったレポートのステータスコード毎に非表示可能にしたスタイルシート内のurl(...)もクロールするようになった。jamadamリンク切れ検索エンジン「mojo-checkbot」がv0.16になったコメントをどうぞリンク切れ検索エンジン「mojo-checkbot」の最近の改良点。timeoutオプションが動作していなかったのを直した。resumeオプションを追加し、前回の結果を引き継ぐことができるようになった(EXPRERIMENTAL)。metaタグによるリダイレクト先もクロールするようになった。サーバー設定によるリダイレクトの際、今までは最終のURIのみをレポートしていたが、リダイレクト先とその参照元を別項目で報告するようにした(つまり302とかレポート上に現れるようになった)。Firefoxで巨大なjsonを取得するとパースエラーになるため、一度にFetchするデータは100件までとした。コマンドのヘルプを英語/日本語に対応したクローラー自体のエラーもブラウザで見れるようになった200台のレポートを隠すチェックボックスmapタグもクロール対象メモリ使用量が減りそうな対策をたくさんしたけど、検証はしていない。jamadamサイト内のリンク切れを一括検出する「mojo-checkbot」がβ版になった2件の返信mojo-checkbotがある程度できてきたのでベータ版にしてみたよ。githubでゲットできます。最新のバージョン番号のタグがついたものを使ってください。mojo-checkbotはクローラーにウェブサイト内のステータスコードを収集させつつ、ブラウザでレポートを見れるコマンドラインツールです。checkbotの機能限定版という感じですが、日本語が正常に表示されたり、ファイルを介さないのでシンプルだったり、レポートの見せ方を工夫したりと、色々改善しています。mojo-checkbotはMojoliciousをベースにしています。Mojolicious本体は同梱されてるのでインストール不要ですが、Mojoliciousのバージョン2からperl5.10.1依存になったので、以前のバージョンで動くかは不明です(5.10.0では動いてる風)。要改善点はまだ多数あるので逐一更新して行きます。見た目がダサいので誰かデザインしてくれませんか。[--resume]DESCRIPTIONウェブサイトのリンクチェッカーです。開くとチェック状況が逐一報告されます。リンクの収集とステータスコードの収集は再帰的に延々続きますので、matchオプションでURLフィルタをかけておくと、そのうち止まるかもしれません。クロールをスタートするURLを指定します。チェック対象のURLを正規表現で指定します。クロールの間隔を指定します。クローラーのHTTPヘッダに設定するユーザーエージェントを指定します。クローラーがサーバーに送信するクッキーを指定します。クローラーのタイムアウトする秒数を指定します。デフォルトは15です。[EXPERIMENTAL]レポートをテンポラリーファイルに出力する間隔を指定します。[EXPERIMENTAL]resume用のファイル出力を無効化します。[EXPERIMENTAL]前回の結果を復元し、再開します。http://127.0.0.1:3000.EXAMPLE2本プログラムはMojolicious::Liteをベースにしていますので、そちらのオプションも有効なはずです。http://example.comEXAMPLE3クッキーを指定して要認証サイトのチェックもできます。jamadammojo-checkbotを作ってみてる!コメントをどうぞMojolicious::Liteでウェブサイトのリンクチェックをするmojo-checkbotを作ってみてます。動作は恐ろしくノーチェックです。http://127.0.0.1:3000.startオプションにURLを指定してdaemonを起動するとクロールが始まり、http://127.0.0.1:3000にブラウザでアクセスすると、チェックしたURLとそのステータスコードが表示されます。matchオプションでURLを限定することができるので、とりあえずチェック対象を自サイト内にとどめることはできますが、今のところ低機能です。nichcollinsエンコードマニアってサイトがありますが、アレ系のツールをもっと使いやすくしようと思ってできたのが下記。http://webtools.jamadam.com/一つの入力文字列に対して下記の出力を生成します。各種文字コードによるURLエンコード/デコード、HTMLエスケープ(調整中)、MD5、SHA1、punycode変換/逆変換、base64エンコード/デコード、crypt(3)すべてクライアントサイドのJavascriptで処理している点が特徴です。送信ボタンはありません。入力欄に文字を打つと、インクリメンタルに全項目を生成します。サーバーにデータを送信しないので、パスワード生成とかも安心かもしれません。各出力の右側の「FW」ボタンを押すと、その文字列が再入力されるので、可逆性の確認や、二重エンコードもスムーズ。あと、最近デザイナー的な仕事ばかりしていて、段組の幅の計算が面倒だったので、マルチカラム計算機もついてます。ライブラリは下記を使わせて頂いています。