2010-02-27
■[BBRK]Python:文字列内での途中改行(のコツ) 
文字列が長くなりすぎるので行をまたいで1つの文字列を作りたい場合,
行末エスケープやトリプルクオテーションを使うことで実現できる.
通例は,
mystr = "Hellooooooooooooooooooooooooooooooooooooooooo\n \ world.\n \ I'm going to bed."
とするか,
mystr = """ Helloooooooooooooooooooooooooooooooooooooooooo world. I'm going to bed. """
として複数行のstringを一度の代入で生成できる.
本来コードの見易さのために行う書き方であるので,目的に沿うように
この例では複数行文字列内でインデントをしている(行頭を揃えている).
しかし実際にこのコードをemacsなどで書き,
生成した文字列を出力すると,
インデント分が空白文字として書き出されてしまい,
上の例では"world."の位置がだいぶ右へ行ってしまう.
見易さを犠牲にしてインデントをしなければいいが,それでは本末転倒である.
この問題は複数行で文字列連結をすることで当然解決できる.
mystr = "Helloooooooooooooooooooooooooooooooooooooooooo\n" \ + "world.\n" \ + "I'm going to bed."
多少見易くなってほとんど見たままの出力がされる.
また数値を代入したい場合も
foo = 1 bar = 3.3333333 hoge = "hogehoge" mystr2 = "foo = %d\n" % foo \ + "bar = %f\n" % bar \ + "hoge = %s" % hoge
で複数行でも一つの文字列に問題なく代入できる.
2009-12-23
■[BBRK]emacs:browse-urlから起動するブラウザの変更 
emacsのtwittering-modeを試しに使ってみた.<iconまで表示されて素敵なプラグインですね.
リンクを開いた時に起動するブラウザのデフォルトがiceweasel(firefox)だったので,ちょこっと調整.
twittering-mode.elを見ると,どうやら外部ブラウザの起動は"browse-url"というelispファイルを使っているらしいことがわかる.
(twittering-enter関数なんかがそう)
なのでbrowse-urlの設定を.emacsに書いて変更.
この例ではLinux上のGoogle Chromeに変更するが,genericなのでコマンド指定の部分を任意のブラウザにできる.
(firefoxをはじめepiphancyとかnetscapeとかは専用の関数があるみたいなのでそちらをどうぞ:参考URL)
(setq browse-url-browser-function 'browse-url-generic
browse-url-generic-program "google-chrome")
でOK.
こういう使い方だと,chromeの起動の速さに特に感心する.
2009-12-04
2009-12-03
■[Audio]TAPESTREA 
今日知って驚いたもの.
Princeton大学が開発した”環境音抽出・再生成システム”(端的に言ってしまうとしょぼい).
つまり:
- 様々な音が入った録音から環境音を複数抽出−>オブジェクト化
- それらを加工(周波数・時間領域で伸縮,ランダム変化付与,etc...)
- できあがったオブジェクトを時間軸上で自由に並べて任意のサウンドスケープを構築
といったもの.
動画を見てもらうとわかるが,これらをちょいダサなGUIで直感的かつ簡潔に実装している優れモノ.
スペクトログラムを時間周波数で簡単に切り取れてしまうシステムって中々無いので,そこのところに妙に関心してしまった.
このあたりが従来のサンプリングシステムとは違うんじゃないか(そのあたりは詳しくないので自信なし).
また変化のランダムネスは環境音にとっては非常に大事なので,それをツマミでちょろっと変えられるのが嬉しい.
で研究室のDebian Lennyにインストールしたんだが,Debianだとaudioというグループに入らないと,
オーディオデバイスにアクセスできないので,tapestreaを立ち上げる時にエラーが出る.
ところが当方はNIS環境下にいるため所属グループを簡単には追加できないとさー.
もちろん
# chmod 666 /dev/snd/*
なんかでパーミッションを与えるとその場は凌げるが,ログアウトしたり再起動すると元に戻ってしまう.
何か良い方法はないだろうか.
taps起動用のシェルスクリプト書くという手もあるにはあるんだけど,まずはもう少し根本を解決したいですね.
にしてもここの研究室(soundlabと呼ぶのか?)は面白い研究をしてるのですねー.
追記:/etc/rc.localにchmod以下を追記することで,毎回起動時にパーミッションを与えるようにしたら解決.もうちょっとスマートな解決法はありそうなんですけどね.


