第50回PHP勉強会@関東
今回は株式会社コンテンツワンにて開催されました。(多謝
とってもご近所。なので参加。
テーマはOpenSocialで、第50回という記念もあってか、錚々たるメンバーが集ってました。
内容は
- mixiアプリケーションについて@mixiアプリ(モバイル)の中の人
- PHPでつくるソーシャルアプリ@今回のテーマの言い出しっぺな人っぽい人
- ソーシャルアプリを運用してみての感想やら体験談@ウノウの人
非公開的な内容もあったので、おそらくメインであろうmixiの中の人の話はust配信されませんでしたが、結構充実した内容でした。
良い刺激になったので、資料をまとめて会社の人にもちょっとだけでも刺激を与えればいいなぁ。
次もコンテンツワンさんであれば、会社からも近いので社内の人を誘っていければいいなぁと思ったり。
kumofsのインストール
大体はkumofsを使う(さくらインターネット創業日記)を参考にしながら進めればOK
インストールに必要な情報は公式ドキュメントに記載されているので、そちらを参考にする
必要なライブラリのインストール
CentOSの場合
sudo yum install libtool openssl-devel bzip2-devel
Ubuntuの場合
sudo aptitude install libtool libssl-dev libbzip-dev
Rubyの準備
tar zxf ruby-1.8.7-p249.tar.gz cd ruby-1.8.7-p249 ./configure --prefix=/usr/local/ruby/1.8.7-p249 make sudo make install cd /usr/local/ruby sudo ln -s 1.8.7-p249 default
MessagePack for Rubyをgemから入れる
tar zxf rubygems-1.3.5.tgz cd rubygems-1.3.5 /usr/local/ruby/default/bin/ruby setup.rb sudo /usr/local/ruby/default/bin/gem install messagepack
MessagePack for C++のインストール
tar zxf msgpack-0.4.1.tar.gz cd msgpack-0.4.1 ./configure --prefix=/usr/local/msgpack/0.4.1 make sudo make install cd /usr/local/msgpack sudo ln -s 0.4.1 default
TokyoCabinetのインストール
tar zxf tokyocabinet-1.4.42.tar.gz cd tokyocabinet-1.4.42 ./configure --prefix=/usr/local/tokyocabinet/1.4.42 make make check sudo make install cd /usr/local/tokyocabinet sudo ln -s 1.4.42 default
kumofsのインストール
tar zxf kumofs-0.3.1.tar.gz cd kumofs-0.3.1 ./configure --prefix=/usr/local/kumofs/0.3.1 \ --with-msgpack=/usr/local/msgpack/default \ --with-tokyocabinet=/usr/local/tokyocabinet/default make sudo make install cd /usr/local/kumofs ln -s 0.3.1 default
kumofsの起動
公式ドキュメントにチュートリアルの項があるのでそこを参考にすれば大丈夫だが、起動の際に「libtokyocabinet.so.9がない」と怒られることがある。
その時はTCのライブラリへのパスをLD_LIBRARY_PATHに設定する必要がある。*1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/tokyocabinet/default/lib
毎回は面倒なので.bashrcや.zshenvなどに入れておく
*1:今回の例の場合は必須
Synergyクライアントの自動起動
KDMの各起動スクリプトの末尾に下記の記述を加える。
# /etc/kde4/kdm/Xsetup SYNERGYC='/usr/bin/synergyc' if [ -x $SYNERGYC ]; then /usr/bin/killall synergyc sleep 1 $SYNERGYC <synergy server ip> fi # /etc/kde4/kdm/Xstartup SYNERGYC='/usr/bin/synergyc' if [ -x $SYNERGYC ]; then /usr/bin/killall synergyc sleep 1 fi # /etc/kde4/kdm/Xsession SYNERGYC='/usr/bin/synergyc' if [ -x $SYNERGYC ]; then /usr/bin/killall synergyc sleep 1 $SYNERGYC <synergy server ip> fi
Twitterをmixiボイスに同期する
iPhoneからついったーを利用するほうが多いし、わざわざmixiボイスだけにポストすることはないので、同時にできないものかと思った。
やっぱりみんなやっているようで
- twitterからmixiボイスにマルチポストするRubyスクリプト書いた - 5.1さらうどん
- Mixiエコーの内容をtwitterにポストするrubyスクリプト - 電脳戦士ハラキリ -SE道とは死ぬ事と見つけたり-
とりあえずそのまま利用していたんだけど、どうやらこの前のDNS攻撃のときにハングしたみたいで、そしたら同じつぶやきを毎回ポストするようになってしまった。
原因はポストしたやつを記録しておくファイルがデッドロック状態になって、最新のものがずっと更新されないという状態になってしまったこと。
そこでスクリプトを読んでみたら、危なっかしい記述が多かったので作り直してみた。
# vim:set encoding=utf-8 et ts=2 sts=2 sw=2: # #= ついったーとmixiボイスを同期する # require "rubygems" require "mechanize" require "rubytter" # mixiのログイン情報 mixi_id = "mixi" mixi_passwd = "password" # ついったーのログイン情報 twitter_id = "twitter" twitter_passwd = "password" # mixiにログイン agent = WWW::Mechanize.new page = agent.get("http://mixi.jp/") form = page.forms.first form["email"] = mixi_id form["password"] = mixi_passwd form.submit # mixiボイスの投稿フォームを取得 page = agent.get("http://mixi.jp/recent_echo.pl") form = nil page.forms.each do |f| if f.action =~ %r!/add_echo.pl$! form = f break end end # ついったーから最新の発言を取得 tweets = [] Rubytter.new(twitter_id,twitter_passwd).user_timeline(twitter_id).each do |t| tweets << t.text.tr("\n"," ") end # ポスト済のログファイルを読み込んで書き込み済のものを排除 posted_log_file = File.expand_path("posted.log", File.dirname(__FILE__)) posted = [] if File.exist?(posted_log_file) open(posted_log_file, "r"){|f| posted = f.readlines} end posts = tweets.dup posted.each do |p| posts.delete(p.chop) end exit if posts.empty? # ログファイルを更新 open(posted_log_file, "w"){|f| f.puts tweets.join("\n")} # mixiボイスへの投稿 posts.reverse.each do |p| form["body"] = p form.submit end
Sambaで絶対にマスターにしたくないときの設定
SambaはデフォルトでWindowsよりも優位に立って、マスタになろうとする設定になっているので、こっそり自分のPCで使うときは気をつけよう。
そこで、絶対にマスタにしたくないときの設定は、Samba HOWTO集 - Chapter10. Network Browsing - Configure WORKGROUP BrowsingのExample 10.3. smb.conf for not being a Master Browserになる。
[global] domain master = no local master = no preferred master = no os level = 0
Gnome-RDPを使う
rdesktopだけだと、ホストを管理するのがめんどうだったので、GUIツールを探してみた。
grdesktopはバグで設定が保存されなくて、grdpはフルスクリーンとか、キーマップの変更に対応してなかったので、gnome-rdpを選択した。
sudo aptitude install gnome-rdp
クライアントをUSマップにしている場合、en-usだと日本語モードがなくなり、jaだとマップがおかしくなるので、rdesktopのキーバインド - 狐の王国を参考にして、以下の3行を追加
# /usr/share/rdesktop/keymaps/ja-us
map 0xe0010411
Kanji 0x29
Alt_R 0x38
しかしGnome-RDPはキーマップを標準のものからしか選択できないので、設定値を無理矢理変更する。
sqlite3 ~/.gnome-rdp.db sqlite> update session set keyboardlang = 'ja-us'; sqlite> .quit