Misc:サイトリニューアル検討中

投稿日時 2008年10月18日 22:29 投稿者 Elfaria (コメント オフ)

うわ。ご無沙汰してます。
以前にBlog書いたのが2007年8月。
約1年ぶりのご無沙汰です。

最近Dev方面から結構離れてまして。
雑用ばっかりです。

このCommunity Serverもバージョン古いし、フォーラムにはスパムが蔓延ってるしでサイト全体をリニューアル検討中です。

リニューアルしても過去コンテンツは残す方向で。だって消したらもったいないし。

そんなわけで約1年ぶりのPostでした。

去年と同じく今回も緩いネタです。
変数名ネタなんですが。

タイトルは「Visual Basic 変数名100連発」です。

要はこんな変数名、実際あったらヤバイよね。系です。

現在PPT作ってますが、100個集まらないです。がんばってます。

一部私の出会った事例も混ざっています。

時間があれば、Refactor!をつかった変数名リファクタのデモでもします。

http://www.event-registration.jp/events/te07/streetlive.htm

NOD32というウイルス対策ソフトがあります。
目的はウイルス・マルウェア対策なんですが、軽くて高速。Windowsにもあまり負担をかけないことで評判です。

で、このNOD32をライセンスで購入するとサーバ用CDとクライアント用CDが入ってます。
サーバ用CDでサーバをセットアップし、コンフィグレーションエディタで各種設定をして、その設定をクライアントの配布(一括インストール時)に同時に適用してしまおうと。そんな方法のやり方です。

以前にはてなのほうに書いたので、そちらを参照していただければと。

下記リンククリックで、はてなの方に飛びます。
[ITPro]NOD32のネットワークインストール

Events:COMU+ Community Launch Events開催

投稿日時 2007年5月8日 23:36 投稿者 Elfaria (コメント オフ)

はてなにも同じこと書いてたりします

5/19にCOMU+ × eパウダ~で Windows Vista / Office 2007 のCommunity Launchイベントを開催します。

Community Launch Team (COMU+)

場所は、渋谷のピンクカウっていうお店です。

会費3,500円です。会費と言ってもこれはすべてお食事代です。
いろいろ料理が出るらしい(実は一回も行ったこと無い)ので、非常に楽しみなところでもありますが。
食べながら飲みながら(食べ放題(?)だが飲み物は別)で楽しく開催。これ重要。私の場合、形式張ってると緊張しちゃってうまくできません。

私はテーブルセッション(19:00~)でAero/DWMAPIについて語ります。ありきたりなデモも用意してます。
どっちかというと技術寄りな内容で、非常にぐだぐだな、レベルの低いトークになるかもしれませんが、よろしくお願いします。*1

参加される方は上記リンクからどうぞ。よろしくお願いいたします。

*1:「APIこうやって使うよー」とか「こんなことやってみたよー」レベルですが。

Vista: SDカードでReadyBoost

投稿日時 2007年4月18日 19:30 投稿者 Elfaria (コメント オフ)

久しぶりのエントリです。
今回はVistaのReadyBoostの話。

Vistaの新機能、ReadyBoostなんですが、これって意外と便利。

要はI/Oが高速なメディアにキャッシュの一部を持たせて、一時的にメモリをBoostしよう。っていう機能です。

巷では、ReadyBoost対応のUSBメモリとか出ていますが、別にUSBメモリでなくても、高速な(=一定以上のI/O処理能力がある)メディアならなんでもOKです。

ちなみにその処理能力とは。

  • 4KBランダムアクセス時の読み込み速度:2.5MB/秒 以上
  • 512KBランダムアクセス時の書き込み速度:1.75MB/秒 以上

となっています。

このスペックさえ満たせば、USBメモリでも、SDカードでも、miniSDカードでも、コンパクトフラッシュでも、メモリースティックでも、なんでもOK(だとおもう)
メディアを認識させて、ReadyBoostのプロパティでReadyBoostとして利用可能の場合、ReadyBoostとして使用するかどうかの選択項目が出てきます。

ちなみに、私は上海問屋で購入した上海問屋オリジナルSDカード(メーカーはEVERGREEN)の150倍速 2GBのものをThinkPad X60(RAM:1GB)に入れて使ってます。

ReadyBoostQ&Aなるものもあったのでご紹介

Ready Boost Q&A 和訳?

そういえば、質問の中に

Q. ReadyBoost で使えるメモリの最大容量は
A. 4GBまでとなります(8GBのメモリを圧縮して格納可能)

Q. なぜ4GBなのでしょうか?
A. FAT32のファイルシステムの制限でReadyBoost.sfcache ファイルが4GBで制限されるためです

ってのがありますが、私は2GBのSDカードをNTFSフォーマットした上でReadyBoostとして使ってます…
これって大丈夫なのかしら。

今回のネタはLive Gadget です。VistaについてるSidebar Gadget ではないのであしからず。
Live Gadgetの作り方はあとの予定。

ネットでいろいろ検索してみると、
SDKはhttp://microsoftgadgets.com/livesdk/index.htm

って書いてあるので実際に行ってみて、SDKっていうくらいだから100MB級のSDKをダウンロードするんだろうなぁとか思ってたら、
そこはAPIリファレンス、デザインガイド、VS2005 用のプロジェクトテンプレート、サンプル、FAQ、などしかありませんでした。
(まぁ、まだBetaだしね)

あれ?

まずはプロジェクトテンプレートをダウンロードして、VS2005に入れてみました。
ダウンロードしたファイルは解答せずに、"My Documents\Visual Studio 2005\Templates\Project Templates"の中に入れるらしい。

で、入れたらVS2005を起動して、ファイル→新しいWebサイト
なぜか、言語を”C#”にしないとLive Gadget のテンプレートが表示されません。

プロジェクトを作成してみると、そこには.xmlファイル、.cssファイル、.jsファイルのみ。(GettingStart.htmっていうガイド的なHTMLファイルはありますが)
Live Gadgetの基本はECMAScript(JavaScript)らしいです。

まずはここからスタート。

ナオキさんのところで発見。

MSDN オフラインに ジニアス平井さんが登場!ナオキにASP.NET(仮)

ついにあの平井Genius 昌人も、MSDNオフラインに登場します。2月の予定です。

あのTechEDなどでおなじみの平井先生がついにMSDN Offlineに!
2月登場予定だそうです。

これは行かなきゃ!

Traq:あの人も登場するMSDN Offlineの今後の展開(blogs.msdn.com)

#デスマってるので今回は超短いです

本日(12/1)付けでCOMU+(こみゅぷらす) というコミュニティががスタートしました。

こみゅぷらす (COMU+) とは、INETA の加盟コミュニティのリーダーや Microsoft MVP などこれまでもアクティブに情報を発信してきたメンバーが集まって結成した団体です。
Windows 技術を中心に、さまざまな情報をオンライン、オフライン勉強会を通じて配信していきます。

よろしくお願いします。

11/22 23:40 画像が表示されていなかったのでFixしました

自作アプリをつくって、UACの動作を検証してみました。
自分が所属しているユーザーと、その認証方法、所属しているWindowsグループを列挙しています。

#スクリーンショット中、"Privileges"の中が空なのは、まだ実装できてないからです。

#Vista RC2 での検証です。製品版では違ってる可能性があります。

今回検証したのは、実行時に所属するグループ。です。
検証したユーザーは、ローカルコンピュータのユーザーです。ドメインユーザーではありません。

uac01.jpg

左が、普通にアプリケーションを起動した場合
右が、右クリックして、「管理者として実行」をした場合です。

通常使うユーザは、Administrator権限がありません。
Vistaでは、インストールした直後のユーザーは、Administratorではありません。

でも。

uac02.jpg

アカウントの画面を見ると、Administratorになってます。
でも、普通に実行しても、Administrator権限は付与されません。
NT AUTHORITY\INTERACTIVE グループに所属=昇格可能っていう意味かな?
それっぽい予想です。

ごめんなさい、もう一個スクリーンショット撮ろうと思ってわすれました。

気になったのが、black\None というグループ。
明日調べてみよう…。

こんなツール作ってみました。

User-Agent Changer for Internet Explorer (ver.1.3) (ChgUAUtil.lzh)

要は、IEのUser-Agentを切り替えるツールです。
起動すると、どこかで見たようなことのある(地球にコンセントが刺さっている)アイコンが、右下タスクトレイに常駐します。

右クリックで、メニューが出ますので、そこから切り替えるUser-Agentを設定します。


実は、このツール、このCommunity Server (Ver.1.1)のブログ等の書き込みに使用するFreeTextBoxが、
IE7だと表示されないので、その対策のために作ったツールだったりします。
レンダリングエンジンは変更されません。念のため。


めちゃくちゃ遅れてごめんなさい。

今年のTechED 2006 Yokohama でUsergroup Street Live をやったんですが、それのPPTです。

PDFで公開します。

こちらからどうぞ
[PDF]Windows サービスとUSB温度計

ref:TechEd 2006 YokohamaにてLiveやりました。

このLive、最後だけ失敗してしまったのですが、それのリベンジを、近日開催予定。

(参考サイト:Andrew's Guide to Computers )
ただの参考情報です。というか参考サイトの日本語訳風味です。
At Your Own Risk でお願いします。
#ちなみに私はこの方法でPC直りました。

Windows XP SP2 で Explorer が初期化エラーで起動しない場合の解決法。

ログオンすると、

  • 「アプリケーションを正しく初期化できませんでした (0xc0150002)。[OK] をクリックしてアプリケーションを終了してください。」 の表示
  • ログオンはできるけども、スタートメニューとかデスクトップが出てこない
  • CTRL+ALT+DEL も効かない
  • 助けてジョニー!(これは関係ないw)

解決法は、

  • Windows XPがインストールされている、もう一つのPCから、以下のディレクトリをコピー&ペースト。
    • %WINDIR%\WinSxS
    • %WINDIR%\SoftwareDistribution

該当HDDにコピーする場合は、書き込み権限がなかったり、ファイルがロックされてたりする場合があるので、回復コンソールとか、BartPEなどを使った方がいいらしい。
#私の場合は、別のWinXPが入っているPCにUSB変換で接続して、そこで直しました。

参考までに。どうぞ。

とある検証プログラムを書いている時に思いついた。

Imports System.Security.Principal
してから、

        For Each group As Security.Principal.IdentityReference In Security.Principal.WindowsIdentity.GetCurrent.Groups
            Console.WriteLine(group.Translate(GetType(Security.Principal.NTAccount)))
        Next

これで、現在使用しているユーザの所属グループが列挙されます。

ちなみに、青字の部分、Security.Principal.NTAccount を、Security.Principal.SecurityIdentifier にすると、
SID(Security IDentifier)が返ります。

 

#GetTypeなんて使ったの久しぶりだ…

Edited at 2006/10:16 22:25

Windows Vistaで新しく加わったUAC(ユーザーアクセス制御)な話。

自作のアプリケーション等々をUACに対応させる方法です。Manifestファイルを使用する方法。

簡単に言うと、Manifestファイルを作成し、そこに、以下(<Assembly>から下)のような記述を埋め込みます。(宣言は飛ばしても良いかと)

<?xml version="1.0" encoding="utf-8"?> 
   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
         <security> 
            <requestedPrivileges
               <requestedExecutionLevel level="asInvoker" /> 
            </requestedPrivileges
         </security> 
      </trustInfo>
</assembly>

で、肝心なのが赤字の部分と青地の部分。
実行時のレベルを指定してます。

RequestPrivileges っては、文字通り必要な昇格権限の定義。
RequestExecutionLevel で、必要な昇格権限を指定します。
level= で、必要なレベル。
uiAccess= で、ユーザインタフェースがアクセスするか(?)を指定(True/False)

Level= の指定は、asInboker を含めて、以下のものが指定できます(Vista Beta1の際の資料を基にしてますので、RC1/2では変わってる可能性あるかも…)

  • AsInvoker
  • HighestAvaliable
  • RequireAdministrator

MSDNのリファレンスを訳してみる。(参考:Developer Best Practices and Guidelines for Applications in a Least Privileged Environment
(?) がついている部分は、うまく訳せなかったところ。

level= の部分:
asInvoker …継承元(親)のプロセスのアクセストークンを使用してアプリケーションを起動
HighestAvaliable …現在のユーザよりも高い権限に昇格して、アプリケーションを起動
RequireAdministrator …完全なAdministrator権限でアプリケーションを起動(?)

level= が指定されていない場合、asInvokerとして起動するようです。

uiAccess= の部分:
False … 他のウィンドウに対して情報を提供しないもの(?)
True …他のウィンドウに対して情報を提供するもの、UI Accessibility なアプリケーションはTrueにする(たとえば、スクリーンキーボードとか。)

親プロセスの所持しているアクセストークンによる動作表(?)(上記リンクページ中盤)

現在のユーザーが、Build-inなAdministrator アカウントを使っている場合(注:VistaではAdministratorアカウント自体は既定で無効になっている)

親プロセスのトークン 承諾したポリシー None or AsInvoker HighestAvailable RequireAdministrator
完全な管理者権限 (Do not Care) 完全なAdministrator権限で起動
UACのプロンプトは表示されない

現在のユーザが、Administratorsグループのメンバになっている場合

親プロセスのトークン 承諾したポリシー None or AsInvoker HighestAvailable RequireAdministrator
制限ユーザ なし(昇格しない場合?) 制限ユーザでアプリケーションが起動 完全なAdministrator権限で起動
UACプロンプトは非表示
制限ユーザ 実行に同意 制限ユーザでアプリケーションが起動 完全なAdministrator権限で起動,
実行に同意するかどうかのプロンプト画面が表示
制限ユーザ 昇格 制限ユーザでアプリケーションが起動 完全なAdministrator権限で起動,
昇格するかどうかのプロンプト画面

完全Administrator権限

(Do not Care) 完全なAdministrator権限で起動
UAC プロンプトは非表示
完全なAdministrator権限で起動,
UAC プロンプトは非表示

現在のユーザーが、制限ユーザの場合。

親プロセスのトークン 承諾したポリシー None or AsInvoker HighestAvailable RequireAdministrator
制限ユーザ なし(Silent?) 制限ユーザで起動 アプリケーションの起動に失敗する
制限ユーザ 実行に同意 制限ユーザで起動 アプリケーション起動前に、Administratorへ昇格するかどうかのプロンプトが表示される
制限ユーザ 昇格 制限ユーザで起動 アプリケーション起動前に、Administratorへ昇格するかどうかのプロンプトが表示される

訳が中途半端です。ごめんなさい。

WMIのクエリを実行して結果をConsole.WriteLineで表示するサンプルです。

コードはこんな感じ。

    Sub WMIExecute(ByVal Query As String)
        Dim MO As System.Management.ManagementObject
        Dim MO_Collection As System.Management.ManagementObjectCollection
        Dim MO_Searcher As New System.Management.ManagementObjectSearcher

        MO_Searcher.Query.QueryString = Query
        MO_Collection = MO_Searcher.Get

        For Each MO In MO_Collection
            For Each MO_Property As Management.PropertyData In MO.Properties
                Console.WriteLine(MO_Property.Name & " : " & MO_Property.Value)
            Next
        Next
    End Sub