Archive for 2011年3月

魔法少女まどか☆マギカ のBGMが半端ないので

2011年3月25日

まとめておく。

まどかマギカのあのBGMをアレンジして長編CM風に仕上げてみた
http://www.nicovideo.jp/watch/sm13824590

【魔法少女まどか☆マギカ】 マミさんのテーマ 大合唱&大合奏ver.
http://www.nicovideo.jp/watch/sm13834828

魔法少女まどか☆マギカ 美樹さやかのテーマ曲を耳コピしてみた
http://www.nicovideo.jp/watch/sm13860059

【まどか☆マギカ】#3~9の例の音楽のシーンを集めてみた
http://www.nicovideo.jp/watch/sm13778100

 

魔法少女まどか☆マギカOP コネクト
魔法少女まどか☆マギカ ED

スレート PC に関する Windows 7 エンジニアリング ガイダンス

2011年3月16日

いまさらながら。

http://msdn.microsoft.com/ja-jp/windows/hardware/gg487456

Windows Touch APIs

Windows 7 のマルチタッチ機能

GoToStateAction をイベントハンドラから呼ぶ

2011年3月14日

<Window
    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
    xmlns:local=”clr-namespace:WpfApplication1″ xmlns:i=”http://schemas.microsoft.com/expression/2010/interactivity” xmlns:ei=”http://schemas.microsoft.com/expression/2010/interactions”
    x:Class=”WpfApplication1.MainWindow”
    x:Name=”Window”
    Title=”MainWindow”
    Width=”640″ Height=”480″ MouseLeftButtonDown=”Window_MouseLeftButtonDown” MouseRightButtonDown=”Window_MouseRightButtonDown”>
    <Window.Triggers>
        <EventTrigger RoutedEvent=”Mouse.MouseDown”/>
    </Window.Triggers>

    <Grid x:Name=”LayoutRoot”>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name=”VisualStateGroup”>
                <VisualState x:Name=”MenuIn”>
                    <Storyboard>
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=”(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)” Storyboard.TargetName=”myMenu”>
                            <EasingDoubleKeyFrame KeyTime=”0″ Value=”-482″/>
                            <EasingDoubleKeyFrame KeyTime=”0:0:1″ Value=”-30″/>
                        </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
                <VisualState x:Name=”MenuOut”>
                    <Storyboard>
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty=”(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)” Storyboard.TargetName=”myMenu”>
                            <EasingDoubleKeyFrame KeyTime=”0″ Value=”29″/>
                            <EasingDoubleKeyFrame KeyTime=”0:0:1″ Value=”-471″/>
                        </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <local:MyMenu x:Name=”myMenu” Margin=”87,74,112,66″ RenderTransformOrigin=”0.5,0.5″>
            <local:MyMenu.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform/>
                    <TranslateTransform/>
                </TransformGroup>
            </local:MyMenu.RenderTransform>
        </local:MyMenu>
        <Button x:Name=”button” Content=”button” HorizontalAlignment=”Left” Height=”34″ Margin=”21,19,0,0″ VerticalAlignment=”Top” Width=”109″ RenderTransformOrigin=”0.5,0.5″>
            <Button.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform/>
                    <TranslateTransform/>
                </TransformGroup>
            </Button.RenderTransform>
            <i:Interaction.Triggers>
                <i:EventTrigger EventName=”Click”>
                    <ei:GoToStateAction StateName=”MenuIn”/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>
    </Grid>
</Window>

この時、次のように呼び出せる。

private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    this.MenuIn.Storyboard.Begin((FrameworkElement)sender);
}

private void Window_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
    this.MenuOut.Storyboard.Begin((FrameworkElement)sender);
}

MVC3 でページング

2011年3月2日

1. まずは、サンプルデータベース AdventureWorks をインストール。

http://msftdbprodsamples.codeplex.com/releases/view/55926

2. Model に、Contact の Entity Framework の追加

Model を右クリック、新しい項目の追加より、データのADO.NET Enitity Data Model を選択。

モデルに含めるコンテンツで、データベースから生成を選択。テーブルで Contactを選択。

3. Controller

Action として、Contact を追加。

using MvcApplication8.Models;

AdventureWorksEntities ae = new AdventureWorksEntities();

public ActionResult Contact()
{
    ViewBag.Message = “ASP.NET MVC へようこそ”;

    return View(ae.Contact.ToList());
}

4. Viewとして、Contact を追加。

Razorビューエンジンで、スキャフォールディングのListを選択。

このままだと、すべてのページを表示してしまうので、10レコードづつ表示するページングが必要。

そこで、次のようにルーティングを定義して、
routes.MapRoute(
    “Contact”, // ルート名
    “{controller}/{action}/{page}”, // パラメーター付きの URL
    new { controller = “Home”, action = “Contact”, page = 1 } // パラメーターの既定値
);

Contact Action でページを指定してあげる。

public ActionResult Contact(int page)
{
    ViewBag.Message = “ASP.NET MVC へようこそ”;

    var res = (from x in ae.Contact select x).OrderBy(x=>x.FirstName).Skip(page * 10).Take(10);

    return View(res);
}

これで、http://…/Home/Contact/789 で、789ページ目から10人分だけ表示するページング。

image

なお、OrderByしないと、次のエラーになるので、OrderByは必要。

メソッド ‘Skip’ は、LINQ to Entities では並べ替え済みの入力に対してのみサポートされます。メソッド ‘Skip’ の前にメソッド ‘OrderBy’ を呼び出す必要があります。

なお、Paging performance with Skip/Take

http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/45a9172b-c2fe-4be5-b36b-9ec708f0998e

によると、Linq の Skip / Take はかなり早いようだ。