ブログアカウント移行します
気分ですが、下記に移行することにしました http://jwata.hatenablog.com/
検索エンジンの作り方を調べた
はじめに
プライベートで、簡易的な検索エンジンを作る仕組みを考えたので、
その時勉強したことのメモ。
メモ
検索エンジンの仕組み
参考
連載 検索エンジンを作る
http://gihyo.jp/dev/serial/01/make-findspot
形態素解析
自分で形態素解析器を作るのは無いので、既存の仕組みを調べてみた
Mecabを使う
- 意外と簡単にインストール出来た。辞書カスタマイズもできそうなのでちゃんと作るときによさそう。
- URL http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html
YahooAPIを使う
- 前職でもちょろっと使ったことあるけど、使いやすいし精度が高い
- テキスト数制限や回数制限がネック
- キーフレーズ抽出がいい感じ
- URL http://developer.yahoo.co.jp/webapi/jlp/
キーフレーズ抽出ではYahooAPIが手軽でいいなと思った。 独自でカスタマイズするにはMecab使っていくのが良さそうです。
オープンソース検索エンジン
既に検索システム自体もオープンソース化されていて、こういうのを活用したほうがよさそう
- ElaticSearch を使う
- wantedlyでつかわれている
- 簡単にセットアップできそう
- 解析器はkurimoji
- URL http://engineer.wantedly.com/2014/02/25/elasticsearch-at-wantedly-1.html
- groonga
- 解析器にmecabを指定できる
- セットアップは簡単そう
- URL http://groonga.org/ja/
まとめ
vim 環境を大幅に改善したった
最近、新しいプラグイン試したりvimrcを見なおしたりしてなかったので、色々リニューアルしました
やったこと
- プラグイン管理
- Vundle から NeoBundle に移行
- ステータスライン
- neocomplcache
- unite
- bookmark / vimfiler でファイラー機能の強化
- キャッシュデータの場所をRamDiskに変更
- ファイルを開く時にタブを使うように変更
- neocomplete導入
プラグイン管理
Vundle から NeoBundle に移行
面倒臭がってやっていなかったのですが、移行しました。
新しい環境にvimを設定していくのが楽になりました。
LazyLoadとかはまだ。
参考にした記事
http://sugilog.hatenablog.com/entry/20111101/1320158226
ステータスライン
vim-powerline から lightline.vim に変更
vim-powerlineメンテされてないので、
後継のpowerlineかvim-airlineに乗り換えようと検討したのですが、
lightline.vimにしました。
作者のステータスラインにかける熱いエントリーに感化されましたw
参考にした記事
http://d.hatena.ne.jp/itchyny/20130824/1377351527
neocomplcache
キャッシュの場所をRamDiskに変更
高速化に効果があるとの事なので
スニペット補完
IDEでよくあるやつですね、vimでどうなのか使ってみたいと思います。
参考にした記事
http://www.karakaram.com/neocomplcache
unite
bookmark / vimfiler でファイラー機能の強化
開きたいファイルが履歴に無くてもここから辿れるようにしました。
grep、find も出来そうなので使っていきたい
キャッシュデータの場所をRamDiskに変更
高速化のため。これに伴い履歴を1000件に増やしています。
ファイルを開く時にタブドロップを使うように変更
これ前からやりたかったのですが、既にタブで開いている場合とかで悩んでいたのですが解決しました
ファイルとバッファ開くときのデフォルトアクションでタブを開くようにして、既にタブを開いているファイルの場合はそのタブに移動するようにしました。
参考にした記事
http://www.karakaram.com/vimfiler
http://d.hatena.ne.jp/osyo-manga/20130808/1375890336
neocomplete導入
neocomplcacheの設定改善とかしていたのですが、neocompleteを入れるとこまでやってしまいました。
luaインターフェイスの有効化に手間取りました。
luaインターフェイスを使えるようにvimをビルド
debian に sudo apt-get install lua で lua5.0 がインストールされたのですが、
vimの./configureでこけてしまってハマりました、、
色々見てたら luaのversionは5.0なのに /usr/include/lua5.1 みたいなディレクトリしかなくて、失敗していました。
sudo apt-get install lua5.1 で 5.1系が入れられたので、とりあえず./configureが通るようになりました。
細かい話
- --enable-luainterp の他に --with-lua-prefix=/usr が必要でした
- --enable-fail-if-missing するとビルドする前にわかるので便利
- ソースはpatch当てるのではなく、mercurial使うようにしました
最終的にはこんなスクリプトになりました
https://github.com/watanabe0621/dotfiles/blob/master/install_vim74.sh
感想
- キャッシュ周りの高速化とunite/vimfinder の改善なんかで日頃の作業がかなり効率化されそう
- 1つのvimを開きっぱなしで作業していくことになりそうなので、unitテストの実行なんかもやっていきたい
- tmuxとの使い分けなんかを整理していきたい
vim jsプラグイン
はじめに
前回の続きをやろうと思ったのだけど、抽象的なのはモチベーションが続かないので
フロントサイド作りながら進めていくことにしました。
jsライブラリ、フレームワーク
SPブラウザで、アプリケーション作るのに楽しようとすると
下記jsライブラリ、フレームワークが有力候補らしい
- backbone.js
- angularjs.org
- SenchaTouch2
サンプルアプリケーションを触った感じ、Senchaがさくさくしていたので、
今回はSencha触って見ようかなと思います。
で、エディタ
javascript 書いていくのに、「これからはSublimeTextでしょ」と意気込んでいたのですが、やっぱりなんか使うようにならないので、素直にvimで書くことにしました。
なのでまず vim pluginを整えるところを進めました。
参考にした記事はこちら。
http://layzie.hatenablog.com/entry/20130122/1358811539
とりあえず、jsはこの布陣で戦ってみたいと思います。
syntastic
紹介されていた設定はdeprecatedだったので、設定を下記のようにしました。
let g:syntastic_javascript_checkers = ['gjslint', 'jshint']
gjslint はGoogle の Closure Linter でコーディングスタイルをチェックしてくれるみたいですね。
今まではjslint にしていてうるさかったので、結局offにしていたのですが
この2つがいい感じなので使っていこうと思います。
simple-javascript-indenter
インデントが賢くなるらしいが、ちょっとよくわからないので、とりあえず入れておきます
vim-javascript-syntax
コレはいい、見やすくなるなりますね
jscomplete-vim
いい感じに補完してくれる! addEventListenerとかもう打たなくてよくなる
余談
まだNeoBundle導入していなかったのですが、LazyLoadとかできるんですね>< 移行したい、、がこうしてvimの設定だけして時間が過ぎていく。。。
MacBookAir で Hadoop擬似分散環境構築
はじめに
Apache Mahoutで遊んでみたいので、MacBookAirにHadoopの環境を構築することにしました。
情報がたくさんありそうで、バージョンや環境の問題でまとまってなかったのでメモを残します。
参考
以下のページが参考になりました。
http://lizan.asia/blog/2012/11/13/mountain-lion-setup-hadoop/
http://shayanmasood.com/blog/how-to-setup-hadoop-on-mac-os-x-10-9-mavericks/
http://www.ayutaya.com/ops/os-x/hadoop-pdist
http://metasearch.sourceforge.jp/wiki/index.php?Hadoop%A5%BB%A5%C3%A5%C8%A5%A2%A5%C3%A5%D7
環境
手順
hadoopのインストール
brew install hadoop
hadoop設定
設定ファイルは /usr/local/Cellar/hadoop/1.2.1/libexec/conf 以下に全てあるらしい
設定内容は参考ページを真似して。
export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk" export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
- core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
<configuration> <property> <name>dfs.name.dir</name> <value>/Users/${user.name}/hdfs/name-node</value> </property> <name>dfs.data.dir</name> <value>/Users/${user.name}/hdfs/data-node</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
- mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> <property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>2</value> </property> </configuration>
ssh の設定
擬似分散環境では localhostにsshするので設定する
「システム環境設定」→「共有」→「リモートログイン」にチェックを入れてから
ssh-keygen -t rsa -P "" cat id_rsa >> authorized_keys
ssh localhost
でログインできればOK
hostname
sudo hostname localhost
で作業する必要がありました。。
このへんは後でちゃんと設定したいなと思います。
hadoop起動
いよいよhadoopを起動していきます
初期化
hadoop namenode -format
14/01/19 20:25:51 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = localhost/127.0.0.1 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.2.1 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013 STARTUP_MSG: java = 1.6.0_65 ************************************************************/ Re-format filesystem in /Users/junji/hdfs ? (Y or N) Y 14/01/19 20:25:54 INFO util.GSet: Computing capacity for map BlocksMap 14/01/19 20:25:54 INFO util.GSet: VM type = 64-bit 14/01/19 20:25:54 INFO util.GSet: 2.0% max memory = 1039859712 14/01/19 20:25:54 INFO util.GSet: capacity = 2^21 = 2097152 entries 14/01/19 20:25:54 INFO util.GSet: recommended=2097152, actual=2097152 14/01/19 20:25:54 INFO namenode.FSNamesystem: fsOwner=junji 14/01/19 20:25:55 INFO namenode.FSNamesystem: supergroup=supergroup 14/01/19 20:25:55 INFO namenode.FSNamesystem: isPermissionEnabled=true 14/01/19 20:25:55 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100 14/01/19 20:25:55 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) 14/01/19 20:25:55 INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0 14/01/19 20:25:55 INFO namenode.NameNode: Caching file names occuring more than 10 times 14/01/19 20:25:55 INFO common.Storage: Image file /Users/junji/hdfs/current/fsimage of size 111 bytes saved in 0 seconds. 14/01/19 20:25:55 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/Users/junji/hdfs/current/edits 14/01/19 20:25:55 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/Users/junji/hdfs/current/edits 14/01/19 20:25:55 INFO common.Storage: Storage directory /Users/junji/hdfs has been successfully formatted. 14/01/19 20:25:55 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1 ************************************************************/
hadoop-env.sh での設定がちゃんとできていないと、Unable to load realm info from SCDynamicStore
のエラーが出ます
起動
start-all.sh
starting namenode, logging to /usr/local/Cellar/hadoop/1.2.1/libexec/bin/../logs/hadoop-junji-namenode-localhost.out localhost: starting datanode, logging to /usr/local/Cellar/hadoop/1.2.1/libexec/bin/../logs/hadoop-junji-datanode-localhost.out localhost: starting secondarynamenode, logging to /usr/local/Cellar/hadoop/1.2.1/libexec/bin/../logs/hadoop-junji-secondarynamenode-localhost.out starting jobtracker, logging to /usr/local/Cellar/hadoop/1.2.1/libexec/bin/../logs/hadoop-junji-jobtracker-localhost.out localhost: starting tasktracker, logging to /usr/local/Cellar/hadoop/1.2.1/libexec/bin/../logs/hadoop-junji-tasktracker-localhost.out
確認
- http://127.0.0.1:50070/ にアクセスしてnamenodeを確認
- http://127.0.0.1:50030/ にアクセスしてstate: RUNNINGを確認
実行サンプル
hadoop jar /usr/local/Cellar/hadoop/1.2.1/libexec/hadoop-examples-1.2.1.jar pi 2 100
Number of Maps = 2 Samples per Map = 100 Wrote input for Map #0 Wrote input for Map #1 Starting Job 14/01/19 21:22:11 INFO mapred.FileInputFormat: Total input paths to process : 2 14/01/19 21:22:11 INFO mapred.JobClient: Running job: job_201401192119_0001 14/01/19 21:22:12 INFO mapred.JobClient: map 0% reduce 0% 14/01/19 21:22:18 INFO mapred.JobClient: map 100% reduce 0% 14/01/19 21:22:25 INFO mapred.JobClient: map 100% reduce 33% 14/01/19 21:22:26 INFO mapred.JobClient: map 100% reduce 100% 14/01/19 21:22:27 INFO mapred.JobClient: Job complete: job_201401192119_0001 14/01/19 21:22:27 INFO mapred.JobClient: Counters: 27 14/01/19 21:22:27 INFO mapred.JobClient: Job Counters 14/01/19 21:22:27 INFO mapred.JobClient: Launched reduce tasks=1 14/01/19 21:22:27 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=8154 14/01/19 21:22:27 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0 14/01/19 21:22:27 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0 14/01/19 21:22:27 INFO mapred.JobClient: Launched map tasks=2 14/01/19 21:22:27 INFO mapred.JobClient: Data-local map tasks=2 14/01/19 21:22:27 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=8750 14/01/19 21:22:27 INFO mapred.JobClient: File Input Format Counters 14/01/19 21:22:27 INFO mapred.JobClient: Bytes Read=236 14/01/19 21:22:27 INFO mapred.JobClient: File Output Format Counters 14/01/19 21:22:27 INFO mapred.JobClient: Bytes Written=97 14/01/19 21:22:27 INFO mapred.JobClient: FileSystemCounters 14/01/19 21:22:27 INFO mapred.JobClient: FILE_BYTES_READ=50 14/01/19 21:22:27 INFO mapred.JobClient: HDFS_BYTES_READ=480 14/01/19 21:22:27 INFO mapred.JobClient: FILE_BYTES_WRITTEN=165610 14/01/19 21:22:27 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=215 14/01/19 21:22:27 INFO mapred.JobClient: Map-Reduce Framework 14/01/19 21:22:27 INFO mapred.JobClient: Map output materialized bytes=56 14/01/19 21:22:27 INFO mapred.JobClient: Map input records=2 14/01/19 21:22:27 INFO mapred.JobClient: Reduce shuffle bytes=56 14/01/19 21:22:27 INFO mapred.JobClient: Spilled Records=8 14/01/19 21:22:27 INFO mapred.JobClient: Map output bytes=36 14/01/19 21:22:27 INFO mapred.JobClient: Total committed heap usage (bytes)=454238208 14/01/19 21:22:27 INFO mapred.JobClient: Map input bytes=48 14/01/19 21:22:27 INFO mapred.JobClient: Combine input records=0 14/01/19 21:22:27 INFO mapred.JobClient: SPLIT_RAW_BYTES=244 14/01/19 21:22:27 INFO mapred.JobClient: Reduce input records=4 14/01/19 21:22:27 INFO mapred.JobClient: Reduce input groups=4 14/01/19 21:22:27 INFO mapred.JobClient: Combine output records=0 14/01/19 21:22:27 INFO mapred.JobClient: Reduce output records=0 14/01/19 21:22:27 INFO mapred.JobClient: Map output records=4 Job Finished in 16.776 seconds Estimated value of Pi is 3.12000000000000000000
まとめ
次回はmahoutと絡めて動かしていきたいと思います。
Xperia acroHD SO-03D (ICS) 文鎮復旧 root化成功
前回のエントリーでは起動画面の無限ループで、しかも電源落ちてもFlashtool など使えない状況でした (^_^;)
この機種は電池が一体型で、無限ループに入ったらどうしようもないと思っていたんですけど、
強制終了の仕方が判明しました。
電源ボタンとVolume Upボタン長押しで強制的に電源を落とせて、電池を外したのと同じ状況に持ってこれます。
この状態であれば、FlashtoolなりSony Bridge for Mac なりで復旧することが可能です。
前回のエントリーで libusbを入れたので、Flashtoolも正常に動作し、無事rootがとることができました♪
root取得の方法や、root後についてはいろいろ情報あるのでそちらを参考にして進めるのがいいと思います〜
思ったより root奪取後にできる事が楽しくて嬉しです☆
作業で使った .batを.shに変換したものあるのでどっかに上げておこうかと思いますー
Xperia acroHD SO-03D (ICS) でroot失敗
はじめに
Xperia acroHD SO-03D (ICS) root奪取について
結構Windowsでの手法はたくさんみつかるのですが、
Macでのやりかたはほとんど見つからないので手法をまとめました。
そして、未だチャレンジ中で成功していないです。
アプローチや失敗の原因だけ参考にして頂いて、これ以上不幸な人が増えなければと思います。
あと、どのエントリーにも書いてありますけどコピペで。
- 端末のroot化は自己責任となります。
- キャリアやメーカーの保証期間内であっても、保証対象外となります。
- 作業に失敗した場合など端末の動作が不能となる場合もあります。 ← 今自分はココ
なぜやるの?
- 出荷時で 残りメモリ100M はヤバイでしょ。プリインを消したい。
- 今のパフォーマンスだと、iPhone買う選択肢しかないから、壊れてもいいからHackしてパフォーマンス上げたい。
- スマートにしたい
とかとか
必要なもの
tool
Sony Bridge for Mac
... XperiaのiTunesみたいなもの、ファームウェア修復機能があり、Sonyからちゃんとしたファームウェアを取得してくれるのでそのファイル取得に利用します。
Flash tool
... これはXperiaにシステムを焼いてくれる。
ファイル
LT26wのftfファイル (6.1.A.2.50以下 )
... root奪取可能なkarnelを含んだ他のXperia ファームウェア 。ネットから頑張って取得してくる
SO-03D 6.1.F.0.106 のftfファイル
... SO-03Dオリジナルのファームウェア。Sony Bridge for Macで取得する。
root 奪取可能な別のXperia karnel と Sony Bridge for Mac で取得したオリジナルを混ぜたキメラ?と呼ばれているシステムを組む感じのようです。
専用バッチ
... こちらのサイトで runme.bat というものが用意されており、よく見ると簡単にshに変換できるので、今回は手でshell書きました。
http://blog.huhka.com/2012/11/xperia-acro-hd-docomo-so-03d.html
注意点
バッチを公開しているサイトの通りに進めるだけ、と思い進めてすぐつまずきました。
のでここでは注意点を先に。
- flashtool の書き込みが失敗しているっぽいとき、途中で中断した時は電源入れない。
- 起動画面無限ループします
- 文鎮化してもいいように、予備端末用意しておく
- 携帯潰れると何かと不便かと思うんで。まじ軽く見てました。
- パズドラのデータ引き継ぎもちゃんと確認しておく
- これも迂闊に端末初期化して、ユーザーID入力しても紐付けしてくれなくてやばい。
失敗の原因
今回の失敗は flashtoolでerror吐いていたのに起動しようとして、無限ループに陥ったこと。
今回の端末は防水仕様で電池が外せないために、電池無くなるまでループします。やばす。
で、そもそもflashtoolの失敗の原因ですが、おそらく libusb をインストールしないといけないらしんですよね。
Try
そこで
brew install libusb
今、また無限ループしているので電池尽きるのまっています。 また進捗報告します!