こちらのコードを使って計測しました.
以下結果
boostとre2が圧倒的に早いですね。それと比べてonigurumatとpcreは遅く、更に要素数が増えるとpcreは途中で落ちてしまいました。
スプレッドシートはこちら
April 28, 2013
April 27, 2013
GingerをLinuxデスクトップ環境でも使えるようにアプリ作ってみた
最近良くついったーでみかけるGinger。
これなんだろうと持って調べてみたら、英文を校正してくれるとても便利なサービスのよう。
これは使わないわけにはいかないだろうと思いクライアントがないか探したけれど、残念ながらLinux環境で動くものはブラウザ拡張のものだけみたい。
とても残念だ。
ということでQt Quickでアプリ作って見ました。
初めてQMLというものを触って見ましたが、ロジックコードはJavaScriptでかけるのでサクサクかけました。
UI部分はデザイナである程度かけますが元々あるコンポーネントはとても少なく、自分でボタンのようなものなどを作らないと行けないのが結構めんどくさかったです。
いちよQt Quickでアプリを作っているので、やろうと思えばAndroid上でも動かせるかと思います。UIの修正が必要だと思いますが。
コードはGitHubに置いて有ります。
ではでは
これなんだろうと持って調べてみたら、英文を校正してくれるとても便利なサービスのよう。
これは使わないわけにはいかないだろうと思いクライアントがないか探したけれど、残念ながらLinux環境で動くものはブラウザ拡張のものだけみたい。
とても残念だ。
ということでQt Quickでアプリ作って見ました。
初めてQMLというものを触って見ましたが、ロジックコードはJavaScriptでかけるのでサクサクかけました。
UI部分はデザイナである程度かけますが元々あるコンポーネントはとても少なく、自分でボタンのようなものなどを作らないと行けないのが結構めんどくさかったです。
いちよQt Quickでアプリを作っているので、やろうと思えばAndroid上でも動かせるかと思います。UIの修正が必要だと思いますが。
コードはGitHubに置いて有ります。
ではでは
April 25, 2013
投稿だけできるTwitterクライアント作った
デスクトップにツイッタクライアント置くとどうしてもスペースの無駄になってしまうので、タイムラインはAndroidタブレットにtwicle plusを入れて監視していました。
投稿する都度TwitterWeb開いてやっていたのですが、それこそ効率を落とす原因だと思ったのでさくっと投稿だけできるツイッタクライアント作りました。
Twiq for Desktop - Github
Twitter APIライブラリはtweepyに任せて、UIはPySideを使って書きました。
自分しか使わないのでデザインもクソも無いです
上のコンボボックスはアカウント用、下はこれからつけようとしてる機能のもの、+と✕はアカウント追加と削除用です。
機能は
投稿はCtrl+Enter、UnDoはCtrl+Uで行われます。
久しぶりにQt触ったせいか最初はかなり苦戦しましたが慣れてくればこっちのものですね。どっかのフレームワークよりちゃんと動いてくれるしQt✌('ω')✌サイコー
投稿する都度TwitterWeb開いてやっていたのですが、それこそ効率を落とす原因だと思ったのでさくっと投稿だけできるツイッタクライアント作りました。
Twiq for Desktop - Github
Twitter APIライブラリはtweepyに任せて、UIはPySideを使って書きました。
自分しか使わないのでデザインもクソも無いです
上のコンボボックスはアカウント用、下はこれからつけようとしてる機能のもの、+と✕はアカウント追加と削除用です。
機能は
- 投稿機能
- マルチアカウント機能
- UnDo機能
投稿はCtrl+Enter、UnDoはCtrl+Uで行われます。
久しぶりにQt触ったせいか最初はかなり苦戦しましたが慣れてくればこっちのものですね。どっかのフレームワークよりちゃんと動いてくれるしQt✌('ω')✌サイコー
April 19, 2013
mamemoseを利用したリアルタイムmarkdown編集
mamemoseというmarkdownプレビューツールが結構便利そうだったので環境を作って見ました。
Mac使いはKobitoが便利でいいと思います!
主な機能はREADMEを見るといいと思います。
上げるとすれば
では環境構築しましょう。
私はRubyistでは無いのでRuby開発環境などなかったので色々調べながらやりました。
Pythonで言うところのVirtualenvみたいなものはrbenvというもので行えるみたいです。
それのセットアップから行いました。
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ cd ~/src
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
READMEに書いてあるサンプルからポートとDOCルートの場所を変えただけです。
追記:
cdnから取ってきていたjsなどのファイルをローカルに置くように変更しました。
DOCUMENT_ROOT以下にこれを展開した2つのディレクトリを置いてください。
~/Documents/markdown以下に適当なファイルを置いて http://127.0.0.1:28888/ を開いたあと編集中のものを開きます。
エディタに戻り編集し保存するとブラウザ側で変更が更新されていることがわかるかと思います。(websocketでイベント処理しているみたい)
これでgist開かずともローカルでmarkdown編集が捗りそうですね!
ただ、ちょっと不満もあってコンフィグファイルがHOMEディレクトリからしか読みに行かないのでプロジェクトごとに編集しなくてはいけなかったり、実用的じゃない部分もあります。
いま開発者とコンタクトをとってる最中なのでもしかしたら、configを動的に読み込めるように修正してもらえるかも
※Rubyistじゃないので下手こくのが怖い><
Mac使いはKobitoが便利でいいと思います!
主な機能はREADMEを見るといいと思います。
上げるとすれば
- markdownのプレビュー
- シンタックスハイライト
- LaTex記法を使える
では環境構築しましょう。
私はRubyistでは無いのでRuby開発環境などなかったので色々調べながらやりました。
Pythonで言うところのVirtualenvみたいなものはrbenvというもので行えるみたいです。
それのセットアップから行いました。
rbenvとプラグインのruby-buildのインストール
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ cd ~/src
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rubyのビルドとインストール
$ rbenv install 2.0.0-p0
$ rbenv global 2.0.0-p0
mamemoseをgemからインストール
$ gem install mamemose
$ rbenv rehash
PATHが通ってる所で
$ vim run_mamemose
$ chmod +x run_mamemose
$ chmod +x run_mamemose
設定ファイルの作成
設定は~/.mamemose.rbを読みに行くみたいなので
$ vim ~/.mamemose.rb
READMEに書いてあるサンプルからポートとDOCルートの場所を変えただけです。
追記:
cdnから取ってきていたjsなどのファイルをローカルに置くように変更しました。
DOCUMENT_ROOT以下にこれを展開した2つのディレクトリを置いてください。
以上
これで実行できるようになりました。~/Documents/markdown以下に適当なファイルを置いて http://127.0.0.1:28888/ を開いたあと編集中のものを開きます。
エディタに戻り編集し保存するとブラウザ側で変更が更新されていることがわかるかと思います。(websocketでイベント処理しているみたい)
これでgist開かずともローカルでmarkdown編集が捗りそうですね!
ただ、ちょっと不満もあってコンフィグファイルがHOMEディレクトリからしか読みに行かないのでプロジェクトごとに編集しなくてはいけなかったり、実用的じゃない部分もあります。
いま開発者とコンタクトをとってる最中なのでもしかしたら、configを動的に読み込めるように修正してもらえるかも
※Rubyistじゃないので下手こくのが怖い><
参考:
April 03, 2013
Nightingale Addonでxhr.responseTextを使用したDOMを作成する場合の注意点
昨日の投稿でDOM操作できないことを嘆いていたのですが、その解決方法がわかりました。
なお、この症状はaddon上でのみ起きます。それへの対処です。
一般的にXHRのresponseTextをDOMへ変換するときは
しかしNightingaleやFirefoxのaddon上でこれをやるとXULなオブジェクトになってしまい、ただしくDOMを扱えなくなります(自分なりの仮説)
そのため正しくHTMLDocumentを作ってやれば良いのです。
以下の関数がそれを行うためのものです。
これによってaddon上でもただしく快適にDOMを扱えるようになります!
※このコードはNightingaleとFirefox3.6.x以前のブラウザでのみ動作保証します。それ以降のFirefoxは素直に document.implementation.createHTMLDocument を使いましょう
参考:
なお、この症状はaddon上でのみ起きます。それへの対処です。
一般的にXHRのresponseTextをDOMへ変換するときは
var dom = document.createElement("div");のようにやるかと思います。
dom.innerHTML = xhr.responseText;
しかしNightingaleやFirefoxのaddon上でこれをやるとXULなオブジェクトになってしまい、ただしくDOMを扱えなくなります(自分なりの仮説)
そのため正しくHTMLDocumentを作ってやれば良いのです。
以下の関数がそれを行うためのものです。
これによってaddon上でもただしく快適にDOMを扱えるようになります!
※このコードはNightingaleとFirefox3.6.x以前のブラウザでのみ動作保証します。それ以降のFirefoxは素直に document.implementation.createHTMLDocument を使いましょう
参考:
April 02, 2013
Nightingaleのaddonでdomが使えない。
jsfidleでdomを動かすなどの処理はうまくいくのですが、addon内でdomを使うことができないようになっている。
ほんとに謎仕様である。
普通のFirefoxでもaddonではdom扱えないのかな?
正直、これ使えないのクソだと思います。スクレイピングやりたかったら文字列操作ですべてやれとか僕には無理です…
Nightingaleでaddonのデバッグに必要なもの
Linuxで音楽を聴くときはdeadbeefを使っていたのですが、タグがsjisとかだと文字化けするしプラグインもあんまりよくないので乗り換え先を探していました。
そんな時にSongbirdからforkされたNightingaleというプレイヤーを発見。
どうやらこいつはFirefoxなどで使われているGeckoエンジンをベースに作られているらしく、addonの作成ノウハウをそのまま活かせるみたいなんです。
それで自分でほしいプラグインもjsでちょくちょく書けるようにしたくてデバッグ環境の構築をしようかと思ったのですが、本家SongbirdのWiKi(Google Cache)にアクセスできなくなっているため探すのに一苦労しました…
デバッグ環境の構築は至って簡単で
Firefox addonのJavascript DebuggerとNightingale Developer Toolsをインスコ&再起動すればJSのデバッグを手軽に行えるようになります。
以上
そんな時にSongbirdからforkされたNightingaleというプレイヤーを発見。
どうやらこいつはFirefoxなどで使われているGeckoエンジンをベースに作られているらしく、addonの作成ノウハウをそのまま活かせるみたいなんです。
それで自分でほしいプラグインもjsでちょくちょく書けるようにしたくてデバッグ環境の構築をしようかと思ったのですが、本家SongbirdのWiKi(Google Cache)にアクセスできなくなっているため探すのに一苦労しました…
デバッグ環境の構築は至って簡単で
Firefox addonのJavascript DebuggerとNightingale Developer Toolsをインスコ&再起動すればJSのデバッグを手軽に行えるようになります。
以上
Subscribe to:
Posts (Atom)