小さすぎないことは良いことだ。

シンプルライフを送るうえでフルスペックなデスクトップPCはいかにも邪魔なので、ここのところノート用パーツで作られたNUCやら、HTPC用なのか何なのか微妙なATOM系オンボードでなんとかしようと思っていたが、結局自作PCはデスクトップ用パーツで組まないと納得できないという結論に達した。

●普通のATXデスクトップの性能に問題は無い。性能に問題は無いが、場所が無い。でかくて邪魔。

●小型デスクトップは確かに小さいが、mini-ITX専用品でもフルサイズ電源やハーフハイト5インチドライブが使えるようなものはそもそも小さくない。かといってSFX電源採用の小さいものはだいたいうるさい。

●小型デスクトップPCとしてのNUCは悪くはない。悪くはないが良くもない。特に性能が。しょせんノートパソコン用パーツ流用。

●Mini-STXも気になるが流通品種が現時点で多くない。既存のATX/microATXと互換が無いのも残念。

●スティック型PCや独自形状の超小型PC。小さすぎてダメになってるものの一例。汎用道具として期待すると確実に裏切られる。

これまで使ったオルタナティブデスクトップPCの数々↓

  • NUC DC3217IYE
    ノートPC版第3世代Core-i3搭載機種。中古で買った。Win XP対応、Win7、8も32/64ビット両対応と対応OSは豊富だが、USB 2ポートがUSB2.0という残念仕様。
  • Intel D510MO
    64ビット(Intel 64)対応最後のATOMデスクトップボード。VT-dとか対応してないし、メモリもDDR2で最大4GBと当時から非力。低消費電力だけどそれなりに熱くなる。DVIもHDMIもなくてビデオ出力はRGBのみの残念仕様。
  • Intel D2700MUD
    統合グラフィックが32ビットOSしか対応してない残念仕様。D510MOより熱くならず、心持早いのと、パラレルポート搭載と、DVI-D対応なのがちょっとうれしい。Windows Home Server 2011(64ビット版のみ)を入れて汎用ドライバでしか動かないディスプレイのことは潔く諦めるのが当時のトレンドだったが、Debian動かして長いこと使ったが、デスクトップ機としては諦めた。
  • Intel D2550MUD
    D2700の後継のはずなのにCPUまわりがスペックダウンという残念仕様。あんまり使わなかった。
  • ECS BAT-MINI
    安い、ちっちゃい、熱くならないと良いのにeMMC 32GB版しか手に入らない。Win10ライセンス付きだからと、セルフ開発環境を入れようとしたら残容量無くて無理ゲー。Debian入れて秘密のRAS/SSHサーバくらいが良いかも。リビングPCには非力。
  • Asus J3710-ITX
    Win7、8、10のどれでも32/64ビット全対応に、16GBメモリフル装備。J3710は8GBしか載らないはずなのに16GBとか変態。秘密のSSHサーバには良い。リビングPCとしては3世代前のデスクトップ版Celeron機より遅いという残念スペック。

大きすぎても邪魔、小さすぎても物足りない。今回はmini-ITXで組むことにした。これまでにもmini-ITXの組み合わせもいろいろ試して、だいたい「思ったよりでかい」か「うるさい」か「遅い」あたりで後悔してる。そこでNUC以上、デスクトップ未満を目標に次の仕様で構成を考えた。

  • デスクトップ用CPUを使う。
  • 汎用のmini-ITXかMini-STX。
  • 電源はACアダプタ式。
  • SSD必須。
  • BD、DVDなどODD非搭載。

で、組みあがった。

dq77-1 dq77-2

DC-DCコンバータ搭載でACアダプタ直結で動くインテルマザー DQ77KB 、古いCore i7 3770S、DDR3Lモメリ8GB×2、miniPCIeのSSDと2.5型SSDを組み合わせた。ケースは全く国内のレビューを見かけないREALAN(リーレン)E-H60というものを選んだ。このケース、中国製だが重すぎず、軽すぎず、バリもなく、剛性十分で質感良し。付属のネジも樹脂付きで設計者のこだわりを感じる。電源を組み込む場所も無くてpicoPSUっぽいコネクタ直挿し立基板の電源がオプションであるのみ。DQ77KBはATX電源は要らないのでこれのが好都合。リテールファンは高さから無理なので薄手のものを別途調達。E-W80なら載るかも。

標準設定やフルパワーにしても不安定にはならないが、やっぱりうるさいのでUEFI設定でめいいっぱいクロックダウンして本来の3.2GHzを1.6GHz動作に、電力を消費するHyperThreadingもオフ、GPU逓倍機も最低にしたらファンの回転を落として静かにしてもCPU温度が常時50度前後、最高65度程度で運用できるようになった。

雰囲気的にはでかいNUCという感じ。ACアダプタで動くとか、サイズ感の無い写真で見るとNUC派生のPCに見えるかも。実際はNUCよりも4倍くらい大きくて、Mac miniの旧モデルに近い大きさ。Coffee LakeでMini-STXが組めるようになるまでは、このデスクトップPCをメイン機にしよう。

IMG_4771

フルサイズATXデスクトップ、今回のmini-ITXデスクトップ、微妙なサイズのNUCデスクトップ。

ベンチマークしてみた。

dq77sata_full

この世代のi7マシンだとこのくらいか。設定を最強に振ったので内蔵グラフィックを使っている分には若干良い方かも。NUC6i7KYKが391081だったので確かに負けてるが、ALU・GDI・D2Dは勝ち、FPU・OGLは僅差、メモリDDR3LとDDR4は大差だが旧世代の割にはいい線いってると思った。

dq77sata_full_hw

ベンチマーク中の熱的性能もまあまあ良い感じ。NUC6i7KYKは同測定で90度に達した。

広告

プログラミングWindows95 with MFC も読んでみる。

前回のエントリで書いたWin95ペゾルド本よりも先に、しばらく放置していたMFCによるWindows95プログラミング』も読み終えた。これも20年以上前に出た本でWin95向け。この本の次の版がアマゾンではぼったくり価格になってて、今回読んだ第4版は931円とゴミ扱い。(2018/1に見たら4,800円に暴騰してますねー)

MFCProgWin95

「これはMFCに関する本であり、Visual C++の本ではない」!!

だが断る。今回はVisual C++を使う。※当時、Borland C++でOWL以外にもMFCって使えたような。

書籍ではWin95+Visual C++ 4.0を前提に書かれているが、今回はVMware上に構成したWindows 2000 + Visual C++ 6.0の環境を中心にさらった。Visual Studio 2017でも一応MFCサポートはあるのでペゾルド本のWin32 SDKほどマゾっぽくはならなくても済んだかもしれない。

プログラミングWindows95』と装丁は似ているが中身はぜんぜん違ってて、Visual C++に付属するクラスライブラリMicrosoft Foundation Classライブラリの解説書。Visual C++ のIDEの使い方の解説本ではないというのがポイント。ただIDEの解説こそを含んでいないが、サンプルのメイクファイルはVSが吐き出したものを使用しているようでペゾルド本のようにメイクファイルから手書き、というスタイルではないあたりも異なる。(手書きで最低限のメイクファイルを作るとクラスウィザードがきちんと動かない。クラスビューワはなんとなく動く。)

この本でも一応目玉というか実用的サンプルとしてMyWordというリッチテキストビューを主要コンポーネントにした簡易ワープロが掲載されているが、Win32SDKと違って非常に簡単に実装ができてしまう。今回はIDEを使ったのでそれこそサクっとできてしまうが、コードを追いかけるうえではやはり本文くらいの解説があったほうが理解は早い。

myword

本書はペゾルド本と並んでWindowsプログラミングを行ううえで、ぜひとも読んでおきたいもののひとつだし、読み終えてみるとペゾルド本よりだいぶやさしい内容であると分かる。

VC++のIDEを使って本書を読み解くとMFCを縦横に扱う感覚が身について、手書きの写経も良いがIDEを使うのも悪くないなと思えるようになった。

プログラミングWindows95 をVS2017で。

だいぶ前に買って放置していた『プログラミングWindows95と『MFCによるWindows95プログラミング』をようやく読み切った。2冊合計で2272ページ。

Progwin95andfMFC.JPG

プログラミングWindows95はWindowsプログラミングの最良の書のひとつであるペゾルド本の第4版。『プログラミングWINDOWS3.1』を学生の時に読んでいたのであまり読む気が起きなかった。Win32SDKの開発手法についてはだいたい知ってるし、そのまま写経してもつまらないので、当時の最新鋭Win95+VC4用サンプルを現在最新のWin10 x64+Visual Studio 2017で動かしてみるという明らかにマゾっぽいコースにチャレンジ。定評のある読みやすい本が地獄と化す。

何に苦しむことになるか。

・文字コードが異なる
内部の文字コードがWin95ではMBCS、WinNT系ではUnicodeと異なっていてWin32 SDK自体は一応マクロで切り替わるようになっているが、それを利用するコードや環境もその辺を意識しておく必要がある。基本的にはcharがWCHAR、char*がPWSTRになる。文字化けだけならまだましな方で、string.hで宣言されてるstrcpy系がドはまり。本文中ではstrcpyだけどUnicodeはwcscpyに変更で、かつ後で述べるSDLでさらにハマる。

・Win95とWin10で異なる内部構造
しかも動作環境はWin10でx64。文字コードの他にもメモリ管理やDLL管理その他細かいところが異なっててそのままでは動かないサンプルも。VS2017も既定値はUnicode。文字コードに注意していれば動くものは多いが、特にメモリマップトファイルを使う第19章のSTRPROGは全く動かない。小手先の修正では動かせなくてSTRPROGだけはVS2017版が未完成となった。(本文中でも1062ページでWindows NTでは機能しないと解説されている。)

・VS2007のSDLチェックが有効
SDLチェックが入ってくると文字コードの変更でwcscpyしたものが、さらにwcscpy_sにしないとエラー。wcscpy_sでは戻り値すら異なっている。VS2017ではSDLチェックは既定値でオンなのであえて外さないプレイ。

・VS2017のツールオプション
VS2017についているコマンドラインツール類のオプションもVC4から変わってしまってるのでメイクファイルも修正が必要。LIBC.LIBがなくなっているのでLIBCMT.LIBに置き替える。リンカオプションは簡単になっていて /subsystem:windowsを使うとうまくいく。

・VS2017のWindowsデスクトップアプリケーションのやる気の無さ
新しいプロジェクトのスケルトンを生成させるとコンパイル時にワーニングがでるし、文字化けもする。.cpp、.hをBOM付きUnicodeで、.rcをANSIで保存しなおすととりあえず直る。Win32SDKヘルプがまともに参照できなくて、基本的に英語なのはともかく、.Netなヘルプが出てきたり。やる気なさすぎ。今回はこの厄介なスケルトンを本のサンプルにあわせて変更するという行為を行う。

・その他のレギュレーション
付属CDからのコピペは禁止。そして写経ではないのでVS2017のIDEの機能をフルに使うことにする。本書の冒頭部分20ページに書かれているとおりIDEの解説は一切載っていないし、実際にVS2017が吐き出すWindowsデスクトップアプリケーションのスケルトンのコードを理解するためには、この本の全1150ページ中590ページまで読む必要がある。でもIDEの力を借りれるとそれ以上に効率よくサンプルを消化できるのではないかと思う。プログラミングWINDOWS3.1を読んだときは実際にメモ帳の手書きプロジェクトで通したし、MSC/C++7.0のクソPWB(IDEっぽい見た目のテキストエディタ)ではそれでも良いと思ったが、今それをやり直す気力は起きない。

※実は虫食い的にVMware+Win2000+VC6も使った。こちらのほうが明らかに変更箇所は少なくて、ほぼ問題なく動く。

 

poppadx64

この本の目玉のサンプル、テキストエディタのPopPadをWin10+VS2017で完成させると、64ビット、Unicode対応のテキストエディタに。

そんなこんなで苦労はしたが、それなりに得られたものはあった気がする。20年も前の本だが、今の環境でもだいたい通用してしまうというのはなかなかすごい。Windowsでプログラムを書く人ならこのシリーズは一読の価値はある。でも前提としている環境はそろえた方が楽だ。

2018/1に確認したらアマゾンではWin95対応の第四版がぼったくり価格になってた。上下巻に分かれてしまったが第五版のがまだ定価より安い。

Windows 10 Enterprise を Fall Creators Update してみる。

なぜか継続的に高アクセス数を記録している Windows Enterprise を Creators Update してみた。のエントリ。これの次のメジャーアップデートとなる1709が昨晩リリースされた。VLSCを確認すると1703のときは後回しだったVL版のEnterpriseが、今回の1709は一般向けと同時に公開されている。

1703のときはバカ正直に自動更新がかかるのを待ってて、いつまで経っても更新がかからなかったので、今回は同じ轍は踏まない。速攻ISOをダウンロードして人柱となる。

→もう一台のEnterpriseでWindows Updateを試したら1709が更新に出てきて、でかいファイルがダウンロードされて「更新して再起動」しても更新できずに失敗。やっぱりISOで更新するのが正解。

windows10vl1709

CDNからの取得は3.7MB/secそれほど遅くはない模様。推定20分程度。ファイルサイズが少しRTMより大きくて、1703より小さい。ファイル名は SW_DVD5_Win_Pro_Ent_Edu_N_10_1709_64BIT_Japanese_MLF_X21-50165.ISO

ISOがダウンロードできたらDVDに書き込む必要も無く、そのままマウントしてsetup.exeを実行。

windows10vl1709-2

普通に始まった。

・・・

なんか「インストールに失敗しました。」とか出てきた!!
びっくりしたから途中のスクリーンキャプチャ撮るの忘れた。

気を取り直してやりなおし。インストール時のオプションで「更新をダウンロードするか」と聞いてくるので既定値の「する」から「しない」に選択を変更したらうまく進んで終わった。

SBなんたら.dllがエラーになった以外は特に問題なさそう。プロパティを確認すると1709に更新されたこと、窓のロゴがなくなったこと、デバイスIDが表示されていることが気になった。→SBなんたら.dllのエラーはSound Blaster PX(USB接続のサウンドアダプタ)のドライバだったのでいったん削除してから再接続したら出なくなった。

windows10vl1709-3.PNG

それと「お使いのPCは監視され、保護…」って書いてある。

お使いのPCは監視され、

お使いのPCは監視され、

お使いのPCは監視され、

;゚Д゚)エエー

 

※このメッセージが意味するのはWindows Defender のステータス表示だが、「システム」のプロパティで出されると別の意味に思えてくる。

インストールが超簡単になったLinux Services for Windowsがどうしようもなく便利すぎるレベル。macosで動かすsshも決して悪くはなかったが、WSLで動くフル構成のUbuntuやsuseを見たら単にsshを動かすだけであっても絶対WSLのがいいって思うハズ。Linux(SystemV風)とは若干距離があるmacのBSD Unix(しかもデフォのツール類は古い)と、WSLのフルに近いLinux環境(apt-getとかで更新もできる)の比較だったら後者のが何かと都合がいい。それにフリーのXサーバ VcXsrvと組み合わせたら、過去最高に便利なWindows環境になった。本当はExceedとかASTEC-Xあたりが欲しい。

端末エミュレータ(ターミナル)とsshが初期状態で使えるだけで「macはディベロッパー向け」とか言っちゃってる層はWindowsでWSLしたほうが幸せになれると思った。

Windows 10 のデジタルライセンスを移動。

1世代前のATOM系PentiumなMini-ITXのデスクトップを3か月ほど使ったものの、操作のレスポンスがやっぱりいまいちで第3世代Coreが使えるMini-ITXのマザーボードをオークションで若干怪しい中国系商社から買い、中身を入れ替えることにした。

一番微妙だったWin10のライセンス移行、次の手順で再認証無しに移行できた。

  1. 対象のライセンスは別のボードでWin7Ultimate→Win10Proに無償アップグレードしていたもの。MSアカウントの紐づけがある状態。
  2. 別のボードからATOMボードへ交換時には移行ツールで紐づけを変更した。電話認証なし。その後数ヶ月使用。
  3. ATOMボードで使っていたSSDを新しいi7マザーへ接続。
  4. セーフモードとかでドライバを更新して、なんとか起動してオンライン状態に。
  5. システムのプロパティで確認するとライセンスが通った状態。
  6. i7マザーからSSDを外して、別のmSATA SSDを接続してWin10Proを新規インストール。
  7. セットアップ後、MSアカウントでログオン、オンラインにするとライセンスが通った状態となっていた。この時点で元のパーツはケースを除いて全く使用していない。

これでライセンスの移行が完了。ポイントは3~4のところで、ライセンスが通っている状態のパーツはSSDしかないのに、ライセンスはそれに乗っかった状態で新しいi7マザーに取り憑いたことになる。

世代も構成も個体も全く違うボードにSSDを載せ替えて再インストール無しに起動できたというあたりの運が良かった。MSアカウントに紐づいているというのも重要なのかもしれない。

無事Win10も正規ライセンスが引き継げたし、ATOM系と違って旧世代でもデスクトップ版i7だけあって操作感も上々。いい感じ。