タグ

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

  • openFrameworksでiPadアプリを作る - Radium Software

    openFrameworksは、なんだかごちゃごちゃっとしているけれど、使って楽しいフレームワークだ。Processingの思想を受け継ぎつつも、「もしProcessingがC++だったら、もっと色々なことが派手にできるぜ!」という奔放さを持ち合わせているような感じがする。 openFrameworksにはWindows版、Mac版、Linux版の他に、iPhone版が用意されている。iPhone版は少しビルド設定を変更すればiPadアプリの制作に利用することもできる。 上のビデオは、試しにopenFrameworksを利用して作ってみたiPadアプリの例だ。オーディオ入力レベルを算出し、それに比例した量で画面上のテキストを歪ませている。openFrameworksを使ってこんな感じのスケッチを作るのは非常に簡単だ。このスケッチのソースコードも60行程度しかない。 ごちゃっとしていて、ふわ

    openFrameworksでiPadアプリを作る - Radium Software
    paella
    paella 2010/08/18
    openFrameworksでフォントをサウンド同期させてゴワゴワ揺らすサンプルコードを紹介。oFそのものをiOS SDK3.2/4に合わせるための方法も書いてあるのでブックマーク
  • 最新Cコンパイラーの最適化事情 - Radium Software

    State of the art C compiler optimization tricks, Felix von Leitner, Linux Kongress 2009. 最近のCコンパイラーの最適化能力についてまとめたプレゼンテーション。定数の扱いやインライン展開などの基的な項目から始まって,分岐の削除やベクトル化, SIMD 化など,最新のコンパイラーに搭載されている様々な機能について調べている。 この手の分岐の削除はほとんどのコンパイラーで有効らしい。 ベクトル化については gcc がだいぶ頑張っている印象。 「gcc は全プラットフォームにおいてビデオコーデックプログラマーより賢い」 これらの最適化が実際のコードでどのように機能するか気になって逆アセンブリコードを覗いてみる人も少なくないと思うけれど,それを代わりにやってくれた感じだ。この手の話題に興味がある人ならば,目を通

    最新Cコンパイラーの最適化事情 - Radium Software
    paella
    paella 2009/12/28
    考える元。結構賢いことをやっているよ、という記事の紹介。本文は後で読もう.
  • プログラミング言語の特徴を視覚的に比較する - Radium Software

    The Computer Language Benchmarks Game のページでは,計 32 個のプログラミング言語処理系のベンチマークを集計して,そのパフォーマンスを比較している。そして最近,このページに新たなプロットが追加された。単純にパフォーマンスだけの比較を行うのではなく,パフォーマンスと「コードの長さ」を関連付けて比較を行うというものだ。上はそのプロットから一部を転載したもので,全体はこのページで見ることができる。 このプロットでは,縦軸が処理時間(上にいくほど遅い),横軸がコードの長さ(右にいくほど冗長)に割り当てられている。このようなプロットを行うと,多くの言語は3通りの偏り方を見せる ― 左上(簡潔だけど遅い)に偏る「スクリプト系」,右下(速いけど冗長)に偏る「システム系」,そして,左下(速くて簡潔!)に偏る「理想系」だ。ちなみに,右上(遅くて冗長)に偏る言語は無い…

    プログラミング言語の特徴を視覚的に比較する - Radium Software
    paella
    paella 2009/10/01
    縦軸が処理時間(上にいくほど遅い),横軸がコードの長さ(右にいくほど冗長)に割り当てられたグラフの紹介。面白い視点。
  • ざっと見積もりテクニック - Radium Software

    The Endeavour - Three rules of thumb ダフの法則 π 秒は1ナノ世紀に相当する 1世紀を秒に換算すると 3.1556926 × 10^9 秒になる。この関係を覚えやすく整えたのが「ダフの法則」だ。一見,使いどころの分からない法則だけれど,「秒」を「年」に換算したい場合に役立つことがある。 例えば,1個のデータにつき1秒を費やす処理があったとして,今から10億個のデータを処理するとしよう。これを全部処理するには10億秒かかるというのは明らかなことだ。でもそれって,つまり何年ぐらいになるんだろう? ダフの法則を思い出せば,1世紀でπギガ個のデータが処理できることが分かる。つまり,10億個のデータを処理するには,ざっと見積もって30年ぐらいかかるのではないかという概算ができる。 ホッパーの法則 光は1ナノ秒間に30センチメートル進む 原文では「1ナノ秒間に1フ

    ざっと見積もりテクニック - Radium Software
    paella
    paella 2009/09/29
    目からウロコだったのはダフの法則。便利なので身体で覚えよう。「1世紀でπギガ個のデータが処理できることが分かる。10億個のデータを処理するには30年ぐらいかかるのではないかと概算ができる」
  • Impromptu: Scheme ベースのライブコーディング環境 - Radium Software

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

    Impromptu: Scheme ベースのライブコーディング環境 - Radium Software
    paella
    paella 2009/09/15
    ImpromptuはSchemeをベースとした音楽作成環境(?)で、NodeBoxのように試しながら音を作っていくことができる。ただビデオの解説によるとオープンソースではないらしい。
  • BQLSI STAR LASER - Radium Software

    PROCYON STUDIO - BQLSI STAR LASER 佐野電磁さんがディレクション,光田康典さんがプロデュースの iPhone アプリ。往年の LSI ゲームiPhone 上で再現した,その年代の人には堪らないゲームゲーム音楽界の巨匠2人が集まって,なぜ LSI ゲームを……という疑問はさておき,独特の味のある蛍光管グラフィクスや,素朴なブザー音,ボタンを叩くガチガチした音や,電池交換(!)までをも,あらん限りのおっさんの愛情をもって再現している。 この "BQLSI" シリーズは全三部作を予定しているとのことで,今後の展開にも注目したい……

    BQLSI STAR LASER - Radium Software
    paella
    paella 2009/08/09
    ボタンを叩くときのカチカチという音をSEとして使ってあるのがアナログ感を出している。自分のアプリにもこのアナログ感を出したい。
  • 動かない時計と遅れる時計 - Radium Software

    Photo: Darren Hester Word Aligned - Stop the clock, squash the bug ルイス・キャロル「牧師館の雨傘」(The Rectory Umbrella) より 1年に1回しか正しい時刻を指さない時計と,1日に2回だけ正しい時刻を指す時計,どちらの方がいいでしょう? あなたはこう答えます ― 「間違いなく後者だ」 いいでしょう。それでは,私はふたつの時計を持っています。ひとつはまったく動いていません。もうひとつは1日あたり1分ずつ遅れていきます。あなたはどちらの方がいいでしょうか? あなたはこう答えます ― 「遅れる方だ,疑いなく」 それでは,よく考えてみてください。1日あたり1分遅れる方は,再び正しい時刻になるまで12時間,つまり720分遅れなければなりません。したがって2年に一度しか正しくならないということになります。 それに対し

    paella
    paella 2009/07/15
    「1年に1回しか正しい時刻を指さない時計と,1日に2回だけ正しい時刻を指す時計」と「ひとつはまったく動いていません。もうひとつは1日あたり1分ずつ遅れていきます」
  • 単純で正しそうなものが正しいとは限らない - Radium Software

    Coding Horror: The Danger of Naïveté 配列の中身をランダムな順序にシャッフルするコードを書きたい。単純でいいから分かりやすくて間違いの無いコードを書こう。例えば,こんな感じに…… for (int i = 0; i < cards.Length; i++) { int n = rand.Next(cards.Length); Swap(ref cards[i], ref cards[n]); } これは単純で分かりやすい! でも残念! このコードは間違っている。シャッフル後の順序に偏りが出てしまう。正解はこちら。 for (int i = cards.Length - 1; i > 0; i--) { int n = rand.Next(i + 1); Swap(ref cards[i], ref cards[n]); } ぱっと見て違いが分かる? イン

    単純で正しそうなものが正しいとは限らない - Radium Software
    paella
    paella 2008/12/04
    カルドセプト問題と同種と捉えて、その深刻さに気づいておかないと。。
  • 未初期化メモリを使う方法 - Radium Software

    research!rsc: Using Uninitialized Memory for Fun and Profit N個のフラグを扱う場面があるとする。まず,こんな感じで書き始めることになると思う。 bool flags[N]; for (int i=0; i<N; ++i) flags[i]=false; もしこのとき,Nがものすごく大きかったら……フラグをクリアする処理だけで,結構な時間をってしまうかもしれない。 そんなときのために編み出されたのが,上のエントリーで紹介されているアルゴリズム。二つのテーブルを組み合わせて使うことにより,メモリを未初期化のまま使うことを可能にしている。 未初期化のメモリへのアクセスなんて,それ自体が不正なことのように感じられるかもしれないけれど,たまには未初期化のまま使ってみるのもオツなものですよ……という話。実用性については,正直なところあまり無

    未初期化メモリを使う方法 - Radium Software
    paella
    paella 2008/12/04
    リンク先のアルゴリズムをよく読まなければ。まだ理解し切れていないので。
  • 1