A ver posts de Fevereiro de 2010

Ao reler esta minha posta de ontem, lembrei-me das embedded resources, que costumam ser usadas para a localização de aplicações, mas que nada impede que sejam usadas para transportar o que quer que seja. Embeber um ficheiro de texto seria trivial, e as vantagens seriam potencialmente animadoras – ao arrancar a aplicação, a framework carrega muito mais depressa as resources junto com o executável do que o StreamReader consegue ler um ficheiro externo.

Embeber um ficheiro no Visual Studio é do mais simples que há: no menu de contexto do projecto, escolher a opção Properties, depois a aba Resources. Se não existirem resources, clicar no link que estará bem visível no meio da página, e escolher Add New Text File do dropdown Add Resource.

Visual Studio 2008 - Resources

À pala desta discussão no P@P, fui relembrado, dos confins da memória, desta estrutura: trie. Isto é daquelas coisas que se aprende em Algoritmos e Estruturas de Dados e depois, se não se trabalhar especificamente em motores de busca, gestão documental ou coisa que o valha, nunca mais se vai usar. E assim se perde nos interstícios da memória uma excelente estrutura.

O problema em causa - que não é exactamente o motivo pelo qual me reinteressei pelas tries, mas isso fica para outro dia - era a criação dum sistema que "sugira soluções para palavras cruzadas ou problemas equivalentes". Um dos primeiros passos é, como é lógico, criar um dicionário de palavras passível de ser pesquisado. A Universidade do Minho tem disponível um ficheiro de texto com quase 700.000 palavras (link inválido, neste momento), só faltava mesmo carregá-las e usá-las.

As primeiras respostas a esse tópico foram precisamente no sentido das tries, mas a minha primeira reacção foi trocar a dificuldade de implementação e debugging por uma certa penalidade em tempo de execução na pesquisa, usando um simples array com as palavras e pesquisa binária. Força do hábito.

Depois de levar nas beiças de alguns membros, cá fiz uns testes; acontece que "certa penalidade na pesquisa" era bem mais do que eu tinha previsto ao início - cerca de 9 vezes mais lento, e nem sequer estava a contemplar pesquisas parciais (e também não vai ser nesta posta que me debruçarei sobre isso). Seja então uma trie.

Quando em ambiente web, são várias as soluções para persistência de dados em bases de dados relacionais: desde os mais famosos MySQL, PostgreSQL, SQL Server até verdadeiros monstros poderosíssimos, como Oracle. Mas quando nos viramos para aplicações desktop, já não é bem assim.

Há várias soluções: o supra citado SQL Server, ficheiros MDB do Access… Mas todas têm certos requisitos no sistema onde correm; no mínimo dos mínimos, precisarão da biblioteca de acesso correspondente. Mesmo neste último caso, que já não é mau (SQL Server, por exemplo, requer mesmo a instalação do dito na máquina onde corre – uma versão lite, é certo, mas tem que se instalar), a biblioteca atinge, normalmente, vários  MB.

Na sequência deste post, várias pessoas1 chamaram-me a atenção de algo básico: faltava o valor das apostas na estrutura. Básico, básico, básico.

Podia ter cedido ao caminho mais fácil: apenas uma entidade, com o preço das apostas simples, devidamente localizado. Depois, calculava o valor das apostas múltiplas desdobrando cada múltipla nas suas componentes simples. Mas, quanto mais pensava no assunto, menos correcta me parecia a abordagem. Já ouvi falar de concursos – e não sei se é verdade – em que há vários tipos de apostas simples. Por exemplo, um concurso com três jogos, em que as pessoas escolhem (imaginemos) cinco números de um pote e um número de apenas um dos outros dois potes; há aqui duas apostas simples distintas: cinco do pote A mais um do pote B e cinco do pote A mais um do pote C. Outra razão que me surgiu depois, esta de ordem bem mais prática, seria o acesso directo, sem cálculos, aos preços das múltiplas, com o bónus de poder controlar que apostas são válidas, entre simples e múltiplas, para um dado concurso.

Como tal, o diagrama entidade-associação foi modificado e colocado no respectivo projecto da categoria Jogos de Loto. A imagem que acompanhava o post precedente a este foi retirada, para não existirem confusões e passa a estar só no projecto, que é bem melhor de gerir.

1 a razão pela qual as pessoas – pelo menos, estas quatro – preferem mandar um e-mail ao invés de comentar aqui no blog é algo que me ultrapassa…

Comentários Nenhum comentário Continuar a ler Continuar a ler »
 Categorias
 Arquivo
 Projectos em Destaque
 Últimas Postas no Blog
 Últimos Comentários do Blog