Pages

May 28, 2013

1年間ニートをしてみて感じたこと

私は大学を2012年3月に卒業し、晴れて4月から職業:夢追い人になりました。

元々は都内で就職することが決まっていましたが、宮城からITでなにかできることはないかと卒業が近くなるにつれ気持ちが強くなっていき、とうとう夢追い人として生活することになりました。

社会人になるという事で

まぁいろいろお金絡みのこと調べたり、生活する上でどのくらいの余力があればいいのか記録したりしてるのですが

社会人の皆さんすごいですね…

真面目にお金のこと考えさせられます。

家計簿とかそーいうお金を使った時に記録するのとても重要だと思いました。

僕はそーいうの得意じゃないのでレシートを写真として残したり、電子マネー使ったりして過ごすと思います…

お金がどこから逃げていくのか、それを知るために記録することは大事だなと思った1日でした。

May 22, 2013

Google Driveにある画像ビュワー上で画像にコメントする機能について

あれの実装方法を知りたいのだけれど、調査していないので勝手な想像で書く

画像をキャンバスに落とす。

その上にレイヤを重ねてそこにコメントを置けるようにする。

コメントの範囲はキャンバスのサイズとコメント位置とで相対的な関係になっている。

脳みそ空っぽなので、こーいう想像になった。

時間があるとき調査して実際に実装するまでやっていきたい。

以上

Go言語Webフレームワークrevelについて (動作確認編)

web.goは簡単なアプリを作るには最適なのですが複雑なものを作るにはちと機能が足らない感じです。

というわけでWebフレームワーク探してたらPlayフレームワークっぽく実装できるrevelっていうのがあることを知りました。

で、

私 Playフレームワークがどういうものなのか知りません。もちろんきいたことはあります。

いつも使うのはSinatra系かDjangoばかり使っています。

なのでいい機会なのでプロジェクトの構造とかメモがわりに残せればなと思います。

goenv環境を前提にしています。とてもCoolな開発環境を提供してくれるので導入必須!

May 10, 2013

KDEについてくるKonsoleがとんでもない奴だった…

Konsoleをリサイズすると高確率でXもろとも落とすクソみたいな機能がついてる。

これはバグじゃなくて”しよう”なんだと思う。いつになっても修正されない。

解決策の一つとして--notransparencyをつければいいみたいだが

もうなんだか許せないので別のターミナルを使うことにする。

以上

(追記 13/5/10 18:53)

yakuakeが割と便利だ

起動したら、F12でターミナルがニョキッと出てくる

Shift+Ctrl+TでHorizontal Split

Shift+Ctrl+LでVertical Split

Shift+Ctrl+↑/↓で切り替え

(追記 13/5/10 19:10)

どうやらこれはKDEとRADEONドライバの相性から起きてるようだ。あくまで推測であるが

そのため、デスクトップ効果の半透明を無効化して様子を見てみる。

bmobile、DTIやIIJなどの速度のでないSIMで快適(高速)にWebブラウジングする方法

DTIワンコインSIMを使って9ヶ月くらいになります。

昨年まではそんなに遅さを感じなかったのですが、外出先でどうしてもWebを開かなくてはいけないことがちょっとずつですが多くなって来ました。

そこでWebコンテンツなどを最適化(圧縮)するようなプロキシをたてようかと思いました。

DTIの他にbmobileやIIJのSIMにも有効だと思います。

May 09, 2013

Pythonで行儀の良いデーモンを作るpython-daemonを現行のPythonでも動作するようにした

行儀が良いデーモンを作るのはとても複雑で難しい。

それをpython-daemonを使えば簡単に行儀の良いデーモンがつくれちゃう。

とっても便利で良いのですが。

これ、lockfileの内部が変更されて修正しないとpidファイル生成部分に問題が起きちゃうんですね。

LinkFileLockがLinkLockFileに変更されLinkFileLockがLinkLockFileクラスを呼び出す関数になってしまったっということ。

詳しくはコード見てください。

ということでさくっと修正したものをgithubにあげておきました。

テストも完走しています(^0_0^)

残念なことにオリジナルのレポジトリはなくなっているのでpullreqすることができません。

よってPyPiに上がってるものを更新してもらうこともできません。

ちょっともやもやするので、何かしらできたらなと考え中

PyYoshi/python-daemon

May 02, 2013

そろそろ

そろそろ新しいブログつくって新しい気持ちで飛び出すのもありなんじゃないかなと

自鯖にブログ建てるのメンテの関係でめんどくさいのでやらないとして

はてなも嫌いなので使いたくないとして

やはりBloggerにmarkdownの機能くっつけるのがいいのだろうか。

巷ではgistやtumblrをブログがわりに使ってる人もいるみたい。

前者は機能として微妙だけど、tumblrは結構良さそうではある。

May 01, 2013

androidで使えるjson parserの速度比較をしてみる

json-android-compareをベースにJsonPullParserとJackson JsonのObject Mappingのベンチを追加してAndroid上で走らせてみました。

比較してるParserは以下の通り
  1. Android標準(API依存)
  2. gson 2.2.3
  3. json simple 1.1.1
  4. json smart 1.1.1
  5. Jackson Json 1.9.12
  6. Jackson Json 1.9.12 - Object Mapping
  7. JsonPullParser 1.6.1

テストした端末は2つ
  1. CM10ベースのAinol Elf(ROM)
  2. 私が開発してるCM9ベースのP-01D(ROM)
ベンチ結果:

まずは1のAinol Elf
続いてP-01D



Streaming処理ならJackson Json一択ですね。 

個人的にJacksonは使いやすいので、この場合はこれを選択すると思います。

一方Object MappingではJacksonはJPPと比べると遅いですねぇ。

まぁでも許容範囲なのかな。

TwitterみてるとJPP熱いみたいだし、開発者も日本の方なのでコミュニティに質問すればすぐ返ってきそうではあります。

コードはこちらです。正しいベンチの走らせ方してると思えないので、指摘アレばissueに投げてください。

ではでは

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のデバッグを手軽に行えるようになります。

以上

March 29, 2013

PL-US35APをLinuxで使う

もともとCreative SB X-Fi Titaniumを持っていたのだけれど、どうもこいつはLinuxではうまく動かない。

音楽を聞いている分にはいいのだけれどTeamSpeak等のVCを使うと、なぜかノイズが走るようになり終いにはなにも聞こえない状況にまでなります。

Windowsでゲームをする分には必要十分すぎるくらいの性能はあるのですが、Linux環境をメインに使うように移行して以来使い勝手が悪くてイライラしていました。

そこで安いサウンドカードでLinuxでも使えそうなものをAmazonであさりました。

それが今回動作確認できたPL-US35APです。

私の環境はKubuntu 12.04 64bitです。

この環境だと差し込んだだけでは動きませんでした。 ネットでいちよ確認して動くみたいな報告があったので一瞬びっくりしましたが、lsusbでProductID調べてUSB Audioという規格に準拠したデバイスであることがわかり、それ用に設定を行いました。
$ sudo apt-get install alsa-tools alsa-oss alsa-utils alsa-base
で、ひと通り必要なものをインストールして
$ sudo vim /etc/modprobe.d/alsa-base.conf
以下の
options snd-usb-audio index=-2

options snd-usb-audio index=-1
へ変更して再起動したら無事認識しました。

あとはalsamixerで入出力音声の調整を行い、システム側でデフォルトデバイスを変更すれば良いと思います。

ざっとレビューすると出力音質は蟹チップに比べたらそこそこいいように思います。

ドンシャリ音は特になく、左右の定位も曖昧ではなく自分好みでした。

なにより1000円ちょいでこれだけ使えるのだからとても満足しています。

入力音質はMM-MC15BKというマイクを一緒に買い、それで試しました。

蟹チップで試すと、ドンシャリがひどい音質になるのですがそのようなことはなく価格相応またはそれ以上の性能は出ていると思います。

マイクブーストせずともしっかり拾ってくれるのもGood!


March 27, 2013

大きめのファイルをバックアップするとき

いつもはtar.gz等で固めていたのだけれど、ちょくちょく展開に失敗してひどい目に合うことがある。

バックアップ用途に使うときはafioというツールを使えばいいみたいです。

途中で壊れたファイルがあっても、そのファイルをスキップして展開してくれるみたいです。はい。

使い方は各自しらべてください。

tar.gzの修復はgzrecover使えばある程度ましになります。

以上

March 25, 2013

PeerCast IM版をLinuxで動作するように移植しました

PeerCast IM版をLinuxで動くように移植しました。

PeerCast QtのUIコードも持ってきてはいますが現状では正しく動作しないです。

なのでui/linuxをmakeしてCUIとして利用してください。

あとはpcypLiteみたいな視聴ツールを作ればLinux環境で快適に視聴出来ますね。

ソース: PeerCastIM-Mod

March 18, 2013

golangでfib(39)の実行時間

以前の記事をgolangではどうなるのかやってみた。
結果:
$ go build fib.go
$ go version
go version go1
$ time ./fib                                                                                
63245986
./fib  0.54s user 0.00s system 99% cpu 0.548 total

March 13, 2013

Pythonでのfib(39)の実行時間比較

この記事に釣られてPythonではどんなものなのか知りたくなったのでやってみた。

実行環境:
CPU: Intel(R) Core(TM) i7 CPU  860  @ 2.80GHz
RAM: 16GB
OS: Linux 3.5.0-25-generic #39-Ubuntu SMP Mon Feb 25 18:26:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

以下使用したコード
結果は

$ python --version  
Python 2.7.3
$ time python ./fib.py
63245986
python ./fib.py  28.92s user 0.01s system 99% cpu 29.008 total

$ python3.2 --version   
Python 3.2.3
$ time python3.2 ./fib.py
63245986
python3.2 ./fib.py  31.65s user 0.01s system 99% cpu 31.752 total


$ python3.3 --version
Python 3.3.0
$ time python3.3 ./fib.py            
63245986
python3.3 ./fib.py  32.66s user 0.00s system 99% cpu 32.744 total

$ pypy --version  
Python 2.7.2 (1.9+dfsg-1, Jun 19 2012, 23:45:31)
[PyPy 1.9.0 with GCC 4.7.0]
$ time pypy ./fib.py
63245986
pypy ./fib.py  8.59s user 0.03s system 99% cpu 8.676 total


March 12, 2013

node.jsでBuffer経由でArrayBufferを使う

Qiitaに書いた記事と同じです。

ブラウザ向けに書いていたコードをどうしてもサーバサイドでも使いたいと思い調べた結果以下のコードで使えることがわかった。

これでDataStream.jsをちょこっと変更するだけでnode.jsでも手軽にバイナリをいじれるようになった。

node向けに変更したDataStream.js



黒歴史クリーナーよりも確実にツイートを消すスクリプト

※黒歴史クリーナーがTwitterArchiveに対応したので以下の内容は、それらのサービスに頼りたくない人のみお読みになられればと思いますまる

January 29, 2013

AngularJSがやばい

なにがやばいってチュートリアルの動画とかドットインストールのチュートリアルを見てもらえばわかる。

あたまおかしい

なにこれ



実際組み込むとなると、やっぱりめんどくさくなるだろうけど。

コーディングなにそれ美味しいの?ってくらい便利な機能がつきまくってる。

いろいろ調べて、現在やってるプロジェクトをこちらに鞍替えも辞さない構え

あと見てて思ったのは、JSの勉強がてらWebAppとか作る程度なら一瞬でできそうだし、モック作ってテストするときとかの簡易ページとかそのへんに有効活用できそうってことかな。

なにがやばいのかそのうちまとめたい

January 26, 2013

ソートアルゴリズムの可視化をしたFlashアプリがすごい!

とてもわかり易く可視化できていると思いました。

これ見ながら、どう動いているのかコード書くといろいろ捗りそうですね!


January 08, 2013

chromiumembeddedのautomateを使用する場合の注意点

ちょっと躓いたので備忘録

cefのtoolの中にautomateっていうのがあって、これを使うと簡単にビルドすることができるようになるのだけれど、日本語環境下だとうまく動いてくれない。

automate.pyの中身を見てもらえばわかるのだが、popenで"svn info"を呼び出して、その値をパースしているから、環境によってはうまくパースできなくなる。

エラーは
"Exception: No SVN info for: ..."
となるかと思う。

コードを修正するのもいいけれど、いろいろめんどうなので
$ LANG=C
$ automate/automate.py --download-dir=/path/to/hoge --url=http://chromiumembedded.googlecode.com/svn/branches/1271/cef1
しました。