• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
 
 

gccで-std=c99を指定した時に、filenoが利用できなくて困ったのですが、 filenoはC標準ではなくて、POSIXの関数なので、以下のようなオプションを指定する必要があるようです。

   1  -D_POSIX_C_SOURCE=200112

See Also

posted by Png genki on Wed 20 May 2009 at 02:44

ribmosaic を使うと、 blender からrib形式のファイルをエクスポートできるようになります。 ribmosaicのtar.gzをダウンロード後展開し、中にあるmosaic.pyファイルを scriptsディレクトリにコピーします。

   1  /usr/share/belnder/scripts

scriptsディレクトリは、 たとえば上記のような場所にあります。

あとは、blenderを起動して、メニューから "Render" -> "MOSAIC RenderMan(R) System" を選択すると、 以下のようなパネルが開きます。

スナップショット1.png

Mosaic Settingsのタブから、レンダラを選んで、Export Directoryを指定し、(R)ender Current Frame/Passesをクリックすれば、指定したディレクトリの下にMosaicディレクトリが作成され、その中にribファイルなどが一式出力されます。

posted by Png genki on Mon 18 May 2009 at 10:01

実機でLeaksを使ってメモりリークのテストをしていたのですが、どうもUICachedDeviceWhiteColorが倒せない...という状況になってしまい、ぐぐってみたら下記にあたりました:

Topic : [iPhone] UICachedDeviceWhiteColor showing as memory leak in Leaks

I had similar problem. After lots of trial-and-error I figured out that "Info Light" button - which was added using IB - on my navigation bar's right bar button item caused this.

So I removed "Info Light" button from XIB and create it programmatically, and then the UICachedDeviceWhiteColor is finally disappeared.

http://discussions.apple.com/thread.jspa?messageID=9368037&tstart=0

これによると、XIBを使って"Info Light"を配置していると、このリークが発生するということで、対応としてXIBから削除、code中から配置するようにしたら、リークが解消されたということでした。

私のXIBではRound Rect Buttonを"Add Contact"タイプにして配置しており、それが原因だったようです。

posted by Png satoko on Mon 18 May 2009 at 01:28

行末に|を記述するHamlの複数行記法が書きにくかったので、 Vimで整形出来るようにするための外部プログラムを作ってみました。

http://gist.github.com/112140

   1  set fp=/path/to/haml_formatter.rb

して、visualモードで選択してgqで整形です。

posted by Png genki on Sun 17 May 2009 at 07:35

あすなろブログとのクロスポストです:
http://blog.pasonatech.co.jp/hibi/102/10498.html


iPhoneアプリで無料なものに広告表示が増えてきました。

最近ではTwitterクライアントTwitterFonに広告が表示されるようになり、twitterで話題になっています。またTechCrunchでも、無料のiPhoneアプリでも大金が稼げるという記事で取り上げられていました。

iPhoneアプリを利用していて、ストレスにならない広告の表示とは?と思ったので、ナルホドと思ったアプリと広告の表示法などを紹介しようと思います。

Shazam

流れている曲名を教えてくれるアプリ:起動回数が少ないので、トップ画面に(1行程度の)広告が表示されていても気にならない気がしました。特にShazamの利用法として、起動してすぐに曲を検索することが多いので、その検索ボタンに目がいっており、広告に気がいっていない感じです( 表示位置重要 )。一方で、クリック率は低いかもしれません。

allRecipes

レシピ検索アプリ:アプリのUIがエレガントで機能がユニーク、かつ動作がキビキビ、広告挿入も上手(タイミング・位置・量)な感じのリッチなアプリ。広告表示のバランスが良くあまりストレスに感じません。

広告を表示しない画面

  • トップ画面(Spinner) → (一番)よく閲覧する画面では出さない
  • Favorites(レシピ一覧)
  • Search(検索初期画面)
  • Help

表示される画面

  • レシピ詳細画面 → レシピの材料一覧横に115x115くらいの画像で表示( 気にならない量・位置に表示 )
  • Search → 検索結果レシピ一覧で5行毎に1行分(画像)
  • Fetured(レシピ一覧) → 表示の一行目だけに1行分表示(画像)
  • Loading画面 → Loadingのメッセージと共に表示(320x460画像)

一方、ゲームはメニュー画面表示直後というのが一般的なようです:

Three

メニュー画面表示直後に、広告画面が表示され、閉じるのにTapが必要 数回ゲームをすると、続けてゲームができなくなる(!その旨のメッセージもなしに) → 広告の表示回数を増やすため!?

FSS Hockey

メニュー画面表示直後に、広告画面が数秒表示され、閉じるのにTapが必要

posted by Png satoko on Sun 17 May 2009 at 01:07

rubyで普通にinjectを使って合計を求めようとした場合、こんな感じになります。

   1  (1..10).inject(0){|sum, i| sum + i} #=> 55

しかし、以下のように書く事も出来ます。

   1  (1..10).inject(&:+) #=> 55

posted by Png genki on Sun 10 May 2009 at 04:55

ポジティブ/ネガティブ投票による正しいランキング方法が以下の記事で紹介されています。

How Not To Sort By Average Rating

この計算方法では、投票数が少ない場合には分散が大きく不正確な評価で、 投票数が多くなるにつれて分散が小さく正確な評価が得られているという事を考慮しています。以下数式


\frac{\hat{p}+\frac{z^2_{\alpha/2}}{2N}\pm{}z_{\alpha/2}\sqrt{
\frac{\hat{p}(1-\hat{p})+\frac{z^2_{\alpha/2}}{4N}}{N}
}}{1+\frac{z^2_{\alpha/2}}{N}}

これはScoreの{}_{1-\alpha/2}信頼区間を表しています。 この信頼区間の下界をランキングのスコアにすれば良い事になります。 ここで、{}_{\hat{p}}は、

です。全体に占めるポジティブ投票数の割合ですね。

{}_{z_{\alpha/2}}は標準正規分布上の {}_{1-\alpha/2}信頼区間の有意確率です。

さて、五段階評価によるRatingに同様のテクニックを適用する場合はどうしたらいいでしょうか。 単純に、1回の投票を4度のpositive/negative投票行為だと考えると (例えば星1つは[-,-,-,-], 星3つは[+,+,-,-])、以下のような {}_{\hat{p}'}を使えば良さそうです。


\hat{p}'=\frac{\sum_{i\in{[1,5]}}(i-1)N_{i}}{4N}

従って、最終的にこんな感じになります。


\frac{\hat{p}'+\frac{z^2_{\alpha/2}}{2N}\pm{}z_{\alpha/2}\sqrt{
\frac{\hat{p}'(1-\hat{p}')+\frac{z^2_{\alpha/2}}{4N}}{N}
}}{1+\frac{z^2_{\alpha/2}}{N}}

Rubyコードで表すとこんな感じですね。

   1  require 'statistics2'
   2  
   3  def score(ni, alpha)
   4    n = ni.inject(&:+)
   5    return 0 if n == 0
   6    m = ni.size
   7    z = Statistics2.pnormaldist(1-alpha/2)
   8    phat = m.times.zip(ni).inject(0){|s,(i,j)| s + i*j}/((m - 1.0)*n)
   9    (phat + z*z/(2*n) - z*Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
  10  end

posted by Png genki on Sun 10 May 2009 at 04:46

面白そうなappを見つけたので、マーケティング等かねてレポートしておきます。


携帯にあこがれを持っているけど、まだ受け答えが上手にできない年齢(2-3才くらい?)にぴったりなiPhone appぽいです。ただし英語です ;-)

PrincessPhone.png
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301367272&mt=8

I love pink. What's your favorite color?
Can you make any funny animal sounds?
I love talking on the phone with you. Can we talk again tomorrow?

などなど色々話しかけてきてくれる。楽しそうですね。

追記:
これのロボットバージョンもあります Robot Phone
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=310277365&mt=8

posted by Png satoko on Sun 10 May 2009 at 01:47

via http://news.ycombinator.com

http://www.viget.com/extend/backup-your-database-in-git/

production環境のDBをダンプして、gitのリポジトリに格納してしまおうという提案。

実際にSpeakerRateというサイトのデータはそれでバックアップしているそうデス。驚きです。crailgslistレベルのトラフィックだとうまくいかないかもしれないけれど、small to mediumサイズのwebアプリなら大丈夫だろうとのこと。

posted by Png satoko on Sun 10 May 2009 at 00:49

ActiveRecord

   1  class Item < ActiveRecord::Base
   2    set_table_name :xxx_items
   3  end

DataMapper

   1  class Item
   2    include DataMapper::Resource
   3    def self.default_storage_name
   4      :xxx_item
   5    end
   6  end

  • DSLは用意されていないのでクラスメソッドで
  • リソース名なので単数系にしておく

確認

   1  Item.storage_name # => "xxx_items"

posted by Png maiha on Thu 7 May 2009 at 08:11