サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは本日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。
そもそも、マルコフ連鎖とは何なのか?全く聞いたこともなかった。そして、文章を要約するのはとっても高度なことだと思っていて、自分のレベルではその方法を、今まで思い付きもしなかった。 しかし、以下のようなシンプルなRubyコードでそれが出来てしまうと知った時、目から鱗である...。一体、何がどうなっているのだ?コードを追いながら、マルコフ連鎖を利用するという発想の素晴らしさを知った! 作業環境 MacBook OSX 10.5.7 ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0] mecab utf8環境でインストール済み マルコフ連鎖に出逢う rssを流し読みしていると、以下の日記に目が止まった。(素晴らしい情報に感謝です!) MeCabを使ってマルコフ連鎖 一体何が出来るコードなのか、日記を読んだだけではピンと来なかっ
勉強のためにPerlでモナドを実装してみました。 免責 圏論のモナドの概念をPerlでシミュレートしようと言うエントリであって、モナドを開発にどう利用するかなどについてはびっくりするくらい言及しませんので悪しからず。 1. 圏を考える Perlのスカラ値の任意の集合を対象として、引数も戻り値も一つで副作用がないサブルーチンを射とします*1。domとcodについては、関数が正常に動作する範囲で適当にとりましょう。 * 例: 対象「文字列」から対象「整数」への射 length 2. 自己関手の表現 自己関手は、二つの写像からなります。 対象を対象に移す写像 T_object モノとしては考えますけど今回は実装しません*2。 射を射に移す写像 T_arrow 『サブルーチンを受け取ってサブルーチンを返すサブルーチン』として実装できます。 3. 自然変換の表現 関手Tから関手Sの自然変換は、対象A
drools の記法が DSL らしくて「へー、いいなー」と思ったりしたので、なんとなく書いてみた。バックトラックを考慮していない(最初の答えを見つけたら break する)うえに速度が速いわけでもないので記法の違う if 文と言われると返す言葉もない。 要は rule, when, then のブロックでルールを定義するというのをやってみたかったということで。 when と then はメソッド定義まではできるんだけど DSL 風なアクセスをうまいこと API として定義できなくて _when と _then で妥協した。残念。 class Rrools class Rule def initialize @rule = {} end def _when &condition @rule[:condition] = condition end alias on _when def _th
http://shinh.skr.jp/m/?date=20080823#p01 >RubyコードをRubyで等価に実行可能な記号だけに変換する プログラムは書けるだろうか。 eval"実行したいコード" を記号だけで表現すればいんじゃね? と適当に変換プログラム書いてみた。 def _(_) r="''<<"+_.split("").map{|_| _=_.ord; return "~-_" if _==0 (["_"]*(_&3)+["__"]*(_>>2&3)+["___"]*(_>>4&3)+["____"]*(_>>6&3))*"+" }*"<<" "->{_=-~($$-$$);__=_<<_+_;___=_<<__;____=__<<__;%s}[]"%r end puts"->&_{_}[&:\"\#{#{_"method"}}\"][$$,:\"\#{#{_"eval"}
ちょっと思うところあって JavaScript 内で、複数のファイル情報を作って Zip で固めて、 Data URI を生成するライブラリを作ってみました。 ソースは以下の zip.js です。 http://svn.coderepos.org/share/lang/javascript/Zip/ 使うには 以下の base64.js が必要です。 http://svn.coderepos.org/share/lang/javascript/Base64/trunk/ この base64.js は弾さんが作ったものです。 今回 Zip で使うように、ちょっとチューニングさせていただきました。 こんなことができます // zip オブジェクトを作る var zip = new Zip; // 文字列をファイルとして追加する zip.addString('Hello, world!!', '
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
Yacafi という軽量CGIフレームワーク書いたよ MENTA というウェブアプリケーションフレームワークをかいてみた - TokuLog 改めB日記やらNanoA というウェブアプリケーションフレームワークをかいてみた - id:kazuhookuのメモ置き場やらと軽量CGIフレームワーク作りが流行ってるようなので昼飯食った後に20分くらいで書いたよ。 Yacafi(Yet another CGI application framework interface)と言います。 http://svn.coderepos.org/share/lang/perl/Yacafi/trunkからsvn coできるけど、Yacafiはモジュール一個だけあれば動くようにしてあるのでhttp://svn.coderepos.org/share/lang/perl/Yacafi/trunk/lib/Yac
なんかブックマークに golf とかいうタグがついてるのが目に入って、ゴルフなんてロクにしてないのになぁとか思って、ちょっとゴルフして1言語足してみました。具体的には Befunge 。 http://shinh.skr.jp/dat_dir/fizzbuzz7.gif 前回との差分としては、 Perl と Ruby のコードを融合させた方が明らかに短くなるので融合させて、 z80 をちょっとはマジメにゴルフして、 Befunge 入る隙間を適当に作ってつっこんだというような感じです。したらまだなんか空いてたので by shinh とか入れといた。 z80 と x86 を人生を賭けて縮めたらもう一個くらいなんか入るんじゃないかという気はします。 VMWare fusion でヘンだとかはまぁ直したいけどまた今度。 ソースコードとかそのへん。 http://shinh.skr.jp/dat_
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
PerlのARRAYをRubyのArrayっぽく扱うためのモジュールがすでに三個くらいあって大人気ですね. List::RubyLike List::Rubyish List::Enumerator こういったモジュールを使うと, my @elems = map { $_ ** 2 } grep { $_ % 2 == 0 } (0..100); my $sum = 0; for my $n (@elems) { $sum += $n; } とか書いていたコードが, # List::Rubyishの場合 my $sum = List::Rubyish->new([0..100]) ->grep(sub{ $_ % 2 == 0}) ->map (sub{ $_ ** 2 }) ->reduce(sub { $_[0] + $_[1] }); みたいな感じのメソッドチェーンで書けるようになっ
Introducing Data::Valve 昨日から思い立ってData::Valveというものを書いてみました。XS混じりのスロットリング用モジュールです。 Data::Throttlerでも同じような事ができるわけですが、こっちは内部が非常にごつい。しかも拡張しにくい事この上ない。アクセッサーとか全くないんだぜ? ってことでData::Throttlerとほぼ同等のAPIを持って、内部構成を完全に書き直しました。 Data::Valveは内部の基本スロットリングロジックはものすごく簡単なCで書いてます。単純にスロットリング判定が行われた時間を保存したリンクドリストを格納しておいて、その数と現在時刻からのインターバルを持って計算するだけです。 ただ、キモはこの計算を行うデータ構造体をシリアライズ・デシリアライズすることによって、外部媒体にこのデータを保存して、複数プロセスどころか複数ホ
こういうことなのかしらん? package Class::Accessor::Fluent; use strict; use warnings; use Sub::Install; our $VERSION = '0.01'; sub mk_fluent_accessors { my ($class, @names) = @_; foreach my $name ( @names ) { Sub::Install::install_sub({ code => sub { my $self = shift; $self = $self->new unless ref $self; if ( @_ && @_ == 1 ) { $self->{$name} = shift; } elsif ( @_ ) { $self->{$name} = [@_]; } else { return $sel
業務系システムでは、一覧表や検索結果の出力がよく行われる。そしてその際によく指定されるのが、カラムを使ってのソート機能だ。これは意外と面倒で、実装したのは良いが、検索を再度行う仕組みの場合は重たかったり、チェックボックスはそのままにして欲しいなどと要望が出されたりすると大変なことになる。 金額部分のソートも問題ないようだ そうした煩雑さから解放されるライブラリがこれだ。既存のテーブルに簡単にソート機能を付けられるようになる。 今回紹介するオープンソース・ソフトウェアはsorttable、JavaScriptのソートライブラリだ。 sorttableの使い方は簡単だ。テーブルのクラス名に「sortable」を指定すれば良いだけだ。そうするとヘッダカラムをクリックしてtbody内がソートされるようになる。クラス名を指定するだけという手軽さが素晴らしい。 日付も正しく並んでいる JavaScri
prototype.js ベースの日付選択用 javascript ライブラリ「protocalendar.js」を公開しました。 rails や cakephp でアプリケーションを作っていて、セレクトタグでは日付を選択し辛いと感じていました。 また、オープンソースの Date Picker ライブラリでは機能不足、もしくはオーバースペック過ぎて手頃なものがないと感じていました。 そこで、社内で prototype.js ベースの日付選択用ライブラリを作ってみようということになり作ってみました。 今後もバージョンアップしていきたいと考えているので、ご意見ご要望などありましたらコメントでお願いします。 【特徴】 *prototype.js ベース(1.5 以降)。 *シンプルで軽量。 *MIT LICNESE *16のローカライゼーションに対応。 *フォーカスでカレンダー表示。(
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く