TeamsとSkypeでチャットできるんだ!

Teamsの上の検索ボックスにSkypeで使っているメールアドレスを検索してみたらちゃんと外部ユーザとして検索できてチャットとか会議ができそうな雰囲気。

 

Teams

Teams

 

Skype

Skype

上記のようにお互いにやりとりはできているようだ。

若干のタイムラグはある印象。

 

 

 


C#のStringBuilderの編集文字列初期化について

C#のStringBuilderは文字列の編集において高速に行うことができる。

これを、一旦クリアしたいときなどは、通常はClearメソッドを使うのが通常である。

しかしながら、再インスタンス化をしているコードを見つけその速度差が気になった。もともと、速度が問題視されている箇所であり、これが原因ではないかと思いClearメソッドと再インスタンス化するものとの速度比較をしてみた。

.NET4.8で計測している。

 

        static void Main(string[] args)
        {
            int loop = 10000000;
            Stopwatch sw = new Stopwatch();
            StringBuilder sb = new StringBuilder();
            GC.Collect();
            sw.Start();
            string[] st1 = new string[loop];
            for (int i = 0; i < loop; i++)
            {
                sb = new StringBuilder();
                sb.Append("hogehoge");
                sb.Append("fugafuga");
                sb.Append(i.ToString());
                sb.Append("回目のループ");
                st1[i] = sb.ToString();
            }

            sw.Stop();
            var newString = sw.ElapsedMilliseconds;
            sw.Reset();

            GC.Collect();

            string[] st2 = new string[loop];
            for (int i = 0; i < loop; i++)
            {
                sb.Clear();
                sb.Append("hogehoge");
                sb.Append("fugafuga");
                sb.Append(i.ToString());
                sb.Append("回目のループ");
                st2[i] = sb.ToString();
            }

            sw.Stop();
            var sbclear = sw.ElapsedMilliseconds;

            Console.WriteLine("new  : " + newString + "ms");
            Console.WriteLine("Clear: " + sbclear + "ms");
        }

 

 

f:id:tomo_k:20200606075833p:plain 

 

結果、このようにClearメソッドの方が圧倒的に速いという結果になった。

StringBuilderの文字列を初期化したいというだけでnewするのはやめましょう。

Azure Logic Appsを使ってみる

Azure Logic Appsを使って特定のツイートをGoogle SpreedSheetに記録し続けるというシナリオを考えてみたいと思います。

 

そもそも、Azure Logic Appsはサーバーレスのサービスで実行された分だけ課金されるという特徴があります。また、いわゆるプログラム言語で内容を記述する必要はないので非技術者にも扱いやすいものになっています。

 

すべての処理内容の記述はAzure Portal上のロジックアプリデザイナーで完結できます。実体は、JSONですが利用者はこれを意識する必要は通常ありません。

 

 f:id:tomo_k:20191218080425p:plain

 

まず、アプリの外観としては上記のようになります。

Twitterの他にもOneDrive、Slack、GMailなどさまざまなものがベンダー問わずトリガーとして用意されています。

この場合は、Twitterに特定のツイートが投稿されたらというのがトリガーになります。

トリガーを引かれた場合、とあるOneDrive上の特定のSpreedSheetのシートにツイート内容を挿入するというものになっています。

 

詳細を見てみましょう。

 

 f:id:tomo_k:20191218080439p:plain

 

まずは、トリガーの部分です。「@miz_mis」というアカウントから投稿されたらというのがトリガーになっています。

他にも、普通に検索したい単語やハッシュタグを入れることも可能です。

下の、間隔はツイートをチェックする頻度になります。

 

Twitterとの連携は当然ですがアプリ連携が必要です。しかし、それは診断アプリなどと同一の連携となるので方法は簡単です。

 f:id:tomo_k:20191218080445p:plain

 

 

次に、収集するシートと内容を指定していきます。

とはいえ、これもドロップダウンリストに提示されている中から選んでいくだけですので非常に簡単です。

 

 f:id:tomo_k:20191218080442p:plain

 

で、昨晩から動かしていた実行結果は上記のようになっています。

このサービスはText Analyticsと組み合わせることによって幅が広がります。

例えば、日本語のツイートだけを抽出するとか、センチメントのパラメータを使い否定的なツイート、肯定的なツイートを振り分けとか様々な活用方法があります。

sakurug.connpass.com

 

主に、.NET Frameworkを使用してオンプレ向けのシステム開発をしてきた方向けの講座です。

全2回中の2回目です。

 

今回は、オンプレミス環境とAzure環境で実行結果に差異が出るコード例を紹介し実際にAzureにデプロイして動作を体験します。

通常、オンプレミスでは地域設定・言語設定というのがなされておりこれに依存したコードを書いているとAzure環境では思わぬ実行結果となってしまいます。

また、日時を扱わない業務システムは皆無といえ、JSTUTCとの変換は必須といえます。

 

また、Azureを扱う上で避けて通れないストレージサービスの中で今回はテーブルストレージについて取り上げます。

ストレージエミュレータを使いローカル環境でテストできるのでこれを使います。

 

ハンズオン主体となっておりますので、Visual Studio2019(Windows)があらかじめインストールされたPCとAzureに実際にデプロイすることからAzureアカウントと有効なサブスクリプションを用意してください。

尚、Azureの契約などに関してはセミナーの中では質問に答えられません。

 

主に、.NET Frameworkを使用してオンプレ向けのシステム開発をしてきた方向けの講座です。

全2回を予定しております。

今回はオンプレからクラウド移行することでのメリット。同じWebアプリケーションをオンプレからクラウドに移行するだけでも運用、保守それぞれにメリットが生じこれがそのまま費用面でもメリットになってきます。

クラウドのメリットを最大限に生かすという点でPaaS特にAzureのAppServiceにフォーカスしてどうしたらオンプレシステムを移行できるのか注意すべき点を解説していきます。

そのためには、まずクラウドが提供するサービスを把握します。

そして、オンプレシステムを移行するときに避けて通れないAzureのサービスがストレージアカウントです。

AppServiceにもローカルストレージは存在しますが永続的なストレージではありませんので永続的なファイル保存を目的とするのならストレージサービスの使用が避けられません。

また、簡易的なKey-Valueストレージも備えていますので要件によってはデータベースの代用として使用できることもあります。

今回は、ここまでの内容を予定しています。

 

次回は、今回紹介した内容についてのハンズオンを予定しています。

全2回参加されることでより価値のある内容になると思います。

 

まずは、「完全に理解した!」を目指して話をしていきたいです。

 

Zabbixによる自動障害回復

WebサーバでIISが落ちたらたとえOSが動いていたとしてもそれはただの電気を食うだけの暖房機器です。

というわけで、IISが何らかの原因で停止してしまった場合に起動して上げるコマンドを送って上げるようにしました。もちろん、何かの原因があって起動できない場合は人手で原因を除去してあげなきゃ行けないわけですが。。。

 

前提として、Template OS Windowsを使用していること。これで、サービスが停止したときにトリガーが引かれるはずです。

Webサーバ側でZabbixリモートコマンドを実行できる設定にする。

 

zabbix_agentd.conf

### Option: EnableRemoteCommands
# Whether remote commands from Zabbix server are allowed.
# 0 - not allowed
# 1 - allowed
#
# Mandatory: no
# Default:
EnableRemoteCommands=1

 

 

アクション設定をする

トリガー名にIISのサービス名であるW3SVCを含むことを実行条件にします。

 

実行内容として、リモートコマンドで現在のホストでカスタムスクリプトを実行とします。スクリプトの内容はW3SVCサービスが起動するように「net start W3SVC」としました。

 

動作検証してみる

動作検証のため、サービスを停止してみたところ、リモートコマンドが実行され自動的に障害復帰した。

 

 

 

 

 

 

 

Zabbixによる監視で一番知りたかったこと

それは、以下のとおり。

 

 

Webサーバのレスポンスです。

想定通り、定期的に上下していてレスポンスが悪いときはバックアップを取得している時間帯です。