SlideShare a Scribd company logo
1 of 39
Chiba.pm #3
2013/6/8
Mojoliciousの
ログ出力を改造する
いとちん @ayumu83s
perl歴は2年半くらい。
主にソーシャルゲームの開発をしています。
自己紹介
いとちん @ayumu83s
perl歴は2年半くらい。
主にソーシャルゲームの開発をしています。
自己紹介
開発業務の他にも・・・
開発業務の他にも・・・
開発業務の他にも・・・
開発業務の他にも・・・
開発業務の他にも・・・
俺じゃなくてもよくね?
ここから、本題。
Mojoliciousのログ
[Thu Jun 7 00:10:31 2013] [debug] GET / (Mozilla/5.0 (Macintosh; Intel Mac
OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.
0.1453.110 Safari/537.36).
[Thu Jun 7 00:10:31 2013] [debug] Routing to controller "MojoSample::
Controller::Example" andebug action "welcome".
[Thu Jun 7 01:21:42 2013] [debug] Example::welcome start
[Thu Jun 7 00:10:31 2013] [debug] id:1
[Thu Jun 7 00:10:31 2013] [debug] name:itou
[Thu Jun 7 00:10:31 2013] [debug] id:2
[Thu Jun 7 00:10:31 2013] [debug] name:ayumu
[Thu Jun 7 00:10:31 2013] [debug] id:3
[Thu Jun 7 00:10:31 2013] [debug] name:ayumu83s
[Thu Jun 7 01:21:42 2013] [debug] Example::welcome end
[Thu Jun 7 00:10:31 2013] [debug] 200 OK (0.002594s, 385.505/s).
Mojoliciousのログ
[Thu Jun 7 00:10:31 2013] [debug] GET / (Mozilla/5.0 (Macintosh; Intel Mac
OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.
0.1453.110 Safari/537.36).
[Thu Jun 7 00:10:31 2013] [debug] Routing to controller "MojoSample::
Controller::Example" andebug action "welcome".
[Thu Jun 7 01:21:42 2013] [debug] Example::welcome start
[Thu Jun 7 00:10:31 2013] [debug] id:1
[Thu Jun 7 00:10:31 2013] [debug] name:itou
[Thu Jun 7 00:10:31 2013] [debug] id:2
[Thu Jun 7 00:10:31 2013] [debug] name:ayumu
[Thu Jun 7 00:10:31 2013] [debug] id:3
[Thu Jun 7 00:10:31 2013] [debug] name:ayumu83s
[Thu Jun 7 01:21:42 2013] [debug] Example::welcome end
[Thu Jun 7 00:10:31 2013] [debug] 200 OK (0.002594s, 385.505/s).
Mojoliciousのログ
[Thu Jun 7 00:10:31 2013] [debug] GET / (Mozilla/5.0 (Macintosh; Intel Mac
OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.
0.1453.110 Safari/537.36).
[Thu Jun 7 00:10:31 2013] [debug] Routing to controller "MojoSample::
Controller::Example" andebug action "welcome".
[Thu Jun 7 01:21:42 2013] [debug] Example::welcome start
[Thu Jun 7 00:10:31 2013] [debug] id:1
[Thu Jun 7 00:10:31 2013] [debug] name:itou
[Thu Jun 7 00:10:31 2013] [debug] id:2
[Thu Jun 7 00:10:31 2013] [debug] name:ayumu
[Thu Jun 7 00:10:31 2013] [debug] id:3
[Thu Jun 7 00:10:31 2013] [debug] name:ayumu83s
[Thu Jun 7 01:21:42 2013] [debug] Example::welcome end
[Thu Jun 7 00:10:31 2013] [debug] 200 OK (0.002594s, 385.505/s).
パッケージ名とか
行数が欲しくね?
ググった
ググった → あった。
サブルーチンを上書きする作戦
# ここから
if ($self->log->is_level('debug')) {
no warnings 'redefine';
*Mojo::Log::format = sub {
my ($self, $level, @lines) = @_;
my @caller = caller(4);
my $caller = join ' ', $caller[0], $caller[2];
return
'['
. localtime(time)
. "] [$level] [$caller] "
. join("n", @lines) . "n";
};
}
# ここまで追加
サブルーチンを再定義する作戦
# ここから
if ($self->log->is_level('debug')) {
no warnings 'redefine';
*Mojo::Log::format = sub {
my ($self, $level, @lines) = @_;
my @caller = caller(4);
my $caller = join ' ', $caller[0], $caller[2];
return
'['
. localtime(time)
. "] [$level] [$caller] "
. join("n", @lines) . "n";
};
}
# ここまで追加
*[パッケージ名][関数名]に
無名関数を突っ込むと
再定義できる。
サブルーチンを上書きする作戦
# ここから
if ($self->log->is_level('debug')) {
no warnings 'redefine';
*Mojo::Log::format = sub {
my ($self, $level, @lines) = @_;
my @caller = caller(4);
my $caller = join ' ', $caller[0], $caller[2];
return
'['
. localtime(time)
. "] [$level] [$caller] "
. join("n", @lines) . "n";
};
}
# ここまで追加
スタック情報から
実行したパッケージ名とかを
GETする
そしてこうなった。
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Plugin::RequestTimer:38] GET / (Mozilla/5.0
(Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.
0.1453.110 Safari/537.36).
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Routes:171] Routing to controller "MojoSample::
Controller::Example" andebug action "welcome".
[Thu Jun 7 01:21:42 2013][debug][MojoSample::Controller::Example:15] Example::welcome start
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:1
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:itou
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:2
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:ayumu
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:3
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:ayumu83s
[Thu Jun 7 01:21:42 2013][debug][MojoSample::Controller::Example:22] Example::welcome end
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Plugin::RequestTimer:25] 200 OK (0.002594s,
385.505/s).
そしてこうなった。
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Plugin::RequestTimer:38] GET / (Mozilla/5.0
(Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.
0.1453.110 Safari/537.36).
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Routes:171] Routing to controller "MojoSample::
Controller::Example" andebug action "welcome".
[Thu Jun 7 01:21:42 2013][debug][MojoSample::Controller::Example:15] Example::welcome start
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:1
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:itou
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:2
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:ayumu
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:3
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:ayumu83s
[Thu Jun 7 01:21:42 2013][debug][MojoSample::Controller::Example:22] Example::welcome end
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Plugin::RequestTimer:25] 200 OK (0.002594s,
385.505/s).
我々の勝利である。
完
人のブログパクっただけじゃねーか
人のブログパクっただけじゃねーか
オブジェクト指向なやり方も
実装を試しました。
OOP的なやり方
OOP的なやり方
ざっくり概要。
OOP的なやり方
ざっくり概要。
1.Mojo::Logを派生したクラスを定義。
OOP的なやり方
ざっくり概要。
1.Mojo::Logを派生したクラスを定義。
↓
2.formatメソッドをオーバーライド。
ざっくり概要。
1.Mojo::Logを派生したクラスを定義。
↓
2.formatメソッドをオーバーライド。
↓
3.インスタンスを作成。
OOP的なやり方
ざっくり概要。
1.Mojo::Logを派生したクラスを定義。
↓
2.formatメソッドをオーバーライド。
↓
3.インスタンスを作成。
↓
4.logオブジェクトにぶっこみまーす。
OOP的なやり方
派生クラスの定義
package MojoSample::LogEx;
use strict;
use warnings;
use parent qw/Mojo::Log/;
sub format {
my ($self, $level, @lines) = @_;
my @caller = caller(4);
return '[' . localtime(time) . "][$level][$caller[0]:$caller[2]]" . join("n", @lines)
. "n";
}
1;
__END__
派生しました。
派生クラスの定義
package MojoSample::LogEx;
use strict;
use warnings;
use parent qw/Mojo::Log/;
sub format {
my ($self, $level, @lines) = @_;
my @caller = caller(4);
return '[' . localtime(time) . "][$level][$caller[0]:$caller[2]]" . join("n", @lines)
. "n";
}
1;
__END__
オーバーライド
しました。
インスタンスのぶっこみ
sub startup {
my $self = shift;
my $home = $self->home;
$self->log(MojoSample::LogEx->new(
path => $self->log->path,
level => $self->log->level
));
$self->log->debug('hello');
:
ぶっこみました。
インスタンスのぶっこみ
sub startup {
my $self = shift;
my $home = $self->home;
$self->log(MojoSample::LogEx->new(
path => $self->log->path,
level => $self->log->level
));
$self->log->debug('hello');
:
出力先とログレベルを
既定クラスに合わせる。
path指定しないと、/var/log/mojo.log
に出力される。
ぶっこみました。
そしてこうなった。
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Plugin::RequestTimer:38] GET / (Mozilla/5.0
(Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.
0.1453.110 Safari/537.36).
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Routes:171] Routing to controller "MojoSample::
Controller::Example" andebug action "welcome".
[Thu Jun 7 01:21:42 2013][debug][MojoSample::Controller::Example:15] Example::welcome start
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:1
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:itou
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:2
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:ayumu
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:3
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:ayumu83s
[Thu Jun 7 01:21:42 2013][debug][MojoSample::Controller::Example:22] Example::welcome end
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Plugin::RequestTimer:25] 200 OK (0.002594s,
385.505/s).
そしてこうなった。
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Plugin::RequestTimer:38] GET / (Mozilla/5.0
(Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.
0.1453.110 Safari/537.36).
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Routes:171] Routing to controller "MojoSample::
Controller::Example" andebug action "welcome".
[Thu Jun 7 01:21:42 2013][debug][MojoSample::Controller::Example:15] Example::welcome start
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:1
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:itou
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:2
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:ayumu
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:17] id:3
[Thu Jun 7 00:10:31 2013][debug][MojoSample::Controller::Example:18] name:ayumu83s
[Thu Jun 7 01:21:42 2013][debug][MojoSample::Controller::Example:22] Example::welcome end
[Thu Jun 7 00:10:31 2013][debug][Mojolicious::Plugin::RequestTimer:25] 200 OK (0.002594s,
385.505/s).
我々の大勝利である。
これでログを改造し放題!!
これでログを改造し放題!!
例1:ログ長いから短くする
my $now = localtime(time);
my $lv = substr($level, 0, 1);
return '[' . $now . "][$lv][$caller[0]:$caller[2]] " . join("n",
@lines) . "n";
[Thu Jun 7 00:10:31 2013][d][Mojolicious::Plugin::
RequestTimer:25] 200 OK (0.002594s, 385.505/s).
これでログを改造し放題!!
例2:木曜日なら「麺」を表示する。
my $now = localtime(time);
$now =~ s/Thu/麺/;
return '[' . $now . "][$level][$caller[0]:$caller[2]] " . join("n",
@lines) . "n";
[麺 Jun 7 00:10:31 2013][debug][Mojolicious::Plugin::
RequestTimer:25] 200 OK (0.002594s, 385.505/s).
まとめ
パッケージ名と行数が分かれば
デバッグが捗る!
ご静聴、
ありがとうございました。

More Related Content

Viewers also liked

Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編Ayumu Itou
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
2016年のPerl (Long version)
2016年のPerl (Long version)2016年のPerl (Long version)
2016年のPerl (Long version)charsbar
 
Json(::PP) is a-changing
Json(::PP) is a-changingJson(::PP) is a-changing
Json(::PP) is a-changingcharsbar
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるjamadam
 
2017年春のPerl
2017年春のPerl2017年春のPerl
2017年春のPerlcharsbar
 
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンスLivesense Inc.
 

Viewers also liked (7)

Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編Gofのデザインパターン stateパターン編
Gofのデザインパターン stateパターン編
 
CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
2016年のPerl (Long version)
2016年のPerl (Long version)2016年のPerl (Long version)
2016年のPerl (Long version)
 
Json(::PP) is a-changing
Json(::PP) is a-changingJson(::PP) is a-changing
Json(::PP) is a-changing
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
2017年春のPerl
2017年春のPerl2017年春のPerl
2017年春のPerl
 
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
学生時代に知っておきたかったWeb技術の学び方の学び方 | リブセンス
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (14)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

Mojoliciousのログ出力を改造する in chiba.pm #3