SlideShare a Scribd company logo
1 of 24
PHP
(Personal Home Page)

Eng. Haitham Nabil

Projects Manager - Ministry of state for administrative development
Co-Founder – Open Egypt
Introduction
●

Static Pages

●
●

HTML
CSS
Java Script

●

●

<!DOCTYPE html>

●

<html>

●

<body>

●

<h1>My first PHP page</h1>

●

●

●

<?php
●

Dynamic Pages
●

PHP

echo "Hello World!";

●

?>

●

</body>

●

</html>
Basics
●

<?php
●

$color= "RED";

●

function myTest() {
–
–
–
–

$y=10;
echo "Variable color is: " . $color;
EcHo "<br>";
ECHO "Variable y is: $y";

●
●

myTest();

●

echo "Variable color is: $COLOR ";

●
●

}

echo "Variable y is: $y";

?>
Basics
●

<?php
●

for ($x=0; $x<=10; $x++) {
–

echo "The number is: $x <br>";

●

}

●

$x = 0;

●

while ($x <=10){
–

–
●
●

?>

}

If ($x % 2 == 0) {
● echo $x;
● $x++
}
Basics
●

<?php
●

$x = 0;

●

while ($x <=10){
–
–
–

●
●

?>

}

if ($x % 2 == 0) echo $x . “</br>”;
else echo “missed <br/>
$x++
Forms
●

<html>

●

<body>
●

<form action="welcome.php" method="post">
–
–

Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>

●

<input type="submit">

●

</form>

●

<a href=”welcome.php?name=hamada”>
Welcome Mido
</a>
–

●

●

</body>

●

</html>
Forms
●

welcome.php

●

<html>

●

<body>

●

●

Welcome <?php echo $_POST["name"]; ?><br>

●

Your email address is: <?php echo $_POST["email"]; ?>

●

●

</body>

●

</html>
Forms
●

welcome.php

●

<html>

●

<body>

●

●

Welcome <?php echo $_GET["name"]; ?><br>

●

Your email address is: <?php echo $_GET["email"]; ?>

●

●

</body>

●

</html>
Forms
●

welcome.php

●

<html>

●

<body>

●

●

Welcome <?php echo $_REQUEST["name"]; ?><br>

●

Your email address is: <?php echo $_REQUEST["email"]; ?>

●

●

</body>

●

</html>
Arrays
●

<?php
●

$colors=array("red","green","blue",255,0);

●

$arrlength=count($colors);

●

for($x=0;$x<$arrlength;$x++) {
–
–

●
●

?>

}

echo $colors[$x];
echo "<br>";
Arrays
●

<?php

●

$row=array(0=>”35”, "Peter"=>"35",1=>37, "Ben"=>"37","Joe"=>"43");

●

●

foreach($row as $x=>$x_value)

●

{

●

echo "Key=" . $x . ", Value=" . $x_value;

●

echo "<br>";

●

}

●

?>
MySQL Connectivity
●

<?php
●

$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
mysql_select_db("examples",$dbhandle);
–

●

●

$result = mysql_query("SELECT id, model,year FROM cars");

●

while ($row = mysql_fetch_array($result)) {
–

echo "ID:".$row{'id'}." Name:".$row{'model'}."Year: ".
$row{'year'}."<br>";

●

●

●

}
mysql_close($dbhandle);

?>
MySQL Connectivity - PDO
●

<?php
●

$dbh = new PDO("mysql:host=$hostname;dbname=examples",
$username, $password);

●

$stmt = $dbh->prepare("SELECT * FROM cars WHERE id = :id”);

●

$stmt->bindParam(':id', $_REQUEST['id'], PDO::PARAM_INT);

●

$result = $stmt->fetchAll();

●

foreach($result as $row) {
–

echo "ID:".$row{'id'}." Name:".$row{'model'}."Year: ".
$row{'year'}."<br>";

●

●

●

}
$dbh = null;

?>
Sessions and Cookies
●

<?php
●

●

session_start();

<?php
●

$_SESSION['views']=1;
●

●

?>

●

$expire=time()
+60*60*24*30;
setcookie("views", 1,
$expire);

●
●

●

●

●

●

●

?>

<html>

●

<html>

<body>

●

<body>

Pageviews

●

Pageviews

<?= $_SESSION['views'] ?>

●

<?= $_COOKIE['views'] ?>

</body>

●

</body>

</html>

●

</html>
Sessions and Cookies
●

<?php
●

session_start();

●

if(isset($_SESSION['views']))
unset($_SESSION['views']);
session_destroy();
–

●

●

?>

●

<?
●

●

?>

setcookie("views", "", time() - 1);
Example
Google App Engine (PHP)
●

SDK Installation

●

Engine APIs
●
●

Users API
Storage API

etc
Application Structure
●

●

●

Application Upload

●

MySQL Datastore
Google App Engine (PHP)
YAML
●

application: myapp

●

version: 1

●

runtime: php

●

api_version: 1

●

●

handlers:
●
●
●

- url: /.*
script: index.php
url: /admin/.*

●

script: admin.php

●

login: admin
Google App Engine (PHP)
upload your app
●

appcfg.py update myapp/

●
●

●

appcfg.py download_app -A <your_app_id> -V
<your_app_version> <output-dir>
MVC
Frameworks - CodeIgniter
Example
Road Map
●

Basics

●

Forms

●

Arrays

●

MySQL Connectivity

●

Sessions and Cookies

●

Google App Engine (PHP)
●

YAML

●

Upload your app

●

MVC

●

Frameworks - CodeIgniter
Thank You for your Attention
Slide share: http://www.slideshare.net/masterofpcs
Facebook: http://facebook.com/masterofpcs
E-mail: masterofpcs@yahoo.com

More Related Content

What's hot (20)

Amazing display of talent
Amazing display of talentAmazing display of talent
Amazing display of talent
 
TerminalでTwitter
TerminalでTwitterTerminalでTwitter
TerminalでTwitter
 
Borrados
BorradosBorrados
Borrados
 
Mootools selectors
Mootools selectorsMootools selectors
Mootools selectors
 
仕事で使ってるプラグイン
仕事で使ってるプラグイン仕事で使ってるプラグイン
仕事で使ってるプラグイン
 
Oh, you’re the NY times guy
Oh, you’re the NY times guyOh, you’re the NY times guy
Oh, you’re the NY times guy
 
Php (1)
Php (1)Php (1)
Php (1)
 
Codigos
CodigosCodigos
Codigos
 
Coding website
Coding websiteCoding website
Coding website
 
Pagination in PHP
Pagination in PHPPagination in PHP
Pagination in PHP
 
TICT #13
TICT #13TICT #13
TICT #13
 
TICT #11
TICT #11 TICT #11
TICT #11
 
Redis
RedisRedis
Redis
 
php Slideshare
php Slidesharephp Slideshare
php Slideshare
 
Perl调用微博API实现自动查询应答
Perl调用微博API实现自动查询应答Perl调用微博API实现自动查询应答
Perl调用微博API实现自动查询应答
 
Country State City Dropdown in PHP
Country State City Dropdown in PHPCountry State City Dropdown in PHP
Country State City Dropdown in PHP
 
Add edit delete in Codeigniter in PHP
Add edit delete in Codeigniter in PHPAdd edit delete in Codeigniter in PHP
Add edit delete in Codeigniter in PHP
 
hotel managment
hotel managmenthotel managment
hotel managment
 
4. Php MongoDB view_data
4. Php MongoDB view_data4. Php MongoDB view_data
4. Php MongoDB view_data
 
LAMP_TRAINING_SESSION_8
LAMP_TRAINING_SESSION_8LAMP_TRAINING_SESSION_8
LAMP_TRAINING_SESSION_8
 

Similar to Google Cloud Challenge - PHP - DevFest GDG-Cairo

Internationalizing CakePHP Applications
Internationalizing CakePHP ApplicationsInternationalizing CakePHP Applications
Internationalizing CakePHP ApplicationsPierre MARTIN
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkDirk Haun
 
Building a good quality WordPress theme
Building a good quality WordPress themeBuilding a good quality WordPress theme
Building a good quality WordPress themeNisha Singh
 
Drupal Development (Part 2)
Drupal Development (Part 2)Drupal Development (Part 2)
Drupal Development (Part 2)Jeff Eaton
 
Grok Drupal (7) Theming
Grok Drupal (7) ThemingGrok Drupal (7) Theming
Grok Drupal (7) ThemingPINGV
 
London XQuery Meetup: Querying the World (Web Scraping)
London XQuery Meetup: Querying the World (Web Scraping)London XQuery Meetup: Querying the World (Web Scraping)
London XQuery Meetup: Querying the World (Web Scraping)Dennis Knochenwefel
 
OWASP TOP 10 for PHP Programmers
OWASP TOP 10 for PHP ProgrammersOWASP TOP 10 for PHP Programmers
OWASP TOP 10 for PHP Programmersrjsmelo
 
Web scraping 101 with goutte
Web scraping 101 with goutteWeb scraping 101 with goutte
Web scraping 101 with goutteJoshua Copeland
 
jQuery Features to Avoid
jQuery Features to AvoidjQuery Features to Avoid
jQuery Features to Avoiddmethvin
 
Iterators & generators: practical uses in memory management
Iterators & generators: practical uses in memory managementIterators & generators: practical uses in memory management
Iterators & generators: practical uses in memory managementAdrian Cardenas
 
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)Michael Wales
 
07 Introduction to PHP #burningkeyboards
07 Introduction to PHP #burningkeyboards07 Introduction to PHP #burningkeyboards
07 Introduction to PHP #burningkeyboardsDenis Ristic
 

Similar to Google Cloud Challenge - PHP - DevFest GDG-Cairo (20)

PHP POWERPOINT SLIDES
PHP POWERPOINT SLIDESPHP POWERPOINT SLIDES
PHP POWERPOINT SLIDES
 
Internationalizing CakePHP Applications
Internationalizing CakePHP ApplicationsInternationalizing CakePHP Applications
Internationalizing CakePHP Applications
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application Framework
 
Building a good quality WordPress theme
Building a good quality WordPress themeBuilding a good quality WordPress theme
Building a good quality WordPress theme
 
Drupal Development (Part 2)
Drupal Development (Part 2)Drupal Development (Part 2)
Drupal Development (Part 2)
 
Php
PhpPhp
Php
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Grok Drupal (7) Theming
Grok Drupal (7) ThemingGrok Drupal (7) Theming
Grok Drupal (7) Theming
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
 
London XQuery Meetup: Querying the World (Web Scraping)
London XQuery Meetup: Querying the World (Web Scraping)London XQuery Meetup: Querying the World (Web Scraping)
London XQuery Meetup: Querying the World (Web Scraping)
 
OWASP TOP 10 for PHP Programmers
OWASP TOP 10 for PHP ProgrammersOWASP TOP 10 for PHP Programmers
OWASP TOP 10 for PHP Programmers
 
Web scraping 101 with goutte
Web scraping 101 with goutteWeb scraping 101 with goutte
Web scraping 101 with goutte
 
jQuery Features to Avoid
jQuery Features to AvoidjQuery Features to Avoid
jQuery Features to Avoid
 
Hardcore PHP
Hardcore PHPHardcore PHP
Hardcore PHP
 
Drupal 8 migrate!
Drupal 8 migrate!Drupal 8 migrate!
Drupal 8 migrate!
 
Session3
Session3Session3
Session3
 
Iterators & generators: practical uses in memory management
Iterators & generators: practical uses in memory managementIterators & generators: practical uses in memory management
Iterators & generators: practical uses in memory management
 
PHP Tutorial (funtion)
PHP Tutorial (funtion)PHP Tutorial (funtion)
PHP Tutorial (funtion)
 
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
Introduction to CodeIgniter (RefreshAugusta, 20 May 2009)
 
07 Introduction to PHP #burningkeyboards
07 Introduction to PHP #burningkeyboards07 Introduction to PHP #burningkeyboards
07 Introduction to PHP #burningkeyboards
 

More from Haitham Nabil

Open data in Egyptian Elections
Open data in Egyptian ElectionsOpen data in Egyptian Elections
Open data in Egyptian ElectionsHaitham Nabil
 
Devfest 2015 - VR & Google cardboard
Devfest 2015 - VR & Google cardboardDevfest 2015 - VR & Google cardboard
Devfest 2015 - VR & Google cardboardHaitham Nabil
 
Effective people management ITI mansoura
Effective people management ITI mansouraEffective people management ITI mansoura
Effective people management ITI mansouraHaitham Nabil
 
FOSS presentation to Egyptian government
FOSS presentation to Egyptian government FOSS presentation to Egyptian government
FOSS presentation to Egyptian government Haitham Nabil
 
Egypt Towards Open Source @ ITI cloud weekend
Egypt Towards Open Source @ ITI cloud weekendEgypt Towards Open Source @ ITI cloud weekend
Egypt Towards Open Source @ ITI cloud weekendHaitham Nabil
 
FOSS Arabic Presentation
FOSS Arabic PresentationFOSS Arabic Presentation
FOSS Arabic PresentationHaitham Nabil
 

More from Haitham Nabil (7)

Open data in Egyptian Elections
Open data in Egyptian ElectionsOpen data in Egyptian Elections
Open data in Egyptian Elections
 
Devfest 2015 - VR & Google cardboard
Devfest 2015 - VR & Google cardboardDevfest 2015 - VR & Google cardboard
Devfest 2015 - VR & Google cardboard
 
Haitham_Nabil_2015
Haitham_Nabil_2015Haitham_Nabil_2015
Haitham_Nabil_2015
 
Effective people management ITI mansoura
Effective people management ITI mansouraEffective people management ITI mansoura
Effective people management ITI mansoura
 
FOSS presentation to Egyptian government
FOSS presentation to Egyptian government FOSS presentation to Egyptian government
FOSS presentation to Egyptian government
 
Egypt Towards Open Source @ ITI cloud weekend
Egypt Towards Open Source @ ITI cloud weekendEgypt Towards Open Source @ ITI cloud weekend
Egypt Towards Open Source @ ITI cloud weekend
 
FOSS Arabic Presentation
FOSS Arabic PresentationFOSS Arabic Presentation
FOSS Arabic Presentation
 

Recently uploaded

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
 
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
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
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
 
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
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"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
 
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
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"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
 

Recently uploaded (20)

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
 
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
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
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
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
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
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"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
 
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!
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"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
 

Google Cloud Challenge - PHP - DevFest GDG-Cairo