さんぷらす
090611
- 2009/06/11 Thu
- etc
■ [野球] インピンジメント症候群
私の肩の症状は「インピンジメント症候群」と言うようです。
ここ1か月なげるーんとストレッチを繰り返してきた成果が出ているようで、どういう訳か今日のキャッチボールもほぼ無痛。
ストレッチは、特に難しいことはしていません。暇がある時に、息抜きを兼ねて左手は頭の方から、右手はお尻の方から手を回し、背中で手を繋ぐ、というのを10秒くらいやります。全然つながりませんがw
しかし、140km/h のボールってどうやって投げるんだろう。
090610
- 2009/06/10 Wed
- SB 2.x
■ [SB2.x][perl] SerendipityNZ Limited が提供する Serene Bach には、セッション ID が推測可能である脆弱性が存在します。
ということで、確認。
■ before
sub id { # create session unique id
my $self = shift;
if ( !defined($self->{'id'}) ) {
$self->{'id'} = $self->{'time'} . '_' . $$;
}
return $self->{'id'};
}
■ after
sub id { # create session unique id
my $self = shift;
if ( !defined($self->{'id'}) ) {
my @seeds = ('a'..'z','A'..'Z','0'..'9');
$self->{'id'} = $self->{'time'} . '_' . $$ . '_';
$self->{'id'} .= join('',map { $seeds[ rand @seeds ] } 0 .. 20);
}
return $self->{'id'};
}
before の方は、時間+プロセスID の組み合わせです。
after の方は、時間+プロセスID+21桁のランダム文字列 です。
時間は秒単位とはいえ、推測可能。プロセスIDは私のところだと3桁(1000通り)だったので、解析しようと思うと時間をどこまで絞れるか。ということになりましょう。
- 1分に絞り込めた場合 => 1分(60通り) x プロセスID(1k通り) = 60k
- 1時間に絞り込めた場合 => 60k x 60 = 3.6M
- 24時間に絞り込めた場合(これがMAX) => 3.6M x 24 = 86.4M
最大で86.4M通りをブルドーザーすれば、分かるという。
これに対し、after は、追加された21桁のランダム文字列の組み合わせが強烈です。
a-z,A-Z,0-9 からのランダムピックアップなので、組み合わせとしては 60^21 ≒ 2.2 x10^37 。10^37とか、読み方がわかりません。
ということで、早くアップデートしよう。
今の実装だと、セッションの寿命を短くすると、総当たりする組み合わせが減る、一方で新しいセッションが生成されやすく、解析されにくい。ただ、寿命を短くしすぎると、記事編集中にセッション切れたり・・という色んな要因のトレードオフ。
IDの生成をハッシュ(MD5とか)にした方がこういう事を考えなくても良くて楽かなとも思った。
090608
- 2009/06/08 Mon
- etc
■ [etc][野球] 「なげるーん」であの頃に帰りたいの巻
同期と草野球チームを作り、野球をやっています。
高校時、野球部に所属していた(しかもピッチャー)という事で、ピッチャーをよくやるのですが、高校時代に肩を痛めており、さらに体力も衰えてきているため、へなちょこボールしか投げられません。
へなちょこボールから卒業したい。
前からそうは思っていたのですが、より強く思うようになったのは、昨年度のリーグ戦優勝でした。
草野球なので変化球が要所で決まれば、それなりに抑えられる。しかし、性格的にはストレートでズバン!と行きたいのであります。
私の場合、腕の加速期に腕の位置がゼロポジションから少しでも外れると棘上/下筋 が激しく痛い。しばらく腕が上がらない程に。
医者に診てもらったわけではないですが、所謂インナーマッスルが弱っている。それから、肩、肩甲骨の柔軟性が落ちていると結論。
上記を改善するために、インナーマッスルの強化にはなげるーん(10gのを1本買いました)を使って、シャドウピッチングをしながら、フォームをチェックしつつ、マッスル鍛えつつ。
柔軟性については、風呂上がりのストレッチで。
なげるーんについては、100回振っても疲れない!と解説DVD中で言われているように、肩の疲労はそれほどありません。
効果としては、約1か月間ほぼ毎日、30分ほどなげーるんを使ったシャドウで続けた所、キャッチボール程度ならば前ほど肩は痛まなくなった気がします。
■ [etc][verilog] 符号付き乗算器
仕事で符号付き乗算器を作る必要があったので、調べた。
WEBが無かった時代の人はこういうの、どうやって調べていたんだろ?とか思いつつ、テストで書いた 4bit の回路を晒し上げ。full_addr は別途用意ください :p
module signed_mul4bit(
in_a,
in_b,
out
);
input [3:0] in_a;
input [3:0] in_b;
output [7:0] out;
wire [7:0] out;
wire [3:0] p0;
wire [3:0] p1;
wire [3:0] p2;
wire [3:0] p3;
wire co00,co01,co02,co03,co04;
wire co10,co11,co12,co13,co14;
wire co20,co21,co22,co23,co24;
wire co30,co31,co32,co33,co34;
wire sm00,sm01,sm02,sm03,sm04;
wire sm10,sm11,sm12,sm13,sm14;
wire sm20,sm21,sm22,sm23,sm24;
wire sm30,sm31,sm32,sm33,sm34;
assign p0 = in_a & {4{in_b[ 0]}};
assign p1 = in_a & {4{in_b[ 1]}};
assign p2 = in_a & {4{in_b[ 2]}};
assign p3 = in_a & {4{in_b[ 3]}};
assign out = {sm34,sm33,sm32,sm31,sm30,sm20,sm10,sm00};
full_addr fa00(.i_a( p0[ 0]),.i_b(1'b0),.i_ci(1'b0),.o_sum(sm00),.o_co(co00));
full_addr fa01(.i_a( p0[ 1]),.i_b(co00),.i_ci(1'b0),.o_sum(sm01),.o_co(co01));
full_addr fa02(.i_a( p0[ 2]),.i_b(co01),.i_ci(1'b0),.o_sum(sm02),.o_co(co02));
full_addr fa03(.i_a(~p0[ 3]),.i_b(co02),.i_ci(1'b0),.o_sum(sm03),.o_co(co03));
full_addr fa04(.i_a( 1'b1 ),.i_b(co03),.i_ci(1'b0),.o_sum(sm04),.o_co(co04));
full_addr fa10(.i_a( p1[ 0]),.i_b(1'b0),.i_ci(sm01),.o_sum(sm10),.o_co(co10));
full_addr fa11(.i_a( p1[ 1]),.i_b(co10),.i_ci(sm02),.o_sum(sm11),.o_co(co11));
full_addr fa12(.i_a( p1[ 2]),.i_b(co11),.i_ci(sm03),.o_sum(sm12),.o_co(co12));
full_addr fa13(.i_a(~p1[ 3]),.i_b(co12),.i_ci(sm04),.o_sum(sm13),.o_co(co13));
full_addr fa14(.i_a( 1'b0 ),.i_b(co13),.i_ci(co04),.o_sum(sm14),.o_co(co14));
full_addr fa20(.i_a( p2[ 0]),.i_b(1'b0),.i_ci(sm11),.o_sum(sm20),.o_co(co20));
full_addr fa21(.i_a( p2[ 1]),.i_b(co20),.i_ci(sm12),.o_sum(sm21),.o_co(co21));
full_addr fa22(.i_a( p2[ 2]),.i_b(co21),.i_ci(sm13),.o_sum(sm22),.o_co(co22));
full_addr fa23(.i_a(~p2[ 3]),.i_b(co22),.i_ci(sm14),.o_sum(sm23),.o_co(co23));
full_addr fa24(.i_a( 1'b0 ),.i_b(co23),.i_ci(co14),.o_sum(sm24),.o_co(co24));
full_addr fa30(.i_a(~p3[ 0]),.i_b(1'b0),.i_ci(sm21),.o_sum(sm30),.o_co(co30));
full_addr fa31(.i_a(~p3[ 1]),.i_b(co30),.i_ci(sm22),.o_sum(sm31),.o_co(co31));
full_addr fa32(.i_a(~p3[ 2]),.i_b(co31),.i_ci(sm23),.o_sum(sm32),.o_co(co32));
full_addr fa33(.i_a( p3[ 3]),.i_b(co32),.i_ci(sm24),.o_sum(sm33),.o_co(co33));
full_addr fa34(.i_a( 1'b1 ),.i_b(co33),.i_ci(co24),.o_sum(sm34),.o_co(co34));
endmodule
090529
- 2009/05/29 Fri
- etc
■ [etc] マイムMIME
会社のサーバ管理者に任命されてしまい。
管理サーバから mail を送信する必要があったのだけど、sendmail が動いていない。
というので、生まれて初めて SMTP サーバに HELO した。
・・ところからはじまって MIME あたりまでを調べたので、覚書。
■ ヘッダでの非US-ASCII 文字の扱い
=?charset?encoding?encoded-text?=
encodingはQまたはB(大文字でも小文字でもよい)であり、前者はほぼquoted-printableと同じ符号化方法、後者はbase64を用いることを表す。
base64 への変換は nkf を -MB オプションで。
ちなみに、HELOした SMTPサーバは会社のセキュリティ部門が管理していて、一度間違えてヘッダに FROM: を指定し忘れエラーを発生さてしまったところ、速効電話がかかってきて、対応早過ぎwwワロタwww。平謝り。
090521
- 2009/05/21 Thu
- etc
■ エクセルのセル
第97回 これだけは押さえておきたいエクセルの知識 前編 - bingo_nakanishiの他言語出身者のためのPerl入門
新社会人になって、業務を与えられるようになるとエクセルをガシガシ使っていくことになると思います。
今回は、これだけは押さえておきたいエクセルの知識です。
自分が良く使うものをプラスアルファ。
- F2
キーボードでセルを編集状態にできます。
■ 鋼の!
鋼の錬金術師 22 (ガンガンコミックス)
スクウェア・エニックス
次の発売は、8月頃だそうで。覚書。
発売日もそうだが、単行本発行スパンが長いので前の巻の内容を忘れてしまうという。
090512
- 2009/05/12 Tue
- etc
■ 釣られた人づてに、さらに釣られるの巻
King of Programming Language - Open Object REXX blog for Japanese
今までどのくらいプログラミング言語を触ってきたか(3秒で挫折したものものも含む)
the world loves the wannabees. 経由
ということで、さっそく列挙。
- C 言語
- C++(ほとんど System-C)
- シェルスクリプト(bash / csh)
- Java (ほとんど Applet)
- JavaScript
- Perl
- Ruby
- awk
- sed
- HTML / XML
- CSS
- LaTeX (学位論文の時だけ)
- PHP
- tcl/tk
- elisp
- Verilog-HDL
- VHDL
- アセンブラ (某マイコン向け)
HTMLがいいなら、TeXもえぇやろ、ということで入れました。
本職は回路設計なので、回路設計向けの言語(System-C、Verilog-HDL、VHDL)が入ってたりするのが特徴。アセンブラは、マイコン開発に携わっていた時、自分の作った回路をマイコンに接続(CAD上で)して、アセンブラでテストプラグラムを書き・・・なんてことをやってましたが、もう書けないw
elisp の挫折っプリはすさまじく、いつかメジャーモードを作ってやろうと野望はあるものの、未だに整形はどうやってやるか分かりません。
090326
- 2009/03/26 Thu
- etc
■ [etc] 出張終了
2年にわたる長期出張が終了しました。おつかれー。
開発に携わった製品は、今年春頃、某大手の主にマイコンを手がけている会社から発売される予定です。不具合コエー。しばらく電話恐怖症になる見込み。
で、少し暇になるかと思いきや、すでに別の仕事が入っていて。スケジュールがおしてます。年度末とか死ねば良いのに。
090325
- 2009/03/25 Wed
- etc
■ [etc] プログラマに必要なたった一つの力
考えても見てください。あなたはイチからLinux やFirefoxやRubyを創る必要はないのです。LinuxやFirefoxやRuby“を”作るのは並大抵のことではありません。が,LinuxやFirefoxやRuby“で”動く何かを作ることはずっと簡単です。
これを読んで、プログラマに必要なたった一つの力、は「動く何かを作る力」より「すでにあるプログラムを読み解く力」の方が要求されるなんじゃないの、と思った。
つまるところ、保守力と改造力。
1/11 >>

