Friday, November 2, 2007

Curiosidade: Como a Google Factura?????

Ao sentar num computador com Internet para muitos de nós a primeira coisa que vem a cabeça é digitar www.google.com (Google provém do googol que significa 10100 (dez elevado a cem – um seguido de cem zeros)

Quando queremos efectuar uma pesquisa (qualquer ela que seja) é a Google que procuramos porque já sabemos que lá encontramos qualquer coisa (incluindo o número do nosso B.I., a nossa morada, o que trazemos vestido, etc...ok, esta foi exagerada)

Se a Google dá-nos tudo isto praticamente "FREE", "MAHALA", "DE BORLA", então como será que eles constam na lista dos 100 mais ricos do mundo?????

A resposta parece muito engraçada, mas é lógica: PUBLICIDADE. A Google hoje lidera 40% do mercado publicitário on-line (vi isto num site qualquer que não me lembro)

Eles ganham bom dinheiro no Pay-per-Click (algo como pague por clique)...

Toda a vez que você clica num link pago (estão sempre no top ou do lado – vem lá escrito sponsored links ou links patrocinados ou liens commerciaux ou fu-fu-sheung-mutu-mutu, lool) de um motor de pesquisa, como quando você procura um produto e esse mesmo produto aparece destacado, as companhias pagam à Google para que este produto tenha tal destaque.

Você procura por sapatos (por exemplo) companhias como a REEBOK®, PUMA®, etc. pagam para estar no topo destes motores de pesquisa e um dos motivos que faz com que estas companhias tenham muito dinheiro é porque elas não estabelecem um preço fixo, eles (Google) deixam que as companhias (REEBOK®, PUMA®) façam as suas apostas.

Um destes destaques pode custar entre $0.5 a $10 (ou mais) cada vez que alguém clica nestes links, agora é só usar a imaginação.

Além disto a Google tem vários outros produtos a oferecer, como o Gmail, GTalk, Google Earth, Adsense, pronto uma infinidade de produtos para satisfazer a toda gente de todas idades =).

O adsense pode ser usado por qualquer um de nós que tenha um site, é uma boa forma de facturar ;)




visitem: http://elgoog.rb-hosting.de/index.cgi
e http://www.blackle.com/

Friday, October 19, 2007

Curiosidades PHP I

Sabias que embutir uma string em "" faz com que o PHP procure nela uma variavel. Mesmo que a string nao tenha uma variavel, o PHP vai tentar achar uma variavel.

ex:
---------------------------------------------
$texto = "Hoje eh Sexta-Feira!";

if($texto == "Hoje eh Sexta-Feira!") {
echo "Dia dos homens.";
}
---------------------------------------------

este mesmo pedaco de codigo pode ser escrito da seguinte maneira e faria mesma coisa.

---------------------------------------------
$texto = 'Hoje eh Sexta-Feira!';

if($texto == 'Hoje eh Sexta-Feira!') {
echo 'Dia dos homens.';
}
---------------------------------------------


AGORA PERGUNTEM KUAL A DIFERENCA? EIS A QUESTAO.

O interpretador de PHP quando encontra uma string dentro de "", sempre vai procurar por uma variavel. i.e: vai usar mais recursos do CPU para procurar. enquanto que se a string estiver entre ' ', somente vai escrever a string.
Observe:

echo '$texto, Vamos todos entrar no fds.';

// output: $texto, Vamos todos entrar no fds.

enquanto que:

echo "$texto, Vamos todos entrar no fds.";

//output: Hoje eh Sexta-Feira, Vamos todos entrar no fds.

MAIS DICAS NO PROXIMO POST. UM ABRACO.

Wednesday, October 17, 2007

101 coisas que o Firefox pode fazer e o IE não (parte 1)

Eis aqui como prometido, deixar umas dicas sobre o Firefox, este foi concebido pela empresa Mozilla Foundation (conheço gente que tem confundido muito o Browser Firefox com a Instituição Mozilla) esclarecido esta nas linhas ali em cima....

Os mais espertos escreveram uma review em que la estão patentes 101 coisas que o Firefox (desde a versão 1.6) pode fazer e o Internet Explorer (6.0) não.

Algumas coisas a considerar:

Esta lista considera componentes que vem no Download feito directamente na Microsoft e não engloba softwares adicionais.

Na lista não estão incluidas coisas que podem ser feitas alterando o Registro, ou alterando ficheiros manualmente.

Não é suposto esta lista tirar vantagem de um Browser em comparação com o outro. É uma lista de características do Browser da Mozilla que não são encontradas no IE (Internet Explorer).

Navegação em Abas ou Tabs

Deixa-o expor mais de um site numa janela usando multiplas abas. Pode abrir uma nova aba seleccionando a aba do navegador usando o File New Tab (Ficheiro Novo Separador -- em pt) ou pressionando o Ctrl+T. Pode-se também abrir um link numa nova aba usando o menu right-click. Esta opção pode ser configurada usando o menu Tools Options (Ficheiro Opções Separadores). Tabbed Browsing

Isto além de poupar espaço no taskbar, poupa também alguma memória.

Bloqueador de Popups

Bloqueia todos os popups de advertências (publicidades). Para desabilitar as janelas de popup, seleccione Advanced Scripts & Plugins na janela de Preferências.

Prevenir scripts de fazerem varias coisas.

Você pode prevenir os scripts de moverem janelas, fecharem-nas, alterar o status bar (barra de estado) e ajustar cookies. Para alerar estas configurações, seleccione AdvancedScripts&Plugins na janela de Preferências. Dai retire as opções indesejadas.

Toolbar do Site de Navegação

Expõe conteúdo dos tags (são estruturas de linguagem de marcação que consistem em breves instrucões, tendo uma marca de início e outra de fim) de um link provido por um documento, permitindo que se navegue em várias partes de um site.

Sidebar

O sidebar fornece um número de tabs por defeito (em linguagem informática entenda-se: “como o software vêm originalmente”), outros podem ser adicionados pelo usuário.

Pode-se adicionar paineis pessoais ao sidebar

Os sidebars personalizados podem ser implementados em HTML ou XUL (XML User Interface Language) e podem ser instalados de um site remoto sem muita dificuldade. Os sites podem adicionar sidebars usando a função window.sidebar.addPanel().

Mais controle no zoom dos textos.

Pode-se acrescentar zoom para qualquer tamanho. O IE suporta somente 5 tamanhos e não tem nenhum atalho do teclado que se possa fazer. Pode-se fazer isto usando o Ctrl+ ou Ctrl – (para incrementar ou diminuir respectivamente. Isto também pode ser efectuado usando o mouse (girando a roda com o Ctrl carregado)

Nota que usar o mouse não é um atalho do teclado.

Pode fazer zoom de qualquer texto, mesmo com tamanhos fixos.

Pode acrescentar texto embora este tenha tamanho fixo, isto é algo citado como problema no IE.

Diálogo de informação da página

Providencia informação adicional sobre codificação, tipo MIME (Multipurpose Internet Mail Extensions – é um Internet Standard que estende o formato de e-mail para suportar: outros tipos de textos alem do US-ASCII, anexos não textualizados, corpo de mensagens mult-parcializadas e cabeçalho de informação em caracteres não-ASCII ), referências e meta tags. Algumas destas informações estão também presentes nas propriedades do IE mas não tão detalhadamente e as janelas não é dimensionáveis.

Informação de diálogo FORM/LINK/MEDIA detalhada

A informação de diálogo da página providencia abas que tem algumas listas de elementos, links, imagens, e outro tipo de média numa página. Pode-se ainda previsualizar imagens e salvá-las dessa página.

Salvar plugins

Mozilla salva plugins quando salva uma página Web completa. Pode-se também salva-las a partir da janela da Page Info.

Tudo por hoje aguarde por mais detalhes na próxima edição.

ºoOzhielOoº

um abraço ao Neil Dickens

Tuesday, October 16, 2007

AC Control



Tava eu a pensar o que eu vou publicar hoje, epa tou um pouco sem vontade de fazer nada. Um dakeles dias k so kero fikar...fikar...e fikar. Entao tava so a navegar por alguns applets que tenho no meu pc e encontrei um que fez-me despertar e kerer aprender a criar animacoes com java.



Eh um pequeno remote simples de A/C ar-condicionado. Liga/Desliga, aumenta/diminui a temperatura. Nada grandioso mas pode-se fazer muito mais com isto. Bla,bla...Ai vai o codigo.


import java.awt.*;

import javax.swing.*;

import java.awt.event.*;


public class ArCondicionado_Ap extends JFrame implements ActionListener {

JButton mais, menos, on_off, none;

JLabel status, temperature;

Container remoto;

boolean ligado = false;

int valor = 20; // valor inicial da temperatura


public ArCondicionado_Ap() {

setSize(225,95);

setTitle("A/C Remote");

remoto = getContentPane();

remoto.setBackground(Color.lightGray);

remoto.setLayout(new FlowLayout(FlowLayout.CENTER));

addWindowListener(new CloseWindow());


on_off = new JButton("I / 0");

on_off.addActionListener(this);


mais = new JButton("+");

menos = new JButton("-");

mais.setEnabled(false);

menos.setEnabled(false);

mais.addActionListener(this);

menos.addActionListener(this);


status = new JLabel("Status: Desligado");

status.setForeground(Color.red);

temperature = new JLabel("-- °C");


remoto.add(new JLabel("AC Remote"));

remoto.add(status);

remoto.add(temperature);

remoto.add(on_off);

remoto.add(mais);

remoto.add(menos);


remoto.setVisible(true);

}


public void actionPerformed(ActionEvent e) {

Color cor = new Color(51,153,102);


if (e.getSource().equals(on_off)) {

if (ligado == false) {

status.setForeground(cor);

status.setText("Status: Ligado");

temperature.setText((valor) + "°C");

ligado = true;

menos.setEnabled(true);

mais.setEnabled(true);

}

}


if (e.getSource().equals(mais)) {

temperature.setText((valor++ + 1) + "°C");

menos.setEnabled(true);

if (valor > 29) mais.setEnabled(false);

}


if(e.getSource().equals(menos)) {

temperature.setText((valor-- -1) + "°C");

mais.setEnabled(true);

if (valor <> 11)
}

}


public static void main(String args[]) {

ArCondicionado_Ap ac = new ArCondicionado_Ap();

ac.show(); }

class CloseWindow extends WindowAdapter {

public void windowClosing(WindowEvent we) {

System.exit(0);

}

}

}

Monday, October 15, 2007

handshake

Array

Ai pessoal
na boa???
Ai vai uma pekena maneira de inserir , imprimir , axar o maior ,o menor e calcular a media dos elementos localizados num array


import javax.swing.*;
import java.text.*;
public class Media2
{
public static void main(String[] args)
{
/*vamos criar um formato para impressao ke e */
/*para evitar que o resultado tenha muitas casas decimais*/
DecimalFormat formato=new DecimalFormat("0.00");
String med_form;
/*declaramos um array para guardar os nomes*/
String []nomes=new String [3];
/*declaramos um array para guardar as medias*/
double []media=new double [3];
double medias;
/*ciclo ke percorre a introducao das medias e das medias*/
for (int i=0;i{
String name=JOptionPane.showInputDialog("Introduza o nome : ");
nomes[i]=name;
String a=JOptionPane.showInputDialog("Introduza a media : ");
medias=Double.parseDouble(a);
media[i]=medias;
}
/*criacao de variaveis ke vao guardar a maior e a menor media*/
/*Inicializamos o maior com o primeiro indice do array*/
double maior=media[0];
/*o memso acontece com o menor*/
double menor=media[0];
int indice=0;
/*ciclo ke percorre o array todo*/
for(int i=0;i{
/*testa a nota ke vem do array pra comparar se e maior*/
/*que a nota contida na variavel maior*/
if(media[i]>maior)
{
/*se sim guarda o valor na variavel*/
maior=media[i];
/*guarda o indice(posicao) da maior nota do array*/
indice=i;
}
}
int indicemenor=0;
/*a mesma ideia e aplicada para "apanhar" a menor media*/
/*mas neste caso e com a menor nota*/
for(int i=0;i{
if(media[i]{
menor=media[i];
indicemenor=i;
}
}
/*impressao dos valores*/
System.out.println("o estudante com > nota e : "+nomes[indice]);
System.out.println("o estudante com < nota e : "+nomes[indicemenor]);
System.out.println("A > Nota e : "+maior);
System.out.println("A < Nota e : "+menor);
double mediaturma=0;
double soma=0;
/*ciclo ke percorre o array para calcular a media dos*/
/*valores que tao contidos no array*/
for(int i=0;i{
/*Acumulamos os valores do array na variavel smo*/
soma+=media[i];
}
/*Dividimos o valor acumulado na varaiavel soma*/
/*dividimos pelo tamanho do array e guardamos na variavel mediaturma*/
mediaturma=soma/media.length;
med_form=formato.format(mediaturma);
/*impressao da media total*/
System.out.println("A media da turma (antes de ser formatada) e : "+mediaturma);
System.out.println("A media da turma (ja formatada) e : "+med_form);
}
}

Fiquem Bem
p.a.z.
•·.·´¯`·.·• ] ƒ i ® e™ [ •·.·´¯`·.·• logging out......!!!!

Friday, October 12, 2007

gerar numeros aleatorios

function gerar_recibo_lotaria() {
$n = (float) microtime()*10000;
$n = (int)$n;
$n=(int)($n/25);
$randval = rand($n, 9999);
$randval = sprintf("%04d",$randval);

return $randval;
}
?>

Internet Vs Velocidade & dicas

Alo pessoal bem vindos ao nosso cantinho, a ideia principal é de desenvolver e trocar ideias sobre TI (Tecnologias de Informação) aki no nosso Moçambique.
O meu primeiro post está relacionado com a Internet (O Internet explorer pricipalmente) o proximo post serão umas dicas sobre o Mozilla Firefox.

Enjoy

Aumentar os downloads do Internet Explorer:

Start → Run → regedit

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/InternetSettings

depois right click New, e adicionar os valores DWORD seguintes:

MaxConnectionsPer1_0Server=Dword:0000000a

MaxConnectionsPerServer=Dword:0000000a


Aumentar largura de banda para downloads:

Start → Run → gpedit.msc (Group Policy editor)

Computer Configuration → Administrative Templates → Network → QoS Packet Scheduler → Limit reservable bandwidth

Right click properties, altere o setting para ENABLED e altere o bandwidth limit para zero% (0%)


Mudar o título do Internet Explorer para um qualquer:

Start → Run → regedit

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Window Title


Para saber o IP e outras informações sobre a rede:

Start → Run → cmd → ipconfig

Start → Run → cmd → ipconfig/all


Esvaziar a cache, e ficar com uma mais recente:

Start → Run → cmd → ipconfig /flushdns


Internet mais veloz:

Start → Run → regedit

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\ServiceProvider

Depois seleccionar ServiceProvider e alterar os valores hexadecimais:

Class - 1

DnsPriority - 7

HostsPriority - 6

LocalPriority - 5

NetbtPriority – 8





Numa recente feira de informática - a Comdex, Bill Gates fez umas declarações infelizes, nas quais comparou a indústria informática com a automobilística, dizendo que:-
Se a GM (General Motors) tivesse evoluído tecnologicamente tanto como o fez a indústria informática,estaríamos hoje a conduzir carros que custariam 25 dólares e que fariam 1000 milhas com 1 galão (cerca de 420 km com perto de 1,5 litros).
A General Motors, em resposta, veio a público manifestar o seguinte:-
- Se a Microsoft fabricasse carros:Sempre que voltassem a ser pintadas as linhas nas estradas, tínhamos que comprar um carro novo.
- Se por acaso, indo a 100 km/h, o nosso carro se fosse abaixo na auto-estrada sem razão aparente, tínhamos apenas que o aceitar,mesmo sem compreender porquê! Depois, tínhamos que voltar a ligá-lo (depois de desligar o carro, tirar a chave da ignição, fechar o vidro, sair do carro, fechar e trancar a porta, voltar a abri-la, entrar outra vez e sentar-se no banco, abrir o vidro, pôr a chave na ignição e ligar o motor novamente). Depois, já podíamos continuar….
- Inesperadamente, ao fazermos uma manobra à esquerda podíamos fazer com que o nosso carro parasse. Tínhamos então que voltar a instalar o motor! E, por muito estranho que pareça, íamos aceitá-lo como “normal”.
- A Linux faria um carro em parceria com a Apple, extremamente fiável, sendo cinco vezes mais rápido e dez vezes mais fácil de guiar. Mas só podia andar em 5% das estradas.
- Os indicadores luminosos de falta de óleo, gasolina e bateria seriam substituídos por uma simples “Falha Geral ou Defeito Genérico” (deixando à nossa imaginação a identificação do erro!).
- Os novos assentos iam obrigar a que todos tivéssemos o mesmo tamanho de rabiosque.
- Num desastre, o sistema de “air bag” perguntava: “Tem a certeza que quer usar o air bag?”
- A meio de uma pronunciada descida, quando ligássemos ao mesmo tempo, o ar condicionado, o rádio, e as luzes, no travão aparecia uma mensagem, de género: “Este carro fez uma operação ilegal e vai ser desligado!” (SEM APELO!!!) quando carregássemos.
- Se desligássemos o nosso carro usando a chave e sem antes termos desligado o rádio ou o pisca-pisca, ao voltarmos a ligá-lo, ele ia verificar todas as funções do carro durante meia hora, e ainda nos dava uma bronca, e dizia-nos para não fazermos isso nunca mais. (ÓPTIMO!).
- A cada novo lançamento de automóvel que houvesse, tínhamos que voltar à auto-escola para tirarmos uma nova carta.
Para desligarmos o carro, tínhamos que apertar o botão que dissesse “Iniciar”.
A única vantagem: Os nossos netos haviam de saber guiar muito melhor do que nós!
Thanx Zhiel for the email.

Wednesday, October 10, 2007

procurar um dado nos files dum directorio


/* este codigo foi a solucao que eu tive para procurar um determinado numero
num dos ficheiros de um directorio. Portanto este script percorre o dir e abre
cada ficheiro a procura do vulgo bilhete */

$directory = getcwd(); // get current working directory (obtem o path do script)
$procurado = $_POST["procurado"]; // este eh o nosso numero k procuramos
$t_bilh = "";
$achou = 0;

$files = array(); //initialize array
if($dir = opendir("$directory/dados/$conc")) {
while(false !== ($f = readdir($dir))) {
if(eregi("\valores__.txt",$f)) { // isto pode nao ter uso para si mas verifica se o nome do ficheiro contem a //palavra valores__.txt, no meu caso precisava
$fstristr = substr($f, 0, 20); // serve para buscar certos caracteres, nao sei se me expressei bem
array_push($files,"$fstristr"); #push into $files array
}
}

for($y = 0; $y < color="#3333ff">$filenome = "dados/$conc/$files[$y]";
if(file_exists($filenome) && is_readable($filenome)) {
$valores = fopen($filenome,"r");
while(!feof($valores)) {
$linhas = fgets($valores,1024); // faz a leitura de cada linha do ficheiro para $linhas
list($bilh) = explode("",$linhas);
$bilhete = str_pad($bilhete, 5, "0", STR_PAD_LEFT);
$t_bilh = str_pad($bilh, 5, "0", STR_PAD_LEFT);
if ($achou == 0) {
if(strstr($bilhete,$t_bilh)) // compare the keys {
$erro_sim = $bilhete." encontrado no ".substr($filenome,9,6);
}
}
} fclose($valores);
} else $erro_nao = "Ficheiro $filenome não existe!
";

}
}
?>

Buscar a Data No Sistema e Formatar a mesma

Ai vai a dica da data pessoal

import java.text.*;
import java.util.*;
public class SimpleDateFormatteste
{
public static void main (String args[])
{
Date data = new Date();/*Declaracao da variavel e atribuimos a data do sistema*/
String Dataformatada;/*declaracao da variavel ke vai receber a data no formato ke nos kisermos ke apareca*/
/*Usando a funcao Java SimpleDateFormat declaramos uma variavel e atribuimos a ela o formato ke pretendemos que apareca*/
/*Neste caso seria : ano mes dia separador hora : minuto*/
SimpleDateFormat formato = new SimpleDateFormat("yyyy MMM dd --> hh:mm");
/*Passamos para a variavel DataFormatada o formato que contem na variavel formato e passamos tb a data*/
Dataformatada = formato.format(data);
/*A saida Sera : Ano Mes Data Separador(-->) podias colocar kualker separador (@#$%) Hora:Minuto para a data formatada*/
System.out.println("Data Formatada : "+Dataformatada);
/* e : dia da semana Mes Data Hora:Minuto:Segundo Ano para data so */
System.out.println("Data Inicial : "+data);
}
}

o output sera mais ou menos :

Data Formatada : 2007 Oct 10 --> 12:24
Data Inicial : Wed Oct 10 12:24:26 CAT 2007

p.a.z. & a.m.o.r.

Formatar Valor das variaveis para impressao

Ai pessoal

pra quem gosta de ver os numeros bem formatados usamos a opcao DecimalFormat no Java
no Pascal era so por a "variavel:numero de casa na parte inteira :numero de casas na parte decimal"(ex: writeln(variavel:2:2);)


import java.text.*;
public class DecimalFormatTeste
{
public static void main (String args[])
{
int numeroinicial = 3;/*declaracao de variaveis e atribuicao de valores */
double pi=3.144698712354;
String numerofinal,pidepois;/*String's ke vao receber os valores ja formatados */
DecimalFormat formato = new DecimalFormat("0.00 Mts");/*formato ke keremos */
numerofinal = formato.format(numeroinicial);/*atribuimos o valor da variavel formatada a variavel string
atencao : o valor inicial da variavel nao eh modificada...!!!! */
DecimalFormat formato2 = new DecimalFormat("0.00");
pidepois=formato2.format(pi);
/*Impressao das Variaveis antes do format e depois do format */
System.out.println("numeroinicial antes de ser formatado --> "+numeroinicial);
System.out.println("numerofinal depois de formatado --> "+numerofinal+"\n");
System.out.println("o pi antes de formatado --> "+pi);
System.out.println("o pi antes depois de formatado --> "+pidepois+"\n");
}
}

Tuesday, October 9, 2007

correr programas com codigo java

-------------------------------------------------------------------------------------------
import java.io.IOException;

public class RuntimeExec {
public static void main(String[] args) {

String command = "explorer"; // aki pode meter o seu executavel

try { Process process = Runtime.getRuntime().exec(command);}
catch (IOException e) {e.printStackTrace();}
}
}
-------------------------------------------------------------------------------------------

Thank You

E ai mane na paz???
thanx pelo invite
espero que este blog cresca man
tavamos mesmo a precisar de mais uma cena destas aqui em Moz

como "Aperitivo" deixo aki a minha pequena parte do StringTokenizer

Programa que le o nome Completo e so imprime o apelido usando o StringTokenizer :



import javax.swing.*;
import java.util.*;
public class Boolean_Apelido {
public static void main(String[] args) {
String x=JOptionPane.showInputDialog("Nome Completo : ");
StringTokenizer stat = new StringTokenizer(x);
boolean b=true; //para verificar se ainda existem "Tokens" na String
//Ciclo que vai "viver" ate o b ficar false
do {
x=stat.nextToken();//apanha o proximo "token"
b=stat.hasMoreTokens();//Verifica se ainda existem "token's"
} while(b==true);//termina o ciclo kuando ja nao existirem "tokens" e o b fica false

System.out.println("O seu Apelido e : "+x);
//imprime o ultimo Valor que fica na variavel String x
}
}

IMPORTANTE : nao esquecas de importar o pacote java.util senao o StringTokenizer nao funciona(Ex: import java.util.*;)

Abracos pra todos que passam por aqui....
p.a.z.

java StringTokenizer

/*para quem deseja ler uma string e te-la em pedacos de palavras ou tokens*/

import java.util.StringTokenizer;

public class StringTokenizerSample {
public static void main(String[] args) {
StringTokenizer st = new StringTokenizer("programamoz para nos");

// obter quantos tokens contem o st
System.out.println("Existem: " + st.countTokens() + " tokens.");

// percorrer st enquanto houver mais tokens
while (st.hasMoreElements()) {
String token = st.nextElement().toString();
System.out.println("token = " + token);
}

// divide uma string com formato de data e com separador "/"
st = new StringTokenizer("1983/07/23/20:00", "/");
System.out.println("Existem: " + st.countTokens() + " tokens.");
while (st.hasMoreElements()) {
String token = st.nextToken();
System.out.println("token = " + token);
}
}
}

Monday, October 8, 2007

Sejam bemvindos

$em muitos bla...bla's eu keria dizer que este blog foi criado para programadores, amadores(como eu), intermediários e avançados, com o objectivo de expandir o conhecimento de programação não so para quem sabe mas também para quem esteja interessado em aprender. \n
Vamos trocar ideias, código, etc.

"A melhor maneira de ter uma ideia eh ter várias ideias."

Sem mais assunto estejam livres de dar o vosso contributo.

$Um abraço.
?>