Microsoftさんがホスティング事業者向けにWindows Azureをサービス化するための機能を提供し始めました。(今はTechnical Preview)
Microsoftさんがホスティング事業者向けにWindows Azureをサービス化するための機能を提供し始めました。(今はTechnical Preview)
Visual Studio 2012 RCのGridAppテンプレートとか見るとわかりますが、GridViewって便利そうだけど均一的な見た目でなんかもっさりですね。
タイルの大きさ変えたり、見た目に変化を付けたいのは人の常ということで、以下のサイトを参考に弄りましょう。
まずは適当にGridViewを継承したクラスを作って PrepareContainerForItemOverride メソッドをオーバーライドします。
using App5.Data;
using Windows.UI;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
namespace App5.Common
{
public class CustomGridView : GridView
{
protected override void PrepareContainerForItemOverride(Windows.UI.Xaml.DependencyObject element, object item)
{
var obj = item as SampleDataItem;
var gi = element as GridViewItem;
if (obj.Title == "Item Title: 1")
{
gi.SetValue(VariableSizedWrapGrid.ColumnSpanProperty, 2);
gi.SetValue(VariableSizedWrapGrid.RowSpanProperty, 2);
gi.Background = new SolidColorBrush(Colors.Azure);
}
base.PrepareContainerForItemOverride(gi, item);
}
}
}
今回はGridAppテンプレートそのまま使ってるので、SampleDataItemのタイトルがItem Title: 1のアイテムだけ2×2なサイズで配置するようにします。適当なので適宜修正しましょう。
PrepareContainerForItemOverride には配置しようとしてるアイテムが引数として渡されて呼ばれるので、あまり深く考えずそのアイテムをどう表示したいかだけ処理します。
もちろんStyleとかも変えられるので、App.Current.Resourceとか参照して設定してもいいと思います。
最後に作ったカスタムコントロールを使用するようにXAMLを書き換えて終了。
簡単(だけど面倒)ですね。
公式より抜粋というか名状しがたき(ry
いろいろ
元ネタに記載のなかった事項として

既存サービスの拡張:
新しいサービス:
Virtual Machinesは新しい管理ポータル(Preview)やPowerShell、Windows Azure SDK(2012年6月版)を使ってアクセスできる他、MacやLinux向けのコマンドラインツールも提供されました。
など。
※現時点ではCisco ASAシリーズやISR/ASR、Juniper SSG/ISG、SRX/Jなどの機器向けのコンフィグをダウンロードして構成を助けることができます。
ツールの改善と言語サポート:
価格改定:
可用性の拡張
S7SでWindows 8 CPを快適に利用してるわけですが、たまにタッチキーボードが消えてどうしようもなくなる場合があります。
で下手するとOS再起動や強制電源OFF後の再起動でも直らなかったりします。
でまぁいろいろ見てると「Touch Keyboard and Handwriting Panel Service」なるサービスを再起動すればタッチキーボードがリセットされるみたいで、うまく表示されるようになりましたとさ。
まぁCPだからというのもあるけど、スレートでタッチキーボードがはんぐったり死ぬと何もできなくなる場合が多いので何とかしてほしいですねぇ。
RPには期待です!
現在Preview公開中のTeam Foundation Serviceですが、このTFS Previewに接続してるVisual Studioのソリューションを開こうとするとソース管理のステータスを更新しています的なメッセージ(Updating source control status..)の状態で止まってうんともすんとも言わなくなるケースがあるみたいです。
どうもNuGetのバグっぽいようで、最新のNuGet 1.7にアップデートすることで解消するらしいとのこと。
実際アップデートしたらすんなりと開くように直りました。。。
もし嵌ってる人が居ればお試しあれ。
小ネタです。Azure Storage Explorerだと出来なさそうだったのでPowerShellでサクッとAzure Blob Storageのコンテナのパーミッションを変更します。
Windows Azure PowerShell Cmdletsを起動して、Get-Containerコマンドでコンテナを取得します。
$container = Get-Container -StorageAccountName ***YourAzureStorageAccount*** -StorageAccountKey ***YourStorageKey***
取得できたらInstance(コンテナ)のGetPermission()メソッドを呼んで現在の権限を取得します。
$permission = $container[3].Instance.GetPermissions()
PublicAccessプロパティが現在の値です。(OffがPrivateコンテナ、ContanierがPublic Contanier、BlobがPublic Blobになります)
今現在はOffなのでPrivate(非公開)です。
このPublicAccessプロパティに”Container”等をセットし、Instanceプロパティ(コンテナ)のSetPermissions()メソッドを呼び出して設定を反映させます。
$permission.PublicAccess = "Container" $container[3].Instance.SetPermissions($permission)
無事コンテナのアクセスレベルが変わりました。
Windows Phone SDK 7.1.1がリリースされました。(以前はCTPだった)
大きな変更点としては256 MB版のWindows Phoneデバイスへの対応、Windows 8 CP上での動作OKの2点です。
個人的にはWin8CP上で動作するのが嬉しいですね。(もちろんまだサポート対象外ですけど)
Worker Role上の.NET Frameworkの動作CLRバージョンに関した質問がMSDNフォーラムにあがってたので見てみました。
とりあえず適当にですね、Worker Roleを作ります。
public override void Run()
{
while (true)
{
Thread.Sleep(10000);
string clrVersionRuntime = System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion();
System.Diagnostics.Trace.WriteLine("CLRVersion:\t" + clrVersionRuntime);
}
}
寂しいので適当にCLRバージョンを吐き出すようにしました。
さてこいつを既定のママ(.NET Framework 4設定)で動作させてみます。
エミュレータ上
Windows Azure上
v4.0.30319 ですね。
では.NET Framework 3.5にしてみましょう。
エミュレータ上
Windows Azure上
※DebugViewでなぜかキャプチャできなかったのでProcess Explorerで。(最初からこうすれば(ry
v2.0.50727 でした。
想定通りと言えば想定通りです。
Windows Azure でデプロイするとぐるぐる祭りになることは非常によくあることだと思います。
というわけで今日はぐるぐる祭りの嵌りどころなどを少し。
OnStartで起動時の処理に失敗したりしてFalseを返すと再試行されます。このときStartup Taskなども再度走りますので、リトライが考えられてないと変なことになってしまいます。
※StartupTaskで嵌った場合はそもそもOnStartまで来なかったりしますけど(Simpleの場合)
※1回しか走らない想定のアプリケーションのインストール処理とかが該当するかと
ちなみにローカルPCのCompute Emulatorでデバッグ実行などを行うとデバッガが終わって再試行されないので気付きにくいですね。但し、CSRunコマンドから実行した場合はちゃんとエミュレートしてくれます。
OnStartが繰り返し呼ばれてるのがわかるかと思います。
そんなわけでOnStartのエラー処理はちゃんと考えて適切にしましょう。ただ変なまま起動するのがいいのか、このケースみたいにずっとビジーがいいのかは要件次第ですね。(というあたりが難しいところ)
あと、Windows Azureの管理ポータルで表示されるインスタンスのメニューですが、「再起動」はOSの再起動じゃなくて配置をもう一度最初からする的な意味の再起動です。
つまりStartup Taskも走ればOnStartも走るということで。OS上の再起動とは異なるので注意。
※エラートラップちゃんとしてなくて安易にやられるとOnStartでFalseかえってぐるぐる祭り開催!になります。
対処方法としては「初期状態にリセット」でReImageするとかですね。。
という感じで今日は自分が嵌った点をお伝えしました。とほほ。
※ぐるぐる祭りとは
ビジーやAbortのままReady状態にならない時の管理ポータルの見た目(アイコン)の事
例:
こんな感じでぐるぐる繰り返します。。。切ない。
今日も平和についったー。
たまたま目についたツイートがこちら
※もともとの発端は原発の話だったと思われます
このツイートだけ切り出すのもどうかと思ったのですが。。で、TLとしてはたとえば例外全キャッチせずに本当の想定外ならアプリしんじゃえーとかにするとかそういうこと考えないといけないよねという話に。
で一例としてたとえば安全側に倒すなら、サービスがちゃんと生きてる間にアプリをサービスから切り離すとか(例:ロードバランサのクラスタから切り離す、サービスのみオフラインにする等)すればいいんじゃないですかね、Azureなら簡単にロードバランサから切り離せますよという話になりました。というかそんなネタを振ってみました。
幸いAzureにはインスタンスの状態をBusyに設定してロードバランサから切り離してくれる機構があるので、今日はそのへんを見てみようと思います。
以上前ふり。