2008-08-01から1ヶ月間の記事一覧

ScalaパズルをRubyで書くと

リストから表を生成する - Onion開発再開しつつある日記 短くなるかなー? $ ruby -e '$;=",";puts"<table>",ARGV.join.scan(/\d(?:.?\d){0,2}/).map(&:split).map{|x|s="";3.times{s+="<td>#{x.shift}</td>"};"<tr>#{s}</tr>"},"</table>"' 1, 2, 3, 4, 5, 6, 7 こうかな.

mkmf.rbが提供するhave_headerにて実行されるCPP="gcc -E"を,C++用にCPP="g++ -E"にする

require "mkmf" Config::CONFIG["CPP"] = "g++ -E" # … have_header("hoge/foo.hpp") # … Config自体はmkmf.rbでrequireされているrbconfig.rbで定義されている模様.

HTTP用のページにHTTPSでアクセスする # 2008-08-06 - T.Teradaの日記

HTTP用のページにHTTPSでアクセスする # 2008-08-06 - T.Teradaの日記 ブラウザの対処IEは、不完全なHTTPSのページ(HTTPSページにHTTPが混ざっているページ)に出くわした場合、セキュリティ警告ダイアログを表示して、ユーザに対してHTTPのファイルの読込…

REXMLのDoS脆弱性

REXMLのDoS脆弱性 入力の量や構造の複雑さがそのままDoS攻撃に繋がるということか.再帰的なアルゴリズムだと,スタックを消費して落ちそう → スタック数に制限を設けることができるようにして,適切な例外を設定して回避,とかするのかな?個人的にWebアプ…

メソッド定義のデフォルト式はどう実現するのか?

Rubyではメソッドの定義で,仮引数のデフォルト値を与える式も定義することができる. # この場合はcとdがデフォルト値が与えられた仮引数という def foo(a, b, c = [], d = {})ことになる [a, b, c, d] end foo(0, 1, 2, 3) => [0, 1, 2, 3] foo(0, 1, 2) =…

Ruby拡張ライブラリのコード中で`オブジェクトがあるクラスのインスタンスである'ことを確認する方法

こうかな? VALUE rb_cUserDefined; /* … */ VALUE test(VALUE self, VALUE input) { if (rb_cUserDefined == rb_obj_class(input)) { return Qtrue; } else { return Qfalse; } } /* … */ void Init_your_ext(void) { /* … */ rb_cUserDefined = rb_define_…

C++でClass#allocateを登録する

Ruby 1.8.7 p72 VALUE rb_cUserDefined; /* … */ VALUE your_class_singleton_allocate(VALUE klass) { VALUE allocated; /* … */ return allocated; } /* … */ #ifdef __cplusplus extern "C" { #endif void Init_your_ext(void) { /* … */ rb_cUserDefined…

巨大な集合から条件付きでランダムに元を取り出す

またまたふと思ったことが…加算か非加算かを問わず,「無限かもしくは巨大な個数の元(「濃度」って言うんだっけ?)を持つ有限な集合」があるとして,ある条件(例えば扱う集合が整数なら「10ではない」など)が入力として与えられたときに,この条件を満足する…

ちょっと思い付いたコード

ObjectSpace.each_object.to_a.select {|obj| obj.class.equal?(Class) and obj.methods.any? {|m| m == "new" or m == "allocate"}}.length クラスのうち,インスタンスを生成することができるものを集めて,その長さを返す.

RSpecのbeforeはどう書いた方が良いかな?

次のRSpecを使ったテストコードはどちらが良いだろうか? Type 1 describe Foo, "hoge" do before do @arg = gen_something() end it "bar" do Foo.new(@arg).should be_an_instance_of(Foo) end # ...略,以降のコードに@argは現れない. end Type 2 descri…

erubisを使って埋め込みパターンをCのコメントのパターンにしてみた

メモ.何をやっているかはコードで判断して下さいm(_ _)msample.c.erbの内容: #include <stdio.h> /* * ここは普通のコメント */ /**=%[/\* これもコメント *\/]**/ int main() { printf(/**=%w["Hello\ world!" "Hello\ Hatena!"].join(" \"\\n\" ")**/ "\n"); retur</stdio.h>…

ふと見かけ,懐しく感じたので

schemeの内部状態変数 - (programmer? yaotti) こうかな? (define make-func (let ((state 0)) (lambda (x) (let ((ret state)) (set! state x) ret))))