タグ

ブックマーク / blog.yugui.jp (12)

  • 指定バイト数ぐらいの長さの文字列を読み込む方法 - 世界線航跡蔵

    IO から指定したバイト数以内の長さを読み込みたいが、多バイト文字の途中で切れてしまうのは嬉しくないのでそういうときはもう少し読む、というような処理を書きたいことがよくある。 これ、というメソッドは見当たらないので仕方がないから自前でバッファリングしたりしてなんとかしていたのだけど、 IO#gets にそういう機能があることが分かった。 IO#gets はseparatorに nil を指定するとseparateせずにファイルの最後まで読む。それからもう1つ、読み込むバイト数の上限を指定できる。この上限指定は1.9ではもちろん多バイト文字を壊さないようになっている。だからこれらを組み合わせて io.gets(nil, limit) とすると希望の動作をする。行操作でもないのに gets というのはちょっと思いつかないね。 余談 なぜ突然こんなのに気づいたのかというと、今書いているライブラリ

    指定バイト数ぐらいの長さの文字列を読み込む方法 - 世界線航跡蔵
  • ソーシャルブックマークコメントと指さしの比較 - 世界線航跡蔵

    経緯 サーチエンジンへのインデックスを拒否できるのと同じような意味で、はてなブックマークからのブックマークを拒否できる選択肢があっても良いのではないか、という意見を読んだ。mb101boldさんの「 技術的に可能かどうかはわかりませんが、もうそろそろ「はてなブックマーク」に、自分のサイトをブックマークされないようにする機能を実装してもいいのかもしれないですね。 」だ。 mb101boldさんは自分がそうしたいというのではなく、あくまでも1つの可能性として「ブックマーク拒否」を考えているようだ。単なる私怨に基づく「無断リンク禁止論」とは違うようだったので、 続く記事 には私もコメントを付けた。私が述べたのは原理原則論で、webを特殊なものと思わずに一般化して考えた方が良いのではないかという話。「言及されない自由はあるか?」というところね。 で、その次の Deathさんのコメント には興味を引

    t-sat
    t-sat 2011/08/21
    「オフ充」は「お不自由」に通ずとかなんとか…。
  • 障害を持つ人は何故かわいそうでないか - 世界線航跡蔵

    昔々、「障害を持つひとに対して『かわいそうだ』という扱いをするのは不適切」という主張を聞いたが、納得できなかった。だって、目が見えなかったら不便だろうに。歩けなかったら不便だろうに。それはかわいそうではないのか。 今はそれなりに納得できたように思うので、その理屈を書くことにする。 障害のそれ自体 障害というのは、先天的に一定の確率で生まれてくる自然の産物である。また、人間の社会生活という自然な過程で一定の確率で後天的に負ってしまう。いずれにせよ、人間がそれをどう解釈するかは別として、人間が障害と呼ぶ状態はそこにある。 たとえば人間が「障害」を「もげら」と呼ぶことにしたところで「もげら」は無くならない。「もげら」は神の恩寵であると解釈したとしても「もげら」は無くならない。それは一義には人間による社会制度ではなく、自然の産物なのである。 何を「もげら」と見なすか、どこから「もげら」なのか、「も

    障害を持つ人は何故かわいそうでないか - 世界線航跡蔵
  • Rubyのメタクラス階層について再び - 世界線航跡蔵

    承前 。 3ヶ月ばかり時間が空いてしまったけれども、 sumimさんの記事 に答えたいと思います。 yugui さんの図は、たしかにクラスと特異クラス(メタクラス)が揃って並んでいて見た目にはきれいなのですが、これだとクラスが整然と並んでこそいるものの、肝心のメタ階層がどうなっているかという情報のほうは、正直なところ、いささか得にくいものになってしまっています。 いいえ、これで良いのです。なぜって? これが私の図(下記再掲)で一番言いたかったことで、ただ、一般のメタクラスと#<Class:Class>を並べているのはいただけないかな。これはsumimさんのSmalltalk版の図を意識しすぎて、まずかったかなと思います。 図1: うん、やっぱり メタ階層がどうなっているかという情報のほうは、正直なところ、いささか得にくいものになってしまっています。 これは当たってるかもしれません。 図の修

    Rubyのメタクラス階層について再び - 世界線航跡蔵
  • Ruby1.9 のクラスのメタ階層とかevil-rubyとか - 世界線航跡蔵

    sumimさんの「 Ruby1.9のクラスのメタ階層を整理する 」という記事、Rubyの型階層は雑然としているというのは、なんかsumimさんの図が悪いような気もするなぁ。整理すればもうちょっと情報を引き出せるよ。あと、モジュールのせいもある。 前提知識 Rubyは基的には単一継承のクラスベースオブジェクト指向言語なのだけれども、幾つか注意すべき処がある。 クラスはClassクラスのインスタンスである。 モジュール 制限付きの実装多重継承をもたらす仕組み。内部的には、モジュールの「化身」となるクラスを継承階層を挟み込むことで実装されている。 以下、モジュール M に対してその化身クラスを I(M) と表記する。 詳しくは 以前の記事 を参照。 特異クラス 特定のオブジェクトに専属するクラスのこと。特定のオブジェクトにだけ存在するメソッド「特異メソッド」を定義すると、内部的には特異クラスを

    Ruby1.9 のクラスのメタ階層とかevil-rubyとか - 世界線航跡蔵
    t-sat
    t-sat 2008/09/14
  • RubyでPythonのdecoratorっぽいもの - 世界線航跡蔵

    Pythonのdecorator は格好いいよね。Rubyでこんな感じのものを作れないかと何回か考えたものの、上手いAPIを思いつかずにいた。 このたび、 technohippyさんの挑戦 に刺激されて書いてみた。 decorator.rb 仕様としてはPythonに合わせて、呼び出し可能オブジェクトを返す関数としてdecoratorを作成する。そして、declareというメソッドにdecoratorを渡すと、ブロック内で定義されたメソッドはdecoratorで修飾される。 例 class Module def type(name, types) before(name) do |name, args| args.zip(types).each_with_index do |(arg, type), i| raise TypeError, "#{i}th argument #{arg} s

    RubyでPythonのdecoratorっぽいもの - 世界線航跡蔵
  • gitとかRuby 1.9 Internalの解説を書きたいなぁ - 世界線航跡蔵

    gitをベースとしてsubversionと適宜組み合わせて使うような開発プラクティスがだいぶ貯まってきている。この辺りのノウハウの需要というのは意外にあるようで、今日もちょろっと喋った。 Git gitは、『 Pragmatic Version Control Using Git 』の刊行が予定されていたりするし、いずれはより中心に近い人が「バイブル」みたいなのを書くこともあろう。でも、もうちょっと開発プロセスに寄った話のニーズはあるよな、と思う。今試行錯誤の中で自分なりに見いだして来ているもの、あるいは人から教わったもの、これらを体系化して実践に活かせる話としてまとめられたら素敵だなぁと思う。 以前に 諸橋さん に「一緒にgit書こうZE! (w」と言ったのも、まぁ、当に書くかどうかは別としても何かしら体系化のきっかけになればと思ってのことだった。まぁ、案外なんかで実現するかもしれな

    gitとかRuby 1.9 Internalの解説を書きたいなぁ - 世界線航跡蔵
  • そろそろコモンズ・マーカーについて一言言っとくか。 - 世界線航跡蔵

    コモンズマーカー というサービスが立ち上がった。私もyuguiアカウントを作ってある。 コモンズマーカーとは何か 様々な外部サイトに対してユーザーが「マーク」をため込んでいくという意味では確かにソーシャルブックマーク的だ。そして、ページ内にユーザーがコメントを書き込むという意味では以前いくつか立ち上がったWEB付箋紙サービスにも似ている。けれども、これはそれ以外の何かだ。 付箋紙サービスはまだ近いのだけれども、コモンズマーカーは付箋紙というアナロジーを捨てた。これは大きな飛躍である。対象文書の特定箇所にコメントを貼り付けるに当たって、当該箇所のまさにそこにコメントを配置するのが付箋紙である。だが、このやり方はstaticな紙媒体の制約下で当該箇所とコメントとの結びつきを示すのに必要であるに過ぎない。 コモンズマーカーの場合は、コメントは文書の右サイドに一列に表示される。従って、大量のコメン

    そろそろコモンズ・マーカーについて一言言っとくか。 - 世界線航跡蔵
  • ratio - rational - irrational - 効率的なキーサインパーティー問題

    キーサインパーティーの実施と効率的な身分証明書確認について考えてみた。 キーサインもらった 先日、 日Ruby会議2008 の懇親会でPGP公開鍵に卜部さんのキーサインをもらった。キーににサインしてもらうのはこれが初めてで、今まで何のために公開鍵使ってたんだという話はある。「信頼の輪」に入ってなかったわけだからね。 PGPとか信頼の輪とかの話は OpenPGP作法 (PDF)を参照。 ちなみに、私の公開鍵は pgp.nic.ad.jp に登録してあって、yugui.jpのメールアドレスで検索すると出てくる。fingerprintは"438F 411C FC0E 9589 A0E3 CC88 397C C7E4 92DB FC05"。新しいバージョンの名刺にはfingerprintを入れたから、比較的最近名刺を交換した人は見てもらうと裏に書いてある筈。 Rubyコミッタの認証には一応PGP

    ratio - rational - irrational - 効率的なキーサインパーティー問題
  • Rubyの呼び出し可能オブジェクトの比較 (3) - なんかklassの話

    前回 はコンテキストの概念を眺めて、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の呼び出し可能オブジェクトの比較 (3) - なんかklassの話
  • Rubyの呼び出し可能オブジェクトの比較 (2) - というよりコンテキストの話 - 世界線航跡蔵

    前回 は各オブジェクトの基的な特徴を見ただけで終わってしまった。今回はこれらをコンテキストという観点から見てみたい。 前回のまとめ 呼び出し外側のscopeblock中身戻り値 __send____send__不可能(そもそもコンテキストを保存していない)可能保持しないメソッドの戻り値 Method[],call参照不可能可能メソッド体とselfメソッドの戻り値 UnboundMethod不能参照不可能-体メソッドの戻り値 Proc[],call,yield参照可能不可能closureProcの最後の値 Continuation[],call-不可能「続き」戻らない Proc#callにおいてブロック付きの呼び出しが不可能であることは前回は記述しなかった。 sshiさんにご指摘いただいた 。 Procを作成するときに指定するブロック仮引数の記述は、メソッド定義の際の仮引数の記述にとて

    Rubyの呼び出し可能オブジェクトの比較 (2) - というよりコンテキストの話 - 世界線航跡蔵
  • Rubyの呼び出し可能オブジェクトの比較(1) - 世界線航跡蔵

    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の呼び出し可能オブジェクトの比較(1) - 世界線航跡蔵
  • 1