ラベル コラム の投稿を表示しています。 すべての投稿を表示
ラベル コラム の投稿を表示しています。 すべての投稿を表示

2010年5月8日土曜日

【Twig】テンプレートにassignした変数を取得

あらかじめ

 {{ foo1 }}とか

 {{ foo2|safe }}とか

 {{ foo3.func('bar') }}とか

などと書かれたテンプレートを解析して、

foo1とかfoo2とかfoo3を抽出したい、というような場合。

※需要、ないなあ・・・。



パッと思いつくのはpreg_matchとかで

文字列解析する方法ですが、

テンプレートエンジンの場合、

タグの開始・終了文字(*1)をユーザが自由に

変更できたりするなど、

あまり単純な方法ではダメなのではないか、と思い。



でも、twigの場合、parser,lexerが外から操作できたり

簡単に拡張できたりするので、それでやってみよう、と。



・・・ということをやってみました。



抽出する関数
function getAssignVarsFrom($stream)
{
$ret = array();
$bIn = false;
$bInFirst = false;
while(! $stream->isEOF())
{
// get current node
$curr = $stream->getCurrent();

switch ($curr->getType()) {
case Twig_Token::VAR_START_TYPE:
$bIn = true;
$bInFirst = true;
break;
case Twig_Token::NAME_TYPE:
if ($bInFirst) {
$ret[$curr->getValue()] = $curr->getLine();
}
$bInFirst = false;
break;
case Twig_Token::VAR_END_TYPE:
$bIn = false;
$bInFirst = false;
break;
default:
break;
}

// next
$stream->next();
}
return $ret;
}



呼び出し側
$loader = new Twig_Loader_Filesystem('/path/to/template/');
$twig = new Twig_Environment( $loader,
array(
'cache' => '/path/to/cache',
'auto_reload' => true,
)
);
$escaper = new Twig_Extension_Escaper(true);
$twig->addExtension($escaper);
$stream = $twig->tokenize($twig->getLoader()->getSource('sample2.html'), 'sample2.html');
$assigned_vars = getAssignVarsFrom($stream);

※かなり手抜きです。
 "Twigの使い方"みたいなヤツのサンプルを簡単にイジっただけなので、
 余計な処理がテンコ盛りだと思います。
 (コンパイルしてないからcacheいらないんじゃないか、とか。
  extenssionは関係ないんじゃないか、とか。)



tokenize()が返してくるstreamの中にtokenが格納されているので、

NAME_TYPEだけ引っこ抜く、と。



それだけだと、safeとかfuncだとかも引っこ抜いてきてしまうので、

取り敢えず、VAR_START_TYPEからVAR_END_TYPEの間で

最初に出てきたNAME_TYPEだけ引っこ抜く、と。



これで本当によいのかどうか、かなり怪しいところですが、

取り敢えず、ちゃんとfoo1,foo2,foo3だけ返してきてます。



ちなみに、Twigのバージョンは、0.9.6-DEVを使いました。

2010年5月6日木曜日

Twig?

PHP向けテンプレートエンジンである、Twig。

その出自から、symphonyというフレームワークと

相性がいいとは思うのですが、

別にsymphonyでなくとも使いたいなあと思い、

最近、少し研究しています。



サンプルを見ていると、

変数をassignしてrenderする方法はたくさん見つかりますが、

クラスのインスタンスをassignして

テンプレート側でクラスメソッドを実行するのって

あまりサンプルを見かけることがなかったのですが、

直感的に出来るハズだと思い、やってみました。


呼ばれるクラス。
class vivatest
{
    public function find($param = 0)
    {
        echo "this is vivatest's find method. ( $param ) <br />";
    }
}



クラスのインスタンスをテンプレートに埋め込む処理。
    $testcls = new vivatest();

(・・色々、省略。詳しくは、Twigのサイトでサンプル拾ってください・・)

    $template = $twig->loadTemplate('samplehtml');
    echo $template->render(array('vivatest' => $testcls));



テンプレート。
<html>
<title>title</title>
</html>
<body>
<p>{{ vivatest.find() }} {{ vivatest.find(1) }} {{ vivatest.find('x') }}</p>
</body>



実行結果。
this is vivatest's find method. ( 0 )
this is vivatest's find method. ( 1 )
this is vivatest's find method. ( x )




・・・別に、何のことはなかったですね。



直感的に「こうするんじゃないかな?」と思った方法で、

ちゃんと実行することが出来ました。

2010年4月13日火曜日

ヤリタイコト

一人親方になろうと決めて、色々と活動するようになって以来、

自分で何がしたいのか自分でも測りかねていて、

そのために、「何かやりたい」みたいな漠然とした思いだけを抱えて

それでもメシ食っていくために全然違うことをしてきた気がします。



そのため、トンチンカンなことをしては、自分で苦しんできた気がします。



それが、今日(ついさっき)、少し見えてきた気がしました。

自分が本当にやりたかったことは何なのか。



ザックリと企画書を書いて、色々な人に見てもらいに行って、

カネになるかどうか、カネになるようにするにはどうしたらいいか、

相談するようなところから再スタートを切りたい心境です。



・・・って言うか、ええい、やっちゃえ。(笑



少し遅すぎる感はありますが、ここに至るまでには、きっと、

自分を追い込む期間が必要だったのだろうと考えることにします。(^^)

2010年4月9日金曜日

不況に思う

不況の中、自社の状況を変えたいと真剣に考える会社は

昨年の内から仕込みを始めていて、

今年、それが結実するように

動いていたように見えます。



しかし、不況はやはり甘くはなく、

仕込みが甘かったところは淘汰されているように見えます。



不況による「change」とは、

弱いところが消えていき、強いところが息を吹き返す、

そういう種類の変化であるように見えます。



こういう時期に、中長期戦略の変更を余儀なくされて

いる会社は、ひょっとしたら、少し考えたほうがいい

のかも知れません。



中小企業はどこも大変かも知れませんが、

勢いをつけている会社も散見されることを鑑み、

焦らず、くさらず、確実に仕留めにいくことが

いまの時期は重要だと思われます。

2010年3月26日金曜日

DOMMUNE

いま何だか話題らしいです。
http://www.dommune.com/


ちなみに、WEBサイトはflashが一杯でした。

flashはすべて一旦ブロックしている私のブラウザ画面では、

↓このように見えます。

2010年3月25日木曜日

HTML5

IE9: HTML5で新スタート! XPサポートなし

どうでしょう、いよいよHTML5は本格化していくのでしょうか?

いずれにせよ、HTML5だろうが何だろうが、
お客さんには関係ないっちゃ関係ないですよね。。。

2010年3月23日火曜日

これは・・・?

ネットで↓こんなものを見かけました。

Blog Keyword Visualizer

個人的には、非常に面白いとは思うんですけど、
残念ながら、いまこういうのを見ても、
「ああ、この手のやつ」っていう認識になって
しまうのかも知れませんね。。。

2010年3月15日月曜日

PHP5.3以降

PHP5.3以降では、POSIX拡張正規表現構文を実装する

ereg関数がdeprecatedになるらしい。。。



PHPって言語とお付き合いするのも、

もういい加減疲れますよね。。。

radiko.jp

『パソコンがそのままラジオ受信機となる

 「IP(Internet Protocol)サイマルラジオ」(radiko)の

 実用化試験配信を開始』

・・・だそうです。

ラジオの聴取環境が、近年、著しく悪化しているらしく、

こういった難聴取を解消することも目指している、らしいです。



結構、良い音質ですね。

私のようにラジオ受信機を持っていない人間からすれば、

これは有難いサービスです。



地域限定なので、東京・大阪だけらしいですが、

全国に広まるといいですね。

2010年3月10日水曜日

オフィススイート製品

私は、現在、Microsoft Officeを持っていません。
PCにもインストールされていません。

私は、Microsoft Officeではなく、
オープンソース製品であるOpen Officeを使っています。
これは、Microsoft Officeとの互換性を目指した
オフィススイート製品ということになります。

このOpenOfficeは、実際には、特に操作性の面で、
Microsoft Officeとの違いに戸惑うことが多いです。

今日、お客様のところへお打ち合わせに行った際に
お客様のPCにて、久し振りにMicrosoft Officeを
使わせていただいたのですが、指が操作を覚えて
いたのか知りませんが、妙にシックリとくる感じを
覚えました。

たまに、各種セミナーなどで見かけるのですが、
OSSに魅せられたユーザーさんが社内で使用する
オフィススイート製品をすべてOpenOfficeに
入れ替えたいと提案するんだけれども、社内の
反対にあって断念する場面があるようです。

これは、致し方ないと思います。

”慣れ”を超えることは、本当に、容易では
ないと自分でも感じます。

私は、世の中でMicrosoft離れがもっと進めば
いいなと思って、まず自分から
Microsoft Officeを使うのをやめていますが、
それでも、実際、Excelはやっぱり便利ですものね。

2010年3月9日火曜日

テンプレートエンジン

「PHPがテンプレート言語っぽい」とか、

最近、たまに見かけるのですが、

一体、誰が言ってるんでしょう?





先日、各CMSを比較しつつ紹介するようなセミナーに

参加してきました。


案件に応じて各CMSをどのようにカスタマイズするか

というようなお話の流れでした。


それぞれのCMSが、テンプレートをどうイジるかという

話に終始している中で、WordPressだけは、

どこにどういうPHPコードを埋め込むか、という話に

なってしまっていました。




休憩時間のエレベータの中で、誰が言い出すともなく

「WordPressだけPHPの話をしてた・・・」

とポツリとつぶやくと、そこにいた全員が笑っていたのが

なにか印象的でした。




デザイナさんばかりが集まっているようなセミナー

だったので、PHPの話をされても少々困惑された方も

中にはいらっしゃったかも知れません。





WEBシステムに関して言えば、

システム屋よりもデザイナさんの方が

お客様に近いところに居る場面があります。


その場合には、デザイナさんに優しいシステムの方が

結局はお客様にとって使いやすいシステムになるのだと

考えると、システム屋としては、そこを外さないほうが

いいに決まってると思うのですが、いかがでしょうか?

2010年3月8日月曜日

言葉

日常、仕事の中で耳にする言葉の中で、

幾つか、気持ちの悪いものがあります。
  • コミットする
  • オミットする
  • アサインする
  • アテンドする
などなど。

まあ、別に、いいんですけどね。。。

2010年3月1日月曜日

軽く、風邪引き

昨日日曜は、軽く風邪を引いてしまいました。

一人親方は、健康管理がとても重要ですので、

日曜ということもあって一日大事をとって寝て過ごしました。

お陰でだいぶ良くなりました。



メールを確認したら、引き合いの確認メールを頂戴して

おりましたので、慌ててお詫びとお返事をメールさせて

いただきました。



油断していたつもりはないのですが、

健康管理は本当に重要ですね。

色々と、大事に至らなければよいのですが。。。



季節の変わり目ですので、皆様もどうか

健康管理に気をつけましょう。

2010年2月1日月曜日

「アイデア発想法」的なセミナー

先日、サンソウカンで「アイデア発想法」的なセミナーがあったので、
久しぶりにサンソウカンに行ってきました。

この手の話を見たり聞いたりするのが久しぶりだったので、
まず単純に面白かったです。

セミナー内容を私なりにまとめたものを画像でアップしておきます。

基本といふこと

先日、ある方とお話をさせていただいたとき、
試しに、とても漠然とした質問を投げてみました。

「WEBで何か面白いサービスを展開できないか考えているけど、
 思いつくものが片っ端からカネになりそうにない。
 カネになりそうなサービスって、どうやって思いつくの?」

いま改めて自分で書いてみて、フザケてんじゃねえかと
訝しく思うほどの質問ですが、いただいたお答えは
非常にまっとうなものでした。

「まずは、WEBで面白いサービスを展開してるなと思う企業の
 サービスを自分なりに分析してみて、その企業がまだ
 やっていないニッチな部分を探してみてはどうか?」

・・・基本、ですね。


同業者分析とか、異業者分析とか、そういうことは
やはり誰でも一度はやってることでしょうね。。。

ただ、この方もお話されていたのですが、
そうやってシリアルに発想していく方法論の他に、
ドーンと3段飛ばしするような発想法も
どこかで必要な気はします。

いずれにせよ、
 ・自分の足元をみる
 ・自分の周りをみる
 ・宇宙から世界を眺める
というように、幾つかの視点を同時に併せ持っていると
何かと強いんでしょうね。

2010年1月31日日曜日

私の休日の過ごし方

毎週日曜日、
・ウィルススキャン(ネットに繋いだことがないデバイスもすべて)
・ボットスキャン(同上)
のように徹底的なスキャンをかけているので、
正直、仕事になりません。

※定常的なスキャンは日々実施していますし、
 ウィルスガードをOFFにすることは、ありません。
 そういう日常的な対策を超えて、
 より徹底的にウィルス対策する日が日曜日なんです。



そのため、毎週日曜日は、
・水まわりのお掃除
をガッツリやることにしています。

あまり詳しくありませんが、以前TVで
『お金を貯めたかったら水まわりを常に
 清潔・整頓しておくこと』
というようなことを風水の先生が
言っていたような記憶がウッスラとありまして
そのためです。

トイレやお風呂をゴシゴシ磨いていると、
何かに頭(こうべ)を垂れるとか、
何かに奉仕するとか、
そういった心持ちに至ることがあります。

この心はきっと大事なんだろうと
思うことにしています。

一週間に一度くらい、徹底的に掃除してみると
とても気持ちが良いものです。

お勧めです。

2010年1月29日金曜日

一つの理想・指針

『士別れて三日、即ち更に刮目して相待すべし』
日々鍛錬している者は三日も会わなければ見違えるほど変わっているということ。転じて、いつまでも同じ先入観で物事を見ずに常に新しいものとして見よという意味


こうありたいと願う今日この頃です。

2010年1月25日月曜日

改めて・・・

年も改まって早一ヶ月が経とうとしています。



改めて、当方が展開したい事業の方向のひとつを書いてみますと、

【システム開発による作業効率化のお手伝い】

というのがあります。(2010年1月現在)



今まで数日かかっていた作業が1分で終わったりすると

やはりインパクトがあります。

数日かかることを前提にした作業の進め方と

1分で終わることを前提にした作業の進め方は

当然変わってくるものです。

作業のリズムというようなものが変わり、

今まで間延びしていたようなリズムで進んでいたものが、

テンポよくピッチの速いリズムで進むようになるものです。



やがて、その作業を1分で終わらせることが当たり前に

なった頃、私の仕事は完了なんだろうと思っています。



そして、それは、お客様の苦手な分野であればあるほど、

インパクトを持っていると思います。



WEBの分野は、まだまだ未開拓な部分も多く、

技術基盤自体が日進月歩しているような状態です。

今のような変化を求められている時代に、

こういった発展途上なものを自分の仕事に

使わざるを得ないお客様にとって、

WEBというのは、まだまだ、もっと便利になる

可能性を秘めていると、私は思っています。



その一例がCMSと呼ばれるシステムです。

CMS 【コンテンツマネジメントシステム】
CMSとは、Webコンテンツを構成するテキストや画像、レイアウト情報などを一元的に保存・管理し、サイトを構築したり編集したりするソフトウェアのこと。広義には、デジタルコンテンツの管理を行なうシステムの総称。
Webサイトを構築するには、テキストや画像を作成するだけでなく、HTMLやCSSなどの言語でレイアウトや装飾を行ない、ページ間にハイパーリンクを設定するなどの作業も行なう必要がある。これらの要素を分離してデータベースに保存し、サイト構築をソフトウェアで自動的に行なうようにしたものがCMSである。
(以上、e-wordsより転載)

専門知識とか無くても、WEBの更新や管理を簡単に行えるようになる、

ということです。



現在、CMSは、無料(オープンソース)のものから、有料なものまで、

とてもたくさんの種類の製品が世の中に出回っていて、

どれを選べばよいのか困るほどです。

新しいものが生まれては消えていったりすることもありますので、

迂闊に手を出すのは躊躇われます。



その中で、当方は、Xoops(ズープス)という製品を推しています。

これは、オープンソースのライセンスで開発が行われている、

無料のCMSです。



無料ですので、手取り足取り教えてくれることはありませんが、

オープンソースだし、日本でも長い間使われてきたので、

WEBで検索すれば、知りたい情報をたくさん得ることができます。



昨年くらいから、各種CMSの使われ方を探るべく、裏で情報を

取っていたのですが、Xoopsはまだ人気があるようです。

色々なCMSを横に並べて眺めていると分かるのですが、

イノベーション採用者カテゴリが必ずしも

分かりやすくキレイには当てはまりにくく、

最初の内は、イノベータ・初期採用者・初期多数者が

渾然となって、使い始めているようなところがあります。

 ・システム開発を生業とするような人たちが使う
  ⇒「こんなシステム開発技術を使っているらしい」
  ⇒「導入してみた」
  ⇒「機能の一部をネチネチと使ってみた」
  ⇒「デザインをこのように改造した」
  ⇒「機能の一部をこのように改造した」
  ⇒「機能の一部をこのように新しく作った」

 ・ビジネスに目を光らせている人の中で
  割とシステムに明るい方々が使う
  ⇒「こんな機能やあんな機能がビジネスで使える」
  ⇒「導入してみた」
  ⇒「機能の一部をネチネチと使ってみた」
  ⇒「デザインをこのように改造した」

 ・一般の新しいものがお好きな方々が使う
  ⇒「こんな機能やあんな機能が面白そう」
  ⇒「導入してみた」
  ⇒「機能の一部をネチネチと使ってみた」
  ⇒「デザインをこのように改造した」

それが、やがて、後期多数派やラガートへと伝播されていきます。

 ・フツーの人たちが使う
  ⇒「こんな機能やあんな機能があるらしい」
  ⇒「導入してみた」
  ⇒「機能の一部をネチネチと使ってみた」

いま、新しく出てきているCMSは、まだまだ前者のレベルにあって

その普及に腐心しているようなところが見受けられますが、

Xoopsは、既に、すっかり後者の領域に入っているようです。

導入事例も星の数ほど豊富にあります。

つまづくポイントとその対策も、もう出尽くしている感すらあります。



・・・と、ここまで説明して、改めて、

当方の事業の方向の一つを書いてみると、

【CMSによるサイト構築のお手伝いと
 CMS利用による効率的なサイト運営のお手伝い】


ということになろうかと思います。



今年は、この辺りをもう少し深く踏み込んで

事業展開していけたら、と考えています。



今年も宜しくお願いします。

2010年1月22日金曜日

干草と針

(goo辞書より)
(look for) a needle in a haystack
干し草の山の中の針(を探す)
((不可能な事, むだ骨などのたとえ))


以前から、PHPの関数リファレンスを参照していると、

引数名に $haystack とか $needle とか出てきて、

一体、何だろうとは思っていたのですが、

今日、やっと謎が解けた、という話です。

※例)strpos($haystack, $needle[, $offset = 0])



恐らく、PHPerにはよく知られた話なんだろうと推測しつつ。

まあ、どうでもいいことです。

2010年1月11日月曜日

Magento


・・・グイグイ来てるように見えます。「そのうち時間ができたら研究しておこう」リスト入りです。