タグ

xslateに関するkoba04のブックマーク (8)

  • Text::Xslate TTerse の深淵なる罠 - Articles Advent Calendar 2012 Casual

    みなさんこんにちわ!みなさんはテンプレート使ってますね! Xslate つかってますね! TTerse 使ってますね!今回はうっかりハマってしまう罠を教えます! SET で作った変数はブロックスコープである ブロックスコープなんだけど SET したスコープの中にあるブロックはスコープの対象外なので以下のテストは動かなかったりするんだ。 my $tx = Text::Xslate->new({ syntax => 'TTerse' }); my $ret = $tx->render_string(<<TMPL,); [% SET chin = 'kiru' -%] [% MACRO xaicron BLOCK -%] [% chin = 'kiranai' -%] [% chin -%] [% END -%] [% xaicron() -%] [% chin -%] TMPL is $ret

    Text::Xslate TTerse の深淵なる罠 - Articles Advent Calendar 2012 Casual
  • YappoLogs: サービスをつぶさない為に Web アプリを書く時にやっとくと良い事2選

    サービスをつぶさない為に Web アプリを書く時にやっとくと良い事2選 テンプレートのエラーが出た時にアプリケーションのログだけに書くのでは無く、誰にでも「ここがえらってるよ!」って見えるようにしとくと間違いが少なくなる傾向があるのでテンプレートエンジンでフック出来るようになっておいてたら、それをうまく使うと良い。 また、テンプレートエンジンがレンダリングしてるフェーズで DB にクエリが飛ぶような構造で書いてあると、非エンジニアのカジュアルにテンプレートいじる人が甚大なクエリを実装してしまう可能性があるので、これも早期に発見しないとサービスが止まってしまい会社の売り上げが下がってしまい社員が路頭に迷うケースが発生してしまうので、これらも未然に防がなければならない。 Text::Xslate + Amon2 ならこうかける。 package MyProje::Web; ...; { my

  • Xslate 1.5008 released - Islands in the byte stream (legacy)

    異常系の振る舞いを少し変えました。 https://metacpan.org/release/Text-Xslate Xslateでは、render()へ渡すテンプレートパラメータや登録関数からの戻り値は必ずEncodeモジュールでデコードしたテキスト文字列であるべきです。しかし、デコードしてないバイト列を渡したときの挙動は未定義で、XS/PPあるいはcacheの有無によって挙動が異なっていました。特にcacheの有無で挙動が変わることがあるのが厄介で、特定の条件が重なるとリロードすると文字化けするという挙動を示すことがありました。 Xslateに限らず、Perlではスクリプト内のテキストの操作はデコードされたテキスト文字列で行うべきで、これを守らなければ文字化けを引き起こします。よって、Xslateでも、上記のようにデコードされていないバイト列を与えると文字化けが起きるのが、Perl的に

    Xslate 1.5008 released - Islands in the byte stream (legacy)
  • Logic-less templateに関する覚書 - Islands in the byte stream (legacy)

    (This entry is a summary of the conversation to @confound and @miyagawa and the paper of ESMVSTE) @confound氏に「Xslateでpush-style template syntaxをサポートしてはどうか」といわれたので、彼やmiyagawaさんからアドバイスをもらいつつ考えたことのまとめ。ESMVSTE(Enforcing Strict ModelView Separation in Template Engines)の内容もまじってます。 HTML::Templateやmustacheのようなlogic-less templateをpush-style template*1という。これは、必要な計算(logic)をすべて終えたあとにテンプレートにデータを「押しこむ」ことによる。 逆に

    Logic-less templateに関する覚書 - Islands in the byte stream (legacy)
  • Text::Xslateで安全なテンプレート生活を送ろう! - Articles Advent Calendar 2010 Hacker

    いよいよクリスマスまで残り4日となりましたが皆様はいかがお過ごしでしょうか。クリスマスが終わると年越しですね。年末年始は枕を高くして眠りたいですね。XSSの恐怖に怯えたくないですね。テンプレートファイルのgrepログを眺めるだけの単純なお仕事で時間を使いたくありませんね。それならText::Xslateを使ってエスケープのことは忘れましょう! Text::Xslateはウェブアプリケーションのために最適化したテンプレートエンジンです。Xslateの一部は今年のJPerl Advent Calendar Casual Trackでも紹介されていますね*1。 [/articles/advent-calendar/2010/casual/8:title=Kolonでかこう] さて、ウェブアプリケーションではユーザーからの入力をHTMLページに埋め込むことがよくありますが、そこで気をつけなければな

    Text::Xslateで安全なテンプレート生活を送ろう! - Articles Advent Calendar 2010 Hacker
  • Kolonでかこう - Articles Advent Calendar 2010 Casual

    nihenです。こんにちは。 今年もブクマ数ビリを目指したいとおもいます! Perl界隈で今年はText::Xslateというテンプレートエンジンが流行っています。 しかしこのXslateで現在主流に使われているSyntaxはTTerse*1であり、XslateネィティブともいえるKolonはまだあまり使われていないというのが現状のようです。 というわけで今回はKolonの使い方の基を紹介します。 Perlコード側 use Text::Xslate; use Hash::MultiValue; my $tx = Text::Xslate->new(); my $var = { foo => 'xslate', bar => { baz => '111', bazbaz => '112', }, baz => [5, 6, 7], hoge => Hash::MultiValue->new

    Kolonでかこう - Articles Advent Calendar 2010 Casual
  • HTMLのscriptタグ内にデータを埋め込む際のエスケープ処理モジュール書いた - blog.nomadscafe.jp

    追記 CPANリリースしました http://search.cpan.org/dist/JavaScript-Value-Escape/ /追記 malaさんの「HTMLのscriptタグ内に出力されるJavaScriptのエスケープ処理に起因するXSSがとても多い件について」にちょろっとでているgistのコードをモジュールにしました。 JavaScript::Value::Escape - https://github.com/kazeburo/JavaScript-Value-Escape JavaScript::Value::EscapはHTMLのscriptタグ内にデータを埋め込む際に、少々過剰にエスケープを行うものです。このモジュールではq!”!, q!’!, q!&!, q!>!, q!<!, q!/!, q!\!, qq!\r! と qq!\n! を\u00xxなどに変換しま

  • Mojolicious meets Xslate - Islands in the byte stream (legacy)

    Re: Mojolicious::Liteで、Text::XSlateを使えるようにする 遅レスですが、MojoX::Renderer::Xslateをデフォルトで__DATA__以下を見るようにしてもらいました。 これでMojoでも特別な工夫なくXslateが使えます。。 #!perl package HelloMojo; use strict; use warnings; use Mojolicious::Lite; # バージョン確認のためuseしているが、 # 通常はplubin()で自動的にロードされる。 use MojoX::Renderer::Xslate 0.02; plugin 'xslate_renderer'; get '/' => 'index'; app->start; __DATA__ @@ index.html.tx <html> <body> Hello,

    Mojolicious meets Xslate - Islands in the byte stream (legacy)
  • 1