SlideShare a Scribd company logo
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Web Technologies
Web programming (II)
____ _ _ ____
( _ ( )_( )( _ 
)___/ ) _ ( )___/
(__) (_) (_)(__)
Web application development in PHP
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
“Poor is the pupil
who does not surpass his master.”
Leonardo da Vinci
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
How an application server is used
for Web application development?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Goal:
increasing the efficiency of all processes involved
into the Web application development
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Integrated in one/many Web servers
also, can provide its own Web server
or runtime environment
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Can encourage or enforce an architectural vision
regarding Web application development
typical situation:
MVC or variants
(re)visit
previous lecture
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Simplifies the invocation of programs (scripts)
concerning a Web application
dynamic content generation on the server side
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Aspects of interest:
programming language(s)
core API
data model persistent storage
Web interaction
cookies and sessions
development environments + frameworks, components,…
specific characteristics
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Programming language(s)
C# et al. (.NET platform) – ASP.NET
Java (J2EE) – GlassFish, JBoss, Tomcat, WebSphere, WildFly,…
JavaScript – Node.js
PHP – PHP
Python – Gunicorn, Tornado, uWSGI, Waitress etc.
(according to WSGI – Python Web Server Gateway Interface spec.)
Ruby – Passenger, Puma, Thin, Unicorn,…
(implements Rack specification)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Programming language(s)
could be dynamic – e.g., Python, Ruby
interpreted and/or compiled
commonly, intermediate code generation is preferred:
IL (Intermediate Language) – C#, Java, Scala,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Core API
gives the language + application server “power”
(via predefined functions/classes)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Core API
gives the language + application server “power”
(via predefined functions/classes)
security, consistency, access to the operating
system/runtime resources, platform independence, etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Persistent storage
in relational databases – via SQL
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Persistent storage
in relational databases – via SQL
examples:
ADO.NET for ASP.NET
Java – JDBC (Java DataBase Connectivity)
PHP – predefined functions/modules, plus included
libraries (SQLite + mysqli) or various extensions
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Persistent storage
in relational databases – via SQL
ORM (Object-Relational Mapping)
Go – Xorm framework
Java – JPA (Java Persistence API) specification
+ implementations: EclipseLink, Hibernate, OpenJPA,…
Node.js – Sequelize library
PHP – frameworks: Doctrine, Propel, etc.
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Persistent storage
in relational databases – via SQL
Active Record used in ORM
examples:
active_record (Node.js module), Castle Project (.NET),
DBIx::Class (Perl), Orator (Python),
Play Framework (Java, Scala), Rails (Ruby)
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Persistent storage
adopting tree-based models: XML
(semi)structured data
transformations in other formats: XPath, XSLT
processing: DOM, SAX, SimpleXML, etc.
data validation: DTD, XML Schema, RELAX,…
querying: XQuery next
lectures
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Persistent storage
using other non-relational paradigms
(based on graphs and or key—value)
distributed on Internet, scalable – NoSQL
http://nosql.mypopescu.com/
examples:
Cassandra, CouchDB, Hadoop, MarkLogic, MongoDB, Neo4j, etc.
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
facilitated by specific controls specified in the source-code
running on the server
can emulates HTML form fields and/or provide new
interactive controls – e.g., calendar, slideshow,…
client-specific HTML (+JavaScript) code generation
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
examples:
ASP.NET (<asp:control> – e.g., FileUpload, ListBox, Table,...)
PRADO framework (PHP)
formidable, form-data, forms – Node.js modules
Java platform: JSF (JavaServer Faces)
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
encourages the use of templates based on a specific
processor – Web template system
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
Web template system
using specifications of content presentation
(a Web template), persistent data (e.g., retrieved from
a database) is used by a processor (template engine)
in order to generate HTML documents or other formats
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
implementare
example:
the specification of content presentation
(HTML template – .tpl) includes variable names
– here, using [@variable] syntax – that will be substituted by
actual values obtained from the program as a result
of the Web template system invocation
N.Freitas(2008)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
Web template system
on the server
Apache FreeMarker (Java), Blade (PHP), Haml (Ruby),
Mustache (C++, JS, PHP, Python, Scala,…), Razor (.NET),
Smarty (PHP), Tonic (PHP), Velocity (Java), XSLT (XML)
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
Web template system
on the client
available for JavaScript:
Dust.js, EJS, HandleBars, Mustache, Nunjucks,…
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Web interaction
asynchronous data transfer with Ajax et al.
possibly, via additional frameworks/modules/classes
see upcoming
lectures
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Used in combination with various frameworks
Dweb, vibe.d (D)
Chicago Boss, Phoenix, Sugar (Erlang/Elixir)
Beego, Buffalo, Gin, Gorilla, Revel (Go)
Apache Struts, Apache Wicket, Grails, Spring MVC, Vaadin (Java)
Vert.x (Java, JavaScript, Ruby, Scala etc.)
Derby, Express, Locomotive, Meteor (Node.js)
Catalyst, CGI::Application, Mojolicious (Perl)
Django, TurboGears, web2py (Python)
Ruby on Rails, Sinatra (Ruby)
Iron, Rocket (Rust)
details at https://en.wikipedia.org/wiki/Comparison_of_web_frameworks
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
web application server
Support for software engineering
N-tier applications
could stimulate the use of design patterns:
Container, MVC (Model-View-Controller),
Proxy, Configuration Parameters, Invocation Context,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
proiectare
example: Spaghetti Code anti-pattern
usually, specific to Web applications which “mixed-up”
business logic with content presentation (view)
and data access mechanism
https://sourcemaking.com/antipatterns/spaghetti-code
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Essential information about PHP?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php
History
Important characteristics
PHP as programming language
paradigms: procedural, object-oriented, functional
PHP as Web development platform
interaction, database access, frameworks,
libraries and tools, case studies
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Personal Home Page Tools (1995)
Rasmus Lerdorf
PHP 3 (1998)
developed by Zend – Zeev Suraski & Andi Gutmans
PHP 4 (2000)
support for object-oriented programming
PHP 5 (2004) – most recent version: PHP 5.6 (2014)
new facilities inspired by Java
PHP 6 (currently dead)
phpngPHP 7 (2015), PHP 7.1 (2016)
strong typing, Unicode support, performance,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: characteristics
Web application server
provides a script-based interpreted
programming language
could be directly included into HTML documents
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
PHP is a procedural language, offering support for
other programming paradigms
(object-oriented and, recently, functional)
php: characteristics
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
PHP is a procedural language, offering support for
other programming paradigms
(object-oriented and, recently, functional)
could be used as a general purpose language, too
php: characteristics
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Syntax inspired by C, Perl and Java – case sensitive
commonly, PHP code files use .php extension
php: characteristics
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Freely available – open source – for various platforms
(Linux, Windows, macOS, UNIX)
and Web servers: Apache, IIS, nginx,…
www.php.net
www.zend.com
php: characteristics
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
PHP processor (engine) usage
Web
Client
HTTP request
(GET, POST,...)
response
(HTML, PNG, SVG,...
representation)
Zend
processor
(engine)
PHP
application
server
.php
programs

(external) resources
Web Server
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
PHP processor (engine) usage
Web
Client
HTTP request
(GET, POST,...)
response
(HTML, PNG, SVG,...
representation)
Zend
processor
(engine)
PHP
application
server
.php
programs

(external) resources
Web Server
possibly, various extensions
(modules) could be integrated
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
A PHP program is interpreted by Zend Engine 2
which generate internal instructions – opcodes
http://www.php.net/manual/en/internals2.opcodes.php
http://www.phpinternalsbook.com/
php: characteristics
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: caracterizare
interpreting a PHP program vs. compiling Java code
PHP code is interpreted each time
when it must be executed
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
line # * op fetch ext return operands
----------------------------------------------------------------------------
3 0 > EXT_NOP
1 RECV !0
5 2 EXT_STMT
3 ADD_STRING ~0 'Hello+'
4 ADD_VAR ~0 ~0, !0
5 ECHO ~0
6 6 EXT_STMT
7 > RETURN null
<?php
class Greeting {
public function sayHello ($to)
{
echo "Hello $to";
}
}
$greeter = new Greeting ();
$greeter->sayHello ("World");
?>
opcodes
transforming PHP code
into opcodes
http://tinyurl.com/zn6c53x
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: caracterizare
for efficiency,
the opcodes
are stored into
shared memory
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: caracterizare
various behaviors of PHP platforms,
including loaded extensions (.so/.dll shared libraries),
could be globally configured by using the php.ini file
precision = 14 ; precision for float values – details at http://php.net/precision
safe_mode = Off ; processing control – http://php.net/safe-mode
max_execution_time = 30 ; max. number of seconds allocated to program execution
memory_limit = 128M ; max. size of the memory allowed for a script
post_max_size = 8M ; max. size of data transmitted via POST method
default_mimetype = "text/html" ; default MIME type for the content generated by a script
file_uploads = On ; file uploads are permitted
upload_max_filesize = 32M ; max. size of an uploaded file
allow_url_fopen = On ; opening files specified by a URL is allowed
session.use_cookies = 1 ; Web sessions will be stored in cookies
session.name = PHPSESSID ; default cookie name regarding Web sessions
…
; specifying the extensions loaded during the PHP server application initialization
extension=php_pdo_sqlite.dll
extension=php_mysqli.dll
extension=php_soap.dll
…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
PHP program execution behavior could be adjusted
via declare directive – possibly, for a block of code
// charset encoding used for generated content
declare (encoding='ISO-8859-2');
// strict datatype checking – PHP 7
declare (strict_types=1);
php: characteristics
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
To increase performance,
the just-in-time compilation could be adopted
HHVM – HipHop Virtual Machine (Facebook)
PHP source-codeopcodesmachine code (e.g., x86-64)
php: characteristics
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
To increase performance,
the just-in-time compilation could be adopted
HHVM – HipHop Virtual Machine (Facebook)
used by Baidu, Box, Etsy, Facebook, Wikipedia,…
www.hhvm.com
php: characteristics
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: characteristics
User interaction:
retrieving the values entered into Web form fields
cookies
sessions
user authentication
access to global variables – created “on the fly”
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: characteristics
Features regarding Web technologies:
URL processing
HTTP support – including cURL
caching via memcached
Web service development by using SOAP and REST
…and others
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: characteristics
Support for database access:
abstract layers
DBAL (DataBase Abstraction layer)
iODBC (Independent Open DataBase Connectivity)
PDO (PHP Data Objects)
www.phptherightway.com/#databases_abstraction_layers
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: characteristics
Support for database access:
specific to a database server
relational: DB2, MySQL, Oracle, PostgreSQL, SQLite,…
NoSQL – e.g., MongoDB
consult http://www.phptherightway.com/#databases
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: characteristics
Resource content processing:
audio files – via various libraries: ktaglib, oggvorbis, etc.
bzip2, LZF, RAR, ZIP, ZLIB archives
PDF documents
images – useful libraries: Cairo, GD, EXIF, ImageMagick
JSON files
XML documents – creating, processing, validating, etc.
credit cards
...
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: characteristics
Support for system resources + Internet:
file systems, including FTP
processes – with libevent, pthreads, Gearman,...
event processing – via Event
sockets
e-mail – e.g., IMAP, POP3
...and many others
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
(instead of) break
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
PHP as procedural programming language
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – scalars
boolean
TRUE or FALSE
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – scalars
integer
values specified
in 10 or 16 (hexa), 8 (octal), 2 (binary) bases
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – scalars
float
real numbers
usually, conforming to IEEE 754 (double precision)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – scalars
float
real numbers
usually, conforming to IEEE 754 (double precision)
special value: NAN (not a number) constant
useful predefined functions: is_nan(), is_finite(), is_infinite()
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – scalars
string
ASCII character strings
(only PHP 7 provides native support for Unicode)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – scalars
string
ASCII character strings
(only PHP 7 provides native support for Unicode)
same as C, some escape characters could be used
n r t e  $ "
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – scalars
string
common delimiters:
" or '
string size could not be more than 2 GB
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – composites
array
association between values (of any type)
and keys (of integer or string types)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – composites
array
there is no clear distinction
between indexed and associative arrays
an array could represent various data structures:
list (vector), hash table (an implementation of a map),
dictionary, collection, stack, queue,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – composites
array
// an indexed array (vector of values)
$gifts = array ("scooter", "laptop", "ball", "axe");
// associative array – (key, value) pairs
array ( "name" => "Tux", "size" => 17, "offer" => TRUE );
// simplified syntax (accepted for PHP 5.4+)
[ "name" => "Tux", "size" => 17, "offer" => TRUE ];
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – composites
object
instance of a class
created by new operator
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – special
resource
denotes a reference to an external resource
examples: bzip2, curl, ftp, gd, mysql link, mysql result,
pdf document, printer, stream, socket, xml, zlib
a resource is created by using specific functions
e.g., a stream resource is initiated by the fopen() function
and used by fread(), feof(), fgets(),... functions
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – special
resource
denotes a reference to an external resource
predefined functions:
is_resource()
get_resource_type()
details at http://www.php.net/manual/en/resource.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: data types – special
null
specifies the NULL value
representing a variable that has no value
useful functions:
is_null()
unset()
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: variables
Variables have names composed by letters, digits,
and _ characters prefixed by the $ symbol
could store values – having a specific data type –
or references
http://php.net/manual/en/language.variables.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: variables
Variables are created “on the fly”
data type is inferred according to the context
data type automatic conversion (type casting)
is similar to the C language
$age = 21; /* a variable of Integer type */
$connected = TRUE; # a Boolean datatype one
$prefer["color"] = "gray"; // an associative array
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: variables
Useful predefined functions:
var_dump()
settype()
is_bool(), is_int(), is_float(), is_array(), is_string()
is_scalar(), is_numeric()
…and others
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: variables
Scope
in order to be accessed in the entire program,
the variables should be declared as global
http://php.net/manual/en/language.variables.scope.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
$score = 33;
function getScore () {
echo "Current score: " . $score;
}
getScore();
Undefined variable:
score in prog.php on line 4
$score = 33;
function getScore () {
global $score;
echo "Current score: " . $score;
// similar to $GLOBALS["score"]
}
getScore();
Current score: 33
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: variables
Scope
a variable could be also declared as static
exists only in a local scope (e.g., inside a function),
but it does not lose its value
when program execution leaves this scope
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined variables
Variables available in the whole program
(superglobals)
$GLOBALS [ ]
an associative array containing references to
all variables defined as global
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined variables
$_SERVER [ ]
$_GET [ ] $_POST [ ] $_FILES [ ] $_REQUEST [ ]
$_SESSION [ ]
$php_errormsg
$argc $argv
...
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined variables
$_SERVER [ ]
$_GET [ ] $_POST [ ] $_FILES [ ] $_REQUEST [ ]
$_SESSION [ ]
$php_errormsg
$argc $argv
...
Web server
specific data
client specific
HTTP requestsdata about
Web session
reported
error message
command line
arguments
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: constants
Specified with define ( )
globally available in the program
define ("MAX_SIZE", "15");
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined constants
Examples:
PHP_VERSION
PHP_OS
PHP_EOL
PHP_INT_MAX
PHP_INT_SIZE
DIRECTORY_SEPARATOR
TRUE
FALSE
NULL
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined constants
Error reporting control:
E_ERROR fatal errors (script execution is ended)
E_WARNING warnings
E_PARSE code processing errors (parsing)
E_NOTICE notifications at runtime
E_STRICT suggestions on code improvement
E_DEPRECATED notifications about deprecated aspects
www.php.net/manual/en/errorfunc.constants.php
www.phptherightway.com/#errors_and_exceptions
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined constants
Runtime environment offers access to “magical” constants
their values could be used in a given program
__LINE__
__FILE__
__DIR__
__FUNCTION__
__CLASS__
__TRAIT__
__METHOD__
__NAMESPACE__
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: operators
Majority of them are similar to the C language ones
arithmetic: + - * / % ++ --
value assignation: = and => (for arrays)
reference assignation: =&
bit-wise: & | ^ << >>
comparisons: == === != <> !== < > <= >= ?: ?? <=>
error reporting control: @
logic (Booleans): and or xor ! && ||
string (concatenation) – same as Perl: . .=
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: operators
In PHP 7, new operators could be used:
<=> (spaceship)
comparing expressions (of a scalar type),
and returning -1, 0 or 1
echo 15.5 <=> 15.5; // 0 (equality)
echo 15.5 <=> 16.5; // -1 (right value is greater)
echo 17.5 <=> 15.5; // 1 (left value is greater)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: operators
In PHP 7, new operators could be used:
?? (null coalescing)
offers the value of first operand if exists and it’s not NULL,
otherwise returns the value of second operand
// as user name, we’ll use the value provided by a Web form
// (retrieved with GET or POST); if it not exists, the value is 'tux'
$username = $_GET['user'] ?? $_POST['user'] ?? 'tux';
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: control statements
if, switch, while, do, for, break, continue
similar to the C instructions
if (!$name) {
echo ("No name was given…");
} else {
echo ("Welcome, " . $name . "!n");
}
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: example
<?php
// filling up an array with values from 1 to 10
for ($index = 1; $index <= 10; $index++) {
$values[$index] = $index;
}
// computing the sum of values
$sum = 0;
foreach ($values as $item)
$sum += $item;
/* showing obtained sum on the standard output
to be sent to the Web client */
echo ("<p>Sum of first 10 numbers is <strong>" .
$sum . "</strong>.</p>");
?>
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Invoking (running) the PHP program
from the command line:
saving source-code into a text file – values.php
calling PHP interpreter from the command line interface
php values.php
<p>Sum of first 10 numbers is <strong>55</strong>.</p>
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Invoking (running) the PHP program
on the Web server:
placing the source code – having read & execution rights
in the browser, specifying the URL to the program
to be invoked via GET method of the HTTP protocol
result generated
by the script
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: control statements
Including source-code from other files
(support for modularization)
include
search source file in predefined directories specified
via include_path and evaluates it
if file not exists, a warning is issued
include_once – to include it only once
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: control statements
Including source-code from other files
(support for modularization)
require
search source file in predefined directories specified
via include_path and evaluates it
if file not exists, a fatal error is signaled
require_once – to include it only once
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
User defined functions:
function sendMessage ($to="", $from="", $subject="Web") {
// body…
}
php: functions
parameters
with default
values
http://php.net/manual/en/language.functions.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
define ('MAX', 10); // maximum number of values
function square ($number) { // a function to square a number
return $number * $number;
}
$number = 0;
while ($number < MAX) {
$number++; // incrementing…
if ($number % 2) // is odd number...
continue; // continuing to next iteration
// it is an even number, so showing its square
echo "Square $number is " . square ($numar) . "n";
} // end of while
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
User defined functions:
php: functions
a function name is case-insensitive
parameters could be indicated by reference – prefixed by &
for PHP 5.6+, a variable number of parameters
is indicated by …
http://php.net/manual/en/functions.arguments.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: funcții
<?php
declare (strict_types=1);
// arguments should be integers, returned value must be of integer type
function add (int ...$numbers): int {
$sum = 0;
foreach ($numbers as $number) {
$sum += $number;
}
return $sum;
}
echo add (7, 3, 74, 1);
echo add (pi (), '?');
?>
PHP 7: data type could be specified for each argument and
for the value returned by function
(scalar type declarations)
85
Fatal error: Uncaught TypeError:
Argument 1 passed to add() must
be of the type integer, float given
Next TypeError: Argument 2 passed
to add() must be of the type integer,
string given
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Beginning with PHP 5.3,
anonymous functions could be defined
functional programming (e.g., closures)
$hello = function ($name) { // variable type is function
printf ("Hello %s...n", $name);
};
$hello ('world');
$hello ('Tuxy');
php: functions
vezi www.phptherightway.com/pages/Functional-Programming.html
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
mathematical & conversion
character string manipulation
array processing
access to resources and file processing
database manipulation
regarding network connections
XML, PDF, JPEG,... resource processing
operating system specific
general purpose
details at http://php.net/manual/en/funcref.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
Math:
abs(), mod(), fmod()
ceil(), floor(), round(), max(), min()
exp(), log10(), log()
pow(), sqrt()
sin(), cos(), tan(), asin(), …, sinh(), …, pi()
rand(), srand()
bindec(), octdec(), dechex(),…, base_convert()
is_finite(), is_infinite(), is_nan()
see also http://php.net/manual/en/refs.math.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
Strings:
echo(), print(), printf(), sprintf() etc.
strlen(), chr(), ord(), substr(), strstr(), strpos(),…
strcmp(), strcasecmp(), strnatcmp() etc.
strcat(), str_replace(), str_ireplace(), strrev() etc.
trim(), ltrim(), rtrim()
explode(), implode(), split(), join(), strtok()
details about text processing:
http://php.net/manual/en/refs.basic.text.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
Regular expressions:
conforming to POSIX standard
ereg(), ereg_replace(), split() etc.
Perl compatible – PCRE: http://www.pcre.org/
preg_filter(), preg_grep(), preg_match(), preg_split(),…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: funcții predefinite
testing and debugging regular expressions on the Web
http://regex101.com/#PCRE
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
Arrays:
array_count_values(), array_search(), array_filter(),
array_slice(), array_chunk()
array_fill(), array_combine(), array_shift(),
array_reverse(), array_multisort(), array_sum(),…
array_merge(), array_intersect(), array_diff()
array_keys(), array_key_exists()
array_push(), array_pop()
array_map(), array_reduce()
http://php.net/manual/en/book.array.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: funcții predefinite
/* filters certain values from an array
by using a programmer defined function */
function value_less_than ($number) {
// returns an expression of function type
return function ($item) use ($number) { // a closure (functional approach)
return $item < $number;
};
}
$marks = array (7, 8, 9, 10, 5, 3, 10, 6, 4);
// using array_filter(), a predefined function, on marks array
// to obtain the values less than a given value (here: 7)
$values = array_filter ($marks, value_less_than (7));
print_r ($values); // we got: Array ( [4] => 5 [5] => 3 [7] => 6 [8] => 4 )
also, study https://wiki.php.net/rfc/closures
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
Character manipulation:
ctype_digit(), ctype_xdigit(), ctype_print(),
ctype_punct(), ctype_space(),…
ctype_alpha(), ctype_alnum(), ctype_lower(),
ctype_upper()
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
Date & time:
getdate(), localtime(), gettimeofday(), time(), etc.
date(), idate(), gmdate(),…
checkdate()
strftime(), strtotime()
see also Calendar, DateTime, HRTime extensions
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
PHP variables:
empty(), isset(), unset()
strval(), print_r(), var_dump()
serialize(), unserialize()
also, consult http://php.net/manual/en/book.var.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
Files and directories:
using FILE data type – similar to C language:
fopen(), fread(), fscanf(), fgets(), fwrite(), fprintf(),
fseek(), ftell(), feof(), fclose(), ftruncate(), fstat(),...
file(), copy(), rename(), delete(),
move_uploaded_file(), tmpfile()
file_exists(), filesize(), filetype(), fileperms(),…, stat()
is_dir(), is_file(), is_readable(), is_writeable(),…
chdir(), mkdir(), rmdir()
disk_free_space(), disk_total_space()
study http://php.net/manual/en/refs.fileprocess.file.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
URLs:
urldecode(), urlencode(), parse_url()
base64_decode(), base64_encode()
http_build_query()
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
Web resource processing (HTML, JSON):
nl2br(), htmlentities(), htmlspecialchars(), strip_tags()
get_browser(), show_source(), highlight_string(),...
json_encode(), json_decode(), json_last_error()
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined functions
Other useful functions:
die(), eval(), exit(), sleep(), usleep(), time_sleep_until()
uniqid(), sys_getloadavg()
php_info(), php_check_syntax()
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: other features
SPL (Standard PHP Library)
access to standard ways of data processing
defined data structures:
SplStack, SplQueue, SplHeap, SplPriorityQueue,...
iterators:
ArrayIterator, FilesystemIterator, RegexIterator etc.
www.php.net/spl
www.phptherightway.com/#standard_php_library
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: other features
Program execution from command line
PHP CLI
http://php.net/manual/en/features.commandline.php
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: other features
PHP as a Web server module (Apache, nginx)
e.g., by using proxy_fcgi and php-fpm (FastCGI Process
Manager) modules – php-fpm.org
https://wiki.apache.org/httpd/php
www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: other features
PHP 5.4+ includes its own Web server
run with php –S localhost:8000 –t phpwebapp/
http://php.net/features.commandline.webserver
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: other features
Integration with other technologies/platforms
examples: Java, JavaScript, Lua, .NET
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
How about the PHP support
for object-oriented programming?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: classes
Class definition via class
and instantiation by using new operator
objects are treated similar to references
(a variable of object type contains a reference to
an object, not a copy of it)
http://php.net/manual/en/oop5.intro.php
details at http://php.net/language.oop5
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
object-oriented programming – encapsulation
class Student { // specifying a class
// properties (data members)
private $year;
private $email;
public $name;
// public methods
public function setYear ($aYear) {
$this->year = $aYear;
}
public function getYear () {
return $this->year;
}
}
$this is a pseudo-variable
specifying a reference to the current object
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
object-oriented programming – encapsulation
class Student { // specifying a class
// properties (data members)
private $year;
private $email;
public $name;
// public methods
public function setYear ($aYear) {
$this->year = $aYear;
}
public function getYear () {
return $this->year;
}
}
// an object instance
$stud = new Student ();
$stud->setYear (2);
$stud->name = 'Tux';
print_r ($stud);
Student Object
(
[year:Student:private] => 2
[name] => Tux
[email:Student:private] =>
)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: classes
Similar to C++, members – properties or methods –
could be declared
public
private
protected
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
object-oriented programming – inheritance
class CleverStudent extends Student {
private $marks; // obtained marks (property)
public function setMarks ($m) {
$this->marks = (array) $m;
}
public function getMarks () {
return (array) $this->marks;
}
}
$otherStud = new CleverStudent ();
// calling a method from base class
$otherStud->setYear (2);
// calling a method from derived class
$otherStud->setMarks (
['Web' => 10, 'SoftEng' => 9]
);
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
object-oriented programming – inheritance
class CleverStudent extends Student {
private $marks; // obtained marks (property)
public function setMarks ($m) {
$this->marks = (array) $m;
}
public function getMarks () {
return (array) $this->marks;
}
}
$otherStud = new CleverStudent ();
// calling a method from base class
$otherStud->setYear (2);
// calling a method from derived class
$otherStud->setMarks (
['Web' => 10, 'SoftEng' => 9]
);
print_r ($altStud);
CleverStudent Object
(
[marks:CleverStudent:private]
=> Array
(
[Web] => 10
[SoftEng] => 9
)
[year:Student:private] => 2
[name] =>
[email:Student:private] =>
)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: classes
Special methods:
constructors are named __construct()
destructors are named __destruct()
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: classes
Accessing static, constant or overloaded
properties/methods
::
scope resolution operator (Paamayim Nekudotayim)
www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: classes
Accessing static, constant or overloaded
properties/methods
::
self – current class
parent – parent class
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: classes
Properties or methods declared as static
could be accessed without class instantiation
for examples, visit
www.php.net/manual/en/language.oop5.static.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: classes
Abstract classes/methods are declared with abstract
abstract classes can not be instantiated
each class having at least one abstract method
is considered abstract
abstract methods must be implemented in a child class
(specified by extends) of an abstract class
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: interfaces
Specifying methods that will be implemented by a class
(similar to Java)
// interface regarding a content template
interface iTemplate {
// setting a variable to be substituted with its value
public function setVar ($name, $var);
// getting the template representation
public function getRep ($template);
}
details at http://php.net/manual/en/language.oop5.interfaces.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// a class implementing the interface
class Template implements iTemplate {
// associative array including variables to be replaced by their values
private $variables = array ();
public function setVar ($name, $var) {
$this->variables[$name] = $var;
}
public function getRep ($template) {
foreach ($this->variables as $name => $val) {
// replacing a variable name with its value
$template = str_replace ('{' . $name . '}', $val, $template);
}
return $template;
}
}
advanced aspects: www.phptherightway.com/#templating
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined interfaces & classes
Traversable
Iterator
IteratorAggregate
Throwable
ArrayAccess
Serializable
Closure
Generator
http://www.php.net/manual/en/reserved.interfaces.php
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: predefined interfaces & classes
// Iterator interface
Iterator extends Traversable {
// methods to be written by programmer
// in the class implementing the interface
abstract public mixed current ( void )
abstract public scalar key ( void )
abstract public void next ( void )
abstract public void rewind ( void )
abstract public boolean valid ( void )
}
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: traits
Trait
concept borrowed from Self language
available for PHP 5.4+
collection of methods that can be reused in other classes
www.php.net/manual/en/language.oop5.traits.php
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: traits
Trait
considered as a C++ class template
in contrast to interfaces, offers implementations of
methods, not just their signature
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// traits (behaviors) that will be associated to 2D geometrical shapes
trait Rotating {
public function rotate ($angle) { // implements rotation
}
}
trait Moving {
public function moveTo ($x, $y) { // move to other coordinates
}
}
trait Filling {
public function fill ($color) { // performs filling
}
}
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
abstract class Shape { // geometrical shapes class
public function draw() {
echo ('I am drawing a ' . get_class());
}
}
class Rectangle extends Shape { // uses desired traits
use Filling, Moving, Rotating; // can be filled, moved, rotated
public function transform () { // plus, a specific transformation
}
}
final class Circle extends Shape { // Circle class can not be extended
use Moving, Filling; // o circle can be moved or filled
const PI = 3.1415265;
public function computeArea () {
}
}
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
// 2 shapes (a circle and a rectangle) are instantiated
$aCircle = new Circle ();
$aRect = new Rectangle ();
$aCircle->draw ();
$aCircle->rotate (); // an error will be emitted
$aRect->draw ();
I am drawing a Circle
PHP Fatal error: Call to undefined method Circle::rotate()
in /home/dMdWgn/prog.php on line 47
php: traits
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: special properties
A class has associated special (“magical”) properties
that can be overloaded
__construct ()
__destruct ()
__toString ()
__get ()
__set ()
others at www.php.net/manual/en/language.oop5.magic.php
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: objects
Objects can be “cloned” via clone
Objects can be compared by using the === operator
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: objects
Functions for class & object manipulation
get_class() will return an object name,
instance of a given class
get_parent_class() gets the parent class of an object
method_exists() tests if a method exists
for a certain object
class_exists() tests the existence of a class
is_subclass_of() determines if a heritage relation
between two classes exists
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: exceptions
Similar to Java exceptions
try, catch, throw
Exception class
details at www.php.net/manual/en/language.exceptions.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: namespaces
Used to avoid name collisions and to create aliases
declared with namespace (first line of a program)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: namespaces
Used to avoid name collisions and to create aliases
declared with namespace (first line of a program)
example: namespace Facebook; // Facebook SDK for PHP
also study www.phptherightway.com/#namespaces
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: namespaces
Used to avoid name collisions and to create aliases
same namespace could be defined in multiple files
namespace hierarchies are permitted
namespace ProjectModuleSubmodule;
class SVGGen { ... };
specified with
ProjectModuleSubmoduleSVGGen
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: namespaces
Used to avoid name collisions and to create aliases
using a specific construct: use
(optionally, specifying an alias)
use ProjectModuleSubmodule;
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: namespaces
Used to avoid name collisions and to create aliases
using a specific construct: use
(optionally, specifying an alias)
use ProjectModuleSubmodule;
real examples:
use FacebookAuthenticationAccessToken;
use IlluminateFoundationExceptionsHandler as ExceptionHandler;
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: namespaces
Used to avoid name collisions and to create aliases
without any namespace definition, all class and function
definitions are placed into the global space
namespace WebProject;
function fopen () { // specifying our own function
...
$file = fopen (...); // calling a predefined function (from global space)
}
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
How about the features
regarding Web interaction?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: web interaction
Data transmitted by client (browser) are stored
into (global) predefined associative arrays:
$_GET[ ] – data transmitted via GET
$_POST[ ] – data transmitted via POST
$_COOKIE[ ] – received cookies
$_REQUEST[ ] – data retrieved from client
(content of $_GET, $_POST and $_COOKIE)
$_SESSION[ ] – session data
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: web interaction
Other useful global variables:
$_SERVER[ ]
offers info about Web server
$_SERVER['PHP_SELF'] indicates the PHP script name
$_SERVER['REQUEST_METHOD']
$_SERVER['HTTP_REFERER']
$_SERVER['HTTP_USER_AGENT']
http://www.php.net/manual/en/reserved.variables.server.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: web interaction
Other useful global variables:
$_ENV[ ] – data provided by the runtime environment
$_FILES[ ] – data about the uploaded files
http://www.php.net/manual/en/features.file-upload.php
consult the example
from the archive
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
<!-- a Web form written in HTML -->
<form action="display.php" method="post">
<input type="text" name="name" />
<input type="text" name="age" />
<input type="submit" value="Send" />
</form>
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
<!-- a Web form written in HTML -->
<form action="display.php" method="post">
<input type="text" name="name" />
<input type="text" name="age" />
<input type="submit" value="Send" />
</form>
<?php
// display.php – a program invoked via POST
if (!$_REQUEST["name"])
display ("Name is not specified!", "err");
else
display ("Name is" . $_REQUEST["name"]);
?>
each name field from the form represents a key in $_REQUEST [ ]
associative array (depending on the HTTP method,
could be consulted by using $_GET or $_POST)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: web sessions
Session management could be performed via
session_*() functions or using SessionHandler class
SessionHandler implements SessionHandlerInterface {
public bool open ( string $save_path , string $session_name )
public string create_sid ( void )
public string read ( string $session_id )
public bool write ( string $session_id , string $session_data )
public bool gc ( int $maxlifetime )
public bool destroy ( string $session_id )
public bool close ( void )
} http://php.net/manual/en/book.session.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
How databases could be accessed from PHP?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db
Native support for multiple database
servers/technologies:
MongoDB – classes: MongoDB MongoClient MongoCursor
MySQL / MariaDB – mysqli class
PostgreSQL – pg_*() functions
SQLite – SQLite3 class
etc.
connections could be persistent
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysql
Functions/methods to access MySQL/MariaDB
connecting to server: mysql_connect (), mysql_pconnect ()
selecting (using) a database: mysql_select_db ()
executing a SQL statement: mysql_query ()
error reporting: mysql_errno (), mysql_error ()
getting results into an array: mysql_fetch_array ()
many others…
in the present, a deprecated approach – illegal in PHP 7
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
Aim: easy and flexible access to MySQL/MariaDB
from PHP5+ programs
facilitates code maintenance
compatible with MySQL API
alternative to mysql_*() functions
available docs at www.php.net/mysqli
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
Procedural or object-oriented approach
Higher processing speed
Much better security
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
Important methods:
initiating a connection to a MySQL server – mysqli ( )
issuing SQL statements – query ( ), prepare ( ), execute ( )
processing the response – fetch ( ), fetch_assoc ( )
closing connection – close ( )
etc.
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – example
Initially, we’ll create an MySQL account to assure
authenticated access from PHP programs
to the students database:
(infoiasi)$ mysql –u root mysql
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
DROP ON students.* TO 'tux'@'localhost' IDENTIFIED BY
'pa$$w0Rd' WITH GRANT OPTION;
Query OK, 0 rows affected (0.11 sec)
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – example
Using the mysql client in command line or
PHPMyAdmin, we create students table:
CREATE TABLE IF NOT EXISTS `students` (
`name` varchar(50) NOT NULL default '',
`year` enum('1','2','3') NOT NULL default '1',
`id` int(11) NOT NULL auto_increment,
`age` smallint(2) unsigned zerofill NOT NULL default '00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
AUTO_INCREMENT=1;
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
to ease DB administration, a Web tool could be used
phpMyAdmin – https://www.phpmyadmin.net/
creating
a table
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
defining
structure
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
visualizing
the structure of
created table
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
optionally,
inserting a record
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
visualizing
existing data
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
// a mysqli object instantiation
$mysql = new mysqli ('localhost', 'tux', 'pa$$w0Rd', 'students');
if (mysqli_connect_errno ()) {
die ('Failed connection...');
}
// specifying & executing a query
if (!($res = $mysql->query ('select name, year from students'))) {
die ('A query error occurred');
}
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
// a mysqli object instantiation
$mysql = new mysqli ('localhost', 'tux', 'pa$$w0Rd', 'students');
if (mysqli_connect_errno ()) {
die ('Failed connection...');
}
// specifying & executing a query
if (!($res = $mysql->query ('select name, year from students'))) {
die ('A query error occurred');
}
!!!
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db – mysqli extension
// generating a numbered list of student-related data
// (HTML spaghetti code – not a recommended practice!)
echo ('<ol>');
// results will be available into an associative array
while ($row = $res->fetch_assoc ()) {
// table column  array key
echo ('<li>Student ' . $row['name'] .
' is enrolled in ' . $row['year'] . ' year</li>');
}
echo ('</ol>');
// closing connection to MySQL/Maria DB server
$mysql->close ();
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db
In practice, we’ll adopt an abstraction layer
in order to access a storage system
DBAL – DataBase Abstraction Layer
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db
In practice, we’ll adopt an abstraction layer
in order to access a storage system
DBAL – DataBase Abstraction Layer
usual practice:
PDO (PHP Data Objects)
pragmatic consideration in the tutorial available at
https://phpdelusions.net/pdo
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: bd – extensia pdo
// connection data regarding MySQL/MariaDB database server
$host = '127.0.0.1';
$db = 'students';
$user = 'tux';
$pass = 'pa$$w0Rd';
$charset = 'utf8';
// setting the DSN (Data Source Name)
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
// options concerning the connection manner
$opt = [
// errors will be reported as exceptions
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// results will be stored by an associative array
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
// connection is persistent
PDO::ATTR_PERSISTENT => TRUE
];
http://php.net/manual/en/book.pdo.php
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: bd – extensia pdo
// retrieve from the Web client the year of study (default: 2)
$year = $_REQUEST['year'] ? $_REQUEST['year'] : 2;
try {
$pdo = new PDO ($dsn, $user, $pass, $opt); // instantiating a PDO object
// preparing a parametrized SQL statement
$sql = $pdo->prepare ('SELECT year, name, age FROM students
WHERE year=? ORDER BY age');
if ($sql->execute ([$year])) { // SQL statement can be executed?
while ($row = $sql->fetch()) { // getting each found record
// ...and showing it (table column is a key of associative array)
echo '<p>' . $row['name'] . ' is enrolled in ' . $row['year'] . ' year</p>';
}
}
} catch (PDOException $e) {
echo "Error: " . $e->getMessage(); // the message of occurred exception
};
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: bd – extensia pdo
A possible result provided by the execution
of the PHP program invoked by using a URL as
http://profs.info.uaic.ro/~/busaco/php/pdo-test.php?year=2
Tuxy Pinguinesscool is enrolled in 2 year
Grace Hopper is enrolled in 2 year
Margaret Hamilton is enrolled in 2 year
study the script from
the archive attached to
this lecture
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
php: db
Usually, an ORM – Object-Relational Mapping
solution (component, library)
will be used on top of DBA
examples of PHP tools:
Doctrine – http://www.doctrine-project.org/
Propel – http://propelorm.org/
RedBeanPHP – http://redbeanphp.com/
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
(instead of) break
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
Useful tools for Web developers?
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
instrumente
PEAR (PHP Extension and Application Repository)
modules providing various features: http://pear.php.net/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
instrumente
PECL (PHP Extension Community Library)
third party extensions: http://pecl.php.net/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: frameworks
Features:
MV* and various design patterns
database access (ORM, DAO, ActiveRecord,…)
input data validation and filtering
authentication + access control
cookie & session management
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: frameworks
Features:
data presentation – templating
performance – i.e. caching
asynchronous data transfer (Ajax, WebSocket)
support for Web services and REST APIs
extensibility – e.g., user-defined modules
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: frameworks
advanced
workflows performed by a framework
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: frameworks
CakePHP – cakephp.org
CodeIgniter – www.codeigniter.com
FuelPHP – fuelphp.com
Kohana – kohanaframework.org
Laravel – laravel.com
Phalcon – phalconphp.com
PRADO – www.pradoframework.net
Symfony – symfony.com
Yii – www.yiiframework.com
Zend Framework – framework.zend.com
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
instrumente: framework-uri
├───application
│ ├───cache
│ ├───config
│ ├───controllers
│ ├───core
│ ├───helpers
│ ├───language
│ ├───libraries
│ ├───logs
│ ├───models
│ └───views
│ └───errors
│ ├───cli
│ └───html
├───system
│ ├───core
│ ├───database
│ │ └───drivers
│ │ ├───mysqli
│ │ ├───pdo
│ │ ├───...
│ └───libraries
│ ├───Cache
│ ├───Javascript
│ └───Session
└───user_guide
advanced
directory structure of
a Web application developed
by using a MVC framework
CodeIgniter
codeigniter.com/docs
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
instrumente: framework-uri
advanced├─── app
│ ├─── Commands
│ ├─── Console
│ ├─── Events
│ ├─── Exceptions
│ ├─── Handlers
│ ├─── Http
│ ├─── Providers
│ ├─── Services
│ └─── User.php
├─── bootstrap
│ ├─── app.php
│ └─── autoload.php
├─── config
├─── database
│ ├─── migrations
│ └─── seeds
├─── public
├─── resources
│ ├─── assets
│ ├─── lang
│ └─── views
├─── server.php
├─── storage
└─── tests
directory structure of
a Web application developed
by using a MVC framework
Laravel
laravel.com/docs/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: micro-frameworks
A micro-framework represents
a minimalist Web framework
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: micro-frameworks
A micro-framework represents
a minimalist Web framework
does not include complex features
often, is focused on a single aspect regarding
Web development – e.g., API, micro-service,…
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: micro-frameworks
Expressive – zendframework.github.io/zend-expressive/
Fat-Free – fatfreeframework.com
Flight – flightphp.com
Lumen – lumen.laravel.com
Slim – www.slimframework.com
Silex – silex.sensiolabs.org
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: packages
Managing dependences
between libraries and packages
Composer
https://getcomposer.org/
details: www.phptherightway.com/#dependency_management
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
instrumente
advanced
Packagist
package repository
managed by Composer
https://packagist.org/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: development environments
Pre-configured Web development environments
Web server + PHP + database server(s) + utils
Apache + PHP + MySQL/MongoDB + Perl/Python + ...
AMPPS – http://www.ampps.com/
XAMPP – http://www.apachefriends.org/
Nginx + PHP + MariaDB + Redis + admin tools
WTServer – http://wtserver.wtriple.com/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
instrumente
cloud-base development environments for PHP et al.
Cloud9, Codenvy, Koding, Nitrous,…
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: online code execution
PHP program online editing & running
Ideone – http://ideone.com/
PhpFiddle – http://phpfiddle.org/
also, experiment SQL Fiddle – http://sqlfiddle.com/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: documenting
advanced
Automatic documentation generators
ApiGen – www.apigen.org
Daux – daux.io
phpDocumentor – www.phpdoc.org
phpDox – phpdox.de
Sami – github.com/FriendsOfPHP/Sami
https://github.com/ziadoz/awesome-php#documentation
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: code analysis
PHP source-code static analysis
discovering various programming bugs,
verifying the conformance to various coding standards
automatic correction (fixers)
computing code metrics: complexity, number of lines,…
https://github.com/exakat/php-static-analysis-tools
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: code analysis
avansat
Detected violations with PSR2 standards
FOUND 6 ERROR(S) AFFECTING 4 LINE(S)
----------------------------------------------------------------------
5 | ERROR | Whitespace found at end of line
8 | ERROR | Inline control structures are not allowed
8 | ERROR | Whitespace found at end of line
10 | ERROR | Whitespace found at end of line
13 | ERROR | Expected 1 blank line at end of file; 0 found
13 | ERROR | A closing tag is not permitted at the end of a PHP file
----------------------------------------------------------------------
PSR – PHP Standards Recommendations
Basic Coding Standard, Coding Style Guide, Logger Interface,
Autoloading Standard, Caching Interface,
HTTP Message Interface, Hypermedia Links, etc.
http://www.php-fig.org/psr/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: testing
atoum – atoum.org
Codeception – codeception.com
ParaTest – github.com/brianium/paratest
Peridot – peridot-php.github.io
PHPUnit – phpunit.de
SimpleTest – github.com/simpletest
others at https://github.com/ziadoz/awesome-php#testing
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools: continuous integration
CircleCI – circleci.com
PHPCI – www.phptesting.org
Sismo – sismo.sensiolabs.org
https://github.com/ziadoz/awesome-php#continuous-integration
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
tools : accelerators
Caching of source files or opcodes + others
Zend Opcache – integrated in PHP 5.5+
http://php.net/manual/en/book.opcache.php
also, experiment:
APCu (Alternative PHP Cache + User Cache)
Windows Cache for PHP
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
extensions
Hack (Facebook, from 2014)
a programming language for HHVM, extending PHP
goal: increasing the Web developer productivity
features: explicit data types (type annotations),
generics, λ expressions, collections (Vector, Map, Set, Pair),
tuples, asynchronous programming (async), and others
http://hacklang.org/
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
major critics
lack of language formal specification
(in progress since 2014)
inconsistency – e.g., foreach, predefined function names
lack of native support for Unicode (excepting PHP 7)
lack of native support for multi-threading,
but possible via extensions like pthreads – pthreads.org
http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
http://www.quora.com/Criticism-of-PHP
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
critici majore
PHP Sadness – http://phpsadness.com/
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
major critics
In PHP, we can easily create applications
that “adopt” Spaghetti Code anti-pattern
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
critici majore
HTML
Web
interface
PHP for data
access and
processing
PHP for
data presentation
github.com/hanafiah/masterphp/tree/master/spaghetti
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
case study: Wikipedia
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
case study: wikipedia
Aim: providing open content by using a group of
collaborative Web applications – wikis
Wikipedia Foundation
also maintains Wiktionary, Wikinews, Wikibooks,
Wikiquote, Wikisource, Wikiversity, Wikispecies,
Wikimedia Commons, Wikidata, Wikivoyage
http://en.wikipedia.org/wiki/Wikimedia_Foundation
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
case study: wikipedia
MediaWiki (wiki system used for all services)
PHP (platform that run MediaWiki on HHVM)
MySQL / MariaDB (main storage solution)
ImageMagick, DjVu, TeX, rsvg, ploticus, etc.
(for graphical content processing within MediaWiki)
nginx (Web server)
Linux Ubuntu (deployment platform)
provides also an API to be used by Web developers:
www.mediawiki.org/wiki/API:Main_page
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
case study: wikipedia
performance considerations:
Squid și Varnish (proxy & caching for HTML content)
Memcached (database query caching)
Apache Lucene (text indexing to facilitate search)
Ceph și Swift (redundant distributed storage solutions)
Linux Virtual Server – LVS (load balancing)
PowerDNS (C++ solution for DNS)
http://meta.wikimedia.org/wiki/Wikimedia_servers
advanced
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
studiu de caz: wikimedia
Wikipedia – arhitectura generală (Domas Mituzas, 2008)
http://tinyurl.com/m9nlwvq
avansat
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
studiu de caz: wikipedia
advanced
for details, consult
www.mediawiki.org/wiki/Presentations
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
“conclusion”
PHP overview
____ _ _ ____
( _ ( )_( )( _ 
)___/ ) _ ( )___/
(__) (_) (_)(__)
characteristics, features, tools
Dr.SabinBuragaprofs.info.uaic.ro/~busaco/
next episode:
a data model for Web: XML family
<event uri="https://stagiipebune.ro/">
<name xml:lang="ro">Stagii pe Bune</name>
<year>2017</year>
</event>
<participant>
<name uri="mailto:tux@info.uaic.ro">
Tuxy Pinguinnesscool</name>
<year kind="Bachelor">2</year>
</participant>

More Related Content

What's hot

Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...
Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...
Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...
Sabin Buraga
 
Web Technologies (5/12): Data Modeling. XML Family and XML Namespaces
Web Technologies (5/12): Data Modeling. XML Family and XML NamespacesWeb Technologies (5/12): Data Modeling. XML Family and XML Namespaces
Web Technologies (5/12): Data Modeling. XML Family and XML Namespaces
Sabin Buraga
 
Web Technologies (7/12): XML & HTML Data Processing. Document Object Model
Web Technologies (7/12): XML & HTML Data Processing. Document Object Model Web Technologies (7/12): XML & HTML Data Processing. Document Object Model
Web Technologies (7/12): XML & HTML Data Processing. Document Object Model
Sabin Buraga
 
Why 5-Star Data?
Why 5-Star Data?Why 5-Star Data?
Why 5-Star Data?
Sabin Buraga
 
Towards 5-star Data in the E-university
Towards 5-star Data in the E-universityTowards 5-star Data in the E-university
Towards 5-star Data in the E-university
Sabin Buraga
 
Are You Afraid of Semantic Web?
Are You Afraid of Semantic Web?Are You Afraid of Semantic Web?
Are You Afraid of Semantic Web?
Sabin Buraga
 
"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007
"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007
"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007
eLiberatica
 
Linked data: spreading data over the web
Linked data: spreading data over the webLinked data: spreading data over the web
Linked data: spreading data over the webshellac
 
Web of Data as a Solution for Interoperability. Case Studies
Web of Data as a Solution for Interoperability. Case StudiesWeb of Data as a Solution for Interoperability. Case Studies
Web of Data as a Solution for Interoperability. Case Studies
Sabin Buraga
 

What's hot (9)

Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...
Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...
Web Technologies (11/12): Web Microservices. Asynchronous Web Interaction. We...
 
Web Technologies (5/12): Data Modeling. XML Family and XML Namespaces
Web Technologies (5/12): Data Modeling. XML Family and XML NamespacesWeb Technologies (5/12): Data Modeling. XML Family and XML Namespaces
Web Technologies (5/12): Data Modeling. XML Family and XML Namespaces
 
Web Technologies (7/12): XML & HTML Data Processing. Document Object Model
Web Technologies (7/12): XML & HTML Data Processing. Document Object Model Web Technologies (7/12): XML & HTML Data Processing. Document Object Model
Web Technologies (7/12): XML & HTML Data Processing. Document Object Model
 
Why 5-Star Data?
Why 5-Star Data?Why 5-Star Data?
Why 5-Star Data?
 
Towards 5-star Data in the E-university
Towards 5-star Data in the E-universityTowards 5-star Data in the E-university
Towards 5-star Data in the E-university
 
Are You Afraid of Semantic Web?
Are You Afraid of Semantic Web?Are You Afraid of Semantic Web?
Are You Afraid of Semantic Web?
 
"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007
"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007
"Are You Afraid of the Semantic Web" by Sabin Corneliu Buraga @ eLiberatica 2007
 
Linked data: spreading data over the web
Linked data: spreading data over the webLinked data: spreading data over the web
Linked data: spreading data over the web
 
Web of Data as a Solution for Interoperability. Case Studies
Web of Data as a Solution for Interoperability. Case StudiesWeb of Data as a Solution for Interoperability. Case Studies
Web of Data as a Solution for Interoperability. Case Studies
 

Similar to Web Technologies (4/12): Web Application Development in PHP

Web05 dezvoltareaaplicatiilorweb php
Web05 dezvoltareaaplicatiilorweb phpWeb05 dezvoltareaaplicatiilorweb php
Web05 dezvoltareaaplicatiilorweb php
n0n0semeni
 
An Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP ProgrammersAn Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP Programmers
jphl
 
The Taverna Software Suite
The Taverna Software SuiteThe Taverna Software Suite
The Taverna Software Suite
myGrid team
 
My Saminar On Php
My Saminar On PhpMy Saminar On Php
My Saminar On Php
Arjun Kumawat
 
GTU MCA PHP Interview Questions And Answers for freshers
GTU MCA PHP  Interview Questions And Answers for freshersGTU MCA PHP  Interview Questions And Answers for freshers
GTU MCA PHP Interview Questions And Answers for freshers
TOPS Technologies
 
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Beat Signer
 
How To Implement a CMS
How To Implement a CMSHow To Implement a CMS
How To Implement a CMS
Jonathan Smith
 
Deep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDBDeep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDB
ArangoDB Database
 
introduction to web programming using PHP
introduction to web programming using PHPintroduction to web programming using PHP
introduction to web programming using PHP
vishnupriyapm4
 
Web Application Development using PHP and MySQL
Web Application Development using PHP and MySQLWeb Application Development using PHP and MySQL
Web Application Development using PHP and MySQLGanesh Kamath
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and Friends
lucenerevolution
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and Friends
Julien Nioche
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookella
muralikrishnanookella
 
XSEDE14 SciGaP-Apache Airavata Tutorial
XSEDE14 SciGaP-Apache Airavata TutorialXSEDE14 SciGaP-Apache Airavata Tutorial
XSEDE14 SciGaP-Apache Airavata Tutorial
marpierc
 
WinRT and the Web: Keeping Windows Store Apps Alive and Connected
WinRT and the Web: Keeping Windows Store Apps Alive and ConnectedWinRT and the Web: Keeping Windows Store Apps Alive and Connected
WinRT and the Web: Keeping Windows Store Apps Alive and Connected
Jeremy Likness
 
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
cresco
 

Similar to Web Technologies (4/12): Web Application Development in PHP (20)

Web05 dezvoltareaaplicatiilorweb php
Web05 dezvoltareaaplicatiilorweb phpWeb05 dezvoltareaaplicatiilorweb php
Web05 dezvoltareaaplicatiilorweb php
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
Resume of Min Xu
Resume of Min XuResume of Min Xu
Resume of Min Xu
 
An Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP ProgrammersAn Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP Programmers
 
The Taverna Software Suite
The Taverna Software SuiteThe Taverna Software Suite
The Taverna Software Suite
 
My Saminar On Php
My Saminar On PhpMy Saminar On Php
My Saminar On Php
 
GTU MCA PHP Interview Questions And Answers for freshers
GTU MCA PHP  Interview Questions And Answers for freshersGTU MCA PHP  Interview Questions And Answers for freshers
GTU MCA PHP Interview Questions And Answers for freshers
 
Srinivasan Rajappa
Srinivasan RajappaSrinivasan Rajappa
Srinivasan Rajappa
 
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
 
How To Implement a CMS
How To Implement a CMSHow To Implement a CMS
How To Implement a CMS
 
Deep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDBDeep dive into the native multi model database ArangoDB
Deep dive into the native multi model database ArangoDB
 
introduction to web programming using PHP
introduction to web programming using PHPintroduction to web programming using PHP
introduction to web programming using PHP
 
Jsp Comparison
 Jsp Comparison Jsp Comparison
Jsp Comparison
 
Web Application Development using PHP and MySQL
Web Application Development using PHP and MySQLWeb Application Development using PHP and MySQL
Web Application Development using PHP and MySQL
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and Friends
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and Friends
 
What is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna NookellaWhat is WebDAV - uploaded by Murali Krishna Nookella
What is WebDAV - uploaded by Murali Krishna Nookella
 
XSEDE14 SciGaP-Apache Airavata Tutorial
XSEDE14 SciGaP-Apache Airavata TutorialXSEDE14 SciGaP-Apache Airavata Tutorial
XSEDE14 SciGaP-Apache Airavata Tutorial
 
WinRT and the Web: Keeping Windows Store Apps Alive and Connected
WinRT and the Web: Keeping Windows Store Apps Alive and ConnectedWinRT and the Web: Keeping Windows Store Apps Alive and Connected
WinRT and the Web: Keeping Windows Store Apps Alive and Connected
 
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
Students of Navgujarat College of Computer Applications, Ahmedabad felt excit...
 

More from Sabin Buraga

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
Sabin Buraga
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Sabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Sabin Buraga
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Sabin Buraga
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Sabin Buraga
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Sabin Buraga
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Sabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Sabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
Sabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Sabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Sabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
Sabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
Sabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
Sabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
Sabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
Sabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
Sabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
Sabin Buraga
 

More from Sabin Buraga (20)

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 

Recently uploaded

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 

Recently uploaded (20)

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 

Web Technologies (4/12): Web Application Development in PHP