Archive for category Desenvovimento em Geral

Curte podcasts? Então conheça o getOnCode()

E aí pessoal, tudo bem?

Bom, hoje quero indicar o podcast do Adler Medrado, o getOnCode(). Ele lançou o podcast esta semana, o primeiro ja está no ar e está bem bacana. Adler, parabéns pela iniciativa e sucesso no novo projeto!

Como o “slogan” do podcast sugere, entre no código e divirta-se!

Acessar o getOnCode()!

,

Nenhum comentário.

Ativando módulos e criando virtual hosts do Apache no Ubuntu

Boa tarde!

Sempre criei hosts virtuais no Linux e no Windows inserindo diretamente no arquivo de configuração do apache. Funciona, mas a pouco tempo encontrei em um blog americano (que infelizmente me esquecí de guardar a URL para citar a fonte) uma forma mais bacana de criar hosts virtuais no Apache do Ubuntu. Execute todos os comandos como root para simplificar o processo, ok? Vamos lá!

O Apache para Linux possui dois diretórios de sistema chamado sites-available e sites-enabled, localizados no /etc/apache2. Eles funcionam de forma semelhante ao mods-available e mods-enabled, onde para ativar um módulo do Apache basta usar o comando a2enmod. Para exemplificar, o comando abaixo iria ativar o módulo rewrite.load:

root@ThiagoPC:/etc/apache2/mods-enabled$ a2enmod rewrite
root@ThiagoPC:/etc/apache2/mods-enabled$ /etc/init.d/apache2 reload

Para um virtual host o procedimento é parecido. Vamos criar uma estrutura PHP básica para testar o nosso virtual host:

root@ThiagoPC:/var/www$ mkdir teste
root@ThiagoPC:/var/www$ cd teste
root@ThiagoPC:/var/www/teste$ echo “<?php phpinfo(); ?>” > index.php

Este bloco de comandos cria um projeto chamado teste, com um arquivo index.php. Para testar este passo, digite http://localhost/teste no seu navegador. A tela do phpinfo deverá ser exibida.

Agora acesse o diretório /etc/apache2/sites-available para criarmos o virtual host:

root@ThiagoPC:/etc/apache2/sites-available$ gedit teste

Quando o arquivo teste for aberto no gedit, cole o código a seguir e salve o arquivo.

<VirtualHost *:80>
DocumentRoot “/var/www/teste/”
ServerName teste
ServerAlias teste
ErrorLog “/var/log/apache2/teste-error.log”
CustomLog “/var/log/apache2/teste-custom.log” common

<Directory “/var/www/teste/”>
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

Quando finalizar este passo, digite o seguinte comando para habilitar o “site” que você acabou de criar no seu Apache:

root@ThiagoPC:/etc/apache2/sites-enabled$ a2ensite teste
root@ThiagoPC:/etc/apache2/sites-enabled$ /etc/init.d/apache2 reload

Ao digitar este comando, o seu virtual host já foi criado e habilitado. Falta apenas adicionar um direcionamento para o seu host no arquivo /etc/hosts. Adicione a seguinte linha:

127.0.1.1 teste

Pronto! Ja está funcionando… Digite http://teste no seu navegador e você irá visualizar a mesma página com o phpinfo.

Para desabilitar módulos ou sites, os comandos são a2dismod e a2dissite, respectivamente.

Um abraço!

, , , ,

17 Comentários

Tutorial Series: Orientação a objetos utilizando PHP #3

Ver Tutorial Series: Orientação a objetos utilizando PHP
Ver Tutorial Series: Introdução a orientação a objetos
Ver Tutorial Series: Implementando uma classe e criando objetos a partir dela

Referência e Objeto

No último tutorial, você aprendeu a criar um objeto a partir de uma classe. Esse foi o primeiro contato com o desenvolvimento completo de um programa orientado a objeto, ou seja, primeiramente foi modelada e implementada a classe Cliente e, posteriormente, utilizamos essa classe (na classe UsaCliente) para criar um objeto do tipo Cliente e manipular suas informações em memória. Vamos implementar uma classe chamada UsaCliente e explicar dois conceitos importantes relacionados à criação de objetos.

  1. class UsaCliente {
  2.  
  3. function usaCliente() {
  4. $c = new Cliente();
  5. $c->setNome("Ana");
  6. $c->setEndereco("Rua A");
  7. $c->setCpf("12352241123");
  8. echo $c->getNome();
  9. }
  10. }

Você lembra que a instrução da linha 4 cria um objeto (aloca espaço na memória) do tipo Cliente e que essa, é sintaxe para a criação de um objeto?

Isso está correto! Porém, nessa linha de instrução existem dois conceitos importantes envolvidos na criação de um objeto: o conceito de referência e o próprio conceito de objeto.

$c é uma variável de memória que pode armazenar uma referência (endereço de uma área de memória) para um objeto (área de memória) do tipo Cliente. Portanto, $c armazena uma referência para um objeto do tipo Cliente.

A instrução “new Cliente()” aloca uma área de memória para o objeto do tipo Cliente, isso quer dizer, que é reservada uma área de memória para armazenar os atributos definidos na classe Cliente. Quem faz essa alocação é a palavra new. Ela é responsável por identificar uma área livre na memória e reservar essa área. Essa área de memória reservada é o objeto do tipo Cliente.

Após reservar a área de memória do objeto o método construtor definido na classe desse objeto é chamado. No caso do exemplo acima, o método Cliente() está sendo chamado e dentro desse, foi implementado para que os atributos alocados dentro do objeto cliente sejam inicializados. Após, o endereço de memória da área alocada para o objeto Cliente é atribuído (armazenado) na variável $c. A partir desse momento, $c referencia um objeto Cliente.

A figura abaixo ilustra esse processo de criação de um objeto (linha 4) que na realidade envolve a criação de uma variável que fará referência a um objeto e o armazenamento nessa variável do endereço de memória do objeto criado.

As figuras abaixo ilustram o estado do objeto Cliente cuja identificação é c (o nome do objeto é c) à medida que as linhas do código da classe UsaCliente vão sendo executadas.

Linha 5: é chamado o método ou comportamento setNome(“Ana”) precedido da variável referência c e é passado um nome fixo como parâmetro. Como c “aponta” ou faz referência para o objeto (área de memória) que está no endereço 123x e o método chamado armazena o valor recebido no atributo nome desse objeto, o atributo nome que será alterado é o existente nessa área de memória (objeto) que c referencia.

Vamos revisar essa chamada de método setNome(“Ana”). A mesma explicação vale para os demais métodos set…( ). Todo método set…( ) implementado na classe Cliente espera receber um parâmetro. O método setNome($nome) espera receber um valor (parâmetro) que será armazenado na variável local do método chamada $nome. Por isso que, ao chamar esse método da classe UsaCliente, devemos passar um valor (parâmetro) para o método. No caso, “Ana” será armazenado na variável $nome e logo em seguida será armazenado no atributo nome do objeto $c.

O estado do objeto em memória fica assim:

Linhas 5 a 6: o mesmo se repete para as linhas 5 a 6.

Linha 8: nas linhas anteriores os atributos do objeto $c foram todos preenchidos através da chamada dos métodos ou comportamentos set….( ). Agora queremos acessar, recuperar o valor de algum dos atributos do objeto $c. Nessa linha, estamos mandando imprimir o conteúdo do atributo nome do objeto c. Para isso, chamamos o comportamento ou método desse objeto chamado getNome(). Como $c faz referência para uma área de memória onde o objeto se encontra, o que será impresso é o valor do atributo nome desse objeto. Todo o objeto (área de memória), para existir, deve estar associado a uma variável que armazene a sua referência (endereço da área de memória do objeto). Pode-se chamar essa variável de “referência”. No exemplo acima foi criada uma referência para um objeto do tipo Cliente.

Refinando a criação de uma Classe

Nas duas seções anteriores você aprendeu a utilizar (usar) uma classe criando objetos a partir dela. Foi desenvolvido um programa que cria e manipula 1 objeto do tipo Cliente.

Normalmente, os programas que você fará irão criar e manipular muitos objetos. Antes disso, porém, você deve aprender mais alguns conceitos importantes relacionados ao desenvolvimento de uma classe.

Você já sabe o que é uma classe, pois, já implementou e utilizou uma para criar objetos. Contudo, existem mais conceitos relacionados à criação de classes. Agora, com um conhecimento um pouco mais maduro, você será apresentado a eles. Para isso, você deve voltar à unidade anterior, mais especificamente onde a classe Cliente foi implementada. O primeiro conceito importante que vamos rever é de método construtor de uma classe.

Método Construtor

Quando um objeto é criado ou instanciado (alocado na memória através do operador new), um método definido na classe desse objeto sempre é automaticamente chamado, esse método é designado de construtor.

Esse método deve (não é obrigatório) ser definido na classe do objeto instanciado da seguinte forma:

  1. function__construct() {
  2. $this->nome = "";
  3. $this->endereco = "";
  4. $this->cpf = "";
  5. }

Quando o método construtor é chamado, o código que está dentro do método, é executado, portanto, devemos programar dentro de método construtor, qualquer instrução que queiramos que seja executada quando um objeto é criado. Normalmente, é programado dentro de um método construtor para que os atributos do objeto que está sendo criado sejam inicializados, ou seja, tenham valores consistentes (corretos).

É comum o desenvolvimento de um método construtor que esteja preparado para receber parâmetros ou não, conforme o código a seguir:

  1. function __construct($nome = "", $endereco = "", $cpf = "") {
  2. $this->nome = $nome;
  3. $this->endereco = $endereco;
  4. $this->cpf = $cpf;
  5. }

Observe que o método construtor aguarda 3 parâmetros ($nome, $endereco e $cpf), mas possui valores padrão (vazio, “”) para eles. Caso estes valores não sejam enviados, eles são definidos como vazio (“”). Desta forma, o objeto pode ser instanciado das seguintes formas:

  1. $c = new Cliente();
  2. $c2 = new Cliente("Thiago", "Meu endereço", "123456789");

Para entender melhor, observe o código a seguir:

  1. $cliente1 = new Cliente();
  2. $cliente2 = new Cliente("Carlos", "Rua C", "123552244");

Após a execução da linha 1, o objeto $cliente1 representado em memória possui o seguinte estado:

O segundo objeto cliente ($cliente2) está sendo criado e o método construtor com parâmetros Cliente (“Carlos”, “Rua C”, “123552244” ) está sendo chamado. Cada valor (parâmetro) passado para o método é armazenado na respectiva variável de memória. Por exemplo: “Carlos”, será armazenado na variável de memória do método chamada $nome; “Rua C”, será armazenado na variável de memória do método chamada $endereco; o mesmo acontece com o valor “123552244”, que será armazenado na variável $cpf.

Os valores passados serão armazenados, respectivamente, nessas variáveis de memória e, logo após, o conteúdo dessas variáveis será armazenado (atribuído) aos atributos do objeto que está sendo criado.

Portanto, esse método construtor tem o objetivo de armazenar nos atributos do objeto, valores que são passados como parâmetro para o método. Nesse momento, o objeto representado em memória possui o seguinte estado:

Observe que, ao criar o segundo objeto e chamar o método construtor com parâmetros, os atributos nome, endereço e cpf já possuem valores e não precisam mais ser modificados através dos comportamentos ou métodos setNome(), setEndereco(), etc., como terá que acontecer com o objeto $cliente1, nas linhas seguintes.

Importante!

Quando nenhum método construtor é especificado na classe, um construtor padrão é chamado automaticamente e inicializa atributos automaticamente. Outro conceito importante que vamos detalhar é o de métodos modificadores (set) e recuperadores (get) de uma classe.

Métodos modificadores(set) e recuperadores(get)

Você implementou na classe Cliente uma série de métodos ou comportamentos para alterar o valor dos atributos de um objeto (métodos chamados altera…( ) ) e para recuperar o valor desses atributos (métodos chamados fornece…( ) ). É importante você saber, e isso ficará mais claro na seção seguinte, que os atributos de um objeto só devem ser manipulados via comportamento ou métodos desse objeto e, nunca diretamente, como no exemplo:

  1. $cliente1->nome = "Ana";

Essa instrução está tentando armazenar no atributo nome, do objeto $cliente1, o nome “Ana”. Está se tentando acessar o atributo diretamente e, não através de um método ou comportamento desse objeto. Isso não deve feito e, nem ao menos funcionará, pois, os atributos da classe Cliente estão com a palavra private. Veremos com mais detalhes o significado e impacto dessa palavra nos atributos de uma classe mais tarde, por enquanto, é suficiente dizer que é essa palavra que impede que qualquer atributo de um

objeto seja acessado diretamente em outra classe (a linha acima estaria na classe UsaCliente), como no exemplo acima. Portanto, para alterar o valor do atributo nome, só nos resta chamar o método setNome(“Ana”) passando o nome “Ana” como parâmetro. Isso só é possível porque todos os métodos implementados na classe Cliente têm a palavra public (isso também será explicado mais tarde).

Essa questão será revisada na próxima seção. O que nos interessa nesse momento está relacionado ao nome dos métodos ou comportamentos implementados na classe Cliente. Na versão implementada da classe Cliente todos os métodos que alteram o valor dos atributos são chamados de set…( ). Esse nome foi utilizado para facilitar o entendimento da necessidade de existência desses métodos, o mesmo valendo para os métodos get..( ) que recuperam o valor dos atributos de um objeto.

O objetivo desse tópico é informar que existe um padrão de nomenclatura para nomes de métodos, classes e atributos.

Em relação aos métodos de uma classe, sempre que um método tem a função única e exclusiva de alterar (modificar) o atributo de uma classe ele deve começar com o a palavra set seguido do nome do atributo que ele altera.

O mesmo acontece com os métodos que tem a função de fornecer ou recuperar o valor dos atributos de um objeto, os métodos get…( ). Esses métodos devem começar com a palavra get seguido do nome do atributo que ele recupera.

Métodos set são denominados métodos modificadores porque modificam o valor dos atributos. Métodos get são denominados métodos recuperadores porque recuperam o valor dos atributos.

Gostaria de lembrar que a nomenclatura get e set não é obrigatória, é um padrão considerado como boa prática usada pela maioria dos programadores.

Dúvidas ou sugestões, sintam-se à vontade para comentar 😉 Um abraço!

, ,

Nenhum comentário.

Navegabilidade em dispositivos móveis (por Talita Pagani)

Minimizar a quantidade de informações e o esforço de interação com os elementos de interface. Estes são os princípios-chave que para que websites possam ser utilizados da melhor forma em dispositivos móveis.

Um dos principais desafios ao projetar um site ou um sistema web para mobile é o tamanho em KB do conteúdo. Internet pelo celular ainda é cobrada por KB utilizados por muitas operadoras e o custo ainda é muito elevado no Brasil. Além disso, temos um espaço muito pequeno para mostrar o conteúdo. Mesmo os melhores smartphones touch-screen têm telas relativamente pequenas se compararmos com um monitor convencional ou notebook, o que cria um esforço de interação maior.

O princípio de acessibilidade para sites visualizados em dispositivos móveis é a apresentação sucinta de informações e para isso uma diretriz fundamental é utilizar corretamente as tags do HTML e fazer uma marcação adequada e semântica. Por exemplo, utilizar corretamente as tags de cabeçalho para estruturar títulos, P para parágrafos e outras recomendações que são comuns também aos sites convencionais.

Porém, deve ser minimizado o uso de tags, utilizando apenas as que forem necessárias. Por termos um conteúdo resumido e mais verticalizado, não há necessidade de muitas tags para estruturação e posicionamento do conteúdo. E, nesse ponto, entra outra questão: muitos sites disponibilizam o mesmo layout para web e para mobile, apenas acrescentando uma folha de estilo com atributo mediatype=”handheld” para adaptar a apresentação do conteúdo aos dispositivos móveis.

O mais adequado é prover uma página alternativa, com HTML e CSS próprios para a visualização neste tipo de dispositivo. Existem verificações server-side (depende da linguagem utilizada) que permitem identificar se o usuário está acessando o site a partir de um dispositivo móvel e então fazer o redirecionamento para a versão mobile.

Desenvolver uma versão mobile de seu website implica também em reduzir as informações que são apresentadas, disponibilizando apenas textos, links e imagens que sejam mais relevantes. Fazendo isto, reduzimos a densidade informacional e possibilitamos que os usuários encontrem mais facilmente as informações. Além disso, conseguimos reduzir o tráfego de conteúdo por diminuir o tamanho da página.

Outras dicas importantes sobre acessibilidade (e também usabilidade) para dispositivos móveis:

  • Evite o uso de javascript e flash, ainda há dispositivos que não suportam corretamente estes elementos. Mesmo para dispositivos que suportem scripts, eles devem ser utilizados apenas caso não haja outra forma de realizar uma determinada função. Scripts aumentam o consumo de energia.
  • O título das páginas deve ser curto e descritivo, para que o usuário identifique a página que ele está;
  • Prover, sempre que possível, pré-seleção para valores em campos de formulário, pois isto minimiza a quantidade de entrada de dados que o usuário deve fazer.
  • Quando possível, utilizar também listas de seleção, radio buttons e outros controles que não requerem digitação.
  • Garantir que cada formulário presente tenha um botão submit, evitando submissões por de javascript através de um evento no campo de formulário.
  • Reduza a quantidade de seletores e propriedades em seu CSS e, se possível, coloque declarações em uma única linha para reduzir o tamanho dos arquivos. Você também pode optar por utilizar script server-side para a compressão das folhas de estilo.
  • Para os textos, evite medidas absolutas e em pixels, permitindo que os navegadores ajustem o conteúdo à tela. No CSS, utilize porcentagens e medidas relativas como em, ex, bolder, larger e thick.
  • Especificar as dimensões exatas da imagem em pixels ajuda o navegador a continuar o carregamento da página e evitar o recarregamento depois da página ter sido exibida por completo. Os dispositivos podem perceber melhor as intenções do desenvolvedor se as margens, bordas e espaçamentos forem especificados em pixels.

Algumas destas recomendações foram obtidas no site ready.mobi com base em diretrizes do W3C.

Fonte: Tableless.com.br

, , , ,

Nenhum comentário.

Encontro Ágil 2010 – Um evento diferente (Por Pedro Mariano)

O Encontro Ágil chega a sua terceira edição, sempre com a proposta de reunir a comunidade ágil para discutir e trocar experiências sobre cultura ágil, Programação eXtrema, Scrum, Lean, DevOps, entre outros temas.

Este ano o Encontro Ágil evoluiu seu formato e vem com uma proposta diferente: o evento NÃO TERÁ PALESTRAS. Ao invés de palestras, a ideia é valorizar as interações entre os participantes e as trocas de experiências. Para isso, sessões com espaços abertos (open spaces), dojos, workshops e jogos comporão 100% da programação.

O Encontro Ágil é voltado para toda a comunidade, incluindo profissionais do mercado, estudantes e acadêmicos. O evento será realizado dia 6 de novembro, no IME-USP. Venha compartilhar suas experiências e saber o que os outros estão fazendo. Tire as suas dúvidas e aprenda com profissionais que utilizam métodos ágeis no dia-a-dia.

Informações sobre preço e inscrição podem ser encontradas no site do evento.

Fonte: http://www.infoq.com/br/news/2010/10/encontro-agil

Nenhum comentário.

Por que considerar utilizar JavaScript no lado do servidor? (Por Pedro Mariano)

De fato hoje o JavaScript é uma das linguagens mais difundidas e conhecidas em todo o mundo. Em 1995 quando o Javascript surgiu, a intenção era criar uma linguagem que rodasse no browser, no lado do cliente. Há algum tempo o Javascript está, podemos dizer, evoluindo exponencialmente devido a sua “nova” utilidade, que é ser uma linguagem que agora pode ser executada no lado do servidor, assim como Java, C, entre outras.
Mas se já possuimos outras opções de linguagens, por que considerar utilizar o Javascript no lado do servidor? Discutir uso de linguagem e por que utilizar cada uma não é o foco deste tópico, porém vou mostrar alguns benefícios ao utilizar Javascript do lado do servidor.
JavaScript server-side é Javascript, oras!
Muitos de nós já conhecemos e sabemos utilizar, mesmo que de maneira básica, o Javascript . Porém utilizamos JavaScript apenas no lado do cliente, afinal diversas aplicações Web têm lá suas pitadas da linguagem. Então, se você em algum momento programou para Web, muito provavelmente você já deve ter utilizado JavaScript.
Esses conhecimentos adquiridos utilizando JS no lado do cliente podem ser aproveitados no lado do servidor, afinal JavaScript server-side é Javascript, oras!
Além do aprendizado, ao utilizar JavaScript tanto no cliente quanto no servidor você diminui a quantidade de conceitos diferentes necessários para desenvolver para a Web, adquire a possibilidade de reutilizar código entre o cliente e o servidor e reduz a necessidade de mudança de contexto.
Grande quantidade de bibliotecas
Com certeza a comunidade JavaScript é unida e bastante forte. Hoje em dia temos diversas bibliotecas que auxiliam no desenvolvimento de aplicações utilizando a linguagem.
Engines
Existe um grande esforço em melhorar sempre as Engines Javascript, fazendo com que elas sejam mais rápidas, poderosas e que funcionem em diversas plataformas. Entre as engines mais conhecidas e utilizadas estão a SpiderMonkey e a Rhino, desenvolvidas pela Mozilla, e a V8 mantida pela Google.
Performance
Apesar de considerada uma linguagem com boa performance, empresas como Google e Mozilla estão sempre investindo em melhorias, buscando melhorar cada vez mais o desempenho da linguagem. Ainda se comparado com linguagens como C, o Javascript é mais lento. Porém se comparado com outras linguagens interpretadas, não existe tanta discrepância.
Linguagem
Javascript é uma linguagem bastante poderosa. Duas características notáveis da linguagem são a orientação a protótipos, e a possibilidade de tratar funções como argumento ou resposta de métodos.
JavaScript como Virtual Machine
Existem alguns compiladores de código de outras linguagens para Javascript, como o CofeeScript. Existe também o HotRuby, uma VM que busca compilar código Ruby para JS.
Situação Atual
A linguagem, bibliotecas e engines estão prontas. Bibliotecas como o node.js podem facilitar a vida de quem deseja utilizar o JavaScript no lado do servidor. Ainda existe certa resistência quanto à utilização, porém acredito que dentro de poucos meses utilizar JS no lado do servidor será algo natural.

De fato hoje o JavaScript é uma das linguagens mais difundidas e conhecidas em todo o mundo. Em 1995 quando o Javascript surgiu, a intenção era criar uma linguagem que rodasse no browser, no lado do cliente. Há algum tempo o Javascript está, podemos dizer, evoluindo exponencialmente devido a sua “nova” utilidade, que é ser uma linguagem que agora pode ser executada no lado do servidor, assim como Java, C, entre outras.

Mas se já possuimos outras opções de linguagens, por que considerar utilizar o Javascript no lado do servidor? Discutir uso de linguagem e por que utilizar cada uma não é o foco deste tópico, porém vou mostrar alguns benefícios ao utilizar Javascript do lado do servidor.

JavaScript server-side é Javascript, oras!

Muitos de nós já conhecemos e sabemos utilizar, mesmo que de maneira básica, o Javascript . Porém utilizamos JavaScript apenas no lado do cliente, afinal diversas aplicações Web têm lá suas pitadas da linguagem. Então, se você em algum momento programou para Web, muito provavelmente você já deve ter utilizado JavaScript.

Esses conhecimentos adquiridos utilizando JS no lado do cliente podem ser aproveitados no lado do servidor, afinal JavaScript server-side é Javascript, oras!

Além do aprendizado, ao utilizar JavaScript tanto no cliente quanto no servidor você diminui a quantidade de conceitos diferentes necessários para desenvolver para a Web, adquire a possibilidade de reutilizar código entre o cliente e o servidor e reduz a necessidade de mudança de contexto.

Grande quantidade de bibliotecas

Com certeza a comunidade JavaScript é unida e bastante forte. Hoje em dia temos diversas bibliotecas que auxiliam no desenvolvimento de aplicações utilizando a linguagem.

Engines

Existe um grande esforço em melhorar sempre as Engines Javascript, fazendo com que elas sejam mais rápidas, poderosas e que funcionem em diversas plataformas. Entre as engines mais conhecidas e utilizadas estão a SpiderMonkey e a Rhino, desenvolvidas pela Mozilla, e a V8 mantida pela Google.

Performance

Apesar de considerada uma linguagem com boa performance, empresas como Google e Mozilla estão sempre investindo em melhorias, buscando melhorar cada vez mais o desempenho da linguagem. Ainda se comparado com linguagens como C, o Javascript é mais lento. Porém se comparado com outras linguagens interpretadas, não existe tanta discrepância.

Linguagem

Javascript é uma linguagem bastante poderosa. Duas características notáveis da linguagem são a orientação a protótipos, e a possibilidade de tratar funções como argumento ou resposta de métodos.

JavaScript como Virtual Machine

Existem alguns compiladores de código de outras linguagens para Javascript, como o CofeeScript. Existe também o HotRuby, uma VM que busca compilar código Ruby para JS.

Situação Atual

A linguagem, bibliotecas e engines estão prontas. Bibliotecas como o node.js podem facilitar a vida de quem deseja utilizar o JavaScript no lado do servidor. Ainda existe certa resistência quanto à utilização, porém acredito que dentro de poucos meses utilizar JS no lado do servidor será algo natural.

Fonte: InfoQ

Nenhum comentário.

JavaScript orientado a objetos

Recebi este guia por email e creio que vale muito a pena compartilhar com vocês. Se você gosta de JavaScript assim como eu, não deixe de ler 😉

http://www.1stwebdesigner.com/development/object-oriented-basics-javascript/

Nenhum comentário.

Associando eventos dinamicamente no jQuery

Você sabia que é possível associar eventos antes mesmo dos elementos estarem presentes no DOM? Conheça os métodos .live() e .delegate() e aprenda a interagir com ações do usuário no seu site.

Quem nunca teve problemas com associação de um evento a um elemento que foi colocado dinamicamente no DOM? Eu já tive vários… Até ler este artigo, rs… Se você trabalha com jQuery, não deixe de ler!

Clique aqui para ler o artigo completo

Por Davi Ferreira

,

Nenhum comentário.

Manual em português do Zend Framework

Bom dia!

Ví hoje que o pessoal do zfdes.com está traduzindo o manual do Zend Framework para 7 linguagens, entre elas o português do Brasil. Atualmente a tradução está 12,9% feita.

Pra galerinha que ainda arranha no inglês, vale a pena dar uma olhada: http://manual.zfdes.com/pt-br/

, ,

3 Comentários

6 dicas para evitar problemas de incompatibilidade entre browsers

Mesmo com o lançamento de versões beta dos principais browsers, prontos para receber o HTML5, profissionais ainda enfrentam dificuldades em realizar o trabalho de webstandards nos dias de hoje.
Por Thaiana Poplade

Mesmo com o lançamento de versões beta dos principais browsers, prontos para receber o HTML5, profissionais ainda enfrentam dificuldades em realizar o trabalho de webstandards nos dias de hoje.

Não deixem de ler este artigo da Thaiana Poplade. Assunto importantíssimo, afinal, que nunca xingou um ou outro browser por incompatibilidade?

http://www.tableless.com.br/evite-incompatibilidade-browsers

,

1 Comentário