SlideShare a Scribd company logo
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?

More Related Content

What's hot

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
mametter
 
떠먹는 '오브젝트' 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 Training
JanBask Training
 
F# for Scala developers
F# for Scala developersF# for Scala developers
F# for Scala developers
Alfonso Garcia-Caro
 
Python for All
Python for All Python for All
Python for All
Pragya Goyal
 
From Python to Kotlin - TalkingKT 2019
From Python to Kotlin - TalkingKT 2019From Python to Kotlin - TalkingKT 2019
From Python to Kotlin - TalkingKT 2019
Horgix
 
An Introduction to ANTLR
An Introduction to ANTLRAn Introduction to ANTLR
An Introduction to ANTLR
Morteza 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 Server
Fabien Pasquet
 
Why Python?
Why Python?Why Python?
Why Python?
Adam Pah
 
Python for Swift
Python for SwiftPython for Swift
Python for Swift
LINE Corporation
 
Modern Programming Languages - An overview
Modern Programming Languages - An overviewModern Programming Languages - An overview
Modern Programming Languages - An overview
Ayman Mahfouz
 
Ruby monsters
Ruby monstersRuby monsters
Ruby monsters
1337807
 
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
 
Python Tutorial for Beginner
Python Tutorial for BeginnerPython Tutorial for Beginner
Python Tutorial for Beginner
rajkamaltibacademy
 
An Introduction to Python Programming
An Introduction to Python ProgrammingAn Introduction to Python Programming
An Introduction to Python Programming
Morteza 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_java
Morteza 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 linker
Kevin Mai-Hsuan Chia
 

What's hot (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
 

Similar to 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
 
Practical NLP with Lisp
Practical NLP with LispPractical NLP with Lisp
Practical NLP with Lisp
Vsevolod Dyomkin
 
Perl5 meta programming
Perl5 meta programmingPerl5 meta programming
Perl5 meta programming
karupanerura
 
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
ESUG
 
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-intro
Ishaq Ali
 
Steelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with PythonSteelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with Python
infodox
 
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
 
Pinto+Stratopan+Love
Pinto+Stratopan+LovePinto+Stratopan+Love
Pinto+Stratopan+Love
Jeffrey Ryan Thalhammer
 
Python made easy
Python made easy Python made easy
Python made easy
Abhishek kumar
 
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
Wim Godden
 
Metaprogramming Go
Metaprogramming GoMetaprogramming Go
Metaprogramming Go
Weng 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 Caffe
Lihang 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
 
Numba
NumbaNumba
Python overview
Python overviewPython overview
Python overview
Haroon Karim
 
Python typing module
Python typing modulePython typing module
Python typing module
Ryan 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.pptx
MrHackerxD
 

Similar to 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
 

More from moznion

Yet Another Perl Cooking
Yet Another Perl CookingYet Another Perl Cooking
Yet Another Perl Cooking
moznion
 
Jesque robust-worker-pool
Jesque robust-worker-poolJesque robust-worker-pool
Jesque robust-worker-pool
moznion
 
Hachioji persec
Hachioji persecHachioji persec
Hachioji persec
moznion
 
Inner world of Perl::Lint
Inner world of Perl::LintInner world of Perl::Lint
Inner world of Perl::Lint
moznion
 
命名の話
命名の話命名の話
命名の話
moznion
 
Hachiojipm 44
Hachiojipm 44Hachiojipm 44
Hachiojipm 44
moznion
 
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
moznion
 
Hachioji pm 41
Hachioji pm 41Hachioji pm 41
Hachioji pm 41
moznion
 
Hachioji.pm 40
Hachioji.pm 40Hachioji.pm 40
Hachioji.pm 40
moznion
 
Hachioji.pm #39
Hachioji.pm #39Hachioji.pm #39
Hachioji.pm #39
moznion
 
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
moznion
 
Hachioji.pm 38
Hachioji.pm 38Hachioji.pm 38
Hachioji.pm 38moznion
 
Hokkaido.pm #11
Hokkaido.pm #11Hokkaido.pm #11
Hokkaido.pm #11
moznion
 
Hachiojipm 36
Hachiojipm 36Hachiojipm 36
Hachiojipm 36moznion
 
Plack::Request with Encoding
Plack::Request with EncodingPlack::Request with Encoding
Plack::Request with Encoding
moznion
 
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 2013
moznion
 
Perl beginners #08
Perl beginners #08Perl beginners #08
Perl beginners #08
moznion
 
Hachiojipm 28
Hachiojipm 28Hachiojipm 28
Hachiojipm 28moznion
 

More from 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
 

Recently uploaded

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 

Recently uploaded (20)

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 

Perl::Lint - Yet Another Perl Source Code Linter