domingo, abril 22, 2012

Redondear un número sin usar estructura If...else

Durante el curso que ofrece Stanford en la página Udacity, "Building a search engine" tenía que hacer un pequeño programa que redondeara un número dejando 0 espacios decimales.
Por ejemplo:
El número 3.289 debería redondearlo a 3.
El 74.701 debería redondearlo a 75.
El 5.5 debería redondearlo a 6.

Bueno, la única forma que se me ocurrió era evaluar el número después del punto decimal y pasarlo por una condición como "si el número es mayor o igual a 5 entonces incrementa el número en 1", luego convertir el número a string para poder solamente extraer los caracteres antes del punto decimal. Pero, el problema es que, aunque la solución es perfectamente válida, se suponía que debía de hacerse solamente con lo que había visto del curso, y hasta ese momento no habíamos visto la estructura if...else.

jueves, abril 19, 2012

Demostración de data JSON

Lección anterior: Introducción a JSON - CBDS

En esta lección jugaremos un poco con JSON. Veremos que cosas son válidas sintáctica y semánticamente. Los datos que se usan son prácticamente los mismos de la lección con XML. Así que puedes compararlos y formar tu propia opinión.

Les dejo con el vídeo directamente ya que no había mucho que sacar del PDF.

Nota: para que los subtítulos de youtube se visualizen mejor, recomiendo que le pongan un fondo. Pueden hacerlo presionando el botón "CC"  y luego configuraciones y finalmente seleccionar "Fondo".





Descarga: Demostración de data JSON. Subtitulos. Datos JSON. Esquema JSON.

domingo, abril 15, 2012

Introducción a JSON - CBDS

Lección anterior: Álgebra Relacional II - CBDS

Me he retrasado unas semanas en la publicación de los vídeos, pero a partir de hoy retomaré el ritmo.

En este post veremos una introducción a JSON, este tema no estaba pautado en la planificación del curso, pero un día entré a db class y ahí estaba, después de XML.

Esta vez, como el vídeo no tenía subtítulos originales en inglés, use la transcripción de voz automática de youtube como una ayuda para subtitular y luego me ocupé de traducirlos al español. Por esa razón, el vídeo está en youtube.

JSON es muy similar a XML. Su principal diferencia está a la hora de serializar objetos, tarea en la que JSON es más efectivo. También los archivos JSON o un objeto serializado con JSON será generalmente más ligero que uno con XML. Una desventaja temporal de JSON es que es relativamente nuevo y todavía no cuenta con herramientas "estandarizadas" para su uso.

En mi opinión, JSON viene a hacer como una mejora de XML que todavía no está pulida.

sábado, febrero 25, 2012

Álgebra Relacional II - CBDS

Lección anterior: Álgebra Relacional I - CBDS

En esta lección estaremos viendo las operaciones básicas de conjuntos: unión, diferencia e intersección. Aunque se trate de bases de datos, no se diferencia mucho del concepto de matemática (recuerda que el tema se llama "Álgebra Relacional"), por eso te recomiendo que te vas los siguientes vídeos para que refresques la memoria y absorbas mejore las explicaciones.

Operaciones entre conjuntos (1/3)
Operaciones entre conjuntos (2/3)
Operaciones entre conjuntos (3/3)

Los conjuntos en matemáticas es un tema muy bonito y sencillo. Sinceramente me ayudó a comprender mejor las mismas operaciones pero aplicadas a las bases de datos.

También veremos el operador de Renombre o Renombrar y un poco de las distintas notaciones que se usan para escribir consultas en álgebra relacional.

Como siempre, veamos el resumen del PDF:

Usamos la base de datos ficticia de estudiantes admitidos a universidades.
Universidad(uNombre, estado, inscripciones)
Estudiante(eID, eNombre, GPA, tamañoEsc)
Aplica(eID, uNombre, especialidad, decision)

*Puedes pasar el cursor por las cursivas para ver una descripción

Lista de nombres de universidades y estudiantes
$ {\LARGE \pi} _{\small uNombre} {\large Universidad} {\LARGE \; \; \cup \; \; \pi} _{\small eNombre} {\large Estudiante} $

IDs y nombres de estudiantes que no han aplicado a ninguna parte
$ {\LARGE \pi} _{\small eNombre} {\large ((} {\LARGE \pi} _{\small eID} {\large Estudiante -} {\LARGE \pi} _{\small eID} {\large Aplica) \, \infty \, Estudiante)} $

Nombres comunes entre universidades y estudiantes
$ {\LARGE \pi} _{\small eNombre} {\large Universidad} {\LARGE \;\; \cap \;\; \pi} _{\small eNombre} {\large Estudiante} $

jueves, enero 26, 2012

Álgebra Relacional I - CBDS

Lección anterior: Esquema XML

Empezamos con un tema nuevo, muy interesante, importante y útil. Es el álgebra relacional, entender esto bien nos ayudará mucho a la hora de hacer consultas reales en una base de datos implementada, ya que el álgebra relacional se puede traducir directamente al lenguaje SQL.

Como siempre dice mi profesor: "Las bases de datos no están hechas para entrar información si no para sacar información". Claro que lo que él quiere decir es que lo más importante es la información que se puede extraer de una base de datos (véase minería de datos). Así que pongamos mucha atención a este tema; que yo personalmente, no me llevo bien con las consultas.

Veamos el material traducido del PDF:

 Una consulta (o expresión) en un conjunto de relaciones produce una relación como resultado.


Los ejemplos se realizan utilizando una base de datos del sistema de admisión de una universidad. El esquema es el siguiente:

Universidad(uNombre, estado, inscripciones)
Estudiante(eID, eNombre, GPA, tamañoEsc)
Aplica(eID, uNombre, especialidad, decision)

*Puedes pasar el cursor por las cursivas para ver una descripción

martes, enero 17, 2012

Esquema XML - CBDS

Lección anterior: Definición de tipo de documento (DTD), ID & IDREFs - CBDS

Continuamos con XML. En esta ocasión veremos el Esquema XML con el que podemos establecer una especificación para datos XML mucho más específica y, por lo tanto, poderosa. Los documentos de especificación (los esquemas XML) son liosos, así que como la profesora menciona varias veces en el vídeo te recomiendo que lo descargues (al final están los enlaces) y lo analices por ti mismo.

En esta lección tenemos una verdadera prueba y ejercicios. La recomendación de siempre es que traten de completarlos todas las veces que sea necesario hasta que alcancen la puntuación máxima.

Como siempre les dejo el material traducido del PDF:

  • Lenguaje amplio
  • Como los DTDs, podemos especificar elementos, atributos, orden, anidamiento, número de apariciones
  • También tipos de datos, llaves, punteros (tipados) y más
  • XSD se escribe en XML
El vídeo es un "ejemplo sencillo", el lenguaje es muy amplio.

Para validar un archivo XML que usa un XSD (además de tener instalado el programa) se debe navegar a través del terminal a donde se encuentran los archivos y luego escribir este comando:

xmllint --schema NombreDelArchivoXSD --noout NombreDelArchivoXML