2012-01-01から1年間の記事一覧

NodeJSのrequire()はどこに定義されている?

v0.8.16 (homebrew ver.) だと上の3つがOK, v0.6.19 (nvm ver.) だと上2つがOK。どれも同じように見えるんだけどなあ。 #!/usr/bin/env node try { console.log("#require %s", require); // OK } catch (e) { console.error(e); } try { console.log("#eval…

perlbrewのperlすべてにモジュールをインストールする

perlbrew execでいけます。 perlbrew exec cpanm Text::Xslate

MonoでCのstdioを呼び出してみる

MonoはMono.Posixアセンブリを使うとPOSIXの関数を呼び出せるようだ。 そこでCのstdioを使ってcat(1) を実装してみた。 https://github.com/gfx/mono-cat // $ mcs -r:Mono.Posix Cat.cs using System; using Mono.Unix.Native; public class Cat { public s…

neocomplecacheが壊れたな、と思ったら

VIM

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

JSXをPhantomJSで動かしてみる

遅くなりましたが、AltJS Advent Calendarの7日目です。PhantomJSというのは、コマンドラインで使えるJavaScript実行環境です。Mac+Homebrewだと brew install phantomjs でインストールできます。さて、まずは以下のようなJavaScript source codeを用意して…

neocomplecacheとclang_completeを併用するには設定が必要

VIM

このふたつのVIM pluginを同時に使うとき、何も設定しないと、補完の最初の候補が自動で選択されるという大変うざい状態になります。 これはneocomplecacheのFAQのようで、ドキュメントにしたがって設定する必要がありました。neocomplecache.txt Q: Does no…

Re: Objective-Cの残念な子なところ

Objective-Cの残念な子なところ - soutaroブログそれ、(ARC使っていれば)RAIIでもっと簡潔にできると思います。 @interface AutoTimer : NSObject -(void)report; @end @implementation AutoTimer { NSString *label; NSDate *start; } -(id)initWithLabel:(…

RAII in Objective-C with ARC

最近のObjective-CはARCというオブジェクトポインタをスマートポインタにする機能があり、これのおかげでiPhoneアプリの開発ではRAIIができる。つまり、不要になったオブジェクトはその瞬間にデストラクタ(-dealloc)が呼ばれるため、デストラクタ内でリソー…

Module::Install 1.04をバンドルしているモジュールを再リリースしました

Do not ship modules with Module::Install 1.04 (by miyagawa)Module::Install 1.04 をインストールしているモジュールをperl 5.16.0および5.16.1 にインストールできないという問題があるようです*1。問題のあるモジュールのリストがあるので該当作者はア…

Enhance jsx.vim to execute the current test method!

JSX compilerには--testというオプションでユニットテストを実行することができます。これは実際には _Test クラスにある test*() を順に実行するものです。このとき、JSX compilerに引数としてテストメソッド名を与えると、そのメソッドだけ実行することが…

Thoughts on TypeScript

TypeScript, designed by Anders Hejlsberg, has been released recently from Microsoft.It is a JavaScript dialect with class syntax and optional static types, while JSX has class syntax, too, and mandatory static types.I personally welcome Ty…

JSX web editorに補完機能をつけた

TypeScript の web editor の出来に感動したので JSX web editor に補完機能をつけました。Ctrl+Space/Ctrl+P/. で補完候補を表示します。これはCodeMirror*1についてくるプラグインであるsimple-hint.jsとJSXコンパイラの補完機能をつかったものです。JSXコ…

TypeScript first impression

MicroSoftから TypeScript というJavaScriptにコンパイルされるプログラミング言語がリリースされた。JavaScriptにコンパイルされる言語はJSX, CoffeeScript, Haxe, Dartなど数多いが、構文がJavaScriptのスーパーセットである点が従来のJavaScript系言語と…

Re: JSXでunderscore.jsを使ってみた

JSXでunderscore.jsを使ってみた記事で指摘された問題はもっともで、JSX側で対応すべきと思います。ところでunderscore.jsのようなロジックだけのコードはテストがしやすいので再実装もしやすいし、どんどん作って行きたいと思っています。とりあえず以下の …

Software Design 2012年10月号にJSXの記事が寄稿されました

id:kazuhoさんによるJSXの入門記事の前編で、設計思想や言語仕様を中心に解説しています。もっとも、入門記事なのでJSXのドキュメントに親しんでいる方には物足りないかもしれません。Software Design (ソフトウェア デザイン) 2012年 10月号 [雑誌]出版社/…

C# の拡張メソッドってどうコンパイルされるの、っと

// ExtensionMethodTest.cs using System; namespace MyExtensions { // from chapter 13, "Programming C#" public static class ExtensionMethods { public static string Right(this string s, int n) { if (n < 0 || n > s.Length) { return s; } else {…

JSXの補完を強化します

JSXの補完はいままでシンボルだけでしたが、せっかく型があるのですから関数のプロトタイプや変数の型も表示してほしいところです。 とりあえず以下のように型を表示できるところまではできました。ブランチは JSX / jsx.vim ともに gfx/completion-detail …

jsx --complete で tmpfile or stdin からソースを読めるようにした

いままではソースコード内で相対パスによるimportをしている場合、jsx --completeが動かないという問題がありました。 これはエディタの補完をする際、ファイルに保存せずにバッファの中身をjsxコマンドに渡す必要がありますが、jsxコマンドに与えられるファ…

JSX で JSON object mapping する

JSXのJSON.parse() の戻り値はvariantなので、使用するときはtype castが必要です。そこでクラスにマッピングするのですが、これを自動的にはやってくれないので手動で行う必要があります。 class Name { var firstName : string; var lastName : string; fu…

HTML5 on smartphonesの学び方

JSXでスマートフォンのWeb appを作るのは、言語仕様よりもむしろスマートフォンのHTML5の仕様に引きずられるんですよね。それらを手っ取り早く学ぶには以下のスライド・エントリ・本がいいのかなと思いました。 html5でアプリの壁を超える方法 http://www.sl…

JSXの学び方

JSXをどうやって学べばよいか、メモしておきます。 言語仕様 言語仕様は jsx.github.com にドキュメントがあるほか、実例としては言語仕様のテストである JSX/t/run/*.jsx が参考になります。特に JSX/t/run/*.jsx は実際に開発するとなると頻繁にgrep する…

開発版で動作確認したいがステータスは「失敗」にしなくていいというのをTravis-CIで

たとえば NodeJS 0.9.x などの開発版の環境でCIしたい、でもそのテストの失敗は必ずしもプロジェクトのバグとは限らないので通知はいらないしビルドステータスには影響してほしくない、というケースはあると思います。Travis-CIでこれを設定するにはallow_fa…

日経ソフトウェア 2012年10月号でJSXが紹介されたようです

「次世代Webブラウザ向け言語はコレだ! 」と題して CoffeeScript , Dart, Haxe と共に JSX が紹介されているようです。これは見逃せませんね!!日経ソフトウエア 2012年 10月号 [雑誌]作者: 日経ソフトウエア出版社/メーカー: 日経BP社発売日: 2012/08/24メ…

JSX supports WebAudio

JSX から WebAudio API を呼び出せるようになりました。これでJSXで HTML5 シンセサイザを作ることができますね。再生するコードはこんな感じ。webkitAutdioContext しか使っていないので今のところ Chrome でしか動きません。 /*** WebAudio example, playi…

WEB+DB Vol.70 に寄稿しました

WEB+DB Vol.70 (2012/8/24発売) に寄稿しました。Perl Hackers Hub #16 「Perl内部構造の深遠に迫る」です。WEB+DB PRESS Vol.70作者: 成田一生,高津戸壮,はまちや2,佐藤裕介,久森達郎,大窪聡,本田謙,和田英一,天野祐介,藤吾郎(gfx),奥野幹也,川添貴生,Dr.Ke…

Objective-C でsingleton pattern

Objective-Cではマルチスレッドでも安全にsingleton objectを初期化するための dispatch_once() というのが使えるようだけど、double-checked lockingは多少効果があるようだ。ただ最近の gcc/clangはデフォルトで -fthreadsafe-statics が有効なので Object…

「初めてのPerl 第6版」がでたそうです

「初めてのPerl 第6版」が発売されました - 近藤嘉雪のプログラミング工房 「初めてのPerl 第6版」がでたそうです - tokuhirom's blogPerl 5.14 に対応してモダンな書き方の説明になっているそうですので、Perl 5.8 のままおいていかれてる人や Perl 5.6 の…

Xslateのキャッシュ更新メカニズムの変更

1.5015までのXslateのキャッシュ更新メカニズムでは問題があると報告されたため、1.5016で修正しました。cache => 1 のとき、従来は render() ごとにテンプレートのキャッシュファイルのmtimeとテンプレートファイルのmtimeを比較してキャッシュの更新が必要…

Re: Re: perl 5.16.0 でメモリリーク?

perl 5.16.0 でメモリリーク - たごもりすメモ Re: perl 5.16.0 でメモリリーク? - tokuhirom's blog 修正してpull-requestを送りました。 https://github.com/mirrors/perl/pull/9 https://rt.perl.org/rt3/Ticket/Display.html?id=114340 ※ githubのpull-…

Where W3C specs are

W3Cの仕様はMercurialで管理されているようだ。一覧は以下から。 https://dvcs.w3.org/hg/ これらは、たとえば以下のように個別にcloneすることになる。 hg clone https://dvcs.w3.org/hg/audio バグレポートは以下のbugzillaから行える。 https://www.w3.or…