Suche senden
Hochladen
Go conference 2017 Lightning talk
•
0 gefällt mir
•
1,936 views
M
mokelab
Folgen
2017年3月25日に開催されたGo conference 2017のLTで発表した資料だよ! context.WithValue()、うまく使ってみようね
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 26
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
Rx java x retrofit
Rx java x retrofit
Shun Nakahara
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
Empfohlen
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
Rx java x retrofit
Rx java x retrofit
Shun Nakahara
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
An Internal of LINQ to Objects
An Internal of LINQ to Objects
Yoshifumi Kawai
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
LINQ in Unity
LINQ in Unity
Yoshifumi Kawai
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
Mono is Dead
Mono is Dead
melpon
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
Rxに入門しようとしている
Rxに入門しようとしている
onotchi_
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
Yoshifumi Kawai
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
Async design with Unity3D
Async design with Unity3D
Kouji Hosoda
Introduction to cython
Introduction to cython
Atsuo Ishimoto
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
Node handson
Node handson
Makoto Kishimoto
AFNetworking使ってみた
AFNetworking使ってみた
Taro Matsuzawa
async/await のしくみ
async/await のしくみ
信之 岩永
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門
Shohei Arai
こんにちはGroovy
こんにちはGroovy
irof N
Coding in the context era
Coding in the context era
lestrrat
My client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with Go
Toru Furukawa
Weitere ähnliche Inhalte
Was ist angesagt?
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
An Internal of LINQ to Objects
An Internal of LINQ to Objects
Yoshifumi Kawai
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
LINQ in Unity
LINQ in Unity
Yoshifumi Kawai
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
Mono is Dead
Mono is Dead
melpon
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
Rxに入門しようとしている
Rxに入門しようとしている
onotchi_
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
Yoshifumi Kawai
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
Async design with Unity3D
Async design with Unity3D
Kouji Hosoda
Introduction to cython
Introduction to cython
Atsuo Ishimoto
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
Node handson
Node handson
Makoto Kishimoto
AFNetworking使ってみた
AFNetworking使ってみた
Taro Matsuzawa
async/await のしくみ
async/await のしくみ
信之 岩永
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門
Shohei Arai
こんにちはGroovy
こんにちはGroovy
irof N
Was ist angesagt?
(20)
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
An Internal of LINQ to Objects
An Internal of LINQ to Objects
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
LINQ in Unity
LINQ in Unity
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Mono is Dead
Mono is Dead
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Rxに入門しようとしている
Rxに入門しようとしている
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Async design with Unity3D
Async design with Unity3D
Introduction to cython
Introduction to cython
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)
Node handson
Node handson
AFNetworking使ってみた
AFNetworking使ってみた
async/await のしくみ
async/await のしくみ
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門
こんにちはGroovy
こんにちはGroovy
Andere mochten auch
Coding in the context era
Coding in the context era
lestrrat
My client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with Go
Toru Furukawa
go 1.8 net/http timeouts
go 1.8 net/http timeouts
Yahoo!デベロッパーネットワーク
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Yahoo!デベロッパーネットワーク
Goをカンストさせる話
Goをカンストさせる話
Moriyoshi Koizumi
20171105 go con2017_lt
20171105 go con2017_lt
Keigo Suda
Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察
貴仁 大和屋
GOCON Autumn (Story of our own Monitoring Agent in golang)
GOCON Autumn (Story of our own Monitoring Agent in golang)
Huy Do
Andere mochten auch
(8)
Coding in the context era
Coding in the context era
My client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with Go
go 1.8 net/http timeouts
go 1.8 net/http timeouts
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goをカンストさせる話
Goをカンストさせる話
20171105 go con2017_lt
20171105 go con2017_lt
Gocon2017:Goのロギング周りの考察
Gocon2017:Goのロギング周りの考察
GOCON Autumn (Story of our own Monitoring Agent in golang)
GOCON Autumn (Story of our own Monitoring Agent in golang)
Ähnlich wie Go conference 2017 Lightning talk
F#によるFunctional Programming入門
F#によるFunctional Programming入門
bleis tift
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
decode2016
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
Preferred Networks
TypeScript と Visual Studio Code
TypeScript と Visual Studio Code
Akira Inoue
10年目の『エブリスタ』を支える技術
10年目の『エブリスタ』を支える技術
DeNA
Unity C#3からC#6に向けて
Unity C#3からC#6に向けて
onotchi_
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
Taisuke Fukuno
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
Shogo Sensui
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
Kazuki Nakajima
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
Akira Inoue
C#6.0の新機能紹介
C#6.0の新機能紹介
Kazunori Hamamoto
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
Titanium Mobile
Titanium Mobile
Naoya Ito
第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo
yayamamo @ DBCLS Kashiwanoha
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
spring_raining
How Smalltalker Works
How Smalltalker Works
Sho Yoshida
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
庸介 高橋
Tokyo r 25_lt_isobe
Tokyo r 25_lt_isobe
Masayuki Isobe
言語処理系入門10
言語処理系入門10
Kenta Hattori
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介
fukuoka.ex
Ähnlich wie Go conference 2017 Lightning talk
(20)
F#によるFunctional Programming入門
F#によるFunctional Programming入門
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
TypeScript と Visual Studio Code
TypeScript と Visual Studio Code
10年目の『エブリスタ』を支える技術
10年目の『エブリスタ』を支える技術
Unity C#3からC#6に向けて
Unity C#3からC#6に向けて
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
C#6.0の新機能紹介
C#6.0の新機能紹介
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
Titanium Mobile
Titanium Mobile
第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
How Smalltalker Works
How Smalltalker Works
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
Tokyo r 25_lt_isobe
Tokyo r 25_lt_isobe
言語処理系入門10
言語処理系入門10
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介
Kürzlich hochgeladen
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Kürzlich hochgeladen
(9)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
Go conference 2017 Lightning talk
1.
Go 1.7のContextを net/httpで使ってみた Go conference
2017 @fkm / @mokelab
2.
3.
● スマホアプリを書いたり ● レクチャーしたり ●
情報発信したり 何やってるの?
4.
● グッズもあるよ♪ 何やってるの?
5.
Context とは?
6.
リクエストの キャンセル用 インターフェース
7.
は、@lestrratさんが きっと説明済み。。。
8.
そのリクエストに 関するデータを 保存できる
9.
WithValue()
10.
c := r.Context() c
= context.WithValue( c, "name", // キー "moke", // 値 ) いれる
11.
c := r.Context() name
:= c.Value("name") // nameは // interface{} or nil とってくる
12.
// interface{}なので。。。 name, ok
:= c.Value("name").(string) if !ok { // エラーレスポンス } とってくる
13.
現実の 課題
14.
func myHandler(w, r)
{ contentType := ... auth := ... accept := ... // メインの処理 } とあるHandler
15.
func getUserHandler(w, r)
{ contentType := ... auth := ... accept := ... // メインの処理 } 別のHandler 前処理
16.
こんな風にしたい Request 前処理 メインの 処理 エラー インターフェースが 変わる(><)
17.
Contextの出番 Request 前処理 メインの 処理 インターフェースは そのまま Context
18.
ライブラリ書いてみた
19.
イメージ Request メインの 処理 Context 取得 書き込み
20.
リクエストに 関する情報だけ いれるべし
21.
// GET /users/{id}
用 handler := hop.Operations( hop.GetContentType, hop.GetPathString("id"), )(mainHandler) コードは?
22.
// getter関数で // 前処理の結果を取ってくる func
mainHandler(w, r) { contentType := hop.ContentType(r.Context()) ... } コードは?
23.
handler := hop.Operations( hop.GetContentType, hop.GetPathString("id"), )(mainHandler) 何がいいの? 関数!
24.
intとかstringとかいれると 怒られるよ $ golint main.go:10:6: should
not use basic type string as key in context.WithValue WithValueのキー
25.
別名をつければいいよ type cKey string const
keyID cKey = "id" c = context.WithValue(c, keyID, "id1234") WithValueのキー
26.
素敵な Contextライフを!
Jetzt herunterladen