タグ

ブックマーク / kzr-2.hatenadiary.org (8)

  • Code Bubbles - 統合開発環境の新しい形 - Radium Software

    Code Bubbles: Rethinking the User Interface Paradigm of Integrated Development Environments 上の動画は,ブラウン大学のAndrew Bragdon氏らによって開発された統合開発環境"Code Bubbles"のデモだ。プログラミングと統合環境に興味のある人は,とにかく一度見てみて欲しい。とてもインパクトのあるデモだ。 現行の統合開発環境は,いまだにファイル単位でのエディットを基としており,それが様々な不便を生み出している。Code Bubblesはその不便を解消するべくデザインされた,まったく新しい形の統合環境だ。バブルと呼ばれる概念を導入することによって,ソースコードのナビゲーションを,より視覚的かつインタラクティブなものへと進化させている。 残念ながら現状ではこのデモが公開されているのみで,他

    Code Bubbles - 統合開発環境の新しい形 - Radium Software
  • Impromptu: Scheme ベースのライブコーディング環境 - Radium Software

    Impromptu は Andrew Sorensen 氏によって作成されたライブコーディング環境だ。言語としては Scheme をベースとしており,それに映像や音楽を扱うためのライブラリ群と,リアルタイムにコードを記述し実行するためのエディット環境が統合されている。 実際に触ってみると,関数型言語とライブコーディングの親和性が,なかなか良いことが分かってくる。エディターの出来も良く,リアルタイムにコードを書きつつ実行するという作業をスムースに流れるようサポートしてくれる。 上のビデオでは, Impromptu のサンプルプログラムを参考にしつつ,簡単なアルゴリズム作曲のコードを組んでみた。ちなみに,ビデオ中に登場する "my:play" 等の関数は,作業を簡略化するためにあらかじめ用意しておいた関数なので悪しからず。 いくつかのデメリットもあるものの(最大の弱点は Mac OS 版しか存

    Impromptu: Scheme ベースのライブコーディング環境 - Radium Software
  • Suckerfish - Arduino を使った MIDI シーケンサー - Radium Software

    Arduino を使った MIDI 機器の制御は簡単に実現できる。それじゃあ何か MIDI を使ったものを作ってみよう……と考え,手始めに作ってみたのがこれ。ミニサイズの簡易シーケンサーだ。こんな風にして使う。 画面下方にあるシンセ (Nord Rack) は自走する機能を持たず,外部から何らかの方法によって制御してやらないと音を出すことができない。このビデオでは,このミニサイズのシーケンサーを使ってシンセの制御を行っている。ついでに,シーケンサーから出力しているクロック信号に同期させるかたちで Electribe を並走させている。 4つのトグルスイッチはパターンを切り替えるための入力装置で,16進数的にパターン番号を指定する。残念ながら,このシーケンサーの中にパターンを作成するための機能は備えておらず,パターンはソースコードの中にハードコーディングする仕様になっている。 SMF ファイ

    Suckerfish - Arduino を使った MIDI シーケンサー - Radium Software
  • Arduino で MIDI 制御 - Radium Software

    Arduino による MIDI 機器の制御は恐ろしく簡単に実現できる。例えばこんな感じで…… ケーブルの加工 不要な MIDI ケーブルを切断してピンヘッダをハンダ付けする。 MIDI では 5 ピン DIN コネクターのうち 2, 4, 5 番のピンしか使用しない(下図参照)。テスターを使って各ピンと繋がる線を特定する。 加工したケーブルは以下のような感じ。ホットグルーを使って絶縁を施してある。 配線 以下のような感じで配線する。 プログラム 以下のプログラムではオクターブ1から6の間の「ド」を順に鳴らしてリピートする。 void setup() { Serial.begin(31250); sendMidi(0xb0, 0x78, 0); // all sound off } void loop() { for (int i = 1; i < 7; ++i) { int note =

    Arduino で MIDI 制御 - Radium Software
  • Structure Synth - 文脈自由文法3Dアート - Radium Software

    Structure Synth は,文脈自由文法を使って 3D CG を作成するソフトウェア。つまるところ, Context Free の 3D 版だ。単純なプログラムから複雑な CG を生成することができる。 GI レンダラー SunFlow 用のシーンファイル出力にも対応しており,これらを組み合わせることによって,とてもお手軽かつ高品質な幾何 CG アート環境が完成する。 以下,とりあえず作ってみた習作。仕組みはほとんど Context Free と同じなので,Context Free に慣れていればすぐにコードを書けるようになる。 set maxdepth 50 12 * { rx 30 } RC BG rule RC { {} CROSS { rx 10 z 0.7 s 0.98 } RC } rule RC { {} CROSS { ry 10 z 0.7 s 0.98 } RC

    Structure Synth - 文脈自由文法3Dアート - Radium Software
  • Core War - Radium Software

    メモリ破壊と言えば…… Core War (コア戦争)というプログラミング・ゲームの一種がある。 Core War では Redcode と呼ばれる仮想アセンブリ言語が用いられる。この言語を使って書かれたプログラムを,同一のメモリ空間上で実行し,互いのプログラムを破壊し合う。それで,最後まで止まらずに生き残ったプログラムが勝ちとなる。詳細については Coding Horror の紹介記事がまとまっていて参考になる。 面白いのは,とにかく自己複製を行いまくるプログラムが強い,というわけではないこと。複製は行わず,たくさんの停止命令をメモリ上にバラ撒いて,相手がそれを踏んで止まるのを待つという戦略もある。あるいは,相手のコードの位置を特定してから破壊しにかかる手もある。 Core War とバグによるメモリ破壊は色々とわけが違うけれど,デバッガーのメモリダンプと睨めっこしながらステップ実行でメ

    Core War - Radium Software
  • パッチから exploit を自動生成する技術 - Radium Software

    Brumley, Poosankam, Song & Zheng. Automatic Patch-Based Exploit Generation is Possible: Techniques and Implications. カーネギーメロン大学の研究者による,パッチから exploit を自動生成する技術の論文。パッチによって変更される箇所を解析することにより,パッチ適用前のプログラムに存在していた脆弱性を見つけ出す,というもの。 実際にこの技術Microsoft の5つのプログラムに対して適用してみたところ,そのいずれからも exploit を生成することができた。しかも,そのうち3つは,公には脆弱性が知られていないものだったという。 この技術によって生成することができるのは,あくまでも「パッチ適用前のプログラムに対する exploit」であって,ひとたびパッチが当てられて

    パッチから exploit を自動生成する技術 - Radium Software
  • Cuckoo Hashing - Radium Software

    ハッシュテーブルからエントリーを検索する処理は,一般に定数時間で済むとされている。つまり,どんなにエントリーが増えても検索の速さは変わらない,ということ。データ構造の教科書には必ず載っていることだね。 でも実際には,ハッシュの衝突が起こった場合に,速度の低下が発生する可能性がある。例えば,一般的なチェイン法(オープンハッシュ)だと,衝突したエントリーに関して線形検索を行うことになるから,衝突が多ければ多いほど,定数時間からは遠のいてしまう。 この速度低下を防ぐ方法はいろいろある。なかでも cuckoo hashing (カッコウ・ハッシング)は仕組みが面白い。こいつは,エントリーの検索を必ず定数時間で済ませてくれるという優れものなんだ。 Cuckoo hashing では,2つのハッシュ関数と,2つのテーブルを用いる。ここでは,2つのハッシュ関数をそれぞれ h1, h2 として,2つのテー

  • 1