ページ

2012年9月28日金曜日

◆Windows Live Writer でIMEがONにならない時の対処方法

IMEがオンにならない不具合はいくつかのアプリケーションで発生する。
IEなんかでも出た記憶があるが、最近Windows8にしてから「Windows Live Writer」で頻発する。

そんなときは、一旦タイトル部分にカーソルを持って行ってIMEをオンにしてやるとうまくいく。
image

◆管理者として実行する

Windows8はUACを切っていても勝手には管理者として実行してくれないようだ。

毎回コンテキストメニューから管理者として実行をするのは面倒なので(それが正しい姿かどうかは別として)、常に管理者として実行するように設定してみる。

アプリケーションを管理者として実行するには、そのショートカットのプロパティを開いて「ショートカット」タブの「詳細設定ボタン」をクリックする。
image

詳細プロパティ画面で「管理者として実行」をチェックする。
image

ただし、この方法はあくまでもそのショートカットからアプリケーションを起動したときだけ有効になるので、対象のファイルをダブルクリックして拡張子の関連付けから起動された時には管理者になってくれない。

そのような使い方をしたい場合は、「ショートカットタブ」ではなく「互換性」タブを開いて「管理者としてこのプログラムを実行する」をチェックする。
image

2012年9月24日月曜日

◆Windows8でのSkyDrive

Windows8ではSkyDriveがデスクトップに統合されてエクスプローラで扱えるようになった。
image

何台かWindows8をインストールしたのだが、こいつが有効になっていないPCがある。
フォルダはあるのだが、アイコンが通常のフォルダの形。

他のPCと何が違うのか思い出してみた。
記憶が定かではないが、OSセットアップ時に「このPCにあるファイルに別のデバイスからアクセスする」のチェックをしなかった気がする。

Windows8では会社のPCから自宅のPCのファイルにアクセスしたりできるらしいが、おそらくその機能を有効にするかどうかという指定。
だと解釈したのだが、これを有効にしないとSkyDriveをエクスプローラから使うこともできなくなるって感じなのかな。

っで、これを有効にしようと思ったのだが、どこで設定変更するのかさっぱりわからない。

色々と調べた結果から想像するに、OSインストール時に当該機能をチェックした場合、SkyDrive用のデスクトップアプリケーションが一緒にインストールされるのではなかろうか。
SkyDriveが機能しているPCでは「プログラムと機能」画面にSkyDriveが表示されている。(自分でインストールしたわけではないのに)
image

SkyDriveのサイトに行ってみると以下のような感じでダウンロードできるようになっていたのでこれをインストール。
image

エクスプローラに表示されるアイコンがSkyDriveのアイコンに変わり無事同期がされるようになった。

要はWindows8でもそれ以外のバージョンでも、このアプリを入れればOKって事ね。

以前も自分で設定すればSkyDriveをエクスプローラから扱うことは可能だったが、リアルタイムにSkyDriveと繋がるため速度的に問題があった。

今回はその速度から類推するにDropBoxなどと同様ローカルにキャッシュ(同期)するのだろう。

2012年9月21日金曜日

◆Windows Server 2012 を ちょっと試す

Windows8君、唯一新機能として惹かれていたのがHyper-Vだったのだが、CPUがSLATをサポートしていないと機能しない事が判った。

なんともはや、いけてない。

Windows8は、基本的にはタブレットOSだろうから新規に導入するならタブレットだろう。
でもHyper-Vが使えるなら開発で使用している古めの既存PCに導入しても良いかなと思ったりしていた。
だいたいはVista時代のPCでダウングレードしてXPで動いているやつ。

しかし、この当時のPCはみなCore2世代なのでSLATはサポートされない。

Windwos Server 2012 ではSLATが無くても動くというから単なる使用制限なのだろう。
多少レスポンスが悪くても動かしてくれたらいろいろ用途が開けるのに・・・。

企業ユーザーではほとんどWindows8はスルーだねぇ。
まぁ、MS自身も企業ユーザーは相手にしていないのだろう。

というわけで試しにServerの方を少し試してみた。
Hyper-Vは一段とセットアップが楽になり、無線LANなんかも簡単に対応できるようになっている。

ちょっと嵌ったのがFlash君。
IEに統合されたと聞いていたのだが、動いてくれない。

しかもインストールしようとすると、「すでにインストールされている」と怒られてしまう。
どうも、「デスクトップエクスペリエンス」機能をインストールする必要があるようだ。
(こいつのありかが判りづらい・・・)
2012Serverではログオン時にデスクトップ表示がデフォルトなのだが、こいつを入れると意味もなく旧称メトロのスタート画面表示に代わってしまい閉口する。(><)

また、Windows8では標準でドライバーもインストールされたPCでもServer2012では色々と自分でドライバーを入れる必要がありなにかと面倒。

また、作業をしていて気づいたのだが、Windows8に比べるとブラウザの動作が明らかに遅い。
サーバーとして使うには気にならないと思うが、デスクトップの代替として使うのであればちょっと気が滅入る。
Chromeにしてもやっぱり遅かったので、なにかしらセキュリティ的な要因だろうか・・・。

残念!!

さて、自宅の環境はどうしようか・・・。

2012年9月20日木曜日

◆Windows8 Mailを使う

Windows8を入れて少し経ったが旧称メトロアプリはほとんど使っていない。
ただ、スタート画面を見るとなにやらメールが来ているのでクリックしてみた。
シンプルなメールアプリだが、ちょっと使ってみるとどうも2週間以前のメールを取得できていないようだ。
どこかに設定があると思うのだが、どうにもこうにも見当たらない。
image

Windowsと思っていてはいけないのだろう。

試行錯誤したところ、どうやらアプリケーション画面の中ではなくチャームの方に用意されるようだ。

  1. チャームを表示して「設定」をクリック
    image
  2. 設定画面から「アカウント」をクリック
    (通常のPCであれば Win+I で直接ここに来た方が簡単)
    image
  3. 既存のアカウント名をクリック
    image
  4. やっと設定画面にたどり着いたので必要な設定を変更する
    image

少しずつ旧称メトロアプリの文化に慣れていく必要がありそうだ。

2012年9月14日金曜日

◆プレビューウインドウの勧め

エクスプローラにプレビューウインドウなる機能がある。
その存在は以前から知っては居たのだがなぜかあまり使っていなかった。
多分、プレビュー対応しているファイルとしていないファイルがあったから・・・。

調べてみると、ちょっと手を加えるだけで非常に便利なる事に気が付いた。

とりあえずはテキスト系のファイルをすべてプレビュー可能にしておくと非常に便利。
MTG Blog: ◆エクスプローラのプレビューウインドウにログファイル(Log)を表示させる

Office系文書はOfficeがインストールされていればプレビュー可能なので、あとはPDFかな。
PDFは以下で提供されているHandlerをインストールするとプレビューできるようになる。(ついでにOUTLOOKでもPDFがプレビュー可能になる)

これで、かなり快適度UP

Windows8+Office2010環境でも試してみたが問題なく動作した。

ちなみに、プレビューウインドウは常にONにしておくと環境によっては重い場合もあるので「Alt + P」で適宜ON・OFFするのが良いと思う。

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. }

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

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