MacRuby is a free software project by Apple Inc. Sources are available under the Ruby license. Hosting provided by Mac OS Forge. Use of this site is subject to the Mac OS Forge Terms of Use. Website designed by John Athayde and created with Webby.
rtmpdumpでradikoから音声をダウンロードして、Audio Queueにデータを格納すればFlashを使わずに音声を流せるのかなぁとCore Audioを調べていたのですが挫折気味。Core Audio周りはC言語でゴリゴリ書くことが必須なのはなんとかなりそうですが、Core Audioがさっぱりわからないorz。Core Audioを扱える方は偉大だと思う今日この頃。 といった感じで、気分転換にMacRubyで画面をキャプチャするものを書いてみました。 #!/usr/local/bin/macruby # -*- coding: utf-8 -*- framework 'Cocoa' framework 'ApplicationServices' # 無限大になるような範囲で適当に定義 CGRectInfinite = CGRect.new([-2.0e+500, -2.0e+
Objective-Cだとカテゴリという機能で、Rubyだと特異クラスという機能で既存のクラスにメソッドを追加できたりします。 MacRubyだとRubyのクラスはもちろん、Cocoaのクラスに対してもメソッドを追加できます。 # -*- coding: utf-8 -*- framework "Foundation" # Rubyのクラスにメソッドを追加 class String def hello puts self + " : hello" end end string = "test" string.hello puts "----" number = NSNumber.numberWithInt(100) p number begin p number.to_i rescue puts "Unknown method: to_i" end # Cocoaのクラスにメソッドを追加
Bonjourを使うと、ネットワーク上で提供されているサービス名を元に、サービスを提供しているマシンのIPアドレスを知ることができるようです。Bonjourの機能はNSNetServiceとNSNetServiceBrowserで提供されています。 Bonjourではコネクションを張ったりデータ送受信をしてくれたりはしないので、Bonjourで相手のIPアドレスが分かったら自前でソケット通信する必要があるようです。 とりあえず、MacRubyでサービス提供元のIPアドレスを検出してみました。 bonjour_server.rb (サービスを提供する側) #!/usr/local/bin/macruby # -*- coding: utf-8 -*- # filename: bonjour_server.rb # Ctrl + C で終了させる framework "Cocoa" frame
MacRuby 0.4から、Objective-CでMacRubyを利用するためのAPIが公開されています。このAPIを使用すれば、アプリケーションにplugin機構を比較的容易に導入できるかと思います。pluginをrubyで書けて楽ですし、MacRubyだからCocoaも使えるし(^ ^) とりあえず、試してみました。MacRubyを利用する際には、GCを有効にする必要があるため、コンパイルオプションに-fobjc-gcを追加します。 objc-macruby.m /* filename : objc-macruby.m */ #import <Foundation/Foundation.h> #import <MacRuby/MacRuby.h> int main(void) { id ruby; ruby = [[MacRuby sharedRuntime] evaluateStr
何気なくruby 1.9.1(MacPortsでインストールしたもの)とMacRuby 0.5のベンチマークを取ってみたのですが、MacRubyが圧倒的に速くて驚きました。 ベンチマークを計測するのに使用したのは以下のフィボナッチ数列のn項目を求めるコードです。 # -*- coding: utf-8 -*- require "benchmark" def fib(n) raise if(n < 0) return 0 if(n == 0) return 1 if(n == 1) return fib(n - 1) + fib(n - 2) end n = ARGV[0].to_i n ||= 0 result = 0 Benchmark.bm do |x| x.report("fib") { result = fib(n) } end puts "Result = #{result}"
MacRubyにはコンパイラが付属していて、これを使用すれば ruby ソースコードを ネイティブな実行ファイル ruby ソースコードから require できる、コンパイル済みライブラリ を作れます。 実行ファイルを作る $ macrubyc sample.rb -o sample $ file sample sample: Mach-O 64-bit executable x86_64 コンパイル済みライブラリを作る "-C"オプションを追加すると、ruby ソースコードから利用できるライブラリにコンパイルできます。(コンパイルした rb ライブラリは rbo という拡張子にするのが MacRuby の流儀っぽいです) $ macrubyc -C sample.rb -o sample.rbo $ file sample sample: Mach-O 64-bit bundle x8
MacRuby is a new implementation of the Ruby programming language powered by LLVM and built on top of CoreFoundation. It provides a fast and beautiful way for Cocoa developers to use Ruby while having full access to and integration with the Cocoa frameworks. While still in development, MacRuby aims to be a robust alternative to Objective-C that addresses limitations like code reuse and safety while
A Application ApplicationBuilder (HotCocoa) ApplicationWindow B Behaviors (HotCocoa) C Canvas (HotCocoa::Graphics) ClassMethods (HotCocoaView) Color (HotCocoa::Graphics) ComboBoxDataSource (HotCocoa) Configuration (HotCocoa::ApplicationBuilder) D DelegateBuilder (HotCocoa) G Gradient (HotCocoa::Graphics) Graphics (HotCocoa) H HotCocoa HotCocoaApplication HotCocoaApplicationController HotCocoaContr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く