TEMTECOMAI ORTHOSTATIC HYPOTENSION

元ダメプログラマで現ダメ中間管理職の駄文

こんな現象があるなんて気づかなかった。 今まで作ってきた数多くの表は大丈夫だったろうか。。。

Microsoft サポート情報

Excel でハイパーリンクを設定した後に並べ替えるとリンク先が変更される
https://support.microsoft.com/ja-jp/help/410238

今まで数多くの表を作ってきたが、その中にこの条件を満たしてしまっている物はなかっただろうか・・・あったんじゃないかなぁ。

紙をスキャンして作った PDF ファイルを管理するために Excel で管理表を作り、各行に PDF ファイルへのハイパーリンクを仕込むケース、きっとあるよね。

既にハイパーリンクが設定されている Excel の表で並び替えをすると、ハイパーリンクが解除されたり、どこか別のセルに移っちゃったりと、それはもう滅茶苦茶になるらしい。
上記のサポート情報ページにある再現手順セクションにある結果がエグイこと。

原因は開示されてないよ

再現手順と回避策までは書いてあるけれど、原因までは説明されていない。
「マイクロソフト製品の問題として認識している」 とまでは書いてある。

ちょっと考えてみた。

VBA のオブジェクト モデルで考えると、一つの Excel ファイルである Workbook オブジェクトは、複数のワークシートを表す Worksheets コレクションを持っている。
Worksheets コレクションは、1枚のワークシートを表す Worksheet オブジェクトの集合体。
単体の Worksheet オブジェクトは、複数のセルを表す Cells コレクションを持っている。
Cells コレクションは一つのセルを表す Range オブジェクトの集合体。(ちょっと違うけど)

現在のブックの一番左側のシートのセル A10 の文字を変更するには
ThisWorkbook.Worksheets(1).Cells(10,1).Value = "hoge"
てな風に書く。(もちろん Range でやる場合もあるけれど)
セルにハイパーリンクを設定する場合も、作り手の感覚的には 「とあるセルにハイパーリンクを設定する」 って感じなので、
ThisWorkbook.Worksheets(1).Cells(10,1).SetHyperlink(アドレス, 表示文字列)
みたいに想像するけれど実際は違うらしい。(使ったことないので今回初めて知った)
ThisWorkbook.Worksheets(1).Hyperlinks.Add(セル番地, アドレス, 表示文字)
みたいな感じなんだと。(実際はもう少し引数があるけど)

びっくりポイントがいくつか。

  • ハイパーリンクはセルのプロパティからではなく、シートごとの Hyperlinks コレクションから操作する
  • Hyperlink オブジェクトは 「どこのセルで使われているのか」 を保持する Range というプロパティを持っている
  • Hyperlink オブジェクトは 「セルに表示する文字列 (クリックする対象の文字列)」 を保持する TextToDisplay というプロパティを持っている

あらやだ、セルの子分じゃないじゃん。 完全に独立してるじゃん。 というかセルに表示する文字まで握っちゃってるじゃん。
これを踏まえると、セル側の都合で並び替えをしちゃうと Hyperlink が追従 (各ハイパーリンクが持つ Range プロパティの値をソート後のセル番地に変更する) してないんじゃないかな、なんて想像をしちゃうのだが、先のサポートページの再現ドラマではもっとえげつない結果になっているので予想は外れているようだ。
というか、Excel 2016 で試してみたら正常に並び替えができてたし。
Excel 2010 では再現するが、Excel 2016 では解消済みってことか。
「最新のバージョンにしてください」 の一言で解決する話かよ。
もちろんそんな事を軽々しく言えればの話だが。

DELL の Precision 7510 というノート PC

BTO で 1st. HDD を 256GB SSD に交換、さらに 2nd. として 1TB HDD を追加。
さらに Windows 10 からのダウングレード権を使って Windows 7 Professional x64 がプリインストールされた状態で導入。
せっかく Windows 7 プリインストール状態で届いたものを 「やっぱり Windows 10 で使いたいから」 という要望があったため、PC に付属していた Windows 10 のメディアを使ってセットアップをすることにしたのだが、これにだいぶ苦労しましたよ、というお話。

一番の要点から言うと、DELL Precision 7510 に付属している Windows 10 のメディアでは SSD にインストールできないって話。 インストール途中のパーティション選択画面が出てこないって話。
SSD にインストールしたい場合は Microsoft のメディア作成ツールを使って取得した Windows 10 の iso ファイルを使いなさい、と。

DELL のサポートに電話して聞いた話だから確かです。
DELL の製品サポートでダウンロードできる Windows 10 のリカバリー イメージは PC に付属しているメディアと同じものとのこと。
続きを読む

2017年3月の Windows 10 累積的な更新プログラム KB4013429 は Active Directory 管理センターがクラッシュする件に対応しています。

KB4013429

Addressed issue where the Active Directory Administrative Center (ADAC) crashes when attempting to modify any attribute of any user account in Active Directory.
累積的な更新プログラムの一覧の日本語ページにはまだ掲載されていないようですが英語版のページには掲載されていますね。
まずはよかったよかった。

アカウント情報を編集して更新しようとすると Active Directory 管理センターが不明なエラーを発して落ちてしまう問題の原因が分かった。
以下は先週末自宅に引きこもって実験した結果。

まずは手順

  1. Windows 10 Enterprise 評価版を使って VM を作成。 (Windows 10 Version 1607)
  2. 作成した VM を Active Directory に追加。
  3. RSAT を VM にインストール。
  4. Active Directory 管理センターが正常に使えることを確認。
  5. Windows Update で OS を最新状態にする。
  6. Active Directory 管理センターが異常終了することを確認。
  7. 「インストールされた更新プログラム」 から累積的な更新プログラムを削除。
  8. Microsoft Update カタログから一つ前の累積的な更新プログラムをダウンロードしてインストール。
  9. Active Directory の動作を確認。
  10. 以下 7 から 9 を繰り返し、Active Directory 管理センターが正常終了するポイントを見つける。

結果、2016年12月13日公開の累積的な更新プログラム 「KB3206632 (14393.571)」 をインストールすると Active Directory 管理センターが異常終了することが判明。
その少し前、2016年12月9日に公開された 「KB3201845 (14393.479)」 までにとどめておけば良い。

残念ながら最新の累積的な更新プログラムである 2017年1月10公開の 「KB3213986 (14393.693)」 でもこの現象は継続中。

【参考】
Windows 10 用のリモート サーバー管理ツール (RSAT) のダウンロード
https://www.microsoft.com/ja-JP/download/details.aspx?id=45520
Microsoft Update カタログ
https://catalog.update.microsoft.com/v7/site/home.aspx
Windows 10 バージョン 1607 (64bit) と Windows Server 2016 の累積的な更新プログラム一覧
https://support.microsoft.com/ja-jp/help/4000825

Windows 10 Professional にインストールした RSAT の Active Directory 管理センター (略して ADAC っていうのかな?) で不明なエラーが頻発して困っている。

Windows 10 にログオンして ADAC を利用している Windows アカウントは対象 AD のアカウント オペレーターの権限を持っている。
作業対象のアカウントの属性値などを変更して上書き保存しようとすると 「不明なエラーが発生しました」 となる。
ちなみに結果は反映されている。

イベントログには次の二つのエラーが記録されている。
--------
ソース: .NET Runtime
イベント ID: 1026
アプリケーション: dsac.exe
フレームワークのバージョン: v4.0.30319
説明: ハンドルされない例外のため、プロセスが中止されました。
例外情報: System.ComponentModel.Win32Exception
--------
ソース: Application Error
イベント ID: 1000
障害が発生しているアプリケーション名: Dsac.exe、バージョン: 10.0.14393.347、タイムスタンプ: 0x57f86637
障害が発生しているモジュール: KERNELBASE.dll、バージョン: 10.0.14.393.479、タイム スタンプ: 0.582588e6
例外コード: 0xe0434352
--------

この PC には先に Windows 10 用の RSAT をインストールし、そのあとの機会に Visual Studio Communication 2017 RC を入れ、調子が悪いので RSAT を再インストールしている。
別の Windows 10 PC に入っているdsac.exe のバージョンが微妙に違うが、これは RSAT をインストールした時期による違いか。

ということは Visual Studio Community 2017 RC が影響してるのか?
一応 RC なら運用環境の PC でも問題ないってことになってはいるが、とはいえ RC は RC であり RTM じゃぁない。
というところが原因なのかな。。。
エラーを回避するため久しぶりに Active Directory ユーザーとコンピューターを使って作業をしたけれど、久しぶりだと使いづらいなぁ。。。

浦島太郎状態。


今も MIDI 機器同士や  PC と接続するためのインターフェイスは MIDI 端子ってことないよね?
「サウンドブラスター互換」 とか言うサウンドカードが必要とか言わないよね?
とうなの? 最近

楽器側のインターフェイス、やっぱり MIDI なの?
PC 側が USB と MIDI の変換プラグ使うとかなの?

それともお互いに USB 端子なの?

会社帰りにフラッと飲む。

自宅を公開ってことか。

それとも自宅を居酒屋にするってことか。

サンマとニシン。
塩焼きの代表格。

こいつらだけはきれいに食べたい。
ただし、頭と背骨と尻尾まで食べるのではなく、それ以外をきれいに食べる。


とか常に思っているわけですが、ばらし方を自分のものにできてないわけです。
毎回 Web で調べてしまったり。
Web で調べて思うこと。

「焼き魚の食べ方の標準化」 を作るべき。

どんな人でもこの手順をを見ながら作業すればきれいに焼き魚を食べることができるという手順書。
肝はサンマ特有なので横に置いといて、それ以外、前面を食べて後面を食べる。 この標準んメソッドがほしい。

そして焼き魚サイドも「橋を水平に入れて割く」 と言われたら素直に従う。
これ大事。

Apple ID のパスワードを変更する際に訊かれる秘密の質問
なぜか毎回正解することができないいので、秘密の質問をリセットしなければならない。
毎度毎度、秘密の質問とパスワードを更新してるってわけさ。

なぜ正解できなかったのかは質問をリセットする時になって気付かされる。
答えの最小文字数制限があるわけさ。
「韓国」 って設定しようとするとダメって言われる。
「かんこく」 って設定する。 「ひらがなで回答しよう」 って心に誓う。
で数ヶ月後に 「韓国」 って回答する。
回答時には 「2文字は少なすぎます」 とかいうヒントはくれない。 「答えが違います」 とだけ言われる。
しかも秘密の質問は 2問同時に出題され、2問同時に回答しなきゃならない。
さっきの調子で間違ってたとしても 「2問のうちどちらか、または両方間違っています」 とかぬかしやがる。
そして何パターンか試す。
気力が尽きて 「秘密の質問をリセットする」 という最後の手段を選択するわけさ。

そして質問を設定する画面で質問の一覧を見て思うわけさ。
なんだこの質問群は。。。

両親が初めて出会った町の名は?
憧れの職業は?
好きな絵本の題名は?
初めて映画館で観た映画は?
小学生の時に好きだった先生の名は?
学生時代に好きだった映画スターや登場人物の名は?
学生時代に好きだった歌手またはバンドの名前は?
初めて覚えた料理は?
初めて飛行機で行った場所は?

質問を選び、答えをセットする段階でもう一つ思い出す。
最小文字数。
映画スターの名前はアルファベットがいいのか? それともカタカナか? カタカナの場合スペースで区切るか? 中点で区切るか?


秘密の質問なのだからユーザーに質問文も作らせてほしいと思う。
てかやっぱり必要ない機能だと思う。

初めて覚えた料理は?
インスタントラーメンなんじゃねーの?

Windows 10 に .NET Framework 3.5 をインストールする

.NET Framework 3.5 をインストールする [コントロール パネル] - [プログラム] - [Windows の機能の有効化または無効化] にて [.NET Framework 3.5 (.NET 2.0 および 3.0 を含む)] にチェックを入れて [OK] をクリックすればインストールすることができる。
実際のインストールは Windows Update 経由で行われるみたい。(よくわからんし、調べるつもりもないけれど)

0x800F081F とか 0x800F0906 とかのエラーでインストールできないよ

ところがタイトルにもある通り 0x800F081F のエラーが出てインストールすることができない場合がある。
Windows Live メールも .NET Framework 3.5 が必須。 実に困った状態。
0x800F081F ってのは 「ソースが見つからない」 っていうエラーらしい。 (よくわからんし、調べるつもりもないけれど) 

0x800F0906 が出た

会社でよく発生しそうなエラー。
PC が .NET Framework 3.5 に必要なファイルを Windows Update からダウンロードできない場合に発生するらしい。
PC が社外と通信するための設定が不完全 (ファイアウォールとかプロキシとか) だったり、WSUS がしゃしゃり出てくるようになっていたり。
もし一時的に WSUS を経由しないで直接 Windows Update サーバーと通信できるように環境を変えられるのなら問題ないらしい。
ということなのだが、GPO で 「WSUS を使わない」 というポリシーをリンクさせた作業用の OU を作成し、作業中の PC をその OU に入れて再チャレンジしてみた。

0x800F081F が出た

似たようなエラー番号なので変化に気づきづらい。
KB2734782 によれば 「代替インストール ソースに指定した場所に必要なものがない、またはそれを読み取る権限がない、または壊れている」 ということらしいが、そんなもんを指定した記憶はない。
ただ単純に Windows の機能から .NET Framework 3.5 を有効にしようとしただけだ。

OS のメディアを使って手っ取り早くインストールした

うちの場合は 0x800F081F だったので Windows 10 のメディアを使って解決した。
メディアは Microsoft からダウンロードした Windows 10 インストール イメージを焼いておいたもの。
こいつを使って .NET Framework 3.5 をインストールできるらしい。 iso を直接マウントしても大丈夫っぽい。
PowerShell を管理者権限で起動して書きのコマンドを打つ。
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source "D:\x64\sources\sxs" -LimitAccess
この場合 Windos 10 のメディアが D: ドライブにあるってことで、Source オプションで sxs フォルダーの位置を指定してあげる。
同様のことは Dism っていうコマンドでも可能らしい。 (よくわからんし、調べるつもりもないけれど)
さらには Fondue というコマンドもあるらしい。 (よくわからんし、以下同文)
TechNet ブログ Windows 8 に .NET Framework 3.5 をインストールする、もう1つの方法 Fondue に一通りかいてある。

KB2966828 (MS14-046) が原因になることがあるらしい

KB2966828 (MS14-046) は .NET Framework のセキュリティ修正プログラムのひとつで、Address Space Layout Randomization (ASLR) というセキュリティ機能を迂回されてしまう脆弱性を修正するらしい。
ASLR ってのはプロセスをロードする場所をランダムな場所にする仕組みらしい。 ランダムな場所にロードすることで、攻撃者が攻撃しづらくするらしい。 (よくわからんし、調べるつもりもないけれど)

ASLR を簡単に説明すれば 「毎回同じトイレの同じ個室で仕事をさぼっているとバレてしまうのでランダムな個室を選択する」 ということ。

この KB2966828 は PC に .NET Framework 3.5 がインストールされていることを前提としているらしいので、KB2966828 をインストールした後に初めて .NET Framework 3.5 を有効にしようとするとエラーになるようだ。
例えば 「社内で PC をセットアップする際に Windows Update でガンガン攻めて、最後に Windows Live メールをインストールしようとして .NET Framework 3.5 を有効化しようとしたらエラー」 とか。

で、Windows 8.1 以前や Server 2012 R2 以前の Windows にはさらなる修正プログラム KB305628 が用意されている。
以前の Windows であればこの修正プログラムを適用すれば問題が解決するらしい。

Windows 10 用の修正プログラムは用意されていないようだ。。。
Web をさまよってみると 「Windows 10 ではコマンド プロンプトからの Dism コマンドや、PowerShell の Enable-WindowsOptionalFeature コマンドレットでならインストールできた」 という情報もあるし、一時的に KB2966828 をアンインストールしたって話もある。
まぁいろいろ選択肢があるってことで。

1
SharePoint ってやつは、ページ上に 「Web パーツ」 とか 「アプリ パーツ」 と呼ばれる 「機能」 をポトペタしていくわけですよ。 この 「機能」 ってやつにはいろんな種類があるんだけど、まぁ一番使うのは 「ドキュメント ライブラリ」 と 「お知らせ」 あたりだと思う。

サイト作成者としては、これらのパーツをサイトのページ上にポトペタする。 そして次のような使い方をイメージする。
「サイトの利用者はページ上のパーツにドキュメントを登録したり、ページ上のパーツに登録されているドキュメントを編集したりダウンロードしたいする」

サイト作成者がパーツを配置したページには何種類かのパーツが配置されているのだが、何かの拍子に 「操作しているパーツだけが表示されているページ」 に飛ばされてしまうことがある。
どうやらそのパーツだけのための裏ページが存在していて、そのページに迷い込むと自分の居場所を見失ってしまい、サイト内で迷子になってしまう恐怖のページなのである。

作成者が意図して作りこんだページの URL はこんな感じ。
xxxx.sharepoint.com/sites/foo/baa/_layouts/15/start.aspx#
このページ上にいくつかのパーツを配置している。
利用者はこのページ上に配置されているいくつかのパーツの機能を利用する。
例えば、ドキュメント ライブラリを基にした議事録用のエリアがあり、利用者は登録済みの議事録を閲覧したり、新しい議事録を登録したりする。

で、この議事録用のパーツ専用の裏ページの URL がこんな感じ。
xxxx.sharepoint.com/sites/foo/baa/_layouts/15/start.aspx#/DocLib1/Forms/AllItems.aspx
DocLib1 ってのは議事録用のパーツに付けられた名前。
(ちなみに新しいパーツを準備する時に、いきなり日本語の名前を付けてしまうとこういう機械的な名前になっちゃうらしく、アスキー文字で名前を付けた後に改名すれば理解可能な URL になるらしい)
このページには議事録用パーツのビューしか存在せず、その他のパーツは表示されていない。 ただしページの最上部や左側には共通項目が表示されている。
作成者が作ったページ上のパーツのビューは作成者の手によってツールバーを非表示にしてあったり、グループ化してツリー表示にしたりと様々なカスタマイズがしてあるのだが、AllItems.aspx は単なる表形式の表示になっている。
このページの存在を認めるのなら、このページ上のビューもカスタマイズしないと気が済まない。
なんなんだこの手の掛かりようは。。。

ちなみにページ左側の [最近使った項目] の下に表示されている項目はこの AllItems.aspx のページらしい。
裏ページは思ったよりも近くにいるようだ。

PowerShell ってもんは、横に横にと、ものすごく長くなってしまう宿命なのかしらね。
世界で一番嫌いなのが横スクロールだ。
Param
(
    [ValidateSet("Phonetic", "EmployeeNumber", "AccountName")]
    [string]
    $conditionType,
    [string]$value
)

switch ($conditionType)
{
    "Phonetic" { $condition = "msds-PhoneticDisplayName -like '*$value*'"; break }
    "EmployeeNumber" { $condition = "employeeNumber -eq '$value'"; break }
    "AccountName" { $condition = "samaccountName -eq '$value'"; break }
    default { $condition = "*" }
}

Get-ADUser -Filter $condition -Properties * | Select-Object Enabled, LockedOut, Description, UserPrincipalName, Surname, Givenname, msDS-PhoneticDisplayName, EmployeeNumber, Department, EMailAddress, DistinguishedName

Get-ADUser -Filter $condition | Get-ADPrincipalGroupMembership | Sort-Object GroupScope, Name | Format-Table GroupScope, Name -AutoSize
みたいな

黒崎くんの言いなりになんてならないが 2月27日 (土) から全国上映されるらしいのですが、その映画チケット 2枚を予約してほしいと頼まれた。
まだ 2週間も前なので予約できないわけですが、TOHO シネマズのサイトを見ていると封切日の 10時20分の回が終わった所で出演者たちによる舞台挨拶が全国同時中継される、と。

TOHO シネマズ宇都宮での PC 等によるチケット予約は 24日の深夜 0時から始まるわけですが、なんか昨日から 「きっと忘れる」 とか 「その日は遊びに来ないよね」 とかプレッシャーを受け続けているわけですよ。

がんばるから。
がんばるからさ。

↑このページのトップヘ