2011年09月25日

XPのユーザってどれくらいいるの? その後 

   このエントリーをはてなブックマークに追加 Clip to Evernote
約1年前に「XPのユーザってどれくらいいるの?

という記事を書きましたが、1年後どうなったかを、僕のブログへのアクセス解析結果から、
確認してみました。

OS201109

1年前は、XPが、全体の67%、Win7が20%という割合でしたが、
1年後は、XPが、49%で20%近く減っていていました。
その分Windows7のユーザが増えたことがわかります。
Vistaユーザも、若干、Windows7に移行したようです。
それでも、XPの割合が一番多いんですね。
Windows7への移行は、まだまだこれからということのようです。

IE の割合も調べてみました。


brorwser201109


23%あったIE6 の割合が、15%に減っていました。
しかし、僕のブログに訪れる人の多くは、ソフトウェア開発者だと思うので
IE6がまだ15%の割合を占めているというのは、ちょっと驚きです。

また、昨年は存在していなかったIE9が、20%近くを占めていましたが、
IEの世代交代の速度は、僕が考えているよりも遥かに遅いという印象です。



  

Posted by gushwell at 21:20Comments(0)TrackBack(0)

Webサイトにブログ記事へのリンク集を追加

   このエントリーをはてなブックマークに追加 Clip to Evernote
当ブログ Gushwell's C# Dev Notes にアップした記事の中から、役に立つと思われる(とGushwellが勝手に思っている)記事へのリンク集を作成しました。
まだ、作成途中ですが公開します。

「Blogインデックス」http://gushwell.ifdef.jp/blogIndex.html

もともと自分の備忘録的な意味合いがあるブログの記事であるため、玉石混交かもしれませんが、なにかのお役に立てればと思います。

  
Posted by gushwell at 10:46Comments(0)TrackBack(0)

2011年09月20日

F#:どう書く?org 「文字列の均等分割」

   このエントリーをはてなブックマークに追加 Clip to Evernote
どう書く?orgの「文字列の均等分割」をF#で書いてみました。
一行の文字列を指定した数の行にできるだけ文字数が均等になるように分割してください.
ただし,除算や剰余算を使わないで書いてみてください.

sample = "ゆめよりもはかなき世のなかをなげきわびつゝあかしくらすほどに四月十よひにもなりぬれば木のしたくらがりもてゆく"

divid 4 sample =>
"ゆめよりもはかなき世のなかを"
"なげきわびつゝあかしくらすほ"
"どに四月十よひにもなりぬれ"
"ば木のしたくらがりもてゆく"


問題では、「除算や剰余算を使わないで」とありましたが、それは無視して書いています。
なので、1行の幅の文字数は、簡単に求められるので、
あとは、String.Substringメソッドで、文字列を分割して行くだけです。
気をつける点といえば、「できるだけ均等に」ということなので、1行の文字数は、
最初に求めるのではなく、再帰関数のなかでその都度求めている点でしょうか。


問題での例では、divide関数内で、プリントもしていましたが、
ここでは、分割する関数ではプリントはせずに、分割した結果を返すようにしています。
このdivide関数は、string listを返す関数で、再帰呼び出しにより実現しています。
:: 演算子で、 左側の要素と右側のリストを連結しています。


C#のネーミング規則に慣れてしまっているので、ついつい、関数名を大文字で始めてしまいます。
規模の大きなプログラムでは、すべてが小文字で始まると、どれが関数でどれが変数なのかの
判断が付きにくいと思うのですが、他の人はそんなふうには感じないのかな...
まあ、慣れの問題なのでしょうが、そもそも2,3週間に一回程度、F#をいじるだけですから、
慣れようがないです。

  
Posted by gushwell at 22:00Comments(0)TrackBack(0)

2011年09月13日

コッホ曲線をSilverlightで作成

   このエントリーをはてなブックマークに追加 Clip to Evernote
コッホ曲線を描くプログラムをSilverlight で作成しました。
コッホ曲線とは、フラクタル図形の一種で、線分を3等分し、分割した真ん中の線分を底辺とする
正三角形を描く(ただし底辺は消す)ことを無限に繰り返すことによって得られる図形です。


24


実際に動くプログラムと、そのソースコードは、Gushwell's C# Programming Page - コッホ曲線 をご覧ください。


ある直線(線分)から、次の点(正三角形の頂点)を求めるロジックが意外と面倒でした。
角度の変換とか、2点間の長さを求めるとか、Sin, Cos関数を使うとかは 普段のプログラムではやっていないので...

  
Posted by gushwell at 22:49Comments(0)TrackBack(0)

2011年09月09日

Silverlightが下位互換ってどういうことだろう?

   このエントリーをはてなブックマークに追加 Clip to Evernote
"Silverlight 互換" で検索したら、こんなページにたどり着いた。

Silverlight は100% 下位互換

えっ、どういう意味だろうと疑問に思い、さらに調べたら次のページが見つかった。

Silverlight 3 について

このページに、確かに、「下位互換」って書いてある。

じゃあ、オリジナルの英語のページはどうなのかなと調べると
「Silverlight 3 is backward-compatible」
って書いてあった。

なんだ、「下位互換」じゃなくて、「後方互換」ということね。
それならば分かる。
「下位互換」だと、完全に意味が反対です。
普通に「後方互換」と訳せばいいのにと思った。

 後方互換の例
  USB 2.0ポートには、USB 1.1対応の機器が使える
  PS2は、PSのゲームが利用できる

「前方」「後方」という言葉が、なじみが無いというのならば、せめて「上位互換」
でしょう。

さらに調べたら、このページ「Silverlight プラグインのバージョン管理」にも「下位互換」と誤訳されていた。

うーん、マイクロソフトでは、間違った訳で翻訳辞書が構築されているのだろうか?
まあ、間違えやすいというのは認める。

それとも、僕が間違っているのか? いやそれはありえない... と思う。

ちなみに、「上位互換」とは、Wikipedia によれば、

「機能・性能・グレードが上位の製品が、下位の製品の機能ももつこと。」

という意味。
同じページから、さらに引用させてもらいます。
後方互換と上位互換は、関連はあるが別の概念である。上位・下位は、製品のグレードについての視点であり、
前方・後方は製品の時系列での視点である。しかし、新しい製品は古い製品よりも一般的に優れているので、
後方互換の意味で上位互換が使われることも多い。


ということで、原文が backward-compatibleなのだから、やはり「上位互換」ですね。
  
Posted by gushwell at 22:29Comments(0)TrackBack(0)

2011年09月08日

F#:どう書く?org 「制限時間内のキー入力検査」

   このエントリーをはてなブックマークに追加 Clip to Evernote

どう書く?org 「制限時間内のキー入力検査」 をF#で解いてみました。

ちょっと長いですが、そのまま引用させていただきます。

ユーザーの入力を検査する関数 InputCheckerを作成して 3回連続実行してください。
関数 InputCheckerは、以下の仕様を満たしてください。

引数に 時間(秒) Nと文字列 S を受け取ること。
ユーザからの標準入力とあらかじめ指定された S を比較し、 一致すれば「OK」、一致しなければ「NG」を標準出力へ出力すること。
ユーザーの入力がN秒以内に完了しなかった場合は、比較せず 「TIME OUT」を標準出力へ出力すること。
経過時間はユーザーが入力を開始した地点から計測すること。
ENTER キーの入力によってユーザー入力が完了したと仮定すること。
ユーザの入力が完了するまでは、完了を待ち続けること
たとえば、「InputCheker(5, "ABCDEF")」と指定した場合、 出力例はこんな感じです。

1. input(ABCDEF) =>ABCDEF<ENTER>
    1. result => OK
    2. result => NG
    3. result => TIME OUT

1. input(ABCDEF) =>

と出力して入力待ちをし、ユーザーが「ABCDEF<ENTER>」を入力したとき、 入力開始から5秒以内ならば「OK」、
5秒をこえていれば「TIME OUT」を出力します。 このとき、ユーザーがキーを押下しなければ1. を出力してから
たとえ10秒たっていても「TIME OUT」にはならないので注意してください。
時間計測はあくまでユーザーが入力を開始してからです。

 

入力が開始されたかどうかをどうやって判断するのかがわかれば、それほど難しくはありませんね。
Console.KeyAvailable プロパティで、その判断ができます。このプロパティが、trueになるまで繰り返し、待ちます。

キーが入力されたならば、ReadLineで 1行読み込み、Enterキーが押されるまでの時間を計測します。
制限時間をオーバーしていれば、"TIME OUT"を表示します。
制限時間内ならば、入力値と引数の値を比較し、"OK", "NG" のいずれかを表示します。

inputChecker関数では、制限時間と、比較する文字列を受け取ります。

あまり、F#らしい箇所がないので、C#プログラマーにも雰囲気で何をやっているかがわかると思います。

ENTERキーを押す前に、"TIME OUT"と表示するとなると、また違ったアプローチが必要ですね。
ReadLine じゃなくて、ReadKeyを使うことになるのかな?

  
Posted by gushwell at 22:00Comments(0)TrackBack(0)

2011年09月07日

Gushwell F# Programming Diaryと統合します。

   このエントリーをはてなブックマークに追加 Clip to Evernote
2009年4月から開始したブログ「Gushwell F# Programming Diary 」ですが、
こちらのブログに一本化しようかと思っています。
当初は、F# の話題とC#の話題が同じブログに混在するのは、読む人にとっては、
嬉しくないだろうなあ、という思いがあったのですが、
最近、F#のブログに書く頻度も少なくなって来たし、
こちらのブログに書く話題も、なかなか見つけられない状況なので、
いっそ、一緒にしてしまったほうが良いのかな、と思うようになりました。

さすがに、ブログ2つ、ウェブサイト1つ、メールマガジンの 計4つを
それなりのクオリティを保ったまま継続していくのは、難しいです。

Gushwell F# Programming Diary 」の過去の記事は、こちらへは移植せずに、
そのままに残しておくつもりなので、過去のF#の記事は、そちらを見ていた
だければと思います。

F#のブログを開始した時には、1年くらい続けば良いかなと思っていたので、
2年4ヶ月も続いたので、当初の目的は達成したかなと思います。

ということで、当ブログ「Gushwell's C# Dev Notes」を引き続き、
よろしくお願いします。

  
Posted by gushwell at 21:05Comments(0)TrackBack(1)

2011年09月06日

最も影響を受けたプログラミング本は?

   このエントリーをはてなブックマークに追加 Clip to Evernote
スラッシュドット・ジャパンに、こんな記事がありました。

最も影響を受けたプログラミング本は?

5冊あげられているけど、このうちの3冊は読んでいます。

「Code Complete 2nd Edition 」
「達人プログラマーシステム開発の職人から名匠への道」
「プログラミング言語C」

この3冊では、僕は、「プログラミング言語C」が一番影響を受けたかな。
周りに誰も、C言語を教えてくれる人もなく、C言語の本もこの本くらいしかなく、
「プログラミング言語C」が僕の先生でした。
この本で学んだことが、その後いろんなところで役にたちました。

でも、これから人に進めるとしたら、「Code Complete」かな。
ただ、2分冊だし、ちょとページ数が多いのが難点ですね。


  
Posted by gushwell at 20:37Comments(0)TrackBack(0)