domingo, 21 de noviembre de 2010

LABORATORIO DE PROGRAMACIÓN WEB

Direcciones ipv4 e ipv6.




Hola soy Carlos Triana, esta entrada trata sobre las direcciones ip.

Una dirección IP es una etiqueta numérica que identifica, de manera lógica y jerárquica, a una interfaz de un dispositivo o elemento de red dentro de una red que utilice el protocolo ip , que corresponde al nivel de red del protocolo TCP/IP


Las direcciones ip, muy frecuentemente se confunden con la dirección MAC que es un número hexadecimal fijo que es asignado a la tarjeta o dispositivo de red por el fabricante.

La diferencia principal entre las direcciones ip y las direccione MAC, es que las ip solo trabajan en la capa 3 del modelo OSI (Capa de red) y las direcciones MAC solo trabajan en la capa 2 del modelo OSI (Capa de enlace de datos), otra diferencia entre las 2 direcciones es que las direcciones MAC no pueden cambiarse, ya que vienen establecidas por el fabricante, mientras que las direcciones ip, si pueden cambiarse, un ejemplo muy claro es cuando la Dra. Schaeffer nos decía que cada que agarraramos una memoria con ubuntu instalado, siempre debiamos desconectar el cable ethernet, luego cambiar la ip a la de nuestra respectiva máquina, y al final conectar el cable ethernet.


Direcciones ipv4

Las direcciones IPv4 se expresan por un número binario de 32 bits permitiendo un espacio de direcciones de 4.294.967.296 (232) direcciones posibles. Las direcciones IP se pueden expresar como números de notación decimal: se dividen los 32 bits de la dirección en cuatro octetos. El valor decimal de cada octeto está comprendido en el rango de 0 a 255 [el número binario de 8 bits más alto es 11111111 y esos bits, de derecha a izquierda, tienen valores decimales de 1, 2, 4, 8, 16, 32, 64 y 128, lo que suma 255].

En la expresión de direcciones IPv4 en decimal se separa cada octeto por un carácter único ".". Cada uno de estos octetos puede estar comprendido entre 0 y 255, salvo algunas excepciones. Los ceros iniciales, si los hubiera, se pueden obviar (010.128.001.255 sería 10.128.1.255).


En las primeras etapas del desarrollo del Protocolo de Internet, los administradores de Internet interpretaban las direcciones IP en dos partes, los primeros 8 bits para designar la dirección de red y el resto para individualizar la computadora dentro de la red. Este método pronto probó ser inadecuado, cuando se comenzaron a agregar nuevas redes a las ya asignadas. En 1981 el direccionamiento internet fue revisado y se introdujo la arquitectura de clases (classful network architecture). En esta arquitectura hay tres clases de direcciones IP que una organización puede recibir de parte de la Internet Corporation for Assigned Names and Numbers (ICANN): clase A, clase B y clase C.

  • En una red de clase A, se asigna el primer octeto para identificar la red, reservando los tres últimos octetos (24 bits) para que sean asignados a los hosts, de modo que la cantidad máxima de hosts es 224 - 2 (se excluyen la dirección reservada para broadcast (últimos octetos en 255) y de red (últimos octetos en 0)), es decir, 16 777 214 hosts.
  • En una red de clase B, se asignan los dos primeros octetos para identificar la red, reservando los dos octetos finales (16 bits) para que sean asignados a los hosts, de modo que la cantidad máxima de hosts es 216 - 2, o 65 534 hosts.
  • En una red de clase C, se asignan los tres primeros octetos para identificar la red, reservando el octeto final (8 bits) para que sea asignado a los hosts, de modo que la cantidad máxima de hosts es 28 - 2, ó 254 hosts.

Direcciones ip privadas.

Hay ciertas direcciones en cada clase de dirección IP que no están asignadas y que se denominan direcciones privadas. Las direcciones privadas pueden ser utilizadas por los hosts que usan traducción de dirección de red (NAT) para conectarse a una red pública o por los hosts que no se conectan a Internet. En una misma red no puede existir dos direcciones iguales, pero sí se pueden repetir en dos redes privadas que no tengan conexión entre sí o que se conecten a través del protocolo NAT. Las direcciones privadas son:

  • Clase A: 10.0.0.0 a 10.255.255.255 (8 bits red, 24 bits hosts). 1 red clase A, uso VIP, ej.: la red militar estadounidense.
  • Clase B: 172.16.0.0 a 172.31.255.255 (12 bits red, 20 bits hosts). 16 redes clase B contiguas, uso en universidades y grandes compañías.
  • Clase C: 192.168.0.0 a 192.168.255.255 (16 bits red, 16 bits hosts). 256 redes clase C contiguas, uso de compañías medias y pequeñas además de pequeños proveedores de internet (ISP).


Muchas aplicaciones requieren conectividad dentro de una sola red, y no necesitan conectividad externa. En las redes de gran tamaño a menudo se usa TCP/IP. Por ejemplo, los bancos pueden utilizar TCP/IP para conectar los cajeros automáticos que no se conectan a la red pública, de manera que las direcciones privadas son ideales para estas circunstancias. Las direcciones privadas también se pueden utilizar en una red en la que no hay suficientes direcciones públicas disponibles.

Las direcciones privadas se pueden utilizar junto con un servidor de traducción de direcciones de red (NAT) para suministrar conectividad a todos los hosts de una red que tiene relativamente pocas direcciones públicas disponibles. Según lo acordado, cualquier tráfico que posea una dirección destino dentro de uno de los intervalos de direcciones privadas no se enrutará a través de Internet.


Máscara de subred.


La máscara permite distinguir los bits que identifican la red y los que identifican el host de una dirección IP. Dada la dirección de clase A 10.2.1.2 sabemos que pertenece a la red 10.0.0.0 y el host al que se refiere es el 2.1.2 dentro de la misma. La máscara se forma poniendo a 1 los bits que identifican la red y a 0 los bits que identifican el host. De esta forma una dirección de clase A tendrá como máscara 255.0.0.0, una de clase B 255.255.0.0 y una de clase C 255.255.255.0. Los dispositivos de red realizan un AND entre la dirección IP y la máscara para obtener la dirección de red a la que pertenece el host identificado por la dirección IP dada. Por ejemplo un router necesita saber cuál es la red a la que pertenece la dirección IP del datagrama destino para poder consultar la tabla de encaminamiento y poder enviar el datagrama por la interfaz de salida. Para esto se necesita tener cables directos.


Ip Dinámica.


Una dirección IP dinámica es una IP asignada mediante un servidor DHCP (Dynamic Host Configuration Protocol) al usuario. La IP que se obtiene tiene una duración máxima determinada. El servidor DHCP provee parámetros de configuración específicos para cada cliente que desee participar en la red ip. Entre estos parámetros se encuentra la dirección IP del cliente.

Las IP dinámicas son las que actualmente ofrecen la mayoría de operadores. Éstas suelen cambiar cada vez que el usuario reconecta por cualquier causa.

Ventajas

  • Reduce los costos de operación a los proveedores de servicios de Internet (ISP), por ejemplo Telmex.
  • Reduce la cantidad de IP asignadas (de forma fija) inactivas.

Desventajas

  • Obliga a depender de servicios que redirigen un host a una IP.

Ip fija.

Una dirección IP fija es una IP asignada por el usuario de manera manual. Mucha gente confunde Ip fija con Ip Pública e Ip dinámica con Ip privada.

Una IP puede ser Privada ya sea dinámica o fija como puede ser IP Pública Dinámica o Fija.

Una IP Pública se utiliza generalmente para montar servidores en internet y necesariamente se desea que la IP no cambie por eso siempre la IP Pública se la configura de manera Fija y no Dinámica, aunque si se podría.

En el caso de la IP Privada generalmente es dinámica asignada por un servidor DHCP, pero en algunos casos se configura IP Privada Fija para poder controlar el acceso a internet o a la red local, otorgando ciertos privilegios dependiendo del número de IP que tenemos, si esta cambiara (fuera Tema3dinámica) seria más complicado controlar estos privilegios (pero no imposible).

Las IP Públicas fijas actualmente en el mercado de acceso a Internet tienen un costo adicional mensual. Estas IP son asignadas por el usuario después de haber recibido la información del proveedor o bien asignadas por el proveedor en el momento de la primera conexión.

Esto permite al usuario montar servidores web, correo, FTP, etc. y dirigir un nombre de dominio a esta IP sin tener que mantener actualizado el servidor DNS cada vez que cambie la IP como ocurre con las IP Públicas dinámicas.

Las direcciones IP son un número único e irrepetible con el cual se identifica una computadora conectada a una red que corre el protocolo IP.


Ventajas

  • Es más fácil asignar el dominio para un site.

Desventajas

  • Son más vulnerables a ataques, puesto que el usuario está siempre conectado en la misma IP y es posible que se preparen ataques con más tiempo (mediante la detección de vulnerabilidades de los sistemas operativos o aplicaciones.
  • Es más caro para los ISP puesto que esa IP puede no estar usándose las 24 horas del día.

Mis principales razones de mostrarles esta información son las siguientes:

1- Cuando la Dra. Elisa nos mostró la aplicación que ella hizo del chat, intentamos ejecutarla un amigo y yo en nuestras casas, pero no funcionó, esta información explica la razón de que no haya funcionado, la ip que nos asigna nuestro ISP (en nuestro caso Telmex) es una ip pública, más no es fija, es dinámica, por lo tanto la ip que se obtiene una dirección máxima determinada, y por eso el programa del Chat no nos dejaba realizar la conexión, necesitariamos una ip pública y fija para que funcionara.

En la escuela si funcionaba, porque la ip que teniamos era privada y fija.

2- Me pareció interesante lo que vi en internet. Las ip v4 se están acabando, en internet, y conferencias impartidas por Cisco Systems, estiman que las direcciones ip estarán agotadas para el año 2011, esa es una fecha muy cercana, la solución a ese problemas son las direcciones ipv6, las ipv6 actualmente se usan en algunos equipos de red, pero no están totalmente implementadas, solo es cuestión de tiempo, en lo que se terminan las ipv4.

Para eso aquí les dejo una información de las ipv6:

Direcciones ip Versión 6.

La función de la dirección IPv6 es exactamente la misma a su predecesor IPv4, pero dentro del protocolo ipv6. Está compuesta por 128 bits y se expresa en una notación hexadecimal de 32 dígitos. IPv6 permite actualmente que cada persona en la tierra tenga asignada varios millones de IPs, ya que puede implementarse con 2128 (3.4×1038 hosts direccionables). La ventaja con respecto a la dirección IPv4 es obvia en cuanto a su capacidad de direccionamiento.

Su representación suele ser hexadecimal y para la separación de cada par de octetos se emplea el símbolo ":". Un bloque abarca desde 0000 hasta FFFF. Algunas reglas de notación acerca de la representación de direcciones IPv6 son:

  • Los ceros iniciales, como en IPv4, se pueden obviar.

Ejemplo: 2001:0123:0004:00ab:0cde:3403:0001:0063 -> 2001:123:4:ab:cde:3403:1:63

  • Los bloques contiguos de ceros se pueden comprimir empleando "::". Esta operación sólo se puede hacer una vez.

Ejemplo: 2001:0:0:0:0:0:0:4 -> 2001::4.

Ejemplo no válido: 2001:0:0:0:2:0:0:1 -> 2001::2::1 (debería ser 2001::2:0:0:1 ó 2001:0:0:0:2::1).

LABORATORIO DE PROGRAMACIÓN WEB

Servidor Apache.

Hola soy Carlos Triana, en esta entrada vamos a ver como instalar nuestro propio servidor Apache.

Vamos a comenzar abriendo la terminaly escribimos lo siguiente:

sudo apt-get install apache










Después de escribir las líneas que mencione anteriormente, salió el siguiente mensaje: "El paquete apache no está disponible, pero algún otro paquete hace referencia a él" y lo demás dice que el paquete podría ser obsoleto, así que probaremos con apache 2.

Ahora escribiremos el siguiente comando:

sudo apt-get install apache 2

Nos sale un mensaje como el siguiente, donde nos dice el espacio que ocupará en nuestro disco duro apache y nos pregunta si queremos continuar con el proceso, para eso tecleamos la letra S y damos enter.














Después de dar enter, la terminal mostrará muchos mensajes donde se están descargando los paquetes de apache2 y también de la instalación, verán una imagen como la siguiente:






















Para comprobar que apache 2 se ha instalado correctamente, tecleamos el siguiente comando: ls/etc/init.d/apache2. Si se instaló correctamente nos saldrá una imagen como la siguiente:










Para arrancar el apache solo tenemos que teclear el siguiente comando,
sudo /etc/init.d/apache2 start, y nos saldrá una imagen así:




Donde nos dice que el servidor apache 2 está usando la ip por default que siempre usa, que es la 127.0.0.1






Para parar el apache solo tenemos que teclear el siguiente comando,
sudo /etc/init.d/apache2 stop, nos saldrá una imagen como la siguiente:











Si lo que queremos es reiniciar apache, tecleamos la siguiente línea,
sudo /etc/init.d/apache2 restart, nos saldrá una imagen parecida a la siguiente:










Para saber si nuestro apache está iniciado, podemos verlo, compropbando los procesos que se están ejecutando , para ello usamos "ps-ef|grep apache", nos saldrá una imagen parecida a la siguiente:










Ahora comprobaremos si nuestro servidor apache funciona, para eso abriremos nuestro navegador web, en mi caso abriré Mozilla Firefox, y tecleamos la siguiente dirección en la barra, http://localhost/, nos saldrá un mensaje como el que se ve en el imagen:









Para ver las imágenes más grandes, hacer click sobre ellas.

Bueno eso es todo, espero les haya gustado mi trabajo.

Cualquier corrección la pueden dejar en los comentarios.
LABORATORIO DE PROGRAMACIÓN WEB

Continuación de MySQL.

Hola, que tal, esta entrada trata sobre la configuración de MySQL.



Después de instalado MySQL, se te pedirá crear la contraseña del administrador.

En versiones antiguas el root o administrador no se crea con la instalación. Debemos crearla manualmente después de instalar el servidor. Para hacerlo debes teclear en un terminal lo siguiente:






$ sudo /usr/bin/mysqladmin -u root password clavenueva

donde obviamente en la parte de "clavenueva" pondrán la clave que ustedes quieran.

Una vez asignada una clave al administrador, puedes conectarte con el servidor My SQL de la siguiente manera:

$ mysql -h localhost -u root -p

Donde "localhost" es la dirección del host y "root" el nombre de usuario.

A continuación debes introducir el password de la base de datos.

Después de introducir el password, nos aparece un mensaje o un banner de bienvenida de MySQL, el cual indica que el prompt (línea de comandos) de MySQL esta listo para recibir comandos.

Si queremos desconectarnos, basta con teclear QUIT.

CONEXIÓN DESDE UN HOST REMOTO.

Por defecto, MySQL no permite que cualquier usuario pueda acceder a las bases de ddatos usando una conexión TCP, para que lo permita debemos crear un usuario con los permisos correspondientes.

Para eso necesitamos editar el fichero /etc/mysql/my.cnf, modificando la línea:

bind-address = 127.0.0.1 (que viene por default)

Cambiándola por la dirección ip del servidor, de la siguiente manera:

bind-address = 1.1.1.1 (La ip que tengas asignada en el servidor)

Después debemos reiniciar el servicio con los siguientes comandos:

shell> cd etc/init.d
shell>./mysql restart

Hasta este punto, ya puedes conectarte al servidor desde un ordenador remoto, si aun no lo consigues, edita el fichero /etc/hosts.allow, añadiendo la siguiente línea:

mysqld: all

Esto va hacer que permita entrar a cualquier host, lo cual no es muy conveniente para cuestiones de seguridad.

GESTIÓN DE USUARIOS

Para crear usarios tendremos que conectarnos al servidor MySQL como ya lo indiqué anteriormente , con un usuario que tenga el permiso global CREATE USER o el permiso INSERT para la base de datos mysql. La sintaxis es la siguiente:

CREATE USER usuario IDENTIFIED BY 'password';

Para eliminar usuarios, el usuario que usemos en la conexión debe tener el permiso global CREATE USER o el permiso DELETE para la base de datos mysql. La sintaxis para eliminar usuarios es la siguiente:

DROP USER usuario;

//Donde la palabra usuario la remplazamos por el nombre del usuario que queremos eliminar, eso igual para crear usuarios.

Dar permisos a un usuario.

Los permisos pueden darse en varios niveles, que son los siguientes:

-Nivel global
-Nivel de base de datos.
-Nivel de tabla

Por ejemplo para dar permiso SELECT al usuario alumno sería así:

GRANT SELECT ON *.* TO alumno;

GESTIÓN DE LAS BASES DE DATOS.

Crear una base de datos.

Paras crear una base de datos nueva, teclear los siguientes comandos:

$ mysql -h servidor -u usuario -p

//Con eso solo nos conectamos al servidor, como ya sabemos, nos pedirá el password, después de teclear el password, introducimos el comando que creará nuestra nueva base de datos, es el siguiente:

mysql> CREATE DATABASE nombreDeLaBaseDeDatos;

Donde en nombreDeLaBaseDeDatos podemos poner el que queramos.

Para eliminar el nombre de la base de datos, entramos a MySQL como ya sabemos, y tecleamos el siguiente comando:

mysql> DROP DATABASE nombreDeLaBaseDeDatos;

//por ejemplo si queremos eliminar la base de datos "alumnos", tecleamos:

mysql> DROP DATABASE alumnos;

RESETEAR LA CONTRASEÑA DE ROOT DEL SERVIDOR.


Algo muy común con las cuentas de root, o cualquier cuenta de usuario, es que olvides la contraseña, para eso, podemos resetar la contraseña.

Para resetearla, se puede hacer lo siguiente:

$ /etc/init.d/mysql stop
$ mysqld_safe --skip-grant-tables &
$ mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('nueva_contraseña') WHERE User='root';
mysql>FLUSH PRIVILEGES;
mysql> \q
$ killall mysqld;
$ /etc/init.d/mysql start

Donde en 'nueva_contraseña' obveiamente pondremos la contraseña que queramos.

Bueno, eso es todo en esta entrada, espero les haya gustado.

Cualquier corrección, pueden ponerla en los comentarios.

LABORATORIO DE PROGRAMACIÓN WEB

Base de datos. MySQL.

Que tal, esta entrada trata de este sistema de gestión de datos que se llama MySQL.

MySQL es un gestor de base de datos sencillo de usar y muy rápido.

También es uno de los motores de base de datos más usados en internet, la principal razón de esto es porque es gratis para aplicaciones no comerciales.















Las características principales de MySQL son:

-Es un gestor de base de datos.

Una base de datos es un conjunto de datos y un gestor de base de datos es una aplicación capaz de manejar este conjunto de datos de manera eficiente y cómoda.

-Es una base de datos relacional.

Una base de datos relacional es un conjunto de datos que están almacenados en tablas entre las cuales se establecen unas relaciones para manejar los datos de una forma eficiente y segura. Para usar y gestionar una base de datos relacional se usa el lenguaje estándar de programación SQL.

-Es Open Source.

El código fuente de MySQL se puede descargar y está accesible a cualquiera, usa la licencia GPL para aplicaciones no comerciales.

-Es una base de datos muy rápida.
Segura y fácil de usar. Gracias a la colaboración de muchos usuarios, la base de datos se ha ido mejorando optimizándose en velocidad. Por eso es una de las bases de datos más usadas en internet.

-Existe una gran cantidad de software que la usa.

Instalación de MySQL en Ubuntu.


Para instalar MySQL en nuestro ubuntu, se deben instalar los siguientes paquetes: mysql-server y mysql-client. Existe un entorno gráfico del programa llamado mysql administrator, dependiente de los anteriores paquetes. Y opcionalemente el paquete mysql-query-browser, que servirá para realizar consultas.

Bueno, esto es solo una introducción a MySQL, así como los comandos para su instalación.

Cualquier corrección la pueden dejar en los comentarios

martes, 9 de noviembre de 2010

LABORATORIO DE PROGRAMACIÓN WEB

Python y librería Pygame.
Hola, soy Carlos Triana, esta entrada trata de cómo crear una ventana, y asignarle a la misma una imagen de fondo en python, todo esto con la ayuda de la librera Pygame.



Pygame es un conjunto de módulos del lenguaje Python que permiten la creación de videojuegos en dos dimensiones de una manera sencilla.
Para hacer importar Pygame, es necesario descargarlo, yo usé sudo apt-get install en ubuntu, y me dio opciones para instalarlo.
El siguiente es el código del programa:





















Bueno esta parte del código solo trata de cómo crear nuestra ventana.


Las primeras líneas, como lo menciono en los comentarios del programa, solo son para importar la librería Pygame.


Despúes definí 2 constantes, que son width y height, que las usaré para darle las medidas a la ventana que crearemos.


Luego viene la función principal del programa, la primera linea de nuestra función asigna a la ventana las medidas que definí como constantes, que son 640 x 480, la segunda linea de la función principal asigné un nombre a nuestra ventana, la nombré "Ventana en Pygame".


Las siguientes 5 líneas de la función principal, entran en un ciclo que dice que mientras al programa no se le de cerrar, segirá ejecutandose, si no agregaramos esas líneas a nuestro progama, al darle click en cerrar, no se cerraría, se tendría que parar al programa desde la terminal y no desde la ventana en Pygame que hemos creado.


La línea 18 del programa, comprueba que el programa se esté ejecutando como principal (def main ), si comprueba que el programa se está ejecutando como principal, ejecuta las líneas 19 y 20 (la funcion main, en caso contrario no la ejecuta).

La línea 19 del programa inicializa la librería Pygame, y la siguiente la función main.


La línea final es solo para que no se cierre la ventana de nuestro programa al instante (no confundir la ventana del programa con la ventana que creamos de Pygame), lo que hace es que espera una entrada por teclado.


El siguiente código es para agregar a la ventana ya creada una imagen de fondo.


En el código incluí comentarios para las lineas nuevas, que solo es una función, que carga la imagen que va ir de fondo a la función le puse el nombre de "carga_imagen".
Las primeras lineas de esa función, hacen que si tiene parte transparente la imagen, la tome como tal.
Luego asigné a la variable image la imagen a través de la función "pygame.image.load()", en caso de que no se pueda asignar,las 2 líneas siguientes manejan el error, y sale del programa.
Las siguientes líneas de la función, entran en una condicional que controlan el parámetro transparent, si es verdadero, ejecuta las siguientes 2 líneas , la primera obtiene el color del pixel (0,0) de la imagen y la segunda lo define como color transparente de la imagen.
La última línea de la función retorna la imagen.
Para cargar la imagen puse la línea 22, se tiene que agregar la ruta de la imagen que quieres como fondo, en mi caso, el programa esta junto con una carpeta que se llama images, y mi imagen se llama num1,jpg, en caso de que quieran poner otra imagen, solo pongan la ruta y el nombre de la imagen que quieran (no se olviden de poner la extensión de la imagen).
Por último para imprimir la imagen en la ventana que creamos, pusé la instrucción "pygame.display.flip()", estas 2 últimas líneas van en el bucle for principal.
Bueno eso es todo, espero les sirva, y les haya gustado.
Cualquier duda o corrección la pueden poner en los comentarios.

sábado, 6 de noviembre de 2010

LABORATORIO DE PROGRAMACIÓN WEB

10 Reglas heurísticas de usabilidad.

Aprovechando de lo que vimos esta semana en clase de programación web, quise subir esta entrada que trata de 10 reglas de usabilidad que nos pueden ayudar a la hora de hacer un diseño de una aplicación web, o culquier otra aplicación.

El objetivo de estas reglas de usabilidad, es facilitar el trabajo a los usuarios quienes usarán las aplicaciones creadas por nosotros.

El creador de estas 10 reglas de usabilidad es Jakob Nielsen, gurú de la usabilidad.

Las 10 reglas de usabilidad son las siguientes:

1.Visibilidad del estado del sistema.
El sistemas debe siempre mantener a los usuarios informados del estado del sistema, con una realimentación apropiada y en un tiempo razonable.

2.Utilizar el lenguaje de los usuarios.
El sistema debe hablar el lenguaje de los usuarios, con las palabras, las frases y los conceptos familiares, en lugar de que los términos estén orientados al sistema. Utilizar convenciones del mundo real, haciendo que la información aparezca en un orden natural y lógico.

3.Control y libertad para el usuario.
Los usuarios eligen a veces funciones del sistema por error y necesitan a menudo una salida de emergencia claramente marcada, esto es, salir del estado indeseado sin tener que pasar por un diálogo extendido. Es importante disponer de deshacer y rehacer.

4.Consistencia y estándares.
Los usuarios no deben tener que preguntarse si las diversas palabras, situaciones o acciones significan la misma cosa. En general siga las normas y convenciones de la plataforma sobre la que está implementando el sistema.

5.Prevención de errores.
Incluso mejor que buenos mensajes de error es un diseño cuidado que impide que un problema se produzca en el primer lugar. Cualquiera de eliminar las condiciones propensas a errores o detectar los usuarios actuales y con una opción de confirmación antes de comprometerse a la acción.
Es decir, prevenir la aparición de errores, mejor que generar buenos mensajes de error.

6.Minimizar la carga de la memoria del usuario.
El usuario no debería tener que recordar la información de una parte del diálogo a la otra. Es mejor mantener objetos, acciones y las opciones visibles que memorizar.

7.Flexibilidad y eficiencia de uso.
Las instrucciones para el uso del sistema deben ser visibles o fácilmente accesibles siempre que se necesiten. Los aceleradores no vistos por el usuario principiante, mejoran la interacción para el usuario experto de tal manera que el sistema puede servir para usuarios inexpertos y también para usuarios experimentados. Es importante que el sistema permita personalizar acciones frecuentes.

8.Los dialogos estéticos y diseño minimalista.
No deben contener la información que sea inaplicable o se necesite raramente. Cada unidad adicional de la información en un diálogo compite con las unidades relevantes de la información y disminuye su visibilidad relativa.

9.Ayudar a los usuarios a reconocer, diagnosticar y recuperarse de los errores.
Los mensajes de error se deben explicar en un lenguaje claro, se debe indicar exactamente el problema, y deben ser xonstructivos.

10.Ayuda y documentación.
Aunque es mejor si el sistema se puede usar sin documentación, puede ser necesario disponer de ayuda y documentación. Ésta tiene que ser fácil de buscar, centrada en las tareas del usuario, tener información de las etapas a realizar y que no sea muy extensa.

martes, 2 de noviembre de 2010

LABORATORIO DE PROGRAMACIÓN WEB

Generando tablas de manera interactiva.

Hola, soy Carlos Triana, el siguiente es un programa que hice en Javascript para
generar una tabla de manera interactiva (es el objetivo de Javascript), el programa primero te pide ingresar el número de filas que quieres que contenga tu tabla, luego te pide el número de columnas, puse a cada celda un color distinto de otro, como simulando un tablero de ajedrez, con los colores rojo y negro.
Después de hacer esas preguntas, genera la tabla con las características antes mencionadas, en una página Html.
A continuación les dejo el código de mi programa y algunas imágenes de su ejecución:
Parte 1 del código. (Hacer click en la imagen para verla más grande)



























Explicación de la primera parte del código.

Para generar la tabla interactiva, puse 2 entradas por teclado, preguntando por el número de filas y el número de columnas que tendría la tabla, y asigné los valores ingresados a las variables M y N respectivamente.
Primero escribí la etiqueta inicial para crear una table, además de sus respectivas características
(border="0", para que no tenga borde, cellspacing = "0" para que el espacio entre las celdas lo determine el texto que voy a introducir y cellpading="20", para que aparte del espacio del texto, se pase un espacio extra entre cada celda).

Dividí el código en 2 partes, la primera parte, es para cuando el número de columnas es un número par.
Y el segundo, es para cuando el número de columnas es impar.


Cuando el número de columnas es par (if N%2==0) imprimo en la página una etiqueta para la creación de fila, esto es dentro de un for que imprimira M(número de filas) veces de filas.
Dentro de ese mismo for hay otro ciclo for anidado que es el que controla las columnas, y va imprimiendo las celdas de 2 en 2, por eso pongo que i debe ser menor a N/2, si no lo pusier entre 2, se imprimiria el doble de columnas.

Parte 2 del código (Hacer click en la imagen para verla más grande).

























Explicación de la segunda parte del código.
Cuando el número de columnas es impar, ya no imprimo las celdas de 2 en 2, porque de esta manera siempre quedaría la tabla con el número de columnas N+1.
Por eso ahora imprimo las celdas de 1 en 1, y tambien ya no divido entre 2 el número de columnas, por esa misma razon. Si lo siguiera dividiendo entre 2 ahora me saldría la tabla con la mitad de columnas.
Al final cierro la etiqueta de creación de fila y la de creación de tabla , después de cerrar la etiqueta table, viene un cierre de center eso es porque yo quise centrar la tabla que fue creada.

Antes de la tabla también puse un texto que dice :"Haciendo tablas de manera interactiva".

Si alguien quiere probar el programa, lo más seguro es que su navegador les va a poner una leyenda arriba de la página que avisa sobre la protección de Internet Explorer (en mi caso), para impedir que la página ejecute scripts.

Para poder ejecutar el script que va a generar la tabla, solo hagan click sobre la leyenda antes mencionada y después eligan la opción "Permitir contenido bloqueado..."

Estas son las imágenes del script en ejecución y de la tabla generada:

Ingreso del número de filas.

















Ingreso del número de columnas.















Tabla generada con las características asignadas.






























Esto es todo lo que hace mi código en Javascript...espero se haya entendido mi explicación y les haya gustado mi trabajo.

Cualquier duda o corrección, pueden dejarla en los comentarios.