最近Chromebookを買いました。Dell Chromebook 11 です。ちゃちい作りかと思ってたのですが、かなりしっかりした作りで、かなり気に入りました。ただし、macbook airを持ってるので、もちろん普段はChromebookを使う機会は少ないです。ただし、僕にはどうしても作ってみたいものがあり、その動作検証のため、そして僕が作ったものによって、僕がChromebookを利用する機会が増えるように、と購入を決意しています。 その作りたいものとは何か、それはFile System...

HTML5 FileSystem APIを使うと、ユーザのローカルファイルシステムにファイルを書いたりすることができます。もちろん自由にファイルを読み込めるわけではなく、Chrome Webブラウザが持っているサンドボックス内に通常は限定されます(Chromeアプリの場合はその限りではないですが)。オフライン対応アプリケーションを開発する場合には、非常に魅力的なAPIです。 僕の場合はChromeアプリ内でFileSystem APIを使っていたのですが、「既存ファイルの上書き処理」をする際に困...

早いものでもう2014年の大晦日です。今年の自分を振り返ってみようと思います。 娘が1歳に 10月に娘がめでたく1歳の誕生日を迎えました。 妻には子育てを任せっきりでとても申し訳ないですが、すくすくと成長し、すでに体重は10キロを超えています。抱っこすると重いです。ずっしりしてます。まだ一人では歩けないですが、第一歩を踏み出すのは時間の問題です。 そして、とにかく「わんわん好き」です。特に実物のわんわんではなく、めざましテレビで毎日やってる「今日のわんこ」が大好きです。それを見ないと朝食を食べて...

Chromeは、NativeClientと呼ばれる「OSが直接理解できるコンパイル済みコードを(サーバ側ではなく)Chromeブラウザ側で実行する仕組み」が備わっています。最近はGo言語でもNaClが書けるみたいですが、基本的にはCやC++でNaClモジュールを書くことになります。もうそれだけで「うわ、難しそう」と思ってしまうことでしょう。実際、CやC++でコードを書いたことがほとんどなければ、かなり難しく感じると思います。少なくともLL系などの超高級言語(?)しか経験のない人にとっては、CやC...

Chrome MySQL Adminで「SSH Tunnelingできないから星1つ」とか頭にくるフィードバックする人が結構いて、それができないからって全否定かよ!としばらく怒っていました。その怒りを力に変えて、NaClでlibssh2使ってSSH2 Port forwardingできるように機能追加をしました。 https://github.com/yoichiro/chrome_mysql_admin 記憶に残っているうちに、ハマリどころを書いておこうと思います。 NaCl moduleから...

AngularJSには、自分独自のHTML要素を作り出すためのDirectiveという仕組みがあります。これを使うと、一般的に「div地獄」となるような動的Webアプリケーションの作り方ではなく、論理的で直感的な、やりたいこと実現したいことを端的に表すタグを記述するだけで、Webアプリケーションを構成していくことが可能になります。現在Web Componentsの仕様策定や実装、さらにそれを推し進めるためのPolymerの開発が進んできていますが、それを先取りしたようなものと考えれば良いでしょう...

最近はずっとChrome MySQL Adminの機能追加にいそしんでいる毎日です。データベースと言ったら、何を連想しますか?SQL?Oracle?いろいろと出てくると思いますが、きっと10位以内に入ってるキーワードとして、必ず「ER図」はあると思います。ER図は書くのが面倒なので、もし手元にある実際のデータベースからER図を自動的に書いてくれたら、こんなに楽なことはないですよね?はい、作ってみました。 この機能を作るために、いくつか図を描画するためのライブラリを検討しました。しかし、しっくり来...

ここのところ、PNaClについていろいろと調べてきました。なんで調べていたかというと、自分で作ってるChrome appsの中で、JavaScriptで書くのは非常にしんどい処理を既存のNative codeを呼び出すことで利用して楽したい、というのがあります。特に暗号系の処理は、扱う値の桁数も非常に大きく、もしOpenSSLにある関数で事足りるのであれば、それを利用したいところですよね。こういったことが、PNaClで可能なはず。それを自分でできるように習得したかったということです。まぁ、C++...

NaClやPNaClをいろいろ試していく中で、自分で書いたコードだけでなく、他のコードを使いたいときが出てきます。例えば、opensslやその他便利なライブラリが、それに該当するでしょう。これらのライブラリは、NaCl SDKに付属するビルドツールでmakeされて初めて、自分のNaClコードから利用可能になります(と思ってます)。 NaCl向けに各種Patchがあてられた状態になっているライブラリ集が、naclportsです。この中に含まれる使いたいライブラリをビルドすることで、自分のNaClモ...

前のエントリでは、Native Client SDKに含まれるgetting_started、つまりチュートリアルについての説明ドキュメントを和訳して掲載しました。このエントリでは、そのチュートリアルの続きです。ここでは、SDKに付いてくるMakefileをより簡単に書くためのマクロの紹介や、共通的に使われるであろう関数を集めたJavaScriptコードの説明について言及しています。Native Clientモジュールの開発には欠かせないものですので、ぜひ読んでみてください。 原文: C++ T...

前のエントリでは、Native Client SDKに含まれる各種サンプルコードのビルドと実行方法について紹介したドキュメントを和訳して掲載しました。このエントリでは、更に進んで、C++によるシンプルなNative Clientモジュールを作成するチュートリアルについて和訳してみましたので、掲載してみたいと思います。このチュートリアル自体は本当に簡単であり、しかし仕組みが良くわかる内容になっています。試すこと自体はあっという間にできるので、ぜひ試してみてください。 原文: C++ Tutoria...

前のエントリで、Chrome Native Client SDKのインストール方法に関するドキュメントの和訳を掲載しました。このエントリでは、インストールされたSDKに含まれる各種サンプルコードをビルドし実行するための方法が説明されたドキュメントについて、僕が和訳したものを掲載したいと思います。百聞は一見にしかず、とにかくまずは実際に動いているものを見ることが、技術の習得の近道と言えるでしょう。もしNative Clientに興味がある方は、ぜひSDKをインストールして、サンプルを実行してみてく...

もし、Webアプリケーションの開発の中で「どーしてもJavaScriptではきつい箇所」に直面した時、Chromeであれば「Native Client」を使って開発するという手があります。Googleより公開されているSDKを使ってCやC++でモジュールを作成し、JavaScriptとそのモジュール間で通信することが可能です。従来からあるアーキテクチャごとにモジュールの実行形式を作って提供するNaClと、LLVMの中間形式の形でモジュールを作って提供するPNaClがあります。どちらも、同じSDK...

ほとんどC, C++を使った開発をすることがなく、さらにmakeコマンドを使うこともほとんどなかったのですが、本当に時々makeを使う場面がやってきます。今日、本当に久しぶりにXcode Command Line Toolsで入ってくるmakeコマンドを使いたくなって、おもむろに”make”と打ち込んでみました。 すると、つれない感じのメッセージが返ってきました。 [~] make Agreeing to the Xcode/iOS license requires ad...

Chrome MySQL Adminでは、AngularJSを使って実装を行っています。Chrome appsでは、何らかのMVC Frameworkの利用が勧められています。 AngularJSは、Controller、Directive、Template、Serviceなど、いくつかの部品群を組み合わせてアプリケーションを構成することになります。その機能の豊富さ故に、実はちゃんとしたポリシーを決めておかないと、いかようにでも作れてしまうために、かえって複雑さが増してしまうという危険性も出てき...

こんな記事があった。 「getter/setterとはなんだったのか」- プログラマーの脳みそ JavaBeansはGUIなどで再利用可能なコンポーネントを提供する際の規格のようなもので(僕もあまり詳しくない)2000年ぐらいにGUIのコンポーネントを作るときに意識したような、どうでもよかったような、イマイチ恩恵が実感できなかった代物だった JBuilder2とか3の頃のJava開発といえば、AWTやSwingといったGUIアプリケーションを作ることがまだ当たり前だった時代。「部品」といえば、G...

GithubでJavaScriptのライブラリを探しているときに、最近「phantomjs」というものを使っているプロジェクトに出くわします。特に、そのJavaScriptライブラリのテストコードを動かすために採用されているっぽいです。例えばそのJavaScriptライブラリに対して何か手を加えてPull requestを出したい場合に、テストコードにも手を入れる必要があり、そのためにはphantomjsの環境も作っておかなければなりません。 そこで、自分のmacにphantomjsを入れて動作...

最近Chrome MySQL Adminでグラフ表示をしたく、jqplotを使ってみました。そこで見つけたTipsをまとめておきます。 IDを指定せずにjqplotを初期化する方法 jqplotを使う際には、以下のように記述するのが普通です。 <div id="jqplot-sample" ...></div> var jqplot = $.jqplot( "jqplot-sample", [ data ], { ... } ); // 例えば再描画 ...

タイトルの通りです。 https://www.eisbahn.jp/chrome_mysql_admin/ 実際に実用に耐えうる機能が揃ってきたと自画自賛してるChromeMyAdminですが、利用者数が2000人前後で行ったり来たりしてて、いまいち増えていきません。実際Chrome WebStoreに掲載されても勝手にユーザ数が伸びることは希で、どこかで取り上げてくれない限りユーザ数の伸びが期待できないのは、今まで作ってきたChrome拡張機能などで経験してます。 紹介ページを作ったところで爆...

MySQLに標準で付属してくるコマンドライン版のClientであるmysqlコマンドには、例えばCREATE PROCEDUREをする際に一つのSQL文の中で複数のSQL文を含めるために、通常文末を示すセミコロン記号を文末と評価しないこと、つまり文末記号を別の記号に置き換えることができるようになってます。delimiterっていう命令がそれで、これはSQLの予約語ではなく、mysqlコマンドが提供してるものです。MySQL Serverに”delimiter”って送っても...