c#

Microsoft.AspNetCore.Mvc.ApiExplorer を使って Web API ドキュメントを自作

c#

開発している Web API を ASP.NET Core 2.0 に移行しようと思っていたが、Web API のドキュメント生成に使っている Swashbuckle.AspNetCore がまだ 2.0 に対していなくて一時中断。 ASP.NET Core MVC にはもとから Microsoft.AspNetCore.Mvc.ApiExplorer と…

.NET Core で Shift-JIS を扱う

c#

例えば .NET Core でテキストファイルを出力するとき、文字コードに Shift-JIS を指定するには System.Text.Encoding.CodePages が必要だった。 www.nuget.org using System; using System.IO; using System.Text; namespace EncodingSample { class Program…

ASP.NET Core MVC で JWT を使った認証を実装する

c#

以前、ASP.NET Core MVC で Basic 認証を行う記事を書いた。 tnakamura.hatenablog.com プライベートな Web API なのでこれでいいかなと思っていたが、 大人の事情でそうはいかなくなり、 JWT(Json Web Token) を使った認証に変えることに。 Microsoft.AspNe…

ASP.NET Core MVC で Basic 認証

c#

先日 ASP.NET Core で Basic 認証を行うサンプルを書いた。 tnakamura.hatenablog.com ただ、これだと全てのパスで認証が必要になってしまう。 もともとやりたかったことは、 「ASP.NET Core MVC で Authorized 属性を付けたアクションだけを認証必須にする…

ASP.NET Core で Basic 認証

c#

ASP.NET Core で Basic 認証を行うサンプルを書いてみた。ユーザーは固定なので、本番で使うときは ASP.NET Core Identity みたいに、ユーザー情報をストアから取得するようにしたほうがいいだろうな。 using Microsoft.AspNetCore.Builder; using Microsoft…

指定した URL に付けられたすべてのブックマークを取得する

c#

はてなブックマークネタ第3弾。 最後は、指定した URL に付けられたすべてのブックマークを取得してみた。 using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.T…

指定した URL の人気ブックマーク一覧を取得する

c#

はてなブックマークネタ第2弾。 今度は、指定した URL に付けられたブックマークのうち、 人気のヤツを取得してみた。 using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; usi…

指定したユーザーのはてなブックマーク一覧を取得する

c#

いいかげん、そろそろプログラミングネタを書かねば。 ってことで、C# で「指定したユーザーのはてなブックマーク一覧を取得する」サンプルを書いてみた。 はてなブックマークに専用の API が見当たらないので、RSS フィードを取得してパースしている。 オフ…

ニューラルネットワークに対する勾配を実装してみた

c#

C# でゼロから Deep Learning を実装する挑戦の続き。 4 章もようやく終盤で、いよいよ機械学習に入る。 今回はニューラルネットワークに対する勾配を実装してみた。 using System; using System.Linq; using MathNet.Numerics.LinearAlgebra; namespace Gra…

勾配降下法を実装してみた

c#

C# でゼロから Deep Learning を実装する挑戦はまだ 4 章。 機械学習で使う勾配降下法を実装してみた。 勾配を計算するメソッドは前回記事を流用している。 using MathNet.Numerics.LinearAlgebra; using System; using System.Linq; namespace GradientDesc…

勾配を実装してみた

c#

C# でゼロから Deep Learning を実装する挑戦を少しずつ進めている。 まだ第 4 章だけど。 今回は勾配を実装してみた。 using MathNet.Numerics.LinearAlgebra; using System; using System.Linq; namespace NumericGradientSample { class Program { static…

数値微分を実装してみた

c#

C# でゼロから Deep Learning を実装する挑戦の続き。 今回は第 4 章の数値微分を実装してみた。 using System; namespace NumericalDifferentiationSample { class Program { static void Main(string[] args) { // 微分 Func<double, double> function1 = x => 0.01 * Math</double,>…

損失関数を実装してみた

c#

C# でゼロから Deep Learning を実装する挑戦の続き。 今回は第 4 章で紹介されている損失関数(2乗和誤差と交差エントロピー誤差)を実装してみた。 using MathNet.Numerics.LinearAlgebra; using System; using System.Linq; namespace LossFunctionSample {…

超単純な 3 層ニューラルネットワークを実装

c#

C# でゼロから Deep Learnig を実装する挑戦の続き。 今回は超単純な 3 層ニューラルネットワークを実装してみた。 といっても、『ゼロから作る Deep Learnig』の 3 章の写経みたいなもの。 C# + Math.NET Numerics で試行錯誤しながら書いたコードは次の通…

MNIST データセットを読み込んでベクトルに変換

c#

C# でゼロから Deep Learning を実装する挑戦の続き。 この挑戦では、『ゼロから作る Deep Learning』同様に、 手書き数字認識のニューラルネットワークを実装するので、 MNIST データセットを利用する。 MNIST handwritten digit database, Yann LeCun, Cor…

活性化関数とソフトマックス関数を実装

c#

『ゼロから作る Deep Learning』を読んで C# で実装したみたくなった続き。 今度はニューラルネットワークで使う関数に挑戦してみた。 実装するのは活性化関数であるシグモイド関数、ReLU 関数。 そして出力層で使うソフトマックス関数。 あとおまけでステッ…

パーセプトロンで論理回路を実装

c#

『ゼロから作る Deep Learning』を読んで、C# で実装してみたくなった。 問題は NumPy の変わりに何を使うかだけど、C# には Math.NET Numerics というのがある。 numerics.mathdotnet.com ベクトルや行列の計算はできそう。テンソルはやってみないと分から…

ASP.NET Core で Swashbuckle

c#

はじめに Swashbuckle はまだプレリリースの段階ではあるけど、 ASP.NET Core にも対応しているみたい。 github.com Swashbuckle を使えば、Web API の実装から Swagger Definitions を生成できる。 温かみのある手作業で、 Web API の Swagger Definitions …

証明書ファイルを読み込んで WCF の SSL over TCP で使う

c#

WCF は NetTcpBinding を使う場合でも SSL で通信を暗号化できる。 暗号化に使う SSL 証明書は、Windows の証明書ストアにインストールしてある中から検索して使うのが一般的なやり方っぽいが、 インストールしていない証明書のファイルを読み込んで使うこと…

WCF サービスを Topshelf で Windows サービス化

c#

はじめに WCF サービスをセルフホストする場合、 Windows サービスを作ることになると思う。 本番環境で動かすときは Windows サービスでいいんだけど、 デバッグはコンソールアプリケーションの方が便利。 そのため、Windows サービスとコンソールアプリケ…

ASP.NET Core アプリケーションの Docker コンテナを Heroku で動かしてみた

はじめに ASP.NET Core アプリケーションを Docker で動かすことができた。 tnakamura.hatenablog.com そういえば、Heroku で任意の Docker コンテナを動かすことができるようになっていたな。 まだベータ版な上、制限もあるみたいだけど。 もしかしたら ASP…

ASP.NET Core アプリケーションを Docker で動かす

yo aspnet で作成したプロジェクトには Dockerfile が含まれているので、 ASP.NET Core アプリケーションを Docker で動かすこともできる。 ただ、2016/07/25 時点では Dockerfile に手直しが必要。 そのままだと docker build でコケる。 といっても apt-ge…

OpenCover を使ってコードカバレッジを計測したメモ

c#

アプリのコードがだいぶ増えてきて、それに伴いテストコードも増えてきた。 いい加減そろそろテストを書いていないメソッドの把握が難しくなってきたところだ。 コードカバレッジを計測する頃合かもしれない。 プライベートプロジェクトなので、開発は Visua…

Entity Framework でエンティティを削除したら取得済みエンティティの外部キーが null になっていてハマッた

c#

Id の型に int ではなく string を使った public class Item { public string Id { get; set; } public string ProjectId { get; set; } public string Title { get; set; } public string Content { get; set; } } のようなエンティティで public class Ite…

Swagger definition からクライアントとサーバーのソースコードを生成してみた

c#

前回は簡単な Web API の Swagger definition を書いただけで終わってしまったけど、 ここからが本題。 やりたいのは、Swagger definition からクライアントとサーバーのソースコード生成すること。 そのためのツールとして swagger-codegen が提供されてい…

Selenium を使った画面テストでテスト対象の ASP.NET MVC アプリを自動起動する

c#

ASP.NET MVC で開発しているアプリの画面テストを、Selenium を使って書き始めた。 tnakamura.hatenablog.com テストを実行するときは、先に ASP.NET MVC アプリを Visual Studio から実行しないといけない。 毎回これやるの面倒なんで、IIS Express を使っ…

ASP.NET MVC アプリの画面テストで Selenium を試してみた

c#

Selenium 実践入門を読んで Selenium 熱に火がついたので、 ASP.NET MVC で実装しているアプリの画面テストを Selenium 使って書くことにした。 もちろん C# で。 画面テスト専用のテストプロジェクトを作成し、 Selenium を使うためのパッケージをインスト…

ASP.NET Identity でユーザーを作成するときは必ず UserManager を使うこと

c#

マイグレーションで Seed データを投入するとき、 ユーザーを作成するところで UserManager を使わずに、 IdentityDbContext を使って直接データベースに保存してしまっていた。 そのせいで、ログインするときに ClaimsIdentityFactory が内部でクレームを作…

C# でも匿名型でインタフェースを実装できたらいいのにとたまに思う

c#

たとえば public interface IDomainEventHandler { bool CanHandle(IDomainEvent e); void Handle(IDomainEvent e); } というインタフェースがあるとき EventBus.Register(new IDomainEventHandler { public bool CanHandle(IDomainEvent e) { return e is P…

Entity Framework でオブジェクトが変更監視中かどうか調べる方法メモ

c#

DbSet<TEntity>.Local プロパティを調べればわかった。 public class Customer { // Entity Framework 用コンストラクタ protected Customer() { } public Customer(string name) { Name = name; } public int Id { get; private set; } public string Name { get; pr</tentity>…

ASP.NET Identity でカスタムクレームを使う

c#

マルチテナントな Web サービスを作っていて、 どのテナントかの判断を現在ログインしているユーザーが持っているテナント ID で判断している。 そのため、HttpContext.User.Identity.GetUserId() で取得したユーザー ID を使って、 データベースからユーザ…

Heroku で最小の ASP.NET 5 アプリを動かす

Heroku が .NET サポートを予定しているのか知らないけど、 Github には heroku/dotnet-buildpack という ASP.NET 5 用のビルドパックがある。 github.com これを使えば ASP.NET 5 アプリを Heroku で動かせると思いきや、 Mac OSX で作成したプロジェクトを…

C# で Phantom Type もどき

c#

Phantom Type (幽霊型)っていうのを知った。 インスタンスの状態をメンバフィールドではなく型パラメータで持つことで、 状態チェックをコンパイル時に行えるテクニック。 なにそれ凄い。 型パラメータに指定するだけで、 インスタンス化したりメソッド呼ん…

ASP.NET MVC で Excel ファイルを出力

c#

Open XML SDK を使えば C# で Excel ファイル (.xlsx) を出力できた。 tnakamura.hatenablog.com 先日のサンプルではファイルに出力したけど、 SpreadsheetDocument はストリームへの出力にも対応している。 今度は Excel ファイルをダウンロードできる ASP.…

Open XML SDK を使って Excel ファイルを出力

c#

C# で Excel ファイルを出力する場合、.xls ファイルだと Microsoft.Office.Interop を使う ExcelCreator を購入して使う という選択肢があった。 Microsoft.Office.Interop は Excel のインストールが必要だし、 ExcelCreator は有料だしと、 趣味のアプリ…

最小の ASP.NET 5 アプリを Docker で動かす

はじめに yo のジェネレーターを使って ASP.NET 5 プロジェクトを作成したら、 次のような Dockerfile も含まれていた。 FROM microsoft/aspnet:1.0.0-beta7 COPY project.json /app/ WORKDIR /app RUN ["dnu", "restore"] COPY . /app EXPOSE 5000 ENTRYPOI…

Mac OS X に ASP.NET 5 開発環境を構築

はじめに そろそろ自宅の MacBook Pro にも ASP.NET 5 の開発環境を作るとしよう。 .NET Version Manager (DNVM) をインストール Homebrew を使ってインストールする。 brew tap aspnet/dnx brew update brew install dnvm Zsh の設定に追加して、dnvm コマ…

ViewBag vs ViewModel

c#

ASP.NET MVC 5 プロジェクトを新規作成したら、HomeController が ViewBag を使ってビューにデータを渡している。 一方、『Entity Framework を使用した、ビューがある MVC5 コントローラー』を追加すると、 Entity Framework を使って取得したデータを View…

『C#エンジニア養成読本』読んだ

Sansan の記事が読みたくて購入。 Git でバージョン管理 カスタマイズした Git Flow で開発を進める NUnit で自動テスト Jenkins + MSBuild で CI Pivotal Tracker でイシュー管理 Slack でコミュニケーション という感じの内容で、 スタートアップでよく見…

WSDL から XML Web サービスのソースコードを生成

c#

WSDL から XML Web サービスを生成する機能を Visual Studio で探したけど、 見つけられなかったのでコード書いてみた。 System.Web.Services.Description 名前空間にある ServiceDescription と ServiceDescriptionImporter、 あと CodeDom を使って生成で…

『C# 実践開発手法』読んだ

本書が主張する『アダプティブコード』とは、 コードを大幅に変更することなく、新しい要求やシナリオに対処する適応力のあるコード。 そのアダプティブコードを実現するためのキーがインターフェイス。 インターフェイスのみに依存することで、実装の変更に…

LINQ で左外部結合

c#

いつも忘れて、その度ネットで調べているので、ブログにメモしておく。 DefaultIfEmpty を使うのがポイント。 using System; using System.Linq; namespace LinqLeftOuterJoinSample { public class Sector { public int Id { get; set; } public string Nam…

『.NET のエンタープライズアプリケーションアーキテクチャ第2版』読んだ

本書の内容は、.NET に限らず Java や他の言語でも適用できそうだ。 ただ、内容を理解するにはドメイン駆動開発や GoF のデザインパターン、 Martin Fowler のエンタープライズアプリケーションアーキテクチャパターン等の知識が必要。 ドメイン駆動開発はま…

ASP.NET MVC で二重サブミットを防止したい

c#

フォームなんかでボタンをうっかりダブルクリックしちゃって二重に投稿されてしまうのを防ぎたい。 クリックしたらボタンを無効にできればなお良し。 単純に JavaScript でボタンクリックされたら無効にするイベントハンドラ書けばいいと思ってたら、クライ…

Visual Studio 2015 の ASP.NET 5 プロジェクトを Windows7 でビルドするには PowerShell 3.0 以上が必要だった

c#

Visual Studio 2015 で ASP.NET 5 プロジェクトをビルドしようとしたら DNX SDK バージョン 'dnx-clr-win-x86.1.0.0-beta5' のインストールに失敗しました。 ソリューションでは、このセッション用に DNX SDK バージョン 'dnx-clr-win-x86-1.0.0-beta5' を使…

Rails の flash みたいに ASP.NET MVC の TempData を使ってみた

c#

Rails の flash と同じことが ASP.NET MVC でもやりたくて、 ミドルウェア自作するしかないかなぁって思っていたんだけど、 TempData で同じことができそうだった。 ただ、TempData を素で使うとキーを typo しそうなので、次のように拡張メソッド使っている…

ASP.NET MVC で WebForms の Chart を使って作成したチャートを PDF に埋め込む

c#

ASP.NET MVC で System.Web.UI.DataVisualization.Charting.Chart を使って、 レーダーチャートをカスタマイズできるところまでは確認できた。 ASP.NET MVC で WebForms の Chart をカスタマイズする - presenttnakamura.hatenablog.com 今度は iTextSharp …

ASP.NET MVC で WebForms の Chart をカスタマイズする

c#

System.Web.UI.DataVisualization.Charting.Chart を使って ASP.NET MVC で レーダーチャートを表示できた。 ASP.NET MVC で WebForms の Chart を使う - presenttnakamura.hatenablog.com 今度はレーダーチャートをカスタマイズしてみる。 カスタマイズ内容…

ASP.NET MVC で WebForms の Chart を使う

c#

System.Web.Helpers.Chart クラスを使うと、 ASP.NET MVC で手っ取り早くチャートを作成できた。 ASP.NET MVC でチャートを表示 - presenttnakamura.hatenablog.com System.Web.Helpers.Chart はなかなか高機能だけど、 カスタマイズしづらい。 XML 形式の文…

LINQ でランキングを作成

c#

LINQ でランキングを作成するサンプルを書いてみた。 using System; using System.Linq; namespace LinqRankingSample { class Student { public string Name { get; set; } public int Score { get; set; } } class Program { static void Main(string[] ar…