SSブログ
前の10件 | -

PHPのimap_open [プログラム]

PHPのimap_open関数,特定のメールボックスからメールを引っ張ってくる目的にはよいのですが,メールボックスをIdPのように使おうとする時に,気をつけるべきことがあります。まぁ,そもそもIdPとして使うな,という話ではありますが,そういう要件の仕事があったので。

上記のマニュアルには,$n_retriesが省略可能で初期値が0となっていますが,これは騙されます。PHPのソースを読むと,「第5引数が存在する時のみ$n_retriesをライブラリに設定する」となっています。このため,明示的に「0」を指定するのと省略するのでは,動作が異なってしまいます。

省略時
3回接続を試行する
0を指定時
1回接続を試行する(1を指定した場合と同じ)

この接続の試行は,一つのセッション中で行われます(LOGON => LOGON => LOGON => LOGOUT)。サーバーによっては,1セッション中の複数回のLOGONに非常に時間がかかる場合があり,ブラウザとの通信がタイムアウトしたりもします。

このため,必ず$n_retriesは指定するようにした方がよいでしょう。


PHPの名前空間 [プログラム]

マニュアルで見つけられなくて試したことの備忘録とか愚痴とか。

  • require_once等でファイルをインクルードした場合,読み込む側の名前空間は読み込まれた側には引き継がれない。
    例えば,

    file1.php
    <?php
    namespace test1
    {
        echo 'test1.php : [' . __NAMESPACE__ . ']' . PHP_EOL;
        include('file2.php');
    }
    file2.php
    <?php echo 'test2.php : [' . __NAMESPACE__ . ']' . PHP_EOL;

    に対して,出力は,

    test1.php : [test1]
    test2.php : []

    となる。

  • クラスと関数では名前空間の解決方法が違う。クラスはグローバル空間を解決する必要がある。

タグ:PHP

さくらインターネットでZend Frameworkを使う時の注意点 [プログラム]

はまったので……。

さくらインターネットのレンタルサーバー上でZend Frameworkを使う場合,IndexControllerにIndexAction以外をのせるとNo input file specified. となってしまいます。

原因は,ApacheのMultiViews。こいつが/index/fooとかについて読み替えを行うようで……。対策は,フロントであるindex.phpを別の名前にすること。私の場合,今回はfoobar.phpにしました。当然,DirectoryIndexやRewriteRuleも書き換える必要があります。


タグ:PHP Apache 備忘録

gitレポジトリをSmart HTTPで公開した時のPermission [プログラム]

問題点:gitレポジトリをSmart HTTPで公開して,そこへHTTPでpushしたらPermissionがapache:apacheに対して664になっていて他のユーザーからのpushに失敗した。
解決法: git repo-config core.sharedRepository all で,常に 666 になるようにする

--share付きでレポジトリを作った場合,core.sharedRepositoryは2になるようです。同一グループからは読み書き出来るけれども,他人は読むことしかできません。 で,調べるとallとかworldとかにすれば他人も書き込めるようなので,これをやることでpushが可能になりました。 既存ファイルはchmod u+r -R *とかする必要があるかもしれません (面倒なので,試す前にやった)。


タグ:Git

LocalなApacheへのIEでの接続が戻ってこない件 [Webサーバー]

2年振りの記事……

仕事でApacheを使っているのですが(実際にはメインがIIS,ポート81でApache),localhostなのにApacheにIEでアクセスすると全然返ってきません。で,色々探して試した結果,httpd.confで

modules/mod_socache_shmcb.so

を有効にしたところ,IEでのアクセスにちゃんと返ってくるようになりました。理由は全然分かっていませんが……


タグ:Apache IE Windows

Windows Phone 買った [プログラム]

今更ですが……

IS12Tを発売日に購入しました。

で,最近プログラムも始めました。 まぁ,できあがったのはサンプル程度なのでまったく公開できるような物がありませんが……。

よく考えると,Silverlightでのプログラム経験がないので,実質的には初のSilverlightプログラムだったり。WPFの経験で色々乗り越えている感じです。


C#とVisual Basicの初期化順序の違い [プログラム]

Visual Basic中学校掲示板にて, 初期化順序について書いたら間違ったので,こちらにも書いておきます。

C#の場合
  1. 派生クラスのフィールド
  2. 基本クラスのフィールド
  3. 基本クラスのコンストラクタ
  4. 派生クラスのコンストラクタ
Visual Basicの場合
  1. 基本クラスのフィールド
  2. 基本クラスのコンストラクタ
  3. 派生クラスのフィールド
  4. 派生クラスのコンストラクタ

行儀の良いプログラムでは問題になりませんが,基本クラスのコンストラクタ中から仮想メソッドを呼び出すと, 動作が変わる(C#ではフィールドが初期化されているがVBでは初期化されていない)可能性があります。


あまりにも公告コメントが多いので,コメント欄を閉じます。


トラックバック(0) 

Visual Studio 2008からTeam Foudnation Server 2010に接続する時のURI [プログラム]

Visual Studio 2008 SP1からTeam Foundation Server 2010に接続する方法というのは,結構見つかります。結論的には,

となります。が,ここで落とし穴。TFS 2010の管理コンソール上で,コレクションのURLは末尾に/がついています。 ところが,/付きで書くとTeam Explorer 2008はプロジェクトを見つけることができません。

……これ,気付くのに数時間かかった……。


2011年1月14日修正:インストールあてる→インストールする


XmlSerializerで配列を要素の直下に展開する [プログラム]

メモ書き

XmlSerializerクラスで,

<Array>
  <Elem></Elem>
  <Elem></Elem>
  <Elem></Elem>
</Array>

のような構造のXMLを作成する場合は,

class Array
{
  [XmlElement(ElementName="Elem")]
  public Elem[] Elements { get; set; }
}

のように,XmlArray属性ではなくXmlElement属性を使う。


twimemo: R流・WPFアプリケーション開発 @ わんくま同盟 東京勉強会 #40 [プログラム]

わんくま同盟 東京勉強会 #40中でのセッション,R・田中一郎さんの「R流・WPFアプリケーション開発」で知ったこと。 なぜか元ネタが@nakawankumaさんだったりする不思議。 以下,Twitterでつぶやいたログ。


前の10件 | -

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。