SlideShare uma empresa Scribd logo
1 de 65
Baixar para ler offline
AST
Opportunities and Threats
ITGM, Dec 2016
RDD
TDD
Slap this sh*t & release
ITGM, Dec 2016
Code Test
Test
Test
ITGM, Dec 2016
Code Test
Test
Test
def f(a,b):
return a+b
5 == f(2,3)
0 == f(2,-2)
1 == f(1,0)
ITGM, Dec 2016
Code Test
Test
Test
def f(a,b):
return a+b
5 == f(2,3)
0 == f(2,-2)
1 == f(1,0)
Test 1e15 == f(1,1e15-1)
ITGM, Dec 2016
DIS
ITGM, Dec 2016
>>> def foo():
... a = 2
... b = 3
... return a + b
...
ITGM, Dec 2016
>>> import dis
>>> dis.dis(foo)
2 0 LOAD_CONST 1 (2)
3 STORE_FAST 0 (a)
3 6 LOAD_CONST 2 (3)
9 STORE_FAST 1 (b)
4 12 LOAD_FAST 0 (a)
15 LOAD_FAST 1 (b)
18 BINARY_ADD
19 RETURN_VALUE
ITGM, Dec 2016
ITGM, Dec 2016
ITGM, Dec 2016
Zephyr ASDL
Parser/Python.asdl
ITGM, Dec 2016
Python/Python-ast.c
import _ast
ITGM, Dec 2016
Lib/ast.py
import ast
ITGM, Dec 2016
• AST
• Add, And, Assert …
• NodeVisitor
• NodeTransformer
ITGM, Dec 2016
class DepthVisitor(ast.NodeVisitor):
depth = 0
def generic_visit(self, node):
parent = node.parent
if parent:
while parent:
self.depth += 1
parent = parent.parent
ast.NodeVisitor.generic_visit(self, node)
ITGM, Dec 2016
• parse
• copy_location
• fix_missing_locations
• dump
• increment_lineno
ITGM, Dec 2016
Модификация AST
ITGM, Dec 2016
class HackedImporter:
def load_module(self, name):
# do magic stuff
return module
sys.path_hook.insert(0, HackedImporter)
ITGM, Dec 2016
https://github.com/alifanov/ast-spbpython-example
ITGM, Dec 2016
class ReturnIncrement(ast.NodeTransformer):
def visit_Return(self, node):
node.value = (ast.BinOp(
left=node.value,
op=ast.Add(),
right=ast.Num(n=1)
)
return node
ITGM, Dec 2016
def transform_with(transformer):
def transform_decorator(func):
node = func_to_node(func)
node = transformer().visit(node)
node = ast.fix_missing_locations(node)
func = node_to_func(node, func)
return func
return transform_decorator
ITGM, Dec 2016
@transform_with(ReturnIncrementer)
def f(a,b):
return a+b
f(2,2) # 5
ITGM, Dec 2016
Threats
• Debug glitch
• Errors with multiple applies
• Strange errors
• Compiler version dependence
ITGM, Dec 2016
>>> parseprint("func(a, b=c, *d, **e)") # Python 3.4
Module(body=[
Expr(value=Call(func=Name(id='func', ctx=Load()),
args=[Name(id='a', ctx=Load())],
keywords=[keyword(arg='b', value=Name(id='c', ctx=Load()))],
starargs=Name(id='d', ctx=Load()), # gone in 3.5
kwargs=Name(id='e', ctx=Load()))), # gone in 3.5
])
>>> parseprint("func(a, b=c, *d, **e)") # Python 3.5
Module(body=[
Expr(value=Call(func=Name(id='func', ctx=Load()),
args=[
Name(id='a', ctx=Load()),
Starred(value=Name(id='d', ctx=Load()), ctx=Load()) # new in 3.5
],
keywords=[
keyword(arg='b', value=Name(id='c', ctx=Load())),
keyword(arg=None, value=Name(id='e', ctx=Load())) # new in 3.5
]))
])
ITGM, Dec 2016
Opportunities
• Constant propagation
• Autologger
• Autoprofiler
• Macros (karnickel)
• Extend language
• MacroPy
• PonyORM
• Linters (auto codereview)
ITGM, Dec 2016
>>> from macropy.tracing import macros, trace
>>> trace[[x*2 for x in range(3)]]
range(3) -> [0, 1, 2]
x*2 -> 0
x*2 -> 2
x*2 -> 4
x*2 for x in range(3) -> [0, 2, 4]
[0, 2, 4]
Macros
ITGM, Dec 2016
welcome = gettext("Welcome, {}!").format(user_name)
welcome = gettext("Welcome, {}!".format(user_name))
Linters
ITGM, Dec 2016
https://github.com/edx/edx-lint/blob/master/edx_lint/pylint/
i18n_check.py
Linters
ITGM, Dec 2016
TRANSLATION_FUNCTIONS = set([
'_',
'gettext',
'ngettext', 'ngettext_lazy',
'npgettext', 'npgettext_lazy',
'pgettext', 'pgettext_lazy',
'ugettext', 'ugettext_lazy', 'ugettext_noop',
'ungettext', 'ungettext_lazy',
])
def visit_callfunc(self, node):
if not isinstance(node.func, astroid.Name):
# It isn't a simple name, can't deduce what function it is.
return
if node.func.name not in self.TRANSLATION_FUNCTIONS:
# Not a function we care about.
return
if not self.linter.is_message_enabled(self.MESSAGE_ID):
return
first = node.args[0]
if isinstance(first, astroid.Const):
if isinstance(first.value, basestring):
# The first argument is a constant string! All is well!
return
# Bad!
self.add_message(self.MESSAGE_ID, args=node.func.name, node=node)
ITGM, Dec 2016
Tools
• astdump
• astviewer
• ast_tool_box
• astroid
• baron
• redbaron
• astor
• meta
• astmonkey
ITGM, Dec 2016
Recommendation unit
tests system
ITGM, Dec 2016
Pythoscope
ITGM, Dec 2016
Smother
ITGM, Dec 2016
app.views:add,app/tests.py::FunctionTest::test_add
app.views:fact,app/tests.py::FunctionTest::test_fact
app.views:hello,app/tests.py::FunctionTest::test_hello
ITGM, Dec 2016
Code1 Test1
Code1 Test2
Code1 Test3
Code2 Test1
Code2 Test2
ITGM, Dec 2016
def test_default_ordering(self):
class OrderingListView(generics.ListAPIView):
queryset = OrderingFilterModel.objects.all()
serializer_class = OrderingFilterSerializer
filter_backends = (filters.OrderingFilter,)
ordering = ('title',)
ordering_fields = ('text',)
view = OrderingListView.as_view()
request = factory.get('')
response = view(request)
self.assertEqual(
response.data,
[
{'id': 3, 'title': 'xwv', 'text': 'cde'},
{'id': 2, 'title': 'yxw', 'text': 'bcd'},
{'id': 1, 'title': 'zyx', 'text': 'abc'},
]
) # not in context
ITGM, Dec 2016
def fact(a):

if a == 0: return 1

return a * fact(a - 1)

def test_fact(self):

self.assertTrue(fact(0) == 1)

self.assertTrue(fact(1) == 1)

self.assertTrue(fact(2) == 2)

self.assertTrue(fact(3) == 6)

self.assertTrue(fact(4) == 24)

ITGM, Dec 2016
github.com
ITGM, Dec 2016
https://www.cosc.canterbury.ac.nz/research/reports/
HonsReps/2015/hons_1508.pdf
ITGM, Dec 2016
ITGM, Dec 2016
ITGM, Dec 2016
ITGM, Dec 2016
ITGM, Dec 2016
ITGM, Dec 2016
ITGM, Dec 2016
Edges
ITGM, Dec 2016
BinOpLeftNum
ITGM, Dec 2016
Child Edge Parent Freq
Num left BinOp 12
Num value Assign 20
ITGM, Dec 2016
Depth
ITGM, Dec 2016
Builtin function
ITGM, Dec 2016
https://github.com/alifanov/testedio
ITGM, Dec 2016
Roadmap
ITGM, Dec 2016
Improve search
modules names as features
ITGM, Dec 2016
Import github projects
unit-test monitoring
ITGM, Dec 2016
Fuzzy
recommendations
hypothesis
*pylint plugin
ITGM, Dec 2016
Performance
optimization
map -> list comprehension
*pylint plugin
ITGM, Dec 2016
Other languages
JavaScript
ITGM, Dec 2016
Real TDD
tests -> code generation
ITGM, Dec 2016
Links
https://github.com/mkwiatkowski/pythoscope
http://smother.readthedocs.io/en/latest/index.html
http://testmon.org/
https://www.cosc.canterbury.ac.nz/research/reports/
HonsReps/2015/hons_1508.pdf
http://is.ifmo.ru/diploma-theses/2013/bachelor/rost/rost.pdf
https://habrahabr.ru/post/65944/
http://pyke.sourceforge.net/
ITGM, Dec 2016
Contacts
Telegram: @jetbootsmaker
Alexander Lifanov
ITGM, Dec 2016

Mais conteúdo relacionado

Mais procurados

The Ring programming language version 1.5 book - Part 5 of 31
The Ring programming language version 1.5 book - Part 5 of 31The Ring programming language version 1.5 book - Part 5 of 31
The Ring programming language version 1.5 book - Part 5 of 31Mahmoud Samir Fayed
 
How To Crack RSA Netrek Binary Verification System
How To Crack RSA Netrek Binary Verification SystemHow To Crack RSA Netrek Binary Verification System
How To Crack RSA Netrek Binary Verification SystemJay Corrales
 
Verification of Concurrent and Distributed Systems
Verification of Concurrent and Distributed SystemsVerification of Concurrent and Distributed Systems
Verification of Concurrent and Distributed SystemsMykola Novik
 
PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개PgDay.Seoul
 
Let’s talk about microbenchmarking
Let’s talk about microbenchmarkingLet’s talk about microbenchmarking
Let’s talk about microbenchmarkingAndrey Akinshin
 
PrefixSpan With Spark at Akanoo
PrefixSpan With Spark at AkanooPrefixSpan With Spark at Akanoo
PrefixSpan With Spark at AkanooAkanoo
 
QA Auotmation Java programs,theory
QA Auotmation Java programs,theory QA Auotmation Java programs,theory
QA Auotmation Java programs,theory archana singh
 
Coscup2021-rust-toturial
Coscup2021-rust-toturialCoscup2021-rust-toturial
Coscup2021-rust-toturialWayne Tsai
 
The Ring programming language version 1.2 book - Part 79 of 84
The Ring programming language version 1.2 book - Part 79 of 84The Ring programming language version 1.2 book - Part 79 of 84
The Ring programming language version 1.2 book - Part 79 of 84Mahmoud Samir Fayed
 
Use C++ to Manipulate mozSettings in Gecko
Use C++ to Manipulate mozSettings in GeckoUse C++ to Manipulate mozSettings in Gecko
Use C++ to Manipulate mozSettings in GeckoChih-Hsuan Kuo
 
John Melesky - Federating Queries Using Postgres FDW @ Postgres Open
John Melesky - Federating Queries Using Postgres FDW @ Postgres OpenJohn Melesky - Federating Queries Using Postgres FDW @ Postgres Open
John Melesky - Federating Queries Using Postgres FDW @ Postgres OpenPostgresOpen
 
"PostgreSQL and Python" Lightning Talk @EuroPython2014
"PostgreSQL and Python" Lightning Talk @EuroPython2014"PostgreSQL and Python" Lightning Talk @EuroPython2014
"PostgreSQL and Python" Lightning Talk @EuroPython2014Henning Jacobs
 
PyconKR 2018 Deep dive into Coroutine
PyconKR 2018 Deep dive into CoroutinePyconKR 2018 Deep dive into Coroutine
PyconKR 2018 Deep dive into CoroutineDaehee Kim
 

Mais procurados (19)

The Ring programming language version 1.5 book - Part 5 of 31
The Ring programming language version 1.5 book - Part 5 of 31The Ring programming language version 1.5 book - Part 5 of 31
The Ring programming language version 1.5 book - Part 5 of 31
 
How To Crack RSA Netrek Binary Verification System
How To Crack RSA Netrek Binary Verification SystemHow To Crack RSA Netrek Binary Verification System
How To Crack RSA Netrek Binary Verification System
 
Verification of Concurrent and Distributed Systems
Verification of Concurrent and Distributed SystemsVerification of Concurrent and Distributed Systems
Verification of Concurrent and Distributed Systems
 
PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개
 
Let’s talk about microbenchmarking
Let’s talk about microbenchmarkingLet’s talk about microbenchmarking
Let’s talk about microbenchmarking
 
PrefixSpan With Spark at Akanoo
PrefixSpan With Spark at AkanooPrefixSpan With Spark at Akanoo
PrefixSpan With Spark at Akanoo
 
QA Auotmation Java programs,theory
QA Auotmation Java programs,theory QA Auotmation Java programs,theory
QA Auotmation Java programs,theory
 
R intro 20140716-advance
R intro 20140716-advanceR intro 20140716-advance
R intro 20140716-advance
 
EcmaScript 6
EcmaScript 6 EcmaScript 6
EcmaScript 6
 
Hidden loops
Hidden loopsHidden loops
Hidden loops
 
Coscup2021-rust-toturial
Coscup2021-rust-toturialCoscup2021-rust-toturial
Coscup2021-rust-toturial
 
The Ring programming language version 1.2 book - Part 79 of 84
The Ring programming language version 1.2 book - Part 79 of 84The Ring programming language version 1.2 book - Part 79 of 84
The Ring programming language version 1.2 book - Part 79 of 84
 
Use C++ to Manipulate mozSettings in Gecko
Use C++ to Manipulate mozSettings in GeckoUse C++ to Manipulate mozSettings in Gecko
Use C++ to Manipulate mozSettings in Gecko
 
John Melesky - Federating Queries Using Postgres FDW @ Postgres Open
John Melesky - Federating Queries Using Postgres FDW @ Postgres OpenJohn Melesky - Federating Queries Using Postgres FDW @ Postgres Open
John Melesky - Federating Queries Using Postgres FDW @ Postgres Open
 
"PostgreSQL and Python" Lightning Talk @EuroPython2014
"PostgreSQL and Python" Lightning Talk @EuroPython2014"PostgreSQL and Python" Lightning Talk @EuroPython2014
"PostgreSQL and Python" Lightning Talk @EuroPython2014
 
Java Program
Java ProgramJava Program
Java Program
 
ES6 in Real Life
ES6 in Real LifeES6 in Real Life
ES6 in Real Life
 
PyconKR 2018 Deep dive into Coroutine
PyconKR 2018 Deep dive into CoroutinePyconKR 2018 Deep dive into Coroutine
PyconKR 2018 Deep dive into Coroutine
 
MySQL vs. PostgreSQL
MySQL vs. PostgreSQLMySQL vs. PostgreSQL
MySQL vs. PostgreSQL
 

Destaque

Магия метаклассов
Магия метаклассовМагия метаклассов
Магия метаклассовAndrey Zakharevich
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееdelimitry
 
ממצאי סקר בקרב בוגרי קרן קמח
ממצאי סקר בקרב בוגרי קרן קמחממצאי סקר בקרב בוגרי קרן קמח
ממצאי סקר בקרב בוגרי קרן קמחShraga Klar
 
Deni_Afandi_2016_Common_Resume (with photo)
Deni_Afandi_2016_Common_Resume (with photo)Deni_Afandi_2016_Common_Resume (with photo)
Deni_Afandi_2016_Common_Resume (with photo)Deni Afandi
 
2 arquitecturas de red 2
2 arquitecturas de red 22 arquitecturas de red 2
2 arquitecturas de red 2Kathia Chiquita
 
Curso de formación (ficticio)
Curso de formación (ficticio)Curso de formación (ficticio)
Curso de formación (ficticio)Pablo Sg25
 
Pm0016 project risk management
Pm0016 project risk managementPm0016 project risk management
Pm0016 project risk managementconsult4solutions
 
CPPC Con Mon Program Impementation
CPPC Con Mon Program ImpementationCPPC Con Mon Program Impementation
CPPC Con Mon Program ImpementationNeil Curran
 

Destaque (14)

Магия метаклассов
Магия метаклассовМагия метаклассов
Магия метаклассов
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущее
 
ממצאי סקר בקרב בוגרי קרן קמח
ממצאי סקר בקרב בוגרי קרן קמחממצאי סקר בקרב בוגרי קרן קמח
ממצאי סקר בקרב בוגרי קרן קמח
 
Skth 0031
Skth 0031Skth 0031
Skth 0031
 
GUTSA 2016 Fall Welcoming Party
GUTSA 2016 Fall Welcoming PartyGUTSA 2016 Fall Welcoming Party
GUTSA 2016 Fall Welcoming Party
 
Deni_Afandi_2016_Common_Resume (with photo)
Deni_Afandi_2016_Common_Resume (with photo)Deni_Afandi_2016_Common_Resume (with photo)
Deni_Afandi_2016_Common_Resume (with photo)
 
2 arquitecturas de red 2
2 arquitecturas de red 22 arquitecturas de red 2
2 arquitecturas de red 2
 
Curso de formación (ficticio)
Curso de formación (ficticio)Curso de formación (ficticio)
Curso de formación (ficticio)
 
Resume / CV
Resume / CVResume / CV
Resume / CV
 
Work Term Report
Work Term ReportWork Term Report
Work Term Report
 
Pm0016 project risk management
Pm0016 project risk managementPm0016 project risk management
Pm0016 project risk management
 
Las Herramientas Web
Las Herramientas WebLas Herramientas Web
Las Herramientas Web
 
CPPC Con Mon Program Impementation
CPPC Con Mon Program ImpementationCPPC Con Mon Program Impementation
CPPC Con Mon Program Impementation
 
Budgets
BudgetsBudgets
Budgets
 

Semelhante a AST: threats and opportunities

Python 내장 함수
Python 내장 함수Python 내장 함수
Python 내장 함수용 최
 
とある断片の超動的言語
とある断片の超動的言語とある断片の超動的言語
とある断片の超動的言語Kiyotaka Oku
 
Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Giovanni Bechis
 
What's new in Python 3.11
What's new in Python 3.11What's new in Python 3.11
What's new in Python 3.11Henry Schreiner
 
Functional Programming inside OOP? It’s possible with Python
Functional Programming inside OOP? It’s possible with PythonFunctional Programming inside OOP? It’s possible with Python
Functional Programming inside OOP? It’s possible with PythonCarlos V.
 
pa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text Processingpa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text ProcessingRodrigo Senra
 
Bytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreterBytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreterakaptur
 
All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2goMoriyoshi Koizumi
 
Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"LogeekNightUkraine
 
Functions in python
Functions in pythonFunctions in python
Functions in pythonIlian Iliev
 
High performance GPU computing with Ruby RubyConf 2017
High performance GPU computing with Ruby  RubyConf 2017High performance GPU computing with Ruby  RubyConf 2017
High performance GPU computing with Ruby RubyConf 2017Prasun Anand
 
Introduction aux Macros
Introduction aux MacrosIntroduction aux Macros
Introduction aux Macrosunivalence
 
Goptuna Distributed Bayesian Optimization Framework at Go Conference 2019 Autumn
Goptuna Distributed Bayesian Optimization Framework at Go Conference 2019 AutumnGoptuna Distributed Bayesian Optimization Framework at Go Conference 2019 Autumn
Goptuna Distributed Bayesian Optimization Framework at Go Conference 2019 AutumnMasashi Shibata
 

Semelhante a AST: threats and opportunities (20)

Python 내장 함수
Python 내장 함수Python 내장 함수
Python 내장 함수
 
Faster Python, FOSDEM
Faster Python, FOSDEMFaster Python, FOSDEM
Faster Python, FOSDEM
 
とある断片の超動的言語
とある断片の超動的言語とある断片の超動的言語
とある断片の超動的言語
 
Porting to Python 3
Porting to Python 3Porting to Python 3
Porting to Python 3
 
Boosting Developer Productivity with Clang
Boosting Developer Productivity with ClangBoosting Developer Productivity with Clang
Boosting Developer Productivity with Clang
 
Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)
 
GCC
GCCGCC
GCC
 
What's new in Python 3.11
What's new in Python 3.11What's new in Python 3.11
What's new in Python 3.11
 
Py3k
Py3kPy3k
Py3k
 
Functional Programming inside OOP? It’s possible with Python
Functional Programming inside OOP? It’s possible with PythonFunctional Programming inside OOP? It’s possible with Python
Functional Programming inside OOP? It’s possible with Python
 
Intro
IntroIntro
Intro
 
pa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text Processingpa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text Processing
 
Bytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreterBytes in the Machine: Inside the CPython interpreter
Bytes in the Machine: Inside the CPython interpreter
 
All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2go
 
Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"Yevhen Tatarynov "From POC to High-Performance .NET applications"
Yevhen Tatarynov "From POC to High-Performance .NET applications"
 
Functions in python
Functions in pythonFunctions in python
Functions in python
 
PythonOOP
PythonOOPPythonOOP
PythonOOP
 
High performance GPU computing with Ruby RubyConf 2017
High performance GPU computing with Ruby  RubyConf 2017High performance GPU computing with Ruby  RubyConf 2017
High performance GPU computing with Ruby RubyConf 2017
 
Introduction aux Macros
Introduction aux MacrosIntroduction aux Macros
Introduction aux Macros
 
Goptuna Distributed Bayesian Optimization Framework at Go Conference 2019 Autumn
Goptuna Distributed Bayesian Optimization Framework at Go Conference 2019 AutumnGoptuna Distributed Bayesian Optimization Framework at Go Conference 2019 Autumn
Goptuna Distributed Bayesian Optimization Framework at Go Conference 2019 Autumn
 

Último

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 

Último (20)

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 

AST: threats and opportunities