スキップしてメイン コンテンツに移動

CLR/H第42回勉強会に行ってきたよ

2009/07/04に開催されたCLR/H Windows 7 コミュニティ勉強会 with Tech Fieldersに参加してきた。MicrosoftのTech Fieldersとのコラボレーション。

Windows Server 2008 R2 その概要と開発者にとっての注意点

  • 最大の特徴は「スケールアップ」
  • 64bit版しかサポートしない
  • R2の売りの機能は64bitでないと実現できない為
  • 最大256論理プロセッサをサポート→タスクマネージャでみると・・
  • ユーザーモードスケジューリング(UMS)
  • プログラムでは明示的な並列処理の記述が必要
  • データアクセスは並列性が高い
  • Non-Uniform Memory Access(NUMA)
  • 64プロセッサ未満の場合は、多くはそのまま動作する
  • 64プロセッサ以上の場合に動作
  • アプリケーションの64bit対応について
  • .NETについては「基本的には」移行作業は必要ない
  • 使用しているライブラリが64bitに対応しているか注意する必要がある
  • 32bitアプリケーションはWOW64というエミュレーター上で動作する機能がある
  • Visual Studioで作成したインストーラは32bitのみ
  • msiを編集で、install.utillib.dllを64bit用に変更する
  • Server Coreは.NET Framework、PowerShell対応に
  • PowerShellは基盤といえるほどOSと綿密
  • IISの制御もPowerShellでリモート管理が可能

PowerShellはまだ触ってみた程度なので、もうちょっと覚えると面白そう

開発者が喜ぶWindows 7 新機能 ~初夏のスペシャル・フルコース~

  1. 「Boot Drag Race」

    起動はさすがにXPの方が速いが、シャットダウンはWin7の方が速かった。

  2. 「ホワイトアウト」

    応答なしのウィンドウでも再描画される。クリックするとうっすらと白くなる

  3. 「往年の名作:哭きの竜」
  4. 「スーパーフェッチ」

    使用頻度などを基にアプリケーションを予め読み込んでおくことで、アプリケーションの起動を速くする。ほんとに速い

  5. 「ジニアス電力」

    電力の状態などをアプリケーション側で取得が可能。WinProcをオーバーライドしてメッセージを取得する。
    これはなかなか面白い

  6. 「愛のガブリオーラ」
  7. 「ガジェット・ボム」
  8. 「超高速レンダリング」

    Direct2D、DirectWrite

  9. 「お洒落なバー」

    タスクバーが太くなった。個人的にはちょっと好みではない。
    プレビュー画面にボタンなどを配置できる。(アプリケーションで提供できる)

  10. 「フルーツシェイク」

    ウィンドウを振ると、他のウィンドウが最小化する。向こうに設定することもできる
    このときのデモのネタは嫌いではない

  11. 「ジニアスナビ」
  12. 「サロゲートCheckers」
  13. 「5・7・5ポエム」
  14. 「お隣で動画再生」

    ローカルのメディアファイルを、他端末のWindows Media Playerでリモート再生できる。デジタル家電向けの機能。
    これは面白い。

  15. 「マイログイン画面」

Windows 7 対応アプリケーションの開発 ~互換性に関する傾向と対策~

  • Windows 7のバージョンは6.1
  • バージョンチェックはAPIを使用する
  • Win32APIではGetVersionEx・VerifyVersionInfo、.NETではExvironment.OSVersionがある
  • ユーザーアカウント制御(UAC)対応のアプリケーションを作成するには
  • アプリケーションマニフェストに記述して実行ファイルと一緒に配布、または埋め込む
  • 互換性の為の救済措置として、インストーラの自動検出機能がある(setup.exe)
  • 設計として、管理者権限が必要な処理を分離し、別のexe、dllにする
  • 昇格が必要な処理には、ボタンなどに「シールドアイコン」を表示する(ユーザーへの一貫性のあるUIを提供)
  • アイコンリソースはAPIなどで取得できる
  • 特殊フォルダパスはXPからは大きく異なる
  • APIや環境変数などから取得する
  • 救済措置としてジャンクションがある
  • ファイルやレジストリへの書き込みを別のパスへリダイレクトする機能もある→あくまで救済措置

Windows 7はすぐでは無いにしても、企業に導入されていくことは予想される為、仕事上でも対応が必要となってくるだろう。特に文字チェックはちゃんと把握しておく必要がある。

P1000149
懇親会のお品書き
P1000152
増えたよ

コメント

このブログの人気の投稿

VirtualBoxのUbuntu 18.04でNAT + ホストオンリーアダプター

VirtualBoxのVMにインストールしたUbuntu Server 18.04で、ネットワーク割当を「NAT」+「ホストオンリーアダプター」にする場合の設定についてメモ。 VMを作るとき、ゲストOSからインターネットに繋がって、かつホスト-ゲスト間でもつながる環境にしたいとき、VMのネットワーク割当は手っ取り早いのは「ブリッジアダプター」なんだけど、会社のネットワークでは都合がわるかったりするので「NAT」+「ホストオンリーアダプター」にしている。 アダプター1は「NAT」を選択 アダプター2は「ホストオンリーアダプター」を選択 ゲストOSであるUbuntuのネットワーク設定は、NATに該当するNICはDHPCで、ホストオンリーアダプターに該当するNICは固定IPとする。 Ubuntu 18.04ではネットワーク設定はNetplanで行う(Ubuntu 17.10から変わったようだ)。編集する設定ファイルは「/etc/netplan/50-cloud-init.yaml」 network: ethernets: {NATのNIC}: addresses: [] dhcp4: true optional: true {ホストオンリーアダプターのNIC}: addresses: [{固定IPアドレス}] dhcp4: no version: 2 ポイントは、ホストオンリーアダプターに該当するNICの固定アドレスを設定するときに、 ゲートウェイを設定しない こと。 以前に QiitaのVirtualBoxでNAT + Host-Only Network環境を構築する を参考にしていたのに、今回18.04で設定する際にすっかり忘れてはまってしまった。 IPアドレスは「192.168.0.2/24」のようにサブネットマスクも指定する。 NICに指定するデバイス名は以下コマンドで表示されるlogical nameが該当する。 > lshw -class network たいていは「enp0s3」「enp0s8」となるようだ。 設定ファイルを保存したら...

画像を切り取って保存する

画像処理において、画像の一部を切り出すことをトリミングというらしい。画像編集ソフトなんかにも大抵「トリミング」機能が実装されているだろう。 そんな画像を切り取る処理を.NETでやってみる。 .NETでは画像を扱う際にはBitmapクラスを使用する。BitmapクラスのCloneメソッドでサイズを指定すれば、そのサイズのBitmapオブジェクトができるので、それを保存すればよい。Cloneメソッドの引数はRectangle構造体とPixelFormat列挙体。 Rectangle構造体とは四角形の位置とサイズを表したもの。元画像の左上を(0, 0)として(X座標, Y座標, 幅, 高さ)の値でRectangle構造体を作成して渡す。PixelFormat列挙体はヘルプを見てもよくわからなかった。とりあえずは元画像の値をそのまま渡す。 例えば photo by tsukacyi のようなユッケの画像をトリミングするプログラムは以下のように書ける '元画像 Dim source As Bitmap source = New Bitmap("source.jpg") '切り取るサイズ Dim rect As Rectangle rect = New Rectangle(30, 80, 400, 320) '切り取り後の画像 Dim trimed As Bitmap trimed = source.Clone(rect, source.PixelFormat) '保存 trimed.Save("trimed.jpg") source.Dispose() trimed.Dispose() トリミング後の画像は以下の通り。

Microsoft.VisualBasic.dllを参照しない(その1)

VB.NETには、VB6に実装されていたCIntなどの型変換関数やLeft、Rightなどの文字列関数が使用できる。これらはMicrosoft.VisualBasic名前空間で定義されている。 個人的にはこれらはVB6との互換性の為に用意されたものと考えていて、あまり使用しないようにしている。名前付けのガイドラインにも沿っていないため、他の.NETなメソッドと並ぶと違和感があるというのもある。 注意:このエントリはVisual Basic 2005 Express Editionと.NET Framework2.0 SDK環境を元に書いています。 そんなわけでチーム開発の場合に、これら関数を使用しないよう、Microdoft.VisualBasic.dllを参照しないプロジェクトを作成しようと考えた。 Visual Studioのプロジェクトのプロパティから「参照」タブを開いてみると、すでに参照しているdllにMicrosoft.VisualBasic.dllが含まれていない。  下の一覧にImportされる名前空間が表示されているが、そこには含まれている。 Importされる名前空間からチェックをはずし以下のソースを書いてみる Public Class VisualBasicTest Public Shared Sub Main() Dim i As Integer = CInt("1991") System.Console.WriteLine(i) End Sub End Class だが、ビルドは通って実行もできてしまう。 逆アセンブリしてみる。 スタートメニューから「Microsoft .NET Framework SDK v2.0」→「Tools」→「MSIL 逆アセンブラ」を起動して、ビルドでできているexeを開く。すると、MANIFESTの部分を見てみると下記記述が見つかる。参照しているようだ。 .assembly extern Microsoft.VisualBasic { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) .ver 8:0:0:0 } きっとVisual Studioが...