Pages

April 28, 2013

boost.regex re2 pcre onigurumaの4つregexの速度比較

こちらのコードを使って計測しました.

以下結果

boostとre2が圧倒的に早いですね。それと比べてonigurumatとpcreは遅く、更に要素数が増えるとpcreは途中で落ちてしまいました。

スプレッドシートはこちら

April 27, 2013

GingerをLinuxデスクトップ環境でも使えるようにアプリ作ってみた

最近良くついったーでみかけるGinger

これなんだろうと持って調べてみたら、英文を校正してくれるとても便利なサービスのよう。

これは使わないわけにはいかないだろうと思いクライアントがないか探したけれど、残念ながら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を使って書きました。


自分しか使わないのでデザインもクソも無いです

上のコンボボックスはアカウント用、下はこれからつけようとしてる機能のもの、+と✕はアカウント追加と削除用です。

機能は
  1. 投稿機能
  2. マルチアカウント機能
  3. UnDo機能
の3つです。

投稿はCtrl+Enter、UnDoはCtrl+Uで行われます。

久しぶりにQt触ったせいか最初はかなり苦戦しましたが慣れてくればこっちのものですね。どっかのフレームワークよりちゃんと動いてくれるしQt✌('ω')✌サイコー

April 19, 2013

mamemoseを利用したリアルタイムmarkdown編集

mamemoseというmarkdownプレビューツールが結構便利そうだったので環境を作って見ました。

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

設定ファイルの作成

設定は~/.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へ変換するときは
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 DebuggerNightingale Developer Toolsをインスコ&再起動すればJSのデバッグを手軽に行えるようになります。

以上