Frases do Dia

29 01 2008

Ao final de toda resposta sempre existe uma nova pergunta.
Anselmo Battisti





Rapidinha do Postgres

28 01 2008

1 – Seleção Turbinada

Se você quiser fazer um LIKE mas case insensitive no postgres use o operador ~*, exemplo:

SELECT * FROM cidade WHERE cid_nome ~* 'cas'

Essa consulta vai trazer todos os registros que possuem a substring cas na coluna cid_nome

Cascavel
Pacasdatela
Enracas

2 – Importação de Dados

Se você gerou um dump de uma base postgres e vai tentar dar um restore em uma versão mais antiga, com o perdão da palavra fodeu, se for de uma verão mais baixa para uma mais alta pode até funcionar agora o contrário :(. Existe uma alternativa se tiver dentro da mesma versão maior, por exemplo, o dump veio de um 8.2 e você quer importar em um 8.0 você pode tentar fazer o seguinte:

1 – Criar primeiro o banco manualmente via SQL
2- pg_restore -a -d banco -U postgres arquivo.tar –disable-triggers

3 – Importar apenas uma tabela

pg_restore -a -d banco -U postgres -t sua_tabela arquivo.tar –disable-triggers

Vai dar um monte de warning mas ele vai restaurar os seus dados

E que Deus tenha piedade de seus dados





IVSP – Programador Combata Esse Mal

26 01 2008

A IVSP é uma doença extremamente perigosa que atinge 5 em cada 10 programadores, ela está se alastrando de forma tão vigorosa que o ministério da saúde já está considerando a IVSP como o mal do século para os programadores, mas afinal o que é IVSP? Continue lendo »





EXT – Combobox Dinâmico

26 01 2008

Como montar um combobox dinâmico usando SimpleStore

// cria o vetor que irá armazenar as opções do combo
this.arrayColumn = [];// cria o store que irá organizar os dados
this.comboboxStore = new Ext.data.SimpleStore({
   fields: ['id','display'],
   data: this.arrayColumn
});

// efetivamente cria o combobox
this.combobox = new Ext.form.ComboBox({
   store : this.comboboxStore,
   mode : 'local',
   displayField: 'display',
   valueField : 'id',
   width: 150,
   triggerAction:'all',
   editable: false
});

// aqui estão sendo adicionados os elementos no vetor que irá 
// ser usado para montar o combo
this.arrayColumn.push(['cid_cod','Cod']);
this.arrayColumn.push(['cid_nome','Nome']);
this.arrayColumn.push(['est_cod','Estado']);

// este é o pulo do gato para o combobox se atualizar, ele recarrega
// o store e exibe a informação correta
this.comboboxStore.loadData(this.arrayColumn);

Mais uma coisa ‘como diria o tio do jack chan’: É sempre difícil organizar código fonte no wordpress, sendo assim, por algum tempo eu vou colocar os códigos aqui no wordpress e também num site que eu achei chamado http://pastie.caboo.se. O objetivo deste site é justamente armazenar e exibir com formatação adequada trechos de código fonte de diversas linguagen. Veja o link para o código fonte do exemplo anterior.





EXT – Dicas e Truques II

24 01 2008

1 – Tradução

Para traduzir as mensagem dos componentes do EXT basta carregar o arquivo /ext-2.0/source/locale/ext-lang-pt_BR.js, nele estão contidas todas as traduções. Caso você esteja usando apenas alguns componentes você pode inserir apenas a tradução do componente desejado, por exemplo se você estiver usando apenas o grid : Continue lendo »





EXT – Dicas e Truques

23 01 2008

Bom estou começando a usar a biblioteca EXT js, realmente ela é muito boa, ainda mais agora na versão 2.0. O Problema é que tem algumas coisinhas que você não pega de primeira e fica se matando horas pra achar a solução, então aqui vou eu escrever algumas dicas / notas sobre o assunto. Continue lendo »





Frases do Dia

6 01 2008

Ao ver uma lâmpada queimada os CEOs da micro$oft prontamente derrubam a casa e constroem uma nova ao invés de trocar a lâmpada.
Anselmo Battisti

Todas as coisas estão onde devem estar, ou, as coisas devem estar onde estão?
Anselmo Battisti





Validação em Javascript NÃO é validação

2 01 2008

A uns 3 anos ou mais eu venho falando:

– Validação no lado do cliente não existe, você está no máximo facilitando a vida do usuário mas não é validação.

Hoje recebo uma matéria muito boa que diz justamente isso, é isso ai finalmente me ouviram :).





Eval com IF no PHP

31 12 2007

Se você tem uma string que é na verdade uma expressão e precisa avaliá-la usando a função eval então faça o seguinte:

$exp = "12 == 13";
# avaliar a expressao
if(eval("return (".$exp.");")){
   return true;
} else {
   return false;
}

Badabim Badabam Bada que fácil.
[]’s Anselmo Battisti





Achando um Elemento com Prototype

6 12 2007

Caso você necessite descobrir se um dado elemento HTML existe ou não em sua página faça o seguinte:





Frases do Dia

6 12 2007

Quando a unidade de medida dos seu arquivo fonte passa de KByte para Metro é hora de pensar em refatoramento.
Anselmo Battisti





Classe Formatar Moeda / Valores Monetários em Javascript

3 12 2007

Importante Para Download e Demonstração Acesse

http://battisti.etc.br/projetos/

A algum tempo coloquei aqui no battisti.wordpress 3 funções para manipular valores monetários. Hoje resolvi agrupa-las em uma única classe. Continue lendo »





Desabilitar Auto Completar

28 11 2007

Em alguns caso não queremos que o navegador memorize os textos que o usuário digita em alguns campos. Isso é necessário por questões de segurança, para que o autocompletar seja desabilitado basta adicionar ao html do elemento a propriedade:

autocomplete=”off”

para definir isso pelo javascript





Frases do Dia

13 11 2007

“Código rural! Acho que foi escrito por um cara que estava ouvindo música sertaneja”
Anselmo Battisti

“Se esquerda não tivesse U não precisaria da direita”
Darlon Vasata

Pra entender o lance da esquerda faz o seguinte:
Escreva a palavra esquerda no teclado entendeu! matador né!





Criando SELECT usando o SMARTY

13 11 2007

Saudações

O Smarty é uma biblioteca para a construção de template. Os templates permitem a separação da apresentação da lógica de negócio escrita em PHP.Esta biblioteca possui vários plugins que auxiliam na criação da camada de apresentação.

Para criar um elemento select a partir de um vetor em php.

// template

{html_options name=vetor options=$vetor selected=$selecionado}// php

$sql = " SELECT id, nome FROM tabela";

$vetor = $con->Execute($sql)->getArray();

foreach ($vetor as $k=>$v){

   $x[$v['id']] = $v['id']." - ".$v['nome'];

}

$tela->addVar("vetor",$x);

$tela->addVar("selecionado",19);




Expressão Regular com PHP

6 11 2007

Expressão regular é uma coisa que depende muito da engine que às interpreta, por isso, resolvi postar aqui algumas expressões regulares muito comuns em validação de dados em PHP. Continue lendo »





Manipulando DOM com Prototype 1.6

5 11 2007

A algum tempo postei sobre o Easy DOM Creator, uma ferramenta bastante útil para realizar a manipulação dos elementos da árvore HTML. Sendo algum muito importante a biblioteca prototype está oferecendo nativamente esta funcionalidade a partir da versão 1.6 RC0.

O Exemplo abaixo sintetiza tudo o que é necessário saber sobre está função.

$(id_elemento).insert({      after: new Element('b',

{class:'msgErro'}).update('texto que será exibido')

});

O código acima irá:

  1. Criar um elemento negrito b;
  2. Setar ao elemento a classe msgErro;
  3. Inserir o texto ‘texto que será exibido’;
  4. Inserir o elemento criado depois do elemento cujo id é id_elemento.

Para inserir uma quebra de linha

$('mensagem').insert(new Element("br"));

Uma outra forma de inserir HTML sem usar o innerHTML é:

$('id').insert(
    "<tr><td>10</td><td>10</td></tr>";
);

Veja mais exemplos no site oficial da biblioteca prototype.





Vetores

23 10 2007

Chuck Noris usa imagem BMP como índice de seus vetores em Java.
Anselmo Battisti 





Frases Do Dia

19 10 2007

A cagada é o adubo do conhecimento.
Anselmo Battisti

Calcula ai pra mim o resto da diferença.
Anselmo Battisti 





Programando na Unha

18 10 2007

programando_na_unha.png





Frase do Dia

5 09 2007

“FTP é coisa de cliqueiro, já era. FTP = (F)oi-se o (T)empo (P)eixe!”.
Fábio Berbert de Paula em um manual de rsync

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=338&pagina=3

 

 





Concatenar Duas Colunas no Postgres / Sql Server / MySQL

1 09 2007

No Postgres

Para concatenar duas colunas no postgres, ou duas strings utilize ||

SELECT  colunaA || colunaB as colunaAB FROM tabela

Contribuição do meu amigo Ivan:

Se você tiver uma coluna que possa ter um valor nulo então é necessário utilizar o operador coalesce pois NULL concatenado com qualquer coisa dá NULL.

SELECT (coalesce((colunaA),'') || coalesce((colunaB),'')) AS colunaAB FROM tabela

Caso seja necessário concatenar colunas do tipo int então será necessário antes disso converter os

coalesce(cast(colunaA as varchar),'') || coalesce(cast(colunaB as varchar), '') as colunaAB

No SQL Server

O sinal de + é usado para concatena strings, desta forma:

SELECT coluna1 + coluna2 as coluna12 FROM tabela

irá concatenar a coluna1 com a coluna2.

Caso sua coluna seja de um tipo diferente, inteiro ou float por exemplo será necessário fazer um cast desta forma:

SELECT  (cast(coluna1 as varchar) + ' - ' +  cast(coluna2 as varchar)) as coluna12   FROM tabela

Caso uma coluna puder ser nula então use o IsNul(coluna1,’ ‘) para trocar seu valor nulo por um espaço pois lembrem-se nulo com qualquer coisa é sempre nulo.

No MySQL

SELECT concat(coluna1,’ – ‘,coluna2) FROM tabela

coalesce(cast(funcionario_associado.ass_cod as varchar),”) || coalesce(cast(fa.ass_cod as varchar), ”) as ass_cod,




Apostila de AJAX PHP Prototype

17 08 2007

Salve

De 28 a 30 de agosto acontecerá na Unioeste – Cascavel – Pr o EPAC e em paralelo o CONGED, maiores informações no site http://www.inf.unioeste.br/epac/.

Pois muito que bem, eu e meu amigo Alexandre Semmer iremos ministrar um mini curso sobre AJAX utilizando o Prototype.

Apostila : apostila.pdf (360 KB)

Apresentação : Apresentação

Exemplos : exemplo

Baixe o arquivo de exemplo e mude a extensão dele para .zip

Livro Grátis

Um ótimo livro sobre a prototype pode ser baixada no link:

http://beta.bigmedium.com/projects/prototype-pdf/index.shtml

Livros que Recomendo

Ajax em Ação Ajax em Ação Programando com orientação a objetos




Desativar Integridade do Postgres

3 08 2007

Saudações

Parece estranho o título, para que alguém em sã consciência vai desativar a INTEGRIDADE do Postgre. Mas, em momentos de atualização de dados vindos de outros bancos ou em testes em que você não está preocupado se tem a maldadita FK faça o seguinte:

Para desativar

UPDATE "pg_class" SET "reltriggers" = 0 WHERE "relname" = 'tabela';

Para Ativar

UPDATE pg_class SET reltriggers =
(
SELECT count(*) FROM pg_trigger WHERE pg_class.oid = tgrelid
)
WHERE relname = 'tabela';




Conjugação do Verbo

31 07 2007

Como se conjuga o verbo programar?

EU programo;

TU programas

ELES  ganham a grana

tenho dito!





Como Reiniciar o Fstab

29 07 2007

Micro $_POST

Após alguma mudança no fstab, você pode usar os comandos abaixo para reinicializa-lo

umount -a
mount -a

Isto faz com que todas as partições que NÃO estejam sendo usadas no momento sejam desmontadas e novamente montadas com as novas configurações que estão no fstab.

Caso apareça a mensagem: “impossível desmontar pois a partição está sendo usada” isto quer dizer que, alguém ou alguma coisa “programa” está usando a partição, isto vai aparecer para a partição / pq ela está sendo usada pelo SO.

Meu amigo gabriel http://lovison.com.br/ me ajudou neste $_POST

[]’s Anselmo Battisti





php.ini include_path

6 07 2007

Quando vários sistemas no mesmo servidor compartilham alguns arquivos existe uma forma de referenciar diretamente estes arquivos, sem a necessidade de utilizar includes ou variáveis.

A solução para este “problema” é definir no arquivo de configuração do PHP o php.ini no parâmetro include_path o caminho da pasta que contem os arquivos em comuns, exemplo de php.ini:

php.ini

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: “/path1:/path2”
include_path = “.:/usr/share/php:/var/www/includes”

adicionei o caminho /var/www/includes que é onde os meus scripts em comum ficam. Reinicie o apache para que as mudanças sejam efetivadas.

Com isto no momento em que você der um include em um arquivo json.php por exemplo, se este arquivo não estiver na mesma pasta do script que contém o include, o PHP automaticamente busca pelo arquivo dentro do diretório /var/www/include.

Referência

http://www.modwest.com/help/kb5-98.html 

http://www.imasters.com.br/forum/lofiversion/index.php/t144987.html 

E é isto pessoal.





Prototype Compactador

4 07 2007

Sempre temos o dilema de, usar ou não bibliotecas em Javascripts externas em nossos sistemas.

O grande ponto negativo é o tamanho delas.

Prototye : 97 Kb
Scriptaculous : 126 Kb

Em contra partida elas oferecem inúmeras funções prontas que quebram um “galhão” uma solução que achei bem viável são os compactadores de Javascripts, existem alguns softwares desktop e outros Web o que utilizei e achei muito bom foi o

http://www.bananascript.com/index.php?compress

Bom Divertimento.





Personalizando o Lynx – Um odisseia no mundo do software livre

30 06 2007

Saudações

Esta semana deparei-me com um problema assas complicado e, apenas fui capaz de contorna-lo pois vivo em um mundo livre onde o código fonte fica ao alcance das mãos dos programadores astutos.

Uso o lynx para disparar uns crons do php mas por força do destino o lynx tem um bloqueio de 10 redirecionamento consecutivos para a mesma página, ele acha que é algum tipo de ataque sei lá.

Que fiz para contornar o problema, baixei o código fonte do lynx alterei o arquivo em C que tomava conta desta parte recompilei o lynx e beleza tudo funcionando.

Se fosse no IE por exemplo não teria o que fazer 🙂 Usei todos os direitos do software livre e me senti muito bem

Arquivo :

WWW\Library\Implementation\HTacces.c

TOO_MANY_CONNECTION

[]’s Anselmo





Frase do Dia

26 06 2007

O Dicionário é um artefato do cotidiano altamente recursivo, pois nele, as definições de palavras são feitas a partir de outras palavras e, que por sua vez suas, possuem suas próprias definições.

Não acredita faça você mesmo, pegue o Aurélio e veja o significado de:

Íntimo -> Âmago -> Cerne -> Íntimo

E existem milhares de outros exemplos procure o seu.





Algumas Coisas Que Aprendi na Vida

13 06 2007

Na Cozinha1 – Quando lavar a louça sempre coloque a pedra de sabão na posição vertical pois assim haverá um menor contato do sabão com a agua que possa estar na pia, isto irá diminuir o desperdício.

2 – Quando for usar esponja de aço “vulgo BOMBRIL” sempre corte ela em no mínimo 4 pedaços, cada um deles é suficiente para uma lavada de louça, após terminar jogue fora não tente reciclar sempre da ‘caca’.

Continue lendo »





Frase do Dia

26 05 2007

Um sistema de gestão deve ser visto como um funcionário da instituição.
Anselmo Battisti





Frase do Dia

18 05 2007

O estagiário é a base da cadeia alimentar do capitalismo.
Anselmo Battisti 





Apostila de Ajax

9 05 2007

Saudações

Segue a Apostila e a Apresentação sobre Ajax que eu e meu amigo Christiano utilizamos durante o mini curso que ministramos no último “Circuito Paranaense de Softeare Livre”.

Apostila AJAX (350 KB)

Apresentação AJAX (251 KB)

Link para a nova apostila de Ajax e PHP

https://battisti.wordpress.com/2007/08/17/apostila-de-ajax-epac-conged/

LIVROS QUE RECOMENDO

Estes são alguns livros que já li quando estava começando com o tal do AJAX.

Ajax em Ação Ajax em Ação Programando com orientação a objetos

[]’s Anselmo Battisti





Frase do Dia

8 05 2007

Se todos os seres do universo fossem imortais eles não teriam consciência da própria vida.

“Anselmo Battisti”





Frase do Dia

21 04 2007

“The sooner you test for a mistake the greater your chance of finding it and the less it will cost to find and fix”

tradução mais ou menos , meu inglês é meio analfabeto.

“Quando mais você realiza testes em busca de erros, maiores serão suas chances de encontra-los, isto irá reduzir o custo de correção.”

Sebastina Bergamann – “PHPUnit”

 

 





Problema com Aspas e Aspas Simples Prototype

10 04 2007

Saudações

O prototype quando enviar ” ou ‘ ele insere uma \ antes de cara ocorrência destes caracteres.

Para inserir corretamente em bases de dados é necessário remover esta barra e transformar os caracteres especiais em caracteres html.

Para isso:

foreach ($_POST as $key=>$valor) {

     $valor = eregi_replace("\\","",$valor);

     $this->dados[$key] = htmlspecialchars($valor);

}

[]’s Anselmo Battisti





Esquema diabólico para matar o Flash

7 04 2007

Sim queridos leitores, sim, sim sim.

Aqui será detalhado um plano meticuloso para matar o flash. Este plano foi traçado com a ajuda de Everton, amigo e comparsa.

Os Fatos

Ele é o herói com um único super poder, sua velocidade. Como força é igual a massa X aceleração e tendo em vista que flash é mais rápido que o Super Man, ele logicamente consegue bater mais forte que o Homen de aço.

A velocidade do som segundo a wikipedia é de aproximadamente 1.257,1 Km/h, isto é parte fundamental do plano.

Continue lendo »





Frase do Dia

3 04 2007

A equipe de desenvolvimento de software perfeita seria composta por programadores surdos e analistas mudos. Isto aumentaria a clareza da documentação e melhoraria a análise de requisitos.

Anselmo Battisti

O Sistema nunca é um fim por si só, é simplesmente um meio de levar adiante o negócio da empresa.
Alan Dennis “Análise e Projeto de Sistemas”





Ida ao Paraguai

31 03 2007

Hoje, dia 31 de março foi ao Paraguai comprar umas coisinhas. Foi uma das idas mais engraçadas. A fila da aduana esta relativamente pequena, levamos apenas 1:30 hrs para declarar nossas “muambas”.

Na fila estavam, eu e Everton e o Marcelo, durante a longa espera saíram algumas frases memoráveis.

Everton:
Quando eu escuto música sertaneja eu colono o nome dos cantores das músicas em minhas variáveis, variável tiaocarreiro, daniel.

Anselmo:
Se for um vetor você chama ele de familia lima então?





Frase do Dia

30 03 2007

Enquanto não houver reclamação não há problema.
Anselmo Battisti em um lampejo de desespero.





Acentuação Ajax Prototype

29 03 2007

Todo mundo já sofreu, sofre ou sofrerá com as malditas codificações no AJAX. No prototype não poderia ser diferente.

Existem várias soluções, a que eu uso é a seguinte:

No vetor POST que chega até o PHP eu passo um utf8_decode em cada uma das suas possições.

foreach ($_POST as $key => $valor ){
   $_POST[$key] = utf8_decode($valor);
}

Agora quando você gravar no banco ele ficará com a acentuação correta.

O Everton meu amigo de longa data que me lembrou hoje deste macete.





GAIM PROXY BLOQUEADO

28 03 2007

Saudações

Em muitas redes a porta 1863, que é a porta padrão do GAIM, estÁ bloqueada. Hoje meu amigo Rafael Felberg me mandou um link de um sujeito mostrando como usar o GAIM nestas condições.

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=8277

[]’s Anselmo Battisti





Frases do Dia

27 03 2007

“Você tem alguma atividade que te entra fundos.” 

Em conversa com meu amigo Kaleu sobre a falta de dinheiro dos universitários.





Para o Fim de Semana

24 03 2007

Piada do Cachorro





Validação de CPF em PHP

23 03 2007

Sempre precisamos fazer validação de CPF. Existem milhares de sites que tem códigos de validação, o problema é que muitos destes códigos NÃO funcionam em um monte de casos.

Este código publicado no site do IMASTERS é quente, estou usando a algum tempo e não me decepciona.

http://forum.imasters.com.br/index.php?showtopic=125547

[]’s Anselmo  Battisti





Frase do Dia

16 03 2007

A coisa mais incompreensível sobre o mundo é que ele é compreensível.
Albert Einstein

Retirado do livro “A Ansiedade da Informação 2 pag. 42”





Apostila de PHP

10 03 2007

Faz uns 3 anos aproximadamente eu e meu amigo Everton TAVARESSSSSSSSSS escrevemos uma apostila de PHP-Mysql para um mini curso na EPAC.

Ela estava no meu outro site mas o servidor esta fora do ár por isso resolvi colocar aqui também.

pdf.gif Apostila de PHP-Mysql





Formatar moeda”valores monetários” em Javascript

8 03 2007

Importante Para Download e Demonstração Acesse

http://battisti.etc.br/projetos/

Saudações

Pessoal ai vão 3 funções bem legais para manipular valores monetários em javascript.

Continue lendo »





Frase do Dia

8 03 2007

Odeio gente que faz de tudo pra não fazer nada.
Darlon Vasata

A morte do corpo representa o fim da consciência do renascimento
Anselmo
A única forma de expressão que não pode ser censurada é o pensamento. Pense e seja livre!
Anselmo’





Linux Day

4 03 2007

Pessoal é com grande satisfação que escrevo aqui neste blog sobre o Linux Day. Ele será um evento organizado pelo GNU/C “Grupo de Usuários de Software Livre de Cascavel” no dia 17 de março de 2007.

O objetivo do evento é instalar software livre em computadores da comunidade, além disto o evento contará com palestra sobre software livre entre outras coisas.

Quem quiser ajudar a divulgar o evento pode colocar links em seus sites:

bannerpequeno.gif

120X60

Banner 1 do linux Day

568X60

Coloquem o link apontando para o endereço

http://gnucascavel.org/

Todos estão convidados e é GRÁTIS!





Frase do Dia

2 03 2007

Se Cabral usasse o IE para navegar ele nunca teria chegado até o Brasil.
Anselmo Battisti





LS bento e RM batizado

27 02 2007

Pessoal tendo em vista o grande número de “adubamentos”, entendam cagadas feitas no servidor, de hoje em diante meu teclado terá um novo acessório.

Foto  1

tec1.jpg

Foto 2

tec2.jpg

Sim é isso mesmo que vocês estão pensando, é uma fita do Senhor do Bomfim.





Frase do Dia

22 02 2007

Descobrir qual é o erro é metade da solução de um problema.

Anselmo Battisti

Mãos rápidas levam menos chicotadas.

Palhaço Curst – Simpson “Em sua fábrica de brinquedos na malásia”





Easy DOM Creator & Prototype & Frase do DIA

20 02 2007

NA NOVA VERÃO DO PROTOTYPE O EASY DOM CREATOR FICOU OBSOLETO 🙂 USEM O INSERT

Este é um “grande” POST.

1 – Easy DOM Creator: EDC

É uma biblioteca desenvolvida para o JQuery porém ela também é compatível com o Prototype.

O que ela faz:

Quando se programa em AJAX é muito comum a necessidade de criar objetos HTML em tempo de execução, a única saída é trabalhar com o DOM do javascript porém sabemos que isso é tedioso pois as chamadas das funções são gigantes e tem o problema do cross-borwser.

O EDC é um jeito simples de mexer com DOM, veja o exemplo:

 Continue lendo »




Usuários ou Colaboradores ?

12 02 2007

Passamos muito tempo usando ferramentas com limitações visíveis por não sabermos/podermos realizar modificações na mesma a fim de atender totalmente nossas necessidades. É estranho como temos que adaptar nossas necessidade a uma ferramenta que deveria atender plenamente nossa necessidade.

O paradigma da Web 2.0 é transformar as entidades que utilizam nossos artefatos, entenda site ou sistema, em colaboradores e não mais em apenas usuários. Infelizmente ainda não foi definido de forma clara como esta transição acontecerá.

Continue lendo »





Frase do Dia

10 02 2007

O Usuário comum real está guardado em um caixa forte hermeticamente lacrado no International Bureau of Strandads em Genebra.

“Steve Krug”

 

Meus Deus, os ícones verdes estão dominando o Mundo “EMS, Dreamweaver, Zend Studio, MSN, DataBase Designer”. É uma invasão marciana.

“Anselmo Battisti”





PHPMailer usando uma conta do YAHOO

9 02 2007

Para mandar e-mail pelo php usando o smtp do yahoo a classe phpmailer é altamente recomendada.

Segue abaixo os códigos necessário:

/* Configuração do PHP MAILER -----------------------------*/
$mail = new PHPMailer();
$mail->IsHTML(true); // envio como HTML se 'true'
$mail->WordWrap = 50; // Definição de quebra de linha
$mail->IsSMTP(); // send via SMTP
$mail->SMTPAuth = true; // 'true' para autenticação
$mail->Mailer = "smtp"; //Usando protocolo SMTP
$mail->Host = "smtp.mail.yahoo.com"; //seu servidor SMTP
$mail->Username = "seuusuarionoyahoo sem aroba";
$mail->Password = "senhadoyahoo"; // senha de SMTP
$mail->From = "seuusuarionoyahoo@yahoo.com.br";
$mail->FromName = "Seu Nome";

// caso queira que o reply seja enviado para outro lugar
$mail->AddReplyTo("emaildaempresa","empresa");

$mail->AddAddress("mail do destinatário","nome do destinatário");
$mail->Body = "corpo do email";
$mail->Subject = "Assunto do email";

if(!$mail->Send()){
   return false;
} else {
   return true;
}

Importante !

Não se esqueçam de dar um include no arquivo class.phpmailer.php , ele pode ser baixado no endereço

http://phpmailer.sourceforge.net/

Com o gmail é um pouco diferente pois ele usa ssl e neste caso tem que ter o módulo ssl no apache.

Problemas mais comuns:

1 – O e-mail do Yahoo tem que permitir enviar e-mail através de clientes como o thunderbird e outlook veja como

2 – Seu servidor possui algum firewall, antivirus ou porta 25 bloqueada.

Caso alguém tenha feito de uma maneira diferente, por favor coloque aqui um comentário para ajudar a comunidade.





Frase do Dia

7 02 2007

É logicamente impossível para qualquer coisa ser melhor do que outra enquanto permanecer completamente idêntica.

Esta frase foi tirada do seguinte artigo:

http://apimente-br.tripod.com/LNW.htm





Frase do Dia

6 02 2007

O maior causador de gambiaras da história é o IF.
Anselmo Battisti

Você compraria em uma loja suja e com vendedores mal educados? pois é justamente isto que oferece aos seus clientes quando não leva em conta a usabilidade do seu site.
Anselmo Battisti

Minha religião não permite que eu instale o plug-in do flash no navegador!
Anselmo Battisti





ADODB e Conexão com base de dados

5 02 2007

Ta ai uma classe para fazer conexão com base de dados mssql com ADODB

class conecta
{
   private function __construct(){
  }

  /**
    * getConexao
    *
    * @abstract Retorna um objeto de conexão com o banco de dados 
    * de acordo com o usuário,senha e base de dados
    *
    **/
    public static function getConexao($pusuario=null,$psenha=null,$pbanco=null) {

      ini_set('display_errors',0);
      // caso não seja passado um banco ele pega o da sessao
      if($pbanco=="") {
         $banco = $_SESSION['bancoDados'];
      } else {
            $banco = $pbanco;
      }

      if($pusuario==""){
            $usuario = $_SESSION['usuario'];
      } else {
           $usuario = $pusuario;
      }

      if($psenha==""){
          $senha = $_SESSION['senha'];  /* senha do usuário */
      } else {
         $senha = $psenha;
      }

      $servidor = "nome do servidor";

      $db = @NewADOConnection('mssql');

      $db->Connect($servidor,$usuario,$senha,$banco);

      $db->SetFetchMode(ADODB_FETCH_ASSOC); 

      if($db->ErrorMsg()=="Login incorrect."){
         echo "Não logou";
      } else {
         return $db;
      }
   }
}

Quando você logar com uma senha errada ele redireciona para o arquivo index indicando que aconteceu o ERRO.





Montar Disquete

4 08 2006

Para montar o disquete

mount -t vfat /dev/fd0 /media/floppy




CSS focus

27 07 2006
input:focus, textarea:focus, label:focus {
	background: #fff;
	border: 1px solid #686868;
}
para trocar a cor de um input quando vc clica dentro dele. Isto
não funciona no IE




Frase do Dia

21 07 2006

A porção da realidade que se enxerga é inversamente proporcional ao tempo de permanência assistindo a Globo!
Anselmo Battisti 

 





Máquina Virtual & Download de todos os links de uma página

13 07 2006

Memória da Máquina Virtual Java

Quando for rodar um programa em JAVA e faltar memória na maquina virtual rode com o seguinte parâmetro

-Xms256M -Xmx1000M

no eclipse va em windows/options/instaledJRE/ seleciona a sua maquina virtual clique em editar e coloque o comando adicional.

Download de todos os links de uma Página

para fazer o downlaod de todos os links de uma página ai vai o script

wget url_site

sed -n ‘s/^<IMG SRC.*<A/<A/;/.java/p’ index.html > lista
wget -i lista -F \ –base url_site





SQL – CONSTRAINT

16 05 2006

Taca fogo em tudo 🙂 validação agora e tudo no banco aprendi a usar constraint. 

ALTER TABLE PiadCapacitacao WITH NOCHECK
ADD CONSTRAINT Horas_positivas CHECK (Cpc_HrsSmnUsadas > 0);





localeconf

8 05 2006

Hoje achei um programa muito fácil para configurar a localidade do seu computador no mundo, ele me ajudou a traduzir o openoffice para o português

apt-get install localeconf





screen É o cara

4 05 2006

O screen é um programa muito interessante que permite dentro de um único shell abrir várias instâncias dele, isso é muito util quando se usa o putty por exemplo.

Uma matéria muito boa pode ser lida no site do aurélio.

Aqui vai um resumão da coisa:

convenção Quando ver um ^ significa CTRL + a.

^a muda de tela

^c  cria uma nova tela

^: você cai na linha de comando do screen, ao digitarhardstatus alwayslastline “%c %w” que vai aparecer uma barra que diz quantas janelas estão abertas e em qual janela você está.





Segunda Aula Prática de IA

4 05 2006

Definiçã:

conhecimento: O conhecimento inclui, mas não está limitado, as descrições, hipóteses, conceitos, teorias, princípios e procedimentos que são ou úteis ou verdadeiros. O estudo do conhecimento é conhecido como epistemologia.

O conhecimento distingui-se da mera informação porque está associado a uma intencionalidade. Tanto o conhecimento como a informação consistem de declarações verdadeiras, mas o conhecimento pode ser considerado informação com um propósito ou uma utilidade.
referência
rpt.wikipedia.org/wiki/Conhecimento

Aprendizagem: A definição deste conceito vem sido estudado pela humanindade e a cada nosos conhecimentos que adquirimos o conceito de aprendizagem muda.

antiguidade:China e na Índia a finalidade era transmitir as tradições e os costumes.

idade media:O aprendizado era comendado pela religiao que nao respeitava os limites humanos mas sim a providencia divina.

vigotsky? o pensamento verbal não é uma forma de comportamento natural e inata, mas é determinado por um processo histórico-cultural e tem propriedades e leis específicas que não podem ser encontradas nas formas naturais de pensamento e fala. Uma vez admitido o caráter histórico do pensamento verbal, devemos considerá-lo sujeito a todas as premissas do materialismo histórico, que são válidas para qualquer fenômeno histórico na sociedade humana (Vygotsky, 1993 p.44).

piaget: Nos estudos de Piaget, a teoria da equilibração, de uma maneira geral, trata de um ponto de equilíbrio entre a assimilação e a acomodação, e assim, é considerada como um mecanismo auto-regulador, necessária para assegurar à criança uma interação eficiente dela com o meio-ambiente. (Wadsworth, 1996) Piaget postula que todo esquema de assimilação tende a alimentar-se, isto é, a incorporar elementos que lhe são exteriores e compatíveis com a sua natureza. E postula também que todo esquema de assimilação é obrigado a se acomodar aos elementos que assimila, isto é, a se modificar em função de suas particularidades, mas, sem com isso, perder sua continuidade (portanto, seu fechamento enquanto ciclo de processos interdependentes), nem seus poderes anteriores de assimilação. (Piaget,1975, p.14)

Resumo do McCarthy

Se um problema requer inteligencia para ser resolvido e se uma maquina conseguir resolve-lo entao esta maquina pode ser considerada inteligente.

O teste de Turing he um bom exemplo de como identificar se uma maquina he inteligente. O Teste prega o seguinte perguntas sao feitas a uma maquina e um humano, se quem fizer al pergunta nao conseguir identificar qual a maquina entao esta exibiu um comportamento similar ao comportamenteo humano logo ela pode ser considerada he inteligente.

IA pode ser aplicada mas mais variadas areas em cada uma destas areas he necessario um tipo de conhecimento inteligencia.





Anselmo é um Agente Inteligente

4 05 2006

Mais uma vez o homem Anselmo mostra sua superioridade intelectual e com regras de inferências eurísticas apuradas resolve mais problema.

Pergunta que foi respondida:

Qual o time de futebol da professora de IA?

resposta depois de 5 segundos 
R: Internacional

Como vc sabe anselmo, contenos: claro meus suditos

– Ela fez doutorado e mestrado em Porto Alegre logo ou as chances de torncer para um tima gaucho s'ao grandes, ela nasceu em Porto Alegre entao so podia ser ou Gremio ou para o Inter, como ela estava relativamente contente e sabendo que ontem o Inter ganhou na libertadores logicamente INTERNACIONAL

reposta CORRETA  

Sou um Agente INTELIGENTE!





Reportar Erros e Alertas aos usuário “PHP”

3 05 2006

É importante separar bem a camada de apresentação da camada de negócios. Em se tratando das mensagens de erro uma boa abordagem é a criação de um arquivo centralizador que irá possuir o layout e apenas receberá qual mensagem deve exibir:

<html>
<body>
<div id="corpo">
<blockquote>
<p>
<?
echo "<img src='imagem/icone_". $_SESSION['mensagem_tipo'].".gif'/>";
echo $_SESSION['mensagem'];
?>
</p>
<a href="<?echo $_SESSION['url']?>">Voltar</a>
</blockquote>
</div>
</body>
</html>

Quando ocorrer um erro no uso do sistema basta fazer o seguinte:

$_SESSION[‘mensagem’] = “Favor informar um código válido!”;
$_SESSION[‘mensagem_tipo’] = “erro”;
header(“location: mensagem.php”);

A variável de sessão mensagem tipo é usada para identificar qual o tipo de mensagem que será apresentada ao usuário “erro, alerta, sucesso etc…”, no meu caso eu usei para indicar qual imagem irá aparecer ao lado da mensagem.

[]’s Anselmo Battisti





10 Armadilhas da Análise de Requisitos

2 05 2006

Confusão sobre requisitos: requisitos mal elicitados;

Envolvimento inadequado do cliente: o cliente não é envolvido ou não tem interesse pelo processo do desenvolvimento, isso geralmente acarreta em distorções da visão do que o cliente imagina e o que ele recebe;

Requisitos vagos ou ambíguo: por serem mal elicitados vários requisitos podem descrever a mesma tarefa ou serem ambíguos quanto ao que devem realmente significar;

Requisitos sem prioridades: cada requisito deve ser categorizado quanto ao seu nível de prioridade, isto norteara os desenvolvedores sobre quais requisitos devem ser implementados primeiro além da atenção especial para pontos críticos do sistema;

Requisitos inúteis: construção de requisitos que estão fora do domínio do problema, são funções que o cliente imagina serem necessárias, a política de criação de um requisito deve ser: tudo o que não é necessário é desnecessário;

Paralisação na análise: um projeto deve avançar mesmo que toda a análise não tenha sido concluída pois os erros somente irão aparecer quando o projeto estiver sendo efetivamente desenvolvido;

Alteração do escopo: adição de novos requisitos durante a faze do projeto ou codificação é sinal de problemas na análise, em metodologias ágeis a alteração do escopo deixou de ser um problema para ser uma necessidade;

Processo de mudanças: quais os procedimentos devem ser feitos quando mudanças devem acontecer;

Análise de impacto: quais serão os reais efeitos de uma mudança dentro do software, o que ela afetará;

Controle de Versões: sistemas de controle de versão adequados evitam refazer trabalho perdido ou sobrescrito por um colega, no desenvolvimento de aplicações para Web este conceito é ainda mais importante.

Livro Indicado pelo Battisti

Gerenciamento de Projetos com DotProject





Hierarquia dentro de um Projeto de Software

1 05 2006

Em algumas empresa o desenvolvimento de Software é feito de uma forma sistematizada e é desenvolvido em partes por grupos de pessoas com funções distintas:

pirâmida social

gerentes de projeto: geralmente pessoas mais experientes, a eles cabe a difícil tarefa das estimativa, de tempo e de custo, participam de todas as fazes do projeto mas de uma maneira macro não se preocupando com os detalhes peculiares de cada fase, mas sim do que afeta o sistema como um todo dentro da fase;

analista: responsável pela ponte entre os desenvolvedores e os clientes, produz os requisitos do sistema;

projetistas: com base nos requisitos elicitados pelos analistas, os projetistas criam os projetos estruturais "modulos" projetos de dados "quais informações devem ser armazenadas", a partir disto modularizam o sofware de forma que eles "módulos" sejam altamente coeso e fracamente acoplados;

programadores: pro fim temos os programadores que ficam com a transformação dos diagramas produzidos pelos projetistas em códigos da linguagem definida para o sistema ejunto com os clientes são responsáveis pelos testes do sistema.





VIM vi e Venci

27 04 2006

Usem editores de texto realmente poderosos VIM,  EMACS.  Larguem estes editores WYSIWG eles te fazem perder segundo preciosos. No fim de um longo dia de trabalho você perdeu vários minutos, ao fim de um mês “horas” em vão.

O Aurélio, sim aquele Aurélio, cara muito gente boa por sinal, abrindo aspas “Estava com uma dúvida em um ER e pedi ajuda a ele, depois de uns 3 dias estava lá a resposta”, leia esta matéria sobre o VI que ele escreveu muito boa.

http://aurelio.net/doc/vim/pulando.html

Outra dica legal

para localizar por palavras dentro de arquivos no LINUX usem:

egrep palavra_busca nome_arquivo | less

no nome do arquivo pode ser qualquer coisa tipo *.php ou coisa do gênero





Conceitos da Inteligência Artificial IA

27 04 2006

O QUE É INTELIGÊNCIA?

Binet Binet: “Inteligência é julgar bem, compreender bem;

Tearman Tearman: " A capacidade de conceituar e de compreender oeu significado”;

Helm Helm:“A atividade inteligente consiste na compreensão doessencial de uma situação e numa resposta reflexa essencial de uma situação e numa resposta reflexa propriada”;

Piaget Piaget: “Adaptação ao ambiente físico e social”;

O QUE É INTELIGÊNCIA ARTIFICIAL (IA)?

• “É a propriedade de um artefato de poder resolver problemas que se fossem resolvidos por um seu vivo problemas ele seria considerado inteligente.” (Barreto)

• Assim como existe medidas de inteligência para humanos é possível ter medidas de inteligência é possível ter medidas de inteligência para máquinas.

Eliane Rich: “IA é o estudo de como fazer os computadores realizarem coisas que, hoje em dia são feitas melhores pelas pessoas”.

Winston: IA é o estudo das idéias que permitem aos computadores serem inteligentes”.

Charniak and McDermott: IA é o estudo das faculdades mentais através da utilização de modelos computacionais”.

Bellman Bellman: “IA é o estudo e simulação de atividades que normalmente assumimos que requerem inteligência”.

Russell and Norvig: “IA é o estudo e implementação de agentes racionais”.

fonte: http://www.inf.ufsc.br/~falqueto/aGraduacao/INE5633Sist_Intel/IA_Geral/IA_Introd_Historia.PDF
Histórico da Inteligência Artificial

Histórico da IA

As correntes de pensamento que se cristalizaram em torno da IA já estavam em gestação desde os anos 30 [BF81]. No entanto, oficialmente, a IA nasceu em 1956 com uma conferência de verão em Dartmouth College, NH, USA. Na proposta dessa conferência, escrita por John McCarthy (Dartmouth), Marvin Minsky (Hardward), Nathaniel Rochester (IBM) e Claude Shannon (Bell Laboratories) e submetida à fundação Rockfeller, consta a intenção dos autores de realizar “um estudo durante dois meses, por dez homens, sobre o tópico inteligência artificial''. Ao que tudo indica, esta parece ser a primeira menção oficial à expressão “Inteligência Artificial'' [McC79]. Desde seus primórdios, a IA gerou polêmica, a começar pelo seu próprio nome, considerado presunçoso por alguns, até a definição de seus objetivos e metodologias. O desconhecimento dos princípios que fundamentam a inteligência, por um lado, e dos limites práticos da capacidade de processamento dos computadores, por outro, levou periodicamente a promessas exageradas e às correspondentes decepções.

Existem duas linhas principais de pesquisa para a construção de sistemas inteligentes: a linha conexionista e a linha simbólica .

Conexionista visa à modelagem da inteligência humana através da simulação dos componentes do cérebro, isto é, de seus neurônios, e de suas interligações. Esta proposta foi formalizada inicialmente em 1943, quando o neuropsicólogo McCulloch e o lógico Pitts propuseram um primeiro modelo matemático para um neurônio. Um primeiro modelo de rede neuronal , isto é, um conjunto de neurônios interligados, foi proposto por Rosenblatt. Este modelo, chamado Perceptron , teve suas limitações demonstradas por Minsky e Papert [MP69] em livro onde as propriedades matemáticas de redes artificiais de neurônios são analisadas. Durante um longo período essa linha de pesquisa não foi muito ativa, mas o advento dos microprocessadores, pequenos e baratos, tornou praticável a implementação de máquinas de conexão compostas de milhares de microprocessadores, o que, aliado à solução de alguns problemas teóricos importantes, deu um novo impulso às pesquisas na área. O modelo conexionista deu origem à área de redes neuronais artificiais.

Simbólica segue a tradição lógica e teve em McCarthy e Newell seus principais defensores. Os princípios dessa linha de pesquisa são apresentados no artigo Physical symbol systems de Newell [New80]. O sucesso dos sistemas especialistas (SE) (do inglês, “expert system''), a partir da década de setenta, estabeleceu a manipulação simbólica de um grande número de fatos especializados sobre um domínio restrito como o paradigma corrente para a construção de sistemas inteligentes do tipo simbólico. Para facilitar a apresentação, vamos dividir a história da IA simbólica em “épocas'', conforme proposto em relatórios internos do MIT (Massachusetts Institute of Technology):

Divisão cronológica das idéias e dos objetivos atribuídos a IA

Clássica

Inicialmente, a pesquisa em manipulação de símbolos se concentrou no desenvolvimento de formalismos gerais capazes de resolver qualquer tipo de problemas. O sistema GPS, General Problem Solver, projetado por Ernst e Newell [EN69], é um exemplo deste tipo de pesquisa. Estes esforços iniciais ajudaram a estabelecer os fundamentos teóricos dos sistemas de símbolos e forneceram à área da IA uma série de técnicas de programação voltadas à manipulação simbólica, por exemplo, as técnicas de busca heurística. Os sistemas gerais desenvolvidos nesta época obtiveram resultados interessantes, por vezes até impressionantes, mas apenas em domínios simplificados, onde o objetivo era principalmente a demonstração da técnica utilizada, e não a solução de um problema real. O problema com os sistemas gerais é que a sua extensão a domínios de problemas reais se mostrou inviável. Isto se deveu a duas razões, uma relacionada com características teóricas dos métodos utilizados, e outra associada à natureza do conhecimento do mundo real.

A razão teórica é conseqüência do uso, nos sistemas gerais, de modelos baseados em lógica de primeira ordem como formalismo básico. A utilização desses modelos leva à chamada explosão combinatória : a memória e o tempo necessários para resolver um determinado problema cresce exponencialmente com o tamanho do problema. Este problema, descrito por Cook em seu artigo The complexity of theorem proving procedures [Coo71], é inerente aos métodos baseados em lógica, independentemente das técnicas de programação utilizadas. A segunda razão está associada ao fato de que, freqüentemente, o conhecimento disponível sobre o mundo real é incompleto e parcialmente incoerente, e que por vezes a única forma de solução conhecida para determinados problemas reais consiste em uma série de regras práticas não fundamentadas por nenhum tipo de teoria geral do domínio que pudesse ser usada para orientar a solução.

Esta situação levou a dois tipos diferentes de solução: (i) uso de métodos formais de inferência mais fracos do que a lógica de primeira ordem que garantissem uma certa eficiência aos programas, por exemplo, lógicas multivalores [PS85], [Bel77] e linguagens terminológicas [BW77]. (ii) Desenvolveram-se métodos heurísticos e lógicas não convencionais para permitir a representação de crenças, incoerências e incompletudes, por exemplo, lógica modal [HM85], lógica de exceções [Rei80] e lógica nebulosa [Zad79].

Romântica

Durante a década de setenta, a IA estava praticamente restrita ao ambiente acadêmico. Os objetivos da pesquisa eram, principalmente, a construção de teorias e o desenvolvimento de programas que verificassem estas teorias para alguns poucos exemplos. É interessante notar que o fato de que não havia interesse em construir programas de IA “de verdade'', isto é, com aplicações práticas, não se deve a uma eventual incompetência em programação dos pesquisadores em IA. Pelo contrário, foi a inspiração desses “hackers'' que levou a conceitos hoje integrados à ciência da computação, como: tempo compartilhado, processamento simbólico de listas, ambientes de desenvolvimento de “software'', orientação objeto, etc., além da mudança da relação usuário-computador ao eliminar a intermediação de um operador e colocar cada usuário diante de sua estação de trabalho.

Uma mudança importante ocorreu ao longo da década de setenta em relação aos critérios acadêmicos de julgamento de trabalhos em IA: houve uma crescente exigência de formalização matemática. Se no início dos anos setenta, um programa, mesmo tratando de alguns poucos exemplos de um problema até então não tratado, já era considerado IA, isto não acontecia mais em 1980. O programa em si passou a ser a parte menos importante; a análise formal da metodologia, incluindo decidibilidade, completude e complexidade, além de uma semântica bem fundada, passou a ser o ponto fundamental [Hay77], [McD78]. A década de setenta marcou também a passagem da IA para a “vida adulta'': com o aparecimento dos primeiros SE's, a tecnologia de IA passou a permitir o desenvolvimento de sistemas com desempenho intelectual equivalente ao de um ser humano adulto, abrindo perspectivas de aplicações comerciais e industriais.

Moderna

A tecnologia de SE disseminou-se rapidamente e foi responsável por mais um dos episódios ligados a promessas não cumpridas pela IA: o sucesso dos primeiros SE's chamou a atenção dos empresários, que partiram em busca de um produto comercializável que utilizasse esta tecnologia. No entanto, um SE não era um produto: um produto, na visão dos empresários, não deveria ser um sistema específico para um dado problema, mas algo que fosse implementado uma única vez e vendido em 100.000 unidades, por exemplo, uma ferramenta para a construção de sistemas especialistas (ASE) . Com isso foram colocadas no mercado uma grande quantidade de ASE's que prometiam solucionar o problema de construção de SE's. A conseqüência foi uma grande insatisfação por parte dos usuários, pois, apesar de uma ferramenta de programação adequada ajudar muito a construir um sistema complexo, saber o que programar continua sendo o ponto mais importante.

Se os ASE's deveriam ser vendidos como produtos de IA, então em algum lugar deveria haver IA, e o lugar escolhido foi o motor de inferência , que passou a ser considerado como sinônimo de IA. Isto levou à ilusão de que para construir um SE bastaria comprar um ASE, enquanto que a verdade é que a IA em um SE está basicamente na forma como é representado o conhecimento sobre o domínio, isto é, onde a IA sempre esteve: na tentativa de entender o comportamento inteligente a ser modelado, no caso o comportamento do especialista ao resolver um problema. Uma outra conseqüência desta visão distorcida dos ASE's foi a pouca ênfase dada inicialmente à aquisição de conhecimento , certamente a parte mais difícil do desenvolvimento de um SE. Se exageros existiram na publicidade dos ASE's, por certo houve também trabalhos descrevendo com fidelidade o potencial e as limitações da nova tecnologia (por exemplo, [DK77], [HRWL83] e [Wat86]).

Atualmente, os ASE's são considerados como parte de uma tecnologia de desenvolvimento de “software'' estabelecida, sendo objeto de diversas conferências internacionais e submetida a avaliações rigorosas de desempenho (por exemplo, [SMS92]). Entre os diversos benefícios associados ao desenvolvimento de SE's podem-se citar: distribuição de conhecimento especializado, memória institucional, flexibilidade no fornecimento de serviços (consultas médicas, jurídicas, técnicas, etc.), facilidade na operação de equipamentos, maior confiabilidade de operação, possibilidade de tratar situações a partir de conhecimentos incompletos ou incertos, treinamento, entre outros. Atualmente, existem milhares de SE's em operação nos mais variados domínios, e a influência da IA em outros campos da computação, como engenharia de “software'', bancos de dados e processamento de imagens vem crescendo constantemente.

As principais áreas de pesquisa em IA simbólica são atualmente: sistemas especialistas, aprendizagem, representação de conhecimento, aquisição de conhecimento, tratamento de informação imperfeita, visão computacional, robótica, controle inteligente, inteligência artificial distribuída, modelagem cognitiva, arquiteturas para sistemas inteligentes, linguagem natural e interfaces inteligentes. Além das linhas conexionista e simbólica, observa-se hoje o crescimento de uma nova linha de pesquisa em IA, baseada na observação de mecanismos evolutivos encontrados na natureza, tais como a auto-organização e o comportamento adaptativo. Nesta linha, os modelos mais conhecidos são os algoritmos genéticos e os autômatos celulares [Bar75], [FTW83], [GH88], [Hol75] e [Hol86].

A gradativa mudança de metas da IA, desde o sonho de construir uma inteligência artificial de caráter geral comparável à do ser humano até os bem mais modestos objetivos atuais de tornar os computadores mais úteis através de ferramentas que auxiliam as atividades intelectuais de seres humanos, coloca a IA na perspectiva de uma atividade que praticamente caracteriza a espécie humana: a capacidade de utilizar representações externas, seja na forma de linguagem, seja através de outros meios [Hil89]. Deste ponto de vista, a computação em geral e a IA em particular são o ponto culminante de um longo processo de criação de representações de conhecimento, iniciado com as primeiras pinturas rupestres. Esta nova perspectiva coloca os programas de IA como produtos intelectuais no mesmo nível dos demais, ressaltando questões cuja importância é central para os interesses atuais da IA, por exemplo, como expressar as características individuais e sociais da inteligência utilizando computadores de maneira a permitir uma maior produtividade, e como as propriedades das representações utilizadas auxiliam e moldam o desenvolvimento de produtos intelectuais?

fonte: http://www.das.ufsc.br/gia/history/