miércoles, 27 de octubre de 2010

Cookies

¿Que son las cookies?
Las cookies son un mecanismo para guardar información del usuario en su mismo equipo. Algunos servidores mandan una petición a los navegadores web para que guarden cierta información del usuario en su mismo disco, puede ser de forma temporal en la memoria principal, o permanente en la memoria secundaria en forma de ficheros de texto.

La información almacenada en los ficheros puede ser utilizada por el servidor web de la página cuando el usuario vuelva a acceder a ella, u otras páginas para las que se haya establecido la visibilidad de la cookie.
Las cookies no fueron creadas para invadir la privacidad de los usuarios de Internet, su principal objetivo es poder identificar a los usuarios y una vez que el usuario navegador en una página pro primera vez, las siguientes veces esta página ya este personalizada para el usuario, además libera de sobrecarga al servidor.

Son muy útiles para almacenar información como el numero de visitas, preferencias, estado de conexión y, en general, información que sirva para realzar la navegación del cliente y permita hacer aparentar una navegación continua.

Las cookies como un fichero de texto normal, no puede realizar algún tipo de acción en el equipo del usuario, no puede abrir ficheros del usuario, ejecutar programas, establecer conexiones de red.. etc.


Las cookies están llenas de mitos, muchos usuarios creen que son "malas" que invaden su privacidad sin embargo esto es como lo dije antes solo un mito, sin embargo el usuario puede si asi lo desea configurar su navegador para que no acepte ningún tipo de cookie o para que le pregunte antes de generar cualquier tipo de cookie.




Propósito
Las cookies fueron creadas para dar el servicio de una tienda virtual en el que los usuarios de un sitio web pueden ir escogiendo artículos y agregarlos a un cesta de compra y poder eliminarlos, etc, las cookies hacen que estos movimientos dependan de las acciones del usuario.
Otros sitios web utilizan las cookies identificación en los sitios web, es decir aveces cuando estamos en algún sitio en el que ya estamos registrados es posible que la página ya este lista para nosotros, pero si un usuario accede al sitio sin registrarse va a tener restricciones por que no se ha registrado.
Y otros sitios web utilizan las cookies para establecer el aspecto que más agrade al usuario, sirven para personalizar el sitio web según cada usuario, personalidad incluye la funcionalidad y la presentación.

Ejemplos:

Google
El siguiente texto es un fragmento que obtuve de la página de google "Centro de privacidad":
"Cookies: al acceder a Google, se envían una o varias cookies a su equipo o a otro dispositivo. Las cookies se utilizan para mejorar la calidad del servicio, incluidos el almacenamiento de las preferencias del usuario, la mejora de los resultados de búsqueda y de la selección de anuncios y el seguimiento de las tendencias del usuario como, por ejemplo, el tipo de búsquedas que realiza. Google también utiliza cookies en los servicios publicitarios para que anunciantes y editores puedan ofrecer y administrar anuncios en Internet y en los servicios de Google."

Esto sucede en mi navegador cuando quiero entrar a mi cuenta http://gmail.com:

Youtube

Es probable que ya se hayan dado cuenta que una vez que entramos a ver un vídeo a youtube y luego después volvemos a entrar youtube nos muestra un listado de vídeos sugeridos de acuerdo al ultimo vídeo visto en su página.
En esta imagen trato de mostrar como hago una búsqueda en youtube por videos "ipad"



Después cierro la página, y la vuelvo a abrir la página principal de you tube me hace estas recomendaciones(algunos vídeos de ipad):



Referencias

Laboratorio

martes, 26 de octubre de 2010

Introducción de Lenguaje SQL















SQL es un lenguaje de manipulación y definición de datos para las bases de datos relacionales.
Es de manipulaciónporque se pueden efectuar consultas, y realizar operaciones como borrar, insertar, actualizar los datos que contiene y de definición porque permite definir la estructura de las tablas que componen la base de datos.

SQL tiene sus bases en el lenguaje SEQUEL(Structured English QUEry Language) desarrollado por IBM, un lenguaje para la especificación de bases de datos que tenían el modelo relacional(de lo que hable en mi entrada pasada).En 1979 apareció el primer Sistema de Gestión de Bases de Datos basado en SQL, Oracle, después empezaron a aparecer en el mercado múltiples productos de bases de datos que utilizan el lenguaje SQL: SQL/DS, DB2, SYBASE, INTERBASE, INFORMIX y otros.

Características destacables de SQL:
  • Posee una firme base teórica
  • Lenguaje expresivo
  • Flexible
  • Es posible manejar un conjunto de registros.
  • Cuenta con una estructura simple
  • La calificación tiene alta productividad, es decir con una sola sentencia es posible hacer consultas complejas.

SQL puede usarse de dos maneras:
  • Como un lenguaje de autocontenido, escribiendo directamente las sentencias y obteniendo directamente el resultado.
  • Como lenguaje embebido, en un lenguaje de programación(C, Fortran, Cobol, Basic), así es como SQL se complementa con las capacidades de otros lenguajes de programación.

Sentencias de definición de datos:
Las sentencias SQL de definición permiten crear las bases de datos, tablas, índices, y otros elementos que la componen. Los nombres que podemos utilizar para identificar los elementos pueden ser letras, dígito o signos de subrayado pero siempre comenzando por una letra y no coincidir con ninguna palabra reservada del lenguaje.

Creación de la base de datos:

Para crear la base de datos se utiliza el comando:

CREATE DATABASE nombre_base

nombre_base es el identificador para acceder a la base de datos.

Creación de tablas:

CREATE TABLE nombre_tabla(atributo1 dominio11, atributo2, dominio2..);

atributo se refiere al nombre del atributo, y el dominio es como un tipo de datos, es decir pueden ser números, cadenas de caracteres, fecha, horas, etc.

Modlificación de tablas:

Es posible modificar las tablas con ALTER

Cambio de nombre de la tabla:

ALTER TABLE NOMBRE_TABLA RENAME NOMBRE_NUEVO;

Cambio de nombre de un atributo de la tabla:

ALTER TABLE NOMBRE_TABLA CHANGE ATRIBUTO_VIEJO ATRIBUTO_NUEVO dominio;

Cambio de tipo de dato de un atributo de la tabla:

ALTER TABLE NOMBRE_TABLA CHANGE ATRIBUTO ATRIBUTO nuevo_tipo_dato;

Añadir un nuevo atributo a la tabla:

ALTER TABLE NOMBRE_TABLA ADD ATRIBUTO_NUEVO dominio;

Eliminar un atributo de la tabla:

ALTER TABLE NOMBRE_TABLA DROP ATRIBUTO;

NOTA: En SQL no importan mayúsculas ni minúsculas.


Referencias:

Laboratorio

lunes, 25 de octubre de 2010

Bases de datos

¿Que son las bases de datos?

Las bases de datos permiten guardar mucha información de forma organizada y agrupada, en informática este termino se refiere a un sistema que esta formado por un conjunto de datos guardados, a los que se puede acceder por medio de programas que manejan este conjunto de datos.
Las bases de datos están agrupadas en una o más tablas, las tablas están compuestas de filas y columnas, las columnas contienen una propiedad del elemento guardado y las filas también llamadas registros, contienen la información de un elemento de la tabla.

Sistema de gestión de bases de datos(SGBD)

Sistemas de gestión de bases de datos, son los softwares que sirven de interfaz entre la base de datos, el usuario y las aplicaciones que las utilizan, se componen por un lenguaje de manipulación de datos, de consulta y de creación de definición de datos.

Ventajas de las bases de datos
  • Todos las tablas están integradas por lo que se evita repetir datos y ocupar espacio en la memoria.
  • Cuando se realiza una actualizacion a algún dato, el sistema detecta rápidamente si ese dato esta en otras tablas para así modificarlo automaticamente.
  • Diversos usuarios pueden acceder a la misma base de datos.
  • Se cuenta con lenguajes de consulta que permiten al usuario hacer cualquier tipo de consulta en la base de datos.
  • Independencia de los datos de las aplicaciones que los utilizan, lo que hace más fácil el mantenimiento de aplicaciones.

¿Ficheros de texto como base de datos?

En ocasiones un fichero de texto puede cumplir con la función de base de datos en páginas, en algunos casos el uso de ficheros de texto pueden tener ciertas ventajas:
  • Uso muy sencillo
  • No se necesita conocer los lenguajes de bases de datos.
  • No se ocupa instalar aplicaciones adicionales.
  • Hay proveedores de acceso y alojamiento de páginas web que no permiten alojar paginas con accesos a bases de datos.

Sin embargo usar bases de datos(MYSQL, Acces, etc), ofrece grandes ventajas como almacenar grandes volúmenes de información, la optimización de si gestión, la facilidad para realizar consultas y la exactitud, rapidez y fiabilidad en su administración.

En el desarrollo de aplicaciones web las bases de datos son muy importantes, muchas de las páginas que consultamos son el resultado de consultas de bases de datos, mostrando su carácter dinámico.

Diseño de bases de datos

Modelo relacional
Para la generación de bases de datos se usa comúnmente el "modelo relacional". Este modelo se basa en representar los datos en tablas, las columnas representan los atributos de los datos, los atributos en común de las tablas es lo que permite hacer la relación entre tablas.
Cada una de las filas se suele denominar tupla o registro, y a su vez esta formado por valores cuyo tipo coincide con el correspondiente atributo
Por ejemplo:


en ese ejemplo el atributo en común entre esas dos tablas es el que permite relacionar los clientes con sus cuentas. Además lo más común es que las tablas tengan un atributo o más que identifique de forma única a los registros, a este atributo se le llama clave, en la imagen de tablas anterior lo lógico es que cédula sea la clave, ya que es imposible que dos clientes tengan el mismo numero de cédula.
Cuando se define una base de datos relacional se deben indicar claramente la estructura de la tabla, con los atributos(nombre y tipos), la o las claves, así como restricciones sobre los mismos.

Al crearse alguna base de datos debe tenerse en cuenta que su distribución no es algo trivial, necesita una plantificación muy cuidadosa, existe una teoría que habla sobre el diseño de las bases(Teoría de la normalización) de datos para evitar redundancias e inconsistencias.

Diagramas de entidad-relación
Los diseños de bases de datos pueden apoyarse en diagramas entidad-relación, que ayuda a mostrar de una manera más gráfica las entidades que existen, las relaciones entre ellas, y el tipo de relaciones. Ayudan a identificar las distintas tablas que debe haber en la base de datos.

Existen herramientas que permiten hacer el diagrama entidad-relación y al mismo tiempo generar la base de datos, estas herramientas pertenecen a la categoría CASE(Computer Added Software Engineering).



Productos de Sistemas de gestión de bases de datos en el mercado:

MySql: Base de datos con licencia GPL basada en un servidor. Su característica es la rapidez.
PostgreSql y Oracle: Sistemas de bases de datos poderosos, tiene la capacidad de administrar grandes cantidades de datos.
Access: Fue creado por Microsoft, la base de datos se crea en el programa acces, el cual crea un archivo.mdb con la estructura correspondiente.
Microsoft SQL Server: Base de datos desarrollada por Microsoft, es utilizada para manejar grandes cantidades de datos.


Referencias:
"PHP y MySQL", editorial Díaz de Santos, autores Ángel Cobo, Patricia Gómez, Daniel Pérez y Rocío Rocha.

Laboratorio

domingo, 24 de octubre de 2010

Java Server Pages y Tomcat

Laboratorio

JSP es una tecnología para crear páginas web programadas en java, JSP quiere decir Java Server Pages, Paginas de Servidor Java. Sirve para crear páginas con contenidos dinámico, mostrando en el navegador documentos html o xml comúnmente.
Sun Microsystems fué la compañía que desarrolló esta tecnología. Los JSP's aceptan que se use el código java mediante scripts.
Pueden considerarse como otra forma de escribir servlets(programas que se ejecutan en el navegador), ya que los JSP's pueden hacer lo mismo que los servlets y los servlets lo mismo que los JSP's.
La forma en que funciona esta tecnología es que se interpreta el código en jsp para generar el código java del servlet, este servlet es el que se encarga de generar lo que el usuario verá en la pantalla como lo dije antes xml o html comúnmente.
Se pueden extender las etiquetas de jsp para ello se debe de implementar las Bibliotecas de etiquetas.
Los JSP's generan servlets: un JSP se compila en Java la primera vez que se ejecuta, este código en Java genera una clase que se usa en el servidor como un servlet, la diferencia entre el JSP y un servlet es el enfoque se programación el JSP es una pagina web con etiquetas especiales y código java incrustado mientras que el servlet es un programa que recibe peticiones y puede generar a partir de eso páginas web.

JSP y servlets necesitan un programa que los contenga, y sea el que envie paginas web al servidor, las peticiones, que haga todas las funciones de un servidor, etc. Bueno nosotras ya conocemos el servidor Apache que es para páginas web un poco más estáticas CGI's que se ejecutan en el servidor pero los JSP's y servlets tienen su propio servidor se llama contenedores de servlets el más común es Tomcat.
Funcionamiento de Tomcat:

Instalación y configuración

Para provar nuestras páginas.jsp, hay que tener instalado el servidor Tomcat, el primero paso es :

sudo apt-get install tomcat6

una vez instalado en el terminal aparecerá algo como la siguiente imagen, que nos dice la ubicación de variables de entorno que usaremos más adelante,(yo hice captura de pantalla, porque me pareció importante pero en realidad ningún sitio de Internet te lo dice, solo dicen que hay que agregar esas lineas en un archivo pero no te dicen en realidad la ubicación de las variables).

Una vez instalado Tomcat debemos modificar el archivo ./bashrc, puedes acceder a el con el siguiente comando:

cecy@cecy-desktop:~$ sudo emacs /home/cecy/.bashrc

Ahora agregamos las lineas de las que ya habia hablado al final del archivo:

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
export JDK_HOME=/usr/lib/jvm/java-6-openjdk
export CATALINA_HOME=/usr/share/tomcat6
export CATALINA_BASE=/var/lib/tomcat6

Imagen del archivo:

Ahora hay que ir a la ubicación de nustro programa Tomcat:



Podemos ver en esa imagen que hay algunos archivos con los permisos modificados, esto lo pueden hacer con el comando chmod +x nombrearchivo.
Ahora tecleamos el siguiente comando para correr el script:

cecy@cecy-desktop:/usr/local/tomcat/bin$ ./startup.sh

lo que me da como resultado en la pantalla:


Ahora puedo ver mi servidor funcionando:

Y para cerrar Tomcat se ejecuta e el mismo directorio la siguiente linea:
./shutdown

Probar archivo.jsp

Ahora vamos a ver como funciona el servidor, lo primero que tenemos que saber es en que carpeta hay que ubicar el archivo.jsp, deben de ir en:

cecy@cecy-desktop:/var/lib/tomcat6/webapps/ROOT$


Este es mi archivo hola.jsp


y para verlo en el navegador tecleamos la direccion:
http://localhost:8080/hola.jsp

Espero lean esta entrada, y si tratan de instalar Tomcat y hay alguna duda, comente en el blog :D.

Referencias:

sábado, 23 de octubre de 2010

Python manejo de archivos

Laboratorio

El manejo de archivos era una de las cosas que menos me gustaba a la hora de programar, ya que no entendía bien la manera de trabajarlos, no sabía cuando se estaba leyendo una línea o alguna palabra e ignoraba completamente cuando se tiene que abrir un archivo de lectura, escritura o lectura y escritura.
Antes del proyecto de medio curso(sabía que lo íbamos a utilizar demasiado), estuve practicando con algunos códigos, aunque después mejore parte de ellos, esto es con lo que empecé:

Primero que nada es importante saber que al querer manejar ficheros se debe de tener claro para que se quiere utilizar, para leer datos, escribir en el archivo, leer y escribir, agregar datos, porque hay distintas formas de abrirlo de acuerdo al objetivo "w" abre el archivo para escritura si ya existía un archivo con ese nombre sobreescribe, "r" abre un archivo que tiene que existir para lectura, "a" abre un archivo para lectura y escritura si se quiere escribir los datos se agregan al final del archivo y si no existe el archivo lo crea.

La manera de abrir el fichero es:

f.open("archivo.txt", "a")
f.read() #se imprimen el contenido del archivo
f.write("Holis") #agregamos la palabra Holis
f.close()

Ahora los ejemplos de los que había hablado:

Primero cree una lista en un archivo.txt al que llame lista.txt que es con el que voy a estar trabajando:

Sandra Cecilia,1413021,77,
Gemma Tovanche,1458523,85
RGB,1456984,95,
Jose Miguel,1456325,100,

como vemos tengo varias "categorías" que son nombre, matricula y calificación, en Python es posible separar llamar a cada dato por su categoría usando la función
linea = line.split(','), en la que indico que cada categoría esta separada por comas, el siguiente paso es darlo nombre a las categorías yo lo hice de la siguiente forma:

nombre = linea[0]
matricula = linea[1]
calif = linea[2]

así es como digo que la primer columna es el nombre, la segunda la matricula y la tercera la calificación.
Ya en el código en python al que llame leerlista.py trabaje con estas variables(nombre, matricula, calificación) buscando el nombre de alguien en el archivo, e imprime su calificación:


Este es el resultado en el terminal:



Ahora para eliminar alguna línea del archivo lo que se hace es leer linea por linea y buscar en cada una que no coincida con la linea que se quiere eliminar, y si es así se guarda todo en la variable contenido(que declare previamente como una cadena vacía) y cuando se encuentra la coincidencia la linea no entra al if y no se guarda en contenido es así como se elimina la linea ahora el ultimo paso es sobreescribir en el archivo la variable contenido y la linea se habrá eliminado.

Este es el código:

Y la lista sin la línea indicada:

Y el código para modificar un archivo no es más que la combinación de agregar al archivo y eliminar, este es el código:


Y la ejecución(ahora podemos ver que cambio "Jose Miguel" por "miki"):


Bueno creo que eso es suficiente para tener los conocimientos básicos del manejo de listas, si tienen alguna duda por favor comenten :D

jueves, 21 de octubre de 2010

CGI

Interfaz de entrada común(Common Gateway Interface) es una importante tecnología web que permite crear páginas dinamias, el cliente(navegador web) solicita datos a un servidor web. Es el proceso de interacción entre el servidor web y aplicaciones externas. A las aplicaciones que se ejecutan en el servidor se les llama CGI's.

Esta tecnología fue una de las primeras que permitio el dinamismo de las páginas web, a grandes rasgos lo que hace es, primero el cliente manda una petición al servidor, este servidor ejecuta alguna aplicación externa escrita en cualquier lenguaje que soporte el servidor por lo general son scripts por su portabilidad y genera un contenido que se va a mostrar al cliente en el navegador en vez del documento estático tradicional.

CGI ha hecho posible agregar funcionalidades nuevas alas páginas web motivo por el cual esta tecnología rápidamente se volvió un estándar siendo utilizada en muchos servidores web.

Funcionamiento CGI
  • Primero que nada el servidor recibe una petición del cliente y se verifica si se trata de alguna invocacion a un CGI.
  • Después el servidor se prepara para ejecutar las aplicaron, esta información casi siempre viene del cliente.
  • Después el servidor ejecuta la aplicación dando como resultado una salida estándar.
  • Enseguida la aplicación realiza su función, genera un objeto MIME agregandolo a la salida estándar.
  • Ahora cuando la aplicación termina, el servidor envía la información producida más la propia al cliente que se encontraba en espera.

Programación de un CGI

Estos programas pueden escribirse en diferentes lenguajes que generen un fichero ejecutable, los más comunes son Perl, C, C++ y el que ya conocemos por experiencia propia Python. Como el lenguaje recibe los parámetros en cadenas de texto es conveniente usar un lenguaje que permita realizar manipulaciones a las cadenas de caracteres de manera fácil, por ejemplo Perl y Python.

Tipos comunes de CGI's
  • Correo: Obtiene la información de manera estructurada del cliente.
  • Contador de accesos: Cuenta el numero de veces que se entra a alguna página, este dato es guardado en algún fichero, y cuando se vuelve a acceder a la página aumenta su valor.
  • Buscador: Localiza páginas, usando tablas con palabras especificas, y a su vez las paginas que las contienen
  • Contribuciones: Permite añadir información auna página indicando la procedencia de la adición.
  • Estadísticas de uso: Contiene información de lo ocurrido en el servidor de WWW.
  • Administración remota del servidor: Permite interactuar con el servidor desde WWW.

Leyendo la forma de entrada del usuario
El usuario envía la información a traves de los formularios html, y nuestro script recibe los datos de forma nombre-valor, en donde nombre son los especificados en las etiquetas INPUT y los valores es lo que el usuario haya tecleado o seleccionado.
Este es el formato de la cadena:
nombre1=valor1&nombre2=valor2&nombre3=valor3

Enviar respuesta
Primero escribes la linea Primero, escribe la línea
Content-type: text/html
y ahora si escribes el documento html según el lenguaje que se este utilizando.

Este es un ejemplo simple en Perl(sitio del código):


Aunque es muy simple comparado con lo que ya hicimos en Python muestra como se usa Perl para crear páginas web dinamicas, y tengo algo más que mostrarles muy acorde al tema, es un tutorial que a mi me gusto mucho, y se que a ustedes tambien les va a interesar ya que esta muy relacionado con lo que ya hicimos, pero muestra una aplicacion web muy completa, sencilla y profesional...como hacer un WIKI con Python y la tecnologia CGI, aqui les dejo el PDF que encontré en la web, el link del sitio original de donde lo obtuvé ya no lo tengo pues ya pasaron algunos meses, sin embargo lo subí a google docs para poder compartirlo con ustedes:


Descargar aquí;


Referencias:

Laboratorio

miércoles, 20 de octubre de 2010

CSS

Laboratorio

El CSS "Hojas de estilo en cascada" sirven para determinar la manera en que se va mostrar el texto en la pantalla de algún documento HTML aunque también puede ser XML(la hoja de estilo para xml es xsl), es usada por los desarrolladores para separar el texto del estilo y formato.
La ventaja de utilizar hojas de estilo CSS es que antes para hacer una molificación por muy pequeña que fuera a distintas páginas con el mismo estilo se tenia que abrir todas y modificar en cada una ahora con el CSS es
posible solo hacer el cambio en el archivo.css y así estomáticamente se habrán modificado todos los documentos que hacen referencia a este.
El CSS funciona a base de reglas, que se aplican a los elementos del documento.Las reglas se dividen en selectores y declaraciones, las declaraciones están compuestas en una propiedad y el valor de la propiedad.

Ejemplo:
h2{color:blue;}
donde h2 es el selector y
{color:blue;} es la declaración
color es la propiedad y blue el valor que se le da a la propiedad

Entonces en el ejemplo anterior se esta declarando el estilo para las letras con la etiqueta h2, donde la propiedad que se modifica es el color.
Hay dos distintas formas de agregar CSS al html una de ellas es escribiendo en el documento.html dentro de la etiqueta head la siguiente línea:
<link rel="stylesheet" type="text/css" href="http://www.w3.org/css/officeFloats.css" />
y la otra forma es también dentro de head escribir el elemento style y dentro de ahí el CSS.
En lo personal prefiero la primera forma ya que el código se puede ver mas limpiamente.

Cosas básicas
Si hay algunos elementos a los que se desea poner una propiedad igual se pueden agrupar de la siguiente forma:

h1, h2, h3{
color:blue;
}

que es lo mismo a que se escriban todos por separados, también podemos modificar varias propiedades de un elemento agrupando las propiedades se deben de separar con ";" y el valor de las propiedades se escribe después de ":", si el valor tiene más de una palabra se debe escribir entre comillas.

Ejemplo:

h1 {
padding-left: 11em;
font-family: Georgia, "Times New Roman",Times, serif;
color: red;
background-color: #d8da3d;
}

En este ejemplo cada propiedad esta en lineas distintas esto no tiene que ser así siempre, puede ir una propiedad seguida de la otra sin embargo es una buena práctica escribirlo de ese modo ya que es mucho más agradable verlo así.

Son muchas las propiedades que les podemos cambiar a los distintos elementos, encontré en internet una pagina que nos muestra las maravillas que se pueden hacer con el CSS, la pagina tiene en su lado derecho un menú en el cual podemos elegir diferentes hojas de estilo para la el documento html, además tiene una opción de poder descargar el código CSS y poder ver como se manejan los elementos que componen el CSS.
Esta es la página:
http://www.csszengarden.com/tr/espanol/

Existe un validador http://jigsaw.w3.org/css-validator/ que sirve para detectar los errores que tenemos en las páginas web, puede ser muy útil para encontrar errores en nuestras páginas web los que apenas estamos aprendiendo.

Y por último les dejo este gif que me muestra como el CSS cambia por completo la visualizacion de un html, añadiendo estilos a los elementos del mismo.



Referencias