投稿

4月, 2008の投稿を表示しています

【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は見つからず。このソースを元に変更すれば可能は可能そうだけど、・・・誰か作って

PHPでLDAPサーバに接続して検索

イメージ
まずは必要なモジュールをインストール(相変わらずvineなのでapt) # apt-get install php5 # apt-get install php5-ldap 適当なユーザを Ldap admin で登録しといて下記サンプルコードを実行すれば、結果が出力される。 # php5 ./sample.php ↓Ldap Adminの画面 ↓サンプルコード。 ここ を参考にちょっと書き直した。 <?php // LDAP の基本シーケンスは、接続、バインド、検索、検索結果の解釈、 // 接続のクローズです。 echo "<h3>LDAP query test</h3>"; echo "Connecting ..."; $objConnect = ldap_connect("localhost");  // 有効な LDAP サーバーに違いない! echo "connect result is " . $objConnect . "<br />"; if( $objConnect ){     //バインド     echo "Binding ...";     $bBind=ldap_bind( $objConnect );     // これは "匿名" バインドで、通常は読みこみのみのアクセスとなります。     echo "Bind result is " . $bBind . "<br />";     // エントリを検索     $sPerson = "";     echo "Searching ...";     $sDN = "ou=Users, o=exbridge, c=JP";    

【ASP.NET】携帯かPCからのアクセスかを判別する

ユーザーエージェントを参照して判断できる。 簡単に書くとこんな感じ Imports System.Text.RegularExpressions ''' <summary> ''' 携帯電話でアクセスしているかどうか ''' </summary> ''' <returns>携帯電話:<c>True</c>。それ以外:<c>False</c></returns> ''' <remarks> ''' http://www.futomi.com/lecture/env_var/http_user_agent.html ''' http://noongoro.main.jp/note/note0035.html ''' </remarks> Public Function isMobile() As Boolean     Dim sAgent As String = HttpContext.Current.Request.ServerVariables("HTTP_USER_AGENT")     'Dim sRemoteHost As String = HttpContext.Current.Request.ServerVariables("REMOTE_HOST")     Dim bReturn As Boolean = False     'HttpContext.Current.Response.Write(sAgent)     'Docomo     If Regex.IsMatch(sAgent, "DoCoMo") Then         bReturn = True     End If     'AU     If Regex.Is

【.NET】CLR(Common Language Runtime)のバージョンを調査

SQL Server 2005のSQL CLRの開発で壁にぶち当たって、そのとき調査したメモ。 SQL CLRで開発したモジュールは結局.Net FrameworkのCLR(Common Lanuage Runtime)で動く(と思う)ので、そのバージョンの取得方法。 //【C#】 string clrVersionBuildtime = System.Reflection.Assembly. GetExecutingAssembly().ImageRuntimeVersion; '【VB.NET】 Dim clrVersionBuildtime As String = System.Reflection.Assembly. GetExecutingAssembly().ImageRuntimeVersion ちなみに現時点では「v2.0.50727」だった。 問題解決にはならなかったけど、CLRの問題ではなさそうなのは分かった。

【SQL CLR】DBから外部リソースにアクセスするための設定

イメージ
【SQL Server 2005】 SQL CLRを利用してストアドプロシージャからPOPサーバにアクセスするプログラムを書いたときのメモ。POPアクセスのコードは ここ を参考に。 ストアドプロシージャでSQL CLRを利用する場合、.NETで実現できることは基本できるようですが、外部のPOPサーバにアクセスしないといけないので、気にしないといけないのがセキュリティ権限。SQL CLRの作り方は ここ を参考に。 データベースから外部へのアクセス権限に関して参考になるのが、 ここ と ここ 。 最初はコンパイル時に下のようなエラーが出てきたけど、よく分からず。 アセンブリ 'SqlServer_dbPOP' の CREATE ASSEMBLY が失敗しました。 PERMISSION_SET が EXTERNAL_ACCESS の場合、アセンブリ 'SqlServer_dbPOP' は許可されません。 アセンブリが許可されるのは、データベース所有者 (DBO) に EXTERNAL ACCESS ASSEMBLY 権限があり、 データベースの TRUSTWORTHY データベース プロパティが有効になっている場合、 または、アセンブリが証明書または非対称キーで署名されており、 それに対応するログインに EXTERNAL ACCESS ASSEMBLY 権限がある場合です。 このデータベースを復元またはアタッチした場合は、 データベース所有者がこのサーバー上の正しいログインにマップされていることを確認してください。 マップされていない場合は、sp_changedbowner を使用して問題を解決してください。 調べた結果、まずデータベース側の設定はManagement Studioでデータベースを右クリック→プロパティで「信頼可能」が「True」になっている必要がある。 GUIで変更できなかったので、下記SQLを実行してTrueにする。データベースから外部にアクセスするときにはこの設定が必要。 ALTER DATABASE (データベース名) SET TRUSTWORTHY ON 次はVisual Studio

Visual Studio 2005のキーバインドを変更

今までの開発でXyzzyを使っていると、Visual Studio 2005のキーバンドが苦痛。Xyzzyでコードを書くこともできるけど、やっぱりIntelliSenceは便利なので使いたい・・・ということで、Visual Studio 2005のキーバインドを変更することにしました。 Visual Studioではかなり柔軟にキーバインドを変更することが可能です。 ツール→オプション→環境→キーボードでいろいろ設定。 デフォルトでEmacsのキーバインドに変更できるスキームが用意されているけど、これを適用するとクリップボードにコピーしたときの挙動がおかしいし、使いにくいので既定の設定から自分用のキーバインドを追加することをおすすめします。 キーボードでのカーソル移動とCtrl-Gを選択範囲のキャンセルに割り当てれば、まずまず使いやすくなります。あとは適宜必要になったときに追加。 ある程度設定したら、 ツール→設定のインポートとエクスポート でオプション.環境.キーボードを選択して設定の保存をしとくと安心。

Sunbirdに日本の祝日と天気予報を表示

Sunbirdのバージョン0.8日本語版がリリースされました。速度面やバグなども修正されているため、過去のバージョンを使っている人はアップグレードをおすすめします。予定検索を非表示にすると立ち上がりが早い。なぜかSunbirdの更新確認では新しいバージョンを見つけてくれませんでした。 ここ からダウンロード。旧バージョンを削除しなくてもインストーラ実行で大丈夫です。 <日本の祝日を追加> Googleが公開してくれているICALを利用します。 プレビュー ICALアドレス http://www.google.com/calendar/ical/japanese__ja%40holiday.calendar.google.com/public/basic.ics <天気予報を表示> livedoorが公開してくれているICALを利用します。 ここ から。 私の場合はGoogleカレンダー経由で参照してます。

【VMware】CentOSを仮想SCSIディスクにインストールする方法

イメージ
VMware ServerにCentOSをインストールしようとしましたが、SCSIハードディスクでゲストOSを構成するとハードディスクが認識しない・・・。 検索してみると仮想ハードディスクをIDEとすればできるみたいだけど、 ここ を参照するとIDEだと遅くなるみたいなので嫌。なんとかしてSCSIにインストールできないもんかなーと思っていじってみたら、すんなりできました。 やり方はゲストマシンを作成するときにTypicalではなく、Customを選択。もろもろ入力したあとSCSI Adapterを選択するダイアログでLSI Logicを選択するとCentOSのインストール時でもハードディスクを認識してくれるようになりました。

BigTableにアクセスできる「App Engine」のプレビュー版公開

昨日 BigTableに関して書きましたが、なんとGoogleから App Engine というサービスのプレビュー版が公開されました。 記事 これは、Googleのリソースを使ってwebアプリケーション(サービス)を開発、公開することができます。今はプレビュー版なのでGoogleのサーバでサービスを公開できるのは先着1万名までらしいです。 記事を読んで早速登録しましたが、どうやら1万名の中に入れなかったみたいです。ただ登録だけしとけば、利用できるようになった時点でGoogleからメールが送られてくるようです。 App Engineについては ここ を読めばなんとなく理解できそう。 特徴は ストレージの上限500M CPUは一日あたり2億MHz 転送量は一日(双方向で)10GB 制限を超えなければ無料で利用可能 今のところ開発言語はPythonのみ(今後増える予定) Googleのサーバに配置できないけど、SDKを利用すればローカルで開発と動作検証はできる 実際に作られたアプリケーションを触ってみましたが、Googleアカウントで必ずログインしないと駄目みたい(?)。誰でもアクセスできるようにはできないのかな? まだ謎がいっぱいですが、暇があったら試してみよう。 PHPに早く対応してほしい・・・

GoogleのBigtableでデータベースもオンライン化

ここ の記事でGoogleが「Bigtable」という名のデータストレージサービスを公開するかもというのを知りました。 Googleさんのことだから数GBまでは無料で提供されるんではないでしょうか?普通のユーザは使い道がないので、おそらくGoogle Appsのサービスの一つとして提供されそうな予感。 すでに超強力なGmailを提供しているGoogle。今後社内のメールとファイルとデータは全てオンラインでGoogleにお任せという企業も出てきそうな感じです。 ・・・それはないか・・・ しばらくしたらBigtableを使ったシステムを提案してるかも。 非常におもしろそうな技術なので今後も注目です。

携帯用エミュレータの置き場所

各キャリアごとのエミュレータを公開している場所をメモ。 ■au http://developer.openwave.com/ja/tools_and_sdk/openwave_mobile_sdk/SDK62K/ こっちかも http://www.au.kddi.com/ezfactory/tool/ue/index.html ■softbank http://developers.softbankmobile.co.jp/dp/tool_dl/web/wcv.php ■docomo http://www.nttdocomo.co.jp/service/imode/make/content/html/tool2/

【ASP.NET】auの携帯だと文字化けするのを回避する方法

ASP.NETで携帯サイトを開発していて、auだけ文字化けするのに気がつきました。回避する方法はweb.configのsystem.web内に下記コードを追記するだけ。 <!-- AUの携帯の場合は下記指定がないと文字化けする --> <globalization requestEncoding="shift-jis" responseEncoding="shift-jis" enableBestFitResponseEncoding="true"/> ここ を参考に。←携帯向けサイトの開発について有用なコメントがあります。 開発環境 Visual Studio 2005 ASP.NETのVB.NET .Net Framework 2.0 SP1

.NET Framework 2.0 用 SP1

Microsoftの サイト で.NET Framework 2.0 用 Service Pack 1が公開されてます。 主に セキュリティの強化 .NET Framework 3.5 のサポート が変更されてます。 日本語で使用する場合は日本語Language Packも追加でインストールが必要。 以前のService Pack1がインストールされている場合は削除してからインストールしないと駄目らしい。Windows Updateで更新すればこの辺自動でやってくれるのかな?怖いから試してないけど。

【Visual Studio 2005】ASP.NETの規定ブラウザを変更

Visual Studio 2005でASP.NETプロジェクトを開発し始めたときは、規定のブラウザがFirefoxだったので、デバッグ実行するときはFirefoxが起動していた。 だけど、 Firefoxは調査(検索)用 IEは開発用 としたいので、規定のブラウザをIEに変えてみたけどVS2005で立ち上がるブラウザは変わらない・・・。 なんで? と思って検索してみたら、 ここ の人が教えてくれました。 使うブラウザはプロジェクトごとに覚えているみたいなので、 ファイル→ブラウザの選択 で変更できるらしい。

Ldapから検索する上限値を設定

Ldapに大量にデータを追加して検索していますが、Ldapから検索するとデフォルトで上限500までしか取得できない。 これを解除するには/etc/openldap/slapd.confに sizelimit -1 を追記する。-1は無制限。 その他の設定は ここ を参考に。

今日は創立記念日

4月1日は会社の創立記念日で、みんなでバーベキュー。 飲み過ぎて頭が痛い。 でも楽しかったです。 また明日から頑張りますか。