SlideShare a Scribd company logo
1 of 78
Download to read offline
SPEAKING ELOQUENT
ELOQUENTLY
Stephen
Afam‐Osemene
https://stephenafamo.com
@StephenAfamO
Thinking Eloquently
Accessors & Mutators
Scopes
Collections
Serialization
Events & Observers
Relationships
Mutators
OUTLINE
THINKING
ELOQUENTLY
THINKING ELOQUENTLY
Eloquent is not just a fancy
way of specifying the table
for the Query Builder
A Model, should enable us
retrieve and manipulate
EVERY information related
to it
THINKING ELOQUENTLY
Data manupulation belongs
in the Model
A model should completely
define a unit of DATA
THINKING ELOQUENTLY
ACCESSORS &
MUTATORS
ACCESSORS
Accessors allow us to
format our data when we
retrieve them
Instead of
ACCESSORS
$user = User::find(1);
echo "http://myapp.com" . $user‐>avatar;
ACCESSORS
We do
class User extends Model
{
public function getAvatarAttribute($value)
{
return "http://myapp.com/" . $value;
}
}
MUTATORS
Mutators allow us to
format our data when we
set them
Instead of
$user‐>name = ucfirst("stephen");
MUTATORS
We do
class User extends Model
{
public function setNameAttribute($value)
{
$this‐>attributes['name'] = ucfirst($value);
}
}
MUTATORS
SCOPES
SCOPES
Scopes are ways for us to
store restraints which we
can use repeatedly
SCOPES ‐ LOCAL
Local scopes are specific to
the model.
Although, we can always
extend the class ;‐﴿
SCOPES ‐ LOCAL
Do this once
class Developer extends Model
{
public function scopeSenior($query)
{
return $query‐>where('yrs_of_exp', '>', 3);
}
}
SCOPES ‐ LOCAL
Use anytime!
$senior_devs = AppDeveloper::senior()‐>get()
SCOPES ‐ LOCAL
We can accept additional
parameters to make our
scopes dynamic
SCOPES ‐ LOCAL
class Developer extends Model
{
public function scopeUses($query, $language)
{
return $query‐>where('language', $language);
}
}
Make it dynamic
SCOPES ‐ LOCAL
$php_devs = AppDeveloper::uses('php)‐>get()
Use anytime!
SCOPES ‐ GLOBAL
We can define a scope that
will be applied to all
queries by our Model
SCOPES ‐ GLOBAL
use IlluminateDatabaseEloquentScope;
class VerifiedScope implements Scope
{
public function apply($builder, $model)
{
$builder‐>where('verified', true);
}
}
Define the scope
class Developer extends Model
{
protected static function boot()
{
parent::boot();
static::addGlobalScope(new VerifiedScope);
}
}
SCOPES ‐ GLOBAL
Include the scope
SCOPES ‐ GLOBAL
Now all queries from our
Developer model will
retrieve only verified
entries.
SCOPES ‐ GLOBAL
// Global scope automatically applied
$verified_devs = Developer::get()
// Query without the Verified global scope
Developer::withoutGlobalScope(VerifiedScope::class)‐>get()
// Query without any global scope
Developer:: withoutGlobalScopes()‐>get()
Define the scope
COLLECTIONS
COLLECTIONS
Anytime multiple records
are retrieved, it is returned
as a COLLECTION of
Models
COLLECTIONS
Collections are
supercharged php arrays.
learn about it
https://laravel.com/docs/5.4/collections
COLLECTIONS
We can define a custom
Collection Object to be
returned by our model.
COLLECTIONS
use IlluminateSupportCollection;
class CustomCollection extends Collection
{
public function additionalMethod($var)
{
// do something unique
}
}
Define our new collection class
COLLECTIONS
Overwrite the newCollection method
class Developer extends Model
{
public function newCollection(array $models = [])
{
return new CustomCollection($models);
}
}
SERIALIZATION
SERIALIZATION
We can easily convert our
Model into an array or
JSON of it's attributes
SERIALIZATION
Easy!
$developer = AppDeveloper ::find(1);
// For arrays
$developer_array = $develooper‐>toArray();
// For JSON
$developer_json = $developer‐>toJson()
Sometimes we need to hide stuff so...
SERIALIZATION
class User extends Model
{
protected $hidden = ['age', 'address'];
// OR
protected $visible = ['company', 'name'];
}
Other times we want to access hidden
stuff so...
SERIALIZATION
$user = AppUser::find(1);
// maybe when the user is viewing
$with_age = $user‐>makeVisible('age')‐>toArray();
// for corporate reasons maybe ˉ_(ツ)_/ˉ
$without_company = $user‐>makeHidden('company')‐>toArray;
What if we just want to add stuff?
SERIALIZATION
class User extends Model
{
protected $appends = ['birth_year'];
public function getIBirthYearAttribute()
{
return date("Y") ‐ $this‐>age;
}
}
EVENTS & OBSERVERS
EVENTS & OBSERVERS
Laravel events are a great
way to subscribe and listen
for various events that
occur in our application.
https://laravel.com/docs/5.4/events
EVENTS & OBSERVERS
Eloquent models fire
several events.
We can map these events
to our event classes
EVENTS & OBSERVERS
Define the events property to map events
class User extends Model
{
protected $events = [
'saved' => UserSaved::class,
'deleted' => UserDeleted::class,
];
}
EVENTS & OBSERVERS
Full list of Eloquent events
creating created
updating updated
saving saved
deleting deleted
restoring restored
EVENTS & OBSERVERS
Observers are classes
whose sole purpose is to
listen to eloquent events
EVENTS & OBSERVERS
Create the Observer class
use AppMeetup;
class MeetupObserver
{
public function saving (Meetup $meetup)
{
// do something for the 'saving' event
// you an have more functions with 'event' names
}
}
EVENTS & OBSERVERS
Register the observer in a ServiceProvider
use AppMeetup;
class MyServiceProvider
{
public function boot ()
{
Meetup::observe(MeetupObserver::class);
}
}
RELATIONSHIPS
RELATIONSHIPS
Eloquent makes is really
easy to define and access
related models
RELATIONSHIPS ‐ 1‐1
One‐to‐One relationships
are where each model is
tied to one of the other
type
users
id ‐ integer
name ‐ string
contact
id ‐ integer
user_id ‐ integer
phone ‐ string
email ‐ string
website ‐ string
Example Database schema
RELATIONSHIPS ‐ 1‐1
Defining one side of the relationship
class User extends Model
{
public function contact()
{
return $this‐>hasOne('AppContact');
}
}
RELATIONSHIPS ‐ 1‐1
Defining the other side
class Contact extends Model
{
public function user()
{
return $this‐>belongsTo('AppUser');
}
}
RELATIONSHIPS ‐ 1‐1
$user = AppUser::find(1);
// Instead of
$contact = AppContact::select('contacts.*')
‐>where('user_id', '=', $user‐>id)
‐>first();
// We do
$contact = $user‐>contact;
RELATIONSHIPS ‐ 1‐1
RELATIONSHIPS ‐ 1‐n
One‐to‐Many relationships
are where one model is
linked to many of another
type
Example Database schema
users
id ‐ integer
name ‐ string
contact
id ‐ integer
user_id ‐ integer
type ‐ string
value ‐ string
RELATIONSHIPS ‐ 1‐n
Defining one side of the relationship
class User extends Model
{
public function contacts()
{
return $this‐>hasMany('AppContact');
}
}
RELATIONSHIPS ‐ 1‐n
Defining the other side
class Contact extends Model
{
public function user()
{
return $this‐>belongsTo('AppUser');
}
}
RELATIONSHIPS ‐ 1‐n
RELATIONSHIPS ‐ 1‐n
$user = AppUser::find(1);
// Instead of
$contacts = AppContact::select('contacts.*')
‐>where('user_id', '=', $user‐>id)
‐>get();
// We do
$contacts = $user‐>contacts;
RELATIONSHIPS ‐ n‐n
Many‐to‐Many
relationships are more
complicated
Example Database schema
users
id ‐ integer
name ‐ string
contact
id ‐ integer
user_id ‐ integer
type_id ‐ integer
value ‐ string
type
id ‐ integer
name ‐ string
RELATIONSHIPS ‐ n‐n
Defining one side of the relationship
class User extends Model
{
public function types()
{
return $this‐>belongsToMany('AppType')
‐>withPivot('id', 'value');
}
}
RELATIONSHIPS ‐ n‐n
Defining the other side
class Type extends Model
{
public function users()
{
return $this‐>belongsToMany('AppUser');
}
}
RELATIONSHIPS ‐ n‐n
RELATIONSHIPS ‐ 1‐n
// Instead of
$contacts = AppContact::select('contacts.*')
‐>join('types', 'contact.type_id', '=', 'types.id')
‐>where('user_id', '=', $user‐>id)
‐>where('type.name', '=', 'phone')
‐>get();
// We do
$types = $user‐>types;
//access throught the pivot property
RELATIONSHIPS ‐ distant
Distant relations can be
accessed easily by using
the hasManyThrough﴾﴿
relationship
Example Database schema
users
id ‐ integer
name ‐ string
posts
id ‐ integer
user_id ‐ integer
title ‐ string
body ‐ string
comments
id ‐ integer
post_id ‐ integer
title ‐ string
body ‐ string
RELATIONSHIPS ‐ distant
Defining the relationship
class User extends Model
{
public function comments()
{
return $this‐>hasManyThrough('AppPost', 'AppComment);
}
}
RELATIONSHIPS ‐ distant
// Instead of
$comments = AppComment::select('comments.*')
‐>join('posts', 'comment.post_id', '=', 'posts.id')
‐>join('users', 'post.user_id', '=', 'users.id')
‐>where('user_id', '=', $user‐>id)
‐>get();
// We do
$comments = $user‐>comments;
RELATIONSHIPS ‐ distant
RELATIONSHIPS ‐ morph
Polymorphic relationships
can save us from creating
many similar tables.
RELATIONSHIPS ‐ morph
We can allow more than
one model to relate with
our model.
Many applications
Example Database schema
users
id ‐ integer
name ‐ string
groups
id ‐ integer
name ‐ string
pictures
id ‐ integer
path‐ string
owner_id ‐ integer
owner_type ‐ string
RELATIONSHIPS ‐ morph
RELATIONSHIPS ‐ notes
Dynamic properties
$post‐>comments; //get all comments as a collection
$post‐>comments(); //returns a relationship class
// Can be used as query builders
$post‐>comments()‐>where('like', '>', 5);
RELATIONSHIPS ‐ notes
Check if it exists
Post::has('comments', '>=', 3)‐>get();
Post::doesntHave('comments')‐>get();
RELATIONSHIPS ‐ notes
Eager Loading
// Instead of this
$users = AppUser::all();
foreach ($users as $user) {
echo $user‐>contact‐>phone;
}
// We do this
$user = AppUser::with('contact')‐>get();
Inserting & Updating
create﴾﴿ save﴾﴿
associate﴾﴿ dissociate﴾﴿
attach﴾﴿ detach﴾﴿
sync﴾﴿ toggle﴾﴿
RELATIONSHIPS ‐ notes
We have many ways to modify relationships
RELATIONSHIPS ‐ notes
So many more lovely
capabilities.
https://laravel.com/docs/5.4/
eloquent‐relationships
QUESTIONS?
Twitter: @StephenAfamO
GitHub: @StephenAfamO
Website: https://stephenafamo.com
THANK YOU
Twitter: @StephenAfamO
GitHub: @StephenAfamO
Website: https://stephenafamo.com

More Related Content

What's hot

Software Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill SparksSoftware Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill SparksPhill Sparks
 
Modular application development using unlocked packages
Modular application development using unlocked packagesModular application development using unlocked packages
Modular application development using unlocked packagesMohith Shrivastava
 
What-is-Laravel-23-August-2017.pptx
What-is-Laravel-23-August-2017.pptxWhat-is-Laravel-23-August-2017.pptx
What-is-Laravel-23-August-2017.pptxAbhijeetKumar456867
 
API & Backend Integration
API & Backend IntegrationAPI & Backend Integration
API & Backend IntegrationElewayte
 
Oracle REST Data Services: Options for your Web Services
Oracle REST Data Services: Options for your Web ServicesOracle REST Data Services: Options for your Web Services
Oracle REST Data Services: Options for your Web ServicesJeff Smith
 
스프링5 웹플럭스와 테스트 전략
스프링5 웹플럭스와 테스트 전략스프링5 웹플럭스와 테스트 전략
스프링5 웹플럭스와 테스트 전략if kakao
 
Go swagger tutorial how to create golang api documentation using go swagger (1)
Go swagger tutorial how to create golang api documentation using go swagger (1)Go swagger tutorial how to create golang api documentation using go swagger (1)
Go swagger tutorial how to create golang api documentation using go swagger (1)Katy Slemon
 
Introduction to PL/SQL
Introduction to PL/SQLIntroduction to PL/SQL
Introduction to PL/SQLKailash N
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosphelypploch
 
RESTful services
RESTful servicesRESTful services
RESTful servicesgouthamrv
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsTessa Mero
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel frameworkAhmad Fatoni
 
Spring uygulamaların exception handling yönetimi
Spring uygulamaların exception handling yönetimiSpring uygulamaların exception handling yönetimi
Spring uygulamaların exception handling yönetimiSistek Yazılım
 

What's hot (20)

Rest API
Rest APIRest API
Rest API
 
Laravel Eloquent ORM
Laravel Eloquent ORMLaravel Eloquent ORM
Laravel Eloquent ORM
 
Software Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill SparksSoftware Design Patterns in Laravel by Phill Sparks
Software Design Patterns in Laravel by Phill Sparks
 
Introduction to Django Rest Framework
Introduction to Django Rest FrameworkIntroduction to Django Rest Framework
Introduction to Django Rest Framework
 
Modular application development using unlocked packages
Modular application development using unlocked packagesModular application development using unlocked packages
Modular application development using unlocked packages
 
MVC in PHP
MVC in PHPMVC in PHP
MVC in PHP
 
What-is-Laravel-23-August-2017.pptx
What-is-Laravel-23-August-2017.pptxWhat-is-Laravel-23-August-2017.pptx
What-is-Laravel-23-August-2017.pptx
 
API & Backend Integration
API & Backend IntegrationAPI & Backend Integration
API & Backend Integration
 
Oracle REST Data Services: Options for your Web Services
Oracle REST Data Services: Options for your Web ServicesOracle REST Data Services: Options for your Web Services
Oracle REST Data Services: Options for your Web Services
 
Laravel Tutorial PPT
Laravel Tutorial PPTLaravel Tutorial PPT
Laravel Tutorial PPT
 
스프링5 웹플럭스와 테스트 전략
스프링5 웹플럭스와 테스트 전략스프링5 웹플럭스와 테스트 전략
스프링5 웹플럭스와 테스트 전략
 
Go swagger tutorial how to create golang api documentation using go swagger (1)
Go swagger tutorial how to create golang api documentation using go swagger (1)Go swagger tutorial how to create golang api documentation using go swagger (1)
Go swagger tutorial how to create golang api documentation using go swagger (1)
 
Introduction to PL/SQL
Introduction to PL/SQLIntroduction to PL/SQL
Introduction to PL/SQL
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutos
 
RESTful services
RESTful servicesRESTful services
RESTful services
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel framework
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Spring uygulamaların exception handling yönetimi
Spring uygulamaların exception handling yönetimiSpring uygulamaların exception handling yönetimi
Spring uygulamaların exception handling yönetimi
 
REST API
REST APIREST API
REST API
 

Similar to Laravel - Speaking eloquent eloquently

PHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better CodePHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better CodeSWIFTotter Solutions
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For BeginnersJonathan Wage
 
Obect-Oriented Collaboration
Obect-Oriented CollaborationObect-Oriented Collaboration
Obect-Oriented CollaborationAlena Holligan
 
Using and reusing CakePHP plugins
Using and reusing CakePHP pluginsUsing and reusing CakePHP plugins
Using and reusing CakePHP pluginsPierre MARTIN
 
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...jaxconf
 
Models Best Practices (ZF MVC)
Models Best Practices (ZF MVC)Models Best Practices (ZF MVC)
Models Best Practices (ZF MVC)eddiejaoude
 
Demystifying Object-Oriented Programming - PHP UK Conference 2017
Demystifying Object-Oriented Programming - PHP UK Conference 2017Demystifying Object-Oriented Programming - PHP UK Conference 2017
Demystifying Object-Oriented Programming - PHP UK Conference 2017Alena Holligan
 
Sencha Touch - Introduction
Sencha Touch - IntroductionSencha Touch - Introduction
Sencha Touch - IntroductionABC-GROEP.BE
 
MVC on the server and on the client
MVC on the server and on the clientMVC on the server and on the client
MVC on the server and on the clientSebastiano Armeli
 
Demystifying Object-Oriented Programming - ZendCon 2016
Demystifying Object-Oriented Programming - ZendCon 2016Demystifying Object-Oriented Programming - ZendCon 2016
Demystifying Object-Oriented Programming - ZendCon 2016Alena Holligan
 
A resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangleA resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangleAkihito Koriyama
 
Services Drupalcamp Stockholm 2009
Services Drupalcamp Stockholm 2009Services Drupalcamp Stockholm 2009
Services Drupalcamp Stockholm 2009hugowetterberg
 
Demystifying Object-Oriented Programming - Midwest PHP
Demystifying Object-Oriented Programming - Midwest PHPDemystifying Object-Oriented Programming - Midwest PHP
Demystifying Object-Oriented Programming - Midwest PHPAlena Holligan
 
Angular.js Primer in Aalto University
Angular.js Primer in Aalto UniversityAngular.js Primer in Aalto University
Angular.js Primer in Aalto UniversitySC5.io
 
PHP: GraphQL consistency through code generation
PHP: GraphQL consistency through code generationPHP: GraphQL consistency through code generation
PHP: GraphQL consistency through code generationAlexander Obukhov
 
Advanced Interfaces and Repositories in Laravel
Advanced Interfaces and Repositories in LaravelAdvanced Interfaces and Repositories in Laravel
Advanced Interfaces and Repositories in LaravelJonathan Behr
 
Demystifying Object-Oriented Programming - Lone Star PHP
Demystifying Object-Oriented Programming - Lone Star PHPDemystifying Object-Oriented Programming - Lone Star PHP
Demystifying Object-Oriented Programming - Lone Star PHPAlena Holligan
 

Similar to Laravel - Speaking eloquent eloquently (20)

PHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better CodePHP: 4 Design Patterns to Make Better Code
PHP: 4 Design Patterns to Make Better Code
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
 
Obect-Oriented Collaboration
Obect-Oriented CollaborationObect-Oriented Collaboration
Obect-Oriented Collaboration
 
RESTful web services
RESTful web servicesRESTful web services
RESTful web services
 
Using and reusing CakePHP plugins
Using and reusing CakePHP pluginsUsing and reusing CakePHP plugins
Using and reusing CakePHP plugins
 
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
 
Models Best Practices (ZF MVC)
Models Best Practices (ZF MVC)Models Best Practices (ZF MVC)
Models Best Practices (ZF MVC)
 
Demystifying Object-Oriented Programming - PHP UK Conference 2017
Demystifying Object-Oriented Programming - PHP UK Conference 2017Demystifying Object-Oriented Programming - PHP UK Conference 2017
Demystifying Object-Oriented Programming - PHP UK Conference 2017
 
Sencha Touch - Introduction
Sencha Touch - IntroductionSencha Touch - Introduction
Sencha Touch - Introduction
 
MVC on the server and on the client
MVC on the server and on the clientMVC on the server and on the client
MVC on the server and on the client
 
Demystifying Object-Oriented Programming - ZendCon 2016
Demystifying Object-Oriented Programming - ZendCon 2016Demystifying Object-Oriented Programming - ZendCon 2016
Demystifying Object-Oriented Programming - ZendCon 2016
 
A resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangleA resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangle
 
Services Drupalcamp Stockholm 2009
Services Drupalcamp Stockholm 2009Services Drupalcamp Stockholm 2009
Services Drupalcamp Stockholm 2009
 
Demystifying Object-Oriented Programming - Midwest PHP
Demystifying Object-Oriented Programming - Midwest PHPDemystifying Object-Oriented Programming - Midwest PHP
Demystifying Object-Oriented Programming - Midwest PHP
 
Angular.js Primer in Aalto University
Angular.js Primer in Aalto UniversityAngular.js Primer in Aalto University
Angular.js Primer in Aalto University
 
Laravel
LaravelLaravel
Laravel
 
PHP: GraphQL consistency through code generation
PHP: GraphQL consistency through code generationPHP: GraphQL consistency through code generation
PHP: GraphQL consistency through code generation
 
Advanced Interfaces and Repositories in Laravel
Advanced Interfaces and Repositories in LaravelAdvanced Interfaces and Repositories in Laravel
Advanced Interfaces and Repositories in Laravel
 
AngularJs-training
AngularJs-trainingAngularJs-training
AngularJs-training
 
Demystifying Object-Oriented Programming - Lone Star PHP
Demystifying Object-Oriented Programming - Lone Star PHPDemystifying Object-Oriented Programming - Lone Star PHP
Demystifying Object-Oriented Programming - Lone Star PHP
 

Recently uploaded

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Recently uploaded (20)

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

Laravel - Speaking eloquent eloquently