SCENE RESEARCH STATION  
with my everyday
thinking-and-doctrine

*2008.03.12

移転

cygx.mydns.jp/blog/
に移転します。

まだシステムの構築は終わってないけれど、
テストも兼ねて更新は新しい方でやろうかと。
このサイトが消えるわけではないです。
don の許す限り続きます。多分。

自宅サーバがあんまりにも不安定だったら、
こっちでまた更新します。
けど、新しいスクリプトをkmkz.jp/mtm/に置くと、
従来と互換性取れなくなるから(別に困らないけど)、やりたくないし、
そもそも新しいのは、いろいろ rubygem で入れないと動かないので、
xrea で動かすのは面倒。
と、いろいろとシガラミうぜー。

*2008.03.09

雑記

全く更新してないじゃん!
とお思いの方も多いと思いますが、一応生きてます。
それどころかサイトのリニューアルでもするか、って考えているんですけど、
なかなか進まんね。

というのも↑のBBSで cac さんと Decomo さんにツッコミ頂いて、
(それを2月中旬に気づいて。って遅いけどありがとうございます)
このページを出すスクリプトを直そうと少し思ったんだけど、
このソースはもう無理やろ!と突っ込みを入れたくなる内容だったので、
結局全く別物を現在書き直し中です。

過去ログによると、大学生のときに初めて Perl を覚えて作ったのが、
kmkz.jp/mtm/aoc/manual.html
で、その何日か後にこのシステムが稼動し始めてるのね。
昔のデザインはこんなだったぽい。
要は Perl/CGI 覚えたて厨が作った酷いスクリプトを 6 年間も使ってたってわけ。

それをリプレイスしようとしてるんだけど、それに意外と手間取ってる。
怠け者の僕にも更新が長続きするように、
または wiki 的なメモも兼ねれるようにと、
www.tiddlywiki.com/
のようにダブルクリックで編集とか、
写真も手軽に扱いたいから、
swfupload.org/
で簡単に複数のファイルをアップロード、簡単にアルバム表示できたりと、
実装量が増えてるのが原因。
使っているのは、Ruby + MySQL + JavaScript だけど、
Ruby on Rails は使ってません。

てことで、todo としては、
cygx.mydns.jp/~mtm/new/index.rb?arti=2
こんな感じ。

仮置き換えしてもよいレベルまでは来てるんだけど、
困ったのは この xrea.com の MySQL が 4.0.26 と低すぎること。
(xreaはサーバによってverにバラつきがある。ここは運悪く古い)

選択肢は、
- ストアードプロシージャとかを諦める
- postgresに変更
- 自宅サーバで動かす
- サーバを借りる
があるけど、どれも一長一短で困るんだよなあ。
けど、一番可能性が高いのはサーバ移転かも?
と、どうでもいいんだけどちょっと悩み中。


あと、平日家帰ってからこのプログラミングとかしてたら、
疲れがたまって遅刻しまくりで、部長にたるんどると怒られて
やべーわこれ、イェローカードきた!ちゃんと早く寝よう。
って開発自重気味になってるので、置き換えが進まないってのもある。

*2008.01.11

Cell::Cell スピードチャレンジ 2008

いつの間にか始まってた!

今回の課題は、連立一次方程式の解、ってことで定石通り
LU 分解の right-looking で攻める人が多数になりそうな予感。

しかし、前はソートだったし、大学生のアルゴリズムの演習みたいな枯れた課題が多いですね。
とはいえ、アーキテクチャが変われば、攻め方も変わるというもの。
前回より戦略に幅が出やすい問題のような気がするし、動向に要注目です。

emacs::auto-script

小ネタということで、以前 verilog を書くために作った emacs lisp を紹介。

この lisp は、/*auto-script 〜 */で囲まれた部分を任意のコマンドに流して、
その結果を挿入する。

例えば、C 言語で sin table (例えば1.31の固定小数点) を埋め込みたいとする。
(PC じゃないかもしれないけど、組み込みとかなら有り得る)
そんなとき auto-script があれば、ちょろっとコードを書いて、
M-x auto-script してあげれば、以下のように即席でテーブルが埋め込まれる。
int sin_table[256] = {

/*auto-script (ruby)
for i in 0..255
printf "0x%08x,", Math.sin(i * Math::PI / 256) * (1 << 23)
if i % 8 == 7
print "\n"
end
end
*/
0x00000000,0x0001921d,0x0003242a,...
(中略)
0x000c8bd3,0x000afb68,0x00096a90,...
// End of auto-script
};
コードを修正したければ、コメント内の ruby のコードを書き換えて M-x auto-script。
auto-script の直後の (ruby) で言語を指定。(〜)表記を省略すると ruby が選択される。

同じコード内に auto-script が沢山できると、
共通の初期化コードが必要になることがある。
その場合は、
/*auto-script-init

初期化コード
*/
とすれば、その初期化コードがブロック毎の先頭に挿入されたものとして扱われる。


普通 C とかなら、こんなことは要らないのですが、
verilog って言語仕様がいわゆるソフトウェア記述言語と比べると、
あまりに貧弱で冗長なので、こういったプリプロセスが
必要になるときがあるんです。

といっても、verilog-mode で大部分の内部配線は完全自動化 (auto-template系)、
さらに Verilog-2001 が使えるなら generate 文でかなり冗長さは無くせますが。
やっぱり、それでも冗長なのが verilog なんですな。
(正確には verilog に限らず RTL 全般。verilog は VHDL と比べればまだましかも)
ほんと、効率悪すぎ。
今日は 16KBも コード書いたー!って思ったら、殆どが verilog-mode の
自動配線とかあるしな。これらのツールが無かったらマジ終わってる言語ですよ。

というわけで、以下コード。
.emacs に貼り付ければ多分動く。
lisp はよく分かってないので、直情的な書き方していて、不味い部分もあるかもしれない。
変なところがあったら教えてくださると助かります。
; --------------------------------

; auto script (by mnishibe)
(defun auto-script ()
"auto-script"
(interactive)
(let (st end run-string run-init-string ret-string point-kill-end
(cmdname "ruby")
(tmp-buffer (get-buffer-create "*auto-script-tmp*"))
)
(save-excursion
(setq run-init-string "")
(goto-char (point-min))
(if (search-forward "/*auto-script-init" nil t)
(progn
(setq st (point))
(search-forward "*/")
(setq end (match-end 0))
(setq run-init-string (buffer-substring (+ st 1) (- end 2)))
(goto-char end)
)
)

(while (search-forward "/*auto-script" nil t)
(goto-char (match-end 0))
(if (looking-at "[\s\t]*(\\([a-zA-Z0-9_.]+\\))")
(progn
(setq cmdname (buffer-substring (match-beginning 1) (match-end 1)))
(goto-char (match-end 0))
)
)

(setq st (point))
(search-forward "*/")
(setq end (match-end 0))
(if (search-forward "// End of auto-script" nil t)
(progn
(setq point-kill-end (point))
(unless (search-backward "/*auto-script" end t)
(kill-region end point-kill-end)
)
)
)
(setq run-string (buffer-substring (+ st 1) (- end 2)))

(save-current-buffer
(message "run auto-script...")
(set-buffer tmp-buffer)
(insert run-init-string)
(insert run-string)
(call-process-region (point-min) (point-max) cmdname t t)
(setq ret-string (buffer-substring (point-min) (point-max)))
(erase-buffer)
)

(goto-char (+ end 1))
(insert ret-string "// End of auto-script\n")
(indent-region (+ end 1) (point) nil)
(message "finish auto-script...")
)
)
)
)

あけおめことよろ。なんて便利な言葉なんだろ。
携帯小説といい、日本はどんどんライトになっていく。
物事が単純になるのは悪くない。

しかし、松下電器産業株式会社 が パナソニック株式会社 になるのはちょっとやだなあ。
長期的に見ればプラスかと思うけど、社名の歴史感溢れる重さが良かったのに。

どうでもいいけど、HTML タグの pre の実装が IE と Firefox で違うのね。
IE だと上のコードがすっきりみえるけど、Firefox だと間延びしちゃう。
LF の解釈が違うようだが、なんとかしていただきたい。

oldlog 99-00 00-01 01 01-02 02
newlog 2002 2003 2004 2005 2006 2007
category scene | 2ch | 麻雀

Copyright (C) 2003-2004 mitsuman(mnishibe at ertl.jp) All Rights Reserved.

750k+