domingo, 21 de noviembre de 2010

Búsqueda en la Web

Etapas en la Búsqueda

A nivel general, la búsqueda de información en la Web tiene varias etapas:
  1. Necesidad de información
  2. Transformación de la necesidad
  3. Búsqueda
  4. Revisión de los resultados

Necesidad de información

Una persona requiere de información. Este requerimiento puede ser estable, o ir variando, y normalmente se puede clasificar como verificación (validación de algo que la persona cree cierto), consciente (más información sobre un tema conocido) o indefinido (conceptos en un dominio desconocido).
Otra clasificación posible es mediante un eje temporal: inicialmente el usuario busca información genérica o de transfondo respecto a un tema, luego información dentro de las aristas del tema, para finalmente escoger una aproximación en particular y profundizar en un área específica. Estas etapas son más bien secuenciales.

Transformación de la necesidad

Una vez que el usuario tiene la necesidad de información, si utiliza el Web puede: ingresar directamente la URL de un sitio que piense que puede satisfacer su necesidad, dirigirse a un directorio en que se pueda explorar un listado de sitios web por tema (como por ejemplo el Open Directory Project) o dirigirse a un buscador web donde se ingresen palabras clave (como Google).
Si bien unas pocas veces el usuario conoce un sitio específico donde puede encontrar respuesta a su inquietud, o al menos comenzar una búsqueda, es más común que recurra a un buscador web.
Ir a un buscador tiene sus complicaciones, puesto que lo que antes podía tener distintos grados de vaguedad, ahora enfrentado a la caja de búsqueda debe ser tan específico como unas pocas palabras, o en el mejor de los casos, una pregunta normal, como las que recibe Ask Jeeves.
La mayoría de los buscadores recibe un poco más que sólo palabras, por ejemplo, se puede rodear una frase entre comillas para decir que se necesitan calces de esa frase tal como está escrita allí, o se antepone un signo + a ciertas palabras para forzar su inclusión, etc. Estos operadores son usados por los usuarios más avanzados; y su uso significa mejores resultados para quienes los saben ocupar.

Búsqueda

El proceso de búsqueda es lo más oscuro para los usuarios, durante él se realizan varias operaciones que casi siempre implican consultar un índice de páginas, que es una representación compacta del contenido de éstas. El buscador obtiene una lista de documentos, luego los ordena de mayor a menor importancia (esto se llama ranking), los consolida (ej.: eliminar duplicados, agrupar los de un mismo sitio, etc.) y los presenta al usuario.

Revisión de los Resultados

En esta etapa el usuario se enfrenta a algunas decenas de direcciones (URLS), elige una que le parece interesante, la revisa, escoge otra, navega un rato, vuelve atrás, hace una nueva consulta, etc. Tiene múltiples alternativas. Es muy raro que a la primera consulta el buscador le muestre páginas de su interés; lo normal son más de 2 consultas por sesión antes de darse por vencido, encontrar lo que se buscaba o cambiar de buscador o de método.
Lamentablemente, es muy común que la persona no encuentre lo que buscaba, sea porque se distrajo navegando por páginas de otras temáticas, o porque simplemente no desea dedicarle más tiempo a la búsqueda. Encontrar información en Internet, es un proceso que puede ser bastante frustrante, como seguramente más de alguno de los lectores sabe por experiencia propia.

Cómo funciona un Buscador

 

Un buscador Web tiene tres subsistemas:
  • Un Recolector que visita una serie de páginas Web, incorporandolas a una Colección
  •  Un Indexador que convierte la colección en una estructura más manejable y pequeña, llamada Índice
  • Un Buscador propiamente tal que recupera ciertas páginas del índice basado en un requerimiento del usuario

Recolector

El recolector tiene la tarea de crear la colección de páginas, para ello, visita una serie de páginas iniciales o puntos de partida, las incorpora a la colección, extrae los enlaces de estas páginas, verifica si están o no presentas ya, y si no están, visita estas páginas referenciadas. 

El proceso es recursivo, y se realiza en un ciclo:
1.Revisar la lista de URLs por visitar y escoger una.
2.Visitar esa dirección .
3.Transformarla para incorporarla a la colección (normalmente, eliminar etiquetas e imágenes de la página, convertir documentos Word o PDF a texto simple, recortarla si es demasiado grande.
4.Extraer los links de la página, y si alguno no está en la lista, agregarlo.
5.Volver al primer paso.

Indexador


Lo usual es utilizar un índice invertido. En él, la colección es convertida a una lista de palabras, cada una de las cuales apunta a una lista de documentos.

Buscador

Ahora buscar es muy fácil, por ejemplo, si alguien necesita los documentos donde aparezca "casa", el sistema busca en la lista (índice) la palabra "casa", y obtiene de inmediato cuales son los documentos que contienen la palabra. Si se pregunta por dos o más términos, el sistema deberá comparar las listas de cada uno de los términos, realizando una unión o intersección según corresponda. 

Cómo vemos, encontrar los documentos no es difícil. El real desafío es encontrar los mejores documentos. La Web es enorme, y hay montones de páginas en ella, pero una persona no puede hacer nada útil si el buscador le entrega 10000 páginas para que las revise - ¡no terminaría nunca!, así que el proceso de ranking (ordenamiento) es crucial para tener, digamos, 10 o 20 direcciones, cantidad que es mucho más razonable. 

Una aproximación es comparar las palabras de la consulta con las palabras que hay en los documentos encontrados. Esto es un poco más complejo que simplemente contar cuantas veces aparece cada palabra de la consulta en cada documento, puesto que hay una variable extra a considerar. 

Si la página encontrada contiene una palabra por la que se preguntó al buscador, que no aparece en casi ningún otro documento, entonces eso es una buena evidencia de que la página que estamos mirando es importante. Esto ha sido usado durante años con bastante éxito. 

Una opción alternativa es la propuesta en. En síntesis se utilizan los links entre las páginas como evidencia. Una forma simple de comenzar a entenderlo es la siguiente hipótesis: una página con buen contenido, seguramente es referenciada desde muchos buenos índices. 


Por ejemplo, en la figura tenemos numeradas algunas potenciales índice, y con letras las potenciales páginas de contenido. Vemos que 'b' y 'g' claramente atraen la mayoría de los enlaces desde otras páginas, por lo cual las marcamos como la "mejores páginas de contenido". 

Así mismo, la página '4' se destaca como "mejor página índice", precisamente porque apunta a las dos "mejores páginas de contenido". No es la página con más enlaces necesariamente, de hecho '5' tiene más enlaces, pero no son los más apropiados. Al mismo tiempo, el puntaje como página de contenido de 'c' aumenta, porque aparece en una buena fuente de información. Este procedimiento se repite varias veces, sumando puntos como índice y como contenido. 

------------------------------------------------------------------------------------------------------------

Bibliografías:

http://www.tejedoresdelweb.com/


Motor de Búsqueda

Historia

El primer buscador fue "Wandex", un índice (ahora desaparecido) realizado por la World Wide Web Wanderer, un robot desarrollado por Mattew Gray en el MIT, en 1993. Otro de los primeros buscadores, Aliweb, también apareció en 1993 y todavía está en funcionamiento. El primer motor de búsqueda de texto completo fue WebCrawler, que apareció en 1994. A diferencia de sus predecesores, éste permitía a sus usuarios una búsqueda por palabras en cualquier página web, lo que llegó a ser un estándar para la gran mayoría de los buscadores. WebCrawler fue también el primero en darse a conocer ampliamente entre el público. También apareció en 1994 Lycos (que comenzó en la Carnegie Mellon University).

Muy pronto aparecieron muchos más buscadores, como Excite, Infoseek, Inktomi, Northern Light y Altavista. De algún modo, competían con directorios (o índices temáticos) populares tales como Yahoo!. Más tarde, los directorios se integraron o se añadieron a la tecnología de los buscadores para aumentar su funcionalidad.
Antes del advenimiento de la Web, había motores de búsqueda para otros protocolos o usos, como el buscador Archie, para sitios FTP anónimos y el motor de búsqueda Verónica, para el protocolo Gopher.
En la actualidad se aprecia una tendencia por parte de los principales buscadores de Internet a dar el salto hacia entornos móviles creando una nueva generación de buscadores: los buscadores móviles.

------------------------------------------------------------------------------------------------------------



Un motor de búsqueda es un sistema informático que busca archivos almacenados en servidores web gracias a su «spider» (o Web crawler). Un ejemplo son los buscadores de Internet (algunos buscan sólo en la Web pero otros buscan además en noticias, servicios como Gopher, FTP, etc.) cuando se pide información sobre algún tema. Las búsquedas se hacen con palabras clave o con árboles jerárquicos por temas; el resultado de la búsqueda es un listado de direcciones Web en los que se mencionan temas relacionados con las palabras clave buscadas.
Como operan en forma automática, los motores de búsqueda contienen generalmente más información que los directorios. Sin embargo, estos últimos también han de construirse a partir de búsquedas (no automatizadas) o bien a partir de avisos dados por los creadores de páginas (lo cual puede ser muy limitante). Los buenos directorios combinan ambos sistemas. Hoy en día Internet se ha convertido en una herramienta, para la búsqueda de información, rápida, para ello han surgido los buscadores que son un motor de búsqueda que nos facilita encontrar información rápida de cualquier tema de interés, en cualquier área de las ciencias, y de cualquier parte del mundo.
  
Clasificación
Se pueden clasificar en dos tipos:
  • Índices temáticos: Son sistemas de búsqueda por temas o categorías jerarquizados (aunque también suelen incluir sistemas de búsqueda por palabras clave). Se trata de bases de datos de direcciones Web elaboradas "manualmente", es decir, hay personas que se encargan de asignar cada página web a una categoría o tema determinado.
  • Motores de búsqueda: Son sistemas de búsqueda por palabras clave. Son bases de datos que incorporan automáticamente páginas web mediante "robots" de búsqueda en la red.

Clases de buscadores

Buscadores jerárquicos (Arañas o Spiders)

  • Recorren las páginas recopilando información sobre los contenidos de las páginas. Cuando se busca una información en los motores, ellos consultan su base de datos y presentan resultados clasificados por su relevancia. De las webs, los buscadores pueden almacenar desde la página de entrada, a todas las páginas que residan en el servidor.
  • Si se busca una palabra, por ejemplo, “ordenadores”. En los resultados que ofrecerá el motor de búsqueda, aparecerán páginas que contengan esta palabra en alguna parte de su texto.
  • Si consideran que un sitio web es importante para el usuario, tienden a registrarlas todas. Si no la consideran importante, sólo almacenan una o más páginas.
  • Cada cierto tiempo, los motores revisan los sitios, para actualizar los contenidos de su base de datos, por lo que no es infrecuente que los resultados de la búsqueda estén desactualizados.
  • Los buscadores jerárquicos tienen una colección de programas simples y potentes con diferentes cometidos. Se suelen dividir en tres partes. Los programas que exploran la red -arañas (spiders)-, los que construyen la base de datos y los que utiliza el usuario, el programa que explota la base de datos.
  • Si se paga, se puede aparecer en las primeras páginas de resultados, aunque los principales buscadores delimitan estos resultados e indican al usuario que se trata de resultados esponsorizados o patrocinados. Hasta el momento, aparentemente, esta forma de publicidad, es indicada explícitamente. Los buscadores jerárquicos se han visto obligados a este tipo de publicidad para poder seguir ofreciendo a los usuarios el servicio de forma gratuita.

Directorios

Una tecnología barata, ampliamente utilizada por gran cantidad de scripts en el mercado. No se requieren muchos recursos de informática. En cambio, se requiere más soporte humano y mantenimiento.
  • Los algoritmos son mucho más sencillos, presentando la información sobre los sitios registrados como una colección de directorios. No recorren los sitios web ni almacenan sus contenidos. Solo registran algunos de los datos de nuestra página, como el título y la descripción que se introduzcan al momento de registrar el sitio en el directorio.
  • Los resultados de la búsqueda, estarán determinados por la información que se haya suministrado al directorio cuando se registra el sitio. En cambio, a diferencia de los motores, son revisadas por operadores humanos, y clasificadas según categorías, de forma que es más fácil encontrar páginas del tema de nuestro interés.
  • Más que buscar información sobre contenidos de la página, los resultados serán presentados haciendo referencia a los contenidos y temática del sitio.
  • Su tecnología es muy barata y sencilla.
Ejemplos de directorios: Antiguos directorios, Open Directory Project, Yahoo!, Terra (antiguo Olé). Ahora, ambos utilizan tecnología de búsqueda jerárquica, y Yahoo! conserva su directorio. Buscar Portal, es un directorio, y la mayoría de motores hispanos son directorios.

Metabuscador

Permite lanzar varias búsquedas en motores seleccionados respetando el formato original de los buscadores. Lo que hacen, es realizar búsquedas en auténticos buscadores, analizan los resultados de la página, y presentan sus propios resultados, según un orden definido por el sistema estructural del metabuscador.

FFA - Enlaces gratuitos para todos

FFA (acrónimo del inglés "Free For All"), Cualquiera puede inscribir su página durante un tiempo limitado en estos pequeños directorios. Los enlaces no son permanentes.

Buscadores verticales

Buscadores especializados en un sector concreto, lo que les permite analizar la información con mayor profundidad, disponer de resultados más actualizados y ofrecer al usuario herramientas de búsqueda avanzadas.Es importante resaltar que utilizan indices especializados de esta manera acceder a la información de una manera más específica y fácil. (Nélida Colina). Ejemplos de este tipo de buscadores son: Trovit, Nestoria.

-------------------------------------------------------------------------------------------------------------
 Bibliografias:

http://www.dsp.umh.es/docent/ienol/motores.htm
http://es.wikipedia.org/wiki/Motor_de_b%C3%BAsqueda



JSP: Java Server Pages

JSP es un acrónimo de Java Server Pages, que en castellano vendría a decir algo como Páginas de Servidor Java. Es, pues, una tecnología orientada a crear páginas web con programación en Java. 



JavaServer Pages (JSP) es una tecnología Java que permite generar contenido dinámico para web, en forma de documentos HTML, XML o de otro tipo.
Esta tecnología es un desarrollo de la compañía Sun Microsystems. La Especificación JSP 1.2 fue la primera que se liberó y en la actualidad está disponible la Especificación JSP 2.1.
Las JSP's permiten la utilización de código Java mediante scripts. Además, es posible utilizar algunas acciones JSP predefinidas mediante etiquetas. Estas etiquetas pueden ser enriquecidas mediante la utilización de Bibliotecas de Etiquetas (TagLibs o Tag Libraries) externas e incluso personalizadas.

Arquitectura

JSP puede considerarse como una manera alternativa, y simplificada, de construir servlets. Es por ello que una página JSP puede hacer todo lo que un servlet puede hacer, y viceversa. Cada versión de la especificación de JSP está fuertemente vinculada a una versión en particular de la especificación de servlets.
El funcionamiento general de la tecnología JSP es que el Servidor de Aplicaciones interpreta el código contenido en la página JSP para construir el código Java del servlet a generar. Este servlet será el que genere el documento (típicamente HTML) que se presentará en la pantalla del Navegador del usuario.

Es posible enriquecer el lenguaje de etiquetas utilizado por JSP. Para ello debemos extender la capa de alto nivel JSP mediante la implementación de Bibliotecas de Etiquetas (Tags Libraries). Un ejemplo de estas bibliotecas son las propocionadas por Sun bajo la denominación de JSTL o las distribuidas por Apache junto con el Framework de Struts.

El rendimiento de una página JSP es el mismo que tendría el servidor equivalente, ya que el código es compilado como cualquier otra clase Java. A su vez, la máquina virtual compilará dinámicamente a código de máquina las partes de la aplicación que lo requieran. Esto hace que JSP tenga un buen desempeño y sea más eficiente que otras tecnologías web que ejecutan el código de una manera puramente interpretada.

La principal ventaja de JSP frente a otros lenguajes es que el lenguaje Java es un lenguaje de propósito general que excede el mundo web y que es apto para crear clases que manejen lógica de negocio y acceso a datos de una manera prolija. Esto permite separar en niveles las aplicaciones web, dejando la parte encargada de generar el documento HTML en el archivo JSP.
Otra ventaja es que JSP hereda la portabilidad de Java, y es posible ejecutar las aplicaciones en múltiples plataformas sin cambios. Es común incluso que los desarrolladores trabajen en una plataforma y que la aplicación termine siendo ejecutada en otra.

Los servlets y Java Server Pages (JSPs) son dos métodos de creación de páginas web dinámicas en servidor usando el lenguaje Java. En ese sentido son similares a otros métodos o lenguajes tales como el PHP, ASP o los CGIs, programas que generan páginas web en el servidor. Sin embargo, se diferencian de ellos en otras cosas.
Para empezar, los JSPs y servlets se ejecutan en una máquina virtual Java, lo cual permite que, en principio, se puedan usar en cualquier tipo de ordenador, siempre que exista una máquina virtual Java para él. Cada servlet (o JSP, a partir de ahora lo usaremos de forma indistinta) se ejecuta en su propia hebra, es decir, en su propio contexto; pero no se comienza a ejecutar cada vez que recibe una petición, sino que persiste de una petición a la siguiente, de forma que no se pierde tiempo en invocarlo (cargar programa + intérprete). Su persistencia le permite también hacer una serie de cosas de forma más eficiente: conexión a bases de datos y manejo de sesiones.

Los JSPs son en realidad servlets: un JSP se compila a un programa en Java la primera vez que se invoca, y del programa en Java se crea una clase que se empieza a ejecutar en el servidor como un servlet. La principal diferencia entre los servlets y los JSPs es el enfoque de la programación: un JSP es una página Web con etiquetas especiales y código Java incrustado, mientras que un servlet es un programa Java puro que recibe peticiones y genera a partir de ellas una página web.

Motor JSP

El motor de las páginas JSP está basado en los servlets de Java -programas en Java destinados a ejecutarse en el servidor-, aunque el número de desarrolladores que pueden afrontar la programación de JSP es mucho mayor, dado que resulta mucho más sencillo aprender que los servlets.

En JSP creamos páginas de manera parecida a como se crean en ASP o PHP -otras dos tecnologías de servidor-. Generamos archivos con extensión .jsp que incluyen, dentro de la estructura de etiquetas HTML, las sentencias Java a ejecutar en el servidor. Antes de que sean funcionales los archivos, el motor JSP lleva a cabo una fase de traducción de esa página en un servlet, implementado en un archivo class (Byte codes de Java). Esta fase de traducción se lleva a cabo habitualmente cuando se recibe la primera solicitud de la página .jsp, aunque existe la opción de precompilar en código para evitar ese tiempo de espera la primera vez que un cliente solicita la página. 

 Ejemplo de página JSP

En la imagen siguiente se puede ver un ejemplo extremadamente simple de una página JSP y el esquema de conversión de esa página en un servlet.

Diagrama de una página JSP

Sintaxis

Variables Implícitas

Las páginas JSP incluyen ciertas variables privilegiadas sin necesidad de declararlas ni configurarlas:


Variable Clase
pageContext   javax.servlet.jsp.PageContext
request   javax.servlet.http.HttpServletRequest
response   javax.servlet.http.HttpServletResponse
session       javax.servlet.http.HttpSession
config  javax.servlet.ServletConfig
application  javax.servlet.ServletContext
out  javax.servlet.jsp.JspWriter
page  java.lang.Object
exception  java.lang.Exception

Directivas

Son etiquetas a partir de las cuales se genera información que puede ser utilizada por el motor de JSP. No producen una salida visible al usuario sino que configura cómo se ejecutará la página JSP.

Las directivas disponibles son:
  • include: Incluye el contenido de un fichero en la página mediante el atributo file.
<%@ include file="cabecera.html" %>
  • taglib: Importa bibliotecas de etiquetas (Tag Libraries)
<%@ taglib uri="/tags/struts-html" prefix="html" %>
  • page: Especifica atributos relacionados con la página a procesar. Los atributos son:
 

Scriptlets

Nos permite declarar variables, funciones y datos estáticos.
Las scriptles son partes de código Java incrustadas entre los elementos estáticos de la página.Las expresiones se evalúan dentro de la servlet. No deben acabar en ";".

Etiquetas

Etiquetas JSP para simplificar el código y dar mayor funcionalidad.
Desarrollar sitios web utilizando etiquetas presenta ciertas ventajas como:
  • facilitar el aprendizaje.
  • facilitar el mantenimiento.
  • fomentar la modularidad y la reutilización.
  • simplificar el código y reducir el número de líneas necesarias.

Etiquetas JSP

Son las etiquetas pertenecientes a la especificación JSP. Proporcionan una funcionalidad básica.
Un primer grupo de etiquetas proporciona funcionalidad a nivel de la página de una manera muy simple:
  • , redirige la request a otra URL
  • , incluye el texto de un fichero dentro de la página
  • , descarga un plugin de Java (una applet o un Bean).
Un segundo grupo permite manipular componentes JavaBean sin conocimientos de Java.
  • , permite manipular un Bean (si no existe, se creará el Bean), especificando su ámbito (scope), la clase y el tipo.
  • , obtiene la propiedad especificada de un bean previamente declarado y la escribe en el objeto response.
  • , establece el valor de una propiedad de un bean previamente declarado.

Etiquetas JSTL

Son proporcionadas por Sun dentro de la distribución de JSTL.
  • core, iteraciones, condicionales, manipulación de URL y otras funciones generales.
  • xml, para la manipulación de XML y para XML-Transformation.
  • sql, para gestionar conexiones a bases de datos.
  • i18n, para la internacionalización y formateo de las cadenas de caracteres como cifras.

Etiquetas Struts TagLib

Distribuidas por Apache para funcionar junto con el Framework de Struts.
  • Bean
  • HTML
  • Logic
  • Nested
  • vjgp


Bibliografías:

http://www.desarrolloweb.com/articulos/831.php
http://es.wikipedia.org/wiki/JSP
http://www.jsptut.com







Java Servlet

Los servlets, son objetos que corren dentro del contexto de un contenedor de servlets (ej: Tomcat) y extienden su funcionalidad. La palabra servlet deriva de otra anterior, applet, que se refería a pequeños programas que se ejecutan en el contexto de un navegador web. Por contraposición, un servlet es un programa que se ejecuta en un servidor.
El uso más común de los servlets es generar páginas web de forma dinámica a partir de los parámetros de la petición que envíe el navegador web.

Historia

La especificación original de Servlets fue creada por Sun Microsystems (la versión 1.0 fue terminada en junio de 1997). Comenzando con la versión 2.3, la especificación de Servlet fue desarrollada siguiendo el Proceso de la Comunidad Java (Java Community Process).

Aspectos técnicos

Un servlet es un objeto que se ejecuta en un servidor o contenedor JEE, especialmente diseñado para ofrecer contenido dinámico desde un servidor web, generalmente HTML. Otras opciones que permiten generar contenido dinámico son los lenguajes ASP, PHP, JSP (un caso especial de servlet), Ruby y Python. Forman parte de JEE (Java Enterprise Edition), que es una ampliación de JSE (Java Standard Edition).

Un servlet implementa la interfaz javax.servlet.Servlet o hereda alguna de las clases más convenientes para un protocolo específico (ej: javax.servlet.HttpServlet). Al implementar esta interfaz el servlet es capaz de interpretar los objetos de tipo HttpServletRequest y HttpServletResponse quienes contienen la información de la página que invocó al servlet.

Entre el servidor de aplicaciones (o web content) y el servlet existe un contrato que determina cómo han de interactuar. La especificación de éste se encuentra en los JSR (Java Specification Requests) del JCP (Java Community Process).

Ciclo de vida

El ciclo de vida de un Servlet se divide en los siguientes puntos:
  1. El cliente solicita una petición a un servidor vía URL.
  2. El servidor recibe la petición.
    1. Si es la primera, se utiliza el motor de Servlets para cargarlo y se llama al método init().
    2. Si ya está iniciado, cualquier petición se convierte en un nuevo hilo. Un Servlet puede manejar múltiples peticiones de clientes.
  3. Se llama al método service() para procesar la petición devolviendo el resultado al cliente.
  4. Cuando se apaga el motor de un Servlet se llama al método destroy(), que lo destruye y libera los recursos abiertos.

-------------------------------------------------------------------------------------------------------------------------------------

Podemos crear un Servlet haciendo uso del paquete javax.servlet.

Interface HttpServletRequest

 http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServletRequest.html

Interface HttpServletResponse

 http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServletResponse.html

 

Facebook Apps


Facebook es un sitio web gratuito de redes sociales creado por Mark Zuckerberg y fundado por Eduardo Saverin, Chris Hughes, Dustin Moskovitz y Mark Zuckerberg. Originalmente era un sitio para estudiantes de la Universidad Harvard, pero actualmente está abierto a cualquier persona que tenga una cuenta de correo electrónico. Los usuarios pueden participar en una o más redes sociales, en relación con su situación académica, su lugar de trabajo o región geográfica.
Ha recibido mucha atención en la blogosfera y en los medios de comunicación al convertirse en una plataforma sobre la que terceros pueden desarrollar aplicaciones y hacer negocio a partir de la red social. A pesar de ello, existe la preocupación acerca de su posible modelo de negocio, dado que los resultados en publicidad se han revelado como muy pobres.
A mediados de 2007 lanzó las versiones en francés, alemán y español para impulsar su expansión fuera de Estados Unidos, ya que sus usuarios se concentran en Estados Unidos, Canadá y Gran Bretaña. En julio de 2010, Facebook cuenta con 500 millones de miembros, y traducciones a 70 idiomas.

Facebook compite por abrirse espacio entre empresas de éxito como Google y MySpace, por lo que se enfrenta a grandes desafíos para lograr crecer y desarrollarse. Una de las estrategias de Zuckerberg ha sido abrir la plataforma Facebook a otros desarrolladores.


Como funciona una aplicación de Facebook?

Facebook soporta dos formatos de aplicaciones externas, aplicaciones creadas usando FBML y las que usan  iframe.
La mayoría de aplicaciones encontradas en Facebook se relacionan con juegos de rol, juegos parecidos al Trivial Pursuit, o pruebas de habilidades (digitación, memoria). Entre los más célebres se encuentran los juegos de Playfish y los juegos de Zynga Games como FarmVille.


Para la creación de una aplicación básica para facebook los requisitos son relativamente pocos:

  • Tener conocimientos sobre lenguajes de programación web, como: python. java, php, html, etc.
  • Registrarte en Facebook para poder obtener el ID de la apps.
  • Contar con las librerias cliente de Facebook .
  • Contar con un servidor fijo, para poder alojar tu app y las bases de datos que sean necesarias para su funcionamiento.
 En cuanto a seguridad, ésta no es tan confiable, ya que nuestros datos siempre estarán a la vista de terceros,
por lo que quieras o no, esto reduce la seguridad significativamente.

Bibliografías:
http://es.wikipedia.org/wiki/Facebook
http://developers.facebook.com/docs/guides/web





Google Apps

Google Apps es un servicio de Google para uso de dominios de diversos productos ofrecidos por la red Google. Este servicio representa muchas aplicaciones para Internet con funcionamiento similar a los tradicionales programas para escritorio, incluido Gmail, Google Agenda, Talk, Docs y Sites. Esto permite también elegir una garantía de seguridad y de conformidad (proporcionada por Postini) para la mensajería electrónica existente. Para Educación, el programa es gratuito.


Google Apps es una solución de mensajería y colaboración mucho más básica, idónea para familias, grupos y grupos de comunidades con sus propios dominios de Internet. Se recomienda Google Apps for Business para empresas de todos los tamaños que quieran pasar sus herramientas de mensajería o colaboración a una solución alojada.

Algunas de las características mas importantes para empezar a trabajar con google apps son:

  • Trabaja con lenguajes de programacion web (al menos uno de los siguientes):  java, ruby, python. Soportando también: servlets, javascripts, Django y bibliotecas 100%  python.
  • Se pueden agregar bases de datos para mejorar la funcionalidad de nuestras apps.
  • Se puede almacenar la app en un servidor propio o en appspot.com, según convenga.
  • En cuanto a seguridad, es similar a la utilizada por google, pero que al fin de cuentas no es del todo segura, ya que existen terceros para los cuales estan disponibles nuestros datos.

Ventajas de usar Google Apps (las más destacadas):

-> Ahorros en costes probados
Las aplicaciones de colaboración y mensajería de Google basadas en Internet no requieren ningún hardware ni software y, además, sólo es necesario un mantenimiento mínimo. Gracias a ello, las empresas pueden disponer de mucho tiempo, además de ahorrar costes.

Al realizar la transición a Gmail y a Google Calendar, los usuarios finales tienen la posibilidad de usar la interfaz de Microsoft Outlook (en inglés) para el correo electrónico, para los contactos y para el calendario.

-> Acceso a las aplicaciones de MI, de calendarios y de correo electrónico para móviles
Gracias a la variedad de opciones con las que los empleados cuentan para acceder a la información mientras están en movimiento, éstos pueden ser productivos con Google Apps incluso cuando no estén en sus lugares de trabajo.

-> Garantía de fiabilidad de tiempo de actividad del 99,9%
Garantizamos una disponibilidad de Google Apps del 99,9% como mínimo para que tus empleados sean más productivos y para que no tengas que preocuparte por los períodos de inactividad del sistema.

-> Espacio de almacenamiento 50 veces superior a la media del sector
Cada empleado cuenta con 25 GB para almacenar correo electrónico, por lo que pueden conservar los mensajes importantes y encontrarlos inmediatamente gracias a la incorporación de la búsqueda de Google.

-> Cumplimiento de las normativas y seguridad de la información
Cuando confíes la información de tu empresa a Google, puedes tener la tranquilidad de que esta información importante estará segura y en buenas manos.

-> Control total administrativo y de los datos
Los administradores pueden personalizar totalmente Google Apps para cubrir las necesidades que puedan tener en cuanto a marcas, aspectos técnicos y aspectos empresariales.

-> Asistencia al cliente durante las 24 horas del día, los siete días de la semana
Google Apps es muy fiable y fácil de utilizar, pero, en caso de que sea necesario, ofrece asistencia a los administradores.

Entre otras...

Algunas de las Google Apps mas conocidas son:


  • AdSense Obtén beneficios de tu sitio web.

  • AdWords Anuncia tu empresa en Google.


  •   Alertas de Google Recibe actualizaciones por correo electrónico de los temas que elijas.

  • Analytics Analiza el tráfico de tu sitio web.
     
  • Checkout Realiza compras online de forma más rápida y segura.
  • Búsqueda personalizada de Google Crea una experiencia de búsqueda personalizada en tu sitio web.

  • DoubleClick for Advertisers Administra, ejecuta, publica y revisa tu publicidad online.

  • DoubleClick for Publishers Administra tu inventario de anuncios.


  • Google Earth Explora el mundo desde tu equipo.

  • FeedBurner Analiza las suscripciones a los feeds de RSS que publicas.

  • iGoogle Añade noticias, juegos y mucho más a tu página principal de Google.
  • Knol Comparte tus conocimientos.
  • Google Maps
    Consulta mapas y obtén indicaciones para llegar a los sitios que buscas.

  • Merchant Centre
    Envía tus productos a Google.


  • Google Noticias Busca miles de noticias.
  • orkut Conoce a gente nueva y mantente en contacto con los amigos.


  • Álbumes web de Picasa Busca, modifica y comparte tus fotos.

  • Places Incluye tu empresa en Google.


  • Google Reader Accede rápidamente a todos tus blogs y feeds de noticias.

  • Translator Toolkit Obtén herramientas para que los traductores traduzcan tus páginas y documentos con mayor rapidez.
  • Google Wave Colabora en la elaboración de contenidos y participa en debates desde un mismo lugar.

  • Herramientas para webmasters de Google Mejora la visibilidad de tu sitio.

  • Optimizador de sitios web Crea sitios web eficaces.


  • YouTube Ve, sube y comparte vídeos.


Bibliografias:

http://www.google.com/apps

My SQL

MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones. MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual.

Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.
Al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y el copyright del código está en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código.
Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias privativas, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson y Michael Widenius.
Mysql.svg
----------------------------------------------------------------------------------------------------------------

Historia del proyecto

SQL (Lenguaje de Consulta Estructurado) fue comercializado por primera vez en 1981 por IBM, el cual fue presentado a ANSI y desde entonces ha sido considerado como un estándar para las bases de datos relacionales. Desde 1986, el estándar SQL ha aparecido en diferentes versiones como por ejemplo: SQL:92, SQL:99, SQL:2003. MySQL es una idea originaria de la empresa opensource MySQL AB establecida inicialmente en Suecia en 1995 y cuyos fundadores son David Axmark, Allan Larsson, y Michael "Monty" Widenius. El objetivo que persigue esta empresa consiste en que MySQL cumpla el estándar SQL, pero sin sacrificar velocidad, fiabilidad o usabilidad.
Michael Widenius en la década de los 90 trató de usar mSQL para conectar las tablas usando rutinas de bajo nivel ISAM, sin embargo, mSQL no era rápido y flexible para sus necesidades. Esto lo llevó a crear una API SQL denominada MySQL para bases de datos muy similar a la de mSQL pero más portable.
La procedencia del nombre de MySQL no es clara. Desde hace más de 10 años, las herramientas han mantenido el prefijo My. También, se cree que tiene relación con el nombre de la hija del cofundador Monty Widenius quien se llama My.
Por otro lado, el nombre del delfín de MySQL es Sakila y fue seleccionado por los fundadores de MySQL AB en el concurso “Name the Dolphin”. Este nombre fue enviado por Ambrose Twebaze, un desarrollador de software de código abierto africano, derivado del idioma SiSwate, el idioma local de Swazilandia y corresponde al nombre de una ciudad en Arusha, Tanzania, cerca de Uganda la ciudad origen de Ambrose.

Lenguajes de programación

Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programación, acceder a las bases de datos MySQL, incluyendo C, C++, C#, Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (con una implementación nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby,Gambas, REALbasic (Mac y Linux), (x)Harbour (Eagle1), FreeBASIC, y Tcl; cada uno de estos utiliza una API específica. También existe una interfaz ODBC, llamado MyODBC que permite a cualquier lenguaje de programación que soporte ODBC comunicarse con las bases de datos MySQL. También se puede acceder desde el sistema SAP, lenguaje ABAP.


Aplicaciones


Toma de pantalla programa de   Monitoreo Mtop.
MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento de errores como Bugzilla. Su popularidad como aplicación web está muy ligada a PHP, que a menudo aparece en combinación con MySQL. MySQL es una base de datos muy rápida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el que va a utilizar MySQL, es importante adelantar monitoreos sobre el desempeño para detectar y corregir errores tanto de SQL como de programacion.


Especificaciones

Plataformas

MySQL funciona sobre múltiples plataformas, incluyendo:
 Características de la versión 5.0.22
  • Un amplio subconjunto de ANSI SQL 99, y varias extensiones.
  • Soporte a multiplataforma.
  • Procedimientos almacenados
  • Disparadores (triggers).
  • Cursores
  • Vistas actualizables.
  • Soporte a VARCHAR
  • INFORMATION_SCHEMA
  • Modo Strict
  • Soporte X/Open XA de transacciones distribuidas; transacción en dos fases como parte de esto, utilizando el motor InnoDB de Oracle.
  • Motores de almacenamiento independientes (MyISAM para lecturas rápidas, InnoDB para transacciones e integridad referencial).
  • Transacciones con los motores de almacenamiento InnoDB, BDB Y Cluster; puntos de recuperación (savepoints) con InnoDB.
  • Soporte para SSL.
  • Query caching
  • Sub-SELECTs (o SELECTs anidados).
  • Réplica con un maestro por esclavo, varios esclavos por maestro, sin soporte automático para múltiples maestros por esclavo.
  • indexing y búsqueda de campos de texto completos usando el motor de almacenamiento MyISAM.
  • Embedded database library
  • Soporte completo para Unicode.
  • Conforme a las reglas ACID usando los motores InnoDB, BDB y Cluster.
  • Shared-nothing clustering through MySQL Cluster.

Mejoras futuras

El mapa de ruta de MySQL 5.1 indica soporte para:
  • Particionado de la base de datos.
  • Backup en línea para todos los motores de almacenamiento.
  • Replicación segura
  • Restricciones a nivel de columna.
  • Planificación de eventos.
  • Funciones XML

Características distintivas

Las siguientes características son implementadas únicamente por MySQL:
  • Múltiples motores de almacenamiento (MyISAM, Merge, InnoDB, BDB, Memory/heap, MySQL Cluster, Federated, Archive, CSV, Blackhole y Example en 5.x), permitiendo al usuario escoger la que sea más adecuada para cada tabla de la base de datos.
  • Agrupación de transacciones, reuniendo múltiples transacciones de varias conexiones para incrementar el número de transacciones por segundo.

Tipos de compilación del servidor

Hay tres tipos de compilación del servidor MySQL:
  • Estándar: Los binarios estándar de MySQL son los recomendados para la mayoría de los usuarios, e incluyen el motor de almacenamiento InnoDB.
  • Max (No se trata de MaxDB, que es una cooperación con SAP): Los binarios incluyen características adicionales que no han sido lo bastante probadas o que normalmente no son necesarias.
  • MySQL-Debug: Son binarios que han sido compilados con información de depuración extra. No debe ser usada en sistemas en producción porque el código de depuración puede reducir el rendimiento.

Especificaciones del código fuente

MySQL está escrito en una mezcla de C y C++. Hay un documento que describe algunas de sus estructuras internas en http://dev.mysql.com/doc/internals/en/ (en inglés).

 Bibliografías:

http://es.wikipedia.org/wiki/MySQL