| Projetos Delphi - Aplicativos |
| Explorador DB |
| Grau de Utilidade: 10 (alto) |
| Grau de Dificuldade: 10 (alto) |
|
Descrição: conjunto integrado de subsistemas que auxiliam no
acesso, configuração, manutenção e documentação de bases de dados,
criação e emissão de relatórios (simples e complexos), importação e
exportação de dados, entre outras atividades relacionadas. Conta com
os seguintes subsistemas: subsistema de configuração de acesso a
dados, permitindo a definição (persistente) dos parâmetros de
conexão a um determinado banco de dados, indicando, em especial,
a camada de acesso a dados utilizada (BDE, ADO, ...); subsistema
de exploração de meta dados, permitindo a consulta e impressão
de catálogos, a geração de scripts de objetos do banco a partir de
catálogos, a realização de backup de tabelas dos catálogos, a
sincronização de catálogos de bancos de dados distintos, etc;
subsistema de exploração SQL, com editor de texto com suporte
a identificação de sintaxe, funcionalidade para execução de comandos
SQL simples, em batch e até mesmo consultas heterogêneas entre
vários bancos; subsistema de construção visual de consultas,
para facilitar a consulta a dados por usuários finais; subsistema
de criação de tabelas de referência cruzada, permitindo a derivação
de visões complexas dos dados através da definição de colunas, na visão
derivada, representando valores de campos nas tabelas/visões existentes;
subsistema de dicionário de dados, permitindo a geração de um
dicionário a partir de um catálogo e a criação de um novo banco a partir
de um dicionário existente; subsistema de importação e exportação de
dados, permitindo a troca de dados entre bancos; subsistema de
geração de relatórios, permitindo ao usuário a criação visual de
soluções completas de relatórios simples e complexos. Particularmente
útil para programadores e analistas que desejam de alguma forma manipular,
documentar ou consultar os dados ou meta dados de um ou mais bancos de
dados; igualmente útil para usuários finais que desejam documentar seus
sistemas, extrair relatórios dos dados existentes, migrar ou exportar
dados entre diversos formatos, etc. Observação: o aplicativo
pode ser desmembrado em aplicativos independentes e ser transformado
num suite.
|
| Explorador Web |
| Grau de Utilidade: 07 (regular-alto) |
| Grau de Dificuldade: 07 (regular-alto) |
|
Descrição: Aplicativo que permite a automação do processamento de
formulários web que utilizam os métodos GET e POST para envio de seus dados.
Primeiramente, o usuário seleciona a página web onde se encontra o formulário
que deseja automatizar. Em seguida, define quais os parâmetros do formulário
que receberão valores fixos e quais os que receberão valores variando de acordo
com as opções disponíveis. Finalmente, o usuário define como a consulta será
executada e de que forma seus resultados serão armazenados na estação de trabalho.
Será possível armazenar o stream HTML resultante das pesquisas, assim como
processar esse stream para extrair informações contidas no HTML, como tabelas
de dados e outras informações mais específicas. Outras funcionalidades adicionais
poderiam incluir: pesquisa (recursiva) de links quebrados em sites, pesquisa por
listas de referências (e-mails ou sites externos) em sites, download completo
de um site para navegação offline (com correção de referências), gerenciador de
downloads. Particularmente útil para extração de dados em sites que disponibilizam
interfaces de consulta a bancos de dados complexos, para manutenção de sites
e para manipulação de sites offline. Observação: o aplicativo pode ser
desmembrado em aplicativos independentes e ser transformado num suite.
|
| Gerenciador Avançado de Arquivos |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Aplicativo que permite a execução de operações avançadas em
conjuntos de arquivos selecionados. A idéia do aplicativo é permitir a seleção
de um conjunto de arquivos de forma simples e flexível para, a partir desse
conjunto, realizar operações avançadas como: alteração de data/hora dos
arquivos, localização e substituição de textos nos arquivos, inclusão de
blocos de texto em posições específicas dos arquivos, comparação de conteúdo
de arquivos e estruturas de diretórios, sincronização de conteúdo de arquivos
e diretórios, dentre outras. Seu principal objetivo é oferecer um conjunto
avançado de recursos, complementares aos serviços oferecidos pelo Windows
Explorer.
|
| Dir Printer |
| Grau de Utilidade: 05 (regular) |
| Grau de Dificuldade: 02 (baixo) |
|
Descrição: Aplicativo que utiliza um conjunto de pastas do sistema de
arquivos como um spool de impressão em alto nível. O aplicativo verifica, a
cada intervalo (configurável) de tempo t, o conteúdo das pastas de
spool e imprime, segundo opções previamente definidas, os documentos
contidos nessas pastas. Particularmente útil para impressão em horários
definidos ou impressão remota, utilizando o protocolo FTP para transferência
de arquivos para o spool remoto.
|
| WordPad: Editor de Textos com Sintaxe |
| Grau de Utilidade: 07 (regular) |
| Grau de Dificuldade: 02 (baixo) |
|
Descrição: Editor de textos orientado para códigos fonte com iluminação
de sintaxe. Permite a definição de projetos (conjunto de arquivos), a definição
de salvamento automático dos textos, o registro de novas sintaxes e associação
de extensões de forma a flexibilizar o uso do editor com códigos fonte de
linguagens não incluídas na versão original, definição de linha de comando
para compilação, verificação de sintaxe ou link-edição do códigio editado,
etc. Particularmente útil para programadores de scripts e aplicativos que
necessitem de um editor rápido, versátil e inteligente para trabalhar fora do
ambiente integrado de produção; útil também para programadores que não gostam
de utilizar ferramentas visuais de desenvolvimento para web que incluem
tags e sujam o código da página web resultante.
|
| Proxy IP |
| Grau de Utilidade: 07 (regular) |
| Grau de Dificuldade: 06 (regular) |
|
Descrição: Proxy de serviços TCP e UDP básicos, com o propósito de
disponibilizar uma infra-estrutura simples e eficiente de encaminhamento
e controle de transferência de conteúdo IP entre redes, através de uma
máquina que participa das duas redes. Particularmente útil para implementar
o compartilhamento de acesso a Internet em redes locais.
|
| Sistema de Avaliações |
| Grau de Utilidade: 07 (regular) |
| Grau de Dificuldade: 04 (regular-baixo) |
|
Descrição: Aplicativo que permite o cadastramento e posterior
aplicação de testes, questionários, provas- avaliações de um modo geral.
Permite a definição de questões, contendo opcionalmente textos ou figuras,
com suas respectivas alternativas e respostas; permite a aplicação desses
questionários, a correção e posterior análise dos resultados de cada
teste, apresentando indicadores como: percentis e níveis de acerto por
área em cada teste; distribuição das notas dos testes; avaliação do grau
de acerto e erro das questões; dentre outros. Particularmente útil para
empresas, escolas e sites web que necessitam de um instrumento objetivo
para verificar (por motivação acadêmica, profissional, ou outra qualquer)
o desempenho ou qualificação de uma pessoa ou grupo.
|
| Projetos Delphi - Arquiteturas de Classes |
| Arquitetura JClasses |
| Grau de Utilidade: 10 (alta) |
| Grau de Dificuldade: 07 (média) |
|
Descrição: Classes análogas às classes das bibliotecas padrão
Java, com particular ênfase nas classes Java de streams, containers
e outras helper classes. A riqueza das classes Java é de tal ordem
que mesmo uma biblioteca com um subconjunto limitado dessas classes
seria de grande utilidade na programação das tarefas mais rotineiras
e trabalhosas do dia-a-dia.
|
| Arquitetura de Frames |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição:
|
| Arquitetura de Forms |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição:
|
| Arquitetura de Assistentes |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Conjunto de classes de formulários e frames definidas
de forma a facilitar a criação de assistentes. A idéia é implementar o
controle básico do assistente num formulário base e associar cada página
do assisntente a um frame base, que estaria funcionalmente ligado ao
formulário base. Dessa forma, a implementação de um novo assistente
ficaria facilitada pois consistiria, basicamente, da implementação dos
frames concretos, representado cada uma das páginas do assistente, e
do formulário base, representado o container das páginas do assistente.
É imprescindível que o formulário base defina a interface de comunicação
com as páginas do assistente, assim como as interfaces de controle do
próprio assistente. Entre as interfaces já imaginadas para o formulário
base estão: PrepareWizard, UnprepareWizard, PreparePage, UnpreparePage,
OpenPage, ClosePage, CancelWizard, CurrentPath, DefinedPath; para os
frames base: OpenPage, ClosePage, IsFirst, IsLast, AllowBack, AllowNext,
AllowHelp, AllowClose, AllowCancel.
|
| Arquitetura de Acesso a Dados |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Definição de uma infra-estrutura genérica de acesso
a dados, com o intuito de criar componentes de acesso a dados nativos
para os inúmeros bancos de dados e middleware disponíveis no mercado.
Seria formada, basicamente, por camadas, dispostas da seguinte forma:
no nível mais baixo, o mapeamento das APIs de acesso a dados; num
segundo nível, objetos de baixo nível que utilizariam as APIs para
oferecer serviços de acesso a dados de alta performance, com suporte
a multithreading; no nível mais alto, descendentes de TDataSet que
permitiriam a integração do acesso nativo ao modelo de acesso a dados
do Delphi. Além das camadas apresentadas, a arquitetura estaria pronta
para implementações de acesso a dados a partir de componentes remotos,
através de TCP ou UDP, num modelo n-tier que viabilizaria múltiplas
camadas de acesso a dados de forma tranparente. A vantagem de uma
arquitetura desse tipo está na possibilidade do desenvolvimento de
aplicativos com objetos padronizados de baixo nível e alta performance
sem o overhead imposto pela classe TDataset; esses objetos de baixo
nível seriam ideais para implementação de soluções em várias camadas,
aplicativos web, etc. Na arquitetura de alto nível, além dos datasets
propriamente ditos, estariam integrados ao modelo componentes para o
controle das tarefas realizadas sobre os datasets (UNDO Log) e para
as alterações realizadas sobre os dados (SQL Log) de forma que, se
necessário, as operações sobre os dados possam ser trabalhadas localmente
e somente enviadas ao banco quando necessário; esse modelo pode ser
estendido ao ponto de permitir o armazenamento local das alterações
sobre os dados por um tempo indefinido, ficando o aplicativo, obviamente,
sujeito às restrições do banco no momento da atualização final.
|
| Arquitetura de Properties |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Definição de frames e forms que permitiriam a edição
de informações no formato de uma lista de propriedades, com as propriedades
dispostas verticalmente numa planilha, e seus valores dispostos ao seu
lado na planilha. Útil para a criação de um editor de registros genérico,
onde as propriedades seria os campos de um registro de uma tabela e seus
valores os valores do registro propriamente dito.
|
| Arquitetura de Plugins |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Definição de uma arquitetura de classes e uma
organização de código que permita aos aplicativos que aderirem a
essa arquitetura a integração e/ou incorporação de funcionalidades
avançadas ao aplicativo, automaticamente, em tempo de execução. Um
exemplo poderia ser, num aplicativo qualquer, permitir a integração
de um log de atividades, disparado de acordo com as configurações do
próprio plug-in: o aplicativo enviaria mensagens ao plug-in que as
trataria e realizaria suas tarefas baseando-se nas suas prórpias
cofigurações, permitindo ao usuário do programa, de alguma forma,
interagir com o plugin. Poderíamos definir, no plug-in (DLL), uma
série de interfaces que permitiriam: incorporação de itens de menu
no aplicativo principal; inicialização e finalização das estruturas
internas do plug-in; configuração do plug-in; lista de ações do
plug-in; e, execução das ações do plug-in.
|
| Arquitetura de Eventos (Discretos e Contínuos) |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Baseada nas classes de simulador que estudei durante
o mestrado na matéria PLP (Paradigmas de Linguagens de Programação), e
que oferece uma fantástica infra-estrutura para a criação genérica de
simulações. A idéia é estudar a arquitetura de maneira mais profunda e
criar uma arquitetura própria, com possibilidade de aplicação direta em
diversos problemas como: resolução de sistemas de equação, equações
diferenciais e integrais, escalonamento de processos e alocação de
memória, produtores e consumidores, filósofos, etc. O maior trabalho
aqui será a abstração máxima da arquitetura e a identificação das
diferentes formas de simulação e a evolução dos estados dos elementos
que compõem a simulação. De início, vejo simulações baseadas em tempo
(nas quais o tempo é o fator determinante das alterações de estado) e
baseadas em eventos (onde eventos discretos são responsáveis pelas
alterações de estado). Com isso em mente, e com um pouco mais de estudo
e leitura, será possível derivar uma arquitetura para a criação e
resolução de uma grande classe de problemas.
|
| Arquitetura de Threads e Thread-Safe Classes |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Definição de classes e interfaces que permitam a criação
de threads de alta performance. As threads deverão oferecer o conjunto de
serviços mínimo necessário para trabalhar no nível de performance mais
alto possível. Para isso, deve se construir uma estrutura a parte das
janelas do windows e, em classes mais baixas na hierarquia, oferecer
esse tipo de suporte. Ao mesmo tempo, será necessário oferecer classes
utilitárias para permitir a sincronização das threads, e outras classes
para permitir a manipulação sincronizada de objetos (thread-safe). Útil
para a implementação de funcionalidades de alto nível que necessitem de
uma arquitetura de threads de uso fácil e de alta performance, como
servidores web, proxies ip, conexões a bancos de dados, e outras tarefas
intensivas em I/O ou CPU que podem ser executadas em paralelo enquanto
o aplicativo principal está em execução.
|
| Modelos de Relatórios |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Criação de unidades contendo relatórios simples e
avançados baseados em QuickReport e Report Builder. A idéia é oferecer
uma interface simples, baseada em uma única chamada, para a criação
automática do relatório. Inicialmente, estaríamos falando de listagens
e relatórios em formato de ficha com dados de uma única tabela, e de
relatórios mestre detalhe em um nível. Interessante para permitir a
criação padronizada das saídas mais simples de sistemas. Não indicado
para relatórios gerenciais ou saídas mais sofisticadas.
|
| RTTI Friend |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Classe ou conjunto de classes cujo principal papel
é esconder as dificuldades inerentes à utilização da RTTI do Delphi,
ainda assim permitindo ao programador médio a utilização dessa
ferramenta de modo simples e intuitivo.
|
| Arquitetura de Patterns |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Implementação de classes e interfaces que implementam
de forma abstrata e/ou flexível serviços e relações padronizadas entre objetos.
Baseada, inicialmente, no clássico livro de Gamma, Design Patterns.
|
| Arquitetura de Classes Baseadas em Algoritmos |
| Grau de Utilidade: ?? (???) |
| Grau de Dificuldade: ?? (???) |
|
Descrição: Classes implementadas a partir de livros avançados de
algoritmo e que podem servir, incialmente, como demonstração e que, com
o crescimento da base de código implementado, podem vir a servir como
base para o desenvolvimento de código de alta performance em várias
situações. Vale mencionar os três volumes de Knuth.
| |
|