Um blog sobre programação e arte, o conteúdo original pode ser acessado em trialforce.nostaljia.eng.br
Ajustando volume do Microfone no Windows XP
3 de Janeiro de 2011, 0:00 - sem comentários aindaOpa!
A algum tempo, quando estava em Rondônia, queria ensinar minha namorada a configurar o microfone do Windows no note dela, sendo que ela usava Windows XP, ocorre que estava complicado de explicar então fiz um vídeo de qualquer jeito e coloquei no Youtube, até da para notar que meu XP é uma máquina virtual dentro do meu Ubuntu, que na época era 10.04
De todo os vídeos que coloquei no youtube, este é o mais visualizado/acessado e o Youtube se ofereceu para por propaganda nele e esta me pagando por cliques.
O Youtube detecta vídeos que tenham acessos regulares, coloca propaganda ao lado deles e paga para quem postou o vídeo uma parte da grana.
Interessante não é??
Então fica a dica, faça vídeos e coloque no Youtube, quem sabe não rola uma grana??
O que eu mais achei interessante é que o meu vídeo mais rápido e descomprometido é o que mais tem acessos.
Vai entender!!
Programação de Jogos em Delphi
2 de Janeiro de 2011, 0:00 - sem comentários aindaOla!
Segue abaixo tutoriais e projetos que ensinam o básico da programação de jogos utilizando Delphi, eles foram escritos em 2005 para um site antigo e desconhecido que eu tinha feito, agora foi reestruturado para o blog, mas o texto do post, a partir daqui é o mesmo que de 2005.
VERSÃO DELPHI - Todos os exemplos/tutoriais encontrados neste página foram criados/compilados no Delphi 5.0, existentes grandes possibilidades deles poderem ser compilados desde a versão 3.0 até a 7.0.
Todos os tutoriais são em arquivos dpr/pas/dfm do Delphi, na realidade nada mais são que projeto mesmo, abra eles no Delphi e lá tem todo o código já testado no delphi 5.0 tem nele uma grande série de explicações (comentários) sobre o que foi feito. Tente reproduzir os exemplos, só que no caso vc programando/digitando.
No leiame.txt de cada tutorial tem sempre uma ou duas sugestões de exercicio extras que podem ser desenvolvidos pelo cara que está aprendendo.
A esquerda você encontra o tutorial que ensina a criar um jogo tipo 1942 (Plane Shooter) que sai atirando e matando os outros. Abaixo tem uma descrição mais detalhada sobre o que cada exemplo ensina.
LEGENDA:
(*) = Exemplos que usam só delphi.
(%) = Exemplos que nescessitam de DelphiX / DirectX
(&) = Exemplos que utilizam somente o conponente de Timer do DelphiX
Nota1: Que não necessitam de directx pra rodar, mas precisam do referido componente para serem compilados. Este timer é utilizado pois é otimizado, então gera mais rapidamente o loop do programa. Mas como falei não precisa de directX pra rodar.
Nota2: Se você estiver criando uma aplicação de uso exclusivo no windows XP pode utilizar ele normalmente pois o XP otimiza suas funções que dá uma velocidade muito boa para o game. (Teoricamente! XP)
Nota3: Você pode pegar o DelphiX no site: http://www.yks.ne.jp/~hori/DelphiX-e.html
Exemplos de Avião (Shooter) – Iniciação a Programação de jogos em Delphi
1 – AVIAO1 – INTRODUÇÃO 1 (*)
Primeiro contato com a programação de jogos em Delphi, explica uma introdução a propriedade TCanvas, comenta sobre colisão, movimentação do personagem, e do inimigo. Maiores informações baixe o arquivo e leia o leiame.txt.
Relação de tópicos abordados:
1. Movimentação do Personagem
2. Colisão entre personagens
3. Projeteis (Tiro)
4. Movimentação Básica de inimigos.
5. Introdução a classe Tcanvas.
2 – AVIAO2 – INTRODUÇÃO 2 (*) (Continuação de Introdução 1)
Este exemplo, praticamente só termina o anterior, neste são tratadas as condições para ganhar ou perder o game, ele apresenta algumas outras situações, como:
Relação de tópicos abordados:
1. Mais funções relacionadas a Tcanvas (pintura do fundo da tela)
2. Apresenta uma procedure criada pelo programador, que neste caso carrega as imagens.
3. Procedure para calcular os retangulos de colisão.
4. Personagem morre quando encosta no inimigo
5. Personagem vence quando chega a 100 pontos.
2 – AVIAO3 – INTRODUÇÃO 3 (*) (Continuação de Introdução 2)
Neste projeto foi incluído um sistema para gerenciar vários inimigos, apesar de todos terem o mesmo movimento, tem cálculos de colisão diferentes. Além disso ele apresenta funções para trocar a resolução de tela do windows, que faz o jogo parecer mais profissional (e fica muito mais legal), e ainda resolve o problema comentado antes que era o fato do “flicker” ou seja a tela piscando, para resolver isso é usada a famosa técnica chamada “double buffer”
Relação de tópicos abordados:
1. Adicionado um campo especifico para armazenar os retângulos de colisão
2. Cria um array de diversos inimigos
3. Explica como fazer “double buffer”.
4. Explica como iniciar automaticamente o jogo, não precisa mais apertar o botão.
5. Apresenta uma técnica (que não é de programação mas sim de gráficos) para diminuir o tamanho do seu game.
É altamante recomendável que seja lido o leiame.txt, pois ele explica a teoria dos tópicos abordados neste exemplo.
Sinceros agradecimentos pelas 15 mil visitas!
Desejo a todos um ótimo 2011!!
Executando tarefas em segundo plano usando PHP (Background Tasks – Threads)
20 de Dezembro de 2010, 0:00 - sem comentários aindaOla!
Hoje vamos falar um pouco sobre threads, segundo o Google Translate http://translate.google.com.br/translate_t?hl=&ie=UTF-8&text=thread&sl=en&tl=pt# threads são fios, no caso, múltiplos fios que passam para formar um feixe, esse feixe seria nosso programa, enquanto cada fio (thread) seria uma tarefa. Todas as tarefas trabalhando simultaneamente, resultando em nossa aplicação.
Muitos se perguntam se é possível a utilização de threads em PHP.
De forma nativa o PHP não suporta threads, mas existem alternativas bem simples que simulam múltiplas tarefas.
Nosso objetivo nesse material é executar tarefas em segundo plano, de forma que o usuário não precise aguardar um processamento demorado.
Temos um caso real onde foi implementada essa funcionalidade, ao gerar um recibo de empréstimo do sistema Gnuteca 3, existe a opção de enviar o recibo por email (além da impressão no balcão), mas normalmente o envio de email é uma tarefa demorada (ao menos neste caso), então agendamos o seu envio para o próximo momento, para segundo plano, ele será executado na sequência, mas o operador não precisará aguardar o seu envio, dessa forma agilizamos muito o processo de circulação de material.
Abaixo, segue uma implementação simples, de uma tarefa em segundo plano, porém funcional.
PrimeiroPlano.php
<?php echo "Operação em primeiro plano</br>"; exe c( "php segundoPlano.php > /tmp/segundoPlanoIndex.txt &"); ?>
A mágica consiste em mandarmos o resultado para o /tmp ( que pode ser outro caminho ) e adicionarmos o & (e comercial), isto faz que o php não fique aguardando o resultado do script.
Facilmente poderemos ler o arquivo no tmp para verificar se a tarefa foi executada corretamente, caso não, podemos executá-la novamente.
Para compatibilidade windows e linux, no site do php é recomenda a seguinte forma:
function execInBackground($cmd) { if (substr(php_uname(), 0, 7) == "Windows") { pclos e(pope n("start /B ". $cmd, "r")); } else { exe c($cmd . " > /dev/null &"); } }
Então em segundo plano, executamos nossas tarefas demoradas . No caso abaixo um exemplo simples com um for demorado.
Aqui se encontra o script que será executado em segundo plano:
segundoPlano.php
<?php echo "tarefas em segundo plano\n"; for ($i=0; $i <50; $i++) { echo "operação $i\n"; sleep(1); } ?>
Com isso já podemos executar nossas tarefas em segundo plano, possibilitando assim uma grande velocidade em nossas aplicações web.
Este material está longe de cobrir todos os casos ou possibilidades, mas é um inicio para quem quer estudar execução de tarefas em segundo plano em php.
Isto, em conjunto com a tecnologias ajax pode possibilitar grandes funcionalidades e recursos para resolução de tarefas complexas, mas ainda assim não é threads, e isso é fato.
Entendendo AJAX
16 de Dezembro de 2010, 0:00 - sem comentários aindaBoa noite, me chamo Guilherme Soares Soldateli , sou conhecido de longa data do Eduardo Trialforce Bonfandini, atualmente somos colegas de trabalho também.
Uma das coisas que mais me chama atenção no desenvolvimento web é a interatividade, onde AJAX é simplesmente um requisito !
Comecei a estudar a pouco tempo mesmo esta tecnologia, no entanto a minha falta de conhecimento sobre o assunto me permitiu criar um passo a passo direto de como implementar AJAX com PHP.
Este artigo está direcionado para quem sabe por cima o que o AJAX deve fazer, caso não tenha uma noção mínima desenvolvida, atente a este artigo da wikipédia : http://pt.wikipedia.org/wiki/AJAX_%28programa%C3%A7%C3%A3o%2
Notas iniciais sobre os conceitos do AJAX que são descritos nos poucos artigos que pesquisei sobre :
- O Ajax significa Asynchronous Javascript And XML , ou seja , serve para ter uma conversa utilizando Javascript e XML com o servidor sem precisar dar refresh ou coisa do gênero no browser.
- Que apesar de ter o nome dizendo que é utilizado XML para esta conversação com o servidor, não é obrigatório que se lide diretamente com este formato de dados.
- Que existem três passos na conversação com o servidor :
- Enviar uma requisição para o servidor.
- Ter um script no servidor que lê esta requisição e gera uma resposta.
- Ter uma função em javascript na página que enviou a requisição, para tratar como vai ser mostrada na tela a informação retornada pelo servidor [esta função é chamada assim que for identificado que o servidor entendeu direitinho o que lhe foi pedido].
Mãos a obra !
Para mostrar como é que esse bicho funciona, vou mostrar um exemplo que consiste em uma página em que tem um campo, e quando este campo for submetido ao servidor , o mesmo irá retornar [utilizando Ajax] o que foi digitado.
Tenho o exemplo pronto em anexo ao post, basta descompactá-lo em seu diretório configurado no virtual host.
São três arquivos :
- index.html : É a página html que vai ter a estrutura visual do exemplo.
- script.js : É o script que vai ser importado no index.html para dar a este a capacidade de lidar conversas/requisições assíncronas com o servidor.
- script_que_vai_tratar_requisicao_ajax.php : É o script PHP que vai receber o pedido enviado por javascript, processá-lo e retornar o que foi processado.
Fluxograma exemplficando a comunicação :
No mais até este ponto foi onde eu tive maior dificuldade de entender o funcionamento básico do AJAX, e onde espero ter ajudado vocês a entender o “pulo do gato” para captar o conceito.
Irei realizar uma breve explicação das estruturas de cada um dos arquivos do exemplo, para que vocês possam entender da onde a requisição começa e até onde termina :
O trabalho do Browser
Envio Requisição
1. No index.html existe um formulário chamado form1 e um campo chamado departamento.
NOTA : No index.html foi importado o arquivo script.js que vai servir como a “cabeça” da aplicação, que pensa em uma pergunta, então a manda para o servidor , e fica em espera até ter uma resposta dele.
2. Ainda no index.html , ao ser submetido o form1, a função enviar_form(this) é chamada.
3. A função enviar_form(this) é responsável por instanciar um objeto XMLHttpRequest [Objeto padrão para tratar requisições AJAX , vide código que está bem documentado para entendimento fácil], e enviar para o servidor a requisição, que no caso é o conteúdo do campo departamento.
O trabalho do servidor
Recebimento da requisição feita pelo Browser
1. O script script_que_vai_tratar_requisicao_ajax.php trata a requisição vinda do browser e da um echo com o resultado da mesma. É importante frisar, que ao script terminar de ser executado com sucesso o mesmo diz assim “Ô XMLHttpRequest que está no script.js, recebi o teu pedido e ta ai a resposta certinha, toma ela ai !”.
O trabalho do Browser
Recebimento do resultado da requisição feita.
1. O XMLHttpRequest que está no script.js vai escutar o que script_que_vai_tratar_requisicao_ajax.php respondeu e vai pegar a resposta e passá-la para a função mensagem.
2. A função mensagem altera o conteúdo interno da span chamada mensagem que está localizada no index.html.
Voilá ! Dei-lhes o caminho das pedras, utilizem o artigo escrito como um “mapa” dos arquivos em anexo, vale lembrar que deixei estes bem comentados, para que possam entender da lógica bruta do AJAX com maior facilidade.
Aqui está o link com os arquivos de exemplo compactados : Exemplo Ajax.
Até a próxima e bons estudos !
Portal brasileiro sobre OGimp atualizado
4 de Dezembro de 2010, 0:00 - sem comentários aindaOla pessoal!
Portal brasileiro sobre gimp chamado OGimp foi atualizado, na verdade o sistema CMS foi trocado para Joomla e o layout foi refeito e ficou muito bom!!!
O portal também foi reestruturado, toda a equipe de colunistas foi refeita, incluindo EU!!! Que postarei conteúdo mensal sobre Gimp no portal e no blog.
O portal tem muitos tutoriais já prontos e disponíveis, sem dúvida alguma vale a pena dar uma “folhada” no seu conteúdo.
Fica a dica