Arquivos mensais: agosto 2011

RAID 1 via software no Windows Server 2003

Nesse post é descrito como configurar RAID 1 no Server 2003. RAID 1 é usado para replicação de dados. Exitem três maneiras de se implementar Raid:

  1. A primeira é via hardware;
  2. Fake RAID utilizado pela maioria das controladoras baratas;
  3. Via Software.

Para configurar via software primeiro acesse o menu Iniciar->Ferramentas Administrativas->Gerenciamento do Computador.

Agora, na tela que abrirá expanda o nó de armazenamento e clique em “Gerenciamento de disco”.

Em seguida clique no menu Exibir , aponte para o superior e, em seguida, clique em Lista de volumes

No menu Exibir , aponte para inferior e, em seguida, clique em Exibição gráfica .

Atualizar para discos dinâmicos

Sistemas RAID exigem discos dinâmicos no Windows Server 2003.

Observação Você deve fazer logon como administrador ou como membro do grupo Administradores para concluir este procedimento.

Para atualizar um disco básico para um disco dinâmico, execute estas etapas:

  1. Antes de atualizar discos, feche os programas que estão em execução nesses discos.
  2. Clique com o botão direito no painel de descrição de disco cinza e, em seguida, clique em Atualizar para disco dinâmico.
  3. Se o segundo disco não é um disco dinâmico, siga estas etapas para atualizá-lo para um disco dinâmico.

Espelhar o volume de inicialização e de sistema

Nesse cenário, o disco 1 é o disco em que a imagem do disco 0 será espelhada.

  1. Disco 1 deve estar como espaço não alocado antes de continuar com o espelhamento.
  2. Clique com o botão direito disco 0 (que contém os arquivos de inicialização e sistema) e clique em Adicionar espelho .
  3. Uma caixa de diálogo se abre na qual qualquer disco no sistema que está disponível para espelhamento é exibido. Selecione o disco de sua escolha (neste exemplo, é o disco 1) e em seguida, clique em Adicionar espelho .

Pronto, se você seguiu os passos certo, agora você já possui um sistema RAID 1 funcionando em seu Sistema.

 

Iniciando em Sistemas Baseados em Casos (RBC)

Raciocínio baseado em casos (RBC)

Natan Suzana

Acadêmico do curso de bacharelado de Ciência da Computação da Universidade do Oeste de Santa Catarina – Unoesc – Campus de Xanxerê.

LuzitanOrsoZancan

Acadêmico do curso de bacharelado de Ciência da Computação da Universidade do Oeste de Santa Catarina – Unoesc – Campus de Xanxerê.

 

RESUMO

A técnica de Raciocínio Baseado em Casos resume-se em uma lógica inspirada no comportamento humano, mais especifico, na capacidade das pessoas aprenderem com seus atos, e reutilizar este conhecimento em novas ações. RBC faz isso, à grosso modo, registra soluções geradas pelo programa a qual é aplicado e reutiliza essa base de casos solucionados para resolver novos problemas. RBC tem quatro passos fundamentais para sua elaboração: representação do conhecimento: medida de similaridade; adaptação; aprendizado; todos especificados no presente artigo.

 

1 Introdução

A inteligência artificial (IA) desde sua criação desenvolveu diversas técnicas para aprimorar a resolução de problemas e a obtenção de conhecimentos. As técnicas desenvolvidas de IA têm como sua base, o estudo do comportamento humano, a derivação deste estudo resultou dentre outras o surgimento da técnica de raciocínio baseado em casos (RBC), estando hoje dentre as técnicas mais utilizadas em IA.

O RBC desenvolveu-se muito rapidamente, pois as técnicas que o mesmo utiliza são simples e seu poder é muito grande. Hoje o RBC está presente em vários processos, como softwares de ajuda a usuários, diagnósticos médicos, sistemas especialistas, enfim, se tornou uma ferramenta muito útil para resolver problemas, onde os mesmos poderão aproveitar soluções anteriormente encontradas.

O RBC assim como as demais técnicas de IA baseia-se no comportamento humano. O raciocínio baseado em casos inspira-se na capacidade humana em aprender com suas ações e experiências e resolver problemas novos com experiências vividas anteriormente.

Porém quais são os principais passos para se desenvolver um sistema que possua esta capacidade, semelhante à capacidade humana, de desenvolver novos conceitos com as experiências vividas?

 

2 Raciocínio baseado em casos (RBC)

Para iniciar este artigo, é de suma importância citar uma frase dita no ano de 1991 por Marvin Minsky (Apud. Wangenheim): “I predict that 20 years from now Case-Based Reasoning will be the most important application of Artificial Intelligence.” Em 1991 Minski previu que em 20 anos Raciocínio Baseado em Casos (RBC) seria a mais importante técnica de Inteligência Artificial (IA), uma previsão que se concretizou. Hoje, RBC, como será tratado daqui em diante neste artigo, é um dos ramos de IA mais utilizados. Um exemplo simples da utilização de RBC, são as funções de autoajuda disponibilizadas por fabricantes de hardware e software. Ao se acessar a autoajuda, são feitas perguntas a fim de descobrir o que está acontecendo com a impressora, ao se ter o caso (problema) definido, o sistema faz uma busca em sua base de dados por alguma incidência parecida, gerando uma nova solução baseado nos registros do que já aconteceu.

Raciocínio Baseado em Casos (RBC), é um termo originado do inglês Case Based Reasoning (CBR), tem em seus conceitos o que foi descrito acima, resolução de problemas com base em casos anteriormente solucionados, adaptando uma nova resposta ao problema. Wangenheim (2003) confirma isso na afirmação a seguir: “(…)podemos entender o Raciocínio Baseado em Casos como a solução de novos problemas por meio da utilização de casos anteriores já conhecidos”.

O conceito base de RBC, vem da observação da vida humana. Todos os seres humanos ao longo de suas vidas acabam adquirindo experiência e usando a mesma para descobrir novas soluções. Este conceito é utilizado amplamente. Um exemplo são os prontuários médicos, ao se imaginar uma situação em que você vá até o médico e ao relatar os sintomas, é gerado um novo caso. O médico, tendo o seu caso, ou seja seus sintomas, irá lembrar-se de alguns casos semelhantes, os quais ele já atendeu. Como em uma pesquisa em um banco de dados, o médico procura casos similares ao seu. Ao lembrar (no caso de um banco de dados, encontrar) um caso parecido, o médico, usando seu conhecimento, irá adaptar a solução que foi dada à última incidência, ao seu caso, gerando um novo prontuário. Com isso, ele gerou uma solução para o seu problema, na grande maioria das vezes de forma eficiente e, enquanto isso, adquiriu para a sua memória (nosso banco de dados) um novo caso, que será utilizado para a solução de novos problemas. Wangenhein (2003) afirma que o Raciocínio Baseado em Casos (RBC) é a tecnologia de Inteligência Artificial inspirada no modelo de cognição e comportamento humano, que encontra respostas para um novo problema, através de um problema já resolvido.

Wangenhein(2003)  também destaca que qualquer sistema que utilize RBC deve possuir quatro elementos básicos:

·    Representação do Conhecimento

·    Medida de Similaridade

·    Adaptação

·     Aprendizado

2.1 Representação do Conhecimento

Um dos pontos chave de sistemas com Raciocínio Baseado em Casos é a representação do conhecimento, a forma na qual irá se registrar problemas e soluções vividas pelo sistema ou seja, é o banco de dados que será utilizado para gerar novas soluções.

Segundo Wangenhein (2003) a principal forma de representação do conhecimento são os casos, sendo que, outras formas de representação podem ser utilizadas, como casos abstratos, generalizados, tipos diversos de dados, modelos de objetos usados como informação, entre outros. Os casos englobam as demais formas de representação do conhecimento, pois todas as demais deverão ter mesmas características básicas para o funcionamento do RBC. Um caso é a maneira de demonstrar o conhecimento de forma contextualizada, registrando o evento problemático ou uma situação com problema foi solucionada de forma parcial ou total.

Um caso é, basicamente, a descrição de um problema e a sua solução, a solução sendo caracterizada como a experiência adquirida neste caso. Esta representação do conhecimento é feita através dos casos, porém não se restringe a estes. Para um RBC funcionar, deve-se criar um Repositório de Conhecimento.

O Repositório de Conhecimento é uma ou um conjunto de base de dados que engloba todos os casos, o vocabulário usado para gerar estes casos (um exemplo de vocabulário são consultas médicas nas quais você preenche um formulário antes da consulta, com os seus sintomas. Este formulário é igual para todos os pacientes. O que gera um caso e facilita o diagnostico do médico. Este formulário seria nosso vocabulário), uma base com medidas de similaridade referentes a cada caso para poder identificar e reutilizar casos anteriores e uma última base apara armazenar os dados de como adaptar os casos similares para resolver o novo problema.

2.2 Medida de Similaridade

A medida de similaridade é o ponto chave dos RBC, através dela será organizada a base de dados utilizada pelo sistema, através desta medida serão encontrados os casos com maior chance de gerarem solução do caso problema. Similaridade em RBC nada mais é do que a comparação de dois casos para verificar o quanto um está ligado ao outro e como os mesmos podem compartilhar soluções e consequências.

Conforme descreve Wangenhein (2003), o conceito da utilidade de casos é, de um ponto de vista abstrato, central para o raciocínio baseado em casos. Durante a recuperação de casos procura-se por um problema na base de casos, que, no contexto da descrição do problema atual, é útil para determinar a sua solução.

Podemos definir similaridade como se fosse uma recuperação dos dados para utiliza-los na resolução de um novo caso, este processo é um dos mais importantes do paradigma Raciocínio Baseados em Casos. Tem por propósito encontrar, em uma memória de casos resolvidos anteriormente, um caso mais adequado, mais próximo ao problema que precisa resolver.

A comparação utilizada para encontrar um caso parecido na tentativa da obtenção da resolução do novo problema, pode ser feita de duas formas que são: similaridade sintática ou semântica. Quando um caso é resolvido ele leva com ele informações importantes para serem gravadas na base de dados, dentre estas informações destacamos suas características principais e a sua respectiva solução. São nessas informações que a similaridade irá agir, comparando-as com o novo problema para ver se encontra algum caso similar que já foi resolvido anteriormente, a forma como essas informações são guardadas se torna muito importante devido a sua importância, para que a similaridade seja considerada relevante é necessário que estas características sejam prenunciativas.

A similaridade é o ponto crucial de RBC, pois a partir desta etapa, todo processo de raciocínio que fundamenta esta técnica torna-se viável.

2.3 Adaptação

A partir do momento que um caso similar é recuperado da base de dados para resolver o novo problema, ocorre uma reutilização de conhecimento, este conhecimento foi obtido na resolução do caso anterior que é similar ao novo problema, por isso o caso anterior será reutilizado para resolver o novo problema.

Qualquer reutilização realizada necessita da adaptação da solução do caso anterior ao caso atual, algumas técnicas são tratadas na reutilização onde as quais tentam resolver os problemas gerados pela adaptação, que conforme Wangenhein(2003), são: quais aspectos da situação devem ser adaptados, quais modificações devem ser realizadas para esta adaptação, que método aplicar para realizar a adaptação e como controlar este processo.

Essa adaptação é realizada para adequar uma solução encontrada anteriormente a um novo problema similar, com o objetivo de facilitar a obtenção da solução deste novo problema. Esta adaptação irá influenciar diretamente na flexibilidade do sistema de raciocínio baseado em casos, pois esta adaptação irá determinar a capacidade do sistema em resoluções de novos casos, novas situações.

Ao se realizar a adaptação de uma caso para outro são necessárias a análise de alguns fatores, Wangenheim (2003) destaca 4 principais:

○     Quais são os aspectos de uma situação que devem ser adaptados

○     Quais modificações são razoáveis de serem realizadas para adaptar o caso.

○     Quais são os métodos de adaptação aplicáveis para modificar estes aspectos.

○     Como controlar o processo de adaptação para saber que as modificações estão sendo realizadas no rumo certo.

Existem varias técnicas para efetivar a adaptação de um caso a outro, todas as técnicas baseiam-se em dois conceitos básicos: 1º- Quais são as diferenças entre o caso passado, cujo qual já tem uma solução conhecida, e o caso atual, o qual será gerada uma solução. 2º- Quais partes do caso passado podem ser reaproveitadas para gerar na solução dos novo problema.

 

2.4 Aprendizado

O RBC tem um ciclo muito bem definido conforme podemos ver na figura a seguir:

Ciclo RBC

Neste ciclo podemos perceber que quanto mais casos tiverem que ser solucionados, respectivamente com maior facilidade serão resolvidos, pois a base de casos será maior e a obtenção de novas soluções será mais eficiente.

Wangenheim (2003) diz que a integração com o aprendizado é uma das características mais importantes do RBC. A noção de RBC portanto, não denota apenas um método particular de raciocínio, sem levar em consideração como os casos são adquiridos, mas implica também um paradigma de aprendizado de máquina que suporta o aprendizado sustentado pela atualização contínua da memória de casos.

No RBC, os casos são armazenados sem alteração, Wangenheim (2003) cita que existem muitas variações de métodos de aprendizado de casos, somente o que diz respeito à forma de manipular os casos existem várias possibilidades. O aprendizado é construído a partir de um conjunto de exemplos de casos dados. Com os mesmos, deve-se decidir quais casos serão aceitos para compor a base e quais serão rejeitados e com qual critérios serão feitas as escolhas.

3 Aplicação de RBC

O raciocínio baseado em casos (RBC) é utilizado em várias aplicações de diferentes áreas, dentre as mesmas podemos citar: análise financeira; assessoramento de riscos; manutenção técnica; controle de processos; controle de qualidade; diagnóstico médico; sistemas de suporte a software; previsão; planejamento; projeto; classificação; interpretação de imagens; avaliação imobiliária; etc.

Conforme Wangenheim (2003), a tarefa de um sistema de RBC, descreve o tipo de ação para a qual o sistema será utilizado, como por exemplo, diagnóstico, configuração, planejamento, etc. Isto determinará o tipo de problema e de soluções, bem como a natureza das atividades a serem desenvolvidas pelo solucionador de problemas baseados em casos.

4 Considerações finais

O uso da técnica de Raciocínio Baseado em Casos tornou-se indispensável em sistema que visam a resolução de inúmeros problemas os quais necessitam de uma certa autonomia para encontrar a solução desejada. Dentre estes sistemas podemos destacar softwares de ajuda, diagnósticos médicos, enfim, todo softwares que necessitem resolver algum problema de forma otimizada e tem a possibilidade de armazenar problemas já resolvidos, são softwares que tem uma grande probabilidade de utilizar RBC.

Podemos dizer que a técnica de RBC trouxe maior difusão da Inteligência Artificial, pois possibilita a reutilização de todo o histórico de soluções quais o software gerou, para reutilizá-las em novos problemas, isso propicia uma resolução de novos problemas mais rápida e eficaz, pois você já tem um ponto de partida e comparação para os novos problemas.

 

Referências

Wangenheim, C. G.; Wangenheim, A. Raciocínio baseado em casos. Barueri, SP: Manole, 2003. 293p.

 

 

 


Personalizando Select com JQuery

Muitas vezes nos deparamos com situações que exigem o uso da propriedade select em algum projeto web. As vezes o projeto exige dos programadores que o select seja mais elaborado ou diferenciado.
Nos padrões do HTML temos um select com poucas alternativas de customização, o que, em muitos casos não vem acalhar com as nossas reais necessidades de personalização.
Quando tudo esta difícil na web aparece o JQuery para resolver a nossa vida. O plugin Custom Select trás toda a flexibilidade para adaptarmos o nosso select da forma que for necessário.

Exemplo do select no código HTML:

<select name="dormitorios"  title="Exemplo:">
    <option value="1">1 exemplar</option>
    <option value="2">2 exemplar </option>
    <option value="3">3 exemplar </option>
    <option value="4">4 exemplar </option>
    <option value="5">5 exemplar </option>
</select>

Vamos para a configuração:

1 – Baixar a biblioteca principal do JQuery  jquery.tools.min.js

2 -Baixar o plugin jquery.customselect.js

3 – Chamar os arquivos js em seu html:

<script type="text/javascript" src="/path/to/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.customselect.js"></script>

4 – Inserir em seu código HTML a função que executa o nosso plugin;

<script type="text/javascript">
$(document).ready(function(){
    $('#select').SelectCustomizer();
});
</script>

 

CSS do select

Propriedade 1 – _iconselect

Vai ser a primeira parte do nosso select, onde se localizarão configurações como: tamanho da fonte, tipo de fonte, background do campo, entre outros.

Esta propriedade _iconselect é um sufixo gerado pelo próprio plugin.

Ex: A sua configuração no CSS ficará assim:

select_iconselect {
...
}

Propriedade 2 – _options

Esta propriedade é responsável pela configuração da nossa caixa de itens, ou seja, propriedades como tamanho da caixa, barra de rolagem entre outras. A propriedade no código CSS ficará assim:

select_options {
...
}

 

Propriedade 3 – selectwrapper e selectfooter

Esta propriedade vai configurar todos os itens do nosso select em associação com outras propriedades.

Aqui vai alguns códigos que serão relacionados com essa propriedade para a personalização do nosso select no CSS:

.selectwrapper {…}
.selectwrapper .selectitems{...}
.selectwrapper .last{...}
.selectwrapper .selectitems span{...}
.selectwrapper .hoverclass {...}
.selectwrapper .selectedclass {…}

Também temos a propriedade selectfooter que como o próprio nome induz, faz referencia a configurações do nosso rodapé, da caixa de itens.
No código CSS ficará assim:

.selectfooter {…}

Abaixo a imagem de um select personalizado:

OBS: Lembrando que estas propriedades são geradas automaticamente pelo nosso plugin. Por isso não incluímos nem uma dessas classes ao nosso HTML, apenas a propriedade select em sua forma natural.

p:graphicImage não atualiza com ajax…

Mais uma dica rápida e interessante, dessa vez na área de JSF, para quem programa utilizando Primefaces…

Às vezes temos alguma(s) imagen(s) em nossos cadastros(por exemplo, a foto de um cliente). Para renderizar as imagens na tela, utilizamos o componente <p:graphicImage />.

Acontece que se, caso quisermos atualizar a imagem utilizando ajax, a imagem insiste em não atualizar. Problema de sete cabeças?? Não!!

Eis o macete: o componente p:graphicImage possui um atributo chamado cache, que por default está setado como true. Ou seja, quando mandamos atualizar com ajax, a imagem será resgatada do cache. Então, para conseguirmos atualizar a imagem com ajax, setamos o atributo cache=”false”, obrigando a atualização da imagem e a correta exibição.

É isso aí pessoal, até a próxima!!