September 27, 2008

Silverlight 2 RC0がダウンロード可能に

Silverlight 2 Release Candidate 0 がダウンロードできるようになった。ただし、RC0で作ったものはRC0のランタイムが必要なので注意。

アプリケーションの移行

Silerlight 2 Beta 2、それ以前のリリースで作成したアプリを移行するには、最新のSilverlight 2 Tools for Visual Studio 2008を手に入れてコンパイルしなおさなければならない。手順は以下の通り。
  1. 最新のSilverlight 2 Tools for Visual Studio 2008を手に入れる。古いものはすべてアンインストールしておく。
  2. 古いプロジェクト(.csprojファイル)を開く。古いバージョンで作ったプロジェクトをアップグレードするかというダイアログがでる。Yes。
  3. すべてのHTMLファイルを開き、以下を変更する:
    • The Silverlight MIME type
    application/x-silverlight-2-b1 or application/x-silverlight-2-b2
    application/x-silverlight-2
    • The Silverlight installation URL
    http://go.microsoft.com/fwlink/?LinkID=108182 or http://go.microsoft.com/fwlink/?LinkID=115261
    http://go.microsoft.com/fwlink/?LinkID=124807
    Note: some templates replaced http://go with http://go2. Be sure to search for both.
  4. デバッグする。たぶんいろいろエラーが出るからがんばって直す。
(Breaking Changesより)

追加・削除・変更で目についたもの

+ CompositionTarget.Rendering アニメーション( ゚Д゚)ウマー
? DLRがない

(つづく)

Fractulatorって何?

Fractulator - fraction calculator? 分数計算機。帯分数とか久しぶりに見た。
Silverlight Dynamic Languages SDKのsamplesに入っている。



http://silverlight.net/dlr
http://codeplex.com/sdlsdk

ソフトウェアキーボードを使う

スタート「ファイル名を指定して実行」→「osk」と入力してOK→スクリーンキーボードが起動

Boot Camp上のWindowsでApple Keyboardを使う

Boot CampでCtrl+Alt+Delやプリントスクリーンを使う。わざわざツールを使わなくてもいい。
以下、Boot Campのマニュアルから。

PCキーコマンド Apple Keybord ノート型Macの内蔵キーボード/
Apple Wireless Keyboard
Ctrl + Alt + Del control + option + delete control + option + delete
Alt option option
BackSpace del delete
Del delete fn + delete
Enter return return
Enter (num) enter enter (一部のみ)
Ins fn + enter or help fn + enter
NumLock clear fn + f6 (一部のみ)
Pause/Break F16 fn + esc
PrintScreen F14 fn + shift + F11
Alt + PrintScreen option + F14 fn + shift + option + F11
ScrollLock F15 fn + F12
Windows command command


http://www.apple.com/jp/support/bootcamp/

September 26, 2008

Visual Studio 2008でSilverlight Dynamic LanguageついでにIronPython

Silverlight 2はDynamic Language Runtime(DLR)とか言って、C#、VBだけでなくPythonやRupy、Javascriptで開発できる。で、はっきりいってVisual Studioを使わなくても開発できる。が、せっかくあるんだから使いたい。

ついでにIronPythonのための環境を整える。
こうすればPythonで補完機能使える。(IntelliSense、まだしょぼい?)

とてもわかりやすいサイトがあった。ありがとうございます。
これらを合わせれば素晴らしいSilverlightの開発ができるかもしれない。


  • Visual Studio 2008でのDLRの開発手順例(英語)

    Silverlight: Laurence Moroney's Blog : Silverlight Dynamic Languages in Visual Studio

    (注)ほとんどこの手順どおりでOKだが、Silverlight 2 beta 2だったらDefault.htmlの

    <object data="data:application/x-silverlight,"
    type="application/x-silverlight-2-b1"



    <object data="data:application/x-silverlight,"
    type="application/x-silverlight-2-b2"

    とする。


  • IronPythonStudio(Integrated)のインストール

    IronPython StudioはVisual Studio 2008でIronPythonのプロジェクトを作成するためのツール。パッケージにはisolatedとintegratedがあるが、integratedでないとVisual Studioのプロジェクトとして追加できない(っぽい)。ここではintegratedのほうをインストールする。手順は以下のサイトにも丁寧に書いてある。

    IronPython Studio

    まずインストールする前に

    Visual Studio 2008

    Visual Studio 2008 SDK 1.1
    Microsoft Visual Studio 2008 Shell (integrated mode) Redistributable Package


    を入れておく。(リンク先は英語版だが、言語は環境に合わせて)
    そしたら
    IronPythonStudio 1.0 releaseに飛んでIronPythonStudioIntegratedSetupをダウンロード、実行する。

    これでVisual Studio 2008で新しいプロジェクトとしてIronPythonが追加できるようになっているはず。だけど、まだ、いまいち完成度は低いらしい。

    が、今回はIronPythonのプロジェクトを作るのが目的じゃなくて、コードの色つけとか、若干の入力補助という位置づけで。

実際にサンプルをつくるのは、また今度。

September 20, 2008

言語環境を英語にしたらSafariGesturesが使えなくなった

言語環境をEnglishにすると速くなる、らしいということで、やってみたらSafari Gesturesが使えなくなった。
というか、いくつかのジェスチャーがきかない。

どうやらジェスチャーに割り当てられているのが日本語のメニューアイテムだとダメ。
SG→Preferencesで英語のコマンドに割り当て直したら使えるようになった。

September 17, 2008

MonoDevelopの文字化け

Monoやろうとしたらメニューやらが文字化けした。

/Library/Frameworks/Mono.framework/Versions/Current/etc/gtk-2.0/

にある(FinderでCommand+Shift+Gって押して上のパスを入力すると簡単)

gtkrc

というファイルを何らかのテキストエディタで開いて(ドックにあるmiとかテキストエディタとかにドラッグすると簡単)

gtk-font-name = "〜"

の「〜」を日本語フォント名(Hiragino Kaku Gothic ProとかOsakaとか)にすると治る。

September 13, 2008

SilverlightでDataGridを使うために

(追記)
Silverlight 3はこっち→Silverlight 3でのDataGridの設置の仕方

  1. [プロジェクト]-[参照の追加]で[.Net]タブの中から System.Windows.Controls.Data を追加する。

  2. UserControlのルート部分に以下のようにxmlnsを追加する。
    xmlns:my="clr-namespace:System.Windows.Controls; assembly=System.Windows.Controls.Data"
  3. LayoutRootのChildrenに以下を追加する。
    <my:DataGrid x:Name="dataGrid1" />
    x:Nameは任意。
  4. コードからDataGridを弄る。たとえば、
    dataGrid1.ItemSource = new[] { 1, 2, 3 };
    詳しい使い方は下のリンクから。

Silverlight チュートリアル パート 3: データの取得とDataGridへの紐付けにネットワークを使用
Scott Morrison : Using The Silverlight DataGrid ←すごくわかりやすい!


(追記)DataGridを使ったサンプル。

September 6, 2008

How to make an object from string in Silverlight 2 (to avoid AG_E_PARSER_MISSING_DEFAULT_NAMESPACE error)

XamlReaderを用いて文字列からFrameworkElementオブジェクトをつくるときには明示的に既定のXML名前空間を指定しなければならない。たとえば、xmlns='http://schemas.microsoft.com/client/2007'と指定する。そうしないとAG_E_PARSER_MISSING_DEFAULT_NAMESPACEというエラーが。Silverlight 2 beta 2。

ちなみにJScriptのCreateFromXAMLで名前空間は明示しなければhttp://schemas.microsoft.com/client/2007

For XamlReader, the required root element must specify a default XML namespace. This is typically the Silverlight client namespace, http://schemas.microsoft.com/client/2007. For CreateFromXAML the default XML namespace is implicitly assumed to be http://schemas.microsoft.com/client/2007 if not specified.
string xaml = @"<Button xmlns='http://schemas.microsoft.com/client/2007'" +
"Content='foo' Width='60' Height='20' />";
// XamlParseException (AG_E_PARSER_MISSING_DEFAULT_NAMESPACE) will occur if you write
// string xaml = @"<Button Content='foo' Width='60' Height='20' />"
FrameworkElement element = XamlReader.Load(xaml) as FrameworkElement;
hoge.Children.Add(element);

Cf.
Using XamlReader.Load
CreateFromXAML
// Create the MouseLeftButtonUp event handler for the root Canvas object.
function onMouseLeftButtonUp(sender, eventArgs)
{
// Retrieve a reference to the plug-in.
var plugin = sender.getHost();

// Define a XAML fragment and create it.
var xamlFragment = '<TextBlock Canvas.Top="200" Text="Click for more info..." />';
textBlock = plugin.content.createFromXaml(xamlFragment, false);

// Add the XAML fragment as a child of the root Canvas object.
sender.children.add(textBlock);
}

September 5, 2008

INotifyPropertyChanged

using System.ComponentModel;
...
public class foo : INotifyPropertyChanged
{
private int _bar;
public int bar
{
get { return _bar; }
set { _bar = value; if (PropertyChanged != null) OnPropertyChanged("bar"); }
}

#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string str)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(str));
}
}
#endregion
}

Canvas上のオブジェクトをドラッグ&ドロップ

Canvasの上にあるオブジェクトをドラッグ&ドロップする。

How to: Drag and Drop Objects

Silverlight / WPF

        #region Handle
bool isMouseCaptured;
Point mousePosition;

void HandleMouseDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement item = sender as FrameworkElement;
mousePosition = e.GetPosition(null);
isMouseCaptured = true;
item.CaptureMouse();
item.Cursor = Cursors.Hand;

e.Handled = true;
}
void HandleMouseMove(object sender, MouseEventArgs e)
{
FrameworkElement item = sender as FrameworkElement;
if (isMouseCaptured)
{
// Calculate the current position of the object.
double deltaV = e.GetPosition(null).Y - mousePosition.Y;
double deltaH = e.GetPosition(null).X - mousePosition.X;
double newTop = deltaV + (double)item.GetValue(Canvas.TopProperty);
double newLeft = deltaH + (double)item.GetValue(Canvas.LeftProperty);

// Set new position of object.
item.SetValue(Canvas.TopProperty, newTop);
item.SetValue(Canvas.LeftProperty, newLeft);

// Update position global variables.
mousePosition = e.GetPosition(null);
}

e.Handled = true;
}
void HandleMouseUp(object sender, MouseButtonEventArgs e)
{
FrameworkElement item = sender as FrameworkElement;
isMouseCaptured = false;
item.ReleaseMouseCapture();
mousePosition.X = mousePosition.Y = 0;
item.Cursor = null;

e.Handled = true;
}
#endregion

September 3, 2008

Skype for Macを自動で起動しない

調べたら、Skypeを起動してメニューバーから「Skype > 設定... > 一般」に自動起動に関する項目がある、みたいなことが書いてあったのだが見つからない。(バージョン違い?)

で、ユーティリティの「システム環境設定」「アカウント」の「ログイン項目」から「Skype」を選択、下の方の「–」ボタンを押した。

Macでプリントスクリーン

スクリーンショット。
  1. ⌘ command + shift + 3
    画面全体を取り込む
  2. ⌘ command + shift + 4
    範囲を選択して取り込む
  3. ⌘ command + shift + 4 のあとに space
    カメラのマークが出て、一つのウィンドウを選んで取り込む
同時にcontrolを押しておくとクリップボードに取り込む。