今日のActionScript - 三角形の外心

投稿者 nanki 2009-03-21 23:45:00 GMT

三つの点はドラッグ可能。

circumcenter - wonderfl build flash online

参考:

treetop.vim

投稿者 nanki 2009-03-17 09:28:00 GMT

syntax

TreetopというRubyで書かれたpackrat parserがある。

その文法ファイルをsyntax highlightするvim. これがなきゃ始まらない。

参考:

gem install opencv

投稿者 nanki 2009-03-15 05:28:00 GMT

portなどでopencvを入れて、普通にやるとcxcore.h がないとか文句言われるので、

⿶ sudo gem install opencv -- --with-opencv-include=/opt/local/include/opencv

とやったらいけた。

参考:

opencvのrubyバインディングが入らない - 橋本詳解


Objective-J および cappuccino とそのvim補完

投稿者 nanki 2009-02-05 23:03:00 GMT

vim objj

しばらくはprototype.js や jQuery、時々はExt JS で楽しく遊んでいたけども、デスクトップアプリケーションのような物を作るのには力が不足していると感じていた。(機能が、ではなく、抽象化の程度が)

年初めくらいに cappuccinoというプロジェクトを見つけてきて、しばらくソースを眺めていたりしたのだけど、これはいい。 久々にピリピリ来るプロジェクト。

最近、iPhone SDK などでObjective-Cに触れて、Cocoa APIに慣れ親しんだせいもあるけど、それを差し引いても、よくできている。 興味と暇のある人は是非、調べてみて欲しい。

実際に、Keynote にしか見えないアプリケーション なんかもこれで作られている。

ちょっとソースを見ると、こんな調子だ。

<script type="text/javascript">
    OBJJ_MAIN_FILE = "main.j";
</script>
<script src="Frameworks/Objective-J/Objective-J.js" type="text/javascript"></script>

main.j というのが、Objective-J 言語で書かれていて、Objective-J.js を読み込むと、その場でJavaScriptにコンパイルされる。

元々、Objective-C は、Objective-Cのランタイム(Cの関数)とプリプロセッサだけでこしらえてある(と思う)のだが、その手の抜けた?実装とは裏腹に強力なオブジェクト指向機能を持っている。

今回、Objective-J がその手法をJavaScriptに対して適用したのを見て、この方法の持つシンプルさと力ににやにやせずにはいられない。(JavaScriptにOOを導入するとは!)

でも、Cocoa APIはフルスペリングでAPIが長いのでとても覚えられない。 IDEなどのコード補完機能がないと書く気が起こらない…ということで、vim の補完関数を作った。

github に置いてあるので、使うなり改良するなりしてください。

関係ないけど、Objective-J ではメソッドの定義に型を書くんだけど、コンパイルの時点で廃棄されている。(ので間違っててもコンパイルは通る) しかし、コード補完を作るにあたって、この型情報は非常に役に立った。

参考:

Web用画像処理言語purlにGyazoモジュール追加

投稿者 nanki 2008-10-30 18:11:00 GMT

purl にGyazoモジュールを追加しました。

デフォルト環境にはロードされないので、自分でロードする必要があります。

Purl::Purl.new のあたり。

# app/controllers/purl_controller.rb
class PurlController < ApplicationController
  caches_page :filter

  def filter
    begin
      result = Purl::StackMachine.new(
        params[:commands], Purl::Purl.new{|p| p.load_feature Purl::Features::Gyazo}).run
      send_data(result[-2], :type => result[-1], :disposition => 'inline')
    rescue => e
      render :status => 500, :text => 'error'
    end
  end
end

コード例

/purl/(a7d96c2ff64900f507ef9c8dab99f983):gyazo:5:round:5:5:5:5:extend:5:dropshadow:to.png gyazo

参考: