2014年6月23日月曜日

Vmware Fusion 5 でサスペンドが出来ない問題について(解決)

普段は、iPhone 等の Mac を使う案件よりも Windows の案件が多い。
ということで、必然として仮想環境が必要となる。

現在は、VMware Fusion 5 を使っているが、仮想マシンのサスペンドをしようとすると、
メモリが不足しているやら、大容量ファイルシステムでないため使用できないとかエラーが表示され仮想環境の良さが全く無い状態になっていた。

じゃあ、他の人はと言うと、何ら問題なくサスペンドが出来ている。
少し時間が取れるようになってきたので、調べてみたが全くこの問題は引っかからない。
VMware のページに行ってもサポートらしいサポートはなく、コミュニティで探せ状態。
そのコミュニティも英語なので、少々疲れる。。。

半ば諦め気味になりつつ他の方面から情報を得てみようと思っていると、
以下のページが見つかった。

VMware Fusion : 知っておきたい設定のまとめ。
http://tukaikta.blog135.fc2.com/blog-entry-128.html

このページを見ると、「2GB ファイルに分割」は使わないとかの内容があった。
この部分、エラーメッセージの内容に表示される「大容量ファイルシステム」の部分が有ったのを思い出しファイルシステムがどうなっているのかが気になった。

現状の使用環境としては、Mac 本体は SSD であるが容量が少ないため、外付け HDD を購入しその中に仮想イメージを入れていた。
まさかとは思ったが、外付け HDD のファイル形式を見ると、、、

「MS-DOS(FAT)」

外付けの HDD を購入して特に気にせず使用していたのが間違いだった。

たぶんこれまで悩ませてきた原因はこれだなと思い、HDD のフォーマットとファイル形式を変更した。

ディスクユーティリティで、フォーマットとともに「Mac OS(ジャーナリング)」と、「GUIDパーティションテーブル」に設定しなおして更に、上記の設定まとめページを参考に早速設定を適用してみた。
ちなみに「Mac OS(ジャーナリング)」「GUIDパーティションテーブル」については、
以下のページを参考にさせていただいた。

超簡単!外付けHDDを3分でMac用にフォーマットする方法を画像で解説
http://toneliko.com/561/

で、どうなったかというと・・・、
サスペンドがかかるようになりました!!

あと、これは違うかも知れないが、マルチ画面機能も使えなかったのが使えるようになった。
これで、本来の VMware の機能が発揮されるようになったという事。
かれこれ1年ぐらいの間フル機能を使用せずにいたのが勿体ないやら残念やら。。。

教訓として 、

Mac で外付け HDD を購入した際は、まずフォーマットすることをお勧めします!!

この内容で困っている人がいるかどうか分からないが参考になるといいな。
検索かけても出なかったからこんな状態になる人はいないかいてもココで躓かないんだろうな。。。








2014年6月22日日曜日

Windows Live Write を Google の 2 段階認証でも使う方法

ここ最近は、Windows Live Write を使用していなかった。
なぜなら、投稿の際にエラーが出るから。

image

原因がわからず、調べても今ひとつだったので放置していた。
しかし、長文書く時とかは Live Writer の方が使いやすい。
というわけで、原因を探ってみた。

とは言っても、実際問題アプリ側で特に設定は触っていないので、
外部の問題と言う事になる。

最近でやった事と言えば・・・Google の 2 段階認証。。。
どうやらこれらしい。

Google 2段階認証プロセス後、Live Writer/WordからBloggerへ記事を投稿する方法
http://nasunoblog.blogspot.jp/2014/01/google-2live-writerwordblogger.html

Google にログインしてからの設定で、「アカウント」→「セキュリティ」とすすみ
「パスワード」の項目の「アプリパスワード」を設定すればアプリ専用のパスワードを発行できる。
このパスワードを Live Writer のブログの設定部のパスワードにセットすれば良い。

やはり、自分の蒔いた種だった。。。

Swift で Hello World まで

先日 Apple から発表された新言語 Swift。
発表を見たときは、正直げんなり(新しい言語覚えるの大変だなって)したけど、
使ってみないと分からないと言う事もあり、せめて Hello World ぐらい表示させてみようと思った次第です。

Swift は、まだ Beta 版で Xcode 6 Beta x 版で無いとコンパルできません。
Beta 版を使うには、Apple の Developer Program に加入する必要があります。
年間 7,800 円と少々お高い。アプリ作って App Store に出すなら必須なので、
通常アプリ作っている方であれば試してみる事ができます。

実際には、Developer Program のページからサインインして、iOS のサポートページの
上部に表示される Updated Program Licence Agreement(ライセンス更新)の表記にある Review Agreement のリンクで
更新処理を行う事でリンクがアンロックされる iOS8 のページにある Xcode のダウンロードで初めて入手が
できるようになるという非常に手間な段取りとなります。

また、Xcode 6 Beta 2(2014/06/22時点)は、Mac OS 10.9(Mavericks) からでないと使えないため、
OS を更新していない人は、注意が必要です(自分は 10.8 だったので、この機会に 10.9 へ更新しました)。

さて、ここまで来ると後は、コードを書くだけ。
Xcode を起動して新しいプロジェクトを作成し、途中言語の選択を行える部分があるので、そこで Swift を選択すれば、
利用できます。

プロジェクト作成時点で、Hello World が表示されていれば早くも終了かと思いましたが、結果単なる画面の起動まで
しか用意されていない状態でした。

早速、コードを記述するわけですが、言語仕様がよくわからない状態だったので、以下のページを参考にさせていただき、
予備知識を得た上で作成する事にしました。

新プログラミング言語「Swift」の型と制御構文
http://codezine.jp/article/detail/7842

Objective-C から、現代の流行の言語風に記述できるようになっているようです。
個人的には、行の終わりは「;」を使用したり、括弧の省略とかはない方が好きなのですが、古くさい人間なんでしょうか?
では、事前知識を得た上で作成を行います。

起動すると、ストーリーボードが用意されているので、今回そちらに Hello World を表示させるためのラベルを配置します。
次に、アシスタントエディタにして、ラベルをクリック後、Ctrl キーでエディタ部へドラッグして Outlet 接続を行います。

あとは、viewDidLoad() で、接続したラベルに対して Hello World を代入するだけ。
コードは以下の通り

import UIKit

class ViewController : UIViewController {
    @IBOutlet var label : UILabel
                                                                                 
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        label.text = "Hello World"
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }    
}

以上でビルドすれば Hello World が表示される。
書いたコードは 1 行だけ。。。これじゃ試した内にはいらない。。。
もう少しちゃんとしたコードは後々に

あとは、気になる部分としてテストの部分ですが、いまのところ「Quick」というやつが人気有るらしい。

Quick
https://github.com/modocache/Quick/blob/master/README.md#how-to-install-quick

これも追々やっていきます。

その他、気になる部分としては本当に Objective-C よりも早いのか?
この部分は、後発ということや、Apple 謹製なので外す事はないとは思いますが気になる部分です。
調べてみると、この部分を検証されている記事があり、そこには今のところ Objective-C よりも
遅くなる事があると書かれていました。

SwiftはAppleが主張するほど高速ではない - 最初のベンチマークより
http://www.infoq.com/jp/news/2014/06/apple-swift-performance-hit

コンパイラの最適化部分がまだ調整出来ていないようです。
上記にも書きましたが、Beta 版なので現段階でどうこう言ってもしょうがないという事でしょう。
(Apple 自体も知っている内容だとは思いますが)

また、おもしろい記事として遅い部分は C で記述出来るという内容がありました。

Swiftは遅いので、クリティカルな部分はCで書く
http://qiita.com/moriturus/items/6845c2686ae43ab5e12f

これで、スピード不足は補えますね。。。

最後に、Swift の最新情報を毎週メールで送ってくれるサービスの記事がありましたので、
それを記述して終わります。

Swiftの最新情報を毎週メールで送ってくれるサイト「Swift weekly」
http://www.lifehacker.jp/2014/06/140621swiftswift_weekly.html
Swift weekly
http://swiftweekly.com/

2014年6月17日火曜日

接続されているキーボードの一覧を表示する

バーコードリーダーを使う仕事で、バーコードリーダーが接続されているか確認する処理を実装するようになった。

この場合、シリアルポート接続で使用するのであれば、COM ポートの一覧を取得してその中から取得したいポートを探せば良い。
この時、SerialPort クラスの GetPortNames() メソッドを使用すれば一覧が取得できる。
しかし、この方法だと接続を外した後に同メソッドを使用しても外された事が取得できない。

こういうときは、WMI を使用すれば良い事が分かった。
既に、実現されている方がおられるので、そちらを参考に

C#でCOMポート番号とシリアル接続機器名を同時に取得する方法
http://truthfullscore.hatenablog.com/entry/2014/01/10/180608

さて、COM ポート接続にした場合はこれで良かったのだが、先方に連絡するとCOMポートではなくキーボード接続として扱うようにと言われた。

デバイスマネージャーで確認すると、HID キーボードデバイスとして認識されていた。
この部分を取得すれば・・・と思ったが、他にキーボード等を接続された場合に判断が付かない。
この内容を伝えると、ひとまず接続確認はしなくて良いとの事になった。

一応、キーボードの一覧を取得する方法も調べたので載せておく。
これもまた WMI を使用すれば取得が可能(詳細の判断も出来るのかしら?)。
今回、Windows フォームアプリでボタンを押したら一覧を表示する内容とした。
参照設定に、「System.Management」を設定する必要がある。

        private void button1_Click(object sender, EventArgs e) {
            ManagementObjectSearcher oMS = new ManagementObjectSearcher();
            ManagementObjectCollection oMC;
            string sMsgStr = "";

            oMS.Query.QueryString = "SELECT * FROM Win32_Keyboard";
            oMC = oMS.Get();

            foreach(ManagementObject oMO in oMC) {
                sMsgStr = sMsgStr + "名前:" + oMO["Description"].ToString() + "\r\n";
            }

            MessageBox.Show(sMsgStr);
        }

WMI は、以下のページを参考にさせて頂いた。

キーボードの種類を取得する: Win32_Keyboard - WMI Sample (VBS)
http://www.wmifun.net/sample/win32_keyboard.htm

2014年6月9日月曜日

Swift の学習サイト(メモ)

去年の10月頃から全く iPhone のアプリの開発していない。
妙に仕事が忙しい為もある(自分で設置した爆弾が爆発してそれの対応に追われる日々だったりする)。

そんな中、Apple が先日の WWDC で Swift という言語を発表した。
年取ってくると正直新しい言語とか拒否反応が出てくるのだが、この業界ではその考えしてると淘汰されていくので、嫌でも追いかけて行く必要がある。。。

さっきも書いたが、自分のバグ回収でに追われる日々で Swift の内容がよく分からないが、Objective-C よりも早く、簡単に書けるというものらしい。

そんな中、学習サイトが紹介されていたので、覚えとして貼っておく。

Lean Swift
http://www.learnswift.tips/

他に日本語であれば Qiita に情報が集まっている気がする。

Qiita
https://qiita.com/

落ち着いたら、、、やろう。。。

2014年6月4日水曜日

C# Dictionary の連結

C# の Dictionary 型のデータの連結方法が分からなかった。
調べてみると、stackoverflow にあった。

How to add 2 Dictionary contents without looping in c#
http://stackoverflow.com/questions/712927/how-to-add-2-dictionary-contents-without-looping-in-c-sharp

サンプルはそのままだけど書いてみた。
class Program {
    static void Main(string[] args) {
        Dictionary dict = new Dictionary();
        dict.Add(0, "test");

        Dictionary addDict = new Dictionary();
        addDict.Add(2, "foo");

        addDict = addDict.Concat(dict).ToDictionary(x => x.Key, x => x.Value);

        Console.WriteLine("Data Count = {0}", addDict.Count);

        foreach(int key in addDict.Keys) {
            Console.WriteLine("{0} : {1}", key, addDict[key]);
        }

        Console.ReadKey();
    }
}    // class End...


上手く動いている。

iPhone に「このアクセサリは使用できません」が表示される

iPhone のバッテリーが少なくなったので、USB にて充電を試みるが、「このアクセサリは使用できません」のメッセージが出て充電がされない。

このメッセージは正規品を使用しないときに表示されると聞いた事があるが、今回は純正のライトニングケーブルを使用しているので、問題は無いはず。

先日から変わった環境と言えば、USB ハブから更にカスケードで USB ハブを使用し、今回そこから iPhone への接続を行っている点。

調べてみると、やはり電圧がハブ経由だと不足している様で表示されているようだ。
実際、カスケード前のハブに挿すと問題なく充電できているから、間違いないだろう。
ってことは、バスパワーではなくセルフパワーのにするともう少し充電が早くなるって事か?

それはそうと、今回のメッセージは普通に見ただけだと何の事やら?ってなる。
つまり、原因が書かれていないのが良くないんだけど、Apple的にはそこまでは気にしていないって事なのかしら?




2014年6月2日月曜日

Vim が 「.un~」ってファイルを作るようになった

タイトルそのまま。
そして、そのままを調べると、直ぐに見つかった。
度々、お世話になっている Kaoriya さんのページに書かれていました。

Vimが変なファイルを作るようになった(Kaoriyaさん)
http://www.kaoriya.net/blog/2014/03/30/

投稿日をみると、3 月ではないか・・・何故今頃気がついたのか・・・それはさておき、このファイルは undo の情報を保持するファイルのようで、これでいつでも undo 出来るって内容かな?

不要であれば、オプションで切る事も出来るみたい。
:set noundofile
その他、swap や backup 同様出力先を指定できるので、同じく場所指定の出力としておけば幸せかも知れない。
:set undodir=C:/vim/undo