Formato .ogg no Windows Media Player


Written on March 29, 2009 – 12:16 pm | by André Gomes

Há um formato que anda a ficar bastante difundido por este mundo das internet’s que é o formato .ogg.

Já não é a primeira vez que tenho um albúm com as músicas todas neste formato. Para quem quiser reproduzir este tipo de ficheiros no seu Windows Media Player (que não o reproduz por defeito) basta fazer o download dos respectivos codecs aqui.

Para saber um pouco mais sobre o tema:

Ogg na Wikipédia (EN) - http://en.wikipedia.org/wiki/Ogg

Ogg na Wikipédia (PT) - http://pt.wikipedia.org/wiki/Ogg

Tags: , ,

Jazz a Galope


Written on March 12, 2009 – 7:56 pm | by André Gomes

Queria apenas comunicar que fiz o meu primeiro post no blog Jazz a Galope, do qual já falei anteriormente, em que falo sobre um guitarrista português que conheci recentemente - André Fernandes.

Aconselho-vos a acompanharem este espaço, onde se vai falar essencialmente de Jazz, abrangendo tanto o  panaroma nacional como o internacional.

Jazz a Galope

Tags:

Novo vídeo blogue - Jazz a Galope


Written on March 8, 2009 – 4:20 am | by André Gomes

Gostaria de divulgar um novo espaço onde eu e mais um grupo de amigos iremos colocar vídeos musicais com enfâse no Jazz, Blues, Funk e outros derivados…

Sem mais a acrescentar, o link é :

Jazz a Galope - http://jazzagalope.blogspot.com/

Tags: ,

A importância do olfacto nas relações humanas


Written on March 1, 2009 – 12:51 am | by André Gomes

Antes de mais, este é um post que foge um bocado ao tema que costuma predominar neste espaço mas como foi algo sobre o qual me apeteceu escrever e como eu é que mando aqui, cá vai.

O olfacto é um dos nossos principais sentidos, embora todos eles sejam importantes. Este, assume uma importância extrema quando estamos a falar de relações inter-pessoais entre pessoas de sexo oposto ou mesmo entre pessoas do mesmo sexo.

Já todos nós tivemos reacções positivas e negativas ao cheiro de um homem ou de uma mulher que estava próximo de nós. Isso são automatismos do nosso corpo que não conseguimos controlar. Cheiramos, avaliamos e pronto - ficamos com uma ideia sobre essa pessoa (pode ser uma primeira ideia ou até a alteração de uma previamente concebida).

O olfacto é sem dúvida um dos mais cruéis indicadores fisiológicos sobre alguém. Quando o nosso corpo aceita um determinado cheiro passamos a gostar dessa pessoa e a reconhecê-la por esse cheiro, por outro lado, quando o nosso corpo rejeita um cheiro, então aí não há volta a dar. Se era um amigo ou um conhecido que cheire “mal” nunca mais vamos conseguir olhar para ele da mesma maneira sem nos lembrarmos daquilo. Se era uma pessoa do sexo oposto pela qual tínhamos algum tipo de “boa imagem mental” construída e descobrimos que o seu cheiro não é nada agradável também já não há remédio - essa “boa imagem mental” foi completamente destruída.

O odor de uma pessoa é uma espécie de código de barras. Ele marca essa pessoa.

Há o caso da transpiração. Sim, ninguém gosta, ninguém suporta, ninguém quer cheirar a suor. Mas o problema é que há pessoas que acabam por se descuidar. E sim, é das piores coisas… Uma pessoa a cheirar a suor (sem ser no ginásio que há desculpa e mesmo assim há quem abuse lá) é algo que não é mesmo nada agradável. Aquelas situações de estarmos no café e numa mesa bem pertinho de nós passar alguém a cheirar a suor, ou estarmos num restaurante e o empregado estar com aquele cheirinho de quem já trabalhou umas horas de uma lado po outro… Bem, é para esquecer mesmo (esta última aconteceu-me há pouco tempo).

Aparentemente, o olfacto desempenha também um papel importantíssimo no comportamento sexual humano. Quando as pessoas, tanto homens como mulheres, estão excitadas, há substâncias a circularem no corpo que produzem odores característicos e que podem funcionar a nível atractivo ou repulsivo perante o sexo oposto.

Por outro lado, mesmo sem estarem neste estado, há odores que podem funcionar como estimulantes. Há quem fale em compatibilidade de cheiros. Que há cheiros que são compatíveis por natureza e que duas pessoas que se cruzem, se uma delas gostar mesmo muito do cheiro da outra… Já não há hipótese, essa pessoa vai ficar vidrada nesse odor. Vai querer cheirá-lo nas suas próprias mãos quando já não estiver com o (a) parceiro (a).

Uma prova da importância do cheiro no nosso quotidiano é a gigantesca indústria de perfumaria que existe no mundo. É um mercado enorme…

Claro que o que está a ser dito até aqui é válido tanto para o odor natural de cada pessoa como para o artificial (mascarado pelo perfume). Mas há muito para falar sobre este tema. Estou a ler um livro que aborda esta temática da importância dos cheiros que se chama “O Perfume”, mais ainda estou no início. Quando acabar talvez volte a tecer mais comentários sobre esta área.

Tags: , , ,

Nikki Yanofsky


Written on February 28, 2009 – 1:57 pm | by André Gomes

É com este tipo de vídeos que eu “perco”  tempo no YouTube…



Tags: ,

Ontologias


Written on January 31, 2009 – 5:12 am | by André Gomes

Na sequência de mais um trabalho da disciplina de PED (Processamento Estruturado de Documentos) surgiu um conceito novo na minha realidade - Ontologia.

  • O que é uma Ontologia afinal?

A palavra Ontologia vem do grego ontos+logoi que diz respeito ao ”conhecimento do ser”. Há uma parte filosófica relacionada com este conceito porém a minha intenção é abordar a parte científica ligada às Ciências da Computação.

Com base no trabalho que estou a fazer já tenho o conhecimento/ideia do que é uma Ontologia, porém uma rápida pesquisa na internet traz-nos umas ideias claras que passo a mostrar.

Na wikipédia vem uma abordagem na qual eu concordo que diz que “(…) uma ontologia é um modelo de dados que representa um conjunto de conceitos dentro de um domínio e os relacionamentos entre estes. Uma ontologia é utilizada para realizar inferência sobre os objectos desse domínio.”

Ora muito bem, tudo isto faz muito sentido para mim que já tenho uma ideia do que seja, mas para alguém que esteja às cegas neste conceito… Que ideia deve formar?

Ontologias lidam com conceitos como objectos, classes, atributos e relacionamentos.

Elas são usadas hoje em dia em inteligência artificial e web semântica (entre outros) como forma de representação de conhecimento sobre um dado tema.

Os objectos são o centro de uma ontologia sendo as classes conjuntos desses objectos.

Quando estamos a construir uma ontologia também podem ser referenciados atributos aos objectos em questão tais como propriedades e/ou características próprias comuns a cada um deles.

Uma chave importante no meio disto tudo é também a possibilidade de relacionarmos a forma como os objectos interagem entre si. Existem várias relações que se podem enumerar entre objectos: relações reflexivas, transitivas, simétricas, funcionais, irreflexivas (entre outras).

É importante manter a noção de domínio e contra-domínio numa ontologia pois os objectos e as relações entre eles envolvem sempre estes dois componentes de extrema importância.

Pelo que li hoje em dia as ontologias são exploradas quase só para estudo académico. A linguagem onde se escrevem é a OWL (Ontology Web Language) que é baseada em XML.

Este tema aborda mais uma ferramenta importante no aumento de conhecimento que podemos dar às máquinas nos dias de hoje e o interesse na sua utilização prática vem neste sentido, na minha opinião.

Brevemente mostrarei um exemplo prático de uma ontologia.

Tags: , ,

Esperanza Spalding - I Know You Know


Written on January 25, 2009 – 5:24 am | by André Gomes

Quero ir ver esta rapariga a tocar e a cantar dia 1 de Fevereiro em Lisboa, no CCB. Quero mesmo…



Tags: , ,

Árvores Binárias em XML


Written on January 25, 2009 – 5:15 am | by André Gomes

Na sequência da disciplina de Processamento Estruturado de Documentos do meu mestrado resolvi fazer aqui uma pequena brincadeira em que tentei construir um XML Schema para um tipo de dados que reprenta uma árvore binária.

A maneira mais comum de pensar numa árvore binária será qualquer coisa como:

Uma árvore binária é Vazia ou tem um Nodo e mais duas sub-árvores binárias como filhas desse nodo.

Pois bem, foi mais ou menos assim que construi o meu XML Schema. Criei um elemento de nome arvbin que pode conter ou um elemento vazia ou um elemento nodo.

Um elemento vazia é so mesmo a tag : <vazia/>

Um elemento nodo já é um pouco mais que isso. Contém uma sequência de duas referências recursivas para o elemento arvbin e ainda um atributo valor que contém apenas um inteiro. ( De notar que poderíamos preencher a nossa árvore binária com a informação que quiséssemos dentro da tag <nodo>.)

Segue-se então o códido do Schema:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by André (EMBRACE) -->
<!--W3C Schema generated by XMLSpy v2008 sp1 (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="arvbin">
  <xs:complexType>
   <xs:choice>
    <xs:element name="vazia"/>
    <xs:element ref="nodo"/>
   </xs:choice>
  </xs:complexType>
 </xs:element>
 <xs:element name="nodo">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="arvbin"/>
    <xs:element ref="arvbin"/>
   </xs:sequence>
   <xs:attribute name="valor" type="xs:int" use="required"/>
  </xs:complexType>
 </xs:element>
</xs:schema>

Podem fazer download de uma instância desta árvore binária aqui.

(PS: O programa que uso para trabalhar com XML é o XML Spy.)

Tags: ,

DTD’s, XML válidos e XML bem formados


Written on November 23, 2008 – 3:37 pm | by André Gomes

Hoje venho aqui falar um pouco sobre uns temas que já aprendi na disciplina de Processamento Estruturado de Documentos do mestrado de Engenharia de Linguagens. O que irei abordar são alguns conceitos básicos e iniciais apenas, porém tentarei aprofundar nos próximos tempos.

XML bem formados VS XML válidos

Há uma grande diferença entre um XML bem formado e um XML válido.

Um XML é bem formado se obedecer a um conjunto de regras mínimas, enquanto que um documento XML é válido se obedecer à estrutura imposta por um DTD, como irei falar mais à frente. (Futuramente também irei abordar os XML Schemas mas para já apenas estou a referir-me aos DTD’s, que poderão ser uma forma de validação de um XML, antes de sabermos mais sobre XML Schemas).

Para um XML ser bem formado deve antes de mais nada ter uma declaração XML no início. Em língua portuguesa será:

<?xml version="1.0" encoding="iso-8859-1"?>

Em seguida, o documento XML deverá conter, no mínimo, um elemento. Este será o elemento raiz e todos os outros elementos deverão estar incluídos dentro dele.

Para além destes dois pontos já referidos, os elementos deverão estar correctamente aninhados, isto é, quando um elemento <a> é aberto e em seguida um elemento <b>, então o primeiro elemento a fechar deverá ser o </b> e só depois o </a>.

DTD - Document Type Definition

Como já foi dito anteriormente, um DTD é um documento que serve para verificar a estrutura de um ficheiro XML.

O exemplo que estudámos nas aulas para iniciar a aprendizagem de DTD’s foi a construção de um DTD que representasse uma agenda de contactos.

Exemplo - Agenda

Um elemento agenda é constituído por um elemento entrada ou um elemento grupo, no mínimo com uma ocorrência de um deles.

<!--ELEMENT agenda (grupo | entrada)+ -->

Por sua vez, um elemento grupo poderá ser uma entrada, referência ou um outro grupo. Aqui, tal como no caso anterior, poderá existir uma ou mais ocorrências de um destes elementos.

<!--ELEMENT grupo (entrada | referencia | grupo)+ -->

Um elemento do tipo grupo terá que ter obrigatoriamente um atributo gid que será um identificador único de cada grupo.

<!--ATTLIST grupo
gid ID #REQUIRED
>

O elemento entrada tem um elemento nome e um telefone obrigatórios, e um elemento e-mail que é opcional.

<!--ELEMENT entrada (nome, email?, telefone) -->

Em cada entrada, há dois atributos que têm de existir: um que representa o id da entrada, que é do tipo ID e é obrigatório, e um atributo tipo que poderá ter ser do tipo pessoa ou do tipo empresa, sendo pessoa o valor default.

<!--ATTLIST entrada
id ID #REQUIRED
tipo (pessoa | empresa) "pessoa"
>

Uma referência não tem informação como conteúdo, apenas possui um atributo refent que é do tipo IDREF e é obrigatório.

<!--ELEMENT referencia EMPTY -->
<!--ATTLIST referencia
refent IDREF #REQUIRED
>

Os elementos nome, email e telefone são basicamente strings, para indicarmos isso diz-se que são do tipo #PCDATA.

<!--ELEMENT nome (#PCDATA) -->
<!--ELEMENT email (#PCDATA) -->
<!--ELEMENT telefone (#PCDATA) -->

Tendo o DTD construído, há que validar a nossa instância do XML segundo este DTD e caso passe nessa validação então quer dizer que possuímos um XML válido para esta estrutura.

Tentarei brevemente introduzir mais conceitos novos e que se seguem a esta temática.

Tags: , ,

ANTLR - Geração de um parser segundo o algoritmo Top-Down


Written on October 10, 2008 – 1:35 am | by André Gomes

Numa das minhas disciplinas de mestrado, na unidade curricular de Engenharia de Linguagens, o professor colocou-nos uma questão muito simples mas que resolvi pôr aqui com objectivo meramente académico.

A questão foi a seguinte:

Porque se constata no ANTLRWorks que o parser gerado é Top-Down?”

O ANTLRWorks é um reconhecer de gramáticas Top-Down pois este efectua o parsing de uma frase construindo a árvore de derivação partindo da raiz e terminando nas folhas, criando os nodos da árvore através de uma travessia descendente da esquerda para a direita.

Vejamos a seguinte gramática que pretende representar uma lista de números:

grammar Lista;

lista 	:	'[' nums ']'
	;

nums    :    INT
        |    INT ',' nums
        ;

INT	:	('0'..'9')+

Agora, vamos observar como é que o ANTLR gera a árvore de derivação para a lista exemplo : [ 8, 7, 6 ]

O ANTLR começa por criar a raiz da árvore com lista, à esquerda fica logo o símbolo terminal “[" e em seguida "nums" (isto porque fez match na primeira produção - lista).

Depois disto "nums" fará com que seja a segunda produção a ser analisada e o que sucede é que se criam dois filhos neste nodo, um para o número 8 e outro para a vírgula. Pode ser observado na figura seguinte.



Em seguida, o mesmo se sucede com o número 7 e a vírgula respectiva. Como a segunda produção é recursiva, o ANTLR continua a "apanhar" os números e as vírgulas que vão aparecendo a seguir ao 8.

No caso do último algarismo, o número 6, como já não possui vírgula depois deste e apenas se encontra o símbolo terminal "]” o ANTLR detecta isto e acrescenta mais um filho à raiz lista.

A árvore final gerada é a seguinte:



Como pôde ser observado, a árvore foi construída de cima para baixo e da esquerda para a direita, tal como um analisador Top-Down deve fazer.

Tags: , , ,