2014年4月16日水曜日

WPF での DoEvents

Windows Form の頃は、時間のかかる処理をしつつ画面の変更(進捗率を表示するとか)する時には DoEvents を使っていた。

今回 WPF で DoEvents があるのか?調べてみると、その物自体はなく、自分で実装して使うようになっているようだ。
この実装を行って使うという内容については、結構な件数が確認できたので、メジャーな方法というか、Microsoft のサイト自信に載っているやり方らしい。

Dispatcher.PushFrame メソッド(Microsoft)
http://msdn.microsoft.com/ja-jp/library/system.windows.threading.dispatcher.pushframe%28VS.80%29.aspx

ひとまず、ViewModel にコピペを行って確認をしてみた。
        public DelegateCommand CalculateCommand {
            get {
                if (this.calculateCommand == null) {
                    this.calculateCommand = new DelegateCommand(CalculateExecute, CanCalculateExecute);
                }
                return this.calculateCommand;
            }
        }

        private void CalculateExecute() {
            this.Message = "test message";
            DoEvents();         // ここで呼ぶ

            // 長い処理のつもり
            for(var i = 0; i < 9999; i++) {
                for(var j = 0; j< 99999; j++) {

                }
                this.Message = i.ToString();
                DoEvents();     // ここで呼ぶ
            }

            var calc = new Calculator();
            this.Answer = calc.Execute(this.Lhs, this.Rhs, this.SelectedCalculateType.CalculateType);
        }

        private bool CanCalculateExecute() {
            return this.SelectedCalculateType.CalculateType != CalculateType.None;
        }

        // ↓ ここからを追加
        public void DoEvents() {
            DispatcherFrame frame = new DispatcherFrame();
            Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
                new DispatcherOperationCallback(ExitFrames), frame);
            Dispatcher.PushFrame(frame);
        }

        public object ExitFrames(object f) {
            ((DispatcherFrame)f).Continue = false;
            return null;
        }
        // ↑ ここまで

参考にさせて頂いている様々なソースをそのままコピペの切った貼ったでの確認で、オリジナルの作者の方には申し訳無い気持ちではあるが、なんとか期待通りの動きになる事は確認できた。

わざわざの別実装なので、何か弊害がでのかも知れない点が気がかりと言えば気がかりだったりする。

2014年4月14日月曜日

Adobe Acrobat を使用しての PDF 出力時のエラー

WPF から印刷処理経由で PDF の出力を行う際にファイル出力まで何故か遅い。
この時、フリーの PDF プリンタを使用していました。
まずこのフリーの PDF プリンタに要因があるのかも知れないと思い、
Adobe のサイトから Acrobat の体験版を使用してみる事にしました。

インストールも完了し、PDF の出力処理をすると、ファイルの出力はされずログファイルが出力されます。
そしてログファイルの中身を見ると以下の内容が書かれていました。
    %%[ ProductName: Distiller ]%%
    07kyvr not found, using Courier.
    %%[ Error: typecheck; OffendingCommand: xshow ]%%

    Stack:
    [150 150 150 0]
    ( ト ・ゥ%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%
    %%[ Warning: PostScript error. No PDF file produced. ] %%

・・・よくわからん。。。

途方に暮れそうになりながらも正気を戻し、「ProductName: Distiller」あたりで検索をかけてみました。
すると、同じ内容で困っている方がおられました。

AcrobatでPDFに変換しようとするとログファイルが作成されてしまう
http://plaza.rakuten.co.jp/mscrtf/diary/201302140000/

 まさにドンピシャ!!

どうやらフォントの関係で、上手く出力が出来なかったようです。
ここに書かれているように、Adobe PDF のドキュメントのプロパティの
「Adobe PDF 設定」の「システムのフォントのみを使用し、文書フォントを使用しない」の
チェックを外すと出力されるようになりました。
しかし、このログの内容では普通は解決出来ない気がするが・・・

いずれにせよ、上記で PDF 出力しても結果スピードは変わりませんでした。
XPS で出力すると、もの凄く高速(50倍ぐらい速い)なので今回はこちらで対応をしたいと思います。

2014年4月3日木曜日

Apple から「iTunes Connect: Updates to App Store pricing.」というメールが来た

少し前にはなりますが。。。

Apple から以下の内容のメールが来ました。

----
Dear XXXX,
 
Within the next 24 hours, the following changes will be made to pricing on the App Store.

To account for changes in foreign exchange rates,
App Store retail prices will be increased for the following currencies:

    Australian Dollar
    Indian Rupee
    Indonesian Rupiah
    Turkish Lira
    South African Rand

Additionally, retail prices for Israeli New Shekels and some price tiers for the New Zealand Dollar will be decreased.

Price adjustments on the App Store are made periodically due to changes in foreign exchange rates.
 Within 24 hours, you will see the new Pricing Matrix in the Rights and Pricing section of Manage Your Apps on iTunes Connect.

Updates to iOS Paid Applications and Mac OS X Paid Applications contracts will be available on the iTunes Connect website.
To view all current and outstanding contracts, see Contracts, Tax, and Banking on iTunes Connect.

Regards,

The App Store team

----

毎度の事ながら間違っているかもしれない意訳を

---- 
 24 時間以内に、App Store の価格設定変更について説明します。
以下の通過については、外国為替レートの変動により価格が上昇します。

オーストラリアのドル
インドのルピー
インドネシアのルピア
トルコのリラ
南アフリカのランド

さらに、イスラエルのニューシケルとニュージーランドのドルは価格が下がります。

 App Storeでの価格設定については、外国為替レートの変動により定期的に更新されます。
24時間以内に、iTunes Connect で管理しているあなたのアプリの価格マトリクスを見る事ができます。
更新された価格で、iOS 有料アプリと、Mac OS X の有料アプリの設定を行うには iTunes Connect の web サイトで行ってください。
これらの設定については、iTunes Connect の Contracts, Tax, Banking を確認してください。

それではよろしくね。

App Store チームより
----

要するに価格改定が有るとの事らしいです。
最近まったく iOS の開発とか出来ていないので、こういったメールをみると、寂しくなります。。。

というか、今出してるアプリが iOS 7 に対応してないので、早く直さないと、、、
(ユーザー自分しかいないけど)

2014年3月5日水曜日

Google アカウントの乗っ取りに怯える

良く拝見するブログで、Google アカウントの不正アクセスがあり、被害に遭われていました。

【注意喚起】 Google不正使用される(汗)
http://zeak.air-nifty.com/main/2014/03/google-d8c0.html

最近のニュースでもアカウントの乗っ取りが多い気がします。
人ごとでは無い気がしたので、書かれてある方法で、確認をしてみました。

Google アカウントにログインして、自分のID をクリックして、アカウントのリンクをクリック。
アカウントのページに飛ぶので、セキュリティのリンクをクリック。
最近のアクティビティの「イベントをすべて表示」をクリック。
そうすると、ログイン関係の情報が閲覧できます。

早速、自分も確認してみたところ。。。

???

大阪からログインされている???しかも iPhone から。。。

正直、どん引きかつ何が起こっているのかを把握するのに時間がかかりました。

まず、不正にログインされた場合に起こる被害は、今回のブログの方のように、「クレジットカードやプリペイドカードなどを不正に利用」する。または「スパムメールなどを配信」する。
などが考えられるようです。

影響範囲について理解したのですが、本来は何はともあれ発覚した時点でパスワードの変更と、2段階認証を設定した方が良さそうです。

次にクレジットカードなどの金銭的被害については、カード会社に連絡を入れ利用を止めるようにします。
色々とサイトを見ましたが、最近はカード会社から怪しい利用については連絡が入るようになっているそうです。とはいえ、連絡が来たら運が良かったと思う方が良いかもしれません。

さて、今回自分に起こった事と影響範囲について確認してみました。
まず、金銭的な事について。
こちらは、Android の端末も持っていませんし、Google Play 等でのアプリ購入なども無いために、クレジットカードおろかプリペイドカードも使った事がないため、被害は発生しないはずです。
実際、Google ウォレットのページに移動すると、アカウントの作成から入る状態でしたので、これらのサービスの利用はできない事は間違いは有りませんでした。

次にスパムについて、メールの発信履歴を見ても特にそのようなメールを送っている事はありませんでした。

単なるログインだけの愉快犯かな?それとも金銭的情報がないからあきらめたのかな?と思いつつも、ログインの事実はあるので、ひとまずパスワードの変更と、2段階認証を設定しました。

これで、ひとまず様子見にするかと、思っていました。
が、やはり気持ち悪いので何か思い当たる節が無いかを考えてみました。

今回発覚したのは、実は3アカウントも有ったのです。
そのなかで、パスワードに関しては大体が 8 文字以上となっています。
ログイン履歴は iPhone からとなっていました。
いくら何でも iPhone でブルートフォースをかけながらと言うのは現実離れしているなと思いつつも、最近のスマホの性能は侮れ無いとも思いつつ頭を抱えてしまいました。

次に浮かんだのが、ログインが行われた場所です。
確認すると3つが3つとも大阪府大阪市となっており、IP アドレス的には KDDI からのアクセスとなっていました。
被害に遭われている方の情報と照らし合わせると、東京や名古屋または海外と同じ場所からのアクセスはなさそうでした。
この点から不自然に思えてきました。

ひたすら悩みながらも、何かのきっかけをつかもうと探していると、2段階認証の対策等々を書かれているページで許可するアプリの設定があるとの内容が書かれていました。

たまにはGoogle Accountのセキュリティチェックをしましょう
http://ueblog.natural-wave.com/2013/07/29/check-google-account/

現在は少し画面構成がちがいますが、接続許可のアプリが確認できます。
そこで、現在 Google に接続しているアプリ類を確認しました。
すると、一つのアプリが浮上してきました。それは。。。

MailBox

今回の犯人(!?)は、このアプリでした。
このアプリに設定しているアカウントは 3 つ。しかも、ログイン日付と、MailBox 利用開始時に飛んで来ていたメールが同じ日だったことから、ここでの処理が記録されていたという事が改めて分かりました。

結局、自分が悪いんじゃないか。。。そして、大阪からログインすることになっていたとは。。。
色々な勉強になりました。
ドキッとする感じや、改めてセキュリティに対する考えなどしっかりしないといけないなと。

これを機に今後は定期的にパスワードの変更等を行っていきたいと思います。

2014年3月3日月曜日

五十音 ミミック ベークライト

五十音 のミミックのベークライトを購入しました(信頼文具舗さんより購入)。

信頼文具舗さんのページ(トップではなくミミックが載っているページです)
http://www.wada-denki.co.jp/bunguho/menu2000.html

ミミック(擬態)とは、鉛筆補助軸で見た目が万年筆の様に見えるために、この名前になったとの事。

 


鉛筆補助軸ですが、自分は鉛筆があまり好きではありません。
学生の頃はお世話になりましたが、何時の頃からか鉛筆のすれる感じがいつもでは無いのですがダメな時があります(シャーペンも同様)。
 では、なぜ購入したかと言うと、以前から同じ軸でインクリフィルを交換して使っていけば良いなとは考えていました。その時、信頼文具舗さんのページに紹介されていたローラーボールカードリッジを見てピンと来たわけです。
つまり、鉛筆の軸幅と長さの物であれば、ミミックの中に入れ込めると(ミミックの説明ページにも書かれていますが)。
後に書きますが、細い軸のペンとミミックを使えば考えていた事が実現できると思ったわけです。

細い軸のペンの登場


普段は基本ボールペンやゲルペンを使用しています。
以前はジェットストリームなどの低粘度系のボールペンを頻繁に使っていました。
ここ最近は、ゲルペンが有っています(低粘度 ← 時期によって行ったり来たり → ゲル)。

そのなかでも、ぺんてるのスリッチを現在使っています。


このペンですが、軸が細くなっています。
この細さをみて、ミミックに実装出来ないかと。。。
完全な見切り発車ではありましたが、多少の誤差はカバーできるだろうと思い、ミミックを注文しました。

ミミックへの実装

しばらくして、ミミックが到着しました。
そして、待望のスリッチを入れ込もうとすると・・・


軸の中心部が膨らんでいるようで、無加工では入らない事が判明しました。
また、長さの方も若干長いようで(鉛筆を使って計って見たところ10cm以内でないといけない)、たとえ入っても先端が突き出るようになります。

そこで、スリッチの軸を加工する事にしました。
この軸は、リフィルの段差をつかって固定する様になっており、先端部の金具で保持する部分があれば、後ろの部分は削り落としても問題ない物となっています。
そこで、長さを 10cm 以内にするために後ろの部分をカットし、さらに軸をストレス無くミミックに入るように削りました。
本来は棒ヤスリなどを使って作業を行うとは思うのですが、手持ちに棒ヤスリが無かったので、カッターと紙ヤスリをつかって加工を行いました。
道具が揃っていれば、直ぐに終わる作業だとは思いますが、今回の道具では結構な時間がかかってしまいました。
そして、加工した結果は以下の通り


幸いにして、リフィル部分は無加工で大丈夫でした。
そして、待望の装着した結果は以下の通り


何とか納める事が出来ました。
これで、現状のお気に入りのスリッチと、ミミックの共演が出来るようになりました。

今後の楽しみ

この要領で、他のインクのリフィルを使えるように加工すれば、今後も色々と楽しめそうです。
それと、同時に他の鉛筆補助軸でも同じ事が出来るなと思いました。

ただ、スリッチの軸がたまたま細くて良かったのですが、他の軸はと見てみると簡単に加工できる物がなさそうな気がします。。。
話題の3Dプリンタとか使うと楽に作れるのかなと思いました。。。

とにもかくにも、しばらくはこの組み合わせでペンを堪能したいと思います。
ベークライト製という事で、軸自体にも年経過が楽しめるということなので長い付き合いとなりそうです。


2014年2月27日木曜日

git-flow での push 時のエラー

git-flow にて、ローカルコミット後、フィーチャブランチの完了を行い。
リポジトリへの push を行うと、以下のエラーが出た。

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

どうやらリモートリポジトリが更新されているので、push を拒否したようだ。

対応としては、ヒントに書かれている通り、一度 pull をする。
pull 後にローカルでマージ処理が動いているので、問題無いとは思うが、
ビルドとテストを通して再度 push を行う。
これで上手く行った。

2014年2月23日日曜日

メンターについて

みんさんは、メンターと呼べるべき人は居ますでしょうか?

メンター(コトバンクより)
・ 「良き指導者」「優れた助言者」「恩師」の意。自分自身の仕事やキャリアの手本となり、
   助言・指導をしてくれる人材のことを指す。
・ 人材育成の手法としても用いられており、組織として関与する上司や役職者ではなく、
   関与度の低い他部門の人材や先輩(役職の無い人材)をメンターとして任命し、
   日頃の悩み相談やキャリアパスの見本となる人材を割り当てることもある(メンタリング制度)

上記の内容を読む限り自分には該当する人が居ない状態でした。

自分の認識では、「完璧な人間」を想像していたのですが、年を取り周りを見ていくうちに、
完璧な人間は「いない」と言う事に気づきました。
つまり、人は病気をし、失敗もしたり、欠点もあると言う事。
これにより、メンター像の間口が広がりました。

理想のメンター像の認識を持って、なかなかメンターが居ないという方は、
今回の自分のように「人間完璧な人は居ない」ということを思えば、割と近くにメンターは
いるかも知れません。

また、自分も誰かかのメンターになれる可能性があるので、日々努力を重ねて行こうと感じた次第です。