Twitterでイベントを共有するサービス『eventap』を作りました。

eventapというTwitterで友達とイベント(予定)を共有できるサービス「eventap(イベンタップ)」をつくりました。


http://eventap.net/


以前にもmapu(マプー)というTwitter関連のモバイルサービスを
作ったのですが、あんまり流行らなかったので、その時に培ったノウハウを活かして作りました。


作ったのはいつものメンバー
メンバーでモンハンを一緒にやりたかったので作ろうと思ったのがキッカケだったりします。

Develop

  • @yutadayo
  • @taiga1002

Design

  • @tekejune

Direction

  • @shota


詳細な使い方はnanapiに投稿してあるので、
もしよければ使っていただければと思います。


技術的にはそんなに難しいことはしていないのですが、工夫・チャレンジしたのは下記のような所


利用シーンをスマートフォンに想定していたので
最適化、特にデザインにも力を入れて作成しました。


まだまだ追加したい機能がたくさんあるので
追加開発を行ってより便利なサービスにしていきたいと思います!

『24時間365日 サーバ/インフラを支える技術』

読んだ。
インフラ(メインはサーバー)エンジニアになったので勉強にと思って一回サラっと読んでみたんだけど
本に書かれていた技術に触れる機会があったので、もう一度ちゃんと読んでみました。

やっぱり実際に自分で触れて、いじってみた方がよく理解できた。
本の中ででてきた技術で実際に使ったのは下記など

ロードバランサ
※NATとDSR両方で実装しました。

リバースプロキシ

DB
※LVMによるスナップショットでバックアップをとってます。

ネットワーク

  • Bonding

※結構簡単にできた。

apache
apacheの下記あたりのパラメータを色々チューニングしてメモリの使用率など、負荷を下げれれました。目に見えて効果があり、とても勉強になりました。

  • StartServers
  • MaxRequestsPerChild
  • MaxClients

その他

  • DRBD
  • puppet

puppetはかなり詳しくなりました。今はpuppetのマニフェストを変えるだけで機能別にサーバを素早く構築できるようになっています。

その他にもPXEブートをcobblerでやったり
開発機、ステージング機の構築はKVMを使って筐体の節約に努めたり
監視はHobbitを使ったりと、この半年間で色々と成長できました。

インターンシップがはじまりました!

うちの会社では毎年夏に理系インターンシップなるものを行っています。

主に理系の学生を対象とし一ヶ月間プログラムを学んでもらうというのがプログラムの内容である。

社員も1ヶ月間このインターンシップにコミットし学生さんのサポートを行います。

今年は僕も恥ずかしながらアシスタントとして参加させていただきます。

短期間に集中して何かに取り組むことはとても大事ですが、
なにより、僕がエンジニアになって実際思った様に
モノ作りの楽しさや難しいながらもプログラムが動いたときの
感動などを学生さん達に伝えられたらなあと思います!

学生さんガンガレ!

はじめてのtokyocabinet

mixiさんのエンジニアブログに載っていた
下記の記事に触発されてtokyocabinetを使ってみたのでその手順のメモ


オレオレ検索窓を設置しよう - mixi engineer blog


まずはインストールからしなくてはいけないので
ネットで調べてyumで必要なパッケージをインストール。

yum -y install bzip2-devel zlib-devel

次にtokyocabinetwgetで拾ってきて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>

もう一度アクセス!

動いた。

導入までは結構簡単でした。

『ソフトウェア開発で伸びる人、伸びない人』

読んだ。
日々エンジニアとして気をつけることが書いてあった。

・わからいことは素直にわからないと聞く
・素直であれ
・普段から分かりやすい言葉を意識して使う
・常に能動的でポシティブであれ
・底まで落ちたらあとは這い上がるだけ

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)
}