sexta-feira, 19 de dezembro de 2008

Descobrindo a concorrência do Concurso SECAD TO 2008 Parte 2

Descobri dentro de um grupo de discussão aqui do Tocantins, Os Informáticos do Tocantins, que alguem(Paulo Rafael) tinha descoberto de outra maneira a concorrência do concurso SECAD TO 2008. Então aqui a baixo está o arquivo, e em seguida como ele fez para descobrir:

Veja a concorrência do concurso SECAD TO 2008 para Palmas, depois coloco para outras regiões também.

Explicação do Paulo Rafael

"Muita gente está perguntando como foi que eu fiz para saber essa concorrência, para não haver dúvida vou explicar melhor:
Primeiramente eu peguei o PDF com mais de 2000 página e converti para excel através de um programa chamado "Able2ExtractPro", como o excel só tem 65536 linha, ele converteu até o seu limite e continuou o restante na plan2, depois eu peguei esse dados e passei para um banco de dado do "Microsoft Access", fiz todos os tratamentos, tirei espaços e tal.
Quando o banco já estava todo normalizado eu fiz uma consulta em SQL:
SELECT Count(INSCRICOES_DEFERIDAS.INSCRICAO) AS QTD_INSCRICAO, INSCRICOES_DEFERIDAS.NUM_CARGO, INSCRICOES_DEFERIDAS.CARGO, INSCRICOES_DEFERIDAS.CIDADE_VAGA FROM INSCRICOES_DEFERIDAS
GROUP BY INSCRICOES_DEFERIDAS.NUM_CARGO, INSCRICOES_DEFERIDAS.CARGO, INSCRICOES_DEFERIDAS.CIDADE_VAGA;

Essa consulta conta todos os inscritos, agrupando por cargo e cidade. Depois eu peguei no edital de publicação a quantidade de vagas, para cada cardo de determinada cidade, fiz a mesma coisa, converti para excel, juntei os dois e fiz a divisão do quantitativos de inscritos pelas vagas dibolibilizadas."

terça-feira, 9 de dezembro de 2008

grep e pdftotxt "Tentam" descobrir a concorrencia do Concurso SECAD TO 2008

OAnexo I do Concurso Público para Provimento de Cargos do Quadro Geral de Servidores do Poder Executivo do Estado de Tocantins - 2008, que esta no site da Unitins, contém a relaçao de todos os inscritos deste concurso e suas respectivas vagas e código da vaga. Mas esqueceram de colocar uma relação com a concorrencia (candidatos / vaga).
Contar cargo por cargo em mais de 2100 paginas é um trabalho pra doido.
Para facititar esta tarefa temos duas ferramentas que podem ajudar muito.
Uma é pdftotext, que converte um arquivo de extencao PDF para texto puro, faça assim:
pdftotext arquivo.pdf arquivo.txt
Para nosso caso podemos utilizar assim
pdftotext [63364420737614750]anexoI.pdf anexoI.txt
Agora com o comando grep tem a capacidade de buscar e contar a ocorrencia de "palavras" dentro de arquivos de texto puro. Por exemplo vamos verificar a ocorrencia do cargo Analista em Tecnologia da Informação, dentro do arquivo anexoI.txt desta maneira
grep --count "Analista em Tecnologia da Informação"
anexoI.txt
E a resposta foi 464, ou seja, 464/107(vagas) aproximadamente 4 candidatos por vaga...
Ops! Hei, mas tem vaga para Analista em Tecnologia da Informação em vários outros Municipios!
Essa foi apenas uma tentativa de data mining frustada... mas pelo menos pode-se descobrir a quantidade de inscritos por cargo.
O problema está na conversão que o pdftotext faz, pois os dados estão tabulados (em tabelas), quando o pdftotext pega o texto de uma tabela ele passa primeiro na primeira coluna e depois vai para a próxima coluna. Se a primeira coluna tem nomes, os nomes são colocados um do lado do outro na mesma linha.
Observação: os comandos grep e pdftotext estão disponíves para GNU/Linux, recomendo o livro Comandos do Linux da Novatec

domingo, 5 de outubro de 2008

Bacharel em Ciência da Computação

Gostaria de compartilhar com todos meus amigos e familiares mais uma vitória. A partir do dia 30 de Setembro de 2008, com muito orgulho me tornei Bacharel em Ciência da Computação pela Universidade Federal do Tocantins. Agradeço a Deus por me dar capacidade intelectual, saúde e coragem para enfrentar este desafio, agradeço minha querida esposa que sempre me incentivou e nunca me deixou desistir dos meus sonhos, e também agradeço meus pais, familiares e amigos que me apoiram e criticaram quando foi preciso.
Na vida sempre precisamos acreditar no nosso potencial, e nunca desistir dos sonhos, pois os vitoriosos batalham todos os dias.

quinta-feira, 11 de setembro de 2008

Reserve o seu: Google Chrome para Linux


Depois do Google Desktop para GNU/Linux, agora estou esperando a versão do novo browser do Google para GNU/Linux, o Chrome.
Para receber a noticia do lançamento acesse o site do Chrome utilizando algum sistema GNU/Linux, pode ser o Ubuntu. Lá tem uma mensagem dizendo: Google Chrome (BETA) para Windows e um botão azul Saiba mais, clique no botão.

Agora o negócio é esperar, mas se tiver pressa, então acesse o Google Code do Chrome e participe do desenvolvimento. Veja este Wiki do projeto e descubra como contribuir.

sábado, 30 de agosto de 2008

SECOP 2008 em Palmas é Sucesso



Para quem não sabe o SECOP quer dizer Seminário de Coordenação em Processamento de Dados, que é promovido pela ABEP. Este evento é voltado para área de gestão de TI - Tecnologia da Informação no setor público, e patrocinado pelo governo por empresas privadas interessadas neste setor (BrasilTelecom, Politec, IBM, Microsoft, e cia).

Neste evento tiveram várias palestras interessantes voltadas para área de TI, as mais interessantes que vi foram:
Gilberto Dimenstein - A Sociedade do Conhecimento, foi muito irreverente, no final mostrou um projeto que envolve comunidade, governo, escola e informática.
Cláudio Muniz Machado Cavalcanti - sobre o portal de softwarepublico.gov.br
José Zunga Alves de Lima - Oficinas Digitais nas escolas, implantadas e mantidas totalmente pela BrasilTelecom

Além de outras palestras comerciais feitas pelas empresas patrocinadoras e pelos orgãos participantes do evento.

Houve também algumas Oficinas, e a que me chamou a atenção foi do Hiraclis Nicolaidis Junior, Diretor de Tecnologia da Politec, que soube vender o peixe com o tema: Tudo o que você gostaria de saber sobre Fábrica de Software e não teve oportunidade de perguntar!

O que chamou a atenção de todos desde o começo do seminário foi o "Bobo da Corte", que vivia em cima deste brinquedo (Skyrunner, Flyjumper):


Algumas pessoas sairam bem assustadas com este cara. Olha ele esperando na saída do auditório!

Sem contar com a frase:
Que bom que você veio !!!

No geral os resultados deste seminário foram muito positivos para o Tocantins, que mostrou ter capacidade de sobra para organizar eventos deste porte, com 82% de aprovação dos participantes.

quinta-feira, 21 de agosto de 2008

Ubuntu 8.04 em NoteBook CCE W93

Um colega apareceu no serviço com o NoteBook CCE W93 com WindowsXP instalado, para instalar ele mudou a opção C3 para Enabled no Boot(F2 para acessar na inicialização) do NoteBook CCE W93, depois de tantas brincadeiras com a sigla CCE (Concerta Concerta Estraga, Começou Comprando Errado,...), no NoteBook CCE W93 foi desabilitando o ACPI pelo uso da linha de comando acpi=off noapic nolapic no boot do CD de instalação do Ubuntu 8.04, ou clique em F6 e marque as opções acpi=off, noapic e nolapic, então quase conguimos instalar o Ubuntu 8.04


Eu disse quase, pois não passava da tela de carregamento do Ubuntu...
Então como conseguimos esta façanha?

Graças ao VMWare Server!

Instalamos o VMWare Server dentro do WindowsXP. E dentro do VMWare Server instalamos o Ubuntu 8.04, aparentemente foi a unica forma de resolver este problema.

Acredito que o problema seja alguma incompatibilidade entre hardware do CCE W93 e os drivers do Ubuntu.

segunda-feira, 11 de agosto de 2008

Monografia: Ambiente Expresso para Processamento Distribuído com Matlab

Está é minha Monografia que estou disponibilizando, já faz alguns dias que apresentei. Acredito que este deve ser o bicho mitológico de todo universitário.
Fiquem tranqüilos, pois defender um TCC (monografia) não é nada comparado com desenvolver toda uma pesquisa que pode levar dias e com poucas horas de sono. E ainda ter que trabalhar no outro dia. Essa foi minha rotina que durou quase um ano, pois haviam muitas correções, e no primeiro semestre não consegui defender devido a muitas correções de ultima hora...continua.

O conteúdo abrange Processamento Distribuído com Matlab e GNU/Linux. Neste trabalho descrevo como construir um Cluster, de um jeito mais rápido que o convencional, em qualquer laboratório de informática sem precisar gastar tempo instalando Sistemas Operacionais e configurando ferramentas, tudo isto visando facilitar a vida de pesquisadores que precisam paralelizar algoritmos com a ferramenta Matlab com GNU/Linux.

Veja minha monografia online:
AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

quarta-feira, 25 de junho de 2008

Promoção BR-Linux: concorra a um Eee PC!

Quem quiser participar, precisa correr, pois as inscrições terminam 25-07-2008, as 23h59min, veja mais detalhes no site da promoção.

Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!
…e também a pen drives, card drives, camisetas geeks, livros e mais! O BR-Linux e o Efetividade lançaram uma campanha para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e participe - quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!

sexta-feira, 13 de junho de 2008

Segurança de Redes: PenTest

Este material é uma compilação de links que salvei durante a matéria de Segurança de Redes. A maioria dos sites estão em inglês (nada que o tradutor do google não resolva), o que importa é o valor da informação.

A matéria de Segurança de Redes, não está estacionada apenas no uso de ferramentas de Pen Test (Teste de Penetração), mas engloba outros conceitos:
- Segurança física: quem pode ter acesso ao hardware da rede
- Normas de uso da rede: obrigações e direitos dos usuários da rede
- Normas para escuta (Sniffer) da rede: "quem pode" e "o que pode" ser filtrado dentro da rede
- Controle de trafego de informações na rede (SNORT, ettercap)
- Testes de engenharia social

Penso que estes são itens básicos para manter a segurança de uma rede.
Outra preocupação relacionada são as redes sem fio (Wireless), tornaram alvos faceis de ataques devido seu modo de acesso, falta de preocupação de quem adquire e por imperícia ao manter configurações de fabrica. No ultimo link encontra-se um pequeno artigo mostrando como é fácil obter acesso de redes Wireless com criptografia WEP.

Recomendo o uso do BackTrack como ferramenta de PenTest, pois é uma distribuição Linux em Live CD (boot via Pendrive também) muito completa em para testes de penetração que pode ser utilizada sem a necessidade de instalação.

Conceitos sobre PenTest
Wikipedia: Penetration Test
CenturyComputing: Penetration Test

10 Melhores Live CDs para PenTest
darknet.org.uk

BackTrack

Site Official BackTrack

nUbuntu (pode estar indisponível)
www.nubuntu.org
Wikipedia: nUbuntu

Ferramentas para Pen Test
ForInsect: pentest-tools
VulnerabilityAssessment

Capturar pacotes na rede
ettercap

Visualizar pacotes capturados na rede

etherape

Usando NMAP
penguim.wordpress.com

SNORT e Ubuntu
planeta.ubuntubrasil.org

Comunidade Snort-BR
snort.org.br

Lista: Live CD
Live CD List

ISECOM - Manual Livre de Metodologia para Teste de Segurança
OSSTMM: Open Source Security Testing Methodology Manual

Blog - Ethical Hacking and Penetration Testing
Infosecinstitute

Wireless - Quebrando chave de segurança 128 bits WEP em 3 minutos
SmallNetBuilder

Aviso: não sugiro ou recomendo a invasão de redes particulares sem a previa permissão dos detentores destas redes. Caso obtenha acesso a alguma rede sem fio alerte os responsáveis sobre os riscos.

domingo, 8 de junho de 2008

OpenSolaris: O que o Ubuntu quer ser quando crescer

"OpenSolaris: O que o Ubuntu quer ser quando crescer" é o que diz este artigo abaixo, como o Ubuntu já vem suprindo minhas necessidades como Sistema Operacional, então vou testar este que estão dizendo ser melhor que o Ubuntu.
Solicite um CD gratuitamente do OpenSolaris(clique em Get Free Media) e faça o teste, eu já pedi o meu, mas a previsão de entrega é um pouco longa: 2 semanas para América Latina. Também é possível fazer o download da iso do OpenSolaris.

OpenSolaris: What Ubuntu wants to be when it grows up by ZDNet's Jason Perlow -- What would Ubuntu be like if it were an OS for grown-ups? This week at its CommunityOne event in San Francisco, Sun will release its May 2008 build of OpenSolaris (2008.05) the Open Source operating system based on the source code of the Solaris 10 enterprise UNIX OS, the first to be designated with “Production” support [...]


Quando o CD chegar vamos ver do que o OpenSolaris é capaz. Continua...

quinta-feira, 5 de junho de 2008

PingView facilita a visualização dos resultados do ping

Este é um dos meus projetos, que estou disponibilizado no Google Code, e logo estarei atualizando a documentaçãodo PingView

O PingView trata-se de um visualizador de resultados gerados pelo comando ping em um mapa, que auxilia verificação de sistemas conectados. Deste modo é possível verificar visualmente a posição anexa do status de um endereço IP dentro de uma rede.

Para instalar o PingView é muito simples, inicialmente será necessário ter previamente instalado o servidor de páginas web Apache configurado com PHP (recomendo o XAMPP), em seguida faça o donwload do PingView, descompacte o conteúdo dentro da pasta htdocs onde o Apache foi instalado, e acesse pelo browser o PingView, se mantiver o nome original da pasta, utilize http://localhost/pingview para acessar.

Se você estiver conectado na internet esta imagem irá aparecer, mas antes de mostrar o resultado teremos o ícone em cada ponto como previa:


Observe o que acontece quando se passa o mouse por cima de cada ícone:


Neste exemplo utilizei IP dos sites do Google pelo mundo:
Brasil [www.google.com.br]
Colômbia [www.google.com.co]
Venezuela [www.google.co.ve]
Bolívia [www.google.com.bo]
Peru [www.google.com.pe]
Uruguai [www.google.com.uy]
Paraguai [www.google.com.py]
Chile [www.google.com.cl]
Argentina [www.google.com.ar]

Na referência do Brasil utilizei o IP 209.85.193.104, pois o comando ping pode ser tanto utilizado para nomes como IP.

No PingView cada icone identifica o status do IP, um exemplo clássico é a perda de pacotes que é um meio termo entre online e offline


A posição do ícone que representa o IP pode ser definida conforme sua escolha, alterando os valores no plano cartesiano. Veja o arquivo list_ip.php que acompanha o PingView, nele contém um array com Nome referente ao IP, IP ou nome, posição X e posição Y da figura.

Exemplo:

array(
'Brasil'=>array('209.85.193.104','520','280'),
'Argentina'=>array('www.google.com.ar','400','450')
);


Como achar as posições X e Y em uma imagem?
Utilize um editor de imagem, no Linux use Gimp ou Windows o Paint, abra a imagem e passe o mouse, na figura abaixo podemos ver as coordenadas:

O ponto vermelho equivale a aquela posição, mas lembre que não poderá alterar o tamanho da imagem(mapa) depois de verificar este ponto.

Dicas:
1- No arquivo index.php procure pelas variáveis $X e $Y, e coloque o tamanho da imagem que será o mapa: Se a imagem tiver 800x600 pixels defina $X=800; e $Y=600;
2- Ainda no arquivo index.php altere o valor da variável $tempo, caso queira aumentar o tempo de atualização dos testes de ping.
3- Por padrão o Sistema Operacional desta aplicação é o Linux, mas é possível alterar para Windows, abra o arquivo teste.php que está na pasta pingview e altere o valor da variável $SO assim: de $SO='lin'; para $SO='win';
4- O PingView dispara o total de 10 ping, no arquivo teste.php defina um novo valor para variável $numping;
5- Para o criar um mapa utilize uma imagem na extensão PNG, e altere o nome dela para mapa.png na pasta pingview->image
Visualizador de resultados gerados pelo comando ping em um mapa, que auxilia verificação de sistemas conectados. Deste modo é possível verificar visualmente a posição anexa do status de um endereço IP dentro de uma rede.

Para instalar o PingView é muito simples, inicialmente será necessário ter previamente instalado o servidor de páginas web Apache configurado com PHP (recomendo o XAMPP), em seguida faça o donwload do PingView, descompacte o conteúdo dentro da pasta htdocs onde o Apache foi instalado, e acesse pelo browser o PingView, se mantiver o nome original da pasta, utilize http://localhost/pingview para acessar.

Se você estiver conectado na internet a imagem que irá aparecer é semelhante a esta:


Observe o que acontece quando se passa o mouse por cima de cada ícone:


Neste exemplo utilizei IP dos sites do Google pelo mundo conforme este mapa:
Brasil www.google.com.br
Colombia www.google.com.co
Venezuela www.google.co.ve
Bolívia www.google.com.bo
Perú www.google.com.pe
Uruguai www.google.com.uy
Paraguai www.google.com.py
Chile www.google.com.cl
Argentina www.google.com.ar

Na referência do Brasil utilizei o IP 209.85.193.104, pois o comando ping pode ser tanto utilizado para nomes como IP.

No PingView cada icone identifica o status do IP, um exemplo clássico é a perda de pacotes que é um meio termo entre online e offline


A posição do ícone que representa o IP pode ser definida conforme sua escolha, alterando os valores no plano cartesiano. Veja o arquivo list_ip.php que acompanha o PingView, nele contém um array com Nome referente ao IP, IP ou nome, posição X e posição Y da figura.

Exemplo:
array(
'Brasil'=>array('209.85.193.104','520','280'),
'Argentina'=>array('www.google.com.ar','400','450')
);

Como achar as posições X e Y em uma imagem?
Utilize um editor de imagem, no Linux use Gimp ou Windows o Paint, abra a imagem e passe o mouse, na figura abaixo podemos ver as coordenadas:

O ponto vermelho equivale a aquela posição, mas lembre-se de não alterar o tamanho da imagem(mapa) depois de verificar este ponto.

Dicas:
1- No arquivo index.php procure pelas variáveis $X e $Y, e coloque o tamanho da imagem que será o mapa: Se a imagem tiver 800x600 pixels defina $X=800; e $Y=600;
2- Ainda no arquivo index.php altere o valor da variável $tempo, caso queira aumentar o tempo de atualização dos testes de ping.
3- Por padrão o Sistema Operacional desta aplicação é o Linux, mas é possível alterar para Windows, abra o arquivo teste.php que está na pasta pingview e altere o valor da variável $SO assim: de $SO='lin'; para $SO='win';
4- O PingView dispara o total de 10 ping, para alterar este valor teste.php

sexta-feira, 16 de maio de 2008

Como criar um pacote de instalação deb (Ubuntu)

Os arquivos de extensão DEB, são pacotes de instalação de programas para sistemas operacionais derivados do Debian, como o Ubuntu.
Lembrando que é possível gerar um pacote de instalação e incluir as dependências de bibliotecas necessárias, ou seja, gerar um pacote com apenas o programa executável e na hora de instalar em outro computador a instalação irá incluir o download e instalação destas bibliotecas.

Para iniciar o processo, precisamos de um software para instalar, então escolhi o jogo DR Quebra- Cabeça do meu amigo DiogoRBG.

A estrutura inicial da distribuição do jogo não está tão organizada(executável windows com linux), mas vou pegar somente o que será utilizado:

Conforme a figura acima, temos:
1 - Arquivos auxiliares, imagens e outros para que o jogo funcione;
2 - Binário, executável ou o próprio jogo compilado;
3 - Licença de uso ou algum aviso;

Esta ordem acima não é muito importante para criar o pacote de instalação DEB, mas a próxima seqüencia deve ser feita.

Crie uma pasta principal(exemplo: /drquebracabeca), e crie dentro dela uma pasta com o nome DEBIAN, isso mesmo tudo maiúsculo, crie também uma seqüencia de diretórios onde o programa será instalado (exemplo: /usr/lib/drquebracabeca)

Observe que na figura coloquei algumas pastas e arquivos extras, mas vou explicar como fiz tudo. Acredito que a forma como criei este pacote pode esclarecer algumas questões.

Na pasta DEBIAN coloque um arquivo com o nome control, o conteúdo deste arquivo contém as descrições e parâmetros necessários para construir o pacote de instalação. Verifique o que coloquei no control:

Package:drquebracabeca
Priority: optional
Version:0.1.1
Architecture:i386
Maintainer: Diogo RBG
Section: misc
Installed-Size: 720
Depends: libsdl1.2debian(>=1.2), libsdl-gfx1.2-4(>=1.2-4),
libsdl-image1.2(>= 1.2), libjpeg62, libpng12-0(>= 1.2-0),
zlib1g
Description: DR Quebra-Cabeça
No DR Quebra-Cabeça você tem a liberdade de montar um quebra
cabeça como quiser!
Não existem posições determinadas para cada peça, você só
precisa juntar uma à outra e pronto!

Pacote DEB criado por http://renedet.blogspot.com

Alguns parâmetros importantes:
Package é o nome do programa, procure manter o mesmo, pois quando mudar a versão a mais nova substituí a antiga;
Version é a versão do programa, mude sempre que lançar uma nova versão;
Architecture é a arquitetura do processador que o programa foi desenvolvido;
Maintainer o desenvolvedor que criou e distribuí o programa;
Installed-Size tamanho do programa (em Kb) depois que ele for instalado;
Depends são todas as dependências e bibliotecas necessárias para que o programa funcione;
Description é a descrição sobre o software, para que serve e outras informações uteis para quem vai instalar o programa;

O comando básico para gerar o pacote de instalação chama-se
dpkg-deb, utilize da seguinte forma:
dpkg-deb -b pastadopacote/ nomedopacote.deb


Exemplo:
dpkg-deb -b drquebracabeca/ drquebracabeca.deb


Extras:
Dentro da pasta usr coloquei mais duas pastas: bin e share
A pasta bin contém um script bash chamado drquebracabeca.sh, que será o nosso executável, e ele contém os comandos:

#!/bin/bash
cd /usr/lib/drquebracabeca/
./drquebracabeca
Fiz este script shell, pois na pasta da instalação do jogo /usr/lib/drquebracabeca contém uma pasta de recursos para o jogo funcionar, como as imagens do jogo.

Em share temos a pasta applications, que contém o arquivo drquebracabeca.desktop que descreve o botão para iniciar o jogo em Aplicações->Jogos->DR Quebra Cabeça, o conteúdo deste arquivo:

[Desktop Entry]
Comment=DR Quebra Cabeça
Name=DR Quebra Cabeça
Exec=/usr/bin/drquebracabeca.sh
Icon[pt_BR]=/usr/lib/drquebracabeca/arquivos/icone.ico
Encoding=UTF-8
Terminal=false
Name[pt_BR]=DR Quebra Cabeça
Comment[pt_BR]=DR Quebra Cabeça
Type=Application
Icon=/usr/lib/drquebracabeca/arquivos/icone.ico
Categories=Game;


As opções importantes para este atalho:
Exec é o comando para executar o jogo;
Categories coloque Game se for um jogo, e já estará no item Jogos de Aplicações;

Instalador DR Quebra Cabeça Ubuntu

Links adicionais de como criar um pacote deb:
http://diegohs25.blogspot.com
http://www.vivaolinux.com.br
http://synthesize.us

sexta-feira, 9 de maio de 2008

CakePHP 1.2 Scaffolding em Português

Scaffolding é uma estrutura provisória para auxiliar na construção de algum sistema, no caso do CakePHP ele funciona gerando listas e formulários que permitem inserção, atualização e exclusão de dados.
Como por padrão o CakePHP 1.2 tem o scaffold e inglês, fiz algo bem simples, e que pode ajudar quem está começando a utilizar este framework, traduzi o scaffold no braço, aqui estão os Arquivos, apenas descompacte e coloque os arquivos no diretório cake->libs->view da sua aplicação, conforme a figura abaixo:


Para remover a visualização dos resultados da query, alterei o arquivo dbo_source.php (comentei linhas 389 até 401) que está em cake->libs->model->datasources.
O cabeçalho padrão fica no arquivo default.ctp em cake->libs->view->layouts.
Veja os resultados abaixo.

Antes:


Depois:

Onde fica a página inicial?
Por padrão encontrei home.ctp em app->views->pages

Estou fugindo um pouco da forma padronizada, que é orientada nos tutoriais para CakePHP, mas ao verificar o conteúdo dos arquivos edit.ctp, index.ctp e view.ctp será possível entender um pouco como o scaffold funciona internamente.

Um bom tutorial de scaffold está em:
http://grahambird.co.uk/cake/tutorials/scaffolding.php

terça-feira, 25 de março de 2008

Como Apagar "Todos" Arquivos, com as Extensões Desejadas, no Windows XP

Isso pode parecer uma tarefa fácil...é só localizar todos os arquivos (na extensão desejada) com a ferramenta de busca depois Ctrl+A para selecionar tudo e Shift+Del e Sim. Pronto resolvido!

Mas vamos fazer isso de uma maneira diferente. Procurar não tem sentido se já sabemos o que vamos fazer com o arquivo, então os próximos passos são para aqueles que estão interessados em aprender algo novo, nem tão 'novo' assim.

Para este processo vamos utilizar alguns comandos básicos do DOS, que podem ser testados da seguinte maneira: Com o Desktop visível clique em Iniciar -> Executar -> Digite cmd e aperte Enter. Uma tela preta vai aparecer, agora teste os seguintes comandos para se habituar.

md
criar diretorio (md teste)
cd
para entrar (cd teste) ou sair (cd ..) de um diretório
dir listar arquivos e diretórios
del para apagar arquivos ou diretórios (del teste)
echo imprime um texto (echo oi)

No final deste artigo temos links de sites descrevendo melhor os comandos do DOS.

Aprender a lidar com a linguagem de linha de comando pode ser didático, pois trata-se de uma ferramenta que pode ajudar automatizar alguns processos que tomam tempo para ser executada. Como exclusão ou alteração de nomes de arquivos em varias pastas, com dezenas de Gigabytes de informação. Até Backup (cópia de segurança) pode ser feita de uma maneira mais fácil.

Antes de continuar leia:
Este método que será apresentado pode ser um pouco perigoso, por causa do comando DEL. Não me responsabilizo, e nem sugiro utilizar os comandos aqui descritos para fins maliciosos. Para segurança faça os testes em um ambiente controlado.

Para automatizar o processo, podemos colocar o código abaixo em um arquivo de extensão BAT: "apaga_ext.bat"

@echo off

set arquivos=*.mp3 *.wav

echo Excluindo Arquivos %arquivos%

if exist %arquivos% del /F /S /Q %arquivos%

pause


Este arquivo contém uma seqüencia de comandos que serão executados de cima para baixo.
Observe o que cada comando faz:

@echo off

Não imprime a mensagem padrão na inicialização, executa sem avisar.

set arquivos=*.mp3 *.wav

A função set define o valor da variavel local arquivos, * na frente da extensão .mp3 quer dizer tudo, ou seja, qualquer palavra que vier.

echo Excluindo Arquivos %arquivos%

Imprime o aviso: Excluindo Arquivos *.mp3 *.wav

if exist %arquivos% del /F /S /Q %arquivos%

Se o arquivo na extensão mp3 ou wav existir nas pastas onde o comando foi executado, estes serão apagados sem aviso!

pause

Uma pausa quando tudo terminar :)

Tutoriais Comandos do DOS:
http://www.users.globalnet.co.uk/~jchap/tvdt.htm
http://www.glue.umd.edu/~NSW/ench250/dostutor.htm
http://www.tnd.com/camosun/elex130/dostutor1.html
http://www.google.com.br/search?q=dos+tutorial

segunda-feira, 17 de março de 2008

Jogos e Programação: Classes

Este artigo originou a partir de uma conversa que tive com DiogoRBG, para descobrir como funciona uma luta entre dois personagens, na visão de um programador.

Lembrando que podem existir muitas variações nas fórmulas, isto devido aos parâmetros que serão utilizados.

Podemos começar pela classe Personagem:

class Personagem{
int energia; //energia vital
int força; //pontos de ataque
int defesa; //pontos de defesa
int sorte; //valor que influi no ataque e na defesa

function atacar(Personagem * oponente){
oponente->energia = oponente->energia -
( (this->força * (rand()%this->sorte)) /
(oponente->defesa + (rand()%oponente->sorte)) );
}
}


Exemplo:

Instância dos personagens

Personagem * Guerreiro;
Personagem * Arqueiro;


Definindo os valores das propriedades

Guerreiro->energia = 200;
Guerreiro->força = 150;
Guerreiro->defesa = 130;
Guerreiro->sorte = 10;

Arqueiro->energia = 100;
Arqueiro->força = 100;
Arqueiro->defesa = 50;
Arqueiro->sorte = 80;


Atacar!!!

Guerreiro->atacar(Arqueiro);


Analisando minunciosamente a execução da função atacar, temos:

oponente->energia = oponente->energia -
( (this->força * (rand()%this->sorte)) /
(oponente->defesa + (rand()%oponente->sorte)) );


Que transformou-se em:

Arqueiro->energia = Arqueiro->energia -
( (Guerreiro->força * (rand()%Guerreiro->sorte)) /
(Arqueiro->defesa + (rand()%Arqueiro->sorte)) );


Substituindo os valores:

Arqueiro->energia = 100 - ( (150 * (rand()%10)) /
(50 + (rand()%80)) );


De uma maneira mais prática podemos ter esta visão:

Defesa do Arqueiro com Máxima Sorte, se o valor de retorno (rand()%10) for igual 5 e (rand()%80) for igual 80 temos:

Arqueiro->energia = 100 - ( (150 * 5) / (50 + 80) );
Arqueiro->energia = 100 - ( 750 / 130 );
Arqueiro->energia = 100 - 6; //arredondando 5,7 vai pra 6
Arqueiro->energia = 94;


Defesa do Arqueiro Sem Sorte, se o valor de retorno (rand()%10) for igual 10, (rand()%80) for igual 0 temos:

Arqueiro->energia = 100 - ( (150 * 10) / (50 + 0) );
Arqueiro->energia = 100 - ( 1500 / 50 );
Arqueiro->energia = 100 - 30;
Arqueiro->energia = 70;


Observações:
1) rand() está no cabeçalho stdlib.h, a função retorna um valor randômico entre 0 e 1.
2) A classe Personagem está fora da padronização, onde uma instância altera o valor da outra instância de forma direta.
3) O Arqueiro pode parecer fraco, mas número máximo de pontos de ataque do Guerreiro é 1500 e de defesa 140, já do Arqueiro ataque é 8000 e defesa 130. Verifique mais informações nestaTabela.

Para entender melhor será necessário jogar Final Fantasy Tatics, ou Vandal Hearts ou outro RPG.

segunda-feira, 18 de fevereiro de 2008

Ubuntu sem Mouse

Trabalhar sem Mouse pode parecer uma tarefa difícil...
Mas depois que misteriosamente consumiram com meu Mouse, melhorei minha interação com o computador.






No Ubuntu é fácil, Alt+F1 para acessar o Menu Principal em seguida vá em Sistema -> Preferências -> Acesso Universal -> Acessibilidade do Teclado. Agora marque o campo Ativar acessibilidade do teclado conforme a figura:
























Mova o ponteiro do Mouse com as teclas numéricas: 2 para Baixo, 4 para Esquerda, 6 para Direita e 8 para Cima. 5 equivale ao botão Esquerdo do mouse, e o botão Direito do mouse é acessado por aquele botão [de propriedades] que está próximo ao Ctrl Direito do teclado.

O atalhos do teclado podem ser alterados em Sistema -> Preferências -> Atalhos de Teclado. Trata-se de uma lista completa de comandos e botões para facilitar a vida.

Navegando no Firefox
Nova Aba: Ctrl+T
Alterar entre abas: Ctrl+Tab
Marcar campos e clicar botões: Espaço

Obs: este artigo foi escrito sem mouse no Ubuntu 7.10