MacでPostfixを使う(開発用)

※開発用なので、localhostでしか動かしませんのであしからず。
 設定も、全然修正しておりませんのであしからず。

■MacでPostfixとQpopperの導入の理由
開発環境としてMAMPを使っているのだが、Windows & XAMPPのときと違い、メール送信を伴うプログラムが作成できなかったため。
ならMacにPostfixとQpopper入れてしまうという作戦で行く事に決定!

■実行環境
Mac OS X 10.6.1 Snow Leopard

■参考サイト
Postfix
Mac OS Xをメールサーバーにしよう-Postfixの設定-for Leopard
Qpopper
Qpopper – やってみなけりゃ気が済まない

■では、まずPostfixやってみる

  1. 実のところ、Postfixは最初から入ってるみたいだった。
    知らんかった。localhostでしか使わないので、設定もいじらず。
    ということで、ターミナルから起動させた。

    $ sudo postfix start
    
  2. 一応、動作確認を行った。
    $ telnet localhost 25
    
    #
    # 繋がってるのを確認できたら、終了 
    #
    
    quit
    
  3. メール送信してみる。yourusernameには、Mac上のユーザ名を書くこと。
    Subjectに件名を入力し、本文を記述。書き終わったら行の先頭でピリオドを入力してreturnキーを押す。

    $ mail yourusername
    Subject: test
    test
    test
    test
    . 
    EOT
    $ 
    
  4. メールが届いているか確認する。
    ユーザはメール送信先になっていたユーザであること。
    (上記でいえば、yourusername)

    $ mail
    
    #
    # メールが届いていれば、先ほど送信したメールが表示される
    # 確認後、mailを終了する
    #
    q
    $
    
  5. Postfixの自動起動を設定する。
    一旦、Postfixを停止する

    $ sudo postfix stop
    

    Macの場合、launchdというサービスを経由してデーモンを起動するらしい。
    なので、launchdにPostfixを登録するコマンドを実行する。

    $ sudo launchctl load /System/Library/LaunchDaemons/org.postfix.master.plist
    

うーん、とりあえず、Postfixはこれでよさそう。
次回は、Qpopperについて書きます。


青年社長を読んで

青年社長〈上〉 (角川文庫)
青年社長〈上〉 (角川文庫)
角川書店 2002-04
売り上げランキング : 58059

おすすめ平均 star
starワタミの渡邉美樹氏の、賛否両論ある半生
star感動した
star会社の立ち上げから数年間の苦労と成功談が描かれる

Amazonで詳しく見る by G-Tools

まだ上だけしか読んでないけど。
この本はワタミの会長である渡邉美樹さんがモデルのノンフィクション小説である。耳勉で、最後のほうに高杉良氏が渡邉美樹さんを語るようなところがあって、小説にしたというふうに言っていたので、渡邉さんの半生を知りたいという事で読んでみた。

大学在学中から、卒業してからも、非常に濃厚な時間の過ごし方をしている。その苦労たるや、半端ないと思う。なかなか真似できるものではないし、その姿勢を貫くことができたのも渡邉さんがいろんな本で語っているように「夢に日付を」付けていたからなんだろうと思う。挫折してしまっては、夢から遠のいてしまう。だからこそ諦めずに挑戦し続けたんだと。

併せて、「夢に日付を」という手帳術の本も読んでいたのだが(これは結構前にブックオフで買ってた)、タバコを止めるときの話が小説とシンクロしてて非常に腑に落ちた。やっぱり、イメージが大事なんだなぁと。渡邉さんも禁煙に何度も挑戦していたがことあるごとに失敗をしていた。禁煙したほうがいい理屈はわかっていて、禁煙し始めるのだが、理屈は理屈でひっくり返ってしまう。1本ならいいだろう…と。
しかし子供ができて、子供と一緒にいるときに子供がタバコの煙を吸ってしまうことをイメージして、感情として嫌だと思った。そのイメージが見えたとき、感情でイメージをとらえる事ができたとき、禁煙できるようになったと。

イメージし続ける姿勢や仲間からの信頼の厚さと、すごい行動力。見習うべきところがたくさんあると感じた。


自分だけでも生産的であり続けるべき

Joel on Software
Joel on Software 青木 靖

オーム社 2005-12
売り上げランキング : 68930

おすすめ平均 star
star会社のみんなに読ませたい
starお気に入りの本です
star本当のソフト開発を本当の意味でわかってもらうのにいい本

Amazonで詳しく見る by G-Tools

まぁ別に周囲が非生産的だと非難したいわけではなく、『自分は』生産的であろうと心がけること。綺麗ごとを並べたところで、人は動かない。何度も何度も熱く語って、自分がそのやり方を示し続け、教えて行く事によって徐々に浸透させていく。これは、自分にさしたる権限がないときの方法なんだけれども、短期的な効果はなくとも、じわじわと効いてくる。

自分にある程度の権限があるときや会議を行った上で行動するときには、スタートでみんなの意識合わせを行うことができれば、障害が少ないのかもしれない。まぁ熱心に語ることは必要だけれども。ただ権限がないとき、自分がいくら「こっちのほうが効率もよくて生産的だからみんなでそうしようぜ!」といったところで「また変な事をいってやがる。もしその方法がよかったとしても、みんな守りゃしないし、今のままでも十分だろ」ということになり、デスマーチを迎える。

リーダーでない人間がボトムアップでチームを作るのには、自分を貫き通して(意固地になるのと違うよ)、「みんなにとっていいことは、いいことなんだからやろうよ!」と訴え続けることが一番重要かなぁと思う。そうすれば、徐々に味方も増える。

まあ、リーダーシップのない人間がリーダーになったときが、一番の悲劇だ。そして、リーダーぶることがリーダーの仕事だと思ってると超やっかいですな。リーダーらしく振る舞うのと、リーダーぶるのは違いまっせ。


CakePHP:Security Componentでハマる(最中)

CakePHP1.2ガイドブック
CakePHP1.2ガイドブック
おすすめ平均
starsサンプルコードが提供されず不便
stars入門から応用まで対応

Amazonで詳しく見る by G-Tools

Security Componentを使っているのだけれど、全くわからず…。

// コントローラー
class EnqueteController extends EnqueteAppController{
  var $components = array('Security');

  function beforeFilter(){
    parent::beforeFilter();
    // CSRF&リロード対策
    $this->Security->requireAuth('post_data');
    $this->Security->blackHoleCallback = '_reload_error';
  }

  /**
   * アンケートの回答を受付
   */
  function post_data(){
    // 受付処理
  }

  function admin_add(){
    // 管理者用アンケート追加処理
  }

  function _reload_error(){
    // blackHole処理
  }
}

というふうに作っているのであるが、admin_addで、データをpostすると正常な場合は登録されるのであるが、わざとエラーを起こした場合に、validates()の結果をフォームに反映するのではなく、blackHoleCallbackで設定されている_reload_errorメソッドを実行されてしまう…。

validates()の結果がエラーになるとblackHole行きになるの???

1.2.5 SecurityComponentでハマったときに確認するポイント

を参照して、$form->create()と$form->end()を使っているのだが…。
(ちなみにtableFormヘルパーを作ってるので、$tableFrom->create()とかだけど)
$tableForm->submit(‘送信’);も使ってるけど。

だいたい$this->Security->requireAuth()にメソッド名加えてないんだから、Securityコンポーネントに関係ない処理になるんじゃないの?また、もしブラックホールに吸い込まれるんなら、この場合は正常なときも吸い込まれるんじゃないの?わけわかんないっす・・・。

とりあえず、Securityコンポーネントを外して実装してから考えようか(ガックリ…)
なんか実装がどんどん遅れていくなぁ。
フレームワーク使う目的って効率上げることなのになぁ。


CakePHP:昨日のプラグインのはバグじゃなかった

CakePHP1.2ガイドブック
CakePHP1.2ガイドブック
おすすめ平均
starsサンプルコードが提供されず不便
stars入門から応用まで対応

Amazonで詳しく見る by G-Tools

昨日、プラグインの$useTableが効いていないという投稿をしたけれど、あれはバグじゃなかった。なんてことはない。自分の勘違いだった。

class Enquete extends EnqueteAppModel{
  // var $hasMany = array('EnqueteAnswerList'); // ここがミス
  var $hasMany = array('Enquete.EnqueteAnswerList'); // プラグイン名.モデル名でつなげばOK

}

$useTableの問題だけかと思っていたら、明らかにモデルを見ていないような感じの処理を行ったので(画面が真っ白になったり、モデルクラスに作成したメソッドをコールしても呼ばれなかったり…)、CakePHPのCookBookのプラグインモデルのページを確認したらあっさりと答えが書いてあった。

バグ扱いしてすみません〜(T_T)

多分、昨日のもこれが原因だったんだろうな〜。