mosowave

sinamon129による(主に)技術ブログ。Ruby,Ruby on Rails,Elasticsearchやその他について書きます。

Cakephp2系にsmarty3をいれるはなし

Cakephp2系をつかっています。

テンプレートエンジンsmartyをいれたかったのですが、Cakeを使い始めた頃(4ヶ月ぐらいまえ?)にはよくわからなくていれられなかったのですが、いろいろ整備し直すタイミングでいれてみることに。

Smartyを入れる
まずは、公式から、smartyをダウンロード。
f:id:sinamon129:20130212022434p:plain
この、libsディレクトリをsmartyにrenameして、
app/Vendorの中に置きます。

次に、Smartycakephpで使うためのSmartyViewをつくります。
app/Viewの中に置きます。

参考:CakePHP 2.0.0 Beta && Smarty 3

で、ここのソースコードが化けてるので、http://www18.atwiki.jp/javascripter/pages/26.htmlを参考に。

<?php
class SmartyView extends View {
	function __construct (&$controller) {
		parent::__construct($controller);
		if (is_object($controller)) {
			$count = count($this->_passedVars);
			for ($j = 0; $j < $count; $j++) {
				$var = $this->_passedVars[$j];
				$this->{$var} = $controller->{$var};
			}
		}

		if(!App::import('Vendor', 'Smarty', array('file' => 'smarty'.DS.'Smarty.class.php')))
			die('error Loading Smarty Class');
		$this->Smarty = new Smarty();

		//$this->subDir = 'smarty'.DS;

		$this->ext= '.tpl';
		//$this->Smarty->plugins_dir[] = VENDORS.DS.'smarty'.DS.'plugins';
		$this->Smarty->compile_dir = TMP.'smarty'.DS.'compile'.DS;
		$this->Smarty->cache_dir = TMP.'smarty'.DS.'cache'.DS;
		$this->Smarty->error_reporting = 'E_ALL & ~E_NOTICE';
		$this->Smarty->debugging = true;
		$this->Smarty->compile_check = true;
		$this->viewVars['params'] = $this->params;

		$this->Helpers = new HelperCollection($this);
	}

	protected function _render($___viewFn, $___dataForView = array()) {
		$trace = debug_backtrace();
		$caller = array_shift($trace);
		if ($caller === "element") parent::_render($___viewFn, $___dataForView);

		if (empty($___dataForView)) {
			$___dataForView = $this->viewVars;
		}

		extract($___dataForView, EXTR_SKIP);

		foreach($___dataForView as $data => $value) {
			if(!is_object($data)) {
				$this->Smarty->assign($data, $value);
			}
		}

		$this->Smarty->assign('View', new View(null));

		ob_start();
		$this->Smarty->display($___viewFn);
		return ob_get_clean();
	}

	public function loadHelpers() {
		$helpers = HelperCollection::normalizeObjectArray($this->helpers);
		foreach ($helpers as $name => $properties) {
			list($plugin, $class) = pluginSplit($properties['class']);
			$this->{$class} = $this->Helpers->load($properties['class'], $properties['settings']);
			$this->Smarty->assign($name, $this->{$class});
		}
		$this->_helpersLoaded = true;
	}
}

?>

レイアウトファイルを置く所を、app/View/Layoutsの中にしたいので、

$this->subDir = 'smarty'.DS;

をコメントアウトしています。

次に、default.tplをつくります。

<html>
<head>
<title>{$pageTitle}</title>
</head>
<body>
{$content_for_layout}
</body>
</html>

後は、AppControllerにsmartyが使えるようにしていしてあげればおっけー。
app/Controller/AppController.php

class AppController extends Controller {
    public $viewClass = 'Smarty';
}

これで、smartyがつかえるようになりました!

参考:
CakePHP 2.0.6とSmarty
akePHPでSmartyで使う方法(2010年2月現在)

いまどきの悪徳商法は複雑だった件

先日、渋谷を買い物でもしようかとウロウロしていました。

そしたら、ネイルサロンのキャッチ?のおにーさんに声をかけられて、チラシを渡すから店まで来てくれないか?といわれました。

 

若干あやしいなあと思いながらも、まあおかしいとおもったら引き返そうぐらいに思って、ネイルとかやってみたかったしとりあえずついて行ってみました。

ついた先は、本当にネイルサロンでした。

 

ネイルサロンと同じフロアの奥につれてかれ、おにーさんは、どこかの部屋にはいり、そこからでてきてチラシをくれました。で、こういうのをやっている系の説明をしてくれたのですが、なんか商売っ気がない。その時に、クーポンあげるとかじゃないのに私なんでついてきたしwと思いながらまあとりあえず話を聞く。

 

と、そこで普段はあまりこないらしい、芸能人とかのメイクもやっているようなすごい人(めんどくさいのでここからすごい人)が現れる。で、その人がいるから、せっかくだから肌の悩みとかある?と聞かれ、せっかくきてくれたし、きいてきてあげるといわれてまっていました。そこで、そのすごい人が出てきて、忙しいけどなんか色々教えてくれるとのこと。

 

基礎化粧品の使い方、選び方、種類的なことを事細かに紙に書いて説明してくれる。

その後、肌のキメの細かさとか、何年か後の肌に現れるしみとかシワを見る機械をつかってみてあげるよ的なことをいわれて、チェック。

(で、現実を突き詰められる…www)

その後、このメーカーとこのメーカーあたりがいいよっておすすめしてもらう。

 

で、その後、深刻そうな顔をしながら、しみとかしわとかって、エステとかに行かないと治らないけど、普通は3年以上通わないとなおらなくて、月に3万〜5万ぐらいかかるっていわれる。うげ~そんなお金ないという話をしていたら、何か考えている模様。それで、もし一万円はらって、毎週ちゃんとできるなら、専門の機械を貸してあげるっていう話になる。

 

怪しい。ってかネットでさがしたらがんばれば1万切るんじゃね?って思うww

 

でもって、どういうふうに契約させられるのか気になったので、途中まで話を進めてみる。今日は持ってきてないから、後日また打ち合わせと言われる。印鑑と現住所。ふーん。

迷った素振りをみせると、これは言われたからきめるとか、教えてくれたからやるとかじゃなくて自分の意思できめてやるって決めるんじゃなかったらやってほしくない的なことをいわれ、しかもはっきりいって怪しいと思ってますとかという話をしたりした。

で、結局、私が学生だし、他にお金をかけたいところもあるのでーとかって適当にいって、なんとか後日会う約束をせずに、良い感じにお店を出た。(お金は払っていない)

 

で、その話をお友達にしたら、おなじようなキャッチ・違う店で同じシチュエーションがあったらしく(化粧品肌の話→肌チェック→機械の流れ)さらにググると同じような悪徳商法話が沢山あったw

うわーw

 

ちなみに、お店でもらったチラシに書いてある店名と、書いてあったurlのお店の名前、チラシに書いてあった住所にある店の名前は全部異なってたwwwwwwww

 

これは、騙されやすそうだし、多分騙された人で騙されたと思ってない人もいそうだし、というようなパターンですが、もはや心理戦な感じもするので、引っかかりたくない人はこんなんもあるんだなーって気をつけてくださいw

ハチャメチャに始めたプロジェクトの管理とかを見なおしてみる。

進行しているプロジェクトがあります。

バージョン管理とフレームワーク、どちらも勉強したてホヤホヤではじめました。

あと、プロジェクト管理は基本的にgoogleスプレッドシート、そして設計書とか仕様書とかってものはほとんど存在しません。あるとしたら、ワイヤーフレームに類似するものぐらい。

この状態のプロジェクト管理の問題点(もはや問題だらけかもしれない)と、これからどうしようかを考えてみる。

 

 

>問題点

・コミットがマジ適当

コメント、ブランチ、粒度すべてがいつもバラバラ。

 

 ・バージョン管理はしてあるので、誰が何処を変更したかは分かるが、その変更から更に変更を加えるときに、コードを書いた意図がわからないことがある。

作業を引き継ぐときとかに大分困ります。何も知らずに追加でコードを書いて、バグったりします…(´・ω・`)

 

スプレッドシートに書いてある要件は、非エンジニア視点のことが多いので、担当分けや具体的な仕事単位が大きいことがある。

書いてあることから、実際に対応していくときに、これの担当はどうしようかとか、個々の変更をするためには他のところも変えないといけないとかそういう情報が盛り込まれない&一個あたりの単位が大きくなって変更が遅れることがある…

 

・バージョン管理はしているが、master,devとブランチを切っているのはいいものの、みんなdevブランチに自らマージし、なぜかdevブランチの内容を本番環境のテスト環境でデプロイするっていうmaster空気な感じなことが起きてる( ゚д゚)

やっている本人も意味がわからないと思うこれ…w多分原因は焦ってたから←うわー

 

非常にひどい問題点ですが、これを解消する方法を考えてみる。

(ちなみに、上記のひどい問題点からわかるように、この手の経験はあまりないのでまたオレオレになる感じはあるかもしれない…)

 

>やってみること

・仕様をある程度まとめる

終わりが決まらなくてやりづらい(主にバージョン付などで)ので、この機能とこの機能を入れて○○版とかいう感じでざっくりとしたゴールの推定をしておく。

 

・BacklogでTiDDみたいなことをする。

スプレッドシートにまとまった要件は、Backlogの課題に粒度を小さくして載せておく。その時に重み付けや担当を決め、gitのブランチと関連付けをする。

 

・git

コミットは細かく。

コミットメッセージは、ある程度のルールを作る。(最初にサマリを書く、その後に詳細を3行ぐらいで書く)

git-flowを入れる。

リリースと開発をわけ、masterにリリースをおき、バージョンをタグ付する。  

backlogの課題ベースでブランチを作成する。

マージする担当を作る。

 

>参考にしたもの

Git+Redmine+チケット駆動開発のワークフロー

既存のリポジトリに git-flow を導入してみた

はてなブログのデザインをカスタマイズしてみる。

かすたむかすたむ〜。

 

>トップ画像

じぶんでつくった。イラレ。

 

>背景

じぶんでつくった。またイラレ。

別に大したものじゃないけど色違いもつくったし貼っとく。

ストライプ・春のマカロンカラー。

お好きにどうぞ。

f:id:sinamon129:20130201005402p:plain f:id:sinamon129:20130201005528p:plain f:id:sinamon129:20130201011033p:plain f:id:sinamon129:20130201011044p:plain

 

>フォント

デコもじつかってみた。

参考:デコもじ で はてなブログ をユルくする

 

>カラーリング

色の組み合わせとか、けっこう迷う。

よく色選びに使ってるサイト

colourlovers

 

>導入しようとおもってるものの参考リンク

来年1月から正式サービスになる「はてなブログ」のカスタマイズ方法+α

はてなダイアリーのスーパーpre記法のデザインを変えてみた

改造したらここに追記する(*´ω`*)

Hello,world!

これから、記事を書いていきます・ω・

 

>なかのひと

name: しなもそ

favorite: 洋服, FASHION, web, パソコン, geek, 電波ソング, 歌う

 

>なにをかきますか

ぷろぐらみんぐとか、サーバの設定とかそういうのの自己まとめ。

軽いでざいん・ふぁっしょんについてとか。

 

Simple, Cute and Tech.

 

好きな言葉は全力全開です。