Gráfico Dinâmico Utilizando XML e FLASH com Componente FusionCharts Free

March 13th, 2010 sem comentários »

Nesta coluna aprenderemos montar um Gráfico utilizando o componente FusionCharts, que utiliza para exibição o FLASH e é alimentado via XML, faremos um exemplo dinâmico utilizando este componente bacana!

Este exemplo consiste em somente 4 fases:

Primeira:
Baixar os exemplos no site do FusionCharts, em nosso caso utilizaremos a versão free que basta se cadastrar no seguinte link e fazer o download no seguinte link: http://www.fusioncharts.com/free/Download.asp?gMenuItemId=5

0

Segunda:
Após baixar os exemplos escolhemos neste exemplo trabalhar com o MSLine, devemos pegar os seguintes arquivos do arquivo ZIP baixado:

3

Terceira:
Criaremos uma base de dados ACCESS “Coloquei o nome da base como Books.mdb”, neste exemplo criaremos uma tabela com o nome: PRODUTOS e utilizaremos os seguintes campos id, meses, valor1 e valor2:

1

Quarta:
Criaremos duas páginas, default.asp e geradadosxml.asp.

Default.asp
Responsável por buscar os arquivos JavaScript, SWF e página onde traremos os dados em XML. Abaixo imagem com o endereço dos arquivos sublinhados.

4

Geradadosxml.asp
Responsável em buscar valores na base de dados e gerar página XML para trazer valores que irão alimentar nosso gráfico em SWF.

5

Resultado:

6

Observações:
1 – Ao passar o mouse sobre um ponto no gráfico será exibido o valor do pico em um ToolTip como na imagem acima;
2 – Existe um arquivo Style.css para mudar cores e tipo de fonte.

Nesta coluna tentei aproximar mais componente de Gráficos Free gratuito em nosso dia-dia, afinal o relatório bem feito é um grande passo para sua idéia ser comprada.

Referência:
http://www.fusioncharts.com/free/

Um abraço a todos!

FONTE: http://www.oficinadanet.com.br/artigo/1137/grafico_dinamico_utilizando_xml_e_flash_com_componente_fusioncharts_free

Bookmark and Share

70 Ícones Grátis e Personalizáveis

March 13th, 2010 sem comentários »

iconzaÀs vezes você quer um ícone para ilustrar sua criação mas não acha nada que preste. Agora já imaginou se existisse algum site bondoso que além de oferecer  ícones todos gratuitos ainda alterasse a cor e tamanho do jeito que você quisesse?

Pois esse site existe.

Trata-se do Iconza, que oferece 70 ícones bem funcionais e ainda por cima, permite que você possa mudar não só suas cores mas também as cores de fundo. Depois disso basta clicar em download que todos os ícones chegarão em seu computador, devidamente alocados dentro de um ZIP.

Viu que legal? O quê você está esperando, comece a brincar com os ícones clicando aqui.

Mais um oferecimento de cofre gráfico.

Para o alto e Avante!

FONTE: http://www.brunoavila.com.br/avante/icones/70-icones-gratis-e-personalizaveis.html

Bookmark and Share

Texturas de papéis velhos, coisas sujas e arranhadas. Grunge!

March 13th, 2010 sem comentários »

grungeNem sempre o que é velho é ruim. Aposto que você algum dia procurou por texturas de papéis velhos, antigos, um pouco sujos. Dependendo do layout pode dar um charme a mais. E sei o quanto é difícil encontrar texturas de qualidade em alta definição de papéis amassados, ferrados e fud…erosamente estraçalhados.

Foi pensando nisso que trouxe até vocês, queridos amigos web designers, um cantinho que encontrei aculá com centenas de texturas de coisas sujas, papéis amassados, materiais arranhados e outros elementos para dar aquele style na sua criação.

Esse com certeza vai pro seu favoritos? Aposta quanto? Então olha aí e depois me diz.

Para o alto e Avante!

FONTE: http://www.brunoavila.com.br/avante/banco-de-imagem/texturas-de-papeis-velhos-coisas-sujas-e-arranhadas-grunge.html

Bookmark and Share

5 formas de receber o pagamento do cliente com rapidez e segurança

March 13th, 2010 sem comentários »

Hoje recebi um email de um caro leitor perguntando como fazer para receber do cliente o pagamento prometido. Então resolvi trazer a resposta para o nosso blog. Afinal, como faço para receber o pagamento do cliente? Faço em 3x na lábia? Confio no cliente em me pagar em dia? Afinal, o que devo fazer?

Convenhamos, se até nós que somos pessoas de bom coração, atrasamos uma continha ali ou aculá mesmo tendo a grana para pagar mas não pagamos por puro esquecimento, o mesmo pode ocorrer entre você e seu cliente, concorda? Então a primeira coisa que você deve colocar na cabeça é que há grande probabilidade do cliente atrasar o pagamento. Com isso em sua cabeça você não ficará explodindo de raiva por aquele dinheirinho não cair na conta na data prometida.

Anos atrás tinhamos poucas formas de receber do cliente a não ser por depósito bancário, cheque ou dinheiro à vista, em mãos. Com o progresso da internet abriu-se novas possibilidades de recebimento. Aqui listo 5 delas que poderão ajudar você, veja:

1. 50% na entrada, 50% na entrega. Dessa forma você já garante um inicial, confirmando o comprometimento do cliente em realizar aquele serviço com você até o final. Para garantir os 50% finais, só entregue os arquivos-fonte com o restante do pagamento.

2. Desconto à vista. O que você puder fazer para garantir o valor total antes de iniciar o trabalho, melhor. Mesmo que para isso você precise dar um bom desconto. Assim você poderá trabalhar tranquilo, sem medo de que será “enrolado” no final e para o seu cliente sempre haverá a vantagem do desconto.

3. Contrato. Em qualquer forma de pagamento escolhida, procure fazer um contrato. Esse contrato pode ser entre pessoas físicas ou jurídicas. E não se preocupe com registro, cartório, nada disso. Contrato basta um papel com direitos e deveres finalizando com uma assinatura de ambas as partes. Sendo assim pode ser num papel ofício, guardanapo, papel higiênico, o que for, pois estando escrito e assinado embaixo, basta isso para torná-lo um documento de valor legal.

4. Boleto. Se você tiver um sistema de criação de boletos poderá cobrar o cliente através deles. Você poderá cobrar multa e juros, fazendo com que o cliente se sinta “motivado” a pagar no vencimento. Além disso será mais fácil protestá-lo em caso de falta de pagamento.

5. Cartão de Crédito. Sem dúvida a melhor forma de recebimento tanto para você como para o cliente. O cliente poderá parcelar o valor em quantas vezes ele quiser e você receberá o valor integral, como se fosse à vista. Tudo bem, tem o valor das taxas do cartão mas aqueles 6% que o cartão leva embora compensa os outros 94% do valor que irão para sua conta. É a certeza do pagamento integral. Antigamente era difícil se associar as operadoras de cartão mas hoje com o advento do PagSeguro, Pagamento Digital e outros, a coisa ficou muito mais fácil.Não existem mais motivos para não aceitar cartão. É uma maravilha, dessa forma você nunca mais vai reclamar que o cliente não lhe pagou.

Quer utilizar o Pagseguro. Se registre, é grátis clicando aqui.

Já se você optar pelo Pagamento Digital, também é grátis clicando aqui.

No caso de falta de pagamento e se você notar má-indole do seu cliente, se dirija a um juizado especial que trate de pequenas causas. Você não precisará de advogado, basta ir até o juizado com os emails, contrato ou outras provas do serviço realizado, o que foi combinado com o cliente e o demonstrativo da falta de pagamento. Será aberto um processo, primeiro uma tentativa de conciliação e depois audiência. Normalmente na conciliação o cliente se prontifica a fazer um acordo pois ele pensará nos custos de advogado que deverá dispensar caso o processo se prolongue. E o melhor de tudo é que a justiça nesses casos é rápida, não demora mais que 6 meses.

A justiça funciona, o problema é que o brasileiro não costuma procurar a justiça por achar que ela não funciona. Para esses casos digo com conhecimento de causa que funciona muito bem. Portanto jamais combine nada com seu cliente por telefone ou ao vivo sem registrá-lo. Tudo que for combinado, registre em email e envie para o cliente. Isso poderá ser útil nesses casos.

Pronto! Agora pode trabalhar tranquilo.

Para o alto e Avante!

Bookmark and Share

“O código que escrevemos tem muito pouco impacto sobre as pessoas”

March 13th, 2010 1 comment »

As palavras que vemos no título desse post são do mestre Carlos Brando, especialista em Ruby on Rails. Carlos publicou em seu blog um post polêmico, lançando a seguinte pergunta no início de seu texto “Quer se tornar um programador de sucesso? Pare de escrever código”.

Brando contesta alguns programadores que focam demais no código e esquecem o usuário. “O problema é que a maior parte dos programadores se preocupam demais com o código. Passam horas e mais horas tentando criar o algoritmo perfeito. Porém se esquecem que o melhor código do mundo é inútil se ninguém utilizar o software que o contém.”

No final, sugere que o programador deixe de focar apenas no código, participando mais ativamente de comunidades, realizando palestras e melhorando suas habilidades sociais. Sobre isso Brando diz “Não escreva apenas código. Estude, escreva e fale mais sobre código”

O que Brando diz é bastante pertinente. E podemos trazer isso para o campo do Web Design. A questão é: afinal, trabalhamos com quem? Apenas com máquinas? Não, a finalidade do nosso trabalho serão sempre as pessoas. Não são máquinas, mas seres humanos.

O sucesso de sites e softwares mora justamente na interação com as pessoas. Basta observar os sites, aplicativos e serviços que são sucesso no mundo. O orkut surgiu como uma grande novidade. Porém toda aquela tecnologia já existia, principalmente as comunidades, que nada mais são que fóruns com pouquíssimos recursos se comparados com outros fóruns que temos por aí. Mas se tornou sucesso, graças a forma que o site “conversa” com o usuário, uma aliança de design, tecnologia e comunicação.

E o twitter? Existe alguma tecnologia nova e tão especial rodando nele? Nada mais que uma página com textinhos de poucos caracteres, que mais parece um mural de recados, os comentários de um blog, um RSS ou um chat altamente simples. Não há nada de novo em sua tecnologia mas há sim na sua comunicação com o usuário. O formato escolhido, o processo de postagem e interação dos usuários, sua forma simples de operar, tudo isso fez dele um sucesso.

O MSN Messenger, agora Windows Live Messenger, é um caso clássico de sucesso de comunicação com o usuário. Desbancou o reinado do ICQ graças a uma foto e um enter. Antigamente não era possível colocar uma fotinha junto ao nosso contato de ICQ. Além disso para enviar uma mensagem era necessário clicar com o ponteiro do mouse no botão “enviar”. Bastou a Microsoft incluir a possibilidade de colocar uma foto do usuário e apenas teclar “enter” para enviar a mensagem que a migração do ICQ para o MSN ocorreu em massa. Um caso clássico do formato de comunicação exercendo papel fundamental no sucesso de um software. Acredito que foi iso que Carlos Brando quis dizer, pouco interessa se o código do ICQ era melhor construído que o do MSN, o que importa é que o MSN se comunicou melhor com o usuário do que o ICQ.

Para mim programador ou web designer de sucesso é aquele que se comunica melhor com o seu cliente, com o cliente dos seus clientes e com seus colegas de trabalho, focando seu trabalho nas pessoas. Criar um bom código é fundamental para um programador ser chamado de programador assim como criar um bom design é requisito básico para um web designer ser chamado de web designer. O que irá diferenciar esses profissionais dos demais sempre será no formato de comunicação que escolherem na criação de seus trabalhos.

O foco é: gente. Gente de verdade.

Para o alto e Avante!

FONTE: http://www.brunoavila.com.br/avante/mercado/o-codigo-que-escrevemos-tem-muito-pouco-impacto-sobre-as-pessoas.html

Bookmark and Share

Funções para tratamento de Arrays

October 11th, 2009 sem comentários »

Funções Genéricas

Array

array array(…);

É a função que cria um array a partir dos parâmetros forncidos. É possível fornecer o índice de cada elemento. Esse índice pode ser um valor de qualquer tipo, e não apenas de inteiro. Se o índice não for fornecido o PHP atribui um valor inteiro sequencial, a partir do 0 ou do último índice inteiro explicitado. Vejamos alguns exemplos:

Exemplo 1
$teste = array(”um”, “dois”,”tr”=>”tres”,5=>”quatro”,”cinco”);

Temos o seguinte mapeamento:
0 => “um” (0 é o primeiro índice, se não houver um explicito)
1 => “dois” (o inteiro seguinte)
“tr” => “tres”
5 => “quatro” (valor explicitado)
6 => “cinco” (o inteiro seguinte ao último atribuído, e não o próximo valor, que seria 2)

Exemplo 2
$teste = array(”um”, 6=>”dois”,”tr”=>”tres”,5=>”quatro”,”cinco”);

Temos o seguinte mapeamento:
0 => “um”
6 => “dois”
“tr” => tres
5 => “quatro” (seria 7, se não fosse explicitado)
7 => “cinco” (seria 6, se não estivesse ocupado)

Em geral, não é recomendável utilizar arrays com vários tipos de índices, já que isso pode confundir o programador. No caso de realmente haver a necessidade de utilizar esse recurso, deve-se ter bastante atenção ao manipular os índices do array.

range

array range(int minimo, int maximo);

A função range cria um array cujos elementos são os inteiros pertencentes ao intervalo fornecido, inclusive. Se o valor do primeiro parâmetro for maior do que o do segundo, a função Devolve false (valor vazio).

shuffle

void shuffle(array &arr);

Esta função “embaralha” o array, ou seja, troca as posições dos elementos aleatoriamente e não Devolve valor algum.

sizeof

int sizeof(array arr);

Devolve um valor inteiro contendo o número de elementos de um array. Se for utilizada com uma variável cujo valor não é do tipo array, Devolve 1. Se a variável não estiver setada ou for um array vazio, Devolve 0.

Funções de “navegação”

Toda variável do tipo array possui um ponteiro interno indicando o próximo elemento a ser acedido no caso de não ser especificado um índice. As funções seguintes servem para modificar esse ponteiro, permitindo assim percorrer um array para verificar seu conteúdo (chaves e elementos).

reset

mixed reset(array arr);

O ponteiro interno aponta para o primeiro elemento do array, e devolve o conteúdo desse elemento.

end

mixed end(array arr);

O ponteiro interno aponta para o último elemento do array, e devolve o conteúdo desse elemento.

next

mixed next(array arr);

O ponteiro interno aponta para o próximo elemento do array, e devolve o conteúdo desse elemento.

Obs.: esta não é uma boa função para determinar se um elemento é o último do array, pois pode devolver false tanto no final do array como no caso de haver um elemento vazio.

prev

mixed prev(array arr);

O ponteiro interno aponta para o elemento anterior do array, e devolve o conteúdo desse elemento. Funciona de maneira inversa a next.

pos

mixed pos(array arr);

Devolve o conteúdo do elemento actual do array, indicado pelo ponteiro interno.

key

mixed key(array arr);

Funciona de maneira bastante semelhante a pos, mas em vez de devolver o elemento actual indicado pelo ponteiro interno do array, devolve o seu índice.

each

array each(array arr);

Devolve um array contendo o índice e o elemento actual indicado pelo ponteiro interno do array. o valor da devolução é um array de quatro elementos, cujos índices são 0, 1, “key” e “value”. Os elementos de índices 0 e “key” armazenam o índice do valor atual, e os elementos de índices 1 e “value” contém o valor do elemento atual indicado pelo ponteiro.
Esta função pode ser utilizada para percorrer todos os elementos de um array e determinar se já foi encontrado o último elemento, pois no caso de haver um elemento vazio, a função não devolverá o valor false. A função each só devolve false depois q o último elemento do array foi encontrado.

Exemplo:

função que percorre todos os elementos de um array e imprime seus índices e valores

function imprime_array($arr) {
reset($arr);
while (list($chave,$valor) = each($arr))
echo “Chave: $chave. Valor: $valor”;
}

Funções de ordenação

São funções que servem para ordenar os elementos de um array de acordo com determinados critérios. Estes critérios são: manutenção ou não da associação entre índices e elementos; ordenação por elementos ou por índices; função de comparação entre dois elementos.

sort

void sort(array &arr);

A função mais simples de ordenação de arrays. Ordena os elementos de um array em ordem crescente, sem manter os relacionamentos com os índices.

rsort

void rsort(array &arr);

Funciona de maneira inversa à função sort. Ordena os elementos de um array em ordem decrescente, sem os manter os relacionamentos com os índices.

asort

void asort(array &arr);

Tem o funcionamento bastante semelhante à função sort. Ordena os elementos de um array em ordem crescente, porém mantém os relacionamentos com os índices.

arsort

void arsort(array &arr);

Funciona de maneira inversa à função asort. Ordena os elementos de um array em ordem decrescente e mantém os relacionamentos dos elementos com os índices.

ksort

void ksort(array &arr);

Função de ordenação baseada nos índices. Ordena os elementos de um array de acordo com seus índices, em ordem crescente, mantendo os relacionamentos.

usort

void usort(array &arr, function compara);

Esta é uma função que utiliza outra função como parâmetro. Ordena os elementos de um array sem manter os relacionamentos com os índices, e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

uasort

void uasort(array &arr, function compara);

Esta função também utiliza outra função como parâmetro. Ordena os elementos de um array e mantém os relacionamentos com os índices, utilizando para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

uksort

void uksort(array &arr, function compara);

Esta função ordena o array através dos índices, mantendo os relacionamentos com os elementos., e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois índices do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

FONTE: http://www.truquesedicas.com/tutoriais/php/apendices/00002a.htm

Bookmark and Share

Ano Estrelar 3259 – FEDERAÇÃO DOS CRIMES DE GUERRA – O PIOR ESTÁ POR VIR

October 9th, 2009 sem comentários »

galactic_warsGalactic Wars é um jogo de estratégia em tempo real dividido em turnos de 1 hora.

O jogo se passa no nosso universo aproximadamente no ano 2560. A humanidade finalmente descobriu a existência de vida extra-terrestre inteligente e desenvolveu sistemas para viagens espaciais a todas as galáxias.

Cada jogador controla um planeta, divididos em galaxias e as galaxias são divididas em setores, existem 5 raças disponíveis, cada qual com seus atributos especiais. Você também pode escolher um dos 4 estilos de governo que irá utilizar no seu planeta.

Galactic Wars é gratuito, o jogo ainda permite que os usuarios tornen-se associados para liberar algumas funcionalidades extras.

COMECE A JOGAR AGORA MESMO!

Prezado Líder,

Após recebermos da nossa agência de inteligência um relatório com um estudo minucioso sobre o que vem acontecendo no universo concluímos que a realidade é bem mais complexa e ameaçadora do que os rumores anunciavam. Pudemos observar uma movimentação muito grande de naves viajando pelo universo em busca de planetas menos desenvolvidos e o posicionamento que temos de seus Comandantes é de que seria “manobra militar”. Aparentemente o discurso é o mesmo para todos os questionados.

Procuramos pesquisar junto aos planetas Federados qual seria o verdadeiro motivo pelo qual os blocos de alianças teriam se fortalecido e qual a intenção dos planetas de alianças de outros universos estarem se aproximando dos nossos radares.

Alianças mais preparadas estão atacando outras em desenvolvimento com o intuito de frear o crescimento destas que por sua vez ameaçam assinar tratados com outras aliadas para se fortalecer e contra-atacar. Nós, da Federação dos Crimes de Guerra, pedimos que você prepare suas naves e prepare seu povo para uma nova guerra que está por vir. Que a sorte esteja conosco!

Saudações,
Comandante Geral da Federação dos Crimes de Guerra

Bookmark and Share

Como adicionar sombra utilizando CSS

October 7th, 2009 sem comentários »

Você sempre quis saber como colocar uma sombra numa imagem, utilizando apenas CSS? Saiba através do Dinamic Drive, que já foi inclusive indicado aqui no Avante,

Na realidade você pode colocar sombras não só em imagens mas em caixinhas também. Para saber como fazer essa proeza, basta clicar aqui.

Para o alto e Avante!

FONTE: http://www.brunoavila.com.br/avante/css/como-adicionar-sombra-utilizando-css.html

Bookmark and Share

O nome das cores HTML

October 4th, 2009 sem comentários »

Você sabia que as cores html possui nomes? É sim, cada cor hexadecimal tem seu nome e que funciona em qualquer navegador. Por exemplo, ao invés de você colocar color: #00FA9A coloque color: MediumSpringGreen que vai dar no mesmo. Para você saber todos os nomes e decorá-los assim como você decorou toda a tabuada, clique aqui e veja toda a lista.

PORÉM, se você quiser que seu site seja validado pelo W3C, seguindo os padrões, saiba que apenas as cores a seguir são validadas utilizando seus nomes: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, e yellow.

Para o alto e Avante!

Bookmark and Share

Bordas Arredondadas com CSS

October 4th, 2009 sem comentários »

bordasarredondadascomcss

Quer fazer aquelas bordinhas arredondadas, dando uma diferenciada naquela caixinha de destaque, utilizando CSS? Então conheça essa solução bem simples, o Spiffy Corners, que dá o CSS prontinho pra você fazer suas bordas arredondadas.

Clique aqui para testar.

Bookmark and Share