[Windows]

Vistaとマキャベリ / 2008-08-24 (日)

Vistaと聞いて、ふと思い出した台詞。君主論は家に数冊あるのですが(いや、出張先でふと読みたくなるとついつい買ってしまうので...)、探すのが面倒なので、このサイトから転記しました。

「加害行為は、一気にやってしまわなければならない。そうすることで、人にそれほど苦汁をなめさせなければ、それだけ人の恨みを買わなくてすむ。これに引きかえ、恩恵は、よりよく人に味わってもらうように、小出しにやらなくてはいけない。」

やっぱ、Windows Vista の一番の失敗はこの原則に反したこと、変革と互換性をごっちゃにしてしまったことだと思ってます。

Mac OS X は、さんざ非難されたけど、Classic という仮想Mac の中にかつてのOSを封じ込めて、さらに CFM については別途ローダとライブラリ(というか本来のMach-Oのライブラリへのスタブ)を独立して用意させることで、UI的にだけシームレスに動くようにして、Mac OS X そのものに過去の悪習を可能な限りOSそのものに残さないようにしてました。まぁ、確かに時間的都合もあり CoreServices の中にはQuickTimeとか色々残ってしまったけど、それはこまめに叩きつぶされております。

「過去を切り捨てる」という、痛みを伴う改革をOSXへの移行時に一気にやってしまったので、もちろんその時には恨み辛みはでたけど、結果的に最低限ですんでます。

なまじ過去との互換性というものにとらわれた結果、Vista はどっちつかずになっちゃってる、そのせいでいつまでも変革の痛みを感じ続けなくてはいけない、それで駄目だと感じられてるとしか思えない、のです。例えばUI一つを見ても、Aero で色々変えてこれまでの「勘」が使えなくなることをしておきながら、あっちゃこっちゃで旧来のUIも残しちゃってるとか。Aquaみたいに、いっそ全部変わってくれればまだ楽なのに、とか感じてなりません。(同じことは Luna の時にも思ったけどさ...。結局みんな Classic スタイルをつかう羽目に。)

いっそ、Classic みたいに仮想マシンの中でXP動かして、シームレスなGUIだけを用意してあげて、過去との互換性を押し込めて、Vista はもう互換性を無視してがんがん好きなことをやった方が、MSも、開発者も、ユーザにとっても幸せな解決策だったんじゃないかなと思えてなりません。要素技術(Virtual PC, XPのライセンス)は自前でもってるのだからさ。

この記事のリンク元 | 141 | 51 | 13 | 11 | 10 | 5 | 5 | 4 | 3 | 2 | 2 | 2 | 2 | 1 | 1 |

この記事のリンク用URL&トラックバックURL : http://x.nest.jp/Windows/080824_0003.htm

...

[Windows]

smbwebclient と日本語パス / 2008-08-08 (金)

CentOS5.1 の yum アップデートしたら、smbwebclient で日本語パスが通らなくなりました。

何でだろと調査したら、以下の問題に抵触してるっぽいです。

php 5.2.6のescapeshellcmdで

嘆いても始まらないので直しました。変数 cfgDefaultLocale を新規に作成しまして、これに "ja_JP.UTF-8" なりを設定すればそれを内部的に setlocale で設定する、ってな感じです。

私は smbwebclient.php を /usr/lib/samba/webclient/ 以下に置いていまして、DocumentRoot 以下のスクリプトは以下のようにしてます。

<?php
      $SMBWEBCLIENT_CLASS = 'smbwebclient_config';
      include '/usr/lib/samba/webclient/smbwebclient.php';
               class smbwebclient_config extends smbwebclient {
               var $cfgSambaRoot = 'WORKGROUP/PROLIANT1';
               var $cfgDefaultLocale   = 'ja_JP.UTF-8';
               var $cfgDefaultLanguage = 'ja';
               var $cfgDefaultCharset = 'UTF-8';
               var $cfgFacility = LOG_LOCAL5 ;
               // var $cfgLogLevel = 2 ;
               // all your settings ...
      }
      $swc = new smbwebclient_config;
      $swc->Run();
?>

Charset, Language, Locale をばらばらに設定するのでちと見づらいですが、まぁ、いいかなっと。

なお、修正済みのソースは以下に添付しております。すきにつかってください。

トラックバック (1)
この記事のリンク元 | 1 | 1 | 1 |

この記事のリンク用URL&トラックバックURL : http://x.nest.jp/Windows/080808_0100.htm

...

[Windows]

smbwebclient / 2008-04-02 (水)

職場でファイル共有についてちと相談を受けました。基本的にオフィス内の人のファイル共有なのですが、社外の人も少々アクセスしたい用件があると。また、全員が全員技術屋というわけでもないので、できれば日本語ファイル名を許容したりと「緩い」運用ができること。ターゲットは基本的にWindowsで、という感じ。

それからしばらく色々な検討をしてみたのですが、WebDAVは色々と厄介だし、オフィス内のアクセスが中心ならば不向きと判断。Samba でファイル共有しつつ、同じサーバで apache 立てて、Webベースのアクセスができるようにリダイレクトかけるのがいいかなーっと感じ、Webベースのファイル共有ツールとかを色々試してたのですが、「日本語ファイル名」がかなり厳しい。

いい加減あきらめようかと考えていたところで見つけたのが smbwebclient.php 。これ、バックエンドに Samba を使って、Web経由でのアクセスを全部そっちにパスするーすると言うシンプルな仕組み。設置も簡単で、かつバックエンドの Samba さえ適切に設定しておけば日本語ファイル名もOK。さらに、メッセージは多言語対応、日本語メッセージもあると至れり尽くせりでした。

これを HTTPS な Web サイトに突っ込んで、Basic認証をきちっとかけた上で運用してみましたがかなりいい感じです。

ただ、なぜか最初1度は英語メニューになり、それを日本語に直すのだけが玉に瑕。スクリプトの説明には、どうもどの言語を使うかは自動認識するみたいなのですが...。

気になったので調査。原因は、Accepted-Language ヘッダの解釈がちょっとまずくて、優先度の指定とか無視して、ヘッダで最後に指定された言語を選択してしまうというものでした。

添付ファイルはそれを直すパッチです。あててから数ヶ月近く運用してますが、どこからも文句がこないので問題ないと判断し、公開します。

一応作者にも送りました。

トラックバック (1)
この記事のリンク元 | 171 | 95 | 35 | 18 | 17 | 15 | 14 | 14 | 12 | 11 | 9 | 6 | 4 | 4 | 2 |

この記事のリンク用URL&トラックバックURL : http://x.nest.jp/Windows/080402_1727.htm

...

[Windows]

Visual C++ Express Edition の導入 / 2006-01-17 (火)

ちと思う所があって、VPC 上の Windows XP に VC++ を導入したのでした。ありがたいもので最近は VC++ が無償公開されているのでこいつをダウンロードして導入すればいいだけです。

Visual Studio Express Editions はこちら。 ここの「Visual C++ 2005 Express Edition」 のページから CD イメージがダウンロードできます。

また、こいつだけだと .Net アプリしか作れないらしいので、前もって「Windows Platform SDK」も入手します。これ、単品では手に入れられないらしく、「Windows Server 2003 SP1 Platform SDK ISO Install」 を使います。これ、ダウンロードすると .img という拡張子がついてますが、これを .iso に変えてしまうと Vertual PC でイメージのマウントができます。

さて、まずは Visual Studio のインストールを行います。これは最初に手に入れた「Visual C++ 2005 Express Edition」の autorun なり setup.exe なりを起動してインストールをすればいいです。ただ、うちでは MS SQL Server Express Edition のインストールが異様に時間がかかりました。不要だと言い切れるならそもそもインストール時の選択で外しておくといいかも。また、AMD64 や Intel64( IA-64の事か?)周りも不要なら外しておくといいでしょう。

次に、Platform SDK の導入。これも「Windows Server 2003 SP1 Platform SDK ISO Install」のイメージをマウントして、そこの setup.exe を実行すればいいだけです。

ここからが本番。このままだと Visual Studio では .Net なアプリしか作れない、Win32ネイティブアプリは作れないのです。それをどうするかの手順が Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う にあります。この手順通りにすればいいのですが、ただ、これ、はっきり言って説明が悪い。

まず、Visual Studio 側の訳とあってないのです。ぱっと目についた所だと

  • [Visual C++ フォルダ] -> [Visual C++ ディレクトリ]
  • Executable ファイル -> 実行可能ファイル
  • Include ファイル -> インクルードファイル
  • Library ファイル -> ライブラリファイル
  • アプリケーションタイプ -> アプリケーションの種類

ですか。これぐらい確認すればすぐ分かるだろうに (--; なお、[オプション]は「ツール」メニューにあります。

あと、

[ファイル] メニューから [新しいプロジェクト] をクリックします。[新しいプロジェクト] ダイアログ ボックスにある、[プロジェクトの種類] ツリーの [Visual C++] ノードを展開し、[Win32] をクリックします。[Win32 プロジェクト] をクリックし、任意のプロジェクト名を指定して [OK] をクリックします。[Win32 アプリケーション ウィザード] ダイアログ ボックスで、アプリケーション タイプとしてWindows アプリケーションが選択されていること、ATL は選択されていないことを確認してください。最後に [完了] ボタンをクリックして、プロジェクトを生成します。

とありますが、[新しいプロジェクト]ではなく [ファイル]メニューの[新規作成]の[プロジェクト...]です。

また、プロジェクトの種類ツリーの Win32 をクリックしても、[Win32 プロジェクト] はありません。[Win32 コンソールアプリケーション] を一旦選択します。すると[Win32 アプリケーション ウィザード] ダイアログ ボックスがでますので、「アプリケーションの種類」 で「Windows アプリケーション」を選択します。

すると Win32 な GUI のアプリケーションが作れます。

最大のトラップはコンソールアプリを選んでから GUIなアプリを持ってくる、というところですか。ここに気がつくまでえらい手間がかかりました。 こちらの、MASATO氏のインストールメモがなければ、ずっと気がつかなかったかも(^^;

この記事のリンク元 | 7 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |

この記事のリンク用URL&トラックバックURL : http://x.nest.jp/Windows/060117_2012.htm

...