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

CLR/H第40回勉強会に参加してきた

CLR/Hの第40回勉強会に参加してきた。

  1. ハードウェア情報アプリケーションの開発 ~茨の道の歩き方~
    • Crystal Disc Infoを作った
    • Crystal Markも作った
    • Crystalシリーズ作った
    • 低レイヤープログラミングは楽しい
    • ベンチマークソフト
    • 各ハードウェアのテストモジュール書くのは大変
    • スコアの算出も大変
    • コンパイラによってもスコアが変わってくる
    • ディクスベンチマーク
    • 単位MB/sは、1024*1024と1000*1000とがあるので注意
    • ダイレクトアクセス型のディクスベンチマークでOSあるディスクを書き込みテストは自殺
    • CPU
    • ユーザーモードとカーネルモードがある。
    • MSR:マシン固有レジスタ
    • RDMSR(読み込み)とWRMSR(書き込み)
    • ユーザーモードでRDMSRすると一般保護例外
    • カーネルモードで無効なアドレスを読むと、Blue Screen of Death
    • Blue Screen of Death専用マシンを用意
    • ディスク情報
    • S.M.A.R.T.:ハードディスクの故障を予測
    • 最近のHDDにはたいてい搭載されている
    • USB接続のHDDでは見れない
    • ライブラリWinRing0も作った
    • GUIの多言語にも力を入れている
  2. 遺伝的アルゴリズム ~ことはじめ~
    • 数学ガール良いよね
    • 遺伝的アルゴリズム:1975年に提案された
    • 生物の進化をヒントにしている
    • メタヒューリスティクス:汎用的に利用できるある程度正解に近い解を得る方法
    • 「生物のヒントにヒントを得た、汎用的に利用できる、定式化された形で表現したもの」
    • 「初期集合」「評価」「選択」「交叉」「変異」
    • 100%最適な解が得られるとは限らない
    • 遺伝子の表現は通常「0」と「1」で表現する。整数の配列でもかまわない
    • 場合によっては、全く最適ではない解に収束する場合もある
    • 初期集合や交叉・選択を操作することで、より効率的に最適解を得る事ができる

低レイヤープログラミングは面白そうだ。GUI多言語の話はセッションではしなかったが、結構力を入れているようでP1000110GUIの仕組みも面白い工夫がされているそうだ。見た目は重要。 これほんと。

遺伝的アルゴリズムでは、最初難しくてついていけてなかったが、最後のDemoを見て何とかイメージつかめた。アルゴリズムについて真剣に話を聞いたのは初めてだったかも。

コメント

このブログの人気の投稿

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

画像処理において、画像の一部を切り出すことをトリミングというらしい。画像編集ソフトなんかにも大抵「トリミング」機能が実装されているだろう。 そんな画像を切り取る処理を.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() トリミング後の画像は以下の通り。

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」となるようだ。 設定ファイルを保存したら...

パソコンのパーツを交換した 2025

前回 は2019年に交換していた。約6年。 Windows11にアップグレードしようとしても対応していないパーツだったのでずっとできないでいた。そろそろWindows10のサポート期限も迫ってきたので、まずはWindows11対応できるパーツを、ということでCPUとマザーボードを交換。 あとついでにケースも変えた。ケースはそれこそ自作PCを始めたときに購入したものなので20年お世話になった。ありがとうございました。 新しいケースでは電源の位置が下になり、SSDやHDDに電源つなげつつ光学ドライブにつなげるには長さが足りなかった。同じケーブルがあったはずなのでけど見つからず延長ケーブルを購入して接続。 最近のケースは片方がアクリルになっていて中が見える。でもこのPCは足元左側に設置するから普段は見えない。まぁいいか。 CPU:Intel Core i5-14400 マザーボード:ASUS PRIME B760M-A D4 グラフィックボード:ASUS GeFource GTX1050Ti メモリ:DDR4 電源:Cooler Master V650 BD:Pionieer BDR-209 SSD:SanDisk SDSSDA 240G SSD:SanDisk SSD PLUS 240G HDD:WD Blue 7200PRM 1TB ケース:CoolerMaster MB400L Windows11のインストールはちょっと苦労した。 クリーンインストールだと認証できるか不安だったので、いま起動しているWindows10上からアップグレードしたかった。 まずは一番手軽なWindows Updateによるアップグレード。開始してから時間かかるから放置していたらWindows10の画面に戻っていた。失敗したようだ。 今度はWindows 11 インストール アシスタントを利用。インストーラをWindows10上で実行するとアップグレードが始まった。けどこれも失敗。ドライバが云々のエラーメッセージが出ているが調べても解決策みつからず。 観念してクリーンインストールすることにした。調べてみるとMicrosoftアカウントと紐づけていれば、認証は問題なく通るようだ。