SlideShare une entreprise Scribd logo
1  sur  86
Télécharger pour lire hors ligne
Concurrent PHP
in the Etsy API
Matthew Graham
@lapsu
@EtsyAPI Lead
#phpday
2014 April
@lapsu@EtsyAPI
@lapsu@EtsyAPI
$1.3 Billion
Things That Matter
@lapsu@EtsyAPI
@lapsu
Etsy's PHP
www api admin
queues cron
@EtsyAPI
@lapsu
~200 engineers
30+ deploys / day
@EtsyAPI
Also, Rasmus
@lapsu@EtsyAPI
Spoilers
@lapsu
Mobile Clients Are Special
1 Thread != No Concurrency
@EtsyAPI
@lapsu
<motivation>
@EtsyAPI
Premise:
@lapsu
The Future is Mobile
@EtsyAPI
@lapsu
Past
The Future is Mobile
November 2013
@EtsyAPI
@lapsu@EtsyAPI
@EtsyAPI
Mobile Networks Suck
@lapsu
<
@EtsyAPI
Not Mobile
@lapsu
www.etsy.com/shop/AVintageWanderer
@EtsyAPI
Network Performance
@lapsu
3G < 4G
@EtsyAPI
Network Coverage
@lapsu
3G > 4G
@EtsyAPI
Mobile Requests
@lapsu
More != Better
@lapsu@EtsyAPI
@lapsu
1000ms Time To Glass
@EtsyAPI
@lapsu
1000ms
- 900ms
-------------
100ms
Network/Client
------------------------
Server
@EtsyAPI
@lapsu
100ms = Bespoke
+ Concurrent
@EtsyAPI
@lapsu
Single Threads
@EtsyAPI
Concurrency
@lapsu@EtsyAPI
Main “Thread”
Child “Thread” Child “Thread”
@lapsu
</motivation><interface>
@EtsyAPI
Paul goes to Netflix
@lapsu@EtsyAPI
1 View : 1 Bespoke
@lapsu@EtsyAPI
ClientView
Bespoke
View View
Bespoke Bespoke
API
Multiple Clients
@lapsu@EtsyAPI
ClientsView
Bespoke
View View
Bespoke Bespoke
API
Bespoke : Components
@lapsu@EtsyAPI
Bespoke Bespoke Bespoke
API
Item User Shop Favs Tx
Components as REST
@lapsu@EtsyAPI
Bespoke Bespoke
API
Item User Shop Favs Tx
@lapsu
?includes=User
@EtsyAPI
Android User View
@lapsu
function handle($cli, $inp) {
$shop = $cli->shop($inp->user_id);
$favs = $cli->favs($inp->user_id);
$items = $cli->items($shop->shop_id);
Curl_Orchestrator::run(
[$shop,$favs,$items]);
return [$favs,$items];
}
@EtsyAPI
Concurrent Client
@lapsu
function handle($cli, $inp) {
$shop = $cli->shop($inp->user_id);
$favs = $cli->favs($inp->user_id);
$items = $cli->items($shop->shop_id);
Curl_Orchestrator::run(
[$shop,$favs,$items]);
return [$favs,$items];
}
@EtsyAPI
Making Requests
@lapsu
function handle($cli, $inp) {
$shop = $cli->shop($inp->user_id);
$favs = $cli->favs($inp->user_id);
$items = $cli->items($shop->shop_id);
Curl_Orchestrator::run(
[$shop,$favs,$items]);
return [$favs,$items];
}
@EtsyAPI
@lapsu@EtsyAPI
shop
favs
t0 t1
Inputs
@lapsu
function handle($cli, $inp) {
$shop = $cli->shop($inp->user_id);
$favs = $cli->favs($inp->user_id);
$items = $cli->items($shop->shop_id);
Curl_Orchestrator::run(
[$shop,$favs,$items]);
return [$favs,$items];
}
@EtsyAPI
Future Parameters
@lapsu
function handle($cli, $inp) {
$shop = $cli->shop($inp->user_id);
$favs = $cli->favs($inp->user_id);
$items = $cli->items($shop->shop_id);
Curl_Orchestrator::run(
[$shop,$favs,$items]);
return [$favs,$items];
}
@EtsyAPI
@lapsu@EtsyAPI
shop
favs
items
t0 t1 t2 t3 t4
~6 Lines
@lapsu
function handle($cli, $inp) {
$shop = $cli->shop($inp->user_id);
$favs = $cli->favs($inp->user_id);
$items = $cli->items($shop->shop_id);
Curl_Orchestrator::run(
[$shop,$favs,$items]);
return [$favs,$items];
}
@EtsyAPI
@lapsu
</interface><performance>
@EtsyAPI
@lapsu
Web Pages Are Clients Too
@EtsyAPI
Web First
@lapsu@EtsyAPI
API First
@lapsu@EtsyAPI
Android User View
@lapsu
function handle($cli, $inp) {
$shop = $cli->shop($inp->user_id);
$favs = $cli->favs($inp->user_id);
$items = $cli->items($shop->shop_id);
Curl_Orchestrator::run(
[$shop,$favs,$items]);
return [$favs,$items];
}
@EtsyAPI
Desktop Web User View
@lapsu
function handle($cli, $inp) {
$shop = $cli->shop($inp->user_id);
$favs = $cli->favs($inp->user_id);
$items = $cli->items($shop->shop_id);
$teams = $cli->teams($inp->user_id);
Curl_Orchestrator::run(
[$shop,$favs,$items,$teams]);
return [$favs,$items,$teams];
}
@EtsyAPI
@lapsu
Activity Feed
@EtsyAPI
@lapsu
Activity Feed
Page
@EtsyAPI
Home
Page
30s of HTTP Time
@lapsu@EtsyAPI
30s of HTTP Time
@lapsu
880ms Real Time
@EtsyAPI
Components
@lapsu@EtsyAPI
Bespoke Bespoke Bespoke
API
Item User Shop Favs Tx
Components Cache
@lapsu@EtsyAPI
Bespoke Bespoke Bespoke
Cache
API
Item User Shop Favs Tx
Local Call
@lapsu@EtsyAPI
Me
Long Distance Call
@lapsu@EtsyAPI
Atlantic
Ocean User
Long Distance Call
@lapsu@EtsyAPI
Atlantic
Ocean
API
Templates
User
@lapsu
</performance><internals>
@EtsyAPI
@lapsu
curl_multi_*
@EtsyAPI
@lapsu@EtsyAPI
curl?
General Sequence
@lapsu@EtsyAPI
curl_multi_init();
curl_multi_add();
curl_multi_exec();
while (!$done) {
curl_multi_select();
curl_multi_exec();
curl_multi_info_read();
}
curl_multi_init
@lapsu@EtsyAPI
$mh = curl_multi_init();
curl_multi_add_handle
@lapsu@EtsyAPI
$mh = curl_multi_init();
$ch = curl_init($url);
curl_setopt_array($ch, $options);
curl_multi_add_handle($mh, $ch);
@lapsu@EtsyAPI
multi handle
handle handle handle
curl_multi_exec
@lapsu@EtsyAPI
do {
$code = curl_multi_exec($mh, $r);
} while ($code == CURLM_CALL_MULTI_PERFORM);
curl_multi_select
@lapsu@EtsyAPI
$cnt = curl_multi_select($mh, $tmout);
curl_multi_info_read
@lapsu@EtsyAPI
$info = curl_multi_info_read($mh);
$ch = $info['handle'];
$content = curl_multi_getcontent($ch);
@lapsu@EtsyAPI
localhost: Expected
@lapsu@EtsyAPI
R1
R2
R3
t0
Network: Actual
@lapsu@EtsyAPI
R2
R3
t0 t1
R1
curl Protocols
@lapsu@EtsyAPI
HTTP
LDAP
Gopher POP3
IMAP
TELNET TFTP
curl_get_multi_handle_state
@lapsu@EtsyAPI
$state = CURLM_STATE_FIRST;
curl_multi_get_handle_state(
$mh, $ch, $state);
$sent = $state > CURLM_STATE_FIRST
&& $state < CURLM_STATE_PERFORM;
Expected, Actual
@lapsu@EtsyAPI
R1
R2
R3
t0
Revised Sequence
@lapsu@EtsyAPI
curl_multi_init();
curl_multi_add();
while (!$sent) {
curl_multi_exec();
curl_multi_get_handle_state();
}
while (!$done) {
curl_multi_select();
curl_multi_exec();
curl_multi_info_read();
}
Still Headed Upstream
@lapsu@EtsyAPI
Patch URL
@lapsu
bit.ly/etsy_curl_multi_patch
@EtsyAPI
Recursion?
@lapsu@EtsyAPI
Recursion?
@lapsu
No.
@EtsyAPI
Recursion?
@lapsu
No?
Not yet.
@EtsyAPI
Visibility
@lapsu@EtsyAPI
@lapsu
PHP Coroutines
@EtsyAPI
More Code
@lapsu
Available Upon Request
@EtsyAPI
@lapsu
codeascraft.etsy.com
@EtsyAPI
@lapsu
</internals><wrap/>
@EtsyAPI
@lapsu
Address Mobile Challenges
@EtsyAPI
@lapsu
PHP Does Concurrency
@EtsyAPI
PHP Abides
@lapsu@EtsyAPI
Concurrent PHP
in the Etsy API
Matthew Graham
@lapsu
@EtsyAPI Lead
#phpday
2014 April
Thank You
Reminder:
@lapsu
Repeat the questions
@EtsyAPI
@lapsu
SPDY / HTTP 2.0
@EtsyAPI

Contenu connexe

Similaire à Concurrent PHP in the Etsy API

Smarter Interfaces with jQuery (and Drupal)
Smarter Interfaces with jQuery (and Drupal)Smarter Interfaces with jQuery (and Drupal)
Smarter Interfaces with jQuery (and Drupal)aasarava
 
Evolution of API With Blogging
Evolution of API With BloggingEvolution of API With Blogging
Evolution of API With BloggingTakatsugu Shigeta
 
How To Make Money From Apps: Pirate metrics & growth hacking
How To Make Money From Apps: Pirate metrics & growth hackingHow To Make Money From Apps: Pirate metrics & growth hacking
How To Make Money From Apps: Pirate metrics & growth hackingPol Valls Soler
 
jQuery Performance Rules
jQuery Performance RulesjQuery Performance Rules
jQuery Performance Rulesnagarajhubli
 
Build REST API clients for AngularJS
Build REST API clients for AngularJSBuild REST API clients for AngularJS
Build REST API clients for AngularJSAlmog Baku
 
jQuery - Doing it right
jQuery - Doing it rightjQuery - Doing it right
jQuery - Doing it rightgirish82
 
Ep2014 hypermedia APIs
Ep2014 hypermedia APIsEp2014 hypermedia APIs
Ep2014 hypermedia APIsadrianavasiu
 
Powering Content Driven Applications with the World’s Most Popular CMS #ngconf
Powering Content Driven Applications with the World’s Most Popular CMS #ngconfPowering Content Driven Applications with the World’s Most Popular CMS #ngconf
Powering Content Driven Applications with the World’s Most Popular CMS #ngconfRoy Sivan
 
"Managing API Complexity". Matthew Flaming, Temboo
"Managing API Complexity". Matthew Flaming, Temboo"Managing API Complexity". Matthew Flaming, Temboo
"Managing API Complexity". Matthew Flaming, TembooYandex
 
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)James Titcumb
 
August 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle TwitterAugust 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle TwitterStraight North
 
FVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / WidgetsFVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / WidgetsPete DuMelle
 
Spyware/Malware FVCP
Spyware/Malware  FVCPSpyware/Malware  FVCP
Spyware/Malware FVCPPete DuMelle
 

Similaire à Concurrent PHP in the Etsy API (20)

Smarter Interfaces with jQuery (and Drupal)
Smarter Interfaces with jQuery (and Drupal)Smarter Interfaces with jQuery (and Drupal)
Smarter Interfaces with jQuery (and Drupal)
 
Paypal + symfony
Paypal + symfonyPaypal + symfony
Paypal + symfony
 
SlideShare Instant
SlideShare InstantSlideShare Instant
SlideShare Instant
 
SlideShare Instant
SlideShare InstantSlideShare Instant
SlideShare Instant
 
Evolution of API With Blogging
Evolution of API With BloggingEvolution of API With Blogging
Evolution of API With Blogging
 
How To Make Money From Apps: Pirate metrics & growth hacking
How To Make Money From Apps: Pirate metrics & growth hackingHow To Make Money From Apps: Pirate metrics & growth hacking
How To Make Money From Apps: Pirate metrics & growth hacking
 
jQuery Performance Rules
jQuery Performance RulesjQuery Performance Rules
jQuery Performance Rules
 
Web Scraping with PHP
Web Scraping with PHPWeb Scraping with PHP
Web Scraping with PHP
 
Build REST API clients for AngularJS
Build REST API clients for AngularJSBuild REST API clients for AngularJS
Build REST API clients for AngularJS
 
jQuery - Doing it right
jQuery - Doing it rightjQuery - Doing it right
jQuery - Doing it right
 
Ep2014 hypermedia APIs
Ep2014 hypermedia APIsEp2014 hypermedia APIs
Ep2014 hypermedia APIs
 
Powering Content Driven Applications with the World’s Most Popular CMS #ngconf
Powering Content Driven Applications with the World’s Most Popular CMS #ngconfPowering Content Driven Applications with the World’s Most Popular CMS #ngconf
Powering Content Driven Applications with the World’s Most Popular CMS #ngconf
 
"Managing API Complexity". Matthew Flaming, Temboo
"Managing API Complexity". Matthew Flaming, Temboo"Managing API Complexity". Matthew Flaming, Temboo
"Managing API Complexity". Matthew Flaming, Temboo
 
Further Php
Further PhpFurther Php
Further Php
 
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
 
August 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle TwitterAugust 10th, 2009 Pete De Mulle Twitter
August 10th, 2009 Pete De Mulle Twitter
 
FVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / WidgetsFVCP - Facebook , Twitter and Meetup API / Widgets
FVCP - Facebook , Twitter and Meetup API / Widgets
 
Spyware/Malware FVCP
Spyware/Malware  FVCPSpyware/Malware  FVCP
Spyware/Malware FVCP
 
Web development
Web developmentWeb development
Web development
 
Playing With The Web
Playing With The WebPlaying With The Web
Playing With The Web
 

Dernier

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
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...ICS
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
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.comFatema Valibhai
 
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 ApplicationsAlberto González Trastoy
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
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 PrecisionSolGuruz
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
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 🔝✔️✔️Delhi Call girls
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 

Dernier (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
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...
 
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
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
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
 
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
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
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
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
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 🔝✔️✔️
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 

Concurrent PHP in the Etsy API