OSC2011 Kansai@Kyoto のスライド出来た〜
京都からこんばんは。村部です。
明日から OSC2011 Kansai@Kyoto です。
今回、セミナーは私がやらせていただきますので新幹線やホテルでスライドを作っていたのですが、さきほど完成しました。
といっても、OSC2011 Kansai@Kobe でやらせていただいた前説のスライドを少し修正して無駄に音楽つけてみただけなんですが。
このスライドは Kobe の時と同じく諸般の事情で門外不出です。
お時間があったら見に来てくださいね。
https://www.ospn.jp/osc2011-kyoto/modules/eguide/event.php?eid=51
2011-07-16 (土) 15時15分からです。
そうそう、端っこのほうなんですがブースのほうもよろしくお願いします。
イケテルEngineYard勉強会に参加してきました。
- 2011/07/12
- yoshida
RBCによる主催イベント「イケテルEngine Yard勉強会」に参加してきました。
メインイベントは米EngineYard社のCEOであるJohn Dillon氏によるトーク。
開催時刻から、John氏が来られるまでの間はビジネス勉強会。お題は「ソフトウェア会社を作る。ただしエンジニアコミュニティとどう付き合って会社を育てていくか。」というもの。4班に別れて会社名、業務内容、エンジニアコミュニティとの付き合い方を議論し、模造紙に書きだしていき、最後に各班発表となりました。
で、なんでこういう内容だったかと言うと、Engine Yard社そのものがコミュニティとともに発展してきた会社からなのだと。で後半のJohn氏のトークが始まったのであります。抜粋すると
- 製品を作って、それと半分近くのコストを掛けて営業マンセールス、マーケティングを行うといった従来のセールス手法は変わっていく。
- Engine Yard社は売上の20%(間違ってたらごめんなさい)をコミュニティに投資している。
- コミュニティへの投資、そしてそのコミュニティが製品・サービスを利用してくれる。
- 当然オープンソースにもコミットしている(パッチの公開など)
- 顧客にサービスを使ってもらうように営業するのではなく、サービスを使う手助けをする。
全てを弊社に適応できるものではないかもしれませんが、ききいってしまう内容でした。
サンブリッジのアレン氏の話は、ズバッと要約すると「シリコンバレーいけ」というものでした。日本でやってることなんて世界の誰も見てない。残念ながらそうなんですよね。
勉強会後は、交流会の場まで用意してもらいました、感謝です。John氏に「普段どんな時間の使い方をしているのか」という質問投げかけるべく、チャンスを狙ってましたが、なんせ人気者ですので最後の最後で捕まえて質問投げた瞬間、ジ・エンドとなってしまいましたが、おかげで円陣の際にはJohn氏の隣をゲットするというある意味幸運さを発揮しました。まあ少しでも話せて良かったです。
スタッフの皆様本当にお疲れさまでした。
なんかすごくまとまってない文章ですが、お許しくださいませ。
VB.NET + NUnit 2.5 の Assert.Throws で例外のテスト
[ブログ紹介] NUnit 2.5 で追加された Assert.Throws: TDD.NET
を参考に VB.NET の書き方にしただけですが。
Imports NUnit.Framework
Public Class ExceptionTest
Private Shared Function throwArgumentException(ByVal obj As Object) As String
Throw New ArgumentException("VarType Error: " & TypeName(obj))
End Function
Public Sub ArgumentExceptionTest(ByVal obj As Object, ByVal expected As String)
Dim ex = Assert.Throws(Of ArgumentException)(
Function() throwArgumentException(obj)
)
Assert.That(ex.Message = expected)
End Sub
End Class
サンプルコードは実際のコードを編集して書きましたが動作確認してないので参考程度に。
.NET のサンプルってC#の場合が多いので「VB.NETではどう書けばいいのかなぁ」ってことも結構あります。
MacでPPTP(VPN)接続しつつ、通常の接続も行えるようにする方法
Mac OS X 10.5でPPTP接続する方法
MacでPPTP使ってVPN接続するようになって、いろいろと面倒だったことが解決して良かった。
と思っていたのですが、PPTPの方の優先度を上げないといけない場合は、通常の接続が駄目になってしまうようです。
VPN側にインターネットへの制限が掛かっていたりしたら、残念なことになります。
ローカルなネットワークにPPTPに繋ぎながら、それ以外は通常の経路で通信ということで下記にて解決しました。
方法としては、PPTPの優先度は通常のインターネット接続より下げておいて、特定のネットワークアクセスの場合のみPPTPインターフェースを使うようにしてあげればいいようです。VPNを接続した後、ターミナルで下記コマンドを実行すればOK。
sudo route -nv add -net 192.168.13 -interface ppp0
ただ毎回ターミナル上げるのは面倒臭いです。 ちょっと調べると、PPTPが開始するときに実行されるスクリプト(参考)があるじゃないですか。ということで
sudo vi /etc/ppp/ip-up
#!/bin/sh
if [ "$1" = "ppp0" ]; then
/sbin/route -nv add -net 192.168.13 -interface ppp0
/sbin/route -nv add -net 192.168.15 -interface ppp0
fi
のような感じで、route add するスクリプトを書きました。
sudo chmod Cheap Adobe Photoshop CS5 744 /etc/ppp/ip-up
するのをお忘れなく。
もっと楽、シンプルな方法があったら教えてください。
VS2010+NUnit2.5.10でテストメソッドをデバッグ
VB.NET+NUnitで開発をしていますが、テストをしてもメソッドの戻り値しか確認できず不便だったので、テストメソッドもデバッグできるようにしました。
1.
ソリューションのプロパティからスタートアッププロジェクトをテストプロジェクトに変更。
マルチスタートアップでも可。
2.
テストプロジェクトのプロパティを開いてデバッグの開始動作を[外部プログラムの開始]に変更。
ファイル選択からnunit.exeを指定。
3.
開始オプションのコマンドライン引数にテストプロジェクトのdllを指定。
これでできるはずだったのですが、起動はしてもブレークポイントに反応してくれません。
調べてみると、
[VS2010][NAgile] VisualStudio2010 Express + NUnit でDebug実行ができない場合
こちらのページを発見しました。
どうやら.NET Framework 4.0だとデバッグ実行ができないみたいです。
なので上のページを参考にさせていただいて、nunit.exe.configを編集。
4.
nunit.exe.configのconfiguration内に下の3行を追加。
上書きして実行してみると、ちゃんとブレークポイントに反応するようになりました!
PHP + SQLite で正規表現(PDO_SQLITE編) in CakePHP
CakePHP 1.3.6 での話です。
これ、やったのはずいぶんと前なんですが書いてなかったですね。
私はすごくうれしかったのですが、周りの反応は薄かった覚えがあります。
CakePHP 1.3 でSQLite3ってのはかなりイレギュラーで、確か、CakePHPのTracから探してきたドライバ(dbo_sqlite3.php)を使用しています。
確認しようと思ったのですがTracに繋がらないぞ?ってな状況。
そんなこんなでとてもマイナーな話なんですよね。 反応が薄いのもむべなるかな。
ですが、PDOでSQLiteにアクセスしている場合なら応用が効くかと思います。
dbo_sqlite3.php 内部でPDOが使用されておりますので。
app_model.php でやっているので関係するところをまとめて引用。
class AppModel extends Model {
function beforeFind($queryData) {
parent::beforeFind($queryData);
//正規表現関数有効化
$this->regxEnable();
}
/**
* 正規表現関数有効化
*/
public function regxEnable(){
$db =& $this->getDataSource();
$db->connection->sqliteCreateFunction('RGX', array('AppModel', 'sqliteRegexMatch'), 2);
}
/**
* 正規表現関数
*/
public function sqliteRegexMatch($regex, $str) {
if(empty($regex)){
return true;
}else{
return preg_match($regex, $str);
}
}
}
$db->connection がPDOのインスタンスです。
sqliteRegexMatch で $regex が empty の場合に true を返しているのは実装しているアプリケーションの都合ですのでご注意を。
実装の際、下記サイトを参考にさせていただきました。
違いはPDOであること、preg_matchを使用していること、SQL関数を処理するコールバック関数としてメソッドを使っていることです。
CakePHP的ポイント
- DBOからPDOのインスタンスを取得
- beforeFindで検索時に正規表現関数を有効化
PDO_SQLITE的ポイント
- sqliteCreateFunctionでSQL関数登録
- sqliteCreateFunctionのコールバック関数にメソッドを登録する際の書式
使い方ですが、参考サイトと違ってpreg_matchでの正規表現であることに注意してくださいね。
私の場合、CakePHPでの使用ですので
/**
* モデルのconditonsに正規表現を使う場合の配列を返す。
*
* @param $pattern 正規表現
* @param $cols 判定対象のカラムの配列
* @return
*/
function whereByRgx($pattern, $cols) {
$conditons = array();
if(!empty($pattern)){
foreach ($cols as $colname) {
$conditons[] = "RGX('" . $pattern . "', " . $colname . ")";
}
}
return $conditons;
}
てなモデルでのfindなどで使用するconditions用の配列を返すメソッドを作って使っております。