Apuntes Accesibilidad – Introducción

La Web Accessibility Initiative es el grupo de trabajo del World Wide Web Consortium que desarrolla las pautas sobre accesibilidad web.

Definicion de accesibilidad web e Introducción a la Accesibilidad Web

Necesidad de un diseño que posibilite a las personas: percibir, entender, navegar e interactuar con la Web, aportando a su vez contenidos.

La accesibilidad web se puede dividir en tres categorías principales: del contenido, de la navegación y de la interacción.

Afecta principalmente a usuarios con discapacidad visual, con discapacidad motora y con discapacidad auditiva, aunque también podrían afectar a otros grupos de usuarios con discapacidad.

M101JS – Semana 6

Aplication Engineering

Replicación, conceptos basicos.
La replicacion se hace de manera asincrona en varios servidores de MongoDB llamados nodos, uno de ellos es el primario y el resto es el secundario, el driver de la aplicacion se conecta el primario y solo al primario, si la conectividad se pierde el driver de la aplicación elige uno de los secundarios para que funcione como primario, el numero minimo de nodos es tres.

Un nodo puede ser regular (primarios o secundarios), arbitro (sin datos), de retraso (por ejemplo de 2h. para evitar desastres) y oculto (para test).

En los archivos del curso hay un script para crear una replicación, con el comando ‘rs.slaveOk()’ podemos leer en nodos secundarios

M101JS – Semana 5

Aggregation

De una colección fuente, se ejecuta una serie de procesos encadenados (pipeline) y construye una serie de documentos.

db.products.aggregate([
   {$group:
      {
          _id:"$manufacturer",
          num_products:{$sum:1}
      }
   }
])

Pipeline

$proyect -> Selecciona las claves en las que estas interesado.
$match -> hace un filtro.
$group -> agrupa por claves
$sort -> Ordena los documentos
$skip -> Salta ciertos documentos
$limit -> limita el numero de elementos
unwind -> Quita la relación entre los documentos anidados (arrays)

Expresiones que se pueden usar en $group

$sum -> Añades uno cada vez que encuentra clave o añades el valor de la clave
$avg -> calcula el promedio de una clave entodos los documentos
$min -> encuentra el valor minimo
$max -> encuentra el valor maximo
$push y $addToSet -> construyen arrays (addToSet, solo añade cuando el valor es diferente)
$first y $last -> añadiran el primer o ultimo valor, puede no tener sentido si no los ordenamos primero.

Tambien podemos hacer lo que se llama agrupación doble, ej:

db.fun.aggregate([{$group:{_id:{a:"$a", b:"$b"}, c:{$max:"$c"}}}, {$group:{_id:"$_id.a", c:{$min:"$c"}}}])

M101JS – Semana 4

Indices

Usamos los indices para encontrar los datos y notener que recorrer toda la base de datos, en MongoDB son listas de claves.
Por ejemplo, creamos un indice en la colección “students” de “student_id” en orden ascentente.

db.students.ensureIndex({student_id:1})

Podemos crear un indice como el anterior añadiendo la clase en orden descendente.

db.students.ensureIndex({student_id:1, class:-1})

Para saber que indices hay en nuestro sistema usamos

db.system.indexes.find()

Para saber que indices hay en una colección

db.students.getIndexes()

Para eliminar un indice hay en una colección

db.students.dropIndexes({student_id:1})

En MongoDB se puede tener una clave que contenga un array lo que llamareos un indice multiclave, en cada indice solo se puede tener una multiclave.

Tambien podemos crear indices de un elemento anidado.

db.students.ensureIndex({class.name:1})

Un indice unico fuerza a que el contenido de la clave sea unico

db.students.ensureIndex({student_id:1},{unique:true})

Si hay duplicados podemos forzarle a que elimine los duplicados con:

db.students.ensureIndex({student_id:1},{unique:true, dropDups:true})

pero es peligroso por que no hay manera de controlar cual va a eliminar

Si queremos crear un indice que sea unico sobre una clave que no esta en todos los documentos de la colección debemos decirle a mongoDB que es una clave dispersa, los docuementos que no tengan la clave no seran tomados en cuenta a la hora de hacer las consultas, seran filtrados.

db.students.ensureIndex({student_id:1},{unique:true, sparse:true})

Al añadir explain a nuestra consulta nos da una explicacion de lo que hace para realizar la consulta

db.students.find({student_id:1}).explain()

Para tener las estadisticas de la colección

db.students.stats()

Para saber el tamaño de los indices

db.students.totlaIndexSize()

Podemos indicarle que indice queremos usar con hint, si le pasamos $natural usara el indice basico

db.students.find({student_id:1}).hint({$natural:1})

Los indices geoespaciales permiten encontrar algo dependiendo de su lugar, funciona creando un indice en una clave con dos elementos numericos.

db.locales.ensureIndex({coordenadas:'2d'})

Para hacer una busqued en usando este indice

db.locales.find({coordenadas:{$near:[20,50]}})

Para depurar podemos usar los comandos de “Profiling”, por ejemplo:

db.system.profile.find({millis:{$gt:1000}}).sort({ts:-1})

mongotop y mongostat