lunes, 22 de noviembre de 2010

LABORATORIO DE PROGRAMACIÓN WEB

Velocidades de banda ancha en el mundo.

Bueno, después de la entrada anterior que comenté que en México el ancho de banda es muy bajo, me dio curiosidad y busqué las velocidades de ancho de banda en el mundo, me encontré con la siguiente imágen, que es una gráfica en la cual se muestra el promedio de la velocidad de ancho de banda en distintos países del planeta.

(Para ver la imagen más grande, hacer click sobre ella)


Como se puede apreciar en la gráfica, Japón es el país que ostenta el record de velocidad de conexión a internet. Pero no se trata de un record obtenido en laboratorio, al que el usuario común no puede acceder. Todo lo contrario. Un estudio realizado recientemente muestra que el promedio de la velocidad de conexión de los usuarios hogareños de internet de ese país es de 61 Mbps.

El servicio de internet en Japón es, en promedio, de 8 a 31 veces más rápido que en Estados Unidos. Y además, es notoriamente más barato. A pesar de esta diferencia de velocidad, Japón apuesta fuerte a internet, y ya está pensando en una red de alta velocidad que la reemplace dentro de pocos años. Se podría decir que los norteamericanos inventaron la red, pero son los japoneses quienes más la disfrutan.

El ranking recientemente elaborado muestra que Corea Del Sur sigue de cerca a Japón, con un promedio nada despreciable de más de 45 Mbps. Corea está apostando fuerte a las nuevas tecnologías.

Finlandia, Suecia y Francia son los países que siguen en la lista, con velocidades de conexión de entre 15 y 20 Mbps. Estados Unidos, contra lo que la intuición puede sugerir, está en el lugar número 10, detrás de países como Holanda, Canadá, Alemania o Portugal. El usuario promedio de EE.UU. accede a la red a una velocidad promedio de 4.8 Mbps.

Los países como México, España o Argentina vienen bastante detrás, con velocidades promedio que no superan el Mbps, y con costos de conexión muy superiores a los primeros países de la lista.

La causa de que Japón, Corea del Sur, y buena parte de Europa alcancen semejantes velocidades de conexión es, entre otras, la apertura a las nuevas tecnologías. El hecho de que el publico reclame (y las empresas estén dispuestas a ofrecer) cada vez más servicios mediante internet es un factor determinante. Por ejemplo, en Japón cualquier usuario puede disfrutar de televisión de alta definición a pantalla completa, que llega a su hogar mediante la conexión de internet, mientras que sus pares de EE.UU. deben contentarse con menor definición e imágenes de un cuarto de ese tamaño.

El disponer de conexiones de buena velocidad permites aplicaciones que hoy parecen muy lejanas para muchos países. La teleconferencia, telemedicina, TV de alta definición y el alquiler de películas mediante internet solo son posibles si las conexiones de banda ancha son veloces y de calidad.


Esto es todo en esta entrada, espero les haya gustado y cualquier duda o corrección pueden ponerla en los comentarios.

Saludos!


domingo, 21 de noviembre de 2010

LABORATORIO DE PROGRAMACIÓN WEB

Comunicaciones Unificadas de Cisco.



Las comunicaciones unificadas de cisco ayudan a las personas a comunicarse en tiempo real y a colaborar para crear un valor comercial tangible.

Las Comunicaciones Unificadas de Cisco utilizan la red como plataforma de colaboración. Las aplicaciones pueden implementarse de manera flexible en las instalaciones, a demanda y en modelos de implementación mixtos. La colaboración entre empresas y dentro de una misma empresa se facilita por medio de una amplia gama de soluciones líderes en el mercado:

  • Conferencias: Ofrezca a sus trabajadores y profesionales experiencias de conferencia contundentes, productivas y económicas mediante herramientas de conferencias de voz, vídeo y en línea de calidad.
  • Atención al Cliente: Acérquese a sus clientes, mientras aumenta su nivel de satisfacción y su lealtad. Conecte a las personas de manera activa con la información, la experiencia y el apoyo que necesitan.
  • Comunicaciones IP: Mejore la productividad de sus empleados y profesionales llevando servicios de comunicaciones uniformes a los empleados de todos los espacios de trabajo por medio de un paquete completo de soluciones de comunicaciones IP y puntos terminales.
  • Mensajes: Comuníquese con eficacia y con un mayor nivel de seguridad dentro de la empresa y entre empresas. Vea información de presencia en tiempo real y comuníquese mediante el correo electrónico, mensajería instantánea y el correo de voz.
  • Aplicaciones móviles: Aumente la productividad de los empleados móviles y su capacidad de respuesta a los clientes mientras controla sus costes de movilidad creando extensiones de dispositivos móviles en la red empresarial.

Nuevas experiencias de comunicaciones.

Cadenas de valor mundiales, trabajadores móviles, redes sociales, vídeo ubicuo y sobrecarga de información: eso es lo habitual hoy en día. Para manejar esta complejidad empresarial, las Comunicaciones Unificadas de Cisco conectan personas, información y equipos, ayudando a todos a habilitar experiencias de colaboración completas y eficaces. Con las Comunicaciones Unificadas de Cisco, su empresa puede:

  • Conectar a compañeros de trabajo, partners, proveedores y clientes con la información que necesitan.
  • Acceder y compartir vídeo en el escritorio, cuando se está de viaje, y a demanda, de forma tan fácil como hacer una llamada de teléfono
  • Facilitar mejores interacciones entre los equipos, al reunir de forma dinámica a personas, grupos de trabajo virtuales y equipos
  • Crear extensiones de la red empresarial para dispositivos móviles de manera que los trabajadores móviles puedan ser productivos en cualquier lugar
  • Innovar en la cadena de valor al integrar la colaboración y las comunicaciones en las aplicaciones y los procesos comerciales.

Colaborar con confianza.

Las Comunicaciones Unificadas de Cisco ofrecen una experiencia altamente segura y de gran calidad en cualquier espacio de trabajo. Esto ayuda a su empresa a:

  • Acortar el ciclo de ventas y de servicio al cliente
  • Reducir el tiempo de comercialización de los productos
  • Adaptarse con mayor rapidez a los cambios del mercado
  • Alentar la innovación

Unas de las mejores aplicaciones que vi para estas tecnologías son , la de videoconferencias, para empresas donde se requieran conferencias en tiempo real, y a cualquier hora, y también me llamó mucho la atención de asistencia médica vía remota, así en caso de alguna emergencia, o en lugares donde no llegué medicina especializada, se pueden hacer diagnosticos, practicamente desde casa.

A continuación les dejo los videos donde se puede apreciar como explotar estas tecnologías con las aplicaciones que les comento:

























Bueno eso es todo, como conclusión y un obstáculo que veo, es que para poder hacer uso de estas aplicaciones, se necesita de un gran ancho de banda para poder hacer las conferencias en tiempo real, y en México todavía no hay servicio de internet con grandes anchos de banda.


Espero les haya gustado mi trabajo, cualquier corrección la pueden dejar en los comentarios. Saludos.


LABORATORIO DE PROGRAMACIÓN WEB

Computación en nube "Cloud Computing".




La computación en nube, es un paradigma que permite ofrecer servicios de computación a través de Internet. La "nube" es una metáfora de Internet.

En este tipo de computación todo lo que puede ofrecer un sistema informático se ofrece como servicio, de modo que los usuarios puedan acceder a los servicios disponibles "en la nube de Internet" sin conocimientos (o, al menos sin ser expertos) en la gestión de los recursos que usan. Según el IEEE Computer Society, es un paradigma en el que la información se almacena de manera permanente en servidores de Internet y se envía a cachés temporales de cliente, lo que incluye equipos de escritorio, centros de ocio, portátiles, etc. Esto se debe a que, pese a que las capacidades de los PC han mejorado sustancialmente, gran parte de su potencia se desaprovecha, al ser máquinas de propósito general.

"Cloud computing" es un nuevo modelo de prestación de servicios de negocio y tecnología, que permite al usuario acceder a un catálogo de servicios estandarizados y responder a las necesidades de su negocio, de forma flexible y adaptativa, en caso de demandas no previsibles o de picos de trabajo, pagando únicamente por el consumo efectuado.

El cambio paradigmático que ofrece computación en nube es que permite aumentar el número de servicios basados en la red. Esto genera beneficios tanto para los proveedores, que pueden ofrecer, de forma más rápida y eficiente, un mayor número de servicios, como para los usuarios que tienen la posibilidad de acceder a ellos, disfrutando de la ‘transparencia’ e inmediatez del sistema y de un modelo de pago por consumo.

Computación en nube consigue aportar estas ventajas, apoyándose sobre una infraestructura tecnológica dinámica que se caracteriza, entre otros factores, por un alto grado de automatización, una rápida movilización de los recursos, una elevada capacidad de adaptación para atender a una demanda variable, así como virtualización avanzada y un precio flexible en función del consumo realizado.



Beneficios de "Cloud Computing"

  • Integración probada de servicios Red. Por su naturaleza, la tecnología de "Cloud Computing" se puede integrar con mucha mayor facilidad y rapidez con el resto de sus aplicaciones empresariales (tanto software tradicional como Cloud Computing basado en infraestructuras), ya sean desarrolladas de manera interna o externa.
  • Prestación de servicios a nivel mundial. Las infraestructuras de "Cloud Computing" proporcionan mayor capacidad de adaptación, recuperación de desastres completa y reducción al mínimo de los tiempos de inactividad.
  • Una infraestructura 100% de "Cloud Computing" no necesita instalar ningún tipo de hardware. La belleza de la tecnología de "Cloud Computing" es su simplicidad… y el hecho de que requiera mucha menor inversión para empezar a trabajar.
  • Implementación más rápida y con menos riesgos. Podrá empezar a trabajar muy rápidamente gracias a una infraestructura de "Cloud Computing". No tendrá que volver a esperar meses o años e invertir grandes cantidades de dinero antes de que un usuario inicie sesión en su nueva solución. Sus aplicaciones en tecnología de "Cloud Computing" estarán disponibles en cuestión de semanas o meses, incluso con un nivel considerable de personalización o integración.
  • Actualizaciones automáticas que no afectan negativamente a los recursos de TI. Si actualizamos a la última versión de la aplicación, nos veremos obligados a dedicar tiempo y recursos (que no tenemos) a volver a crear nuestras personalizaciones e integraciones. La tecnología de "Cloud Computing" no le obliga a decidir entre actualizar y conservar su trabajo, porque esas personalizaciones e integraciones se conservan automáticamente durante la actualización.
  • Contribuye al uso eficiente de la energía. En este caso, a la energía requerida para el funcionamiento de la infraestructura. En los datacenters tradicionales, los servidores consumen mucha más energía de la requerida realmente. En cambio, en las nubes, la energía consumida es sólo la necesaria, reduciendo notablemente el desperdicio.

Desventajas de "Cloud Computing"

  • La centralización de las aplicaciones y el almacenamiento de los datos origina una dependencia de los proveedores de servicios.
  • La disponibilidad de las aplicaciones está atadas a la disponibilidad de acceso a internet.
  • Los datos "sensibles" del negocio no residen en las instalaciones de las empresas por lo que podría generar un contexto de alta vulnerabilidad para la sustracción o robo de información.
  • La confiabilidad de los servicios depende de la "salud" tecnológica y financiera de los proveedores de servicios en nube. Empresas emergentes o alianzas entre empresas podrían crear un ambiente propicio para el monopolio y el crecimiento exagerado en los servicios.
  • La disponibilidad de servicios altamente especializados podría tardar meses o incluso años para que sean factibles de ser desplegados en la red.
  • La madurez funcional de las aplicaciones hace que continuamente estén modificando sus interfaces por lo cual la curva de aprendizaje en empresas de orientación no tecnológica tenga unas pendientes pequeñas.
  • Seguridad. La información de la empresa debe recorrer diferentes nodos para llegar a su destino, cada uno de ellos ( y sus canales) son un foco de inseguridad. Si se utilizan protocolos seguros, HTTPS por ejemplo, la velocidad total disminuye debido a la sobrecarga que requieren estos protocolos.
  • Escalabilidad a largo plazo. A medida que más usuarios empiecen a compartir la infraestructura de la nube, la sobrecarga en los servidores de los proveedores aumentará, si la empresa no posee un esquema de crecimiento óptimo puede llevar a degradaciones en el servicio o jitter altos.
Algunos ejemplos de "Cloud Computing"

Varias son las grandes empresas que se han dedicado a ofrecer estos servicios, promoviendo el fácil acceso a nuestra información, los bajos costos, la escalabilidad y muchas características que nos hace pensar en la comodidad que nos brindan, entre ellas podemos mencionar:

Google apps, brinda el servicio de aplicaciones para empresas como Gmail, Google Talk, Google Calendar y Google Docs, etc.

Amazon Web Services: los servicios que ofrece son el Amazon EC2™, Amazon S3™, SimpleDB™, Amazon SQS™.

Azure de Microsoft : ofrece servicios de sistema operativo, hosting, sistemas para desarrollo.

Rackspace :una famosa empresa de hosting, está detrás de Mosso una compañía la cual ofrece un paquete de básico de hosting y a partir de este se escala según se necesite (y sin migrar de servidores). Recientemente Rackspace adquirió a JungleDisk , un popular cliente para Amazon S3 y que a futuro estará integrándose con CloudFiles


Conclusiones:

Según estos conceptos, ya no será necesario instalar nuestros programas en nuestra máquina, ya que serán instalados en servidores externos a nosotros.
Lo único que almacenariamos nosotros sería nuestra información, nuestros archivos, péro los programas que usaremos estarán instalados en otro servidor.

Este me pareció un tema interesante, espero les haya gustado.

Cualquier correción pueden dejarla en los comentarios.

LABORATORIO DE PROGRAMACIÓN WEB

Hojas de estilo en cascada (CSS)



Las hojas de estilo en cascada es un lenguaje usado para definir la presentación de un documento estructurado escrito en HTML o XML (y por extensión en XHTML). El W3C (World Wide Web Consortium) es el encargado de formular la especificación de las hojas de estilo que servirán de estándar para los agentes de usuario o navegadores.

La idea que se encuentra detrás del desarrollo de CSS es separar la estructura de un documento de su presentación.

Por ejemplo, el elemento de HTML indica que un bloque de texto es un encabezamiento y que es más importante que un bloque etiquetado como versiones más antiguas de HTML permitían atributos extra dentro de la etiqueta abierta para darle formato (como el color o el tamaño de fuente). No obstante, cada etiqueta debía disponer de la información si se deseaba un diseño consistente para una página y, además, una persona que lea esa página con un navegador pierde totalmente el control sobre la visualización del texto.

Cuando se utiliza CSS, la etiqueta no debería proporcionar información sobre como va a ser visualizado, solamente marca la estructura del documento. La información de estilo separada en una hoja de estilo, especifica cómo se ha de mostrar : color, fuente, alineación del texto, tamaño y otras características.

La información de estilo puede ser adjuntada tanto como un documento separado o en el mismo documento HTML. En este último caso podrían definirse estilos generales en la cabecera del documento o en cada etiqueta particular mediante el atributo "style".

Los tres tipos de estilos.

CSS proporciona tres caminos diferentes para aplicar las reglas de estilo a una página Web.

1-Una hoja de estilo externa, es una hoja de estilo que está almacenada en un archivo diferente al archivo donde se almacena el código HTML de la página Web. Esta es la manera de programar más potente, porque separa completamente las reglas de formateo para la página HTML de la estructura básica de la página.

2-Una hoja de estilo interna, que es una hoja de estilo que está incrustada dentro de un documento HTML. (Va a la derecha dentro del elemento ). De esta manera se obtiene el beneficio de separar la información del estilo, del código HTML propiamente dicho. Se puede optar por copiar la hoja de estilo incrustada de una página a otra, (esta posibilidad es difícil de ejecutar si se desea para guardar las copias sincronizadas). En general, la única vez que se usa una hoja de estilo interna, es cuando se quiere proporcionar alguna característica a una página Web en un simple fichero, por ejemplo, si se está enviando algo a la página web.

3-Un estilo en línea (inline), que es un método para insertar el lenguaje de estilo de página, directamente, dentro de una etiqueta HTML. Esta manera de proceder no es totalmente adecuada. El incrustar la descripción del formateo dentro del documento de la página Web, a nivel de código se convierte en una tarea larga, tediosa y poco elegante de resolver el problema de la programación de la página. Este modo de trabajo se podría usar de manera ocasional si se pretende aplicar un formateo con prisa, al vuelo. No es todo lo claro o estructurado que debería ser, pero funciona. Este es el método recomendado para maquetar correos electrónicos en HTML.

Las ventajas de utilizar CSS son:

-Control centralizado de la presentación de un sitio web completo con lo que se agiliza de forma considerable la actualización del mismo.

-Los navegadores permiten a los usuarios especificar su propia hoja de estilo local que será aplicada a un sitio web, con lo que aumenta considerablemente la accesibilidad. Por ejemplo, personas con deficiencias visuales pueden configurar su propia hoja de estilo para aumentar el tamaño del texto o remarcar más los enlaces.

-Una página puede disponer de diferentes hojas de estilo según el dispositivo que la muestre o incluso a elección del usuario. Por ejemplo, para ser impresa, mostrada en un dispositivo móvil, o ser "leída" por un sintetizador de voz.

-El documento HTML en sí mismo es más claro de entender y se consigue reducir considerablemente su tamaño (siempre y cuando no se utilice estilo en línea).

Eso es todo en esta entrada, espero les haya gustado.

LABORATORIO DE PROGRAMACIÓN WEB

Modelo de red OSI y Modelo TCP/IP.

¿Qué es el modelo OSI?

El modelo de referencia de Interconexión de Sistemas Abiertos (OSI, Open System Interconnection) es el modelo de red descriptivo creado por la Organización Internacional para la Estandarización lanzado en 1984. Es decir, es un marco de referencia para la definición de arquitecturas de interconexión de sistemas de comunicaciones.

El modelo OSI se compone de 7 capas, que son las siguientes:

1 - Capa Física

Es la que se encarga de las conexiones físicas de la computadora hacia la red, tanto en lo que se refiere al medio físico como a la forma en la que se transmite la información.

Sus principales funciones se pueden resumir como:

  • Definir el medio o medios físicos por los que va a viajar la comunicación: cable de pares trenzados (o no, como en RS232/EIA232), coaxial, guías de onda, aire, fibra óptica.
  • Definir las características materiales (componentes y conectores mecánicos) y eléctricas (niveles de tensión) que se van a usar en la transmisión de los datos por los medios físicos.
  • Definir las características funcionales de la interfaz (establecimiento, mantenimiento y liberación del enlace físico).
  • Transmitir el flujo de bits a través del medio.
  • Manejar las señales eléctricas del medio de transmisión, polos en un enchufe, etc.
  • Garantizar la conexión (aunque no la fiabilidad de dicha conexión).

2 - Capa de enlace de datos.

Esta capa se ocupa del direccionamiento físico, de la topología de la red, del acceso a la red, de la notificación de errores, de la distribución ordenada de tramas y del control del flujo.

Como objetivo o tarea principal, la capa de enlace de datos se encarga de tomar una transmisión de datos ” cruda ” y transformarla en una abstracción libre de errores de transmisión para la capa de red. Este proceso se lleva a cabo dividiendo los datos de entrada en marcos de datos (de unos cuantos cientos de bytes), transmite los marcos en forma secuencial, y procesa los marcos de estado que envía el nodo destino.

3- Capa de red.

El objetivo de la capa de red es hacer que los datos lleguen desde el origen al destino, aún cuando ambos no estén conectados directamente. Los dispositivos que facilitan tal tarea se denominan encaminadores o routera, aunque es más frecuente encontrar el nombre inglés routers y, en ocasiones enrutadores. Los routers trabajan en esta capa, aunque pueden actuar como switch de nivel 2 en determinados casos, dependiendo de la función que se le asigne. Los firewalls actúan sobre esta capa principalmente, para descartar direcciones de máquinas.

En este nivel se realiza el direccionamiento lógico y la determinación de la ruta de los datos hasta su receptor final.


4 - Capa de transporte.


Capa encargada de efectuar el transporte de los datos (que se encuentran dentro del paquete) de la máquina origen a la de destino, independizándolo del tipo de red física que se esté utilizando. La PDU de la capa 4

se llama Segmento o Datagrama, dependiendo de si corresponde a TCP o UDP. Sus protocolos son TCP y UDP; el primero orientado a conexión y el otro sin conexión.


5 - Capa de sesión.

Esta capa es la que se encarga de mantener y controlar el enlace establecido entre dos computadores que están transmitiendo datos de cualquier índole.

Por lo tanto, el servicio provisto por esta capa es la capacidad de asegurar que, dada una sesión establecida entre dos máquinas, la misma se pueda efectuar para las operaciones definidas de principio a fin, reanudándolas en caso de interrupción. En muchos casos, los servicios de la capa de sesión son parcial o totalmente prescindibles.


6 - Capa de presentación.

El objetivo es encargarse de la representación de la información, de manera que aunque distintos equipos puedan tener diferentes representaciones internas de caracteres los datos lleguen de manera reconocible.

Esta capa es la primera en trabajar más el contenido de la comunicación que el cómo se establece la misma. En ella se tratan aspectos tales como la semántica y la sintaxis de los datos transmitidos, ya que distintas computadoras pueden tener diferentes formas de manejarlas.

Esta capa también permite cifrar los datos y comprimirlos. En pocas palabras es un traductor.


7 - Capa de Aplicación.


Ofrece a las aplicaciones la posibilidad de acceder a los servicios de las demás capas y define los protocolos que utilizan las aplicaciones para intercambiar datos, como correo electrónico (POP y SMTP), gestores de bases de datos y servidor de ficheros (FTP), por UDP pueden viajar (DNS y RIP). Hay tantos protocolos como aplicaciones distintas y puesto que continuamente se desarrollan nuevas aplicaciones el número de protocolos crece sin parar.

Cabe aclarar que el usuario normalmente no interactúa directamente con el nivel de aplicación. Suele interactuar con programas que a su vez interactúan con el nivel de aplicación pero ocultando la complejidad subyacente.

MODELO TCP/IP

¿Qué es el modelo TCP/IP?

El modelo TCP/IP es un modelo de descripción de protocolos de red creado en la década de 1970 por DARPA, una agencia del Departamento de Defensa de los Estados Unidos. Evolucionó de ARPANET, el cual

fue la primera red de área amplia (WAN) y predecesora de Internet. EL modelo TCP/IP se denomina a veces como Internet Model, Modelo DoD o Modelo DARPA.

El modelo TCP/IP o DoD se compone de 4 capas, que son las siguientes:

1 - Capa de enlace.

Acceso al Medio, asimilable a la capa 1 (física) y 2 (enlace de datos) del modelo OSI.

2 - Capa de red.

Internet, asimilable a la capa 3 (red) del modelo OSI.

3 - Capa de transporte.

Transporte, asimilable a la capa 4 (transporte) del modelo OSI.

4 - Capa de aplicación.

Aplicación, asimilable a las capas 5 (sesión), 6 (presentación) y 7 (aplicación) del modelo OSI.la capa de aplicación debía incluir los detalles de las capas de sesión y presentación OSI. Crearon una capa de aplicación que maneja aspectos de representación, codificación y control de diálogo.

La siguiente imagen es una comparación entre las capas del modeo OSI y el modelo TCP/IP:



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

Cualquier aclaración la pueden poner en los comentarios.


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.