Novo BlogBlogs!

Por Willian Fernandes em 10/12/2008 na categoria internet

Acaba de estrear a nova cara do BlogBlogs!

Um projeto que tenho muito orgulho de participar. Foi difícil, muita coisa para fazer, mas o esforço valeu a pena!

Nós da WebCo trabalhamos meses para melhorar o site e agora é a vez dos usuários nos ajudarem, pois o trabalho continua.

Mais alguns dias de trabalho serão necessários para colocar tudo em ordem e implementar novidades. E contamos com a ajuda dos usuários para seguirmos o caminho certo.

Quer ajudar? Entre no novo BlogBlogs e dê sua sugestão. Ou comente aqui!

Tags:
1 Comentário

Validação de Formulários com jQuery

Por Willian Fernandes em 07/11/2008 na categoria client-side, desenvolvimento, javascript, jquery

Não é difícil fazer validações de formulários no lado do cliente usando JavaScript. E com jQuery a brincadeira fica ainda mais fácil.

A primeira coisa a fazer é baixar o jQuery: http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js
Renomei o arquivo para jquery.js.

Depois precisaremos baixar o plugin de validação, feito em jQuery: http://jquery.bassistance.de/validate/jquery.validate.zip
Descompacte o zip. Utilizaremos apenas o arquivo jquery.validate.js.

Agora vamos ao código!

O Formulário

<form id="form-signup" action="#" method="post" accept-charset="utf-8">
    <fieldset>
        <legend>Formulário de Cadastro</legend>
        <label>
            Nome:
            <input type="text" name="nome" />
        </label>
        <label>
            E-mail:
            <input type="text" name="email" />
        </label>
        <label>
            Sexo:
            <select name="sexo">
                <option value="">Selecione</option>
                <option value="F">Feminino</option>
                <option value="M">Masculino</option>
            </select>
        </label>
        <input type="submit" value="Cadastrar" />
    </fieldset>
</form>

A Validação JavaScript

// Inicia o validador ao carregar a página
$(function() {
    // valida o formulário
    $('#form-signup').validate({
        // define regras para os campos
        rules: {
            nome: {
                required: true,
                minlength: 2
            },
            email: {
                required: true,
                email: true
            },
            sexo: {
                required: true
            }
        },
        // define messages para cada campo
        messages: {
            nome: "Preencha o seu nome",
            email: "Preencha seu e-mail de contato",
            sexo: "Informe seu sexo"
        }
    });
});

Veja o exemplo!

Tags: , , , ,
1 Comentário

Telefonica Volta a Exigir Assinatura de Provedor para Speedy

Por Willian Fernandes em 07/10/2008 na categoria acesso, internet, speedy, telefonica

Faz um pouco mais de um ano, no dia 01/10/2007, que escrevi um post divulgando a notícia de que usuários do speedy não precisariam mais de provedores para utilizar o serviço de acesso à internet da Telefonica (Speedy).

Foi o juiz Marcelo Freiberger Zandavali que proibiu a Telefonica de exigir que usuários do Speedy contratassem provedores para utilizar o serviço. Ele considerou esse ato um caso de venda casada, que é proibido pelo Código de Defesa do Consumidor.

Mas, como vivemos no “País das Palhaçadas”, parece que a Anatel resolveu recorrer da decisão judicial desautorizando-a.

Resumindo: quem é cliente Speedy está recebendo notificações da Telefonica exigindo que contratem um provedor até o dia 21/10/2008.

Se você mora em uma cidade que tem alternativas ao Speedy (como NET Virtua, por exemplo) dê um pé na bunda da Telefonica e sinta-se livre de um provedor. #ficadica

Tags: , , ,
2 Comentários

Novo layout

Por Willian Fernandes em 21/08/2008 na categoria blog

Ontem lancei o novo layout do blog, mas somente hoje publiquei este post porque ainda faltavam alguns detalhes para corrigir.

Finalmente fiz meu próprio tema para o Wordpress. Não sou designer, então me dê uma chance! :P

O que tem de novo?

  • Nova sidebar, com a listagem dos últimos posts, Blogroll e uma área onde você pode me achar na web;
  • Lista com todas as categorias e a quantidade de posts em cada uma delas;
  • Formulário de contato.

O que falta fazer?

  • Reorganizar todo o conteúdo (posts, categorias e tags dos posts);
  • Adicionar TagCloud na sidebar;
  • Atualizar os posts que contém exemplos códigos para não usar mais o plugin WP-Syntax (por vários motivos);
  • Terminar a série sobre desenvolvimento em Python para começar outra mais aprofundada. :P

Caso alguma coisa dê pau, por favor, me avisem!

Nenhum comentário ainda

Brasigo, agora a festa vai começar!

Por Willian Fernandes em 17/07/2008 na categoria desenvolvimento, internet

Depois de muita correria, trabalho e diversão acabamos de colocar o Brasigo no ar. Esse foi um dos motivos que me fizeram, mais um vez, parar de postar aqui no blog.

Está sendo muito divertido e emocionante participar do nascimento desse projeto, minha primeira participação em um projeto Rails.

Agora vamos manter o sistema funcionando, criar novos releases e, com o tempo, os posts aqui no blog e a minha leitura no Google Reader (sim, está beeeem acumulada) voltarão ao normal.

Espero o feedback de vocês!
;)

Tags:
1 Comentário

Desenvolvimento Web com Python, SQLObject e PSE - Parte 4

Por Willian Fernandes em 16/04/2008 na categoria desenvolvimento, internet, python, web

Depois de mais uma longa pausa na série de desenvolvimento web com python[bb] cá estou, de volta com os posts.

Mas desta vez a pausa foi por um motivo nobre. Recentemente adquiri um MacBook[bb] e logo resolvi configurar o Apache2[bb] + mod_python + PSE + SQLObject + MySQL-python (MySQLdb). Precisava desta configuração para dar continuidade à série.

Então resolvi dedicar a 4ª parte da série exclusivamente para mostrar como configurar o ambiente no Mac OS X Leopard[bb].

Antes de efetuar os passos abaixo você precisará do Xcode instalado. Basta executar o 2º Disco do MAC OS X e executar o pacote de instalação do Xcode.

Apache

O Apache já vem instalado no MAC OS X, por isso precisaremos apenas habilitá-lo:
Vá em Preferências do Sistema, na opção Compartilhamento ative o serviço Compartilhamento Web.
Agora basta acessar http://localhost para ver o apache funcionando. Dentro do seu diretório home existe um diretório chamado Sites, basta colocar os arquivos lá e acessar pelo endereço http://localhost/~SEU_LOGIN.

Mod_Python

Agora chegou a hora de compilar o mod_python e configurá-lo no Apache.
Primeiramente faça o download do mod_python 3.3.1 (última versão disponível até a data deste post).

No terminal execute:

$ gunzip mod_python-3.3.1.tgz
$ tar xvf mod_python-3.3.1.tar
$ cd mod_python-3.3.1
$ ./configure --with-apxs=/usr/sbin/apxs

Após executar os comandos acima o arquivo src/Makefile foi criado. Abra-o em seu editor de texto preferido e altere a linha 27:

LIBS=-lm  -framework  Python    -ldl
LDFLAGS= -Wl,-framework,Python  -u _PyMac_Error -framework Python   -Wl,-F.
OPT=

por:

LIBS=-lm  -framework  Python    -ldl
LDFLAGS= -Wl,-framework,Python  -u _PyMac_Error -framework Python   -Wl,-F. -arch x86_64
OPT=

Altere também a linha 49:

mod_python.so: $(SRCS)
    @echo
    @echo 'Compiling for DSO.'
    @echo
    $(APXS) $(INCLUDES) -c $(SRCS) $(LDFLAGS) $(LIBS)
    @rm -f mod_python.so
    @ln -s .libs/mod_python.so mod_python.so

por:

mod_python.so: $(SRCS)
    @echo
    @echo 'Compiling for DSO.'
    @echo
    $(APXS) $(INCLUDES) -c -Wc,"-arch x86_64" $(SRCS) $(LDFLAGS) $(LIBS)
    @rm -f mod_python.so
    @ln -s .libs/mod_python.so mod_python.so

Cuidado para não quebrar a indentação. O arquivo todo está indentado por TAB se você utilizar espaço dará erro na hora de rodar o make.
Salve o arquivo e execute os comandos abaixo no terminal:

$ make
$ sudo make install

Precisamos efetuar uma alteração no mod_python para que ele funcione corretamente no Apache. Para isso abra o arquivo $ /Library/Python/2.5/site-packages/mod_python/importer.py como root e troque a linha 304 por esta:

        return __import__(module_name, {}, {})

Agora precisamos habilitar o mod_python no apache, para isso abra o arquivo /etc/apache2/httpd.conf (você precisará abrir o arquivo como root) e adicione a linha abaixo após a linha 116 (pelo menos foi a linha do meu arquivo):

LoadModule python_module libexec/apache2/mod_python.so

Pronto, agora é só reiniciar o Apache e o mod_python já estará configurado.

PSE

Baixe o PSE e execute os comandos abaixo no terminal:

$ tar xvf PSE-3.0.6.tar
$ cd PSE-3.0.6
$ sudo python setup.py install

Agora vamos configurar o Apache para aceitar os arquivos escritos usando o PSE. Abra o arquivo /etc/apache2/httpd.conf e adicione as linhas abaixo no final do arquivo:

PythonHandler pse_handler
AddHandler python-program .pt

Reinicie mais uma vez o Apache e crie dois arquivos de testes para ver se tudo está funcionando corretamente:
teste.py

msg = "Hello World!"

teste.pt

<?= msg ?>

Basta executar no navegador: http://localhost/teste.pt ou http://localhost/~SEU_LOGIN/teste.pt.

SQLObject

Instalar o SQLObject é simples, basta executar no terminal:

$ sudo easy_install -U sqlobject

MySQLdb

Instalar o MySQL-python exige uma pequena configuração. Primeiro baixe o arquivo e execute no terminal:

$ tar xzvf MySQL-python-1.2.2.tar.gz
$ cd MySQL-python-1.2.2

Abra o arquivo setup_posix.py e na linha 26 altere:

mysql_config.path = "mysql_config"

por:

mysql_config.path = "/usr/local/mysql/bin/mysql_config"

Agora abra o arquivo _mysql.c e remova as linhas 34, 37, 38 e 39:

#else
#include "my_config.h"
#endif
#ifndef uint
#define uint unsigned int
#endif

Também será preciso alterar as linhas 480 e 481:

    uint port = MYSQL_PORT;
    uint client_flag = 0;

por:

    unsigned port = MYSQL_PORT;
    unsigned client_flag = 0;

No terminal execute:

$ sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
$ sudo python setup.py build
$ sudo python setup.py install

Quando fizer o comando de sudo python setup.py build você poderá receber algumas mensagens de warning, ignore-as.

Para testar o SQLObject execute o script python abaixo:

from sqlobject import *
sqlhub.processConnection = connectionForURI('mysql://root:SUA_SENHA@localhost/test')
class Usuario(SQLObject):
    nome = StringCol()
 
Usuario.createTable()

Após executar o script acima a tabela usuario deverá existir no banco de dados test.

Se você tiver problemas para executar o SQLObject com MySQL verifique se a versão do MySQL instalada é a de 32bits.

Pronto, o ambiente está completamente configurado no MAC OS X.

Agora voltaremos com nossa programação normal!
;)

2 Comentários

Para Um Brasil Melhor

Por Willian Fernandes em 02/04/2008 na categoria blog

Estava assistindo ao vídeo gravado pelo Marco Gomes no evento realizado pelo UOL onde, no meio da conversa, surgiu um pedido para que nós, visitantes do blog BrunoTorres.net, deixássemos um comentário no blog do Bruno pedindo para que ele volte a blogar.

O conteúdo do Bruno Torres é realmente interessante e particularmente sinto falta dos posts dele.

Então deixo aqui meu pedido:
Pelo amor de Deus, volte a blogar Bruno!

Se você tem um blog aproveite e crie um post pedindo para que o Bruno Torres volte a blogar. Deixe o seu nome e link do post aqui nos comentários para deixar registrado a lista de pessoas que gostariam que o Bruno voltasse a blogar.

Agora é só torcer para que ele volte a blogar…rs

2 Comentários

Screencaster - Novidades na Web

Por Willian Fernandes em 02/04/2008 na categoria web

Meus amigos Guilherme Rambo e André Luz acabaram de lançar o Screencaster.com.br.

Segundo eles, o Screencaster “trata-se de um blog focado principalmente na produção de vídeo-aulas, podcasts e outros conteúdos multimídia. Nosso objetivo é mostrar nosso conhecimento e, dessa forma, fazer com que você aprenda.”

Acho a idéia muito válida e espero que dê tudo certo para o Guilherme e o André.

Boa sorte!

1 Comentário

Desenvolvimento Web com Python, SQLObject e PSE - Parte 3

Por Willian Fernandes em 20/02/2008 na categoria desenvolvimento, internet, python, web

Continuando com a série sobre desenvolvimento web[bb] com Python[bb], vou mostrar agora como deixar as coisa mais interessante com includes e formulários.

Includes

É muito comum utilizar arquivos separados que estarão em várias partes da aplicação. Por exemplo, podemos ter um arquivo para o cabeçalho HTML[bb], um outro para o menu e um terceiro para o rodapé do HTML[bb].

Mas antes de criarmos nossos arquivos de include, teremos que configurar o PSE para apontar para nosso diretório de includes. Para isso abra o arquivo pse.conf (no Linux este arquivo fica em /etc/pse/pse.conf). Procure pela linha

;IncludePath = /app/servlet/path,/other/servlet/path

E troque por:

IncludePath = /var/www/includes,.

Caso você não esteja usando Linux[bb] (eu uso o Ubuntu[bb]) configure para o diretório que o Apache aponta. Isso muda de sistema para sistema.
Dentro deste diretório crie um sub-diretório chamado includes e dentro deste sub-diretório vamos colocar os arquivos abaixo:

cabecalho.pt

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="pt-BR">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Biblioteca ABC</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="language" content="pt-br" />
</head>
<body>
    <div id="geral">
        <div id="topo">
            <h1>Biblioteca ABC</h1>
        </div>
        <div id="menu">
            <ul>
                <li class="primeiro"><a href="home.pt">Home</a></li>
                <li><a href="categorias_list.pt">Categorias</a></li>
                <li><a href="livros_list.pt">Livros</a></li>
                <li><a href="clientes_list.pt">Clientes</a></li>
                <li class="ultimo"><a href="sair.pt">Sair</a></li>
            </ul>
        </div>

rodape.pt

        <address class="rodape">
            &copy; Biblioteca ABC
        </address>
    </div>
</body>
</html>

Ok, os arquivos estão criados!
Agora vamos criar o arquivo principal do nosso sistema. Este arquivo terá um formulário de login, porém ele fará include do cabeçalho e do rodapé.
Salve o arquivo abaixo na raiz de onde ficará a sua aplicação, ou seja, em um diretório acima do sub-diretório includes.

index.pt

<?= pse.include("cabecalho.pt") ?>
<form id="frm-login" method="post" action="">
    <fieldset>
        <legend>Logar no Sistema</legend>
        <label>E-mail: <input type="text" id="email" name="email" /></label>
        <label>Senha: <input type="password" id="senha" name="senha" /></label>
        <input type="submit" id="entrar" name="entrar" value="Entrar" class="botao" />
    </fieldset>
</form>
<?= pse.include("rodape.pt") ?>
 

Perceberam o quanto é simples?
Toda página PSE possui um objeto chamado pse que contém vários métodos e objetos e no exemplo acima utilizamos o método include. Mais para frente mostrarei outras funcionalidades do objeto pse.

O método include recebe como parâmetro o nome do arquivo que iremos incluir. O PSE procura este arquivo nos diretórios que configuramos no arquivo pse.conf.

Para não prolongar muito, explicarei como trabalhar com formulários utilizando PSE no próximo post.

Prometo não demorar muito para postar o próximo post da série e aproveito para pedir o feedback de vocês em relação à esta série.

9 Comentários

Mudanças e mais mudanças

Por Willian Fernandes em 12/02/2008 na categoria blog

O começo de 2008 tem sido agitado para mim. Na última quinta-feira, dia 07 de Fevereiro, me despedi da Visie, e hoje (12 de Fevereiro) começo uma nova jornada na iDeal Interactive.

Sou muito feliz por ter participado da família[bb] Visie durante um pouco mais de um ano. Lá fiz bons amigos[bb] e aprendi muito com eles. Posso dizer que com eles eu cresci como profissional[bb] e como pessoa. Foram momentos bons em que me diverti muito com o Diego, principalmente quando ele pegava no pé do Fabio e da Paloma, ou quando resolveram pintar a parede da sala de vermelho, e aprendi muito com o Elcio, que me ensinou tudo o que sei de Python[bb].

Apesar de estar indo embora, fico feliz pois ainda manterei contato com a Visie e continuarei meu curso de PHP lá.

Outra novidade nesse começo de ano é que em menos de um mês começarei meu curso de pós-graduação em Engenharia de Software[bb] na PUC-SP. Não preciso nem dizer que estou ansioso para começar, preciso?

Com essas mudanças fiquei um pouco afastado do blog, mas ainda nessa semana retornarei a série de posts sobre Python com fôlego total.

Me desejem boa sorte e que 2008 seja muito melhor que 2007.

6 Comentários