2008年12月 のアーカイブ

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 がコンパイルされない!というような症状に出会った場合に、そのヘッダおよびフッタのテンプレートファイルを「単独」で呼ぶことによって、コンパイルされたテンプレートファイルが生成され、期待通りにヘッダ&フッタを表示させることが出来ました。

PDFlib インストール

2008年12月29日 月曜日

WEBプログラムのサーバー移設作業…  このシステムは、集計結果を帳票して印刷する処理に、PDFlib というパッケージを使っている事が判明。

PDFlib 日本語公式サイト

インストールは、簡単でファイル1つ(libpdf_php.so)をPHPの extension_dir にコピーして、それをロードするように、php.ini なりで設定するだけです。

extension_dir は、phpinfo() で確認できます。

php.ini (パターン1)

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; … or under UNIX:
;
; extension=msql.so
;
; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
; extension_dir directive above.
extension=libpdf_php.so

php.ini (パターン2)

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example:
;
; extension=msql.so
;
; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
; extension_dir directive above.

;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;

この場合は、上のコメントのとおり… /etc/php.d の下に、他のモジュールに習ってファイルを置けば良い。

MySQL データバックアップ

2008年12月26日 金曜日

MySQLデータベースを他のサーバーへ移動する.
※別のサーバーにある1つのデータベース(&全テーブル)を別サーバーへ移動(追加)する。

データベースのバックアップ
:mysqldump データベース名 > 出力ファイル名
出力されたファイルを移動先サーバーへ転送

データベースの復元
:mysql データベース名 < 入力ファイル名

PHP Smarty

2008年12月24日 水曜日

私の仕事の大部分は、他の人が作ったプログラムを解析&改良することで… 特に、自分が知らない技術を使ったプログラムを読み解いていくことを得意としております。

基本的には、分野は何でも良くて… 知らないことを知りたいという探究心が人一倍強いように思います。

他のサーバーで稼動しているPHPで書かれたシステムを別のサーバーへ移設しようとしているのですが、この類の作業(Web系システムの移設)は、環境(Apache,PHP,MySQL等のバージョン、インストールされているモジュール類など)が異なると動作しないので、いつもとても大変です。

今回のシステムは、ドキュメントがなく、ソースから順番に読み解いてます。

PHPは、開発ツールが豊富!それらを組み合わせることによってシステム構築が容易になるので、それぞれが得意なライブラリを使うようなのですが… 私は、何か新しいシステムに着手する度に、毎度、新しいことを覚えて(させられて?)いるように思います。

今回は、これ 「Smarty」 が研究課題となりそうです。

ここの説明が判りやすそう…
http://www.phpbook.jp/smarty/

PHP PEAR

2008年12月24日 水曜日

PEAR(PHP Extension and Application Repository)はPHPで利用する事ができるライブラリ(パッケージ)を提供しているサービス。

無償のPHPプログラムをダウンロードしてくると、インストール要件としてMySQL, PEAR/DBが必要というケースがよくあります。

PEARがインストールされているかどうか?

> pear

使用方法が表示されればインストールされています。

どんなモジュールがインストールされているか?

> pear list

新しいモジュールをインストールするには?

> pear install モジュール名

外注さんに構築してもらったWEB系システムを別のサーバーに移設しようとしたら、PEAR::Authモジュールを要求されたのですが…

> pear install Auth

とするだけで、自動時に http://pear.php.net/ からモジュールをダウンロードしてインストールしてくれました。 このモジュールを追加する方法(pear install)を、今まで知りませんでした… 超簡単!

MEMO:

SMX-BTSに必要な追加モジュール
- Auth
- HTML_QuickForm
- Log
- Config
- Pager
- HTTP_Download

C# 入門

2008年12月22日 月曜日

PC98(MS-DOS)でBASICを覚え、Windowsになってからは、最初は流れでVsualBasicを使っておりましたが、様々な点で自分の要件に合わなくなり、「Delphi」「C++Builder」を使うようになりました。

IntelliCAD は、VisualC++(MFC) を使って作成されているので、仕事上は、これのメンテナンスが中心となっておりますが、個人的な用途は、小さなツール類の開発なので、簡単に作成(特にユーザーインターフェイス部分)できることが、私の開発環境への要件となります。

Delphi/C++BuilderでWindowsプログラムに親しんだ私としては、VisualC++(MFC)は、「思いついたことを自由に表現できない」という点で好きではありません… 簡単なダイアログボックスをデザインして、ちょっとしたした動きを作るだけでも、とても面倒です。

C#が登場した頃は、Delphi/C++Builderで間に合っていたので、特別に注目することもなかったのですが… 今回、いろいろな事情があって、真面目にC#への取り組みをはじめました。

C# というプログラム言語を解説した本を1冊読んでみました。

JIS規格対応 標準C#入門 改訂第2版 JIS規格対応 標準C#入門 改訂第2版
(2008/05/28)
矢沢 久雄

商品詳細を見る

この本は、Windowsプログラム(フォームアプリケーション)についての解説は無く、純粋に「C#」という言語(文法)を解説した本となります。

C#は、基本的にはC/C++で一番面倒&厄介だと思われる「ポインタ」を扱う必要が無く、とても便利な言語であると認識しました。 .NET Framework クラスライブラリを含めた VisualC# 開発環境は、まさに Delphiの開発環境を C/C++文法で表現したような開発環境といえそうです。

オンライン決済 – share-it!

2008年12月18日 木曜日

最近、海外のソフトウェアをオンラインで購入する際、本サービスに良く出会います。 自前でオンライン決済のシステムを持つのには、とてもコストがかかるので、この類のサービスはありがたいです。

本サービス(share-it!)の特徴は、単なる決済代行だけでなく、アフェリエイトと連動していること… 商品の「購入」ボタンをホームページにリンクして頂き、そのボタンから注文があった場合に、サイト運営者へ礼金を支払うシステム。

「日本語」でサービスされていないのが、ちょっと残念です>share-it!