この記事は abicky.net の Perl 初心者がとある JavaScript コードを読むための基礎知識 に移行しました
この記事は abicky.net の Perl 初心者がとある JavaScript コードを読むための基礎知識 に移行しました
2009年02月27日17:00 カテゴリLightweight Languages PHP - 以外の言語でPHPのsortを実装してみる。 案外笑い事じゃないかも。特にJavaScript! PHPのsort関数は相当おかしい - hnwの日記 なんと、同じ要素を持つ配列をソートした結果が異なっています。こちらはまだいい具合にわざとらしいけど.... Perl [Run via CodePad] #!/usr/local/bin/perl use strict; use warnings; eval { # try Scalar::Util::looks_like_number() require Scalar::Util; Scalar::Util->import('looks_like_number'); }; if ($@) { # use regexp if not avail
2009年02月08日01:00 カテゴリLightweight Languages perl,javascript and more - evalは最後の武器 うーん、そうなのだけど.... メタプログラミングとは - Perl入門〜サンプルコードによるPerl入門〜 メタプログラミングとはソースコードを生成するプログラミングのことです。メタプログラミングによって生成したソースコードは、eval関数で実行することができます。 evalだけがメタプログラミングの技法ではないし、またevalはその威力ゆえ最後の選択肢とすべきだ。 #!/usr/local/bin/perl use strict; use warnings; use Benchmark qw/timethese cmpthese/; cmpthese( timethese( 0, { eval => sub { no warn
やはりやっつけで。Joke module です。 いろいろ書きたいことがあるけど,そのうち(追記するかも)。 libv8 と XS の間をとりもつ bridge.cc。 /* bridge.cc */ #include <v8.h> #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" /* harmful macro!, but, but, ... */ #undef New #include "bridge.h" using namespace v8; class V8Context { public: V8Context() { HandleScope scope; Handle<ObjectTemplate> global = ObjectTemplate::New(); Handle
2007年05月13日06:30 カテゴリLightweight Languages λ萌え - たらいを後回し Gauche Nightではしゃぎすぎたところにもってきて、昨日はEncodeをメンテしながらホームパーティーなんぞをしていたらどうやら風邪を引いてしまったみたい。 風邪で頭が痛いときには、λと戯れるに限る、ということでこの話題。 前回までのあらすじ 404 Blog Not Found:たらいを回すならHaskell 404 Blog Not Found:javascriptでもたらいを回してみた 404 Blog Not Found:gaucheでもたらいを回してみた 404 Blog Not Found:C - Judyでたらい回し ここまでのあらすじでわかった事は、遅延評価(lazy evaluation)するHaskellがむちゃくちゃ優秀なこと、遅延評価がない言語で
2007年04月10日16:30 カテゴリLightweight Languages perl|javascript - 文字列じゃないhash key なぜamachangが「すごい」といっているかおわかりになるだろうか。 IT戦記 - ActionScript 3.0 の勉強会資料 経由 amachang - ActionScript 3.0 勉強会資料 flash.utils.Dictionary このクラスはすごい ある意味 ECMAScript の 常識をぶち壊す 神秘のようなもの ECMAScript もビビる! 俺もビビる あ、ちょ、痛っ 石投げないで>< 以下のJavaScriptを考えてみよう。 var a1 = []; var a2 = [1,2,3] var o1 = {}; var o2 = {'one':1, 'two':2, 'three':3}; var di
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
2006年11月16日16:55 カテゴリLightweight Languages オブジェクトは難しくない。難しいのはクラス 大人だからオブジェクトは難しくなる。子供にとっては実はオブジェクトは自然で自明で簡単だ。 オブジェクト指向を正しく理解する:ITpro オブジェクト指向はしばしば,とっつきづらく難しい技術と言われます。その理由の一つには,対象とする分野が広く,それぞれに深みがあることが挙げられます。しかし,それ以上にこの技術を難しくしている落とし穴とも言うべき原因が二つあると筆者は考えています。それは比喩を乱用する説明の仕方の問題と,「もの中心」を意味するコンセプト自体の問題です。事実、オブジェクト指向というのは最初は子供向けだったのだ。 このことを、現在「オブジェクトとはなんぞや」という大人たちは忘れてしまっている。 それで、オブジェクトとは何か、といえば、「自分が何が出来る
2006年10月16日07:30 カテゴリLightweight Languages perl/javascript - 関数内関数で仮引数を省略 そんなことありませんぞよ。 Structure and Interpretation of Computer Programs H. Abelson / G. Sussman / J. Sussman [邦訳:計算機プログラムの構造と解釈] IT戦記 - Perl で再帰呼出し時のスタック間データ共有 再帰呼び出しのスタック間でデータを共有する場合は、以下のように仮引数を使わなければならない。*1 以下のようにすればOK。もちろんdocument.allないしdocument.getElementsByTagName('*')を使えば再帰の必要もないのだけど例として手頃だったので。 function count_tags(node){ var
フォームポストでテンプレートを送りつけると、それを使ってページを表示してくれるSledge::Plugin::DebugTemplateというのを作った。これによりJavaScriptやCSSのみならず、HTMLテンプレートすらローカルファイルと差し替えて開発ができるようになった。 ソース(nopasteが24時間で消えるの知らんかった) http://rafb.net/paste/results/Ohpek040.html http://la.ma.la/misc/src/DebugTemplate.pm Winkで作ったデモ http://la.ma.la/misc/demo/debug_template.htm ブラウザを制御してページの内容をダミーのフォームに置き換えて現在のバッファの内容をペーストしてフォームポストしています。どちらかというとこっちの方が肝で、このデモは萌ディタと
配列をシャッフル、つまりランダムに要素の位置を入れ替えるというのを、sortメソッドを使ってやってみたのだけど、明らかにダメダメなものになってしまった。その後、あーでもないこーでもないと考えたのだけど、算数が得意すぎて頭が痛くなった。ということを某所でぼやいたらはてのくんがコードを見つけてくれた。どうやらFisher-Yatesという有名なアルゴリズムでやると良いらしい。 最初に書いたコードは、 var a = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); a.sort( function (a, b) { return Math.ceil(Math.random() * 3) - 2; } ); というもの。sortメソッドは、パラメータに与えられた関数が負の値・0・正の値を返すことによって要素の順序を決定するので、その関数がランダムに値を返せばランダ
Perl に HTTP::BrowserDetect というモジュールがあるんですが、これを使うとサーバサイドでブラウザの判定ができます。 my $browser = HTTP::BrowserDetect->new($user_agent_string); if ($browser->is_firefox) { ... }とかして使う。 CSS を静的なファイルではなく動的コンテンツとして提供してるサイトなら、このモジュールを使えば CSS Hackless でクロスブラウザなスタイリングができるよという話。TT で CSS のテンプレートを書いてるのであれば、 div#body ul { [% 'line-height: 120%' IF browser.is_ie %] }とかできて幸せ。というのを思いつきました。Catalyst::Plugin::Browser とかはこのために作
Jemplate - TT2 in JavaScript! 先週の木曜に、San Francisco に来ていた Ingy が IM で "Do you have a time to hack today? I have a pretty neat project we could hack on." てなメッセージをくれたのでちょっとだけハックしてたのが Jemplate。実際には時間がなくてアイデアを練るだけで終わってしまいましたが、Ingy は作業を続けて今日 CPAN に最初のバージョンがリリースされたみたいです(まだ [% foo %] とか FOREACH, IF ぐらいしかできないですが)。 JavaScript の Template にもいろいろあって、prototype.js の最新版には簡単な Template.js コードがついているようだし、ほかにもいろいろとありま
Jemplate is a templating framework for Javascript that is built over Perl's Template Toolkit (TT2). Jemplate parses TT2 templates using the TT2 Perl framework, but with a twist. Instead of compiling the templates into Perl code, it compiles them into Javascript. かぜぶろさんや宮川さんがブックマークしてたので気になってちょっと見てみた新着モジュールの Jemplate。なかなか面白いです。Template-Toolkit で記述したテンプレートのテンプレート変数に JavaScript 上の JSON を展開させることができるという
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く