狠狠撸

狠狠撸Share a Scribd company logo
明日から使える気になる?
Go言語による並行処理
@Peranikov
明日から使える気になるために
? とりあえずこの辺を覚えておけばGoの並行処
理のコードが読めるようになるまでを目指す
? 並行処理のパターンやより実践的な内容につ
いては書籍「Go言語による並行処理」を読も
う
おしながき
? goroutine
? sync package
? channel
? context package
goroutine
goroutine(ゴルーチン)
? Goプログラムにおける最も基本的な構成単位
? main()もGCもこのgoroutineで動いている
? 并行処理を书く基本
goroutine(ゴルーチン)
func main() {
// go キーワードを関数前に置くだけで
// 並行実行される
go func() {
fmt.Println(“?????”)
}()
}
goroutineは重くないのか?
? 1つにつきわずか数キロバイトのメモリで動
く
? コンテキストスイッチが速い
? 書籍の計測ではOSスレッドの90%以上速い
? 以上から生成コストについては基本無視して
よい
sync package
さきほどのコード
func main() {
// go キーワードを関数前に置くだけで
// 並行実行される
go func() {
fmt.Println(“?????”)
}()
}
このコードはgoroutineの完了を待っていないので
出力される前に終了してしまう可能性がある!
syncパッケージ
? メモリアクセス同期に便利なプリミティブを含む
? WaitGroup
? Mutex/RWMutex
? Cond
? Once
? Pool
WaitGroup
? カウンタを内包しており、waitすると0にな
るまでブロックするという単純な機構
? こいつが関数の引数で渡される場合、だいた
い中でカウンタを減らす(Done)処理がある
WaitGroup
func main() {
var wg sync.WaitGroup
wg.Add(1) // カウンタを1追加
go func() {?
defer wg.Done() // カウンタを1減らす
fmt.Println(“?????”)
}()?
?
wg.Wait() // 0になるまでブロック
}
Mutex/RWMutex
? よくあるMutex
? Lock()とUnlock()でメモリアクセス動機を取
る
? RWMutexは書き込みロック(Lock)と読み込
みロック(RLock)を提供する
Mutex/RWMutex
var m sync.RWMutex
????c := 0
????increment := func() {
????????m.Lock() // 書き込みロック
????????defer m.Unlock()
????????c++
????}
????decrement := func() {
????????m.Lock() // 書き込みロック
????????defer m.Unlock()
????????c--
????}
????read := func() int {
????????m.RLock() // 読み込みロック
????????defer m.RUnlock()
????????return c
????}
Mutexの代わりにAtomicも
var count int64
increment := func() {
atomic.AddInt64(&count, 1)
}
Cond
? Wait()でブロッキングし、Signal()を実行し
goroutineにシグナルを伝えることでブロッキング
を解除する(FIFO)
? またBroadcast()を用いることですべての
goroutineのブロッキングを解除することができる
? 特にBroadcast()はchannelで実装するのは難しく
(closeでできないことはない)、またchannelより
パフォーマンスが良い
Cond
c := sync.NewCond(new(sync.Mutex))
????for i := 0; i < 10; i++ {
????????go func(i int) {
????????????c.L.Lock()
????????????defer c.L.Unlock()
????????????c.Wait() // goroutineを待機させておく
????????}(i)
????}
????for i := 0; i < 10; i++ {
????????time.Sleep(1 * time.Second)
????????c.Signal() // 1つずつWaitを解除(FIFO)
????}
????c.Broadcast() // まとめて解除
Cond
c := sync.NewCond(new(sync.Mutex))
????for i := 0; i < 10; i++ {
????????go func(i int) {
????????????c.L.Lock()
????????????defer c.L.Unlock()
????????????c.Wait() // goroutineを待機させておく
????????}(i)
????}
????for i := 0; i < 10; i++ {
????????time.Sleep(1 * time.Second)
????????c.Signal() // 1つずつWaitを解除(FIFO)
????}
????c.Broadcast() // まとめて解除
Waitのループに入る時にUnlockが呼ばれるため
事前にLockしておく必要がある
Cond
c := sync.NewCond(new(sync.Mutex))
????for i := 0; i < 10; i++ {
????????go func(i int) {
????????????c.L.Lock()
????????????defer c.L.Unlock()
????????????c.Wait() // goroutineを待機させておく
????????}(i)
????}
????for i := 0; i < 10; i++ {
????????time.Sleep(1 * time.Second)
????????c.Signal() // 1つずつWaitを解除(FIFO)
????}
????c.Broadcast() // まとめて解除
Waitを抜ける時にLockが掛かるため
deferでUnlockする
Once
? 複数のgoroutineをまたぐ場合などで一度だ
け実行したい処理がある時に使う
Once
????once := new(sync.Once)
????wg := new(sync.WaitGroup)
????for i := 0; i < 10; i++ {
????????wg.Add(1)
????????go func() {
????????????once.Do(func() {
????????????????fmt.Println("Once") // 一回だけ呼ばれる
????????????})
????????????wg.Done()
????????}()
????}
????wg.Wait()
// 関数が変わっても呼ばれることはない
once.Do(func() {
????????fmt.Println(“Second")
????})
Pool
? オブジェクトプールパターンを並行処理で安
全な形で実装したもの
? DBのコネクションプールとかのあれ
? オブジェクトの初期化が重いものを扱う時な
どに使う
Pool
????pool := &sync.Pool{
????????New: func() interface{} {
????????????fmt.Println("Create new instance")
????????????return struct{}{}
????????},
????}
????ins := pool.Get() // Create new instance
????pool.Put(ins) // プールに戻す
????ins = pool.Get() // 使い回されるので初期化されない
Poolを使う際の注意点
? Newにはスレッド安全な関数を持たせる
? Getで得たインスタンスの状態に依存しない
? 笔耻迟でオブジェクトを戻す(诲别蹿别谤を使おう
channel
channel
? メモリアクセスの同期や、goroutine同士の
通信として使うこともできる
? Goで並行処理を行う上で超重要
channelの生成
// interface{}型のチャネルを生成
var ch chan interface{}
ch = make(chan interface{})
// 送信専用チャネル
var ch chan<- interface{}
ch = make(chan<- interface{})
// 受信専用チャネル
var ch <-chan interface{}
ch = make(<-chan interface{})
// キャパシティ付チャネル
// 5つ目を書き込もうとすると読み出されるまでブロックする
var ch <-chan interface{}
ch = make(<-chan interface{}, 4)
channelの使用例
ch := make(chan string)
go func() {
time.Sleep(3 * time.Second)
ch <- “(??ω?`)” // chにメッセージを送信
}()
fmt.Println(<-ch) // メッセージを受信するまでブロック
channelを返す例
// 戻り値がチャネルということは中で並列処理が
// 呼ばれているサイン
f := func() <-chan string {
????c := make(chan string)
????go func() {
????????time.Sleep(3 * time.Second)
????????c <- "(??ω?`)"
????}()
????return c
}
fmt.Println(<-f()) // 戻り値のチャネルで合流する
channelとclose/range
????c := make(chan int)
????go func() {
????????defer close(c) // 関数を抜けたらclose
????????for i := 0; i < 3; i++ {
????????????time.Sleep(1 * time.Second)
????????????c <- i
????????}
????}()
????for i := range c { // closeされたらループを抜ける
????????fmt.Println(i)
????}
channelとselect
????c1 := make(chan int)
????c2 := make(chan int)
????go func() {
????????defer close(c2) // c2だけcloseする
????}()
????select { // いずれかのchannelが完了するまでブロックする
????case <-c1:
????????fmt.Println("c1")
????case <-c2:
????????fmt.Println(“c2") // こちらだけが呼ばれる
????}
channelとselectとTimeout
????c1 := make(chan int)
????select {
????case <-c1:
????????fmt.Println(“c1")
????case <-time.After(1 * time.Second):
// time.Afterは <-chan Time を返す
// c1は終了しないのでこちらが呼ばれる
????????fmt.Println("timed out”)
????}
channelとselectとfor
????c1 := make(chan int)
????go func() {
????????defer close(c1)
????????time.Sleep(1 * time.Second)
????}()
????loop:
????for { // 無限ループ
????????select {
????????case <-c1:
????????????break loop
????????default:
????????????// チャネルが完了しない間行われる処理
????????}
????}
context package
context package
? Goで並行なコードを扱う際のキャンセル、タ
イムアウト、デッドラインを各goroutineに
伝達させる
? Go 1.7から標準ライブラリ追加された
? 超重要
contextが持つ関数(一部)
func Background() Context
func Todo() Context
func WithCancel(parent Context) (ctx Context, cancel
CancelFunc)
func WithDeadline(parent Context, d time.Time) (Context,
CancelFunc)
func WithTimeout(parent Context, timeout time.Duration)
(Context, CancelFunc)
func WithValue(parent Context, key, val interface{}) Context
context.WithCancel
// Contextを生成
????ctx, cancel := context.WithCancel(context.Background())
????f := func(ctx context.Context) (string, error) {
????????select {
????????case <-ctx.Done(): // cancelされた場合Doneが呼ばれる
????????????return "", ctx.Err()
????????case <-time.After(3 * time.Second):
????????}
????????return "(??ω?`)", nil
????}
????cancel() // 処理をキャンセルする
????_, err := f(ctx)
????if err != nil {
????????fmt.Println(err) // context canceled
????}
context.WithDeadline
????ctx, cancel := context.WithDeadline(
context.Background(),
time.Now().Add(1*time.Second) // deadlineを設定
)
????defer cancel()
????f := func(ctx context.Context) (string, error) {
????????time.Sleep(3 * time.Second)
????????if deadline, ok := ctx.Deadline(); ok {
????????????if deadline.Sub(time.Now()) <= 0 { // deadlineの判定
????????????????return "", context.DeadlineExceeded
????????????}
????????}
????????return "(??ω?`)", nil
????}
????_, err := f(ctx)
????if err != nil {
????????fmt.Println(err) // context deadline exceeded
????}
context.WithTimeout
????ctx, cancel := context.WithTimeout(
context.Background(), 1*time.Second) // タイムアウトを1秒に
????defer cancel()
????f := func(ctx context.Context) (string, error) {
????????select {
????????case <-ctx.Done():
????????????return "", ctx.Err() // 3秒より短いのでタイムアウトする
????????case <-time.After(3 * time.Second):
????????????return "(??ω?`)", nil
????????}
????}
????_, err := f(ctx)
????if err != nil {
????????fmt.Println(err) // context deadline exceeded
????}
context.WithValue
type key int
const (
????keyPera key = iota
????keyNikov key = iota
)
func main() {
// Contextにkey-valueで値をもたせられる
// キーが衝突しないように独自のキー型を定義し区別することを推奨
????ctx := context.WithValue(context.Background(), keyPera, "pera")
????ctx = context.WithValue(ctx, keyNikov, "nikov")
????fmt.Println(ctx.Value(keyPera)) // pera
????fmt.Println(ctx.Value(keyNikov)) // nikov
}
Contextに何を持たせるべき?
? プロセスやAPIの境界を超えるもの
? 不変なもの
? 単純な型であるもの
? メソッドが無いもの
? それによって挙動が変わらないもの
※本書による経験則によるもの
Contextに何を持たせるべき?
? 以下は一例
? リクエストID
? ユーザーID
? URL
? 認可トークン
? リクエストトークン
※本書による経験則によるもの
まとめ
? Goにおける並行処理を書くための構成要素を
眺めた
? Goでは並行処理が気軽に書け、合流する方法
も様々
? もっと詳しく知りたければ「Go言語による並
行処理」を読もう!

More Related Content

What's hot (19)

そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
shigeki_ohtsu
?
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
Satoshi Yamada
?
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
?
今日からはじめる骋笔补谤蝉
今日からはじめる骋笔补谤蝉今日からはじめる骋笔补谤蝉
今日からはじめる骋笔补谤蝉
fumokmm
?
2日間Fabricを触った俺か?? 色々解説してみる
2日間Fabricを触った俺か?? 色々解説してみる2日間Fabricを触った俺か?? 色々解説してみる
2日間Fabricを触った俺か?? 色々解説してみる
airtoxin Ishii
?
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
?
Boost tour 1.60.0 merge
Boost tour 1.60.0 mergeBoost tour 1.60.0 merge
Boost tour 1.60.0 merge
Akira Takahashi
?
笔测迟丑辞苍で搁补办别もどきを作ってみた
笔测迟丑辞苍で搁补办别もどきを作ってみた笔测迟丑辞苍で搁补办别もどきを作ってみた
笔测迟丑辞苍で搁补办别もどきを作ってみた
kwatch
?
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsugChef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Takeshi Komiya
?
笔别谤濒と出会い、笔别谤濒を作る
笔别谤濒と出会い、笔别谤濒を作る笔别谤濒と出会い、笔别谤濒を作る
笔别谤濒と出会い、笔别谤濒を作る
goccy
?
笔辞飞别谤厂丑别濒濒が苦手だった男が笔辞飞别谤厂丑别濒濒を爱するようになるまで
笔辞飞别谤厂丑别濒濒が苦手だった男が笔辞飞别谤厂丑别濒濒を爱するようになるまで笔辞飞别谤厂丑别濒濒が苦手だった男が笔辞飞别谤厂丑别濒濒を爱するようになるまで
笔辞飞别谤厂丑别濒濒が苦手だった男が笔辞飞别谤厂丑别濒濒を爱するようになるまで
Kazuhiro Matsushima
?
贬补蝉办别濒濒超初心者勉强会11
贬补蝉办别濒濒超初心者勉强会11贬补蝉办别濒濒超初心者勉强会11
贬补蝉办别濒濒超初心者勉强会11
Takashi Kawachi
?
Ctb57 with god7
Ctb57 with god7Ctb57 with god7
Ctb57 with god7
kingtomo
?
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
Satoshi Yamada
?
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
?
Go言語て?作る webアフ?リ@gocon 2013 spring
Go言語て?作る webアフ?リ@gocon 2013 springGo言語て?作る webアフ?リ@gocon 2013 spring
Go言語て?作る webアフ?リ@gocon 2013 spring
Takuya Ueda
?
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
?
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
?
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
shigeki_ohtsu
?
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
Satoshi Yamada
?
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
?
今日からはじめる骋笔补谤蝉
今日からはじめる骋笔补谤蝉今日からはじめる骋笔补谤蝉
今日からはじめる骋笔补谤蝉
fumokmm
?
2日間Fabricを触った俺か?? 色々解説してみる
2日間Fabricを触った俺か?? 色々解説してみる2日間Fabricを触った俺か?? 色々解説してみる
2日間Fabricを触った俺か?? 色々解説してみる
airtoxin Ishii
?
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
?
笔测迟丑辞苍で搁补办别もどきを作ってみた
笔测迟丑辞苍で搁补办别もどきを作ってみた笔测迟丑辞苍で搁补办别もどきを作ってみた
笔测迟丑辞苍で搁补办别もどきを作ってみた
kwatch
?
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsugChef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Takeshi Komiya
?
笔别谤濒と出会い、笔别谤濒を作る
笔别谤濒と出会い、笔别谤濒を作る笔别谤濒と出会い、笔别谤濒を作る
笔别谤濒と出会い、笔别谤濒を作る
goccy
?
笔辞飞别谤厂丑别濒濒が苦手だった男が笔辞飞别谤厂丑别濒濒を爱するようになるまで
笔辞飞别谤厂丑别濒濒が苦手だった男が笔辞飞别谤厂丑别濒濒を爱するようになるまで笔辞飞别谤厂丑别濒濒が苦手だった男が笔辞飞别谤厂丑别濒濒を爱するようになるまで
笔辞飞别谤厂丑别濒濒が苦手だった男が笔辞飞别谤厂丑别濒濒を爱するようになるまで
Kazuhiro Matsushima
?
贬补蝉办别濒濒超初心者勉强会11
贬补蝉办别濒濒超初心者勉强会11贬补蝉办别濒濒超初心者勉强会11
贬补蝉办别濒濒超初心者勉强会11
Takashi Kawachi
?
Ctb57 with god7
Ctb57 with god7Ctb57 with god7
Ctb57 with god7
kingtomo
?
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
Satoshi Yamada
?
Go言語て?作る webアフ?リ@gocon 2013 spring
Go言語て?作る webアフ?リ@gocon 2013 springGo言語て?作る webアフ?リ@gocon 2013 spring
Go言語て?作る webアフ?リ@gocon 2013 spring
Takuya Ueda
?
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
?
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
?

Similar to 明日から使える気になる骋辞言语による并行処理 (20)

箩别苍办颈苍蝉で游ぶ
箩别苍办颈苍蝉で游ぶ箩别苍办颈苍蝉で游ぶ
箩别苍办颈苍蝉で游ぶ
(^-^) togakushi
?
闯补惫补厂肠谤颈辫迟入门
闯补惫补厂肠谤颈辫迟入门闯补惫补厂肠谤颈辫迟入门
闯补惫补厂肠谤颈辫迟入门
Ryo Maruyama
?
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
?
マスターオフ?コ?ールーチンアント?チャネル スタートGo #1
マスターオフ?コ?ールーチンアント?チャネル   スタートGo #1マスターオフ?コ?ールーチンアント?チャネル   スタートGo #1
マスターオフ?コ?ールーチンアント?チャネル スタートGo #1
Takuya Ueda
?
ソフトウェア工学2023 14 ヒ?ルト?
ソフトウェア工学2023 14 ヒ?ルト?ソフトウェア工学2023 14 ヒ?ルト?
ソフトウェア工学2023 14 ヒ?ルト?
Toru Tamaki
?
CakePHP - The point of upgrade
CakePHP - The point of upgradeCakePHP - The point of upgrade
CakePHP - The point of upgrade
Yasuo Harada
?
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
?
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
Yoshifumi Yamaguchi
?
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
lestrrat
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
笔测迟丑辞苍勉强会1-はじめに
笔测迟丑辞苍勉强会1-はじめに笔测迟丑辞苍勉强会1-はじめに
笔测迟丑辞苍勉强会1-はじめに
理 小林
?
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
Akira Takahashi
?
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi
?
Using context.context in context
Using context.context in contextUsing context.context in context
Using context.context in context
James Kirk
?
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
?
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
Norito Agetsuma
?
いまさら闻けない搁补办别入门
いまさら闻けない搁补办别入门いまさら闻けない搁补办别入门
いまさら闻けない搁补办别入门
Tomoya Kawanishi
?
箩别苍办颈苍蝉で游ぶ
箩别苍办颈苍蝉で游ぶ箩别苍办颈苍蝉で游ぶ
箩别苍办颈苍蝉で游ぶ
(^-^) togakushi
?
闯补惫补厂肠谤颈辫迟入门
闯补惫补厂肠谤颈辫迟入门闯补惫补厂肠谤颈辫迟入门
闯补惫补厂肠谤颈辫迟入门
Ryo Maruyama
?
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
?
マスターオフ?コ?ールーチンアント?チャネル スタートGo #1
マスターオフ?コ?ールーチンアント?チャネル   スタートGo #1マスターオフ?コ?ールーチンアント?チャネル   スタートGo #1
マスターオフ?コ?ールーチンアント?チャネル スタートGo #1
Takuya Ueda
?
ソフトウェア工学2023 14 ヒ?ルト?
ソフトウェア工学2023 14 ヒ?ルト?ソフトウェア工学2023 14 ヒ?ルト?
ソフトウェア工学2023 14 ヒ?ルト?
Toru Tamaki
?
CakePHP - The point of upgrade
CakePHP - The point of upgradeCakePHP - The point of upgrade
CakePHP - The point of upgrade
Yasuo Harada
?
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
?
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
Yoshifumi Yamaguchi
?
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
lestrrat
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
笔测迟丑辞苍勉强会1-はじめに
笔测迟丑辞苍勉强会1-はじめに笔测迟丑辞苍勉强会1-はじめに
笔测迟丑辞苍勉强会1-はじめに
理 小林
?
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
Akira Takahashi
?
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi
?
Using context.context in context
Using context.context in contextUsing context.context in context
Using context.context in context
James Kirk
?
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
?
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
Norito Agetsuma
?
いまさら闻けない搁补办别入门
いまさら闻けない搁补办别入门いまさら闻けない搁补办别入门
いまさら闻けない搁补办别入门
Tomoya Kawanishi
?

More from Yuto Matsukubo (10)

がんばれテックリード!闯滨搁础芸人篇!!
がんばれテックリード!闯滨搁础芸人篇!!がんばれテックリード!闯滨搁础芸人篇!!
がんばれテックリード!闯滨搁础芸人篇!!
Yuto Matsukubo
?
骋辞/驳搁笔颁はじめました
骋辞/驳搁笔颁はじめました骋辞/驳搁笔颁はじめました
骋辞/驳搁笔颁はじめました
Yuto Matsukubo
?
非エンジニア向け技术セミナーをした话非エンジニア向け技术セミナーをした话
非エンジニア向け技术セミナーをした话
Yuto Matsukubo
?
骋颁笔で厂辫濒补迟辞辞苍の戦绩を分析する
骋颁笔で厂辫濒补迟辞辞苍の戦绩を分析する骋颁笔で厂辫濒补迟辞辞苍の戦绩を分析する
骋颁笔で厂辫濒补迟辞辞苍の戦绩を分析する
Yuto Matsukubo
?
「オブジェクト指向设计実践ガイド」を読んだので谁かに意见闻きたい
「オブジェクト指向设计実践ガイド」を読んだので谁かに意见闻きたい「オブジェクト指向设计実践ガイド」を読んだので谁かに意见闻きたい
「オブジェクト指向设计実践ガイド」を読んだので谁かに意见闻きたい
Yuto Matsukubo
?
搁耻产测颈蝉迟を诱う厂肠补濒补の世界 2.0
搁耻产测颈蝉迟を诱う厂肠补濒补の世界 2.0搁耻产测颈蝉迟を诱う厂肠补濒补の世界 2.0
搁耻产测颈蝉迟を诱う厂肠补濒补の世界 2.0
Yuto Matsukubo
?
搁耻产测颈蝉迟を诱う厂肠补濒补の世界
搁耻产测颈蝉迟を诱う厂肠补濒补の世界搁耻产测颈蝉迟を诱う厂肠补濒补の世界
搁耻产测颈蝉迟を诱う厂肠补濒补の世界
Yuto Matsukubo
?
はじめての罢顿顿
はじめての罢顿顿はじめての罢顿顿
はじめての罢顿顿
Yuto Matsukubo
?
Intoroduction to React.js
Intoroduction to React.jsIntoroduction to React.js
Intoroduction to React.js
Yuto Matsukubo
?
受託开発て?础苍蝉颈产濒别を导入した话
受託开発て?础苍蝉颈产濒别を导入した话受託开発て?础苍蝉颈产濒别を导入した话
受託开発て?础苍蝉颈产濒别を导入した话
Yuto Matsukubo
?
がんばれテックリード!闯滨搁础芸人篇!!
がんばれテックリード!闯滨搁础芸人篇!!がんばれテックリード!闯滨搁础芸人篇!!
がんばれテックリード!闯滨搁础芸人篇!!
Yuto Matsukubo
?
骋辞/驳搁笔颁はじめました
骋辞/驳搁笔颁はじめました骋辞/驳搁笔颁はじめました
骋辞/驳搁笔颁はじめました
Yuto Matsukubo
?
非エンジニア向け技术セミナーをした话非エンジニア向け技术セミナーをした话
非エンジニア向け技术セミナーをした话
Yuto Matsukubo
?
骋颁笔で厂辫濒补迟辞辞苍の戦绩を分析する
骋颁笔で厂辫濒补迟辞辞苍の戦绩を分析する骋颁笔で厂辫濒补迟辞辞苍の戦绩を分析する
骋颁笔で厂辫濒补迟辞辞苍の戦绩を分析する
Yuto Matsukubo
?
「オブジェクト指向设计実践ガイド」を読んだので谁かに意见闻きたい
「オブジェクト指向设计実践ガイド」を読んだので谁かに意见闻きたい「オブジェクト指向设计実践ガイド」を読んだので谁かに意见闻きたい
「オブジェクト指向设计実践ガイド」を読んだので谁かに意见闻きたい
Yuto Matsukubo
?
搁耻产测颈蝉迟を诱う厂肠补濒补の世界 2.0
搁耻产测颈蝉迟を诱う厂肠补濒补の世界 2.0搁耻产测颈蝉迟を诱う厂肠补濒补の世界 2.0
搁耻产测颈蝉迟を诱う厂肠补濒补の世界 2.0
Yuto Matsukubo
?
搁耻产测颈蝉迟を诱う厂肠补濒补の世界
搁耻产测颈蝉迟を诱う厂肠补濒补の世界搁耻产测颈蝉迟を诱う厂肠补濒补の世界
搁耻产测颈蝉迟を诱う厂肠补濒补の世界
Yuto Matsukubo
?
Intoroduction to React.js
Intoroduction to React.jsIntoroduction to React.js
Intoroduction to React.js
Yuto Matsukubo
?
受託开発て?础苍蝉颈产濒别を导入した话
受託开発て?础苍蝉颈产濒别を导入した话受託开発て?础苍蝉颈产濒别を导入した话
受託开発て?础苍蝉颈产濒别を导入した话
Yuto Matsukubo
?

Recently uploaded (11)

测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?

明日から使える気になる骋辞言语による并行処理