O Code::Blocks é uma ferramenta de código aberto para desenvolvimento de programas em linguagem C e C++. A grande vantagem do Code::Blocks ser um software de licença GPL ou seja sem custos ocultos.Software sob licença GPL nunca ataca ou infecta outro software. A GPL propõe que a liberdade dos softwares se preserve desde os desenvolvedores até o usuário final, outros acreditam que intermediários devam ter a liberdade de modificar e redistribuí-los comercialmente. Mais especificamente, a GPL exige redistribuição sujeita à GPL, embora outras mais “permissivas” permitam redistribuição sob forma mais restritiva que a original. Em um mercado grande, códigos sob licença GPL tem preço praticamente nulo, pois cada usuário tem igual direito de revendê-lo. Isso pode inibir o interesse no seu uso ao comprometer os interesses econômicos do desenvolvedor. A Microsoft, por exemplo, inclui termos anti-GPL ao disponibilizar seus códigos. Porém essa crítica é rebatida na observação de que empresas que focam seus negócios em software livre, como a Red Hate a IBM, trabalham na venda de serviços agregados como suporte e desenvolvimento de novas funcionalidades, ao invés da venda do software.A GPL não tem cláusula de indenização explícita protegendo os desenvolvedores de contribuição inescrupulosa. Por exemplo, se um projeto GPL é acrescido de um trabalho patenteado ou sob copyright, violando os termos destes, todos os envolvidos neste projeto, não só a pessoa que se apossou indevidamente dos trabalhos alheios, serão processados por danos ao detentor da patente ou do direito de cópia.
O destaque do Code::Blocks é por ser Coss Plataform,com isso ele é capaz de rodar em Linux,Windows,Mac.Funciona muito bem na plataforma Linux, já em Windows ele não é recomendado para Windows Vista e superiores, segundo o site oficial, apesar de funcionar sempre muito bem na maioria dos casos.Destaque de sintaxe, criado para atender as necessidades dos usuários mais exigentes. Possui um framework de plugins, deste modo, o próprio usuário pode melhorar a funcionalidade do programa.
Achei muito bom,porque não gera incompatibilidade com outros programas do gênero,como acontece na maioria dos compiladores C++.Suas ferramentas de cores e indicações de erros deixam qualquer programador o melhor de todos.Mas não acostume,pois no seu serviço você terá que programar sem nada indicando seus erros e mostrando cores
Para quem deseja ser um grande profissional na área de programação, é necessário conhecer a grande variedade de compiladores existente, para assim escolher o melhor que o atente, e irá beneficiá-lo em seus projetos e criação. Isso também pode ajudá-lo no mercado de trabalho com um conhecimento em diversas ferramentas, pode ser um grande diferencial dos outros competidores a vaga.
Client-Side Scripts
São responsáveis pelas ações executadas no browser, sem contato com o servidor. Os exemplos mais comuns de aplicações client-side são imagens e textos que mudam com o passar do mouse.
Os scripts client-side são muito úteis para fazer validações de formulários sem utilizar processamento do servidor e sem provocar tráfego na rede. Outra utilização comum é na construção de interfaces dinâmicas e “leves”.
Figura 1. Funcionamento de scripts client-side
Server-Side Scripts
Os scripts server-side são responsáveis pela criação de páginas em tempo real. Num mecanismo de busca, por exemplo, seria inviável manter um arquivo para cada consulta a ser realizada. O que existe é um modelo da página de resposta, que é mesclado com os dados no momento em que a página é requisitada.
Figura 2. Requisição Normal
Figura 3. Requisição de página dinâmica
O que é PHP?
PHP é uma linguagem que permite criar sites WEB dinâmicos, possibilitando uma interação com o usuário através de formulários, parâmetros da URL e links. A diferença de PHP com relação a linguagens semelhantes a Javascript é que o código PHP é executado no servidor, sendo enviado para o cliente apenas html puro. Desta maneira é possível interagir com bancos de dados e aplicações existentes no servidor, com a vantagem de não expor o código fonte para o cliente. Isso pode ser útil quando o programa está lidando com senhas ou qualquer tipo de informação confidencial.
O que diferencia PHP de um script CGI escrito em C ou Perl é que o código PHP fica embutido no próprio HTML, enquanto no outro caso é necessário que o script CGI gere todo o código HTML, ou leia de um outro arquivo.
O que pode ser feito com PHP?
Basicamente, qualquer coisa que pode ser feita por algum programa CGI pode ser feita também com PHP, como coletar dados de um formulário, gerar páginas dinamicamente ou enviar e receber cookies.
PHP também tem como uma das características mais importantes o suporte a um grande número de bancos de dados, como dBase, Interbase, mSQL, mySQL, Oracle, Sybase, PostgreSQL e vários outros. Construir uma página baseada em um banco de dados torna-se uma tarefa extremamente simples com PHP.
Além disso, PHP tem suporte a outros serviços através de protocolos como IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP. Ainda é possível abrir sockets e interagir com outros protocolos.
Como surgiu a linguagem PHP?
A linguagem PHP foi concebida durante o outono de 1994 por Rasmus Lerdorf. As primeiras versões não foram disponibilizadas, tendo sido utilizadas em sua home-page apenas para que ele pudesse ter informações sobre as visitas que estavam sendo feitas. A primeira versão utilizada por outras pessoas foi disponibilizada em 1995, e ficou conhecida como “Personal Home Page Tools” (ferramentas para página pessoal). Era composta por um sistema bastante simples que interpretava algumas macros e alguns utilitários que rodavam “por trás” das home-pages: um livro de visitas, um contador e algumas outras coisas.
Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de PHP/FI, o “FI” veio de um outro pacote escrito por Rasmus que interpretava dados de formulários HTML (Form Interpreter). Ele combinou os scripts do pacote Personal Home Page Tools com o FI e adicionou suporte a mSQL, nascendo assim o PHP/FI, que cresceu bastante, e as pessoas passaram a contribuir com o projeto.
Estima-se que em 1996 PHP/FI estava sendo usado por cerca de 15.000 sites pelo mundo, e em meados de 1997 esse número subiu para mais de 50.000. Nessa época houve uma mudança no desenvolvimento do PHP. Ele deixou de ser um projeto de Rasmus com contribuições de outras pessoas para ter uma equipe de desenvolvimento mais organizada. O interpretador foi reescrito por Zeev Suraski e Andi Gutmans, e esse novo interpretador foi a base para a versão 3.
O lançamento do PHP4, ocorrido em 22/05/2000, trouxe muitas novidades aos programadores de PHP. Uma das principais foi o suporte a sessões, bastante útil pra identificar o cliente que solicitou determinada informação. Além das mudanças referentes a sintaxe e novos recursos de programação, o PHP4 trouxe como novidade um otimizador chamado Zend, que permite a execução muito mais rápida de scripts PHP. A empresa que produz o Zend promete para este ano o lançamento de um compilador de PHP. Códigos compilados serão executados mais rapidamente, além de proteger o fonte da aplicação.
02. Enviando Dados para o Servidor HTTP
Programar para a web pode ser considerado como um jogo que consiste em receber os dados do usuário, processá-los e enviar a resposta dinâmica. Uma vez enviada a resposta, é encerrado o contato entre o servidor e o cliente. Portanto a primeira coisa a aprender é como fazer para receber os dados enviados pelo browser para o servidor.
O protocolo HTTP provê dois principais métodos para enviar informações para o servidor web, além da URL referente ao arquivo solicitado. Esses métodos são o POST e o GET.
O protocolo HTTP/1.0 também especifica o método HEAD, utilizado apenas para transmitir informações do header, além dos métodos PUT e DELETE, que não serão abordados neste curso.
O método GET
A especificação do protocolo HTTP/0.9 (a primeira implementação do HTTP) possuía a definição do método GET, utilizado pelo browser para solicitar um documento específico.
Por exemplo: a seguinte requisição HTTP retornaria o documento "index.html", localizado no diretório do servidro chamado “teste”:
GET /teste/index.html CRLF
Devemos notar que a requisição GET inicia com a palavra GET, inclui o documento solicitado e encerra com a combinação dos caracteres carriage return e line feed.
Para um melhor entendimento, você pode fazer uma requisição GET conectando diretamente em algum servidor WEB, conectando através de um programa de telnet (geralmente o servidor http utiliza a porta 80). A resposta será o código da página solicitada.
telnet www.guia-aju.com.br 80
Trying 200.241.59.16...
Connected to www.guia-aju.com.br.
Escape character is '^]'.
GET /index.php3
(... página solicitada ...)
Connection closed by foreign host.
Obviamente a diferença do browser é que ele trata as informações recebidas e exibe a página já formatada.
Através do método GET também é possível passar parâmetros da requisição ao servidor, que pode tratar esses valores e até alterar a resposta a depender deles, como no exemplo abaixo:
telnet www.guia-aju.com.br 80
Trying 200.241.59.16...
Connected to www.guia-aju.com.br.
Escape character is '^]'.
GET /index.php3?id=0024horas&tipo=Taxi
(... página solicitada ...)
Connection closed by foreign host.
No exemplo são passados dois parâmetros: id e tipo. Esses parâmetros estão no formato conhecido por URLencode, que é detalhado no capítulo 09.
Apesar de ser possível passar parâmetros utilizando o método GET, e com isso gerar páginas dinamicamente, este método tem pelo menos dois problemas que em determinadas circunstâncias podem ser considerados sérios:
O primeiro é que o GET permite uma quantidade de dados passados limitada a 1024 caracteres, o que pode gerar perda de informações em certos casos.
O segundo é que pelo fato de que as informações fazem parte da URL, todos os dados podem ser vistos pelo usuário. Isso pode ser extremamente perigoso quando informações sigilosas estão envolvidas (senha, por exemplo).
Headers
A versão 1.0 do protocolo HTTP trouxe boas inovações ao mesmo. Uma delas foi a criação de headers nas mensagens de requisição e de resposta. Os headers são informações trocadas entre o navegador e o servidor de maneira transparente ao usuário, e podem conter dados sobre o tipo e a versão do navegador, a página de onde partiu a requisição (link), os tipos de arquivos aceitos como resposta, e uma série de outras informações.
Assim foi possível definir um outro método de requisição de arquivos, que resolveu os principais problemas do método GET.
O método POST
Através da utilização de headers é possível enviar os parâmetros da URL solicitada sem expor esses dados ao usuário, e também sem haver um limite de tamanho.
Uma conexão ao servidor HTTP utilizando o método POST seria algo semelhante ao que segue:
telnet www.guia-aju.com.br 80
Trying 200.241.59.16...
Connected to www.guia-aju.com.br.
Escape character is '^]'.
POST /index.php3
Accept */*
Content-type: application/x-www-form-urlencoded
Content-length:22
id=0024horas&tipo=Taxi
(... página solicitada ...)
Connection closed by foreign host.
Devemos observar os headers enviados ao servidor: a linha “Accept” informa os tipos de dados que podem ser enviados como resposta (no caso, todos). A linha “Content-type” informa o tipo de dado que está sendo enviado (urlencoded). O terceiro header é o mais importante pois informa o tamanho do corpo da mensagem, que contém os parâmetros. Após todos os headers há um salto de linha e então é iniciado o corpo da mensagem, no formato urlencoded.
Obviamente o usuário não deve se preocupar com os headers, em codificar os dados ou em calcular o tamanho do corpo da mensagem. O browser faz isso de maneira transparente.
Utilizando GET e POST
O método GET pode ser utilizado através da digitação de um endereço no local apropriado do navegador ou através de um hiperlink, ou seja, uma referência de uma página a outra. Nesses casos é preciso converter os dados para o formato urlencode. A terceira maneira de utilizar o GET é através de formulários HTML, e neste caso o usuário não precisa se preocupar com a codificação dos dados. A utilização de formulários HTML é a única maneira possível de submeter dados pelo método POST.
03. Formulários HTML
Definindo um formulário
Por ser uma linguagem de marcação, a sintaxe do HTML na maioria dos casos exige uma “tag” de início e uma de final daquele bloco. É Exatamente isso que ocorre com a definição de um formulário: uma tag no início e outra no final, sendo que todos os elementos do formulário devem estar entre as duas tags. Isto torna possível a inclusão de mais de um formulário num mesmo html. As tags citadas são:
Cada elemento do formulário deve possuir um nome que irá identificá-lo no momento em que o script indicado no ACTION for tratar os dados.
A tag
Muitos elementos de um formulário html são definidos pela tag . Cada tipo de elemento possui parâmetros próprios, mas todos possuem pelo menos dois parâmetros em comum: type, que define o tipo de elemento, e name, que como já foi dito define o nome daquele elemento.
Campo de Texto
O campo mais comum em formulários. Exibe na tela um campo para entrada de texto com apenas uma linha.
Parâmetros:
Value o valor pré-definido do elemento, que aparecerá quando a página for carregada;
Size O tamanho do elemento na tela, em caracteres;
Maxlength O tamanho máximo do texto contido no elemento, em caracteres;
Campo de Texto com Máscara
Tipo de campo semelhante ao anterior, com a diferença que neste caso os dados digitados são substituídos por asteriscos, e por isso são os mais recomendados para campos que devam conter senhas. É importante salientar que nenhuma criptografia é utilizada. Apenas não aparece na tela o que está sendo digitado.
Parâmetros:
Value o valor pré-definido do elemento, que aparecerá quando a página for carregada;
Size O tamanho do elemento na tela, em caracteres;
Maxlength O tamanho máximo do texto contido no elemento, em caracteres;
Checkbox
Utilizado para campos de múltipla escolha, onde o usuário pode marcar mais de uma opção.
Parâmetros:
Value o valor que será enviado ao servidor quando o formulário for submetido, no caso do campo estar marcado
Checked O estado inicial do elemento. Quando presente, o elemento já aparece marcado;
Radio Button
Utilizado para campos de múltipla escolha, onde o usuário pode marcar apenas uma opção. Para agrupar vários elementos deste tipo, fazendo com que eles sejam exclusivos, basta atribuir o mesmo nome a todos do grupo.
Parâmetros:
Value o valor que será enviado ao servidor quando o formulário for submetido, no caso do campo estar marcado
Checked O estado inicial do elemento. Quando presente, o elemento já aparece marcado;
Submit Button
Utilizado para enviar os dados do formulário para o script descrito na seção “action” da definição do formulário
Parâmetros:
Value o texto que aparecerá no corpo do botão.
Reset Button
Utilizado para fazer todos os campos do formulário retornem ao valor original, quando a página foi carregada. Bastante utilizado como botão “limpar”, mas na realidade só limpa os campos se todos eles têm como valor uma string vazia.
Parâmetros:
Value – o texto que aparecerá no corpo do botão.
Button
Utilizado normalmente para ativar funções de scripts client-side (JavaScript, por exemplo). Sem essa utilização, não produz efeito algum
Parâmetros:
Value – o texto que aparecerá no corpo do botão.
TextArea
Exibe na tela uma caixa de texto, com o tamanho definido pelos parâmetros “cols” e “rows”.
Parâmetros:
Cols número de colunas do campo, em caracteres;
Rowsnúmero de linhas do campo, em caracteres;
Wrap Maneira como são tratadas as quebras de linha automáticas. O valor soft faz com que o texto quebre” somente na tela, sendo enviado para o servidor o texto da maneira como foi digitado; O valor “hard” faz com que seja enviado para o servidor da maneira como o texto aparece na tela, com todas as quebras de linhas inseridas automaticamente; o valor “off” faz com que o texto não quebre na tela e nem quando enviado ao servidor.
Value O elemento do tipo textarea não possui o parâmetro “value”. O valor pré-definido do campo é o texto que fica entre as tags .
Select
Se o parâmetro “size” tiver o valor 1 e não houver o parâmetro “multiple”, exibe na tela uma “combo box”. Caso contrário, exibe na tela uma “select list”
Parâmetros:
Size número de linhas exibidas. Default: 1;
Multiple parâmetro que, se presente, permite que sejam selecionadas duas ou mais linhas, através das teclas Control ou Shift;
option Cada item do tipo “option” acrescenta uma linha ao select;
value Valor a ser enviado ao servidor se aquele elemento for selecionado. Default: o texto do item;
text valor a ser exibido para aquele item. Não é definido por um parâmetro, mas pelo texto que fica entre as tags