2014年11月16日日曜日

東京小猫商会 真鍮 ふりだしボールペンを購入した

今回は、東京小猫商会 真鍮 ふりだしボールペンを購入したので、紹介をします。
購入は、ミミックを買ったときと同じく信頼文具補さんから。

まずは、全体像から

ペン先をしまっているとき
 
ペン先を出したとき
下に向けて後ろの部分を押す事により、ペン先が出てきます。
サイズとしては、しまっている状態で 9 cm、出して 11.5 cm と少し短めのサイズです。

サイズの小ささや、ギミックもありますが、一番良いと思ったのは、インクが 4C 規格を採用しているところ。
つまり、ゼブラのシャーボXの替え芯や、ジェットストリームプライムの替え芯を使う事が出来きます。

軸は長く使って、芯を交換していくと言うのが好きな人には良いかも知れません。
注文後届いて早速芯の換装方法を見たのですが、少し分かりにくかったので、分解後の写真を載せておきます。

そのまえに、全体像その2


分解は後ろの部分を回して、行っていきます。
最初ということもあるのか少々力を入れて外していきます。
これで、芯の部分が取れます。
これだけみると、どうやって芯を出しているのか気になったのですが、構造としては、シャーペンの先のように後ろのノックを押すと、チャックが外れて、外すと閉まる様になっていると言う物でした。
とてもシンプルですが、良い機構だと思います。

さて、本題の芯の換装ですが、取説を見ると先を回して交換しますと有るのですが、何処がどのように外れるのかが分からなかったため、分解するまでに結構時間がかかりました。

そして外した結果はこちら

想像通りではあったのですが、なかなか固くなっており、一体化しているのではないかと思ったぐらいです。外すに当たり、滑り止めのゴムや、ペンチをつかって外しました。
作業途中に支柱?を曲げてしまうのを防ぐように気を張って作業したので結構疲れました。

最終的に全分解した結果はこちら
以上で、作業完了。
もともと装着されていたインクが勿体ないので、分解後は元のインクのまま組み立てて使うようにしました。

小さめで好きなインクが使えるペンを探している方にぴったりなペンだと思います。

2014年11月9日日曜日

Virtual Box で CentOS7 をインストールするが進まない

備忘録として。

Windows で Virtual Box を使用して、CentOS7 のインストールを使用としたが、インストーラ画面から先に進まない(インストールを選択して Enter キーを押すが、画面に何も表示されず黒い画面のまま)。

最初は時間がかかっている物と思い放置していたのだが、どうも違う気がした。
検索するにも、この状態の検索ワードがピンとこなかったので対処法が見つからない。

インストールを行っている方々のどのインストール方法を見ても今時の GUI でのインストールなので、少し前のテキスト画面でのインストールが出来ない物かと調べてみたが無さそうだった。

しかし、グラフィックを指定してのインストールオプションの指定を行っているという情報があったので、試してみると以下のエラーが表示された。
This kernel requires an x86-64 CPU, but only detected an i686 CPU.
Unable to boot - please use a kernel appropriate for your CPU.
どうやら、CPU の設定が適していないと怒っているようだ。
今使用しているホストのOS 32 bit なので、Virtual Box の仮想ディスクの作成時に、バージョンの項目を「Red Hat(32bit)」を選択していたが、これが間違っていたようだ。

バーチャルディスクの設定で、一般にある「基本」タブの「バージョン」を「Red Hat (64bit)」にして、インストールを行うと、先に進むようになった。

せめて、オプション指定しなくても今回のエラーを表示してくれていれば嬉しかったのだけどなぁ。。。

2014年9月26日金曜日

Atom エディタ Term2 パッケージインストールでエラーが出た

Atom エディタ使ってますか?
何だかんだでダウンロードしたものの使っていない状態でしたが、Windows のアルファ版がダウンロード可能になっていたので、これをきっかけに少し触ってみました。

Atom.io
https://atom.io/

触ってみたと言っても、環境設定の部分だけですが・・・
今回はGUIで操作できる部分で設定してみました。


設定できる部分は、フォントや制御文字の可視不可視、キーバインド、拡張用パッケージ、テーマとなっています。

機能の拡張のパッケージは、パッケージ名を入力して、ダウンロードと簡単に行えます。
そこで、各所から評判の良いパッケージをインストールしてみたのですが、その中で Term2 のインストールだけ失敗してしましました。

メッセージとしては、
「Installing “term2@0.9.4” failed.Show output…」
うーんこれだけでは、よく分からん。

別にターミナル使えなくてもいいやと思っていたのですが、先の事を考えると使えるに越した事無いので、調べてみました。
すると、同じ悩みを克服されている先人が居られました。

AtomにTerm2を入れた時に若干ハマった話
http://qiita.com/n0bisuke/items/10b0960160d233d8fce5

こちらをみると、自分が使っている GUI からのインストールではなく、ターミナルから apm(Atom Packages Manager)コマンドでインストールされていたので、同じくターミナルでインストールしてみましたみました。

すると、エラー内容がほぼ同様の内容だったので、ページに合わせて実戦してみました。
これで、上手く行くだろと思っていたのですが、途中でつまづきが。。。

$ sudo npm update -g node-gyp    ← nmp コマンドがないと怒られる
$ sudo rm -rf ~/.atom/.node-gyp
$ xcode-select --install
$ apm install term2

つまずいた内容としては、nmp コマンドが呼び出せないためのエラー。
nmp(Node Package Manager)が無いとかって・・・これまた調べると、
nmp コマンドの実体はあるけど、シンボリックリンクが張られていないがために、エラーになっていました。

この部分は、nmp コマンドのシンボリックリンクを張り、バージョン確認ができる所まで確認して、再度インストールを行うと上手くインストールができました。

$ ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm

苦戦しましたがなんとか、インストール完了という事で。
Atom は、後発なので期待が大きいエディタの一つです。
個人的には Markdown プレビューが有るのが良い感じですが、書式が標準準拠の様なのでそこが少しだけ変えられないかなと思っていたりする。。。

2014年9月21日日曜日

手書きによるタスク管理(Bullet Journal)

Gigazine さんより 「シンプルなノートであらゆる情報をまとめてタスク管理をする方法」 という記事を見た。

シンプルなノートであらゆる情報をまとめてタスク管理をする方法
http://gigazine.net/news/20140919-bullet-journal/

Bullet Journal という方眼ノートを使用した手書きのタスク管理方法の紹介だった。
使い方は、Gigazine さんのページを見ればよく分かり動画もあるので一緒に見ればさらに理解が深まると思う。

Bullet Journal
http://www.bulletjournal.com/

スケジューリングについては、数年前に自分でもフォーマットを作って試してみたが、フォーマットを考えたが、今ひとつ市販の物と変わらないと思い止めてしまった。
結局今は欲しい内容のフォーマットが印刷されている物を購入する事で現状に至っているわけだけど、こういうページを見ると再び自分に合ったフォーマットと言うかルールを使った物を使いたくなってくる。

通常のスケジュール等は、今の物で事足りているので、その他の部分で活用できればと思っている。例えばプロジェクト単位の仕様記録とかが良いかもしれない。

手書きが面倒くさいと言う人も居るし、まわりの人はあまりメモを使用せずに仕事を進めている。脳内で内容をまとめてアウトプットしているんだろうけど、自分は脳内メモリが少ないためか紙に書いて記憶・記録・解析をしないと上手く進められないので、こういった方法は合っていると思う。

問題は、動画等に使用している方眼のカッチョイイノートは、LEUCHTTURM 1917 で似たものとなると モレスキン とかになるんだろうけど、結構高いんだよな。。。
雰囲気も重要と思うけど、試しにやるにはコクヨの大学ノートでも良いんですけどね。

2014年9月14日日曜日

いろいろ備忘録

やらんといかん事(ruby warrior の記事とか)あるけど、今ひとつやる気が出ない。

ただ、気になる記事があったので、それだけ書いておく。

遊びながらJavaプログラミングが習得できるゲームを米大学チームが開発中
http://www.inside-games.jp/article/2014/09/13/80522.html

CodeSpells
http://codespells.org/

遊びながらプログラミングが学べるって言うのはすばらしい。
脳的にも楽しみながらの学習の方が効率が良いと何処かでみたので、これは良いかも。
一昔前の上級プログラマはウィザードとか呼ばれるとか何とかあった気がするが、これでまさに魔法使いになれるってことですね。
ただ、今すぐに遊べるわけではないようで、一般的には来年の9月とのこと。
紹介動画みたら、グラフィックもすごいので、PCのスペックが低いとカクカクになりそう。

つぎに、Swift をオンラインで実行するサイト。

RunSwift
http://www.runswiftlang.com/

Swift 自体は、Xcode6 beta で動きを確認できるけど、Mac が必要。
Web サービスなので Mac は不要なのが良い点か。
GUI 部分をのけたロジック部分であれば、GUI は不要なのでこのサイトで思いついたロジックの動作を確認することぐらいはできるかも。

同じく、Ruby をオンラインで実行するサイト。

Ruby Fiddle
http://rubyfiddle.com/

簡単な動作の確認で、環境をつくるのが面倒なときに便利。
エディタ立ち上げて、実行コマンド打たなくても、ボタン一つで結果がわかる。

業務になると、環境はあるのでこの手のサイトは不要だが、学習中はあると便利だと思う。
(環境作るのも学習の一つではあるが)

2014年8月10日日曜日

Ruby Warrior をやってみる(Level3)

前回に引き続き、今回は Level3 をやっていきます。

画面を見てみると、敵の数が増えています。


そして、例のごとく説明文

The air feels thicker than before. There must be a horde of sludge.
Be careful not to die! Use warrior.health to keep an eye on your health, and warrior.rest! to earn 10% of max health back. 


毎度の意訳

空気がさっきよりも重たく感じる。どうやら敵の大群が居る感じがする。
殺られたらだめだ!warrior.health を使えば、戦士の体力を確認できる。
そして warrior.rest! で最大体力の 10% の体力を回復する事ができる。

とのこと。

戦士の初期体力が 20 で、敵は 3 回の攻撃で倒す事ができる。
つまり 2 回は敵の攻撃を貰う事になる。
敵の 1 回の攻撃で -3 のダメージなので、 (-3 x 2) x 4 = -24 となり、Level2 のままではクリアできない。

敵一体であれば、6 より大きい体力があれば倒す事ができる。
この判定を行うためには、自分の体力を見て判定するとよいので、今回の warrior.health を使えば乗り切れる体力かどうかの判断が出来る。
そして、体力的にまずい場合は warrior.rest! を使用すれば、最大体力の 10 % 回復できるということで、今回の場合は最大体力 20 の 10% で 2 回復できる事になる。

これを踏まえた上でプログラムを書いていく。

当然のことながら、目の前に敵がいるのに回復などしているとダメージ量と回復量の差によってクリアができないので、目の前に何も居ない事を見てから回復動作を行う必要がある。

これを踏まえて書いたコードがこちら

class Player
  def play_turn(warrior)
    if warrior.feel.empty? then
      # 目の前が空いている
      if warrior.health <= 6 then
        # 体力が 6 以下の場合は回復
        warrior.rest!
      else
        warrior.walk!
      end
    else
      # 敵がいる
      warrior.attack!
    end
  end
end

上手くいきました。
ここでは、条件分岐での関係演算子の使い方が分かりました。

まだなんとか行けるね。

RMagick を Windows にインストールしてみた

今回は Windows への RMagick のインストールを行ってみた。
RMagick というのは、ruby 用の画像加工ライブラリで、トリミングやサイズ変更などを行う事ができる物。

元々は、ImageMagick という Unix 系でのライブラリのようだ。

さて、発祥が Unix 系なので Linux 等の機械にインストールするのが筋なのだろうが、手持ちが Windows 機なので、こちらでインストールできるかやってみる事にする。
仮想環境で、Linux を入れて行う方法もあるが、PC が非力なために極力ネイティブで行いたかった。

どんな時でもそうだが、Unix 系やその他の環境からの Windows 機への対応は良くない印象で、今回も案の定だった。
結局、トライアンドエラーでインストールできたので(しかも今ひとつどれが有効だったのか核心がない。。。)、記録だけ残しておく。

まず、インストール時の環境確認をした。
Ruby 自体がインストールされているかを確認した。
ruby -v
ruby 1.9.3p392 (2013-02-22) [i386-mingw32]
少し古いが、たぶん去年 Rails の確認を取る際に使用したままの物だろう。
フォルダを見ると RailsInstaller とかいうフォルダが存在していたので間違いない。

次に、gem の update を行った。
正直 ruby にまだ入門したばかりなので、このアップデート方法が有っているかは分からない。
gem update
rails の rdoc で恐ろしく時間がかかった。
止まったのかと思って、強制終了使用かと思ったぐらいだったが、放置して別の事していたら終わっていた。それでも1時間はかかったと思う。

時は来たという事で、さっそく RMagick のインストールをと思ったが、よく分からないので、以下のページを参考にさせていただいた。

君の瞳はまるでルビー - Ruby 関連まとめサイト
RMagick を Windows 7 にインストールする方法

http://www.ownway.info/Ruby/index.php?rmagick%2Fhowtoinstall%2Fwindows

欲しいタイトルそのままで良かった。
このページを追いながら、省けるところは省いて作業をしてみたが。。。ダメでした。。。
手間を惜しんでせこくせこく小手先だけでの対応で色々やってみたけどダメだったので、一通り上から作業していく事で成功した。

やった事と言えば、

1. Development Kit の更新
上記に書いているとおり、インストールしているのは RailsInstaller を使用した Ruby ということもあり、Development Kit が古いのでは無いか?という推測の元更新を行ってみた。

RubyInstaller のページから Development Kit をダウンロードする。

RubyInstaller for Wndows
http://rubyinstaller.org/downloads/

現在使用している Ruby は、1.9.3 だったので、それに対応した物をダウンロード。
(DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe 2014/08/10時点)

ダウンロードしたファイルを展開し、RailsInstaller のフォルダの DevKitへコピー。
ここを最初別の場所に置いて、後からフォルダ参照されない無い事に気がついてやり直したのは言うまでもない。

ファイルを置き換えたら、セットアップが必要とのことなので、フォルダまで移動してコマンドを実行。
cd {Development Kit のインストールディレクトリ}
ruby dk.rb init
ruby dk.rb install
2.ImageMagick のバージョンとインストール先ディレクトリの指定
RMagick をインストールするにあたり、ImageMagick のインストールが必要らしい。
そこで、インストールするバージョンだが、公式から最新版を取得して、またそのままインストーラのデフォルトのまま作業をした。
インストールを成功されている方の情報をみると、今のはバージョンが有っていないので、成功例があるバージョンを使用するようにした。

ImageMagic公式(今回ここは使わないけど参考に)
http://www.imagemagick.org/script/binary-releases.php#windows

ちなみに今回失敗した時のバージョンは、ImageMagick-6.8.9-6-Q16-x86-dll.exeだった。

今回は、参考サイトにある旧バージョン取得ページから成功例のある  ImageMagick-6.8.5-8-Q8-x86-dll.exe を使用してインストール。

SUNNET(スエーデンの大学?)
http://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/binaries/

インストールの時には、インストール先フォルダを C:\ 直下にして
オプションは、
・ Add application directory to your system path
・ Install development headers and libraries for C and C++
にチェックを入れてインストールをする。

インストール後は、システム環境変数をセットする。
CPATH = {ImageMagick のインストールディレクトリ}/include
LIBRARY_PATH = {ImageMagick のインストールディレクトリ}/lib
セット後は、設定を反映させるために再起動をかけておく。

3.RMagick インストール時に gem にバージョンを与える
成功されている方のインストールでは、gem install の時にバージョンの指定を行っていたので、参考にしてバージョン指定してみた。
gem install rmagick - v 2.13.2
これで RMagick のインストールが成功した。


X.失敗の振り返り
ちなみに失敗したときはログを見ろと言う事で、指定されたログを見てみた。
....
======================================================================
Sun 10Aug14 13:52:13
This installation of RMagick 0.0.0 is configured for
Ruby 1.9.3 (i386-mingw32) and ImageMagick 6.8.9
======================================================================



make
generating RMagick2-i386-mingw32.def
compiling rmagick.c
In file included from rmagick.c:13:0:
rmagick.h:81:2: error: #error Specified QuantumDepth is not supported.
rmagick.c: In function 'Magick_colors':
rmagick.c:40:5: warning: implicit declaration of function 'GetExceptionInfo'
rmagick.c:42:5: warning: passing argument 2 of 'GetColorInfoList' from incompatible pointer type
C:\Program Files\ImageMagick-6.8.9-Q16\include/magick/color.h:75:5: note: expected 'size_t *' but argument is of type 'long unsigned int *'
rmagick.c: In function 'Magick_fonts':
rmagick.c:90:5: warning: passing argument 2 of 'GetTypeInfoList' from incompatible pointer type
C:\Program Files\ImageMagick-6.8.9-Q16\include/magick/type.h:98:5: note: expected 'size_t *' but argument is of type 'long unsigned int *'
rmagick.c: In function 'Magick_init_formats':
rmagick.c:178:5: warning: passing argument 2 of 'GetMagickInfoList' from incompatible pointer type
C:\Program Files\ImageMagick-6.8.9-Q16\include/magick/magick.h:135:5: note: expected 'size_t *' but argument is of type 'long unsigned int *'
make: *** [rmagick.o] Error 1
ハッキリ言って、これだけ見て分かったら何も困らないのだが、、、
今見ると、RMagick のバージョンが 0.0.0 になっていたりするのが気になる。
その他は、ImageMagick のバージョンが最新という点とインストール先が Program Files の下という点か?
Dev Kit も見当違いのフォルダに置いていたりとしていたので、結局核心を突く前にインストールが成功してしまった。
問題点の検証する気が起きないので、次出たら作業ログを取ってやっていこう。。。

参考ページには、インストールできたからと言ってRMgacik が動くわけではないとの事を書かれてあったので、サンプルページを作成、実行しエラーが出ない事を確認した。
(requrire でライブラリが読めるかの確認だけだけど)

はて、困っている方の参考になるであろうか心配である。。。

2014年8月8日金曜日

Ruby Warrior をやってみる(Level2)

昨日に引き続き Level2 です。
Level1 をクリアして次の画面へ進むとセーブの確認と、FaceBook に投稿が出来るっぽいのですが、FaceBook は使っていないのでここは SKIP LOGIN を選択します。
image
すると、次の Level2 が表示されます。
image
上部の説明文には
It is too dark to see anything, but you smell sludge nearby.
Use warrior.feel.empty? to see if there is anything in front of you, and warrior.attack! to fight it. Remember, you can only do one action (ending in !) per turn.
。。。意訳します。
とても暗く何も見えないが、臭いを感じ取る事はできる。
warrior.empty? を使えば、目の前に何かあるか確かめる事が出来る。そして warrior.attack! を使って戦う事が可能だ。
しかし忘れないでくれ、お前が動けるのは1ターンに一度だけだという事を。
こんな感じ?
要するに新しいメソッドが増えたって事ですね。
ここら辺は、画面の ABILITIES のボタンをクリックすると内容が書かれています。
image
これをみると、戦士の行動以外に周りの状況判断のメソッドも有る事が書かれています。
使い方は、warrior.feel.メソッド とやるみたいです。
(今回の .empty? も書かれています。)
画面の説明では、warrior.feel.empty? を使えばいけそうなので、早速使ってみたいと思います。
このメソッドは、目の前が空いているか?のチェックを行うもので、空いていれば true が返ってきて、何か障害物があれば false が返ってくる様になっています。
この判断を行うには if 文を使えば分岐が出来るので、今回は以下のような実装になります。
class Player
  def play_turn(warrior)
    if warrior.feel.empty? then
      warrior.walk!
    else
      warrior.attack!
    end
  end
end

見たまんまですけど、目の前が空いていれば歩き、空いていないなら敵がいる物として攻撃を行うようにしています。
あとは、特に説明する必要がないので、実行してみます。

道中を歩き、敵がいるところでは攻撃を行い、敵がない無くなったら再度歩き出してゴールまで行きクリアの動作となります。

image

今回も上手くいきました。
ここで得た内容は、if 文による分岐と、feel にぶら下がるメソッドです。

次回も頑張ります。

2014年8月7日木曜日

Ruby Warrior をやってみる(Level1)

Ruby を楽しみながら学習できるサイト「Ruby Warrior」がどこかで紹介されていたのでやってみようと思う。


Ruby Warrior
https://www.bloc.io/ruby-warrior/#/

検索すると、回答サイトなどもあるので、詰まっても大丈夫。。。

さて、サイトを進むと、戦士のセーブ情報が表示され、次に名前を付ける事が出来る様になっている。ひとまず名前は初期の物でいいとする。
次に、初心者か中級者かの選択がある。
Ruby は、あまり使ってないので、とりあえず初心者を選択し、次へすすむ。

すると、レベル1が表示された。


You see before yourself a long hallway with stairs at the end. There is nothing in the way.
Call warrior.walk! to walk forward in the Player 'play_turn' method.

ああ、いきなり英語が分からない。。。
Google 翻訳で読んでみよう、、、

あなたは自分の前に最後に階段の長い廊下を参照してくださいの方法では何もありません

・・・???
さらにわからん。
ひとまず意訳でいこう。

「あなたの前には長い廊下があり、最後に階段がある。ただそれだけ」
「Player の 'play_trun' メソッドで warrior.wark! を呼んで前に歩かせてくれ」

こんな感じか。まあ、画面見たまんまなんですけどね。
なので、早速コードを書いていきましょう。

画面の下の部分にコードを書くエディタがあるので、そこに記述して Run! ボタンを押せば、コードが実行されていきます。

今回は、歩くだけなので相当簡単。

class Player
    def play_turn(warrior)
        warrior.walk!
    end
end

こんな感じですね。
ちなみに一回の play_trun() で、戦士の動作を行う事は1回のみと言うルールみたいで、warrior.walk! を続けて書くと実行時にエラーで怒られます。


warrior.walk! を一回にして実行すると、ターンが繰り返され無事階段まで辿り着き
の表示が出て次のレベルへ。
一応意訳で、 「成功!次の旅へ Ruby 戦士」うーんいまいち。
もうすこしゲームっぽく「やったぜ!Ruby 戦士よ次の旅へ向かうんだ!」かな?

ひとまず、Level1 は簡単で良かったです。

ここでは、クラスと、メソッドの記述方法、引数は warrior で、消しちゃいましたが "#" でコメントが扱えると言う事がわかりました。

この調子で次回は Level2 をやってみたいと思います。


2014年8月3日日曜日

ノートPCの日本語キーボードと USB 外付け英語キーボードを共存させる(その2)

以前外付け英語キーボードの記事を書いた。

ノートPCの日本語キーボードと USB 外付け英語キーボードを共存させる
http://tizio1976.blogspot.jp/2013/11/pc-usb.html

そこでは別途購入した外付け日本語キーボードが有るので、使用しないとしていたが、記事を書いた状況から状況がかわり、購入していた外付けキーボードは現場で活躍する事になったので、再度外付けキーボードを使用する事になった。

今回は前回と違う方法でやってみようと思う。

ポイントは、
・ ノートPCは日本語キーボードで外付けは英語キーボードという環境と言う事。
・ IME の変更を出来れば右ALTで行いたい事。
の2点。

まずは、ノートの日本語キーボードを生かしつつ、外付けは英語キーボードで動作させるという部分。
これは、以下の記事を参考にさせて頂きました。

Windows7でUSBキーボードだけをUS配列として認識させる方法
http://calcurio.com/wordpress/?p=144

前回もレジストリを触ったが、今回もレジストリを触るようになる。

まずはレジストリエディタを起動。
スタートの「プログラムとファイルの検索」に「regedit」と入力して Enter キーで起動させる。
ツリー表示[HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥i8042prt¥Parameters]を探す。
次に、[LayerDriver JPN] の値を [kbd106.dll] から [kbd101.dll] に変更。
次に、[OverrideKeyboardIdentifier] の値を [PCAT_106KEY] から [PCAT_101KEY] に変更。
最後にレジストリエディタを終了して、PCを再起動。

これで、ノートの日本語キーボードを生かしつつ外付けキーボードは英語配列の物が使用できる様になる。
(この状態で外付け日本語キーボード繋いだらどうなるかは未検証)

次に、右ALT で IME 制御を行える様にする。
これは苦戦して、最初は以下の記事を参考にさせて頂きました。

右Altキーに[漢字]キーを割り当てる方法(AXキーボード設定を利用する方法)
http://www.atmarkit.co.jp/fwin2k/win2ktips/041axkbd/axkbd.html

これもレジストリエディタを使用し、さらに上記で変えた部分を更に変更する内容となっている。
さっき変えたところをまた変えると言うのに抵抗を感じつつも変更し再起動をかけてみたが、結果失敗。
右ALT を押しても反応なし。

レジストリの設定値の組み合わせを変えてみたが状況変わらず。
半ば諦めが入ってきたところで、以前使用していた AltIME は無いものかと調べてみたが、Win7では上手くいかないとの事。
また配布が止まっているとの事。

あと別の方は、Change Key で設定をされている記事も有ったので試してみるが結果上手くいかない。

同じく AutoHotKey で設定している方も居られたので、最後とばかりに試してみたら上手くいったのでやり方を書いておく。

参考にさせていただいたのは以下の記事

英語配列のUSBキーボードを使う(付:右AltでIME切り替え)
http://posokosi.seesaa.net/article/314087768.html

まさにそのまま。
まずは、AutoHotKey をインストールする。

AutoHotKey
http://www.autohotkey.com/

インストール時の設定は適当に(特に気にせず次を押していった)。

次に、RALT_IME.ahk(ファイル名は任意)と言うファイルスクリプトファイルを作成し、中に以下のスクリプトを書く。

    RAlt::vk19


保存後は、スタートアップのフォルダにコピーする。
(再起動時にスクリプトを実行させるため)。
ひとまず使いたいのであれば、ファイルをダブルクリックで実行すればよい。

インストールが必要という事と、スクリプトファイルを使用と言う事で、常駐プログラムとして動き、キーイベントを取得してキーコードを変換している動きとなってるみたい
なので、非力な自分のPCでは大丈夫かと思ったけど、ストレス無く動いている。

これで、今回目的は達成した。
問題は、日本語キーボードが現場から返ってきたときにどうするかだけど、その時に考えるようにしよう。

2014年7月27日日曜日

PILOT Parallel Pen を買った

おおきな付箋にやる事を書いて壁に貼り付けるようにしているのですが、その付箋に書くときに、太めの字がよかったので、これまでは蛍光ペンを使っていました。
しかし、やはり蛍光ペンなので字自体が薄くなり代わりのペンを探していました。

太めの文字を書こうと思えばペン先の太い物で代替えが効くのは分かっていながら、蛍光ペンの平べったさから書ける字のおもしろさに惹かれていた部分があったので、何か良い物が無いか探していました。

結果的に見つけたのは、 PILOT の Parallel Pen でした。

値段は、1,200 円で、近くの文具屋では売っていなかったので、結局インターネットで購入しました。
カリグラフィができるペンのようです。

インクや掃除道具などがいるのでパッケージになっています。
実際の中身は、

となっておりペンとキャップ(万年筆のようなねじって閉める)、黒と赤のインク、インクを替えたり掃除する時用のコンバーター、ペン先に紙くずが詰まったときに掃除するフィルムの内容になっています。
その他、使い方や、カリグラフィの文字の書き方などが書かれた説明書が付いてきます。

インクは、先をねじって外して差し込むようになります。
万年筆のカードリッジインクと同じ要領です。
差し込んだ後に、インクが出るようにカードリッジをすこしつまみペン先にインクを送ります。

早速、文字を描いてみました。(下手くそなので字を出すのが恥ずかしい)
インクフローは良く、スラスラ文字を描く事が出来ます。
また、カードリッジなので一般的なカリグラフィのペンのようにインクの充填が不要な点はとても楽です。
字が下手くそなくせに、こういったペンで文字を描くのはとても楽しく感じます。
性に合っているのでしょうか?

さて、実際に使用する付箋に文字を描いたところ、インクがにじみ裏抜けしてしまう事がわかりました。
インクと紙の相性となるのでしょうがないですね。
とはいえ、せっかく買ったのでしばらくは使ってみたいと思います(人に見せる物でもないし)。

今回 2.4mm のペン先を買いましたが、自分好みのサイズで良かったと思います。
もう一つ小さいサイズのペン先も気になるので、しばらく使ってみてから検討したいと思います。

PILOT パラレルペンのページ
http://www.pilot.co.jp/products/pen/color_pen/parallel/

気軽にカリグラフィを楽しむには良い商品と思います。
ひとまず、道具はこのペン一本で対応できそうなので、気になる方は一度手に取られてはいかがでしょうか?

2014年7月22日火曜日

Apple から「Updated Requirements for CloudKit​」というメールが来た

ここ最近全く、Apple 系の仕事?開発をしていません。
値の張る Developer Program 代が。。。

さて、タイトルのメールがAppleより来ましたので、毎度の翻訳をしてみます。

本文は以下の通り

Updated Requirements for CloudKit

Dear Developer,

Starting July 22, 2014, CloudKit will require iOS 8 beta 4 or OS X Yosemite Developer Preview 4.
To ensure uninterrupted development of your CloudKit enabled apps, download and upgrade to these versions today.

We will perform a server-side data wipe on all CloudKit public databases on July 22.
If you are using iCloud containers with public databases,
consider creating a copy of your data so that you can re-upload once the data wipe is complete.
iCloud Drive, iCloud Photo Library, and Mail Drop will not be impacted by the targeted data wipe.

If you have any questions, visit the Apple Developer Forums.

Best regards,
Apple Developer Technical Support
 
で、訳してみた結果が以下の通り

開発者の皆様へ

2014 年 7 月 22 日から開始される CloudKit は、iOS8 beta 4 か OS X Yosemite Developer Preview 4 が必要となります。
CloudKit を使用した開発を行いたいのであれば、本日のアップグレードバージョンをダウンロードし使用してください。

CloudKit のパブリックデータベースは、22 日に強制的にサーバーサイドでデータの削除を行います。
もし、パブリックデータベースで iCloud コンテナを使用している場合は、データ削除後に再アップロードを行ってください。
iCloud ドライブ、 iCloud フォト及び Mail Drop は削除対象外です。

不明な点がありましたら、Apple Developer フォーラムへお越しください。

敬具

アップルディベロッパーテクニカルサポートより


ハッキリ言って分からない事だらけです。
CloudKit と言うのは、先日発表があった iCloud を使うためのフレームワークとのことで、
mBaaS(Backend As  A Service)らしいです。

読みやすい記事を探しましたので、そちらを見てください。。。

CloudKit—iOS 8/OS X Yosemiteで変わる「文書」(By ASCII)
http://ascii.jp/elem/000/000/911/911246/

先日の Swift といい、全くついて行けていない。。。

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


2014年5月18日日曜日

VMware Fusion 5 で USB 3.0 デバイスを使う際の注意点

VMware Fusion 5 で USB 3.0 のメモリを使用しようとすると、
最適なホストコントローラに接続できませんでした。
と、エラーが表示される。
再試行を繰り返すが結果変わらず。

相性の問題か?と、若干諦めを感じながらも、今時の問題では無い気がしていた。
ただ、先日は問題なく使えていたので、その差を考えてみると、今回は USB 3.0 のハブを使用して接続している事だった。

やはり、相性か・・・と思いつつも Google で検索すると、

VMware Fusion5上のWindows8でUSB3.0の外付けHDDが接続できなくなって焦ったのでメモ
http://d.hatena.ne.jp/shigagenjin/20130323/1364050762

正にこの内容。

VMware の設定で USB 互換性の設定を 3.0 互換にすればいけるとの事。

空き容量が無いドライブへの書き込みについて

C# で、空きディスク容量の少ないドライブに、データを書き込んだ場合にどのようになるかを調べてみました。

ここ最近の HDD や USB メモリなどは非常に大きな容量なので、早々ディスク容量には困らないとは思いますが、古いシステムや数年前の USB メモリを使った場合などには、起こる問題だと思います。

まず、確認する方法について考えてみましたが、ディスクにクォーターなどを設けるなど方法が有るのですが、今回手元に 256M の USB メモリがありましたので(10年前くらいの物ですね)、実際に空き容量を無くした状態で、データを書き込み様子を見る事にしました。

まずは、空き容量を無くす方法ですが、Windows の fsutil.exe コマンドを使用してディスク容量を圧迫します(管理者モードのコマンドプロンプトを使用しないと使えない)。

巨大なサイズのファイルを簡単に作る方法
http://www.atmarkit.co.jp/fwin2k/win2ktips/243largefile/largefile.html

有る程度書き込みが出来る分の容量を残したデータを作りプログラムを作成します。

        static void Main(string[] args) {
            while(true) {
                StreamWriter sw = null;
                try {
                    sw = new StreamWriter(@"E:\testdata.txt", true);
                    // 適当にデータを書き込む(例外が出る)
                    sw.WriteLine("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");
                } catch(Exception) {
                    // System.IO.Exception が出る
                } finally {
                    if(sw != null) {
                        sw.Close();  // ここで例外が出る
                    }
                }
                break;
            }
            Console.WriteLine("End...");    // 例外が出るとここには到達しない
        }

そして、実行をすると、、、System.IO.Exception が発生します。


今回 StreamWriter を使用してデータを書き込むようにしていたのですが、この例外は容量を超えて書き続けた時と、容量を超えた状態で Close() をしたときに発生します。

また、問題なのは Close() の際に発生する部分でこの部分で例外が発生するとアプリごと終了してしまいます。

この問題については、以下のページで同様に話題となっています。

クローズ処理で例外は発生するのか?
http://d.hatena.ne.jp/rabbit2go/20101027/1288185258

VB.NETで空き容量がない場合にFileCloseできない。
http://dobon.net/vb/bbs/log3-23/13815.html

例外が発生する理由としては、Close() の際に Flush を行い、つまりバッファに貯まったデータを全て書き出そうとするための様です。

対策としては、上記の URL にありましたが、必要な容量分のダミーデータを作成し、データを書き込む際に、ダミーデータとの容量を確認しながら書き込み判断を行えと言った感じでしょうか?つまり手動で容量管理をすれば良いってことかな?

ロジックを組んでおけば、さして面倒な内容では無いのですが、何故か今ひとつ腑に落ちない。
とは言え、アプリが落ちると困るので、容量を見ながらの書き込みは必要という事になります。

毎回ファイルポインタの操作をする様な関数の場合は、その都度書き込み先の容量をチェックして書き込むのが良いかと思います。
この場合、書き込むデータのサイズにはよりますが、有る程度多めのバッファで見積れば良いかと思っています。

ディスクの空き容量については .Net Framework 2.0 以降であれば、System.IO.DriveInfo を使えば容易に判定ができるので、データ書き込み前に書き込みデータと空き容量を判定し、ダメな場合は書き込みしないような処理を実装すれば良いかと思います(ここらをどうするかは仕様によりますが)。

ドライブの領域サイズと空き容量を調べるには?[2.0のみ、C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/468availablefreespace/availablefreespace.html

ドライブの全体の容量や空き容量を取得する
http://dobon.net/vb/dotnet/file/freespace.html

ファイルの操作については比較的簡易に書かれていることや、最初にも書いたとおり最近の大容量かなどで軽視しがちですが、この部分で足下をすくわれる事が有ったので、戒めに書いた次第です。

2014年5月6日火曜日

見積もりの難しさ

ビジネススキル・イノベーションと言う本をを読みました。

ビジネススキル・イノベーション(横田 尚哉 著 プレジデント社
http://presidentstore.jp/books/products/detail.php?product_id=1250

ざっと斜め読みとはなりましたが、この中で見積もりの時間の出し方の部分が特に気になりました。

どんな仕事でも一緒ですが、作業見積もりを出さないといけない時があります。
この見積もりによって、作業やスケジューリングに変化が出るのですが、この見積もりがなかなか難しい。

現状何故難しいかというと、プログラミングをする場合において、バージョンアップ以外は、比較対象が無い場合がほとんどで、つまり、不確定要素が多くハッキリとした時間が出させないという事が原因です。

この本には、不確定要素をリスクイベントとして算出し、シミュレーションソフトを使用しての時間のかかり方を弾きだしており、そこには自分の出した見積もり時間から、実際には1.4倍の時間がかかっていると言う内容が書かれていました。

この内容を読み、これまでの自分の内容を振り返って見ると・・・

どうやら1.4倍所ではない気がします。
この内容は実に興味深く、今後の見積もりの際の参考にしたいと思っています。
思うところ、リスクイベントの部分が業種によって変わってくるのだと思います。
さらに工程によっても変わってくる部分もあるとは思います。
ここは、経験を持って補正をかけていくしか無い部分だと思います。

最後に、見積もりは本当に大事だと思います。
また、経験や知識が大きな武器になる部分です。
この見積もりによって、自分やチーム、はたまた顧客まで苦しい状況になる事があります。
とても重要な作業なのですが、この業界はあまりこの部分に強い人がいない気がします。
これが、炎上プロジェクトを起こす原因ではないかと思っています。

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日日曜日

メンターについて

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

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

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

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

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

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

2014年2月11日火曜日

iPhone 5S に機種変後の作業

iPhone を 4S から 5S に替えました。
キャリアも変更し、月々の料金もグッと安くなりました。

それはそうと、変更後にする作業で戸惑ったので、書いておきます。

自分の場合、行う必要が有った作業は、

  1. 連絡先の同期
  2. メールの設定
  3. バッテリーの残量%表示

が最低必要でした。

これらの作業でバッテリーの表示以外は、iTunes に繋ぐとひょっとすると、
ほぼ作業が必要ないのではないか?とも思いましたが、
自分の場合は iTunes が重たく起動を控えている事もあったので、
これらは端末で設定する必要がありました。
また、自分は Google の設定を使っていたので、今回の問題に当たりましたが、
iCloud を使っているならこれまたそれ程問題にはならなかったと思います。

では気を取り直して、まずは、連絡先やメールアドレス等々について。
これらは、「設定」 → 「メール/連絡先/カレンダー」で、アカウントの追加を行う事により設定が可能です。
ここで、何が躓いたかというと、これまでは「Exchange」を使っていたと言う事です。
これは、GMail などでプッシュをさせるために設定していたのですが、いくら設定しても反応が有りませんでした。
調べてみると、2013年1月30日にサービスが終了している事が分かりました。
(Google Apps for Buisiness なら使えるようだ)
このサービス終了より前に設定を行っている端末に関しては、設定が継続されるという事らしいです。

Google Sync End of Life
https://support.google.com/a/answer/2716936?hl=en&topic=27549&ctx=topic

後継としてはCardDAVと言う物を使えば良いみたいです。

Apple 端末との連絡先の同期
https://support.google.com/mail/answer/2753077

この設定により、無事連絡先とメールの設定ができました。

この時は、これで良かったのですが、問題点を忘れていました。
それは、メールのテストをしている時に分かったのですが、
今の設定では「プッシュ」に対応していないという事でした。
なんのために、Exchange を使用していたのを設定に必死になり忘れていました。
(これも、キャリアメールや iCloud を使うと問題ない点ですね。)

プッシュについては、設定では諦めることにし、アプリを使用する事で対応するようにしました。
今回使ったソフトは「MailBox」です。
このアプリ、フリックやスライド操作でメールを振り分けたり既読状態にしたりと、
慣れるまでは癖のあるアプリですが、慣れれば快適なアプリです。
また、GMail との親和性もあり、プッシュにも対応してくれます。
(まあ、プッシュさせるという事は・・・ですが、Google 使ってる時点で、、、なので)

これで、連絡先やメールについては設定ができ、ほぼ端末を使う事が出来るようになりました。
お気に入りのアプリなんかも復旧させれば良いのでしょうが、気がつくとほとんど使っていないので、
要るときに落とすようにしました。

残るは、バッテリーの残量表示について、
これは、以前の方法から変わっていないとは思いますが、忘れていたので書いておきます。
「設定」 → 「一般」 → 「使用状況」 → 「バッテリー残量(%)」をオン
これで、残量を%で確認できるようになりました。

以上で、自分の最低限の設定が完了しました。
昔は面倒だった連絡先が、設定だけで完了するのは、やはり楽な時代になったと思います。
iCloud にすれば良いのでしょうが、万が一端末を替えた場合は、やはり Google の方が良いですね。

2014年2月3日月曜日

Windows Live Writer コードプラグインリベンジ

前回の記事では、コードの部分での挿入に失敗していました。
とっても残念だったので、他のプラグインを探して見る事にしました。

そもそも、なぜ失敗したかというと、Blogger で、コード(シンタックスハイライト)を表示するには、
Blogger 自体の設定が必要となります。
設定方法は以下のページより、設定したい言語とか表示色の設定を行い、
コードの生成を行って、そのコードを Blogger のテンプレートの head 部分に入れ込みます。

How to Add Syntax Highlighter(v3) to Blogger Blogs
http://www.way2blogging.org/2011/03/how-to-add-syntax-highlighterv3-to.html

この設定を行った後に、Blogger で、コードを入力するには、以下のコードで挟む必要があります。
<pre class="brush:shell" title=""> hogehoge </pre>
(class= の部分は、先ほど設定した言語により異なります。)

つまり、この pre タグの部分が失敗していたプラグインでは挿入できなかったと言う事です。
確かに、設定のスクリプトを出力するのは、Blogger 本体では無いため無理があります。

原因が分かったところで、実現するプラグインは無いのか?と見てみると、日本の方が作って居られました。
名前は「コード左右衛門」。

コード左衛門 for LiveWriterサポートページ
http://blog.ahh.jp/?page_id=737

こちらをインストールすることにより、実現が可能です。
当然、設定は必要となります。

プラグインインストール後、WIndows Live Writer を再起動します。
次に、メニューから「ツール」→「オプション」でオプション画面を起動し、
「プラグイン」→「コード左右衛門」を選択して、オプションを起動します。
image

そうすると、設定を行うウインドウが表示されるので、ここで今回の設定する pre タグを入力します。
image

設定が完了したら、あとはプラグインを使うだけ。
コードを挿入したい位置で、プラグインを起動すると、入力画面が表示されるので、コードを入力します。
そうすると、設定した値で囲まれます。↓

Console.WriteLine("Hello World!");

これで、期待通りの動きになりました。
あとコレばっかりはどうしようも無いのですが、プレビュー等では確認が出来ません(ハイライトの追加コードが利かないから?)。
よって、公開後に確認をする必要があります。

Windows Live Writer での投稿

テストも兼ねての記述なので、言葉が変になっています。
Blog の記事の編集を行うのだが、コードの部分を書く際に今は
HTML モードに切り替え、コード用の専用タグを使って入力していた。
しかし、これは結構ストレスがかかる作業で、どうにか出来ない物か考えてみた。
編集をもっと楽にするには・・・調べてみるとブログエディタが引っかかった。
そういえば、結構まえからあるけど、ここ最近はこの手のソフトはノーマークだった。
現在流行っている物は?と見る限り「Windows Live Writer」が良いらしい。
Windows Live Writer
http://www.microsoft.com/ja-jp/download/details.aspx?id=8621

早速、ダウンロードをし、インストールをしてみた。
インストールに関しては問題なのであるが、如何せん Microsoft 製の製品と言う事があり、
適当にインストールをしていくと、不要なソフトまで入れられたり、アカウントの作成をさせられたするので、
気をつけないといけない。
ここまで、インストールに必死になり、コードの不便さについては忘れていた。
しかし、そこは何の問題もなかった。なんと、コード用のプラグインが有ったのだった。
早速、このプラグインもインストールしてみた。
インストールして、ソフトの再起動をかけると、右のペインに 「Code…」と言う文字が出てきた。

image

このCodeのリンクを押すと、コード用のウインドウが表示される。
image
言語も、「C#, JavaScript, HTML, TSQL,VB」と、選択できる。
早速、使用してみた結果がこちら↓(だめだ使えない。。。)
   1:  <!-- タブ移動させない -->
   2:  <Textbox IsTabStop="False" />

オリジナルとは、色が違う気がするが、ただ編集は相当楽になった。

コードについては上記の様な感じ。その他ざっとだが、使ってみた感想としては、編集は凄く楽。
コードだけでなく、画像についてもコピペで貼り付けが出来たりするので、今までの苦労が嘘のようだ。
Web ではプレビューの表示に時間がかかっていたが、ソフト上でのプレビュー処理を行うので、直ぐに確認ができる。
また、タグの編集も出来るので、簡単な記事なら断然このソフトを使った方が良い。

現段階での問題点は、このソフトから投稿後、Web でHTML形式で再編集を行おうとすると、エラーが表示されてしまう。
一度投稿すれば再編集を行わないのであれば良いが、細かな体裁を整えたいと言う人には厳しいかも知れない。

追記:
コードについては、今回のプラグインでは無理でした。。。

2014年2月2日日曜日

WPF テキストボックスの設定色々

ほぼ備忘録。
今回は、テキストボックスの IME の制御や入力禁止の方法と、改行許可・折り返し・スクロールバーの指定、
そしてテキストボックスだけとは限らないけど、タブオーダーについてまとめておきます。

○ IMEの制御について 

入力項目によって、IME の制御をかける場合は、以下のようにプロパティをセットするれば良い。

IME ON
<textbox InputMethod.PreferredImeState="On"
            InputMethod.PreferredImeConversionMode="FullShape,Native"/>
IME ON カタカナ入力
<textbox InputMethod.PreferredImeState="On"
            InputMethod.PreferredImeConversionMode="FullShape,katakana"/>
半角英数字
<textbox InputMethod.PreferredImeState="On"
            InputMethod.PreferredImeConversionMode="Alphanumeric"/>
IME 抑制
<textbox InputMethod.IsInputMethodSuspended="True" />

参考:
[XAML] WPF で IME (かな漢字変換) を切り替えるには (Windows フォームから WPF へ)
http://code.msdn.microsoft.com/windowsdesktop/XAML-WPF-IME-Windows-WPF-9ef457d7

○ 改行許可・折り返し・スクロールバーの指定

<TextBox 
    AcceptsReturn="True" 
    TextWrapping="Wrap"
    VerticalScrollBarVisibility="Auto" />
上から、改行許可、折り返し有り、縦スクロールバー自動表示

○ 入力禁止の設定について

入力禁止は以下のプロパティのセットで行える。
<TextBox 
    FontSize="20"
    Margin="5"
    IsReadOnly="True"
    Text="IsReadOnly" />

○ タブーオーダーについて

普通に TabIndex プロパティを設定しても良いようだが、コントロールの中にコントロールを入れたりした場合などに、
上手く制御が利かない場合が有るようなので、「KeyboardNavigation.TabNavigation」を使った上でプロパティをセットした方が良いようだ。 また、タブで移動したくない項目については、「IsTabStop」を「False」にセットする。
    <StackPanel KeyboardNavigation.TabNavigation ="Local" >
        <TextBox Name="TextBox1" Height="20" TabIndex="1" />
        <TextBox Name="TextBox2" Height="20" IsTabStop="False" />
    </StackPanel>

最後に

WPF の書籍がなくてどうしようかと思っていたけど結局の所、その都度検索をかけて情報を蓄積していくのが良いみたい。
というか、それしかないみたい。

2014年1月26日日曜日

コクヨのワーキングチェア「Wizard 2」を購入

仕事の関係上、長い間椅子座る事になるわけですが、これまでは借用していた事務所に備え付けの椅子を使用していました。
今回、事務所の引っ越しにあたり、椅子の購入を検討しました。

そこで、今回コクヨの「Wizard 2」を購入しました。


 椅子の詳細は、こちら↓
「Wizard2(ウィザード2(ツー))」商品ページ
http://www.kokuyo-furniture.co.jp/products/office/wizard2/


「2」ということで、前バージョンが有ったわけですが、違いとしては、「ランバーサポート」と、「ポスチャーサポートシート」が付いた点でしょうか(正直よくわからん)。

今回購入した構成としては、ミドルマネジメント(背面が長い)、可変肘タイプを選択しました。
価格としては、5万円後半でした。

調べてみると、この手の椅子の価格としては、安い方の様です。。。
この次が10万円周辺となり、その次が15万円周辺となっていました。

今回は新品の購入ですが、中古になると一気に値段が下がります。
このモデルは出始めのためまだ中古が無かったのですが、出回るようになると、中古取扱店では1万円台になるのではないかと思います。
なので、先ほど言った10万、15万のクラスの椅子でも中古で購入すれば、5万台でも購入が可能です。ここをどう取るかは個人的は判断という事で。

実際、座った感想としてはハッキリ言うとあまり感動は有りませんでした。。。
これは、これまでの事務所に備え付けの椅子がそこそこの性能だったと言う事でしょうか?
ですが、自宅で使っている1万円以下で購入した椅子と比べると雲泥の差です。
自宅の椅子は1時間も座ると、結構疲労感を覚えるのですが、この椅子はそれ程疲れません。

また、今回は背面の高いものを選択しましたので、リクライニングで倒れ込んだ時に頭の部分までサポートされているため、座っていながらにしての背伸びが随分楽に、さらに少しの間の昼寝程度なら可能ではないかと思います(自分の身長は170cm)。
ランバーサポートも付いているようですが、高さの調節で出来ないので、使っていません。

座面は肉厚となっています。これも、長時間の使用に貢献しているかもしれません。
気になる点としては、今の季節は良いのですが、夏蒸れないかが気になるところです。

肘は可変肘を選択したのですが、角度としては内側外側30度の角度調整ができるように、高さも8センチ(10センチだったかも知れない)調整できるようになっています。
高さ調整については問題なく、キーボードの操作時などに肘のサポートが出来るようになっていて良かったのですが、角度についてはもう少し範囲の広いタイプが良かったです。
総じて良かったのですが、癖として体を机に密着させる事があるのですが、その際には肘が当たって机下の高さまで下げる必要があったので、前後移動も付いた肘があれば嬉しいなと思いました。

今の仕事ですと、会社での1日のほとんどが座っての作業となりますので、この投資は間違ってはいないとは思っています。

椅子については相性があるので、本来ならば試座できれば良いのですが、田舎ということもありWebページ等でスペックの確認での購入となりました。
価格帯としては低い方となっていますが、それでも結構な金額ですので、もし高額な椅子の検討をされている方は、少し遠出してでも座りに行った方が良いかもしれません。
(少し座っただけでは分からないかも知れませんが)

比較対象が、それ程無くまた使用期間が短いので、参考になる記事にはなっていないかも知れませんが、何かの機会に比較対象が出れば書いてみたいと思います。

2014年1月14日火曜日

Apple からの「Build your apps for iOS 7.」のメール

昨年から情報は出ていたが、今朝改めてタイトルのメールが来た。

Make sure your apps work seamlessly with the innovative technologies in iOS 7. 
Starting February 1, new apps and app updates submitted to the App Store must be built with Xcode 5 and iOS 7 SDK.
Learn more about building apps for iOS 7.

訳としては、

あなたのアプリが iOS7 に対応している事を確認指定ください。
2 月 1 日から、新しいアプリの登録や更新時には、Xcode 5 と iOS7 でビルドしたものが必要となります。
詳しくは、iOS7 でのアプリ作成方法を参考にしてください。

と、いうことらしい。

最近別件にて、iOS アプリに手を付けていないので、こういうの見るとスタックが積まれた感じが半端ない。。。
ただ、こういった事により、古い OS のサポートをしなくても良くなるというのは、これはこれで良かったりもする。

とにかく、次回の登録からは Xcode5 と iOS7 の組み合わせでの登録ということでやっていこう!

2014年1月5日日曜日

WPF 関連の本を買いに行くが

「次の仕事は WPF を使うんで使えるように」
と、言われていたので調べてはいる物のあまり良い情報源が無い。

技術的には、.Net Framework 3.0 からの物なので確認すると 2006 年となり、かれこれ 8 年前からの物になるが、本屋に行っても WPF 主体の本がほとんど無い。

言語的には C# と VB となり、デザイン部分は VisualStudio のデザイナか Blend を使用する。
ここらの分離の差によって、関連書籍がすくないのか?はたまたフォームアプリ自体が時代遅れになり Web 系になっているから少ないのか(Silverlight にしても少ない気が)?
そういえば、Windows ストアアプリの本は結構あったりする。

Amazon で本を確認するが、なかみ検索が有る物もそれ程無く、見たいページが見れない事もあったので、結局本屋へ行ってみる事にした。

結果を先に言うと、期待する物は売っていない※1。

ただ、全く書かれていないかというとそういうわけではなく、紹介程度に書かれている程度。
いずれも、「フォームアプリを作成したことのある人であればそれ程変わりません」とかそういった感じで、割いているページも少量。

結局、足を運んだ事もあるので目的とは違う本を買って帰る事となってしまった。

分かってはいたが、この事態に混乱するばかりである。
フォームアプリが時代遅れというのはわかるが、実際の現場ではそこそこ現役となる技術であると思うのだが、それに関する内容の書籍がないとはこれいかに?

良くは分からないが、WPF に関しての技術については、MSDN を見るのが一番良いかも知れない。まあ、開発元なので当然と言えば当然か・・・
 Windows Presentation Foundation
http://msdn.microsoft.com/ja-jp/Library/ms754130%28v=vs.110%29.aspx

話は変わるが、この MSDN のページだが、ちゃんと印刷用に出力できると言った物となっている。
これはとても便利だと思った。
ただ、印刷するには Microsoft のアカウント(無料)の登録が必要となるので、その点だけはいけてない。

しばらくはこのサイトと、その他解説のサイトを見ながらの格闘になると思う。。。


※1
期待する物が売っていないと言う事と、売り切れだったと言う事。
確認した物としては

プログラミングWPF C#編―デザイナとプログラマのためのアプリケーション開発の極意
http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0WPF-C-%E7%B7%A8%E2%80%95%E3%83%87%E3%82%B6%E3%82%A4%E3%83%8A%E3%81%A8%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA%E3%81%AE%E6%A5%B5%E6%84%8F-%E6%97%A5%E5%90%91-%E4%BF%8A%E4%BA%8C/dp/4877831975

があったが、たぶん MSDN で補える内容と思い見送った。
他に売り切れていたのは、

エッセンシャル WPF:Windows Presentation Foundation (Programmer’s SLECTION―Microsoft .net Development Series)
http://www.amazon.co.jp/gp/product/4798114200/ref=pd_lpo_sbs_dp_ss_1?pf_rd_p=466449256&pf_rd_s=lpo-top-stripe&pf_rd_t=201&pf_rd_i=4877831975&pf_rd_m=AN1VRQENFRJN5&pf_rd_r=1JE9928YRFB09HRD52X8

これ。中身見てないけど、高度ではあるがその分内容も良い物と思われる。
売り切れって、、、同じ悩みの人がいるって事で良いのかしら。。。