SlideShare ist ein Scribd-Unternehmen logo
1 von 138
Downloaden Sie, um offline zu lesen
@listochkin
CTO at Viravix
xkcd
2005
A language for text
manipulations
Regular Expressions
Used them to describe math of
events in neural networks
SDS 940
1966 - QED
1968 - Mother of All Demos
1969 - 1st ARPANET IMP node
1966 - Ken Thompson QED
1986 - Henry Spencer regex
1997 - Philip Hazel PCRE
/(.*)?//.+[^z]{1,}1(bw+)s?/
Quiz Time!
s = s[4] === 's' ? s.substr(8) : s.substr(7);
const iQ = s.indexOf('?');
const iH = s.indexOf('#');
const iS = s.indexOf('/');
if (Math.min(iQ, iH, iS) > 0) {
return s.substr(0, Math.min(iQ, iH, iS));
} else {
return s;
}
/http[s]?://(?<domain>[^?#/]+)/
.exec(s).groups.domain
Math
+ - * /
Trigonometry
Complex numbers
Integration
Derivatives
Text
substr(3, 5)
indexOf(‘a’)
Regular Expressions is like
a higher-level math for text
How do regexes work?
SQL
CSS selectors
File glob patterns
DSL
Special VM
Statically / JIT compiled
Often fast even for “slow”
languages
2008
JavaScriptCore
Regex JIT
$("form.add-product button[type=submit]")
.on("click", function (e) {
...
})
/abc/
function* enumerate(iterable) {
let i = 0;
for (const x of iterable) {
yield [i, x];
i++;
}
}
function matchAbc(string) {
for (const [startPos] of enumerate(string)) {
let matchPos = startPos;
if (str[matchPos] !== 'a') continue;
matchPos += 1;
if (str[matchPos] !== 'b') continue;
matchPos += 1;
if (str[matchPos] !== 'c') continue;
return true;
}
return false;
}
ababc
ababc
ababc
ababc
function matchAbc(string) {
for (const [startPos] of enumerate(string)) {
let matchPos = startPos;
if (str[matchPos] !== 'a') continue;
matchPos += 1;
if (str[matchPos] !== 'b') continue;
matchPos += 1;
if (str[matchPos] !== 'c') continue;
return true;
}
return false;
}
ababc
ababc
Not smart but predictable
Very good for hardware
Language
Every character is
an instruction
Most instructions mean
“Match this exact character,
move forward
by one character
if matched”
/abc|abx/
Longer to compile
Faster to execute
/anteater|antelope|ant/
An ant encountered an anteater
/anteater|antelope|ant/
An ant encountered an anteater
Put most likely alternative
to the left
/x*z/
/”.*”/
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
/x*z/
/x*?z/
/”.*”/
/”.*?”/
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
I watched “Home Alone” and
“Back to the Future” last week
How to regex
DSL
Treat regexes as code
Step 1. Formatting
function (a){function*b(a){let b=0;for(const
c of a)yield[b,c],b++}for(const[c] of b(a))
{let a=c;if("a"===str[a]&&(a+=1,"b"===str[a]
&&(a+=1,"c"===str[a])))return!0}return!1}
Use extended formatting!
/(d{4})-(d{2})-(d{2})/
/(?x)
# ISO date format
d {4}
-
d {2}
-
d {2}
/
function r(re, flags = 'u') {
return new RegExp(
re
.replace(/^(?<regex>.*)(?<!)#.*$/gm, '$<regex>')
.replace(/#/gm, '#')
.replace(/s/gm, ''),
flags
);
}
r(String.raw`
# ISO date format
d {4}
-
d {2}
-
d {2}
`)
Step 2. Naming
/http[s]?://(?<domain>[^?#/]+)/
.exec(s).groups.domain
/http[s]?://([^?#/]+)/
.exec(s)[1]
function r(re, flags = 'u') {
return new RegExp(
re
.replace(/^(?<regex>.*)(?<!)#.*$/gm, '$<regex>')
.replace(/#/gm, '#')
.replace(/s/gm, ''),
flags
);
}
function r(re, flags = 'u') {
return new RegExp(
re
.replace(/^(.*)(?<!)#.*$/gm, '$1')
.replace(/#/gm, '#')
.replace(/s/gm, ''),
flags
);
}
r(String.raw`
# ISO date format
(?<year> d {4})
-
(?<month> d {2})
-
(?<day> d {2})
`)
/http[s]?://(?<domain>[^?#/]+)/
.exec(s).groups.domain
r(String.raw`
http[s]? ://
(?<domain> [^?#/]+ )
# rest of the url
`).exec(s).groups.domain
Step 3. Structure
Perl & PCRE define
/(?x)
(?&sign)? (?&mantissa) (?&exponent)?
(?(DEFINE)
(?<sign> [+-] )
(?<mantissa> d++.?+d*+ | . d++ )
(?<exponent> [eE] (?&sign)?+ d++ )
)
/
Yes, even recursion
/(?x)
(?(DEFINE)
(?<object> { (?&nvp) [, (?&nvp)]* })
(?<nvp> (?&name) : (?&value) )
(?<value>
(?&number) |
(?&boolean) |
(?&string) |
(?&object) |
(?&array)
)
...
)
(?&value)
/
JSON parsing Regex
use PPR;
my $perl_block = qr{
(?&PerlBlock)
$PPR::GRAMMAR
}x;
1860 lines
Отвал башки
Raku grammars
/
:my regex sign { <[+-]> }
:my regex mantissa {
d+: '.'?: d*: | '.' d+:
}
:my regex exponent { <[eE]> <sign>?: d+: }
<sign>? <mantissa> <exponent>?
/
function r(re, flags = 'u') {
return new RegExp(
re
.replace(/^(?<regex>.*)(?<!)#.*$/gm, '$<regex>')
.replace(/#/gm, '#')
.replace(/s/gm, ''),
flags
);
}
[2020-09-11T15:57:20.848Z - 099fe80d-7e11-4c47-9bbf-2372bd6b2527: 108ms]
200 OK GET /configuration-tree/8 <- http://web.app.ui/ 178.133.180.67
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:82.0)
Gecko/20100101 Firefox/82.0'
{"id":1,"email":"andrei.listochkin@viravix.com",...}
[Time in UTC - Request ID: Response Time]
[2020-09-11T15:57:20.848Z - 099fe80d-7e11-4c47-9bbf-2372bd6b2527: 108ms]
Status Code and Message Request Method and Path <- Refer URL User IP
200 OK GET /configuration-tree/8 <- http://web.app.ui/ 178.133.180.67
User Agent
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:82.0)
Gecko/20100101 Firefox/82.0'
Session Token
{"id":1,"email":"andrei.listochkin@viravix.com",...}
^
[
(?<requestDate>2020-0[789]S+)
s - s
(S+) # request ID
: s
(?<requestDuration>d+)ms
]
s .+ s
(?<session>S+) (?<!null) # non-anonymous sessions only
$
const match = lineRe.exec(logLine);
if (match) {
const { requestDate, requestDuration, session } = match;
const requestData = {
date: new Date(requestDate),
duration: parseInt(requestDuration, 10),
email: JSON.parse(session).email
}
}
Regexes are awesome.
Üñiçødé aware
Advanced “math” on text
Declarative
Maintainable
Your best friend
when it comes
to text processing
Andrey Listochkin "Everybody stand back! I know regular expressions"
Andrey Listochkin "Everybody stand back! I know regular expressions"

Weitere ähnliche Inhalte

Was ist angesagt?

DevChatt 2010 - *nix Cmd Line Kung Foo
DevChatt 2010 - *nix Cmd Line Kung FooDevChatt 2010 - *nix Cmd Line Kung Foo
DevChatt 2010 - *nix Cmd Line Kung Foo
brian_dailey
 
Seattle.rb 6.4
Seattle.rb 6.4Seattle.rb 6.4
Seattle.rb 6.4
deanhudson
 

Was ist angesagt? (20)

Cool Git Tricks (That I Learn When Things Go Badly) [1/2]
Cool Git Tricks (That I Learn When Things Go Badly) [1/2]Cool Git Tricks (That I Learn When Things Go Badly) [1/2]
Cool Git Tricks (That I Learn When Things Go Badly) [1/2]
 
JIP Pipeline System Introduction
JIP Pipeline System IntroductionJIP Pipeline System Introduction
JIP Pipeline System Introduction
 
DevChatt 2010 - *nix Cmd Line Kung Foo
DevChatt 2010 - *nix Cmd Line Kung FooDevChatt 2010 - *nix Cmd Line Kung Foo
DevChatt 2010 - *nix Cmd Line Kung Foo
 
Bash in theory and in practice - part one
Bash in theory and in practice - part oneBash in theory and in practice - part one
Bash in theory and in practice - part one
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
 
NUMOSS 4th Week - Commandline Tutorial
NUMOSS 4th Week - Commandline TutorialNUMOSS 4th Week - Commandline Tutorial
NUMOSS 4th Week - Commandline Tutorial
 
Capistrano Rails
Capistrano RailsCapistrano Rails
Capistrano Rails
 
Linux Command Line
Linux Command LineLinux Command Line
Linux Command Line
 
Naughty And Nice Bash Features
Naughty And Nice Bash FeaturesNaughty And Nice Bash Features
Naughty And Nice Bash Features
 
ZSH and RVM
ZSH and RVMZSH and RVM
ZSH and RVM
 
Introduction to Resque
Introduction to ResqueIntroduction to Resque
Introduction to Resque
 
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonbСтажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
 
clonehd01
clonehd01clonehd01
clonehd01
 
Groovy on the Shell
Groovy on the ShellGroovy on the Shell
Groovy on the Shell
 
When RegEx is not enough
When RegEx is not enoughWhen RegEx is not enough
When RegEx is not enough
 
Neoito — *NIX kungfu for web devs
Neoito — *NIX kungfu for web devsNeoito — *NIX kungfu for web devs
Neoito — *NIX kungfu for web devs
 
Linux Basics
Linux BasicsLinux Basics
Linux Basics
 
Seattle.rb 6.4
Seattle.rb 6.4Seattle.rb 6.4
Seattle.rb 6.4
 
Perl from the ground up: variables and data types
Perl from the ground up: variables and data typesPerl from the ground up: variables and data types
Perl from the ground up: variables and data types
 
5 Time Saving Bash Tricks
5 Time Saving Bash Tricks5 Time Saving Bash Tricks
5 Time Saving Bash Tricks
 

Ähnlich wie Andrey Listochkin "Everybody stand back! I know regular expressions"

R57php 1231677414471772-2
R57php 1231677414471772-2R57php 1231677414471772-2
R57php 1231677414471772-2
ady36
 
Os Fetterupdated
Os FetterupdatedOs Fetterupdated
Os Fetterupdated
oscon2007
 

Ähnlich wie Andrey Listochkin "Everybody stand back! I know regular expressions" (20)

An Intro To ES6
An Intro To ES6An Intro To ES6
An Intro To ES6
 
Adding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer ToolboxAdding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer Toolbox
 
Unix 5 en
Unix 5 enUnix 5 en
Unix 5 en
 
Cleanliness is Next to Domain-Specificity
Cleanliness is Next to Domain-SpecificityCleanliness is Next to Domain-Specificity
Cleanliness is Next to Domain-Specificity
 
Cleanliness is Next to Domain-Specificity
Cleanliness is Next to Domain-SpecificityCleanliness is Next to Domain-Specificity
Cleanliness is Next to Domain-Specificity
 
Nop2
Nop2Nop2
Nop2
 
R57php 1231677414471772-2
R57php 1231677414471772-2R57php 1231677414471772-2
R57php 1231677414471772-2
 
Perl6 Regexen: Reduce the line noise in your code.
Perl6 Regexen: Reduce the line noise in your code.Perl6 Regexen: Reduce the line noise in your code.
Perl6 Regexen: Reduce the line noise in your code.
 
Out with Regex, In with Tokens
Out with Regex, In with TokensOut with Regex, In with Tokens
Out with Regex, In with Tokens
 
Perl6 a whistle stop tour
Perl6 a whistle stop tourPerl6 a whistle stop tour
Perl6 a whistle stop tour
 
Perl6 a whistle stop tour
Perl6 a whistle stop tourPerl6 a whistle stop tour
Perl6 a whistle stop tour
 
Txjs
TxjsTxjs
Txjs
 
☣ ppencode ♨
☣ ppencode ♨☣ ppencode ♨
☣ ppencode ♨
 
ES6 is Nigh
ES6 is NighES6 is Nigh
ES6 is Nigh
 
Regexp secrets
Regexp secretsRegexp secrets
Regexp secrets
 
Os Fetterupdated
Os FetterupdatedOs Fetterupdated
Os Fetterupdated
 
Java
JavaJava
Java
 
java-introduction.pdf
java-introduction.pdfjava-introduction.pdf
java-introduction.pdf
 
ES6 - Level up your JavaScript Skills
ES6 - Level up your JavaScript SkillsES6 - Level up your JavaScript Skills
ES6 - Level up your JavaScript Skills
 
Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6
 

Mehr von Fwdays

Mehr von Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Kürzlich hochgeladen

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
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
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
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 

Andrey Listochkin "Everybody stand back! I know regular expressions"