読者です 読者をやめる 読者になる 読者になる

Azure Mobile AppsのEasy TablesでAdd from CSVが出る際の回避方法

Azure Xamarin

2016/11/19現在、以下の不具合は解消されているようです

Azure Mobile AppsのEasy Tablesですが、ここ数日(2016/11/11現在)の間に「Add from CSV」を実行すると下記のエラーが発生するようになってしまいました。
f:id:yamamoWorks:20161111223302p:plain

これはMobile Apps側の不具合のようです。
https://social.msdn.microsoft.com/Forums/en-US/c4a3a6fa-67de-444f-ba9d-cf0dfc0faaf9/easy-tables-add-from-csv-is-not-working?forum=azuremobile

回避策

暫定の回避策(バージョンを下げる)が提示されているので手順を説明します。

  1. 該当のMobile Appを選択
  2. Application settingsの中のApp settingsセクションを探す
  3. MobileAppsManagement_EXTENSION_VERSIONの「latest」を「1.0.367」に変更 ※2016/11/11現在
  4. Saveボタンを押す f:id:yamamoWorks:20161111223733p:plain

これで「Add from CSV」が利用できるようになります。

AzureVM Power Switch

UWP Windows10 azure Xamarin iPhone Android

f:id:yamamoWorks:20160924165044p:plain

Microsoft Azure 仮想マシンの起動、停止が行えるモバイルアプリケーションです。
先行してWindows 10 Mobile/Windows 10版のアプリを公開していましたが、新たにiOS版、Android版が加わりました!

Microsoft  Apple  Google 

機能概要

  • 仮想マシンの起動、再起動、停止
  • 複数アカウントに対応
  • サブスクリプション単位での表示/非表示設定(Windows版のみ)

スクリーンショット

Windows 10 iOS Android
f:id:yamamoWorks:20160529130835p:plain:W200 f:id:yamamoWorks:20160924161817p:plain:W200 f:id:yamamoWorks:20160924161811p:plain:W200
f:id:yamamoWorks:20160529130843p:plain:W200 f:id:yamamoWorks:20160924162525p:plain:W200 f:id:yamamoWorks:20160924162538p:plain:W200

備考

Azure Resource Manager(ARM)で管理されている仮想マシンが対象となります。
認証にはMicrosoftアカウントではなくAzure ADで管理しているアカウントが必要です。

ActivityIndicatorをProgressBarからProgressRingに変更する

Xamarin

Xamarin Formsの読み込み中などの状態を表現するActivityIndicatorですが、iOSとAndroidではグルグル回る円で描画され、UWPでは何故か左から右に粒が流れるProgressBarで描画されておりデザインの統一が取れなくて困ります。

iOS Android UWP
f:id:yamamoWorks:20160816184154g:plain f:id:yamamoWorks:20160816184158g:plain f:id:yamamoWorks:20160816184205g:plain

そこでカスタムレンダラーを用いてProgressRingに置き換えてみました。

UWP(Ring版)
f:id:yamamoWorks:20160816185830g:plain

Xamarin FormsはオープンソースになっているのでデフォルトのレンダラーActivityIndicatorRenderer.csをコピペして少し変更しただけです。

GitHubにソースコードを置いておきます。 github.com

TableViewにコレクションデータをバインドする

Xamarin

Xamarin FormsのTableViewListViewと異なりコレクションデータをバインドする機能はありません。 TableViewは設定画面の構築で使用する事を想定しているようですが、メールのアカウント設定のように可変なレコードを扱いたいケースがあるかと思います。 この場合、コードビハインドでレコードをループしてTableViewの中のTableSectionに行を追加するコーディングとなり美しくありません。 そこで今回はTableView(TableSection)にコレクションデータをバインドする機能を追加してみました。

なんちゃってデータバインドなので限定的な用途での参考程度とお考えください。

github.com

コードはGitHubを参照して頂くとして、ここでは使い方と実行イメージだけ載せておきます。

使い方

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XFApp1"
             x:Class="XFApp1.MainPage" Title="Settings" x:Name="root">
  <ContentPage.BindingContext>
    <local:MainPageViewModel />
  </ContentPage.BindingContext>
  <TableView Intent="Settings">
    <TableRoot>
      <TableSection Title="アカウント" local:CollectionBindings.ItemsSource="{Binding Accounts}">
        <local:CollectionBindings.ItemTemplate>
          <DataTemplate>
            <TextCell Text="{Binding Name}" Detail="{Binding Text}" />
          </DataTemplate>
        </local:CollectionBindings.ItemTemplate>
        <TextCell Text="アカウントを追加" Command="{Binding Source={x:Reference root}, Path=BindingContext.AddCommand}" />
      </TableSection>
    </TableRoot>
  </TableView>
</ContentPage>
public class MainPageViewModel : BindableObject
{
    public ObservableCollection<Account> Accounts { get; }

    public ICommand AddCommand { get; }

    public MainPageViewModel()
    {
        Accounts = new ObservableCollection<Account>(new[]
        {
            new Account { Name= "iCloud", Text="iCloud Drive, リマインダー, メモとその他2項目" },
            new Account { Name= "Outlook", Text="メール、連絡先、カレンダーリマインダー、メモ" },
            new Account { Name= "Gmail", Text="メール、連絡先、カレンダー" }
        });

        AddCommand = new Command(() =>
        {
            Accounts.Add(new Account { Name = "Yahoo!", Text = "メール、連絡先、カレンダー" });
        });
    }
}

public class Account
{
    public string Name { get; set; }

    public string Text { get; set; }
}

実行イメージ

f:id:yamamoWorks:20160730225601p:plain:w300  f:id:yamamoWorks:20160730225611p:plain:w300

Kaspersky 16.0.1.445 で Visual Studio 2015 が起動しなくなる場合の対処方法

追記(2016/09/05)

どうやら下記の問題は対応されたようですね。
定義ファイルの更新と同時にパッチも適応され、バージョン16.0.1.445(e)であれば問題ないようです。


原因不明で3回もOS再インストールするハメになったのでエントリー (# ゚Д゚)

Visual Studio 2015 Update 3 のパッチ KB3165756 を当てたら...が事の始まりだったのですが、実はパッチは関係なく直前にアップデートしたKasperskyが問題でした。

Visual Studio 2015を起動しようとするとCPUを30%使ったまま何時間放置しても起動せず、修復やアンインストールも同じくCPUを喰ったまま進まず、プロセスも殺せず、Windowsの再起動も出来ず、電源OFFするしかない状態に。

原因不明を探るべくOS再インストールから順に試したところ、Kaspersky 2016が犯人である事が判明しました。

Kasperskyのホームページからダウンロードした2016/7/26時点での最新バージョン 16.0.1.445 に問題があるようです。
※他マシンにインストールされているバージョン 16.0.0.614 では問題が発生していません。

なお、どのエディションのVisual Studio 2015でも起動しなくなるようです。

対処方法

Visual Studioのユーザデータを削除すると起動できるようになります!

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe" /ResetUserData

以上!

stackoverflow.com