SlideShare uma empresa Scribd logo
1 de 31
1
Apresentação

Rafael Capucho
rafael.capucho@gmail.com
@rafaelcapucho


Ciência da Computação
Universidade Federal de São Paulo
ICT – Instituto de Ciência e Tecnologia
PESL – Programa de Educação em Software Livre
                                                2
Volta no tempo

Comecei a programar em meados de 2002~2003.


Pude trabalhar até agora com:
XHTML, CSS, Javascript, Python, PHP, C/C++,
 Coldfusion, Java, Actionscript, Melscript, XML,
Perl, Ruby, Prolog, Haskell, Bash. (17+)




                                                   3
Pacote mínimo para desenvolvimento web


Linguagens de Marcação:
HTML, xHTML, HTML 5
Linguagens para folha de estilo:
CSS
Linguagens client-side:
Javascript, Dart?
Linguagens server-side:
Python, PHP, Java, Perl, Ruby, Haskell, Lua.
                                               4
Servidor Web




               5
Cabeçalho HTTP de Requisição Simples

http://www.sjc.unifesp.br/portal/


GET /portal/ HTTP/1.1
Host: www.sjc.unifesp.br
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,en-us;q=0.8,it-it;q=0.5,it;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive




                                                                                     6
Cabeçalho HTTP de Resposta Simples

HTTP/1.1 200 OK
Date: Wed, 04 Apr 2012 20:46:07 GMT
Server: Apache
X-Powered-By: PHP/5.2.14-pl0-gentoo
Set-Cookie:
   SESSc53d649b707f629d1e0698e4b02896f0=f70c13fd9f7e07da7e4fb7590f8cf130;
   expires=Sat, 28-Apr-2012 00:19:27 GMT; path=/; domain=.sjc.unifesp.br
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified: Wed, 04 Apr 2012 20:46:07 GMT
Cache-Control: store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Length: 42711
Keep-Alive: timeout=10, max=198
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8                                       7
Servidor Web Simples em Python
from os import curdir as pwd                                  if __name__ == '__main__':
from os import sep as separador                                   try:
from BaseHTTPServer import BaseHTTPRequestHandler                    server = HTTPServer(('', 7777), MeuHandler)
from BaseHTTPServer import HTTPServer                                server.serve_forever()

                                                                except KeyboardInterrupt:
class MeuHandler(BaseHTTPRequestHandler):                         server.socket.close()

  def do_GET(self):
    try:
       if self.path.endswith(".html"):                           Executanto:
          f = open(pwd + separador + self.path)
          self.send_response(200)                                $ python servidor.py
          self.send_header('Content-type', 'text/html')
          self.end_headers()                                     Visualizando:
          self.wfile.write(f.read())
          f.close()                                              Http://127.0.0.1:7777/arquivo.html
    except IOError:
      self.send_error(404,'File Not Found: %s' % self.path)


  def do_POST(self):
       self.wfile.write("<p>POST</p>");
                                                                                                         8
                              (continua na outra coluna)
Servidores Web (Ready for Action)
             Strong focus on high concurrency, performance and low
             memory usage. (sic)

             Rápido, Configurável, LoadBalancer, Estável




             Although the main design goal of Apache is not to be the
             "fastest" web server. (sic)

             Configurável, Padrão de Mercado




                                                                  9
Diagrama Caminho das Requisições




                                   10
(Outros)   Servidores Web (Ready for Action)

                         Maintainer: Facebook

                         Além de ser um servidor de alta performance
                         também é um Framework robusto.



                         I/O Não Bloqueante

    gevent.org           Baseado em corotinas (Trocas de Contexto)




                         Fast Asynchronous Python Web Server - FAPWS

                         Usado no eBay.

                         100 milhões (simples) requisições por dia em
                         2 servidores 4-core.
                                                                     11
Servidores pela totalidade de sites ativos




                                         12
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <title>Título do Site</title>
  </head>
  <body>
     <p>Conteúdo de um paragrafo.</p>
  </body>
</html>



                                                                             13
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <title>Titulo do Site</title>
  </head>
  <body>
     <p>Conteúdo de um paragrafo.</p>
  </body>
</html>



                                                                             14
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>...</head> (igual anteriormente)
  <body>
     <!-- Comentário -->
     <form action="arquivo.py" method="POST">
          <label for="nome">Digite seu nome:</label>
          <input type="text" name="nome" id="nome" />
          <input type="submit" value="Enviar" />
     </form>
  </body>
</html>
                                                        15
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>...</head> (igual anteriormente)
  <body>
     <!-- Comentário -->
     <form action="arquivo.py" method="POST">
          <label for="nome">Digite seu nome:</label>
          <input type="text" name="nome" id="nome" />
          <input type="submit" value="Enviar" />
     </form>
  </body>
</html>
                                                        16
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>...</head> (igual anteriormente)
  <body>
     <img src=”luz.jpg” border=”0” />
  </body>
</html>




                                           17
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>...</head> (igual anteriormente)
  <body>
     <img src=”luz.jpg” border=”0” />
  </body>
</html>




                                           18
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>...</head> (igual anteriormente)
  <body>
     <select name="genero">
            <option value="masculino">Masculino</option>
            <option value="feminino">Feminino</option>
     </select>
  </body>
</html>



                                                           19
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>...</head> (igual anteriormente)
  <body>
     <select name="genero">
            <option value="masculino">Masculino</option>
            <option value="feminino">Feminino</option>
     </select>
  </body>
</html>



                                                           20
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>...</head> (igual anteriormente)
  <body>
     <form action="" method="POST">
            <label for="masc">Masculino</label>
            <input type="radio" name="genero" id="masc" value="masc" />
            <label for="fem">Feminino</label>
            <input type="radio" name="genero" id="fem" value="fem" />
     </form>
  </body>
</html>
                                                                          21
Primeiros Passos com HTML 5
<!DOCTYPE html>
<html>
  <head>...</head> (igual anteriormente)
  <body>
     <form action="" method="POST">
            <label for="masc">Masculino</label>
            <input type="radio" name="genero" id="masc" value="masc" />
            <label for="fem">Feminino</label>
            <input type="radio" name="genero" id="fem" value="fem" />
     </form>
  </body>
</html>
                                                                          22
Primeiros Passos com CSS
<!DOCTYPE html>
<html>
  <head>...(igual anteriormente)
     <style type="text/css">
          .nome {
                font: italic bold 20px Arial, sans-serif;
                color: red; text-decoration: underline; }
     </style>
  </head>
  <body>
     <p class="nome">Estilizado</p> <p>Não Estilizado</p>
  </body>
                                                            23
</html>
Primeiros Passos com CSS
<!DOCTYPE html>
<html>
  <head>...(igual anteriormente)
     <style type="text/css">
          .nome {
                font: italic bold 20px Arial, sans-serif;
                color: red; text-decoration: underline; }
     </style>
  </head>
  <body>
     <p class="nome">Estilizado</p> <p>Não Estilizado</p>
  </body>
                                                            24
</html>
Primeiros Passos com Javascript
<!DOCTYPE html>
<html>
  <head>...(igual anteriormente)
     <script type="text/javascript">
            function func(){
                 document.getElementById('campo').value = "texto"; }
     </script>
  </head>
  <body>
     <input type="text" id="campo" />
     <input type="button" value="Escrever" onClick="javascript:func();" />
  </body>
                                                                             25
</html>
Primeiros Passos com Javascript
<!DOCTYPE html>
<html>
  <head>...(igual anteriormente)
     <script type="text/javascript">
            function func(){
                 document.getElementById('campo').value = "texto"; }
     </script>
  </head>
  <body>
     <input type="text" id="campo" />
     <input type="button" value="Escrever" onClick="javascript:func();" />
  </body>
                                                                             26
</html>
Primeiros Passos com Javascript
<!DOCTYPE html>
<html>
  <head>...(igual anteriormente)
     <script type="text/javascript">
            window.onload = function (){
                 document.getElementById('campo').value = "texto";
            }
     </script>
  </head>
  <body>
     <input type="text" id="campo" />
  </body>
                                                                     27
</html>
Primeiros Passos com Javascript
<!DOCTYPE html>
<html>
  <head>...(igual anteriormente)
     <script type="text/javascript">
            window.onload = function (){
                 document.getElementById('campo').value = "texto";
            }
     </script>
  </head>
  <body>
     <input type="text" id="campo" />
  </body>
                                                                     28
</html>
Primeiros Passos com Javascript
<!DOCTYPE html>
<html>
  <head>...(igual anteriormente)
     <script type="text/javascript">
            window.onload = function (){
                 alert('Mensagem do Alerta!');
            }
     </script>
  </head>
  <body>
  </body>
</html>
                                                 29
Primeiros Passos com Javascript
<!DOCTYPE html>
<html>
  <head>...(igual anteriormente)
     <script type="text/javascript">
            window.onload = function (){
                 alert('Mensagem do Alerta!');
            }
     </script>
  </head>
  <body>
  </body>
</html>
                                                 30
Dúvidas?

rafael.capucho@gmail.com
@rafaelcapucho


Obrigado




                           31

Mais conteúdo relacionado

Mais procurados

HTML - HyperText Markup Language - Review
HTML - HyperText Markup Language - ReviewHTML - HyperText Markup Language - Review
HTML - HyperText Markup Language - ReviewIsrael Messias
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantesEduardo Mendes
 
Logs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP ValeLogs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP ValeGabriel Machado
 
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
 
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Altair Borges
 
Cobol Web com Net Express 3.1/4.0/5.x - Parte 1
Cobol Web com Net Express 3.1/4.0/5.x - Parte 1Cobol Web com Net Express 3.1/4.0/5.x - Parte 1
Cobol Web com Net Express 3.1/4.0/5.x - Parte 1Altair Borges
 
Introdução de web
Introdução de webIntrodução de web
Introdução de webSedu
 
Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3Altair Borges
 
HTML 5 A evolução do HTML 4 para o HTML 5
HTML 5 A evolução do HTML 4 para o HTML 5HTML 5 A evolução do HTML 4 para o HTML 5
HTML 5 A evolução do HTML 4 para o HTML 5ondazul
 
Php Visao Geral Svs
Php Visao Geral SvsPhp Visao Geral Svs
Php Visao Geral Svscristhianobv
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Rafael Sales Pavarina
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 
PyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonPyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonBruno Rocha
 

Mais procurados (20)

HTML - HyperText Markup Language - Review
HTML - HyperText Markup Language - ReviewHTML - HyperText Markup Language - Review
HTML - HyperText Markup Language - Review
 
Http Servlet
Http ServletHttp Servlet
Http Servlet
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantes
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Html5 Aula 6
Html5 Aula 6Html5 Aula 6
Html5 Aula 6
 
o que é ajax
o que é ajaxo que é ajax
o que é ajax
 
Logs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP ValeLogs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP Vale
 
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
 
HTML5 & CSS3
HTML5 & CSS3HTML5 & CSS3
HTML5 & CSS3
 
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
 
Cobol Web com Net Express 3.1/4.0/5.x - Parte 1
Cobol Web com Net Express 3.1/4.0/5.x - Parte 1Cobol Web com Net Express 3.1/4.0/5.x - Parte 1
Cobol Web com Net Express 3.1/4.0/5.x - Parte 1
 
Introdução de web
Introdução de webIntrodução de web
Introdução de web
 
Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3Cobol Web com Net Express 5.1 - Parte 3
Cobol Web com Net Express 5.1 - Parte 3
 
HTML 5 A evolução do HTML 4 para o HTML 5
HTML 5 A evolução do HTML 4 para o HTML 5HTML 5 A evolução do HTML 4 para o HTML 5
HTML 5 A evolução do HTML 4 para o HTML 5
 
Php Visao Geral Svs
Php Visao Geral SvsPhp Visao Geral Svs
Php Visao Geral Svs
 
Tema 1 | Introdução a PHP
Tema 1 | Introdução a PHPTema 1 | Introdução a PHP
Tema 1 | Introdução a PHP
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
PyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonPyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com Python
 

Destaque

Cod buen gobierno[1]
Cod buen gobierno[1]Cod buen gobierno[1]
Cod buen gobierno[1]kattyonate
 
RWJF Hospital Price Transparency Challenge Data Webinar Slides
RWJF Hospital Price Transparency Challenge Data Webinar SlidesRWJF Hospital Price Transparency Challenge Data Webinar Slides
RWJF Hospital Price Transparency Challenge Data Webinar SlidesHemali Thakkar
 
Mengapa pilih Produ NONI ANAMED
Mengapa pilih Produ NONI ANAMEDMengapa pilih Produ NONI ANAMED
Mengapa pilih Produ NONI ANAMEDnoniridoid
 
Book Report Carr and Azuela
Book Report Carr and AzuelaBook Report Carr and Azuela
Book Report Carr and AzuelaWestBridger
 
About Lan-bridge Group
About Lan-bridge GroupAbout Lan-bridge Group
About Lan-bridge Groupzhuxianchao
 
Health Works: Supporting Health in the Working Age
Health Works: Supporting Health in the Working AgeHealth Works: Supporting Health in the Working Age
Health Works: Supporting Health in the Working AgeNHSScotlandEvent
 
The magic nature
The magic natureThe magic nature
The magic naturejugafoce
 
Love triangle Presentation Example - Minarets High Mr. Powers
Love triangle Presentation Example - Minarets High Mr. PowersLove triangle Presentation Example - Minarets High Mr. Powers
Love triangle Presentation Example - Minarets High Mr. PowersMatt Powers
 

Destaque (20)

Cod buen gobierno[1]
Cod buen gobierno[1]Cod buen gobierno[1]
Cod buen gobierno[1]
 
RWJF Hospital Price Transparency Challenge Data Webinar Slides
RWJF Hospital Price Transparency Challenge Data Webinar SlidesRWJF Hospital Price Transparency Challenge Data Webinar Slides
RWJF Hospital Price Transparency Challenge Data Webinar Slides
 
Myself
MyselfMyself
Myself
 
Atenção ao suicídio setembro 2016
Atenção ao suicídio setembro 2016 Atenção ao suicídio setembro 2016
Atenção ao suicídio setembro 2016
 
We guardians june 2014
We guardians  june 2014We guardians  june 2014
We guardians june 2014
 
Attitude
AttitudeAttitude
Attitude
 
Mengapa pilih Produ NONI ANAMED
Mengapa pilih Produ NONI ANAMEDMengapa pilih Produ NONI ANAMED
Mengapa pilih Produ NONI ANAMED
 
Book Report Carr and Azuela
Book Report Carr and AzuelaBook Report Carr and Azuela
Book Report Carr and Azuela
 
About Lan-bridge Group
About Lan-bridge GroupAbout Lan-bridge Group
About Lan-bridge Group
 
We guardians Oct 2014
We guardians  Oct 2014We guardians  Oct 2014
We guardians Oct 2014
 
Health Works: Supporting Health in the Working Age
Health Works: Supporting Health in the Working AgeHealth Works: Supporting Health in the Working Age
Health Works: Supporting Health in the Working Age
 
Web Resume
Web ResumeWeb Resume
Web Resume
 
P K Patra
P K PatraP K Patra
P K Patra
 
We guardians feb 2015
We guardians  feb 2015We guardians  feb 2015
We guardians feb 2015
 
10.9 notes
10.9 notes10.9 notes
10.9 notes
 
Transmedia Mind
Transmedia MindTransmedia Mind
Transmedia Mind
 
We guardians sept 2015
We guardians  sept 2015We guardians  sept 2015
We guardians sept 2015
 
The magic nature
The magic natureThe magic nature
The magic nature
 
Shining a Different Light
Shining a Different LightShining a Different Light
Shining a Different Light
 
Love triangle Presentation Example - Minarets High Mr. Powers
Love triangle Presentation Example - Minarets High Mr. PowersLove triangle Presentation Example - Minarets High Mr. Powers
Love triangle Presentation Example - Minarets High Mr. Powers
 

Semelhante a Introdução a Desenvolvimento Web

Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endMario Sergio
 
Aula 1 linguagem html (1)
Aula 1   linguagem html (1)Aula 1   linguagem html (1)
Aula 1 linguagem html (1)Kaoru Hatake
 
jQuery - A biblioteca javascript
jQuery - A biblioteca javascriptjQuery - A biblioteca javascript
jQuery - A biblioteca javascriptDiogo Benicá
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 
Melhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação WebMelhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação WebMaurício Linhares
 
Asp tutorial asp
Asp   tutorial aspAsp   tutorial asp
Asp tutorial asprobinhoct
 
Simplificando o Javascrip
Simplificando o JavascripSimplificando o Javascrip
Simplificando o JavascripMiquéias Amaro
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Bruno Borges
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com AjaxAdler Medrado
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Thyago Maia
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 

Semelhante a Introdução a Desenvolvimento Web (20)

Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)Minicurso Web. Front-end e HTML5 (parte 2)
Minicurso Web. Front-end e HTML5 (parte 2)
 
Curso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-endCurso de Java (Parte 6) Introdução a Front-end
Curso de Java (Parte 6) Introdução a Front-end
 
Aula 1 linguagem html (1)
Aula 1   linguagem html (1)Aula 1   linguagem html (1)
Aula 1 linguagem html (1)
 
jQuery - A biblioteca javascript
jQuery - A biblioteca javascriptjQuery - A biblioteca javascript
jQuery - A biblioteca javascript
 
HTML + CSS
HTML + CSSHTML + CSS
HTML + CSS
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
HTML
HTMLHTML
HTML
 
Melhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação WebMelhorando A Performance Da Sua Aplicação Web
Melhorando A Performance Da Sua Aplicação Web
 
Asp tutorial asp
Asp   tutorial aspAsp   tutorial asp
Asp tutorial asp
 
Programação Web com HTML e CSS
Programação Web com HTML e CSSProgramação Web com HTML e CSS
Programação Web com HTML e CSS
 
Curso de HTML5 CSS3 e JS
Curso de HTML5 CSS3 e JSCurso de HTML5 CSS3 e JS
Curso de HTML5 CSS3 e JS
 
Simplificando o Javascrip
Simplificando o JavascripSimplificando o Javascrip
Simplificando o Javascrip
 
Python 08
Python 08Python 08
Python 08
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Quick Form DataBase (QFDB)
Quick Form DataBase (QFDB)Quick Form DataBase (QFDB)
Quick Form DataBase (QFDB)
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com Ajax
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 

Mais de PeslPinguim

Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao ArduinoPeslPinguim
 
Aula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalAula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalPeslPinguim
 
Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalPeslPinguim
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalPeslPinguim
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalPeslPinguim
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalPeslPinguim
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacaoPeslPinguim
 
Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalPeslPinguim
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_PeslPinguim
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10PeslPinguim
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5PeslPinguim
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4PeslPinguim
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1PeslPinguim
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7PeslPinguim
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3PeslPinguim
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9PeslPinguim
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 PeslPinguim
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroPeslPinguim
 

Mais de PeslPinguim (20)

Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Aula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalAula 4 redes Inclusão Digital
Aula 4 redes Inclusão Digital
 
Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão Digital
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão Digital
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão Digital
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão Digital
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacao
 
Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão Digital
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoro
 

Introdução a Desenvolvimento Web

  • 1. 1
  • 2. Apresentação Rafael Capucho rafael.capucho@gmail.com @rafaelcapucho Ciência da Computação Universidade Federal de São Paulo ICT – Instituto de Ciência e Tecnologia PESL – Programa de Educação em Software Livre 2
  • 3. Volta no tempo Comecei a programar em meados de 2002~2003. Pude trabalhar até agora com: XHTML, CSS, Javascript, Python, PHP, C/C++, Coldfusion, Java, Actionscript, Melscript, XML, Perl, Ruby, Prolog, Haskell, Bash. (17+) 3
  • 4. Pacote mínimo para desenvolvimento web Linguagens de Marcação: HTML, xHTML, HTML 5 Linguagens para folha de estilo: CSS Linguagens client-side: Javascript, Dart? Linguagens server-side: Python, PHP, Java, Perl, Ruby, Haskell, Lua. 4
  • 6. Cabeçalho HTTP de Requisição Simples http://www.sjc.unifesp.br/portal/ GET /portal/ HTTP/1.1 Host: www.sjc.unifesp.br User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en,en-us;q=0.8,it-it;q=0.5,it;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive 6
  • 7. Cabeçalho HTTP de Resposta Simples HTTP/1.1 200 OK Date: Wed, 04 Apr 2012 20:46:07 GMT Server: Apache X-Powered-By: PHP/5.2.14-pl0-gentoo Set-Cookie: SESSc53d649b707f629d1e0698e4b02896f0=f70c13fd9f7e07da7e4fb7590f8cf130; expires=Sat, 28-Apr-2012 00:19:27 GMT; path=/; domain=.sjc.unifesp.br Expires: Sun, 19 Nov 1978 05:00:00 GMT Last-Modified: Wed, 04 Apr 2012 20:46:07 GMT Cache-Control: store, no-cache, must-revalidate, post-check=0, pre-check=0 Content-Length: 42711 Keep-Alive: timeout=10, max=198 Connection: Keep-Alive Content-Type: text/html; charset=utf-8 7
  • 8. Servidor Web Simples em Python from os import curdir as pwd if __name__ == '__main__': from os import sep as separador try: from BaseHTTPServer import BaseHTTPRequestHandler server = HTTPServer(('', 7777), MeuHandler) from BaseHTTPServer import HTTPServer server.serve_forever() except KeyboardInterrupt: class MeuHandler(BaseHTTPRequestHandler): server.socket.close() def do_GET(self): try: if self.path.endswith(".html"): Executanto: f = open(pwd + separador + self.path) self.send_response(200) $ python servidor.py self.send_header('Content-type', 'text/html') self.end_headers() Visualizando: self.wfile.write(f.read()) f.close() Http://127.0.0.1:7777/arquivo.html except IOError: self.send_error(404,'File Not Found: %s' % self.path) def do_POST(self): self.wfile.write("<p>POST</p>"); 8 (continua na outra coluna)
  • 9. Servidores Web (Ready for Action) Strong focus on high concurrency, performance and low memory usage. (sic) Rápido, Configurável, LoadBalancer, Estável Although the main design goal of Apache is not to be the "fastest" web server. (sic) Configurável, Padrão de Mercado 9
  • 10. Diagrama Caminho das Requisições 10
  • 11. (Outros) Servidores Web (Ready for Action) Maintainer: Facebook Além de ser um servidor de alta performance também é um Framework robusto. I/O Não Bloqueante gevent.org Baseado em corotinas (Trocas de Contexto) Fast Asynchronous Python Web Server - FAPWS Usado no eBay. 100 milhões (simples) requisições por dia em 2 servidores 4-core. 11
  • 12. Servidores pela totalidade de sites ativos 12
  • 13. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Título do Site</title> </head> <body> <p>Conteúdo de um paragrafo.</p> </body> </html> 13
  • 14. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Titulo do Site</title> </head> <body> <p>Conteúdo de um paragrafo.</p> </body> </html> 14
  • 15. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head>...</head> (igual anteriormente) <body> <!-- Comentário --> <form action="arquivo.py" method="POST"> <label for="nome">Digite seu nome:</label> <input type="text" name="nome" id="nome" /> <input type="submit" value="Enviar" /> </form> </body> </html> 15
  • 16. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head>...</head> (igual anteriormente) <body> <!-- Comentário --> <form action="arquivo.py" method="POST"> <label for="nome">Digite seu nome:</label> <input type="text" name="nome" id="nome" /> <input type="submit" value="Enviar" /> </form> </body> </html> 16
  • 17. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head>...</head> (igual anteriormente) <body> <img src=”luz.jpg” border=”0” /> </body> </html> 17
  • 18. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head>...</head> (igual anteriormente) <body> <img src=”luz.jpg” border=”0” /> </body> </html> 18
  • 19. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head>...</head> (igual anteriormente) <body> <select name="genero"> <option value="masculino">Masculino</option> <option value="feminino">Feminino</option> </select> </body> </html> 19
  • 20. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head>...</head> (igual anteriormente) <body> <select name="genero"> <option value="masculino">Masculino</option> <option value="feminino">Feminino</option> </select> </body> </html> 20
  • 21. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head>...</head> (igual anteriormente) <body> <form action="" method="POST"> <label for="masc">Masculino</label> <input type="radio" name="genero" id="masc" value="masc" /> <label for="fem">Feminino</label> <input type="radio" name="genero" id="fem" value="fem" /> </form> </body> </html> 21
  • 22. Primeiros Passos com HTML 5 <!DOCTYPE html> <html> <head>...</head> (igual anteriormente) <body> <form action="" method="POST"> <label for="masc">Masculino</label> <input type="radio" name="genero" id="masc" value="masc" /> <label for="fem">Feminino</label> <input type="radio" name="genero" id="fem" value="fem" /> </form> </body> </html> 22
  • 23. Primeiros Passos com CSS <!DOCTYPE html> <html> <head>...(igual anteriormente) <style type="text/css"> .nome { font: italic bold 20px Arial, sans-serif; color: red; text-decoration: underline; } </style> </head> <body> <p class="nome">Estilizado</p> <p>Não Estilizado</p> </body> 23 </html>
  • 24. Primeiros Passos com CSS <!DOCTYPE html> <html> <head>...(igual anteriormente) <style type="text/css"> .nome { font: italic bold 20px Arial, sans-serif; color: red; text-decoration: underline; } </style> </head> <body> <p class="nome">Estilizado</p> <p>Não Estilizado</p> </body> 24 </html>
  • 25. Primeiros Passos com Javascript <!DOCTYPE html> <html> <head>...(igual anteriormente) <script type="text/javascript"> function func(){ document.getElementById('campo').value = "texto"; } </script> </head> <body> <input type="text" id="campo" /> <input type="button" value="Escrever" onClick="javascript:func();" /> </body> 25 </html>
  • 26. Primeiros Passos com Javascript <!DOCTYPE html> <html> <head>...(igual anteriormente) <script type="text/javascript"> function func(){ document.getElementById('campo').value = "texto"; } </script> </head> <body> <input type="text" id="campo" /> <input type="button" value="Escrever" onClick="javascript:func();" /> </body> 26 </html>
  • 27. Primeiros Passos com Javascript <!DOCTYPE html> <html> <head>...(igual anteriormente) <script type="text/javascript"> window.onload = function (){ document.getElementById('campo').value = "texto"; } </script> </head> <body> <input type="text" id="campo" /> </body> 27 </html>
  • 28. Primeiros Passos com Javascript <!DOCTYPE html> <html> <head>...(igual anteriormente) <script type="text/javascript"> window.onload = function (){ document.getElementById('campo').value = "texto"; } </script> </head> <body> <input type="text" id="campo" /> </body> 28 </html>
  • 29. Primeiros Passos com Javascript <!DOCTYPE html> <html> <head>...(igual anteriormente) <script type="text/javascript"> window.onload = function (){ alert('Mensagem do Alerta!'); } </script> </head> <body> </body> </html> 29
  • 30. Primeiros Passos com Javascript <!DOCTYPE html> <html> <head>...(igual anteriormente) <script type="text/javascript"> window.onload = function (){ alert('Mensagem do Alerta!'); } </script> </head> <body> </body> </html> 30