UWPを開発するときにほぼ必須といっても過言ではない通知を定義するxmlをクラス構造でラップしてくれてインテリセンスから簡単に通知を表示できるNotificationsExtensionのライブラリが気づいたらUWP Community Toolkitに移植されていました。 UWP Community TookitとはオープンソースではないWindowsのAPIに対し、コミュニティでも簡単に開発に参加できる公式ライブラリとして存在しているUWPのExtensionライブラリみたいなものですがこちらの記事にあるようにNotificationExtensionsは完全にCommunity Toolkitに移植されてたみたいですね NotificationsExtensions has moved to the UWP Community Toolkit! なので以降はNugetからMicrosoft.Toolkit.Uwp.Notificationをインストールしろということのようです。

特定の列削除

行のイテレーション

列条件に一致する行の抽出

平均をとって平均からの差分を取得

特定の列の条件によって変化する新しい列の生成

       

既存の.net framework向けCognitive ServicesのSDK(Nugetに上がってるProjectOxford的な奴)ってdotnetcoreで使えないみたいですね。 実行しようとするとこのようなエラーがでます。 System.IO.FileNotFoundException: Could not load file or assembly ‘System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes’. The system cannot find the file specified. System.Net(2.0.5.0)のアセンブリが無いと言われてるようですがdotnetcoreには該当アセンブリがないのだろうか(おってなかったのでわからない)*1 ProjectOxfordのSDKはオープンソースではないはずなのでソースをいじれないことには対応ができないわけで、直接RESTでAPIを叩こうかとも思ったんですけどすでに公式でCognitiveServiceのDotnetCore向けのSDKがオープンソースで公開されていました。 https://github.com/search?utf8=%E2%9C%93&q=org%3AMicrosoft+cognitive+core&type= 親切なことにNugetにも公開済み。後ろにDotNetCoreが付いているものが該当SDKとなります ということで.csprojを編集してNugetライブラリの指定を変えます。 あとはdotnet restoreでok   *1 社員の方曰く互換性はほとんどないようです。おとなしくコンパイルしなおしましょうということですね   @garicchi そいつに限らず.NET Framework用の(mscorlib 4.0.*)を参照するやつは.NET Coreと互換性無いですね — Atsushi Eno (@atsushieno) 2017年5月16日

MySQLにはレプリケーションという同じ内容のデータベースを複数冗長に持つ設定をすることができる機能があります。 Microsoft Azureには現在(2017/5/9)MySQLのレプリケーション機能をサポートするサービスは存在しませんがLinux VirtualMachine内にMySQLを稼働させることで同じ機能を実現することができます。 今回はMySQLのレプリケーションをAzureで行っていきたいと思います。 今回の構成はこのようにします。 同一VirtualNet、同一ネットワーク・セキュリティグループ内にUbuntuOSのVMを2台、MasterとSlaveとして配置します。 レプリケーションについて MySQLレプリケーションに関してはこちらの記事がとても詳しくまとまっているので参考にしていきます。 MySQL入門 レプリケーション編 http://qiita.com/Tocyuki/items/c224cef57493f536a941 通常、データベースを1台で運用すると1台のDBに負荷が集中してサービスのボトルネックや可用性の低下へとつながります。 そこで同じ内容のデータベースを複数作成(レプリケーション)しアクセスを分散することで1台あたりのデータベースの負荷を減らします。また、1台のDBが使えなくなったとしてももう一台のDBが継続的に稼働し続けることで高可用性を実現します。 しかしDBを複数持つと1台に書き込んだ瞬間にすべてのDBを更新しなければいけません。 そこでDB1台のみに書き込み、読み込みを許可しその他のDBには読み込みのみを許可することでDBの読み込みのトラフィックを分散することができます。上記の書き込み、読み込みを許可するDBをMaster、読み込みのみを許可するDBをSlaveと呼びます。 さらに、Masterが落ちた時はSlaveをMasterへと昇格することでサービスの継続稼働をサポートします。 インスタンスを作成する 今回の本題はMySQLの設定になるので上図の構成のインスタンスをさくっと作ってしまいます。 まずVirtualNetを作成します。アドレス空間はIPv4のクラスCとしましたが別になんでも大丈夫です。 続いて2つのVMを包むネットワーク・セキュリティグループを作成します。こちらも特に問題はありません。 MasterDB用のVirtualMachineを作成します。 OSはUbuntu 16.04LTS VirtualNetworkとネットワーク・セキュリティグループは先程作成下ものを指定してください。 Slave用のVMを作成します。 OSはMasterと同じUbuntu 16.04LTS、VNet、セキュリティグループもMasterと同じ、先ほど作成したものとします。 VMに紐付いているネットワークインターフェースカードの設定を開き、IPアドレスの割当を静的にし、上図の構成通り、Masterに192.168.0.4、Slaveに192.168.0.5を設定します。 ネットワーク・セキュリティグループの設定を開き、SSHの22番の受信許可をします。   これで上図の設定をすることができました。 MySQLにレプリケーションの設定をする 今回はGTIDの使用はなしの方向でいきます。 まずMasterのVMにsshでログインします。 DB、テーブルの作成、データの挿入までを行います。

レプリケーション用のユーザーを作成します。

  MasterDBの設定を行います。サーバーIDは任意のものを設定します。

SlaveのMysqlインストールと設定を行います。  

続いてMasterDBでバイナリログの名前とイベント開始位置をめもります。

MasterDBのバックアップをとります。

scpでslaveへと転送します。

SlaveのDBでリストアします。

SlaveでMasterの登録を行います。

[…]

AudacityのSoundFinderを複数のファイルに一括適用します。 VADをしたいファイルを複数用意します。 以下のPython3用のスクリプトを実行します。

wavファイルをおいていたディレクトリにwav_list.lofというファイルができているのでAudacityで読み込みます。 Audacityで複数トラックの音声ファイルを時間をずらして読み込めます。 SoundFinderを実行します。この操作でVADを行うことになるので適宜パラメータを調整してください。 VADを行ったラベルデータを書き出します。 以下のPython3用スクリプトを実行します。ラベルのパスとlofファイルのパスは指定してください。

  複数の音声ファイルに一括で発話区間検出のラベルを作ることができました。 音声ファイル名.txtがAudacityで使えるラベルデータとなります。 あとはこれを読み込んでsoxで切り取るなりすれば発話ごとの音声ファイルになります。