Jeans & Development:2008年 04月の記事

逃げのセキュリティ対策:LAMPセキュリティを強化する4つの方法 [コンピューター・その他]

2008年4月29日

私は幼少のころから小柄で、小中学生のころはスポーツが非常に苦手であった。もっとも、いわゆる運動神経の発達が他の人よりも2-3年遅れていたらしく、そのことがスポーツが苦手だった主因かもしれない。高校生になると、小柄なままではあったが、スポーツは苦手ではなくなっていた。

小学生のころ、ドッジボールをよく楽しんだ。運動が苦手な私はチームの戦力にはならない。それでも、ちゃんと参加しようとしてボールを受け取ったり投げたりすると、すぐに相手にやられて、フィールドの外に出されてしまう。ところが、不思議なことに、フィールドの隅で観戦者のように腕組みをしてじっと立っていると、相手にやられることは無かった。強い仲間たちが奮闘してくれれば、そのままフィールドの中に残って勝利を得たりしたものである。

しかし、その強い仲間たちが全員やられてフィールドの外に出てしまうと、当然こちらに攻撃がくる。あっという間にやられて、敗北である。

oyagame 開発中 [プログラミング]

2008年4月28日

先日、ふとしたことからpygameの存在を知り、少しばかり虜になってしまっている。

これは何かと言うと、SDL (Simple DirectMedia Layer)を、Pythonで使えるようにしたものだ。要するに、Pythonでゲームを作成するためのツールである。同様のものに、Ruby/SDLがある。

何が私を虜にさせるかというと、gameという名なのである。20年以上前になるが、GAMEというプログラミング言語があった。BASICと良く似ているが、これが流行した当時、この言語の一番の特徴は実行速度にあった。BASICと比べてとにかく速かったその理由は、コンパイルが可能であったことである。これを使って、MZ-80で、数え切れないほどのゲームを作成したものだ。

SFC mini ver 1.0.5 β [プログラミング]

2008年4月24日

Windows Vista対応の、SFC mini バージョン 1.0.5 ベータをリリースしました。利用の際は、1.0.1に上書きした後にinstall.vbsを実行してください。

とりあえず、ベータバージョンとします。もし不具合がある場合は、お知らせいただければうれしいです。

次の正式バージョンは 1.1.0 の予定で、現在の 1.0.5 のメモリ管理を少し見直し、ヘルプファイルを少し書き直してリリースの予定です。同時に、SFC mini のためのフォーラムを暫定的に立ち上げるかもしれません。

SFC mini ver 1.0.5 βは、SourceForge.jp からダウンロード可能です。

SysAllocString [プログラミング]

2008年4月22日

SFC miniの一部の機能がVistaで動かない件について、一ヶ月悩んだのがうそのような出来事が…。

原因はほぼ一つのことに絞られれていた。SFC miniから文字列を出力した場合、WSHの側でそれを使用した後に例外が出て止まる。mallocやnewやdeleteなどをいくらいじっても駄目。

で、思いついたのが、当然ではあるのだが、Google先生に聞いてみること。今回の件の実装については、"pVarResult->bstrVal="というソースコードが必ずあるはず。で、『"pVarResult->bstrVal"』という検索語で調べてみた。

4つ目に、このブログのエントリーが。これはまずいと思ったけれど、その少し下に、『pvarResult->bstrVal = SysAllocString(wStrValue);』と言う文字が。SysAllocString!!!なんと心地いい名の関数であることか。これだと思い、テストコードに挿入。いとも簡単にエラーが無くなった。1ヶ月悩んだのがまるで嘘であったかのように…。

色々調べると、次のページあたりが参考になりそう。

WinAPI: BSTR
BSTR 用のメモリの割り当てと解放

SysAllocStringを使っていなかったのは規約違反であったということらしい。

これで、Vista対応版のSFC miniの新しいバージョンをリリースするめどが、ほぼついた。

児童の上履きにICタグ:副作用はないのかな [General]

2008年4月19日

asahi.comより、

大教大池田小、児童の上履きにICタグ 所在確認実験
大阪教育大付属池田小学校(大阪府池田市)は今月、5、6年生の全児童239人の上履きに発信機能を持つICタグを埋め込み、所在を確認できるシステムの実験を始めた。01年6月の児童殺傷事件の際、子どもたちがどこにいるのか把握できずに混乱した教訓を生かす。

教訓を生かして何かできないかと模索するのは分かるけれど、これはむしろ犯罪の温床にならないかと心配。以前どこかの小学校でランドセルの中にタグを埋め込んむという話があったとき、そのタグの電波を調べることで犯罪者が容易に小学生の行動を把握できると指摘されていた。今回のこれも、同じことのような気がする。

シナリオとしては、以前池田小で事件を起こしたのと同じような犯人が、タグの電波をキャッチする装置を持って小学校に侵入。児童が一人になっているところを見計らって誘拐等の犯罪を行うというもの。

セキュリティーを高めようとして、もっと危険な脆弱性が出てしまう可能性の、良い例だ。アプリケーションの脆弱性対策でも、こういったことにならないように気をつけないといけない。

JScriptのFunctionオブジェクト [プログラミング]

2008年4月16日

ネットサーフィンしていて、たまたま見つけた情報。

jscriptで自作COMからイベントを発生させたい - Visual C++/CLI その他 - Visual Studio User Group:
から、抜粋。

なお、関数オブジェクトは、DISPIDが0(DISPID_VALUE)で、名前が"anonymous"というメソッドを持ったCOMオブジェクトのようです。 MSDN内でもまとまった記述はなく、色々と苦労して調査しましたよ。

JScriptの関数もオブジェクトとして扱われていることは知っていたが、これをCOMオブジェクトとして扱うと、上記のようなことになるらしい。お宝を見つけた気がするので、忘れないようにメモ。

VB.NETでのテストプログラムは、こちら。このリンクは、IDispatchの.NETからの呼び出しの参考にもなる。ちなみに、Native C++からの呼び出しの例は、こちら

Vistaにおいて、VBScriptスクリプト中で管理者権限に移行する方法 [プログラミング]

2008年4月12日

SFC mini用の新しいinstall.vbsが完成。

option explicit
Dim wmi,os,value,wsh,sha,sfo
Set sfo=CreateObject("Scripting.FileSystemObject")

do while WScript.Arguments.Count=0 and WScript.Version>=5.7

  'Check if Vista
  Set wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
  Set os = wmi.ExecQuery ("SELECT * FROM Win32_OperatingSystem")
  For Each value in os
    if left(value.Version,3)<6.0 then exit do 'Exit if not Vista
  Next

  'Run this script as admin.
  Set sha=CreateObject("Shell.Application")
  sha.ShellExecute "wscript.exe",""""+WScript.ScriptFullName+""" vista","","runas"

  WScript.Quit
loop

'Current directory may be moved to system32, maybe not.
Set wsh=CreateObject("WScript.Shell")
wsh.run "regsvr32.exe """+sfo.GetAbsolutePathName(WScript.ScriptFullName & "\..\" & "sfcmini.dll")+""""

Vistaかどうかのチェック方法として、『WSHのバージョンが5.7以上』かつ『Windowsのバージョンが6.0以上』で調べている。これに該当する場合、Shell.ApplicationオブジェクトのShellExecuteメソッドを利用して管理者権限でwscript.exeを起動しなおす(このとき、引数に『vista』を指定)。最後に、regsvr32.exeを実行して終了。

QIQを試してみた [プログラミング]

2008年4月7日

今度は、もどきではないクロージャの、PHPでの実装について。

先日の記事、『PHPでクロージャもどき』を書いた後、hsurさんからの指摘などもいただいて色々調べた結果、先の記事の方法ではcreate_functionを使う不便さを除けば、一般的なクロージャの機能は一通りそろえていることは分かった。

一方で、create_functionの不便さはいかんともしがたいと思っていた矢先、知ったのがこれ:
続々・Zend Engine Hack (クロージャもあるよ) (拡張モジュールもあるよ) - 讃容日記:

C++/CLIを使うか? [コンピューター・その他]

2008年4月6日

先日報告した、SFC miniのVistaでの不具合に付いてであるが、どうやらSFC miniがunmanagedコードであることが原因であるようだ。VistaではWSHのバージョンが上がって、managedコードでWSHが動いるらしい。managedコードからunmanagedのSFC miniを呼び出す事になる。それぞれ独立して動く分にはよいが、文字列の受け渡しなど、unmanagedがわからmanagedがわに情報を移動させた場合、managedがわがGCでunmanagedなメモリ領域を処理してしまうのかもしれない。

で、どうしたものかと色々調べた結果、おそらく解決策になるであろう方法を見つけた。

いままたC++が熱い!「C++/CLI」として大進化したVisual C++ 2005

プロの方々は今更何をとおっしゃるかも知れないけれど、私はこれを昨日知った。恐るべし、マイクロソフト。

Visual C++ でランタイム不要のDLLを作成する方法 [プログラミング]

2008年4月4日

備忘メモ:Visual C++ 2008でランタイム不要のDLLを作成する方法

Project
  -> Properties
    -> Configuration Properties
        -> C/C++
            -> Code Generation
                -> Runtime Library

この項目の中に、

・Multi-threaded (/MT)
・Multi-Threaded Debug (/MTd)
・Multi-Threaded DLL (/MD)
・Multi-Threaded Debug DLL

があるので、/MT もしくは、/MTd を選択する。

参考:MSDN
<<前の記事