Pages

22 de jun. de 2011

[PHP] Carregamento automático e recursivo de classes ( Autoload )

Fala galera,

Algumas pessoas me perguntaram como fazer o carregamento automático das classes, sem precisar ficar incluindo a devida classe. Uma das soluções é utilizar o método __autoload(), nativo do php. Ele recebe um parâmetro do tipo String. Sempre que é declarada uma nova classe o método __autoload() é acionado e o parâmetro recebido é o nome da classe declarada.

O uso do __autoload() para somente uma pasta pode ser feito por exemplo:

function __autoload($classe) {
    include "c:/desenv/classes/".$classe.".php";
}

Essa é uma das maneiras para fazer o uso do __autoload() para somente uma pasta.
Agora, caso vocês possuam uma estrutura de, por exemplo, mais de uma pasta e subpastas, podemos esse script que eu desenvolvi, que acho ideal para quem utiliza camadas de controle, modelo e persistencia de dados, divididas por módulos:

<?php
/**
 * @abstract método responsável pela busca de diretórios
 * @param $src String
 * @return array
 */
function buscarDiretorios($src) {
    $diretorios = array();
    foreach(new DirectoryIterator($src) as $file){
        $bool = preg_match("#\.php|\.\.|\.|\.inc|\.svn#", $file);
        if(!$bool) {
            $diretorios[] = $file->getFilename();
        }
    }
    return $diretorios;
}

/**
 * @abstract método responsável pelo carregamento automático das classes.
 * @param $class String
 */
function __autoload($class) {
    
    $caminho = "";
    if (file_exists(CLASS_DIR . "{$class}.php")) {
        $caminho = CLASS_DIR . "{$class}.php";
    } elseif (file_exists(CLASS_DIR . "DAO/{$class}.php")) {
        $caminho = CLASS_DIR . "DAO/{$class}.php";
    } elseif (file_exists(CLASS_DIR . "Control/{$class}.php")) {
        $caminho = CLASS_DIR . "Control/{$class}.php";
    } elseif (file_exists(CLASS_DIR . "Model/{$class}.php")) {
        $caminho = CLASS_DIR . "Model/{$class}.php";
    } elseif (file_exists(CLASS_DIR . "pde/{$class}.php")) {
        $caminho = CLASS_DIR . "pde/{$class}.php";
    }

    if(!$caminho) {
        $diretorios = buscarDiretorios(CLASS_DIR);
        foreach ($diretorios as $diretorio) {
            $subDiretorios = buscarDiretorios(CLASS_DIR . $diretorio);
            foreach($subDiretorios as $subDiretorio) {
                if (file_exists(CLASS_DIR . "{$diretorio}/{$subDiretorio}/{$class}.php")) {
                    $caminho = CLASS_DIR . "{$diretorio}/{$subDiretorio}/{$class}.php";
                }
            }
        }
    }

    if ($caminho) {
        require_once "$caminho";
    }
}
?>

É isso galera, espero ter ajudado.

30 de mai. de 2011

[Vídeo] Web Synchronize (A Comet Solution)t

Um ótimo vídeo para quem nunca ouviu falar de Web Synchronize ou Comet Solution.



Bom proveito!

[Pessoal] Você acha que tem problemas?

Fala galera, tudo tranquilo?

Ontem passei por uma situação complicada...
Tudo começou ontem, quando fui até a casa da mãe da minha namorada, Andréia, para um churrasco. Após almoçar, minha namorada e eu, fomos convidados pela tia dela para conhecer o novo lugar onde estava morando. Quando fui até a varanda, para minha surpresa, vi uma garota de estatura mediana, de cabelos pretos e longos, sentada num meio fio, ao longo de um retorno. Segundos depois ela deitou no meio da pista. Imediatamente, chamei minha namorada e os demais familiares para ver. Então o Daniel, tio da Andréia,  e eu, fomos até ela, para saber como estava. Quem sabe ela poderia estar passando mal e ter desmaiado?
Após conversarmos com ela, percebemos que ela estava lúcida, mas estava ali, estirada no chão, pedindo que a  morte chegasse até ela. A primeira impressão que tivemos, foi de que ela estava sofrendo algum distúrbio.
Alguns minutos depois, com o Daniel tentando conversar com ela, chegaram várias pessoas e ficaram ao redor da moça, pois realmente era estranho ver uma jovem atirada no meio da pista.
Muitos tentaram conversar com ela, descobrir alguma informação. Falavam pra ela ir pra casa dela, pra sentar em um banquinho que ficava próximo dali, mas ela não queria falar com ninguém.
Comecei a conversar com ela e descobri que seu nome era Sara e queria se matar, pois recentemente tinha perdido sua mãe. Segundo ela, sua mãe morreu de câncer na segunda-feira passada. Perguntei qual era a profissão da mãe dela e ela respondeu que ela trabalhava em um hospital. Perguntei onde era a sua casa, e ela falava que não tinha mais casa, que morava na casa dela, o padastro, a mãe e ela, e após a morte da mãe, não tinha mais casa.
Falei para ela que a dor da perda de uma mãe ou um pai, é impossível de ser descrita. Com certeza deveria estar sendo muito difícil pra ela. Mas abri os olhos dela para que parasse um segundo e pensasse em sua mãe. Falei para ela que a mãe dela passou 9 meses, sofrendo carregando ela na barriga, alimentando e educando, que poderia até ter passado fome para dar o que comer para ela, para não deixar faltar nada em casa e que com certeza tudo o que ela mais deveria querer era o bem da filha e não que ela se matasse. Falei para ela, que já passei por uma situação parecida, quando perdi minha falecida tia/madrinha após uma cirurgia no estômago, e realmente fiquei muito mal, sem rumo, mas tudo isso foi uma fase, que graças a Deus consegui superar. Então, pedi para ela que visse isso tudo como um teste de resistência,  que realmente ela precisava passar, para ver a vida de uma outra maneira. Falei que ela precisava ser forte e usar tudo isso que tem acontecido com ela, não contra, mas a seu favor. Que a cada vez que ela pensar que tudo está dando errado, que ela deve tomar forças e pensar na mãe dela, que queria o seu bem, e fazer o melhor para dar a volta por cima e não se entregar. Falei também, que quanto mais tempo ela ficasse ali no chão, mais gente ficaria perto dela, rodeando e achando estranho, porque eles não te entenderiam, não saberiam a dor que você está passando e tem certas coisas que nós mesmo vivemos e nós mesmo sabemos a dor pela qual estamos passando.
Por incrível que pareça, ela levantou e abraçou algumas pessoas e me agradeceu.
No caminho para a casa da mãe da Andréia, ela tinha dito que estava grávida e tinha 16 anos. Quando chegamos na casa da mãe da Andréia, a alimentamos e demos o que beber e percebemos que ela tinha educação e cuidava de si, não era o que aparentava ser, com roupas rasgadas e descalça no meio do asfalto quente.
Após isso, a tia da Andréia, Rosa, conversou com ela, sobre falar com o serviço social e para nosso espanto, ela ficou assustada quando tocamos nesse assunto, gritou, se descontrolou. Após se acalmar, ela disse que tinha uma amiga na Samambaia Sul e que ficaria lá. Quando estávamos saindo ela abraçou todos e me agradeceu, falou que todos tentaram tirar ela dali mas ela não quis escutar o que os outros diziam, mas me escutou. Falou que eu deveria ser psicólogo. Fiquei grato por ter ajudado ela, assim como todos os que estavam presentes na casa da minha namorada, mas confesso que fiquei um pouco espantado com a situação.
Então o Daniel e sua esposa darim uma carona para ela até a casa de sua amiga. Mas no caminho, a esposa do Daniel, sentiu que não poderia deixar ela ali e ser maltratada, então a levou pra tomar um banho e a levou até a igreja.
A moça é evangélica e disse que já trabalhou como missionária e queria ser assistente social, após se formar, pois estava no segundo ano.

Eu fico pensando, as vezes reclamamos da vida por tão pouco, quando tem pessoas que realmente tem motivos para reclamar da vida, mas são fortes e ficam cada vez mais fortes e seguem em frente. São coisas que devemos parar pra pensar e refletir.

Sobre este caso, por mais que você deixe de acreditar em Deus, por algum segundo, as vezes ele pode se manifestar dentro de você para que você dê esperança para alguém.

Bom, é isso galera. Foi só um desabafo.

27 de mai. de 2011

[PHP] Comet + ( JQuery || Prototype)

Boa tarde galera, 

Faz tempo que não posto nada, mas venho trazendo um post interessante.
Já faz algum tempo que fiquei curioso para saber como implementar a pattern Observer no PHP. Vi vários exemplos de implementação no php, inclusive utilizando SPL, mas na realidade não chegava nem perto de ser o que realmente a pattern Observer é.

Ontem, descobrimos uma maneira de "quase" implementar o Observer no php.
Resultou no uso de jquery ou prototype + comet + php, que por incrível que pareça, funcionou bem.

Como prometido, para alguns colegas, vou disponibilizar um link, contendo um exemplo simples, utilizando Jquery ou Prototype.

Para fazer o teste, cada um pode acessar de uma máquina diferente, dentro da mesma rede, ou você pode utilizar diferentes navegadores, acessando o mesmo endereço, na mesma maquina.


Quem tiver sugestões de melhoria para esse exemplo simples(mas que funciona bem! =D ), por gentileza, enviar para meu e-mail: viniciusfesil@gmail.com ou publicar em algum lugar e disponibilizar o link.

12 de abr. de 2011

[PHP][MySQL] Paginação simples

Ctrl+c, Ctrl+c, galera!


Faz tempo que não posto nada, sinto muito! Tenho estudado muito FLEX (ActionScript 3.0 + MXML) e desenvolvendo componentes para a minha rede social, o ChoqueWeb ( www.choqueweb.com ). 


Meu antigo colega de trabalho Edson, estava me perguntando uma maneira simples de criar uma paginação utilizando PHP e  MySQL.


Para quem não conhece o que é paginação de dados, paginação de dados significa vc exibir grande volumes de dados em pedaços. 


Ainda em confusão?


É simples, por exemplo, vocês tem 19283981273918723 registros que precisam ser exibidos, por exemplo. Mas você não deseja exibir todas essas informações poluindo a tela do usuário final. Então o que você deve fazer? Exibir essas informações em pedaços! Por exemplo, exibindo em 50 em 50 registros, até chegar a quantidade total de registros que deseja exibir!


Se desejam implementar isso utilizando PHP, criei a pequena solução abaixo, que você deve colocar antes do seu comando sql ser executado:


Código
$sql = "seu select";
if(isset($_REQUEST['pg']) && isset($_REQUEST['pgn'])) {
    $sql = "select *, (select count(*) from ({$sql}) a) as qtdRegistros from ({$sql}) b  limit {$_REQUEST['pg']}, {$_REQUEST['pgn']}";
} Explicando Onde o $sql, logicamente seria a sua consulta, $_REQUEST['pg'] é a pagina da paginação, $_REQUEST['pgn'] é o numero de registros que serão visualizados por pagina. Quando a consulta for executada, será retornado a quantidade de registros. Com a quantidade de registros você pode fazer uma relação com a quantidade de registros que serão exibidos, para saber quantos registros você quer exibir. Existem outras maneiras para fazer a paginação de dados, mas essa é apenas uma delas. Espero ter ajudado!

24 de fev. de 2011

[MySQL] Uso do Declare ou SET no Mysql?

Bom dia nerds e nerdas! (kkk)
Tenho o costume de utilizar o DECLARE no SQL SQLSERVER tanto para criar stored procedures ou em outras operações, como em um select por exemplo.
Recentemente tentei fazer o uso do DECLARE no MySQL, sem estar dentro de uma stored procedures e percebi que o MySQL não dá suporte par esse tipo de operação e o seu uso só pode ser feito se estiver dentro de um BEGIN ...... END.
Uma solução para fazer o uso do DECLARE, para criar uma variável  no mysql é utilizar somente o SET.

Por exemplo, no SQLSERVER:

DECLARE @tipo char(2)
DECLARE @tamanho int
SET @tipo = 'M'
SET @tamanho = 10
select @tipo, @tamanho;


Por exemplo, no MySQL:

SET @tipo = 'M';
SET @tamanho = 10;
select @tipo, @tamanho;

É isso, espero que tenha ajudado alguém!

17 de fev. de 2011

[GAMES] World of Warcraft - Aumentar resolução

Boa noite galera,

Como sempre tive problema para aumentar a resolucão no Warcraft 3 e meu amigo Eduardo descobriu como arrumar, segue o link abaixo para que possam resolver esse problema:

http://warcraft.freakygaming.com/tutorials/running_warcraft_3_in_widescreen.html

[GAMES] World of Warcraft - Problema ao instalar Path

Boa noite galera, caso vocês tenham problema ao atualizar o seu game, clique no link a seguir para solucionar seus problemas!

=)

http://koew.net/262#write-comment

25 de jan. de 2011

[PHP] Como exibir query utilizando Zend_Db_Table

Salve, pessoal, tudo nos conformes?
Faz tempo que não atualizo meu blog, mas aí vai uma informação boa para quem utiliza ZendFramework + Zend_Db_Table:

"Achei uma forma de jogar na tela a query que será executada pelo Zend_Db_Table.
Segue abaixo:

xd($slct->__toString());

Tem sempre gente procurando formas de fazer isso, espalhem para todo mundo."
By Danilo Lisboa



Como já foi dito pelo Danilo o $sql->__toString(); retorna a query que já foi montada até o momento. O "xd" é um Debugger que utilizamos, para exibir o valor recebido e parar a aplicação. Caso desejar utilizar o debugger do Zend, seria assim:


Zend_Debug::dump($sql->__toString());



11 de jan. de 2011

[PHP] Como converter Hexadecimal em binário?

Exemplo simples:
<?php
function hex2bin($n) 

$n = hexdec($n); 
$n = decbin($n); 

return $n; 

?>

10 de jan. de 2011

7 de jan. de 2011

[LINUX]Configurando Senha inicial do PostgreSQL

Por padrão o PostgreSQL possui um banco de dados chamado template1 e um usuário administrativo chamado postgres com privilégios de manutenção do banco. A menos que seu sistema tenha credencias para conectar no banco, o usuário administrativo postgres inicialmente não possue nenhuma senha. Para criar uma senha para ele (ou apagar a senha criada pelo sistema) tecle os seguintes comandos.

Entrar como usuário root para criar(alterar) a senha do postgres:

$ su root
Informe a senha de root
$ passwd postgres
Informe a nova senha do postgres

Assimilar o usuário postgres a nova senha:
$ su postgres
Informe a senha para trocar para o usuário postgres


Para PostgreSQL 7 ou superior:

$ psql -c "ALTER USER postgres WITH PASSWORD 'novasenha'" -d template1


Para o PostgreSQL 6:

$ psql -c "ALTER USER postgres WITH PASSWORD novasenha" -d template1

Fonte:http://sqlrelay.sourceforge.net/sqlrelay/gettingstarted/postgresql.html , http://jeffersonjbj.blogspot.com/2007/10/configurando-senha-inicial-do.html

[Tutorial] Como instalar Lineage II - Frintezza server

/o/,

Resolvi criar esse tutorial para a galera, para mostar como instalar lineage II com o Frintezza Server (7x):

1- descompacte e instale o client(arquivo maior zipado).
2- NÃO EXECUTE O JOGO APÓS INSTALAR.
3- Após instalar vá na pasta "system" e comente ela para "system_".
4- Baixe o path do jogo: http://www.frintezza.com/
5- Descompacte o path em uma pasta qualquer.
6- Copie a pasta "system" que esta dentro da pasta que foi descompactada para dentro da pasta do lineage.
7- Crie uma conta no  http://www.frintezza.com/ .
8- APÓS COPIAR, DENTRO DA PASTA SYSTEM, TEM UM ARQUIVO CHAMADAO L2.EXE, execute-o.

Pronto! Tudo feito!
Dê uma olhada no youtube nas classes do lineage 2 para ver qual a te agrada mais! Hoje, nós criamos anões, pq eles podem fazer itens e são mais fáceis de achar item!


Detalhe interessante: dentro do jogo vc consegue acessar o messenger!

Caso não consigam, vocês podem me adiciona no skype, msn ou gmail: 
     msn    > viniciusfeitosasilva@hotmail.com  
     skyke > viniciusfsilva
     gmail  > viniciusfesil@gmail.com

Boa sorte!