2012年7月31日火曜日

VirtualBoxで開発環境構築 VirtualBoxのインストール

インストールするアプリケーション

  • VirtualBox
  • CentOS
  • Apache
  • symfony

参考にさせてもらったサイト


詳しい手順が載ってます
感謝です

VirtualBoxのダウンロード

  • 公式サイトでVirtualBoxをダウンロード
  • ダウンロードしたファイルを実行
    • インストールウィザードでsetupする
    • 今回、最新版をインストールしようとしたら失敗した(理由不明)ので3.2をインストールした

VirtualBoxで開発環境構築 CentOSのインストール につづく

2012年7月25日水曜日

2012年07月25日 ブログにコードを表示してみる

ブログにコードを貼り付けようと思い立つ
色々ググると参考サイトが出て来る

すぐに忘れる脳みそのためのメモ
Blogger でソースコードに色付けをする - google-code-prettify

求めてる内容そのままだった……(感謝)

bloggerにコードをきれいに表示するには
  googleサイト
  google-code-prettify
を利用して
  preタグ
を使う

詳しくは上記のサイトの通りやれば出来るので、以下備忘録的な何か
ざっとした流れ
google-code-prettifyをダウンロードして自分の環境下で解凍
●googleサイトで自分のサイトを作る
☆テンプレートをサイトキャビネットにする?→サイトのテンプレート内を探してた(そこじゃなかった)
☆新しいページを作成→テンプレートでファイルキャビネットを選べる
●解凍したgoogle-code-prettifyフォルダ内にあるprettify.jsとprettify.cssをファイルキャビネットにアップロード
☆.jsファイルがたくさんあるけど、他のは今のところ必要なさそう
●bloggerテンプレート>HTML の編集でhtmlをカスタマイズ
☆直前に記述

<!-- google-code-prettify -->
<link href='https://sites.google.com/site/サイト名/ページ名/prettify.css' rel='stylesheet' type='text/css'/>
<script src='https://sites.google.com/site/サイト名/ページ名/prettify.js' type='text/javascript'/>
<!-- /google-code-prettify-->

☆の中に記述(既にclassとかが居るけどねじ込む)

<body expr:class='"loading" + data:blog.mobileClass' onload='prttiyPrint()'>

●bloggerテンプレートデザイナーでcssを追加
pre{
overflow: auto;
}
☆autoじゃなくてscrollにしたら縦スクロールバーが主張して野暮ったくなったのでautoがいいかも


導入した感想:
少し見た目を変えたら追記する予定
現状だとちょっと無骨なので、コードが書いてありますよ!という感じにしたい

追記:
<や>をそのまま文字として表示する方法
HTMLタグをエスケープしてないから表示できてなかった(^p^)
さくらエディタで<を&lt;に全部置換して完了

2012年7月24日火曜日

2012年07月24日 オライリーEbookを購入

オライリーEbookを購入



両方とも多分初級者向けな感じ
値段も少し安い、ボリュームも気が遠くなるほどでもないっぽいので購入
Webエンジニア養成科を修了した人にとっては、phpの復習と補完にちょうどいい内容に感じる
上級過ぎず入門書過ぎず、即使えるプラスαが習得できると思われる
とにかくphpを使って動かすことから、もう少し体系的な学習とプログラミングという概念の視野を広げるために丁度良いんじゃないかなという感想

オライリーのEbookストアで購入すると、どちらも1512円(日本語)
iphoneアプリでは600円(英語)

iphoneアプリ版を購入すれば、アプリをepub化してipadで読める
perl - O'ReillyのiPhoneアプリ本からepubをぶっこぬく
↑このあたりを参照

英語を読める人にとっては全部買うでしょレベルかもしれない
(英語をガチで学ぶ決意をするほどのお得感……ぐぬぬ……)

EbookはDRMフリーなのでいろんな端末で読めてとても良いし、
データが消えても再ダウンロードが可能
PDFなのがちょっと微妙かなという程度

アプリをepub化してibooksの辞書機能も使えるようになるっぽい
(設定をいじらなければ英英辞書、どこかをいじれば英和にできるっぽいので慣れてきたらチャレンジだ)

とりあえずスキルが初級レベルなので日本語版と英語版の両方を買って専門用語や言い回しに慣れるとかがいいかもしれない
今はまず、プログラミングのスキルアップが重要であるとの判断
(日本語版と英語版の差額がラーメン一杯分なのでマジでくやしい)

とにかくガチで英語を学ぶ理由も出来たのでよしとする

2012年7月20日金曜日

2012年07月20日 講義103日目(最終日)

2012年07月20日
講義103日目
------------------------------1H------------------------------
★ショッピングカート
●仕様
・カートの情報は全て$SESSION["cart"]内で管理
・$SESSION["cart"]内に商品情報を要素として持つ配列を生成する
・$SESSION["cart"][]内の商品情報に与える要素(テーブル構成により変動)
商品ID
商品名
価格
注文数
画像ファイル名
・カートの中身一覧ページ、他のページから参照できる簡易表示部品の二点を作成する
・中身一覧ページにアクセスする際にカート内に情報を追加する
・中身一覧ページでは、テーブル内のプライマリーなキーとして「ID」を
    注文数として「quantity」を添え字としたデータをgetで渡すものとする
    いずれかが存在しない場合はカート内に情報を追加しない
・中身一覧ページで在庫数を変えられるようにするカート外で行うべき処理
・既にカート内に存在する商品の場合追加しない
・カート外で行うべき処理
    ユーザが「カートに入れる」行動を取る際、在庫を上回る数を選択しないように導くこと
    注文を確定させた段階で在庫量カラムの数を減らすこと
    在庫を上回る注文であった場合にエラーとなること(※)
    テーブルに存在しないIDであった場合にエラーとなること(※)

※他のページでも行う可能性のあるエラーチェックのため関数化しておく
------------------------------2H------------------------------
★ショッピングカート
●cartの作成
①カートが存在しなければ初期化する
②まずはフォームから送られてきた「ID」「stock」を受け取れる
③エラーチェックを行う
    IDとストックいずれかがないなら追加しない
    既にカート内に存在する商品の場合追加しない
    存在しないIDなら追加しない
    在庫を上回るstockなら追加しない
④問題なければDBからデータを取得
⑤カートに入れる
⑥最後にカートの中身を表示
・テンプレートに書いていく
------------------------------3H------------------------------
★ショッピングカート
●cart
・削除変更
  セッションを書き換える
  再びcartページに戻ってくる
------------------------------4H------------------------------
★環境のバックアップ
●VMware上のファイルを退避する
・FFFTPで接続し、一旦ローカルPCに落としてくる
(Cドライブ直下などに、退避用のフォルダを作成しておく)
・データベースのデータは、phpmyadminを使うか、mysqldumpコマンドを使ってエクスポートする
・rootユーザで作ったファイルは、FFFTPでは触れないで、一旦puttyでログインし、
  /home/userの下に移動してからFFFTPで取得する
・カレントディレクトリ下にフォルダやファイルが大量にあるなら、
  zipコマンドやtarコマンドで圧縮してから移動すると良い
  rootユーザのカレントディレクトリごと圧縮するにはrootになる
  zipコマンドでの圧縮例
  su
  zip -r /home/bk_from_vmware.zip /home/user
  mv /home/bk_from_vmware.zip /home/user
・.htaccess や .bash_profileなどのファイル名の頭に
  ピリオドの付くファイルは隠しファイルなので気をつける
●ローカルPCのファイルを退避する
授業で使用したPC内の退避ファイル例
・VMwareから退避したファイルたち
・インストールしたツールたち
・C\pleiades 下のプロジェクトや設定ファイル
・IDmanagerの保存ファイルや、パスワードはサービスごとに多岐にわたるので
  情報を紛失するとログインができなくなるため注意
------------------------------5H------------------------------
★RSS
●XMLの生成
生成ツールを使う
crontab で自動化
------------------------------6H------------------------------
★修了式
●コマンドプロンプト
・ftpコマンド
 ftp接続ができる
ftp open IPアドレス
対象のIPアドレスに対して接続することができる
put getで送受信が可能
ファイル単位でしか送受信できないので圧縮するなどしたファイルを送受信する
・sshコマンド
とかもある
●PHPの資格取得などで体系的に学ぶことも可能になるので受けてみるのもいいかもしれない
-----------------------------memo------------------------------

2012年7月18日水曜日

2012年07月19日 講義102日目

2012年07月19日
講義102日目
------------------------------1H------------------------------
★リファクタリング
●googleSpreadSheetへの接続サポートclass
・メンバ変数はプロテクテッドがいい(プライベートも状況によって使う)
親クラスでメンバ変数を呼ぶ作りにするとか
別のgoogleサービスへの接続サポートclassも子クラスにできるような親クラスを作成するのがいい
コンストラクタでメンバ変数を渡すとか
・クラスの説明
クラス使い方、動き、目的などを説明
各メソッドの説明
など
・insertRowdataを直したほうがいい
参照するメソッドが有効でない場合の処理(falseを返すなど)を追加するほうがいい
・参考本
マーチンファウラーのリファクタリング
------------------------------2H------------------------------
★復習
●テストもあるし色々と復習
------------------------------3H------------------------------
★最終テスト
------------------------------4H------------------------------
★リファクタリング
●class
・可変変数
変数名を元にした変数を作成する
$hoge  = "test";
$$hoge = "dayo";

echo "$hoge${$hoge}"; //出力 testdayo

・可変変数を使ってsetData()メソッドを作成する
$hoge = "test";
myGdataSpreadsheet->setData($hoge);
の時に、$hogeで内容がtestであるメンバ変数を作成するメソッドを作る
------------------------------5H------------------------------
------------------------------6H------------------------------
★ショッピングカート
criteriaにつなぐ復習など
-----------------------------memo------------------------------

2012年07月18日 講義101日目

2012年07月18日
講義101日目
------------------------------1H------------------------------
------------------------------2H------------------------------
★過去の小テストの内容を色々と復習する
  smartyとかmysqlとか
------------------------------3H------------------------------
★再テスト
------------------------------4H------------------------------
★リファクタリング
●Zend_Gdata_Spreadsheetsからの情報を取得するためのclassをリファクタリング
・getとsetに処理を分けて関数を細かくしていく
------------------------------5H------------------------------
★リファクタリング
●zend_gdata_Photosからの情報を取得するためのclassをリファクタリング
・Spreadsheetsと同じ要領で細かく分けていく
------------------------------6H------------------------------
★運営運用実習
●用語
・SEO
  検索エンジン最適化
・SEM
  検索エンジンを使ったマーケティング
・LPO
  ランディングページ最適化
  (トップページなど)
-----------------------------memo------------------------------

2012年7月17日火曜日

2012年07月17日 講義100日目

2012年07月17日
講義100日目
------------------------------1H------------------------------
★運営運用実習
●モバイルからのアクセスについて
・.htaccessで対応
・$_SERVERで対応
●.htaccess
・サブドメインにも.htaccessかけておく(放置してた)
・htpassコマンド
  htpasswd -c .htaccess
------------------------------2H------------------------------
★運営運用実習
●rootの取れない外部共有サーバなどにsymfonyをインストールする手順
・pearのインストール
go-pear.phpを使う
nstallation prefix →pearをインストールしたいパス
php.ext path ... →phpのバイナリの絶対パス(サーバ次第で変わる)
・pearをインストールしたディレクトリにパスを通す
  .bashrcにパスを追加
・パーミッションエラーの対処
  pear config-showを確認
  pear config-setコマンドで設定を自分が扱えるディレクトリに変更
・symfonyをpearコマンドでインストール
------------------------------3H------------------------------
☆リファクタリング
  ソースの改修作業のこと
------------------------------4H------------------------------
------------------------------5H------------------------------
------------------------------6H------------------------------
-----------------------------memo------------------------------
★おまけ
ショッピングカートを作ろう!
●DBの作成
id
商品名
価格
在庫
画像
カテゴリid
削除フラグ
created_at
update_at

・クエリ
create table item_list (
id int not null auto_increment,
item text,
price int,
stock int,
photo text,
category_id int,
delete_yn char(1),
created_at datetime,
update_at datetime,
primary key (id)
);

色違いだけど同じ商品を扱いたいケース用の拡張
プランA:IDを文字含みにして、11R、11Bのように同じID番号+色にする
・insert intoする
insert into item_list (
item,
price,
stock,
photo,
category_id,
delete_yn,
created_at,
)
values (
"アイテム名テスト1",
"1000",
"100",
"01.jpg",
"カテゴリ名テスト1",
"n",
"2012-07-17 11:11:11"
);

☆さくらスタンダードでサブドメイン振らないで、symfonyのプロジェクトを
確認しながら作成するのはできないの忘れてたのでVMwareで作るとか
☆ブラウザで見れるようにするのを忘れてたりして地味に焦るなど(チートシートの作成が必要かも)

・シンボリックリンクを作成
cp -a /home/ユーザ名/local/lib/php/data/symfony/web/sf ./sf

2012年7月13日金曜日

2012年07月13日 講義099日目

2012年07月13日
講義099日目
------------------------------1H------------------------------
------------------------------2H------------------------------
★リリース実習
●bug fix
------------------------------3H------------------------------
★リリース実習
●googleアナリティクス
・自分のサイトのプロパティを作成
・トラッキング コードを全てのページheadタグに貼り付ける
</head>の直前あたりに貼り付ける
symfonyではlayout.phpを編集すれば全てに適応される
------------------------------4H------------------------------
------------------------------5H------------------------------
------------------------------6H------------------------------
★リリース実習
-----------------------------memo------------------------------

2012年7月12日木曜日

2012年07月12日 講義098日目

2012年07月12日
講義098日目
------------------------------1H------------------------------
------------------------------2H------------------------------
★リリース実習
●作成したwebサイトの改修作業
------------------------------3H------------------------------
★リリース実習
ソースの差分を確認してみる
●linuxコマンド
・diff
ファイルの差分を取得する
例)diff config.php config2.php
行単位で差分を取得してくれる
●SVNコマンド
・svn diff
リポジトリ同士のソースに対して差分を取得できる
例)svn diff svn://localhost/shonanbbs/trunk/config/settings.yml svn://localhost/shonanbbs/branches/config/settings.yml
------------------------------4H------------------------------
★リリース実習
●検索エンジン
・検索エンジンにひっかからないようにする
  web/robot.txt
  クローラの挙動を操作
    User-agent: *
    Disallow: / ←ここでディレクトリを指定
  web/.htaccess
  ベーシック認証
☆site:urlでgoogle内にindex化されてるか確認できる
------------------------------5H------------------------------
------------------------------6H------------------------------
★リリース実習
●サービスリリースに向けてがんばるなど
新規ユーザ登録モジュールは完成
肝心のレシート入力にかなり色々と発生してて作り直しレベル
-----------------------------memo------------------------------

2012年7月11日水曜日

2012年07月11日 講義097日目

2012年07月11日
講義097日目
------------------------------1H------------------------------
------------------------------2H------------------------------
★リリース実習
●SVN
・staging環境のソースをtrunkにコミット
  svn ci -m ""
・staging環境で発生したエラーを解消する
  問題点を開発に報告する
☆バイナリファイルを16進数で編集するエディタとかがある
  意図的に壊れたファイルを作るなどができる
------------------------------3H------------------------------
------------------------------4H------------------------------
★リリース実習
●バリデーション
・バリデーションを色々と試行錯誤
ユーザ新規登録モジュールを作成
  カスタムバリデータの作成
    ユーザネーム、メールアドレスの重複をチェックするバリデータ
  バリデーションconfirm.ymlを作成
------------------------------5H------------------------------
★リリース実習
●dev.shonanbbs.comの問題点解決
・画像のエラーを解消
  カスタムバリデータの作成
  /lib/validate/myUploadImageValidator.class.phpの作成
●バリデーターの拡張
・sfFileValidatorの拡張
validator側を編集
class myUploadImageValidator extends sfFileValidator
{
    public function execute(&$value, &$error)
    {
        //画像の正常性チェック(myUtil使用)
        $id = myUtil::getFileExtId($value["tmp_name"]);
        //(myUtil未使用の場合)
        //$ids = @getimagesize($value["tmp_name"]);
        //$id = ids[2];

        $image_types = sfConfig::get("sf_image_types");
        if(@exif_imagetype($value["tmp_name"]) !== $id || !array_key_exists($id, $image_types)){
            $error = $this->getParameter("mime_type_error");
            return false;
        }
        //php.iniの画像サイズを超える
        if($value["error"] === 1){
            $error = $this->getParameter("max_size_error");
            return false;
        }
        if(!parent::($value, $error)){
            return false;
        }
       
        return true;
    }
}

・yml側の編集
fields:
  content:
    required:
      msg: 内容を入力してください。
  nickname:
    required:
      msg: 名前を入力してください。
  photo:
    file:       True
    sfFileValidator:
      mime_types:
        - 'image/gif'
        - 'image/jpeg'
        - 'image/png'
        - 'image/x-png'
        - 'image/pjpeg'
      mime_types_error: GIFとPNGとJPEGの画像のみ許可されます
      max_size:         512000
      max_size_error:   最大のサイズは512KBです
------------------------------6H------------------------------
★リリース実習
●SVN
・dev環境の変更をbranchesにコミットする
・staging環境で試しのmergeをする
svn merge --dry-run -r 現在のリビジョン:HEAD(最新のリビジョン) svn://localhost/shonanbbs/branches
  問題が無ければ
svn merge --dry-run -r 現在のリビジョン:HEAD(最新のリビジョン) svn://localhost/shonanbbs/branches
  staging環境で動作の確認ができたらコミットする
・本番環境でsvn up
  コンフリクトが発生してたら解消
・ディレクトリの書き込み権限を確認
・サーバのメンテナンスを表示してたhtaccessを元に戻して完了
-----------------------------memo------------------------------
☆参照渡し
&$valueとかを使うと容量が軽い

2012年7月10日火曜日

2012年07月10日 講義096日目

2012年07月10日
講義096日目
------------------------------1H------------------------------
★リリース実習
●SVN
・本番環境のメンテナンス画面のページを作成
sf.shonanbbs.com/web/maintenance.html
・/web/.htaccessの編集
  Ifmodule内を変更
  コメントアウト→  # RewriteRule ^(backend/.*)$ backend/backend.php [QSA,L]
  メンテナンスのhtmlに飛ばす→  RewriteRule ^(.*)$ maintenance.html [QSA,L]
  メンテナンス状態になる
・本番環境のリポジトリに不必要なファイルを除外する
①既にtrunkには各種ディレクトリ、ファイルの対象外設定がなされているため
  svn upで反映させるが、その際に一時的にファイルが消えるためにバックアップを取る
  dev環境などで取ったバックアップ方法と同じ
②trunkの内容で更新
  ☆本番環境からコミットsvn ci -m ""はしない
③バックアップを戻す
  dev環境などで取ったバックアップを戻す方法と同じ
------------------------------2H------------------------------
★リリース実習
●SVN
・マージとは
☆branchesのリポジトリ→ステージング環境を動かす
  trunkのリポジトリ→開発環境を動かす(あまりやらない)
・マージコマンド
  svn merge
  指定したリビジョンで環境を更新する
  ・マージコマンドの例
    例)svn merge -r 10:30 svn://localhost/shonanbbs/branches
      svn merge →
      -r →
      10:30 →欲しいリビジョン番号、10から30のリビジョンを取得
      svn://localhost/shonanbbs/branches →欲しいリポジトリのパス
  ・逆マージ
    例)svn merge -r 30:10 svn://localhost/shonanbbs/branches
  ・10から最新までマージ   
    例)svn merge -r 10:HEAD svn://localhost/shonanbbs/branches
  ・試しに10から最新までマージ
    例)svn --dry-run -r 10:HEAD svn://localhost/shonanbbs/branches
・マージする
  staging環境で試しのマージをしてみる
[ユーザ名@localhost staging.shonanbbs.com]$ svn merge --dry-run -r 1:HEAD svn://localhost/shonanbbs/branches
------------------------------3H------------------------------
★リリース実習
●Tips
・ターミナルで表示を変更する
  puttyのウィンドウ設定で変更可能
・コマンドのlogの取得
  例)svn --dry-run -r 1:HEAD svn://localhost/shonanbbs/branches > ~/mergetest.log
  >>で追加書き込み
  ☆~はhomeの略
・スクリプトコマンド
  script ~/script_test.log
  ・コマンドの実行結果を取得
    view script_test.log
  ・ログへの記録を終了する
    exitもしくは[ctrl+d]
------------------------------4H------------------------------
------------------------------5H------------------------------
------------------------------6H------------------------------
★リリース実習
●SVN
・マージしたときにコンフリクトしてるファイルの修正
コンフリクトしてたファイルたち
//apps/backend/templates/_menu.php
//apps/front/config/routing.yml
//apps/front/modules/comment/templates/detailSuccess.php
//apps/front/modules/default/actions/actions.class.php
//apps/front/modules/default/validate/submit.yml
//apps/front/modules/default/templates/error404Success.php
//apps/front/modules/default/templates/indexSuccess.php
//apps/front/modules/news/templates/indexSuccess.php
//apps/front/templates/layout.php

・svn resolved コンフリクトしてるファイル名
  コンフリクトを解消する
・ファイル内に発生したコンフリクトしてるソースの修正をする
  vi ファイル名
  <<<<<.working
  ステージングのソース←この部分を消す
  ===========
  trunkのソース←この部分を残す
  >>>>>>>>>rリビジョン番号
☆注意config/settings.ymlのコンフリクト
hostname部分をステージング環境用に変更して
変更は維持するように書き換える

既存の問題点
①壊れてる画像ファイル(gif)をアップロードした際に
拡張子が空の状態でレコードに登録される
例)テキストファイルの拡張子をgif等に変えてアップロード

②/images/commnetの書き込み権限がないので画像が投稿できない問題
対処→chmod 777 commnet
-----------------------------memo------------------------------
●VMwareのソースをgooglecodeへ
svn importでgooglecodeにインポートする

2012年7月9日月曜日

2012年07月09日 講義095日目

2012年07月09日
講義095日目
------------------------------1H------------------------------
------------------------------2H------------------------------
------------------------------3H------------------------------
★リリース実習
●SVN
・ファイルの除外
cache/
log/
ページの読み込むたびに変わるので邪魔
config/databases.yml
config/propel.ini
環境ごとに接続先が変わりうるため
・除外するファイルをバックアップする
web/index.php
web/backend/backend.php
web/images/comment/*
おのおの_bkを付けてコピー
☆cp -rp
フォルダ(r)を権限保持して(p)コピー
・propeditでディレクトリにリポジトリ除外を指定する
propeditはコマンドを打つディレクトリ内のディレクトリに内容を記述する
[ユーザ名@localhost dev.shonanbbs.com]$ svn propedit svn:ignore web
内部に
index.php
[ユーザ名@localhost web]$ svn propedit svn:ignore backend
内部に
backend.php
[ユーザ名@localhost images]$ svn propedit svn:ignore comment
内部に
*
を記述
・svn propeditでの修正をコミットする
svn ci -m ""
・リポジトリのソースを消す
svn rm svn://サーバIP/shonanbbs/branches/web/index.php -m ""
svn rm svn://サーバIP/shonanbbs/branches/web/backend/backend.php -m ""
svn rm svn://サーバIP/shonanbbs/branches/web/images/comment/ -m ""
・バックアップしておいた_bkファイルを元の名前に戻す
[ユーザ名@localhost images]$ mv comment_bk/ comment
[ユーザ名@localhost web]$ mv index.php_bk index.php
[ユーザ名@localhost backend]$ mv backend.php_bk backend.php
・リポジトリから消えてない場合.svnを消去して対処
[ユーザ名@localhost comment]$ rm -rf .svn
------------------------------4H------------------------------
------------------------------5H------------------------------
------------------------------6H------------------------------
★リリース実習
●SVN
・ステージング環境でのtrunkの不要なディレクトリの除去
/log
/cache
web/backend/backend.php
web/index.php
config/detabases.yml
config/propel.ini

①対象外設定を行うディレクトリを指定
svn propedit svn:ignore config
②viで記述(全てのファイルの場合は「*」)
databases.yml
propel.ini
③対象外設定をコミット
svn up
④場合に応じてバックアップを取っておく
cp databases.yml databases.yml_bk
cp propel.ini propel.ini_bk
⑤対象外にしたいファイルを一時的に消し、リポジトリとの差分を解消
rm -rf ファイル名(全て消す場合は「*」)
svn up
ls
svn rm 対象のファイル
svn ci -m ""
⑥バックアップを取っている場合は戻す
mv databases.yml_bk databases.yml
mv propel.ini_bk propel.ini
☆SVNのコンフリクトについて
同じリビジョンを更新しようとすると発生する
・dev2.shonanbbs.comを作成し、brunchesからチェックアウトしてくる
[ユーザ名@localhost dev2.shonanbbs.com]$ svn co svn://localhost/shonanbbs/branches/ ./

[ユーザ名@localhost dev.shonanbbs.com]$ svn resolved apps/front/templates/layout.php
'apps/front/templates/layout.php' の衝突状態を解消しました
-----------------------------memo------------------------------

2012年7月8日日曜日

2012年07月08日 講義094日目

2012年07月08日
講義094日目
------------------------------1H------------------------------
★symfony復習
●画像のアップロード
・imagesフォルダへの書き込み権限変更
[ユーザ名@localhost web]$ chmod -R 777 ./images
☆symfony fix permsで変更は戻らない
・拡張子の正常性、ファイルの正常性チェック
画像であるかどうかチェックするロジックを追加する
アップロードされてきたファイル名をそのままDBに入力するロジックだと、
画像以外のファイルもアップロードされてしまい危険
例)悪意のあるphpファイル、スクリプトなども通ってしまい実行されてしまう
●settings.ymlに追記
・settings.ymlを修正
    image_types:
      1: gif
      2: jpg
      3: png
ここで入力したキー値を元にsfConfig::get('sf_image_types')で拡張子を作成
☆getimagesize()で取得できる定数で判断

●executeSubmit()の修正
・/lib/にmyUtil.class.phpを設置する
myUtil.class.php内の拡張子の判断に利用する関数部分
    public static function getFileExtId($filePath)
    {
        $info = @getimagesize($filePath);
        return  $info[2];←
    }
    public static function getFileExt($filePath)
    {
        $id = myUtil::getFileExtId($filePath);
        $image_types = sfConfig::get('sf_image_types');←ここでsettings.ymlを読み込んでる

        return  '.'.$image_types[$id];
    }

・executeSubmit()の修正
        //セットした値をデータベースに反映させる
        $comment->save();

        if($photo["tmp_name"])
        {
            $filename = $comment->getId().".jpg";
            $this->getRequest()->moveFile("photo",sfConfig::get('sf_web_dir')."/images/comment/".$filename);
            $comment->setPhoto($filename);
            $comment->save();
        }


        //セットした値をデータベースに反映させる
        $comment->save();

        if($photo["tmp_name"])
        {
            $filename = $comment->getId().myUtil::getFileExt($photo["tmp_name"]);
            $this->getRequest()->moveFile("photo",sfConfig::get('sf_web_dir')."/images/comment/".$filename);
            $comment->setPhoto($filename);
            $comment->save();
        }

------------------------------2H------------------------------
★symfony復習
●画像ファイルへのバリデーション
・default/validate/submit.ymlの修正
☆ファイルのバリデーター
fields:
  image:
    file:       True
    required:
      msg:      画像ファイルをアップロードしてください
追加記述部分ここから↓
    sfFileValidator:
      mime_types:
        - 'image/jpeg'
        - 'image/png'
        - 'image/x-png'
        - 'image/pjpeg'
      mime_types_error: PNGとJPEGの画像のみ許可されます
      max_size:         512000
      max_size_error:   最大のサイズは512KBです

・許可するファイルの修正
mime_types:
  - 'image/gif'
・エラーメッセージ部分の修正
mime_types_error: GIFとPNGとJPEGの画像のみ許可されます
・ファイルのサイズ制限の修正
☆apaheの上限、symfonyの上限(ほぼコレをチェック)など、phpの上限(apaheと密接)などがあるので各設定も確認する

☆photoカラムのファイル名末尾に.が付いているレコードが存在すると挙動が怪しくなる
------------------------------3H------------------------------
------------------------------4H------------------------------
★リリース実習
●自分のサイトの公開準備
・色々と途中でやばい
------------------------------5H------------------------------
★リリース実習
●SVN
・特定のファイルをリポジトリから除外するために
リポジトリに登録するときに該当のファイルを除外しておく
コミットしない
例)config/databases.yml
    config/propel.ini
    web/index.php
    web/backend/index.php
    web/images/comment/*
・現在の環境にupdateさせる
svn upでリポジトリと一致させる
svn stat -uで確認
?をsvn addでリポジトリに追加させる
・特定のファイルをコミット対象外にする
svn propedit svn:ignore cache
viで開くので*を記述する(全てを対象外にするために)
svn propedit svn:ignore log
viで開くので*を記述する(全てを対象外にするために)
・svn up

[ユーザ名@localhost dev.shonanbbs.com]$ svn list svn://サーバIP(local環境ならlocalhost)/shonanbbs/branches/cache/
backend/
front/
tmp/
・cache下のファイルを確認
[ユーザ名@localhost dev.shonanbbs.com]$ svn rm svn://サーバIP/shonanbbs/branches/cache/backend -m ""
リビジョン 10 をコミットしました。
[ユーザ名@localhost dev.shonanbbs.com]$ svn rm svn://サーバIP/shonanbbs/branches/cache/front -m ""
リビジョン 11 をコミットしました。
[ユーザ名@localhost dev.shonanbbs.com]$ svn rm svn://サーバIP/shonanbbs/branches/cache/tmp -m ""
・log下のファイルを確認
リビジョン 13 をコミットしました。
[ユーザ名@localhost dev.shonanbbs.com]$ svn rm svn://サーバIP/shonanbbs/branches/log/front_dev.log -m ""
リビジョン 14 をコミットしました。
これでリポジトリからcacheとlogが削除された
・svn upを実行
リポジトリ情報を元に、cache下のファイルが消える
・symfony ccでキャッシュが生成される
------------------------------6H------------------------------
★リリース実習
●SVN
・バージョン管理外に置きたいファイルの操作(必ずしも管理外に置かなくてもいい)
config/databases.yml
config/propel.ini
web/index.php
web/backend/index.php
web/images/comment/*←データベースのカラムと結びつくのではずす

☆重要☆database.ymlとpropel.iniの退避
cpコマンドを使い、開発環境下のdatabase.ymlおよびpropel.iniを末尾に_bkをつけるなどして退避
・プロジェクト直下で
svn propedit svn:ignore config
・viの中に、対象とするファイル名を記述
databases.yml
propel.ini
・configディレクトリをコミット
svn ci -m ""
・svn list svn://サーバIP/プロジェクト名/branches/config/
でconfig下のファイルを確認
・リポジトリのソースを消す
svn rm svn://サーバIP/プロジェクト名/branches/config/databases.yml -m ""
svn rm svn://サーバIP/プロジェクト名/branches/config/propel.ini -m ""
・svn upする
リポジトリの情報を元に、config下のファイルが消える
退避したファイルの名前を元通りにし、ブラウザから確認
-----------------------------memo------------------------------

2012年7月6日金曜日

2012年07月06日 講義093日目

2012年07月06日
講義093日目
------------------------------1H------------------------------
★symfony復習
●ヘルパー
・テンプレート側で使う関数
  フォームヘルパー
  バリデーションヘルパー
  リンクヘルパー
    routhing.ymlで設定したリンク先を使うこともできる
   
    ・テンプレート側
      <?php echo link_to("サイトマップ","@sitemap_sub")?>
    ・routhing.yml
      sitemap_sub:
      url:   /sitemap
      param: { module: default, action: sitemap }
 
・ヘルパーのカスタマイズ
  授業で使ったページャ用のヘルパーはsymfonyで用意されたものではなく自作のヘルパー
  <?php use_helper("MyPagerQuery", "Validation")?>
  引数は一つ以上もつことができる
☆バリデーションの流れ
①submitボタン押す
②sfValidateクラスが動く
③作成したmodule/validate/submit.ymlのエラーチェックを確認
④executeHandleErrorが動く
⑤ヘルパーのform_errorが実行され、エラーがでる←ヘルパー<?php use_helper("Validation")?>が機能する場所はココ
  <?php echo form_error("");?>でエラーメッセージを表示させる
------------------------------2H------------------------------
★symfony復習
●部品化
・パーシャル
  テンプレートのみ
    指定したモジュールのテンプレートを読み込む場合は
    include_partial("モジュール名/テンプレート名")
    複数のモジュールで使用する場合、apps/templateに設置する
    その場合は、include_partial("global/テンプレート名")で呼び出す
    ☆パーシャルでデータを渡す
    テンプレート側
    <?php include_partial("global/page_discription", array("mes" => "コメントの詳細ページ"))?>
    パーシャル側
    <?php echo $mes?>で変数として受け取れる
      配列も受け取ることができる
      注意:変数が存在しない場合にエラーが出てしまうので
      <?php echo (isset($mes))?$mes:"メッセージなし";?>
      のように三項演算子でチェックしておくのがいい
------------------------------3H------------------------------
★symfony復習
●部品化
・スロット
  データの部品化
    メタ情報を書き換えたりするときに使う
    ・テンプレート
    <?php slot("footer_mes");?>
    内容
    <?php end_slot;?>
    ・レイアウト
    <?php include_slot("footer_mes");?>
    ☆has_slot()
    slotがあるか確認する関数、返り値はtrueかfaulse
    ☆スロット内でパーシャルを呼び出したりとかも可能
------------------------------4H------------------------------
★symfony復習
●部品化
・コンポーネント
  ロジックとテンプレート
  ・action
    components.class.php
  ・template
    _テンプレート名Success.php
・componentだけのモジュールを作成する
  ・compshareモジュールを作成
    symfony init-mod front compshareコマンドを打つ
    ・components.class.php
    class compshareComponents extends sfComponents{
        public function executeAccessCheck()
        {
       
        }
    }
    ・_accessCheck.php
      コンポーネントのテンプレートにはSuccessは付けない
    ・default/template/sitemapSuccess.phpでコンポーネントを呼び出す
      <?php include_component("compshare", "accessCheck")?>
------------------------------5H------------------------------
★symfony復習
●エラーチェック
・backendにnews_addモジュールを追加
  newsを投稿できるactionを作成
  public function executeSubmit()
  {
      //データベースに接続
      $news = new News;
      $news->setTitle($this->getRequestParameter("title"));
      $news->setArticle($this->getRequestParameter("article"));
      $news->setDeleteFlg("n");
      $news->save();

      $this->redirect("/");
  }
・バリデーション(エラーチェックを入れる)のために
  送信先のアクション名でvalidate/submit.ymlの作成
 
・yamlファイルの項目
  ・required:
    入力されているかどうかをチェック
  ☆注意☆
    フォームのmethodは"post"でないとバリデーションが効かない
------------------------------6H------------------------------
★symfonyテスト
-----------------------------memo------------------------------

2012年7月5日木曜日

2012年07月05日 講義092日目

2012年07月05日
講義092日目
------------------------------1H------------------------------
------------------------------2H------------------------------
★SEOとかについて
  ターゲットキーワード
  同タイトルのサイトがあるか確認
  ページ構成によってSEO
------------------------------3H------------------------------
★symfony復習
●dev.shonanbbs.comの変更
・O/Rマッパ
  オブジェクトとリレーショナルデータベース
・executeModeltest()の作成
  executeIndex()のModelに接続してる部分を移行する
・retrieveByPk()でidからレコードを取得
  $this->member_two = MemberPeer::retrieveByPk(2);
●Criteriaの復習
・Criteria
  Criteriaはclass
・doSelect()
  $comments = CommentPeer::doSelect($c);
・doSelectOne()
  $this->firstcomment = CommentPeer::doselectOne($c);
  データが存在するかどうか確認したいときなど
・doCount()
  $this->cnt_comments = CommentPeer::doCount($c);
  条件に一致するレコードの件数を取得する
------------------------------4H------------------------------
★symfony復習
●Criteriaの復習
・lib/model/omのBaseMemberを見てみる 
・BaseMemberPeer.php
  オブジェクト化するためのクラス
・BaseMember.php
  オブジェクトから値を引き出す関数が記述されたクラス
・add()
  $c->add(CommentPeer::CATEGORY_ID, "1");
  $this->cate_one = CommentPeer::doSelect($c)
・add(Criteria::NOT_EQUAL)
  $c = new Criteria;
  $c->add(CommentPeer::CATEGORY_ID, "1");
  $this->cate_one = CommentPeer::doSelect($c);
  ↑new Criteriaしている理由は条件をクリアするため
  add()の場合には$cに条件が追加されているので$cを使いまわす場合には気をつける
------------------------------5H------------------------------
★symfony復習
●Criteriaの復習
・getNewCriterion()
  一つのカラムに対して複数の条件を加える場合(範囲指定など)
  $c = new Criteria;
  $now = date("Y-m-d H:i:s");
  $from = date("Y-m-d H:i:s", strtotime("-1 month"));
  $c1 = $c->getNewCriterion(CommentPeer::CREATED_AT, $now, Criteria::LESS_THAN);
  $c2 = $c->getNewCriterion(CommentPeer::CREATED_AT, $from, Criteria::GREATER_THAN);
  $c1->addAnd($c2);
  $c->add($c1);
  $this->one_month_comments = Comment::PeerdoSelect($c);
  条件を$c1、$c2と増やしてaddAnd()やaddOr()でつなげる
  最終的には$cにadd()でつなげる
☆addOr()もある
・addDecendingOrderByColumn()
  並べ替え関数
  $c = new Criteria;
  $this->id_order = MemberPeer::doSelect($c);

  $c->addDescendingOrderByColumn(MemberPeer::ID);

  $this->id_order_desc = MemberPeer::doSelect($c);

  $c = new Criteria;
  $c->addAscendingOrderByColumn(MemberPeer::ID);
  $this->id_order_asc = MemberPeer::doSelect($c);
------------------------------6H------------------------------
★symfony復習
●CRUDの復習
・Read
  $this->replys = ReplyPeer::doSelect($c = new Criteria);
  ↑を元にテンプレートでdev.shonanbbs.com/default/modeltest/up/1のようなurlを作るテーブルなどを作成
    ・getRequestParameter()
      dev.shonanbbs.com/default/modeltest以下の/up/1部分を受け取ることができる
・Update
  $up = $this->getRequestParameter("up");
  $reply->save();
  ☆is_object()でオブジェクトかどうか調べて条件分岐させる処理も必要になってくる
・Delete
  $del = $this->getRequestParameter("del");
  $reply = ReplyPeer::retrieveByPk($del);
  ・値を物理削除する場合
      $reply->delete();
  ・値を論理削除する場合はUpdateを使って削除用のカラムを書き換える
      $reply->setDeleteFlg("y");
      $reply->save();
-----------------------------memo------------------------------

2012年7月4日水曜日

2012年07月04日 講義091日目

2012年07月04日
講義091日目
------------------------------1H------------------------------
★復習
●symfonyの復習
・logについて
  デバックフラグを立てておくとlogファイルにlogがたまっていく
  vi、またはtail -f(リアルタイムで表示)
------------------------------2H------------------------------
★復習
●symfonyの復習
・wordpressとかec-cubeとかをwebの下に置けばとりあえず動く(symfonyとは関係ないが)
・アプリケーションの切り分けはサイトの見た目が完全に違う場合などに
・よく使うロジック→関数化→クラス化→プラグイン化という感じ
------------------------------3H------------------------------
★復習
●symfonyの復習
・使用するテンプレートの切り替え
  $this->settemplate()
・ymlファイルで、appsごとにプラグインを指定したりもできる
・symfony fix-permsでファイルの設定を標準化してくれる
・apacheの設定ファイルを変更する
  sakuraのスタンダードだと、etc/httpd/conf.d/httpd-vhost.confがいじれないので.htaccessで解決する
・symfony freeze コマンド(symfony unfreezeコマンドで解除)
  sandboxにする時に使う
  プロジェクトlib/にsymfony本体が入る(ライブラリっぽく?)ので、
  別の環境にプロジェクトごとコピーして
  ☆注意
  web/sfが存在する場合は、sfフォルダを作ろうとするのでsymfony freezeコマンドが失敗する
  別名で保存するか、削除するなりして対応しておく
------------------------------4H------------------------------
★symfonyの復習
●サイトマップを作る
  モジュールにする必要もないページなので、actionで作成する
・return sfView::SUCCESS;の省略
    public function executeSitemap()
    {
        return sfView::SUCCESS;
    }
    ↓
    public function executeSitemap()
    {
    }
    これでsitemapSuccess.phpを読み込みに行ってくれる
☆条件分岐も可能
    public function executeSitemap()
    {
        $error = "あり";
        if($error == "あり"){
            return sfView::ERROR;
        }else{
            return sfView::SUCCESS;
        }
●テンプレートを作る
・urlを省略できる条件
  rewriteRuleでルーティング
  routing.ymlで指定
    url:   /symfony/:action/*
    :→ルールに従って:以下の場所に飛ばす処理
    *→全て
------------------------------5H------------------------------
★復習
●symfonyの復習
・routing.ymlの編集
sitemap:
  url:   /sitemap/
  param: { module: default, action: sitemap }

sitemap:
  url:   /sitemap
  param: { module: default, action: sitemap }
☆linkが/sitemap/の場合
  ↑の順番を変えると、先にsitemapモジュールを探しにいってしまうので注意
●urlをリクエストパラメータとして扱う設定
・routing.ymlの編集
#パラメータのテスト用ルーティング
sitemap_test:
  url:   /sitemap/:name
  param: { module: default, action: sitemap, age: 31}

☆getRequestParameter()でnameを受け取れる
  executeSitemap()で
    echo $this->getRequestParameter("name");
    echo $this->getRequestParameter("age");
   と、記述しておくと受け取れていることがわかる
●よく使うymlファイルたち
  app/front/config/routing.yml
                 settings.yml
                 view.yml
                 securty.yml
  config/database.yml
●settings.ymlの設定について
  ・no_script_name:
  フロントコントローラー名をurlに使うか
  大抵はon
  ・404エラーの設定
    error_404_module:       default   # To be called when a 404 error is raised
    error_404_action:       error404  # Or when the requested URL doesn't match any route
  ・エスケープの設定
    escaping_strategy:      both       
    escaping_method:   ESC_ENTITIES  
  ・バリデーション(エラーメッセージ)の設定
    validation_error_prefix:    ''
    validation_error_suffix:    ''
●view.ymlの設定について
layout.phpの
<?php include_http_metas() ?>
<?php include_metas() ?>
<?php include_title() ?>
部分に反映される

☆サイトの文字化けを防ぐために
・文字化けの原因→読み込んでるアプリケーションの設定とファイルの文字コードが違う
  サーバー内での文字コードの指定
  ファイル内での文字コードの指定
  ブラウザ内での文字コードの指定
のズレがおきると文字化けが起こる
サーバーとファイルの文字コードを統一しておくのが良い
(symfonyで作成されるファイルのデフォルトはutf-8っぽい)
------------------------------6H------------------------------
★symfonyの復習
●app.ymlについて
  自分でymlファイルを作りたい場合はココに書く
  そのアプリケーションでしか使わない配列などを書く
●module/configにymlファイルを置く
    上位階層のymlファイルの内容より強い
    かぶる項目が存在した場合に、優先して反映させることができる
    もちろん内容の追加も可能
●schema.ymlについて
①propel-build-schema
  propel.iniの情報を元にshema.ymlを生成
②propel-build-model
  schema.ymlを元にlib/model
の流れ
●database.ymlについて
  デフォルトではコメントアウトされてる
  encoding:    utf-8などを書く
★dev.shonanbbsの変更をsvnにコミットする
・svn stut -u
  変更点の確認
・svn add
  svn add ファイル名で?のファイルをAに変更
・svn ci -m ""
  コミットする
-----------------------------memo------------------------------

2012年7月3日火曜日

2012年07月03日 講義090日目

2012年07月03日
講義090日目
------------------------------1H------------------------------
★SVN
●VMwareにSVNサーバーをインストール
・現在google codeにリポジトリを作成してるが、
  VMwareにSVNサーバーを立ててそちらにリポジトリを作成する
●SVNクライアント
・eclipceもプラグインを入れるとクライアントに出来たりする
・windowsだとtortoisesvnがある
☆今まではクライアントのみ使ってた
  サーバ機能はこれから設定する
●SVNサーバの設定
・リポジトリの作成
suでルートになる
[root@localhost  ユーザ名]# cd /var/www
この下にリポジトリを作る
[root@localhost www]# mkdir svn
[root@localhost www]# cd svn
・svnadminコマンド
[root@localhost svn]# svnadmin create shonanbbs
[root@localhost svn]# ls
shonanbbs
[root@localhost svn]# ls shonanbbs/
README.txt  conf  dav  db  format  hooks  locks
↑confをいじっていく
・権限を書き換える
  wwwからリポジトリを書き換えるためapacheに権限を与える
[root@localhost svn]# ls -l
合計 4
drwxr-xr-x 7 root root 4096  7月  3 10:54 shonanbbs
chown -R apache:apache shonanbbs
-Rでディレクトリ全てを指定
[root@localhost svn]# ls -l
合計 4
drwxr-xr-x 7 apache apache 4096  7月  3 10:54 shonanbbs
●用語復習
コミットする→リポジトリのバージョンを上げる
チェックアウトする→リポジトリからダウンロードする
パーミッション→アクセス権のこと
------------------------------2H------------------------------
★SVN
●SVNサーバの設定
・conf
[root@localhost svn]# cd shonanbbs/conf/
[root@localhost conf]# vi svnserve.conf
・読み込み書き込みの設定
# anon-access = read
# auth-access = write

anon-access = none
auth-access = write
(#の後のスペースは消さないと挙動しない)
・パスワードの設定
# password-db = passwd

password-db = passwd
・passwd
[root@localhost conf]# vi passwd
[users]
# harry = harryssecret
# sally = sallyssecret
ユーザ名 = パスワード
・bachの設定に追加
  rootでsvnを使うときのために環境変数を追加
[root@localhost ~]# vi .bash_profile
export SVN_EDITER="vi"
[root@localhost ~]# source .bash_profile
・SVNサーバーを起動させる
[root@localhost ~]# svnserve -d -r /var/www/svn

●ソースの管理と開発環境
・SVNの構成
trunk
本番
branches
開発
tags
バックアップ
・staging環境
テストのサーバーで本番ソース、本番DBによってテストする環境
ベータ版
------------------------------3H------------------------------
★SVN
●リポジトリの作成
・svn mkdir svn://サーバのアドレス/shonanbbs/trunk
rootでifconfigでサーバのアドレスを参照して入力
☆ifconfigはrootでしか動かない
・コミットする
  viでコメント入力画面が開くので何かを入力して終了
  エラーが出た場合にはコメントがsvnコマンドを打った場所に残るので
  これらがコミットされないように消すようにする
・sf.shonanbbs.comが別のsvnサーバと紐付いてるかどうか確認する
[ユーザ名@localhost ~]$ ls -a sf.shonanbbs.com/
.svnが無ければ紐付いてない
・svn import
svn import 元になるソースのパス リポジトリのパス
でコミットできる
------------------------------4H------------------------------
★SVN
●svnコマンド
・svn list リポジトリのパス
  コミットした内容を表示するコマンド
  [サーバ名@localhost ~]$ svn list svn://svnサーバIP/shonanbbs/trunk
  で/trunkの内容が表示される
 
☆linuxで日本語の文字でディレクトリを作成すると文字化けなどを起こす場合がある
ファイル名が指定出来ない
  もし作った場合には、そのディレクトリのほかの内容を退避させて
  そのディレクトリごと消すなどの対応になってしまうので注意
●tagsの作成
・svn mkdir svn://svnサーバIP/shonanbbs/tags -m ""
●リポジトリのコピー
・svn cp コピー元 コピー先
  svn cp svn://svnサーバIP/shonanbbs/trunk svn://svnサーバIP/shonanbbs/branches -m ""
●リポジトリの削除
  svn rm 削除したいリポジトリのパス

●開発環境のディレクトリを作成
sf.shonanbbs.comの開発環境として
[サーバ名@localhost ~]$ mkdir dev.shonanbbs.com
を作成
本番環境  sf.shonanbbs.com
開発環境  dev.shonanbbs.com
●check outコマンド
svn co check out元 check out先
●svn info
色々情報が出てくる

●dev.shonanbbs.comのパスを通す
  /etc/httpd/conf.d/httpd-vhost.confを編集
  /etc/init.d/httpd restart
  hostsファイルの編集
 
  開発環境のプロジェクト下で
  symfony fix-perms
  symfony cc
------------------------------5H------------------------------
★SVN
●本番環境と開発環境での注意点
・接続先のDB
操作→データベースのコピー先:
dev_studyと名付けた開発用のDBを作成
☆設定ファイルを変更したら
  symfony fix-perms
  symfony cc
☆symfonyでの本番環境と開発環境での注意点
・config.php
  $sf_symfony_lib_dir  = '/usr/share/pear/symfony';
  $sf_symfony_data_dir = '/usr/share/pear/data/symfony';
  などのディレクトリの変更
・database.yml
  dsn:でDBの変更
・propel.ini
  propel.database.createUrl  = 開発用のDB
  propel.database.url        = 開発用のDB/DB名
・setting.yml
  hostname:でアプリケーション間のhostnameを設定してるのでurlが違えば要変更
☆設定ファイルを変更したら
  symfony fix-perms
  symfony cc
 
●staging環境の作成
本番環境と同じソース、本番に上げる目前のテスト
/home/ユーザ名/staging.shonanbbs.com
のディレクトリを作成し。trunkのソースをチェックアウトしておく

http-vhost.confおよびhostsを編集し、ブラウザから確認できるようにする
サイトが表示されない場合
symfony fix-perms
symfony cc

config/settings.yml
らを変更する。データベースは本番の「study」DBを使用する
☆basic認証をかけたりする
staging環境と本番環境は
------------------------------6H------------------------------
★SVN
●デバックフラグ
・本番環境では見せてはいけないもの
・symfony
/web/index.php
/web/backend/index.php
の記述を変更する
define('SF_ENVIRONMENT', 'dev');
define('SF_DEBUG',       true);

define('SF_ENVIRONMENT', 'prod');
define('SF_DEBUG',       false);
●本番環境にsvnを反映させる
[サーバ名@localhost dev.shonanbbs.com]$ svn ci -m ""
・svnが反映されてないsf.shonanbbs.comの内容を全て削除
[サーバ名@localhost sf.shonanbbs.com]$ rm -rf *
フォルダごとでもかまわないが、ファイルを全て消すコマンドで対応
・trunkからチェックアウトする
[サーバ名@localhost sf.shonanbbs.com]$ svn co svn://サーバIP/shonanbbs/trunk
・色々と本番用に整える
  symfony fix-prems
  symfony cc
  hostnameの場所をなどを変更
-----------------------------memo------------------------------

2012年7月2日月曜日

2012年07月02日 講義089日目

2012年07月02日
講義089日目
------------------------------1H------------------------------
★職場体験
●サンプルソースについて補足
・phpの新しいバージョンではファイルを開いたらfopen()、fclose()で閉じる
------------------------------2H------------------------------
★最終課題発表に向けての準備
・色々と動かなくなってるのでやばい
・色々と動くようになったけどやばい
・scriptをwindow.onloadで動かすとかにトライ中
  →なんか出来た(ちゃんと出来てるか不明)
------------------------------3H------------------------------
------------------------------4H------------------------------
------------------------------5H------------------------------
------------------------------6H------------------------------
★最終課題発表
-----------------------------memo------------------------------