Subscribed unsubscribe Subscribe Subscribe

Kengo's blog

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

Mirror repositories for developer in China mainland

In China mainland, default repositories are not so useful because of bad network latency. Instead of them, we should use following mirrors for better productivity. Maven central 开源中国 Maven 库 gem RubyGems 镜像 - 淘宝网 npm 淘宝 NPM 镜像

When/How to use goog.ui.Component#makeId()

goog.ui.Component#makeId() is a helper function to generate ID for DOM elements. Let's start discussion based on sample component which contains following DOM: <form> <div> <input type="text"> </div> <button type="submit"> </form> To implement createDom() method, we may need to decide ID for each el…

goog.Promise の使い方

日本語情報少ないので。 Promiseとは? こちらをご覧ください。 JavaScript Promises: There and back again - HTML5 Rocks Promiseオブジェクトを作る newを使ってコンストラクタを呼ぶだけです。このとき、引数に関数をひとつ渡してやる必要があります。こ…

Tips to accelerate your original game

To make your game more interesting, you should pay much attention to keep high performance. This is UX problem, but it is not designer who can solve. Only developer has solution for this problem, so we should learn about when we face probl…

goog.ui.Componentの継承で気をつけるべきこと一覧

基本 Google Closure LinterとGoogle Closure Compilerを必ず使う コンポーネントツリーをシンプルに保つ(参考資料1 参照) インスタンスの状態 クラスフィールド(static変数)にインスタンスの状態を入れない。 インスタンスフィールドはprivateにする。 …

memo: JavaScript AST

Library http://esprima.org/ https://github.com/substack/node-burrito (not maintained) Blog (Japanese) 最小最速で作るaltjs - mizchi's blog カジュアルJavaScript AST 2012-10-29のJS: JavaScriptパーサ Esprima 1.0.0、Orion 1.0、大規模CoffeeScrip…

Closure Library でカタいクラスを実装する

ここではカタいクラス=フェイルファストで、コンパイル時に問題を発見しやすく、かつ保守しやすいクラス と定義する。 基本的には goog.ui.Component あたりを読むと勉強になる。もちろんネームスペースでユーティリティメソッド群を実装する場合にも通じる…

had a session at talk.js

If you are English user, visit meetup.com to find my slide. 昨晩マイクロソフト@シンガポールでtalk.jsに参加してきました。レベルが高そうなJSプログラマが集う場所にJavaプログラマが潜り込むという構図を活かして笑いを取るなどしました。 前回*1は…

altWebSiteなるものを妄想してみる

HTML/CSS/JavaScriptを複雑に組み合わせてアプリケーションを作ろうという大きい流れがありますが、そもそも「アプリケーションを書くことを想定していないモノ」で無理矢理作ること自体に無理があるよねという考えがあってもいいと思います。 altJSがいくつ…

RequireJSを活用したキャッシュ防止、A/Bテスト、画像事前読込など

[for English user] This article is a simple introduction about my project for Japanese developer. You do not have to read this, reading this project directly would be enough. RequireJSの応用方法について調べた内容をGitHubでまとめています。…

log: 2013/Feb/25 ~ Mar/3

Interests Nexus 7 has come! Now I got a Nexus 7 (32G Wifi/3g)! I have rooted it and configured some useful applications. I will think how to use it as a terminal for development. I wish browser-base IDE like Cloud9 IDE supports tablet, but…

log: 2013/Feb/16~24

Outputs RequireJS dependency graph plugin I found that r.js does not execute define function because it uses AST. It means that wrapping define function has no meaning. I think I need to use parentMap to know dependency, but currently I ca…

log: 2013/Feb/4~15

Interests FireFox OS Currently I do not like Android and iOS, so I hope that this OS (or Ubuntu) become popular and make the market actively. But they would be minor... Outputs This week is long holiday (the head of lunar new year), so I d…

Drawing graph about dependency between AMD modules

Sometimes I want to know dependency between AMD modules graphically, because it might be helpful to understand complexity. Today I have tried to realize it. AMDモジュール間の依存関係をおおまかに把握したい時って結構あります。規約どおりの依…

enchant.jsはモジュール化するといいと思う

enchant.jsをもっと簡単に使えるようにしようという話が大変興味深かったので、1ユーザとして思うところを。 なお私は業務ではenchant.jsを使わないし、プライベートでもここ数カ月ほぼ触っていないので、最近の変更はあまり追えていないかもしれないです。…

requirejs reading

I found that RequireJS has became one of my favorite library, so I need to know it deeply to make it my strong point. This article is log of code reading for 2.0.4. require.js it has many helper like bind(), mixin() and each(). IE6 support…

PARTAKE開発に復帰します

中国への引越しなどがあって疎遠になっていたPARTAKE開発ですが、このたびPARTAKEのGitHubへの引越しを機に復帰します。今後はマイルストーンに従いつつ、テストの充実とCIの導入、いろんな実験ができればいいなと持っています。今まで迷惑をかけてしまって…

How to improve interface for JavaScript

Do you still use argument to give information for other components? It's the most simple way, but sometimes it's too long to read. We can use other approach like named parameter, chain and deferred. Named parameter function foo(param) { al…

RequireJS 2.0による依存関係の明示、フォールバック、複数バージョンの混在

旧ブログのRequireJSネタがひそかにブクマされつづけているので需要があるかなと思い、最近調査したバージョン2.0の機能についてまとめます。元ネタはこちらです。 Upgrading to RequireJS 2.0 · jrburke/requirejs Wiki · GitHub 依存関係の明示 従来のバー…

Simple timer for LT

I've released a simple timer for lightning talk. This tool creates small window at front of your screen. So it's useful to measure left time for talking. ライトニングトーク用のタイマーをリリースしました。残り時間を画面の手前側に表示するた…

New game for learning Periodic Table

I've posted new game to 9leap. I designed this game for junior high school students to learn Periodic Table. This is the first version of this game, so it's very simple. 新しいゲームを9leapに投稿しました。中学生が周期表を学ぶために使えるゲ…

Rakefile generator for enchant.js

I've created a website which generates Rakefile for enchant.js programming in my GitHub pages. Currently it supports 3 plugins. Please try to use if you're interested in. 先日作ったRakefileを主要プラグインに対応させつつ汎用化しました。Init…

Rakefile for enchant.js programming

I found that starting game programming with enchant.js is slow. It has a lot of steps like creating index.html, downloading enchant.js and plugins, downloading images for plugins... it's boring, isn't it? 最近enchant.jsによる開発の「初速」…

Reading source of Hatena Blog

Today I read a source (HTML, JS, CSS) of this blog. This entry is my impression. このブログのソースを読んでみたので、感想をまとめておきます。 CSS/JS isn't pre compressed? To load basic CSS files and JS files, this blog uses very long URI w…

How dynjs handles function

I traced how dynjs execute javascript last month. Today I try to trace how dynjs handles function. creating javascript I created a script which has a function returns x2 of argument. function doubleFunction (arg) { return arg * 2; } It cre…

How to accelerate launching your HTML game

HTML5ゲームに関するイベントleapfestに参加してきました。そしてLTの機会もいただけたので、旧ブログでも触れた起動高速化について話させていただきました。ここに絞って基本戦略とか横断的なネタとかをまとめたのが意外と楽しかったです。 なおスライドはS…

How dynjs runs javascript

※ブログ記事と言うよりはメモのようなものなので、日本語は省略します。 I'm trying to read dynjs. At 1st, let's try to know how it executes given javascript. READY TO READ build it and create an IDE project There is a wiki page to introduce ho…

released a gl.enchant.js sample

I released a sample project for gl.enchant.js. You can run this project to access here. I want to use acceleration sensor with, but iPhone isn't WebGL ready yet, so I don't use it. gl.enchant.jsを使ったサンプルをGitHubに公開しました。加速…

jitescript reading

Reading OSS gives you new experience and discovery. It is just like exploring a library you don't know well. I explored the jitescript today, so I note how to explore and my impressions about them. OSSを読むということは新たな経験と発見を見…

I've remade my personal site by jQuery mobile (updated)

My site, hosted by GitHub Pages, is remade by jQuery mobile. It's my 1st case to use this framework, but it's easy for me to learn because it's similar to jQTouch. So I've finished it in only 3 hours. GitHub Pagesで運営している個人用のサイ…

ツクールVXのマップチップ規格を解釈したマップ描画

私みたいに絵心のない人は自作ゲーで使う画像をゲーム素材から探したくなるのですが、世の中のゲーム素材はツクールなどの素材規格に準拠しているケースが大半です。 RPGツクールVX素材規格 RPGツクールXP素材規格 ウディタ素材規格 で、JavaScriptゲーでも…

「妄想変身ヒーローズ」コードリーディング

9leapで公開されている妄想変身ヒーローズが楽しく快適だったので、どんなコードなのか読んでみました。JavaScriptでそれなりの規模のプロジェクトを作る場合はどうするのがいいんだろう?という疑問へのヒントをもらえた気がします。enchant.jsに限ればScen…

間違い探しゲームをアップデート

間違い探しゲームのバージョン2を9leapで公開しました。バージョン1には全くといっていいほどゲーム性が無かったので、大幅なテコ入れを図っています。1分で何回間違いを探せるか?というシンプルなルールなのですが、短い時間で楽しみやすい仕上がりになっ…

狭い画面を広く使うためのenchant.ScrollableSceneクラスを作った

年末年始は予想以上に休めそうなので、きちんとしたゲームを1本仕上げたい*1と思いつきました。集中力が続けばシミュレーションあたりを作りたいなーなどと考えていたら、軍事担当任命などのような「ユーザーに複数の選択肢から選ばせる処理」というのがなか…

RequireJSによるコードの分割と最適化 for enchant.js

enchant.jsプログラミングでRequireJSを使うとなにが嬉しいの?どうやって使うの?という話。最初はenchant.jsをCommonJS/Modulesに合うように書き変えなきゃダメだと思っていたんですが、そんなことはないんですね。これは便利。 何が嬉しいの? 開発時には…

メモ・複数の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に適した処理かどうか…

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/…

nodeで開発を始めるためのメモ

長いものには巻かれておくスタンス。 TDDはExpressoを使う。 option parsingはoptimistが便利そう。参考 拡張子からmime-typeをマッピングするにはmime。 HTTPクライアントはrequest。 seqをよく見かける気がする。

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

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

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

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

enchant.jsとDOM操作の連携

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

canvasで3Dレーシング

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

jslint.vimをMac OS Xに入れた

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

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として結実しました。ここにはなにをやったか、既存実装…

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

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