ブックマーク / blog.asial.co.jp (21)

  • Doctrineのオブジェクト単位での悲観的ロックについて

    public function executeIndex(sfWebRequest $request) { echo 'Lock Start!'; //Doctrineのコネクションを取得 $conn = Doctrine_Manager::getInstance()->getCurrentConnection(); //コネクションを渡し、ロックマネージャーを生成する $lockingManager = new Doctrine_Locking_Manager_Pessimistic($conn); //適当なMemberオブジェクトを取得 $member = Doctrine::getTable('Member')->find(1); try { //ロックのタイムアウトを設定 $lockingManager->releaseAgedLocks(300); //オブジェクトに対してロッ

    Doctrineのオブジェクト単位での悲観的ロックについて
    balibali
    balibali 2010/12/14
    jwage
  • PHPerなら知っておいて損はない10の関数

    こんにちは。小川です。 日は数あるPHPの関数の中でも、わりと知られてそうで実は知らない人もいるかもしれない便利な関数をご紹介します。 ■nl2br 改行コードを<br />に変換する関数です。 <?php $string = <<<EOS foo bar baz EOS; echo nl2br($string);

    PHPerなら知っておいて損はない10の関数
    balibali
    balibali 2010/11/26
    全部知ってた。わりとよく使うものが多くてチョイスがいい感じ
  • PHPでリフレクション

    <?php // Entity/User.php namespace Entity; class User { private $name; private $gender; public function __construct($name, $gender) { $this->name = $name; $this->gender = $gender; } public function getName() { return $this->name; } private function getGender() { return $this->gender; } } 名前を保持するnameプロパティと、性別を保持するgenderプロパティを定義します。genderプロパティに対するゲッターメソッドはprivateにしてあります。 ■ ReflectionClass まずクラスの情報を抜

    PHPでリフレクション
    balibali
    balibali 2010/09/21
  • GoogleMapバージョン3について

    1.Sensorパラメータを設定 2.バージョン3になってAPIキーが不要 3.iPhoneAndroidでの表示が可能 4.バージョン2から書き方が若干変更 詳しく解説をしていきたいと思います。 ■Sensorパラメータを設定 SensorパラメータをtrueにセットするとGPSから位置情報を発信してユーザの現在の位置を表示してくれるようになるみたいです。たぶんiPhone,Androidの機能で日の携帯には対応していない機能だと思います。 ■バージョン3になってAPIキーが不要 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=trueまたはfalse"> バージョン3になってめんどくさかったAPIキーの取得が無くなったと書いてあり、実際にシンプルな地図を表示したりする場合には

    GoogleMapバージョン3について
    balibali
    balibali 2010/05/31
  • symfonyでMongoDBを使ってみました

    wget http://downloads.mongodb.org/osx/mongodb-osx-x86_64-1.4.1.tgz tar zxvf mongodb-osx-x86_64-1.4.1.tgz cd mongodb-osx-x86_64-1.4.1 sudo cp bin/* /usr/bin/ sudo cp -r include/* /usr/include/ sudo cp lib/libmongoclient.a /usr/lib/

    symfonyでMongoDBを使ってみました
    balibali
    balibali 2010/04/22
  • symfonyアプリケーションをデプロイするためのCapistranoレシピ

    とすれば、symfony体とpluginsを除く、プロジェクトのファイル群を更新してくれます。 普段のリリース作業は、ほぼこれだけになると思います。 ざっと基的な使い方を説明したところで、Capistranoのインストールからの利用手順と、各タスクの紹介を順にしていきます。 なお、Capistorano自体の基的な説明は http://www.oiax.jp/rails/capistrano.html http://builder.japan.zdnet.com/sp/open-source-software-moonlinx-2009/story/0,3800096543,20396188,00.htm といったあたりをご覧ください。 一度どちらかでも目を通しておいて貰ったほうが、全体の理解が進むと思います。 では、ひとまずCapistrano自体の説明は上記のサイトを読んでもらう

    symfonyアプリケーションをデプロイするためのCapistranoレシピ
    balibali
    balibali 2010/04/17
  • PHPの名前空間と主要フレームワークの対応について

    例: pear2\text_diff\Diff zend\controller\FrontController ・名前空間は常に小文字+アンダースコア ・トップレベル名前空間にはベンダー名が入る ・ベンダー名は最短の名称(Zend Framework => zend, CakePHP => cake, symfony => symfony) ・サブ名前空間はいくつ定義してもよい ・名前空間セパレータはディレクトリセパレータに相当する ・名前空間中のアンダースコアに特別な意味はない まず、名前空間は小文字とアンダースコアで定義します。現状のPEARの規約に慣れ親しんだ方や、PerlRubyなどをお使いの方には、アッパーキャメルケース(InvalidArgumentExceptionのように単語の先頭を大文字にする形式)でないことに違和感を感じるかもしれません。 これは、名前空間とクラス名を

    PHPの名前空間と主要フレームワークの対応について
    balibali
    balibali 2010/02/04
  • symfonyのフォームフィルターの活用 +α

    こんにちは。小川です。今日はsymfonyのフォームフィルターをご紹介します。 題に入る前に、symfonyに関連するお知らせが何点かあります。 まず、12月1日にsymfony 1.3/1.4がリリースされました! symfony 1.3は1.2までとの互換性を保ち古い機能を残したバージョン、symfony 1.4は1.3から古い機能を削除したバージョンになります。 大きな変更点として、以下のような内容があげられます。 ◆SwiftMailerメール送信ライブラリを標準で搭載 ◆フォームクラスの改良 ◆標準のORMがDoctrineに変更 ◆Doctrineが1.0から1.2、Propelが1.3から1.4へバージョンアップ 詳しいことについては、以下のリンクをご参照ください。 symfony 1.3/1.4 の新しい機能 プロジェクトを1.2から1.3/1.4にアップグレードする あ

    symfonyのフォームフィルターの活用 +α
  • sfSslRequirementFilter似のプラグインを作成しました+おまけ

    1.sfSslRequirementで使えるところを流用した →ymlの設定でactionごとに設定を行い「通常→SSL→通常」のようにredirectするところ 2.引き継ぎたいセッション情報のみをserializeしてファイルで保存するセッションを引き継ぐように改良 →ワンタイムセッションファイルを作って引き継ぐようにした 3.携帯でのセッションIDを利用したセッションの受け渡しもできるようにする trainSslRequirementFilterではHTTPS時に引き継ぎたいセッションファイルをserializeしてファイルで保存するセッションを引き継ぐように改良しました。 実際の動作イメージです。 trainSslRequirementFilterはredirectで操作されるので他のFilterより必ず先に設定を行います。 下記は携帯での設定の一部になります。 trainSslR

    sfSslRequirementFilter似のプラグインを作成しました+おまけ
    balibali
    balibali 2009/11/19
  • symfonyのルーティングでメモリが肥大化する問題と対処法

    <strong>追記@2009/09/28</strong> symfony1.2.9以降では初期状態でキャッシュが無効になるように設定されています。symfony1.2.9からのgenerate:appタスクでアプリケーションの生成を行った場合は修正は必要ありません。 というわけで今回は、 1. ルーティングのキャッシュの仕組み 2. なぜそんなにもキャッシュが肥大化してしまったのか 3. ルーティングのキャッシュを無効にする方法、その他対策 上記の3つをテーマにお話しさせていただきます。 symfony 1.2のルーティングについては以前書いた「symfony 1.2のルーティングまとめ」という記事をご覧ください。 symfonyでは通常、 /モジュール名/アクション名(/パラメータ) という形式のURLをとりますが、このURLとモジュールおよびアクションを結びつける仕組みをルーティン

    symfonyのルーティングでメモリが肥大化する問題と対処法
  • Doctrineの継承機能について

    こんにちは。小川です。 よくあるオブジェクトリレーショナルマッパーは基的に1つのテーブルに対して1つのモデルオブジェクトを定義します。このときにモデルオブジェクト間に親子関係を持たせたり、いくつかのモデルに対して抽象クラスを作りたいと思ったことはありませんか?Doctrineには継承に関する3つのパターンが用意されており、今回はそれをご紹介したいと思います。 まずは3つのパターンの概要を説明します。 ・Simple inheritance 単純に1つのテーブルに対して複数のモデルを作成する方法です。 どのレコードがどのモデルに対応するかは特に判断は行いません。 ・Concrete inheritance モデル1つひとつに対してテーブルを作成する方法です。 テーブルごと分けるため、カラムもテーブルごとに定義されます。 ・Column Aggregation inheritance 単純に

    Doctrineの継承機能について
    balibali
    balibali 2009/08/10
  • symfony/lime + phpUnderControl を使ってみる

    と言うディレクトリに展開したという前提で説明していきます。 CruiseControlを起動するには、展開したディレクトリ直下にあるcruisecontorl.shを実行します。 気をつけるべき点は、起動時に環境変数の$JAVA_HOMEを呼び出して使う点です。 debianの場合だと、/usrを指定してやらないと、javaコマンドの呼び出しに失敗します。 exportするなり、cruisecontrol.shの中でJAVA_HOME=/usrを指定してやるなり、何かしらの対策処理は施しておきましょう。 phpUnderControl の準備 次に、phpUnderControlとそれに関連するるライブラリをインストールします。 phpUnderControl、および関連ライブラリは独自のpearチャンネル上で配布されているので、それらのチャンネルを登録したうえでpearコマンドでインスト

    symfony/lime + phpUnderControl を使ってみる
    balibali
    balibali 2009/07/15
  • Doctrine 2.0について

    こんにちは。小川です。 ブログとは全く関係ないですが昨日引っ越しをしました。今まで埼玉に住んでいたのですが、都内に引っ越してきたので会社まで自転車で通えるようになりました。 入居申し込みから申請を急ピッチで行うことなったおかげでしばらくインターネットに繋げないので発狂しそうです。 入社2年目になりますが、今年度は仕事も生活も1人でこなせるよう、心機一転がんばっていきたいです。 日のブログはDoctrine 2.0について少しお話ししたいと思います。 Doctrineは現在1.1が最新となりますが、昨年の9月頃から(僕が確認したのがその頃だったのでもっと前からかもしれませんが)Subversionのtrunk上でDoctrine 2.0の開発が進められていました。 現在もまだbranchは作られていないですが、先日Doctrineのブログで2.0に関する記事が投稿されていました。 Glim

    Doctrine 2.0について
    balibali
    balibali 2009/05/26
  • MemcachedではなくRepcachedをセッション管理に使用する(ついでにTokyo Tyrantについても少し)

    9月/10月社内Tech勉強会レポート – NodeJS/Privacy Sandbox API/3rdPartyCookie/NodeJS/PromiseAll/cascae/

    MemcachedではなくRepcachedをセッション管理に使用する(ついでにTokyo Tyrantについても少し)
    balibali
    balibali 2008/12/25
  • 「スパムちゃんぷるーDNSBL」をPHPから利用するServices_SpamChampuru_DNSBL

    <?php require_once 'Net/DNS.php'; /** * Services_SpamChampuru_DNSBL * * @author Daichi Kamemoto(a.k.a yudoufu) <daichi@asial.co.jp> * @version 0.0.1 */ class Services_SpamChampuru_DNSBL { private static $domain = 'dnsbl.spam-champuru.livedoor.com'; private static $spam_result = '127.0.0.2'; private $timeout = 0.1; private $nameservers = array(); /** * constructor * * @param integer $timeout * @par

    「スパムちゃんぷるーDNSBL」をPHPから利用するServices_SpamChampuru_DNSBL
  • VMware Server 2.0をインストールする

    C:\Program Files\VMware\VMware Server\tomcat\webapps\ui\plugin にプラグインがあるのでそれをインストールします(私がインストールしたのはvmware-vmrc-win32-x86.exeです)。 ちなみ、このプラグインをインストールすれば「Commands」の[Generate Virtual Machine Shortcut]でコンソールのショートカットを作成することができるので、このWebベースの管理画面を通さなくても直接コンソールにアクセスすることができるようになります。 私の場合、普段Webインターフェースのあの管理画面はほとんど使用することがないので、Windowsのサービスの画面からでVMware Server Web Accessを手動にして普段は起動しないようにしています。 こうすることによりTomcatが起動し

    VMware Server 2.0をインストールする
    balibali
    balibali 2008/10/16
  • DoCoMo向けにCSS指定をインラインに埋め込むPHPライブラリ「toInlineCSSDoCoMo」作りました

    こんにちは。Windowsの最大の発明はゴミ箱の標準装備だと思っている亀です。 追記:Mac信者の某氏にゴミ箱はWindowsの発明じゃないと突っ込まれてしまいました。すみません<(。_。)> 昨日はグリーさんのオープンソース勉強会に参加してきました。 今回の講師はDeNAの川崎さんで、わりとモバイル屋さんな自分としてはぜひともチェックしておきたいなと思って参加してきました。 勉強会・懇親会ともなかなか面白い話が聞けたり、変な人がいっぱいしたりしてとても面白かったです。 モバイルをやっているといつも面倒なのは、テンプレートの扱いです。 そのあたりのまとめは以前このブログでうちの高橋さんが超まとめてくれた記事があるので、そちらをご参照ください。 とくにDoCoMoのCSS(i-CSS)は開発者泣かせですね。インラインのみに対応とか、開発しにくくて涙ちょちょぎれそうです。 さてさてそんなDo

    DoCoMo向けにCSS指定をインラインに埋め込むPHPライブラリ「toInlineCSSDoCoMo」作りました
  • coLinuxでUbuntu 7.04をネットワークインストール

    こんにちは、スパイシーチキン担当の熊谷です。スパイシーチキン担当ということで、今日のお昼ご飯はもちろんスパイシーチキンです。そろそろ飽きてきたといいながらも、スパイシーチキン、まだべています! 以前も書きましたが、私の開発用PCやメインのノートPC上で動作しているcoLinuxではDebian etchを使用しています。Debian etchは比較的最近リリースされたということで、以前の安定版のように古くさい?という感じはあまりしなくなり特に不満はありません。しかし、例えばデスクトップ環境として使うとか、保守性も大事だけどもう少し新しさが欲しいとか、定期的な新しい安定版に興味があるとか。そんな欲求が出てきてしまう今日この頃、だったらUbuntuを使ってみようじゃないかと思い立ったわけです。 私にとってUbuntuは、バージョン4.10や5.04の頃にデスクトップ環境としてメインで使用して

    coLinuxでUbuntu 7.04をネットワークインストール
  • PHPSpecでユニットテスト

    pear channel-discover pear.phpspec.org pear install phpspec/PHPSpec を実行すればOKです。 使い方、というか振舞駆動開発の流れですが、 1.要求仕様を文章に直し(it should … の形式で)、それに沿ったテストコード(スペックファイル)を作成。 2.作ったスペックファイルで正しい結果が出てくるようなプログラムを作成。 3.スペックファイルを完成させてテストを実行して、正しい結果になることを確認。 1から3の繰り返しになります。 マニュアルにわかりやすい例がいろいろ載っているので、ぜひぜひそちらを見てみて下さい。 一応、やってみると、、、 MyStringクラスという、渡した文字列をどんどんつなげていくクラスを作ることにします。 まずはスペックファイルの作成です。 DescribeMyString.php <?php

    PHPSpecでユニットテスト
    balibali
    balibali 2008/04/03
    ユニットテスト用フレームワーク
  • Smartyのバグ ~default_modifiers~

    わかりやすいネタのほうがソーシャルブックマーク数が稼げるからこういうネタを掲載するわけじゃないです。 そう、ぼくはただこの土日を使って社内のイケメンリストを作りたかったんです。 硬派なぼくはerror_reportingは常時E_ALLだし、クロスサイト・スクリプティング(以下XSS)の脆弱性を産むようなミスは犯したりしないゼ。 へなちょこでもいい。たくましいプログラミングをしたいんだ。 しかし悲劇は起こりました。 1 イケメン一覧スクリプトを作成する まず、Asial社内のイケメンリストを配列に持ち、Smartyのassignメソッドで配列をテンプレート変数に割り当て。 また、XSSの脆弱性を未然に防ぐため、Smartyのdefault_modifiersにescapeをセットし、自動的にhtmlspecialchars関数がかかるように設定します。 ikemen_list.php <?

    Smartyのバグ ~default_modifiers~
    balibali
    balibali 2007/12/02
    3年前くらいに通った道。今も変わらず、か。