Subscribe to ACAlbuquerque.BlogRSS

Twitter signin com jQuery

Em 28/11/2009 by acalbuquerque  
categorizado em JS/HTML, Tecnologia, jQuery

4142138456 b4ef1f481b o Twitter signin com jQuery

De fato o twitter trouxe sua contribuição para a WEB. Não estou falando apenas do simples porém eficaz negócio de mensagens curtas, mas também do seu design e funcionalidades.

Basta olharmos para a nova homepage com um design limpo e fácil que inspira muitos outros serviços a fazerem o mesmo. Sendo assim notamos no canto superior direito da página inicial do Twitter e veremos o sinal no botão que será suspenso o formulário de login.

Assim, Lam Nguyen ensinou como criar um login drop down com estilo Twitter utilizando jQuery aqui.

Drawter – Construtor de Wireframes

Em 28/11/2009 by acalbuquerque  
categorizado em CSS, Criação, Front-end, WebDesign

4142072902 1a7bb068a0 o Drawter   Construtor de Wireframes

O Drawter Beta 2 é uma ferramenta escrita em JavaScript e baseado na biblioteca jQuery.
Ela oferece a possibilidade de literalmente tirar o código do seu site apenas desenhando o wireframe. Roda em qualquer navegador web simples que o torna realmente útil.

Atualmente Drawter está disponível na versão Pro, o que significa que se destina para webmasters com o conhecimento de HTML e CSS é necessário.
É uma ótima ferramenta para a criação de wireframes pois possibilita apartir do desenho já a geração de código xHTML e CSS.

Teclas de atalho disponíveis:
Ctrl +1 – Draw Mode
Ctrl +2 – Edit Mode

Também há um screencast para os interessados aqui.

Abstração de SGBD no PHP – PEAR::MDB2

Em 26/10/2009 by acalbuquerque  
categorizado em Destaques, PHP, Tecnologia

As conexões com um banco de dados SQL estão presentes em quase 100% das páginas que utilizam algum tipo de BD, mas o grande problema é que nem sempre quem escreve esses scripts sabem fazê-las de forma segura e sustentável.

Pensando nisso, um grupo de programadores do *PEAR decidiu criar um package (uma classe) que melhorasse as conexões SQL e ao mesmo tempo fosse compatível e fácil de ser usado em diversos tipos de bancos de dados, assim surgiu o package PEAR::DB que evoluiu para o PEAR::MDB2.

Se você utiliza uma versão do PHP5+ ou um servidor recente, é muito provável que já tenha tanto o PEAR como o pacote MDB2 instalados. Caso não, pesquise no google como instalar o pear e a mdb2, pois existem muitos resultados falando já sobre isso.

*PEAR é um repositório de packages (classes) PHP criado e mantido por centenas de programadores, com o intuito de criar e melhorar a usabilidade do PHP. Eles disponibilizam diversos pacotes que estão em constantes melhorias e cada qual com uma utilidade mais incrível que o outro.
Tamanhas são as utilidades dos pacotes PEAR que as versões mais novas do PHP já são distribuídas com o PEAR e seus pacotes mais usados já instalados.

Mais informações no site www.pear.php.net

- Conexão

A primeira coisa a se observar, é que para podermos usar um package da PEAR é necessário dar um include no arquivo principal deste, no nosso caso, devemos adicionar o arquivo MDB2.php no início de tudo (não é necessária a especificação do caminho):

require_once('MDB2.php');

- Declaração da DSN

Feito isso, devemos nos conectar ao banco de dados. As conexões dos packages da PEAR (DB e MDB2) seguem uma sintaxe um pouco diferente da comumente utilizada pelos famosos mysql_connect, ou pg_connect, etc. Começando por uma DSN, que é uma string que possui uma forma especifica de declaração, englobando os dados da conexão:

phptype://usuario:password@host/database

onde:
phptype = Tipo de DB{
fbsql: FrontBase
ibase: InterBase
mssql: Microsoft SQL Server
mysql: MySQL
mysqli: MySQL Improved
oci8 : Oracle 7/8/9
pgsql: PostgreSQL
querysim: QuerySim
sqlite: SQLite
}
usuario = nome de usuário
password = senha
host = host
database = nome do DB

- Conectando

Declarada a DSN, falta chamar o método de conexão, existem três:

- connect : Era mais usado no package PEAR:biggrin.gifB, mas caiu em desuso com o MDB2 (mas preservado).
- singleton : É usado para evitar que se sejam criadas duas conexões com a mesma DSN. Caso já haja alguma, ele retonará um erro.
- factory : É o mais utilizado e recomendado para a maioria das tarefas

*obs: Para chamá-los devemos precedê-los de MDB2:: e usar como argumento a DSN:
$con =& MDB2::factory($dsn);

ATENÇÃO!

Para que o uso do MDB2 funcione corretamente é necessário o uso de um objeto-referência do objeto original em vez de uma cópia:

  • $con =& MDB2::factory($dsn);

e NÃO

  • $con = MDB2::factory($dsn);

- Recuperando dados

Para recuperarmos dados da DB (SELECT, SHOW, EXPLAIN, etc) utilizamos o método query().
Ele deve ser chamado através do objeto da conexão:

$result =& $con->query($sql_query);

Será retornado um handler para o resultado, e através dele podem ser usados outros métodos (atente novamente para o uso de referências – &).

$result =& $con->query('SELECT * FROM table WHERE column=1');
//ou
$select = 'SELECT * FROM table WHERE column=1';
$result =& $con->query($select);

Número de linhas Retornadas

Para verificar o número de linhas retornadas devemos usar o método numRows() do objeto-resultado.

$rows = $result->numRows();

Retirando dados do objeto-resultado

Após realizada a query, devemos chamar outro método caso desejemos usar os dados retornados: o fetchRow().
Este método aceita como parâmetro a forma como o resultado deve ser retornado, existem três tipos:

- MDB2_FETCHMODE_ORDERED

Modo padrão, retorna uma array em que cada chave numérica corresponde á coluna mais á esquerda, em ordem crescente e começando pelo 0.

$row =& $result->fetchRow(MDB2_FETCHMODE_ORDERED);

//Resultado:

Array
(
 [0] => Valor1
 [1] => 1
 [2] => Valor3
)

- MDB2_FETCHMODE_ASSOC

Esse modo retorna uma array em que cada chave é o nome da coluna correspondente.

$row =& $result->fetchRow(MDB2_FETCHMODE_ASSOC);

//Resultado:

Array
(
 [coluna1] => Valor1
 [coluna2] => 1
 [coluna3] => Valor3
)

- MDB2_FETCHMODE_OBJECT

-Esse modo retorna um objeto em que cada coluna é tratada como um atributo.

$row =& $result->fetchRow(MDB2_FETCHMODE_OBJECT);

//Resultado:

stdClass Object
(
 [coluna1] => Valor1
 [coluna2] => 1
 [coluna3] => Valor3

)

Alternativamente podemos configurar um FETCHMODE padrão para a conexão com que vamos trabalhar através do método setFetchMode(). Feito isso, caso chamemos, por exemplo, um fetchRow() (sem argumento), a forma retornada seria a indicada nesse método.

$con->setFetchMode(MDB2_FETCHMODE_ORDERED);
// ou
$con->setFetchMode(MDB2_FETCHMODE_ASSOC);
//ou
$con->setFetchMode(MDB2_FETCHMODE_OBJECT);

- Método fetchAll()

Esse método retorna uma array bidimensional contendo todas as linhas do objeto-resultado.

$row =& $result->fetchAll(MDB2_FETCHMODE_ASSOC);

//resultado

Array
(
 [0] => Array
 (
 [coluna1] => Valor1
 [coluna2] => 1
 [coluna3] => Valor3
 )

 [1] => Array
 (
 [coluna1] => V1
 [coluna2] => 2
 [coluna3] => V3
 )

)

Uma maneira mais rápida e prática e fazer isso tudo seria o uso do método queryAll() = query()+fetchAll()

$row =& $con->queryAll("SELECT * FROM test", MDB2_FETCHMODE_ASSOC);

Executando Query´s

Para executar query de manipulação de dados (INSERT, UPDATE, DELETE), não deve ser o usado o método query() e sim o exec()
Esse método retornará um erro caso seja usado com queries que não sejam DMQs, como SELECT.

$sql ="INSERT INTO test(coluna1, coluna2, coluna3) VALUES ('v_col1', 3, 'v_col3')"

$nrows =& $con->exec($sql);

Tratamento de erros

Para evitar problemas tanto no código como de segurança, deve-se sempre fazer uma verificação se a ação não resultou em um erro, para tanto usamos o método PEAR::isError($objeto->resultado).
Verificado que existe um erro, podemos obter a mensagem enviada pelo MDB2 através do método getMessage()


$result =& $cnt->query("SELECT * FROM tabela_inexistente");
if(PEAR::isError($result)) { die($result->getMessage()); }

Referências:

Oficial da PEAR: www.pear.php.net/manual/en/package.database.mdb2.php

CODESCHMIE: codeschmie.de/archives/127-MDB2-Cheatsheet.html

phpied http://www.phpied.com/

Qualidade de código PHP – xDebug

Em 14/09/2009 by acalbuquerque  
categorizado em PHP, Tecnologia

Como o processo de desenvolvimento de software é sujeito a erros, a atividade de teste é fundamental para se obter produtos com garantia de qualidade. Portanto, é importante que você tenha antes de qualquer coisa, essa afirmação anterior como regra a ser seguida.

Fazer o debug de aplicações PHP sempre foi um grande problema. Utilizar echo e var_dump não é a melhor maneira, além de não ser nada elegante. Existe uma forma de realizar o debug de aplicações PHP de forma mais correta e útil. Esta forma é usando­-se a extensão chamada xdebug.

O que é isso?

O Xdebug é uma extensão para PHP que como o próprio nome sugere, serve para auxiliar no debug de scripts PHP.

O que isso faz?

O Xdebug vai mostrar diversas informações importantes sobre o erro. O Xdebug adiciona várias opções ao php, uma delas é refazer o var_dump.

Como Instalar?

O meu ambiente de testes é o Ubuntu 9.04, porém se você é usuário Windows o mais fácil é fazer o download de um arquivo dll no site e salvá-­lo no diretório ext do PHP.
Para usuários Linux, a melhor maneira é fazer a instalação usando o comando pecl:

$ sudo apt-get install php5-dev php-pear
$ sudo pecl install xdebug

No meu caso o xdebug ficou em:
/usr/lib/php5/20060613+lfs/xdebug.so

Para que o php considere o uso da extensão, o arquivo de inicialização php.ini deve ser editado
sudo gedit /etc/php5/apache2/php.ini

acrescente no fim do arquivo:
zend_extension=”/usr/lib/php5/20060613+lfs/xdebug.so”

Ou para windows: zend_extension_ts=”c:/xampp/php/ext/php_xdebug.dll”

Após isso, adicione as configurações do xdebug:

xdebug.default_enable = On
xdebug.collect_includes = On
xdebug.collect_params = On
xdebug.collect_return = On
xdebug.collect_vars = On

E agora basta reiniciar o apache:
sudo /etc/init.d/apache2 restart

- Novo var_dump

Quando a extensão está ativa, o comando var_dump mostra informações mais detalhadas das variáveis. Para testar é só executar o var_dump passando como parâmetro qualquer variável ou objeto do script. ex:

<?php
$dados = array(
'um' => 'uma string',
'dois' => array(
'two.one' => array(
'two.one.zero' => 210,
'two.one.one' => array(
'two.one.one.zero' => 3.141592564,
'two.one.one.one' => 2.7,
),
),
),
'tres' => $t,
'quatro' => range(0, 5),
);
var_dump( $dados );
?>

Proteção de memória

É possível configurar o Xdebug para proteger o servidor em caso de um loop infinito, que poderia consumir muitos recursos. Por default  o Xdebug configura para 100 iterações. Para modificar esta características deve­se adicionar a seguinte linha no php.ini e depois reinicie o apache:

xdebug.max_nesting_level=10

Assim, o programa abaixo vai invocar a função loop_infinito() somente dez vezes e depois irá gerar um erro:

erro log Qualidade de código PHP   xDebug

- Coletando mais informações

Para que o Xdebug possa coletar mais informações sobre os erros é possível configurá-­lo para capturar as variáveis globais como POST, GET, FILES, etc. Para isso é só adicionar as linhas abaixo no php.ini e depois reinicie o apache:

;; //Capturar as variáveis globais
xdebug.dump.GET=*
xdebug.dump.POST=*
xdebug.dump.COOKIE=*
xdebug.dump.ENV=*
xdebug.dump.FILES=*
xdebug.dump.REQUEST=*
xdebug.dump.SERVER=*
xdebug.dump.SESSION=*

ps: O *( lê-se coringa) pode ser substituído pelo nome da variável que se deseja capturar.

Testes

Quantas funções foram invocadas no script?

<?php
echo xdebug_get_function_count();
?>

Quanto tempo demorou a execução?

<?php
for($i=0;$i<1000000;$i++) {
 $j = $i;
}
echo "Tempo de execução=". xdebug_time_index();
?>

Quanta memória utilizou?

<?php
echo "Memória: ", xdebug_memory_usage(), " bytes\n\n";
for($i=0;$i<1000000;$i++) {
 $j = $i;
}
echo "Máximo de Memória usada: ", xdebug_peak_memory_usage(), " bytes\n";
?>

Trace da aplicação

Para acompanhar o fluxo da aplicação é preciso adicionar as linhas abaixo no php.ini e depois reinicie o apache:

xdebug.auto_trace=1
xdebug.trace_output_dir=/tmp
xdebug.trace_options=1
xdebug.trace_format = 0

Desta  forma   será   criado   um   arquivo   no  /tmp  chamado   trace.???   para   cada   script   PHP   que  for executado. Neste arquivo estará descrito cada comando executado, variáveis criadas, etc. Assim facilita a visualização do fluxo do script e eventuais erros.

Profiling

Profiling é uma maneira de visualizar quais partes do código do script estão demorando mais para executar. O Xdebug precisa ser configurado para poder gerar estas estatísticas. Para isso deve-­se adicionar as linhas no php.ini e depois reinicie o apache:

xdebug.profiler_enable = 1
xdebug.extended_info = 0
xdebug.remote_enable = 0
xdebug.profiler_output_dir=/tmp

Após a execução de um script é gerado um arquivo no /tmp com as estatísticas de execução. Para analisarmos   estas   estatísticas   pode­se   usar   uma   ferramenta   gráfica de cache profiling como kcachegrind(para Linux), WinCacheGrind(para windows) ou a ferramenta web Webgrind.

Enfim, existem outras funcionalidades que podem ser somadas e usadas com o xDebug, mas isso fica para um próximo post.

Referências:

http://www.xdebug.org/

http://www.eltonminetto.net

http://code.google.com/p/webgrind/

http://morgamic.com/

jQuery Tools

Em 13/09/2009 by acalbuquerque  
categorizado em Destaques, JS/HTML, Tecnologia, jQuery

Esta biblioteca(jQuery Tools) contém seis das ferramentas mais úteis do Javascript disponíveis para um site de hoje. A beleza desta biblioteca é que todas essas ferramentas podem ser usadas juntas. No final, você pode ter centenas de elementos diferentes e novas maneiras de usar a biblioteca.

Esta biblioteca é de código fonte aberto e de licensa  dupla, MIT e  GPL 2 .

O pacote contém uma série de demos, incluindo:

  • Tabs
  • Tooltips
  • Expose
  • Overlay
  • Scrollable
  • Flashembed

SMS para os E.T´s

Em 13/08/2009 by acalbuquerque  
categorizado em No-Sense, Papo Furado

hello SMS para os E.T´s

Como parte das comemorações da Semana de Ciência Australiana, até o dia 24 de agosto o site www.HelloFromEarth.net irá receber mensagens de até 160 caracteres, que serão transmitidas ao planeta Gliese 581d(o planeta mais próximo conhecido fora do nosso sistema solar).  Cientistas acreditam que o planeta provavelmente deve ter condições de abrigar vida.  O tempo de entrega previsto, contudo, é de quase 20 anos e não há garantias de uma resposta, alerta o site.

“É como uma ‘mensagem em uma garrafa’ enviada para as estrelas. O interessante não é apenas se há alguém ouvindo, mas o que o público dirá à vida inteligente de outro planeta”, afirmou o porta-voz do projeto, o jornalista Wilson da Silva.

O OAB da Informática

Em 28/07/2009 by acalbuquerque  
categorizado em Papo Furado, Super-Interessante

O Projeto de Lei número 607 de 2007 em trâmite no Senado Federal, que dispõe sobre a regulamentação do exercício da profissão de Analista de Sistemas e suas correlatas, cria o Conselho Federal e os Conselhos Regionais de Informática e dá outras providências, recebeu relatório positivo na Comissão de Constituição e Justiça (com correções), recentemente publicado em 09/07/2009.

Veja o relatório aqui.

Segundo a proposta, embora os Conselhos tenham caído na revisão pela CCJ, teríamos uma espécie de “OAB da Informática”, conselhos existentes que passam a gerir a atividade e a habilitação dos profissionais de tecnologia da Informação. O Projeto foi em março de 2008 aprovado na Comissão de Ciência e Tecnologia.

Você sempre trabalhou com informática mas não tem formação na área? Comece a se preocupar com o tema! Porém aí vai o alívio:  se comprovar 5 (cinco) anos de profissão na época da entrada em vigor da Lei, permanecerá com seu emprego e profissão.

Gestão de Projetos de Sistemas de Informação passa a ser uma atividade que só um analista de sistemas pode desempenhar. Adeus aos PMPs que não tem formação na área! Perícias e Auditoria também! Adeus auditores formados em Administração! Ensino também! Quer abrir uma escola de informática? Onde está o “Analista”? Ou seja,  para muitas atividades,  será necessário ser “Analista de Sistemas”, nos termos da Lei.

*ps: Vi no PCMAGAZINE-BR

Cheat Sheet´s de Linguagens de Programação

Em 25/07/2009 by acalbuquerque  
categorizado em MySQL, PHP, Tecnologia

Para finalizar a longa sequência de post´s com Cheat Sheet´s, segue este que será o mais completo de todos com várias LP´s e vários Cheat sheet´s de cada uma.

- Expressões Regulares (standart)

3756176108 d3ea5032b0 o Cheat Sheet´s de Linguagens de Programação
É um guia para os padrões de expressões regulares, e não é específica a um único idioma.
Esta é a segunda versão do Cheat Sheet. A versão anterior podem ser encontrados em http://migre.me/4azQ.

Download aqui!

- Apache Mod_Rewrite

3756176434 0e28906c13 o Cheat Sheet´s de Linguagens de Programação

Trata-se de uma folha de referência, para a listagem flags, regras  e condições de sobrescrita. Além de listar as variáveis do servidor por expressão regular e vários exemplos de regras comuns.

O mod_rewrite Cheat Sheet é distribuído sob a Creative Commons License (Attribution, Non-Commercial, Share Alike).

Download aqui!

- Python Cheat Sheet´s

3755377991 c5ace447a9 o Cheat Sheet´s de Linguagens de Programação
Trata-se de uma folha de referência para a linguagem de programação Python e seus métodos, funções e sintaxe e é distribuído sob a Creative Commons License (Attribution, Non-Commercial, Share Alike).

Muito boa!

Download aqui!

- PHP Cheat Sheet´s

3755378313 b8bc60d6cb o Cheat Sheet´s de Linguagens de Programação
Trata-se de uma folha de referência para a linguagem de programação PHP e seus métodos, funções e sintaxe e é distribuído sob a Creative Commons License (Attribution, Non-Commercial, Share Alike).

Muito boa!

Download aqui!

- MySQL Cheat Sheet´s

3755378495 cd1d0c4f7e o Cheat Sheet´s de Linguagens de ProgramaçãoFunções no MySQL

Muitos desenvolvedores desconhecem que o MySQL possui um enorme número de funções built-in, para fazer tudo a partir de expressão regular com base em comparações de string. As laterais da Cheat Sheet, lista funções MySQL(nota: algumas das mais raras e menos utilizadas funções não foram incluídas devido ao espaço).

mysql v1 2 Cheat Sheet´s de Linguagens de ProgramaçãoTipos de Dados MySQL

O MySQL permite que muitos tipos de dados para as colunas e é muito fácil esquecer que existem restrições sobre estes tipos de dados. Isto é especialmente importante quando se trata de validação – muitos desenvolvedores não verificam o comprimento dos dados antes de inseri-lo em uma tabela. Esta seção lista os tipos de dados disponíveis e suas limitações.

mysql v1 3 Cheat Sheet´s de Linguagens de Programação

Funções MySQL no PHP

O PHP tem o driver do MySQL e  é utilizado pela maioria dos desenvolvedores PHP para conectar-se e consultar um banco de dados MySQL. Esta seção contém a lista das funções disponíveis no PHP para conectar-se e gerir um banco de dados MySQL.

Download aqui!

- Outras

- SQL Server
- Ruby on Rails Cheat Sheet´s
Download aqui!
- ASP/VBScript Cheat Sheet´s
Download aqui!
- Subversion Cheat Sheet´s
Download aqui!
- CSS2 Cheat Sheet´s
Download aqui!

JavaScript Cheat Sheet (Standart, jQuery, MooTools, Prototype …)

Em 25/07/2009 by acalbuquerque  
categorizado em AJAX, Destaques, JS/HTML, Tecnologia, jQuery

Seguindo os post´s de guias e referências, segue mais um unindo vários Cheat Sheet´s de frameworks em JS.

- JavaScript Standart Cheat Sheet

3755241565 6613acfeea o JavaScript Cheat Sheet (Standart, jQuery, MooTools, Prototype ...)

Logicamente organizado em métodos DOM, funções, expressões regulares, etc . É fácil de usar e uma grande referência para todos os usos comuns JavaScript. Clique aqui para baixar.

- jQuery Visual Map

3755243309 264acc696d o JavaScript Cheat Sheet (Standart, jQuery, MooTools, Prototype ...)

Tenho certeza que esse é bastante conhecido. Apenas não pude deixa-lo de fora. Clique aqui para vizualizar.

- MooTools Cheat Sheet

3756041464 cf4d6356b5 o JavaScript Cheat Sheet (Standart, jQuery, MooTools, Prototype ...)

Para aqueles que preferem o MooTools que  jQuery, segue esse guia baseado no MooTools 1.2. Clique aqui para vizualizar.

- Prototype Cheat Sheet

3755241681 ce08625dd0 o JavaScript Cheat Sheet (Standart, jQuery, MooTools, Prototype ...)

É um excelente recurso para aqueles que utilizam Prototype.js e inclui uma referência visual para deslocamentos e dimensões. Clique aqui para vizualizar.

WordPress Cheat Sheet´s Help Reference

Em 25/07/2009 by acalbuquerque  
categorizado em Destaques, JS/HTML, PHP, Tecnologia

3755842000 2baf653227 o WordPress Cheat Sheet´s Help ReferenceO WordPress Help Sheet é o mais útil guia se você for um programador de temas para o WP. É um guia de referência rápida para as mais comuns sintaxes utilizadas no WP. Apenas os mais necessários e  mais comuns trechos estão incluídos, clique aqui para baixar o pdf.

Já aqueles que criam temas WordPress regularmente, WPCandy criou uma avançada ferramenta de ajuda. Contém os codigos mais utilizados para temas que requerem funcionalidades adicionais. Qualquer criador de temas profissionais deveria ter este guia na mão clique aqui para baixar o pdf.

E para finalizar, segue uma checklist para desenvolvimento de temas WP. A lista abrange tópicos gerais (como informação e imagens), componentes do blog (como feeds RSS), timestamps, bem como a categoria de página navegação.

São no total 9 itens:

  • General
  • Stylesheets
  • Browser Compatibility
  • Pages
  • Styled Everything?
  • Standard CSS Classes
  • Validate
  • WordPress Code
  • Blog Elements

Clique aqui para fazer o download da WP Theme Check-List.

Próxima Página »