cronでは「毎月第1月曜日に実行」ができない

社内の技術メモに「cronでは第1月曜日に実行などはできないので、実行されるスクリプト側で条件判定しないとダメ」というような記述がありました。一体どういうことでしょうか。

crontabの書式は「分 時 日 月 曜日 コマンド」です。また、数字はハイフンで範囲指定ができます。下記のように指定すれば毎月第1月曜日の午前3時にコマンドを実行できそうな気がします。

0 3 1-7 * 1 /path/to/command/execute-only-1st-monday

しかし、これは期待通りには動きません。「1日から7日までの期間の唯一の月曜日」を指定したつもりが、実際には「1日から7日のすべて、または日付に関係なく月曜日」と解釈されます。マニュアルにも書いてあるのですが、「日」と「曜日」が両方指定された場合、OR条件になるのです。

ネット上を探すと、これでハマって試行錯誤した人が複数いるようです。testコマンドとdateコマンドを使ってcrontabのコマンド指定部分で条件判定している人を見つけましたが、それは頑張り過ぎな気がします。趣味の問題ですけど、crontabはシンプルに保って呼び出される側で条件判定した方がいいんじゃないでしょうか。

cronでエラーメールの送り先を指定する方法

cronは良く使うツールの一つだと思いますが、何故かトラブルの思い出がつきまとうのは僕だけでしょうか。今日はそんなcronの便利な機能を一つ紹介します。

この投稿の続きを読む »

サイトデザインをリニューアルしました

WordPressのバージョンアップに伴い、利用するテーマを変更しました。

データの移行については結構トラブルがあったので、まだ変な部分が残っていると思います。もし親切な方がいらっしゃれば、何でも指摘して頂ければ助かります。

このテーマについて言うと、海外の有名サイトのデザインの原型みたいですね。おそらく有料で作ったデザインをCreative Commonsで公開しているってことなんでしょうか。日本ではありえない気がしますね。

WordPressで利用しているプラグイン

今回、次のプラグインを利用しています。コメントスパムが減ったり、携帯対応できちゃったりと非常に助かっています。

他にオススメがあったり、逆にオススメしないものがあれば教えてください。

Emacsでサーバ作業を行う際の注意点

Emacs使いの人はサーバ作業の際もEmacsを使うことが多いかと思います。ところが、Emacs使いはvi使いの人より少しだけ気をつけることがあるんです。今回はそんな内容をまとめてみました。

バックアップファイルに注意

Emacsは標準設定だと元のファイル名に「~」を付加した名前でバックアップファイルを作ります。普段は便利な機能なんですが、サーバ上の作業だと困ることもあります。

例えばWebサーバで公開中のPHPファイルを直接編集する場合、index.phpを編集したらバックアップとしてindex.php~ファイルが作成されてしまいます。標準的なWebサーバの設定ではindex.php~はtext/htmlとして出力されてしまいますので、一つ前のバージョンのPHPソースコードが全世界に公開されてしまいます。

また、特定ディレクトリ以下の全ファイルを処理対象にする処理があった場合、バックアップファイルも処理対象になる可能性があります。万一Linuxで/etc/rc.d/rc3.d/S55sshd~なんてファイルを作ってしまうと、トラブルの元になりかねません。

そこで、バックアップファイルを作らないような設定を紹介します。~root/.emacsに次のように書いておけば、rootで起動したEmacsはバックアップファイルを作らなくなります。これでひと安心ですね。念のため、自動保存ファイルも別ディレクトリに作るようにします。

この投稿の続きを読む »

Web/JS(あまくち) part.7 - jQuery セレクタクイズ

jQuery と言えばセレクタ、大変に便利で使える機能です。
さーて新卒皆にもセレクタ教えるぞーと意気込んでみたところ、バージョンアップに伴いセレクタがパワーアップしておりまして知らない表現が色々と・・
これではいかんと密かに自分の勉強も兼ねつつ jQuery Selector クイズを作って勉強会に持ち出してみました。

まるっと暗記するのではなく

  • 何となく知っている
  • 解決する手段を身につけている

状態になるため、リファレンスにざっと目を通した後にクイズとリファレンスを交互に見比べながら遊んで貰えると良いと思います。
興味ある方はチャレンジしてみてください。

この投稿の続きを読む »

講習会「サーバセキュリティ」

「サーバセキュリティ」というタイトルで社内勉強会を開催しました。普段の勉強会ではSQLインジェクションやXSSなどWebアプリケーションのセキュリティの話題が多く、サーバのセキュリティについては人によって知識がまちまちなので、簡単にまとめてみました。普段サーバをいじらないポジションの人でも、セキュリティフィックスを当てる際にお客さんに説明することはあるでしょうから、サーバまわりについても概要を知っておいた方が良いと思います。

まとめ

  • remote exploitは要注意
    • セキュリティフィックスが出たらすぐ適用すべき
  • 公開サーバは常時パスワード総当たり攻撃を受ける
    • 簡単なパスワードをつけない
    • 可能ならパスワードログインを禁止すべき
  • トロイの木馬は現実にあり得る脅威
  • うっかりopen proxyを作ったりしないように

この投稿の続きを読む »

講習会「メール」第一回

「メール」をテーマに講習会を開きました。今後、複数回に渡りメール周りの様々な知識を紹介して行ければと考えています。

プログラマとしての担当範囲という視点では、「mb_sendmail()等の関数を用いればメールが送れる」しか知らなくてもギリギリ仕事はできるかもしれませんが、本当にそれだけの知識しか無いとしたら不安です。メールに限らず、ある程度の周辺知識は何事にも必要ですよね。

「メール」第一回目の今回は、送信した後の事がイメージできるようになることを目標に、メールを送信してからどのような過程を経て相手に届くかについて説明しました。

メールの送受信の仕組みには、多くの登場人物(アクター)が絡んでいます。登場人物が多い分、トラブルが起こるポイントも様々です。

今回の講義では、各過程におけるトラブルの原因や、確認方法も合わせて紹介しています。メール送受信の仕組みを知る事で、トラブルの原因発見や解決の一助となるのではないでしょうか。

この投稿の続きを読む »

Web/JS(あまくち) part.5 - イベントハンドラ

エンジニア一年生に贈る Web/JavaScript(あまくち) part.5 です。
今回はイベントハンドラを扱っています。

前回に引き続きまたまたid:cos31

レポート
を取ってくれましたので、good なまとめとしてご利用ください。

この投稿の続きを読む »

講習会「コンピュータと時刻・日付」を開催しました。

「コンピュータと時刻・日付」というタイトルで社内勉強会を開催しました。今回は一つのテーマに関してアラカルト的に細かい話題を集めてみましたが、おおむね好評だったようです。主に初級者向けの内容でしたが、一定の経験がある人もそれなりに得るものがあったようです。

まとめ

  • 日付・時刻の処理には用心しよう
    • 仕様は固まっているか?
      • 身近な割に意外と複雑なので油断禁物
    • 自前実装にバグがないか?
      • 分岐が多くなりがち→テストケースも多い
    • サーバの時刻は合っているか?(NTP)
    • unix timeで扱える範囲内か?(2038年問題)

この投稿の続きを読む »

Web/JS(あまくち) part.4 - DOM

エンジニア一年生に贈る Web/JavaScript(あまくち) part.4 です。
今回は DOM を扱っています。
id:cos31先生の
素晴らしいレポートがあるのでまとめはそちらをご覧下さい。

この投稿の続きを読む »