サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
hagino3000.hatenablog.com
校正段階でレビューだけ手伝いました。若手IT勉強会の皆様による執筆。対象読者はJS中級者、2~3年目のエンジニアとの事です。 JavaScriptテクニックバイブル ~効率的な開発に役立つ150の技 JSサポーターズ 技術評論社 売り上げランキング : 1582 Amazonで詳しく見る テクニックバイブルシリーズなだけあっていろいろ載っている。足回りの開発ツールから、新しめのライブラリの使い方、JSの流儀まで。Node.jsについて3ページ割かれているのを除いてクライアントサイドの話。「現場のJSerが贈る」と表紙にある通り、古いIEでの嵌り所もちゃんと書いてあって親切。 良いなと思った所。次に挙げる4つの章 4章:関数を活用する 5章:ネットワーク通信を改善する 6章:タイマーイベントを活用する 8章:パフォーマンスを改善する は賞味期限の長い普遍的なテクニックが詰まっている、1~2年
The Daily Bread - 税金はどこへ行った? http://spending.jp/ 先日のGLOCOMオープンデータ活用ハッカソンの成果です.私はアイデアソンの時に税金の使われ方を可視化するチームに参加しました.このチーム,やけに行動力のあるプロフェッショナルなメンバーに恵まれ,アイデアソンの直後から,データ入手等の準備を進めました.ハッカソン当日には英国の公共支出を扱った Where does my money go? をローカライズ,横浜市の予算データのコンバート,所得控除の要素を追加して http://spending.jp を公開できました. オープンデータの動き 今回のオープンデータ活用ハッカソン,政府のオープンデータ戦略と切り離して語る事はできません.内閣の高度情報通信ネットワーク社会推進戦略本部(IT戦略本部)は今年の6月,政府のデータは原則公開.マシンリーダブ
両手が塞がる食事中でも快適にインターネットができる仕組みが求められている.そこで手元にあったEmotiv EPOC HeadsetとEmotiv SDK付属ツールを使って実験した. Emotiv | EEG System | Electroencephalography http://emotiv.com/ やり方 今回はEclipseを起動するのが面倒だったためプログラミングはせず,SDK付属ツールだけで実験した. マウス操作 EmotivControlPanelからMouse Emulaterというツールが起動できるのでこれを使う. Mouse Emulaterはヘッドセットのジャイロセンサの値を使ってマウスカーソルを動かすツール.感度が良くブレも無いので思い通りにマウスカーソルを動かせる. キーボード操作 SDK付属のEmoKeyを使う.EmoKeyはEmotiv SDKで取得した値
欲しかった機能が実装できたのでタグを切りました。 hagino3000/Struct.js https://github.com/hagino3000/Struct.js 主な機能追加 ネストした構造のサポート nullableオプションの追加 カスタムバリデーション関数のサポート 設定で全チェックを無効化する機能を追加 初期作成時の値チェックを追加 型チェックのためのコーディングをなるべく増やさないというポリシーです。素のObjectと同様に扱えるが必要なチェック機構は備えている物を目指しています。しかし副作用としてプロパティの有無でそれが何であるかを判定するダックタイピングは不可能になってしまった。よってそこだけは Struct.getType(obj) を使います。 リリース用の設定 Proxyオブジェクトを生成しないので、通常のプロパティアクセスのコストだけになる。 Struct.
追記: Firefoxの実装で既に有る__noSuchMethod__に名前は合せた方が良い、というコメントを頂いたので名前を変えました。 何の役に立つか不明だけど書いてみた*1。Proxyでプロパティアクセスをフックして、存在しない場合は用意しておいた関数プロキシを返す。 __noSuchMethod__ for Chrome ― Gist https://gist.github.com/2290705 上記の処理が書いてあるのはこの部分。 function enableMethodMissing(obj) { // 関数プロキシの作成 var functionHandler = createBaseHandler({}); functionHandler.get = function(receiver, name) { // プロパティアクセスの場合は何も返さない return fun
(追記) Version 0.3をリリースしました。 先日のjava-ja温泉で「JavaScriptは独りでヒャッハーするのには良いけど、複数人で開発しだすと途端にカオスになって苦労する」という話になった。それに対する解の一つはClosure Compilerが採用したアノテーションによる型の定義と静的チェックだろう。それとは別のアプローチで何かできないかなと考えていたら、ECMAScript 6にObjectのプロパティアクセスをフックできる仕組み(Proxy.create)があったのを思い出した。Proxy APIを使ってみたら型チェックが効くC言語の構造体みたいな物が作れたのでライブラリ化した。 hagino3000/Struct.js https://github.com/hagino3000/Struct.js これを使うと何が良いかというと obj = {}; obj.hog
プリミティブな値を引数で受けとる場合よりもやや面倒。JavaScriptの仕様上どんな値や型でも受けとってしまうので、C++側のチェックコードがどんどん増えていく。 動作確認用のコードがこうだとする var Test1 = require('./build/Release/Test1'); Test1.giveMeObject({ option1: 'This is config option!!', option2: true }); Test1.giveMeArray([1,2,3,4,5,6]); モジュールのコードはこんな感じ #include <node.h> #include <v8.h> #include <iostream> using namespace v8; Handle<Value> HandleObjectMethod(const Arguments& args)
C++弱者ながらC++でNodeモジュールを作る事にしたのでいろいろと。 まずは公式サイトの解説を参考にしてみる。 Addons Node.js v0.6.12 Manual & Documentationl http://nodejs.org/docs/latest/api/addons.html Hello World 最初にHello Worldのコードが載っているが using namespace v8; とあるので早速この行を消してみるとこうなる。 #include <node.h> #include <v8.h> v8::Handle<v8::Value> Method(const v8::Arguments& args) { v8::HandleScope scope; return scope.Close(v8::String::New("world")); } void
日本ではあまり使っている人を見ない筋電/脳波ヘッドセットのEmotiv EPOC neuroheadsetを使ってみた。デモはNodejsでデータ飛ばしてCanvasに描画した。視線の位置のxyが取れるのでそれを使った方が面白かったかなぁ。 ノンタッチUI時代とフロントエンドエンジニア (Using emotiv) View more presentations from hagino 3000 JavaのコードはSDKのサンプルをベースにJSON作っただけ。状態を取る部分のコードは次の通り。 JSONObject currentState = new JSONObject(); Edk.INSTANCE.EE_EmoEngineEventGetEmoState(eEvent, eState); float timestamp = EmoState.INSTANCE.ES_GetTimeF
OpenNI Advent Calendarの20日目の記事です。 24日目の記事でもopenFrameworksについて書かれているので、内容がかぶらない様にしています。 OpenNIをOpenframeworksで使う http://blog.hi-farm.net/2011/12/24/openni%E3%82%92openframeworks%E3%81%A7%E4%BD%BF%E3%81%86/ 何故24日目の記事の方が先に公開されているかは気にしないでください。oFについて基本的な事は上記 @mmlemon_twitter さんの記事に書かれているので割愛します。あと、oFはMacユーザーが多いのでMacOSX + Xcode4の環境を前提に書きます。 ofxOpenNIについて oFのaddonの一つ。OpenNIをoFっぽいインタフェースで扱える様にした物。誰のブランチを使
第3回Kinectハッカソン無事に開催できました。レポートっぽい物はShibuya.NIのサイトにアップするとして、OpenNI + Xtion Pro liveで今日試した事など。 ポーズ不要 NITEを1.5.0 unstableにするとユーザー検出からポーズ検出をすっ飛ばしてボーントラッキングが開始できる様になった。以前まで必要だった学習データも不要。適当に動かしてみたらたまたまその場にいた4人をいきなりトラッキングして普通に動いていた。重すぎて描画が遅れるという事も無かった。動画撮ればよかった。 Kinectポーズという単語は最早死語、「OpenNIはポーズを取らないと骨格取れないんですよ」とドヤ顔をする事はもうできませんね。 上半身のみボーントラッキングが動作した トラッキング開始時にSkeletonCapabilityに渡すXnSkeletonProfileについて。大抵はXN
この記事はOpenNI Advent Calendarの15日目の記事です。 さて、この記事をチェックされる様な方であれば、ある程度はKinectセンサーとそのドライバについて知識はあると思います。さらに、それらを使って何かを作りたいと考えている人も多いでしょう。Kinectはとても魅力的なデバイスです、ある程度のプログラミング経験があればモーションキャプチャセンサーとして使えてしまう環境が整っており、デバイスを使った開発などした事もない人間でも簡単に扱えます。 しかし、実際にアプリケーションを作ってみようとすると、全く未経験の領域に足を突っこむ事に気がつきます。画像処理、音声処理、機械学習、コンピュータインタラクション etc…。それらについて既に習熟していれば問題は無いのですが、私の様な大学で生物を専攻してしまった*1人間には全くもって未知の分野。ここからは、私の経験を元にKinect
この記事はHTML5 Advent Calendarの8日目です。 いつの間にか手元の環境(Chrome17 dev + Node 0.6.3)においてWebSocketでバイナリデータが扱える様になっていたので何か作ってみようかと。 まず、NodeでWebSocketを使おうとしたらそれ用のライブラリを使う事になるのだが現時点でバイナリデータが扱えるのはWebSocket-Nodeのみだった。 当初はサーバーから画像のRAWデータをガンガンクライアントに送りまくるというのを作ろうとしたのだがnode-pngがNodeの0.6系に対応していなかったので断念。CanvasのgetImageDataで得られるデータをそのままサーバーに投げて、サーバー側で加工した物を受け取るサンプルを作った。 バイナリデータの送信 クライアントのコード(client.js) var socket = null;
この記事はJavaScript advent calender 2011 Frameworkコースの4日目です。 世間ではjQuery Mobileが流行っていますね、それとは関係なくここではSencha Touchのネタを書きます。対象読者は既にSencha Touchを使っている人です。*1 さて、Sencha Touchはモバイル向けフレームワークですがMVCの仕組みを提供するモジュールや様々なUIパーツが含まれているため、ファイルサイズは圧縮状態のJSファイルだけで374KByte (gzip圧縮後は101KByte)もある。さらに標準テーマを含んだCSSファイルは143KByte*2。jQuery Mobileを使う時に必要なファイルと比較して2倍程度のサイズになる。 sencha-touch.jsから使わないクラスを除く Sencha TouchのダウンロードパッケージにはJS
仕事でPhoneGAP使い始めて1ヶ月ぐらい経った。PhoneGAPを使ったiOSアプリケーションをリリース後にちょっと直したい時、AppStoreに再申請するのは面倒くさい。なので、なんらかの方法でパッチを当ててクライアントの動作を変更するのがセオリーだと思っているのだが、どうやるのがBestなのかイマイチわかっていない、とりあえず1時間ぐらい考えた結果を書いておく。 要件として一度取得したパッチは、次回以降アプリが起動した時には当っている状態にしたい。もちろん端末がオフラインの時にアプリが起動されたとしても同様の動作をしなければならない。あと、iOSのUIWebViewはHTML5のApplication cache APIが使えないので、別の方法を探す。 クライアントとサーバー、それぞれに持つ物 クライアント 現在適用されているパッチバージョン、1stリリース時には0 現在のソースリ
追記:unstableブランチへの切り替えが抜けていたので追記しました。 OpenNI本来の使い方をすべくXtion Pro liveを輸入してMacに接続した。送料と関税込みで25000JPY也。早く日本国内で買える様になって欲しい所。大きさはKinectの半分くらい、すごく軽い。 Macに接続した所 VendorID: 0x1d27 ProductID: 0x0600 OpenNIで実装されていない事をやるにはこの値が必要なのでメモっておく。Kinectはホストから見て3つの別々のデバイス(アレイマイク、チルトモーター&加速度センサ、距離画像センサ)として認識されたのだが、Xtion Pro liveでは一つのデバイスとして認識される。試しに以前構築したKinect-OpenNI開発環境のままOpneNIのサンプルを起動してみる。 $ ./NiViewer Device: PrimeS
Jasmineの使い方を覚えるために複数のWebSocketコネクションが協調して動作する、というよくありがちなシナリオのテストケースを書いてみた。非同期テストの書き方のページを読んでもよくわからなったので、最初わりと苦戦した。 メモ waitsForは、渡した関数がtrueを返すか指定したタイムアウトまで待つ runsに渡した関数は遅延評価される waitsForの結果を待つ場合はrunsを使う setUpとtearDownが無いので、runsを最初と最後に使う waitsForを含むit以降のdescribe内のitは遅延評価される コード Jasmine以外にライブラリはSenchaとSocket.ioを使っている。 var appServerUrl = 'http://dev.hagino3000.com:8888'; describe("Chat Test", function(
Kinect SDK動作確認専用マシンにしていたThinkpadにWP開発環境を整えて勉強中。忘れがちなのでセットアップ手順をまとめた。実機と仮想環境の両方でやってみたけどどちらも問題無く開発はできる。 APP HUBに開発者登録をする 年間サブスクリプション 9,800 円 (税込) 也。シミュレーターを使って開発するだけなら必要無い、実機転送に必要。 App Hub - windows phone および xbox live インディーズ ゲームの開発 http://create.msdn.com/ja-JP/ 開発ツールのインストール Visual Studio 2010 Service Pack 1 ダウンロード詳細 Microsoft Visual Studio 2010 Service Pack 1 (インストーラー) http://www.microsoft.com/down
auのWindows Phone端末IS12Tを発売直後に購入したものの、アプリ開発に着手できていなかったのでハッカソンをやる事にしました。 WP7のPush通知の仕組み 主催者の私が端末のアンロックはおろかC#を一行も書いた事がないという状態でしたが、既にバリバリにWP開発をされている経験豊富な猛者達に加えてエヴァンジェリストの高橋忍さんが急遽本の宣伝にやってきたりと、非常に濃い時間となりました。 個人的にはC#の進化に目から鱗だったのと、WPのアーキテクチャ、Windows8でWeb開発者を取りこもうとするMSの思惑あたりの話が聴けたのも大きな収穫。端末のアンロックから実機転送のやり方まで教えてもらいC#の勉強もできた。 @sasaoさんが持ってきたWindows8の動いてる端末 @shinoblogaviさんに貰ったWP用UIデザインキット 肝心の開発というと私はGoogle Lat
一昨日のKinect勉強会Vol.3で軽く触れた、Kinect本のサポートページです。内容は本に載せたプログラムと補足説明、正誤表です。校正している間にも本の内容が一部古くなってしまったので、本を買われた方には目を通していただきたい所です。 hagino3000/kinectbook @ GitHub http://hagino3000.github.com/kinectbook/ 書名 キネクトハッカーズマニュアル 著者 @hagino3000 + 小野 憲史 発売日 2011-08-26 価格 2,604 JPY (256ページ)
github;pagesはアンダースコアから始まるディレクトリを無視するらしく、sphinxが生成する_staticディレクトリの中のcss, jsファイルが参照できずに404になってしまう。一体どうしたものかと調べたら、それ用のsphinxのエクステンションがあった。 michaeljones/sphinx-to-github - GitHub https://github.com/michaeljones/sphinx-to-github とりあえずアップできた。 Welcome to Kinect Book Support’s documentation! ― Kinect Book Support v1.0 documentation http://hagino3000.github.com/kinectbook/gen/html/index.html github:pages便利
会場が変わって今回は品川の日本マイクロソフト本社での開催です。なんでかと言うとShibuya.NIはマイクロソフトのコミュニティ支援サービス(UGSS)公認のグループになったからですね。 既に定員に近くなっていますが登録はこちらから。 Kinect勉強会 Vol.3 - [PARTAKE] http://partake.in/events/d5df898e-1c60-4047-b2a9-82c25483ad6f 内容 「キネクトハッカーズマニュアル」について 担当: @hagino3000 時間: 15分 ネイティブアプリなにそれ怖い、という人向けに書いたKinect本についてあれこれ解説します KINECT for Windows SDKによる開発と応用 担当: 日本マイクロソフト 太田氏 時間: 25分 本セッションでは、KINECT for Windows SDKとSDKが提供する機
Amazonのページができたので詳細告知します。 書名 キネクトハッカーズマニュアル 著者 @hagino3000 + 小野 憲史 発売日 2011-08-26 価格 2,604 JPY (256ページ) 概要 Kinectを使ったアプリケーションを作るための基礎知識から応用コードの解説。Kinectハック実例紹介、チームラボインタビュー等々。私はひたすらコードを書きました。 対象読者 Kinectハックに手を出してみたい人 Kinectのドライバに何を使おうか悩んでいる人 プログラムは書けるけど画像処理はさっぱりという人 プログラムは書けるけどネイティブアプリはさっぱりという人 エンジニアじゃないけどKinectで何ができるか知りたい人 解説コードは主にC++、あとJavaScriptを少し使っています。C++といってもKinectをマシンに繋いでから初めてC++のHello World
Nodeで取ってきて、growlnotifiyに突っ込んでみた。サイボウズガルーンのAPIはSOAP(xmlをHTTP POSTで叩けばいい)だけど、ドキュメントが見つからなかったので元々あったライブラリをNodeで動く様に改造して使った。 cybozu-connect - Cybozu API JavaScript Library - Google Project Hosting http://code.google.com/p/cybozu-connect/ cybozu-connectがjQueryを使っていたので、jsdomでWindowオブジェクトを作ってjQueryをロードした。 Cybozu-connect API for Node ― Gist https://gist.github.com/1145727 直近30分のスケジュールを取得してGrowlするコードはこんな感じ
詳細はわかり次第追記します。 発売日(予定) 8月25日 定価 2480円+税 ISBN ISBN978-4-89977-303-0 USBのコントロールパケットを直接叩き込む様なコードからOpenCVの使い方まで割と幅広く載っているっぽいです。 対象OSはMac/Windows、ドライバはOpenNI, libfreenect, MSのSDKどれも登場するとか。
OpenNIのクロスプラットフォームAPIを調べてて、USB触る奴(XnUSB.h)があったので使ってみた。 #include <stdlib.h> #include <stdexcept> #include <iostream> #include <XnCppWrapper.h> #include <XnUSB.h> #define VID_MICROSOFT 0x45e #define PID_NUI_MOTOR 0x02b0 XN_USB_DEV_HANDLE dev; void errorCheck(XnStatus rc) { if (rc != XN_STATUS_OK) { std::cout << xnGetStatusString(rc) << std::endl; throw std::runtime_error("Error"); } } int main (int
Ball Space on the Mac App Store 昔作った奴です。Mac App Storeに申請するのにエラーが出続けて3ヶ月も悩んでいたらこんな時期になってしまいました。Kids Gameのカテゴリに出してます。MacとKinect(PC接続用USBケーブル必須)持ってる人しか遊べませんがよろしくおねがいします。 古いバージョンで撮った動画はこんな感じです。
サーバーにnodeを使いつつTDDをするためにnodeunitを使ってみた。試しにmongoDBの操作を直列で記述できるラッパーを作って、それのテストケースを3つ書いた。 テストコード var mongodb = require('mongodb'); var Transaction = require('./mongotransaction').MongoTransaction; var db, case1 = {}; case1.setUp = function(next) { var server = new mongodb.Server("127.0.0.1", 27017, {}); db = new mongodb.Db('test', server, {}); next(); } case1["Open and close DB"] = function(test) { ne
一部間違いでNatural InputとなっていたのでNatural Interactionに修正しました。 Shibuya Natural Interaction Hackers (Shibuya.NI) https://sites.google.com/site/shibuyani/ キネクトで遊びまくるために主に首都圏のエンジニアの交流場所としてShibuya.NIというグループを作りました。 現在は主にMicrosoft Kinectを対象とした活動をしているのですが、Kinectのみでは無くNatural Interactionデバイス全般を扱っていきたいと考えてNIとしました。 4月にもまたキネクト勉強会、ハッカソン開催予定なのでよろしくおねがいます。
次のページ
このページを最初にブックマークしてみませんか?
『hagino3000's blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く