2014年12月16日

linuxのcronをどこに書くかやっと判った話。

 linuxで定期的にコマンド実行した時は、「cron」に書きますが、今まで書く場所を間違っていたような気がしました。

 crontabを使って書いていたのですが、これだた実際のファイルがあるわけではなく、linux上に設定を直接書いている感じなんですよね。

 ちょっと調べたら、ちゃんとありました。
決まったディレクトリにファイルを置いて実行してもらやり方が。

/etc/cron.dディレクトリにcrontabで書いていたものと同じ記述をしたファイルを置くことでいいんですね。
いやー、最近知りました(動くことを優先して真面目に最適な方法を調べてませんでした。反省)


このサイトを良く見ます。
https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html


余談ですが、cronで最近やらかした失敗を一つ。

設定ミスなんですが、下のような記述をしました。

* 4 * * * root 何らかのコマンド

4:00に何らかのコマンドを一回実行したかったのですが、時間のところを「*」にしたものだから、1分毎にコマンドが実行されてしまったようです。
このコマンドの中にメールを送信するというのがあったので1分ごとのメールが送信されていました。
それも、自分でない人に対して。
自分のところに送るようにしていれば、直ぐに気づいて修正したのですが…。とほほです。


2014年12月9日

CakePHPで不思議(超怖い)な現象が発生

 CakePHPのモデルのreadメソッドを使うと何故か関係ないレコード(ループ内の中で更新しているので全然会計ないわけではないですが)がUPDATEされてしまう現象が発生してしまっています。

何をしているかといいますと、
 複数のコントローラーから共通の更新処理をしたいのでコンポーネントの中でモデルを操作しています。
 (コンポーネントのinitializeメソッドで呼び出し元のコントローラを引き継いでいます。)

 コンポーネントに引き継がれているコントローラーのモデルのreadメソッドを使うと、何故かそのレコードの全項目が更新されてしまうようなのです。
readメソッドをやめて、findByメソッドを使うようにしたら上手くいったのですが、原因不明でものすごく気持ち悪いです。


public function initialize(Controller $controller) {
    $this->controller = $controller;
}

$rs = $this->controller->XXXXX->read(null, $id);


$rs = $this->controller->XXXXX->findById($id);



何か情報を持っている方いましたら、ご連絡をお待ちしております。

環境を書き忘れました。
簡単に。

CakePHPのバージョンは、2.5.3です。
データベースは、MySQL 5.6.21 (AWSのRDSを使っています。)

2014年12月7日

アリバイ工作的な作業をする人はバイバイ

 アリバイ作り的な仕事の仕方をする人は、去ってほしい。
ここでいうアリバイとは、「ある作業をしたはいいが、正しくされていないことをいっています。
仕事(作業)したくない人は、「作業したフラグ」をオンにすることが仕事だと思っているようです。

 今回発生したことは、データコンバートの作業が必要なのですが、古いデータでデータコンバートをしたり、データの不備を指摘しているのにその改善をせずにそのまま使っているのです。
(そもそも、最新データを送ってきたのは、アリバイ工作的仕事をした人なのに…)
 10,000歩譲って、納期来てしまったから送ってしまっただったら、まだわかるような気もしますが(先に相談がない時点でNGですが)、既に納期なんてとうの昔に過ぎているのでぜんぜんダメです。

 なんか、嫌がらせをされているのでしょうか?

大抵、この状態で出てくる言い訳は、「ちゃんと納品したじゃないですか!!(怒)ただちょっと間違っていただけですよね!!(怒)」的な言葉になるんですよね。
 確かに間違うことはあると思います。人間ですし、ルーチンワークでもないので。
でも、限度ってものがあると思うんですよね。

 以前、ここにも書きましたが、間に合わないんだったら「早めに上司や、先方に相談すれば大抵のことは大きな問題にならない」んですよ。

2014年12月2日

名言ができたので発表します

発表しますっ!


「こたつの周りに使いたい道具を集めたようなシステムは破綻する」


どういう意味かというと

 今その瞬間にしたいことや欲しいものを周りに集めてしまうとどれが重要かわからなくなりやりたいことが直ぐにできなくなってします。
 もっと言うと別の人が使おうとした時に使えなくなる。
ただ散らかっているだけに見える。
 とか、なんでこんな機能がここにあるの?とかクライアントが言い始めることも。
(最近実際にあったんですよ。絶対必要だからと言っていたから頑張って設定して実装までしたのに。後で使う可能性があるから残しておいてと言っているが絶対に忘れる。)


 どうですか?こんなシステムを要求されたことは無いですか?

こんな場合は、やはり受けるのではなく、理論的に説明できるようになっている必要があります。
また、もしかするとそのクライアントの業務改善が先なのかもしれませんね。
実は、クライアントは自分たちの業務をわかっているようでわかっていないのです。
わかっているのは、自分の手の動かし方だけかもしれません。


 皆さん、気をつけてシステム開発をしましょう。

バイバイ!デスマーチ。

仕事を遂行することで一番大切なことは?

 皆さんは、人と仕事をする上で大切なことは何だと思いますか?
納期?クオリティー?楽しいかどうか?ちゃんと支払がされるかどか?犯罪ではないか?

どれも大切だと思いますが、一番大切なのは

『トラブルが発生した時に直ぐに関係者に連絡する』

だと思っています。

自分で解決できると思っても

こんなのは当たり前だと思いますが、なかなか世の中そうでもなかったりします。

  • 納期までにクオリティーの低すぎるものを納品してみたりとか
  • 遅れまくっているのに誰もなにも言わないことをいいことに黙っていたりとか
  • 更には、蕎麦屋の出前の今出ました的に、聞くと今やろうと思っていたとか
  • 客の担当が居なくなったから進まないだとか

こんなもんやらない理由だからいくらでも出てきます。

 トラブルの予兆があったら、直ぐに動けるように準備するとかいろいろすることはあると思うんですけどね。
 ここには、悪循環の種というのも存在します。
そのトラブルを発生させようとしている担当の上司が「トラブル的な話を聞きたがらない」雰囲気を出しているとそのことが上に伝わらなくなってしまします。

 こんなスパイラルです。(こんな絵色んな本に載ってますよ)

  1. 「トラブル」が発生しそうになる
  2. 解決できるかも(叱られるのが嫌)だから黙っておく
  3. トラブルが発生する
  4. 対応するために時間が足りなくなる
  5. 人を総動員して対応する
  6. 人が減った他のプロジェクトがトラブり始める
  7. 1.に最初に戻る


 さらに悪いことにその組織のトップがそれをやっていると、もうどうにもならない。
一人社長をするんだったら原因を他に転嫁するのではなく自分で先に動くようにしてほしいものです。

 直近のプロジェクトでそんなことが起きています。
「女性の社長で従業員がなし」そんなことはどーでもいいんです。
それを理由にできないんだったらさっさと会社を畳んで欲しいです。大きな問題にならないうちに。


さぁ、みなさんもトラブルの予兆を発表しまくりましょう!

 だって、発表して何もおきなかったら、おきなくてよかったねとなって終わりですもんね。
もし、やばそうだったとしても早めに対処できるし、手伝ってもらった人は他の人に手伝ってもらえるかもしれませんしね。