サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブラックフライデー
gooner.hateblo.jp
先日の記事で、Azure DevOps の Multi-Stage Pipelines を使って Azure Web Apps にデプロイする内容を記載しました。 gooner.hateblo.jp YAML をソースコードのリポジトリで管理する想定なので、環境毎に異なる情報やパスワードなどのシークレットな情報をリポジトリに含めたくありません。そこで、Azure DevOps の Variable groups を使って、パイプラインを書き換えてみました。 パイプラインの全体設計 先日の記事と同様に、パイプラインは、自動デプロイされる開発環境向け(Commit Stage)と承認デプロイされる本番環境向け(Production Stage)を作りました。 YAML を Build と Release に分けて、可変部をパラメータで切り替えできるテンプレートを作ることで再利用性を向上させます
前回の記事では、Azure Container Service に Kubernetes を展開し、YAML ファイルを使ってデプロイしました。 gooner.hateblo.jp コンテナ内のディスク上のデータは一時的なものであり、コンテナが再起動されると、データは失われます。データを永続化することで、コンテナが再起動されてもデータが失われなくなり、コンテナ間でデータを共有することも可能になります。 今回は、Azure Files と Azure Data Disks にボリュームをマウントしてみます。 Volumes とは コンテナ内のディスク上のディレクトリを外部ストレージにマウントさせることで、データを永続化させることができます。 Kubernetes では、GCE や AWS などのクラウドプラットフォームのストレージ、NFS のようなネットワークストレージをサポートしています。
実際に試してみたら、少しハマってしまったので、備忘も兼ねて投稿しておきます。 Azure Storage Client を使って Blob にアクセスできますが、 クライアントに Azure Storage のキーや署名情報を公開したくない アクセスログを取りたい といった要件があった場合、ASP.NET Web API を経由して Blob にアクセスすることで、データが Webサーバー上にあるかのように扱うことができます。 Blob の test コンテナにファイルをアップロード/ダウンロードできる Web API を実装してみました。 #BlobController.cs [RoutePrefix("api/blob/{blobName}")] public class BlobController : ApiController { private CloudBlobContain
UWP でローカルデータベースを使いたかったので、 Entity Framework Core 1.0(旧 Entity Framework 7)で SQLite をコードファーストで試してみました。 Entity Framework Core 1.0 をインストールする Visual Studio で作成した UWP のプロジェクトに、NuGet パッケージをインストールします。EF Core 1.0 は、まだバージョンが RC1 です。 Install-Package EntityFramework.SQLite -Pre インストールされたライブラリを見ると、EF 6 までは、System.Data.SQLite の SQLite.Interop.dll でしたが、EF Core 1.0 では SQLite の公式HP からダウンロードできる sqlite3.dll が配置されていま
ASP.NET MVC 5 の Ajax 通信でページを部分更新する際に、どのように例外を処理すべきかを悩んだので、まとめておきます。 現象 Ajax 通信で PartialView を返すアプリをシンプルなコードで実装します。 #HomeController.cs public class HomeController : Controller { public ActionResult Ajax() { ViewBag.Message = "Ajax Test page."; return View(); } [HttpPost] public ActionResult AjaxTest() { if (Request.IsAjaxRequest()) { return PartialView("_AjaxResult"); } return Content("Ajax 通信以外のアク
Build 2016 報告会で LT した内容を記事にまとめておきます。 gooner.hateblo.jp Azure Functions を利用して、SendGrid の Event Webhook から POST されたデータを受け取り、Azure DocumentDB に登録してみます。従来の方法については、過去の記事で書いていますので、Azure Functions との連携にポイントを絞ってまとめます。 gooner.hateblo.jp Azure Functions を作成する Azure ポータルから Azure Functions を作成します。テンプレートには、JavaScript の Generic - Webhook を使います。 Trigger の WebHook type を「Not a WebHook」に変更します。初期値の「Generic JSON」のまま
Visual Studio 2015 から追加された .NET Compiler Platform(Roslyn)を使って、ASP.NET Web API 向けの Code Analyzer を作ってみました。 環境構築 Roslyn で Code Analyzer を開発するには、Visual Studio のオプション機能と .NET Compiler Platform SDK をインストールする必要があります。Build Insider の記事が分かりやすいので、こちらを参照してください。 www.buildinsider.net SDK と一緒に、Syntax Visualizer というツールもインストールされます。SyntaxTree をリアルタイムに表示してくれるので、実装する際に役立ちます。 プロジェクトの作成 開発環境が整うと、Visual Studio のプロジェクト
この記事は、ASP.NET Advent Calendar 2015 の 8 日目 の記事です。 qiita.com 久しぶりに Swagger を使って ASP.NET Web API のドキュメントを作成してみたら、Swashbuckle の使い方が少し変わっていたので、変更点をまとめておきたいと思います。 Swagger とは Swagger については、みそさんの記事が大変分かりやすくまとまっています。 miso-soup3.hateblo.jp Swashbuckle の Version 5.x で Swagger 2.0 に対応したことで、仕様変更されました。 IIS 上で OWIN をホストさせる ASP.NET Web API を実装してみます。 前準備 Visual Studio で ASP.NET MVC のプロジェクトを作成し、Web API の OWIN 関連のライ
ASP.NET MVC や Web API で、クライアントの IP アドレスを取得する方法をまとめておきます。プロキシサーバーなどを経由して Web サーバーに接続された場合、HTTP ヘッダーの X-Forwarded-For から取得する必要があります。 ASP.NET MVC サーバー環境変数から取得しているため、HTTP_X_FORWARDED_FOR がキーとなります。 #HomeController.cs public ActionResult Index() { var clientIp = ""; var xForwardedFor = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (String.IsNullOrEmpty(xForwardedFor) == false) { clientIp = xForwar
この記事は、Azure Advent Calendar 2014 と ASP.NET Advent Calendar 2014 の両方の 13 日目 の記事です。 qiita.com qiita.com Azure Media Indexer と Azure Search を使って、動画に字幕を表示し、検索した字幕データの時間から再生できる ASP.NET MVC アプリを作成してみます。 Azure Media Indexer ・・・ 動画を分析し、音声をテキスト化できるサービスです。字幕を表示できるだけでなく、テキスト化された音声データを検索することで、「あの話をしたのは、いつ頃だったか?」を探すことができます。 Azure Search ・・・ Search as a Services なサービスで、Azure 版の Elasticsearch です。 動画の題材は、先日行われたオン
ASP.NET Web API を利用した大規模なアプリケーションでは、コントローラーを複数のグループに分割し、それぞれのグループで個別に開発したくなります。例えば、ユーザー向け(test1)と管理者向け(test2)の Web API を分けるケースなどがあります。 GET api/test1/ GET api/admin/test2/ そこで、ASP.NET Web API のコントローラーをグループ化する方法を考えてみました。 ASP.NET MVC の Area を利用した場合 ASP.NET MVC には、区分(Area)というコントローラーをグループ化する機能があります。 まず、ユーザー向けの Web API を実装します。 #Test1Controller.cs namespace WebApplication1.Controllers { public class Test
Azure Search の地理空間検索を使用すると、ある地点から特定の距離内にある検索対象を見つけることができます(現在位置から 5 km 以内にあるすべてのレストランを検索するなど)。この機能を使って、孤独のグルメに登場したお店を検索できる ASP.NET MVC アプリを作成してみます。 www.tv-tokyo.co.jp お店のデータをアップロードするアプリを作成する Azure Search に店舗データの Json ファイルアップロードするコンソールアプリを作成します。REST API が公開されていますが、RedDog.Search が便利なので、NuGet からインストールします。 Install-Package RedDog.Search インデックスを作成し、Json ファイルのデータをアップロードします。 #Sample.json [ { "season": 1,
8月上旬に、Azure Storage の 古い REST API が削除されることが告知されました。Client Library の Version 1.x は、2015年8月1日以降に使うことができなくなります。古い REST API と Storage Client のサポート終了日は、2015年8月1日 から 2015年12月9日 に延長されました。Storage Client のサポート終了日は、Ver.1.7 ~ 1.5.1 は 2015年12月9日 から 無期限 に延期され、それ以前のバージョンは 2015年12月9日 から 2016年8月1日 に延期されました。同時に古い Azure Diagnostics もサポート終了となりますので、移行方法はこちらを参照してください。 Storage Client Library は、Version 2.0 以降で互換性が保証されない
この記事は、ASP.NET Advent Calendar 2014 の2日目の記事です。 qiita.com 「ASP.NET Web API の パフォーマンスを改善するための8つの方法」というブログから、JSON のシリアライズを高速化する方法として、MediaTypeFormatter を Jil JSON Serializer に置き換える方法を紹介します。 blog.developers.ba blog.developers.ba Jil JSON Serializerとは Jil JSON Serializer は、高速に JSON をシリアライズできるライブラリです。ASP.NET Web API の JSON シリアライズは、デフォルトで JSON.NET が使われており、事実上 .NET の標準 JSON Serializer と言えるライブラリですが、GitHub
ASP.NET Web API でファイルをアップロードする際に、Content-Type の異なるデータを送信したかったので、multipart / form-data を使う方法を試してみました。画像ファイルのバイナリデータとファイル名を送信して、Azure Blob Storage にアップロードするシナリオで実装しました。 クライアント側 Windows ストア アプリ で、FileOpenPicker から選択した画像ファイルをアップロードします。 #MainPage.xaml.cs private async void Button_Click(object sender, RoutedEventArgs e) { var picker = new FileOpenPicker(); picker.ViewMode = PickerViewMode.Thumbnail; pic
このページを最初にブックマークしてみませんか?
『ROMANCE DAWN for the new world』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く