sábado, 8 de enero de 2011

SUBVERSION




Concepto Subversion.
Subversion es un sistema de control de versiones open source. Mediante Subversion, puede registrar la historia de archivos de código fuente y documentos. Gestiona archivos y directorios a través del tiempo. Se coloca un árbol de archivos en un repositorio central. El repositorio es como un servidor de archivos ordinario, excepto en que recuerda todos los cambios que se realizan sobre los archivos y los directorios que contiene.

Como funciona
Una copia de trabajo de Subversión es un árbol de directorios corriente de su sistema de archivos local, conteniendo una colección de archivos. Usted puede editar estos archivos del modo que prefiera y si se trata de archivos de código fuente, podrá compilar su programa a partir de ellos de la manera habitual. Su copia de trabajo es su área de trabajo privada: Subversión nunca incorporará los cambios de otra gente o pondrá a disposición de otros sus cambios hasta que usted le indique explícitamente que lo haga.
Tras hacer algunos cambios a los archivos en su copia de trabajo y verificar que funcionan correctamente, Subversión le proporciona comandos para “publicar” sus cambios al resto de personas que trabajan con usted en su proyecto (escribiendo en el repositorio). Si las demás personas publican sus propios cambios, Subversión le proporciona comandos para mezclar estos cambios en su directorio de trabajo (leyendo del repositorio).
Una copia de trabajo también contiene algunos archivos extra, creados y mantenidos por Subversión para ayudarle a ejecutar estos comandos. En particular, cada directorio de su copia de trabajo contiene un subdirectorio llamado .svn, también conocido como el directorio administrativo de la copia de trabajo. Los archivos en cada directorio administrativo ayudan a Subversión a reconocer qué archivos contienen cambios no publicados y qué archivos están desactualizados con respecto al trabajo hecho por los demás.
Un repositorio típico de Subversión contiene a menudo los archivos (o el código fuente) de varios proyectos; normalmente, cada proyecto es un subdirectorio en el árbol del sistema de archivos del repositorio. En esta disposición, la copia de trabajo de un usuario se corresponde habitualmente con un subárbol particular del repositorio.
Por ejemplo, suponga que usted tiene un repositorio que contiene dos proyectos de software, paint y calc. Cada proyecto reside en su propio subdirectorio dentro del directorio raíz.
Para conseguir una copia de trabajo, debe ejecutar primero un checkout de algún subárbol del repositorio. (crea una copia privada del proyecto).
 Por ejemplo, si usted hace un checkout de /calc, obtendrá una copia de trabajo como ésta:
$ svn checkout http://svn.example.com/repos/calc
A calc
A calc/Makefile
A calc/integer.c
A calc/button.c
$ ls -A calc
Makefileinteger.cbutton.c .svn/

La lista de letras A indica que Subversión está añadiendo una serie de elementos a su copia de trabajo. Usted ahora tiene una copia personal del directorio /calc del repositorio, con una entrada adicional—.svn—que contiene la información extra que Subversión necesita, tal y como se mencionó anteriormente.

Ventajas
§  Se sigue la historia de los archivos y directorios a través de copias y renombrados.
§  Las modificaciones (incluyendo cambios a varios archivos) son atómicas.
§  La creación de ramas y etiquetas es una operación más eficiente. Tiene costo de complejidad constante (O(1)) y no lineal (O(n)) como en CVS.
§  Se envían sólo las diferencias en ambas direcciones (en CVS siempre se envían al servidor archivos completos).
§  Puede ser servido mediante Apache, sobre WebDAV/DeltaV. Esto permite que clientes WebDAV utilicen Subversion de forma transparente.
§  Maneja eficientemente archivos binarios (a diferencia de CVS que los trata internamente como si fueran de texto).
§  Permite selectivamente el bloqueo de archivos. Se usa en archivos binarios que, al no poder fusionarse fácilmente, conviene que no sean editados por más de una persona a la vez.
§  Cuando se usa integrado a Apache permite utilizar todas las opciones que este servidor provee a la hora de autentificar archivos (SQLLDAPPAM, etc.).
§   
Desventajas.
§  El manejo de cambio de nombres de archivos no es completo. Lo maneja como la suma de una operación de copia y una de borrado.
§  No resuelve el problema de aplicar repetidamente parches entre ramas, no facilita llevar la cuenta de qué cambios se han realizado. Esto se resuelve siendo cuidadoso con los mensajes de commit.

Como instalar Subversión.
Instalar Subversión en LINUX
Para realizar la instalación seguimos los siguientes pasos:
Paso 1 – Instalar un servidor LAMPP
sudo apt-get apache2 php5-mysql libapache2-mod-php5 mysql-server
Paso 2 – Instalar Subversion
sudo apt-get install subversion libapache2-svn
Paso 3 – Crear un repositorio
Create the subversion repository in /svn
sudo svnadmin create /svn
Paso 4 – Configurar el módulo webdav
Editar el archivo de configuración del módulo webdav del apache. Utilize su editor favorito, en este caso yo utilizo nano.
sudo nano /etc/apache2/mods-enabled/dav_svn.conf
El archivo debería quedar como sigue:
DAV svn
SVNPath /svn
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /etc/apache2/dav_svn.passwd
Grabe el archivo.
Paso 5 – Crear un usuario en SVN
Para crear un usuario en el reposotorio utilize el siguiente comando:
sudo htpasswd -cm /etc/apache2/dav_svn.passwd
Ejemplo:
sudo htpasswd -cm /etc/apache2/dav_svn.passwd geek
New password:
Re-type new password:
Adding password for user geek
Paso 6 – Reiniciar el Apache
Reinicie el apache que se encuentra corriendo con el siguiente comand:
sudo /etc/init.d/apache2 restart
Ahora puede apuntar con el browser a http://www.server/svn, debería ver que el depósito está habilitado para el acceso de lectura anónima, pero se comprometen que el acceso exige un nombre de usuario.
Instalar Subversión en WINDOWS.
Para realizar la instalación seguimos los siguientes pasos:
1. Descargar subversion 1.4.4 y descomprimirlo
2. Copiar los archivos mod_authz_svn.so y mod_dav_svn.so , que se encuentra en svn-win32-1.4.4/bin, en APACHE_INSTALL_DIR/modules
3. Copiar los archivos intl3_svn.dll y libdb44.dll, que se encuentra en svn-win32-1.4.4/bin, en APACHE_INSTALL_DIR/bin
4. Añadir las siguientes líneas (en la sección donde está la carga de librerías) al archivo APACHE_INSTALL_DIR/conf/httpd.conf para cargar las correspondientes librerias:
1. 
LoadModule dav_svn_module modules/mod_dav_svn.so
2. LoadModule authz_svn_module modules/mod_authz_svn.so
3. LoadModule dav_module modules/mod_dav.so
5. LoadModule dav_fs_module modules/mod_dav_fs.so
6. 
Añadir la siguiente línea (al final) al archivo APACHE_INSTALL_DIR/conf/httpd.conf para cargar la configuración de subversion:
1. Include “APACHE_INSTALL_DIR/conf/extra/httpd-subversion.conf”
7. Creamos el archivo APACHE_INSTALL_DIR/conf/extra/httpd-subversion.conf con la siguiente configuración (es sólo un ejemplo):
1. 
DAV svn
SVNParentPath “C:/tools/wamp/tmp/svn”
AuthzSVNAccessFile “C:/tools/wamp/Apache2/conf/access-policy/svn-groups.conf”
AuthType Basic
AuthName “Subversion repository”
Require valid-user
AuthUserFile “C:/tools/wamp/Apache2/conf/access-policy/svn-users.conf”
2. Cuidado con las rutas eso es sólo un ejemplo. Básicamente se indica donde van a       estar    nuestros repositorios de subversion, el archivo con los grupos y usuario de subversion
8. Ahora tenemos que crear los archivos svn-groups.conf y svn-users.conf. Para el primero de ellos tenemos:
1. [groups]
test-group: recena
[test:/]
@test-group:rw
1. Definición de grupos y a continuación, nombre del repositorio (que tendremos que crearlo) y permisos del grupo sobre el raiz del repositorio.
2. Para crear un usuario, hacemos uso de la utilidad htpasswd que nos proporciona Apache.
Para crear el repositorio hacemos uso de la utilidad svnadmin que proporciona subversión.

Crear un repositorio
Subversion es un sistema de control de versiones que permite tener un control sobre las modificaciones que ha sufrido un archivo fuente en el desarrollo de un proyecto de software, haciendo posible la comparacion entre las diferentes versiones, identificar los cambios que se han producido, obtener la fecha de cada cambio e incluso el usuario que ha realizado dichas modificaciones. SVN como se conoce comumente a Subversion es una herramienta ideal para administrar desarrollo realizados por multiples programadores, asi como tambien llevar un estricto control sobre las versiones y modificaciones que ha tenido un software en su tiempo de vida, por tal motivo a continuacion describiremos como instalar un servidor de subversion en Ubuntu 8.10 :
Instalar Paquetes:
·         Abrir una consola
·         Instalar los paquetes necesarios
sudo apt-get install subversion
·         Crear directorio para alojar los proyectos
sudo mkdir /home/svn
Crear Proyecto :
·         Cambiar al directorio de proyectos
cd /home/svn
·         Crear directorio con el nombre del proyecto
sudo mkdir project
·         Cambiar el dueño del directorio para que el servidor web pueda escribir los datos
sudo chown -R www-data:www-data /home/svn
·         Crear la estructura del proyecto en subversion
sudo svnadmin create /home/svn/Project

Crear usuarios y dar permisos
Para crear el primer usuario, ejecute(cambie <usuario> por el nombre de usuario a crear) :sudo htpasswd -c /etc/subversion/passwd <usuario>A continuacion suministre la clave asignada al usuario Para crear el segundo utilice el mismocomando pero sin la opcion -csudo htpasswd /etc/subversion/passwd <usuario>
Autenticación selectiva
Ahora editaremos el fichero de autorización, pudiendo definir grupos (en la sección [groups]) yluego definiendo rutas del repositorio con un listado de los permisos de los usuarios y/o grupos adichas secciones:# vim /home/svn/conf/authzEl contenido mímino sería algo similar a:[groups]admins = root[/]@admins = rwEn este fichero, se supone que tenemos que haber creado en el paso anterior un usuario root, de modo que dicho usuario root es añadido a un grupo llamado admins, luego se define la sección [/],es decir la raíz del repositorio, a la cual damos accesos de lectura y escritorio sólo a dicho grupo y anadie más.El fichero antes de que lo edites tiene mucha documentación al respecto de cómo configurarlo, esmuy recomendable que lo leas con calma para evaluar las diferentes opciones que te puede dar sucorrecto uso.
Configurar permisos de ficheros
Dado que todas las operaciones las hemos hecho por comodidad como usuario root antes determinar tendremos que asignar los permisos de la carpeta /home/svn al usuario que realmente tieneque usarlos, que en este caso es Apache2 y por ende www-data:chown -R www-data:www-data /home/svnFinalmente reiniciamos Apache2 y listo:/etc/init.d/apache2 restart
Comando principales.

-          Crear un repositorio nuevo:
svnadmin create nombre_repositorio
-          Añadir un árbol de directorios al repositorio
svn import path_al_directorio nombre_repositorio
-          Obtener una copia de trabajo
svn checkout file:///nombre_repositorio/dir directorio_de_trabajo
-          Obtener una copia sin control de versiones
svn export file:///nombre_repositorio/dir directorio_destino
-          Hacer una copia de seguridad de todo el repositorio
svnadmin dump nombre_repositorio > ficheroBackup
-          Restaurar una copia de seguridad en un nuevo repositorio
svnadmin create nombre_nuevo_repositorio
svnadmin load nombre_nuevo_repositorio < ficheroBackup
-          Ver el estado actual de la copia de trabajo
svn status
-          Añadir nuevos ficheros o directorios
svn add nombre_fichero
-          Eliminar ficheros
svn del nombre_fichero –forcé
-          Actualizar la copia de trabajo con los últimos cambios en el repositorio
svn update
-          Actualizar el repositorio con los cambios de tu copia de trabajo
svn commit -m “Mensaje para etiquetar los cambios”

 FUENTE:


lunes, 3 de enero de 2011

Segunda versión del iPad tendría puerto USB

Eldar Murtazin es el editor de Mobile Review, una web muy respetada entre los fanáticos de la tecnología, y publicó un mensaje vía Twitter que seguramente hará que el nuevo iPad tenga aún más éxito que el primer modelo.
"Hablé con un colega que trabaja con algunos proveedores vinculados a Apple y de acuerdo con sus fuentes, el iPad 2 tendrá un puerto USB", publicó desde su cuenta.
De ser cierto, sería el resultado del acuerdo europeo que fijó las pautas para que los puertos USB sirvan también para cargar batería en los aparatos móviles. Esto constituiría un gran cambio para Apple, que ofrece un conector exclusivo para todos sus dispositivos (iPhone, iPad o iPod touch). El iPad actual ofrece limitadas conexiones USB con un adaptador que se vende por separado. El adaptador USB sirve, además, para descargar imágenes desde las cámaras de fotos.
Mientras la expectativa alrededor del nuevo iPad crece, otro rumor sostiene que Apple fabricará un tercer modelo que incluirá una radio CDMA 3G para la conectividad inalámbrica.
Además, se habla de que la segunda generación de la tableta contaría con un altavoz más grande con una "rejilla" metálica en la parte trasera. También traerá dos cámaras, lo que permitirá a los usuarios participar en el videochat de FaceTime con otros usuarios del iPhone 4, el último iPod touch, utilizando el software de FaceTime.

Fuente:

Análisis y gestión de riesgos


Fuente:
PRESSMAN Roger, Ingeniería del Software un enfoque práctico, Mc Graw Hill, Sexta edición, 980p.

Gestión de calidad


Conceptos de calidad

Calidad es característica o atributo de algo, la calidad se refiera a características mesurables, es decir cosas que se pueden comparar para conocer estándares, pero el software como no es un objeto físico es más difícil caracterizarlo y cuando se examina un objeto en base a sus propiedades se pueden encontrar dos tipos de calidad:
Calidad de diseño, que es la característica que los diseñaros especifican para un elemento e incluye requisitos, especificaciones y el diseño del sistemas, calidad de concordancia que es el grado en que las especificaciones de diseño se aplican durante la fabricación y está enfocado principalmente a la implementación.


La tendencia de la calidad.
La tendencia de la calidad Total no solo reconoce la dignidad y el potencial intelectual del ser humano, incorporándolo al autocontrol activo de la calidad de lo que hace, sino que adicionalmente a través de este involucramiento lo pone en contacto estrecho con la naturaleza e importancia de su labor.

La calidad no es un elemento extrínseco al propio desarrollo personal y profesional de los miembros de una organización. La Cultura de la Calidad depende de actitudes, de compromisos, de relaciones, de condiciones de trabajo. Se debe tener claro que la mejora y la innovación está en cada una de las personas que integran y desarrollan su trabajo en las diversas organizaciones, instituciones y empresas.
Actualmente, existe un consenso general a favor de la cultura de la calidad porque es deseable que las cosas mejoren, que las sociedades progresen, que la calidad de vida aumente en todos los sectores y países. Para varios autores, este progreso no debe ir unido al aumento de las desigualdades, ni ser un elemento de discriminación, menos aún si se está hablando acerca de uno de los derechos básicos de todo ser humano: el derecho a la educación.

Garantía de calidad del software
La garantía de la calidad son actividades esenciales en cualquier negocie que elabore productos de consumo. La garantía de calidad del software es un patrón de acciones sistemático y planificado que se requiere para garantizar la calidad del software. El grupo de SQA (Gestión de calidad del software) funcionan como el representante en casa del cliente. Es decir, las personas que realizan el SQA  deben observar el software desde el punto de vista del cliente.
La garantía de la calidad del software se compone de una variedad de tareas asociadas con dos integrantes diferentes:
-       Los Ingenieros de software, que realizan el trabajo técnico. Abordan la calidad (y realizan actividades de aseguramiento y control de calidad) al aplicar sólidos métodos y medidas técnicas, llevar cabo revisiones técnicas formales y desarrollar pruebas de software  bien planificadas.
-       El grupo de SQA, tienen la responsabilidad de planificar, supervisar, guardar registros, analizar, y reportar la garantía de la calidad. La misión principal de este grupo es auxiliar al equipo de software a conseguir un producto de alta calidad.
Dichas actividades las realiza un grupo de SQA independiente: prepara un plan de SQA para un proyecto, participar en el desarrollo de la descripción del proceso de software del proyecto, revisar las actividades de ingeniería del software  para verificar que se ajuste al proceso de software definido, audita productos de trabajo se software seleccionados para verificar que se ajuste con los definidos como parte del proceso de software, garantiza que las desviaciones en el trabajo del software y en los productos de trabajo estén documentadas y se manejen de acuerdo con el procedimiento establecido, registra cualquier falla de ajuste y lo informa al gestor ejecutivo.

Revisiones del software.
Son un filtro para el proceso de software, las revisiones se aplican en ciertas instancias del desarrollo de la ingeniería del software y sirven para descubrir errores y defectos que luego pueden eliminarse. Estas revisiones de software purifican las actividades de ingeiería del software que se han denominado análisis, diseño y codificación. Se pueden llevar a cabo muchos tipos de revisiones, cada uno tiene su lugar, como por ejemplo una reunión en una máquina expendedora de café es una forma de revisión si se examinan los problemas técnicos, una presentación formal de diseño de software a un auditorio a clientes, gestores y personal técnico también es una forma de revisión.

Variedades de revisión del software

Las revisiones del software se pueden dividir en tres categorías:
Son conducidos por el autor del producto del trabajo, o por unos o más colegas del autor, para evaluar el contenido técnico y/o la calidad del trabajo.
Son conducidos por los representantes de la gerencia para evaluar el estado del trabajo hecho y para tomar decisiones con respecto a actividades enes sentido descendiente.
Son conducidos por el personal externo al proyecto del software, para evaluar conformidad con especificaciones, estándares, acuerdos contractuales, u otros criterios.



Revisiones técnicas formales
Una revisión técnica formal (RTF) es una actividad de control de calidad de software que llevan a cabo los Ingenieros de calidad del software y otros. Los objetivos principales de las RTF´s son:
-       Descubrir errores en la función, lógica o implementación del software.
-       Verificar que el software satisface los requerimientos del usuario.
-       Garantizar que el software funcione de acuerdo a los estándares definidos.
-       Lograr software desarrollado de manera uniforme.
-       Hacer proyectos más manejables.
Además los RTF sirven como un campo de entrenamiento porque permite que los Ingenieros “novatos”  observen los diferentes enfoques con respecto al análisis, diseño y construcción del software. La RTF no es más que una revisión que incluye recorridos, inspecciones, revisiones cíclicas y evaluaciones técnicas del software; cada RTF se realiza en una junta y tendrá éxito solo si se planifica, atiende y controla apropiadamente.
Cada revisión se conduce en forma de una reunión cuidadosamente planeada y controlada
-          La reunión de revisión
Entre 3 y 5 personas (grupo pequeño) Preparación previa (2 horas por persona) Especificación precisa (formal o informal)
-          Estándares de codificación
Duración máxima 2 horas (lento pero cansado) Foco en un segmento específico Participan los revisores y el productor
-          Directrices para la revisión
Revisar el producto y no al productor Indicar los errores con tino, tono constructivo Mantenerse estrictamente dentro de la agenda No irse por las ramas Limitar el debate Algunos asuntos pueden dejarse para discusión posterior Enunciar problemas no resolverlos Problema debería ser resuelto por el productor Tomar notas (pizarra deseable)
RTFs: son un filtro que permite “purificar” las actividades de ingeniería de software. se aplican en diversos momentos del desarrollo para detectar defectos Aprovecha la diversidad de un grupo de personas para: señalar la necesidad de mejoras en el producto de ingeniería. Confirmar las partes en las que no es necesaria una mejora. Conseguir un trabajo técnico de calidad más uniforme.


Fiabilidad del software.
Se define como la propiedad de operación libre de fallas de un programa de computadora en un entorno específico en un tiempo específico y este a diferencia de otros factores de calidad se puede medir, estimar empleando datos históricos y de desarrollo.
Para modelizar la fiabilidad del software, se deben considerar primero los principales factores que le afecten : Introducción de fallos, eliminación de fallos y entorno.
Los modelos de fiabilidad del software entran en dos grandes categorías :
  1. Modelos que predicen la fiabilidad como una función cronológica del tiempo (calendario).
  2. Modelos que predicen la fiabilidad como una función del tiempo de procesamiento transcurrido (tiempo de ejecución de CPU).
    Como parte de la seguridad del software, se puede dirigir un proceso de análisis y modelización. Inicialmente, se identifican los riesgos y se clasifican por su importancia y su grado de riesgo. Cuando se han identificado estos riesgos del sistema, se utilizan técnicas de análisis para asignar su gravedad y su probabilidad de ocurrencia. Para que se efectivo, se tiene que analizar el software en el contexto del sistema completo. El análisis del árbol de fallos construye un modelo gráfico de las combinaciones secuenciales y concurrentes de los sucesos que pueden conducir a un suceso o estado del sistema peligroso.



Prueba de errores para el software
Las pruebas de software se integran dentro de las diferentes fases del ciclo del software dentro de la Ingeniería de software. Así se ejecuta un programa y mediante técnicas experimentales se trata de descubrir que errores tiene.
La prueba de software involucra las operaciones del sistema bajo condiciones
Controladas y evaluando los resultados.
Las condiciones controladas pueden ser normales o anormales. La prueba puede intencionalmente esforzar al programa y producir errores en las respuestas para determinar si los sucesos ocurren cuando no tendrían que ocurrir o cuando los hechos no suceden cuando deberían suceder.
La prueba de software esta detectada a la detección.
La mayoría de las grandes organizaciones asumen la responsabilidad del control de calidad y prueba de software a tal medida que en la producción se incluyen desarrolladores de sistemas (analistas, programadores) y un grupo dedicado a la prueba de software para que estos grupos antes menciona dos trabajen en conjunto cumpliendo el control de calidad (prevención) y la prueba de software (detección) logrando una tarea éxitos.

El estándar de calidad iso 9001
Designa un conjunto de normas sobre calidad y gestión que una organización debe cumplir para alcanzar la completa satisfacción del cliente a través de productos y servicios que cumplan las perspectivas del cliente. Establecidas por la Organización Internacional de Normalización. Aplicable a cualquier organización que diseñe, desarrolle, manufacture, instale o dé servicio a un producto o que proporcione cualquier forma de servicio. Es la única implementación para la que auditores externos pueden entregar certificaciones.
Secciones del ISO 9001
ISO 9001 está compuesto por cinco secciones que especifican las actividades que necesitan ser consideradas al implementar el sistema:
  1. Realización del Producto
  2. Sistema de Gestión de la Calidad
  3. Responsabilidad de Gestión
  4. Gestión de Recursos
  5. Medición, Análisis y Mejora
De la primera pueden ignorarse las partes no aplicables a la organización. Las otras cuatro secciones aplican a todas las organizaciones.
El registro de los modelos  de sistema de garantía de calidad contenidos en el ISO 9000 requiere que los sistemas y operaciones de calidad de una compañía lo sometan a prueba auditores de una empresa diferente.
El estándar de Garantía de calidad que se aplica a la Ingeniería del software es el ISO 9001:2000. Este estándar contiene 20 requisitos que deben estar presentes para un sistema eficiente de la garantía de la calidad. Los requisistos que delinea el ISO 9001:2000 abordan tópicos como la responsabilidad de la gestión, sistema de calidad, revisión del contrato, control de diseño, control de documentos y datos, seguimiento e identificación de producto, control de proceso, inspección y pruebas, acciones correctivas y preventivas, control de registros de calidad, auditorias de calidad interna, entrenamiento, servicio y técnicas estadísticas.

Fuente:
- PRESSMAN Roger, Ingeniería del Software un enfoque práctico, Mc Graw Hill, Sexta edición, 980p.

domingo, 26 de diciembre de 2010

Los videos más vistos de YouTube 2010


Con más de 700 mil millones de videos vistos y algo de 13 millones de horas de video subidos a lo largo del 2010, YouTube ha publicado en su blog la lista de los diez vídeos más vistos durante el año. La lista incluye, por supuesto, el trailer de Twilight Eclipse y una referencia a Justin Beiber, y una gran cantidad de videos virales, entre ellos el de Old Spice...

Videos más vistos en YouTube 2010

A nivel mundial, a Noviembre del 2010, esta es la lista de los videos más vistos de YouTube (excluyendo los videos bajo sello musical):

1.  BED INTRUDER SONG!!! (now on iTunes)
2. TIK TOK KESHA Parody: Glitter Puke - Key of Awe$ome #13
3. Greyson Chance Singing Paparazzi
4. Annoying Orange Wazzup
5. Old Spice | The Man Your Man Could Smell Like
6. Yosemitebear Mountain Giant Double Rainbow 1-8-10
7. OK Go - This Too Shall Pass - Rube Goldberg Machine version
8. THE TWILIGHT SAGA: ECLIPSE - Trailer
9. Jimmy Surprises Bieber Fan
10. Ken Block's Gymkhana THREE, Part 2; Ultimate Playground; l'Autodrome

¿Cuántos Nombres de Dominio hay en Internet?

El número total de nombres de dominio registrados en todo el mundo acaba de superar la marca de 200 millones (201.8 millones para ser más precisos), de acuerdo a un reciente reporte de VeriSign (PDF).
¿Cuántos Nombres de Dominio hay en Internet?
Estas cifras reflejan “los registros de nombres de dominio”, por lo que el número de websites en internet sería mucho mayor.
Para comentar un ejemplo, 16 millones de blogs son alojados actualmente en Wordpress.com. Estamos hablando de sitios web independientes; pero como forman parte de un dominio, no son considerados en el reporte de VeriSign.
El Top Level Domains (TLDs) más popular, en términos de registros, es: .com, .de, .net, .uk, .org, .info, .cn, .nl, .eu y .ru en el mismo orden.

Vía | labnol

martes, 21 de diciembre de 2010

Análisis Sintáctico

ANÁLISIS SINTÁCTICO DESCENDENTE
En éste analizador las entradas son de izquierda a derecha, y construcciones de derivaciones por la izquierda de una sentencia o enunciado.
  • El  análisis  sintáctico  descendente  (ASD) intenta  encontrar  entre  las  producciones de  la  gramática  la  derivación  por  la izquierda  del  símbolo  inicial  para  una cadena de entrada.
  • Parte del axioma de la gramática.
  • Procesa la entrada de izquierda a derecha.
  • Escoge reglas gramaticales.
Ejemplo:
ANALISIS SINTÁCTICO ASCENDENTE
El objetivo de un análisis ascendente consiste en construir el árbol sintáctico desde abajo hacia arriba, esto es, desde los tokens hacia el axioma inicial, lo cual disminuye el número de reglas mal aplicadas con respecto al caso  descendente (si hablamos del caso con retroceso) o amplia el número de gramáticas susceptibles de ser analizadas (si hablamos del caso LL(1)).
A medida que un analizador sintáctico va construyendo el árbol, se enfrenta a una configuración distinta (se denomina configuración al par á-â) y debe tomar una decisión sobre el siguiente paso u operación a realizar. Básicamente se dispone de cuatro operaciones diferentes, y cada tipo de analizador ascendente se distingue de los demás en base a la inteligencia sobre cuándo aplicar cada una de dichas  operaciones.
Cualquier mecanismo de análisis ascendente consiste en partir de una configuración inicial e ir aplicando operaciones, cada una de las cuales permite pasar de una configuración origen a otra destino. El proceso finalizará cuando la  configuración destino llegue a ser tal que α represente al árbol sintáctico completo y en β se hayan consumido todos los tokens.
Ejemplo:
DIFERENCIAS
Descendente: en este tipo de análisis, se va recorriendo el árbol sintáctico desde la raíz hasta las hojas, llegando a generar la sentencia que se está analizando. La raíz representa al símbolo inicial de la gramática.
Ascendente: se parte de las hojas y se intenta construir el árbol hacia arriba, hasta llegar al símbolo inicial de la gramática.
Fuente:
uned, 2010. Ciencia/educación [en línea], [http://www.lsi.uned.es/procleng/apuntes/2006-2007/AnalisisSintacticoDescendente.pdf], [Consulta: 14 Dic 2010, 12:00]