Hatena::Groupsubtech

ういはるかぜの化学

Tuesday, December 25, 2007

[Plagger] はてなハイクのFilter::EnteryFullText用asset 01:42  [Plagger] はてなハイクのFilter::EnteryFullText用asset - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  [Plagger] はてなハイクのFilter::EnteryFullText用asset - ういはるかぜの化学

http://svn.coderepos.org/share/lang/perl/plagger/assets/plugins/Filter-EntryFullText/hatena_haiku.yaml

画像が表示されなくて悲しいので適当に。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20071225

Thursday, December 20, 2007

[Rails] security_extensions 14:53  [Rails] security_extensions - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  [Rails] security_extensions - ういはるかぜの化学

http://linearnote.org/muziyoshiz/security_extensions のとこの改良版 security_extension を使ってるのですが、ページ内に複数回 secure_form_tag を書くとtokenの差し込まれる位置が一個目のやつにされてしまい残念な思いをするので以下のように修正。

本家のほうも同じことが起こるのかも。

Index: vendor/plugins/security_extensions/lib/security_extensions.rb
===================================================================
--- vendor/plugins/security_extensions/lib/security_extensions.rb       (リビジョン 156)
+++ vendor/plugins/security_extensions/lib/security_extensions.rb       (作業コピー)
@@ -167,7 +167,7 @@
         #   <% secure_form_tag :action => 'create' do -%>
         def secure_form_tag(url_for_options = {}, options = {}, *parameters_for_url, &block)
           buf = form_tag(url_for_options, options, *parameters_for_url, &block)
-          buf.sub!(/<\/form>\s*$/) {|s|
+          buf.sub!(/<\/form>\s*\Z/) {|s|
             hidden_field_tag('security_token', security_token, :id => nil) + "\n" + $& }
         end

IEチーム「冨樫が本気を出したので我々も本気を出した」 13:58  IEチーム「冨樫が本気を出したので我々も本気を出した」 - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  IEチーム「冨樫が本気を出したので我々も本気を出した」 - ういはるかぜの化学

やる気を出せばできるが長続きしないの意。

muziyoshizmuziyoshiz2008/01/17 02:03う。1つのページで複数回secure_form_tagを書く事が無かったので気付きませんでした……。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20071220

Wednesday, December 19, 2007

ActiveRecordMessagesJa 18:04 ActiveRecordMessagesJa - ういはるかぜの化学 を含むブックマーク はてなブックマーク - ActiveRecordMessagesJa - ういはるかぜの化学

http://y-imai.good-day.net/diary/?200702a&to=200702071#200702071

オブジェクトがないとエラーになるっぽいので85行目を

unless object.nil? || object.errors.empty?

にした。

本当はGetTextを使うべきなのかもとは思いつつ面倒なので使わない。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20071219

Tuesday, December 11, 2007

ついでにJScript.NETの超緊急かつ脆弱で危険な明日にでもパッチを出すべきバグを0day公開する 03:11  ついでにJScript.NETの超緊急かつ脆弱で危険な明日にでもパッチを出すべきバグを0day公開する - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  ついでにJScript.NETの超緊急かつ脆弱で危険な明日にでもパッチを出すべきバグを0day公開する - ういはるかぜの化学

"foobar".fontcolor("red"); // <FONT COLOR="foobar">foobar</FONT>

JScript.NET で型を指定しないとValueType(構造体)のプロパティやメソッドがうまく動かない 03:04  JScript.NET で型を指定しないとValueType(構造体)のプロパティやメソッドがうまく動かない - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  JScript.NET で型を指定しないとValueType(構造体)のプロパティやメソッドがうまく動かない - ういはるかぜの化学

どうやら型指定なしだとJScriptEngineの変なObjectになるので、box化が働いてしまうためかプロパティのセッターや内部の値をいじるようなメソッドが思った通りの挙動になりません。

例えば以下のコードを実行すると一見両方同じ結果になりそうですが実は違ってしまいます。

import System;
import System.Drawing;

var rect = new Rectangle(0, 0, 100, 100);
rect.X = 20;
Console.WriteLine(rect.X);

var rect2:Rectangle = new Rectangle(0, 0, 100, 100);
rect2.X = 20;
Console.WriteLine(rect2.X);

内部で何が起こっているのかはMSの人か、Roterのコードを読んだ人か、ildasmかReflectorで逆コンパイルした人にしかわからないのですが、このテストコードを逆コンパイルしてみると不思議オブジェクトを介していることが見て取れます。内部でオブジェクトをごにょごにょしているときにValueTypeがbox化されてるんじゃないかと思われます。

Reflectorで逆コンパイルするとこんな感じです(空行は手でつけました)。

public object Global Code()
{
    Import.JScriptImport("System", base.engine);
    Import.JScriptImport("System.Drawing", base.engine);
    LateBinding binding = new LateBinding("X");
    LateBinding binding2 = new LateBinding("X");

    rect = new Rectangle(0x0, 0x0, 0x64, 0x64);
    binding.obj = Convert.ToObject(rect, base.engine);
    binding.SetValue(0x14);
    binding2.obj = Convert.ToObject(rect, base.engine);
    Console.WriteLine(binding2.GetNonMissingValue());

    rect2 = new Rectangle(0x0, 0x0, 0x64, 0x64);
    rect2.X = 0x14;
    Console.WriteLine(rect2.X);

    return null;
}

割と罠なので気をつけたほうがいい感じですが、JScript.NETなんて使わないですかそうですか。

LINQblosxom クローン 01:02  LINQ で blosxom クローン - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  LINQ で blosxom クローン - ういはるかぜの化学

http://coderepos.org/share/browser/lang/csharp/Linqsxom/Linqsxom/Program.cs

ネタです。まあCGIとして動かしてないんですけどね。

今ReShaperを買うと 00:11  今ReShaperを買うと - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  今ReShaperを買うと - ういはるかぜの化学

2008対応版がメジャーバージョンアップになるはずで負け組になる気がするので我慢。

トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20071211