sábado, 6 de dezembro de 2008

Mais um livro pra aprender Ruby

No meu aniversário passado (21/11) ganhei um dos livros mais completos sobre Ruby on Rails, tem participação do próprio David Heinemeier Hansson Criador do Rails. Muito bom livro para quem quer aprender Rails e Ruby mais a fundo.

Eis a belezinha:É muito mais extenso (e mais caro) que minha outra dica ,mas vale o investimento

Estatisticas do Futebol (dá-lhe INTER!!)

Logo, segue um lista com TODOS os mata-mata entre a Elite do futebol Brasileiro ( leia-se Elite, aqueles times que já ganharam pelo menos mais de um brasileirão). A lista foi elaborada por vários torcedores de todos os times e com bases na historia de cada competição. Bem interessante a lista para quem gosta de acompanhar a história do nosso querido (amado pq não!) Futebol. Segue a lista:

MATA-MATAS - Todos entre a Elite
Tópico para curiosidade e consulta. Aqui estão todos os mata-matas entre times da Elite em competições oficiais não-estaduais (portanto os confrontos no Paulista, Carioca e Gaúcho não estão sendo considerados). Caso você encontre algum erro, por favor me informe.

Santos 2 x 3 São Paulo:
1981 - São Paulo elimina Santos do Campeonato Brasileiro
1990 - São paulo elimina o Santos do Campeonato Brasileiro
1992 - São Paulo elimina Santos da Supercopa
2002 - Santos elimina o São Paulo do Campeonato Brasileiro
2004 - Santos elimina o São Paulo da Copa Sulamericana

Santos 3 x 2 Flamengo:
1964 - Santos elimina o Flamengo da Taça Brasil
1982 - Flamengo elimina o Santos do Campeonato Brasileiro
1983 - Flamengo elimina o Santos do Campeonato Brasileiro
2000 - Santos elimina o Flamengo da Copa do Brasil
2004 - Santos elimina o Flamengo da Copa Sulamericana
1997 - Santos elimina o Flamengo do Rio-São Paulo

Santos 2 x 1 Vasco:
1965 - Santos elimina o Vasco da Taça Brasil
1997 - Santos elimina o Vasco do Rio-São Paulo
1999 - Vasco elimina o Santos do Rio-São Paulo

Santos 1 x 2 Cruzeiro:
1966 - Cruzeiro elimina o Santos da Taça Brasil
2000 - Cruzeiro elimina o Santos da Copa do Brasil
2006 - Santos elimina o Cruzeiro da Sul-Americana

Santos 3 x 1 Palmeiras:
1964 - Santos elimina o Palmeiras da Taça Brasil
1965 - Santos elimina o Palmeiras da Taça Brasil
1997 - Santos elimina o Palmeiras do Rio-São Paulo
1998 - Palmeiras elimina o Santos da Copa do Brasil

Santos 1 x 1 Corinthians:
1998 - Corinthians elimina o Santos do Campeonato Brasileiro
2002 - Santos elimina o Corinthians do Campeonato Brasileiro
Santos 0 x 2 Internacional:
1997 - Internacional elimina o Santos da Copa do Brasil
2002 - Internacional elimina o Santos da Copa do Brasil

Santos 3 x 1 Grêmio:
1959 - Santos elimina o Grêmio da Taça Brasil
1963 - Santos elimina o Grêmio da Taça Brasil
2002 - Santos elimina o Grêmio do Campeonato Brasileiro
2007 - Grêmio elimina o Santos da Libertadores

Palmeiras 6 x 2 Cruzeiro:
1996 - Cruzeiro elimina o Palmeiras da Copa do Brasil
1998 - Palmeiras elimina o Cruzeiro da Mercosul
1998 - Palmeiras elimina o Cruzeiro da Copa do Brasil
1998 - Cruzeiro elimina o Palmeiras do Campeonato Brasileiro
1999 - Palmeiras elimina o Cruzeiro da Mercosul
2000 - Palmeiras elimina Cruzeiro da Copa dos Campeões
2000 - Palmeiras elimina o Cruzeiro da Mercosul
2001 - Palmeiras elimina o Cruzeiro da Libertadores

Palmeiras 5 x 0 Corinthians:
1951 - Palmeiras elimina o Corinthians do Rio-São Paulo
1993 - Palmeiras elimina o Corinthians do Rio-São Paulo
1994 - Palmeiras elimina o Corinthians do Brasileiro
1999 - Palmeiras elimina o Corinthians da Libertadores
2000 - Palmeiras elimina o Corinthians da Libertadores

Palmeiras 1 x 5 São Paulo:
1994 - São Paulo elimina o Palmeiras da Libertadores
2000 - São Paulo elimina o Palmeiras da Copa do Brasil
2000 - Palmeiras elimina o São Paulo do Campeonato Brasileiro
2002 - São Paulo elimina o Palmeiras do Rio-São Paulo
2005 - São Paulo elimina o Palmeiras da Libertadores
2006 - São Paulo elimina o Palmeiras da Libertadores

Palmeiras 3 x 2 Vasco:
1997 - Vasco elimina o Palmeiras do Campeonato Brasileiro
1999 - Palmeiras elimina o Vasco da Libertadores
2000 - Palmeiras elimina o Vasco do Rio-São Paulo
2000 - Vasco elimina o Palmeiras da Mercosul
2008 - Palmeiras elimina o Vasco da Sul-Americana

Palmeiras 2 x 2 Flamengo:
1997 - Flamengo elimina o Palmeiras da Copa do Brasil
1999 - Palmeiras elimina o Flamengo da Copa do Brasil
1999 - Flamengo elimina o Palmeiras da Mercosul
2000 - Palmeiras elimina Flamengo da Copa dos Campeões

Palmeiras 4 x 5 Grêmio:
1961 - Palmeiras elimina o Grêmio da Taça Brasil
1965 - Palmeiras elimina o Grêmio da Taça Brasil
1967 - Palmeiras elimina o Grêmio da Taça Brasil
1990 - Grêmio elimina o Palmeiras do Campeonato Brasileiro
1993 - Grêmio elimina o Palmeiras da Copa do Brasil
1995 - Grêmio elimina o Palmeiras da Copa do Brasil
1995 - Grêmio elimina o Palmeiras da Libertadores
1996 - Palmeiras elimina o Grêmio da Copa do Brasil
1996 - Grêmio elimina o Palmeiras do Campeonato Brasileiro

Palmeiras 1 x 2 Internacional:
1978 - Palmeiras elimina o Internacional do Campeonato Brasileiro
1979 - Internacional elimina o Palmeiras do Campeonato Brasileiro
1992 - Internacional elimina o Palmeiras da Copa do Brasil

Internacional 3 x 1 São Paulo:
1981 - São Paulo elimina o Internacional do Campeonato Brasileiro
1996 - Internacional elimina o São Paulo da Copa do Brasil
2005 - Internacional elimina o São Paulo da Sul-Americana
2006 - Internacional elimina o São Paulo da Liberatdores

Internacional 2 x 0 Corinthians:
1976 - Internacional elimina o Corinthians do Campeonato Brasileiro
1992 - Internacional elimina o Corinthians da Copa do Brasil

Internacional 5 x 0 Grêmio:
1988 - Internacional elimina o Grêmio do Campeonato Brasileiro
1992 - Internacional elimina o Grêmio da Copa do Brasil
1999 - Internacional elimina o Grêmio da Seletiva da Libertadores
2004 - Internacional elimina o Grêmio da Sul-Americana
2008 - Internacional elimina o Grêmio da Sul-Americana

Internacional 1 x 0 Vasco:
1979 - Internacional elimina o Vasco do Campeonato Brasileiro

Internacional 0 x 3 Flamengo:
1987 - Flamengo elimina o Internacional do Campeonato Brasileiro
1996 - Flamengo elimina o Internacional da Copa do Brasil
1997 - Flamengo elimina o Internacional da Copa do Brasil

Internacional 5 x 1 Cruzeiro:
1962 - Internacional elimina o Cruzeiro da Taça Brasil
1975 - Internacional elimina o Cruzeiro do Campeonato Brasileiro
1987 - Internacional elimina o Cruzeiro do Campeonato Brasileiro
1988 - Internacional elimina o Cruzeiro do Campeonato Brasileiro
2000 - Cruzeiro elimina o Internacional do campeonato Brasileiro
2004 - Internacional elimina o Cruzeiro da Sul-Americana

Grêmio 0 x 3 Cruzeiro:
1966 - Cruzeiro elimina o Grêmio da Taça Brasil
1993 - Cruzeiro elimina o Grêmio da Copa do Brasil
1997 - Cruzeiro elimina o Grêmio da Libertadores

Grêmio 6 x 3 Corinthians:
1982 - Grêmio elimina o Corinthians do Campeonato Brasileiro
1986 - Corinthians elimina o Grêmio do Campeonato Brasileiro
1991 - Grêmio elimina o Corinthians da Copa do Brasil
1994 - Grêmio elimina o Corinthians da Copa do Brasil
1995 - Corinthians elimina o Grêmio da Copa do Brasil
1996 - Grêmio elimina o Corinthians da Libertadores
1997 - Grêmio elimina o Corinthians da Copa do Brasil
1998 - Corinthians elimina o Grêmio do Campeonato Brasileiro
2001 - Grêmio elimina o Corinthians da Copa do Brasil

Grêmio 3 x 2 Vasco:
1982 - Grêmio elimina o Vasco do Campeonato Brasileiro
1984 - Vasco elimina o Grêmio do Campeonato Brasileiro
1990 - Grêmio elimina o Vasco da Supercopa do Brasil
1994 - Grêmio elimina o Vasco da Copa do Brasil
1998 - Vasco elimina o Grêmio da Libertadores

Grêmio 4 x 6 São Paulo:
1981 - Grêmio elimina o São Paulo do Campeonato Brasileiro
1990 - São Paulo elimina o Grêmio da Copa do Brasil
1990 - São Paulo elimina o Grêmio do Campeonato Brasileiro
1993 - São Paulo elimina o Grêmio da Supercopa
1994 - São Paulo elimina o Grêmio da Conmebol
1995 - Grêmio elimina o São Paulo da Copa do Brasil
1996 - São Paulo elimina o Grêmio da Copa Ouro
1998 - São Paulo elimina o Grêmio da Copa do Brasil
2001 - Grêmio elimina o São Paulo da Copa do Brasil
2007 - Grêmio elimina o São Paulo da Libertadores

Grêmio 6 x 4 Flamengo:
1984 - Grêmio elimina o Flamengo da Libertadores
1988 - Grêmio elimina o Flamengo do Campeonato Brasileiro
1989 - Grêmio elimina o Flamengo da Copa do Brasil
1992 - Flamengo elimina o Grêmio da Supercopa
1993 - Grêmio elimina o Flamengo da Copa do Brasil
1995 - Grêmio elimina o Flamengo da Copa do Brasil
1997 - Grêmio elimina o Flamengo da Copa do Brasil
1999 - Flamengo elimina o Grêmio da Copa do Brasil
2001 - Flamengo elimina o Grêmio da Mercosul
2004 - Flamengo elimina o Grêmio da Copa do Brasil

Corinthians 2 x 2 Flamengo:
1984 - Corinthians elimina o Flamengo do Campeonato Brasileiro
1989 - Flamengo elimina o Corinthians da Copa do Brasil
1991 - Corinthians elimina o Flamengo da Supercopa do Brasil
1997 - Flamengo elimina o Corinthians do Rio-São Paulo

Corinthians 4 x 1 São Paulo:
1990 - Corinthians elimina o São Paulo do Campeonato Brasileiro
1994 - São Paulo elimina o Corinthians da Copa Conmebol
1999 - Corinthians elimina o São Paulo do Campeonato Brasileiro
2002 - Corinthians elimina o São paulo da Copa do Brasil
2002 - Corinthians elimina o São Paulo da Copa do Brasil

Corinthians 3 x 0 Vasco:
1995 - Corinthians elimina o Vasco da Copa do Brasil
2000 - Corinthians elimina o Vasco do "Mundial"
2006 - Corinthians elimina o Vasco da Sul-Americana

Corinthians 3 x 2 Cruzeiro:
1991 - Corinthians elimina o Cruzeiro da Copa do Brasil
1996 - Cruzeiro elimina o Corinthians da Copa do Brasil
1998 - Cruzeiro elimina o Corinthians da Copa do Brasil
1998 - Corinthians elimina o Cruzeiro do Campeonato Brasileiro
2002 - Corinthians elimina o Cruzeiro da Copa do Brasil

Vasco 0 x 2 Flamengo:
1983 - Flamengo elimina o Vasco do Campeonato Brasileiro
2006 - Flamengo elimina o Vasco da Copa do Brasil

Vasco 4 x 1 São Paulo:
1989 - Vasco elimina o São Paulo do Campeonato Brasileiro
1998 - Vasco elimina o São Paulo da Copa do Brasil
1999 - Vasco elimina o São Paulo do Rio-São Paulo
2000 - Vasco elimina o São Paulo do Rio-São Paulo
2002 - São Paulo elimina o Vasco da Copa do Brasil

Vasco 3 x 4 Cruzeiro:
1974 - Vasco elimina o Cruzeiro do Campeonato Brasileiro
1993 - Cruzeiro elimina o Vasco da Copa do Brasil
1996 - Cruzeiro elimina o Vasco da Copa do Brasil
1998 - Cruzerio elimina o Vasco da Copa do Brasil
1998 - Vasco elimina o Cruzeiro da Libertadores
2000 - Vasco elimina o Cruzeiro do Campeonato Brasileiro
2003 - Cruzeiro elimina o Vasco da Copa do Brasil

Cruzeiro 3 x 3 Flamengo:
1995 - Flamengo elimina o Cruzeiro da Copa do Brasil
1995 - Flamengo elimina o Cruzeiro da Supercopa
1996 - Cruzeiro elimina o flamengo da Copa do brasil
2001 - Flamengo elimina o Cruzeiro da Copa dos Campeões
2002 - Cruzeiro elimina o Flamengo da Copa dos Campeões
2003 - Cruzeiro elimina o Flamengo da Copa do Brasil

Cruzeiro 3 x 1 São Paulo:
1992 - São Paulo elimina o Cruzeiro da Recopa Sul-Americana
1993 - Cruzeiro elimina o São Paulo da Copa do Brasil
1995 - Cruzeiro elimina o São Paulo da Supercopa
2000 - Cruzeiro elimina o São Paulo da Copa do Brasil

Flamengo 2 x 2 São Paulo:
1993 - São paulo elimina o Flamengo da Liberatdores
1993 - São paulo elimina o Flamengo da Supercopa
1996 - Flamengo elimina o São Paulo da Copa Ouro
2001 - Flamengo elimina o São Paulo da Copa dos Campeões

SFC: 4V, 1E e 3D
SEP: 3V, 1E e 4D
SCI: 8V, 0E e 1D
GFBPA: 4V e 4D
SCCP: 3V, 2E e 3D
CRVG 1V e 7D
CEC: 4V, 1E e 3D
CRF: 2V, 4E e 2D
SPFC 3V, 1E e 4D

"Rankings":
Pontos por Confronto (caso time A tenha eliminado mais vezes o time B do que o time B eliminou o time A, 3 pontos pro time A, e em empate é 1 pros dois):

1- Internacional : 24 pontos
2- Santos : 13 pontos
2- Cruzeiro : 13 pontos
4- Grêmio : 12 pontos
5- Corinthians : 11 pontos
6- São Paulo : 10 pontos
6- Palmeiras : 10 pontos
6- Flamengo : 10 pontos
9- Vasco : 3 pontos

Número de Confrontos Ganhos :
1- Internacional : 8 confrontos
2- Santos : 4 confrontos
2- Cruzeiro : 4 confrontos
2- Grêmio : 4 confrontos
5- Corinthians : 3 confrontos
5- São Paulo : 3 confrontos
5- Palmeiras : 3 confrontos
6- Flamengo : 2 confrontos
9- Vasco : 1 confronto

Número de Confrontos Perdidos :
1- Internacional : 1 confronto
2- Flamengo : 2 confrontos
3- Cruzeiro : 3 confrontos
3- Santos : 3 confrontos
3- Corinthians : 3 confrontos
6- São Paulo : 4 confrontos
6- Palmeiras : 4 confrontos
6- Grêmio : 5 confrontos
9- Vasco : 7 confrontos

Número de vezes em que eliminou o adversário :
1- Grêmio : 25 vezes
2- Palmeiras : 23 vezes
3- Flamengo : 20 vezes
3- Cruzeiro : 20 vezes
3- São Paulo : 20 vezes
6- Internacional : 20 vezes
7- Santos : 15 vezes
7- Corinthians : 15 vezes
9- Vasco : 12 vezes

Número de vezes em que foi eliminado pelo adversário :
1- Internacional : 6 vezes
2- Santos : 13 vezes
3- Flamengo : 18 vezes
4- Corinthians : 19 vezes
4- Vasco : 19 vezes
6- Palmeiras : 21 vezes
7- Cruzeiro : 22 vezes
8- São Paulo : 23 vezes
9- Grêmio : 29 vezes

Saldo de Eliminações :

1- Internacional : +14
2- Palmeiras : +2
2- Santos : +2
2- Flamengo : +2
5- Cruzeiro : -2
6- São Paulo : -3
6- Grêmio : -4
8- Corinthians : -4
9- Vasco : -7

Aproveitamento nos Mata-Matas (porcentagem de vezes em que eliminou o adversário) :
1- Internacional : 76,0%
2- Santos : 55,1%
3- Flamengo : 52,5%
4- Palmeiras : 52,2%
5- Cruzeiro : 47,6%
6- São Paulo : 46,5%
7- Corinthians : 45,7%
8- Grêmio : 45,4%
9- Vasco : 38,7%

Ranking "Tradicional" (pontos em confrontos, vitórias em confrontos e saldo de eliminações) :
1- Internacional
2- Santos
3- Cruzeiro
4- Grêmio
5- Corinthians
6- Palmeiras
7- São Paulo
8- Flamengo
9- Vasco

Confronto com a maior "Goleada" : Palmeiras 5 x 0 Corinthians
Confronto com o menor número de mata-matas : Internacional 1 x 0 Vasco
Confronto com o maior número de mata-matas : Grêmio 6 x 4 Flamengo e São Paulo 6 x 4 Grêmio
Time há mais tempo sem eliminar alguém : Vasco (última vez foi em 2000)
Primeiro time a eliminar alguém : Santos (em 1959)
Último time a eliminar alguém : Palmeiras (em 2008)

Dados rais, que podem ser pesquisados em qualquer site sobre a historia do futebol.

Agora a flauta (sadia é claro, sem ofensas):
Será que o Inter só nasceu mesmo em 2006 como dizem alguns Gremistas sem noção?
Cadê o time "copero y peleador"? Pelos números só pode ser o Inter!
O Inter destrói todo o resto da elite, menos o Flamengo para quem ele perde por 3x0 ( mas ainda dá tempo, hehehe).
O Grêmio foi o time que mais jogou mata-mata, ou seja poderia liderar a lista, mas também foi o que mais perdeu(!), ou seja com pior aproveitamento.
Sobre o Vasco, ele toma uma surra de todos, menos do SPFC. É o Inter ao contrário.

Gaúcho é foda! Mesmo com o Grêmio sendo o time com pior aproveitamento, ainda assim sem o espaço na mídia, com todas a robalheiras, e etc., os Gaúchos lideram! Dá-lhe gauderiada!

Emfim só queria compartilhar com vcs. Pq sei que vcs também gostam desse assunto.
PS.: Lista escrita por um historiador santista, com colaboração de vários torcedores na comunidade ELite BR - Futebol Brasileiro.

sexta-feira, 14 de novembro de 2008

terça-feira, 11 de novembro de 2008

Instalando o PHPonTrax facilmente no Debian e derivados

Fazendo uma pesquisa pra empresa esses tempos, sobre frameworks, achei varios interessantes. Mas um em especial me chamou a atenção, o PHPonTrax. Tá muita gente pode falar que é apenas um clone de Ruby on Rails e tal, mas ele é muito útil.
  • Primeiro : porque ele realmente é fiel ao Rails, desde os nomes de classes e métodos, até toda a estrutura e documentação!
  • Segundo: Me deparando com isso, e com o relativo crescimento de Ruby on Rails, uni o útil ao agradável. Utilizando um framework poderoso, Orientado a Objeto, MVC, Ajax, Scriptaculous, etc. E também aprender rails enquanto ultilizo o framework na linguagem que domino (PHP).
Quando me deparei com essa possibilidade, já comecei a estudar e a trabalhar "em cima" do framework e com ele. Sim existe outros frameworks como o Cake por exemplo, que tambem é MVC,OO etc. Mas NENHUM é tão fiel ao Rails quanto o Trax. Por isso possibilita a familiarização com o rails e logo ganhando conhecimento em mais uma tecnologia.
Claro que o Ruby é uma linguagem totalmente distinta, mas como a proposta do framework é ser fiel ao rails, tu acaba te acostumando e pensando com o framework.
Bom já digitei muito não passei nenhum comando, pois bem vamos lá:
Assumirei que você tem o o Apache , PHP e o Mysql Instalados. Eu uso Debian, então farei com base nele, logo os caminhos podem mudar, mas o básico pode ser entendido.
Primeiro é necessário instalar o PEAR que pode ser facilmente instalado no Debian com o comando:
# apt-get install php-pear

Feito isso precisamos instalar as dependências do pear para o PHPonTrax:
# pear install MDB2#mysql
# pear install Mail
# pear install Mail_mime

Feito isto, configuramos o Pear para instalar o PHPonTrax com o comando:
# pear channel-discover pear.phpontrax.com

Agora instalamos o PHPonTrax:
# pear install trax/PHPonTrax
Caso você tenha a instalação padrão do php deve ter ocorrido um erro, você precisa aumentar a memória usada pelo php. Isso pode ser feito acessando o seu arquivo php.ini . Numa instalação padrão ele deve estar em '/etc/php5/apache2/'.
Procure a linha memory_limit e aumente o valor de 16M para 256M. Repita o comando:
# pear install trax/PHPonTrax
e pronto.

Mas ainda não estará funcional. Para isto você deve habilitar alguns mods no apache. Basicamente são os mesmos para o rails.
# a2enmod ssl
# a2enmod rewrite
# a2enmod suexec
# a2enmod include
Agora sim podemos começar a diversão.
Criemos um diretorio em /var/www chamado traxapp, isso para não precisar mexer em nenhuma configuração extra no apache.
 # mkdir /var/www/traxapp
Trocamos a permissão:
 # chmod 755 /var/www/traxapp

Em seguida entramos no diretório com e damos o comando:
 /var/www/traxapp# trax .
O trax gerou a estrutura padrão para a aplicação, mas ao acessar localhost/traxapp você esta vendo apenas a estrutura de diretórios. Para arrumar isso basta criar um link simbólico com o nome da sua aplicação para a pasta "public" que o Trax gerou. No meu caso criarei um blog então eu crio um link simbólico para a past a public em traxapp com o comando:
/var/www# ln -s traxapp/public blog
e pronto agora ao acessar pelo navegador com o endereço: localhost/blog deve ter uma tela como esta:


É isso, simples não é? No próximo artigo sobre o Trax farei um passo a passo da configurações de Banco de Dados para o Trax, bem como configura-lo num servidor externo.

T+!

Machuque o código! E só o codigo

Esses dias estava procurando na net algo sobre processos de desenvolvimento e eis que surge o link para um vídeo de Ryan Davis que o Fábio Akita brilhantemente traduziu. Esse vídeo deveria ser "obrigatório"(!) para todos os desenvolvedores, não somente os "Rubistas" mas sim os desenvolvedores em geral, muito bom.
Te dá uma perspectiva de como é chegar "hoje" em uma empresa, te ajuda a repensar alguns conceitos e etc...

Mas vou parar de escrever e repassar o vídeo:


Machucando Código por Diversão e Lucro - Ryan Davis from Fabio Akita on Vimeo.

espero que seja útil a todos!
Fui!

Dica: aprenda a programar

Essse é o melhor "livro" que se pode ter. Pra quem quer algo novo, um "mega" tutorial de ruby e rails, muito bom e explicativo. Ótimo trabalho do rubyonrails.pro.br.

fica a dica e link http://aprendaaprogramar.rubyonrails.pro.br/.
Recomendo também o Livro :


Pra quem vem do PHP, como eu, é um excelente começo ler este livro. Aconselho também a estudar o framework PHPonTrax.
Até mais e bom estudo.

segunda-feira, 10 de novembro de 2008

FCK Editor

UTILIDADE:

FCKeditor é um editor de texto HTML rico em ferramentas de formatação. Suas ferramentas são equivalentes às do MS Office. Uma demonstração pode ser vista neste link.

INSTALAÇÃO:
Baixe o pacote .tar.gz ou o .zip e coloque na raiz do seu projeto.
<?php
//Inclue as funções necessárias
include "fckeditor/fckeditor.php";
//Defina normalmente o formulário. Neste exemplo é enviado por AJAX
?>
<form onsubmit="cadastroexterno('','form','recebe.php','resposta');
return false;" method="post" id="form" name="form">
<?php
//Cria um nova instância do FCKeditor
$oFCKeditor = new FCKeditor('idDoTextarea') ;
//Informar o endereço da pasta do FCKeditor
$oFCKeditor->BasePath = "../fckeditor/";
//Caso seja necessário, criar um arquivo de configurações
//personalizadas e infomar sua localização aqui
$oFCKeditor->Config['CustomConfigurationsPath'] = '../myconfig.js';
//Informa o nome das configurações da barra de ferramentas
$oFCKeditor->ToolbarSet = "Basic2";
//Define o tamanho vertical do editor
$oFCKeditor->Height = 300;
//Define o tamanho horizontal do editor
$oFCKeditor->Height = 400;
//Define o texto inicial do editor
$oFCKeditor->Value = 'Texto inicial.';
//Cria o editor
$oFCKeditor->Create() ;
?>


O arquivo de configurações personalizadas possue as configurações da
barra de botões. Exemplo:


FCKConfig.AutoDetectLanguage = false;
FCKConfig.DefaultLanguage = "pt-br";
FCKConfig.ToolbarSets["Basic2"] = [
['Bold','Italic','Underline','-',
'StrikeThrough','Subscript','Superscript',
'JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
['Link','Unlink','Anchor'],
['Image','Table'],
['Undo','Redo','PasteWord'],
'/',
['FontFormat','FontName','FontSize','TextColor'],
] ;

Nesse arquivo é definido a linguagem da descrição dos botões e
a definição dos botões que aparecerão na barra.
Os botões podem ser:

['item1',...,'itemN'] define um grupo de botões
'-' mostra um pipe ('|')
'/' define uma quebra de linha
Todos os botões possíveis podem ser definidos assim :

FCKConfig.ToolbarSets["Default"] = [
['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
['Form','Checkbox','Radio','TextField','Textarea','Select',
'Button','ImageButton','HiddenField'],
'/',
['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
['Link','Unlink','Anchor'],
['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
'/',
['Style','FontFormat','FontName','FontSize'],
['TextColor','BGColor'],
['FitWindow','ShowBlocks','-','About'] // No comma for the last row.
] ;



Antes de enviar o formulário por AJAX, é necessário atualizar os dados
?><input type="submit" value="Submit"
onclick="FCKeditorAPI.Instances.idDoTextarea.UpdateLinkedField();" />
</form>
</pre>

quarta-feira, 5 de novembro de 2008

Funções PHP disponíveis para o js?

Quem nunca pensou algo do tipo:
"bah se fosse em php era só aplicar a função 'X' que resolveria!" ou
"Como faço isso em javascript???". Me peguei nesses pensamentos durante um projeto que estou fazendo e depois de algum tempo fuçando na net descobri uma lib MUITO mão na roda, a 'PHP.js'.
Nessa lib tem praticamente todas as funções que o PHP traz por padrão(!) , sem as libs externas
como a gd, mail e drivers de BD, claro, mas tem muita função como html_entites, md5, utf8_decode e muitas outras. Vale a pena.
E tem mais, caso precise de uma função específica, não precisa fazer o download da lib inteira (como algumas libs por aí...), mas sim acessar o site e procurar na lista de funções implementadas. Caso a função dependa de outra, estará escrito a função e tem o link para o código da mesma.
Muito bom. Por isso fica a dica.

lightbox

Este tutorial tem base no próprio site do criador do Lightbox JS é praticamente uma tradução do seu conteúdo para ajudar quem não se dá muito bem com inglês.

Benefícios:


Sobrepõe imagens à página corrente e não dentro da página. Isto faz com que as imagens não sejam limitadas por um layout. Exemplo é uma imagem que sai fora do layout por ter uma largura maior.

Mantém os utilizadores na mesma página em vez de os levar para outra para terem de ver a imagem em ponto maior. Clicam para visualizar a imagem e clicam de novo para a fechar em vez de terem de voltar á página ou carregar no botão return.
Como utilizar:

1. Baixe o pacote e inclua os scripts no head da página.
<!-- Código que cria o efeito Lightbox -->
<script type="text/javascript" src="lightbox/prototype.js"></script>
<script type="text/javascript" src="lightbox/scriptaculous.js?load=effects,builder">
</script>
<script type="text/javascript" src="lightbox/lightbox.js"></script>
<link rel="stylesheet" href="lightbox/lightbox.css" type="text/css" media="screen" />
<!-- Fim do código Lightbox -->


2. Adicionar o atributo rel=”lightbox” a qualquer link para activar a lightbox nesse link. Por exemplo:
<a href="imagem.jpg" rel="lightbox" title="minha legenda">image #1</a>


3.Para criar albuns basta colocar o rel como um "array":
<a href="images/image-1.jpg" rel="lightbox[1]">image #1</a>
<a href="images/image-2.jpg" rel="lightbox[2]">image #2</a>
<a href="images/image-3.jpg" rel="lightbox[3]">image #3</a>


Agora vem a parte divertida
Como personalizar

Utilizando-se o CSS é possivel personalizar o layout do Lightbox.

terça-feira, 4 de novembro de 2008

nyroModal

Com nyroModal é possível abrir janelas (divs) modais. Essas janelas podem trazer imagens, páginas locais ou remotas, resposta de formulários, galerias de imagens.

INSTALAÇÃO:
Depois de fazer o download dos fontes do projeto link para o pacote .zip podemos começar instalação.
Inicialmente, devemos incluir os arquivos de scripts do jQuery e do nyroModal:
<script type="text/javascript" src="nyroModal-1.2.5/js/jquery-1.2.6.js"></script>
<script type="text/javascript" src="nyroModal-1.2.5/js/jquery.nyroModal-1.2.5.js">
</script>

Para abrir uma página/imagem em nyroMoldal como resultado de um link ou do envio de um formulário, simplesmente adicione a classe 'nyroModal' à tag. Exemplo:
<a href="#" class="nyroModal">
<form class="nyroModal" action="arquivo.php" method="post">

Para galerias de imagens, devemos adicionar um atributo 'rel' com um mesmo nome como valor à todos os links com 'class="nyroModal"'. O atributo title Exemplo:
<a href="img1.jpg" class="nyroModal" rel="gal" title="Title 1">Img 1</a>
<a href="img2.jpg" class="nyroModal" rel="gal" title="Title 2">Img 2</a>
<a href="img3.jpg" class="nyroModal" rel="gal" title="Title 3">Img 3</a>

Para que a janela não seja fechada quando for clicado fora da janela (clicar na parte escura da tela), devemos incluir 'rel="modal"' dentro da tag com a classe 'nyroModal'.

Também é possível abrir um nyroModal através de outro já aberto, utilizando a mesma regra citada acima. Fazendo isso o nyroModal é sobreescrito.

Dentro de um nyroModal é possível ter um botão para fecha-lo adicionando a classe 'nyroModalClose' à um botão ou à um link. Exemplos:
<a href="#" class="nyroModalClose">
<input type="button" class="nyroModalClose" value="Cancelar" />

Para atribuir o nyroModal em um trecho da página atualizado dinamicamente, é necessário chamar a seguinte função do framework:
$('#tudo a').nyroModal();

Nesse exemplo ele ativa o nyroModal em todas as tags 'a' dentro do container com 'id="tudo"' e que possuam 'class="nyroModal"'.

STORED PROCEDURES

O conceito de STORED PROCEDURES é: " são programas armazenados no servidor, pré-compilados, chamados de forma explícita para executar alguma lógica de manipulação de dados, podendo retornar ou não algum valor".

Inicialmente é preciso saber onde ficam armazenadas as procedures no mysql. Quando tu crias uma procedure / function elas ficam armazenadas na tabela Routines. Para listar o conteudo desta tabela e admnistrar suas procedures / functions basta executar o SQL :
mysql> SELECT * FROM INFORMATTION_SCHEMA.ROUTINES;
Perceba que listamos todos os procedimentos armazenados (Stored Procedure e Functions), de todos os bancos de dados. Saliento que estamos listando somente Stored Procedure e Functions, pois, somente estas rotinas são gravadas na tabela ROUTINES do bancos de dados INFORMATION_SCHEMA. Triggers também são um tipo de procedimento armazenado, mas estão separadas em outra tabela do dicionário, chamada TRIGGERS.

mysql> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS;
Sabendo disso, agora podemos explorar a sistaxe mais básica do comando:

CREATE PROCEDURE proc_name([parameters, ...])
[characteristics]
[BEGIN]
corpo_da_rotina;
[END]

Explicando:

proc_name: seu procedimento armazenado deve ter um nome, para quando for chamado, podermos então usá-lo;
tipo_param: existem 3 tipos de parâmetros em uma Stored Procedure no MySQL:
* IN => este é um parâmetro de entrada, ou seja, um parâmetro cujo seu valor será utilizado no interior do procedimento para produzir algum resultado;
* OUT => esté parâmetro retorna algo de dentro do procedimento para o lado externo, colocando os valores manipulados disponíveis na memória ou no conjunto de resultados;
* INOUT => faz os dois trabalhos ao mesmo tempo!
parameters: nessa parte do procedimento, informaremos os parâmetros da seguinte forma: [IN | OUT | INOUT] nome_parametro tipo_dado.
characteristics: as características do procedimento pode apresentar. Como não utilizaremos inicialmente tais características, vamos nos ater a sintaxe principal. Questões de segurança, se é determinística ou não, qual a linguagem que estamos utilizando e se nosso procedimento modificará dados na banco de dados, são algumas das características que poderemos definir neste item que abordaremos com mais detalhe na parte dois do artigo.
corpo_da_rotina: onde são definidos os comandos SQL que farão alguma manipulação e/ou defenderão alguma lógica, podendo retornar ou não algum resultado.

Um primeiro exemplo:

Bem basicão mesmo:
Delimiter //
Drop Procedure if exists ola //
Create Procedure ola()
Begin
Select 'Olá! Isto é uma procedure' as result;
End //
Delimiter ;
Explicando a sintaxe:

O uso do Delimiter é necessario para mudar o delimitador de comandos, que por padrão é o ";". Mudamos o DELIMITADOR para podermos usar o ";" no meio do procedimento. Caso não efetuemos essa troca, o procedimento será enviado pela metade e um erro será enviado ao terminal, por erro na sintaxe.

DELIMITADOR no MySQL, em outras situações, por padrão também é chamado de terminador. Para verificar qual é o delimitador da sessão corrente emita o comando \s, que é a forma curta do comando STATUS.

Depois eu "dropo" a procedure caso ela já exista, isso é útil pois mantém o conteudo da procedure sempre atualizado.

Crio a procedure , neste momento caso miha procedure tenha parâmentros, eu os declaro como se fosse uma função;

Declaro o "corpo" da procedure que fica entre o Begin e o End, no caso do exemplo ele emitirá a frase: 'Olá! Isto é uma procedure'.

E é isto, para usar a procedure basta rodar o comando acima e na hora em que for ultizar chamar ela assim:

call ola();

Deve aparece o resultado na tela.
Um exemplo um pouco mais complexo seria:
Delimiter $$
Drop Procedure if exists validaEdita(idconta) $$
Begin
If((Select idContaReceber From EditalItem Where idContaReceber = idConta) <> 0)Then
If ((Select pago From EditalItem Where idContaReceber = idConta) = 'S') Then
Select 'Esta Conta já está paga no Edital!' as MSG;
Else
Update EditalItem Set pago = 'S' Where idContaReceber = idConta;
Select 'Havia esta conta a receber em um edtial e seu status "pago" foi
alterado para "Sim".' as MSG;
End If;
Else
Select 'Esta conta não faz parte de nenhum edital!' as MSG;
End If;
End $$

Delimiter;
Note que nos exemplos eu usei apenas select e Update, mas poderia usar qualquer (Insert, Delete) mas o melhor é adimnistrar esse recursos através de triggers. Em breve postarei sobre Triggers

Select condicional

Para um mehor desempenho de qualquer sistema, sempre é bom deixar o banco tomar algumas decisões e trazer os resultados formatados para o uso do php.

A mais "clássica" maneira de fazer isso é usando Selects condicionais...

no mysql existem duas maneiras:

- Usando-o:

O mysql oferece a função if($condição , $então , $senao); mas não acho essa abordagem muito prática, (até pq só funciona com ele).

- Usando o SQL:

Pode-se fazer a mesma coisa usando o Padrão do SQL com a expressao Case assim:
SELECT
(CASE
WHEN $condição THEN $então ELSE $senão
END)
FROM Tabela


mas existe um porém, caso tenha varias condições para o mesmo campo o ELSE deve ser o Utimo pois ele "encerra" o condicionamento: por exemplo
SELECT
(CASE
Situacao
WHEN 'A' THEN 'ativo'
WHEN 'I' THEN 'inativo'
ELSE 'pendente'
END)
FROM Tabela


Para cálculos o melhor é usar a outra sintaxe permitida:
SELECT
(CASE
WHEN (nota < 7.0) THEN 'REPROVADO' ELSE 'Aprovado'
END)
FROM Tabela

acho que é isso....
até a proxima!