Dispositivo USB contra o mosquito da Dengue Suína, ou algo assim

8 de outubro de 2009 Deixe um comentário

Antigamente existiam as picaretagens. Um dia vieram as picaretagens . Depois as eletrônicas, e hoje as boas picaretagens são todas USB. Afinal, se é para não funcionar muito mais chique se não funcionar via USB.

Idealmente seria via Bluetooth, tudo fica melhor com Bluetooth, mesmo as coisas que não funcionam. Mas na falta, o USB ainda atende as expectativas irrealizáveis. Como por exemplo nesta bagaça aqui:

É um ozonizador? Um alto-falante? Aquecedor?

Não, é um mosquito-killer repelator tabajara USB!

Em teoria (e bota teoria, Jorge) ele emite um sinal ultra-sônico que espanta mosquitos, em um incrível raio de 1,5m². Você sabe, igual aos espanta-mosquitos que não funcionam e são vendidos pelos camelôs, ou os mais caros que também não funcionam e aparecem no 011-1406. Ou os que não funcionam mas sua sogra dá piti se não acha na bagagem, quando vão passar o final de semana em Maricá.

Por sorte o preço de não funcionar é barato, custa apenas US$5,69. Se você quiser testar o site do produto é este aqui.

Anúncios
Categorias:Humor

Padrões Recomendados de Nomenclatura Borland

8 de outubro de 2009 Deixe um comentário

Introdução
Este manual tem por finalidade definir padrões de desenvolvimento, no que diz respeito a nomenclatura e melhores práticas, aos elementos a serem utilizados nos projetos que utilizarem Borland Delphi para Windows 32 bits.
1. Estilos de Capitalização
Existem três tipos de convenções de nomenclatura. São eles: Pascal Case, Camel Case e Upper Case. Em todas as convenções se refere ao uso de maiúsculas ou minúsculas nos nomes. Todas se aplicam a nomes formados por várias palavras.
1.1. Pascal Case
A primeira letra do identificador e as primeiras letras das palavras subseqüentes são maiúsculas.
Exemplo:
BackColor
1.2. Camel Case
A primeira letra da primeira palavra é em minúscula, e as demais palavras subseqüentes iniciam com maiúscula.
Exemplo:
backColor
1.3. Upper Case
Todas as letras são maiúsculas. Usada somente para constantes.
Exemplo:
CHAVE_CRIPTOGRAFIA = String(‘#F$%A&DH’);
2. Tabela de Regras de Capitalização
Tipo
Estilo
Obrigatório
Classes
PascalCase
TClienteCadastro (Utilizar T no início)
Eventos
PascalCase
ValueChange
Variáveis
PascalCase
RedValue
Interface
PascalCase
IDisposable
Métodos
PascalCase
ConverteValor()
Nome de Unit
PascalCase
ClienteCadastroForm.pas
Propriedade
PascaCase
BackColor
Propriedade Public
PascalCase
RedValue
Parâmetro de Métodos
PascalCase
ANomeParametro
Propriedade Protected
PascalCase
RedValue
Propriedade Private
PascalCase
DomainUser
Constantes
UpperCase
CODIGO_SISTEMA
Numeradores
camelCase
(stAberto, stFechado, stDesconhecido)
3. Padrão de Nomenclatura
Nomear corretamente objetos, componentes, arquivos, pastas, enfim, elementos em geral, é muito importante para um bom entendimento do projeto como um todo. Um simples arquivo nomeado errado, ou sem um padrão definido, pode confundir e prejudicar uma futura manutenção. Portanto, questões importantes devem ser consideradas na nomenclatura do projeto:
· Não utilize notação húngara. A notação é útil somente para nomear componentes e, mesmo assim, quando existe a necessidade de identificação facilitada do mesmo;
· Coloque nomes da forma mais clara possível, visando facilitar a compreensão da finalidade;
· Em nomes compostos, faça combinações entre caracteres maiúsculos e minúsculos para PascalCase;
· Utilize abreviações com responsabilidade, e conforme a necessidade;
· Utilize nomes em português;
· Não utilize espaços, acentos, cedilhas, sublinhas ou caracteres especiais, mesmo que o contexto do que está sendo nomeado permita.
3.1. Classes
3.1.1. Classes Objeto
· Nomeie classes objeto com nomes/substantivos;
· Use PascalCase;
· Não use prefixo de classe (por exemplo: CFTP);
· Utilize “T” no início do nome da declaração da classe;
· Não use o caractere de sublinha (_).
Exemplos:
TUsuario = Class;
TUsuarioPadrao = TUsuario;
TUsuarioBasico = TUsuario;
3.2. Interfaces
· Nomeie interfaces com substantivos ou adjetivos que descrevem o comportamento;
· Use PascalCase;
· Não use o caractere de sublinha (_);
· Coloque a letra I como prefixo, para indicar que o tipo é uma interface;
· Use nomes similares quando definir pares de classes/interfaces, onde a classe é uma implementação padrão das interfaces. O nome deve diferir apenas com a letra I, que é o prefixo do nome da interface.
Exemplos:
IUsuarioBase = Interface
TppInterfacedObject = class(TObject, IUnknown)
3.3. Parâmetros
· Use nomes de parâmetros descritivos. Nomes de parâmetros devem ser descritivos o suficiente para que se possa, baseado no nome do parâmetro e seu tipo, determinar o que o parâmetro significa;
· Use PascalCase;
· Use nomes baseados no significado do parâmetro e não baseados no tipo do parâmetro;
· Não use parâmetros reservados (por exemplo: params, args, etc);
· Não use notação Húngara.
Exemplos:
procedure FormataNumero(AValor : Inteiro);
function FormataNumero(AValor : Inteiro) : Integer;
3.4. Variáveis
· Nomeie Variáveis usando substantivos;
· Use PascalCase;
· Nunca utilize o caractere de sublinha (_);
· Quando for variável declarada na interface, utilize “F” no início do nome.
Exemplos:
Private
FNomeUsuario : String;
FSenhaUsuario : String;
Public
FNomeEmpresa : String;
End;
Declaração em métodos:
Procedure ProcessaUsuario(ACodigoUsuario : Integer);
var
ValorTemporario : Integer;
NomeUsuario : String;
begin
//
end;
3.5. Propriedades
· Nomeie propriedades usando substantivos;
· Use PascalCase;
· Considere ter uma propriedade com o mesmo nome do tipo;
· Quando declarar uma propriedade com o mesmo nome do tipo, defina o mesmo tipo da propriedade;
· Não utilize o “T” no início do nome, “T” é utilizado apenas na declaração de tipos.
Exemplos:
private
FNomeUsuario : String;
public
property NomeUsuario : String read FNomeUsuario write FNomeUsuario
3.6. Nome para Arquivos (Units)
· Use PascalCase para nomear arquivos;
· Para formar o nome, utilize o nome da funcionalidade, o tipo da funcionalidade, e o tipo de formulário (form) que você está utilizando (caso esse arquivo seja de um formulário).
Exemplos de formulários:
CategoriaCadastroForm.pas
UsuarioListaForm.pas
EntradaForm.pas
UsuarioPesquisaForm.pas
3.7. Prefixo para Objetos de Interface
· Esses objetos ainda seguem a notação húngara;
· Use as abreviações, nas tabelas a seguir, como prefixo dos objetos;
· Use CamelCase para nomear objetos de interface;
· Utilize a seguinte regra: Três consoantes + Nome do Objeto. Exemplos:
– Query da tabela Banco à qryBanco;
– ClientDataSet da tabela Banco à cdsBanco;
– DataSource ligado ao ClientDataSet à dsrBanco.
Exemplos:
TButton = btnNomeBotao; (Tentar não repetir consoantes).
TADOQuery = qryNomeQuery;
TSpeedButton = sbtNomeBotao;
TActionList = alsNomeActionList;
3.8. Prefixo para Formulários (Form) e Módulos de Dados (DataModule)
· Use CamelCase;
· Form = utilizar “frm” + o nome da funcionalidade;
· DataModule = utilizar “dmd” + o nome da funcionalidade.
Exemplos para DataModule:
dmdClienteProcesso : TDataModule;
dmdClienteCadastro : TDataModule;
dmdPessoaUsuarioCadastro : TDataModule;
Exemplos para Form:
frmClienteProcesso : TFom;
frmClienteCadastro : TForm;
frmPessoaUsuarioCadastro : TForm;
4. Endentação
A endentação citada é sobre o número de espaços entre os níveis de tabulação. Utilize como padrão 2 espaços. Este padrão pode ser configurado na janela de opções do Borland Delphi.
Evite escrever linhas com mais de 80 posições entre espaços e caracteres. A idéia é facilitar a compreensão do código e, se possível, visualizar a linha inteira em seu editor de código. Caso alguns trechos de código fiquem muito extensos, poderá ser feita a quebra da linha, entretanto é necessário seguir os seguintes princípios:
· Quebrar a linha após uma vírgula;
· Quebrar a linha após um operador;
· Alinhar a nova linha no início da expressão no mesmo nível da linha anterior.
Exemplos:
calculaArea(expr1, expr2, expr3,
expr4, expr5);
ou
var := a *b / (c – g + f) +
4 * z;
Outra questão importante é a utilização de espaços em branco para endentação. Utilize espaços em branco para endentação, nunca use tabulação!
5. Comentários
Os comentários são muito importantes, tanto para relembrar você como para orientar outra pessoa sobre a manutenção do código fonte. Comente tudo que puder, da seguinte forma:
· Utilize as duas barras “//” para comentar trechos de código;
· Utilize “{}” para comentar blocos.
5.1. Cabeçalho de Arquivos (Units)
Comentários de cabeçalho são importantes para saber quem foi o responsável pelo desenvolvimento e as alterações aplicadas na unit. Portanto:
· Descreva o propósito da unit;
· Coloque o nome do programador responsável pelo desenvolvimento inicial da unit;
· Coloque o nome do analista responsável;
· O item Revisões será utilizado quando for feita uma manutenção na unit;
· Comentários adicionais são importantes caso as alterações efetuadas nessa unit possam afetar alguma outra funcionalidade do sistema.
Exemplo:
(*——————————————————————
Propósito da Unit:
Programador: Data: ??
Analista Responsável:
Revisões:
Programador:
Data: Descrição da Revisão
Comentários adicionais:
——————————————————————*)
5.2. Cabeçalho de Métodos
Ao descrever o cabeçalho de um Método:
· Utilize comentário de bloco;
· Não seja detalhista, tente ser objetivo em seu comentário;
· Comente sobre os parâmetros, caso hajam.
Exemplo:
{——————————————————————-
* Propósito do Método: Exibir uma mensagem de Pergunta utilizando MessageBox
*
* Utilização dos parâmetros:
ATitulo = Titulo da Mensagem (Caption).
AMensagem = Mensangem que ira aparecer no corpo do MessageBox.
Result = Retorna True caso seja selecionado a opção Sim no MessageBox.
* Autor / Data: Everson R. Novka 09/06/2006
*——————————————————————}
class function TFWMensagem.Pergunta(const ATitulo,
AMensagem: String): Boolean;
begin
Result := (MessageBox(0, PChar(AMensagem), pChar(ATitulo),
MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = idYes);
end;
5.3. Comentários dentro de métodos
· Utilize “//” para comentários de apenas um linha;
· Utilize comentário em bloco ( { … } ) somente em rotinas para comentários de mais de uma linha, a questão visual é fundamental para um melhor entendimento.
Exemplo:
function TfrmMovPontoManual.tbKeyIsDown(const key: integer): boolean;
begin
//Retorna se a tecla especificada está pressionada.
//Gislaine – 26/09/2005
Result := GetKeyState(Key) and 128 > 0;
end;
}

Introdução

Este manual tem por finalidade definir padrões de desenvolvimento, no que diz respeito a nomenclatura e melhores práticas, aos elementos a serem utilizados nos projetos que utilizarem Borland Delphi para Windows 32 bits.


1. Estilos de Capitalização

Existem três tipos de convenções de nomenclatura. São eles: Pascal Case, Camel Case e Upper Case. Em todas as convenções se refere ao uso de maiúsculas ou minúsculas nos nomes. Todas se aplicam a nomes formados por várias palavras.

1.1. Pascal Case

A primeira letra do identificador e as primeiras letras das palavras subseqüentes são maiúsculas.
Exemplo:

BackColor


1.2. Camel Case

A primeira letra da primeira palavra é em minúscula, e as demais palavras subseqüentes iniciam com maiúscula.
Exemplo:

backColor


1.3. Upper Case

Todas as letras são maiúsculas. Usada somente para constantes.
Exemplo:

CHAVE_CRIPTOGRAFIA = String(‘#F$%A&DH’);


2. Tabela de Regras de Capitalização

Tipo
Estilo
Obrigatório
Classes
PascalCase
TClienteCadastro (Utilizar T no início)
Eventos
PascalCase
ValueChange
Variáveis
PascalCase
RedValue
Interface
PascalCase
IDisposable
Métodos
PascalCase
ConverteValor()
Nome de Unit
PascalCase
ClienteCadastroForm.pas
Propriedade
PascaCase
BackColor
Propriedade Public
PascalCase
RedValue
Parâmetro de Métodos
PascalCase
ANomeParametro
Propriedade Protected
PascalCase
RedValue
Propriedade Private 
PascalCase
DomainUser
Constantes
UpperCase
CODIGO_SISTEMA
Numeradores
camelCase
(stAberto, stFechado, stDesconhecido)


3. Padrão de Nomenclatura

Nomear corretamente objetos, componentes, arquivos, pastas, enfim, elementos em geral, é muito importante para um bom entendimento do projeto como um todo. Um simples arquivo nomeado errado, ou sem um padrão definido, pode confundir e prejudicar uma futura manutenção. Portanto, questões importantes devem ser consideradas na nomenclatura do projeto:
· Não utilize notação húngara. A notação é útil somente para nomear componentes e, mesmo assim, quando existe a necessidade de identificação facilitada do mesmo;
· Coloque nomes da forma mais clara possível, visando facilitar a compreensão da finalidade;
· Em nomes compostos, faça combinações entre caracteres maiúsculos e minúsculos para PascalCase;
· Utilize abreviações com responsabilidade, e conforme a necessidade;
· Utilize nomes em português;
· Não utilize espaços, acentos, cedilhas, sublinhas ou caracteres especiais, mesmo que o contexto do que está sendo nomeado permita.

3.1. Classes

3.1.1. Classes Objeto

· Nomeie classes objeto com nomes/substantivos;
· Use PascalCase;
· Não use prefixo de classe (por exemplo: CFTP);
· Utilize “T” no início do nome da declaração da classe;
· Não use o caractere de sublinha (_).
Exemplos:

TUsuario = Class;
TUsuarioPadrao = TUsuario;
TUsuarioBasico = TUsuario;


3.2. Interfaces

· Nomeie interfaces com substantivos ou adjetivos que descrevem o comportamento;
· Use PascalCase;
· Não use o caractere de sublinha (_);
· Coloque a letra I como prefixo, para indicar que o tipo é uma interface;
· Use nomes similares quando definir pares de classes/interfaces, onde a classe é uma implementação padrão das interfaces. O nome deve diferir apenas com a letra I, que é o prefixo do nome da interface.
Exemplos:

IUsuarioBase = Interface
TppInterfacedObject = class(TObject, IUnknown)


3.3. Parâmetros

· Use nomes de parâmetros descritivos. Nomes de parâmetros devem ser descritivos o suficiente para que se possa, baseado no nome do parâmetro e seu tipo, determinar o que o parâmetro significa;
· Use PascalCase;
· Use nomes baseados no significado do parâmetro e não baseados no tipo do parâmetro;
· Não use parâmetros reservados (por exemplo: params, args, etc);
· Não use notação Húngara.
Exemplos:

procedure FormataNumero(AValor : Inteiro);
function FormataNumero(AValor : Inteiro) : Integer;


3.4. Variáveis

· Nomeie Variáveis usando substantivos;
· Use PascalCase;
· Nunca utilize o caractere de sublinha (_);
· Quando for variável declarada na interface, utilize “F” no início do nome.
Exemplos:

Private

FNomeUsuario : String;

FSenhaUsuario : String;

Public

FNomeEmpresa : String;

End;



Declaração em métodos:

Procedure ProcessaUsuario(ACodigoUsuario : Integer);

var

ValorTemporario : Integer;

NomeUsuario : String;

begin

//

end;


3.5. Propriedades

· Nomeie propriedades usando substantivos;
· Use PascalCase;
· Considere ter uma propriedade com o mesmo nome do tipo;
· Quando declarar uma propriedade com o mesmo nome do tipo, defina o mesmo tipo da propriedade;
· Não utilize o “T” no início do nome, “T” é utilizado apenas na declaração de tipos.
Exemplos:

private

FNomeUsuario : String;

public

property NomeUsuario : String read FNomeUsuario write FNomeUsuario

3.6. Nome para Arquivos (Units)

· Use PascalCase para nomear arquivos;
· Para formar o nome, utilize o nome da funcionalidade, o tipo da funcionalidade, e o tipo de formulário (form) que você está utilizando (caso esse arquivo seja de um formulário).
Exemplos de formulários:

CategoriaCadastroForm.pas
UsuarioListaForm.pas
EntradaForm.pas
UsuarioPesquisaForm.pas


3.7. Prefixo para Objetos de Interface

· Esses objetos ainda seguem a notação húngara;
· Use as abreviações, nas tabelas a seguir, como prefixo dos objetos;
· Use CamelCase para nomear objetos de interface;
· Utilize a seguinte regra: Três consoantes + Nome do Objeto. Exemplos:
Query da tabela Banco à qryBanco;
ClientDataSet da tabela Banco à cdsBanco;
DataSource ligado ao ClientDataSet à dsrBanco.
Exemplos:

TButton = btnNomeBotao; (Tentar não repetir consoantes).
TADOQueryqryNomeQuery;
TSpeedButton = sbtNomeBotao;
TActionList = alsNomeActionList;


3.8. Prefixo para Formulários (Form) e Módulos de Dados (DataModule)

· Use CamelCase;
· Form = utilizar “frm” + o nome da funcionalidade;
· DataModule = utilizar “dmd” + o nome da funcionalidade.

Exemplos para DataModule:

dmdClienteProcesso : TDataModule;
dmdClienteCadastro : TDataModule;
dmdPessoaUsuarioCadastro : TDataModule;


Exemplos para Form:

frmClienteProcesso : TFom;
frmClienteCadastro : TForm;
frmPessoaUsuarioCadastro : TForm;


4. Endentação

A endentação citada é sobre o número de espaços entre os níveis de tabulação. Utilize como padrão 2 espaços. Este padrão pode ser configurado na janela de opções do Borland Delphi.

Evite escrever linhas com mais de 80 posições entre espaços e caracteres. A idéia é facilitar a compreensão do código e, se possível, visualizar a linha inteira em seu editor de código. Caso alguns trechos de código fiquem muito extensos, poderá ser feita a quebra da linha, entretanto é necessário seguir os seguintes princípios:
· Quebrar a linha após uma vírgula;

· Quebrar a linha após um operador;

· Alinhar a nova linha no início da expressão no mesmo nível da linha anterior.
Exemplos:

calculaArea(expr1, expr2, expr3,

expr4, expr5);

ou

var := a *b / (c – g + f) +

4 * z;


Outra questão importante é a utilização de espaços em branco para endentação. Utilize espaços em branco para endentação, nunca use tabulação!

5. Comentários

Os comentários são muito importantes, tanto para relembrar você como para orientar outra pessoa sobre a manutenção do código fonte. Comente tudo que puder, da seguinte forma:
· Utilize as duas barras “//” para comentar trechos de código;
· Utilize “{}” para comentar blocos.

5.1. Cabeçalho de Arquivos (Units)

Comentários de cabeçalho são importantes para saber quem foi o responsável pelo desenvolvimento e as alterações aplicadas na unit. Portanto:
· Descreva o propósito da unit;
· Coloque o nome do programador responsável pelo desenvolvimento inicial da unit;
· Coloque o nome do analista responsável;
· O item Revisões será utilizado quando for feita uma manutenção na unit;
· Comentários adicionais são importantes caso as alterações efetuadas nessa unit possam afetar alguma outra funcionalidade do sistema.





Exemplo:

(*——————————————————————
Propósito da Unit:
Programador: Data: ??
Analista Responsável:
Revisões:
Programador:
Data: Descrição da Revisão
Comentários adicionais:
——————————————————————*)


5.2. Cabeçalho de Métodos

Ao descrever o cabeçalho de um Método:
· Utilize comentário de bloco;
· Não seja detalhista, tente ser objetivo em seu comentário;
· Comente sobre os parâmetros, caso hajam.
Exemplo:

{——————————————————————-
* Propósito do Método: Exibir uma mensagem de Pergunta utilizando MessageBox
*
* Utilização dos parâmetros:
ATitulo = Titulo da Mensagem (Caption).
AMensagem = Mensangem que ira aparecer no corpo do MessageBox.
Result = Retorna True caso seja selecionado a opção Sim no MessageBox.
* Autor / Data: Everson R. Novka 09/06/2006
*——————————————————————}
class function TFWMensagem.Pergunta(const ATitulo,
AMensagem: String): Boolean;
begin
Result := (MessageBox(0, PChar(AMensagem), pChar(ATitulo),
MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = idYes);
end;


5.3. Comentários dentro de métodos

· Utilize “//” para comentários de apenas um linha;
· Utilize comentário em bloco ( { … } ) somente em rotinas para comentários de mais de uma linha, a questão visual é fundamental para um melhor entendimento.
Exemplo:
function TfrmMovPontoManual.tbKeyIsDown(const key: integer): boolean;
begin
//Retorna se a tecla especificada está pressionada.
//Gislaine – 26/09/2005
Result := GetKeyState(Key) and 128 > 0;
end;
}

Fonte: http://www.delphi.eti.br

Categorias:Delphi

Delphi 2010

8 de outubro de 2009 Deixe um comentário

Mais um video produzido pela Embarcadero com as novidades do Delphi 2010, mas desta vez em português.

Categorias:Desenvolvimento

Internet: Mania, moda ou necessidade?

Bem, este é meu primeiro post nesse blogger, espero que alguem possa ler e compartilhar dos meus pensamentos, não quero ficar famoso, mas também não quero passar em branco a minha vida. Se dividir informações parte da web quero faze-lo.

Começando…

Alguem ainda lembra da internet como era no passado?

Conexão lenta, sites simples, utilização do HTML básico, no máximo com uso de gif´s animados para dar uma cara ao site.

Viviamos na espera do fim do barulho de conexão do Fax-modem mada entrar nesse mudo gigante.

Relacionamentos? Só nas salas de bate-papo lotadas dos grandes provedores ou no IRC, também repleto de gente com boas e más intenções.

Messenger e afins? Que nada, o bom mesmo era teclar com o bom e velho icq, ainda fazendo barulhinho de máquina de escrever.

Apesar de ser fascinante era um mundo nem tanto escêncial, um mundo que poderia ser admirado e lido pelas janelas de nossos navegadores. Figuras eram poucas, até porque ficavam pesadas nos sites.

O Tempo passou, a internet ganhou vida própria, ganhou mais velocidade, virou um meio de comércio, marketing, carreira,  vida social, diversão, educação, lazer, conhecimento,  em fim, virou parte de nossas vidas quase uma necessidade.

A grandeza dessa ferramenta é tão notória que hoje é difícil imaginar PC sem internet. De fato o acesso a web que antes um privilégio de poucos hoje é uma necessidade quase que obrigatória para muitos.

Prova disso tudo foi a grande mudança comportamental da sociedade. Um exemplo comum de hoje seria ver os inumeros relacionamentos estão começando pela web. É muito fácil ver o perfil da pessoa em um site de relacionamentos e ja saber antes a fisionomia de quem você está realmente falando. Claro que existem casos infelizes de pessoas enganadas por fakes, por uma foto antiga ou que valorizou mais a embalagem do que o conteúdo, mas existem sempre um risco a se correr. Fora isso hoje compramos, analisamos, aprendemos, matamos a saudade e mantemos uma vida  de  maneira paralela a internet.

Ate quanto isso é sadio para as nossas mentes? Será que o ser humano pode perder a sinceridade de ter uma conversa olho no olho? de manifestar suas emoções além de um emoticon?

Acredito que a sociedade tem que se ponderar e rever os seus conceitos, pois a tecnologia tem evoluído e ganhado vida, porém nossas mentes estão atrofiadas e cada vez mais dependentes da Internet.

Categorias:Web