« 2006年2月 | トップページ | 2006年4月 »

2006年3月27日 (月)

Premature end of script headers

Apatch2.0で遭遇したエラー。

具体的な内容については下とかが詳しいが、
http://sagittarius.dip.jp/~toshi/premature.html
http://it-revolution.seesaa.net/article/13687310.html
いろいろ試していても直る気配がない。

一か八かパーミッションを端から試していったところ、755から744に変えたら動作した…。謎。

| | コメント (0)

2006年3月20日 (月)

Donut RAPT 69 をVC8でビルドする。

  • Boost.RegExが必要。
    boost自体についてはLet's boostを参照のこと。
    Donutのビルドにはインクルードパスの設定のほかに
    bjam -sTOOLS=vc-8_0
    としてlibboost_regex_*.libとかを作って、そこにライブラリパスの設定が必要。
    このときsTOOLSの大文字小文字は間違えないこと。

    インクルードパス・ライブラリパスはツール→オプション→プロジェクトおよびソリューション→VC++ディレクトリ→ディレクトリを表示するプロジェクト→インクルードファイル・ライブラリファイルに設定してもいいし、
    プロジェクト→プロパティ→構成→すべての構成→構成プロパティ→C/C++→全般→追加のインクルードディレクトリ
    リンカ→全般→追加のライブラリディレクトリ
    リソース→全般→追加のライブラリディレクトリ
    に設定してもいい。
  • プロジェクト→プロパティ→構成→すべての構成→構成プロパティ→C/C++→詳細→指定の警告を無効にする→4996;4005;4995;4927;4244;4018;4346;4482;4454;4348;4554
  • プロジェクト→プロパティ→構成→すべての構成→構成プロパティ→C/C++→言語→forループスコープの強制準拠→いいえ
  • AtlifaceEx.idl
    右クリック→プロパティ→構成→全ての構成
    ビルドから除外→いいえ
    MIDL→MkTypLib互換→いいえ

    さらに以下の行を修正
     helpstring("IAxWinAmbientDispatchEx2 Interface"),
    interface IAxWinAmbientDispatchEx2 : IDispatch
  • DonutView.h
     CComQIPtr<IAxWinAmbientDispatchEx2> m_spAxAmbient;
  • stdafx.cpp
    //#include <atlimpl.cpp>
    MtlProfile.h
    //using WTL::wtlTraceFlags;
    DeskBandHost.h
    //AtlDumpIID(riid, _T(""), S_OK);
  • RtlMatch.h
    REG_EXPRESSION expression = REG_EXPRESSION( static_cast<LPCTSTR>(strPattern) );
  • MtlWeb.h
    inline void MtlShowInternetOptions()
     const int s_unknownOffset = 12;
    ExplorerTreeViewCtrl.h
     static void _TreeItemMask(TVITEM& item, ULONG dwAttributes)
  • RtlList.h
     typedef typename tyRtlList::iterator tyRtlListItr;
  • IDocHostUIHandlerDispatchImpl.h
       ATL::InlineIsEqualGUID(riid, IID_IDocHostUIHandlerDispatch))
    MtlDragDrop.h
       ATL::InlineIsEqualGUID(riid, IID_IDropTarget)
  • AboutDlg.h, mainfrm.h
       #define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))
       hCursor = CopyCursor(LoadCursor(hInstHelp, MAKEINTRESOURCE(106)));
  • ChildFrm.h
    /*ATLTRY(*/CChildFrame* pChild = NEW CChildFrame(tabMDI, adBar, bNewWindow2, dwDLFlags)/*)*/;
  • LanguageOption.h
    g_hDllInst = _Module.m_hInstResource = g_hModuleInst;
    g_hDllInst = _Module.m_hInstResource;
  • mainfrm.h
         const UINT uDiff = (UINT)sqrt(pow(static_cast<double>(ptUp.x - ptDown.x), 2) + pow(static_cast<double>(ptUp.y - ptDown.y), 2));
        nDiff = sqrt(pow(static_cast<double>(ptBefor.x - ptUp.x), 2) + pow(static_cast<double>(ptBefor.y - ptUp.y), 2));
  • DonutLinksBarCtrl.h, ExplorerToolBarCtrl.h
      MtlRefreshBandIdealSize(CReBarCtrl(GetParent()), m_hWnd);
  • SearchBar.h, ExplorerToolBarCtrl.h
      MTL::CLogFont lf;
  • Donut.cpp
        GUID guid;
        hRes = _Module.Init(NULL, hInstance, &guid);
  • TreeOptiopnDialogT.h : CTreeOptionPageImpl, CDonutOptionDlg
    MtlCtrlw.h : CCommandBarCtrl2Impl
    FavTreeViewCtrl.h : CDonutFavoritesBarImpl
    ExplorerToolBarCtrl.h : CExpBarMenu
    DonutLinksBarCtrl.h : CDonutLinksBarCtrl
    SearchBarOption.h : CSearchBarPropertyPage
    FavoriteMenu.h : CFavoriteGroupMenu, CChildFavoriteMenu
    TabCtrl.h : CTabCtrl2Impl
    RemoveLogs.h : CRemoveLogsDlg

    以上のクラスの基底クラスに出てくる自分のクラス名にテンプレート引数をつける
    例)
    template<class T, WORD w_tDlgTemplateID>
    class ATL_NO_VTABLE CTreeOptionPageImpl : public CDialogImpl<CTreeOptionPageImpl>
     , public CWinDataExchange<CTreeOptionPageImpl>, public CMessageFilter
    template<class T, WORD w_tDlgTemplateID>
    class ATL_NO_VTABLE CTreeOptionPageImpl : public CDialogImpl<CTreeOptionPageImpl<T, w_tDlgTemplateID> >
     , public CWinDataExchange<CTreeOptionPageImpl<T, w_tDlgTemplateID> >, public CMessageFilter
    とする。

| | コメント (0)

指定のフォルダ以下のフルコントロールを得るソフト

http://mtamaki.cocolog-nifty.com/blog/2006/03/post_d1da.html

のおまけ。

http://www.aurora.dti.ne.jp/~m-tamaki/FullControler_060320.zip

指定したフォルダ以下のすべてのファイルとフォルダにFullControlerを起動したユーザーとAdministratorsのフルコントロールを付加します。

FullControler.exe -user "username"

として起動するとusernameのフルコントロールを付加することも出来ます。

| | コメント (0)

アクセス権・所有権を再設定して削除するソフト

http://www.aurora.dti.ne.jp/~m-tamaki/AdministrateDeleter_060320.zip

Windowsのセキュリティの勉強用に作ったツール。

指定のフォルダ以下のすべてのファイルとフォルダを削除します。
このとき、アクセス権や所有権がなくて削除に失敗しても所有権を分捕ってアクセス権を設定して削除しようとします。
というソフトなので、環境移行時なんかに出来てしまったどうしても消せないファイルやフォルダの削除に使えるかもしれません。

ただし、使用する際には非常にご注意ください。通常削除できないファイルもとてもがんばって一生懸命削除してしまうので本当に注意して使ってください。

| | コメント (0)

2006年3月18日 (土)

SVNのレポジトリにスペルは一緒だけど大文字小文字が違うファイルができてしまったときどうするか。

SVNのレポジトリにスペルは一緒だけど大文字小文字が違うファイルができてしまったとき、Windowsではチェックアウトやアップデートに失敗する。

こういうときはレポジトリブラウザで同名のファイルをリネームしたり、削除すればOK

| | コメント (0) | トラックバック (0)

2006年3月16日 (木)

naoyaのはてなダイアリー - ETech 2006 レポート

naoyaのはてなダイアリー - ETech 2006 レポート
...初めての ETech だったんですが、どんだけすごいテクノロジーの発表とかがあるのかなーと思ったものの、「これはすごすぎて真似できない」みたいなものはあまりありませんでした。...また、そんなの初めて聞いたよーというのもそれほど多くなく。...それでまあ、最初は ETech ってもしかしたらあんますごくないのかなとか思っちゃったんですが、冷静に考えてみたら違うんですよね。やっぱりこれは blog やソーシャルブックマークの影響だと思うのです。おそらく数年前は、海外のプログラマやエンジニアの間ですら何が盛り上がってるかとか、どういう技術がいま熱いかという話題を共有するのはなかなか難しかったはずです。そういう状況でカンファレンスに出席すると、すべてのものが初めてで、おそらく相当なショックを受けたのかなと思います。ところが、このご時世、先のタッチパネルのデモなども YouTube にあがっててソーシャルブックマークで見たことがあったわけで、会場でみたときにそこまで驚くことはなかったし、今回数多くみられた Ajax 周りの発表も同じくそんな感じで事前に知ってる情報や、あるいは実際に自分で手を動かしてノウハウをある程度持ってる、みたいなものが多かったと。インターネット全体のレベルでの情報共有というのが進んだおかげで、こういった最新技術について触れるためのコストが圧倒的に下がったんだなあと、それをすごく実感しました。 ...

と長文引用してみましたが、最近確かにそう思います。
と同時に、最近ブログを読み始めた身から見ると、昔展示会やらカンファレンスで受けた衝撃をブログとかを読むことで受けてる感じがします。

技術の最先端が今どこにあるか、ということを知っている人が昔より桁違いに多い状態になったとき、どんなことが起こるのかなーというのを想像したり。

| | コメント (0) | トラックバック (0)

日本ファルコム 英雄伝説 空の軌跡 Second Chapter 用 魔法早引き表

JavaScriptでオブジェクト指向する勉強用。

持っているクォーツをチェックすると、そのクォーツを組み合わせて作れる魔法の一覧が出てきます。

http://www.aurora.dti.ne.jp/~m-tamaki/ED6SC_Quartz_Magics/

| | コメント (0)

2006年3月13日 (月)

debian+dynabook T5/X16PME+Planex GW-NS11Hで無線LANを使う

無線LANを使うのに丸2日かかりました。

とりあえず以下にやり方を記録。

  • まずapt-getでwireless-toolsをゲット。
    apt-get install wireless-tools
  • PCカードスロットにLANカードをざっくし指す。
    運がよければ電源が入って認識される。
    /etc/pcmcia/configに載ってるPCカードは使えると見ていい。
  • /sbin/iwconfig
    を実行すると認識されてるLANカードがIDとともに出てくる。eth0とかって感じで表示されるIDを覚えておく。
  • /etc/network/interfaces
    をエディタで開いて、auto:(ID)の行の前に
    wireless_essid *****
    wireless_key s:*****
    を追加。

これで起動時に自動的につながるようになるはず。
以下調べてるときのメモ。

  • KDEには無線LANの設定をするGUIツールがあるらしい。
  • 無線LANカードGW-NS11CではそもそもPCMCIAが認識しなかった。電源ランプも点灯せず。/etc/pcmcia/configに正しいmanfidをGW-NS11Hをベースに書いてやれば認識するのかも。
  • カードをGW-NS11Hにしたらあっさり認識。ただしすぐにはIPもらえなかった。とりあえずiwconfigでWEPキーを指定して再起動。
    /sbin/iwconfig eth1 key s:*****
  • 再起動したらWepキーが消えた。うぉ。
  • 挙句の果てにDHCPが動かなかった。
  • もう一度キーを指定して固定IPにしたら動いた。
  • そして再起動したらWepとIPが消えた。(;;
  • /etc/network/interfacesに書くんだろうか。
    wireless-key s:*****
    (Ref: http://www.geocities.jp/yasushi_suzudo/pub/hardware.html)

| | コメント (0) | トラックバック (0)

2006年3月10日 (金)

LANで他のPCからパスワードの入力なしにフォルダを共有する時

Windowsで他のPCからパスワードの入力なしにフォルダを共有したいときについてのメモ。

Windowsは他のPCの共有フォルダを見ようとするとき、まず自動でGuestアカウントでそのPCにログインしようとする。共有フォルダにパスワードなしでアクセスできないときはこのプロセスに失敗していることが多い。

自動でGuestアカウントにログインできるためには以下の3つの条件が必要。

  • Guestアカウントにパスワードがないこと。
    コントロールパネルの「ユーザーアカウント」でGuest→パスワードの削除
  • パスワードがないアカウントにリモートでログインできること。
    1. [スタート]-[ファイル名を指定して実行] から secpol.msc を起動します。
    2. [ローカルポリシー]\[セキュリティオプション] を展開します。
    3. 右側の「アカウント:ローカルアカウントの空のパスワードの使用をコンソールログオンのみに制限する」をダブルクリックし「無効」に設定して「OK」をクリックします。
    4. Windows を再起動します。
    (Ref: http://homepage2.nifty.com/winfaq/wxp/trouble.html#787 )
  • Guestアカウントがリモートでログインできること
    ローカルセキュリティポリシー→ローカルポリシー→ユーザー権利の割り当てを開き、ネットワーク経由でコンピュータへアクセスにGuestを加え、ネットワーク経由でコンピュータへアクセスを拒否するからGuestを外す。

| | コメント (0)

メモリの初期化忘れ

たまにしか再現しない、どうやっても再現したりしなかったりする、といった場合はメモリの初期化忘れを疑ってみよう。

これから起こるバグはかなり厄介。まず、OSが起動してから同じアプリケーションの二回目以降の起動では多くの場合同じメモリが使いまわされて、なおかつ前回のメモリ状態が残っていることが多い。
このために二回目以降は前回終了時の値が入ったままになり、そういった値は意外とアルゴリズムにとって初期値として致命的でないのでぱっと見動いてしまう。
しかし、リリースした後にほかのPCとかに入れてみると最初の挙動が変、とかそういうことになる。

ていうか、なったorz

| | コメント (0)

debianを入れてみた。

本当に入れてみただけど、とりあえずその記録。

Debian.jpからリンクをたどって流れに流れ
http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/current//images/floppy/
から

  • boot
  • cd-drivers
  • net-drivers
  • root

の4つの.imgファイルをダウンロード。さらに
http://ftp.egr.msu.edu/debian/tools/rwwrtwin.zip
もダウンロード。

んで、FDDを4枚フォーマットしてrwwrtwin.exeで4つのimgをFDDに書き込む。
んで、bootをマシンのFDDに入れて再起動。
するもエラーで止まりまくる。

どうもFDが古かったみたいでうまく書き込めなかった。5枚くらい失敗したのでこれからやる人は新しいFDを買ってきたほうがいいかも。

その後はダイアログに従って適当に進めて言ったらとりあえず動く環境が完成。
終了はアクション→ログアウトでシャットダウンを選んで終了。

| | コメント (0)

2006年3月 9日 (木)

MIDLとPSDK

PSDKを使ってMIDLをコンパイルするプロジェクトのソースコードをほかの場所に持っていってもう一度コンパイルしようとするとき、たいていredefinitionエラーになる。
これは新しい環境でPSDKのincludeフォルダのパスをプロジェクトかVCに設定していないため。

ただしPSDKのincludeのパスを設定してもリビルドするまできちんとコンパイルできない。

| | コメント (0) | トラックバック (0)

管理者権限を持たないで開発することのススメ

管理者権限を持たないで開発する方法 - Visual Studio
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/tchDevelopingSoftwareInVisualStudioNETWithNon-AdministrativePrivileges.asp

社本@ワック Blog より。
社本さんのBlogのタイトルからは管理者権限を持たないで開発する方法のKBって読み取れるけど、元のページを超すごいめっちゃ斜め読みした雰囲気から言うと、元のKBは「管理者権限で開発してても実際使うユーザーは管理者権限持ってなかったりするから、いざっていうときに動かなかったりセキュリティの面から言ってもよくないんだよー。というわけで開発者の皆さんには通常のユーザー権限で開発することをお勧めします。」って感じ(たぶん)。

実際、管理者権限を普段持たないのはお勧めです。共有マシンとか制限された環境で作業することが増えてきた人は多いんじゃないかな。

ちなみに具体的には以下のようにします。

  • まず自分の権限を適切に設定する。
    基本的に必要なのはUsersとDebuggerUsersです。AdministratorsとPowerUsersは外します。
  • これだけだと管理者権限が必要なときにいちいちユーザーを切り替えたりログオフログオンが必要なので、管理者権限でアプリを実行できる用意をします。
    一番必要なのが管理者権限でExplorerを実行できることだと思います。そのためには
    "C:\Program Files\Internet Explorer\IEXPLORE.EXE" C:\
    へのショートカットを作り、ショートカットのプロパティの詳細設定から「別の資格情報で実行」にチェックをしておきます。

    こうすることでショートカットを実行すると「別のユーザーで実行」ダイアログが開くようになるので、そこで管理者権限を持ったユーザーを選び、パスワードを入れればマイコンピューターが開きます。表示→エクスプローラーバー→フォルダを選択するとフォルダツリーも表示されてコントロールパネルとかも操作できます。

    後はよく管理者権限で実行するプログラムは上記の要領でショートカットを作って別の資格情報で実行にチェックしておくといいでしょう。

とまあ、たぶんこの2つを準備すればOK。前述のKBにはもっとほかのことも書いてあるかも。(そこまでちゃんと読んでない。。。)

| | コメント (0)

TortoiseSVNでBOMなしのUTF-8をDiffしたりMargeしたりするには?

TortoiseSVN(というかTortoiseMerge)ではBOMなしのUTF-8のコードページをきちんと読み込んでくれない。と、主にXMLのDiffやMergeが文字化けする。が、WinMergeの最新版だと読むことができる。

落とすときには06/03/09時点では上から2つ目のWinMerge 2.5.3.2-jp-1以降を選ぶこと。
これをインストールした後でTortoiseSVNの設定を開き、External Programsを軒並みExternalにしてパスをWinMergeU.exeにする。
あと、WinMergeの設定を開き、編集→設定で.html,.rc,.xmlのコードページ情報を検出するとmlang.dllを使用してファイルのコードページを検出するを有効にすると読めるようになる。

| | コメント (0) | トラックバック (0)

2006年3月 7日 (火)

HTMLのAタグのhrefにfoo.cgi?a=b&c=dと書くのは誤り

だということを今日はじめて知った。なんかショック。今まで書きまくってたよorz

http://www.yuhisa.com/cgi/htmllint/explain.html#bad-entity

http://www.bar.com/foo.cgi?a=b&c=d というURLは http://www.bar.com/foo.cgi?a=b&amp;c=d と書かなきゃいけない、という話。
HTMLのタグの内容の部分は実体参照にしなきゃいけないのは知ってたけど属性値は例外だと勝手に思い込んでた。ぐー。
ちなみにIEとかは上のどっちでも解釈してくれちゃったりします。でもampってキーがあったら誤認識とかのきっかけになりそうだし。気をつけます。

 

| | コメント (0)

cherrypyのサーバー解決の高速化

cherrypyというPurePythonのHTTPDがある。残念ながらHTTP1.0しか扱えないのであまり早くないが、pythonでちょっとしたローカルサーバーを作るには非常に便利なモジュール。

そのcherrypy2.1.0であるポートを開こうとしたとき、そのポートがすでに使われていると当然ながら開けずにエラーになるのだが、そのときのブロック時間が超長い。この待ち時間はconfigではどうやら変更できなさそうだ。

が、_cpserver.pyの342行目あたり、def wait_for_free_port(host, port):の for trial in xrange(50): の50を5とかにすると超早くなる。
成功するときはたいてい一発でつながるので5回も試行してだめならとっとと別のポートを開いた方がいいっす。たぶん。

| | コメント (0) | トラックバック (0)

2006年3月 6日 (月)

極東ブログ: 米国財政赤字の実体は知的投資か

極東ブログ: 米国財政赤字の実体は知的投資か
 戦後日本のように製造業ベースの産業だと設備投資が経済発展の指標になるわけだが、知識が生産性を決定する社会にあっては、研究費や教育費が投資になるのは当然でもあるし、堺屋太一とかも言ってそう。問題は、そういうオヤジ・ビジネス書的な一般論ではなく、米国財政赤字の実体がそうした知的投資だったのかということだ。別の言い方をすれば、赤字に見えるのは経理上の問題ということか。 当然、日本はどうだろと思うのだが、よくわからない。なんとなく思うのは、日本の財政は事実上国家コントロールの利く公益産業への投資ということで地域への富の再配分となっているだけではないのかということだ。日本の研究開発費や教育費が将来の知価を高めるためには機能してない気がする。 話はそれだけで、これを機会にそのあたりちょっと視点を変えて見てみようか、と思った。

確かに。研究開発費や養育費というのは将来への投資なのだ、ということにいまさらながら気づいた。

| | コメント (0) | トラックバック (40)

2006年3月 5日 (日)

サイト移転しました(というよりブログにしました。)

仕事で散々ブログやらRSSやらを扱ってるのに自分のサイトがベタHTML手書きというのはさすがに時代から取り残されすぎなんじゃないか、ということに気づいたのでブログを使うことにしました。

とりあえず諸般の事情によりココログを使ってますが、めんどくさくなければはてなかlivedoorにしたいなぁという予定です。だからそのうち3とか4になるかも。

ていうかWiki向きっぽいエントリーが多いからWikiにしたいんだけど、Wikiは新着がわかりにくいからWikiに書くと、Wikiとして管理できて、なおかつちがうURLでWikiの内容を新着順にBlogっぽく表示とかしたいなぁ。

あ、このエントリより古いエントリはすべて移転前のサイトのものです。

| | コメント (0)

ひとつのエントリするほどじゃないメモs

昔のHPから今でも価値がありそうな情報だけど、ひとつのエントリにするほどのものじゃないのを片っ端からリストアップ。03年ごろの情報が多くて、たまに古いのだと95年とかだったりするので情報の信頼性は低いと見てください。ヒント程度に。

| | コメント (0)

« 2006年2月 | トップページ | 2006年4月 »