lunes, abril 30, 2007

Una introducción a los microformatos

por Fernando Bordignon

Una tarea, emergente de los últimos tiempos, es la organización de contenidos por medio de etiquetas. Un tag o etiqueta es una palabra simple o compuesta con una carga semántica importante que describe a un objeto (un grabación de audio, un texto, una fotografía, un video, etc). El etiquetado es la acción que consiste en asociar tags a objetos de información. Esta tarea, sobre un mismo objeto, la puede la puede realizar una persona o un conjunto, en este último caso se está hablando de etiquetado social. La folksonomía es una tarea social donde los usuarios asocian -y comparten con pares- marcas de texto o etiquetas (tags) asociadas a piezas públicas de información. Esta tarea no involucra o tiene en cuenta jerarquía alguna, es decir todas las etiquetas de un objeto están al mismo nivel.

Los microformatos son una ampliación del lenguaje de marcas que tiene por finalidad hacer más comprensible para los motores de búsqueda o agentes de usuario la semántica de ciertos objetos de información [1][2]. Es decir que de alguna manera se está insertando porciones de código procesable por máquina en un documento que en origen está destinado exclusivamente para ser comprendido por humanos. De alguna manera, a partir de definir extensiones al lenguaje de marcas es posible enriquecerlo y además lograr una expresividad no pensada originalmente. Esta técnica de intercambio de información permite que distintos usuarios puedan tener significados compartidos de una forma trivial, sin necesidad que intervengan terceras organizaciones ni sistemas centrales de normalización de datos.En general, los microformatos son pensados para solucionar problemas específicos de una forma fácil, descentralizada y rápida dado que se han diseñado para que su público inicial primero sean los usuarios y luego las máquinas (http://microformats.org).

Según Fumero [4] los usuarios utilizando microformatos incorporan inteligencia y significado a la red, a partir de definir procedimientos y formatos estandarizados de facto por ellos mismos. Los microformatos se relacionan con las folksonomías dado que ambas técnicas aportan etiquetado semántico a documentos.

El microformato se ha presentado como un nuevo estandar que extiende el lenguaje XHTML a los efectos de definir o precisar semánticamente ciertas porciones de contenido que se adapten a dicho formato, por ejemplo los atributos de una persona. Esta forma de descripción de objetos facilita su reconocimiento e indexación por parte agentes de información y además habilita a que los usuarios puedan llegar a tales contenidos por medio de interfaces novedosas.

Cuando el autor agrega microformatos a una página web, utilizando alguno de los atributos "class", “rel”, “rev” y "id", posibilita que algún agente que descargue y procese el código fuente, descubra tales microformatos y sepa a que objetos referencian y cual es la sintaxis para procesarlos. Una vez que los procese obtiene los atributos que el autor insertó pudiéndoles manejar semánticamente y por ejemplo almacenándolos en una base de datos [2].

Por ejemplo, VCard [3] es un formato estándar que permite definir y organizar los datos de una persona. Este formato es de uso corriente en el ámbito de los programas lectores de correo electrónico, dado que permite la exportación de agendas. Observe la situación en la cual un autor de una página web personal desea publicar sus datos personales. Podría hacer uso del microformato hCard e insertar el código correspondiente que contiene sus datos personales. Un primer ejemplo de implementación de un microformato puede observarse a continuación, donde se ha definido una tarjeta personal, para brindar información de contacto, bajo el formato estandar denominado hCard.

Extracto de una tarjeta de presentación personal escrita bajo el microformato público hCard, utilizando el servicio de codificación presente en la organización Microformats (http://microformats.org/code/hcard/creator?)

La tarjeta anterior tiene dos vistas una para humanos, a través del formato visual que genere el interprete del lenguaje de marcas, en general un navegador; y la segunda vista está orientada a procesos de intercambio de información.

Otro ejemplo de de tarjeta de presentación, pero en este caso institucional puede ser la de una universidad:




Ejemplos de microformatos populares:

  • hCalendar: Vincular eventos con una agenda personal

  • hCard: información de contacto sobre personas, compañías y organizaciones

  • rel-license: informa sobre una licencia de uso

  • rel-nofollow: indicar a recolectorers (crawlers) que no deben seguir un enlace.

  • rel-tag: indica que un enlace es una etiqueta (tag )

El atractivo de los microformatos

La técnica de intercambio de información por microformatos ha tenido un éxito relativo debido a las siguientes razones:

  • El proceso de creación de un microformato es simple y no requiere de grandes consensos ni de terceras organizaciones que acepten tales propuestas. Esta tarea puede ser hecha por una persona o por una organización que encuentre tal recurso como útil a sus fines. .

  • La definición y codificación de un microformato es simple y puede ser realizada por técnicos.

  • Su implementación es simple y natural en base a la riqueza de expresión de los lenguajes HTML y XHTML. Esto significa que de ni ninguna forma cuando un dieñador web inserta un microformato en un documento está forzando el lenguaje ni contraviniendo reglas de sintaxis que podrían crear problemas de visualización o comprensión del código por parte de algún software de navegación.

  • Promueven el desarrollo descentralizado de Internet, el cual fue es el espíritu de la red.

Operator un componente Firefox para procesar microformatos

Ejemplos prácticos de uso de facilidades otorgadas por microformatos se pueden hallar a partir de añadir el complemento Operator al navegador Firefox. El módulo Operator actúa cada vez que se carga una página web, su función inicial es buscar unidades de información que pertenezcan a microformatos hCard, hCalendar, tag, geo y xFolk. Luego, en base a la unidades que localize habilitará una serie de botones -uno por cada microformato- donde el usuario puede seleccionar alguna unidad de información y realizar alguna tarea preestablecida sobre ella. Por ejemplo, si se en el año 2006 se hubiera accedido a una página que brindaba el cronograma de partidos del mundial de futbol (http://www.worldcupkickoff.com/) una vez cargada se hubiera habilitado el botón “Add Google Calendar” y se hubiera desplegado una lista de partidos de futbol, donde al seleccionar uno automáticamente la aplicación invocaría al servicio Google Calendar y almacenaría tal evento en la cuenta personal del usuario. Otro ejemplo puede darse en el caso de que un navegante acceda a una bitácora de usuario almacenada en el servidor Blogger (http:/www.blogger.com), en este caso se activarían los botones “find photos on Flickr”, “find bookmarks on del.icio.us” y “find blogs on Technorati”, y en cada uno una lista de tags -extraidos de la página- se mostrarían como opciones de acceso a tales sevicios de información. O tal vez alguien utilice el servicio http://local.yahoo.com a los efectos de localizar alguna persona o edificio en los Estados Unidos, en tal caso, cuando lo halle se le habilitarán las opciones “export contact” y tal vez “add to Google Calendar” si existiese algo que agendar.

Consideraciones finales

Según la organización Microformats (http://microformats.org) los microformatos no son un nuevo lenguaje, ni la panacea para todas las taxonomias, ontologías u otros tipos de abstracción y tampoco son infinitamente extensibles. En base al análisis de uso y adopción de la técnica de microformatos por parte de los diseñadores web puede indicarse que podría ser - en un futuro cercano - una alternativa válida de transición hacía el concepto de evolución social y tecnológica denominado web semántica. Esto se justifica debido a la validez de la herramienta como método de intercambio de información y a su facilidad de implementación y procesamiento.

Referencias

[1] Sabaté, J. “Microformatos: las personas primero”, Eroski, disponible en http://www.consumer.es/web/es/tecnologia/internet/2006/06/13/152764.php

[2] Wikipedia, “Microformatos”, http://es.wikipedia.org/wiki/Microformatos

[3] Dawson, F. y Howes, T. RFC 2426, vCard MIME Directory Profile, 1998

[4] Fumero, A. y Roca, G. “Web 2.0”, Fundación Orange. 2007

domingo, abril 29, 2007

Libro gratis: Wizard Book de MIT Press

Wizard Book (cuyo título completo es Structure and Interpretation of Computer Programs) es la segunda edición de un libro introductorio a la programación escrito por Hal Abelson's, Jerry Sussman's y Julie Sussman's que hace años ha sido publicado por MIT Press. Lo curioso es que como lenguaje introductorio se utiliza el derivado del Lisp llamado Scheme. Les copio el índice de la obra en cuestión:

1 Building Abstractions with Procedures

1.1 The Elements of Programming
1.1.1 Expressions
1.1.2 Naming and the Environment
1.1.3 Evaluating Combinations
1.1.4 Compound Procedures
1.1.5 The Substitution Model for Procedure Application
1.1.6 Conditional Expressions and Predicates
1.1.7 Example: Square Roots by Newton's Method
1.1.8 Procedures as Black-Box Abstractions
1.2 Procedures and the Processes They Generate
1.2.1 Linear Recursion and Iteration
1.2.2 Tree Recursion
1.2.3 Orders of Growth
1.2.4 Exponentiation
1.2.5 Greatest Common Divisors
1.2.6 Example: Testing for Primality
1.3 Formulating Abstractions with Higher-Order Procedures
1.3.1 Procedures as Arguments
1.3.2 Constructing Procedures Using Lambda
1.3.3 Procedures as General Methods
1.3.4 Procedures as Returned Values

2 Building Abstractions with Data
2.1 Introduction to Data Abstraction
2.1.1 Example: Arithmetic Operations for Rational Numbers
2.1.2 Abstraction Barriers
2.1.3 What Is Meant by Data?
2.1.4 Extended Exercise: Interval Arithmetic
2.2 Hierarchical Data and the Closure Property
2.2.1 Representing Sequences
2.2.2 Hierarchical Structures
2.2.3 Sequences as Conventional Interfaces
2.2.4 Example: A Picture Language
2.3 Symbolic Data
2.3.1 Quotation
2.3.2 Example: Symbolic Differentiation
2.3.3 Example: Representing Sets
2.3.4 Example: Huffman Encoding Trees
2.4 Multiple Representations for Abstract Data
2.4.1 Representations for Complex Numbers
2.4.2 Tagged data
2.4.3 Data-Directed Programming and Additivity
2.5 Systems with Generic Operations
2.5.1 Generic Arithmetic Operations
2.5.2 Combining Data of Different Types
2.5.3 Example: Symbolic Algebra

3 Modularity, Objects, and State
3.1 Assignment and Local State
3.1.1 Local State Variables
3.1.2 The Benefits of Introducing Assignment
3.1.3 The Costs of Introducing Assignment
3.2 The Environment Model of Evaluation
3.2.1 The Rules for Evaluation
3.2.2 Applying Simple Procedures
3.2.3 Frames as the Repository of Local State
3.2.4 Internal Definitions
3.3 Modeling with Mutable Data
3.3.1 Mutable List Structure
3.3.2 Representing Queues
3.3.3 Representing Tables
3.3.4 A Simulator for Digital Circuits
3.3.5 Propagation of Constraints
3.4 Concurrency: Time Is of the Essence
3.4.1 The Nature of Time in Concurrent Systems
3.4.2 Mechanisms for Controlling Concurrency
3.5 Streams
3.5.1 Streams Are Delayed Lists
3.5.2 Infinite Streams
3.5.3 Exploiting the Stream Paradigm
3.5.4 Streams and Delayed Evaluation
3.5.5 Modularity of Functional Programs and Modularity of Objects

4 Metalinguistic Abstraction
4.1 The Metacircular Evaluator
4.1.1 The Core of the Evaluator
4.1.2 Representing Expressions
4.1.3 Evaluator Data Structures
4.1.4 Running the Evaluator as a Program
4.1.5 Data as Programs
4.1.6 Internal Definitions
4.1.7 Separating Syntactic Analysis from Execution
4.2 Variations on a Scheme -- Lazy Evaluation
4.2.1 Normal Order and Applicative Order
4.2.2 An Interpreter with Lazy Evaluation
4.2.3 Streams as Lazy Lists
4.3 Variations on a Scheme -- Nondeterministic Computing
4.3.1 Amb and Search
4.3.2 Examples of Nondeterministic Programs
4.3.3 Implementing the Amb Evaluator
4.4 Logic Programming
4.4.1 Deductive Information Retrieval
4.4.2 How the Query System Works
4.4.3 Is Logic Programming Mathematical Logic?
4.4.4 Implementing the Query System

5 Computing with Register Machines
5.1 Designing Register Machines
5.1.1 A Language for Describing Register Machines
5.1.2 Abstraction in Machine Design
5.1.3 Subroutines
5.1.4 Using a Stack to Implement Recursion
5.1.5 Instruction Summary
5.2 A Register-Machine Simulator
5.2.1 The Machine Model
5.2.2 The Assembler
5.2.3 Generating Execution Procedures for Instructions
5.2.4 Monitoring Machine Performance
5.3 Storage Allocation and Garbage Collection
5.3.1 Memory as Vectors
5.3.2 Maintaining the Illusion of Infinite Memory
5.4 The Explicit-Control Evaluator
5.4.1 The Core of the Explicit-Control Evaluator
5.4.2 Sequence Evaluation and Tail Recursion
5.4.3 Conditionals, Assignments, and Definitions
5.4.4 Running the Evaluator
5.5 Compilation
5.5.1 Structure of the Compiler
5.5.2 Compiling Expressions
5.5.3 Compiling Combinations
5.5.4 Combining Instruction Sequences
5.5.5 An Example of Compiled Code
5.5.6 Lexical Addressing
5.5.7 Interfacing Compiled Code to the Evaluator

Vía Prográmame

Estudio sobre perfil del usuario norteamericano de la Wikipedia

Pew Internet ha publicado otro estudio de comportamiento social en la red. Esta vez el trabajo presenta el perfil de los usuarios norteamericanos de la Wikipedia, donde se llega a la conclusión que un 36% de los usuarios la utilizan con frecuencia como fuente de información.

Los hallazgos más importantes son:

  • 46% of full- or part-time students consult Wikipedia as opposed to 36% of the general population of adult (over 18) Internet users.
  • Despite ongoing controversy about the reliability of articles on Wikipedia, it is far more popular among the well-educated than it is among those with lower levels of education. 50% of those with at least a college degree consult the site, compared with 22% of those with a high school diploma.
  • The popularity of search engines helps drive the popularity of Wikipedia. More than 70% of visits to Wikipedia in one week in March came from search engines.
  • The ease with which new entries or new information can be added to Wikipedia helps make it a place to go for up-to-date information on everything from emerging technology terms to celebrities to political scandals.
En referencia al aspecto metodológico de la investigación, la misma se ha basado en cuestionarios telefónicos realizados en febrero del 2007 a 2.200 adultos americanos .

Vía Denken Uber

sábado, abril 28, 2007

Libro gratis: Basic Design Compiler

Material educativo en formato libro (actualizado a 2007) escrito por el profesor Torben Mogensen de la Universidad de Copenhague. A partir de su experiencia ha escrito un libro donde resume su experiencia en el tema. Trata acerca de jerarquía de lenguajes, analizadores léxicos y sintácticos, expresiones regulares, tablas de símbolos, generación de código intermedio, optimización de código, entre otros temas. .

Vía Prográmame

Humor

viernes, abril 27, 2007

Libro gratis: Web 2.0 de Antonio Fumero y otros

La Fundación Orange ha presentado su libro "web 2.0" el cual ha sido escrito por Antonio Fumero, Genís Roca y Fernando Sáez Vacas.

Ranking Tiobe de popularidad de lenguajes de programación

.
El ranking que TIOBE es un instrumento de referencia que indica la popularidad de los lenguajes de progarmación. Ya se ha publicado la versión correspondiente a abril 2007 donde se puede observar el siguiente orden:

Position
Apr 2007
Position
Apr 2006
Delta in PositionProgramming LanguageRatings
Apr 2007
Delta
Apr 2006
Status
1 1 Java 18.360% -2.92% A
2 2 C 14.937% -2.75% A
3 3 C++ 10.718% -0.18% A
4 4 PHP 8.639% -2.24% A
5 5 (Visual) Basic 8.280% -1.83% A
6 6 Perl 6.039% +0.19% A
7 8 Python 3.814% +1.05% A
8 7 C# 3.551% -0.40% A
9 9 JavaScript 3.137% +1.57% A
10 17 Ruby 2.798% +2.31% A
11 10 Delphi 2.334% +0.89% A
12 11 SAS 2.201% +0.77% A
13 12 PL/SQL 1.892% +0.88% A
14 19 D 1.515% +1.03% A
15 25 ABAP 1.172% +0.84% A
16 18 Ada 0.678% +0.19% B
17 14 Lisp/Scheme 0.676% -0.05% A--
18 16 COBOL 0.651% +0.13% B
19 26 Transact-SQL 0.622% +0.30% B
20 20 Fortran 0.613% +0.15% B



La metodología asociada a la lista de popularidad es la siguiente

The ratings are calculated by counting hits of the most popular search engines. The search query that is used is

+"[language] programming"

The search query is executed for the regular Google, MSN, and Yahoo! web search and the Google newsgroups and blogs for the last 12 months. The web site Alexa.com has been used to determine the most popular search engines.

By applying the search engine query as defined above, a lot of hit counts are collected. Let's define "hits(PL#i,SE)" as the number of hits of programming language PL at position i of the TIOBE index for search engine SE. The counted hits are normalized for each search engine for the first 50 languages. More formally, the rating for PL#i becomes

((hits(PL#i,SE1)/hits(PL#1) + ... + hits(PL#50)) + ... + (hits(PL#i,SEn)/hits(PL#1) + ... + hits(PL#50)))/n

where n is the number of search engines used.