Duas Ferramentas Úteis para Windows: SuperCopier e FolderSize

Escrito em 14 de Setembro de 2007 em Utilitários por Leonel Togniolli

SuperCopier

Um dos recursos do Windows que praticamente nunca foram atualizados é a cópia de arquivos. Um diálogo modal que mostra um vago progresso da cópia, qualquer erro cancela o processo e, em geral, muito pouco controle sobre a cópia que está sendo feita. SuperCopier é uma aplicação que substitui o sistema de cópia de arquivos do Windows Explorer. Automaticamente, ao copiar um arquivo, você tem esse diálogo:

SuperCopierScreenshot

É possível acompanhar o progresso da cópia de cada arquivo, do total, pausar a cópia, e até alterar a lista de arquivos conforme a cópia é feita. Baixe o código fonte em Delphi na página do projeto, ou o instalador.

FolderSize

Cada dia discos rígidos vem com mais capacidade, e de alguma forma é cada vez mais fácil encher todas essas centenas de gigabytes. Existem várias formas de analizar o que está usando todo o espaço em um HD, mas nada como ter uma coluna mostrando o tamanho ocupado pelo conteúdo de uma pasta, direto no Windows Explorer. É isso que o FolderSize faz:

FolderSizeScreenshot

Um fato interessante que encontrei no FAQ é que o serviço que determina o tamanho do conteúdo de cada pasta monitora a utilização do disco rígido e pausa a sua operação caso a fila de requisições de disco esteja alta, para não atrapalhar a performance do seu computador. Vale a pena dar uma olhada.

Se você é novo por aqui, não deixe de assinar o feed RSS ou notificações por email. Não perca novos artigos!

Video Aula ASP.Net 2.0 com Delphi 2007 e BlackfishSQL

Escrito em 13 de Setembro de 2007 em Asp.Net, Video Aulas por Leonel Togniolli

Essa é uma introdução que mostra como criar uma simples aplicação em ASP.Net 2.0 com o Delphi 2007 mostrando dados de uma tabela em um servidor de banco de dados BlackfishSQL. Também mostra os novos layouts que estão incluidos on Delphi 2007, usando CSS e MasterPages.

Veja o vídeo aqui.

Novidades em Banco de Dados no Delphi 2007 para .Net e RAD Studio 2007

Escrito em 12 de Setembro de 2007 em Bancos de Dados, Delphi por Leonel Togniolli

Já falei sobre as novidades na linguagem, em ASP.Net e no ECO IV no Delphi 2007 para .Net e RAD Studio 2007. O próximo tópico é novidades na área de Banco de Dados.

BlackfishSQL para .Net

BlackfishSQL é um novo banco de dados, para .Net, escrito 100% em código gerenciado, sem qualquer dependência de DLLs do windows. Você já pode ter ouvido falar sobre o BlackfishSQL com os nomes NDataStore e SqlDataStore.

Ele possui um código unificado com o BlackfishSQL para Java, anteriormente JDataStore, sendo completamente compatível em protocolo e formato do arquivo de banco de dados. Na prática, ao usar BlackfishSQL, você pode ter um servidor em qualquer plataforma que possua uma VM .Net ou Java. Outro ponto importante é que, apesar de BlackfishSQL para .Net ser um novo produto, é na prática versão 8.0 (seguindo o JDataStore 7), tendo um núcleo maduro, testado e já bastante utilizado.

Um dos recursos mais interessantes do BlackfishSQL é poder escrever Stored Procedures e triggers em Delphi, dentro da IDE, como você sempre fez com suas aplicações. Isso permite também depurar as stored procedures usando o debugger do Delphi, como se você estivesse depurando sua própria aplicação. Basta colocar os breakpoints e iniciar a sessão de depuração. É sem dúvida uma forma muito mais eficiente e produtiva de colocar sua regra de negócio no banco de dados do que aprender um dialeto SQL específico dos outros bancos de dados.

Existem três drivers para o BlackfishSQL. Os dois primeiros são para aplicações .Net, sendo um Local, onde o servidor roda no próprio processo e acessa o banco de dados diretamente, e um Remoto, que utiliza TCP/IP para acessar um servidor Blackfish rodando na mesma máquina ou remotamente. É interessante notar que a distribuição de uma aplicação que utiliza um driver Ado.Net Local para Blackfish é copiar e rodar - não é necessária nenhuma configuração ou instalação.

Isso torna BlackfishSQL para .Net uma escolha bastante interessante para distribuir aplicações Asp.Net - o seu servidor de hospedagem não precisa ter um servidor de banco de dados instalado, e você não precisa pagar a mais por isso - basta copiar a versão Local do driver .Net, o arquivo de banco de dados (ou deixar sua aplicação criá-lo com os novos recursos de metadados que vou mostrar mais pra frente), e sua aplicação web está pronta pra funcionar.

O Blackfish SQL Developer Guide está disponível para download no CodeCentral - 205 páginas de documentação, exemplos e bastante informação pra quem está interessado em ver o que o BlackfishSQL oferece.

DbxClient

A terceira forma de acessar um servidor BlackfishSQL é um protocolo JSON/RPC implementado por um novo driver dbExpress, chamado DbxClient, através de aplicações VCL para Win32 ou .Net. Isso permite você acessar um servidor BlackfishSQL, com suas regras de negócio escritas em Delphi, através de clientes Win32, sem precisar depender do framework .Net em cada estação.

Isso torna BlackfishSQL o nono banco de dados que dbExpress suporta diretamente nessa nova versão, para .Net e Win32. DbxClient é mais um driver escrito em Delphi e que possui todo o código fonte incluído no produto.

Por enquanto BlackfishSQL é o unico servidor que é acessível pelo protocolo DbxClient, mas aguarde notícias sobre esse assunto - na minha opinião, é um tópico bastante promissor.

DbxReadOnlyMetadata e DbxMetadata

DBX4 continua a evoluir, e desta vez é criando uma base sólida de metadados bastante ricos, completamente escrita em Delphi e com o código fonte disponível.

DbxReadOnlyMetadata é uma extensão do dbExpress permitindo ler metadados, de uma forma fácil, prática e comum, de qualquer um dos nove banco de dados suportados. Está disponível em Win32 e .Net. Além de informações sobre a conexão (se ela diferencia maisculas e minusculas, se possui schemas, quais os caracteres de inicio e fim de aspas, etc), é possível obter as seguintes informações sobre o banco:

  1. Tipos de Dados
  2. Catalogs
  3. Schemas
  4. Tabelas
  5. Views
  6. Synonms
  7. Colunas (de tabelas, views, etc)
  8. Indices
  9. Campos que compõe cada indice
  10. Chaves Extrangeiras
  11. Campos que compõe cada chave extrangeira
  12. Stored Procedures
  13. Código Fonte de Stored Procedures
  14. Parametros de Stored Procedures
  15. Package Stored Procedures
  16. Código Fonte de Package Stored Procedures
  17. Parametros de Package Stored Procedures
  18. Usuários
  19. Roles
  20. Palavras Reservadas

Os itens em negrito são comandos novos de metadatados introduzidos nessa nova versão. Todos eles podem ser acessados utilizando uma query com o CommandType Metadata, e o resultado vem como um resultado comum de query, podem ser manipulado com os componentes que já estamos acostumados, ou exibido em grid e assim por diante.

DbxMetadata é a versão de escrita de metadados. Ela gera commandos SQL de Create, Alter e Drop de acordo com coleções que são passadas, gerando tabelas, indices, e vários outros objetos. Extremamente útil para quem quer escrever um aplicação independende de banco de dados, não precisando se preocupar com o sintaxe especifica de cada banco. Criar uma tabela é mais ou menos assim:

begin
  MetaDataTable := TDBXMetaDataTable.Create;
  MetaDataTable.TableName := 'TABELA';
  MetaDataTable.AddColumn(TDBXInt32Column.Create(’Coluna1′));
  MetaDataTable.AddColumn(TDBXDecimalColumn.Create(’Coluna2′, 10, 2));
  MetaDataTable.AddColumn(TDBXUnicodeCharColumn.Create(’Coluna3′, 32));
  MetaDataProvider.CreateTable(MetaDataTable);
end;

A parte de escrita de DbxMetadata só está disponível para a plataforma .Net nessa versão, mas nada impede que seja disponibilizado para Win32 no futuro.

Certified Test Suite e Geradores de Dados

Tendo como objetivo a melhor qualidade possível dos drivers dbExpress incluidos no produto e dos de terceiros, foi criada uma suite de testes automatizados de certificação para dbExpress. Completamente escrita em Delphi e com todo o código fonte disponível. Não é só quem escreve drivers que vai se interessar em aproveitar essa suite - as extensões para o DUnit e as rotinas para trabalhar com dados podem ser usadas por qualquer um que efetue testes automatizados em aplicações de bancos de dados - ou quem está pensando em começar.

Entre o conteúdo dessa suíte, vale um destaque para o TDbxDataGenerator e classes relacionadas. Ela auxilia o controle de qualidade gerando valores para popular tabelas para testes, depois que foram criadas com as rotinas de DbxMetadata mostradas acima, de acordo com o tipo de cada coluna.

AdoDbxClient

Para quem escreve aplicações Asp.Net ou ECO, está disponível o AdoDbxClient. Ele é um provider Ado.Net 2.0 nativo que permite a utilização de drivers dbExpress diretamente em Ado.Net 2.0. Não é mais necessário utilizar classes ou componentes diferentes como era com o BDP - basta programar utilizando DbConnection, DbCommand e afims, de uma forma independente de banco de dados, podendo determinar em tempo de execução se será utilizado os providers do framework .net (SqlClient, OracleClient), os do BlackfishSQL para ADO.Net (Local e Remote), ou qualquer um dos nove drivers suportados em dbExpress.

E Tudo o Mais

Além de tudo isso existem diversas pequenas melhorias e correções de problemas, parte de um processo constante de aperfeiçoamento.

Essa versão, apesar de ser um produto .Net completando o RAD Studio com o Delphi para Win32 e C++Builder já existentes, possui recursos que podem interessar a vários tipos de desenvolvedores, inclusive os que só trabalham com código nativo. Não deixe de conferir a nova versão!

CodeGear Rad Studio 2007, Delphi 2007 para .Net e Delphi 2007 para Win32 Update 3 já disponíveis para Download

Escrito em 11 de Setembro de 2007 em Delphi por Leonel Togniolli

O CodeGear Rad Studio 2007 acaba de ser lançado e já está disponível imediatamente para download para quem comprar pela internet. Isso não é novidade. O interessante é que desta vez a versão trial não demorou e foi disponibilizada simultaneamente - baixe já o CodeGear Rad Studio 2007 Trial.

Outro ponto interessante é que as correções feitas para o Rad Studio 2007 estão disponíveis como Update 3 para o Delphi 2007 para Win32. É possível fazer o download manualmente ou ser notificado ao abrir a IDE e baixar a atualização automaticamente, se tiver habilitado esta opção durante a instalação. Cerca de 100 correções incluidas nessa atualização são resultado de bug reports feitos diretamente no QualityCentral.

Novidades no novo Delphi 2007 para .Net/RAD Studio 2007

Escrito em 11 de Setembro de 2007 em Delphi por Leonel Togniolli

A nova versão do Delphi 2007 acaba de ser lançada, e é o Delphi 2007 para .Net, que completa o studio junto com o Delphi 2007 para Win32 e o C++Builder 2007. O studio completo com as três linguagens está sendo chamado de RAD Studio 2007. As correções para cerca de 100 reports relacionados a Win32, vindos do QualityCentral estarão disponíveis logo como Update 3 para quem já tem o Delphi 2007 para Win32.

Novidades na Linguagem

Para quem usa .Net, o suporte para .Net 2.0 tem sido bastante esperado. Além de acesso as dezenas de novas classes no framework 2.0 do .Net, essa versão trás um novo recurso na linguagem extremamente importante: Generics.

Generics é um recurso que permite implementar algorítimos e escrever código de uma forma genérica para que ele funcione com qualquer tipo de dados. Classes ou métodos de classe podem possuir parâmetros que permitem que o tipo no qual ela irá operar seja determinado apenas no momento de utilizá-la. Uma classe genérica parece mais ou menos com isso:

type
  TLista<T> = class
  public
    procedure Adiciona(Item: T);
    procedure Remove(Item: T);
    property Items[i: Integer]: T read GetItem;
  end;

T é um parâmetro da classe, que determina o tipo da lista. Dessa forma, posso utilizar essa classe das seguintes formas

var
  ListaInteiros: TLista<Integer>;
  ListaStrings: TLista<string>;
  ListaClientes: TLista<TCliente>;

Métodos de classe também podem possuir parâmetros de tipo:

procedure TUtil.Troca<T>(var A, B: T);
var
  Temp: T;
begin
  Temp := A;
  A := B;
  B := Temp;
end;

Generics é um recurso extremamente poderoso, e um assunto extenso. Fique ligado em artigos futuros, onde pretendo detalhar a sintaxe e propor exemplos mais completos de utilização.

ASP.Net 2.0 

ASP.Net no framework 1.0 já era bastante produtivo, e com as melhorias no 2.0 você agora pode desenvolver aplicações Web muito mais facilmente em Delphi. ASP.Net 2.0 possui masterpages, que permite definir o layout do site em um arquivo comum, e permitir que páginas de conteúdo preencham espaços pré-determinados nas master pages. Acredito que seja o equivalente mais próximo de herança visual de formulários que temos em aplicações web hoje.

A IDE vem com diversos templates de layouts pré-definidos, como layouts de duas ou três colunas, cabeçalhos, rodapés, e assim por diante, definidos em CSS, permitindo já partir para o desenvolvimento do seu website adaptando um dos layouts existentes. É bastante fácil criar seus próprios templates com novos layouts também, e distribuir para outros usuários.

Os Live Templates também foram extendidos para facilitar a escrita de html, gerando automaticamente vários trechos do HTML, desde divs até layouts completos, funcionando de modo similar aos Live Templates em código Delphi.

O framework de ASP.Net 2.0 inclui providers para facilitar tarefas comuns em aplicações web, mas eles dependem de um servidor Sql Server. O Delphi 2007 para .Net possui providers escritos em Delphi que utilizam DBX, aumentando consideravelmente as suas opções ao escolher um banco de dados. Os providers incluídos facilitam diversas tarefas: cadastro de usuários (membership provider), personalização (personalization provider), papéis de usários (role provider), perfil de usuários (profile provider).

Aplicações para ASP.Net no Delphi 2007 para .Net ainda possuem um diferencial a mais, que é a facilidade de criar um banco de dados em um servidor de hospedagem sem precisar instalar mais nada ou pagar mais por isso. Mas isso é assunto para o tópico de novidades na área de banco de dados, no artigo de amanhã.

ECO IV

Eco IV é a nova versão do Enterprise Core Objects, e possui um grande novo recurso: suporte a VCL.Net. Pessoalmente, nunca gostei de interfaces WinForms, por estar acostumado à facilidade e recursos que VCL sempre me proporcionou. Agora é possível modelar suas classes de negócio em UML e utilizá-las em componentes DbAware com formulários VCL como você sempre fez, tornando muito mais fácil o desenvolvimento de uma aplicação ECO, e abrindo as portas para os recursos da VCL. Isso torna ECO muito mais acessível a todos que já estão acostumados com o desenvolvimento com controles DbAware, sem abrir mão da organização e e produtividade de um projeto orientado a objetos.

Banco de Dados

Pelas muitas melhorias na área de banco de dados, e por ser a área que pessoalmente participei do desenvolvimento, ela merece um artigo a parte. Fique ligado para as melhorias na área de banco de dados no Delphi 2007 para .Net/RAD Studio 2007.