SlideShare uma empresa Scribd logo
1 de 65
Baixar para ler offline
仕事
個人活動
http://tanaka733.net
http://www.buildinsider.net/small/csharplang/0600
2
チーム:銀の光
https://mycode.azurewebsites.net/
4
プライベートなコード共有
コード片をとりあえずWeb上に保存したい
人には見られたくない。
URLが知られてもアクセスできないようにしたい。
許可した人は、アクセスできてもいいよ。
5
ふだん、XAML などでアプリ書いている人へ
ASP.NET MVC を知ってもらおう
ASP.NET MVC でこういう機能を実装するなら、
こうしてみた、という実例を紹介しよう
(会社のアプリはASP.NET MVC だけど全体像を触ってないので、
一度自分でWebアプリを作ってみましたというお話です)
6
Azure WebSites でさくっと環境構築
ASP.NET MVC でWeb開発
highlight.js でコードハイライト
ASP.NET Identity で認証・認可
Dapper で軽量DBアクセス
ASP.NET MVC で多言語化
7
9
10
11
12
そのほかできること
WebSitesまわり
SSL、(自動)スケール、カスタムドメイン、バックアップ
WebJobsによるスケジュールタスクの実行
Azure Storage
運用環境でのエラーログの出力先に
Azure Redis Cache
マネージドなRedis
13
ASP.NET MVC でWeb開発
ASP.NET MVC とは
ASP.NET 上で動くWebアプリケーションFW
ASP.NET はIISで動かすのがほとんど
WebFormsと使って比較的モダンな開発スタイル
「設定より規約」(Ruby on Rails like)
フルスタック「ではない」
オープンソース
.NET Core よりずっと前から
15
這い寄る ASP.NET MVC
神獄のヴァルハラゲート
モンスターハンターロアオブカード
弊社ゲームですね
SanSan
法人向けサービスのWeb側(求人情報より)
ConoHa (VPSサービス)のコントロールパネル
VB.NET らしい(求人情報より)
DELLのDriver Downloadサイト
http://www.dell.com/support/home/jp/ja/jpbsd1/Products/?app=drivers
16
17
認証・認可などを
フィルターとして
追加可能
VとC以外がModel。
ASP.NET MVC の
フレームワークに
依存しない処理
18
[Authorize]
public class CodesController : Controller
{
// GET: Codes
public ActionResult Index()
{
var model = new CodeModel();
var authorId = User.Identity.GetUserId();
var codes = model.GetRecentCode(authorId, 5).Select(c => new CodeViewModel(c)).ToArray();
return View(codes);
}
[MyCodeAuthorize]
// GET: Codes/Detail/5
public ActionResult Detail(int id)
{}
// GET: Codes/Create
public ActionResult Create()
{
return View(new CodeCreateViewModel());
}
// POST: Codes/Create
[HttpPost, ValidateInput(false)]
public ActionResult Create([Bind(Include = "Title,LanguageId,RawCode,AllowUsers,IsPublic")]CodeCreateViewModel vm)
{}
}
19
@model GistService.ViewModels.Codes.CodeViewModel[]
<h2>@Html.Resource("Resources, YourCode")</h2>
@Html.ActionLink(Html.Resource("Resources, CreateNew"), "Create", null, new { @class = "btn bt
@foreach (var code in @Model)
{
<h2>@code.Title</h2>
<pre><code class="@code.Language.Brush">@code.RawCode</code></pre><br/>
if (@code.AuthorId == @User.Identity.GetUserId())
{
@Html.ActionLink(Html.Resource("Resources, Detail"), "Detail", new {code.Id}, new {@cl
@Html.ActionLink(Html.Resource("Resources, Edit"), "Edit", new {code.Id}, new {@class
@Html.ActionLink(Html.Resource("Resources, Delete"), "Delete", new {code.Id}, new {@cl
}
<br/><br/>
} 20
@model GistService.ViewModels.Codes.CodeViewModel[]
<h2>@Html.Resource("Resources, YourCode")</h2>
@Html.ActionLink(Html.Resource("Resources, CreateNew"), "Create", null, new { @class = "btn bt
@foreach (var code in @Model)
{
<h2>@code.Title</h2>
<pre><code class="@code.Language.Brush">@code.RawCode</code></pre><br/>
if (@code.AuthorId == @User.Identity.GetUserId())
{
@Html.ActionLink(Html.Resource("Resources, Detail"), "Detail", new {code.Id}, new {@cl
@Html.ActionLink(Html.Resource("Resources, Edit"), "Edit", new {code.Id}, new {@class
@Html.ActionLink(Html.Resource("Resources, Delete"), "Delete", new {code.Id}, new {@cl
}
<br/><br/>
} 21
highlight.js でコードハイライト
23
24
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MyCode</title>
@Styles.Render("~/Content/css")
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.3/styles/vs.min.css">
</head>
<body>
<pre><code class="@Model.Language.Brush">@Model.RawCode</code></pre>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.3/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</body>
</html>
25
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MyCode</title>
@Styles.Render("~/Content/css")
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.3/styles/vs.min.css">
</head>
<body>
<pre><code class="@Model.Language.Brush">@Model.RawCode</code></pre>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.3/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</body>
</html>
26
実際にはDBのテーブルに格納して、
アプリ起動時にメモリに読み込み。
選択肢多いので、
自動補完形式にしたいけど…
27
http://highlightjs.readthedocs.org/en/latest/c
ss-classes-reference.html
28
favicon の準備
http://itexp.hateblo.jp/entry/website-needs-21-favicons
30
http://realfavicongenerator.net/ 31
<head>
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-ico
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-ico
<link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-
<link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-ico
<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-
<link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-ico
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-ico
<link rel="icon" type="image/png" href="/favicon-192x192.png" sizes
<link rel="icon" type="image/png" href="/favicon-160x160.png" sizes
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="
<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="
<meta name="msapplication-TileColor" content="#2b5797">
<meta name="msapplication-TileImage" content="/mstile-144x144.png">
</head>
32
ASP.NET Identity で認証・認可
認証 (Authentication)
操作しているユーザーの正当性を確認する
@tanaka_733 であることを確認する
認可 (Authorization)
リソースへのアクセス権を確認する
@tanaka_733 が管理者であると確認する
34
独自アカウント登録はしたくない
ユーザーも面倒 (わざわざパスワード覚えたくないetc)
開発者も (パスワードのハッシュ化とか再発行とか…)
3rd Party の認証を使おう
今回はMicrosoftアカウントのみを利用
(本当はTwitter, Googleなど選択できればよかったけど、
実装工数との兼ね合いにより断念)
35
ASP.NET Identity
それまでの ASP.NET メンバーシップよりも柔軟
Nugetから利用可能
3rd partyログインなどカスタマイズ容易
Visual Studioのプロジェクト作成時に組み込める
http://codezine.jp/article/corner/511
36
Microsoft アカウント デベロッパーセンターでアプリ登録
https://account.live.com/developers/applications/index
37
38
39
プロジェクト作成時にオプションつける
40
// 次の行のコメントを解除して、
// サード パーティのログイン プロバイダーを使用したログインを有効にします
app.UseMicrosoftAccountAuthentication(
new MicrosoftAccountAuthenticationOptions
{
ClientId = "0000000000000000",
ClientSecret = “AAAAAAAAAAAAAAAAAAA-bbbbbb"
});
//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");
41
適切なアクセス制御(差別化要素ですし)
自分のコードは表示・編集・削除できる
権限が与えられているコードは表示できる(編集不可)
ログインページやヘルプは認証なしで表示できる
42
Roleを使った認可が標準機能
UserとRoleをDBで管理
アクセス権限が比較的静的に決まるタイプ
(管理者用のページ、一般ユーザー向けのページ、など)
カスタマイズしよう
AuthorizationFilter の実装
43
Authentication Filters in ASP.NET Web API 2
http://www.asp.net/web-api/overview/security/authentication-filters 44
public class MyCodeAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var idStr = httpContext.Request.RequestContext.RouteData.Values["id"] as string;
int id;
if (!int.TryParse(idStr, out id))
{
return false;
}
var user = httpContext.User;
return user.CanAccessCode(id);
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.Forbidden,
"コードが存在しないか、見る権限がありません");
}
}
45
public class MyCodeAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var idStr = httpContext.Request.RequestContext.RouteData.Values["id"] as string;
int id;
if (!int.TryParse(idStr, out id))
{
return false;
}
var user = httpContext.User;
return user.CanAccessCode(id);
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.Forbidden,
"コードが存在しないか、見る権限がありません");
}
}
46
[Authorize]
public class CodesController : Controller
{
// GET: Codes
public ActionResult Index()
{}
[MyCodeAuthorize]
// GET: Codes/Detail/5
public ActionResult Detail(int id)
{}
// GET: Codes/Create
public ActionResult Create()
{}
}
47
<system.webServer>
<rewrite>
<rules>
<rule name="Force HTTPS" enabled="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
48
Dapper で軽量DBアクセス
Entity Framework
重厚長大なDBアクセスFW #個人的感想
Recommendedなので、資料や書籍での紹介も多い
Code Firstという機能でコードからDBを管理可能
RoR的なMigration機能も持っている
50
SQL書かせろ!
SQLを抽象化したクラス書くよりSQLの方が楽
実行結果のマッピングはほしい
ResultSet.getInt した結果を代入する、
という処理くらいは自動でやってほしい
DB管理とアプリのデプロイは独立させたい
アプリのデプロイでDB定義更新するのは好きでない
51
public string[] GetAllowedUserIds(int codeId)
{
using (var conn = GetConnection())
{
return conn.Query<string>(@"
SELECT UserId
FROM AllowedUsers
WHERE CodeId = @codeId", new { codeId }).ToArray();
}
}
52
public Code GetById(int id)
{
using (var conn = GetConnection())
{
return conn.Query<Code, AspNetUsers, Code>(@"
SELECT c.*, u.*
FROM Code c
INNER JOIN [AspNetUsers] u ON c.UserId = u.Id
WHERE c.Id = @id", (c, u) =>
{
c.User = u;
return c;
}, new { id }).First();
}
}
53
public int Create(string authorId, string title,
int langId, string rawCode, bool isPublic)
{
using (var conn = GetConnection())
{
return conn.Query<int>(@"
INSERT INTO [Code] (UserId, Title, LangId, RawCode, IsPublic)
OUTPUT INSERTED.Id
VALUES(@authorId, @title, @langId, @rawCode, @isPublic)",
new { authorId, title, langId, rawCode, isPublic }).Single();
}
}
54
ASP.NET MVC で多言語化
ASP.NET MVC 3 の Razor でも多言語対応を試してみる
- しばやん雑記
http://blog.shibayan.jp/entry/20110121/1295543963
ASP.NET MVC 4でViewModelのDisplayName(ラベ
ル)を多言語化する - 虎塚
http://d.hatena.ne.jp/torazuka/20131206/displayname
56
何も選択しない: ブラウザのロケールで選択
<system.web>
<globalization culture="auto"
uiCulture="auto" enableClientBasedCulture="true" />
</system.web>
57
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
<li><a href="@(Request.Url.GetLeftPart(UriPartial.Path)+"?lang=en")">English</a></li>
<li><a href="@(Request.Url.GetLeftPart(UriPartial.Path)+"?lang=ja")">日本語</a></li>
</ul>
58
public class UILanguageFilter : FilterAttribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
var lang = filterContext.RequestContext.HttpContext.Request.QueryString.GetValues("lang");
if (lang != null)
{
var l = lang.FirstOrDefault();
if (l != null)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(l);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(l);
var cookie = new HttpCookie("favoritelang", l) { Expires = DateTime.MaxValue };
filterContext.HttpContext.Response.Cookies.Add(cookie);
return;
}
}
}
//続く
59
//続き
var setLang = filterContext.HttpContext.Request.Cookies.Get("favoritelang");
if (setLang != null)
{
var l = setLang.Value;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(l);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(l);
}
}
60
そして、Universal App?
めとべやなので…
認証をUniversalAppの仕組みに載せたい
コード編集機能強化したい
コードハイライトは当然
 当然欲しいけど、実は最大のネック…
highlight.js の定義からタグを自動生成? or
WinJSならhighlight.js使える?
コード共有されたらPush通知とか
62
認証方式を増やしたい
GoogleとかTwitterとか
その場合のクロスアカウントでの権限指定をどうするか
コード編集機能強化したい
権限与えるところ、うまく補完したい
アカウントの存在確認に使えるので、バランスが難しい
63
まとめ
Azure WebSitesですぐに開発・デプロイ開始
ASP.NET MVC は割と柔軟なフレームワークです
Filter差しこんで認可したり、Cultureいじったり
ASP.NET Identity で認証カスタマイズしたり
Razor は C#er なら使いやすいんじゃないかな!?
EF が Recommendedではあるけど、
SQL書きたい人向けにはDapperも使えますよ
65

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Vue.js で XSS
Vue.js で XSSVue.js で XSS
Vue.js で XSS
 
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
 
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
 
プロトコルから見るID連携
プロトコルから見るID連携プロトコルから見るID連携
プロトコルから見るID連携
 
Webセキュリティ入門(xss)
Webセキュリティ入門(xss)Webセキュリティ入門(xss)
Webセキュリティ入門(xss)
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
 
Azure SecOps! Azure Key Vaultを用いたクラウドのキー管理
Azure SecOps! Azure Key Vaultを用いたクラウドのキー管理Azure SecOps! Azure Key Vaultを用いたクラウドのキー管理
Azure SecOps! Azure Key Vaultを用いたクラウドのキー管理
 
Infrastructure as code for azure
Infrastructure as code for azureInfrastructure as code for azure
Infrastructure as code for azure
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
Office365のIdentity管理
Office365のIdentity管理Office365のIdentity管理
Office365のIdentity管理
 
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
 
Azure ADとWindows 10によるドメイン環境の拡張
Azure ADとWindows 10によるドメイン環境の拡張Azure ADとWindows 10によるドメイン環境の拡張
Azure ADとWindows 10によるドメイン環境の拡張
 
アイデンティティ管理の基礎~Fim adfsアーキテクチャ
アイデンティティ管理の基礎~Fim adfsアーキテクチャアイデンティティ管理の基礎~Fim adfsアーキテクチャ
アイデンティティ管理の基礎~Fim adfsアーキテクチャ
 
GoAzure 2015 Azure AD for Developers
GoAzure 2015 Azure AD for DevelopersGoAzure 2015 Azure AD for Developers
GoAzure 2015 Azure AD for Developers
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティ
 
WordPressとjQuery
WordPressとjQueryWordPressとjQuery
WordPressとjQuery
 
Scim and or graph
Scim and or graphScim and or graph
Scim and or graph
 
AWSを利用したアプリ開発
AWSを利用したアプリ開発AWSを利用したアプリ開発
AWSを利用したアプリ開発
 
サーバレスを可能にするAWSサービスの概要
サーバレスを可能にするAWSサービスの概要サーバレスを可能にするAWSサービスの概要
サーバレスを可能にするAWSサービスの概要
 
Webアプリのセキュリティ対策入門(仮)
Webアプリのセキュリティ対策入門(仮)Webアプリのセキュリティ対策入門(仮)
Webアプリのセキュリティ対策入門(仮)
 

Semelhante a 20150221 めとべや東京-プライベートコード共有サービス

わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
Genta Watanabe
 

Semelhante a 20150221 めとべや東京-プライベートコード共有サービス (20)

Azure DevOpsとセキュリティ
Azure DevOpsとセキュリティAzure DevOpsとセキュリティ
Azure DevOpsとセキュリティ
 
[日本語・Japanese] Creative Technical Content for Better Developer Experience
[日本語・Japanese] Creative Technical Content for Better Developer Experience[日本語・Japanese] Creative Technical Content for Better Developer Experience
[日本語・Japanese] Creative Technical Content for Better Developer Experience
 
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱いiOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
 
多要素認証による Amazon WorkSpaces の利用
多要素認証による Amazon WorkSpaces の利用多要素認証による Amazon WorkSpaces の利用
多要素認証による Amazon WorkSpaces の利用
 
今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷今からでも間に合う!インフラ自動化超入門 @渋谷
今からでも間に合う!インフラ自動化超入門 @渋谷
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
Azure id and rbac v0.7.19.0815
Azure id and rbac v0.7.19.0815Azure id and rbac v0.7.19.0815
Azure id and rbac v0.7.19.0815
 
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
Mvc conf session_2_shibamura
Mvc conf session_2_shibamuraMvc conf session_2_shibamura
Mvc conf session_2_shibamura
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組み
 
Azure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれAzure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれ
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
 
20121112 jaws-ug sapporo8
20121112 jaws-ug sapporo820121112 jaws-ug sapporo8
20121112 jaws-ug sapporo8
 
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
 
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!
 

Mais de Takayoshi Tanaka

.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
Takayoshi Tanaka
 

Mais de Takayoshi Tanaka (20)

deep dive distributed tracing
deep dive distributed tracingdeep dive distributed tracing
deep dive distributed tracing
 
202202 open telemetry .net handson
202202 open telemetry .net handson202202 open telemetry .net handson
202202 open telemetry .net handson
 
202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers202109-New_Relic-for-csharp-engineers
202109-New_Relic-for-csharp-engineers
 
20210129 azure webapplogging
20210129 azure webapplogging20210129 azure webapplogging
20210129 azure webapplogging
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
Unity(再)入門
Unity(再)入門Unity(再)入門
Unity(再)入門
 
最近のQ#について
最近のQ#について最近のQ#について
最近のQ#について
 
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法
SRENEXT 2020 [B5] New RelicのSREに学ぶ SREのためのNew Relic活用法
 
20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET20191024 Get Start gRPC with ASP.NET
20191024 Get Start gRPC with ASP.NET
 
New Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservabilityNew Relicで始める、.NET Applications on AWSのObservability
New Relicで始める、.NET Applications on AWSのObservability
 
C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)
 
20190806 Q# Measurements
20190806 Q# Measurements20190806 Q# Measurements
20190806 Q# Measurements
 
C#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオンC#エンジニアのためのdocker kubernetesハンズオン
C#エンジニアのためのdocker kubernetesハンズオン
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能
 
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
 
Try! Visual Studio 209 git feature
Try! Visual Studio 209 git featureTry! Visual Studio 209 git feature
Try! Visual Studio 209 git feature
 
Q#基礎 ver1.1
Q#基礎 ver1.1Q#基礎 ver1.1
Q#基礎 ver1.1
 
(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0(過去バージョン) Q#基礎 ver1.0
(過去バージョン) Q#基礎 ver1.0
 
ゼロから始めるQ#
ゼロから始めるQ#ゼロから始めるQ#
ゼロから始めるQ#
 

20150221 めとべや東京-プライベートコード共有サービス