Novo TulioFaria.net

Olá pessoal,

o TulioFaria.net está de cara nova… Resolvi secar o site… Ou seja, deixá-lo com menos firulas e realçar o que realmente importa: o conteúdo.

O layout deve ter algumas falhas, mas isso vou corrigindo ao longo do tempo… Se for crítico :D

Essa é a primeira novidade, em breve trarei mais :D

Forte abraço a todos e deixem seus comentários sobre o novo layout!

Comentários (6)

CakePHP 1.2 Final

Olá pessoal,

a comunidade Cake sempre guarda os presentes para o natal… Neste ano liberaram a versão 1.2 Final (ano passado no natal, liberaram a versão 1.2 beta).

Vale a pena conferir no site oficial! Estou planejando novos vídeos e atualizações para os atuais utilizando a nova versão do Cake… Então, aguardem novidades!

Forte abraço a todos!

Comentário (1)

Feliz natal a todos!

Fala pessoal!

Mais um ano chegando ao fim…

Estou aqui para desejar a todos um Feliz Natal!

Em 2009 o blog vai tomar outros rumos, vai voltar finalmente a ativa!

Dia 29/12 agora, irei defender meu projeto final de curso e se tudo ocorrer bem, finalmente me graduarei em Sistemas de Informação… E começarei a postar mais no blog! :D

Um forte abraço a todos!

Comentários (3)

Cortar frase sem cortar palavras

Hoje durante uma conversa com Silicio pelo MSN, ele me perguntou se tinha algo pronto para cortar uma frase. Ou seja, se o texto é muito grande, colocar por exemplo ... no final.

No Cake tem uma função semelhante, mas eu tava com preguiça de olhar. Então segue minha formidável saída de 2min e completamente POG para o problema:

PHP:
  1. $frase = "O rato roeu a roupa do rei de roma";
  2. $p = explode(" ", $frase);
  3. $c = 0;
  4. $t = 12;
  5. $cortada = "";
  6. foreach($p as $p1){
  7. if (($c<$t)&&(($c+strlen($p1))<=$t)){
  8. $cortada.=" ".$p1;
  9. $c+=strlen($p1)+1;
  10. }else{
  11. break;
  12. }
  13. }
  14.  
  15. echo strlen($cortada)."<br />";
  16. echo $cortada."...";

Deve estar cheio de bugs, mas resolve em um emergência...

Até a próxima!

Comentários (7)

Em breve estarei de volta… Em breve…

Olá pessoal,

o TulioFaria.net nunca passou tanto tempo sem um único post, isto é um fato. Mas, minha vida ultimamente está muito agitada, muitas coisas acontecendo ao mesmo tempo.

Este ano, se tudo ocorrer bem, me graduo em Sistemas de Informação. E como senão bastasse o projeto final de curso, ainda tenho que trabalhar pela minha empresa, como professor, e por aí vai. O que me deixa sem tempo até para dormir, imagina postar algo interessante...rs...

Logo após minha formatura, tenho algumas idéias de assuntos a tratar no blog, além de CakePHP. Como por exemplo, ActionScript 3 e Java, linguagens que vem sendo meu alvo de estudos atuais.

Em breve trarei novidades, por enquanto, fiquem com links que me chamaram a atenção últimamente:

http://br.youtube.com/experiencewii

http://www.saveyoursensible.com/

Ah, quem quiser mandar uma caixa de RedLabel para minha formatura será muito bem vindo!

Abraços!

Comentários (4)

TulioFaria.net - 2 Anos!

Olá pessoal,

faz tempo que não temos no blog um vídeo tutorial ou um artigo dos mais interessantes. Mas espero em breve voltar com força total. Estou em um período crítico, onde estou estudando e trabalhando muito e infelizmente isso está tomando todo o meu tempo.

Algumas  novidades que estão pra vir e por enquanto são segredo :). Mas algumas delas vão ser bem interessantes para quem está começando a brincar com CakePHP :)

Por já é isso! Espero nesses dois anos de vida já ter ajudado bastante vocês! Aliás, quem quiser deixar um recado motivador e/ou deixar uma $$ (heheehe) tem um botão de doação do lado :)

Forte abraço pessoal!

Comentários (8)

Metaheurística - Algorítmo Genético na resolução do problema do caixeiro viajante

Olá pessoal,

essa semana apresentei na faculdade mais um trabalho interessante. Era sobre chegar a uma solução razoável para o problema do caixeiro viajante.

O problema do caixeiro viajante é um dos problemas chamados de NP-Completo, cujo a complexidade é dada como grande.

O problema consiste em um caixeiro viajante que tem N cidades a visitar, todas as cidades possuem ligação entre si e quer-se descobrir a melhor ordem de visita das cidades voltando ao ponto inicial, com a menor distância e sem passar mais de uma vez por cidade.

Achar a solução para esse problema com poucas cidades não é tão dificil, por exemplo, com 4 cidades, há a possibilidade de 4! soluções, ou seja, 24 soluções. A medida que aumentamos o número de cidades inviabilizamos o uso de força bruta (testar todas as possibilidades) pelo o fato do número de soluções aumentar.

O algoritmo genético se espelha na natureza para resolver um determinado problema. Assim sendo, no problema do caixeiro viajante, temos uma população composta por soluções aleatórias para o problema. Desta soluções, pegamos uma porcentagem das melhores e as usamos para gerar as demais. E podemos também fazer algumas mutações para evitar da população ser formada somente por clones :) .

Na solução do problema feita em Java por mim, eu tenho uma população de 10 soluções geradas aleatoriamente. A cada evolução eu ordeno essas soluções deixando os melhores primeiro. Eu determinei uma taxa de mortalidade de 50%, ou seja, vou pegar os 5 piores e substituir pelo cruzamento dos 5 melhores. Esse cruzamento também é aleatório, sendo que escolho duas soluções pai de forma aleatória, tento copiar seus "genes", e ao final completo o que não foi possível ser copiado com "genes" aleatórios (mutação). Na implementação, as distâncias entre cidades é dada por uma matriz de adjacência de 8x8 (8 cidades).

O código completo do Algorítmo Genético implementado em Java.

A implementação não garante uma solução ótima, mas tende a ser uma solução razoável na maioria das vezes.

Bom é isso, até a próxima pessoal!

Comentários (3)

Esteganografia em texto e em imagem - escondendo informações

Olá pessoal,

estou meio sumido, mas não sei se todos sabem, último ano de faculdade, trabalhos a mil, projeto final de curso e muito serviço deixam qualquer um louco...rs...

Neste post vou falar sobre uma técnica que foi o tema proposto em um trabalho na faculdade: Esteganografia (Steganography), que é a arte de esconder uma mensagem em outra, ou no meio digital, esconder um arquivo em outro.

O primeiro trabalho que foi proposto foi esconder um texto em um texto (HIT - Hide in Text). Foi o que mais deu trabalho, pois não há nada na internet falando sobre isso nem mesmo no Google :) . A técnica que desenvolvi não deve ser tão inovadora, mas resolveu o problema, com a restrição do texto "cobaia", que irá abrigar (esconder) a mensagem, tem que ser muito, mas muito grande!

O que fiz foi trocar todos os espaços do texto pelos caracteres 0, 32 e 160 (códigos ASCII). Simples né? Mais ou menos...

Tive que fazer uma conversão de cada caracter ASCII da mensagem a ser escondida nesses 3 caracteres. Ou seja, haja espaços para conseguir esconder uma mensagem nem tão grande.

A implementação foi feita em ANSI C. Os fontes dos arquivos podem ser baixados aqui:

A implementação do HIP - Hide in Picture me consumiu um pouco mais de tempo, já que eu teria que ler sobre como funciona o formato BMP. Desta vez a implementação foi em PHP :) , por falta de tempo mesmo...

Os fontes podem ser encontrados aqui:

O link para o demo online.

Bom pessoal, até a próxima!

Comentários (7)

CakePHP 1.2 - generateList agora é find(”list”)

Olá pessoal,

esta é uma dica rápida. O antigo Model->generateList agora virou find("list"), sendo que o seu uso foi simplificado ainda mais.

Agora basta adicionar o atributo $displayField no model com o nome do campo que será mostrado em uma lista desses valores. Se tivessemos um model Estado (id, nome e abrev) com todos os estados brasileiros e decidimos mostrar o campo nome, bastaria no model:

PHP:
  1. class Estado extends AppModel{
  2.  
  3. var $name = "Estado";
  4.  
  5. var $displayField = "nome";
  6.  
  7. }

E no controller:

PHP:
  1. $this->set("estados", $this->Estado->find("list"));

Simples não?

Até a próxima pessoal!

Comentários (5)

CakePHP 1.2 e a famosa tela branca (blank page)

Olá pessoal,

essa semana fui publicar um site no meu sharedhost e tive um erro de página em branco, sem erros, sem nada. Nada de saída mesmo.

Depois de fazer tudo que estava descrito no grupo oficial, como desligar o Zend Optimizer via htaccess e etc, resolvi entrar em contato com o suporte do host, claro, completamente desanimado e sem esperanças de uma solução.

Foi quando me responderam que eu deveria enviar o site novamente mas não escolher o ASCII (ou modo automático que escolhe de acordo com o arquivo entre binário e ASCII) e sim modo binário para transmissão de todos os arquivos. Imaginei logo que seria uma típica resposta sem nexo. Relutei, perguntando qual o sentido para isso, mas ele me disse (resumidamente) "apenas faça".

Re-enviei os arquivos em modo binário e para minha surpresa, FUNCIONOU! Estou sem entender o motivo, mas pelo menos funcionou... Se alguém passar pelo mesmo problema, vale a pena tentar. :)
Abraços pessoal e até a próxima.

Comentários (6)