C-limber's highへようこそ。
C-limber's highは山登りのサイトではなく、福岡システム開発WEB制作会社 C-limber(クライマー)株式会社の技術メモブログです。
福岡システム開発ホームページ制作をお探しの方はお気軽にご相談下さい。

2013年7月29日月曜日

2013年7月17日水曜日

2013年7月16日火曜日

YiiFrameworkでPDFを作成

23:46 Posted by 匿名 No comments
ほぼ公式サイトと同じ内容だけど、日本語化に対応させる必要があります。

公式サイトからyii-pdf-0.3.2.zipをダウンロードし、/protected/extensionsにyii-pdfとし配置。
また、今回はmPDFを使用するので、公式サイトからmPDF version5.7をダウンロード。
/protected 配下にvendorsディレクトリを作成し、ダウンロードしたファイルをmpdfとリネームして配置した。

/protected/vendors/mpdf

/protected/config/main.php に以下の内容を追加。

'ePdf' => array(
    'class'         => 'ext.yii-pdf.EYiiPdf',
    'params'        => array(
    'mpdf'     => array(
        'librarySourcePath' => 'application.vendors.mpdf.*',
        'constants'         => array(
            '_MPDF_TEMP_PATH' => Yii::getPathOfAlias('application.runtime'),
        ),
        'class'=>'mpdf', // the literal class filename to be loaded from the vendors folder
        )
    ),
),

日本語に対応させるために、mpdf.phpを編集。
1146行目の以下の内容をコメントアウト。

/* if (preg_match('/([\-+])aCJK/i',$mode, $m)) {
preg_replace('/([\-+])aCJK/i','',$mode);
if ($m[1]=='+') { $this->useAdobeCJK = true; }
else { $this->useAdobeCJK = false; }
}*/

また、以下の1行を追加。

$this->useAdobeCJK = true;

これでOK。

Controller側

$model = $this->loadModel();
$mPDF1 = Yii::app()->ePdf->mpdf();
$mPDF1 = Yii::app()->ePdf->mpdf('ja', 'A4');
$mPDF1->WriteHTML($this->renderPartial('index', array('model'=>$model), true));
$mPDF1->Output();

これでPDFが作成される。



2013年7月11日木曜日

スマホ用画像の圧縮について

14:33 Posted by 匿名 No comments
サイトのレスポンスの良さ、これは特にスマートフォンサイトでは求められてくる部分だと思います。

画像のクオリティを許容範囲まで維持しつつ、ぎりぎりまで画像容量を減らす。

そんな作業にばっちりのサイトを見つけました。

PNG Minimizer

300kの画像が50kぐらいまで容量落ちます。

すごいツールです。感謝。



2013年7月10日水曜日

ubuntuのapt-getとaptitudeの違い

23:28 Posted by 匿名 No comments
aptitudeで構築したサーバとapt-getで構築したサーバが混在してきて、気持ち的に超めんどくさくなったので調べました。

apt-getとaptitudeの違い

とてもわかりやすい解説
2.2.1. apt-get/apt-cache と aptitude の比較

aptitudeの方がapt-getより便利にパッケージの依存関係を解消してくれるみたいですが、
メモリの消費量が多く、重いとのこと。
あとaptitudeでエラーが出るようだったら、apt-getを使うようにと書いてあります。
それで最も大事な事は、
apt-getとaptitudeはlenny以降混在OK!
との事。

なるほど。すっきりした



2013年7月9日火曜日

gitのブランチのpushで本番環境とテスト環境への反映を切り替える

11:27 Posted by 匿名 , No comments
gitの自動デプロイの話

[作業目標]
pushされたものに対して、
branchで判別して処理を分岐、
テスト環境、本番環境へのデプロイを自動化します

レモートのbareリポジトリの直下にhooksというディレクトリが生成されているので、中身を見ます。

pushに対して処理する時は、
post-receive
post-update
というファイルを作ってその中にシェルスクリプトを書いて処理します。

処理の順序は、
1. post-receive
2. post-update
の順番で処理されます。

それぞれのファイルの使い方は、

branchによる分岐が無い場合、
post-receive に処理を記述。

branchによる処理分岐がある場合、
post-update に処理を記述。
(分岐しない処理もpost-updateにはかけます)

今回はbranchで処理を分岐するのでpost-updateに処理を記述する。

[概要]
git push origin master => テスト環境のみに反映
git push origin master:product => 本番・テスト両方に反映

[前提]
本番・テスト環境にgit のリポジトリを生成済

[注意]
それぞれの環境がpullする際のディレクトリ構造は適宜に変更してください
作成したpost-update, post-receive は かならず実行権限を与えてください(これで結構はまりました)

#!/bin/sh
#ブランチ名の取得
branch=$(git rev-parse --symbolic --abbrev-ref $1)
# 本番・テスト環境へ反映
if [ "$branch"  = "product" ]
then
        cd /home/product_user/public_html
        git --git-dir=.git pull ../repo/repo.git product:master
        # テスト環境にも反映
        cd /home/test_user/public_html
        git --git-dir=.git pull ../repo/repo.git product:master
        # リモートのbareリポジトリのmasterブランチとproductブランチを入れ替える
        cd /home/repo_user/repo/repo.git
        git --git-dir=../repo.git symbolic-ref HEAD refs/heads/product
        git --git-dir=../repo.git branch -d master
        git --git-dir=../repo.git branch -m product master
fi

# テスト環境のみへ反映
if [ "$branch" = "master" ]
then
        cd /home/test_user/public_html
        git --git-dir=.git pull ../repo/repo.git master
fi

exec git update-server-info


[ちょっと補足説明]
●bareリポジトリはディレクトリ自体が、○○.gitとなっていて、内部に.gitファイルと持ちませんので、
git --git-dir=../repo.git symbolic-ref HEAD refs/heads/product
として、gitディレクトリにrepo.git自身を指定してgit 命令を実行しています。

●bareリポジトリのbranchの切り替えはcheckoutが使えない
bareリポジトリはworking treeではないらしく、checkoutつかってブランチを切り替えようとするとエラーがでます。
そこで、直接参照を切り替えています。
git symbolic-ref HEAD refs/heads/product
これでbareリポジトリのmasterブランチからproductブランチにcheckoutする事が出来ました。