_onichannn

【Apache2.4】VirtualHostディレクティブの記述方法。

2.2系とだいぶちがって詰まったのでメモ。

まず2.2系で必要だった「NameVirtualHost *:80」といった記述はもう不要。

<VirtualHost *:80>
    ServerName centos.local.lcl
    DocumentRoot /home/worker/work
    RewriteEngine On
    <Directory "/home/worker/work">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Directoryディレクティブ内での権限の付与方法などがだいぶ違っているので注意。

 

【apache/SSL】でオレオレ証明書を作成する。

下記URLがめちゃわかりやすい。

http://www.maruko2.com/mw/Apache/SSL%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8mod_ssl%E3%81%AE%E8%A8%AD%E5%AE%9A

 

【JScript/WSH】でwindowsを自動操作してみる。

windows上でjavascriptが実行できると知ったので実験してみる。
しかもファイル操作、ブラウザ操作自動化などかなりいろいろなことができそう。

下記は実行するとgoogleでtwitterと検索し、検索結果の一番先頭のリンクをクリックするスクリプトの例。

use_ie();

function use_ie() {
    // IE起動
    var ie = WScript.CreateObject('InternetExplorer.Application');
    ie.Navigate('http://www.google.co.jp/');
    ie.Visible = true;
    
    waitIE(ie);
    
    // 検索キーワードを入力
    ie.document.getElementById('gbqfq').value = 'Twitter';
    WScript.Sleep( 100 );
    
    // 検索ボタンをクリック
    ie.document.getElementById('gbqfba').click();
    
    waitIE( ie );
    
    var res = ie.document.getElementById('res');

    // 検索結果の一番目のリンクをクリック
    res
    .getElementsByTagName('li')[0]
    .getElementsByTagName('h3')[0]
    .getElementsByTagName('a')[0]
    .click();
    
    waitIE(ie);
    // 下記関数の実行でIEを閉じることができる
    //ie.Quit();
    // 制御を破棄
    ie = null;
}


// IEがビジー状態の間待機する関数
function waitIE(ie) {
    while((ie.Busy) || (ie.readystate != 4)) {
        WScript.Sleep(100);
    }
    WScript.Sleep(1000)
}

こりゃめっちゃ便利ですわ。

 

【Git】git submoduleの内容を取得する。

gitプロジェクトの中に別のgitリポジトリを参照しているものが含まれる場合(これがgit submodule)、
本体をcloneしただけだとサブモジュール内のファイルが取得されていないので下記コマンドを実行してやる必要がある。

git submodule update

これで取得されたはず。たぶん。
※違ったら修正します。

あとサブモジュールが含まれるプロジェクトで「git status」をしたときにmodifiedが消えなくてうざいときは、
そのサブモジュールフォルダまで移動して「git checkout .」とかを実行して変更を差し戻してやれば消える。

 

【Symfony2.3】のシェル起動方法。

app/console --shell

ってやるとなにやらカッチョイイウェルカムメッセージが表示される!

※何に使うかとかは今度調査する。

その場でエンター押すと使い方が表示されるところまで触った。

 

【Doctrine2】のメモリリークを回避する。

ループ処理などで大量のエンティティをpersist()させて最後にflush()みたいなことをするとメモリをバカ食いするのであまりよろしくない。
下記のようにclear()メソッドを実行してやるとEntityManagerの消費メモリが解放されるので定期的にこの処理を挟むべき。

$em->persist($entity);
$em->clear();

それでもメモリの使用量が思ったように下がってくれない場合はEntityManagerのSQLロガーが原因なので、ログの出力をオフにしてやるとよい。

$em->getConnection()->getConfiguration()->setSQLLogger(null);

これでかなりバッチのメモリ消費量が軽減された。

 

【Symfony2.3】DoctrineMigrationsBundle自分用まとめ。

■インストール

composer.jsonに下記を追加。

{
    ...
    "require": {
        ...
        "doctrine/doctrine-migrations-bundle": "dev-master"
        ...
    }
    ...
}

そしてアップデート。

composer update

app/AppKernel.phpを編集。

...
	$bundles = array(
		...
		new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
		...
	);
...

app/console コマンドでdoctrine:migrations:…のコマンド群が確認できれば成功。

■Migrationsの初期化

php app/console doctrine:migrations:status

これで初期化完了。データベース「migration_versions」というマイグレーションのバージョン管理用テーブルが作成される。

■マイグレーションファイルを作成する

エンティティの追加、削除、また変更などがあった際、スキーマアップデートを実行してはいけない。
必ずマイグレーションファイルを生成してからマイグレートを実行するようにする。

具体的にはこう。

例)
何かしらのエンティティを変更、追加、削除した際。

# これで最新のマイグレーション履歴との差分を自動的に計算してマイグレーションファイルを生成してくれる。
php app/console doctrine:migrations:diff

マイグレーションファイルは「app/DoctrineMigrations」以下に「Version[実行日時].php」といった形で生成される。
生成されたマイグレーションファイルのup()メソッドとdown()メソッドを確認して、必要であれば編集する。(基本的にそのまま)

問題がなければ下記コマンドでマイグレーションを実行。

php app/console doctrine:migrations:migrate

これで差分のSQLが実行されDBが最新の状態になる。

マイグレーションの差し戻し(down)は過去の別エントリを参照されたし。

 

【CentOS】OpenSSLとmod_sslを導入する。

apacheでSSL通信(https)環境を実現する際に必要。

yumで両方ともインストール可能。

yum install openssl
yum install mod_ssl

鍵の作成やバーチャルホストの設定などは下記URLを参照。

http://dotnsf.blog.jp/archives/3181024.html