1/24/2010

SilverLight 簡単サンプル


どうもJudaです。



MainPage.xaml.cs



using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverBullet
{
public partial class MainPage : UserControl
{
//BookmarkList m_listBookmark = null;
TextBox m_txtBox_UserId = null;
TextBox m_txtBox_UserPwd = null;
TextBlock m_txtBlk_UserId = null;
TextBlock m_txtBlk_UserPwd = null;
string m_userId = null;
string m_userPwd = null;

public TextBox TxtBox_UserId
{
get { return m_txtBox_UserId; }
set { m_txtBox_UserId = value; }
}
public TextBox TxtBox_UserPwd
{
get { return m_txtBox_UserPwd; }
set { m_txtBox_UserPwd = value; }
}
public TextBlock TxtBlock_UserId
{
get { return m_txtBlk_UserId; }
set { m_txtBlk_UserId = value; }
}
public TextBlock TxtBlock_UserPwd
{
get { return m_txtBlk_UserPwd; }
set { m_txtBlk_UserPwd = value; }
}
public string UserId
{
get { return m_userId; }
set
{
m_userId = value;
TxtBlock_UserId.Text = value;
}
}
public string UserPwd
{
get { return m_userPwd; }
set
{
m_userPwd = value;
TxtBlock_UserPwd.Text = value;
}
}

public MainPage()
{
InitializeComponent();

m_txtBox_UserId = txtBox_UserId;
m_txtBox_UserPwd = txtBox_UserPwd;

m_txtBlk_UserId = lbl_UserId;
m_txtBlk_UserPwd = lbl_UserPwd;
}

private void btn_Login_Click(object sender, RoutedEventArgs e)
{
UserId = m_txtBox_UserId.Text;
UserPwd = m_txtBox_UserPwd.Text;
messageTxt.Text = "Hit";
}

private void txtBox_UserControl_GotFocus(object sender, RoutedEventArgs e)
{
if (sender is TextBox)
{
TextBox txtBox = (TextBox)sender;
txtBox.Text = "";
}
}
}
}

MainPage.xaml



MainPage.xmlを投稿しようとしたが、上手くいかない。XMLの構文を解釈されてしまうので、掲載しにくいです。
今日気がついたことは、位置情報をきっちり決めようとすると、Gridの要素としてCanvasを登録して、さらにその要素としてTextBlockなどを設定。そのプロパティとしてCanvas.Left,Canvas.Topを設定すると明確に位置合わせができます。

Google Japan Blog: Tech Talk in 関西: Google 日本語入力を支える情報処理技術 (学生向け)のお知らせ (1 月 30 日)

Google Japan Blog: Tech Talk in 関西: Google 日本語入力を支える情報処理技術 (学生向け)のお知らせ (1 月 30 日)

どうもJudaです。
関西の学生はぜひ参加して方がいいですね。というか、私も行きたかった。

SilverLightの特徴まとめ

どうもJudaです。

SilverLightのどういう点が特徴的であるのか、ちょっとまとめる。

  • XAML(XMLの拡張)でUIを記述する。
  • C#、VBもしくはJavaScript、Iron Python、Iron Rubyでロジックを記述する。
  • デザインとロジックを分離できる。
  • 動画再生にAdv.がある。
  • 疑似3DやエフェクトをSilverLight3からサポート。
  • WPFのサブセットという位置づけであるので、Desktop Applicationとしても使える。
  • DeepZoomやPhotoSynthいう機能が他のRIAとは異なる。

DeepZoomはこちらで確認できる。

Photosynthはこちらで確認できる。

マルチメディア系のアプリケーションをつくるのにはいろいろ楽しい感じになっている。

1/23/2010

SilverLightことはじめ

どうもJudaです。

とりあえずSilverLightのことはじめ。

VisualStudio2008で始めるには、とりあえずSP1が当たっていること、.net Framework3.5がはいっていること。これらはWindowsのDownloadページで手にいれることができるのでこれを用意します。Visual Studio 2008 Service Pack 1 および .NET Framework 3.5 Service Pack 1

つぎにVisualStudio上でSilverLightを快適に開発するために、SilverLight Toolをいれる。Visual Studio 2008 SP1 用 MicrosoftR Silverlight(TM) 3 Tools

ほかにも便利なToolなどが存在するが、それらはCodePlexで探せばよい。

たぶん開始してProject作成をしてすぐに文字列を表示したいと思う。その際に注意がある。XAMLファイルの編集は癖があるので、注意。文字列はTextBlockを使う。ここにしか文字を書き込めない。Buttonにすらだ。つまりLabel的なものの動作はこれが請け負っている。これだけわかればあまりイライラせずに開始できるとおもう。この落とし穴に関しては解説サイトでもなんかスルーされている気がする。

開始して30分で気がつく落とし穴はそれぐらい。

インターフェイスの使い方

どうもJudaです。
インターフェイスの使い方は疎結合のための考え方だろうとおもう。個人的にはpImplイディオムと似た匂いを感じます。ちなみにpImplイディオムの関連して記事
Pimpl イディオムのお手軽な実装
PImpl イディオム
pimplイディオムを語る
このイディオムの重要性は、その結合が粗であること。それによって得られる副次的な作用は、コンパイル時間の短縮、変更の容易さが得られますが、代償としてこのイディオムを知らない人に対してはなぜこのような実装をしているのかが、わかりにくくなります。
これは、開発者のレベルに差がある時には非常に問題になりますが、それはOOPも一緒だし、他の様々な実装方式も同一の問題を抱えます。
インターフェイスベースと言うとCOMですねー。COMあれもめんどくさい。
インターフェイスを重要視して開発すると実装の詳細はあまり関係はなくなりますが、十分に動作や手続を説明していないと使い物になりません。また実装が隠蔽されていることによって、慣れると手続きを構築するのは簡単になるのですが、それを学習するコストが大抵はソースコードをみることができないことによって増加しますし、関連ドキュメントがないことによってさらに増大っと利用に関しては結構な関門があるのと思います。
ここまで考えが至るプログラムを組むことに対して、思慮深くなる。うむむ。

ちなみに参考
プログラミングメモ - インターフェイスの使い方

WPFって?

どうもJudaです。

今さらですが、
Windows® Presentation Foundation - Microsoft
Windows Presentation Foundation - Wiki
まぁSliverLightの基礎的なフレームワークなんですけど、
これは既存のWindowsのFrameworkから脱却する目的で開発されているので、MFCとは違いますし、.net Frameworkとも違います。まぁ.netとはとても近いですけどね。
重要なのはこれがまぁ新しいフレームワークで、なおかつDesktopとWebをそれほど区別しない点、UIとLogicの分離をフレームワーク的に強制するところです。

これによってMVCのような粗な結合を作ることが推奨されますし、これによってOOP、テストの導入などがしやすくなると考えられます。しかしこれは、ある程度以上の興味と技術をもっていないと上手くいかないので、学習コストをそれなりに払う必要があると思います。
もっとも悲しい事例をあげるなら、すべてが無理やり結合されている。もしくはそれに近い状態におかれることでしょう。例えるなら果物ナイフで巨木を切り倒すようなことにならないように、適宜道具の吟味とその使用法を確認する必要があります。
WPFはC#とVBから利用できる点も特筆しておきたいです。

NVIDIAのCUDAを利用したSolution

どうもJudaです。
とりあえずこれを見てほしい。

NVIDIA「OptiX」エンジン発表、GPUでレイトレーシングを高速処理
NVIDIA® OptiX™ ray tracing engine
引用、ただし体裁は変更。
System Requirements
  • Operating System: 32 or 64-bit versions of Windows XP, Windows Vista, Windows 7, Linux
  • CPU: x86 compatible
  • System Memory: matches graphics board recommendations
  • GPU*: NVIDIA Quadro FX or NVIDIA Tesla (GT200 class required for multi-GPU scaling and technical support)
  • Frame buffer memory: varies with data complexity
  • Driver: NVIDIA Unified Driver r190 or later, CUDA toolkit 2.3 or later
  • C/C++ Compiler: Visual Studio 2005 or 2008, along with CMAKE
  • NVIDIA GeForce to be supported with NVIDIA's upcoming "Fermi" GPU architecture- see OptiX 2 Beta.
今回のSDKのBeta版から計算用のGPUでなくても、実行可能になりました。
以前は40万からしかOptiXを実行することができなかったのですが、今回は2万円のGPUでも実行可能らしいので、とても楽しみです。
これはCUDAベースのライブラリ群です。開発用にSDKを取得するのは、ちょこっと登録すればダウンロードできるので、オッケーです。
でもGPUをまだ買ってきていないので、実験すらままなりません。どうしましょう、どうしましょう。

1/16/2010

TracかRedmineかそれが問題だ

どうもJudaです。
プロジェクト管理ツールとして、Tracを採用するか、それともRedmineを導入するのか、思案中。
CVSがMercurialとSubverisonを併用しているので、両方扱える方がいい。
また導入しやすくて、当面はローカルなサーバーとして運用できる方がいい。
この二つの条件から考えると上記の二つに絞れるのだけど、まだ別の選択肢もあるのかなぁ。と思う。
ちなみに会社のPCに試験的にTracは導入してみた。Trac Lightingではないので、導入に戸惑ったがSubversionの導入はそれなりに簡単にできた。でもHgとの連携のためのPluginの設定方法が分からなかった。とりあえず管理画面からできるという情報を入手したが、まだよくわからない。
Redmineはとりあえず調べなければ、うむうむ。

1/12/2010

xUnit Test Patterns買った

どうもJudaです。xUnit Test Patterns: Refactoring Test Code, Mobipocket (Kindle Edition)
最近の金遣いが最低な人間レベルになっていることは気づいているけど、Kindleは便利だ。すぐに洋書が手にはいるのが素晴らしい。中古販売の権利はないから、もうちょい安くして欲しいと思うけど、さっさと読んで、できれば日本語訳をこっそり作りたい。
テスト系統の学習を早く業務に役立てて、会社に普及させたい。
周りを変えたいと願うなら、まず自分から。とりあえず情報系の大学卒者でいけ好かないやつを m9 したい。学習コストを支払い続けないとどうなるのかを教えてやる(メラ

1/10/2010

ソフトウェアテストについても並行して学習開始

どうもJudaです。
『体系的ソフトウェアテスト入門』
『ソフトウェアテスト293の鉄則』
を買ってきた。
これでソフトウェアテストについて勉強を並行して開始。開発サイクルと言う考え方を適応するならば、開発フェーズとテストフェーズは隣接しているので、一緒に勉強するのはとっても重要!って言ってみる。