JavaScriptROS勉強中-仕事、プライベートでエラーが出たら書いていきます。APIを使いたいけどAppIDってどれか分かりにくい。IDとかあって翻訳具合が微妙で分かりにくい。idだけどOAuthを通らない。ID]=[client_id][顧客の秘密]=[client_secret]でOKでした。2011.03.31Node.jsのイベントループNode.jsのイベントループについてJavaScriptはシングルスレッドなので「並行処理」を行うために、「ノンブロッキングI/O」で「非同期処理」を実現しておりNode.jsはイベントループと呼ばれるモデルを採用しています。イベントループのイベントキューにイベントが登録され、イベントハンドラを実行します。イベントハンドラの完了した結果は、イベントキューにコールバック関数を登録することで受け取ります。そのため、シングルスレッドでブロックするI/Oを行った場合、そのイベント完了後に次のイベントが実行されてしまう。並行処理させるためには、ノンブロッキングI/Oを使ってイベントの完了を待たずに次のイベントハンドラを実行させます。Node.jsはイベントを生成と処理の制御を行うのでファイルのリード、DBへのクエリ発行、HTTPサーバがリクエストを受けた時などにイベントが生成されます。テストファイルを作って試すとわかります。test.jsブラウザで「http://127.0.0.1:8080」にアクセス。test.jsListenStartStartEndResponseEndがResponseより先になっています。これはreadFile()にコールバック関数を登録しているので、非同期となり読み込み完了した時点で関数が呼び出されているからです。プログラムの書き方によっては非同期の部分をロックしてしまうので注意。2011.03.29Node.jsとはNode.jsとはサーバサイドJavaScriptの一種サーバサイドJavaScriptとはサーバサイドのアプリケーションの実装言語として、JavaScriptを使用する言語および環境のことブラウザ(クライアント)サイドと同じ開発言語で、サーバサイドの開発が出来るので、開発効率が上がるといわれている。サーバサイドJavaScriptにはこれらがある。JaxerAptana社がオープンソースとして配布している。それだけならそんなに自分は興味を持ちませんでした。node.jsの何がすごいと感じたかというとWebSocketが簡単そう。サーバーの負荷分散に期待あり。WebSocketが簡単そうは「node.jsでTwitteのタイムライン取得」でも書きましたがほんとに簡単に実装が出来ました。npmというパッケージマネージャーでフレームワークなどのライブラリを取り込めるのでいろいろ可能性があります。nginx」=「スレッド対イベントループ」を取り上げています。イベントループで、スレッドモデルは実行スタックをコピーするのでスレッド(アクセス)が増えるほどメモリ使用率が上昇するが、イベントループはプロセスは1個なのでメモリ使用量はあまり上がらないので、大量のアクセスに関してはイベントループが有利ということ。Node.jsは後者のイベントループこれによって、特定の重い処理を待つことなく、次の入力を受け取れるのでトランザクションを重視するより、短縮URLのようなIOを優先されるような場合で活用できそう。2011.03.20AndroidアプリでWebViewJavaでゴリゴリ書かなくても、WebView+HTML5でアプリっぽく何かを作ろうと思う。xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><WebViewandroid:id="@+id/webview_1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"/></LinearLayout>URLの読み込みHTMLファイルとして、HTMLの文字列を渡してもOKそう。有効にするwebview.getSettings().setJavaScriptEnabled(true);まだ試してないけど、cookieは標準ブラウザのデータとは共有しない。http://developer.android.com/reference/android/webkit/CookieSyncManager.html最新の投稿UnityHubでOpenJDKがインストール出来ない。