投稿

【PHP】プログラムでPath(パス)をセットする

PEAR(ペア)などの外部ライブラリを使うときは、そのディレクトリにパスを設定しときたいことが多々あります。php.iniに設定できれば問題ないですが、レンタルサーバの場合はプログラム上で一時的に設定するやり方があります。 PHP 4.3 以上では set_include_path バージョンを気にしたくない場合は ini_set を使います。例↓ set_include_path(get_include_path() . PATH_SEPARATOR . '/usr'); ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . '/usr'); PATH_SERPARATORを使うのはwindowsとlinuxで区切り文字が違うから。ちなみに.htaccessに設定するやり方もあります。 php_value include_path ".:/usr"

【ADO.NET】DB接続後closeをしないと駄目なのか

この 続きで、64bitのWindows Server上のIISで動かすと「アプリケーションプールの制限値を越えました」と怒られる現象ですが、原因はSQL Serverに接続後、ちゃんとcloseしていなかった(箇所がある)ため接続プールがクリアされなかったのが原因でした。 私の認識ではたとえcloseを実行しなくても.NETが自動的に切断(プールを解放)してくれるものだと思ってました。もちろんできるだけcloseするようプログラミングしますが。 ここ にSQL Serverの接続プールに関しての説明があります。これにはcloseとdisposeを使って接続を終了することを強く勧めていますが、接続が長時間アイドル状態のときは.NETが自動的に接続を切断するという記述もあります。 64bitのバグ?実際32bitだといくらやってもエラーとなりませんでした。でも、必ずcloseするよう癖をつけといた方がよいみたいです。 ここ に実際にオブジェクト破棄を保証するコードのサンプルがあるので参考に。 さらに.NETの自動メモリ管理(ガベージコレクション)について知りたい時は ここ 。

【ASP.NET】IISの動作モードを32bitと64bitで切り替える

64bitのWindows Serverをインストールして32bitで動いていたASP.NETのアプリケーションを64bitのIISで動かすとうまく動いてくれないことがあるようです。 そんなときは32bitで動作させたくなります。 ここ にそのやり方が。 困っていたのは、64bitのIISで動作させるとアプリケーションプールがうまくリサイクルされずに、複数端末で接続すると「アプリケーションプールサイズの制限値を越えました」というようなサーバエラーが返される現象です。 この現象はリンクにあるやり方で32bitモードで動かしても直らなかったのですが、32bitのWindows Serverでは起きませんでした。 つづく・・・

社内パッケージ「somfa」を使ったLDAPサーバ接続

ここ で、PHPを使ったLDAPサーバに接続する方法を書きましたが、社内のPHPで書かれたDB接続パッケージ「somfa」を使ってLDAPサーバに接続する方法をアニキが教えてくれました。 ここ 。 社内で使う分には使い慣れたインターフェイスでプログラミングできるので、こっちの方が便利かも。検索スピードが変わらないようなら、somfaを使うのもありかも。 社外の人にとっては全く縁のない話ですね。

【.NET】AUの携帯にメール送信すると件名が文字化けする

.NETにあるSystem.Net.Mailでメール送信をしていますが、これが結構くせものだということが分かりました。 分かったのはAUの携帯にメール送信すると件名が文字化けする現象に遭遇したからです。しかも件名によっては文字化けしたりしなかったり。 ここ でSystem.Net.Mailが駄目な理由を解説してくれてます。 この場合メールの件名には「?iso-2022-jp?Q?xxxxxxx」と表示されます。 これはQuoted-Printableという形式でエンコードされているようです。 こちら 。 緊急回避策として、auの携帯だけShift-JISでエンコードして送信するようにしました。ただし、Thunderbirdでそのメールを受信しても文字化けします。Outlookでは大丈夫なようです。 あとでQuoted-Printableもちゃんとデコードできるように対応しましたが、メールの送受信って結構大変ですね。市販のツールを使った方が便利なような気がします。 BASP21 とか(これはフリー)。

PHPのコーディング規約

PEAR(PHP Extension and Application Repository)「ペア」のドキュメントを読んでいたら、PEARのコーディング規約をみつけました。あとでいろいろ参考になりそうなのでメモ。 PEARとは? PEARの 標準コーディング規約 長い間プログラミングしていると独自のコーディング規約が既に確立してしまいますが、開発メンバー全員が規約に従わないと意味がないので、自分流となっていた部分は少しづつ直していこうと思います。 ifの次は半角スペースをいれるとか・・・。

POP3とSMTPのコマンド一覧

メールの送受信テストをするときやプログラムを開発する際に直接メールサーバにアクセスしてメールを送信したり確認したりします。 アクセスはtelnetをつかってWindowsならコマンドプロンプトから # telnet <server_name> 110 ↑POP3 # telnet <server_name> 25 ↑SMTP POP3のコマンドは ここ をみれば分かりやすい。 SMTPのコマンドは ここ 。

Google Spreadsheetsを簡易SQL DBに

前から試してみたかったんだけど、時間がなくて先送りになってるのがこれ。Goolge Spreadsheetsを簡易的なSQL DBとすることができるらしい。 記事1   記事2 記事3 このブログで紹介されているのはJavaScriptでGoogle DocsのAPIにアクセスする方法ですが、PHPでアクセスする方法もあるはず(たぶん)。 これができれば、SQL DBなしでシステムを構築することができるんじゃないか? 簡単なWikiとかなら、いちいちDB用意しなくていいから便利かも。 そのうち作ってみよう。

【SQL Server】変数を利用したTOPで動的に絞り込む

ストアドプロシージャを書いていると、変数を使って動的にSELECTする値を絞り込むようなことをしたくなります。 そんなとき検索してみつけたのは ここ にあるサンプルコードライブラリ。 SQL CLRをやり始めるときやT-SQLのTipsなど結構参考になりました。 変数を使う方法は括弧を使うとすんなりできます。 declare @countnumber int set @countnumber = 10 select top (@countnumber) * from person.contact

GmailのAPIを使ってPHPで操作する。

Google Appsのメール設定をプログラムから「POP受信を許可」に変更したくて、実現可能かどうかを調査。 Gmail(***@gmail.com)では、APIが公開されていて、これを使えばできるみたい。 libgmailer 。 リファレンス 。 libgmailerを使うためには Curl をインストールしないといけない。 $ apt-get install curl あと/etc/php5/php.iniの allow_call_time_pass_reference = On を設定する。 でも独自ドメインの場合のGmail用APIは見つからず。このソースを元に変更すれば可能は可能そうだけど、・・・誰か作って