mac で ustream で配信するまでのメモ

なんか知り合いがお絵描き配信始めたらしいので、対抗してプログラミング配信を始めてみました。
配信するまでのメモ置いときまっ

環境

Mac OS X 10.7.2
Ustream Producer 2.0.1

番組の作成

Ustream はまず番組を作ってそこに対して映像を送るという形になってるっぽい。
http://www.ustream.tv/ でアカウントを作成した後


右上のユーザー名 > ダッシュボード > 番組の新規作成


適当に入力して作成をする。んで右上のライブ配信ボタンから配信を開始でける。
Web カメラがあるノートPCとかだとそのまま適当に「配信の開始」を押せばできるっぽい


mac book air ならマイクもあるので、自分配信(笑)するなら特になにも設定がいらなくぽくて世の中すげーと思た。

デスクトップの配信

http://www.ustream.tv/producer からフリー版を落とす。


Share photos on twitter with Twitpic


真ん中あたりのアイコンの「Desktop Presenter を起動」を押す。
サウンドエンコーダー的なものインストールしたいのねんと言われるのでインスコする。



Share photos on twitter with Twitpic


Ustream Producer の↑のメニュー > メディア > 新規の Desktop Presenter を開いて、Desktop Presenter のウィンドウに表示されている TCP/IP アドレスを入力する。



Share photos on twitter with Twitpic


カメラ一覧に Desktop Presenter が追加されて、選択して「配信の開始」で自分の番組の URL 見て配信されてたら成功。

無料でHD配信したい場合

配信設定で画質を選択できるんですが、無料版だと高帯域幅までしか選択できません。
しかし Pro お試しデモ機能を使用すると「カスタム プリセットの編集」が出来るようになります。


「モバイル/低帯域幅 16:9」のビットレートとか高くして保存して、Ustream Producer をいったん終了させます。
んで、再度起動した時お試しデモ機能は終了してるんですが、配信設定はまんま残ってるというあるさま。。。


Share photos on twitter with Twitpic
一応自分はこんな感じに設定しときますた。なんでこんなザルなんだ^q^


これは通常の操作(ノンクラック)で可能な手順です。
なんで明らかに開発側の不備なので現在のバージョンではやっちゃって問題ないとは思います(あくまで俺ルールなので自己責任で!)


ただ、将来のバージョンで修正されていたらちゃんとお金を払いましょうと言った感じです。


http://www.ustream.tv/channel/alphaneet
ちなみにここ僕のチャンネルなんでよろですw

追記

たまに既に配信を開始してる場合、途中から入ったら画面が真っ黒で配信されない場合があるます。
その場合一度配信を切って、配信しなおしたら上手くいくんですが原因は不明というあるさま;ω;


ズルしようとした天罰かぁっー!

おぺれーしょん・りふれくしょん のレポート(名前に特に意味はない)

sbt は github のプロジェクトを参照することが可能と教えてもらったので試してみました。
(.git リポジトリの url あるなら多分どこでもいける)


maven-repo にするまでもない共有ライブラリとか置くといいかもしれません。(受け売り)

環境

scala 2.9.1.final
sbt 0.11

ライブラリ側

github に適当なリポジトリを作っときます。

mkdir lib
cd lib
vim Lib.scala

object Lib { val msg = "える・ぷさい・こんがりぃ" }

sbt compile(念のため)
git init
git add Lib.scala
git commit -m 'first commit'
git remote add origin "自分の github の .git の url"
git push origin master

ユーザー側

https://github.com/harrah/xsbt/wiki/Full-Configuration
http://eed3si9n.github.com/sbt-getting-started-guide-ja/multi-project/
正直適当にやったら動いたという感じなので、詳しくはこちらを参照してください。

mkdir user
cd user
mkdir project
vim project/Build.scala
vim User.scala

import sbt._

object MyBuild extends Build {
  lazy val root = Project(id = "", base = file(".")) dependsOn(lib)

  // 自分の github の .git の url。read-only の url じゃないと駄目だと思われ。
  lazy val lib  = uri("git://github.com/alphaneet/lib.git")
}
object Main extends App { println(Lib.msg) }

sbt を起動した後に Build.scala を追加した場合は reload > update をしてください

run
える・ぷさい・こんがりぃ

ライブラリファイルのコピー先

Cloning into /Users/alphaneet/.sbt/staging/6a76381d920334f075f7...

"sbt を起動した時" or "既に起動してたら update した時" にこのようなログが出ます
これがコピー先でしてそこに移動すればソースコードがあります。


あとコンパイルした場合もライブラリのクラスファイルはここに置かれることになります。


という感じになりますーではではー
La jodaso stiana.(別れの合い言葉、意味はない)

processing のキャンバス上に swing コンポネーションを配置してみた

Share photos on twitter with Twitpic


今まで知らなかったんですが、mac で java.awt._ を使用した入力フォームだと日本語入力が出来ないようです(IMEが日本語に切り替えれない)


これゲームのチャット機能とか考えると致命的な致命傷だったんで、Swing の入力フォームを使うようにしてみました。


Mac とかでゲームする人いないんでーw日本語はサポートしない(キリッ とかでもよかったんですが、まぁ自分が一番困りそうなのでw


公式Wikihttp://wiki.processing.org/w/Swing_JSliders を参考にしました。

環境

scala 2.9.1
processing 1.5.1

やってること

  • PApplet(java.awt.Applet) に直接コンポネーションを add しても動かないので、JPanel を一枚噛ませてる。
  • PApplet は別スレッドで独自にループしているので、常に processing の描画が手前に来てしまう。なんで processing の描画(paint)の後にコンポネーションの paint を呼ぶ。
  • Border がちらつくので、paint の変わりに paintComponent を呼んでる。setBorder(null) でも良い気がしますが、こっちの方が少しでも早そう感があったので。。。

注意

・JList とかを processing のキャンバス上に置くとちらつく;ω;使うのは TextField だけにして他は自作するのがいいかもorz
・公式wiki でも使ってる方法なので大丈夫とは思いますが、PApplet#runSketch は色々と情報を取得してるんですが、今回はそれを使ってないので何か困ったこと起きるかも。

processing で scala の並列コレクションを試そうと思ったらヌルポだったでござるの巻

Share photos on twitter with Twitpic
はい。そういうことです。
このスレは早くも終了ですね。


https://gist.github.com/1366985 の Par.scala の 183 行目の balls foreach を balls.par foreach にしてみると

[error] (Animation Thread) java.lang.NullPointerException
java.lang.NullPointerException
at processing.core.PGraphics.vertexTexture(PGraphics.java:1220)
at processing.core.PGraphics.vertex(PGraphics.java:1179)
at processing.core.PGraphics.imageImpl(PGraphics.java:2922)
〜省略〜

これまた見事なヌルポでおじゃるな。ほむほむw


まぁ当然のことながら processing は並行レンダリングに対応してないという顔になる。終わり。
だれか processing に並行レンダリング機能はよw

環境

java 1.6.0_26
scala 2.9.1.final
sbt 0.11
processing 1.5.1

スペック

CPU 1.7 GHz Intel Core i5
メモリ 4 GB 1333 MHz DDR3
記憶ドライブ SSD

折角作ったので計測してみた。

Share photos on twitter with Twitpic


par が processing で動かないことに気づいたのが結構作りこんじゃった後でして(←頭パー)
このままお蔵入りも勿体ないので、par なしのやつだけでも計測してみました。


y 軸がフレームレートで、x軸が生成している弾の数ですね。
画面サイズは、1024 x 768 です。


グラフを見る限り、4000個ぐらいまでは framerate を 60 でキープ出来るので普通に processing + scala弾幕シューティングは可能なんじゃないでしょうかね?


もちろん本番のゲームではもっと処理が入るので、数は落ちるでしょうがね。

実行

https://gist.github.com/1366985 から Par.scala と build.sbt を落としてきて、

sbt run

sbt の導入が分からない場合はグーグル先生や http://d.hatena.ne.jp/alpha_neet/20111012/1318437291 を参考にしてください。


フレームレートが 50 以下になるか、マウスをクリックすると弾を初期化して gruff.rb と screenshot<日付>.png を吐きます。


gruff.rb はグラフを吐く ruby スクリプトでして、動かすには http://d.hatena.ne.jp/alpha_neet/20111115/1321307074 を参考に gruff を入れ

ruby gruff.rb

で processing_framerate_test.png が吐かれます。

Par.scala を弄りたい時のメモ

変わる内容 Par.scala の行: 軽い説明
画面サイズ 112: size
フレームレート 114: frameRate
弾が初期化されるフレームレート 196: fRate の値。この行をコメントにすると初期化されなくなる
マウスクリックで弾が初期化されてうざい時 199: をコメント
プレイヤーのサイズ 36: createCircle
プレイヤー速度 119: player.speed
プレイヤーの弾を出す間隔 85: shotCt
プレイヤーが弾を出す数 17: List.range(0度 から 360度 までを x 度の間隔で弾を出す) という意味
弾のサイズ 34: createCircle
弾の速度 93: speed

lion に gruff を入れてみた

グラフを作ってみたかったので入れました。ghostsciprt のところで少し詰まったのでメモっときます。

環境

Mac OS X 10.7.2
ruby 1.9.2p290
rmagick 2.13.1
gruff 0.3.6

インストール

http://d.hatena.ne.jp/ruedap/20110320/mac_ruby_imagemagick_rmagick_install を参考に

brew install imagemagick
gem install rmagick
gem install gruff

これで ok なはずだったんですが、http://nubyonrails.com/pages/gruff のコードサンプルを実行してみると

/Users/alphaneet/.rvm/gems/ruby-1.9.2-p290/gems/gruff-0.3.6/lib/gruff/base.rb:1088:in `get_type_metrics': unable to read font `/usr/local/share/ghostscript/fonts/n019003l.pfb' @ error/annotate.c/RenderFreetype/1120: `(null)' (Magick::ImageMagickError)

というエラーが。。。むむむむ。。。
色々試してみたんですが上手くいかず、駄目元で ghostscript 本体を入れてみるかーとなり

brew install https://raw.github.com/mxcl/homebrew/master/Library/Formula/ghostscript.rb

をやってみたところ動きました!!!


試しに /usr/local/share を見てみたところ ghostsciprt ディレクトリもちゃんと出来てました>_<
めでたい。めでたい。

使いかた

基本的には http://d.hatena.ne.jp/kj-ki/20090202/p1 を参考にすると良さそうです。
グラフの線の色を変えるのは data メソッドの第三引数に色名を入れれば良いっぽい


例:g.data("Apples", [1, 2, 3, 4, 4, 3], 'red')

プログラミングClojure 勉強メモ 目次

いきなり SICP は無理ゲーだたので、まずは『プログラミングClojure』読むます・ω・;


え?ソラノート?なんですかそれ?_?
そのノートに名前でも書いたら空から女の子でも落ちてくるんですか?_?


というのは冗談ですが、まぁ自分用にメモ残してるだけなんで、チラ裏だと思ってそっとしてくださると助かります)^o^(
サンプルコードをそのまま置いたりはしないようには気をつけてます!!!

環境

Java 1.6.0_26
clojure 1.2.1
leiningen 1.6.1.1

clojure 勉強メモ 総合目次

体系的な(つもりの)勉強メモは基本 livedoor wiki にのせていたんですが、lisp 系のシンタックス・ハイライトが使えなかったので はてなダイアリー + gist に置くことにしました。