SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
L E V E L U P Y O U R
N G R X G A M E
@onderceylan
Sharing knowledge on #javascript, #typescript, #angular, #ionic and #pwa
JS Tech Lead @LINKIT, @KLM
Speaker, co-organiser @ITNEXT, @GDG-NL
Ö N D E R C E Y L A N
@onderceylan
N G R X P L AT F O R M
• @ngrx/store
• @ngrx/effects
• @ngrx/router-store
• @ngrx/store-devtools
• @ngrx/entity
• @ngrx/data
• @ngrx/schematics
@onderceylan
M A I N TA I N A G O O D
A C T I O N H Y G I E N E
@onderceylan
[Source] Event
@onderceylan Good Action Hygiene with NgRx @ng-conf - Mike Ryan
@onderceylan
AV O I D G E N E R I C A C T I O N T Y P E S
@ngrx/store/init

[User] Authenticate

[User] Authenticate Success

[WontonSoup] Add One

[WontonSoup] Add One

[Cart] Checkout

[Cart] Checkout Success
@ngrx/store/init

[Login Page] Login

[Auth API] Login Success

[Menu Page] Add Wonton Soup

[Soup Details Page] Add Wonton Soup

[Cart Dropdown] Checkout

[Cart API] Checkout Success
Good Action Hygiene with NgRx @ng-conf - Mike Ryan
@onderceylan
AV O I D G E N E R I C A C T I O N T Y P E S
[Login Page] Login

[Menu Page] Add Wonton

[Menu Page] Add Teriyaki

[Menu Page] Add Noodle

[Cart] Checkout

[Auth API] Login Success

[Auth API] Login Failure

[Cart API] Checkout Success

[Cart API] Checkout Failure

[WS API] Update Availability

[WebSocket] Open

[WebSocket] Disconnected

[IndexDB] Save Success
Good Action Hygiene with NgRx @ng-conf - Mike Ryan
@onderceylan
U S E N G R X
S C H E M AT I C S
@onderceylan
B O I L E R P L AT E
@onderceylan
D E FA U LT C O L L E C T I O N
@onderceylan
S T Y L E G U I D E
@onderceylan
S T Y L E G U I D E
@onderceylan
U S E S E L E C T O R S
@onderceylan
D RY
@onderceylan
M E M O I Z AT I O N
@onderceylan
– N G R X D O C S
“Because selectors are pure functions, the last result can be returned when the
arguments match without re-invoking your selector function. This can provide
performance benefits, particularly with selectors that perform expensive
computation. This practice is known as memoization.”
@onderceylan
T Y P E S A F E T Y
@onderceylan
@onderceylan
S TAT E S L I C E
@onderceylan
C O M P O S I N G S E L E C T O R S
@onderceylan
S E L E C T O R TA K E A WAY S
• Don’t pollute the store state with derived state, use
state selectors to create view models
• Keep selectors small so they can be used to compose
bigger and more complex selectors
• Take advantage of memoization by using selectors and
customMemoize / resultMemoize when needed
@onderceylan
S E R I A L I Z AT I O N & H Y D R AT I O N
@onderceylan
S E R I A L I S AT I O N
@onderceylan
R U N T I M E C H E C K S
@onderceylan
C L I E N T S T O R A G E & H Y D R AT I O N
@onderceylan
C L I E N T S T O R A G E & H Y D R AT I O N
@onderceylan
A D J U S T V I E W S
@onderceylan
N G I F & A S Y N C
@onderceylan
C H A N G E D E T E C T I O N
@onderceylan
S I M P L I F Y Y O U R
R E D U C E R S
@onderceylan
@onderceylan
I M M E R
@onderceylan
I M M E R
https://blog.angularindepth.com/clean-ngrx-reducers-using-immer-7fe4a0d43508
@onderceylan
S I M P L I F Y Y O U R R E D U C E R S
W I T H @ N G R X / E N T I T Y
@onderceylan
@onderceylan
E N T I T Y S TAT E
@onderceylan
E N T I T Y A D A P T E R
@onderceylan
C O L L E C T I O N M E T H O D S
@onderceylan
D E FA U LT S E L E C T O R S
@onderceylan
Y O U M AY N E V E R FA C E B O I L E R P L AT E
I S S U E W @ N G R X / D ATA
@onderceylan
@ N G R X / D ATA
@onderceylan
W H AT C A N G O W R O N G
W I T H C O D E G E N E R AT I O N ?
@onderceylan
@ N G R X / D ATA
• A single objective: to simplify management of entity
data
• Abstraction of reducers, actions, effects, selectors and
HTTP data services
• Almost anything is customizable at a single entity-type
level
• NgRx Data library is good for querying, caching, and
saving entity data
@onderceylan
O P T I M I S T I C U P D AT E S
@onderceylan
O P T I M I S T I C U P D AT E S W I T H @ N G R X / D ATA
@onderceylan
O P T I M I S T I C U P D AT E S W I T H N X
@onderceylan
L O O K I N G A H E A D
@onderceylan
FA C A D E S
@onderceylan
FA C A D E S
@onderceylan
A C T I O N C R E AT O R S
@onderceylan
A C T I O N C R E AT O R S
@onderceylan
R E D U C E R C R E AT O R S
@onderceylan
E F F E C T C R E AT O R S
@onderceylan
M A I N TA K E A WAY S
• Maintain a good action hygiene
• Use @ngrx/schematics
• Use selectors
• Attention on serialisation & hydration
• Manage your data with @ngrx/entity or @ngrx/data
• Adjust your views with async pipe and ChangeDetectionStrategy.OnPush
• Use optimistic updates when needed
• Use facades where needed and start using creators to reduce boilerplate
@onderceylan
R E S O U R C E S
• https://ngrx.io
• https://github.com/ngrx/platform/tree/master/projects/example-
app
• https://github.com/nrwl/nx/blob/master/packages/angular/src/
runtime/nx/data-persistence.ts
• https://medium.com/ngrx/
• https://blog.angularindepth.com/tagged/ngrx
• https://blog.nrwl.io/search?q=ngrx
Follow me on
@ O N D E R C E Y L A N
T H A N K Y O U !

Mais conteúdo relacionado

Semelhante a Level up your NgRx game

From Content Strategy to Drupal Site Building - Connecting the Dots
From Content Strategy to Drupal Site Building - Connecting the DotsFrom Content Strategy to Drupal Site Building - Connecting the Dots
From Content Strategy to Drupal Site Building - Connecting the DotsRonald Ashri
 
Switching horses midstream - From Waterfall to Agile
Switching horses midstream - From Waterfall to AgileSwitching horses midstream - From Waterfall to Agile
Switching horses midstream - From Waterfall to AgileDoc Norton
 
Ville Hulkko - Artificial Intelligence as a service
Ville Hulkko - Artificial Intelligence as a serviceVille Hulkko - Artificial Intelligence as a service
Ville Hulkko - Artificial Intelligence as a serviceEficode
 
You Created a Plugin. Now What? WordCamp Orange County
You Created a Plugin. Now What? WordCamp Orange CountyYou Created a Plugin. Now What? WordCamp Orange County
You Created a Plugin. Now What? WordCamp Orange CountyAdam W. Warner
 
You Created a Plugin. Now What? WordCamp Sacramento
You Created a Plugin. Now What? WordCamp SacramentoYou Created a Plugin. Now What? WordCamp Sacramento
You Created a Plugin. Now What? WordCamp SacramentoAdam W. Warner
 
APItheDocs: How Can API Documentation Be Agile?
APItheDocs: How Can API Documentation Be Agile?APItheDocs: How Can API Documentation Be Agile?
APItheDocs: How Can API Documentation Be Agile?eBranding Ninja
 
Build a production ready PWA with Angular and Firebase
Build a production ready PWA with Angular and FirebaseBuild a production ready PWA with Angular and Firebase
Build a production ready PWA with Angular and FirebaseÖnder Ceylan
 
Digital Data Commons - Emergence of AI Blockchain Convergence
Digital Data Commons - Emergence of AI Blockchain ConvergenceDigital Data Commons - Emergence of AI Blockchain Convergence
Digital Data Commons - Emergence of AI Blockchain ConvergenceGokul Alex
 
You Created a Plugin. Now What?
You Created a Plugin. Now What?You Created a Plugin. Now What?
You Created a Plugin. Now What?Adam W. Warner
 
How to Reuse Your Content and Make the Big Bucks: Content Marketing
How to Reuse Your Content and Make the Big Bucks: Content MarketingHow to Reuse Your Content and Make the Big Bucks: Content Marketing
How to Reuse Your Content and Make the Big Bucks: Content MarketingAshley Segura
 
SearchLove San Diego 2018 | Ashley Ward | Reuse, Recycle: How to Repurpose Yo...
SearchLove San Diego 2018 | Ashley Ward | Reuse, Recycle: How to Repurpose Yo...SearchLove San Diego 2018 | Ashley Ward | Reuse, Recycle: How to Repurpose Yo...
SearchLove San Diego 2018 | Ashley Ward | Reuse, Recycle: How to Repurpose Yo...Distilled
 
Reducing Resistance: Deployment as Surface
Reducing Resistance: Deployment as SurfaceReducing Resistance: Deployment as Surface
Reducing Resistance: Deployment as SurfaceJeffrey Hulten
 
Offline-first: Making your app resilient to network failures
Offline-first: Making your app resilient to network failuresOffline-first: Making your app resilient to network failures
Offline-first: Making your app resilient to network failuresPedro Teixeira
 
Introduction to Information Technology 2
Introduction to Information Technology 2Introduction to Information Technology 2
Introduction to Information Technology 2dmeekis
 
Growth Framework for Consumer Startups
Growth Framework for Consumer StartupsGrowth Framework for Consumer Startups
Growth Framework for Consumer StartupsP J
 
How to Reuse Your Content - Search Marketing Summit Sydney
How to Reuse Your Content - Search Marketing Summit SydneyHow to Reuse Your Content - Search Marketing Summit Sydney
How to Reuse Your Content - Search Marketing Summit SydneyAshley Segura
 
10 d bs in 30 minutes
10 d bs in 30 minutes10 d bs in 30 minutes
10 d bs in 30 minutesDavid Simons
 
TDD Using the SOLID Principles
TDD Using the SOLID PrinciplesTDD Using the SOLID Principles
TDD Using the SOLID PrinciplesJenna Pederson
 
Angular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of SpeedAngular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of SpeedIlia Idakiev
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactorcklosowski
 

Semelhante a Level up your NgRx game (20)

From Content Strategy to Drupal Site Building - Connecting the Dots
From Content Strategy to Drupal Site Building - Connecting the DotsFrom Content Strategy to Drupal Site Building - Connecting the Dots
From Content Strategy to Drupal Site Building - Connecting the Dots
 
Switching horses midstream - From Waterfall to Agile
Switching horses midstream - From Waterfall to AgileSwitching horses midstream - From Waterfall to Agile
Switching horses midstream - From Waterfall to Agile
 
Ville Hulkko - Artificial Intelligence as a service
Ville Hulkko - Artificial Intelligence as a serviceVille Hulkko - Artificial Intelligence as a service
Ville Hulkko - Artificial Intelligence as a service
 
You Created a Plugin. Now What? WordCamp Orange County
You Created a Plugin. Now What? WordCamp Orange CountyYou Created a Plugin. Now What? WordCamp Orange County
You Created a Plugin. Now What? WordCamp Orange County
 
You Created a Plugin. Now What? WordCamp Sacramento
You Created a Plugin. Now What? WordCamp SacramentoYou Created a Plugin. Now What? WordCamp Sacramento
You Created a Plugin. Now What? WordCamp Sacramento
 
APItheDocs: How Can API Documentation Be Agile?
APItheDocs: How Can API Documentation Be Agile?APItheDocs: How Can API Documentation Be Agile?
APItheDocs: How Can API Documentation Be Agile?
 
Build a production ready PWA with Angular and Firebase
Build a production ready PWA with Angular and FirebaseBuild a production ready PWA with Angular and Firebase
Build a production ready PWA with Angular and Firebase
 
Digital Data Commons - Emergence of AI Blockchain Convergence
Digital Data Commons - Emergence of AI Blockchain ConvergenceDigital Data Commons - Emergence of AI Blockchain Convergence
Digital Data Commons - Emergence of AI Blockchain Convergence
 
You Created a Plugin. Now What?
You Created a Plugin. Now What?You Created a Plugin. Now What?
You Created a Plugin. Now What?
 
How to Reuse Your Content and Make the Big Bucks: Content Marketing
How to Reuse Your Content and Make the Big Bucks: Content MarketingHow to Reuse Your Content and Make the Big Bucks: Content Marketing
How to Reuse Your Content and Make the Big Bucks: Content Marketing
 
SearchLove San Diego 2018 | Ashley Ward | Reuse, Recycle: How to Repurpose Yo...
SearchLove San Diego 2018 | Ashley Ward | Reuse, Recycle: How to Repurpose Yo...SearchLove San Diego 2018 | Ashley Ward | Reuse, Recycle: How to Repurpose Yo...
SearchLove San Diego 2018 | Ashley Ward | Reuse, Recycle: How to Repurpose Yo...
 
Reducing Resistance: Deployment as Surface
Reducing Resistance: Deployment as SurfaceReducing Resistance: Deployment as Surface
Reducing Resistance: Deployment as Surface
 
Offline-first: Making your app resilient to network failures
Offline-first: Making your app resilient to network failuresOffline-first: Making your app resilient to network failures
Offline-first: Making your app resilient to network failures
 
Introduction to Information Technology 2
Introduction to Information Technology 2Introduction to Information Technology 2
Introduction to Information Technology 2
 
Growth Framework for Consumer Startups
Growth Framework for Consumer StartupsGrowth Framework for Consumer Startups
Growth Framework for Consumer Startups
 
How to Reuse Your Content - Search Marketing Summit Sydney
How to Reuse Your Content - Search Marketing Summit SydneyHow to Reuse Your Content - Search Marketing Summit Sydney
How to Reuse Your Content - Search Marketing Summit Sydney
 
10 d bs in 30 minutes
10 d bs in 30 minutes10 d bs in 30 minutes
10 d bs in 30 minutes
 
TDD Using the SOLID Principles
TDD Using the SOLID PrinciplesTDD Using the SOLID Principles
TDD Using the SOLID Principles
 
Angular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of SpeedAngular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of Speed
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactor
 

Mais de Önder Ceylan

Make your PWA feel more like an app
Make your PWA feel more like an appMake your PWA feel more like an app
Make your PWA feel more like an appÖnder Ceylan
 
Puppeteer can automate that! - HolyJS Piter 2020
Puppeteer can automate that! - HolyJS Piter 2020Puppeteer can automate that! - HolyJS Piter 2020
Puppeteer can automate that! - HolyJS Piter 2020Önder Ceylan
 
Puppeteer can automate that! - AmsterdamJS
Puppeteer can automate that! - AmsterdamJSPuppeteer can automate that! - AmsterdamJS
Puppeteer can automate that! - AmsterdamJSÖnder Ceylan
 
Introducing perf budgets on CI with puppeteer - perf.now()
Introducing perf budgets on CI with puppeteer - perf.now()Introducing perf budgets on CI with puppeteer - perf.now()
Introducing perf budgets on CI with puppeteer - perf.now()Önder Ceylan
 
Puppeteer can automate that! - Frontmania
Puppeteer can automate that! - FrontmaniaPuppeteer can automate that! - Frontmania
Puppeteer can automate that! - FrontmaniaÖnder Ceylan
 
Building angular apps at scale
Building angular apps at scaleBuilding angular apps at scale
Building angular apps at scaleÖnder Ceylan
 
Progressive Web Apps: Is it a replacement for your mobile app?
Progressive Web Apps: Is it a replacement for your mobile app?Progressive Web Apps: Is it a replacement for your mobile app?
Progressive Web Apps: Is it a replacement for your mobile app?Önder Ceylan
 

Mais de Önder Ceylan (7)

Make your PWA feel more like an app
Make your PWA feel more like an appMake your PWA feel more like an app
Make your PWA feel more like an app
 
Puppeteer can automate that! - HolyJS Piter 2020
Puppeteer can automate that! - HolyJS Piter 2020Puppeteer can automate that! - HolyJS Piter 2020
Puppeteer can automate that! - HolyJS Piter 2020
 
Puppeteer can automate that! - AmsterdamJS
Puppeteer can automate that! - AmsterdamJSPuppeteer can automate that! - AmsterdamJS
Puppeteer can automate that! - AmsterdamJS
 
Introducing perf budgets on CI with puppeteer - perf.now()
Introducing perf budgets on CI with puppeteer - perf.now()Introducing perf budgets on CI with puppeteer - perf.now()
Introducing perf budgets on CI with puppeteer - perf.now()
 
Puppeteer can automate that! - Frontmania
Puppeteer can automate that! - FrontmaniaPuppeteer can automate that! - Frontmania
Puppeteer can automate that! - Frontmania
 
Building angular apps at scale
Building angular apps at scaleBuilding angular apps at scale
Building angular apps at scale
 
Progressive Web Apps: Is it a replacement for your mobile app?
Progressive Web Apps: Is it a replacement for your mobile app?Progressive Web Apps: Is it a replacement for your mobile app?
Progressive Web Apps: Is it a replacement for your mobile app?
 

Último

Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
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
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
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.
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
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
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
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
 

Último (20)

Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
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
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
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
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
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...
 

Level up your NgRx game