SlideShare a Scribd company logo
1 of 65
Download to read offline
Software livre e
                               padrões abertos no
                                desenvolvimento
                                      Web



   Felipe Ribeiro
   felipernb@php.net
   http://feliperibeiro.com
   @felipernb
Saturday, September 19, 2009
Felipe Ribeiro
     •Graduando (concluinte) em Ciência da Computação na
      UFCG
     •Zend Certified Engineer - PHP5
     •Trabalha com desenvolvimento Web, atualmente na
      startup Shoprizer.com
     •Membro fundador do grupo PHP-PB
     •Contribuidor do PHP no Google Summer of
      Code 2009
     •Ex-contribuidor do projeto Mozilla Camino


Saturday, September 19, 2009
A Web




Saturday, September 19, 2009
A Web



   Softwares distintos se
   comunicando, independente
   de plataforma, fornecedor e
   linguagem de programação
Saturday, September 19, 2009
Como é possível?




Saturday, September 19, 2009
Como é possível?

                               TCP/IP   HTTP


                               HTML     CSS



Saturday, September 19, 2009
Padrões abertos
         Padrões abertos são padrões
         disponíveis para livre acesso e
       implementação, que independem
        de royalties e outras taxas e sem
             discriminação de uso.
Saturday, September 19, 2009
Porque padrões
               abertos são
              importantes?




Saturday, September 19, 2009
Em alguns
   lugares do
   oriente
   médio, esse
   gesto...




Saturday, September 19, 2009
seria interpretado assim...




                                Então é melhor usar algo
                                      que todos possam
                                               entender!
Saturday, September 19, 2009
W3C é um consórcio de empresa que regulamenta os
       padrões da Web, entre eles:
     • HTML
     • XML
         • XHTML
         • XPath
         • XQuery
         • XSLT
     • CSS
     • SVG
     • SOAP, WSDL (Web Services)
     • OWL (Web Semântica)


Saturday, September 19, 2009
Saturday, September 19, 2009
HTML5
     •Desenho vetorial em Canvas
     •Armazenamento de informação no cliente
     •Drag-and-drop
     •Tags para vídeo e áudio, evitando a necessidade de
      plugins
       •Polêmica na escolha do padrão de vídeo
         •Ogg Theora - Padrão aberto
         •H.264 - Padrão proprietário
     •Animações
     •Entre outras coisas

Saturday, September 19, 2009
A maioria dos servidores
                       Web roda software livre
Saturday, September 19, 2009
LAMP

                               Linux
                               Apache
                               MySQL
                               PHP

Saturday, September 19, 2009
E isso presta?
                               Na universidade eu aprendi que Java
                                 é a solução para todos os meus
                                           problemas.
                                         Quem usa PHP?




Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
delicious



Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
É... parece que vale a
                                  pena conhecer...




Saturday, September 19, 2009
"PHP is not about purity in CS principles or
      architecture; it is about solving the ugly web
    problem with an admittedly ugly, but extremely
     functional and convenient solution. If you are
   looking for purity, you are in the wrong boat. Get
       out now before you get hit by a wet cat!" -
                      Rasmus Lerdorf
Saturday, September 19, 2009
1993




Saturday, September 19, 2009
1993
                     <HTML>
                       <HEAD>
                         <TITLE>My Personal Home Page</
                     TITLE>
                       </HEAD>
                       <BODY>
                         This is my cool page<P>
                         And look at my counter<P>
                         <IMG SRC="/cgi-bin/counter.pl">
                       </BODY>
                     </HTML>


Saturday, September 19, 2009
1994
                       <!--getenv HTTP_USER_AGENT-->
                       <!--ifsubstr $exec_result Mozilla-->
                       Hey, you are using Netscape!<p>
                       <!--endif-->

                       <!--sql database select * from table where
                       user='$username'-->

                       <!--ifless $numentries 1-->
                       Sorry, that record does not exist<p>
                       <!--endif exit-->

                       Welcome <!--$user-->!<p>
                       You have <!--$index:0--> credits left in your
                       account.<p>

                       <!--include /text/footer.html-->

Saturday, September 19, 2009
1995
                       <?
                         $name = "bob";
                         $db = "db";
                         $result = msql($db,"select * from table where
                       firstname='$name'");
                         $num = msql_numrows($result);
                         echo "$num records found!<p>";
                         $i=0;
                         while($i<$num);
                            echo msql_result($result,$i,"fullname");
                            echo "<br>";
                            echo msql_result($result,$i,"address");
                            echo "<br>";
                            $i++;
                         endwhile;
                       >

Saturday, September 19, 2009
2005
                <?php
                class db {
                  protected static $dbh = false;

                     function connect() {
                       self::$dbh = new PDO('mysql:host=localhost;dbname=test','user','pass');
                       self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                     }
                }

                class items extends db {
                  function load($name) {
                    if(!self::$dbh) $this->connect();
                    try {
                      if(!self::$dbh) $this->connect();
                      $stmt = self::$dbh->prepare("SELECT * FROM items WHERE firstname=:name
                                                    ORDER by ctime desc");
                      $ret = $stmt->execute(array('name'=>$name));
                    } catch (PDOException $e) {
                      die($e->getMessage());
                    }
                    return $ret;
                  }
                }

                ?>

Saturday, September 19, 2009
2009
                                          Closures

                               <?php
                               $getClosure = function($v) {
                                   return function() use($v) {
                                       echo "Hello World: $v!n";
                                   };
                               };

                               $closure = $getClosure(2);
                               $closure();
                               ?>




Saturday, September 19, 2009
2009
                                       Namespaces

                               <?php

                               namespace foo;

                               class bar {
                                  function __construct() {
                                    echo get_called_class();
                                  }
                               }
                               ?>




Saturday, September 19, 2009
Que ferramentas
                                       utilizar no
                               desenvolvimanto?




Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
Saturday, September 19, 2009
PHP é seguro?




Saturday, September 19, 2009
Free/Open/NetBSD
      são seguros?

                               MS Windows® é
                                      seguro?
Saturday, September 19, 2009
São todos escritos
          principalmente em
                               C!




Saturday, September 19, 2009
A linguagem de
                           programação não é
                                        o fator
                              determinante na
                             segurança de um
                                       sistema
Saturday, September 19, 2009
PHP está pronto para
    aplicações “enterprise”?




Saturday, September 19, 2009
XML



Saturday, September 19, 2009
Saturday, September 19, 2009
SOAP
Saturday, September 19, 2009
Saturday, September 19, 2009
REST




Saturday, September 19, 2009
Saturday, September 19, 2009
JSON




Saturday, September 19, 2009
JSON




Saturday, September 19, 2009
Existem pacotes
                                reutilizáveis em
                                           PHP?




Saturday, September 19, 2009
PEAR




Saturday, September 19, 2009
PEAR

                               PHP
                               Extension and
                               Application
                               Repository
Saturday, September 19, 2009
Saturday, September 19, 2009
• Pacotes escritos por membros ativos da
        comunidade PHP

     • Tudo  testado por um time exigente de
        controle de qualidade.

     • Gerenciamento           “a la apt-get”:
        Ex.:
        pear install Log
        pear upgrade PHPUnit
        pear uninstall Text_CAPTCHA

Saturday, September 19, 2009
Frameworks

  Para todos os gostos, dos
  mais “Java-like” aos mais
  “Rails-like”


Saturday, September 19, 2009
Frameworks




Saturday, September 19, 2009
E o mercado?
Saturday, September 19, 2009
PHP é a linguagem mais
                                       popular da Web

    O desenvolvimento de
    aplicações é rápido e
    menos custoso

                        Startups surgem todos
                                       os dias
Saturday, September 19, 2009
Grandes players estão
    investindo no PHP

    IBM
    Yahoo!
    Microsoft

                   Mercado amadurecido e
                   certificações

Saturday, September 19, 2009
Quer
       saber mais
         sobre o
            PHP?
          Grupo de desenvolvedores PHP da Paraíba
            III Encontro será no dia 31/10/2009 no
                   SEBRAE em João Pessoa
Saturday, September 19, 2009
<?php

     echo("Dúvidas?");

     $contato = array(
         "nome" => "Felipe Ribeiro",
         "email" => "felipernb@php.net",
         "blog" => "http://feliperibeiro.com",
         "twitter" => "@felipernb");

     var_dump($contato);

     ?>

Saturday, September 19, 2009

More Related Content

Similar to Software Livre e Padrões Abertos no Desenvolvimento Web

Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
 
Charla EHU Noviembre 2014 - Desarrollo Web
Charla EHU Noviembre 2014 - Desarrollo WebCharla EHU Noviembre 2014 - Desarrollo Web
Charla EHU Noviembre 2014 - Desarrollo WebMikel Torres Ugarte
 
And the Greatest of These Is ... Space
And the Greatest of These Is ... SpaceAnd the Greatest of These Is ... Space
And the Greatest of These Is ... SpaceBen Scofield
 
Semcomp de São Carlos
Semcomp de São CarlosSemcomp de São Carlos
Semcomp de São CarlosFabio Akita
 
MacRuby - When objective-c and Ruby meet
MacRuby - When objective-c and Ruby meetMacRuby - When objective-c and Ruby meet
MacRuby - When objective-c and Ruby meetMatt Aimonetti
 
Introducing ruby on rails
Introducing ruby on railsIntroducing ruby on rails
Introducing ruby on railsPriceen
 
Writing Secure Plugins — WordCamp New York 2009
Writing Secure Plugins — WordCamp New York 2009Writing Secure Plugins — WordCamp New York 2009
Writing Secure Plugins — WordCamp New York 2009Mark Jaquith
 
Rails For Kids 2009
Rails For Kids 2009Rails For Kids 2009
Rails For Kids 2009Fabio Akita
 
Symfony War Stories
Symfony War StoriesSymfony War Stories
Symfony War StoriesJakub Zalas
 
Swing when you're winning - an introduction to Ruby and Sinatra
Swing when you're winning - an introduction to Ruby and SinatraSwing when you're winning - an introduction to Ruby and Sinatra
Swing when you're winning - an introduction to Ruby and SinatraMatt Gifford
 
GR8Conf 2009: Groovy Usage Patterns by Dierk König
GR8Conf 2009: Groovy Usage Patterns by Dierk KönigGR8Conf 2009: Groovy Usage Patterns by Dierk König
GR8Conf 2009: Groovy Usage Patterns by Dierk KönigGR8Conf
 
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012rivierarb
 
Functional Java Script - Webtechcon 2009
Functional Java Script - Webtechcon 2009Functional Java Script - Webtechcon 2009
Functional Java Script - Webtechcon 2009wolframkriesing
 
What to do when things go wrong
What to do when things go wrongWhat to do when things go wrong
What to do when things go wrongDorneles Treméa
 
All about Erubis (English)
All about Erubis (English)All about Erubis (English)
All about Erubis (English)kwatch
 
あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界Ryousei Takano
 

Similar to Software Livre e Padrões Abertos no Desenvolvimento Web (20)

Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQuery
 
PHP 5 Sucks. PHP 5 Rocks.
PHP 5 Sucks. PHP 5 Rocks.PHP 5 Sucks. PHP 5 Rocks.
PHP 5 Sucks. PHP 5 Rocks.
 
Dev In Rio 2009
Dev In Rio 2009Dev In Rio 2009
Dev In Rio 2009
 
Charla EHU Noviembre 2014 - Desarrollo Web
Charla EHU Noviembre 2014 - Desarrollo WebCharla EHU Noviembre 2014 - Desarrollo Web
Charla EHU Noviembre 2014 - Desarrollo Web
 
And the Greatest of These Is ... Space
And the Greatest of These Is ... SpaceAnd the Greatest of These Is ... Space
And the Greatest of These Is ... Space
 
Semcomp de São Carlos
Semcomp de São CarlosSemcomp de São Carlos
Semcomp de São Carlos
 
MacRuby - When objective-c and Ruby meet
MacRuby - When objective-c and Ruby meetMacRuby - When objective-c and Ruby meet
MacRuby - When objective-c and Ruby meet
 
Introducing ruby on rails
Introducing ruby on railsIntroducing ruby on rails
Introducing ruby on rails
 
Writing Secure Plugins — WordCamp New York 2009
Writing Secure Plugins — WordCamp New York 2009Writing Secure Plugins — WordCamp New York 2009
Writing Secure Plugins — WordCamp New York 2009
 
Rails For Kids 2009
Rails For Kids 2009Rails For Kids 2009
Rails For Kids 2009
 
Symfony War Stories
Symfony War StoriesSymfony War Stories
Symfony War Stories
 
Swing when you're winning - an introduction to Ruby and Sinatra
Swing when you're winning - an introduction to Ruby and SinatraSwing when you're winning - an introduction to Ruby and Sinatra
Swing when you're winning - an introduction to Ruby and Sinatra
 
Sprockets
SprocketsSprockets
Sprockets
 
GR8Conf 2009: Groovy Usage Patterns by Dierk König
GR8Conf 2009: Groovy Usage Patterns by Dierk KönigGR8Conf 2009: Groovy Usage Patterns by Dierk König
GR8Conf 2009: Groovy Usage Patterns by Dierk König
 
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
 
Functional Java Script - Webtechcon 2009
Functional Java Script - Webtechcon 2009Functional Java Script - Webtechcon 2009
Functional Java Script - Webtechcon 2009
 
What to do when things go wrong
What to do when things go wrongWhat to do when things go wrong
What to do when things go wrong
 
All about Erubis (English)
All about Erubis (English)All about Erubis (English)
All about Erubis (English)
 
Unittests für Dummies
Unittests für DummiesUnittests für Dummies
Unittests für Dummies
 
あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界あなたの知らないネットワークプログラミングの世界
あなたの知らないネットワークプログラミングの世界
 

More from Felipe Ribeiro

PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09Felipe Ribeiro
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
PHP RESTful Web Services
PHP RESTful Web ServicesPHP RESTful Web Services
PHP RESTful Web ServicesFelipe Ribeiro
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 

More from Felipe Ribeiro (7)

PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09
 
SPL Datastructures
SPL DatastructuresSPL Datastructures
SPL Datastructures
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
PHP 5.3 - What's new?
PHP 5.3 - What's new?PHP 5.3 - What's new?
PHP 5.3 - What's new?
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
PHP RESTful Web Services
PHP RESTful Web ServicesPHP RESTful Web Services
PHP RESTful Web Services
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 

Recently uploaded

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
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
"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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"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
 
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
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
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
 
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
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
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
 

Recently uploaded (20)

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
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
"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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"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
 
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?
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
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
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
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
 
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
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 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
 

Software Livre e Padrões Abertos no Desenvolvimento Web

  • 1. Software livre e padrões abertos no desenvolvimento Web Felipe Ribeiro felipernb@php.net http://feliperibeiro.com @felipernb Saturday, September 19, 2009
  • 2. Felipe Ribeiro •Graduando (concluinte) em Ciência da Computação na UFCG •Zend Certified Engineer - PHP5 •Trabalha com desenvolvimento Web, atualmente na startup Shoprizer.com •Membro fundador do grupo PHP-PB •Contribuidor do PHP no Google Summer of Code 2009 •Ex-contribuidor do projeto Mozilla Camino Saturday, September 19, 2009
  • 4. A Web Softwares distintos se comunicando, independente de plataforma, fornecedor e linguagem de programação Saturday, September 19, 2009
  • 5. Como é possível? Saturday, September 19, 2009
  • 6. Como é possível? TCP/IP HTTP HTML CSS Saturday, September 19, 2009
  • 7. Padrões abertos Padrões abertos são padrões disponíveis para livre acesso e implementação, que independem de royalties e outras taxas e sem discriminação de uso. Saturday, September 19, 2009
  • 8. Porque padrões abertos são importantes? Saturday, September 19, 2009
  • 9. Em alguns lugares do oriente médio, esse gesto... Saturday, September 19, 2009
  • 10. seria interpretado assim... Então é melhor usar algo que todos possam entender! Saturday, September 19, 2009
  • 11. W3C é um consórcio de empresa que regulamenta os padrões da Web, entre eles: • HTML • XML • XHTML • XPath • XQuery • XSLT • CSS • SVG • SOAP, WSDL (Web Services) • OWL (Web Semântica) Saturday, September 19, 2009
  • 13. HTML5 •Desenho vetorial em Canvas •Armazenamento de informação no cliente •Drag-and-drop •Tags para vídeo e áudio, evitando a necessidade de plugins •Polêmica na escolha do padrão de vídeo •Ogg Theora - Padrão aberto •H.264 - Padrão proprietário •Animações •Entre outras coisas Saturday, September 19, 2009
  • 14. A maioria dos servidores Web roda software livre Saturday, September 19, 2009
  • 15. LAMP Linux Apache MySQL PHP Saturday, September 19, 2009
  • 16. E isso presta? Na universidade eu aprendi que Java é a solução para todos os meus problemas. Quem usa PHP? Saturday, September 19, 2009
  • 27. É... parece que vale a pena conhecer... Saturday, September 19, 2009
  • 28. "PHP is not about purity in CS principles or architecture; it is about solving the ugly web problem with an admittedly ugly, but extremely functional and convenient solution. If you are looking for purity, you are in the wrong boat. Get out now before you get hit by a wet cat!" - Rasmus Lerdorf Saturday, September 19, 2009
  • 30. 1993 <HTML> <HEAD> <TITLE>My Personal Home Page</ TITLE> </HEAD> <BODY> This is my cool page<P> And look at my counter<P> <IMG SRC="/cgi-bin/counter.pl"> </BODY> </HTML> Saturday, September 19, 2009
  • 31. 1994 <!--getenv HTTP_USER_AGENT--> <!--ifsubstr $exec_result Mozilla--> Hey, you are using Netscape!<p> <!--endif--> <!--sql database select * from table where user='$username'--> <!--ifless $numentries 1--> Sorry, that record does not exist<p> <!--endif exit--> Welcome <!--$user-->!<p> You have <!--$index:0--> credits left in your account.<p> <!--include /text/footer.html--> Saturday, September 19, 2009
  • 32. 1995 <? $name = "bob"; $db = "db"; $result = msql($db,"select * from table where firstname='$name'"); $num = msql_numrows($result); echo "$num records found!<p>"; $i=0; while($i<$num); echo msql_result($result,$i,"fullname"); echo "<br>"; echo msql_result($result,$i,"address"); echo "<br>"; $i++; endwhile; > Saturday, September 19, 2009
  • 33. 2005 <?php class db { protected static $dbh = false; function connect() { self::$dbh = new PDO('mysql:host=localhost;dbname=test','user','pass'); self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } } class items extends db { function load($name) { if(!self::$dbh) $this->connect(); try { if(!self::$dbh) $this->connect(); $stmt = self::$dbh->prepare("SELECT * FROM items WHERE firstname=:name ORDER by ctime desc"); $ret = $stmt->execute(array('name'=>$name)); } catch (PDOException $e) { die($e->getMessage()); } return $ret; } } ?> Saturday, September 19, 2009
  • 34. 2009 Closures <?php $getClosure = function($v) { return function() use($v) { echo "Hello World: $v!n"; }; }; $closure = $getClosure(2); $closure(); ?> Saturday, September 19, 2009
  • 35. 2009 Namespaces <?php namespace foo; class bar { function __construct() { echo get_called_class(); } } ?> Saturday, September 19, 2009
  • 36. Que ferramentas utilizar no desenvolvimanto? Saturday, September 19, 2009
  • 41. PHP é seguro? Saturday, September 19, 2009
  • 42. Free/Open/NetBSD são seguros? MS Windows® é seguro? Saturday, September 19, 2009
  • 43. São todos escritos principalmente em C! Saturday, September 19, 2009
  • 44. A linguagem de programação não é o fator determinante na segurança de um sistema Saturday, September 19, 2009
  • 45. PHP está pronto para aplicações “enterprise”? Saturday, September 19, 2009
  • 54. Existem pacotes reutilizáveis em PHP? Saturday, September 19, 2009
  • 56. PEAR PHP Extension and Application Repository Saturday, September 19, 2009
  • 58. • Pacotes escritos por membros ativos da comunidade PHP • Tudo testado por um time exigente de controle de qualidade. • Gerenciamento “a la apt-get”: Ex.: pear install Log pear upgrade PHPUnit pear uninstall Text_CAPTCHA Saturday, September 19, 2009
  • 59. Frameworks Para todos os gostos, dos mais “Java-like” aos mais “Rails-like” Saturday, September 19, 2009
  • 61. E o mercado? Saturday, September 19, 2009
  • 62. PHP é a linguagem mais popular da Web O desenvolvimento de aplicações é rápido e menos custoso Startups surgem todos os dias Saturday, September 19, 2009
  • 63. Grandes players estão investindo no PHP IBM Yahoo! Microsoft Mercado amadurecido e certificações Saturday, September 19, 2009
  • 64. Quer saber mais sobre o PHP? Grupo de desenvolvedores PHP da Paraíba III Encontro será no dia 31/10/2009 no SEBRAE em João Pessoa Saturday, September 19, 2009
  • 65. <?php echo("Dúvidas?"); $contato = array( "nome" => "Felipe Ribeiro", "email" => "felipernb@php.net", "blog" => "http://feliperibeiro.com", "twitter" => "@felipernb"); var_dump($contato); ?> Saturday, September 19, 2009