SlideShare ist ein Scribd-Unternehmen logo
1 von 154
Downloaden Sie, um offline zu lesen
Perl::Lint - Yet Another 
Perl Source Code Linter 
http://bit.ly/1p5HdSA 
@moznion
VOTE ME!
SEE ALSO 
Perlの静的解析入門と 
Perlリファクタリングツール 
App::PRTのご紹介 
@hitode909 
! 
Day 2, 多目的教室3, 16:00
@moznion
@moznion 
@hitode909
Perl::Lint 
! https://github.com/moznion/Perl-Lint 
  
https://metacpan.org/release/MOZNION/Perl- 
Lint-0.01_01 (<= UNDERDEVELOPMENT!!!)
Perl::Lint 
! https://github.com/moznion/Perl-Lint 
  
https://metacpan.org/release/MOZNION/Perl- 
Lint-0.01_02 (<= UNDERDEVELOPMENT!!!)
What is 
Perl::Lint?
A. Source Code Linter 
for Perl
Yes, It’s like… 
Perl:: 
http://bit.ly/1l5HrYX
Are you using 
Perl::Critic? http://bit.ly/1pfMxCW
What is 
Perl::Critic?
A. Source Code Linter 
for Perl
Wait!!
What is 
Source Code 
Linter???
A. Analyzes the 
source code and 
detects the causes 
of bugs
Search 
and 
Destroy 
http://bit.ly/1AT3Bl3
Concretely…
There are five bad things
There are five bad things
There are five bad things
There are five bad things
There are five bad things
There are five bad things
It was fun?
Is this what I think it is?
It’s just CODE REVIEW?
But do you think human 
should do the such code 
review?
Human should work 
more creative
It seems possible to 
check by computer
There are five bad things
And probably 
human overlooks
Hard to Understand Code
Hard to Understand Code 
Destroy!
Hard to Understand Code 
Easy to review
Do you like clean code, 
and why?
Readable code 
! 
! 
Reviewable code
Readable code 
≒ 
! 
! 
Reviewable code
=> Maintainable!!
Maintainable code 
will be growing up 
along maintainable
Humans can focus on 
creative work
Okay, 
Make maintainable code 
by computer!
And then source code 
linter was appeared 
(1979 for C)
Now; 
js-lint, find-bugs, 
rubocop, etc…
And language 
processors: 
Go, Scala and etc.
Does Perl have?
Perl::Critic is awesome!
Perl::Critic checks 
the code conform 
to PBP style or not
Benefit to analyze 
code by computer
He don’t grumble
He is 
inexhaustible
He don’t take a mistake
He is fast 
(in many cases)
And can automation
Cost of human: HIGH 
! 
Cost of computer: LOW
Cost of human: HIGH 
! 
Cost of computer: LOW 
Good!!
Got it.
But… 
If there is Perl::Critic, 
Is Perl::Lint don’t need?
Perl::Critic is awesome 
but a little slow
In large project, 
It takes 3 minutes 
to run only Perl::Critic
How do you spend in 
meantime?
Coffee? 
How do you spend in 
meantime?
Coffee? 
Chat? 
How do you spend in 
meantime?
Coffee? 
Nap? Chat? 
How do you spend in 
meantime?
Coffee? 
Swing Copters? 
Nap? Chat? 
How do you spend in 
meantime?
Life is too short, 
so let’s accelerate!!
Rate [num/sec] 
100 
75 
50 
25 
0 
97 
18 
Perl::Critic Perl::Lint
Rate [num/sec] 
100 
75 
About 50 
400% increase 
25 
0 
97 
18 
Perl::Critic Perl::Lint
Yeah!!!! 
I'll show you all my tricks
A little break
Background that led to 
the development
This project receive 
TPF grant
Do you know 
TPF grant?
Nozaki-san and 
Maki-san (@lestrrat-san) 
are people in a high 
position of TPF grant
Maki-san「日本人がトップになっ 
たのに日本から1つもProposal出な 
いのちょっとアレじゃない?」▼ 
me「そうですなあ」▼ 
Maki-san「moznion出してよ」▼ 
me「!!!!!」▼
Time flies everything 
goes…
Perl::Lint!!!!
Let’s apply!!!
Return to our subject…
How do we do 
static analyzing for Perl?
Enough!
Joke :p
Two major methods 
- Evaluate Token 
- Evaluate AST
Two major methods 
- Evaluate Token 
- Evaluate AST
Tools - PPI - Compiler::Lexer
Tools - PPI - Compiler::Lexer
What is Compiler::Lexer?
*Very Fast* tokenizer 
made of C++
Compiler::Lexer is fast 
⇛ Perl::Lint is fast!
And others: 
Compiler::Parser, 
C::CodeGenerator::LLVM, 
etc… 
@goccy54++
Example of tokens 
that is generated by 
Compiler::Lexer
my $foo;
my $foo;
Points
Use these tokens 
to analyze
Enough!
Architecture of Perl::Lint
Top Level 
+args 
+site_policies 
+lint 
+lint_string 
Policies 
+evaluate 
1 
Filters 
+filter 
1 
1 .. * 
1 .. *
Simple and Easy!
Policies
Each policies are 
isolated
Easy to make 
your own policy
Samples
*** CAUTION *** 
A lot of bad 
code are here. 
Close your eyes.
@P::L::P::Miscellanea::ProhibitTies
@P::L::P::Miscellanea::ProhibitTies 
Check type
@P::L::P::Miscellanea::ProhibitTies 
Check data
アッ
Feature of 
Implementation 
and Bad Know-hows
Use C-Style for()
Use C-Style for() 
But PBP prohibit it!!
Use List::Util::any 
instead of grep
Don’t use regex, 
compare by eq in series
Or use hash 
…
Function calling 
is almost gone.
Use simple parts 
e.g. raw-bless, POPO
Filtering mechanism
Perl::Critic’s 
default rule system 
is a bit difficult…
Yes, I know, 
perlcriticrc can 
adjust them. 
But too much hustle
Perl::Lint checks 
the all of policies 
as default
And you can filter 
any policies as you like
Filter by `ignore`
Filter by `filter`
Yes, of course 
you can deny 
the all of policies :)
You can define 
your own filter
e.g.
And Perl::Lint provides 
default policies
For Perl::Critic users ;)
These are features 
of Perl::Lint
But installation is such a 
hassle!
Perl::Lint 
Playground 
http://perl-lint.moznion.net
You can try!
Meaning to publish 
Playground
It makes easy to get 
feedback
Motivation ➚
Publish the Playground 
is looking good!
Future works
Implement the all of 
policies…
## no lint
Module for testing 
(Like a Test::Perl::Critic)
Cooperate with GitHub 
(Like a Coveralls)
Inject the result 
into code as TODO 
comment 
(inspired by rubocop)
As you see, 
Perl::Lint is 
under development
SEGV, ABRT, etc…
I’m looking for 
contributors!
DEMO
Any Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

A Static Type Analyzer of Untyped Ruby Code for Ruby 3
A Static Type Analyzer of Untyped Ruby Code for Ruby 3A Static Type Analyzer of Untyped Ruby Code for Ruby 3
A Static Type Analyzer of Untyped Ruby Code for Ruby 3mametter
 
떠먹는 '오브젝트' Ch05 책임 할당하기
떠먹는 '오브젝트' Ch05 책임 할당하기떠먹는 '오브젝트' Ch05 책임 할당하기
떠먹는 '오브젝트' Ch05 책임 할당하기Covenant Ko
 
Perl 5.16 and Beyond - YAPC::Asia 2011
Perl 5.16 and Beyond - YAPC::Asia 2011Perl 5.16 and Beyond - YAPC::Asia 2011
Perl 5.16 and Beyond - YAPC::Asia 2011Jesse Vincent
 
Introduction about Python by JanBask Training
Introduction about Python by JanBask TrainingIntroduction about Python by JanBask Training
Introduction about Python by JanBask TrainingJanBask Training
 
From Python to Kotlin - TalkingKT 2019
From Python to Kotlin - TalkingKT 2019From Python to Kotlin - TalkingKT 2019
From Python to Kotlin - TalkingKT 2019Horgix
 
An Introduction to ANTLR
An Introduction to ANTLRAn Introduction to ANTLR
An Introduction to ANTLRMorteza Zakeri
 
Python Internals Optimization Choices Made - Codementors Office Hours with St...
Python Internals Optimization Choices Made - Codementors Office Hours with St...Python Internals Optimization Choices Made - Codementors Office Hours with St...
Python Internals Optimization Choices Made - Codementors Office Hours with St...Arc & Codementor
 
Implementation of TypeGraphQL with Apollo Server
Implementation of TypeGraphQL with Apollo ServerImplementation of TypeGraphQL with Apollo Server
Implementation of TypeGraphQL with Apollo ServerFabien Pasquet
 
Why Python?
Why Python?Why Python?
Why Python?Adam Pah
 
Modern Programming Languages - An overview
Modern Programming Languages - An overviewModern Programming Languages - An overview
Modern Programming Languages - An overviewAyman Mahfouz
 
Ruby monsters
Ruby monstersRuby monsters
Ruby monsters1337807
 
Generators, Coroutines and Other Brain Unrolling Sweetness. Adi Shavit ➠ Cor...
Generators, Coroutines and Other Brain Unrolling Sweetness. Adi Shavit ➠  Cor...Generators, Coroutines and Other Brain Unrolling Sweetness. Adi Shavit ➠  Cor...
Generators, Coroutines and Other Brain Unrolling Sweetness. Adi Shavit ➠ Cor...corehard_by
 
An Introduction to Python Programming
An Introduction to Python ProgrammingAn Introduction to Python Programming
An Introduction to Python ProgrammingMorteza Zakeri
 
Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"Nuno Carvalho
 
Antlr part2 getting_started_in_java
Antlr part2 getting_started_in_javaAntlr part2 getting_started_in_java
Antlr part2 getting_started_in_javaMorteza Zakeri
 
Native hook mechanism in Android Bionic linker
Native hook mechanism in Android Bionic linkerNative hook mechanism in Android Bionic linker
Native hook mechanism in Android Bionic linkerKevin Mai-Hsuan Chia
 

Was ist angesagt? (20)

A Static Type Analyzer of Untyped Ruby Code for Ruby 3
A Static Type Analyzer of Untyped Ruby Code for Ruby 3A Static Type Analyzer of Untyped Ruby Code for Ruby 3
A Static Type Analyzer of Untyped Ruby Code for Ruby 3
 
떠먹는 '오브젝트' Ch05 책임 할당하기
떠먹는 '오브젝트' Ch05 책임 할당하기떠먹는 '오브젝트' Ch05 책임 할당하기
떠먹는 '오브젝트' Ch05 책임 할당하기
 
Perl 5.16 and Beyond - YAPC::Asia 2011
Perl 5.16 and Beyond - YAPC::Asia 2011Perl 5.16 and Beyond - YAPC::Asia 2011
Perl 5.16 and Beyond - YAPC::Asia 2011
 
Introduction about Python by JanBask Training
Introduction about Python by JanBask TrainingIntroduction about Python by JanBask Training
Introduction about Python by JanBask Training
 
F# for Scala developers
F# for Scala developersF# for Scala developers
F# for Scala developers
 
Python for All
Python for All Python for All
Python for All
 
From Python to Kotlin - TalkingKT 2019
From Python to Kotlin - TalkingKT 2019From Python to Kotlin - TalkingKT 2019
From Python to Kotlin - TalkingKT 2019
 
An Introduction to ANTLR
An Introduction to ANTLRAn Introduction to ANTLR
An Introduction to ANTLR
 
Python Internals Optimization Choices Made - Codementors Office Hours with St...
Python Internals Optimization Choices Made - Codementors Office Hours with St...Python Internals Optimization Choices Made - Codementors Office Hours with St...
Python Internals Optimization Choices Made - Codementors Office Hours with St...
 
Implementation of TypeGraphQL with Apollo Server
Implementation of TypeGraphQL with Apollo ServerImplementation of TypeGraphQL with Apollo Server
Implementation of TypeGraphQL with Apollo Server
 
Why Python?
Why Python?Why Python?
Why Python?
 
Python for Swift
Python for SwiftPython for Swift
Python for Swift
 
Modern Programming Languages - An overview
Modern Programming Languages - An overviewModern Programming Languages - An overview
Modern Programming Languages - An overview
 
Ruby monsters
Ruby monstersRuby monsters
Ruby monsters
 
Generators, Coroutines and Other Brain Unrolling Sweetness. Adi Shavit ➠ Cor...
Generators, Coroutines and Other Brain Unrolling Sweetness. Adi Shavit ➠  Cor...Generators, Coroutines and Other Brain Unrolling Sweetness. Adi Shavit ➠  Cor...
Generators, Coroutines and Other Brain Unrolling Sweetness. Adi Shavit ➠ Cor...
 
Python Tutorial for Beginner
Python Tutorial for BeginnerPython Tutorial for Beginner
Python Tutorial for Beginner
 
An Introduction to Python Programming
An Introduction to Python ProgrammingAn Introduction to Python Programming
An Introduction to Python Programming
 
Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"
 
Antlr part2 getting_started_in_java
Antlr part2 getting_started_in_javaAntlr part2 getting_started_in_java
Antlr part2 getting_started_in_java
 
Native hook mechanism in Android Bionic linker
Native hook mechanism in Android Bionic linkerNative hook mechanism in Android Bionic linker
Native hook mechanism in Android Bionic linker
 

Ähnlich wie Perl::Lint - Yet Another Perl Source Code Linter

これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)goccy
 
Perl5 meta programming
Perl5 meta programmingPerl5 meta programming
Perl5 meta programmingkarupanerura
 
Scratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry PieScratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry PieESUG
 
Open Source Monitoring in 2019
Open Source Monitoring in 2019 Open Source Monitoring in 2019
Open Source Monitoring in 2019 Kris Buytaert
 
Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)p3castro
 
Py4 inf 01-intro
Py4 inf 01-introPy4 inf 01-intro
Py4 inf 01-introIshaq Ali
 
Steelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with PythonSteelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with Pythoninfodox
 
Listen and look at your PHP code
Listen and look at your PHP codeListen and look at your PHP code
Listen and look at your PHP codeGabriele Santini
 
The why and how of moving to php 8
The why and how of moving to php 8The why and how of moving to php 8
The why and how of moving to php 8Wim Godden
 
Metaprogramming Go
Metaprogramming GoMetaprogramming Go
Metaprogramming GoWeng Wei
 
Getting started with Linux and Python by Caffe
Getting started with Linux and Python by CaffeGetting started with Linux and Python by Caffe
Getting started with Linux and Python by CaffeLihang Li
 
What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)wesley chun
 
Python typing module
Python typing modulePython typing module
Python typing moduleRyan Blunden
 
What's new In Perl?
What's new In Perl?What's new In Perl?
What's new In Perl?acme
 
Pythonlearn-01-Intro.pptx
Pythonlearn-01-Intro.pptxPythonlearn-01-Intro.pptx
Pythonlearn-01-Intro.pptxMrHackerxD
 

Ähnlich wie Perl::Lint - Yet Another Perl Source Code Linter (20)

これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
 
Practical NLP with Lisp
Practical NLP with LispPractical NLP with Lisp
Practical NLP with Lisp
 
Perl5 meta programming
Perl5 meta programmingPerl5 meta programming
Perl5 meta programming
 
Scratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry PieScratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry Pie
 
Open Source Monitoring in 2019
Open Source Monitoring in 2019 Open Source Monitoring in 2019
Open Source Monitoring in 2019
 
Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)
 
Py4 inf 01-intro
Py4 inf 01-introPy4 inf 01-intro
Py4 inf 01-intro
 
Steelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with PythonSteelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with Python
 
Listen and look at your PHP code
Listen and look at your PHP codeListen and look at your PHP code
Listen and look at your PHP code
 
Pinto+Stratopan+Love
Pinto+Stratopan+LovePinto+Stratopan+Love
Pinto+Stratopan+Love
 
Python made easy
Python made easy Python made easy
Python made easy
 
The why and how of moving to php 8
The why and how of moving to php 8The why and how of moving to php 8
The why and how of moving to php 8
 
Metaprogramming Go
Metaprogramming GoMetaprogramming Go
Metaprogramming Go
 
Getting started with Linux and Python by Caffe
Getting started with Linux and Python by CaffeGetting started with Linux and Python by Caffe
Getting started with Linux and Python by Caffe
 
What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)
 
Numba
NumbaNumba
Numba
 
Python overview
Python overviewPython overview
Python overview
 
Python typing module
Python typing modulePython typing module
Python typing module
 
What's new In Perl?
What's new In Perl?What's new In Perl?
What's new In Perl?
 
Pythonlearn-01-Intro.pptx
Pythonlearn-01-Intro.pptxPythonlearn-01-Intro.pptx
Pythonlearn-01-Intro.pptx
 

Mehr von moznion

Yet Another Perl Cooking
Yet Another Perl CookingYet Another Perl Cooking
Yet Another Perl Cookingmoznion
 
Jesque robust-worker-pool
Jesque robust-worker-poolJesque robust-worker-pool
Jesque robust-worker-poolmoznion
 
Hachioji persec
Hachioji persecHachioji persec
Hachioji persecmoznion
 
Inner world of Perl::Lint
Inner world of Perl::LintInner world of Perl::Lint
Inner world of Perl::Lintmoznion
 
命名の話
命名の話命名の話
命名の話moznion
 
Hachiojipm 44
Hachiojipm 44Hachiojipm 44
Hachiojipm 44moznion
 
Perl::Lint is over, for the present
Perl::Lint is over, for the presentPerl::Lint is over, for the present
Perl::Lint is over, for the presentmoznion
 
Hachioji pm 41
Hachioji pm 41Hachioji pm 41
Hachioji pm 41moznion
 
Hachioji.pm 40
Hachioji.pm 40Hachioji.pm 40
Hachioji.pm 40moznion
 
Hachioji.pm #39
Hachioji.pm #39Hachioji.pm #39
Hachioji.pm #39moznion
 
Talking About Japanese Area Code of Phone
Talking About Japanese Area Code of PhoneTalking About Japanese Area Code of Phone
Talking About Japanese Area Code of Phonemoznion
 
Hachioji.pm 38
Hachioji.pm 38Hachioji.pm 38
Hachioji.pm 38moznion
 
Hokkaido.pm #11
Hokkaido.pm #11Hokkaido.pm #11
Hokkaido.pm #11moznion
 
Hachiojipm 36
Hachiojipm 36Hachiojipm 36
Hachiojipm 36moznion
 
Plack::Request with Encoding
Plack::Request with EncodingPlack::Request with Encoding
Plack::Request with Encodingmoznion
 
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使うYAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使うmoznion
 
Net stalking with-lastfm
Net stalking with-lastfmNet stalking with-lastfm
Net stalking with-lastfmmoznion
 
Takao.mt 2013
Takao.mt 2013Takao.mt 2013
Takao.mt 2013moznion
 
Perl beginners #08
Perl beginners #08Perl beginners #08
Perl beginners #08moznion
 
Hachiojipm 28
Hachiojipm 28Hachiojipm 28
Hachiojipm 28moznion
 

Mehr von moznion (20)

Yet Another Perl Cooking
Yet Another Perl CookingYet Another Perl Cooking
Yet Another Perl Cooking
 
Jesque robust-worker-pool
Jesque robust-worker-poolJesque robust-worker-pool
Jesque robust-worker-pool
 
Hachioji persec
Hachioji persecHachioji persec
Hachioji persec
 
Inner world of Perl::Lint
Inner world of Perl::LintInner world of Perl::Lint
Inner world of Perl::Lint
 
命名の話
命名の話命名の話
命名の話
 
Hachiojipm 44
Hachiojipm 44Hachiojipm 44
Hachiojipm 44
 
Perl::Lint is over, for the present
Perl::Lint is over, for the presentPerl::Lint is over, for the present
Perl::Lint is over, for the present
 
Hachioji pm 41
Hachioji pm 41Hachioji pm 41
Hachioji pm 41
 
Hachioji.pm 40
Hachioji.pm 40Hachioji.pm 40
Hachioji.pm 40
 
Hachioji.pm #39
Hachioji.pm #39Hachioji.pm #39
Hachioji.pm #39
 
Talking About Japanese Area Code of Phone
Talking About Japanese Area Code of PhoneTalking About Japanese Area Code of Phone
Talking About Japanese Area Code of Phone
 
Hachioji.pm 38
Hachioji.pm 38Hachioji.pm 38
Hachioji.pm 38
 
Hokkaido.pm #11
Hokkaido.pm #11Hokkaido.pm #11
Hokkaido.pm #11
 
Hachiojipm 36
Hachiojipm 36Hachiojipm 36
Hachiojipm 36
 
Plack::Request with Encoding
Plack::Request with EncodingPlack::Request with Encoding
Plack::Request with Encoding
 
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使うYAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
 
Net stalking with-lastfm
Net stalking with-lastfmNet stalking with-lastfm
Net stalking with-lastfm
 
Takao.mt 2013
Takao.mt 2013Takao.mt 2013
Takao.mt 2013
 
Perl beginners #08
Perl beginners #08Perl beginners #08
Perl beginners #08
 
Hachiojipm 28
Hachiojipm 28Hachiojipm 28
Hachiojipm 28
 

Kürzlich hochgeladen

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 

Kürzlich hochgeladen (20)

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

Perl::Lint - Yet Another Perl Source Code Linter