ドリンクバーゲン会場

InstallShield2012年05月17日 17時44分56秒

フォルダ設定
InstallShieldを使い、セットアップディスクを作る場合、
「INSTALLDIR」上にファイルを指定します。
Cドライブ直下にインストールしたい場合、
「Destination Computer」の直下にディレクトリを指定すると、
インストールするPCの環境によっては、
Cドライブ以外のドライブにインストールされます。

どこに入るかと言うと、一番空きの大きいドライブになります。
これを回避するためには、新規でフォルダを「c:」で作成します。
作成すると、「c:\」のフォルダが表示されるので、
その中に「INSTALLDIR」を配置することで、
Cドライブ内にインストールすることができるようになります。

当初、これを知らずにセットアップディスクを作成していたのですが、
私の開発用PCはDドライブの空きが少なく、
インストールしているPCはほとんどがCドライブのみの構成だったため、
このことに気づきませんでした。

忘れないためのメモとしてアップしておきます。

ASP.NETで特定のPCのみDataGridの項目を表示させる2012年04月25日 10時37分21秒

ASP.NETで作成されているホームページで、
DataGridの内容を使っている人で変えるようにと言われ、
設定を追加しました。

具体的には、管理者にのみ表示させたい項目がありるので、
管理者以外の人の表示を制限するというものです。

管理者の方は各自PCを持っているので、
今回は、PC名を取得し登録されているPC名であればDataGridの
項目を表示するようにしています。

PC名の登録はMXLファイルで登録しました。

kanri.xml
*******************************
<?xml version="1.0" encoding="utf-8" ?>
<host>
<hostname name="KANRI-PC">KANRI-PC</hostname>
</host>
*******************************

ソースがこちらです。
*******************************
Dim xmlDoc As XmlDocument
Dim xmlElement As XmlElement
Dim msgElement As XmlElement
Dim xmlFilePath As String
Dim pcStr As String
Dim pcStr2 As String

'XMLファイル読み込み
xmlFilePath = "kanri.xml"
xmlDoc = New XmlDocument()
xmlDoc.Load(xmlFilePath)

'DataGrid非表示
DataGrid1.Columns(8).Visible = False

'IPアドレス取得
Dim ip_addr = Request.ServerVariables("REMOTE_ADDR")
'localhostの場合は処理を抜ける
If ip_addr <> "::1" Then
'IPアドレスからPC名を取得
Dim host_name = System.Net.Dns.GetHostByAddress(ip_addr).HostName.ToUpper()
xmlElement = xmlDoc.DocumentElement
For Each msgElement In xmlElement.ChildNodes
pcStr = msgElement.GetAttribute("name")
pcStr2 = pcStr + ".ドメイン名"
'XMLファイルに登録されていれば、DataGridを表示
If pcStr = host_name Or pcStr2 = host_name Then
DataGrid1.Columns(8).Visible = True
Exit For
End If
Next
End If
*******************************

まず、XMLファイルを読み込んでいます。

DataGridの項目をいったん非表示にしています。

IPアドレスを取得し、IPアドレスからPC名を取得します。
その際、ToUpperで大文字に変換しています。
これは、XMLファイルで登録しているPC名が大文字なので、
そちらに合わせています。

XMLファイルとのチェックでは取得したPC名のみの場合と、
ドメイン名が付加された場合の2種類でチェックをしています。
ここでは、ドメインで管理をしているのですが、
Windows7ではPC名のみなのですが、
WindowsXPでは、ドメイン名付のフルコンピューター名で取得するために
このようにしています。

XMLファイルに登録されているPC名と合致する場合はDataGridを表示します。
今回は9番目の列を切り替えているので、Columns(8)となっています。

パソコンを共有している場合には使えませんが、
PC単位であれば、これで内容を変えることができると思います。

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が使われていて、現時点ではおそらくエラーはでないと思うのですが、
いつバージョンアップするかわからないので、将来的に不安です。

Webベースのグループウェア開発2012年01月06日 11時43分18秒

Androidの調査もまだ途中なのですが、Webベースのグループウェアの開発を
すぐに始めるようにとのことで、Androidは途中ですが開発にかかることになりました。

個人的には、Androidとも連携させたいと考えています。
そもそも、Webベースのグループウェアはフリーのものもいろいろあるので、
それも見せたのですが、結局作ることになりました。

一般的なグループウェアとはやりたいことが違っているので、
結果作ろうということになりました。

Webベースなのに、マウスのドラッグでスケジュールの範囲を変更するとか、
要求が結構高いので、まずはプロトタイプとして通常のグループウェアと同じような
インターフェースのものを作り、それを基にカスタマイズするなりして
作っていきたいと思っています。

個人的にはグーグルカレンダーで良いんじゃないのって思うんですけどね!

言語とデータベースはPHPとMySQLにします。
Webベースということで、レンタルサーバーなどで一番対応が多いこの組み合わせをベースに、
最終的には、JavaScriptも使って作成していくことになると思います。

しかし、思いつきで言っているのか、定期的に新しい事を言ってくるので、
結構大変です。

なんかどれも中途半端になりそうで・・・!?