SlideShare une entreprise Scribd logo
1  sur  64
Télécharger pour lire hors ligne
Building a Single
Page App
One page at a time
@nettofarah
@nettofarah
netto@ifttt.com
full stack developer at
IFTTT
http://ifttt.com/jobs
IFTTT
but this talk
is also about
the evolution of S.P.A.
DHTML
java applets
Flash / Flex
GWT
ajax
the .js era
toda vez que o Chaves respira
surge um framework .js novo
E isso não somos nós que
dizemos. São as estatísticas.
</pt-br>
in the rails world
• prototype.js / jquery gem
• rjs (ughhh)
• asset pipeline
• turbo links?
rails asset pipeline
rails + gulp/grunt
I don’t want my app to be
bound by page refreshes
the risks
• rework
• way too many spinning wheels
• the blank page effect
• SEO
DOING IT!
reuse!
• templates
• snippets
• scripts
• build system
reusing your rb/js code
server side rendering
optional, but makes a BIG DIFFERENCE!
mustache.(js|rb)
1 def regular_controller_method
2 @participants = User.last(10)
3 @event = Event.find_by_technology(:ruby)
4 end
the normal way
1 <div>
2 <% if Time.now.saturday? && Time.now.hour > 13 %>
3 yay, Netto is talking about Single Page apps
4 <% else %>
5 Can't wait to see Netto's talk!
6 <% end %>
7
8 <% is_tropical_ruby = @event.name.match(/tropical/i) %>
9 <% is_active = @event.end_date =< Date.today %>
10
11 <% if is_tropical_ruby && is_active %>
12 yay :)
13 <% end %>
14
15 <% @participants.each ... %>
16 # MOAR RUBY!! lol
17 <% end %>
18
19 </div>
1 def api_controller_method
2 participants = User.last(10)
3 event = Event.find_by_technology(:ruby)
4
5 is_nettos_talk = Time.now.saturday? && Time.now.hour > 14
6
7 @h = {
8 participants: users,
9 event: {
10 is_nettos_talk: is_nettos_talk,
11 is_tropical_ruby: event.tropical_rb?,
12 is_active: event.active?
13 }
14 }
15
16 respond_to do |format|
17 format.html
18 format.json { render json: @h.to_json }
19 end
20 end
1 <div>
2 {{#is_nettos_talk}}
3 yay, Netto is talking about Single Page apps
4 {{/is_nettos_talk}}
5
6 {{^is_nettos_talk}}
7 Can't wait to see Netto's talk!
8 I should follow him on twitter: @nettofarah
9 {{/is_nettos_talk}}
10
11 {{#event.is_tropical_ruby}}
12 yay
13 {{/event.is_tropical_ruby}}
14
15 {{#participants}}
16 ... SOME COOL MUSTACHE STUFF
17 {{/participants}}
18 </div>
Presenters?
hogan.js
minify your .mustache
templates and serve with asset-pipeline
https://github.com/leshill/hogan_assets
1 define("hgn!templates/recipe" ,
["hogan"],function(hogan){ return function
render(c,p,i) {
2 var t=this;t.b(i=i||"");t.b("<div>
");if(t.s(t.f("is_nettos_talk",c,p,1),c,p,
0,25,71,"{{ }}")){t.rs(c,p,function(c,p,t){t.b("
yay, Netto is talking about Single Page apps
");});c.pop();}t.b(" ");if(!
t.s(t.f("is_nettos_talk",c,p,1),c,p,1,0,0,"")){t.b("
Can't wait to see Netto's talk! I should follow him
on twitter: @nettofarah ");};t.b("
");if(t.s(t.d("event.is_tropical_ruby",c,p,1),c,p,
0,235,240,"{{ }}")){t.rs(c,p,function(c,p,t){t.b("
yay ");});c.pop();}t.b("
");if(t.s(t.f("participants",c,p,1),c,p,
0,285,315,"{{ }}")){t.rs(c,p,function(c,p,t)
{t.b(" ... SOME COOL MUSTACHE STUFF ");});c.pop();}
t.b(" </div>");return t.fl(); } }
require.js rails
https://github.com/jwhitley/requirejs-rails
• small and reusable components
• load only what you need
1 define('recipe_view', ['ingredient', 'recipeTemplate'],
2 function(Ingredient, recipeTemplate) {
3
4 var RecipeView = function() {
5
6 function render() {
7 var ingredient = new Ingredient({..});
8 var fragment = recipeTemplate.render(ingredient);
9 $(..).html(fragment);
10 }
11
12 ...
13 };
14
15 return RecipeView;
16 }
17 );
legacy routes
config/routes.rb -> app/js/routes.js
https://github.com/pseudomuto/routesjs-rails
reporting
1 // very simplistic example
2
3 window.onerror = function(message, url, lineNumber) {
4 // a rails controller
5 // or some other service
6 $.post('/js-errors', {
7 message: message,
8 url: url,
9 line_number: lineNumber
10 ...
11 });
12 }
testing
the consequences
the positive ones
fast(er) experience
• (potentially) independent deployment strategy
• better loading time and user experience
• decoupled code and test suite
the bad and the ugly
complexity
race conditions
regular web app
initial load
login info
js load event hooks/callbacks
single page (async) app
1 // Regular JS App
2 function Session() {
3 var currentUser = App.User; // this comes from erb
4 function onUserLogIn(callback) {
5 if (currentUser != null) {
6 callback();
7 }
8 }
9 }
1 // Single Page App Code
2 function Session() {
3 var onLogInCallbacks = [];
4 var currentUser;
5
6 function fetchCurrentUser() {
7 $.ajax(...).done(function() {
8 _.each(onLoginCallbacks, function(callback) {
9 callback(currentUser);
10 })
11 });
12 }
13
14 function onUserLogIn(callback) {
15 if (currentUser != null) {
16 callback(currentUser);
17 } else {
18 onLoginCallbacks.push(callback);
19 }
20 }
21 }
Save callback
for later
run callbacks
memory leaks
3 var onLogInCallbacks = [];
4 var currentUser;
5
6 function fetchCurrentSession() {
7 $.ajax(...).done(function() {
8 _.each(onLoginCallbacks,
function(callback) {
9 callback(currentUser);
10 });
11
12 clear(onLoginCallbacks);
13 });
14 }
15
16 function onUserLogIn(callback) {
17 if (currentUser != null) {
18 callback(currentUser);
19 } else {
20 onLoginCallbacks.push(callback);
21 }
cleanup after yourself
do not block the main thread
1 function onUserLogIn(callback) {
2 if (currentUser != null) {
3 setTimeout(callback, 0, currentUser);
4 }
5 }
instance x prototype
learnings
page refreshes are JS
developers best friends
beware of latency
events, callbacks and
promises
Don’t just learn a framework.
Learn JavaScript.
what’s next?
• ifttt.com next gen!
• react.js
• flight.js

Contenu connexe

Tendances

Mage Titans - Workshop - UI Components
Mage Titans - Workshop - UI ComponentsMage Titans - Workshop - UI Components
Mage Titans - Workshop - UI Components
vkorotun
 
Java script object model
Java script object modelJava script object model
Java script object model
James Hsieh
 

Tendances (20)

AngularJS for Java Developers
AngularJS for Java DevelopersAngularJS for Java Developers
AngularJS for Java Developers
 
Mage Titans - Workshop - UI Components
Mage Titans - Workshop - UI ComponentsMage Titans - Workshop - UI Components
Mage Titans - Workshop - UI Components
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Symfony2 - Request to Response
Symfony2 - Request to ResponseSymfony2 - Request to Response
Symfony2 - Request to Response
 
HItchhickers Guide to TypeScript
HItchhickers Guide to TypeScriptHItchhickers Guide to TypeScript
HItchhickers Guide to TypeScript
 
Serverless and React
Serverless and ReactServerless and React
Serverless and React
 
ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...
ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...
ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...
 
A little respect for MVC part 1 par Gegoire Lhotellier
A little respect for MVC part 1 par Gegoire LhotellierA little respect for MVC part 1 par Gegoire Lhotellier
A little respect for MVC part 1 par Gegoire Lhotellier
 
Polyglot automation - QA Fest - 2015
Polyglot automation - QA Fest - 2015Polyglot automation - QA Fest - 2015
Polyglot automation - QA Fest - 2015
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
 
Java script object model
Java script object modelJava script object model
Java script object model
 
Up and Running with ReactJS
Up and Running with ReactJSUp and Running with ReactJS
Up and Running with ReactJS
 
Introduction to ReactJS
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJS
 
Introducing AngularJS
Introducing AngularJSIntroducing AngularJS
Introducing AngularJS
 
Introducing Revel
Introducing RevelIntroducing Revel
Introducing Revel
 
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
 
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer ReplacementMidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
 
A tour of React Native
A tour of React NativeA tour of React Native
A tour of React Native
 
Introduction to AJAX In WordPress
Introduction to AJAX In WordPressIntroduction to AJAX In WordPress
Introduction to AJAX In WordPress
 

En vedette

[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
Plan Politika
 
Parachute procedure slide show
Parachute procedure slide showParachute procedure slide show
Parachute procedure slide show
Carli
 
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
Plan Politika
 
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Piet Verhoeve
 
Current
CurrentCurrent
Current
iec
 
Leverage social media to drive business final
Leverage social media to drive business finalLeverage social media to drive business final
Leverage social media to drive business final
SimoneVersteeg
 
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHMIEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
iec
 
Guaranteed Successful Projects
Guaranteed Successful ProjectsGuaranteed Successful Projects
Guaranteed Successful Projects
faruqh
 

En vedette (20)

[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
 
Parachute procedure slide show
Parachute procedure slide showParachute procedure slide show
Parachute procedure slide show
 
Hti
HtiHti
Hti
 
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
 
Nothing But Love - My speech to my sister on her wedding day - Journey within...
Nothing But Love - My speech to my sister on her wedding day - Journey within...Nothing But Love - My speech to my sister on her wedding day - Journey within...
Nothing But Love - My speech to my sister on her wedding day - Journey within...
 
Gaismas
GaismasGaismas
Gaismas
 
Fluido/Scrive Salesforce for E-sign seminar
Fluido/Scrive Salesforce for E-sign seminarFluido/Scrive Salesforce for E-sign seminar
Fluido/Scrive Salesforce for E-sign seminar
 
Bogomils
BogomilsBogomils
Bogomils
 
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
 
Wave pp 01
Wave pp 01Wave pp 01
Wave pp 01
 
Faria bangla festival 2
Faria bangla festival 2Faria bangla festival 2
Faria bangla festival 2
 
[plan politika] Youth movement nowadays
[plan politika] Youth movement nowadays[plan politika] Youth movement nowadays
[plan politika] Youth movement nowadays
 
Current
CurrentCurrent
Current
 
Presentation1
Presentation1Presentation1
Presentation1
 
Synchronisation de périphériques avec Javascript et PouchDB
Synchronisation de périphériques avec Javascript et PouchDBSynchronisation de périphériques avec Javascript et PouchDB
Synchronisation de périphériques avec Javascript et PouchDB
 
Leverage social media to drive business final
Leverage social media to drive business finalLeverage social media to drive business final
Leverage social media to drive business final
 
Weekly news 3
Weekly news 3Weekly news 3
Weekly news 3
 
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHMIEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
 
Guaranteed Successful Projects
Guaranteed Successful ProjectsGuaranteed Successful Projects
Guaranteed Successful Projects
 
2. Arte Ibérico
2. Arte Ibérico2. Arte Ibérico
2. Arte Ibérico
 

Similaire à Building a Single Page App: One Page at a Time

Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet
Sagar Nakul
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class
Spike Brehm
 

Similaire à Building a Single Page App: One Page at a Time (20)

OttawaJS - React
OttawaJS - ReactOttawaJS - React
OttawaJS - React
 
Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.
 
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
From Back to Front: Rails To React Family
From Back to Front: Rails To React FamilyFrom Back to Front: Rails To React Family
From Back to Front: Rails To React Family
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
 
Workshop React.js
Workshop React.jsWorkshop React.js
Workshop React.js
 
sMash at May NYPHP UG
sMash at May NYPHP UGsMash at May NYPHP UG
sMash at May NYPHP UG
 
Struts,Jsp,Servlet
Struts,Jsp,ServletStruts,Jsp,Servlet
Struts,Jsp,Servlet
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet
 
The Gist of React Native
The Gist of React NativeThe Gist of React Native
The Gist of React Native
 
Ditching JQuery
Ditching JQueryDitching JQuery
Ditching JQuery
 
"Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native ""Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native "
 
Groovy Ecosystem - JFokus 2011 - Guillaume Laforge
Groovy Ecosystem - JFokus 2011 - Guillaume LaforgeGroovy Ecosystem - JFokus 2011 - Guillaume Laforge
Groovy Ecosystem - JFokus 2011 - Guillaume Laforge
 
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learned
 
TPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and FluxTPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and Flux
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class
 

Plus de Ivayr Farah Netto

Testes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria SaberTestes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria Saber
Ivayr Farah Netto
 

Plus de Ivayr Farah Netto (7)

a 8tracks ama o Redis
a 8tracks ama o Redisa 8tracks ama o Redis
a 8tracks ama o Redis
 
Persistência Poliglota na Prática
Persistência Poliglota na PráticaPersistência Poliglota na Prática
Persistência Poliglota na Prática
 
Redis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.comRedis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.com
 
Rails girls
Rails girlsRails girls
Rails girls
 
Away day
Away dayAway day
Away day
 
Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnica
 
Testes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria SaberTestes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria Saber
 

Dernier

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Dernier (20)

Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 

Building a Single Page App: One Page at a Time