2011年12月17日土曜日

CakePHPによる実践Webアプリケーション開発

ログアウトがうまくいかない

 毎度の事ながら、書籍の通りにコーディングしてもうまくいかない機能が発生する。

 CakePHP初心者の私には、解決するのに時間がかかって困る。 (>_<)
 しかし、結果的には「CakePHPの辞典」やら別の実習書籍やらネットでググったりして少しづつ理解を深めていっているようだが... (・ ・?)

今回のお題はこちら...

action == 'add' || $this->action == 'edit') {
            $this->AppAuth->authenticate = $this->User;
        }
        if($this->User->findCount() == 0) {
            $this->AppAuth->allow('add');
            if($this->action != 'add') {
                $this->redirect('add');
                exit;
            }
        }
        return parent::beforeFilter();
    }
    function login() {
    }
    function logout() {
        clearCache('element_'.$this->AppAuth->user('id').'_action_menu', 'views', '');
        $this->redirect($this->AppAuth->logout());
    }
}
?>
 上記だけの抜粋での説明には無理があるかと思いますが、default.ctp にてログアウトを行うリンクを貼り、上記のlogoutが実施されるという手はずになていますが、ログアウトが行われない。
 ここで言う「ログアウトの成功」は、現在表示されている画面から「ログイン画面」に切り替わることを言います。もちろんセッション情報が解除(削除されていることは言うまでもなく前提条件になります。

 なかなか解決できずに困りググっていたところ「CakePHPによる実践Webアプリケーション開発」のサポート」サイトでログイン関連のスレッドがあったのでその内容を参考にさせてもらったところログアウトが実現できるようになりました。その方法は、下記のように beforeFilter() の先頭に $this->AppAuth->logout(); を追記するという内容です。

変更後の内容は下記のとおりです。
AppAuth->logout();
        if($this->action == 'add' || $this->action == 'edit') {
            $this->AppAuth->authenticate = $this->User;
        }
        if($this->User->findCount() == 0) {
            $this->AppAuth->allow('add');
            if($this->action != 'add') {
                $this->redirect('add');
                exit;
            }
        }
        return parent::beforeFilter();
    }

  ‥‥‥ 省略 ‥‥‥

}
?>

 上記の設定でログアウトはできるようになったが、ログアウト以外を選択してもログアウトされてしまう... 解決になってない。orz

ネットワークスペシャリスト試験 結果

 昨日、2011年10月16日に受験したネットワークスペシャリストの結果が発表された。試験勉強は試験直前に10日程度勉強したが、勉強不足と思いながら受験したが、試験内容は思っていたよりも簡単に感じ特に午後Ⅱについてはかなり上出来でした。これば結果が楽しみと考えていたら...

 なんと、結果は「不合格」という内容でした。

 試験ではOSPFやBGP-4の知識に不安があったのですが、実際の試験ではこの部分の割合が少なかったので「ヤッター」なんと心の中で喜んでいた次第でしたが、実際には午後Ⅱでなく、午後Ⅰで得点が 2点 足りずに不合格になっていました。

 まさかの午後Ⅰの得点不足で、午後Ⅱの出来を確認することも出来ず不戦敗のような感じです。
 結果は下記の通りで...

 この内容を戒めにして、今後は計画的に知識の吸収と確認を実施して合格を勝ち取ることにするぞ! (>_<)

2011年12月14日水曜日

ランニング不調だなぁ~

10月以降になってから、ランニングを中止(雨天等を含めて)する日が増加傾向にある。
 ここ数ヶ月は、「腰痛」やら「こむら返り」やらでどこかが痛んでいることが多いので少し天気が悪いとすぐ弱気になり危険(転ぶと)を意識してか、それとも深層心理でランニングを拒絶しているのか...orz

ここ数ヶ月では、下記のようにランニングを中止する日が増加している。
※気を引き締めねば...
・7月→1日
・8月→4日
・9月→1日
・10月→6日
・11月→10日
・12月→3日(12月14日までで)

この5年間では、多くても月に5日以内で推移していたのだが、先月と先々月はちょっと休み過ぎだったな...

ちなみに、10月10日から距離を延ばして6キロ強にした。
ランニング前には、腕立て伏せを30回、ランニング後には腿上げを250回と...鍛えているつもりなのだが...
最高タイム:29分01秒
目標タイムを28分台にしてみたが、未だ達成できず...orz
なんか、寒くなるにつれてタイムが出なくなってきている。
9月までは、5キロ強であったが、現在の5キロ強時点でのタイムと比較しても今よりも1分以上早く走れていた。9月までの調子なら6キロ強でも28分は楽勝と考えていたのだが...

とりあえず、28分を目標に頑張ろう!εε=ε=εε=┏( >_<)┛

2011年12月10日土曜日

Linux ファイルシステムの検査と修復について

 このLinuxマシンのディスクを交換してから初めておかしくなった。(このマシンでは初めてかも)  前回は、ディスク交換前のディスクでフリーズして再起動した際にディスクが修復できなくなった。
 現象としては、画面がブラックアウトしてキーボードやマウスを操作しても変化なし。しかし、ディスクランプや点灯しており、キーボードを打つと反応している風にも見えるが、画面は回復せず。
  ↓↓↓
仕方なくリセットボタンを押して再起動を実施する。
各種サーバー(DB・samba・httpd...)などが起動していので、案の定ジャーナルファイルの異常が表示され...

リセットボタンで強制終了させたので、再起動時にファイルシステムの検査と修復が行われているが、ふとファイルシステムのチェックについて確認をすることにした。

ファイルシステムのチェック

 ファイルシステムをチェックするには、対象のファイルシステムをアンマウントするか読み込み専用でマウントしておく必要がある。

fsck [-ANRTV] [-s] [-t fstype] device
オプション 内容
-s 複数のファイルシステムに対し、順を追って順々に処理する
-t tstype ファイルシステムを指定する
-A /etc/fstabに記述されているすべてのファイルシステムの検査と修復を行う
-N 実際には実行せず、実行内容だけを表示する
-R ルート・ファイルシステム以外の全てのファイルシステムの検査と修復を行う
-T 起動時にタイトルを表示しない
-V fsckから起動されるコマンドなどの詳細な情報を表示する
※ファイルシステムごと詳細に指定したい時には、下記のようなコマンドが用意されている。
 fsckは、実際にはファイルシステムごとに用意された下記コマンドのフロントエンドになっている。
 e2fsck(ext2/ext3)
 reiserfsck(reiserFS)
 xfs_check(XFS)

起動時に fsck が実行されるタイミングについて

【/etc/fstab】

LABEL=/                 /                       ext3    defaults        1 1
LABEL=/tmp              /tmp                    ext3    defaults        1 2
LABEL=/var              /var                    ext3    defaults        1 2
LABEL=/var/log          /var/log                ext3    defaults        1 2
LABEL=/usr              /usr                    ext3    defaults        1 2
LABEL=/usr/local        /usr/local              ext3    defaults        1 2
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/opt              /opt                    ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-hda12        swap                    swap    defaults        0 0
  • [フィールド1]
    マウントするブロックデバイスを記述します。 (/dev/sda1など)
  • [フィールド2]
    マウントポイント (/bootなど)
  • [フィールド 3]
    ファイルシステムのタイプ (ext3, nfs など)
  • [フィールド 4]
    マウントオプション (defaultsなど nfsの場合はnfs(5)を参照)
  • [フィールド 5]
    dumpコマンドの実行対象とするかどうか。不要の場合には0を指定。
  • [フィールド 6]
    システム起動時にfsckチェックする順番。ルートファイルシステムは必ず1にしてください。fsckチェックをしない場合は0を設定します。通常はルートファイルシステムに1、それ以外を2にします。

2011年12月6日火曜日

肩こり

先週から左肩の肩こりがする。先週は、ランニング中にも左肩から左腕が重痛いような感じでとても走りづらかった。
まくらの高さのせいかと思い、高さをを変えてところ先週末からかなり治まってきたが、また一昨日から発症してきた。
まくらのせいではなく、寝相が悪いのかも...
寝ている間に変な体勢になっているのかもしれない...
しかし、これだと対応のしようがないなぁ〜(ーー;)

2011年12月5日月曜日

CakePHPによる実践Webアプリケーション開発

何度も記載しているが、書籍の通りに記述しても実行できない箇所が多数あり、なかなか最後までたどり着けない。
 サポートのサイトを閲覧しても、こちらの疑問箇所はひとつだけ掲載されていたが、その内容はあくまでもcakephp1.2のみに通用する内容のようで、cakephp1.3以降で試す場合は、多数の箇所で問題にブチあたります。
 私と同じような内容で悩む方の助けになれば幸いですが...

関連(HABTM)を検索(find)する部分が動かない件について

書籍(CakePHPによる実践Webアプリケーション開発)では、下記のようにHABTMを検索するように記載されていましたが、エラーになってしまいます。

$user_ids = $this->Group->Belong->find('list', array(
        'conditions'=>array('Belong.group_id'=>$group_id), 
        'fields'=>array('Belong.user_id','Belong.user_id'), 
        'group'=>'Belong.user_id'));
エラー内容(habtmを検索できない)
Notice (8): Undefined property: Group::$Belong [APP/controllers/schedules_controller.php, line xx]

Fatal error: Call to a member function find() on a non-object in /var/www/cakephp/calendarnote/controllers/schedules_controller.php on line xx 
上記のようにエラーになるなので、habtmの関連モデル(Belog)を検索するように変更した。
$this->Group->Belong->find
$this->Belong->find
$user_ids = $this->Belong->find('list', array(
        'conditions'=>array('Belong.group_id'=>$group_id), 
        'fields'=>array('Belong.user_id','Belong.user_id'), 
        'group'=>'Belong.user_id'));
上記の変更で、無事に検索したいデータが検索されるようになった。
めでたし、めでたし...ヘ(ё_ё)ノ\ ワーイ

2011年11月29日火曜日

CakePHPによる実践Webアプリケーション開発

バージョンによる違いで時間を浪費

書籍では1.2の環境で行われているため、バージョンの違いによる変更箇所で時間を浪費する。
書籍とおりに行ってみて動かない場合は、ほぼバージョンアップによる変更があった機能である。(※しかし、コーディングミスもままあるけど..「('ヘ`;\ )

Html->link()

(1.2)
 $html->link($title, $url, $htmlAttributes, $confirmMessage, $escapeTitle)
   ↓
(1.3)
 $html->link($title, $url, $options, $confirmMessage)
上記のように変更になった。

リンクの付いた画像をHtmlヘルパーで表示する方法も下記のような変わる。
(1.2)
 $html->link($html->image('sample.png'),array('action' => 'hoge'), null, null, false);
 ※1.2では、linkの内容でimgのようなhtmlタグを出力する場合は、5つ目のパラメータをfalseにする。
   ↓
(1.3)
 $html->link($html->image('sample.png'), $url, array('escape' => false));
 ※1.3では、$options['escape']のようにしてエスケープしてimgタグを出力する。