Text

PHP e JSON

Este post tem alguns exemplos de como fazê-lo e quais os resultados. JSON significa JavaScript Object Notation, e é amplamente utilizada em muitas línguas (e não apenas JavaScript) para a serialização.

Cidade dos Sonhos

Só vendo pra crer.

Vida Moderna

Ao som de Underoath - Too Bright to See, Too Loud to Hear - começo a pensar sobre a vida, sobre as variações intercambiaveis do ser

Vai debugar? O PhP Ajuda vc

qual programador que nunca utilizou um echo no PHP ou um system.out.println no Java pra saber o que esta sendo impresso em determinada parte do código?

Uso de Parentes afeta consulta?

Outro dia desses fui questionado sobre a utilização dos parenteses em uma consulta SQL. Pq usar?

quarta-feira, agosto 11

PHP e JSON

Outro dia desses estava conversando com J.Gabriel de trabalho sobre o JSON e algumas das caracteristicas da linguagem. Devo confessar que fiquei curioso sobre a utilização de JSON com PHP e resolvi pesquisar e estudar sobre o assunto.

Este é um breve esboço sobre como trabalhar com JSON no PHP, que é realmente muito simples de fazer.  Este post tem alguns exemplos de como fazê-lo e quais os resultados.
JSON significa JavaScript Object Notation, e é amplamente utilizada em muitas línguas (e não apenas JavaScript) para a serialização. É particularmente popular para uso em serviços web.





Escrever JSON de PHP

Imagine que temos um array multidimensional em PHP que é algo como isto:


[Menu 'starter'] = $ array ("cocktail de camarão",
"soup of the day" ) ; "Sopa do dia");
$menu [ 'main course' ] = array ( "roast chicken" , main 'curso' [menu] = $ array ("frango assado",
"fish 'n' chips" , "'N' chips de peixe",
"macaroni cheese" ) ; "Queijo macarrão");
$menu [ 'pudding' ] = array ( "cheesecake" , «[Pudim menu '] = $ array ("cheesecake",
"treacle sponge" ) ; "Esponja melado");

echo json_encode ( $menu ) ; echo json_encode ($ menu);

A saída desse script parecido com este:

chips n ("starter": ["cocktail de camarão, sopa do dia]", "prato principal": ["frango assado, peixe '", "queijo" macarrão "], pudim": [" "cheesecake, esponja" melado "]) 

Isso é muito típico de uma saída JSON string - você pode ver as chaves para delimitar a coisa toda, então alguns colchetes para mostrar os níveis de aninhamento dentro da chave de formatos / valor. JSON é um formato ideal para muitas aplicações, pois é fácil de entender e depurar, é bem concisa, e têm suporte incorporado como PHP.

Leitura de dados JSON de PHP

Assim que tivermos a seqüência serializada, poderíamos querer unserialise-lo novamente - e com o código PHP  é tão simples como o exemplo anterior, exceto se nós usarmos o json_decode function () em vez de json_encode ().  Eu configurei a saída do script anterior, a entrada para este:

("Starter": ["cocktail de camarão" sopa ", do dia]", "prato principal" ["frango assado" peixe ", \ '\ n' = $json chips", macarrão queijo "], "pudim": ["cheesecake", melado "esponja"]) ";
print_r ( json_decode ( $json ) ) ; print_r (json_decode ($ json));


 Este decodifica a string e então imprimi usando print_r () - a saída do meu script ficou assim:



Perceba que os dados não são idênticos à forma como era quando ele entrou - JSON não pode distinguir entre matrizes e objetos, e não reter informações sobre os tipos de dados. Então como o ideal para um serviço web é só transmitir o JSON é extremamente util, mas pode ser que para outros tipos de aplicações ele nãos eja tão recomendado.

A dica de som pra vcs é Megan Smith . Um som tranquilo, uma voz aveludada e otimas melodias são o forte de Megan. Vale a pena ouvir.

segunda-feira, maio 3

Vida Moderna

Ao som de Underoath - Too Bright to See, Too Loud to Hear - começo a pensar sobre a vida, sobre as variações intercambiaveis do ser heheheh, sobre os buracos negros e sobre um artigo que li recentemente que tratava a respeito da quarta dimensão  quando d repente sou interrompido pelo barulhinho totalmente ensurdecedor rsrsrs da janelinha do gtalk... e me deparo com essa imagem enviada pelo o NiloRº .




Percebo agora que não sou o único.

quinta-feira, abril 22

Vai debugar? O PHP ajuda você.

qual programador que nunca utilizou um echo no PHP ou um system.out.println no Java pra saber o que esta sendo impresso em determinada parte do código? Esses truques são uma mão da roda pra quando se quer refinar/descobrir o que está sendo passado por uma variável. Para os adeptos do debug essa é uma das praticas mais conhecidas.

Mas já pensou se vc pudesse descobrir ou ter mais informações sobre determinada variavel? Me refiro a algo do tipo representanção estruturada e valor de arrays ...de forma que vc pudesse explorar recursivamente o elemento.

Na versão 4 e 5 do PHP existe a função chamada var_dump que tem por objetivo, como mencionei acima, mostrar informações sobre uma variavel. Esta função mostrará uma representação estruturada sobre uma ou mais expressões, incluindo o tipo e o valor. Arrays e objetos são explorados recursivamente com valores identados na estrutura mostrada.

Uma das outras vantagens em se utilizar essa função é que ela, como toda saída é normalmente enviada direto para o browser, as Funções de Controle de Output podem ser usadas para capturar o resultado e guardá-lo em uma string (por exemplo)....gostou né? Eu tmb!! Veja só as possibilidades, por exemplo...


$a = array (1, 2, array ("a", "b", "c"));
var_dump ($a);
?>

Esse exemplo vai imprimir o seguinte:
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}


Moral da história...se vc esta passando um parâmetro de objeto o var_dump imprimirá todos os seus atributos; se for um array de várias dimensões, imprimirá todas elas, com seus respectivos conteúdos e tipos de dados.

Fica ai mais um truque pra galera do debug.
Quem quiser conhecer mais sobre essa função é só acessar http://php.net/manual/en/function.var-dump.php

Newsletter - Desperta Brasilia

Estou trabalhando na customização de uma Newsletter automática  utilizada pelo WordPress. Na verdade um plugin do WordPress que permite enviar manual ou automaticamente mesangens de newsletter pra todos os usuários cadastrados no site sempre que uma nova postagem é feita no site. Funciona assim: O administrador cadastra um Post de noticia ou artigo no site e dependendo da configuração feita na newsletter, ela se encarrega de enviar pra todos os cadastrados um email com parte da publicação e um link pro post publicado.

O sistema funciona muito bem independente do numero de usuarios cadastrados. A unica restrição que eu vejo é o servidor de hospedagem do site. Alguns servidores limitam o envio de emails em massa por site. Fora isso, o sistema funciona perfeitamente.

Mas como nem tudo são flores, o visual da newsletter enviada aos usuarios, deixa muito a desejar. Daí a necessidade de uma customização tanto no visual quanto em alguns trechos do script.

Abaixo estão alguns skins que criei pra poder utilizar na news.







Como dica de som eu indico Krystal Meyers. Escrevi  algo sobre ela e suas músicas em:
http://despertabrasilia.com.br/2010/04/21/conheca-krystal-meyers/

sexta-feira, abril 9

Imagem da Semana

quinta-feira, abril 8

Uso de parênteses afeta consulta SQL?

Outro dia desses fui questionado sobre a utilização dos parenteses em uma consulta SQL. Pq usar? E o pq não deixar de usar? Estava pesquisando algo sobre esse assunto quando esbarrei num link do Mysql.com http://dev.mysql.com/doc/refman/4.1/pt/where-optimizations.html onde é dito que em consultas MySql é possível otimizar a select fazendo uso dos parênteses.

A princípio parece a maior besteira do universo, mas pensando bem esta idéia tem toda razão. Pois quando se utiliza o parênteses em demasia o interpretador de consultas sql do banco de dados, pode "se perder" ou demorar mais para analisar a precedência das condições. Considerando que o processamento do WHERE é feito da esquerda para a direita, porém se você colocar parênteses em alguma das expressões, a ordem da execução pode ser alterada. Se você colocar um monte de parênteses sem necessidade, com certeza irá gerar um trabalho extra para o Query Optimizer, gerando talvez, uma queda de performance.

A pergunta que não quer calar é: Isso se aplica também ao Sql Server? Se a resposta for sim, e em consultas pré-compiladas (tal como as Stored Procedures) existe impacto na performance com o uso excessivo de parênteses? Devo confessar que ainda não cheguei a uma conclusão, mas pensando bem o parênteses em si (o símbolo), obviamente não afeta a performance. Mas sim, a disposição das expressões dentro da cláusula WHERE, e talvez possa afetar de alguma forma. Acho que ninguém pensa nisso na hora de criar um procedure Smile.

register_globals em tempo de execução??? NUNCA mais!!!!

Programador PHP que nunca ouviu falr na tão famosa diretiva register_globals que atire a primeira pedra. Não é de hj q essa bendita é condenada ou vista com maus olhos pela comunidade desenvolvedora...diga-se d passagem os mais experientes.

Como sempre há os pros e os contras, as falhas de segurança quando se utiliza tal diretiva é mto mais facil d ocorrer. Quer um exemplo prático? Todas as variáveis contidas em $_GET, $_POST, $_COOKIE e $_SERVER são automaticamente convertidas em variáveis do PHP se a diretiva esta em ON.

Outro exemplo interessante...suponhamos o link http://www.seusite.com.br/arquivo.php?var=conteudo, se e somente se seu servidor estiver configurado para register_globals = On, no script arquivo.php, haverá uma variável chamada $var, que terá o valor 'conteudo'. Uauuuuu... acreditem mas um atacante ou ate mesmo uma usuario mais antenado pode infiltrar códigos maliciosos em variáveis que nunca deveriam vir das fontes carregadas pelo register_globals.

Por isso o alerta, evite utilizar alguma aplicação q precise de register_globals= On. Em si a diretiva register_globals não é perigosa e não traz nenhum risco à segurança da sua aplicação, o que pode te prejudicar é utiliza-la em ON...ou seja....com ela ligada. No artigo "How to Install PHP on Windows (Fast PHP Tutorial Part 2)" o autor mostra como ligar a diretiva no php.ini. Nenhum segredo nisso, porém esse procedimento deve ser evitado!!

E há quem diga que na versão 6 do PHP essa configuração não irá mais existir....SHOW D BOLA......Ou seja....se vc utiliza essa função....acho bom começar a pensar em outra alternativa.

Vc caro colega...assim como eu....sabemos q algumas diretivas do PHP podem ser definidas/alteradas no php.ini em tempo de execução (leia mais sobre ini_set())...isso mesmo...ao se executar a aplicação. Mas essa afirmação não é válida para a register_globals. Sendo assim...podemos alterar essa diretiva,....acessando o php.ini ou criando/editando um arquivo .htaccess e mandando ele pro server de hospedagem (eu recomendo).

Ahhhaaa....mas nem tdo é tão bom e perfeito...em alguns servidores vc nunca poderá ter acesso as configurações do php...E pensando nisso há uma forma simples de garantir q suas variaves passadas por $_GET, $_POST, $_COOKIE e $_SERVER nunca sejam utilizadas ou transformadas em variaveis PHP

Sim, eu sei q a solução parece mto simples....mas é mto eficiente...acredite em mim....(eu mesmo já precisei utilizar isso)

No início da sua aplicação adicione as seguintes linhas:

foreach
($_GET as $var => $valor)
unset($$var);

foreach
($_POST as $var=> $valor)
unset($$var);

foreach
($_COOKIE as $var => $valor)
unset($$var);

foreach
($_SERVER as $var => $valor)
unset($$var);

Legalz...cara....mas o q afinal d contas essas linhas querem dizer???? Mto simples ....Dessa forma antes de iniciar sua aplicação vc esta limpando as variaveis q são carregadas automaticamente. O detalhe é....vc NÃO poderá utilizar nada...nadinha do register_globals...e de quebra garante q sua aplicação seja compativel com novas versoes....

Vale lembrar q essa é mais uma d minhas tecnicas orientadas a leite (cheias de gato heheeh)...mas é 100% garantido....e pode evitar dores d cabeça.


Dica de som: Pra quem ainda não ouviu, vale mto a pena curtir o novo album do TobyMac - Tonight...sem sombra d duvidas, um dos melhores!!!

segunda-feira, março 1

Descriptografar Temas do Wordpress.

Você já passou horas e horas procurando um tema pro wordpress que seja bom,
bonito e FREE, e quando encontra voce descobre que o "programador" do
template  criptografou parte do codigo? Bem se vc já se deparou com essa
situação, sabe do que estou falando. Quantos de nós já  usaram funções
PHP pra "descriptografar" o famoso arquivo footer.php pra tentar
descobrir o que tem por tras do arquivo "escondido".

Alguns "programadores" colocam apenas sua assinatura e redirecionam
o clique para o site deles. Mas em tempos de segurança digital, todo cuidado é
pouco, colocar arquivos "criptografados" sem saber o qual a real função
dos mesmo, é mto arriscado.

Uma dica para se livrarem desse problema: Abra o arquivo index.php que esta
dentro do diretorio do tema escolhido. Localize a linha :

<?php get_footer(); ?>

altere para:

 <!--inicio rodape---->

<?php get_footer(); ?>

  <!--Fim rodape---->
e
. Abra o arquivo footer.php e cole o conteudo que
vc acaba de copiar, salve e exiba novamente seu wordpress. Prontinho, caso
resolvido. Vale lembrar que em alguns temas voce deverá alterar essa linha
tambem nos arquivos page.php, home.php



terça-feira, janeiro 12

Características dos metodos Ageis de Desenvolvimento

Outro dia desses, escrevi um paper, sobre algumas das principais caracteristicas dos metodos ageis de desenvolvimento de software. Enquanto estava escrevendo e elaborando algumas apresentações para o seminario da Pós graduação algumas peculiaridades dos metodos ageis de desenvolvimento me chamaram a atenção, tais como:

Restrição de Prazo

Uma grande demanda de desenvolvimento é quebrada em várias partes de maneira que possam ser desenvolvidas e incrementadas previsivelmente.

Vale lembrar ainda que a qualidade do projeto é afetada diretamente pelo balanceamento que existe em atender os requisitos do cliente respeitando o custo dentro de um cronograma previamente estabelecido.  O sucesso do projeto depende, nesse sentido, da restrição tripla. (MARTINS, 2006).


Parcimônia

Eliminar perdas ou tendência em fazer mais com menos recursos é uma das características que todo processo ágil deve ter. Requerer o mínimo necessário de atividades para diminuir riscos de maneira que as metas estabelecidas na restrição de prazo possa ser atingida. Deve-se ter em mente que toda e qualquer atividade desnecessária deve ser removida, eliminada do processo de desenvolvimento.

Convergência

Monitorar de maneira a prever os risco também é outra prática dos métodos ágeis de desenvolvimento. Agindo de tal forma o sistema tende a ser o mais próximo da realidade exigida pelo cliente. Em cada interação os riscos são monitorados/atacados de maneira que ao ser entregue o sistema possua poucas ou quase nenhuma irregularidade com o que foi previamente estabelecido

Orientação a pessoas

Orientado a pessoas e não a processos. Essa é sem dúvidas outra característica das metodologias ágeis que mais tem sido esquecida hoje em dia, tanto pelos programadores quanto pelos gerentes de fabrica. Pessoas motivadas trabalham e colaboram de forma eficaz e por mais tempo. Pessoas motivadas fazem com que os projetos sejam concluídos com êxito e em menor tempo. Favorecer pessoas sobre os processos e tecnologia encorajar desenvolvedores de maneira que a produtividade e qualidade possam aumentar. Facilitar e abrir canais de comunicação entre equipes de desenvolvimento é outra característica marcante das metodologias ágeis que contribuem para o bom andamento do projeto.


 Colaboratividade


Disseminar informação entre membros da equipe é outro fator de fundamental importância para métodos ágeis. Agindo assim os membros da equipe podem integrar e incrementar de forma mais rápida o processo de desenvolvimento.

Outra característica importante das metodologias ágeis é a colaboração, parceria com o cliente. O cliente deve ser motivado de tal forma que se veja como parte integrante e fundamental para o desenvolvimento do projeto. É importante considerar a simplificação na comunicação com o cliente utilizando sua própria linguagem o que certamente é a melhor forma de se atingir o fim esperado.

Equipes pequenas

A quantidade de pessoas a serem alocadas no projeto depende da estimativa de esforço definida para cada fase e nas restrições de prazo. Pequenas equipes no projeto são interessantes para que haja uma maior colaboração entre os membros e requerem menos planejamento para coordenação de atividades.

Testes constantes

Como mencionado anteriormente uma das premissas das metodologias ágeis é a interação com o cliente de forma mais rápida, rotineira. Isso pode ser bom, mas corre-se o risco de que haja erros ou o projeto apresente desvio na qualidade.

Para prevenir e até mesmo evitar a degradação da qualidade devido a entregas muito curtas, dá-se alta ênfase a testes do produto ao longo do ciclo de vida. Metodologias ágeis prezam pelos testes de integração ao longo do processo de desenvolvimento.Vale lembrar que os testes contínuos permitem que a qualidade seja atingida de maneira eficaz.

Equipes Locais

As equipes devem ser compostas por, no mínimo, duas pessoas e, no máximo, sete pessoas. Equipes com mais de sete pessoas geralmente são divididas em subequipes.  Tal prática facilita não só o bom andamento do projeto como facilita a vida de todos os envolvidos.

Em pesquisa anterior (ABRANTES e TRAVASSOS, 2007) informam que para algumas  metodologias trabalhar na mesma sala ou em salas adjacentes só funcionam para equipes de 8 a no máximo 14 pessoas. Todas as metodologias são sensíveis à localização da equipe, pois estão fortemente fundamentadas em canais de comunicação rápidos e ricos, que permitem reduzir a documentação externa a ser construída e mantida.


Cortesia

Nas palavras de (ABRANTES e TRAVASSOS, 2007) a cortesia é a utilização de atividades encadeadas para validar e melhorar os produtos de trabalho das atividades anteriores.
Atividades de cortesia são atividades que trabalham juntas para produzir um resultado melhor do que produziriam individualmente. Como exemplo pode-se citar situações em que seja preciso escrever historias de usuários ou realizar testes, tais atividades tendem a produzir um melhor resultado quando trabalhadas conjuntamente.

segunda-feira, janeiro 11

Acessando URL em código fonte com PHP

Devido a quantidade de pedidos vou publicar novamente o POST ensinando a como acessar um conteudo de uma página (codigo fonte) e identificar as urls dos frames dentro desse código. Para isso vou utilizar o bom e velho PHP

Outro dia desses precisei desenvolver um script em PHP que fosse capaz de identificar na URL passada qualquer link de Frame ou Iframe.

Eu precisava que todos os links da página fossem acessados de maneira que eu conseguisse realizar um teste no conteudo de todas as URL's. Foi dai que tive a ideia de utilizar a função file_get_contents do PHP para ler as URL's passadas via variavel.

Na vdd o script funciona como um filtro servindo não soh para verificar a existencia de links em determinada URL como tmb pode ser adaptado para que dependendo da necessidade e caso exista frames na página seja mostrado um aviso ao usuário. Isso é muito interessante considerando as normas de acessibilidade no que se refere a utilização de frames.

/*
  Filtra o index do sitio a procura de Frames ou Iframes
  e lista as URL's
*/

$file = $_GET ['$esse'];
$str = file_get_contents($file) or die('Não foi possivel ler a URL');

$verifica = preg_match_all('/]+>|]+>/',$str,$matches);

 if ($verifica == ""){//caso a página não utilize frames o checklink passa no dominio principal
                 echo"O Link $file não utiliza frames";
  }else{
echo"O link $file utiliza os frames abaixo

";
   foreach ($matches[0] as $html) {
 
        preg_match('/src="([^"]+)"/', $html, $match);
 
            echo $match[1]."
";                     
    }   
 }

Job - JP - Life with Style

Vida com estilo é o slogan do  novo projeto pessoal de JP http://joaopauloln.com.br/ um amigo la da pós graduação. A idéia pra esse Job era em criar uma marca que fosse moderna, simples e que transmitisse uma mensagem de descontração e irreverência. O site é um projeto pessoal do João Paulo voltado para tecnologia e informatiquês. Rabisquei algumas propostas com variações e formas alternativas.




 

 
 

 




 


A dica de som fica por conta do cantor e compositor Folk Jeremy Fisher (Jeremy Binns nascido em 15 de dezembro de 1976) é um cantor e compositor canadense. Fisher nasceu e foi criado em Hamilton, Ontário. Fisher também foi membro do Hamilton All-Star Jazz Band, durante muitos anos enquanto assistia Westdale Escola Secundária (Classe de 1995) e tornou-se um conselheiro do acampamento de YMCA wanakita. Westdale SS também é a alma mater de Martin Short, Eugene Levy, e Jackson Russ.
Pra quem ainda não conhece o trabalho dele....vale mto a pena conferir..