ドリンクバーゲン会場

ASP.NETからデータをアップロード2012年02月07日 15時03分05秒

グループウェア開発に関連し、社内で構築しているWebシステムから、
データをアップロードすることになりました。
動いている社内システムはASP.NETが使われていて、
DataGridに一覧表示されている情報をアップロードすることになりました。

DataGridにアップロード用のリンクを追加し、クリックすることでデータを送信し、
PHPで受け取る形で作りました。

PHP側では、GETでデータを取得しています。
ASP.NETは最近使ってなかったので、思ったよりも時間がかかりました。
しかも、動いているASP.NETはバージョンが古いらしく、
VisualStudioで開くと、警告がたくさん出てきました。
今回はその辺の警告は無視し、リンクの作成に集中することにします。

まず、DataGrid上でリンクを作る方法がよくわからず、調べてみました。
複数のパラメータを渡すようにするには、<ItemTemplate>が必要なようで、
サンプルが書かれているサイトを見ながら作ってみたのですが、エラーになります。
順番にタグを追加していき、追加するたびに実行させたのですが、
NavigateUrlにアドレスを追加すると、HyperLinkでエラーになるという症状が出ていました。

**********************************************
<asp:TemplateColumn HeaderText="アップロード">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "name") %>' />
</ItemTemplate>
</asp:TemplateColumn>
**********************************************

ここまでは順調だったのですが、

**********************************************

<asp:TemplateColumn HeaderText="アップロード">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "name") %>'
NavigateUrl='<%# "http://localhost/GroupWare/upload.php?id="
+ Server.DataBinder.Eval(Container.DataItem, "ID") %>' />
</ItemTemplate>
</asp:TemplateColumn>

**********************************************

とするとエラーになりました。
本来は、ID以外にもアップする項目があるのですが、
とりあえずでやってみたらエラーでした。

NavigateUrlを指定せずに動かすと、Textの項目はきちんと表示されるので、
データは取得できるようなのですが、IDを設定するとエラーになっています。
いろいろ試した結果、どうも改行するのがダメみたいで、
NavigateUrlを1行で記述するとエラーにならなかったので、
実行してみると、リンクができていました。


早速アップロードしてみたのですが、日本語の情報がアップされませんでした。
ただ、これはエンコードしていないのが原因なので、エンコードの設定を追加しました。

**********************************************
<asp:TemplateColumn HeaderText="アップロード">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server"
Text='<%# Server.UrlEncode(DataBinder.Eval(Container.DataItem, "name")) %>'
NavigateUrl='<%# "http://localhost/GroupWare/upload.php?id="+Server.DataBinder.Eval(Container.DataItem, "ID") %>' />
</ItemTemplate>
</asp:TemplateColumn>
**********************************************

これで、アップロードしたデータがきちんと日本語で登録されました。

FPDFでPHPからPDFの作成2012年01月31日 18時09分29秒

社内で使用するグループウェアを作成しています。
社外からも利用できることが条件だったので、
レンタルサーバーを利用するという前提になったので、
PHPで作成することにしました。

最終的にはJavaScriptでUIも作りこむ予定ですが、
今はとりあえず、PHPで動くものを作っています。
その中で、PDFが必要ということで探したところ、
FPDFというのがあったので、早速試してみました。

FPDFをダウンロードしてサンプルを実行すると、
PDFが表示されたので、使えそうかなと思ったのですが、
日本語を表示させようとすると化けています。

調べてみると、日本語には対応していないそう!
でもMBFPDFというのが日本語に対応しているそうで、
ダウンロードしようとしたら、リンクが切れていて、
ダウンロードできません。

もう一つ、japanese.zipというのもあるんですが、
機能的には劣るようなことが書かれていたので、
MBFPDFのファイルが落とせないか探していたら、
無事見つけることができ、早速インストールして、
動かしてみたのですが、エラー発生!

どうやら非推奨エラーのようです。
将来的に使われなくなる機能を使っているときに出る警告です。
とりあえず、出ないようにしてテストをします。
今回は、ローカルのPC上にサーバーを構築しているので、
php.iniを修正することで対処しました。

error_reporting = E_ALL | E_STRICT

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

これでWebサーバーを再起動させたら、エラーは表示されなくなりました。
ただ、まだ文字化けしています。
また調べてみると、サンプルで作ったphpファイルのエンコードをShift-JISにしないといけないようです。
私は、ずっとUTF-8で保存していたので、Shift-JISに変更して
保存してから実行すると、無事表示されました。

とりあえず、ローカルの環境で使えるようになりました。

レンタルサーバーのphpのバージョンを調べてみると、
5.2.17が使われていて、現時点ではおそらくエラーはでないと思うのですが、
いつバージョンアップするかわからないので、将来的に不安です。

ホームページで文字のスクロール2008年11月15日 09時56分21秒

サーバー移行を行うことになり、その告知をしていかなければならないのですが、トップページの新着情報だけでは見逃す可能性が高く、もっとわかりやすく表示する必要が出てきました。

しかし、トップページにはスペース的に余裕がなく、表示する方法を考えた結果、文字をスクロールして表示することにしました。

今回は、MARQUEEタグを使って実行させたいと思います。
このタグはインターネットエクスプローラーの独自タグなので、一部のブラウザでは対応していないのですが、設定自体が手軽なので今回はこのタグでいきます。

<MARQUEE>スクロールさせる文字</MARQUEE>

一番簡単な方法です。
属性を変更すれば速度を変えたり、方向を変えたりもできます。
通常は右から左に移動するのですが、左から右に変える場合には下記のように設定します。

<MARQUEE direction="right">スクロールさせる文字</MARQUEE>

これで文字が左から右にスクロールします。
他にも設定項目はあるのですが、今回はそれほど凝ったことは必要ないので、簡単に済ませたいと思います。

IISとTomcatの連携2008年03月12日 11時49分23秒

IISではセキュリティの設定まで完了しましたが、Webアプリの動作はTomcatで行われます。
TomcatにはWebサーバーの機能があり、インストール後はすぐに使えるようになりますが、別々に動いている状態ではだめなので、IISとTomcatを連携して動くようにします。

まず、「isapi_redirect.dll」をダウンロードします。
http://tomcat.apache.org/download-connectors.cgi
からダウンロードできます。

ダウンロードしたファイルには、バージョンが入っていますので、
このバージョンを消します。
「isapi_redirect-1.2.26.dll」→「isapi_redirect.dll」
このDLLをTomcatのディレクトリにコピーします。
C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\IIS
最後のIISは自分で作成しました。

次にレジストリエディタを使い、レジストリ情報を追加していきます。
Tomcatのインストールが済んでいれば、
「HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation」
が登録されているので、ここに新しいキーを追加していきます。
「Apache Software Foundation」にマウスを合わせ、「新規」-「キー」と選んでください。
「新しいキー #1」ができますので、
名前を「Jakarta Isapi Redirector」と変更します。
同じ要領でその下に「1.0」と追加してください。
「HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0」
に値を追加します。
追加する項目は5つです。
「新規」-「文字列値」で5つの項目を追加します。

1つ目は、「extension_uri」という名前で、「/jakarta/isapi_redirect.dll」というデータを入力します。

2つ目は、「log_file」という名前で、ログファイルを書き出す場所を指定します。
今回は「C:\Program Files\Apache Software Foundation\Tomcat 6.0\logs\isapi.log」と指定しました。

3つ目は、「log_level」という名前で、ログレベルを指定します。
ログレベルは4種類あるのですが、今回は「emerg」を指定しました。

4つ目は、「worker_file」という名前で、「worker.properties」ファイルのパスをしていします。
今回は、「C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\worker.properties」と指定しました。

5つ目は、「worker_mount_file」という名前で、「uriworkermap.properties」ファイルのパスを指定しています。
今回は、「C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\uriworkermap.properties」と指定しました。

次に、「worker.properties」と「uriworkermap.properties」を作成します。
worker.properties
***************************************
worker.ajp13.port=8009
worker.ajp13.host=localhost
***************************************

uriworkermap.properties
***************************************
default.worker=ajp13
/*=ajp13
***************************************

作成した2つのファイルを、「C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf」に追加します。
レジストリに追加した内容とずれないように注意してください。

次は、IISマネージャーへの設定の追加です。
「既定のWebサイト」にマウスを合わせ、右クリックでプロパティを選んでください。
「ISAPIフィルタ」タブを開き「追加」ボタンを押してフィルタを追加します。
フィルタ名は「jakarta」、実行可能ファイルは「C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\IIS\isapi_redirect.dll」を指定します。

次にTomcatに接続するための仮想ディレクトリを作成します。
「既定のWebサイト」で右クリックし、「新規作成」-「仮想ディレクトリ」を選んでください。
ウィザードが起動しますので、エイリアス名に「jakarta」、
パスに「C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\IIS」(isapi_redirect.dllのパス)を指定します。
次に仮想ディレクトリのアクセス許可ですが、「ISAPIアプリケーションやCGIなどを実行する」にチェックを入れてください。

次に「Webサービス拡張」を選び、「すべての不明なISAPI拡張」の状態を、「許可」にしてください。

IISを再起動すると設定が反映されます。
「既定のWebサイト」のプロパティで「ISAPIフィルタ」を選び、
追加したフィルタ(jakarta)に緑色の矢印が上向きに表示されていればOKです。

ブラウザでサーバーに接続すると、Tomcatの画面が表示されます。
管理画面やサンプルなども動いています。

最後にTomcatのサーバー接続の設定を変更します。
IISから接続できていますが、このままではTomcat単体でもWebサーバーが動いているため、「http://localhost:8080/」でも表示してしまいます。
8080ポートで接続しないようにTomcatの設定を変更します。

「C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf」
に「server.xml」というファイルがありますので、エディターで開きます。
***************************************
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
***************************************
開いたら、上記の部分をコメントアウトしてください。
***************************************
<!--
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
***************************************

Tomcatを再起動し、「http://localhost:8080/」でTomcatの画面が出なくなります。

IPアドレスによるIISの接続制限2008年03月08日 09時21分22秒

通信の暗号化は出来ましたが、Webアプリの場合ブラウザがあれば、通常はだれでもサイトにアクセスできる状態になっています。

しかし、誰でもアクセスできる状況というのは好ましいことではありません。
ソフトの場合は使うパソコンのみにインストールすればよいのですが、Webアプリの場合は、クライアントPCにソフトをインストールするわけではないので、サーバー側で制限することになります。

学校で使われているコンピューターはDHCPは使われておらず、IPアドレスが固定されていますので、IPアドレスによる制限をかけて、使えるパソコンを制限します。

IISマネージャーを起動し、サイトのプロパティを開きます。
「ディレクトリセキュリティ」のタブを開き「IPアドレスとドメイン名の制限」の編集ボタンを押します。

初期設定は、すべてのコンピュータからのアクセスを「許可する」に設定されていますが、「拒否する」に変更し、アクセスできるパソコンのIPアドレスを、
「追加」ボタンで追加していきます。

画像では、3台のパソコンを許可しています。
ホストOSのアドレス、仮想マシンのサーバー、仮想マシンの開発用OSに接続許可を与えました。
それ以外のパソコンからはアクセスできなくなります。