Erick Tedeschi Tecnologia legal e um pouco de FOSS

29mar/100

Comparando tipo e valor entre zvals

Outro dia precisei fazer uma comparação idêntica entre zval's como no seguinte exemplo em UserSpace:

<?php
$a = "10";
$b = 10;
if ($a === $b) {
echo "Identico";
} else {
echo "Diferente";
}
?>

Então comecei fazendo com um switch(Z_TYPE_P(zval1)) { case IS_LONG...... e por aí vai... o código estava ficando enorme. Resolvi parar de perder tempo e pesquisar a API.
Na API encontrei a função is_identical_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) que faz a comparação das zval's op1 e op2 e coloca o resultado na zval result que por sua vez é do tipo IS_BOOL.
Exemplo de utilização da função:

PHP_FUNCTION(teste_identical)
{
    zval result;
    zval *a = NULL;
    zval *b = NULL;

    /* Inicializando a e b */
    MAKE_STD_ZVAL(a);
    MAKE_STD_ZVAL(b);
    /* Atribuindo valores para a e b */
    ZVAL_STRING(a, "10", 1); /* valor de a é "10" (IS_STRING) */
    ZVAL_LONG(b, 10); /* valor de b é 10 (IS_LONG) */

    /* Faz a comparação entre as zval's */
    is_identical_function(&result, a, b TSRMLS_CC);

    /* limpando memória, pois o resultado já está em result */
    efree(a);
    efree(b);

    /* agora que o resultado da comparação está em result podemos verificar */
    if (Z_BVAL(result)) {
        php_printf("eh identico\n");
    } else {
        php_printf("nao eh identico\n");
    }
}


Bom, essa é uma dica... e outras virão em próximos posts!

27dez/091

Um pouco do passado…

Estou aproveitando as férias para colocar o computador que fica na casa dos meus pais em dia, e por acaso encontrei o meu primeiro "programa" desenvolvido em C com ncurses.

Trata-se de um programa que realiza um cálculo para saber qual o número de espiras do primário e do secundário de um transformador, a bitola do fio do primário e do secundário e também a área do núcleo em cm2. Como o meu pai trabalha com eletrônica seria útil para ele confeccionar novos transformadores e recuperar queimados...

Na época (2001) fazia apenas um ano e meio que conhecia GNU/Linux e quando conheci a libcurses esqueci que existia conio.h (Turbo C) e passei a usar apenas Linux para me aventurar no desenvolvimento em C (pelo menos aquela época rs). No código fonte tem até "goto"! rsrs pois é, eu estava aprendendo...

Tinha até pensado em colocar o "Trafo" no SourceForge, mas pensei que não fosse dar certo então ficou apenas para uso pessoal. Hoje compartilho com vocês o Trafo (é o nome do programa).

Abaixo dois screenshots:

Tela Inicial do Trafo
Splash Screen do Trafo 1.0

Tela do Trafo
Tela principal do Trafo (e única rsrs)

Código Fonte

Código Fonte - Trafo 1.0

...bom esse foi um pouco do meu passado. Feliz 2010 para todos!

29nov/092

PHP UnConference Brasil 2009

Este ano o principal evento de PHP da américa latina, o PHP Conference Brasil, teve um novo atrativo para a comunidade, que é o PHP UnConference Brasil.

O PHP UnConference (ou Desconferência) é um evento que acontece dentro do evento principal, que tem o objetivo de ceder um espaço para novos palestrantes ou palestras que não foram submetidas a tempo para o evento principal.

A organização da UnConference foi feita pelo GU PHPSP em conjunto com o organização do evento principal.

Apesar de ter ocorrido um pequeno problema na sexta-feira, de a sala reservada para o UnConference não ter projetor, o problema foi solucionado no sábado com uma nova sala com projetor e microfone.

Eu aproveitei a oportunidade da UnConference para estrear como palestrante e sentir o "drama".

A minha palestra foi sobre "Desenvolvimento de Extensões PECL" que foi um sucesso! Pois na agenda da palestra era previsto uma "Demo Ao Vivo" de compilação de uma extensão, como foi a primeira vez que palestrei, tive um pouco de receio de não funcionar e que algo desse errado na compilação... mas o Murphy não esteve presente.

Bom, gostaria de agradecer ao GU PHPSP pela força e organização assim como também a coordenação do PHP Conference Brasil e aqueles que acreditaram no meu potencial e votaram na minha palestra.

Até o próximo ano, e quem sabe com palestra na grade principal!