JavaScriptでインデックス型の全文検索エンジンを作ってみた。全文検索エンジンを作る際に問題となるのは、インデックスデータを部分的に読み込む方法である。通常はmmapやpreadなどを使ってファイルの一部を部分的に読み込むのだが、もちろん、ブラウザには使えない。ブラウザでファイルの一部分を読み込むには2通りの方法がある。1つは、ファイルを多数のファイルに分割する方法であり、もう1つはHTTPリクエストのRangeヘッダを利用して、ファイルの一部を取得する方法である。前者の利点は、ブラウザのキャッシュが効くことや、対応ブラウザが多いことである。後者の利点は、ファイル数が少なくなるので、インデックスの管理が容易になることである。今回はRangeヘッダの実用性にも興味があったので、後者の方法を用いた。 参考ページ:最速インターフェース研究会 :: Ajaxを使ったシンプルなチャット 転置イ
原因のほとんどは経路依存性*1とかネットワーク効果*2によるもので、Lisp自体の性質とは無関係だと思います。と言った上で、私が何となくLisp系言語を使わない理由としては、Too dynamic: 実行時にコードが差し替えられることがすごい利点だ、と言っている人がいましたが、逆に言えば今どのコードが走っているか理解しにくい、という欠点にも繋がる。Meta programming:S式のおかげでMeta Programmingがしやすいが、Meta Programmingを多用したプログラムは理解しにくい。動的型付け:利点でもあるけど、特有のバグを引き起こす。識別子に関数と値の2種類が別々にバインドできる。これは私には非常に美しくなく感じます。主観ですが。一方でSchemeは言語仕様が弱い。(特にModule機能が標準でない)Proprietaryな実装が中心。CMU LispはStand
2006年12月22日19:00 カテゴリLightweight Languages {perl,ruby} -nle 'print if /start/../end/' アルファギークでも知らなかったというのは、不思議でもあり当然のようでもあり。 naoyaグループ - naoyaの日記 - if /regexp/../regexp/ Perl で正規表現を .. すると、その間に含まれる文字列という意味でマッチさせられる。 % w3m -dump_source http://www.yahoo.com/ | perl -nle 'print if /^<style/../<\/style>/' とするとこれ、実に由緒正しい使い方で、たしかまだperlがhashすらサポートしていない頃からあったと記憶しています。なにしろsed/awkが起源ですから。 NAME operator - se
Rubyの一番のウリと言えばブロック引数メソッドでしょう。 メソッド(関数)とクロージャとブロックの関係についてちょっと掘り下げてみました。 普通のメソッド定義はdef...endで定義します。 def hello name puts "hello, " + name end hello "taro" => hello, taro Rubyでは関数は全てクラスに属するので関数=メソッドです。 トップレベルで定義をした場合はObjectクラスのメソッドになります。 self.class => Object Object.method_defined? :hello => true メソッドはファーストクラスではありません。 ファーストクラスとは以下の4つを満たす言語要素のことです。 1. 名前を付けられる 2. 関数の引数に渡せる 3. 関数の戻り値にできる 4. データ構造の
前回 はコンテキストの概念を眺めて、klassを理解することが必要だという話になったのであった。 klass class文の中では構築しようとしているクラスに対応するClassオブジェクトがselfとなっている。それに、class文の中でのクラスメソッド定義をみると、なんとなく、「デフォルトではselfに、指定すればそのオブジェクトに」というメソッド呼び出しにおけるレシーバー解決に似ている。 class Foo def self.class_method_hoge p :hoge end end class Bar def Foo.class_method_huga p :huga end def self.class_method_huga_of_bar p :huga end end このことを考えるとRubyでは、メソッドはselfに定義されると考えたくなるが、そうではない。実はこれ
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日本 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直
2006年11月26日02:45 カテゴリLightweight Languages perl, python & ruby - ord() vs. Unicode というわけで、ord篇はこちら。 404 Blog Not Found:perl, python & ruby - chr() vs. Unicode とりあえずchrが長くなったのでordは別entryということで。 文字から数値へ(ord) まずはPerlの例。 #!/usr/local/bin/perl use strict; use warnings; use utf8; binmode STDOUT, ':utf8'; sub say { print @_, "\n" }; say ord "\x{61}"; say ord "\x{3b1}"; say ord "\x{5F3E}"; say ord "\x{2A6
WebベースのPodcasting配信システム Podcasting/Vodcasting配信システムです。iTunes向け機能も実装されています。 WebベースのPodcasting配信システム Podcastingをビジネスに応用するのは有効だ。通常のブログと異なり、作業しながら聞く事ができるので、ユーザに接する時間が長く持てる。ニュースや英会話など、耳から入るのが普通になっているビジネス等で利用できる。 そこで配信システムを立ち上げたいと思ったらどのような手があるだろう。ブログにプラグインを入れて対応するのも一つの手だが、専用のシステムを導入するのが早い。 今回紹介するオープンソース・ソフトウェアはPodcast Generator、Podcasting配信システムだ。 Podcast GeneratorはPodcastingを配信するためのブログシステムだ。著作権表示やiTunes
2006年11月20日13:45 カテゴリArt コードとデータの合従連衡 実はその逆の設問もありうる。「プログラムはデザイナーのものなのか」。 矢野勉のはてな日記 - PHPやJavaのJSPやRubyのeRBのクールじゃないところ simfonyの10分デモを見てて考えたことがきっかけではあるんだけど、実はRuby on Railsの勉強で本を読んでた時にも思ったこと。彼らはHTMLファイルにコードを書くことをなんとも思ってないんだね。もちろん、プログラマからすればその方が早いのかもしれないけどね、私には「HTMLはプログラマのものなの?」という思いがあります。 プログラマーに限らず、「プロ」は、分業する際お互いの領域を侵さないようにするのが作法(best practice)であると、プロの多くが思い込んでいる。「コードとデータの分離」をプログラマーが耳たこのように聞かせられてきたのも
前回 は各オブジェクトの基本的な特徴を見ただけで終わってしまった。今回はこれらをコンテキストという観点から見てみたい。 前回のまとめ 呼び出し外側のscopeblock中身戻り値 __send____send__不可能(そもそもコンテキストを保存していない)可能保持しないメソッドの戻り値 Method[],call参照不可能可能メソッド本体とselfメソッドの戻り値 UnboundMethod不能参照不可能-本体メソッドの戻り値 Proc[],call,yield参照可能不可能closureProcの最後の値 Continuation[],call-不可能「続き」戻らない Proc#callにおいてブロック付きの呼び出しが不可能であることは前回は記述しなかった。 sshiさんにご指摘いただいた 。 Procを作成するときに指定するブロック仮引数の記述は、メソッド定義の際の仮引数の記述にとて
String::Diff - 行内差分取得モジュール 普通のdiffは行単位での差分を取るんですが、一行の中での差分がどうしても取りたくてString::Diff(2008/06/24リンク切れなおしたtokuhirom++)ってのを作りました。 既存のCPANモジュールだとString::ShowDiffが微妙に近かったんですが、目的の事が出来ないので作りました。 出来ることは 文字列同士の差分を作って変更無い場所、変更が合った場所で配列を分けて作成。 my $diff = String::Diff::diff_fully('this is Perl', 'this is Ruby'); for my $line (@{ $diff->[0] }) { print "$line->[0]: '$line->[1]'\n"; } # u: 'this is ' # -: 'Perl' fo
Rubyにはコード片を表すオブジェクトが複数ある。 Method , UnboundMethod , Proc である。 Continuation は少し違うけど、実行コンテキストを記憶しているオブジェクトという意味では近いものがあるか。『 Ruby Way 』にはこういういろいろがあることについて「驚くほどのことではありません」と書いてあるけれども私は驚いた。で、これらが微妙に違うのだ。困ったもんだ。いや、便利なのかもしれないが。 それで今回はこれらの概要を眺めてみたいと思う。 普通のメソッド defでメソッドを定義するのが一番普通だやな。 class C def greeting(arg) puts "C#greeting reveived #{arg}" end def iterator yield 'iterator 1st' yield 'iterator 2nd' yield
プログラミング言語Rubyが注目を集めています。Ruby関連の書籍が次々と出版され,2006年6月には国内初の大規模Rubyイベントである「日本Rubyカンファレンス2006」が催されました。また,Rubyで書かれたWebアプリケーション・フレームワークRuby on Rails(以下Rails)が話題となり,Rubyの高い生産性が一般に知られるようになってきました。 Rubyの生産性はJavaの10倍とさえいわれます。なぜRubyは生産性が高いのでしょうか。それは,Rubyはいろいろな言語から優れた所を集めた「いいとこ取り」言語だからです。Rubyの特徴は「構文が強力なので,迅速な開発ができる」「人に優しい言語なので,楽しくプログラミングできる*1」「問題が起こりにくいように設計されているので,初心者でも簡単に安全に作業でき,熟練者は高度なプログラミングを行える」といった点です これらの
I work as a software architect in Washington, D.C. for a consulting company that serves federal government clients. Profile I have more than 20 years of software engineering experience, focusing since 2006 on software architecture and design. My experience includes work as an application architect, systems architect, and enterprise architect. I worked previously as a Java enterprise developer, wri
おそらく来年から?(授業資料によると2006年度冬学期からだったらしい。)前から話はあったが、いろいろな人から聞くようになったので、秘密ではあるまい。OCamlという話もあったらしいが、まあRubyのほうが本とか多いからなあ(質のバラツキはあれど)。 追記:ちなみに現在はJava、それ以前はPascalだったと思う。(C++も少しあった?) 追記2:はてなブックマークから来る方が多いようなので少しだけ。上の話はあくまで教養課程のことであって、情報科学の専門課程では、アセンブリ, C, C++, Scheme, OCaml, PrologないしLiLFeSなどを習って(CやC++はほとんど自習を要求されますが)、インタプリタやコンパイラやOSやCPUも作ります。いつもここを読んでいる方はウンザリする?ぐらい聞き飽きている話だと思いますがスミマセン。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く