パン好きのエンジニア

今は主にCakePHPの話 と パン作りの話

bamixを買ったので、スフレチーズケーキに挑戦

■材料

  • クリームチーズ: 100g
  • ヨーグルト: 80g
  • 牛乳: 50g
  • 卵黄: Mサイズ2個分
  • 卵白: Mサイズ2個分
  • 砂糖: 60g
  • 薄力粉: 15g
  • レモン汁: 少々
  • バニラエッセンス: 少々

■手順

  • 容器に卵白を入れ、Bamix(ビーター)で泡立て、メレンゲを作る。砂糖は30gを3回に分けて使う。
  • 別の容器にクリームチーズと牛乳を入れ、Bamix(ミンサー)で混ぜ合わせる。
  • さらに砂糖、卵黄、レモン汁、バニラエッセンスを加え、混ぜ合わせる。
  • メレンゲを加えて、へらで軽く混ぜ合わせる。
  • 型に流し入れ、180度に温めたオーブンで30分焼く。

■感想

  • やはりメレンゲが難しい。まだ成功してない。
  • 1回目は全然膨らまなかったから、卵と薄力粉を増やした。
  • 見た目、卵焼きみたいになっちゃった。

CakePHP1.3 + Auth (アクセス制御 認証編)についてのメモ

■環境

  • VirtualBox 4.0.0
  • ホストOS: Windows7
  • ゲストOS: CentOS 5.5
  • WebServer: Apache
  • 言語: PHP 5.1.6
  • IDE: Eclipse
  • バージョン管理: SVN

■CakePHP初期設定

  • CakePHPインストール
    • 普通にCakePHPをダウンロードして配置
  • CakePHP初期設定
    • Security.saltとSecurity.cipherSeedを変更
    • database.php設定など

■データベース/テーブル作成

  • データベースを作成

    % echo “CREATE DATABASE actrl;” | mysql -u root

  • テーブルを作成

    % mysql -u root actrl
    mysql> CREATE TABLE users (
    id integer auto_increment,
    username char(50),
    password char(50),
    PRIMARY KEY (id)
    );

■UserモデルCRUD作成

  • UserモデルCRUD作成

    /path/to/cake/console/cake bake

  • モデル/コントローラ/ビューを作成

■Authコンポーネント設定

  1. UsersControllerにAuth追加
    	var $components = array('Auth');
    
  2. 必要なメソッド追加
    	function login() {
        }
    
        function logout() {
            $this->redirect($this->Auth->logout());
        }
    
  3. View(app/views/users/login.ctp)追加
    File: app/views/users/login.ctp

    <?php
        if  ($session->check('Message.auth')) $session->flash('auth');
        echo $form->create('User', array('action' => 'login'));
        echo $form->input('username');
        echo $form->input('password');
        echo $form->end('Login');
    ?>
    

■アカウント追加

  1. 一時的に認証許可を行う
    	function beforeFilter() {
            $this->Auth->allow('index','add');
    	}
    
  2. 画面よりアカウント追加を行う

    http://localhost/users/

  3. 一時的な許可(beforeFilter)を削除

■ソースコード

  1. 最終的にソースコードは以下のようになります
  2. モデル
    File: app/models/user.php

    <?php
    class User extends AppModel {
    	var $name = 'User';
    	var $displayField = 'username';
    }
    ?>
  3. コントローラ
    File: app/controllers/users_controller.php

    <?php
    class UsersController extends AppController {
    
     var $name = 'Users';
     var $components = array('Auth');
    
     function beforeFilter() {
    //        $this->Auth->allow('index','add');
     }
    
     function login() {
     }
    
     function logout() {
            $this->redirect($this->Auth->logout());
     }
    
     function index() {
      $this->User->recursive = 0;
      $this->set('users', $this->paginate());
     }
    
     function view($id = null) {
      if (!$id) {
       $this->Session->setFlash(__('Invalid user', true));
       $this->redirect(array('action' => 'index'));
      }
      $this->set('user', $this->User->read(null, $id));
     }
    
     function add() {
      if (!empty($this->data)) {
       $this->User->create();
       if ($this->User->save($this->data)) {
        $this->Session->setFlash(__('The user has been saved', true));
        $this->redirect(array('action' => 'index'));
       } else {
        $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
       }
      }
     }
    
     function edit($id = null) {
      if (!$id && empty($this->data)) {
       $this->Session->setFlash(__('Invalid user', true));
       $this->redirect(array('action' => 'index'));
      }
      if (!empty($this->data)) {
       if ($this->User->save($this->data)) {
        $this->Session->setFlash(__('The user has been saved', true));
        $this->redirect(array('action' => 'index'));
       } else {
        $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
       }
      }
      if (empty($this->data)) {
       $this->data = $this->User->read(null, $id);
      }
     }
    
     function delete($id = null) {
      if (!$id) {
       $this->Session->setFlash(__('Invalid id for user', true));
       $this->redirect(array('action'=>'index'));
      }
      if ($this->User->delete($id)) {
       $this->Session->setFlash(__('User deleted', true));
       $this->redirect(array('action'=>'index'));
      }
      $this->Session->setFlash(__('User was not deleted', true));
      $this->redirect(array('action' => 'index'));
     }
    }
    ?>
    
  4. ビュー(login.ctpのみ記載)
    File: app/views/users/login.ctp

    <?php
        if  ($session->check('Message.auth')) $session->flash('auth');
        echo $form->create('User', array('action' => 'login'));
        echo $form->input('username');
        echo $form->input('password');
        echo $form->end('Login');
    ?>
    

今日は、ゆずベイクドチーズケーキを作ってみました。

いつもの材料と手順ですが、レモン汁と一緒に、「ゆずの皮」を少し入れてみました。

ちょっと食べてみましたが、おいしかったです。

だいぶ手慣れてきたので、40分くらいあれば作れるようになってきました。
(オーブンに入れるまで)

あとは色々バリエーションを覚えたい。

MySQLインストール&設定についてのメモです。
※ 既に書いていたかもしれないけど。。。

■環境

  • VirtualBox 4.0.0
  • ゲストOS: CentOS 5.5
  • MySQL: 5.0.77

■MySQLインストール&設定

  • yumでインストール
  • # yum -y install mysql-server

  • 設定ファイル
  • # diff /etc/my.cnf.org /etc/my.cnf
    7a8
    > default-character-set = utf8
    15a17,19
    >
    > [mysql]
    > default-character-set = utf8

  • 自動起動設定
  • # chkconfig mysqld on

  • 起動
  • # /etc/init.d/mysqld start

メモ
– 以下も追加

yum install php-mysql

今更ながらだけど、今の開発環境をメモ程度に整理しておきます。
VirtualBox + CentOS + Apache + PHP + Eclipse + SVN

■環境

  • VirtualBox 4.0.0
  • ホストOS: Windows7
  • ゲストOS: CentOS 5.5
  • WebServer: Apache
  • 言語: PHP 5.1.6
  • IDE: Eclipse
  • バージョン管理: SVN

■VirtualBoxインストール&設定

  1. CentOS5.5 on VirtualBox4.0を参考に

■Apache

  1. 基本的には初めからインストールされているみたい
  2. もし入ってなければ以下でインストール
  3. yum -y install httpd

  4. 必須ではないが自動起動を設定
    	# chkconfig --list httpd
    	# chkconfig httpd on
    	# chkconfig --list httpd
  5. 設定変更

    # diff httpd.conf.org httpd.conf
    327c327,328
    < AllowOverride None — > #AllowOverride None
    > AllowOverride All

■PHP

  1. 以下でインストール

    yum -y install php

  2. 他にも必要な設定があるかも知れないけど、そこは後で追加

■Eclipse

  1. Eclipseをインストール(これはどこかを参考に)
  2. VirtualBoxの共有フォルダでEclipseのフォルダをVirtuaBoxから見れるように設定

■SVN

  1. SVN+Eclipseを使って開発を始める手順を参考に

VirtualBox関連の設定が一段落したので、ようやく目的の[Redmine]をインストール。

探していたら分かりやすいサイトがありました。

Redmine 1.0をCentOSにインストールする手順

この手順の通りにインストールしたら何の問題もなくインストールできました。

インストールがうまくいったら
ID: admin
Pass: admin
でログインしてパスワードを変更できます。

一点だけ気になったのは、httpd の configtest で警告が1つ。

/etc/init.d/httpd configtest
httpd.worker: apr_sockaddr_info_get() failed for XXXXXX

とりあえず一段落。

VirtualBox を便利に利用する為に「Guest Additions」を設定しました。
一番使いたかったのは「共有フォルダ機能」
その設定方法も書いておきます。

■環境

  • VirtualBox 4.0.0
  • ホストOS: Windows7
  • ゲストOS: CentOS 5.5

■Guest Additions設定

  1. HostOSのVirtualBoxウィンドウ=>「デバイス」=>「Guest Additionsのインストール」を選択。
  2. GuestOSのターミナル上で下記を実行。
    # sh /media/VBXADDITIONS_4.0.0_69151/VBoxLinuxAdditions.run
  3. run実行時にエラーが出る場合は、他のモジュールが足りない場合が多い。大抵はgcc, make, kernel-devel。エラー文言に合わせて適宜実行。
    # yum install gcc
    # yum install make
    # yum install kernel-devel

○参考
http://labs.uechoco.com/blog/2008/01/virtualboxfedora_7guestguest_additions.html

http://www.rokujyouhitoma.com/javapg/2009/01/virtualboxguest-additions.html

http://nplll.com/mutter/archives/2009/10/centoswith_virtualbox.php

■共有フォルダ設定

  1. VirtualBoxで対象仮想マシンの[設定]を開く
  2. [共有フォルダ]で右にある追加のアイコンをクリック
  3. 適切なフォルダを指定
    例えば “share”という名前で
  4. 仮想マシンを起動
  5. マウントポイントを作成
    例) mkdir /mnt/share
  6. マウント
    mount -t vboxsf share /mnt/share
  7. mountコマンドを”rc.local”に追加

VirtualBox でのネットワーク設定について。
ネットワークまわりの知識が薄いので、これが結構大変でした。

内容はこんな感じです。

  • VirtualBoxネットーワーク設定
  • IPアドレス固定化

■環境

  • VirtualBox 4.0.0
  • ホストOS: Windows7
  • ゲストOS: CentOS 5.5

■VirtualBoxネットーワーク設定

○目標

  • ゲストOS からインターネットに繋がる
  • ホストOS からゲストOS に繋がる
  • インターネットからゲストOS には繋がらない
  • ゲストOS の IP が固定できる

○手順

  1. VirtualBoxを起動します。
  2. [設定]アイコンをクリック
  3. [ネットワーク]をクリック
  4. 以下の設定にする
    アダプタ1: NAT
    アダプタ2: ホストオンリーネットワーク(これを追加)

○参考
http://d.hatena.ne.jp/p4life/20090413/1239624784

■IPアドレス固定化

  1. 仮想マシンを起動しrootでログインする
  2. [システム]→[管理]→[ネットワーク]を起動
  3. 「休止中」となっている”eth1″を選択し[編集]
    ウィンドウ全体が表示しきれていない場合は、[設定]→[フォント]でアプリケーションのフォントを小さくする。
  4. [固定のIPアドレス設定]を選択し、以下の情報を入力
    アドレス: “192.168.56.101”などのIPアドレス
    サブネットマスク: “255.255.255.0”
    デフォルトゲートウェイ: 入力無し
    ※ アドレスはホストOSで”ipconfig”と入力して表示される”192.168.XXX.1″のXXXの部分を使う。
  5. 休止中となっている”eth1″を選択し、[起動]をクリック
  6. コマンドで”ifconfig”を実行して、今回設定したアドレスが表示されれば成功

○参考
http://www.knowd.co.jp/yamazaki/index.php?q=node/169

■IPアドレス固定化(コマンドライン)

コマンドでIPアドレスを固定するには以下のようにする。

  1. 以下のファイルを編集する

    /etc/sysconfig/network-scripts/ifcfg-eth1

  2. 変更点は(diff)以下の通り

    — /tmp/ifcfg-eth1 2011-01-10 15:22:01.000000000 +0900
    +++ ./ifcfg-eth1 2011-01-10 15:22:34.000000000 +0900
    @@ -1,5 +1,11 @@
    # Intel Corporation 82540EM Gigabit Ethernet Controller
    DEVICE=eth1
    -BOOTPROTO=dhcp
    +BOOTPROTO=none
    ONBOOT=yes
    HWADDR=XX:XX:XX:XX:XX:XX
    +NETMASK=255.255.255.0
    +IPADDR=192.168.56.108
    +TYPE=Ethernet
    +USERCTL=no
    +IPV6INIT=no
    +PEERDNS=yes

VirtualBox で 仮想マシンをコピーする方法を試してみました。

前のバージョン同様、コマンドでしかできないようです。
そして前のバージョンまでは “clonevdi” だったコマンドが
4.0では “clonehd”というコマンドに変わったようです。(ヘルプより)

書式は以下の通り

VBoxManage clonehd         <uuid>|<filename> <outputfile>
                           [–format VDI|VMDK|VHD|RAW|<other>]
                           [–variant Standard,Fixed,Split2G,Stream,ESX]
                           [–existing]

試した手順はこんな感じです。

■環境

  • VirtualBox 4.0.0
  • ホストOS: Windows7
  • ゲストOS: CentOS 5.5

■クローン作成

  1. コピーしたい元VDIファイルを特定します
    たぶん以下の場所にあります。
    C:\Users\${UserName}\VirtualBox VMs\${HostName}\
    分からない場合は、VirtualBoxを立ち上げて該当ホストの[設定]→[ストレージ]で確認
  2. コマンドプロンプトを起動
    Windowsの[アクセサリ]の中にあります。
  3. コマンドプロンプトで以下のように実行

    cd ${PathToVDI}
    “C:\Program Files\Oracle\VirtualBox\VBoxManage.exe” clonehd ${FromVDI} ${OutFile}
    ※ [“]部分はコピペの後で修正してください。

■新しい仮想マシンでの利用

  1. VirtualBoxを起動
  2. 新規マシンを作成
  3. 「仮想ハードディスク」で「既存のハードディスクを使用」を選択
    – 前の手順でクローン作成したファイルを指定
  4. 出来上がった仮想マシンを起動

■cloneしたVDIで起動後の作業

  • ネットワーク関連を再設定
    • VirtualBox側のアダプタ追加
    • 固定IPアドレスの再設定
      clone作成時に作成される”*.bak”ファイルは削除してOK

    • 共有フォルダ設定
  • ホスト名を変える
  • (必要あれば)sudo設定

■追加情報

  • cloneしたVDIで作成した仮想マシンでは、ホスト名やネットワークまわりを再設定する必要があるようです。
  • 作成したVDIファイルを別ディレクトリに移す時は、一度VirtualBoxを再起動しないと、「ハードディスクの追加」時にエラーが出るようです。

早速ですが、VirtualBox4.0にCnetOS5.5をインストールしてみました。

■環境

  • VirtualBox 4.0.0
  • ホストOS: Windows7
  • ゲストOS: CentOS 5.5

■仮想マシン作成手順

  1. VirtualBoxを起動します。
  2. [新規]というアイコンをクリック
  3. [次へ]をクリック
  4. 「仮想マシン名とOSタイプ」という画面では以下のように入力し[次へ]
    名前: 適当に好きなマシン名をつけてください
    OSタイプ: “CentOS”が選択肢にないので、適当に
    ※ ここでは以下のように選択しました。

    • オペレーティングシステム:、”Linux”
    • バージョン: “Red Hat”

  5. 「メモリ」画面
    特に気にせず推奨サイズのままで。
  6. 「仮想ハードディスク」画面
    [新規ハードディスクの作成]を選択し[次へ]
  7. 新規仮想ディスクの作成では以下のように選択
    • 可変サイズのストレージ
    • 「場所」や「サイズ」は指定されたまま
  8. 「概要」画面
    最後に[完了]をクリックして、仮想マシン作成は完了
    ※ ただし、これだけだとOSが無いので起動しません。

■CentOSインストール手順

  1. まずは、CentOSインストール用ISOファイルをダウンロード

    http://ftp.riken.jp/Linux/centos/5/isos/i386/

    ここでは”CentOS-5.5-i386-netinstall.iso”というファイルをダウンロード!

  2. 作成した仮想マシンを起動すると、ISOファイルの選択ができるので、さっきダウンロードしたファイルを選択する。
  3. ISOファイルを見れるように設定する前に一度起動してしまった場合は以下のようにする。OSをインストールしたい仮想マシンを選択した状態で[設定]アイコンをクリック
    – 設定画面が立ち上がる。
    – 左にある[ストレージ]をクリック
    – [IDEコントローラ]の右にあるCDROMのアイコン(左側)をクリック
    – さっきダウンロードしたファイルを設定する
  4. CentOSのインストーラが起動する。
  5. インストールの途中では以下のように選択していく。
    • 言語選択: Japanese
    • Keyboad Type: jp106
    • Installation Method: HTTP
    • Confiure TCP/IP: IPv6 support のチェックは外す
    • FTP site name: ftp.riken.jp
    • CentOS directory: /Linux/centos/5/os/i386/
  6. うまくいけばインストールが始まる。
    ※ 2~3分くらい、じっと待つ。
  7. 以下の画面が始まれば日本語でインストールを進めていきます。
  8. [次へ]をクリックすると、いきなり以下の画面が出ますが落ち着いて[はい]を選択
  9. 途中では以下のように選択していく。(特に指定しないものはそのままで)
    – ホスト名: 「手動設定」にして適切な名前に(後でも変更できるけど)
    – rootパスワード: 好きなパスワードを設定する。(設定したパスワードを忘れてはいけない)
  10. 以下の画面が出たら一安心して[次]をクリック
  11. インストール中の画面
  12. CentOSインストール完了!
  13. ISOファイルを切り離して再起動
  14. 追加設定の画面が立ち上がります。
  15. 以下のように設定します。
    ファイアウォール: 無効
    SELinux: 無効
    ※ 上記の2つは必要であれば(インターネットから見えるとか)適切に設定してください。
    日付と時刻: ntpd(ネットワークタイムプロトコル)を有効に
    ユーザーの作成: 必要があれば作成

  16. 最後に再起動してrootでログインし”yum update”して完了