2013-08-01から1ヶ月間の記事一覧

vim 7.4 でSEGVを回避する設定

vim 7.4 で導入された正規表現エンジンがまだ安定していないようなので、以下の設定で古い正規表現エンジンを使うといいです。 set regexpengine=1 SEGVを修正するパッチ自体はすでに取り込まれているので、いずれこの設定は必要なくなると思われますが、と…

emscriptenでgotoって使えるの?

A. 使えます。というか clang -> LLVM bitcode -> JavaScriptという変換なのでwhileなどのループもすべてgotoで表現されたあとJSに変換するので、gotoを表現できないとループすらできません。中身を見てみると、たとえば以下のCのコード #include <stdio.h> int main(</stdio.h>…

『パーフェクトRuby』の感想

Ruby言語自体はまあ書ける、というレベルでも、さてRubyでコマンドのひとつでも作ってgemにして公開しようかとなるといろいろ知らなきゃいけないことがたくさん出てきてああ大変だと思うわけですが、『パーフェクトRuby』はbundle gemを使った雛形の作り方か…

emscriptenをMacで使うときにしておくといいたったひとつのこと

sudo ln -s /usr/bin/python /usr/bin/python2

JSXの複数行文字列リテラル

JSX v0.9.62 より複数行文字列*1がサポートされました。構文はPythonライクな """..."""です。また、'''...''' も同じです。 class _Main { static function main(args : string[]) : void { log """ Hello, world! """; // => "\n Hello, world!\n " } } 複…

emcc-jsx の proof-of-concept #upcamp

emscriptenでJSにコンパイルできるものの、JSからのインターフェイスは使いやすいとは言いがたいし、ましてやJSXから呼び出すとなると本来型のあるCの関数を呼び出すのにccall()経由では静的型チェックの恩恵をうけられない。そこでJSXのラッパを自動生成す…

JSXからemscriptenで生成したJSを呼ぶ #upcamp

#upcamp でハッカソンしてます。JSXからemscriptenで生成したJSを呼び出してみました。emscriptenはhomebrewでbrew install llvm --with-clangでllvmを入れ、emccのshebangを修正するだけで動きました。コンパイル は EXPORTED_FUNCTIONS を指定すること以外…

bless($args, $class) is a bad practice

さいきん散見される以下のようなコードは悪いコードです。 # usage: Foo->new({ age => 42 }) sub new { my($class, $args) = @_; return bless $args, $class; } それは、ハッシュリファレンスと想定される$argsのそのままつかっているため、引数としてハッ…

test-travis(1)というコマンドを書いた

https://github.com/gfx/App-test-travisTravis-CI は CPAN Testers のない言語だとライフチェンジングなサービスだし、 CPAN Testers のある Perl においてもpushごとにCIを走らせたりちょっと変わった設定でテストを走らせたりできる大変便利なサービスで…

Perlでコマンドのpodをモジュールファイルに書く方法

コマンドのヘルプはPod::Usage::pod2usage()で処理したいのでついコマンド本体のファイルにpodを書きがちですが、そうすると空のモジュールファイルのドキュメントが完全に空になってどこをみたらいいのかわからなくなりがちです。 そういうときは、Pod::Fin…