Twitterでイベントを共有するサービス『eventap』を作りました。
eventapというTwitterで友達とイベント(予定)を共有できるサービス「eventap(イベンタップ)」をつくりました。
以前にもmapu(マプー)というTwitter関連のモバイルサービスを
作ったのですが、あんまり流行らなかったので、その時に培ったノウハウを活かして作りました。
作ったのはいつものメンバー
メンバーでモンハンを一緒にやりたかったので作ろうと思ったのがキッカケだったりします。
Develop
- @yutadayo
- @taiga1002
Design
- @tekejune
Direction
- @shota
詳細な使い方はnanapiに投稿してあるので、
もしよければ使っていただければと思います。
技術的にはそんなに難しいことはしていないのですが、工夫・チャレンジしたのは下記のような所
- フレームワークにCodeigniterを採用、自前でつくったtwitterのライブラリと連動
- memcacheを使ってtwitterからのデータをキャッシュ
- jQueryを使ってのスマートフォン最適化
利用シーンをスマートフォンに想定していたので
最適化、特にデザインにも力を入れて作成しました。
まだまだ追加したい機能がたくさんあるので
追加開発を行ってより便利なサービスにしていきたいと思います!
『24時間365日 サーバ/インフラを支える技術』
読んだ。
インフラ(メインはサーバー)エンジニアになったので勉強にと思って一回サラっと読んでみたんだけど
本に書かれていた技術に触れる機会があったので、もう一度ちゃんと読んでみました。
やっぱり実際に自分で触れて、いじってみた方がよく理解できた。
本の中ででてきた技術で実際に使ったのは下記など
ロードバランサ
※NATとDSR両方で実装しました。
リバースプロキシ
- Apache mod_proxy_balancer
DB
※LVMによるスナップショットでバックアップをとってます。
ネットワーク
- Bonding
※結構簡単にできた。
apache
apacheの下記あたりのパラメータを色々チューニングしてメモリの使用率など、負荷を下げれれました。目に見えて効果があり、とても勉強になりました。
- StartServers
- MaxRequestsPerChild
- MaxClients
その他
- DRBD
- puppet
puppetはかなり詳しくなりました。今はpuppetのマニフェストを変えるだけで機能別にサーバを素早く構築できるようになっています。
その他にもPXEブートをcobblerでやったり
開発機、ステージング機の構築はKVMを使って筐体の節約に努めたり
監視はHobbitを使ったりと、この半年間で色々と成長できました。
はじめてのtokyocabinet
mixiさんのエンジニアブログに載っていた
下記の記事に触発されてtokyocabinetを使ってみたのでその手順のメモ
オレオレ検索窓を設置しよう - mixi engineer blog
まずはインストールからしなくてはいけないので
ネットで調べてyumで必要なパッケージをインストール。
yum -y install bzip2-devel zlib-devel
次にtokyocabinetをwgetで拾ってきてinstall
僕が見たときは最新のバージョンが1.4.45だった。
参考:http://fallabs.com/tokyocabinet/
wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.45.tar.gz
tar xzvf tokyocabinet-1.4.45.tar.gz
cd tokyocabinet-1.4.45
./configure
make
make check
make install
無事インストールが完了!
tokyocabinetの起動、動いてるっぽい。
tctmgr version Tokyo Cabinet version 1.4.45 (908:1.0) for Linux Copyright (C) 2006-2010 Mikio Hirabayashi
あと、mixiのブログに載っていた手順でindexの作成
折角なのでクロール先はこのブログにしてみる。
ruby wgettsv -allow 'http://d\.hatena\.ne\.jp/yutadayo' \ -max 10000 'http://d.hatena.ne.jp/yutadayo/' > intra.tsv
10分くらいでクロールが完了。わりとかかったな。
コマンドを打ってインデックスの作成を試みる。
tctmgr importtsv tctsearch.tct intra.tsv tctmgr setindex -it qgram tctsearch.tct title tctmgr setindex -it qgram tctsearch.tct body
ここは数秒で完了。
検索UIもtokyocabinetに入っていたやつを使わせてもらった。
exampleディレクトリからコピーしてcgiが動くディレクトリに持ってくる。
exampleディレクトリでmakeしてできるtctsearch.cgi と tctsearch.tmplというファイルね。
先ほど作ったインデックスファイル(tctsearch.tct)も同じディレクトリに移動させておく。
cd tokyocabinet-1.4.45/example make cp tctsearch.cgi tctsearch.tmpl ~yutadayo/work/tokyocabinet mv ~yutadayo/tokyocabinet/tctsearch.tct ~yutadayo/work/tokyocabinet
ブラウザでtctsearch.cgiにアクセスしてみる!
.cgi You don't have permission to access /
怒られてしまた。。。
cgiの許可してなかった。
http.confに下記を追加してapacheを再起動
ScriptAlias /cgi-bin/ /home/yutadayo/work/tokyocabinet <Directory /home/yutadayo/work/tokyocabinet> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory>
もう一度アクセス!
動いた。
導入までは結構簡単でした。
『ソフトウェア開発で伸びる人、伸びない人』
ソフトウェア開発 で伸びる人、伸びない人 (技評SE新書002)
- 作者:荒井 玲子
- 発売日: 2006/01/19
- メディア: 新書
読んだ。
日々エンジニアとして気をつけることが書いてあった。
・わからいことは素直にわからないと聞く
・素直であれ
・普段から分かりやすい言葉を意識して使う
・常に能動的でポシティブであれ
・底まで落ちたらあとは這い上がるだけ
PHPで配列をPOSTする
PHPでPOST値を配列として受け取る方法を記載します。
配列も値をformでPOSTすることができます。
<form method="POST" action=""> <input type="checkbox" name="type" value="1"> <input type="checkbox" name="type" value="2"> <input type="checkbox" name="type" value="3"> </form>
上は通常の例、配列で渡したい場合は下記のようにname属性の値の最後に [] を付けると良い。
<form method="POST" action=""> <input type="checkbox" name="type[]" value="1"> <input type="checkbox" name="type[]" value="2"> <input type="checkbox" name="type[]" value="3"> </form>
これをPHPで受け取った場合、チェックボックスの値が配列として格納されています。
<?php $types = $_POST['type'];
中身を var_dump してみると配列になっているのが確認できますね。
<?php $types = $_POST['type']; var_dump($types);
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }