ページ

2012年9月13日木曜日

◆エクスプローラのプレビューウインドウにログファイル(Log)を表示させる

エクスプローラにプレビューウインドウなるものが存在する。
アプリケーションをいちいち立ち上げなくても中身が確認できる優れものだ。

image

Office文書やテキスト(txt)などはプレビュー可能になっているのだが、単純に拡張子で判断されているようで、同じテキストでも拡張子が(.log)などになっていると表示してくれない。

これを表示させるにはレジストリの修正が必要なようだ。

レジストリーを修正するのは面倒なのでツールでも作ろうかと思ったが、探してみると既に提供してくれている人が居たのでありがたく使わせていただいた。
MSDN Blogs

使い方は簡単で、起動すると以下のような画面が表示される。
image

「Registered handlers」のドロップダウンからプレビューアーを選択。(ここでは「Windows TXT Previewer」を選択)

「Only ・・・」のチェックボックスを外すと拡張子の一覧が表示されるので「.log」をチェックすればOK
image

2012年9月11日火曜日

◆EverNoteで同期に失敗する

他のPCではうまくいっているのでPC固有の問題っぽい。
ネットで調べるとログを見てみろとのこと。
ログは、「ツール」「オプション」「全般」「ログフォルダを開く」で参照可能だ。

見てみると(Exceptionで検索すると良さげ)、

10:34:25 [3824] 0% Updating server notebook "900 Tips(小)"
10:34:25 [3824] 0% * guid={7903a677-12f9-4781-9356-203481c8de61}
10:34:26 [3824] 0% EDAMNotFoundException: id="Notebook.guid" key="7903a677-12f9-4781-9356-203481c8de61"
10:34:27 [3824] 0% Session terminated abnormally, elapsed time: 46s

何かが見つからないと言っている。
notebookは"900 Tips(小)"

確かに、そういえばこのnotebook内のnoteを整理したなぁ・・・。

多分、noteやnotebookに対する移動やリネームで不整合を起こすバグが潜んでいるのだろう。

仕方がないので、当該notebook内のnoteをすべて他の場所にコピーした上でnotebookを再作成してnoteを戻してみた。
(念のためゴミ箱も削除)

で、再度、同期。

OK、回復できた。

2012年9月7日金曜日

◆Windows Server 2012 サーバーマネージャーの自動起動を抑止する

2008の時はサーバーマネージャーの画面自体に用意されていたように思うのだが、2012からはちょっと判りづらくなっている。

  1. 管理メニュー
    image
  2. サーバーマネージャーのプロパティ
    image
  3. ログオン時にサーバーマネージャーを自動的に起動しない
    image

2012年9月4日火曜日

◆ネクストEverNote

かつては情報整理にフリーソフトなどを使ってきたが、WEBから簡単にクリップできる機能に惹かれてEverNoteを使いだした。
確かにすばらしい部分も多いのだが、いけてない部分もちらほら。
しかも許しがたいほどいけてない。(外国人とは感覚が違うのだろうか・・・)
一番許しがたいのが左ペインのツリービュー。
通常のフォルダーのように階層的に管理したいところだが、2階層までしか管理できない。
どちらかというとタグでの管理をメインに考えているのかもしれないが、慣れ親しんだ方法が使えないというのは致命的。
また、このツリーは名前に連番を振るなどして自分で工夫しないと思い通りの順番で並ばないので不便この上ない。


また、ノート自体の並び順もかなりいけてない。
image
これも思い通りの順番に並べるには連番など振る必要があり面倒。
しかも、せっかくこれだけの並び順が用意されているのに、デフォルトの並び順が「作成日」から変更できないので、せっかく連番をつけて並び順を揃えても毎回並び順を「タイトル」変更する必要がある。
WEBページの再現性などはなかなか秀逸なのに、こんな単純な所で大きく使い勝手を台無しにしてしまうのは非常にもったいない。
使い始めてからかなり経ち、頻繁にバージョンアップも行われているようなのに使い勝手の部分ではほとんど改善が感じられない。
Windows8になり、SkyDrive経由のファイル同期が標準機能になっているので、クラウド対応ではないフリーの情報収集ソフトなどでも良いのかもしれない。

OneNoteなんかも試してみようかしらん・・・。

2012年9月3日月曜日

◆「デリゲート型ではないため ラムダ式 を型 'System.Delegate' に変換できません」

「Delegate」という機能はVer1.0の頃から判ったようでいて色々と躓く。
COBOLプログラマーにはなかなかついていけない概念だ。

ラムダ式もやっと判った気がするっと使っていると表題の様なエラーにぶつかり???となる。

今後のために表題のエラーについて、ここらで考察しておく。

一般的なイベントハンドラー
  1. public partial class Form1 : Form
  2. {
  3.     public Form1()
  4.     {
  5.         InitializeComponent();
  6.  
  7.         button1.Click += new EventHandler(button1_Click);
  8.          
  9.     }
  10.  
  11.     void button1_Click(object sender, EventArgs e)
  12.     {
  13.         MessageBox.Show("Click!!");
  14.     }
  15. }

このイベントハンドラーはラムダ式を使って以下のように書ける。

ラムダ式を使ったイベント処理
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace WindowsFormsApplication1
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.  
  19.             button1.Click += (sender, e) => MessageBox.Show("Lamda");
  20.              
  21.         }
  22.  
  23.         //void button1_Click(object sender, EventArgs e)
  24.         //{
  25.         //    MessageBox.Show("Click!!");
  26.         //}
  27.     }
  28. }

ラムダ式って楽ちん、っと他の場所でも使い始める。
以下はWPFのソース。

UIElement.AddHandlerサンプル
  1. public partial class MainWindow : Window
  2. {
  3.     public MainWindow()
  4.     {
  5.         InitializeComponent();
  6.         this.AddHandler(Button.ClickEvent, new RoutedEventHandler(ClickHandler));
  7.     }
  8.  
  9.     private void ClickHandler(object sender, RoutedEventArgs e)
  10.     {
  11.         txtblk1.Text = "Hello Event!!";
  12.     }

イベントハンドラーの時の感覚で行くと、このRoutedEventHandlerもラムダ式に出来そう。

ラムダ式バージョン
  1. public partial class MainWindow : Window
  2. {
  3.     public MainWindow()
  4.     {
  5.         InitializeComponent();
  6.         //this.AddHandler(Button.ClickEvent, new RoutedEventHandler(ClickHandler));
  7.         this.AddHandler(Button.ClickEvent, (sender,e) => txtblk1.Text = "Lamda");
  8.     }
  9.  
  10.     //private void ClickHandler(object sender, RoutedEventArgs e)
  11.     //{
  12.     //    txtblk1.Text = "Hello Event!!";
  13.     //}
  14.  
  15. }

しかし、残念ながらこのソースは表題のエラーとなってしまう。
「デリゲート型ではないため ラムダ式 を型 'System.Delegate' に変換できません」
一体全体何の事?

自分なりに考えて見たのだが、こういう事ではなかろうか。

まずイベントの方だが、定義はこんな感じにEventHandler型となっている。
image

EventHandler型とは、
image

となっていて、objectとEventArgsを引数にして戻り値無しのメソッドとなっている。

一方、うまくいかなかったAddHandlerメソッドの定義を見てみると、
image

確かに、Delegateを指定せよとなっている。

両者の違いを類推するに、前者は「EventHandler型」となっているので(Object sender,EventArgs e)を引数とし戻り値無しのDelegate。
Delegateとしての型が決まっているのでラムダ式から型変換が可能であり、引数と戻り値が一致したラムダ式を記述すればよい。
後者はただのDelegateなので、引数・戻り値ともに未定のDelegate。
ラムダ式からはDelegateの型が類推できない(しない)ため、明示的にDelegateの型を指定する必要がある。

よって、ラムダ式を使うのであれば以下のようにDelegateの型を指定した上で記述する。

Code Snippet
  1.     public MainWindow()
  2.     {
  3.         InitializeComponent();
  4.         //this.AddHandler(Button.ClickEvent, new RoutedEventHandler(ClickHandler));
  5.         this.AddHandler(Button.ClickEvent,  new RoutedEventHandler((sender,e) => txtblk1.Text = "Lamda"));
  6.     }
  7.  
  8.     //private void ClickHandler(object sender, RoutedEventArgs e)
  9.     //{
  10.     //    txtblk1.Text = "Hello Event!!";
  11.     //}
  12.  
  13. }

っと、素人考えながら以上のように理解しておく。

2012年8月24日金曜日

◆OUTLOOK2010 メッセージ本文のフォントを変更する

通常のテキストメールのフォントを変更する。

なんてことが簡単にできないOUTLOOK

どうもMS製品のGUIはアプリケーションによってばらつきが大きい。

VisualStudioのように納得の製品もあれば、悪名高きWordの様に開いた口が塞がらない製品もある。
OUTLOOKは当然後者だ。

なんどバージョンアップを重ねても、その設定の複雑怪奇ぶりは一向に改善の兆しすら見せない。

 

  1. ファイル
    image
  2. オプション
    image
  3. メール
    image
  4. ひな形およびフォント
    image
  5. テキスト形式のメッセージと読み込み
    image

◆Windows8 ランチャー環境を設定する

Next7としてWindows8を使うには、ある程度環境をカスタマイズしておいた方が違和感なく使える気がする。

Windowsキーを押して表示されるスタート画面は、これまでの7の物と比べると、階層表示がされない分、数が増えると探しづらいかもしれない。

とりあえずは、これまでの「スタート」フォルダをツールバーとして表示させておこう。
(Windows7時代からあった機能だが7では余り必要を感じなかった。)

  1. 「タスクバー」を右クリックして表示されたメニューから「ツールバー」「新規ツールバー」を選択
    image
  2. 表示されたフォルダー選択のダイアログにて以下の場所を指定する。
    「C:\ProgramData\Microsoft\Windows\Start Menu\Programs」
    image
  3. 「タスクバー」に「プログラム」フォルダーが表示される。展開すると以下のようになる。
    image

ツールバーには予め用意されているものもあるので「デスクトップ」あたりは表示しておくと良さそうだ。

  1. 上記と同様に「ツールバー」を表示させ、「デスクトップ」を選択
    image
  2. 個人用のフォルダやコントロールパネルを表示してくれる
    image

また、こいつの設定をちょっと変えると以前の「クイックランチ」としても使える。

  1. 適当なフォルダに「クイックランチ」に表示したいショートカットを作っておく。(ここではシャットダウンや再起動などを用意した)
    image
  2. 「プログラム」の時と同様に新規ツールバーを選択
    image
  3. 「フォルダ選択ダイアログ」に用意したフォルダを指定する。
    タスクバーはこんな表示になる。
    image
    ちなみに、設定が固まるまではタスクバーは固定しないほうが良いと思う。
    image

  4. この状態で使うのも「あり」だが、コンパクトに表示するには名前を表示しない設定にもできる。
    以下を右クリックして
    image
    表示されたメニューから以下の2つのチェックをはずす。
    image

  5. アイコン(ショートカット)だけが直接表示される。
    image

使用頻度とその性質に応じて、タスクバーへのピン留め、ツールバー、クイックランチ、っと3段階に使い分ければ標準機能だけでもWindows7の時と同程度の使用感にはなりそうだ。

2012年8月23日木曜日

◆Windows8 Defender

Windows8からはマルウエア対策だけでなく、ウィルスにも対応したのだとか。

エッセンシャルズの方が高機能?
市販品はもっと高機能?

何を基準に選べばよい?

私には判らない・・・・。

実際ウィルスに感染したことが無いのだから判るはずがない。
ましてやコンシューマユーザーおや。

ちなみに、Defenderはプロキシー環境ではお約束のWinhttpでのプロキシー設定が必要な感じ。(その後再起動も必要だった)

◆Windows8 消えない「Windows.old」

Windows8のインストール時にネットワークカードの認識がうまくいかず、一度再インストールを行ったせいで「Windows.old」フォルダができてしまった。

それ自体は何も問題ないのだが、このフォルダ、以前は簡単に消せた記憶があるのだが(XPの頃かVistaの頃か7の頃かは覚えていないが)、単純に「Del」では消えなくなっている。

権限が無いのだとか。

フルコントロールをつけてもダメ。
しからばと、所有権を取得してみる。
しかし、「xxxからアクセス許可をもらう必要があります」とか意味不明なメッセージ。
ちなみに、「xxx」は今ログオンしている自分のID
なぜにこんな意味不明の仕様にしてしまうのか・・・・。

調べてみると、「ディスククリーンアップ」を使うのだとか。
Windows.old フォルダーを削除するにはどうすればよいですか。

どうしてそこまで複雑にする・・・。┐( ̄ヘ ̄)┌  

◆Windows8 消えたデスクトップ

いつの間にかスタートメニューから「デスクトップ」が消えてしまった。

こんなやつ。
image

何かの設定の影響を受けたのか・・・・。
さっぱり判らない。
「Windows」キーや、「Windows + D」を使えば良いので特に不便はないのだが気になる。

調べてみたが情報が無いなぁ・・・。
1件だけ質問を見かけたが、アプリケーション検索でデスクトップを探してピン留めしろって回答だった。
検索しても見つからないのよね・・・。


暫定的に力技で回復。(そのうち何か情報が出てくるでしょ)

  1. 適当なところで右クリックして「新規作成」「ショートカット」
    image
  2. 項目の場所欄に以下を指定して「次へ」
    explorer.exe Shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}
    image
  3. 適当な名前(ここではデスクトップ)を付けて「完了」
    image
  4. 出来上がったショートカットを右クリックして「スタートにピン留め」(気の利いたフォルダアイコンに変更して置いても良い)
    image
  5. スタート画面に「デスクトップ」アイコンが表示されるので適当な場所にドラッグして位置を変更する。
    image

これで機能的にはほぼ同等となるが、大きなタイルサイズでは表示できない、デスクトップの壁紙がタイルに表示されない、といった細かな違いがある。
きっと本来はデスクトップを表示するという旧称メトロアプリなのだろうが、今のところ名前や場所が判らない・・・。


ふと思い立って、以前からあるトラブルシューティングツールのシステムファイルチェッカーを試してみた。

コマンドプロンプトを管理者として実行し、「sfc /scannow」

すると、以下のようなメッセージが表示されてなんとなく修復された感じ。
image

「Win + Q」でデスクトップを検索してみると
image

と復活してくれた。

めでたしめでたし。

2012年8月22日水曜日

◆Windows8 再起動にやけに時間が掛かる

Windows8の環境設定をしているのだが、なぜか再起動に時間が掛かるのに気が付いた。
起動は普通なのだが、落ちるのに時間がかかっている。
早くて40秒、遅くて5分くらい。
遅すぎる。
せっかくSSDを買って新OSを入れたのに、これではがっかりだ。

ネットワークドライバーのインストールで若干トラぶったのでその影響かと思い、NICを無効にしてから再起動すると10秒程度で落ちる。

ドライバーを入れなおしたりしても変わらず。

これだけ時間がかかるということは何かがタイムアウトしているのよね・・・。
タイムアウト時間を縮めるなんてのも考えられるが本質的解決ではない・・・。

なにがタイムアウトしているのかイベントビューワを探ってみる。
すると以下のようなエラーが発生していた。
image

DCOMって事はやっぱりネットワーク関係よね・・・。

ネットを彷徨っていると、NICのオートネゴ問題が原因の場合もあるとの情報を見つけた。
未だにそんな問題あるのかぁ・・・っと思いながら100Mの全2重固定にしてみる。
image

 

ビンゴ!!

エラーは出なくなり、15秒で落ちるようになった。

めでたし、めでたし。

◆Windows8、IMEがONで起動してしまう


ん~、なぜそんなデフォルトにしてしまったのか・・・。

せめてセットアップ時に選択させる位の気遣いがなぜできないのか・・・。

起動時OFFに変更するには以下にある手順を行うと良いらしい。
Windows 8起動時にIMEがオンになっている::Windows 8

簡単に説明すると。

  1. コントロールパネルを開く
    開き方がわからない場合は、
    ・「Windowsキー + R」で「ファイル名を指定して実行」を開く
    ・「shell:controlpanelfolder」と入力しOKボタンクリック
  2. 「時計、言語、および地域」で「入力方法の変更」をクリック
    image
  3. 「言語」画面で「詳細設定」をクリック
    image
  4. 「詳細設定」画面の「入力方式の切り替え」で「アプリウインドウごとに異なる入力方式を設定する」をチェックする。
    image

こんな設定、普通は絶対判らないなぁ。

2012年8月21日火曜日

◆ひどすぎるぞ富士フィルム

今日は娘の誕生日。
最近使っていなかったMTG Blog: ◆デジカメを買うで買ったデジカメを取り出す。
しばらく放置していたので充電が切れているのかまったく反応しない。(><)

仕方ないので別のカメラを使い、後で充電。
っと充電したのだが相変わらず無反応。

ん~、もう壊れたの?

何もせずに壊れるかね・・・・。

ありゃ、このバッテリーって逆にも挿さる。(ん?これって標準語?挿せるが正しい?)
動いた!!

ん~、この時代に逆挿しできる製品なんてものが世の中に存在するの?

かな~り信じ難い。というか呆れる、というか、ありえない・・・。

ひどずぎるぞFinePix。

2度と富士は買わない!!前回も書いたが、大失敗だ!!史上最低!!

2012年8月18日土曜日

◆Windows8 has com

いよいよWindows8のダウンロードが始まった。

Windows8自体は「Surface」のようなハードが出てからじゃないと7との違いはあまり実感できないと思うのだが、とりあえずPowerShellの新バージョンが使いたいので適当なPCを見繕ってインストールしてみた。(まだ環境設定はあまり終わっていない)

1台目はネットワークをつながずにインストールしたのが災いしたのかNICを認識しない。(デバイスマネージャでエラーになる)

やむなく手動でドライバーを入れてみるがどうにもこうにもうまくいかない。
Windows8用のドライバーが落ちているはずもないので7用とかVista用とか入れてみるもエラーのまま。

再インストールなども行い2、3時間格闘して、半分あきらめかけていたところデバイスの削除と再起動でいつの間にか認識してしまった。
再インストールで変わらなかったものがデバイスの削除でうまくいくような気もしないので、適当に突っ込んだドライバーが功を奏したのか・・・・。
古いPCだし、最近はめっきりハードには興味がないのでとりあえず良しとする。

自宅に戻って自宅の古いPCにも入れ始める。
こちらはXGAでしか表示されない。
ドライバーを探すも、そもそもこのカードって何?ってな状態で右往左往。
なんとなく調べるとNvidiaのFX5200系?
適当にドライバーを入れて事なきを得る。

古いPCなので止せば良いのにスリープがしたくなる。(最近使っているPCはすべてスリープで使っているので)
メニューからのスリープではHDDは停止するもCPUファンもケースファンも回りっぱなし。
やむなくコマンドでスリープさせる。
「C:\Windows\System32\rundll32.exe PowrProf.dll,SetSuspendState」
こちらはスリープ状態が若干異なると聞いていたのだが、案の定うまくファンが止まってくれた。(ハイブリッドになるならないとかだったような・・・・)

スリープはしたのだが、マウスとかでは復帰してくれない。
仕方がないので電源ボタンをON。
すると驚いたことにBIOSが上がってくる。
あれ、シャットダウンされちゃったの?っと思ってみていると、ちゃんと前回状態に復帰した。
へぇ、最近はこんな風になるの?と思いつつも、古いPCでのスリープ絡みはいろいろと難しいので追及はしない。

で、めでたしめでたしかと思うとNICが復帰してくれない。
駄目じゃん。
有効無効を切り替えてあげれば復帰するが、毎回やるのは面倒でしょう。
image

仕方がないので、PowerShellスクリプトでスリープ復帰イベントを拾って自動化することに。
スリープ解除イベントは以前も使っているのですぐにできそう。
PowerShell: ◆スリープ(Sleep)解除イベントを拾う

スクリプトを作ってスタートアップに入れてOK

っと思ったのだが、実行されない。

Windows8ってスタートアップが実行されないの?
っと色々調べてみるも、実行されるものとされないものとあったり・・・。
組み合わせの影響を受ける?
っと嵌りまくって????

一晩悩んだが、どうも「管理者として実行する」が引っかかっているような感じ。
そもそも7ではUACを切っておけば「管理者として実行」されたのだが、8では明示的に「管理者として実行」する必要がある。

「スタートアップ」自体、8では全面に出ていないのであまり使わない想定?
仕方がないので「タスクスケジューラ」に変更。
最近のタスクスケジューラは高機能なので「スタートアップ」はお役御免なのかも、っと思いつつ「タスクスケジューラ」を探したのだが、なぜか出てこない。(タスクマネージャしか出てこない)
image

きっとアプリケーションって位置づけじゃないのね。(でも7なら出てきたのにぃ・・・)
これまた仕方がないので「taskschd.msc」で起動。

結局のところ、Windowsを使う「こつ」はGUIに頼らないことなのかも知れない。
覚えるのはちょっと面倒だが、バージョンが変わってもずーと使えるものね!!

「管理者として実行」をタスクで実現するには以下の設定を行う。
image

また、タスクスケジューラは実行条件を各種指定できるので、PowreShellでスリープ復帰イベントを拾うのではなく、こちらの機能を使った。
スリープ復帰時、イベントがログに出力されているようなのでそれを拾う指定とした。
image

「操作」はこんな感じ。
image

引数は「-windowstyle hidden -file "C:\Users\minminnana\Documents\PS\ネットワークアダプターをリセット.ps1"」としている。

スクリプトは以下を参照。
PowerShell: ◆ネットワークアダプター(NIC)をリセットする

2012年8月7日火曜日

◆SilverlightでHello World

世の中のメインストリームからはすっかり落ちこぼれた感のあるSilverlightで今更ながらHello Worldしてみる。

個人的には、メインストリームから落ちこぼれたが故に枯れた技術になって社内向けシステムなどに安心して使えるツールになるのではないかと期待している。(なにせこれまではバージョンアップが早すぎて環境が落ち着かず動かすだけで四苦八苦していた・・・)

なにも難しい所はないのだが、IISとかほとんど良く分かっていないのでIISでホストするあたりで迷ってしまった。
きっと基本的な問題すぎて資料があまり見当たらない(^^;

 

環境は、VisualStudio2010(C#),Silverlight5,Windows7のIIS

 

  1. Visual Studioを起動し新しいプロジェクトを選択。
  2. 「Silverlightアプリケーション」テンプレートを選択し、プロジェクト名を適当に指定。
    image
  3. 「新しいSilverlightアプリケーション」ダイアログが表示されるのでそのままOK
    image
  4. ツールボックスから「Label」コントロールを貼り付け、「Content」プロパティに「Hello World!!」を指定する。
    image
  5. ここで一旦実行してみて以下の表示がされればOK
    image
  6. 「ソリューションエクスプローラ―」でWebプロジェクトを右クリックして、「発行」を選択。
    image
  7. 「Webの発行」ダイアログが表示されるので以下の様に指定する。
    image
    サイト/アプリケーションのサイト名はデフォルトから変えている場合はその名前。
    アプリケーション名は任意。
  8. 「発行」ボタンを押してエラーが出なければOK
  9. 「http://ホスト名/アプリケーション名/テストページ名」でアクセスできればOK
    image

 

他のPCから参照する場合はファイアウォールとかを良しなに。

私が最近チェックした記事