プログラミング

Jeans & Development 電子ブロック工房 三日坊主 フロントページ

正規表現でHTMLコメントを取り除くには [プログラミング]

2007年11月19日

HTMLコメントを削除する方法

2008/02/19 改定
<pre><?php
$html='outside <!--[inside]--> outside <!--[inside]--> outside';
echo htmlspecialchars(preg_replace('/<!--[\s\S]*-->/','',$html));                  // 1)
echo '<br />-----<br />';
echo htmlspecialchars(preg_replace('/<!--([^-]|-[^-]|--[^>])*-->/','',$html));     // 2)
echo '<br />-----<br />';
echo htmlspecialchars(preg_replace('/<!--(([^-]|-[^-]|--[^>])*)-->/','$1',$html)); // 3)
echo '<br />-----<br />';
echo htmlspecialchars(preg_replace('/<!--(([^-]|-[^-]|--[^>])*)-->/','$2',$html)); // 4)
echo '<br />-----<br />';
echo htmlspecialchars(preg_replace('/<!--[\s\S]*?-->/','',$html));                 // 5)

MakeExeと暗号化について [プログラミング]

2007年11月16日

Vectorから配布されているMakeExeと暗号化技術の関連について。

e-mailで質問がありましたので、標記の件についてこちらにも掲載しておきます。以前書いたこととも関連しますが、MakeExe で作成したファイルに含まれるコードの暗号化についてです。

MakeExeには、暗号化の技術はまったく含まれていません。これは、現在までに配布した全バージョン(0.2.1 とそれ以前)に当てはまることですし、今後のバージョンでも暗号化技術を導入する予定はありません。ですので、MakeExe及びこれを用いて作成したexeファイルについて、例えばアメリカ合衆国が定めている128ビット長以上の暗号化技術に対する輸出入規制などには制約されません。

何らかの理由でソースコードを隠蔽したいときは、マイクロソフトが配布しているスクリプトエンコーダを使ってください。VBEもしくはJSEにファイル変換した後にMakeExeを利用すると、これを行うことが出来ます。このような方法で作成したexeファイルを輸出入する場合は、スクリプトエンコーダの暗号方式のビット長を参考にして、各国の法律に注意して行ってください。

MakeExeはLGPLのライセンスの元で配布していますので、改変して暗号化機能を持たせることは可能です。そういった場合は、当たり前のことですが、改変したソフトウエアに関する責任の所在をはっきりと表示していただければと思います。改変したソフトウエアを公開する場合は、LGPLもしくはGPLライセンスを適用する必要があります。詳しくは、MakeExeに同封しているライセンス関連の文書をご覧ください。

MakeExeについて [プログラミング]

2007年8月21日

Vectorから配布されているMakeExeについて。

このツールは、VBScript/JScriptをexeファイル化するためのもので、2年ほど前に作成した。ネットサーフィンしていて気が付いたのだけれど、このツールを使うとVBScriptやJScriptのソースコードを隠蔽することが出来ると思っている利用者が、ずいぶん多いらしい。

MakeExeでは、残念ながらソースコードの隠蔽は出来ない。Notepadなどのエディタを用いて作成したEXEファイルを見ると、ソースコードが丸見えなので、注意。隠蔽したいときは、スクリプトエンコーダを使ってVBE/JSEファイルに変換した後、MakeExe する。

こんな記事を片田舎のブログに書いても、気が付かない人がほとんどだろうけれど…。

ファイル結合スクリプト [プログラミング]

2007年8月20日

FTPで100MBを超えるファイルをサーバにアップロードしようとしたところ、ファイルサイズ制限に引っかかったためアップロードできなかった。そこで、2つのファイルに分割してそれぞれをアップロードし、最後にこのスクリプトで結合した。また使うかもしれないので、メモ。

<html><body>
This script will be removed by itself if all will be done.<br />
<?php
$dest='yyyyyyyy.zip';
$files=array('xxxxxxxx-1.zip','xxxxxxxx-2.zip');
$h0=@fopen($dest,'x') or exit('ERROR'.__LINE__);
echo "Write to '$dest', handle=$h0<br />\n";
foreach($files as $file){
    $h1=@fopen($file,'r') or exit('ERROR'.__LINE__);
    echo "Read from '$file', handle=$h1";
    while (true) {
        if (strlen($d=fread($h1, 8192))==0) break;
        fwrite($h0,$d);
    } 
    fclose($h1);
    echo " ... done<br />\n";
}
fclose($h0);
echo "All done!</body></html>";
unlink(__FILE__);

古い VB インストール時の注意 [プログラミング]

2007年5月10日

VB5 を Windows XP にインストールすると、いろいろとエラーが出た。古いプログラムをデバッグするときにはこういったことも必要なので、メモしておく。

まず、エラーが出てセットアップキットが起動しない。この指示に従って、\SETUPKIT\KITFIL32\VB5DEP.INI ファイルの内容を次のように変更する。

;Drive1=1.44 MB,1457664,512
;Drive2=2.88 MB,2915328,1024
;Drive3=1.2 MB,1213952,512
;Drive4=720 KB,730112,1024
;Drive5=360 KB,362496,1024

フロッピーディスクの指定がないと、エラーになるらしい。これをコメントアウトすることで、エラーを回避する。

また、OCX ファイルについても操作しないと、OCXを用いたプログラムをコンパイルするときにエラーになる。新しい OCX を古いOCXで上書きできず、その新しいOCXにはプログラム製作ライセンスが含まれていないためらしい。この指示に従って、『regsvr32 /u』でOCXの登録を解除した後にVBを再インストールすると、解消される。その後、Visual Studio サービス パックを再適用する必要がある。

SFC miniがSourceForgeにプロジェクトとして登録されました [プログラミング]

2007年2月15日

 SFC mini を SorceForge にプロジェクトとして新規登録を申請したところ、無事に通りました。詳細はこちらを参照してください。

 本業とNucleusでの活動に影響のない範囲でゆるゆるとやっていきたいと思います。気長に見守っていただけたらと思います。

 今後とも、SFC mini にご愛顧のほどをよろしくお願いします。

PHPでWin32APIを呼び出す その2(SFC-mini ver 1.050α) [プログラミング]

2007年2月14日

 SFC-mini ver 1.050αを作成。とりあえず、PHPからWin32APIが呼び出せるようにしてみた。プロパティ名が無い状態でCOMオブジェクトに接続しようとする場合、『sfc_null』をプロパティ名として指定すればよいようにした。例えば、

<?php
$api=new COM("SfcMini.DynaCall");
$api->Declare("user32","MessageBoxA");
$api->sfc_null(0,"ANSI String, vbOkCancel","SfcMini.DynaCall",1);
?>

とすればMessageBoxAにアクセスできる。ただしこのサンプルコードは、Apacheをサービスとして起動している場合にはうまく働かない可能性があるので、注意(おそらく、Apacheサービスに対し、デスクトップとの対話を可能にしておく必要アリ)。

 このやり方でどこまで出来るかは、現在調査中。最終的には、PHPでSFC-miniを容易に扱えるクラス(SFCクラス)とともに配布予定。

(ここからダウンロードできます) ライセンスはLGPLです(ソースコードご入用の方は、連絡ください)。

まだアルファーバージョンなので、今後仕様が変わる可能性があります。使用の際は注意してください。

PHPでWin32APIを呼び出す [プログラミング]

2007年2月13日

 つい最近まで知らなかったのだが、PHPをWindowsで使用すると、Win32APIの直接呼出しや、COMオブジェクトの作成が出来るらしい。

 ゆくゆくは、Nucleusを用いて自宅サーバを管理しようと考えている。例えば、WinLIRCを使って家電を制御するとか、Windows MCEのようなことをさせるとか。

 そういった場合に、Win32API に接続できると色々と複雑な制御が出来るはず。

SFC mini ver 1.0 公開 [プログラミング]

2006年11月22日

 VBScript / JScript で Win32API を扱うためのツール、SFC mini のバージョン 1.0 の公開にこぎつけた。ver 0.4βからの久々のグレードアップ。

VBScript での zip ファイルの作成 [プログラミング]

2006年11月21日

 WSH を用いてZIPファイルを作成する方法を探していたが、Windows XPだと以外に簡単に出来ることが判明。
<<前の記事   後の記事>>