‘Program’ カテゴリーのアーカイブ

DWGdirect.NET リリース

2009年6月11日 木曜日

ODA が DWGdirect.NET のリリースをアナウンスしました。
http://www.opendesign.com/node/381

これは、個人的には、とても心待ちにしていた開発環境となります。

(続きを読む…)

PHP パスワード認証

2009年6月10日 水曜日

MySQL データベースに暗号化された文字列が保存されていて、それを元の文字列に戻せないか?と調べておりました。

多くのCMSはPHP で作成されていますが、文字列を暗号化する場合には md5() 関数が利用されていることが多いようです。

<?php
$pass = “password”;
$md5_hash = md5($pass);
echo “元の文字列: ” . $pass . “<br>”;
echo “暗号文字列: ” . $md5_hash . “<br>”;
?>

結果

元の文字列: password
暗号文字列: 5f4dcc3b5aa765d61d8327deb882cf99

PHP 関連の FAQを調べますと… 「md5 によって暗号化された文字列は元に戻せません」というのが一般的な回答みたいです。

確かに、考えてみれば… 「暗号化」技術は、元の文字列に戻すこと(復号化)ができないほうが「安全」なので、「複合化」の手順は用意されていないほうが信頼性があります。

WEBサイト管理者としては… お客様が設定されたパスワードが(仮にシステム担当者に限定されたとしても)露出することは好ましくありませんので、暗号化された文字列は暗号化されたままの状態で保持しておくほうが懸命だと思いました。

パスワード忘れた>再発行 という手順を踏むと、設定されているパスワードをメールで返してくれるサイトが多いですが… 親切? 自分が設定したパスワードをデータベースに「閲覧可能な文字列」として保持していることになるんですね。

パスワードの再発行依頼に対して、「こちらのURLで再設定してください」というメールが届く場合は、おそらくパスワードを複合できない状態で保持しているからで、「いちいち面倒だなぁ~」とは思いますが… こちらのほうが信頼できるサイトと言えるのかもしれません。

Visual Studio 2008 SP1

2009年6月7日 日曜日

新しいプロジェクト(MFC)を作成する時に使うアプリケーションウイザードですが…

vc9-appwizard

旧バージョンから特には変更のないもの…

vc9-appwizard_aptype

VisualStudio, Office などが選択できるもの…

vc9-appwizard_aptype_sp1

2台のPCで表示されるダイアログが異なることが謎だったのですが… Microsoft VisualStudio 2008 SP1 が適用されていないことが理由でした。(解決)

何故 DRX ?

2009年3月12日 木曜日

IntelliCAD.net の Deelip氏が面白い記事を投稿しています。

http://www.intellicad.net/profiles/blogs/mesh-to-solid-for-bricscad

(続きを読む…)

Visual C# で Apache CGI を作成

2009年1月15日 木曜日

Visual C# を使って Webアプリケーションを作成する場合、ASP.NET と組み合わせるのが普通ですが… 様々な理由があって、Webサーバーは、Windows版のApacheを使いたいということもあるかと思います。

実は、とても簡単に作ることができます。

標準出力にHTML文を出力するプログラムを作成するだけ!

具体的には…
(Visual C# 2008 Express Editionで説明します)

ファイル(F)> 新しいプロジェクト(P)> コンソールアプリケーション
プロジェクト名:ConsoleApp

プログラムソース(Program.cs)


namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Content-type: text/htmln");
            Console.WriteLine("<HTML>");
            Console.WriteLine("<HEAD>");
            Console.WriteLine("<TITLE>タイトル</TITLE>");
            Console.WriteLine("</HEAD>");
            Console.WriteLine("<BODY>");

            Console.WriteLine("出力したいデータ");

            Console.WriteLine("</BODY>");
            Console.WriteLine("</HTML>");
        }
    }
}

ビルド→ Console.exe

基本的には、これでOK!

最初にヘッダ文字列(”Content-type: text/html”)と[空行]を出力する所がポイントで、あとは通常のHTMLデータが出力されるようにプログラムを組むことになります。

このプログラム(Console.exe)を、Apacheが稼動するサーバーのDosumentRoot下へ保存しますが、ファイルの拡張子が「.exe」のままではいけません。

Apacheの流儀にあわせて、拡張子を「.cgi」とします。
(ファイル名を変更するだけです ConsoleApp.exe → ConsoleApp.cgi)

動作しない場合は、Apacheの設定ファイル(http.conf)の以下の部分を確認します。

↓コメント(#)になっていたら、外して有効にする。
LoadModule cgi_module modules/mod_cgi.so

<Directory "プログラムを保存する場所">
  Options ExecCGI を加える
</Directory>

↓コメント(#)になっていたら、外して有効にする。
AddHandler cgi-script .cgi

プログラムに引数を渡したい場合…
(続きを読む…)

Zend Studio for Eclipse 日本語版

2009年1月5日 月曜日

Eclipseは、Javaの開発環境としては、「標準」といってよいくらいに、とても有名なようですが… Javaを触る機会が無かったので知りませんでした。ところが、このツールは、Javaで開発を行わない人にとっても便利だと聞きました。

Subversionの解説書で紹介されていた(ソース管理と連携が取れる)ことと、PHPの開発環境として利用できるらしいということで、興味を持ちました。

Zend Debugger を使うと、サーバーと連携してPHPのデバック(ブレークポイントを設定したり、変数を参照したり)が出来る!とのことなので、とても魅力的です。

そこで、インストール方法を調べてるるうちに、この市販パッケージにたどり着きました。 EclipseをPHPの開発環境に利用する場合は、これを購入するのが一番簡単そうです。

> Zend Studio for Eclipse 日本語版

Web関係のアプリケーションは、あれこれプログラムを個別に入手して、独自に環境を作成する場合は「無償」ですが、例外なく?とても面倒なので、インストール&セットアップを簡単にした市販パッケージが存在します。

Zend という語は、PHP関連の文献で良く目にしていましたが… PHP を商用ビジネスにしているのが、Zend社というわけなんですね。日本法人は、Turbolinux社の傘下にあるようです。

※便利さと引き換えに自由度を失うという点では、Turbolinuxと同様、仕方が無い所ですね…

↓無償で手に入れるには?
英語サイト>Eclipse PDT (PHP Development Tools) が、ほぼ同じか…

PrereqsJP.zip

2008年12月31日 水曜日

Codegear(Borland と呼んだほうがしっくりきます)がフリーで配布していた Turbo Explorer シリーズ(Delphi / Delphi for .NET / C++) の実行には、以下のマイクロソフトが配布する .NET frameworkランタイム環境が必要になります。

  • Microsoft .NET Framework v1.1 再頒布可能パッケージ
  • Microsoft .NET Framework v1.1 Language Pack
  • Microsoft .NET Framework v1.1 SP1
  • Microsoft .NET SDK v1.1
  • Microsoft Internet Explorer 6 SP1
  • Microsoft Visual J# v1.1 再頒布可能パッケージ
  • Microsoft Visual J# v1.1 Language Pack
  • Microsoft XML Core Services (MSXML) v4.0 SP2

これらは、マイクロソフトによって配布されるものですが、マイクロソフトは、基本的には「より新しい」バージョンの使用を推奨しているために、なかなか入手が困難な状況にあります。 そこで、Codegearでは、実行環境に必要なファイルをまとめて 「PrereqsJP.zip」というファイル名で配布されていました。

prereqsjp

Delphiが無償に!ということで 「Delphi 6 Personal」 は人気が高く… 様々なサイトで、そのインストール方法が紹介されていますが、ダウンロード先のリンクが切れていることが多いようです。

以下は、2008年末時点での有効なURLとなります。
(続きを読む…)

Delphi 無償バージョン

2008年12月30日 火曜日

私にとって、Delphiは、とても思い入れのある開発環境です。

Windows95 時代に、Delphi 2.0 に出会ってからというもの、私は、Windowsプログラム = Delphi という感じで、Win32API、メッセージ、DLL、ポインタに至るまで… Windowsプログラムの基礎は、Delphiで習いました。

基本的には、Delphiでほとんどの事ができたので、ずっとバージョンアップして使っておりましたが、IntelliCAD(VC6 – MFC)に携わるようになってからは疎遠になり… バージョンアップも Delphi 5 で辞めてしまいました。

実は、Delphi 6 Personal が無償で配布されていたことを、つい最近まで知りませんでした。(汗)

私が、IntelliCAD (MFC) と格闘している間に、Delphi を取り巻く環境は、いろいろあったようで… いつの間にか、ボーランド→ Codegear になったかと思ったら、今は、エンバカデロという会社になっています。

マイクロソフトが、C# & .NET Framework を提言したとき、「NET」という言葉のイメージから、Web系のシステムを組むわけでもないので… と、注目することはなかったのですが、.NET Framework は、Webアプリケーションを作成するためのものというわけでもなかったようで… (汗)

ここ数年で、.NET Frameworkは、かなり浸透しているようで… まさに私のような、C/C++は敷居が高く、Delphi で育った開発者には、良い代案となるようです。

前置きが長くなりましたが… 「Turbo Delphi for .NET Explorer」というのが、無償で配布されていたので、ちょっと試しに使ってみたくなりました。

こちら(Codegear)から…
http://www.codegear.com/jp/downloads/free/delphi
メールアドレス&住所などを登録(メッセージは英語)することによって、ダウンロードできます。

ダウンロードページ…
(続きを読む…)

PHP 日本語 文字化け

2008年12月30日 火曜日

移植完了!

最後の課題として、メール送信時&PDF出力時の文字化けに取り組んでおりましたが、これは比較的簡単にできました。

Web系システムにおける「日本語文字化け」の問題は、以前は、結構面倒だったのですが… 最近は、Unicodeが主流になり、多くの環境で標準になってきているので、割と簡単です。

PHP5 (4.06以上) であれば、一連の mb_~ 関数を使います。

mb_convert_encoding ( 文字列, 変換後文字コード, 変換前文字コード)

今回のシステムでは、文字コードはSJISで統一されていましたが、メール出力時(JIS)と、PDF出力時(UTF-8)だけは、文字コードを変換する必要があったので、この関数を使いました。

$message = mb_convert_encoding ( $message, “JIS”, “SJIS”);
$message = mb_convert_encoding ( $message, “UTF-8″, “SJIS”);

Smarty テンプレート が コンパイル (更新) されない

2008年12月29日 月曜日

今回の依頼案件で、一番はまったのがこれ… Smartyのテンプレートファイルを作成して、そのテンプレートを使用したページを作成しても、コンパイルされず… コンパイルフォルダに更新されたファイルが生成されない。

普通に…

$smarty = new Smarty();

$smarty->template_dir = '~';
$smarty->compile_dir = '~';
$smarty->cache_dir = '~';
$smarty->config_dir = '~';

$smarty->display('~.tpl');

のように使用するぶんには、なんら問題なくテンプレートがコンパイルされ、意図したとおりにページが表示されるのですが、今回、移植しようとしているシステムは、テンプレートがコンパイルされず、ページが表示されません。

このシステムは、Pear::Auth による認証を使っているため、認証されない場合は、毎度「ログインページ」が表示されるので、各 PHP スクリプトは、$smarty->display(‘~.tpl’); まで、たどり着かない。また、tplファイルに別のtplファイルがインクルードされていることも、意図したようにテンプレートファイルがコンパイルされない原因になっている様子です。

そこで、検討した結果、次のように強引に?コンパイルファイルを生成すれば良いことが分かりました。

テンプレートファイル→コンパイル後テンプレートファイルを生成するには、とにかく一度テンプレートファイルを呼べば良いようです。

具体的には… test.tpl というテンプレートファイルをコンパイルしたい場合、test.tplには、さまざまな変数が埋め込んであり、実際には、

$smarty = new Smarty();
$smarty->assign('val1', '~');
$smarty->assign('val2', '~');
$smarty->assign('val3', '~');

$smarty->display('test.tpl');

のように使われるとしても…
とにかく、

$smarty = new Smarty();
$smarty->display('test.tpl');

のようにして、コンパイルしたい.tpl ファイルを参照した PHP ファイルを作成して、コンパイルされたファイルを生成してしまえばOK!

特に… ページのヘッダおよびフッタを別の .tpl ファイルにして、メインの .tplファイルに include している場合、メインの .tpl ファイルはコンパイルされるが、include している .tpl がコンパイルされない!というような症状に出会った場合に、そのヘッダおよびフッタのテンプレートファイルを「単独」で呼ぶことによって、コンパイルされたテンプレートファイルが生成され、期待通りにヘッダ&フッタを表示させることが出来ました。