ライプニッツの公式で簡単に円周率計算をしてみた。

http://hamusoku.com/archives/6942125.htmlを見て円周率に興味が湧いたのでちょっと試して見ることにした。

とりあえず、円周率の計算方式で一番単純に見えたライプニッツの公式(wikipediaに飛びます)Rubyで単純に実装してみた(本当だったらもっと丁寧に計算しないとまずいけど、趣味の範疇なんで適当に実装)。

公式自体非常に簡単で実装するのに10分もかからなかった。

 #-*- encoding:utf-8 -*- 
 if(ARGV[0] == nil)
   i= 10000000000
  else
   i=ARGV[0].to_i
  end
  sum=1.0
  i.times{|j|
  
   if((j-1)%2==0)
     d=1.0/(2.0*(j+1.0)+1.0)
     sum= sum + d
   else
    d=-1.0/(2.0*(j+1.0)+1)
    sum=sum+d
   end
  }
  puts (sum*4).to_s

引数に何も与えず実行したところ以下の結果が得られた。

3.14159 26536 88346

でこいつをwikipediaの円周率に乗っているものと比較すると

3.14159 26535 89793 23846

かなりいい所まで計算が出来ていることが解る。
浮動小数点演算を行なっている事情や、分数の演算を行なっていないためごさが出るのは仕方ない。
本当はその辺りでどのくらい誤差が発生しているのか考えないとマズイ気もするけど面倒くさいのでとりあえず今回はここまで。

AdLantisのSampleコードがInterface Builderに準拠されていたようなのでコードベースでポチポチ

レベルの高い方々に取っては、日本語だけでちょろっと書かれていることを読んでInterfaceBuilder準拠のコードから直ぐにコードベースにすることが出来るんだろうけど、僕みたいに低レベルな技術者としてはサンプルコードが無いのがきつかったのでメモっておく。

AdLantisのバージョンが1.3.4,XCode4.2の時のお話です。

ヘッダ

....
@class AdlantisView;
@interface MyViewController : UIViewController{
    .....
    AdlantisView *adView;
    .....
}
.....

本体

....
- (void)loadView
{
    [[AdlantisAdManager sharedManager] sendConversionTag:@"ここにあなたのidを入れる"];
    .....
     adView = [[AdlantisView alloc]initWithFrame:CGRectMake(0, 380 , 320, 50)];
    [self.view addSubview:adView];
    .....
}
....

その他はライブラリに入っているreadmeファイルを見ればなんとかなるはず。

ヽ(´ー`)ノバンザーイ
という訳で無事コードベースで表示することが出来ました。

見てみるとすげーすっきりしてるのね。

導入した時に色々と合ったけど、うん悪くないね。

物凄くお手軽に表示できるから良いね(表示するだけなら・・・)。

AdLantisを使った時はまって泣きそうになった件 その2 nslocalizedstringが動かなくなった!?

AdLantisを導入した時にハマったことパート2。

その1で書いたんだけどフォルダごと放り込んだ瞬間今まで動いていたNSLocalizedStringが正常に動作しなくなりました。

まぁキーがそのまま表示されていたんですが、う〜ん困った。

という訳でgoogle先生に泣きついてみました。

結論を述べるとXcode4 & NSLocalizedString、やれやれ。 | 人生、まだまだこれからだ!に書いてあることがそのまま降り掛かってきた様です。

AdLantisの中に思いっきり en.lprog, ja.lprog が存在しているのでそれらのお陰で今まで動いていたEnglish.lprog, Japanese.lprogの中にあったファイルが読み取られ無くなったようでした。

同時に色々とbuildの設定とかも弄ちゃってたから、もう総当りで探しましたとも・・・

もうね、1つずつ確認しつつやるべきだって解ってるのに・・・解ってるのに・・・

後ライブラリは吟味してから入れるべきだと身をもって解った

AdLantisを使った時はまって泣きそうになった件 その1 ld: duplicate symbol _OBJC_IVAR_$_Reachability.reachabilityRef

iPhoneアプリの広告にAdLantisを用いて表示を行おうとした際に、色々と引っ掛かったのでメモ。

http://tn.adlantis.jp/iPhoneAppOwner/adlantis-iphone-sdkからダウンロードしてきて、とりあえずフォルダごと放り込んでビルドしてみた。

そうすると特別なことは何もしていない(AdLantisを放り込んだじゃないかというツッコミは無しで)のに

のようにリンクエラーが発生しました。

リンクエラーって何が起こるか解らないから大嫌いな私としては困り果ててしまったのですが、

諦めるわけにもいかなかったのでlogを読み読み。

すると

ld: duplicate symbol _OBJC_IVAR_$_Reachability.reachabilityRef

なるものが・・・duplicateになるようなものなんて読み込んでないぞ?

おかしいな〜と思ってにらめっこしてみたら、

 ./adlantis_sdk/asihttprequest/External/

の中にいた Reachability が元々読み込んでいた Sharekit内にあったReachabilityとバッティングしてしまっていたみたい。

adlantisの中にあったReachabilityを削除すると何かしらエラーが出てくるので、ShareKitの中に合ったReachabilityの参照を外すことにしました。

私の場合は問題なかったんですが、何らかの特殊なコードを埋め込んでいた人とかは大変だろうなぁ・・・

今回はShareKit内のReachabilityでバッティングしたけど、昔書いたコードの再利用の際に発生する可能性が非常に高いので注意するべきなんだろうなぁ。

androidのviewってxmlで定義するのが良いのか、コードで定義するのか良いのか解からん・・・

タダの愚痴なんだけど

androidに限った話じゃないんだけど、スマートフォンアプリを作ってる時にいつも迷うのは、Viewをどう構成するか(xmlで定義するのか?それともJavaで定義するのか?)で迷ってます。

Androidで僕が使っている環境であるADTを例に取って言えばGraphical Layoutを使ってxmlで定義しちゃうのが良いのかそれともJavaでフルコーディングするのが良いのか迷います。

そんなの自由にやれば良いじゃんって思うのかもしれないけど、常に試行錯誤してるので結構困る。

同様にiPhoneアプリを作るときもInterface Builderを使うのがいいのか、それともXCodeで書くのがry)

そんなことを永遠と悩み続けています。

初めにバシッと決めておかなかったせいで、書き方が違うコードが混在していてあまり気持ちが良くない。

iPhoneアプリに関してはInterface Builder使うよりコードで管理したほうが楽(というか, Interface Builder使いこなせない・・・)のでそうしているけど、

Androidは、eclipseに慣れている人なら簡単に使えるようにまぁそれなりにイライラはするけど使えるようになってるし、それにサイズの違う端末でどう見えるかが、簡易的とはいえ確認できるのが大きくてやはり、Graphical Layoutに頼る面が大きくなってます。

逆にiPhoneアプリだと見え方なんかは絶対値指定なのである程度予測がつくのでコード上で事足りるんだよね〜。

まぁandroidアプリを4個ぐらい(全然少ないですが(^_^;))作った結果としては、デザイン性が強い場合はGraphical Layoutを使わざる負えませんでした。

それ以外の場合としては動的な表示を行う場合(web apiから取得して表示する等)はレイアウトだけxmlで設定して、中身をJavaで追加してしまう事が多かったです。

まぁ一概にどれが正しいとは言えないのですが、本によっても書き方違うしページによってサンプルの書き方も違うし悩んだ時にどうすりゃいいのかわかんなくなることがまだまだ多いです。

慣れてきたせいか勘で段々とどちらよりのコードも書けるようになってきたけど、結構悩む。

特にコードを人に渡す場合とかどうすりゃいいのか困るぜよ〜。

redmine1.2.3でチケットのタブが表示されなくて焦った件

何回記事を書けば気がすむのか、あいも変わらずハマり続けております。

今回は新規でプロジェクト作った時の話です。

新規でプロジェクト作って、さぁ!チケット追加するぞ!とか思ったら・・・

・・・あれっ?チケット何処から追加するの?ってな感じになってしまった。

チケットのタブがねぇ!チケット登録できない!なにこれ?

プロジェクトを作ってふと見るとチケットのタブがない

未熟なプログラマに取ってそれはどんな恐怖と絶望なのだろう … … 俺は暗闇の中で泣いても無駄なのでただひたすらググるだけだった

とかジョジョっぽく考えてググってみたけど中々引っかからなかった。

仕方が無いので自力で解決策を探した、管理から行けばなんとかなるべ?とか思ってやってみたら上手く言ったのでメモ

設定->モジュールのタブから下の画面に行きます。

で必要な項目にチェックして保存するだけで以下のように消えてた項目が出てきます。

なんかredmine調子悪いな・・・

redmine1.2.3でいきなり題名が表示されなくなって焦った件

なんかあんまりにいきなり過ぎてすごくビックリしたんだけど、

ログインしてチケットを開いたら下みたいな感じになっててビビった。

何故かよく分からないけど設定がリセット?されてたみたい?

よく分からないけどこのままだと使いにくいので直し方を調べて見ることにした。

Google グループを参考にして直してみた。

管理のページに行き真ん中ちょい下にある設定を選択。

すると以下のようなページが出てくるのでチケットトラッキングタブを選択。

上の画像の様に必要な項目にチェックを入れて保存。


すると元に戻りました(途中で切れているのはチケットの報告者に本名が出てるためです)!

なんで、消えちゃったのか分からないけど様子見て問題なければこのまま使おう。

また勝手に消えちゃうようだったら再インストールしなおすかな?