第40回京都嵯峨芸術大学制作展が今日から京都市美術館,細見美術館,京都嵯峨芸術大学で開催されています.細見美術館の展示に僕も関わっています.
This movie records YMO’s concert in May 1997. I swear to having no idea on this lighting trick until yesterday (2011).
Why do I say this?
Yusuke Sekiya, Ichiroh Kanaya, Kosuke Sato: Puni Puni Light; Proc. ISMAR WS Art and Entertainment, IEEE, 2007.
Ichi Kanaya’s research activities.
In the talk above mentioned, I presented and demonstrated the exactly same idea.
この映像は1997年5月のYMOのコンサートのものである(らしい).誓って言うが,この舞台照明の視覚効果のことを僕は昨日まで知らなかった.
なぜこんなことを言うのかといえば,これが理由だ.
Yusuke Sekiya, Ichiroh Kanaya, Kosuke Sato: Puni Puni Light; Proc. ISMAR WS Art and Entertainment, IEEE, 2007.
Ichi Kanaya’s research activities.
ああ,つまり,同じ年に同じアイディアを発表しているわけだね.
マニアなきみはもう当然知っているわけだが,僕は平日は毎日2本ずつブログ記事をポストしている.1本目はこのブログで,2本目は日替わりで以下のようにしている.
他に不定期ながらギークニュース紹介のGeekPortとBackslashDotや,リブログ用の Left Side Story もアップデートしている.
ブログは一本化しておいたほうが管理は楽なのだが,分野ごとに分けておいたほうが読み手には都合がよいだろうと思って分類してある.というのも,Google Reader を始めとするアグリゲーションサービスがいくらでもあるので,読者の手で読みたいブログだけ束ねることができるからだ.ちなみに,僕は僕専用のまとめサイトを Yahoo! Pipes で作っている.フィードは http://feeds.feedburner.com/1kanaya だ.
Pineapple II 試作機のアルミケースの蓋を閉じているネジはB-0タッピンねじ3.5の10mm長.
トルクスにすべきかな.
Pineapple II 試作機完成.
センサからのアナログ入力をサンプリングし,MIDIノート信号へ変換して送信します.ホストコンピュータ不要で,電源,センサ,MIDIケーブルをつなぐだけですぐに使えます.
Mac の Quartz Composer とも連携できますので,インタラクティブ映像も簡単につくれます.
Arduino Pro mini のようにUSBが直接刺さらない機種では FTDI Basic を経由してMac/PCと繋いでいることと思うが,ちょっとしたはまりポイントがあったので再びメモ.
もしUSB越しにArduinoが見えないようなら,FTDI Virtual COM Port Driver をインストールすること. /dev/tty.usbserial が見えれば正解.
Xerox has had a hellacious struggle enforcing 5,596,656, the notorious “unistroke” patent. Xerox targeted 3Com’s “Graffiti”, used in the Palm PDAs. In this episode of a continuing saga, the patent lives to fight another day, as Xerox successfully appeals (CAFC 04-1470), at least partly, an invalidity summary judgment, because of “genuine issues of material fact remaining in dispute.” —- Return of Unistroke
Macintosh was born in Xerox. Palm was died in Xerox.
1980年代ごろまでは,大学の工学部に進学するというのは死に方を決めるようなところがあった.機械に挟まれるとか,焼かれるとか,感電するとか,溺れるとか,中毒死するとか(有機と無機を選べる),ウィルスに感染するとか,放射線を浴びすぎるとかだ.学科選びは死に方選びというわけだ.
実際に事故は滅多になかったが,それでも工学部に入学するときには,みんなそれなりの覚悟をしていたように思う.(保険料も文学系より高かった.)
一方,弱電(電子工学)や情報系では死に至る事故というのはまず無い.
当然,そこには文化的な違いが生まれる.コカコーラとペプシのような,IBMとアップルのような,(旧)松下電産とソニーのような関係だ.死亡事故が起こりうる研究分野の場合,どうしても厳しい管理をせざるを得ないし,それゆえ上下関係も厳しくなる.たいてい歴史も長いのでフォーマルになってくるし,その分野でのお作法というものが必然的にあるので,新規参入は難しくなる.(別に新参者に嫌がらせが有るというわけではないが,新参者はそう受け取るだろう.)
どっち系の研究室かというのは,研究室(実験室)についている扉を見ればだいたいわかるものだ.普通のオフィスのドアというのはたいてい内開き(部屋へ向かって開く)だが,もしその研究室のドアが外開き(廊下に向かって開く)なら,その研究室は事故が想定される実験をしている.緊急脱出するためだ.
dankogai氏の最近のブログ記事に触発されて,トライ木に思いをはせる.
話の展開は連想配列の実装としてハッシュテーブルは終わってる?という疑問から始まり,じゃトライ木でいいんじゃね?→いやいやパトリシア木にしておかないととなり,でもメモリ食うよねえ→三分探索木があった!という流れだ.
Wikipediaには簡単な記述しかないが,トライ木のメモリ節約方法としてハッシュトライという構造も知られている.ハッシュトライの日本語での初出はおそらくクヌース先生の「文芸的プログラミング」.
実はこのハッシュトライ,dankogai氏が紹介されている Jon Bentley and Bob Sedgewick の Dr. Dobb’s の記事(1998)には載っていないのだが,両氏によるACM論文(1997)のほうには “Ternary search trees are also easy to implement; compare our code, for instance, to Knuth’s implementation of ‘‘hash tries’’ [3] .” として(否定的に)参照されている.
ソフトバンクモバイルのMMSアカウント宛に最近頻繁に迷惑メールが届く(たぶん他社アカウントも同様だろう).送信元のEメールアドレスは毎回変わるが,メール末尾に「合同会社:ローラ すとろべりー ちっぷ 事務局」とある点は共通している.
内容を要約すると「お前はとあるサイトの有料会員登録をしたはずだ.ついては登録料金10,000円を支払うか,退会手続きをしなさい.さもなければ500,000円請求する.」というものだ.
ネットで検索してみるとかなり有名な迷惑メール送信元なのだが,毎回送信元をドメイン名ごと変えてくるのでフィルタをかけづらい.
メールが来るたびに消去しているのだが,内容が少しずつ変化するみたいなので,何回かに一回は読んでしまう.だんだん脅し文句が厳しくなっていく感じだ.で,必ずこのウェブサイトにアクセスして退会手続きをせよ,手続きは無料だと添えられている.もちろんウェブサイトのアドレスにはこちらのアカウント名がエンコードされていて,アクセスしたとたんにこちらが alive なのが伝わるという手口だ.
退会手続きサイトにはアクセスしていないので断定できないが,古典的な手口だとすると,退会手続きと偽ってこちらの氏名や住所を入力させ,その後別のサイトからまた迷惑メール(それは架空請求かもしれない)が届くという仕組みだろう.
もし同じようなメールを受け取っているひとがいたら,メールは一切無視して捨てることだ.iPhoneの場合MMSクライアント “Messages” がこのようなサイト誘導メールを想定していないのか,メッセージをスクロールするつもりでアドレスをタップしてしまうことがある.もしウェブサイトにアクセスしてしまっても,ブラウザ(Safari)を閉じれば問題無い(運が悪ければこちらのMMSアカウントのアドレスが生きていることを読まれるがアドレスを変更すれば問題無い).
どうか皆様も被害にあわれませんように.
You may want to know how to run loop in Scheme. To illustrate, let’s take computation of n!
(define (! n) (if (<= n 1) 1 (* n (! (- n 1)))))
That’s all. There’s no trick there. Just use recursion. I know you are going to ask “is this practical?” Yes, I can surely answer “it is practical.” But why? Before going deeper, I need to explain local variables —- C wizards/witches sometimes, and C++ wizards/witches never, call them automatic variable.
During the stone age, C wizards/witches used to write a code like this:
func(begin, end, index) {
for (index = begin; index <= end; ++index) {
/* do something */
}
}
main() {
func(1, 10);
/* do other thing */
}
Amazingly we needed to handle local variables as arguments of the function. Of course this was unsafe in C and thus banned. However, by combining lambda, this mixture of arguments and local variables of a function can make syntax very simple. Here’s an example.
((lambda (x y) (do-something-with x)) 100 200)
In this code variables x and y are local to the lambda and they are also initialized by 100 and 200 respectively. Thus this is equivalent to the following C code.
func() {
int x = 100;
int y = 200;
do_something_with(x, y);
}
Though lambda works perfectly well for introducing local variables, the lambda expression separates the names of the variables and their initial values. To avoid this separation, Scheme has an alternative as follows.
(let ((x 100) (y 200)) (do-something-with x y))
This let procedure has yet another function called named-let. The named-let is used for describing loop as in the following code.
(define (print-n-periods n) (let loop ((i n)) (print “.”) (if (> i n) (print “end”) (loop (+ i 1)))))
そろそろループにとりかかろう.例題としてn!を書いてみる.
(define (! n) (if (<= n 1) 1 (* n (! (- n 1)))))
これだけだ.なんのトリックも無い.再帰するだけ.本当にこれでいいのって聞かれるかもしれない.問題ない.でもこれでどうしていいの?その質問の前に,ローカル変数について説明しておきたい.Cウィザード(ただしC++ウィザードを除く)は自動変数と呼ぶやつだ.
石器時代のCウィザードは次のようなコードを書いていた.
func(begin, end, index) {
for (index = begin; index <= end; ++index) {
/* do something */
}
}
main() {
func(1, 10);
/* do other thing */
}
信じられないかもしれないが,関数の引数とローカル変数は区別されなかった(だって両方ともスタックの上でしょ).もちろんCではこれは安全ではないし,それゆえこの書き方は禁止された.しかしながら,λと組み合わせれば,関数引数とローカル変数の混在は可能などころか,言語をシンプルにする.これがその例だ.
((lambda (x y) (do-something-with x)) 100 200)
このコードではxとyがローカル変数で,それぞれ初期値100と200を与えられている.このSchemeコードは次のCコードと同じ意味だ.
func() {
int x = 100;
int y = 200;
do_something_with(x, y);
}
このようにλはローカル変数の導入に完璧な役割をはたすわけだが,しかし変数名と初期値が離れ離れというのは読みづらくもある.Schemeには次の手続きがあって,これを使えば変数名と初期値をくっつけられる.
(let ((x 100) (y 200)) (do-something-with x y))
このletにはもうひとつバリエーションがあって,それは名前付きletと呼ばれている.名前付きletは次のようにループに使える.
(define (print-n-periods n) (let loop ((i n)) (print “.”) (if (> i n) (print “end”) (loop (+ i 1)))))
佐久間勉大尉は沈みゆく潜水艇の中で次のような遺書を残した.
佐久間艇長遺言
小官ノ不注意ニヨリ陛下ノ艦ヲ沈メ部下ヲ殺ス 誠二申訳無シ サレド艇員一同、死ニ至ルマデ皆ヨクソノ職ヲ守リ沈着ニ事ヲ処セリ、我レ等ハ国家ノ為メ職ニ斃モレシト雖モ唯々遺憾トスル所ハ天下ノ士ハ之ヲ誤リ以テ将来潜水艇ノ発展ニ打撃ヲ与フルニ至ラザルヤヲ憂フルニアリ、希クハ諸君益々勉励以テ此ノ誤解ナク将来潜水艇ノ発展研究ニ全力ヲ尽クサレン事ヲ、サスレバ我レ等一モ遺憾トスル所ナシ、
沈没原因
瓦素林潜航ノ際、過度深入セシ為メ『スルイス・バブル』ヲ締メントセシモ、途中『チエン』キレ依ッテ手ニテ之ヲシメタルモ後レ後部二満水(セリ)約廿五度ノ傾斜ニテ沈降セリ、
沈据後ノ状況
一、傾斜約仰角十三度位
一、配電盤ツカリタル為メ電燈消エ、悪瓦斯ヲ発生呼吸困難ヲ感ゼリ、十四日午前十時頃沈没ス、此ノ悪瓦斯ノ下二手動ポンプニテ排水ニ力ム、
一、沈下ト共ニ『メンタンク』ヲ排水セリ、燈消エ、ゲーヂ見エザレドモ『メンタンク』ハ排水シ終レルモノト認ム、電流ハ全ク使用スル能ハズ、電液ハ溢ルモ少々、海水ハ入ラズ、「クロリン」ガス発生セズ残気ハ五〇〇磅位ナリ、唯々頼ム所ハ手動ポンプアルノミ、「ツムリ」ハ安全ノ為メヨビ浮量六〇〇(モーターノトキハ二○○位)トセリ、
(右十一時四十五分司令塔ノ明リニテ記ス)
溢入ノ水二溢サレ乗員大部衣湿フ寒冷ヲ感ズ、余ハ常ニ潜水艇員ハ沈着細心ノ注意ヲ要スルト共ニ大胆ニ行動セザレバソノ発展ヲ望ム可カラズ、細心ノ余リ畏縮セザラン事ヲ戒メタリ、世ノ人ハ此ノ失敗ヲ以テ或ハ嘲笑スルモノアラン、サレド我レハ前言ノ誤リナキヲ確信ス、
一、司令塔ノ深度計ハ五十二ヲ示シ、排水ニ勉メドモ十二時迄ハ底止シテ動カズ、此ノ辺深度ハ八十尋位ナレバ正シキモノナラン、
一、潜水艇員士卒ハ抜群中ノ抜群者ヨリ採用スルヲ要ス、カゝルトキニ困ル故、幸ニ本艇員ハ皆ヨク其ヲ尽セリ、満足ニ思フ、我レハ常ニ家ヲ出ヅレバ死ヲ期ス、サレバ遺言状ハ既二『カラサキ』引出シノ中ニアリ(之レ但私事ニ関スル事言フ必要ナシ 田口浅見兄ヨ之レヲ愚父二致タサレヨ)
公遺言
謹ンデ陛下二白ス 我部下ノ遺族ヲシテ窮スルモノ無カラシメ給ハラン事ヲ、我ガ念頭ニ懸ルモノ之レアルノミ、
左ノ諸君ニ宜敷(順不順)
一、斉藤大臣、一、島村中将、一、藤井中将、一、名和少将、一、山下少将、一、成田少将、一、(気圧高マリ鼓マクヲ破ラルゝ如キ感アリ)
一、小栗大佐、一、井手大佐、一、松村中佐(純一)、一、松村大佐(龍)、一、松村少佐(菊)(小生ノ兄ナリ)、一、船越大佐、一、成田鋼太郎先生、一、生田小金次先生、
十二時三十分呼吸非常ニクルシイ
瓦斯林ヲブローアウトセシシ積リナレドモ、ガソソリンニヨウタ
一、中野大佐、
十二時四十分ナリ
出典:板垣英憲氏のブログ
Loading posts...