Postagens

Mostrando postagens de Agosto, 2010

6 maneiras de fazer a mesma coisa, o que é considerado boas práticas?

As vezes tem tantas maneiras diferentes de fazer o mesmo código que nós ficamos na dúvida quanto a qual maneira usar. O que seria considerado "boa prática" pela comunidade e o que sua equipe entenderia melhor. Suponhamos que você esteja trabalhando dentro de um método de um Domain Service chamado UmDomainServiceChique(objetoDoDominio) que será chamado por uma API.Você tem uma regra de negócio chique para ser verificada que por enquanto chamarei de VerificaMinhaRegraChiqueComplexa().Você chama UmDomainServiceChique(objetoDoDominio) e caso VerificaMinhaRegraChiqueComplexa() retorne true você vai querer que UmDomainServiceChique faça o que tem que fazer e a api retornar Ok 200, caso contrário você quer que a API responda um erro qualquer, tipo BadRequest, e retornar uma mensagem dizendo que VerificaMinhaRegraChiqueComplexa deu ruim. Eu vejo 6 maneiras de fazer isso, gostaria de saber a opinião de outrs devs sobre qual seria a maneira menos gambiarrística de fazer:1) se Ver…

Botão Add This para adicionar seu post em qualquer rede

Imagem
No Site aos Pedaços de hoje vamos falar sobre o botão Add This, que você pode colocar no seu blog ou site para que as pessoas possam repassar adiante seu post.

O Add This é uma ferramenta legal porque, além de integração nativa com o blogger, te dando o código pronto sem você ter que quebrar muito a cabeça, ele te dá estatísticas por e-mail, dizendo quem clicou  no que e repassou pra onde.

Para iniciar acesse o site http://www.addthis.com/ e escolha seu tipo de site, blog ou CMS, escolha o estilo do botão e integre com uma conta do google analytics se você possuir. Não falaremos sobre o  google analytics nesse post, talvez futuramente.

O código para colocar o  botão no blog é este:

<!-- AddThis Button BEGIN --> <div><a expr:addthis:title='data:post.title' expr:addthis:url='data:post.url' class='addthis_button'><img src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookm…

Sugestões para o google groups

Seria legal se pudéssemos criar pastas no google groups, ou que pelo menos fosse integrado com o google docs. Outra coisa legal seria um arquivo enviado por e-mail para o grupo ir direto para a seção de arquivos. Coloquei a sugestão no grupo dedicado a isso, vamos ver se rola.
I'd like to suggest folder/directory creation in google groups. It's
possible to upload files, but it's impossible to create folders or
direcotories to  organize these files.

Other good improve would be to automatically put in group files those
files sent to group by e-mail.

Another suggestion are integration between google docs and google
groups.

Outra coisa que falta é filtrar os buzz. Os buzz são legais, mas receber todos eles na sua caixa de entrada pelo pop3 não é legal.

Busca de CEP com o Lazarus - Parte 3 - XML Document

Na postagem anterior aprendemos como usar a classe THTTPSend da biblioteca synapse para criar consultar o serviço de consulta de cep e receber um xml com as informações sobre o endereço.

Hoje vamos ver como criar uma classe para encapsular todo esse mecanismo e fazer com que os atributos dessa classe sejam os dados do endereço.

Primeiro de tudo vamos criar um arquivo chamado LazCep.pas e a classe LazCep. Repare nas units que temos que adicionar no uses.

uses Classes, SysUtils, DOM, XMLRead, httpsend, dialogs; type { TLazCep } TLazCep = class private FXML: DOMString; FCEP: DOMString; FXMLDoc: TXMLDocument; //sets procedure SetCep(const vCep: DOMString); //gets function GetCep: DOMString; function GetLogradouro: DOMString; function GetCidade: DOMString; function GetEstado: DOMString; …

Seu Blog pode virar um livro

Imagem
Mais um da série "Site aos Pedaços"! O "gadeject" da vez não é bem um penduricalho, mas é a dica para um concurso, ondeseu blog será votado.  Você pode "pendurilhar" no seu blog a imagem com o link para votação.
Isso me faz lembrar, saudosamente (ou não) o tempo em que o top 30 era "O" medidor de popularidade de um site e todo mundo queria fazer algo para ser "notado" e "votado".
Dessa vez aderindo ao concurso 2° prêmio blog books irei mostrar como você pode colocar a imagem que o site do concurso oferece dentro do link para votação no seu blog e colocar em um canto qualquer. 
Não que eu tenho esperanças de que um dia meu blog vire livro, pois o conteudo é pouco e ainda está mal organizado, além de ser diverso: os artigos tem pouca relação um com o outro. 
1° Entre no site e se cadastre, colocando suas informações de contato e redes sociais, bem como informações do seu blog: http://blogbooks.com.br/ 2° Efetue login no sistema e ent…

Adicionando botão Like ao seu blog

Este post é mais um da série "Site aos Pedaços" mostrando mais um "gadeject" que você pode "pendurilhar" no seu blog ou site.

Faz parte da política de boa vizinhança citar a fonte. No caso minhas fontes foram o Blog Mamanunes e o Vagabundia mas acredito que a própria documentação das api's do facebook deve ser bem rica em dicas desse tipo.

Primeiro de tudo você deve saber que a edição do template do seu blog se dá em XML e não em HTML. Isso quer dizer que certos caracteres especiais devem ser substituidos por HTML entities para que funcione. Além disso algumas expressões vistas aqui serão comandos próprios do XML do blogger, que ele interpreta e substitui a sua maneira. Por isso é diferente colocar o  botão like no Blogspot e colocar no Wordpress ou mesmo no HTML puro.

Para HTML puro o código deveria ser esse:

(...) <iframe src="http://www.facebook.com/plugins/like.php?href=http://vitorrubio.blogspot.com/2010/08/busca-de-cep-com-o-lazarus-parte…

Busca de CEP com o Lazarus - Parte 2 - HTTPSend

Imagem
Na primeira parte deste tutorial vimos como criar uma função para UrlEncode, ou seja, codificar uma Url para que substitua caracteres especiais por caracteres de escape tornando-a assim uma url válida.

Nesta segunda parte do nosso tutorial de busca de CEP com  o lazarus vamos dar uma breve introdução à classe THTTPSend da unit httpsend, biblioteca Synapse.

Para isso, crie um formulário com 3 edits (edCep, edChave e edUrl) e dois memos (mRequest e mResponse) que servirão, respectivamente, para digitar o CEP a ser procurado, a chave cadastrada no serviço http://www.buscarcep.com.br/. O edUrl será somente leitura e conterá a url composta depois de ter a chave codificada com urlEncode.

Os memos mRequest e mResponse mostrarão, respectivamente, informações do request (pedido) feito ao servidor web e a resposta deste.

Coloque um botão chamado btTesteHttpSend para codificarmos nosso exemplo. Ao final da montagem da form ela ficará como na figura 1:

Não se esqueça de colocar a unit httpsend no …

Busca de CEP com o Lazarus - Parte 1 - UrlEncode

Buscar um endereço através do CEP é importante, tanto para manter as informações do seu cadastro corretas como para evitar fraudes e prejuizos.

Existem vários serviços na web para a busca de CEP, dentre eles podemos citar:

http://www.byjg.com.br/site/xmlnuke.php?xml=onlinecep
e
http://www.buscarcep.com.br/

Neste tutorial vamos aprender a usar o http://www.buscarcep.com.br/ para pesquisar CEP's e auto-preencher formulários de cadastro, usando o lazarus. Tudo o que veremos aqui pode ser aplicado a qualquer outra tecnologia, desde que você saiba lidar com a "matéria prima" necessária.

Matéria prima:
1) Alguma biblioteca para se fazer requisições http a qualquer site.
2) Alguma biblioteca para manupulação de XML
3) Você deve se cadastrar no site http://www.buscarcep.com.br/ e obter uma chave gratuita. A chave gratuita dá o direito a até 10 consultas por minuto. Guarde esta chave.

Primeiro passo: vamos usar a biblioteca synpase para fazer as requisições ao site. Para isso devem…

Strings e Delphi 2010 na Clube Delphi 120

Imagem
Saiu um artigo meu na Revista Clube Delphi 120 sobre strings no Delphi 2010, como migrar, como usar, como elas funcionam e o que mudou com o Unicode.

Na verdade esse assunto daria muito mais "pano pra manga" e apenas os esboçamos.  Sugiro que o leitor acesse o site do Unicode Consortium e observe a quantidade de material que exsite por lá: desde tabelas de caracteres até algoritmos para implementar todas as novas peculiaridades que um sistema multilingue, multicaracter e "multitamanho" deve ter. Especialmente como são formados os caracteres e como são mapeados e classificados, utf8, utf16, utf32 e assim por diante.

Esqueça de vez a antiquíssima tabela ASCII com seus meros 127 caracteres mais os extendidos. As novas linguagens, principalmente as dinâmicas, já são todas unicode e essa mudança no Delphi 2010 não é só esperada como é muito bem-vinda.

Recentemente eu estava conversando com  o Marlon Nardi sobre o problema de você ter um sistema feito em Delphi 7 que usa…

Linux, windows, cloud computing e uma geração de pnéis

Sobre linux, windows, linguagens de programação


Aqui passeando pela net, por motivos um tanto quanto estranhos, resolvi pesquisar sobre o  Kurumin, projeto que como todos sabemos
já está oficialmente descontinuado, e que uma tentativa de continuação gerou alguns atritos entre seus desenvolvedores.
Encontrei um link interessante aqui http://www.gdhpress.com.br/blog/linux-desktop/, onde Morimoto fala que o linux no Desktop já não é tão importante assim, tendo em vista que ele já domina nos servidores e nos sistemas embarcados, e que nos desktops o que irá imperar são as aplicações na nuvem.


Existem muitos comentários, mas este em especial, do próprio morimoto me chamou a atenção:

Eu considero que proposta político-filosófica tem mais atrapalhado do que ajudado na popularização do Linux. Essa insistência em tentar associar "software-livre" com socialismo, militância e movimentos de esquerda é um fator que causa mais aversão ao sistema do que qualquer deficiência técnica.


Concor…

Só dá aula quem quer MUITO

Estava eu no curso de pós graduação da Fatec-SP, disciplina "Didática do Ensino Superior" quando o professor Hiromasa Nagata (Ninja! Grande Guru!) indica o texto http://www.gazetadopovo.com.br/ensino/conteudo.phtml?tl=1&id=975973&tit=Professor-vai-virar-artigo-de-luxo

Triste, mas verdadeiro.