Pages

16 de fev. de 2012

[C#.NET] MacAddress via Client usando aplicação ClickOnce

Bom dia galera,

Para quem já tentou fazer uma aplicação em C#.NET para retornar um MacAddress do Client e não do Server e ficou frustado, suas frustações acabaram.

É possível recuperar um MacAddress instalando uma aplicação do tipo clickOnce na máquina do usuário. Essa aplicação pode ser do tipo WindowsForms ou WPF, por exemplo. Funciona da seguinte maneira, quando o usuário instalar a aplicação em sua máquina, ela disparará um serviço web que enviará o MacAddress para o servidor através de um WebService. Na sua aplicação WebService, você receberá o MacAddress, assim como qualquer outro dado que desejar enviar e poderá armazenar no banco de dados. Dentro do WebService, você também pode escolher o tipo de retorno, que sua aplicação ClickOnce deve ter.

Uma outra opção, seria não retornar nenhum tipo de mensagem na aplicação clickOnce e armazenar o MacAddress em Cookie e através de uma requisição AJAX, utilizando Ajax Push(ou Ajax Reverso, ou Ajax Comet), é possível verificar se o cookie já foi definido ou não. Mas possivelmente a definição de cookie, varie de navegador para navegador, dificultando a leitura do mesmo.

Oura solução, seria utiliar a mesma requisição do tipo Ajax push e verificar se foi inserido algum valor em uma tabela de tempos em tempos. enquanto não tiver alguma alteração no banco de dados, a requisição no servidor não trará retorno.

Essas são algumas da possibilidades.

Usar Active X, para buscar essas informações, não é aconselhável, pois não funciona para todos os navegadores.

29 de jan. de 2012

[PHP] Métodos com tipos de retorno específicos

Boa noite  galera, tudo bom?

Recentemente tentei aplicar alguns conceitos e padrões de projeto que utilizo em C#.NET e infelizmente não obtive o mesmo resultado em php.

O ponto que tem deixado a desejar, pelo ao menos nas versões estáveis do php, é a falta de tipagem p/ retorno de métodos em php.

Por exemplo, se você quer criar um método e dizer qual o tipo de retorno de dados dele, não é possível.

Exemplo:

private String obterTituloTexto() { /* ... */ }

O que consegui fazer foi criar uma classe abstrata (que contém métodos que posso chamar ou não), que contém um método que faz uma chamada para um método em específico de uma classe derivada e eu já especifico qual o tipo de retorno de dados quando chamo esse método, mas dessa maneira eu tenho sempre que especificar qual o tipo de retorno de um método, quando estou chamando ele através da classe abstrata.

Resumindo

A definição do tipo de retorno de um método é possível, mas não da maneira convencional que utilizada na maioria das linguagens de programação orientadas a objetos, além de acrescenta diversas linhas de código.

Do meu ponto de vista, PHP, apesar de ser uma linguagem de programação de tipagem dinâmica, em alguns casos, facilitaria a manutenção e reusabilidade de código-fonte se a linguagem fosse fortemente tipada.

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!