強火で進め

このブログではプログラム関連の記事を中心に書いてます。

TweetProcessingが面白そう

TweetProcessing
http://tweetprocessing.appspot.com/

TwitterにProcessingのプログラムを投稿するサービスです。

Twitterのつぶやきにプログラムが含まれるので末尾に付加される [空白]#TwP5 の6文字を引いた134文字でプログラムをしないといけません。

ショートプログラムのテクニックが色々必要な予感がしましたがちょっとしたものであればそんなにトリッキーな書き方をしなくても意外と作れました。

こちらは試しに作ってみた「球」の描画を行うプログラム。

プログラムの記述はこんな感じです。

void setup() {noStroke();int w = width-10;int r = w/2+5;for(int i=0;i<w;i++) {fill(200*i/w+55);ellipse(r-i/6, r-i/8, w-i, w-i);}}

プログラムはこちらから投稿します。
Tweet(account:@TweetP5)」を押すと投稿用アカウント「@TweetP5」のつぶやきとして投稿されます。
※左上の「login」からログイン(OAuth認証)をすると自分のアカウントからの投稿も可能です。

投稿されたものはページ下部のArchivesの所のリンクから投稿したプログラム専用のページが表示出来ます。

TweetProcessing
http://tweetprocessing.appspot.com/entry/show/ahFzfnR3ZWV0cHJvY2Vzc2luZ3INCxIFRW50cnkYo5wBDA

投稿する前には制限文字数に収まる様に手作業で改行や空白を削除しました。

結構手間だったので次からはこちらなどのツールで削除しようと思います。

/packer/
http://dean.edwards.name/packer/

後、他の人が投稿したプログラムを読むときはこちらのツールなどで整形してから見た方が見やすいと思います。

Online javascript beautifier
http://jsbeautifier.org/

まぁ、こちらの2つのツールは本当はJavaScriptのツールだったりします。本来はJava用の同様のツールを使った方が良いんでしょうが自分が知らないので…

もし、Java向けの同様のツールをご存知の方はコメント欄で教えて貰えると嬉しいです。

関連情報

TweetProcessingはじめました - しゃの
http://d.hatena.ne.jp/syan0/20110512/1305177951

iPhoneのSafariで使えるプリントコマンド window.print() の制限


iOS 4.2からはJavaScriptの window.print() が使えます。 window.print() を実行するとAirPrintの機能を使ってプリントが行えます。

Safari on iPhone & iPad 4.2: Accelerometer, WebSockets & better HTML5 support | Mobile Web Programming
http://www.mobilexweb.com/blog/safari-ios-accelerometer-websockets-html5

しかし、こちらの機能はホーム画面にブックマークしてそのリンクから起動した場合には動作しない様です。


うーむ、これってOSのバージョンが上がったらそのうち使える様になったりするのかなぁ?

プリントの動作を実際に試してみたい場合はこちらで試せます。

大量の熱帯魚を表示するデモ「FishIE Tank」のMozilla版が有ったみたい

IEが2Dの描画にGPUアクセラレーションを実装したのに伴い、その実力がよく分かるデモとして「FishIE Tank」というデモを作成していました。

FishIE Tank
http://ie.microsoft.com/testdrive/performance/fishietank/

こちらのデモについては知っていたのですがWebGLを利用して作成されているMozillaが制作したものも有るみたいです。

FishIE Tank
http://people.mozilla.org/~jmuizelaar/fishie/fishie-fast.html


関連情報

InfoQ: Google I/O基調講演:Chromeブラウザ、ウェブストア、Chromebook
http://www.infoq.com/jp/news/2011/05/chromebook-chrome-web-store

「Essential JavaScript Design Patterns For Beginners」の日本語訳ないかなぁ

Essential JavaScript Design Patterns For Beginners
http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/

ざっと読んでみましたかなり良さそうな内容ですした。ちょっと長いのでしっかり全部読むのは挫折しました。

CCライセンスみたいですし、だれか訳してないかなぁ?

「第4回iPhoneアプリ開発合宿5 リファクタリング講座」のUstが良かった

解説者はバスケ(@basuke)さん。

既にiPhoneの開発が長い人には定番な話も多いですがまだ開発を始めてそんなに時間が経ってない人にはとても得るものが多いのではないでしょうか?

34:00位からの「プロパティに記載が有るものはメンバ変数の定義の必要が無くなった」という話は自分も知らなかったので勉強になりました。

44:20位からのKVOの話も良かったです。

関連情報

KVOプログラミングのApple公式のガイド。

Key-Value Observing Programming Guide: Introduction to Key-Value Observing Programming Guide
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

Ustの中で出てきたバスケさんが行われたMOSAでのセミナー

特定非営利活動法人MOSA » 【中級】iOS開発セミナー〜iOS 4時代の位置情報サービスの正しい使い方〜
http://www.mosa.gr.jp/?p=3970

バスケさん著作(共著)の本。

iPhoneのオモチャ箱 iPhone SDKプログラミング

iPhoneのオモチャ箱 iPhone SDKプログラミング

iPhone/iPadアプリ実践開発ガイド HTML/CSS/JavaScriptでつくるネイティブアプリ

iPhone/iPadアプリ実践開発ガイド HTML/CSS/JavaScriptでつくるネイティブアプリ

Closure Compilerの使い方

Closure CompilerというGoogle製のJavaScriptの最適化ツールが有ります。

このツールを使うと余分な空白や改行を削除したり、変数名を短いものに変更したりするなど様々な最適化を行ってくれます。

また、その様な最適化の他にJavaScriptファイルの連結も一緒に行ってくれます。

色々なライブラリを使うとJavaScriptのファイルが複数になったりする場合も多いかと思います。しかし、複数のファイルをDLするとなると単一ファイルをDLするより速度が落ちてしまいます。

その様な時にClosure Compilerでコンパイルを行うとその様な部分についても最適化出来ます。

使い方は至って簡単で、こちらの「Download the application」のリンクからClosure CompilerをDL。

Javaがインストールされてない場合は別途インストールの必要有り。

そしてこの様な引数で実行すればOKです。

java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js

--js= で入力ファイルを指定し、 --js_output_file= に出力ファイルを記入するだけの至ってシンプルな作りです。

試しに以前こちらのエントリーの為に作成したこちらのサンプルに使っているJavaScriptファイルを圧縮してみます。

このサンプルではJavaScriptを2つ以下の様な順番で読み込んでいます。

        <script type="text/javascript" src="enchant.js"></script> 
        <script type="text/javascript" src="01.js"></script> 

01.js は enchant.js に依存している為、読み込みの順番はこの順番で無いとダメです。その場合Closure Compilerの引数に記述する順番もこの読み込み順に指定する必要が有ります。今回の場合はこの様に記述します。

java -jar compiler.jar --js=enchant.js --js=01.js --js_output_file=main.js

これでJavaScriptファイルは1つにまとめられ main.js として出力されます。

コンパイル後、JavaScriptの読み込み部分はこの様に書き換えます。

        <script type="text/javascript" src="main.js"></script> 

ちなみに今回は enchant.js(57757byte)、01.js(2613byte) で合計60370byteだったものがコンパイル後は23985byteとなり、

23985 / 60370 = 0.397

元サイズの約40%まで圧縮されました。

変換後のファイルの内容はこんな感じ。変換しても問題無い部分はなるべく短い名称に変更されていて、変換すると問題有る enchant などの名称の部分はそのまま変更されていないのが分かるかと思います。流石Google製、優秀ですね。

なお、このClosure CompilerはWebアプリ版や

Closure Compiler Service
http://closure-compiler.appspot.com/home

Web API版も有ったりします。

Getting Started with the API - Closure Compiler - Google Code
http://code.google.com/intl/ja/closure/compiler/docs/gettingstarted_api.html

関連情報

Closure Compilerを使う! - トップページ
http://www37.atwiki.jp/aias-closurecompiler/

Closure Libraryの紹介の中でClosure Compilerの解説が有ります。

Closure Library を使うべき 10 の理由 - WebOS Goodies
http://webos-goodies.jp/archives/10_reasons_why_you_should_use_the_closure_library.html