Archive | Programação

Tags: , ,

Ruby, o que é?

Posted on 03 outubro 2009 by Mateus Gomes

Ruby é uma Linguagem de programação interpretada, com tipagem dinâmica e forte, orientada a objetos e, com várias semelhanças com Perl, Python e SmallTalk.

Projetada tanto para a programação em grande escala quanto para codificação rápida, tem um suporte a orientação a objetos simples e prático. A linguagem foi criada pelo japonês Yukihiro Matsumoto, que aproveitou as melhores idéias das outras linguagens da época.

Esta linguagem possui vastos repositórios de bibliotecas disponíveis em sites como Ruby Forge e Ruby Application Archive (RAA). Existe, ainda, uma ferramenta bastante útil para instalação de bibliotecas, chamada Ruby Gems, o software mais famoso desenvolvido em Ruby é o Ruby on Rails.

História

Ruby se tornou reconhecida no meio especializado desde que Dave Thomas, conhecido como um dos “Programadores Pragmáticos”, adotou-o como uma de suas linguagens preferidas e acabou por escrever um dos mais completos livros sobre a linguagem, o Programming Ruby. Com o advento desta publicação, a linguagem passou a contar com uma boa fonte de iniciação e referência em inglês, aumentando consequentemente o número de adeptos da linguagem no Ocidente.

Ultimamente, devido a grande exposição de um framework web feito em Ruby, o Ruby on Rails desenvolvido por David Heinemeier Hansson, a linguagem tem sido foco da mídia especializada justamente pela sua praticidade.

Esta mesma praticidade inclusive é um dos conceitos básicos desta linguagem. É possível fazer algoritmos que resolvam seus problemas, não necessitando se preocupar com as limitações da linguagem ou do interpretador.

Características

Para manter a praticidade, a linguagem possui algumas características interessantes:

  • A sintaxe é enxuta, quase não havendo necessidade de colchetes e outros caracteres.
  • Todas as variáveis são objetos, onde até os “tipos primitivos” (tais como inteiro, real, entre outros) são classes.
  • Estão disponíveis diversos métodos de geração de código em tempo real, como os “attribute accessors”.
  • Através do Ruby Gems, é possível instalar e atualizar bibliotecas com uma linha de comando, de maneira similar ao APT do Debian Linux.
  • Code blocks (blocos de código), ajudam o programador a passar um trecho de instruções para um método. A idéia é semelhante aos “callbacks” do Java, mas de uma forma extremamente simples e bem implementada.
  • Mixins, uma forma de emular a herança múltipla, sem cair nos seus problemas.
  • Tipagem dinâmica, mas forte. Isso significa que todas as variáveis devem ter um tipo (fazer parte de uma classe), mas a classe pode ser alterada dinamicamente. Os “atalhos” citados acima, por exemplo, se beneficiam da tipagem dinâmica para criar os métodos de acesso/alteração das propriedades.

Ruby está disponível para diversas plataformas, como Microsoft Windows, .NET, Linux, Solaris e Mac OS X, além de também ser executável em cima da máquina virtual do Java (através do JRuby).

Orientação a objetos

Muitos programadores consideram o Ruby uma linguagem de programação totalmente orientada a objetos (de maneira similar ao SmallTalk), porém devido a inexistência de conceitos padrões para especificação de linguagens OO, isto não pode ser provado.

Ruby não possui tipos primitivos, mas sim todos tipos são classes, assim como todas variáveis são objetos. Como exemplo, conjunto de caracteres é uma instância da classe String, inteiro é da Fixnum e matriz é Array.

Um conceito interessante também é que a maioria dos operadores binários e unários são, na realidade, métodos. Ou seja, podem ser alterados da mesma forma que os operadores em C++. Exemplo:


 class MeuNumero < Fixnum
   def +(numero)
    42
   end
 end

numero = MeuNumero.new(1)
# Repare como um operador de soma é um método em ruby, ao contrário de outras linguagens puts numero + 2 # 1+2 = 42 ??? Sim, sobrescrevemos o método de soma para retornar 42 sempre.

Quem está por trás do Ruby?

Ainda hoje, Matz é o responsável por todas as decisões não-consensuais do Ruby. Ou seja, qualquer divergência quanto à implementação de uma nova funcionalidade é resolvida pelo “ditador benevolente”. Apesar desta “dependência”, a comunidade é forte a ponto de sobreviver “caso o Matz seja atropelado por um ônibus espacial”. Existem pessoas que estão tão inteiradas com o código quanto o próprio Matz. Diferentemente de outras tecnologias opensource, não existe uma empresa por trás de suas operações, bancando os custos. O projeto sobrevive de doações feitas pelos usuários satisfeitos e por empresas que conseguiram aumentar sua produtividade utilizando Ruby.

Links externos

Fonte: Wikipédia

Comments (1)

Tags: , ,

(Servidor Java) Instalação e Configuração do Tomcat

Posted on 16 julho 2009 by Mateus Gomes

Olá pessoal, hoje iremos falar sobre como instalar e configurar o Servlet Conteiner Tomcat em Ambiente Windows.

O Tomcat é um Conteiner Servlet (Servidor de Aplicações Java), que serve para interpretar aplicações escritas em Java para Web, até o momento o Tomcat é apenas um Conteiner Servlet ele não implementa um Conteiner EJB (Enterprise Java Beans).

Pré-Requisitos:

Se você apenas for rodar aplicações no Tomcat, basta ter o JRE (Java Runtime Environment) instalado em seu computador. Caso você for desenvolver aplicações é necessário estar instalado o Ambiente de Desenvolvimento Java – JDK.

Download do Tomcat:

1 – Para efetuar o download vamos até o site oficial de downloads do Servlet Conteiner Tomcat, através do link abaixo:
http://tomcat.apache.org/download-60.cgi

2 – No item Binary Distributions clique em Windows Service Installer.

Observação: Atualmente o Tomcat encontra-se na versão 6.0.16, antes de baixar verifique o seu sistema operacional, nesse tutorial estaremos utilizando no sistema operacional Windows XP.

Instalação do Tomcat:

1 – Na primeira tela temos informações sobre o Tomcat, clique em Next:
tomcat_materia_1_intalando_imagem_1

2 – Na próxima tela temos o contrato de utilização do Software, clique em I Agree:
gd_imagem_2

3 – Na próxima tela temos as configurações de componentes do Tomcat ou seja , aqui definimos o tipo de instalação, no nosso tutorial utilizaremos a instalação Custom que contém a Documentação e alguns exemplos de JSP/Servlets:
gd_imagem_3

4 – Na próxima tela temos o diretório onde o Tomcat vai ser instalado, em nossa instalação vamos adicionar o seguinte caminho: C:Arquivos de programasTomcat 6.0, após isso clique em Next:
gd_imagem_4

5 – Na tela abaixo temos as configurações básicas do Tomcat que são:

Porta de instalação: Essa porta de acesso deve ser exclusiva ao Tomcat, por padrão a porta de instalação do Tomcat é a 8080.
User Name: Define um nome de usuário para acesso a administração do Tomcat, por padrão ele define como admin.
Password: Define uma senha para o administrador do Tomcat, são recomendados por questões de segurança em rede que esta senha tenha mínimo 6 caracteres e contenha letras e números.

Após definir essas configurações clique em Next:
gd_imagem_5

6 – Na tela abaixo indica onde esta instalada a JRE (Java Runtime Environment), após isso clique em Install:
gd_imagem_6

7 – Após a instalação aparecerá à tela abaixo onde indica que o Tomcat foi instalado com sucesso, ela apresenta dois checkbox selecionados:

Run Apache Tomcat: Indica que após clicar em Finish o serviço do Tomcat será iniciado.
Show Readme: Mostra uma documentação contendo informações sobre o Apache Tomcat.

Para concluir a instalação clique em Finish:
gd_imagem_7

8 – Após clicar em Finish na barra de status de seu sistema operacional aparecerá um novo ícone, esse ícone é o status do Tomcat que representa:
imagem_8

Clicando sobre esse ícone aparecerá à seguinte tela onde você terá varias configurações que podem ser realizadas no Tomcat, mas uma das principais fica na Aba General, onde você pode configurar o serviço como: Manual, Automático ou Desabilitado:
imagem_9

Configuração do Tomcat:

A Configuração do Tomcat é uma parte muito importante para o correto funcionamento do seu ambiente, essa configuração consiste na criação de uma variável de ambiente chamada CATALINA_HOME.

1 – Para acessar as variáveis de ambiente clique com o botão direito do mouse no ícone Meu Computador, clique na Aba Avançado, e clique no botão Variáveis de Ambiente, ou se preferir vá até o Painel de Controle, clique em Sistema, e clique no botão Variáveis de Ambiente:
imagem_10

Existem dois tipos de Variáveis de Ambiente:

Variáveis de Usuário: que servem para um usuário especifico;
Variáveis do Sistema: que servem para todos os usuários do computador, no nosso caso vamos criar e configurar nossa variável de ambiente como Variáveis do Sistema:
imagem_11

2 – Como dito anteriormente agora iremos criar a variável de ambiente CATALINA_HOME:

Nome da Variável: CATALINA_HOME;
Valor da Variável: Caminho onde o Tomcat foi instalado, no nosso exemplo o caminho é “C:\Arquivos de programas\Tomcat 6.0”;
imagem_12

3 – Após criar a variável de ambiente reinicie o serviço do Tomcat para que a alteração de configuração entre em vigor no seu ambiente.
Observação: Existem também outras Variáveis de Ambiente que podem ser criadas para algumas particularidades do Tomcat, mas para o seu funcionamento basta criar a variável CATALINA_HOME.

Testando a Instalação:

Para testar a instalação do Tomcat vamos acessar ele através do endereço http://localhost:8080, como a tela abaixo:
gd_imagem_13

Observação: O endereço http://localhost:8080 pode variar de acordo com a instalação realizada, caso você tenha alterado a porta de acesso no processo de instalação, não esqueça de adicionar a porta correta, Exemplo: Caso você tenha colocado a porta como 8181 o endereço para acesso seria http://localhost:8181.

Créditos: http://www.oficinadanet.com.br/

Comments (0)

Tags:

Zend Framework para um PHP mais poderoso

Posted on 20 fevereiro 2009 by Mateus Gomes

Esse tutorial tem como objetivo mostrar para as pessoas que nunca viram nada sobre o ZF(Zend Framework) e estão querendo saber como ele funciona.

Quem já ouviu falar do Zend Framework? Resumidamente a Zend é uma empresa responsável pela manutenção e desenvolvimento do PHP.
A engine de orientação a objetos do php5 foi totalmente reescrita pelo pessoal da Zend.

Mas o que seria um framework?

O framework é um conjunto de classes com objetivo de reutilização de um design, provendo um guia para uma solução de arquitetura em um domínio específico de software. (Wikipedia)
Pode-se dizer que ele seria um conjunto de bibliotecas específicas.

Falando nossa lingua, o framework é um conjuntão de bibliotecas que ajuda em nosso trabalho do dia a dia, e nos trabalhos mais complicados também.

Esse artigo utiliza a versão 0.8 do framework. (dia 28/02/07)
[atualizado]
Versão atual: 1.0.2 (01/09/07)
[/atualizado]

Entendendo o Zend Framework

O Zend Framework segue o padrão MVC – Model View Controller. É um padrão de arquitetura onde separa o GUI, templates, etc(View) da lógica(Model) e do controle(Controller).
Então nele você pode usar a mesma lógica e/ou controle em diversas interfaçes com o usuário.

Usando o Zend Framework

Agora vamos arrumar a estrutura de diretórios necessária para o correto funcionamento do ZF.

diretórios

PS: a pasta ZF-tutorial fica dentro do DocumentRoot, que é onde fica suas páginas no servidor(padrão do apache: htdocs/ ou /var/www/).

No caso a pasta controllers, models e views estão dentro da pasta app(application, nome sugestivo). publico é onde vai suas outras coisas normais como imagens e css, js e assim por diante. E lib é a pasta onde vai ficar o ZF.

Entre na pasta onde você descompactou o arquivo tarball(.tar.gz), depois entre na pasta library e copie a pasta zend para a sua pasta lib(na ZF-tutorial) do seu sistema. Talvez você precise mudar(ou copiar) como root, aqui no exemplo vou usar sem o root.

cd ~/ZendFramework-1.0.1/library
cp -Rfv Zend/ documentRoot_do_apache/ZF-tutorial/lib/

Aí depois no diretório lib irá ter lib/Zend, certo?

lib/Zend

Configurando o Apache

Primeira coisa que temos a fazer é abilitar o módulo rewrite do apache.
Edite o arquivo de configuração do apache, httpd.conf.
Descomente(tirando o #) a linha onde está escrito:

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

Defina o AccessFileName (pode ser no final do arquivo):

AccessFileName .htaccess

Setar a opção AllowOverride como All.

Trocar as linhas abaixo:

#<Directory />
# Options Indexes FollowSymLinks
# AllowOverride None
#</Directory>

por:

<directory>
Options FollowSymLinks Includes
AllowOverride All
</directory>

Criando o Bootstrapping

O controller do ZF, Zend_Controller, é feito para suportar websites com urls limpas.
Então, todas as requisições precisam ser feitas diretamente em um arquivo index.php, essa prática é conhecida como bootstrapping.
E para isso precisamos criar alguns arquivos .htaccess.

ZF-tutorial/.htaccess

RewriteEngine on
RewriteRule .* index.php
php_flag magic_quotes_gpc off
php_flag register_globals off

Essa RewriteRule quer dizer que para qualquer coisa escrita ele(apache) irá redirecionar para o index.php(que fica dentro do ZF-tutorial, calma que ainda vamos cria-lo). :)
Alí também setamos algumas configurações do PHP.ini. Essas configurações provavelmente já estão setadas como padrão, mas é bom ter certeza né. Elas só vão funcionar se estiver habilitado o mod_php no httpd.conf do apache.

Agora vamos setar nosso .htaccess na pasta público. Lá estará os arquivos JavaScript, CSS, imagens e assim por diante. Então vamos habilitar tudo por lá.

ZF-tutorial/publico/.htaccess

RewriteEngine off

Agora na pasta app e no lib não queremos que nenhum intruso acesse, porque lá estão nossos arquivos preciosos. :P
ZF-tutorial/app/.htaccess

deny from all

ZF-tutorial/lib/.htaccess

deny from all

Esse esquema de bootstrapping é recomendação dos desenvolvedores do ZF, ok? Motivo de segurança, sabe como é né.

Criando o nosso index.php(bootstrap file)

Agora vamos criar nossa index.php na pasta ZF-tutorial.
ZF-tutorial/index.php

<?php
error_reporting(E_ALL|E_STRICT); // para mostrar os erros, apenas nos testes(precisa estar setado no PHP.ini)

// Seta o timezone pra são paulo (>=PHP 5.1)
setlocale (LC_ALL, 'pt_BR');
date_default_timezone_set('America/Sao_Paulo');

/* Seta include path para o funcionamento correto do framework ***OBRIGATÓRIO*** */
set_include_path('.'.PATH_SEPARATOR.'./lib'
.PATH_SEPARATOR.'./app/models/' //facilitar depois ao loadar as nossos modelos
.PATH_SEPARATOR.get_include_path());

/* Necessário para loadar qualquer outra classe do framework ***OBRIGATÓRIO*** */
include "Zend/Loader.php";

//loada o controller front
Zend_Loader::loadClass('Zend_Controller_Front');

/*
 Essa classe se encontra em Zend/Controller/Front.php
 Pode ser loadado diretamente pelo nome se preferir

 Para começar nós precisamos loadar primeiro o front controller
 Ele faz um controle automático para detectar a base URL e fazer o redirecionamento correto
 */
$controlador = Zend_Controller_Front::getInstance();
$controlador->throwExceptions(true); // mostrar excessões(apenas para testes)
$controlador->setControllerDirectory('./app/controllers'); // seta diretório com nossos controllers

//Roda o sistema
$controlador->dispatch();

//sem fechar a tag php

Note que agente não fecha a tag php para nos previnir de erros usando o header(), no caso de espaços em branco adicionais depois do ?>.

Agora na pasta controllers vamos criar um IndexController.php. Esse controller vai entrar em ação sempre que o index for chamado.
Para entender como funciona, precisamos saber como o Zend_Controller_Front trabalha.
O ZF usa um sistema de Controllers(Controladores) e Actions(Ações). E isso é setado diretamente na url(lembra do bootstrapping?). Como?
Usando o nosso exemplo, no formato http://localhost/ZF-tutorial/index/teste o index é o Controller e o teste é o Action. Outro exemplo, http://localhost/ZF-tutorial/foo/bar o foo é o Controller e o bar é o Action.
E quando você não coloca nada? Exemplo, http://localhost/ZF-tutorial/ o Zend_Controller_Front considera como index o Controller e index a Action.
O que vem depois é parâmetro, mas isso é assunto pra depois :P

Vamos fazer nosso IndexController então
ZF-tutorial/app/controllers/IndexController.php

<?php
class IndexController extends Zend_Controller_Action
{
  public function indexAction()
  {
    $this->view->titulo = 'Primeiro Tutorial de Zend Framework';
    $this->view->detalhe = 'Olá Mundo!';
  }
}

Atenção: Sempre o controller deve levar esse padrão NomeController.php e a classe com o mesmo nome do arquivo. A primeira letra sempre em maiúsculo e o resto minúsculo.
Já os Actions também deve levar esse padrão nomeAction(), sempre minúsculo.

Mas se você for rodar o sistema agora, vai perceber que vai dar uma excpetion gigantesca aí, certo?
Ela está falando que nós não temos o viewer para o index action do index controller.

Para criar, precisamos acessar a pasta scripts que está no ZF-tutorial/views/. Lá vamos criar uma pasta para cada Controller nosso, no nosso caso iremos criar uma pasta chamada index(por causa do IndexController). Todos os templates para o IndexController devem estar nessa pasta. O mais legal é que o nome do template leva o nome da action.
Calma, vou explicar: Por padrão cada action você pode ter um template ou não, mas se a action for tem um template para ela, então o template deve levar o mesmo nome da action. Por exemplo index.phtml(extenção do template) é o viewer do indexAction(), sacaram?

Na prática agora:

cd documentRoot_do_apache/ZF-tutorial/app/views/scripts
mkdir index

Agora nós temos que criar o index.phtml
ZF-tutorial/app/views/scripts/index/index.phtml

<html>
<head>
  <title><?php echo $this->escape($this->titulo); ?></title>
</head>
<body>
  <?php echo $this->escape($this->detalhe); ?>
</body>
</html>

é recomendável que usemos o escape para escapar tags html.

Agora vamos testar nossa aplicação.
Acesse o http://localhost/ZF-tutorial e depois tente http://localhost/ZF-tutorial/index/index
Você vai perceber que deu no mesmo.

Tarefinha, de leve

Agora deixo uma tarefa para vocês: Criar um zfAction(), no IndexController, com seu respectivo viewer. Após criado, acessem http://localhost/ZF-tutorial/index/zf e vejam o que aconte!

Conclusões

Apesar desse tutorial mostrar de maneira simples como funciona o Zend Framework, podemos perceber como o Zend Frameowork é facil de usar e ao mesmo tempo é poderoso.
Para um maior aprendizado, irei postar um novo tutorial com muito mais recursos do ZF.

Por enquanto eu recomendo um tutorial muito bom(desenvolvedor do ZF), eu me baseei no tutorial dele, e tabmém usem bastante o manual.

Acesse a página de tutoriais do Zend Framework

Comments (2)

(Video Aula) Ajax – Lightbox (Galeria de imagens)

Posted on 15 fevereiro 2009 by Mateus Gomes

Nesse vídeo vocês vão aprender a abrir as fotos de uma galeria com Ajax, de forma rápida e sem precisar abrir uma janela popup ou recarregar a pagina por inteira toda vez que visualizar uma foto.

Link para download do lightbox: http://www.huddletogether.com/projects/lightbox2/#download

Comments (5)

Tags: , , ,

Funçoes em JavaScript

Posted on 23 janeiro 2009 by Mateus Gomes

Vou tentar passar um pouco sobre funções em JavaScript. Elas são muito utilizadas e devem ser bem aproveitadas pelos seus aspectos positivos, não só em JavaScript, mas como em qualquer outra linguagem de programação, que são: O código fica bem organizado, você ganha tempo e espaço, o seu código é executado com melhor desempenho e você pode executar quantas vezes desejar a sua função.

Para a criação de uma função em JavaScript, devemos fazer seguindo o modelo:

function nome-da-função {
//
Function é o parametro utilizado para a criação da função, portanto é
uma palavra reservada para criação da função em JavaScript.
ação da função
// Aqui se executa as funções que deseja.
}

E para executar essa função posteriormente basta usar:

nome-da-função();

Muito simples. E muitas pessoas quando falamos: “Precisar usar função!” fica
desesperada. Vamos para um exemplo bem simples para facilitar ainda
mais o seu entendimento.

<script>
function exemplo() {
// Criando a função chamada exemplo
document.write(”Estou testando minha primeira função em JavaScript!”);
// Escreve na tela a mensagem.
}

// Chamando a função teste
exemplo()
</script>

Agora que ja sabemos como criar uma função em JavaScript, vamos dar um exemplo mais interessante, onde o cliente clica em um botão e é executada uma função.

<script>
function clica() {
document.getElementById(”texto”).innerHTML=”Voce clicou no botao!”;
}
</script>

<input type=button onClick=”clica();” value=”Enviar”>
<div id=”texto”></div>

Vamos melhor o código acima? Imaginemos que você precisa, para todo botão
enviar de seu website, mandar a mesma mensagem do exemplo anterior.
Para isso, precisamos colocar a função em um arquivo separado de sua página (arquivo.js) e iremos chamá-lo nas páginas que necessitarmos, seja ela HTML e/ou PHP.

Crie o arquivo: funcao.js

function clica() {
document.getElementById(”texto”).innerHTML=”Voce clicou no botao!”;
}

Agora no arquivo exemplo.html

<script language=”JavaScript” src=”funcao.js”></script>
<input type=button onClick=”clica();” value=”Enviar”>
<div id=”texto”></div>

Existem também funções do javascript já predefinidas, são elas:

atob(base64) Converte um texto codificado em base64 para binário. Função inversa ao btoa(texto)
btoa(texto) Converte um texto para base64. Função inversa ao atob(base64).
decodeURI(url) Função inversa ao encodeURI
decodeURIComponent(url) Função inversa ao encodeURIComponent
isFinite(valor) Identifica se o numero é finito.
isNaN(valor) Identifica se o valor não é um numero
encodeURI(url) como o escape ele faz substituições no texto para compatibilizar
transferencia em links, mas não faz conversão para os caracteres !*()’
encodeURIComponent(url) como o escape ele faz substituições no texto para compatibilizar
transferencia em links, mas não faz conversão para os caracteres !@#$&*()=:/;?+’
escape(url) Ajusta url para que possa ser passada em chamadas e links,
convertendo os caracteres especiais para formato hexadecimal e espaço
para o sinal de +, não faz mudança nos caracteres @*/+ que ficam inalterados
eval(expressao) Interpreta expressão de JavaScript, ex:

eval(“1+2”), resultado = 3

parseInt(String)

ou

parseInt(String, base)

Converte a string num valor inteiro, ou converte uma string na base passada para inteiro.
Number(objeto) Converte a string num valor ponto flutuante
parseFloat(String) Converte a string num valor ponto flutuante
String(objeto) Retorna a representação string do objeto
unescape(url) Função inversa ao escape(url)

Retirado do site: http://pt.wikibooks.org/wiki/Javascript:_Fun%C3%A7%C3%B5es

Agora é com você! Continue aprimorando os scripts, e descubra quantas coisas são possíveis se fazerem utilizando funções usando a sua criatividade.

Retirado do site codigofonte.net, direitos reservados à Andre.

Comments (0)

Advertise Here
Advertise Here

Categorias

Páginas