2015/12/05

RADEONのドライバがバージョンアップされたがゴミが残る

RADEONのドライバの新しいやつが出たからバージョンアップしろとメッセージが出やがるから、とりあえずOKしておいたら、前のCatalyst Control Centerの残骸がいろんなところに残ったままになった。

まずはタスクマネージャのスタートアップ。


一番最初にこれで気が付いた。

Program Filesの下を見ると、なんかいる。





スタートメニューにも残っている。


バージョン番号の表示は同じように見える。


何なのだろうか?

画面をとるのを忘れたが、「プログラムと機能」の一覧にはCatalyst Control Centerは残っておらず、アンインストールすることはできなかった。

バージョンアップして製品名を変えたから、とりあえずインインストーラだけアンインストールしておきました、ということなのか?

「問題を報告」と日本語で書かれているところがあるから、なんとなくクリックしてみると、こんなページ飛ばされる。



アメリカ人以外は人間ではないという、非常に強い意志と主張を感じる。黄色い猿はお呼びではないようなので、これはこのまま何もしないで閉じる。

とりあえず仕方がないから、いったんDriver Fusionあたりを使ってドライバを全部消したうえで入れなおしてみた。





うん、まぁ、なんかよくわからんが、ごみは消えたのだろうか?

2015/11/17

Windows 10 TH2が来たけど設定が消えた

Windows 10 TH2とかいうアップデートが入れられたのばいいが、いくつかの設定が勝手に変えられて腹が立つ。

まず、文字のサイズが小さくなっている。解像度が高くて字が見えないから、文字サイズを200%にしていたのに、それが勝手に100%に戻された。でもって、なんか勝手に高速スタートアップが有効にされている。

後続スタートアップをやられると、起動に要する時間なんてほとんど変わらないくせして、電源を落とすときには5分ぐらいかかるようになるから困る。こんな害悪ばっかりまき散らす機能を勝手に有効にするな。馬鹿が。

2015/11/08

WiXの本

PT3で録画したTSファイルをネットワーク経由でダウンロードして、出先のPCで再生したい。しかし、Soft-EtherのVPNでつないでいるとそもそもオーバーヘッドが大きいうえに、TCPコネクションが1本だと回線帯域を上限まで使い切ることができない。

ならばということで、自分で都合のいいファイル転送をおこないようなソフトを実装してやれということで、作り始めて早1年半。いつになったらできるのか。というか、もうBlu-ray diskレコーダを自宅から持ってきて、かつ、BSアンテナをベランダにつけてやったから、TSファイルを転送するなどという強引なことをする必要性はあまりなくなってしまったのだが。

まぁそれはいいとして、ぼちぼちソフトの概要が見えてきたであろう頃合いでもあるし、インストーラを作ろうかと考えている。簡易なものでお茶を濁しておくのもいいかもしれないが、せっかくだからWiXで作ってやろうと思って、こんなん買ってみた。



Wix 3.6: A Developer's Guide to Windows Installer XMLなる本だ。タイトルなげぇな。というか、日本語版ないし。

ガチで洋書だし、まぁこれぐらいなら何とかなる。なると思う。たぶん。きっと。おそらく。

とりあえず、冒頭20ページぐらいまで読み進めてみたけど、今のところ何とかなってる気がする。たぶん。

2015/10/11

SSDを買い替えた

とりあえず、PCが起動しない以上、ディスクは買わねばならないので、あまり逡巡している暇はなく、とりあえずSanDiskのSDSSDXPS-240G-J25にしておいた。



240GBを3つ、RAID1E構成で実効容量が360GB弱である。

240GBだとしても、ほかにもう少し安い奴もあったのだが、いかんせん、壊れたから買い替えるのだと思うと、多少は丈夫そうなやつにしておいたほうがいいかと思い、ちょっと値が張るやつを選んでみた。

しかしだ、ぶっちゃけて言えば、たぶん中身は安いやつも高いやつも同じなのではないか。メーカーのカタログやチラシにはいろいろ書いてあるようだが、しかし、何らかの差があるという証拠はないし、見てもわからないし、個人が大規模な統計調査をやることもできないし。たぶん、違いは利益率だけのはずだ。

それに、10年保障といったところで、それは単にメーカーが多少予備を多めに持っておきますと言っているだけのことであり、そもそも、10年たってから壊れたから保障しろと言ってくる奴はそう多くないとも思われし、たぶん、保障期間にしても、とりあえず言ってみたというのが実態だろう。

要は、気持ちの問題ということだ。多少高かったのだから、きっといいものなのだろうという、あれだ。それに踊らされて、余分な利益を貢いで、何も知らない消費者は勝手に一人で夢を見て幸せになるという奴だ。

プラシボでも信じて飲めば効果があるというのだから、俺も、貢いだ利益分だけのご利益はあるものと信じて、しばらくは使って様子を見てみることにしよう。

2015/10/04

RAIDカード


多分SSDの寿命でメインのマシンを起動することすらできなくしてしまったわけだが、さてどうしたものか。

とりあえず、代えのSSDを買おうと思って自宅の近くにあるPCパーツを売っていそうな店を何件か回ってみたものの、やっぱり田舎では妥当なものが妥当な値段では手に入らない。よさげなものが売っていたとしても、値段が高いとか数が少ないとか、そんなのばかりだ。

仕方がない。ここは一旦気持ちを落ち着けて、ストレージをどうするか冷静に検討することにしよう。

問題はSSDの構成とRAIDカードである。どれぐらいの容量のものを何枚買うのかと、RAIDカードを入れ替えるのか否かである。

厄介なのが今のRAIDカードなのである。今使っている奴はAdaptec RAID 2405だ。強力なハードウェアRAIDの代物で安定して動作してくれるいい奴なのだが、いかんせん古い。SATAの3Gbpsにしか対応していないし、PCIeもgen1(?)×8レーンである。SSDが6Gbpsなのに1つあたり3Gbpsに制限されてしまうというのは、実用上問題ないのだろうが、気分がよくない。

(そういえば、UEFI対応とかどうなっているのだろうか? 何にも考えないでもX99のM/BでWindows 10を入れて使っていたが、認識しないとか何とかそんな問題は一切なかったが……まさかSSDが壊れたのはそのせいか?)

買ってから大分時間がたっていることも気になる。今のところ元気に動いていてくれているのだが、すでに買ってから5年半になるらしい。RAIDカードを買った、とこのblogに書いたのが2010年3月28日である。時間がたつのは早いものだ。すでに保障も切れてると思うと、いつ壊れてもおかしくないと思われる。

ではどうするのか。RAIDカードとSSDを合わせて買い換えるのか。とりあえずSSDだけ買って、少し金が入るのを待ってからRAIDカードを買うのか。あるいはもう諦めて、シングル構成にしてしまうか。

経済的問題も大きいが、機能的な可・不可もあるし、もう少し考えることにしよう。

2015/10/03

SSDが寿命かもしれない

この間、RAIDが壊れたとか言われて、なんとなく再構築したらそのままうまく動いたから、なんかいけるかなぁ、と思っていたけど、やっぱりだめらしい。今日、バックアップを取ろうと思ったら、ディスクにエラーがあるとか言われた。chkdskをやったら回復したとか言われたが、そんなことを言われても信用できないし、というか、たぶんSSDの寿命なのだろう。

買った履歴代わりにこのblogを書いているわけだからと思って見返してみると、2012/09/07にシステム用のHDDをSSDに変えたと書いているから、もう3年は経過していることになるわけだ

そんなにSSDを酷使した覚えもないのだがしかし、OSを入れ替えたり、RAIDの再構築も、実のところ何回かやっていたり、あるいはこんなことをやってみたりもするわけだから、そりゃまぁ擦り切れもするのだろう。

しかし、このタイミングで交換となると、経済的に苦しい。

2015/09/23

冷却の構成を変えてみた。ファンコンはいらんかもしれん

なんか知らんが、M/Bでかなり細かくファンを制御できる。

CPUファンと、ケースファンの1~3が、CPUの温度かM/Bの温度に従って、何度になったら何パーセントで回るのかを設定できる。あともう一個、Power Fanというコネクタもあるが、これは常時100%で回り続けるらしい。

ということで、ケースファンはファンコントローラーにつないでいたが、M/Bで制御するように変えてみた。

というか、今使っているファンコントローラーはAINEXのFM-08である。



これにした理由は単に値段が少し安かったに他ならない。しかし、なんかジリジリ音がするし、ファンの回転数が大体500rpmを下回ると表示がむちゃくちゃになるし、あまりいいものではない。

まず、今までの構成。ちょっと古いが、前の絵を見つけた。



拡張ボードの構成がこの当時から変わっていて、グラフィックがQuadro FX 580ではなく今はRADEON R9 280Xになっている。それ以外のファンの構成はそれほど変わっていない。

で、今の状態。



わかりにくいが、ファンの配置自体はさして変わっていないが、X58のチップセットを冷やすためにつけていた6cmのファンはなくした。どうもいらなさそうだから。

写真で見ると全く分からないが、配線を変えている。上にある大きなファンやリアファンは、ケース裏から伸びているファンコントローラーの電源線につないでいたのをやめて、M/Bに直接さすようにしている。とはいっても、トップファンの右側(要は正面側)の奴だけが今でもファンコントローラーにつないだままになっている。

こいつが最近老朽化してきたらしく回すとカリカリと音がしていやだから、必要な時だけ回せるように今でもファンコンにつないだままにしている。

何とかしてこの大きいやつを交換できればファンコントローラーを排除できるのだが、どうにかならないだろうか。

2015/09/21

PCをリプレースした。

永らくこのblogも放置していたが、最近大きくPCの構成を変えたから、ここで備忘録的にその事実を記載しておく。まぁ、チラシの裏というやつだ。


まず、GIGABYTEのBRIX GB-BXCE-2955に500GBの2.5インチHDDをUSB接続で使用していたのだが、内蔵SSDを512GBのやつに交換して、それを外すことにした。具体的には、ADATAのSP310 64GBから、SunDiskのUltra II 512GBに変えた。

これにした。



いつもぶら下がっていたHDDがなくなってだいぶすっきりした。



まぁ、外観を曝したところで、内蔵のSSDについては何もわからないが。

しかし、当世の流行りはM.2とかいうやつで、mSATAの特に容量が大きな奴は手に入りにくくなっているらしい。秋葉原の店をいくつかまわって見てみたが、そもそも容量が少ない128GB程度のやつしか置いてないか、売り切れになっている店がおおく、512GBより大きいやつは数が少ないようだった。その代わりにM.2のSSDが大々的に売り出されていた。時代の流れというものなのだろう。

でもって、メインのPCもパーツを一気に入れ替えた。CPUとメモリとマザーボードだ。

CPUはCore i7-5930K、M/BはASRockのX99 OC Formula、メモリはG.SkillのRIPJAWS4とかいうやつを32GBだ。メモリはDDR4-2666の8GBが4枚という構成だ。

ついでに、前の構成を書いておくと、CPUがCore i7-920、M/BがASUSのP6T、メモリがCrucialのBALLISTRIXというやつが24GB分(DDR3-1866 4GB×6枚)だ。

意味はないが、絵だけ曝しておく。

・CPU



・マザーボード



・メモリ



すでにSkylakeが発売されてはいるのだが、出たばかっかりのものはCPUであれ何であれバグがある可能性もあるし、そもそもコケンの問題からミドルレンジは買わないことにしたから選択肢にはなかった。残るは5960Xか5930Kか5820Kのいずれにするのかだが、悩んだ末に5930Kにした。クロック高いしな。まぁ、Haswell-EではなくBroadwellやSkylakeの上位版?が出るまで待ってもよかったのかもしれないが、そんなことを言っていたらいつまでたっても買えないし。

で、ほかのPCパーツは何も変えていない。Adaptec RAID 2405に、Intelの180GBのSSDを4つつけてRAID 1Eで動かしており、グラフィックはXFXのRADEON R9 280Xを使用している。いずれも大きな問題は起きていない。

問題はWindows 10にして画面のデザインが気に入らないことか。

2015/04/30

数字をカンマ区切りの文字列に変換する方法

書くこともないので、ちょっと調べたことだけ書いておく。

ロケールにあわせて、数値をカンマで区切って表示することを考える。

難しいことを何も考えなければ、1の位から順番に数字に変換していって、3桁毎カンマを入れてやればいい。例えばこんなロジックが考えられる。

CString NumberToStr( long v )
{
  TCHAR buf[64] = { 0 };
  int i = 0;

  if ( v == 0 )
    return _T( "0" );

  while ( v > 0 ) {
    int d = v % 10;
    if ( i % 4 == 0 ) {
      buf[ 63 - i ] = _T( ',' );
      i++;
    }
    buf[ 63 - i ] = _T( "0123456789" )[d];
    v = v / 10;
    i++;
  }
  i--;
  return CString( &( buf[ 63 - i ] ), i );
}

効率の善し悪しは別として、とりあえず日本とアメリカであれば、多分これでも大丈夫だろう。だが、それ以外の地域だったらどうなるのか? 何でも、2桁毎に切りたい地域とかもあるらしい。そうした場合、上記のロジックでは対応できない。

かといって、いろいろなパターンを全て自分で実装して、アプリケーションの設定や定義で変更できるようにする、というのも明らかにおかしい。どう考えても、システム全体のロケールの定義に従って変換しなければならないはずである。

具体的に言うと、Windowsであれば、コントロールパネルの「地域と言語」での設定に従って変換するようにしたい。



恐らく、この定義に従って自動的に変換してくれるような機能があるはずだ、ということで調べてみると、GetNumberFormatExというWindowsのAPIが使えそうである。具体的には、こんなロジックになる。

TCHAR buf2[256] = { 0 };
GetNumberFormatEx(
  LOCALE_NAME_USER_DEFAULT,
  0,
  _T( "1234567890123456789" ),
  NULL,
  buf2,
  _countof( buf2 )
);

上記を実行すると、buf2には以下のような値が設定される。

"1,234,567,890,123,456,789.00"

しかも、「地域と言語」の設定を以下の様にしてやれば、



こういう結果になる。

"12,34,56,78,90,12,34,56,789.00"

期待通りの挙動である。しかしながら気に入らないのは小数点と00が付いていることである。小数点以下の数値が存在するのであればまぁこれでもいいのかもしないが、明らかに整数を変換したい場合には都合が悪い。

ならばピリオド以降の文字を切り捨てればいいではないかと考えたくなるが、それは浅はかな考えである。なぜならば、小数点がピリオドである保証はどこにもないからだ。現に、「地域と言語」の設定画面で、小数点として使用する文字をユーザが指定することができる様になっている。

ではどうするのか。GetNumberFormatEx関数の引数にある、NUMBERFMTという構造体を指定してやれば良さそうな気がする。この構造体は以下の様に定義されている。

typedef struct _numberfmt {
  UINT   NumDigits;
  UINT   LeadingZero;
  UINT   Grouping;
  LPTSTR lpDecimalSep;
  LPTSTR lpThousandSep;
  UINT   NegativeOrder;
} NUMBERFMT, *LPNUMBERFMT;


各メンバには、以下の値を指定しろと言う。

NumDigits : 小数点以下の桁数。LOCALE_IDIGITSで指定されるロケールの情報と同じ。
LeadingZero : 整数桁に0を付けるのか否か。LOCALE_ILZEROで指定されるロケールの情報と同じ。
Grouping : 整数桁の区切り方。0~9の値、もしくは32が指定できるという。
lpDecimalSep : 小数点の文字
lpThousandSep : 整数桁の区切り文字
NegativeOrder : 負の値の形式。LOCALE_INEGNUMBERで指定されるロケールの情報と同じ。

だったら、NumDigitsに0を指定してやれば、小数点以下の0が表示されずに済むのではないか、と思われる。つまり、

nbf.NumDigits = 0;
nbf.LeadingZero = 0;
nbf.Grouping = 3;
nbf.lpDecimalSep = _T( "." );
nbf.lpThousandSep = _T( "," );
nbf.NegativeOrder = 1;
GetNumberFormatEx(
  LOCALE_NAME_USER_DEFAULT,
  0,
  _T( "1234567890123456789" ),
  &nbf,
  buf2,
  _countof( buf2 )
);

としてやればいいのではないかと。そうすると、以下の様な結果が得られる

"1,234,567,890,123,456,789"

ここまでは期待通りである。しかし、NumDigits以外に固定値を設定しているのが気に入らない。これでは、システムの設定が利用されなくなってしまうので本末転倒である。だから、GetLocaleInfo関数を用いて、1つずつ設定値を取得してきて、上記の構造体に値を設定してやる。そうすると、以下の様になる。

NUMBERFMT nbf;
TCHAR DecimalSep[4];
TCHAR ThousandSep[4];
TCHAR NegativeOrderVal[4];

memset( &nbf, 0, sizeof( nbf ) );
// 小数点で使用する文字列を取得する
GetLocaleInfo(
  LOCALE_USER_DEFAULT,
  LOCALE_SDECIMAL,
  DecimalSep,
  _countof( DecimalSep )
);
// 桁区切りで使用する文字列を取得する
GetLocaleInfo(
  LOCALE_USER_DEFAULT,
  LOCALE_STHOUSAND,
  ThousandSep,
  _countof( ThousandSep )
);
// 負数の表示方法を取得する
GetLocaleInfo(
  LOCALE_USER_DEFAULT,
  LOCALE_INEGNUMBER,
  NegativeOrderVal,
  _countof( NegativeOrderVal )
);

nbf.NumDigits = 0;
nbf.LeadingZero = 0;
nbf.lpDecimalSep = DecimalSep;
nbf.lpThousandSep = ThousandSep;
nbf.NegativeOrder = _ttoi( NegativeOrderVal );

ここまではいい。問題はGroupingに指定する値である。GetLocaleInfo関数の仕様をいろいろと調べても、ここに指定する値を取得する方法が解らない。LOCALE_SGROUPINGという値を指定してGetLocaleInfo関数を呼び出してやると、桁区切りの方法を取得することができるらしいのだが、その結果得られる値は、セミコロンで区切られた文字列なのだという。

ドキュメントには、以下の様な例が記載されている。
指定値結果
3;03,000,000,000,000
3;2;030,00,00,00,00,000
33000000000,000
3;230000000,00,000

しかしながら、NUMBERFMT::Groupingのデータ型はUINTである。つまり、このセミコロン区切りの値から、UINTに何らかの方法で変換してやらなければならない。ということである。ではそもそもGroupingには何を指定すればいいのか? 試してみた。

Groupingの値結果
0"12345678901234567890"
1"1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0"
2"12,34,56,78,90,12,34,56,78,90"
3"12,345,678,901,234,567,890"
4"1234,5678,9012,3456,7890"
5"12345,67890,12345,67890"
6"12,345678,901234,567890"
7"123456,7890123,4567890"
8"1234,56789012,34567890"
9"12,345678901,234567890"
10"1234567890123456789,0"
11"1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0"
12"1,23,45,67,89,01,23,45,67,89,0"
13"1,234,567,890,123,456,789,0"
20"123456789012345678,90"
21"1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,90"
22"12,34,56,78,90,12,34,56,78,90"
23"123,456,789,012,345,678,90"
30"12345678901234567,890"
31"1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,890"
32"1,23,45,67,89,01,23,45,67,890"
100"1234567890123456789,,0"
101"1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,,0"
102"1,23,45,67,89,01,23,45,67,89,,0"
103"1,234,567,890,123,456,789,,0"
120"12345678901234567,89,0"
121"1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,89,0"
122"1,23,45,67,89,01,23,45,67,89,0"
123"12,345,678,901,234,567,89,0"

解りにくいが、どうやらGroupingの値の上位桁から順に、下位桁から何桁ごとに区切るのかを指定するらしい。だから例えば、123を指定した時には、下から1桁(=0)、2桁(89)、3桁(=567)のところでカンマがおかれている。また、Groupingの値の1の位が0の場合は上位桁が区切られなくなり、0以外であれば、その桁数で最上位桁まで区切られることになる。

だから例えば、Groupingに2468を指定した場合は"12,34567890,12345678,901234,5678,90"という区切られ方になり、3450を指定した場合には"123456789012345678,90123,4567,890"になる。

結局、GetLocaleInfo関数にLOCALE_SGROUPINGを指定して得られる値とどう違うのか。どうも、セミコロンが存在することと、末尾の0の扱いを除いては、数字の指定の仕方は同じであるらしい。

まず、セミコロンは単純に無視すればいい。また末尾の0であるが、これは、LOCALE_SGROUPINGの場合には末尾に0が存在するとその1つ前の値が繰り返す事を意味すると規定されている。つまり、末尾の0の扱いがLOCALE_SGROUPINGとNUMBERFMT::Groupingで完全に逆である。

だから、以下の様な変換となる。

LOCALE_SGROUPINGの値Groupingの値
3;03
3;2;032
330
3;2320

ここまで解れば、ロジックに落とすことが可能である。全部ひっくるめて、以下の様になる。

memset( &nbf, 0, sizeof( nbf ) );
// 小数点で使用する文字列を取得する
GetLocaleInfo(
  LOCALE_USER_DEFAULT,
  LOCALE_SDECIMAL,
  DecimalSep,
  _countof( DecimalSep )
);
// 桁区切りで使用する文字列を取得する
GetLocaleInfo(
  LOCALE_USER_DEFAULT,
  LOCALE_STHOUSAND,
  ThousandSep,
  _countof( ThousandSep )
);
// 桁の区切り方を取得する
GetLocaleInfo(
  LOCALE_USER_DEFAULT,
  LOCALE_SGROUPING,
  Grouping,
  _countof( Grouping )
);
// 負数の表示方法を取得する
GetLocaleInfo(
  LOCALE_USER_DEFAULT,
  LOCALE_INEGNUMBER,
  NegativeOrderVal,
  _countof( NegativeOrderVal )
);
// 小数点で使用する文字列を指定する
nbf.lpDecimalSep = DecimalSep;
// 桁区切りで使用する文字列を指定する
nbf.lpThousandSep = ThousandSep;
// 負数の表示方法を指定する
nbf.NegativeOrder = _ttoi( NegativeOrderVal );

// 桁の区切り方を指定する
nbf.Grouping = 0;  // 初期値
GroupingStrLen = _tcslen( Grouping );

for ( i = 0; i < GroupingStrLen; i++ ) {
  if ( i < GroupingStrLen - 1 ) {
    // 末尾でなく、セミコロン以外であれば、数字として取得する
    if ( Grouping[i] >= _T( '0' ) && Grouping[i] <= _T( '9' ) )
      nbf.Grouping = nbf.Grouping * 10 + ( Grouping[i] - _T( '0' ) );
  }
  else {
    // 末尾が0だった場合は無視するが、0以外だった場合は、その数字と0が指定されたものとして扱う
    if ( Grouping[i] >= _T( '1' ) && Grouping[i] <= _T( '9' ) )
      nbf.Grouping = nbf.Grouping * 100 + ( Grouping[i] - _T( '0' ) ) * 10;
  }
}

// 文字列化した数値を指定し、桁を区切る
GetNumberFormatEx(
  LOCALE_NAME_USER_DEFAULT,
  0,
  _T("123456789012345678901234567890"),
  &nbf,
  buf2,
  _countof( buf2 )
);

これで目的の変換を達成することができる。


2015/03/17

Vistaの亡霊だったようだ

ところで、昨日の奴は昔からそうだったっけ? ということでちょっとやってみた。

Windows Vista


Windows XP


Windows NT 4.0


Windows 98


どう見ても、Windows Vistaの頃に作り込まれた癌だ。

2015/03/16

スタートボタンが2つ表示されるんだが

Windows 7で、アクティブウインドウの境界という設定値を大きくすると、スタートボタンが2つ表示されるようになる。



これを増やす。



そうすると、こうなる。


最大値は50らしい。


Aeroだとこの問題は発生しない。


気がついたから、書いてみた。

2015/03/03

Raspberry PiでVPNサーバを作った

ルータがしょぼくてIPsecのパケットをうまく通すことができないからSoftEtherを使っているのだが、そのサーバが時々死ぬ。というか、TV番組を録画している都合上、まれにディスクを一杯にしてしまって、VPNサーバも含めたその他のサーバが全部死ぬ事がある。

そうなると出先からは全く抜き差しならなくなって、自宅に戻らなければならなくなる。これが金と時間がかかってたまらない。

ということで、もう一個代替のVPNサーバを用意することにした。秋葉原でジャンク品のノートPCを買ってきて、Linuxでも入れて使おうかとも思ったのだが、やはり何となく不安だし面白くないから、Raspberry Piにしてしまった。

この前、Raspberry Pi 2という新しい奴が発売されていたはずだが、残念なことに買いに行った時には現物が見あたらなかった。1世代前のRaspberry Pi B+が、値段が下がらないままで山積みになって売っていたから、仕方がない、とりあえずそれを買っておいた。



OSの入れ方とか、Softetherの入れ方とか、その当たりは適当に検索したらいくらでも情報が出てくるから、ほとんど何も悩むことなく動作させることができた。


土曜に自宅に戻って、徹夜で環境を構築して日曜に戻る覚悟を決めていたのだが、当日の夕方ぐらいには作業が全部終わってやることがなくなってしまった。これだったら、もう少し欲張って、せめてケースぐらいは作ってやっても良かったかもしれない。

写真は撮っていないが、今はむき出しのまま転がしてある状態だ。発熱するという話もあるが、今は気温も低いし、まぁいいだろう。

で、結局今のところネットワーク構成はこういう事になっている。


いやなのは、VPNサーバも含めた、青く塗っている奴らがHyper-Vで動作する仮想OSだということである。だから、このホストOSで障害が起きると外からはどうしようもなくなってしまう。仕方がないかと思っていたが、よく考えるとネットワークが死ぬのはVPNサーバが死ぬからであり、こいつを外に出してやればかなり状況は改善できるだろうと思い至って、VPNサーバをもう一個立てたという事である。

とりあえずしばらくは、この状態で様子を見てみようと思う。

2015/02/05

結局、どれぐらい広いのか?

せっかく動くようになったのだから、とりあえず画面だけ晒しておく。



って、あまり変わらなくないか? という気もするが、比較対象があると解りやすいかもしれない。



つぶれて読めないが、右上にある緑色の部分は、解像度が1280×1024のWindows NT Server 4.0である。

理屈の上では、Full HDの画面を4つ、1280×720の画面を7つ表示することができるはずである。



ならば、実際に仮想OSをあげてみようということでやってみた。



残念なことに、Virtual Boxのタイトルバーやメニューバー、ステータスバーがあるから、理屈通りにはきれいには並ばない。

2015/02/03

DELLとの戦い 3通目 ~ 敗退

返信があった。

まず、信号線をDP2ポートのみに接続した場合は信号無しになる、というのは仕様なのだという。これは俺が模範解答を示していた以上、何となく言い逃れられたような気がしなくもないが、多分、そういう仕様なのだろう。

で、問題はその後だ。

モニタの簡易放電とか言う手順をやってみろという。

何でも、電源ケーブルも含めて、ディスプレイに接続する全部のケーブルを引っこ抜いた上で、電源ボタンを10数秒ぐらい押しっぱなしにして待つらしい。そうすればきっといいことがあると。

で、やってみた。

そしたらあっさりと5120×2880で表示されるようになった。

マジかと。

ぜってー壊れてんだ。認めさせてくれるぜ、と、いきり立って戦いに赴いたら、3ターン目にして無様に討ち死にである。まぁいいか。


しかし、だったら最初からどこかに書いておけと言いたくなる。一応、俺としては問い合わせる前には付いてきたユーザマニュアルをよく読んだ上で、設定方法やトラブルシューティングのページに書かれていることを確認しているのだが、そこに書いてあればこんな回りくどいことをしなくても済んだのだが。

というか、検索してみると、ディスプレイの簡易放電というのは結構一般的な事なのかもしれない。

http://search.yahoo.co.jp/search;_ylt=A7YWOSzm2dBUMSQA32OJBtF7?p=%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4+%E7%B0%A1%E6%98%93%E6%94%BE%E9%9B%BB&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=&afs=

常識的にまず最初にやって見ろと言うことなのか? まぁいいや。

解像度たけーっていうネタは、気が向いたら後で書く。

2015/02/02

DELLとの戦い 2通目

予想通りというか、何というか、だいぶ人を食ったような返事が来た。

まずは以下に答えろと言う。

・ご購入先(店舗名)
・機種名
・ご購入日(年/月/日)
・ご購入者のお名前(フルネーム)
・ご住所(郵便番号を含め、ご住所の詳細)
・お電話番号

購入先は新しい情報だが、それ以外は一番最初に問い合わせる時に入力させられた情報だろうが。

というか、「機種名」ってなんだ。てめぇ。それが分からなくてどうやってサポートするつもりだ、おい。サービスタグとか言う奴を入力させられて、その応答としておまえらの方から「Dell UP2715K Monitor」だと言われているのではないのか? あぁ?

まぁいい。ここはジェントルマンな俺様として大人しく答えてやろう。だが、次の一文は許し難い。


> また、お使いのモニタでは、解像度を5K3Kに設定する場合、DP1、DP2ポート両方の同時接続が必要でございます。
> お手数ですが、DP1、DP2ポートとも同時に接続し、解像度が5K3Kになるかご確認いただけますでしょうか。
> DP1やミニDPポートの接続時、最大解像度が4K2Kになります。
> ご参考いただければと存じます。

だからさ、最初から言ってるだろう。劈頭第一に「5K3KのDPポート(2本)にケーブルを接続しても、4K2Kの解像度にしかならない」と。

明らかに機械的な反応というか、こちら側の言うことなど一切無視して、一方的に尋問を行い人を操ろうとする意思がビシビシと感じられるから、こちらもそのつもりで、紳士の皮を少しずつ剥いて対応することにする。少なくとも、俺の質問に対して満足な回答を返すまでは、これ以上の新しい情報はこちら側からは一文字たりとも提示しないことにする。

ということで、こういう回答文にしておいた。

----------------------------------------------------------------------------------------------------------

上記についてですが、もともと記載しております通り、
両方のポートに、2本とも接続した状態で5K3Kの表示にはならず、
最大の解像度が4K2Kの表示となります。


それ以外に試してみたこととしては、下記となります。

出力側2つのポートに対してそれぞれ以下を実施。
・4K2KのmDPポートに接続 → 4K2Kで表示される。
・5K3KのDP1ポートのみに接続 → 4K2Kで表示される。
ケーブルを交換しても、上記は変わらない。

5K3KのDPポート1と2の両方に接続して確認した場合は必ず4K2Kの表示になる。
接続するポートを入れ替えても状態は変わらない。ケーブルを交換しても同様。

5K3KのDP2ポートのみに接続した場合(DP1には何も接続しない)は、
出力側のポートやケーブルによらず、DPケーブルが接続されていないという表示 になる。

5K3K側に接続して4K2Kの解像度で表示されている状態で、後からDP2側のケーブ ルを抜き差ししても、何の反応もない。

これを単純に考えると、
・ディスプレイのDP2ポートの問題
・PC側の問題
のいずれかであると考えられます。
そのため、当初より問い合わせておりますとおり、
切り分けを行うために、DP2ポートのみに接続した場合には、
本来どのような表示になるのか、ご教示ください。

----------------------------------------------------------------------------------------------------------

まだまだ紳士だ。

だが一応、「前に答えてるけどねぇ」アピールと、「質問に答えろ」アピールは入れておいてみた。これでもし俺の問いには答えず、一方的に尋問を繰り返すようだったらどうしてくれようか? まぁいいか。反応を待ってみよう。



つーか、これでもしディスプレイには問題はない、グラボが悪いと言いくるめられてしまったら、Quadroを買うしかないのかねぇ。

2015/02/01

DELLとの戦い再び




再びPCのディスプレイを新調してみる。

もう、何度目だと。

まぁいいか。

しかも、もう二度と買わねぇと誓ったDELLのディスプレイである。アホだ。しかも、5Kの奴だ。Amazonで18万だった。

これである。




当初の予定であれば、ここで解像度ちょーたけーデスクトップちょーひれーみたいなことを書こうと思っていたのだが、そうもいかなくなったから、ちょっと違う事を書く。

何かというと、端的に言えば目的を達成しなかったのだ。

このディスプレイの仕様として、最大の解像度が5120×2880であるのだが、どう頑張っても3840×2160の解像度にしかならない。いろいろと切り分けても、どう考えてもディスプレイ側のポートの1つが死んでいるとしか判断できない。

だから、仕方なくサポートに問い合わせることにした。その話についてここで晒そうと思う。

まず、不満の一つは、サポートのページに行くと、クイックテストとか言う自動診断をやれと表示される。それはいいのだが、それがまともに動かないのである。

わざわざ、いかがわしいソフトのインストールまで承諾してやって、自動診断とか言うのに協力してやっているのに、表示されるメッセージはこれである。



サービスタグを検出できませんでしたって、この画面に到達する際に、そもそもサービスタグの入力は求められているし、入力しているのだから、検出できないとか、何を言っているのか全く理解ができない。

テクニカルサポートに問い合わせろとメッセージが出ている割りには、そのリンクもない。画面のどこを探しても、どこに問い合わせればいいのか、全く解らない作りになっている。

サポートページのかなり入り口の方まで戻ると、右端に「お問い合わせ」と書かれた青い四角があり、それを選択すると隠されたリンクが表示されるという鬼畜仕様である。

その秘密のリンクを探し出すと、ようやくこういうページにたどり着く。



要は、電話とチャットとEメールしかないと言うことだ。

電話というのも気が引けるし、電話代がかかるし、そもそも、月曜~金曜の9時~17時しか受け付けていない。仕方がないから、チャットというものを選択してみる。

すると、こういう画面が表示される。



一応、はじめは土曜日の17時ぐらいに見てみたが、この画面になってしまった。仕方がないから日曜日の11時ぐらいに改めてやってみたが、それでも表示が変わらない。正直言って、俺にはこの画面が何を言っているのかさっぱり解らない。

月曜~日曜日、午前9時から午後6時まで受け付けている、と書いてあるようにしか見えないのだが、土曜の17時と日曜の11時、ついでに言うと、これを書いている日曜の17時30分も、受付時間外だというのである。ならばいつが受付時間なのか、どういうアルゴリズムで判断すればいいのか、完全に俺の理解の範囲を超えている。

だからとりあえず、「重要度の低い問題に関するお問い合わせ」と言うことでEメールを投げておくことにしておいた。まぁ、恐らくはDELLにとっては重要度の低い問題なのだろう。自社の製品が、売った直後に動かないなどと言う問い合わせは、聞きたくもないし、知りたくもないし、関係もないし、興味もない事柄だろうから。

で、一応、問い合わせの内容はこうなっている。

-------------------------------------------------------------------------------------
■現象が発生した日時と内容、頻度をご記入ください。

5K3KのDPポート(2本)にケーブルを接続しても、4K2Kの解像度にしかならない。障害の
原因を切り分けるために、DP2のポートのみに接続した場合に、ディスプレイの仕様とし
てどのような表示になるのか、ご教示下さい。

■エラーメッセージが表示される場合、そのメッセージの内容をご記入ください。

エラーメッセージはない

■現象が発生したきっかけ、またはシステムに加えた変更、外付け増設機器ならびに内部増設機器があればご記入ください。

今回買ったディスプレイを接続した。

■現象が発生してから確認した作業・操作手順など、お客様にて実施された作業がありましたら、できるかぎり詳しくご記入ください。

出力側2つのポートに対してそれぞれ以下を実施。
・4K2KのmDPポートに接続 → 4K2Kで表示される。
・5K3KのDP1ポートのみに接続 → 4K2Kで表示される。
ケーブルを交換しても、上記は変わらない。

5K3KのDPポート1と2の両方に接続して確認した場合は必ず4K2Kの表示になる。接続するポートを入れ替えても状態は変わらない。ケーブルを交換しても同様。

5K3KのDP2ポートのみに接続した場合(DP1には何も接続しない)は、出力側のポートやケーブルによらず、DPケーブルが接続されていないという表示になる。

5K3K側に接続して4K2Kの解像度で表示されている状態で、後からDP2側のケーブルを抜き差ししても、何の反応もない。

■Dell PC 診断プログラムを実施された場合、その結果をご記入ください。

今回のスキャンでは、サービスタグを検出することができませんでした。スキャンを再度
実行するか、またはテクニカルサポートにお問い合わせください。 と表示されます。

-------------------------------------------------------------------------------------

我ながら、大人な書き方だ。

これでどういう反応が返ってくるか、いくらで修理すると言ってくるのか、仕様ですと言い張るのか、少し様子を見てみることにしよう。