mroonga の速度計測

mroongaの速度計測実験したのでメモ

1.環境
・Amazon Linux AMI( t2.micro )
・Mysql5.5
・mroonga5? (2015年5月時点で最新のやつ)

2.データベース
・以下のようなテーブルを作成
CREATE TABLE test (
id INT NOT NULL PRIMARY KEY,
content varchar(255) NOT NULL,
FULLTEXT INDEX (content)
) Engine=Mroonga DEFAULT CHARSET=utf8;

・contentに20文字のランダムな英数字テキスト1000万データを挿入

3.実験
・以下の2つのコマンドを実行
-select * from test where content like “%adr%”;
-select * from test where match(content) against(“adr” in boolean mode);

4.結果
・以下の2つのコマンドを実行速度
-select * from test where content like “%adr%”;
→0.74秒

-select * from test where match(content) against(“adr” in boolean mode);
→0.0154秒

5.結論
・mroongaすげぇ(今回は日本語使ってないからgroongaを使ったと思って差し支えないのかな?

d3.jsのd3.maxがなんかおかしい

殆ど愚痴。これのせいで今日半分くらい無駄にした・・・。
とりあえず似たような悩みを持つ人に「君は悪くない」と伝えたいがための記事。検索に引っかかると良いな。

▼直面した問題
・d3.max(array)でarray内の最大値が何故か求まらず、下から5番目くらいの数値を返された。

原因は不明。10桁くらいの数値を30個くらい詰め込んだ配列だったけど、なんか大きすぎたとか?まったくわからない。
(分かる人がおりましたら連絡いただけるとすごく嬉しいです。ついでにランチご馳走させてください。。。orz)

▼解決方法
・普通にjavascriptのMathオブジェクトを使う
例:var max = Math.max.apply(null,datasets);

d3.js、もっとちゃんと勉強しないトナー

Macのlocal環境でpython3のdjangoからmysqlに接続する

普段phpでなんの問題もなくやっていたのでこんなことで苦労するとは思わなかった…

基本的には
・Python3.4とDjango1.7でMySQL5.6へ接続(mysql-connector-pythonを使え)
こちらの記事を参考にしたのですが、mysql-connector-pythonをインストールするときだけ注意。ハイフンがひとつ足りていなくて、正しくは
pip install mysql-connector-python –allow-external mysql-connector-python
で動きます。

そもそもpython3に対応してないものが結構あるっぽいので注意。

webサービスのプロトタイピングツールを公開しました

こちらにウェブサービスのプロトタイピングツールを公開しました。

htmlとcssが書けて、紙ではなく動的な表現をしたいけどphp等で動かすのは面倒臭い・・・
そんな人のためのツールです。

特徴としては、
・html,cssだけで書ける(環境設定が完全に必要ない、javascriptを知らなくてもページ遷移ができる。)
・ページ遷移の表現が index.html のみでできる
・圧倒的に簡単(新しく覚えることが特にない)
ことになります。

htmlだけでプロトタイピングはよくするけど、ヘッダーとかの共通項をうまくまとめられないかなーと考えた結果のツールです。
jqueryとかも全部入っているので、ネットがなくても動きます。

デモはこちら。

気になった方は、ぜひ、こちらよりご利用ください。
Web Service Prototyping Tool

適切な手段の選択

ここ数日でガッツリpythonを学んでわかったが、僕がやろうとしていることには絶対pythonが使われていないとおかしかった。

スクレイピングや数値解析、データ整形が事業の主軸と言っても構わないレベルなのに、それをあまり得意としないphpでやろうとして、めちゃくちゃ苦労していたが、pythonでやると特にスクレイピングがびっくりするくらい簡単でびっくり。

適切な言語選択の他にも、手段の選択を迫られるシーンは数多くあるように思う。
・クラウドソーシングで行うべきか、内製で行うべきか
・テレアポ等の営業を行うべきか、SEOを強化してインバウンドでのマーケティングをするか
・アプリかWebか
・どのデータベースを活用するか
etc…

得意なものがあると、そればかりを使いたくなってしまうけど(今回の僕だったらPHP)、それ以上に、今やろうとしていることをやるのにどれが最適か、人に聞いて2,3はしっかり検証したほうがいいのだと思う。

1052 Column ‘id’ in where clause is ambiguous

cakePHPでのDBの扱いでまたくだらないことで躓いたのでメモ。

Modelのアソシエーション? belongsToとかでModelの連結をしていると、findメソッドで片方のidを指定していたつもりが、belongsToをした両方のテーブルのどちらを指しているかわからない、という状況になってしまいます。

1052 Column ‘id’ in where clause is ambiguous

こんな感じのエラーが出ると思われます。

解決方法は簡単で、

$this->Model->find(“first”,array(
“conditions”=>array(
“id”=>$id
)));
としていたのを
$this->Model->find(“first”,array(
“conditions”=>array(
“Model.id”=>$id
)));
とするだけです。わかりにくいかもですが、Model名をカラム名とともに指定するだけです。

フレームワークはホントくだらんとこで引っかかる・・・。

vim

.vimrcの設定方法

今までサーバー上でvimを使う際は事前に設定されていたらしく文字色が勝手に変わってくれたりしていて、ローカル環境でのvimではそれがないのはなんでだろう?みたいに思ってたのですが、やっぱり設定方法というのがあるらしいです。初心者乙orz

参考記事はコチラ。Qiita様神です。

順序はざっくり以下のとおり。

1.HOMEの場所を、 echo $HOME で確かめる。(基本多分ターミナルを開いた最初の場所です)

2.そこで vim .vimrc で.vimrcファイルを作る
3.そこに設定をする。
4.vimを開いて、 :source ~/.vimrc と入力。
以上です。

codaもショートカットでの操作はできていいのですが、なんかvimの方がよりタイピングだけで完結する気がして気持ちい・・・。

6ヶ月程で動くwebサービスが作れるようになるまでにやったこと。【後編】

前編はコチラ

ということで後編です。前編もすごくわかりにくいのでまた後で書き直します。結構振り返るといろいろあったので、書きながら振り返ってまた後で整理するようにしたいと思います。

2012年3月:1週間で作ったサークルまとめサイト

当時の状況

一度一通り動くwebサイトを作った後だったので、本を読まなくても基本的なコードは書ける、といった段階でした。ただしサーバーはまだロリポップ。dotinstallがかなり発達してきてfacebook loginのやり方とかも出てきます。

成功した本

特になし

失敗した本

特になし

使用したドットインストールの解説

かなりドットインストール頼りだった記憶があります。
・twitter bootstrap
・facebook login
・twitter login
・javascript系
・CSS系
が見たやつです。ただ今とはかなり様子が違ってしまっているので気になる人は実際のサイトを見てみるのが良いと思われます。

その他

外部サービスのAPI関連は、始めて使えた時の感動が半端ないです。あと、この頃は細かいスペルミスで半日悩み続ける、みたいなのがざらにありました。最初のうちはとにかく細かい意味不明なミスに頓挫されることも多いですが、寝て起きると治ったりします。

2012年5月:Macデビュー

当時の状況

学生エンジニア支援します!みたいなのがあってそこで師匠と出会います。その関係上一瞬javaに浮気したりしたのですが、結局高橋のレベルが低すぎてなぁなぁになってそれは終わります。ただその過程で”他にも知らなきゃいけないこと”に大量に触れたので、絶対になくてはならない一段階でした。このへんは特にサービスとかは作っていません。

成功した本

macのターミナルを始めて使えた本です。感動しました。ターミナルはその後も死ぬほど使うというかwebサービスをやる上では日本語の”あいうえお”並に基礎なので、普段からGUIに頼らないくらいターミナルを使えるようになるのが良いと思います。

これ一見難しそうなのですが、かなり初心者向けな上に、”通信”とかその辺に触れているのでこれもインターネットを使うサービスを運営する上で必須の知識がてんこ盛りです。これはインターネットを学校で勉強した人以外は必読なんじゃないかと思います。

主にjqueryを覚えたくて使いました。読みやすいのでjavascriptの勉強の取っ掛かりに良いと思います。逆にこれをやってもあまり自由自在にjavascriptが使えるようになるわけではないので注意です。

失敗した本

javaは結局身についてない、という意味で失敗に入れましたが、読んでて楽しいし本格的にjavaをやることになったときはかなり頼りになりそうな気がします。

 意味不明でした。

僕の印象だと”オブジェクト指向”にフォーカスした解説書は全部同じ事を言っていて(あたりまだけどw)読んでてもなんかしっくりしてこないです。

使用したドットインストールの解説

使ってない

その他

javaもそのうちしっかりやりたい・・・。

2012年8月9月:ネットベンチャーでのインターン

当時の状況

夏休みになりちゃんと勉強したかったのですが、その前の出来事の通り”完全な独学”に限界というかかなりの非効率さを感じたので一度インターンしてプロのやり方を見てみよう、となりました。ちなみに結果として企画好きな僕はほとんどの時間を企画に費やしあまりプログラミング力の上達にはつながりませんでした。笑

成功した本

インターンでawsを使っていたのでとりあえず勉強に使いました。なかなか内容は高度なのですが、見ながら進めてついでにapacheの勉強になったりもしました。

失敗した本

特になし

使用したドットインストールの解説

・jquery mobile関連
・twitter api関連

その他

apacheも当時は意味不明すぎていろいろ悩んでました・・・。ログの見方とか。そういった細かいことは上司から教えてもらえたので幸運でしたが、このへんも最初かなりひっかかるような気がします。

2012年10月11月:なんでも聞ける人がいるとめちゃくちゃ捗る

当時の状況

BOAT studentという”第一線のエンジニアになんでも聞ける”みたいな取り組みがあって、突っかかる度に適宜聞かせてもらってました。くだらないこととかもかなりあったのですが、なんとすっきり進むことか・・・。あとやっぱサーバー関連とかは実際にやってる人の話を聞くのが一番実践的で良いと思われます。完全独学はかなり限界があります。本を読むよりも、できれば”プロに聞く”が圧倒的に良いです。

成功した本

UIに一工夫するためにjavascriptをどうにかしたかったのですが、これがを読んでかなりすっと入って来ました。中身は結構あるのですが、これは構造を覚えるような目的で使うのが良いと思われます。javascriptと一口に言ってもいろんな用途があるので、UIで使うときはそれに特化したものを読むのが良いと思われます。

失敗した本


いろいろ使えたので完全に失敗とは言えないのですが、ある程度検索力をつけてくるといらなくなります。なれないうちは、”絶対に動くコードが載ってる”ことがかなりの強みになる2冊です。

使用したドットインストールの解説

・jquery関連、ajax関連

その他

この2ヶ月でかなりレベルアップした気がします。ある程度慣れてくれば、本に頼らずとも”人に聞く+ネット”で殆どの事が解決します。

2012年1月:ようやく知ったフレームワークとgithub 

当時の状況

サービスをチームとして運営することになりました。そこでちゃんとしたエンジニアの方に言われたのが、
・フレームワークは絶対使えw
・githubアカウントは持ってろw
でしたw

成功した本

すごく丁寧でわかりやすいです。ある程度phpがわかっていることが前提です。

失敗した本

こうゆう”らくできる系”は絶対失敗するので注意です。

使用したドットインストールの解説

cakephp関連、git関連

その他

フレームワーク神wwww

まとめ

なんか書き忘れてることがいっぱいある気がする・・・。ただひとつ言えるのは、webサービスを作れるようになるために必要な知識はかなり膨大ってことです。ネットで逐一検索してれば大丈夫なのは、それなりのレベルになってからです。最初は本の言うとおりにするのをお勧めします。
あと、まとまった時間をとるのもめちゃくちゃ大事で、週1,2回とかだと毎回忘れちゃうし、詰まった時に嫌になってやめちゃう気がします。
僕もまだまだunkoレベルなのですが、とりあえず前編に書いたレベルに到達するまでの道のりでした。 いやー長かった!w