サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大阪万博
d.hatena.ne.jp/urekat
cocos2d-xのrubyバインディングを作っている先人 http://ktaobo.blogspot.jp/2013/09/cocos2dx-mruby.html を見つけたのでforkしてmruby最新版に対応させてみました。 C++のクラスとmrubyのクラスの対応をpkgファイルに書けば変換コードがばっちり自動生成されるものですごく良く出来ています。 https://github.com/takeru/cocos2dx-mruby cocos2d-xの本↓ cocos2d-xによるiPhone/Androidアプリプログラミングガイド のサンプル http://book.mynavi.jp/support/pc/4697/ を題材に https://github.com/takeru/NyanGameRuby 足りないAPIをちまちま追加しながらやっていますが、C++のヘッダファ
RubyMotion Advent Calendar 2012 http://www.adventar.org/calendars/18 12日目の記事です。 昨日(11日目)の記事は、Toshikazu Horiiさんの「RubyMine で Storyboard を使う」 http://toshikazuhorii.github.com/blog/2012/12/11/storyboard-for-rubymotion/ でした。 Cocos2d iPhoneでゲームといえば「Cocos2d」ですね。 Cocos2dをRubyMotionで動かすまでをやってみました。 あらかじめごめんなさい、私はCocos2dに特別詳しいわけでもないし、 RubyMotionにもぜんせん詳しくないです。間違っていたり、よりよい方法があれば、 やさしく教えて下さい。 そういうわけですので、試行錯誤の記録
https://github.com/takeru/mruby/tree/examples/examples [step1] C言語の文字列に入れたRubyコードを実行 [step2] .rbファイルを実行 [step3] C言語からRubyのメソッドを呼ぶ [step4] RubyからC言語の関数を呼ぶ までできた、のでpushed. /* [step3] call ruby method from C. */ #include "mruby.h" #include "mruby/proc.h" #include <stdio.h> void _error(const char* s){ printf("ERROR: %s\n", s); exit(1); } void plus(mrb_state *mrb, mrb_value a, mrb_value b) { mrb_value
T008というauのガラケー夏モデル最新!! が0円(+なんだかんだで4000ポイントもゲット)で買えてしまいました。 たしか、EZアプリプレイヤーという勝手アプリ環境があったはず、と調べてみると、 さらにバージョンアップした「EZアプリ(J)」というまともな実行環境になっているそうです。 いまさらかよ。 http://d.hatena.ne.jp/sardine/20101027 というわけで、EZアプリ(J)を作ってみたいと思います。 ドキュメント http://www.au.kddi.com/ezfactory/tec/spec/ezapplij.html CLDC1.1/MIDP2.0 FileConnection (JSR 75) com.mascotcapsule.micro3d.v3 com.kddi.oap.opgl (EZアプリ(J) KDDI拡張) com.kddi.o
iPhone/Androidで現在地の東京アメッシュを見るサービス(?)を作ってみました。 http://bit.ly/tokyo-amesh ついでに位置情報がnode.jsでページを見ているひと全員にブロードキャストされ、地図上にピンが立ちます。 雨が振りそうなところにピンが立つはずです(アメッシュ見るから)。 雨が降りそうになったらぜひご利用ください。
install nodejs + mongodb mac> sudo port install nodejs nodejuice mongodb mongoose nodejs @0.4.2 devel/nodejs nodejuice @1.5.0 www/nodejuice mongodb @1.6.5 databases/mongodb mongoose @2.11 www/mongoose install npm tkrmb2:~/proj/mongonode% curl http://npmjs.org/install.sh > npm_install.sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1918 100
GETでlong-polling→メッセージ受信 POSTでメッセージ送信 でSkypeBotを作れます。 SkypeBotをつくろうと思ってRubyのライブラリを探したのだけど一番よさ気なライブラリがPythonのSkype4Pyだったとさ。Python避けてきたのに。 どうせならRubyとかPerlとかPHPとかAppEngineからも簡単にSkypeBotを作れるべきなのでWebAPI化してしまえばいいじゃないですか。 WebでリアルタイムでPythonといえばTornadoとは噂には聞いていたので、うっかり手を出したらいとも簡単にlong-pollingなサーバができてしまい拍子抜けました。Tornadoやばい。 Pythonの感想 メソッド名のルールが謎、大文字小文字 クラスメソッドとインスタンスメソッドの名前がかぶるとダメ? クラス変数とインスタンス変数の名前がかぶるとダメ?
Google AppEngine 1.4.0 の目玉機能、ChannelAPIの練習。 appengine-jruby的にはwoodieの最速アップデートで http://jruby-appengine.blogspot.com/2010/12/google-app-engine-0019-gems-released.html 0.0.19 が出ています。nice! リアルタイム系といえばまずはチャットだろう、ということで http://jruby-channel.appspot.com/ チャットを作ってみました。 ソースコード→http://jruby-channel.appspot.com/src ChannelAPIドキュメントはここ http://code.google.com/intl/en/appengine/docs/java/channel/ ChannelAPIの使い方
(小)無料枠でおさまるサイト (中)GAEの無料枠でおさまらないまあまあサイズのサイト (大)MySQLのシャーディングが必要なレベルの大規模サイト と分けて、GAEで嬉しい規模感が(小)or(大)のどちらかだって所が微妙だと思っています。 (小)無料枠でおさまるサイト 無料はとにかくうれしい。 cronでTwitter API叩ければそれだけでいろいろできますものね。 botとかbotとか。 herokuもあるけどやはり制限がおおいみたい。 amazonも無料が始まったらしいが期間限定。 GAEは制限なく無料で使えるので素敵。 小さいサイトならGAEマンセーですね。 小さいといっても500万PV/月以下です。相当行けます。 (大)MySQLのシャーディングが必要なレベルの大規模サイト writeをkeyでシャーディングだなんてめんどくさすぎるのでDatastoreの自動分散は嬉しい。開発
日本語訳ありがたい。 http://nodejs.jp/nodejs.org_ja/ http://nodejs.jp/nodejs.org_ja/api.html シングルスレッドでイベントドリブン&ノンブロッキングAPIを使って コンテキストスイッチのコストをケチって 高パフォーマンスサーバを書くフレームワークってことであってますか? ノンブロッキングでプロトコル書くのってなかなかめんどくさいけれども WebSocket時代になれば受け入れられるものなんでしょうかね。 用途は? 細かくて大量(だけど単純)なリクエストを低コストさばく。とか、 socket長時間はりっぱし(=ソケットが多い)だろう。 Cometサーバ チャット、リアルタイムWeb WebSocket これ前提で出現したんだろうけど TCP/UDPの独自プロトコルなサーバ オンラインゲームとか ストリーミングサーバ HTT
GAE/JRubyでおかしくなったときのチェックポイントを考えてみました。 (1) gems / jarを初期化 .gems と WEB-INF/gems.jarの2つを消してやりなおす だめならWEB-INF/lib/*.jarも消してやりなおす (ねんのため、リネームでもOK) (2) プロジェクトをゼロから作り直す (3) それでもだめな場合 - (1), (2)を実行した結果のコンソールログ - Gemfileの内容 - ls -la .gems/bundler_gems/jruby/1.8/gems - ls -la WEB-INF/lib - ruby -v - gem list - jruby -v - jgem list - rvm info あたりをgistに張っていただければ、なにかわかるかもしれません。 そして、 http://groups.google.com/gr
大場さん、こんないいかげんな僕なんかに発表する機会をありがとうございます。 いずれどこかでハイパー日本酒タイムをご一緒してみたいです。 次の東急なんとかに行きます。 なひさん、英語助けてくれてありがとうございます。 それにしてもジョンはもう少し手加減を覚えるべき。 CとJのダブルコミッターはもっと評価されるべき。 ウーディー、わざわざ日本まで来てくれて本当にありがとう。 僕はひとりでアメリカに行ってどうにかできる自信がないです。 ぶっちゃけると、JRubyKaigiのGAE/JRubyよりRejectKaigiのMirah/Dubiousの方が良かったと思う。熱が冷めないうちにMirah/Dubiousをどうにかせねば。 チャールズさん、貴重な1日目のハックタイム、僕の古いマックがごめんなさい。 ソイラッテでMirahは地雷でした。ホントすまそ。 トーマスさん、エンジンヤードビールは宝物で
http://www.slideshare.net/johnwoodell/oscon-2010-4834856 http://www.mirah.org/ Mirahは、あたかもRubyな文法のJVM言語。静的型言語。 MirahはJRubyのリーダー @headius が作っている。RubyにもJavaにも精通している人だ。 Mirahを作った動機は、JRubyを実装するためJavaを書くのが嫌になったこと。MirahでJRubyを実装する気だ。 Mirahをコンパイルすると直接JVMのバイトコードになる。 Mirahは元Duby。 これは日本Mirahの会を設立せねば。
たまにしか使わないEBSインスタンスを便利に使うためのスクリプト。 http://aws.amazon.com/console/ でhttp://alestic.com/の > Ubuntu 10.04 Lucid Canonical, ubuntu@ EBS boot ami-714ba518 を作って使っています。 できること セキュリティグループの設定 インスタンスIDを指定してEBSインスタンスをstart 起動のたびに変わるホスト名を自動的に調べてsshでログイン インスタンスのstop # ruby aws_ec2.rb --update_fw # ruby aws_ec2.rb --instance i-XXXXXXXX --start # ruby aws_ec2.rb --instance i-XXXXXXXX --login # ruby aws_ec2.rb --in
2009年9月のdatastoteの更新で"Megastore"レプリケーションになりました。 このおかげで、現在では、EGトランザクションの整合性が保たれたレプリケーションがされています。 しかし、「データセンタがクラッシュした場合には,ある程度のデータロスはあるが,整合した状態で,別のデータセンタをつかって続行」されるそうで、(EG内での)整合性は保たれているがDC切替によってコミット済みデータのロスが発生し、過去のバージョンにもどる可能性がある。ということです。 2010年5月の「エンティティ消えた疑惑( http://togetter.com/li/24245 )」はおそらくこれではないでしょうか。 注意すべき点は、保証されているのは「"単一EGでの"トランザクション整合性」であって(あるappidの)データストア全体ではないと言う点です。 複数EGにまたがるトランザクションをアプ
というのを始めました。 https://wave.google.com/wave/waveref/googlewave.com/w+7rElg8s7A テクニック、バッドノウハウ、どうしようもない地雷等。 追加、検証、議論、御意見、御感想等よろしくお願いします。
使ったことがない方は試してみてください。 きっとインストールしたくなります。 http://railsongae.appspot.com/ http://railsongae.appspot.com/appstats/stats AppStatsとDeferredDispatcherを入れました。 しかしちょっと面倒な問題有り。 [request to API call memcache.Set() was too large] http://groups.google.com/group/google-appengine-java/browse_thread/thread/f4ec62dda36e4f12 require 'appengine-rack' require 'appengine-rack/java' require "lib/appstats_util" AppEngine
が発足しました。さっき。 http://groups.google.co.jp/group/jruby-users-jp で、第0回会合があり、LTしてきました。 「AppEngine/JRubyの紹介」 http://docs.google.com/present/view?id=dnkxbrd_91fp6687dd 半年前と比べてかなーりやりやすく、簡単になっています。 是非皆さん試してみたください。よろしくお願いします。
『JRuby 1.5.0 リリースのお知らせ』 ついにリリースされました。 リリース文の一番下に私の名前もありました。 http://jruby-ja.blogspot.com/2010/05/jruby-150.html これ http://github.com/jruby/jruby/commit/68f8afcb6c7b1807e2cec665a7e699fb168585bd とか、AppEngineがらみかな。 ダウンロード→ http://jruby.org/ JRubyのいいところ思いつくだけ箇条書き Javaのライブラリをirbからさらっと使える スレッドの性能がMRIよりいい GoogleAppEngine Rubyである さらに、いいタイミングでJRuby on Railsの本が発売されます。 内容は「インストール→Rails入門→Javaとの連携→EJB連携」と進んでい
リストプロパティにノードのキーを入れてしまえば、datastoteにソートとcountをお任せできるからロックの問題とか無くなるよねというアイデア。 @ashigeruの言っている多次元なんとかと同じこと。たぶん。 http://twitter.com/ashigeru/status/13137539559 http://twitter.com/urekat/status/13137340000 http://twitter.com/urekat/status/13121232545 レベルが高いノードがpointを大量獲得して移動してしまうと再計算が必要なのがいまいちっぽいなあ。 class User < TinyDS::Base property :point, :integer property :skip_level, :integer property :skip_nodes,
# http://tzinfo.rubyforge.org/doc/ require "rubygems" require "tzinfo" require "pp" pp ["US", TZInfo::Country.get('US').zone_identifiers] pp ["JP", TZInfo::Country.get('JP').zone_identifiers] puts "=========================" tzTokyo = TZInfo::Timezone.get("Asia/Tokyo") p ["tzTokyo", tzTokyo] tzPacific = TZInfo::Timezone.get("America/Los_Angeles") # PST/PDT p ["tzPacific", tzPacific] tzUtc = TZInfo
ソースを取ってきてビルドしてexampleを実行するまで。 # building duby % mkdir tmp % cd tmp % git clone git://github.com/jruby/jruby.git % git clone git://github.com/headius/duby.git % git clone git://github.com/headius/bitescript.git % cd jruby % ant jar-complete % cd ../duby % ant bootstrap % ant % PATH=path/to/tmp/duby/bin:$PATH # copy examples % cd path/to/work % cp -r path/to/tmp/duby/examples ./ % cd examples # なぜか失
batch_putかバラバラputか トランザクションの有無 エンティティの数=1/4/8/32 でapi_ms/cpu_ms/real_msを比較。 008_i_I_01_T_Bの意味は 008: 8プロパティ i : integer I : index有 01 : 1 entities T : txn有 (t:無) B : batch有効 (b:無効) api_ms/cpu_ms/real_msはそれぞれ1エンティティあたり。 http://github.com/takeru/tiny_ds/commit/dbb508bacbc7ed134393a3993530ff9eb99cd3bf api_ms cpu_ms real_ms ----------------------------------------------- (1 entiries.) 008_i_I_01_T_B, 1
Lockを取得するときはアプリケーションが呼ぶ初回のgetとあわせてbatch_getしてRPC1回分節約 1回目がputなら意味無し。 gtxに参加する1個目のEGは普通のローカルトランザクション ジャーナル作ってうんぬんするのはコストがかかるから。 1個目のEGの選び方によって処理時間がかわる(判断基準は不明) 1個目のEGには複数のputがまとめられ効果は無い EGが十分増えると1EGあたりのコストは100msに収束する lockで90ms batch putで節約 制限 エンティティの最大=500 EGの最大=100? 1個目がlocalTxの理由 localTxとgtxの併用(パフォーマンスの理由で)をさせないため、単一EGでのgtxはlocalTxと同じ性能になるようにした。 ジャーナルの書き込みをgtxと確定するまで遅らせている。 putJournalsはtx使っていない t
1.3.1のアップデート(どれだけ昔だ)によってcpu_msが測れるようになったとのことなので試してみた。 2010/5/13 SDK1.3.2か1.3.3でgetCpuTimeInMegaCyclesの単位が違うバグが直ったのでコードを修正しました。"/1000"が"*1000"になりました。 EntityTranslator = com.google.appengine.api.datastore.EntityTranslator Entity = com.google.appengine.api.datastore.Entity def measure_cpu_ms qs = com.google.appengine.api.quota.QuotaServiceFactory.getQuotaService start_cpu_ms = qs.getCpuTimeInMegaCycl
を考えてみました。どうでしょう。 サービスは止めずに(だいたい)整合性のあるスナップショットを取ります。 そもそも分散DBだから厳密なのは難しいんですよね? 各サーバの時計はほとんどずれていない前提。 全体バックアップ [スナップショット時刻]を設定してdeploy put/delete時に updated_at < [スナップショット時刻] かつ [スナップショット時刻] <= 現時刻 なら [変更前のEntity]をシリアライズして保存する(Entity内でも別Entityでも。子にすればいいかも) [全Entity]をダウンロード [スナップショット時刻]の設定を解除してdeploy 保存しておいた[変更前のEntity]をダウンロード [全Entity]+[変更前のEntity]から「updated_at < [スナップショット時刻]」なデータを抽出 差分バックアップ 『[全Ent
Ruby-ODEっていうプロジェクトがあるけど古い? sudo port install swig バージョン swig -version SWIG Version 1.3.31 Compiled with /usr/bin/g++-4.0 [i686-apple-darwin8.9.1] Please see http://www.swig.org for reporting bugs and further information gcc -v Using built-in specs. Target: i686-apple-darwin8 Configured with: /private/var/tmp/gcc/gcc-5367.obj~1/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=
# uninstall rails3 sudo gem uninstall mail -v 2.1.2 sudo gem uninstall text-hyphen -v 1.0.0 sudo gem uninstall text-format -v 1.0.0 sudo gem uninstall memcache-client -v 1.7.8 sudo gem uninstall rack -v 1.1.0 sudo gem uninstall rack-test -v 0.5.3 sudo gem uninstall rack-mount -v 0.4.7 sudo gem uninstall bundler -v 0.9.7 sudo gem uninstall thor -v 0.13.3 sudo gem uninstall rails3b -v 3.0.1 sudo gem
Ruby(MRI),Rails2.3.5,Java1.6はインストール済みからスタート (Java1.5な場合は1.5でもOKかもしれないのでそのままやってみて上手く出来たら教えてください。) % java -version java version "1.6.0_03-p3" Java(TM) SE Runtime Environment (build 1.6.0_03-p3-landonf_19_aug_2008_14_55-b00) Java HotSpot(TM) Server VM (build 1.6.0_03-p3-landonf_19_aug_2008_14_55-b00, mixed mode) % ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin8] % rails -v Rails 2.3.5 go
次のページ
このページを最初にブックマークしてみませんか?
『urekatのスカンク日記3』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く