Kengo's blog

Technical articles about original projects, JVM, Static Analysis and TypeScript.

プログラミング

メモ・複数のJS/CSSをRequireJSでひとまとめにする

RequireJSをちゃんと調べたらbrowserify以上に自分の目的に近かった。UglifyJSでのコード短縮なんかも処理してくれるし。assets埋め込みなどの処理を挿し込むのはちょっと無理っぽいので、そこは泥臭くやる必要がありそうだ。 REQUIREJS OPTIMIZER REQUIREJS…

メモ・NodeでHTMLファイルにJSファイルを埋め込む

HTML5ゲーム開発環境構築支援ツールを作った件の続き。通信回数削減という名目のもとで、HTMLにJSファイルを静的に埋め込む方法について調査する。試した環境はMac OSX Lion(10.7.2)のNode v0.4.12。 ちなみにこの「埋め込み」がNodeに適した処理かどうか…

Guavaをどっぷり紹介(I/O編)

イヤホンを新調したら雨夢楼と光のストライドがきれいに聴こえて嬉しいeller86です。洗濯機でイヤホンを洗濯してしまったときは絶望の淵に立たされていた気がしますが、あの絶望がこの喜びにつながるとは一体誰が想像したでしょうか。 さて前回のGuava紹介記…

Jenkinsプラグイン実装初心者が参考にしたリンク集

未だにJenkins実践入門を読めていないeller86です。入手は来月半ばになるでしょうか。Jenkinsの基本的な使い方は知っているつもりですが、プラグインの実装方法などちょっと突っ込んだ内容も載っているようなので楽しみです。 さてここ2日間ほどJenkinsプラ…

Coberturaの「次」は、いつ生まれるのか

上海の飲食店でJenkinsではじめるビルド職人入門をざっくり流し読みしたeller86です。最新の技術書がこうして海外で快適に読めるとは素晴らしい時代ですね。著者ならびにGDP関係各位に感謝です。 で、この電子書籍でコードのカバレッジ測定にCoberturaを使っ…

Guavaをざっくり紹介

Guava librariesをご存知でしょうか?Googleが開発・使用しているコアライブラリです。OSSであり簡単に入手できます。 http://code.google.com/p/guava-libraries/ このライブラリは結構多機能で、海外の著名プロダクトでもよく見かけるのですが、日本のネッ…

JavaScriptはいつの間にこんなにでっかくなっちゃったんだろう

はてなブログのニュースに大歓喜しているeller86です。ダイアリーはあちこちガタが来ているように見える(私見)ので、ゼロから書きなおしたというのがとてもプラスに見えています。そのうちバックグラウンドについての技術解説も出るでしょうし、いろいろと…

JavaScriptで複数行文字列を扱うためにヒアドキュメントを使いたくなったら

泣くしかない のですが、代替案としてこのような方法もあります。 CoffeeScriptのウェブサイトを開く メニューバーのTRY COFFEESCRIPTをクリックし、コンソールを開く 左ペインに(ダブルクォーテーション3つ)(改行2個)(ダブルクォーテーション3つ)と入…

JavaScriptのAST変換

ASTとは腐れ縁にある気がするeller86です。専攻とかは全然関係ないんですが、大抵の仕事でその姿を見ているような……。さてJavaScriptのAST変換を使ってenchant.jsのassetsを変換できないか試してみました。以前は正規表現でなんとかしましたが、どうせやるな…

testlingを使うためにあがいた記録

私の環境ではtestlingさんが無言でおなくなりになることがしばしばです。サンプルではうまくいくので回線の問題ではないようですが、それ以外の原因がわかりません。 $ tar -cf- . | curl -sSNT- -u mail@address.com:pass testling.com/?browsers=iexplore/…

HTML5ゲーム開発環境構築支援ツールを作った件

testlingの登場によりQUnitを捨てる可能性が出てきたeller86です。操作を間違ったときのリアクションがわかりにくい*1のですが、それを大きく上回るメリットを享受できそうです。大半のOSS開発なら無償プランでも充分じゃないかと。唯一の不安は、サイトが潰…

surrogate-pair.jsをnpmモジュール化しました

ASM4.0がリリースされてwktkしているeller86です。しかし今日はJavaScriptの話をします。以前から開発していたライブラリsurrogate-pair.jsをnpmモジュールにしました。まだpublishできていません*1が、以下のブランチから取得していただくこともできます。 …

patch-erの心構え?

args4jにpatchを送りました。まさか著名なライブラリのバグ容疑者を発見するとは思わず。「Argumentアノテーションを使い」「不正な値を渡す」という2因子の現象ですね。 https://github.com/kohsuke/args4j/pull/4 23時頃に意図しない動作に気づき、そのま…

世界中のユーザーに自分のカジュアルゲームを楽しんでもらうためのjust idea

回線の遅さについて考えていたらenchant.jsの機能追加を思いついたのでpull requestを送ろうとしたのですが、現状を鑑みるに優先度が上がらない(他に書くべきコードがある)のでアイデアだけここに残しておきます。ゲーム開発者の参考になれば。 問題提起:…

ASM利用例を更新

ASM3.3利用例 短編集を更新しました。動的にクラスを定義したことはあまり無かったのですが、そこそこ楽に書けますね。バイト列からClassインスタンスを作る方法もわりと忘れがちなので、それも書いておきました。

guava librariesに追加されたEventBusについて

今までguavaのr09を使っていたのですが、先月末にRelease10.0が出ていたようなので早速使ってみました。 新機能として目立つのはCacheとEventBus。Cacheはなんとなく使い道が分かりそうなのでEventBusについて調べたところ、シンプルで使いやすそうなイベン…

enchant.jsとDOM操作の連携

enchant.jsはDOM要素をうまく隠蔽してくれているので、どんな要素を使っているのかを開発者が気にする必要はありません。しかし見た目にこだわるゲームを作るときなどは、DOM要素を意識することで可能性が広がるのも事実です。今回はenchant.jsとDOM操作(id…

mockitoコードリーディング備忘録

オフラインになっていた間、mockitoのコードを読んでいました。自分用ですが、感想を簡単にまとめておきます。 全体的にとても読みやすい。 クラス名・変数名・メソッド名の命名が適切なのだろうが、それ以上にクラス分割の単位が適切であるように思う。 ど…

canvasで3Dレーシング

先週末の3連休で実装したゲームを9leapに投稿しました。canvasを使った3Dレーシングです。 9leap : D3 racing by eller86 - どこでも遊べる、投稿型ゲームサイト 本ゲームの特徴はcanvasで3Dを描画しているところでしょう。とは言えcanvasで3Dを描画すること…

ASM4の新機能一覧 日本語訳(〜RC2)

私が好きなバイトコード操作ライブラリであるASMが、Java7対応の新バージョンを開発しています。まだ情報が少ないのですが、MLの投稿をもとに新機能をまとめてみました。今後実際に使って気づいたことがあれば追記します。 ASM 4 RC1 released ! ASM 4.0 RC2…

jslint.vimをMac OS Xに入れた

JavaScriptをチェックしてくれるvimプラグインjslint.vimをMacBook Airに入れました。公式マニュアル通りにやってOKだったら苦労はなかったのですが、そんなことはなかったのでエントリを残しておきます。 前提 プラグイン管理にpathogen.vimを使っている gi…

Google App Engineの新料金に自作ウェブサービスを最適化した話

巷で議論を呼んでいるGoogle App Engine(GAE)の料金改定ですが、拙作ウェブサービスtwistoireも当然対象となります。どのくらい課金されるようになるかというと、こんな感じ。 だいたい5$/day、つまり150$/month……高い!高いよ!で、なぜこんなに課金され…

enchant.jsにpull request送った

動的に生成する要素のデザインにCSSを使いたいなぁ、Entityのidやclassに触れるといいなぁ、ということで送りました。 Pull Request #11: Entityからidとclassにアクセスしたい by eller86 · wise9/enchant.js · GitHub QUnitによるユニットテスト付きです。…

enchant.jsのフレーム管理周りを改造した話

この土日は体調回復しつつ国産ゲームエンジンenchant.jsのコードを読んでいました。先日9leapで公開したTowerDefenceゲームを低速端末でもスムーズに動作させたかったのです。 その成果はなんとかforkとして結実しました。ここにはなにをやったか、既存実装…

Javaの7大禁じ手

.bbpBox104197592832937984 {background:url(http://a0.twimg.com/images/themes/theme1/bg.png) #C0DEED;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-hei…

「From Lambdas to Bytecode」を読んでinvokedynamicの使い方を学んだ

@skrb氏のツイートで知った2011 JVM Language Summitのプレゼン資料のひとつ、From Lambdas to Bytecodeを読みました。ラムダ式をどうバイトコードに変換するか、そこでInvokedynamic(indy)がどう効いてくるかという話です。 .bbpBox95715831945773056 {ba…

Open Graph Protocol向けマークアップができているか確認できるFacebookのアプリ

この週末はいくつかのサイトを参考にOpen Graph Protocolについて検証などしていました。 Open Graph - Facebook ontwikkelaars フェイスブック、ミクシィ、グリーで使われている OGP (Open Graph Protocol) とは何か - IT戦記 Facebook Open Graph Protocol…

ウェブアプリ開発における画面デバッグ 自己流ノウハウ

JavaScriptに本腰を入れて*1からそろそろ9ヶ月になるので、少しずつたまってきた感じのデバッグノウハウをまとめておきます。 どこで動かなければならないのか意識する デバッグとは関係ないように見えますが、まず動作環境を意識するのが重要です。 IE6で動…

最近のアウトプット

ここ数週間で作ったものについてまとめておきます。 Javaのコンストラクタに関する知識と私見 GWの時間をつぎ込んで書いたのがこれです。Javaのコンストラクタはきれいにコーディングする上でもJVMの動作を理解する上でも重要なファクターであると感じており…

SVG with Javascript習作

SVG女子が話題を呼んでいることもあり、連休中にSVGに触れました。作ったのはJavascriptで動的に図形を描画したり動かしたりするもの。ジャンルとしてはSRPGやタワーディフェンスゲームに近いと言えます。 forked from: SRPG Map (Hex, SVG) - jsdo.it - sha…