hamacoの日記

どうでもいい日常をたれながす日記だと思う

PHP Matsuri 2011に参加してきた

色々あって書くのだいぶ遅れてしまいましたが、10月15日〜16日に大阪で開催されたPHP Matsuri 2011に参加してきました。
行く前は、初めての夜行バス、初めての大阪のイベント、初めてのPHP Matsuri、初めての泊まり込みのイベントと初めて尽しで色々不安だったのですが、終始本当に楽しくて不安なんて一瞬でどっかいってしまいました。

前日 〜 朝

前日は当初は有給とって大阪に行くつもりだったけど、仕事の関係で無理だったので夜行バスで大阪入り。
9時過ぎくらいに着いたら丁度受付設営をしてる所で、とりあえず中に荷物置いて知り合いに挨拶して気が付いたら受付の中にいてました。
というわけでスタッフでもないのに受付やってたり、おいしい「わったい菜」のケーキ運んでたり、名札回収してたりしたのが私です。

1日目

どういうイベントなのか分かってなかったので、特にやる事決めずに参加してしまったので良く分からないままセッション聞いてたりワークショップやっているのをうろちょろしてたりしてました。

後は闇PHP Matsuri 2011でEmacsのネタやってる人がいたので、ならVimもありだろとか飛び入りでquickrun+PHPUnitの紹介したり。
余談ですが、自分みたいな人見知りだと自分から話しかけるのが苦手なので、発表すると相手から話掛けてくれるとかいう大サービスがおまけに付いてくるのでいいですよね。発表。
今回のグダグダな発表見てquickrunに興味を持った人が深夜に話し掛けてきてくれたのでquickrunの設定とかちょこちょこvimの話で盛り上ったりとかあったしね。

1日目夜〜2日目

大画面でAngryBirdsで皆が遊んでたり、突然とある音楽が流れたり、寝そうになってると強制的に起こされたりとか色々あって殆ど寝てないまま2日目を向かえてしまったのであまり記憶がない……
丑三つ時に@NEKOGETさんと闇PHPMatsuriの続き的なクライアント話を色々としてたりとか、ギャレットがピノ沢山買ってきて強制的に食べさせてたりとかしてた気がします。

2日目のデモで申込少ないとか小耳に挟んだので、ネタでcake2.vimとかやろうかとしたけど、4分話せるネタレベルまで持っていけなかったので、急遽Titanium Mobile+SabelでtipshareをiPhoneで見れるようにしたのを皆のデモ中に作って発表したり。
ただ、発表準備があまりできてなかったのでグダグダで何が言いたいのか分からない発表になってしまったのがちょっと残念。

感想とか

  • 初参加だったので特にこれをやる! みたいな目的を持っていってなかったのは失敗だった。
    • 事前にアイデア出しとかある程度の所まで持っていってないと当日勿体無いよね。
  • 皆夜中まで起きていすぎ
  • 初日の最初の@yandoさんといい、最後の@shin1x1さんといい吉岡さんはネタにされるキャラなんだなーと認識した。
  • ホテルの部屋の鍵が2人で1つなので片方が部屋に寝にいってしまうともう1人はどうしたらいいのやら……
    • その辺のソファーとかで寝てる人そこそこいたっぽい?
  • 事前にGoogle Documentに書いていたポジションペーパー的なものを会場で見るチャンスがなかった。
    • 多分受付とかやってる間に流してたんだろうなー と推測

ノード » PHP Matsuri 2011に他の人の感想とかのっているみたいです。

次回福岡開催!!

なんか次回は福岡で開催が確定らしいので楽しみだなー。wktk

ujihisa.vimに行ってきた

タイトルの通りujihisa.vimに行ってきました。
メモとかとってないし詳しい内容とかは誰か書いてくれてると思うのでテキトーに覚えていることを。

  • 13:00少し前に着いてギリギリ前の方に座れた
  • このイベントの為にバンクーバーとか海の向こうからやってくる人達
  • Vim Levelの平均が高い
  • .vimrcのLive dis突っ込みどころ満載で面白い
  • 熱い & 暑い
  • 文字数計算ひたすら面倒
  • vimをfullで入れると容量めっちゃ使う
  • Shougoさんの熱唱
  • バグは報告だけして終わりじゃないよ
  • 発表終わった後はプラグイン作者達のバグ調査&修正タイム
  • 気が付いたら寿司が消えてた
  • カナダ土産やばい
  • 残った人達で記念撮影タイム
  • HootSuiteグッズ貰った
  • iPad番HootSuite凄い

感想

とても楽しかった! またあれば是非参加したいです!

Yokohama.vim #1 行ってきた

タイトル通りYokohama.vim #1に行ってきました。

以下覚えてること

  • 意外とMac使い少ない
  • Vim Level3以下が大半
  • Super Shougo Time
  • Vim = VM
  • Vimが落ちる = Windowsのブルースクリーン
  • anything脳 / unite脳
  • Shougoさんとるびきちさんと同じ机だったので、対談の後もお題無視して殆どむずかしい話してた
  • 前回は懇親会6人とかだったらしい
  • vimmer = シャイ
  • まさかのOpera使いがいた!

あとノベルティ貰いました。
f:id:hamaco:20110425220244j:image

主催のguyonさん、発表してくれたShougoさんるびきちさんありがとうございました。また次回があるなら是非参加したいと思います。

SSHでログインしようとしたらサーバが変わったとエラーがでた

サーバを再インストールした後、SSHでログインしようとしたら以下の様なエラーがでて困った。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
.
.
RSA host key for rdev.jp has changed and you have requested strict checking.
Host key verification failed.

普段は~/.ssh/known_hostsをvimで開いて該当箇所消したりしてたんだけど、なにやらコマンドで出来るらしいのでやってみた。

known_hosts内の情報検索

以下のコマンドを実行すると、対象のIPのデータがknown_hostsにあると1行でてくる。

% ssh-keygen -F 203.0.113.1
# Host 203.0.113.1 found: line 5 type RSA
203.0.113.1 ssh-rsa AAAA......

known_hostsから該当ホストの情報削除

データを削除したい場合は-Rをオプションに付けてやれば良いみたい。

% ssh-keygen -R 203.0.113.1

ただ、.ssh/configに書いてあるHostの名前からだと動かないっぽい。これはSSHでアクセスする時点でHostNameの値に置き換わってからknown_hostsに登録されるからしょうがないのかなー。

Sabelを試しつつバッチ処理を作ってみる (PHP Advent Calendar jp 2010 Day 19)

こんにちは、PHP Advent Calendar 2010 19日担当のhamacoです。
昨日はid:heavenshellさんの「Introduction of Net_KyotoTycoon_Rest」でした。

CodeIgniterネタがありみたいなので、今日はSabelネタでいきたいと思います。前日からの紹介にもSabelの開発者って書かれてたしね。
インストールしてブラウザで見るのだと、Apacheの設定とか面倒なので今回は全てコンソールで完結できるようにバッチ処理を作ってみたいと思います。

とりあえず動くまで

今回はとりあえず使ってみようと言うことで、アプリケーションの直下にSabelを置くことにして、パスを通したりとかそういった面倒なことは飛ばします。

% mkdir /path/to/application
% cd /path/to/application
% svn co http://www.php-framework.org/svn/sabel/trunk Sabel
% SABEL_HOME=./Sabel Sabel/bin/sabel

これで、アプリケーションが動く状態になりました。

バッチ用のアクション作成とか

Sabelのアプリケーション設置が終わったら、次はバッチが動くようにします。
まず、バッチ用のモジュールディレクトリを作成しテキトーなプログラムを置きます。

% mkdir -p app/batch/{controllers,views}
% vim app/batch/controllers/Sample.php
<?php

class Batch_Controllers_Sample extends Sabel_Controller_Page
{
  public function index()
  {
    dump("Hello Batch World!!");
  }
}

次に、ルーティングの設定をしてbatchモジュール以下にアクセスできるようにします。
以下をconfig/Map.phpのconfigureメソッドの一番上に貼り付けて下さい。

$this->route("batch")
       ->uri("batch/:controller/:action")
       ->module("batch")
       ->defaults(array(
         ":controller" => "index",
         ":action"     => "index")
       );

バッチ処理の実行

% php /path/to/application/sabel.php "batch/sample"

================================================
string(19) "Hello Batch World!!"
================================================

ここまでで気付いている人もいるかも知れませんが、Sabelはバッチ処理で特別な処理を行なう必要がない為、普通のアクションもコンソールから実行できます。

% php /path/to/application/sabel.php "index/index"

================================================
string(13) "Hello World!!"
================================================

これを利用して、コンソールから実行した時だけ強制的にmemcachedとかのキャッシュを更新できるようにしたりして、キャッシュが切れた時にアクセスが重たくならないようにしたりとかに使えるかもしれません(私は使ったことないですが)。

ちょっと問題が

ただ、コンソールから普通のアクションを叩けるという事は、そのままだと逆にバッチ処理用のプログラムがブラウザからアクセスできてしまうという事になってしまいます。
f:id:hamaco:20101219010046p:image:h480

これは、config/Map.php内でコンソール専用のルーティングを用意することで対応できます。
先程のルーティングを以下の様に変えると、コンソールからアクセスした時だけのルーティングが作れます。

if (is_cli() === true) {
  $this->route("batch")
         ->uri("batch/:controller/:action")
         ->module("batch")
         ->defaults(array(
           ":controller" => "index",
           ":action"     => "index")
         );
}

これで、コンソールからしかアクセスできないbatchモジュールを作ることが出来ました。後はモデル使ったりとか色々やってみて色々なバッチ処理を作ってみて下さい。

まとめ

バッチ処理とかいいつつ、普通にHello Worldしてるだけとか。
Sabel使ってる人見たことないので役に立つかどうか分からないですが、少しでも興味を持ってくれたら試しにSabelを使ってみて感想とかくれると嬉しいなー。
他にも色々やってみたい場合Sabel PHPフレームワークを見るとか、Sabelの開発者にTwitterとかで聞いてみるとかしてみると良いんじゃないでしょうか?
Sabelのバージョンが最新ではないですが、codereposPhwittrというTwitterクローンがあるのでそちらを参考にしてみるとSabelがどんな感じのものなのか分かって良いかもしれません。Sabelの開発者自身がサンプルになるように作っているので、それなりにSabelの機能を使用しているはずです。

明日の担当は@omoonさんです。よろしくお願いしますー。

Sabel_Mailを使ってGmailからメールを送る

特に難しいことはないですが、最近2回ほどPHP+Gmailの単語を見た気がするので。

$user = "hamanaka.kazuhiro@gmail.com";
$config = array(
	"host" => "ssl://smtp.gmail.com",
	"auth" => "login",
	"user" => $user,
	"password" => "Gmailのパスワード",
);
$sender = new Sabel_Mail_Sender_Smtp($config);

$mail = new Sabel_Mail("ISO-2022-JP");
$mail->setSender($sender);
$mail->setFrom($user, "hamaco");
$mail->setTo("test@example1.jp");
$mail->setSubject("Sabelからのテストメール");
$mail->setBody("Sabel_Mailを使ったGmailからのメール送信テストです");
$mail->send();

こんな感じでhostにssl://を付ければ普通にSSL/TLSを使ってGmailでメール送れます。