プログラミングの最近のブログ記事

Perl2exeって、Perlで書いたソースをコンパイルして、Windowsのexeファイルを作ってくれるヤツがあります。

Perlで書いたツールって普通は(インタープリタなので)、Perl環境が無いと実行出来ないのですが、それをWindowsとかの実行形式ファイル(Windowsならexe)に変換してくれるので、Perl環境が無くても実行出来るようになります。

PP(par)使えとか言われそうですが、あれって基本的にはPerlの環境一式とソースを丸ごとZIPで固めて、実行時に全部解凍して実行するだけなので、TempDirの下とかにゴロゴロ一式が解凍されてしまうのです。拡張子をzipにして解凍するだけでソースも取り出せるし。

でPerl2Exe。 コイツなかなか優秀で、以前から時々試用版は使っていたのですが、まず同じようにPerlをexe化してくれるPPと比較するとバイナリのサイズが小さくなるし、余計なものを解凍しないというメリットがあります。(Exe2Perlとかちょっと特殊な事をすればソースは取り出せてしまうようですが。)
基本的にはインタープリタなので実行速度もそれなり・・・というかインタープリタ環境と変わることもなく、本当にコンパイルしてくれてる訳ではないようです。仕方無いと割り切ったほうが幸せになれそうな感じ。
Perlでさくっと書いた文字列変換系のツールが簡単にWindowsで動くバイナリになってくれるのは便利です。Win32::GUIとかで手間を掛けて作ったアプリをPerl2exeでバイナリ化してフリーウェアとかで公開とか・・・できるんですね。。
同じのVCとかVBとかで作ろうとか思ったらどれだけ苦労する事やら。(ましてやVBSというかWSHで作ろうと思ったら・・・・ゾッとします。 え、えぇ、VBS嫌いですが、何か?)

試しにWin32::GUIとか、Win32::Registoryとかを使ったソースもコンパイルしてみましたが、ちゃんと動きそうです。でも、Win32::GUIとか使っちゃうと・・・もともとウインドウのプログラムって非常に面倒臭いので・・・せっかくのPerlのお手軽さがかなり消え失せてしまうのですが、とりあえずそういう使い方も出来そうという事が判りました。
Perlでバイナリ作れるって、色々と便利に使えそうな予感。


あまりに便利なので、ついポチッとしてしまいました。(とりあえず、Win32 Lite版、USD$49)
暇があればもうちょっと使い倒してみたい感じですね。 暇無いですが。。。全然。。。まったく。。。


↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
レジストリの
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
辺りにエントリがあって、弄ってやればOKという事がMSのサイトに載ってる。


後は適当にレジストリ弄るスクリプトなり、プログラムを書いてやればOK。


という。


↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
DelphiとかOracleとかのネーミング、あまりに同一路線だとか思ったけど
デルファイの神託によると
そもそもDelphi(言語)はOracle(データベース)のフロントエンドとして利用して欲しかったらしい。

さて,データベースといえばオラクル(Oracle),「オラクル,ミラクル」言われるぐらい有名であるが,考えてみればかなり大胆な名前であ る.Delphiは開発当初,Oracleのフロントエンドとして利用してもらおうという計画があった.そこで,Oracleに最も関係のある都市名であ るDelphiという名前になったという.このDelphiは,実は開発コード名であったが,当時の社長の発言で,そのまま製品名となったそうであ る.The Oracle at Delphiは,発売当初のコピーである.

個人的にはPascal系の言語には全く手を出していないので、さっぱり訳ワカンナイんだけど、未だにDelphi使いも多いようで、Delphiのライブラリに感染するウイルスが猛威を振るっているよう。

 (株)ベクターは23日、同社が運営するソフトウェアライブラリ"ベクター"で公開されていたソフトの一部が、"W32/Induc-A"などと 呼ばれるウイルスに感染していたことを公表した。24日現在、当該ソフトのダウンロードは停止されており、同社サイトでは対象となるソフトや、ウイルスの 駆除方法などの情報が公開されている。

 感染が確認されたのは、以下の7ソフトの下記バージョン。

  • 「BellTheCat」v3.60/3.61/3.62
  • 「BOB」v3.22
  • 「CLips」v8.61
  • 「HiG(BeS Tools)」v4.00
  • 「kOSU」v1.41/1.42
  • 「OSPE」v4.20/4.21
  • 「壱番館」v7.82/7.83

  また、「PickBack」「PickBack2」、および6月16日から8月5日まで公開されていた「Wise Disk Cleaner 4 Free」「WiseRegistryCleanerFree」の旧バージョンにも感染の疑いがあり、ダウンロードが停止されている。

 同社では引き続き、過去に公開していたソフトの再検査を実施中とのこと。上記ソフトをダウンロードしたことがある方はもちろん、そうでない方もこの機会にパソコン全体のウイルスチェックを行うことをお勧めする。

  今回、感染が確認された"W32/Induc-A"は、開発環境「Delphi」v4/5/6/7を通じて感染を拡大するウイルスで、感染した 「Delphi」でプログラムをコンパイルすると、作成されたプログラムも感染する仕組み。「Delphi」でプログラムを開発されている方はとくにご注 意いただきたい。


Delphiと言えば、Windowsの開発環境としては人気のある存在。M$謹製のVisual Basicと比べるとソフトウェアの配布時のライブラリの制限だとかが少ない事や、開発環境そのものの出来の良さなどは以前から聞く話だし、それなりに興味はあるのだが・・・。今更Pascal(Delphiは言語としてはPascalの系譜)に手を出してみようとは思わないし・・・。




↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
Solaris10上でGNU Screenをコンパイルしようとするとエラーになる件。

$ ./configure --enable-pam --enable-locale --enable-colors256 --enable-rxvt_osc --enable-telnet --with-sys-screenrc=/etc
$ make
CPP="gcc -E " srcdir=. sh ./osdef.sh
AWK=nawk CC="gcc -g -O2" srcdir=. sh ./comm.sh
AWK=nawk srcdir=. sh ./term.sh
gcc -c -I. -I.    -g -O2 screen.c
gcc -c -I. -I.    -g -O2 ansi.c
gcc -c -I. -I.    -g -O2 fileio.c
gcc -c -I. -I.    -g -O2 mark.c
gcc -c -I. -I.    -g -O2 misc.c
misc.c: In function `xsetenv':
misc.c:619: error: too few arguments to function `setenv'
*** Error code 1
make: Fatal error: Command failed for target `misc.o'

few arguments to functionと言っているのが何でかなぁと・・・
ともあれmisc.cの619行目の定義らしいので、その辺りを見てみる。
616  # if defined(linux) || defined(__convex__) || (BSD >= 199103)
617    setenv(var, value, 1);
618  # else
619    setenv(var, value);
620  # endif /* linux || convex || BSD >= 199103 */
617行目と619行目の違いに注目。
617行目はsetenv( var, value, 1 )と3つの引数が与えられているのに対し、619行目はsetenv( var, value )と2つの引数しか与えられていない。たぶん鍵は616行目にあって、プリプロセッサが、linuxと、BSDの場合はsetenv( var, value, 1 )が、それ以外の場合はsetenv( var, value )が使われるようだ。
で、Solarisの場合、気になるもの。の Solaris 10 の setenv(3C), unsetenv(3C)によると
そういえば、昔は setenv(3C), unsetenv(3C) は、Standard C Library Functions として用意されていなかった気がしたので、ちょっと確認。
Solaris 8, Solaris 9 には、提供されていない。
Solaris 10 からみたい。
Solaris 10 の new feature として、announce あったっけ・・・
適当な source を見つけられないなぁ(´・ω・`)
という事で、もともとSolaris9まではsetenv()自体が提供されていなかったようだ。
で、
setenv(3c)/unsetenv(3c) は UNIX2003 仕様準拠により、Solaris 10 から libc によりサポートされるようになりました。
という事らしい。

tjmiuraの日記にも

どっちかっつうと、misc.cの619行目

setenv(var, value);

編集しちゃうよりは、この部分をくくってる条件マクロの方を編集するべきではないかと。

diff -ur screen-4.0.3.org/misc.c screen-4.0.3/misc.c
--- screen-4.0.3.org/misc.c 2003-12-05 22:45:41.000000000 +0900
+++ screen-4.0.3/misc.c 2008-07-21 17:55:44.950202000 +0900
@@ -613,7 +613,7 @@
*/
# endif /* NEEDSETENV */
#else /* USESETENV */
-# if defined(linux) || defined(__convex__) || (BSD >= 199103)
+# if defined(linux) || defined(__convex__) || (BSD >= 199103) || defined(__sun__)
setenv(var, value, 1);
# else
setenv(var, value);

補足すると、Solarissetenv(3C)が備わったのはSolaris10以降なので、SunOSバージョン識別は結局不要で、条件分岐としてはこれでよかった。

Solaris9以前ではputenv(3C)が使われるのでこれまで問題にならなかったわけだ。

とある。

なので、、、件のmisc.cは
616 # if defined(linux) || defined(__convex__) || (BSD >= 199103) || defined(sun)
617   setenv(var, value, 1);
618 # else
619   setenv(var, value);
620 # endif /* linux || convex || BSD >= 199103 || sun */
こう書き換えるのが正しいようだ。

最終的にmisc.cを上記のように書き換えて、
$ LDFLAGS="-m64" CPPFLAGS="-m64 -O3" CFLAGS="-m64 -O3" ./configure --prefix=/usr/local --enable-pam --enable-locale --enable-colors256 --enable-rxvt_osc --enable-telnet --with-sys-screenrc=/etc
$ gmake
# sudo gmake install
でインストールができた。(※例によって64ビット・バイナリでインストールしている。32ビット・バイナリの場合はLDFLAGS、CPPFLAGS、CFLAGSの設定は不要)


↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
と思ったのが、不正接続検知。


ARPingの実装ができたなら、不正接続検知も同じ理論でそのままイケル。




要するにループでARPを検出して、内部にMacアドレスのデータベースを持ってしまえば、
あとは、不正接続と認知した時点グラチュータスARPを送信すれば良いだけである。




ま、実装は、時間があるとき・・・って事で(^^;



↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
ちょっと納得してなかったので、、、
特に

    /* 次の座標に何の値が入るか調べる */
    int check_number;
    for(check_number = 1; check_number <= GOBAN_N;) {
        /* 再帰させる */
        if(getans(ix, iy, check_number, konkai) == 0) {
            /* 正解が見つかったとき */
            return 0;
        }
        check_number++;
    }
この辺りが。
すっきりしないというか、2カ所でforループ使いたくねぇみたいな。。。


↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
続き。


↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
今日ふと思いついたので、数独をバックトラックで解いてみようかと。
ま、通常ルールの数独なら9x9マスですから、1面は基本81マス。1マスが4バイト(32ビットint値)としても324バイトで局面を保存できるので、ま、バックトラックで問題なく処理できるかなと。

ま、単なる思いつきなんですが。





↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
最近、ちょっとプログラミング熱が出てきてます。。。


今日のお題は「ピタゴラス数を求める」です。


↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
相変わらず、久々のC言語相手に格闘です。

たまに、こういうところを勉強しておくのも、理解を深める意味でも悪くないので。

↓ にほんブログ村に登録してます (^^ ↓
ブログランキング・にほんブログ村へ にほんブログ村 IT技術ブログへ にほんブログ村 音楽ブログへ にほんブログ村 音楽ブログ DTM・MIDIへ
1ページ

このアーカイブについて

このページには、過去に書かれたブログ記事のうちプログラミングカテゴリに属しているものが含まれています。

前のカテゴリはブログです。

次のカテゴリは仕事です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2010年3月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

ブログペット

アーカイブ

その他のリンク

アクセラナビ

ブログ全体を検索
1x4x9.netを検索


タグクラウド

最近のコメント

QRコード

QR_Code.jpg