2011/12/13

SilverlightでボタンのContentにリソースを適用すると例外が発生


<Grid x:Name="LayoutRoot" Background="White">
 <Button >
  <Button.Content >
   <StackPanel>
    <TextBlock Text="ほにゃらら" />
    <Rectangle Width="50" Height="50" Fill="Red" />
   </StackPanel>
  </Button.Content>
 </Button>
</Grid>

こんなボタンを作って、プロパティ一覧からContentの「値をリソースに抽出」すると自動で↓みたいな感じになる。
<UserControl.Resources>
 <StackPanel x:Key="Content1">
  <TextBlock Text="ほにゃらら" />
  <Rectangle Fill="Red" Height="50" Width="50" />
 </StackPanel>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
 <Button Content="{StaticResource Content1}"></Button>
</Grid>

この状態でデザイナは正常に表示されるんだけど、実行時に例外が発生する。
XamlParseException
なんかボタンのスタイルを眺めてたら、ContentTemplateにリソースを適用すればいいみたい。
ContentTemplateにはDataTemplateを指定する。
 <UserControl.Resources>
  <DataTemplate x:Key="Content1">
   <StackPanel>
    <TextBlock Text="ほにゃらら" />
    <Rectangle Fill="Red" Height="50" Width="50" />
   </StackPanel>
  </DataTemplate>
 </UserControl.Resources>
 <Grid x:Name="LayoutRoot" Background="White">
  <Button ContentTemplate="{StaticResource Content1}"></Button>
 </Grid>

これでContentとStyleを別々に指定できるので、Contentだけの使い回しができるようになった。

SQL Server Expressで定期バックアップ

SQL Server (今回は2008 R2) で定期的にバックアップ取りたい時、
Standardならメンテナンス・プランとかいう機能が付いてるらしいが、Expressにはそんないいもんない!

なので、バッチファイルとwindowsタスクで対応。

バッチファイルの中身。

@ECHO OFF
set dt=%date:~-10%
set tm=%time: =0%
set fname=%dt:~0,4%%dt:~5,2%%dt:~8,2%-%tm:~0,2%%tm:~3,2%%tm:~6,2%.bak
set fpath=C:\Program Files\Microsoft SQL Server\MSSQL10_50.NDB1\MSSQL\Backup\

::古いファイルを削除(最新7個のみ残す)
cd %fpath%
for /f "skip=7" %%A in ('dir /b/o-d "%fpath%"') do @del /q %%A

::ログインしてバックアップ
sqlcmd -S (local) -U sa -P pass -d dbname -Q "BACKUP DATABASE [dbname] TO  DISK = N'%fpath%%fname%' WITH NOFORMAT, NOINIT,  NAME = N'dbname-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD,  STATS = 10"

これをタスクで好きなタイミングに実行。
久々のバッチファイル。

dd進捗

ddコマンドで進捗が気になる時は

kill -SIGUSR1 PID


で進捗が確認できる。