domingo, 21 de noviembre de 2010

Servlets y JSP

Hola compañeros, en esta entrada les hablaré sobre servlets y JSP (Java Server Pages).

SERVLETS

Los Servlets son las respuestas de Java a la programación CGI. Son programas que se ejecutan en determinado servidor web y construyen páginas web. 

 Ventajas de los Servles sobre el CGI
Son más eficientes, fácilesde usar, más portables y más baratos los Servlets Java que el CGI tradicional.

Eficiencia. Con CGI se arranca un nuevo proceso por cada solicitud HTTP. Si el programa CGI hace una operación muy rápida, la sobrecarga de proceso de arranque uede dominar el tiempo de ejecución. Con los Servlets, la máquina virtual de Java permanece en arranque, y cada petición es manejaa por un thread Java de ligero peso, no un pesado proceso del sistema operativo. En CGI también, si hay muchas peticiones al mismo tiempo para el mismo programa CGI, el código de dicho programa se cargará las veces como peticiones haya en memoria. Con los Servlets hay n número de threads pero sólo una copia de la clase Servlet.

Conveniencia. Los Servlets tienen una gran infraestructura por análisis automático y decodificación de datos de formularios HTML, leer y seleccionar las cabeceras HTTP, manejar cookies, entre otras cosas.

Potencia. Los Servlets permiten facilmente hacer cosas que son dificiles o imposibles en CGI. Pueden hablar directamente con el servidor web. Esto simplifica las operaciones que se utilizan para buscar imágenes y otros datos almacenados. También pueden compartir datos entre ellos, haciendo las cosas útiles como almacenes de conexiones a bases de datos. 
Portable. Los Servlets están escritos en Java y siguen un API bien estandarizado. Los Servlets escritos se pueden ejecutar sin modificarse en Apache, Microsoft IIS o WebSar. También están soportados directamente o mediante un plug-in en la mayoría de los servidores web.

Barato. Existen muchoas servidores web gratuitos o muy baratos que son buenos para el uso personal o el uso de sitios web de bajo nivel. Con excepción del Apache que es gratuito, la mayoría de los servidores web comerciales son muy caros. 

JSP
Java Server Pages nos permite mezclar HTML estático con HTML dinámico. Gran variedad de páginas web que tienen programas CGI son casi estáticas, con la parte dinámica limitada. Muchas variaciones CGI, incluyendo los servlets, hacen que generemos la página completa mediante nuestro programa. JSP nos permite crear dos partes de forma separada. Aquí les dejo un ejemplo que saqué de internet.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><TITLE>Welcome to Our Store</TITLE></HEAD>
<BODY>
<H1>Welcome to Our Store</H1>
<SMALL>Welcome,
<!-- User name is "New User" for first-time visitors --> 
<% out.println(Utils.getUserNameFromCookie(request)); %>
To access your account settings, click
<A HREF="Account-Settings.html">here.</A></SMALL>
<P>
Regular HTML for all the rest of the on-line store's Web page.
</BODY></HTML>


Esta tecnología fue desarrollada por la compañía Sun Microsystems. Las JSP's permiten que se utilice código de Java mediante scripts. También se pueden utilizar algunas acciones JSP predefinidas mediante etiquetas.

JSP se puede considerar como una forma alternativa y simplificada de construir servlets.  Por esto, una página JSP puede hacer lo mismo que un servlet puede. El funcionamiento de esta tecnología es que el Servidor de Aplicaciones interpreta el código que tienes en la página JSP para construir el código Java del servlet a generar. Este servlet será el que haga el documento normalmente HTML, que se presentará en la pantalla del navegador del usuario.
La ventaja principal de JSP contra otros lenguajes es que Java es un lenguaje de propósito general que excede en el mundo web y es apto para crear clases que manejen lógica y acceso a datos de una manera detallada. Otra ventaja es que JSP hereda la portabilidad de Java y las aplicaciones se pueden ejecutar en diversas plataformas. 

Los servlets y JSPs son dos métodos para crear páginas web en servidor utilizando el lenguaje Java. Son similares a otros métodos como PHP, ASP o CGIs, que son programas que generan páginas web en el servior.

Los JSPs y servlets se ejecutan en una máquina virtual Java, lo cual permite que se puedan utilizar en cualquier tipo de ordenador, siempre  cuando exista una máquina virtual Java para él.

Los JSPs son en realidad servlets, un JSP se compila a un programa de Java la primera vez que se utiliza, y del programa Java se crea una clase que compienza a ejecutarse en el servidor como servlet. La diferencia principal entre los servlets y los JSPs es el enfoque a la programación, un JSP es una página web con etiquetas especiales y código Java incluido, mientras un servlet es un programa Java que recibe peticiones y a partir de ellas genera una página web.

Búsqueda Web

Hola compañeros, en esta entrada les hablaré de búsqueda web y buscadores web.

Hoy en día, navegar por internet cada vez es más complicado debido a la aparición de información continuamente. Esto hace que cuando queremos encontrar algo de una forma rápida y sencilla a veces puede tardar mucho tiempo y con resultados que no deseamos.

Para esto se necesita un mecaniscmo o dispositivo que permita clasificar, catalogar u organizar esta gran cantidad de información para entontrar nuestra búsqueda más facilmente.

Todos conocemos los búscadores o motores de búesquedas los cuales son la mejor forma de encontrar información en la web. Estos buscadores son aplicaciones informáticas que rastrean la web catalogando, clasificando y organizando la información, para después ofrecernosla a los que navegamos en internet. Se pueden definir como grandes bases de datos indexadas de páginas web.

Los buscadores funcionan de las siguientes forma:
  1. Por medio de programas que buscan en bases de datos que se mantienen automáticamente por los denominados robots. En este tipo de búsqueda sólo hay que introducir el término que deseamos encontrar información
  2. Mediante índices, los cuales catalogan la información por temas. Estos índices se organizan normalmente desde los temas más generales hasta los más específicos, existe una cierta jerarquía en su organización.
Internet tiene millones de páginas web con lo que parece díficil que podamos encontrar lo que buscamos, para esto existen los buscadores. Los buscadores son herramientas gratuitas a las que se tiene acceso con sólo escribir lo que deseamos buscar.

Los buscadores más conocidos son: Google, Yahoo, Altavista, Lycos y Ozú.

Búesqueda más a avanzada

Para hacer búsquedas más avanzadas, solo tienes que añadir operadores, cada buscador admite diferentes, los más utilizados son AND, OR y NOT. Por ejemplo si buscas:

estudiantes AND universitarios

Buscará todo lo que tenga las dos palabras necesariamente, o sea estudiantes universitarios.

estudiantes OR universitarios

Buscará todo lo que tenga una de las dos palabras o las dos, o sea estudiantes o universitarios o estudiantes universitarios.

estudiantes AND NOT universitarios

Buscará todo lo que tenga la palabra estudiantes, con excepción de que también tenga la palabra universitarios, o sea los estudiantes que no sean universitarios.

BUSCADORES WEB

Google. Revolucionó la búsqueda en la web con la tecnología PageRank. Es el buscador que más utilizamos, y es muy satisfactorio al buscar cualquier cosa. Fue creado por estudiantes de la Universidad de Stanford. Este buscador se diferencia de los demás al ordenar resultados de nuestras consultas en base al número de enlaces que apuntan a estos documentos.

AllTheWeb. Creado por Fast Search & Transfer ASA, es uno de los buscadores más ambiciosos respecto a su base de datos de documentos Web. Tiene características parecidas a AltaVista pero con una base de datos más amplia. Solo está disponible en inglés.

Excite. Es uno de los buscadores internacionales más importantes en la actualidad. Posee un robot de búsqueda que automatiza los procesos de encontrar e indexar una URL.

Terra. En su página principal se puede acceder a sus múltiples servicios: consulta sencilla y avanzada, noticias, información meteorológica, ec.

Altavista. Es de los más potentes, se destaca por su rapidez de respuesta en devolver los resultados de las búsquedas. Tiene una gran base de datos de documentos web pero tenemos que acotar bien nuestras búsquedas. Tiene opción de búsqueda avanzada y nos permite escoger el idioma.

Savy Search. Usa un método de busquéda en paralelo, actúa como intermediario enre el usuario y varios buscadores (Yahoo, Altavista, Lycos, etc) buscando simultáneamente en ellos y localizando sitios donde se encuentre la palabra clave que buscas.

Buscopio. Es un buscador de buscadores.

Fast Search. Buscador general de términos, es rápido y eficaz.

Lycos. Buscador temático, te permite buscar formatos de imagenes y audio.

Yahoo. Buscador temático. La información se encuentra estructurada en directorios y tenemos dos opciones de búsqueda.
  1. Desplazarnos por la estructura de directorios
  2. Usar el buscador automático de sus directorios y contenidos
En los resultados de cualquier busqueda, Yahoo da tres diferentes tipos de información
  1.  Categorías Yahoo que cotengan las palabras que buscaste
  2.  Sitios que contengn las palabras que buscaste
  3.  Categorías Yahoo donde esos sitios están listados.
 Bueno esto es todo, saludos a todos:)

Interacción humano - computadora

Hola a todos, en esta entrada les hablaré sobre la interacción humano - computadora. En la actualidad, un campo de de investigación y desarrollo muy importante es la estandarización de los sistemas computarizados y las tecnologías que lo soportan, ya que afecta a muchos campos de trabajo que comprenden desde la arquitectura interna de las computadoras hasta la interacción entre el humano y la computadora.

La Interacción humano computadora (HCI) es el estudio de la relación que hay entre los humanos (usuarios) y las computadoras que usamos para realizar diferentes tareas. Busca entender cómo funcionan los usuarios, que tareas necesitan hacer y de que forma las computadoras necesitan estar estructuradas para facilitar hacer estas tareas. Para entender a los usuarios se necesita entender los procesos, capacidades que pueden tener que ver con las tareas que hacen. Esto involucra un entendimiento y conocimiento de ciertas cosas como la memoria visión, cognición, oido, tacto, habilidades motrices, entre otros.

La interacción humano-computadora es la encargada del diseño, evaluación e implementación de los aparatos tecnológicos interactivos. Su objetivo es que el intercambio sea más eficiente, minimizar errores, satisfacer al usuario, hacer más productivas las tareas.

Como la interacción humano-computadora estudia la comunicación entre el humano y la computadora, esto hace que sea necesario tener conocimientos por parte de los dos. Por parte de las computadoras tienen que tener el sistema operativo adecuado, lenguajes de programación y cosas que le ayuden al humano a realizar lo que necesita. En cambio, por parte del humano, es importante que tengan conocimientos previos como teoría de la comunicación, disciplinas de diseño gráfico e industrial, etc.

Los objetivos de esta interacción son los siguientes:
  • Unir las tareas del usuario con la computadora
  • El humano tenga capacidad para utilizar las máquinas (incluyendo la capacidad de entender las interfaces)
  • Algoritmos y programas de la interfaz en sí.
  • Conceptos de ingeniería que se plantean a la hora de diseñar y construir interfaces.
  • El proceso de especificación, diseño, e implementación de la interfaz.
Los componentes principales son:

USUARIO. El ser humano cuenta con la capacidad limitada de procesar información. Nos podemos comunicar a través de cuatro diferentes vías de entrada o salida: visión, audición, movimiento y tacto. La informacion que se recibe se amacena en nuestra memoria sensorial, la memoria a corto plazo y la memoria a largo plazo. Una vez que recibimos esta información, se procesa a través del razonamiento y de nuestras habilidades. El estado emocional del usuario afectará a todo este proceso, ya que influye directamente sobre las capacidades de la persona.

COMPUTADORA. El sistema que se utilice puede afectar de diferentes formas al usuario. Los dispositivos de entrada permiten introducir el texto como el teclado de la computadora, del telefono, hablar, escribir, dibujos, entre otros. En los dispositivos de salida estarían las pantallas. Los sistemas de realidad virtual y los de visualización con 3D tienen un papel muy importante en la interactividad humano-computadora. En cuanto a la memoria, se encuentra la RAM a corto plazo y discos magnéticos y ópticos a largo plazo. Los métodos de acceso a la memoria pueden suponer una ayuda. La computadora tendrá un límite de velocidad en el prcesamiento.

Es importante la buena interacción entre el humano y la computadora, por este motivo la interfaz tiene que diseñarse pensando en las necesidaddes del usuario.

Bueno, esto es todo. Saludos!

Bases de datos

Ahora, les hablaré sobre bases de datos, bueno una base de datos es como un almacén en el cual podemos guardar grandes cantidades de información de forma ordenada, para que así podamos buscar y utilizarlas más facilmente. 

Este término de bases de datos fue empleado por primera vez en 1963, en el simposio de California, USA. Una base de datos se define como un conjunto de información relacionada que se encuentra agrupada. En cuanto al término en informática, es un conjunto de datos que se almacenan en discos que permiten acceder directo a ellos y un conjunto de programas manipulan estos datos.

Las bases de datos tienen ciertas características
  • Independencia lógica y física de los datos
  • Acceso constantemente por muchos usuarios
  • Integridad de los datos
  • Consultas optimizadas
  • Seguridad de acceso
  • Acceso a través de los lenguajes de programación estándar.
Sistema de Gestión de Base de Datos
Los sistemas de Gestión de Base de Datos (DataBase Management System) son un software que se utiliza para servir de interfaz entre las bases de datos, el usuario y las aplicaciones que utilizan la base de datos. Esta compuesta de un lenguaje que define los datos, un leneguaje que los manipula y otro que los consulta.


VENTAJAS

Los sistemas de archivos almacenan copias de los datos en archivos distintos, esto provoca que se desperdicie espacio de almacenamiento, y también la falta de consistencia de los datos. En los sistemas de bases de datos todos estos archivos están integrados, por lo cual no se almacenan copias de estos datos. 

Si un dato se almacena una sola vez, cualquier actualización debe realizarse sólo una vez. Si un dato está duplicada y el sistema reconoce esto, el sistema puede encargarse de que todas las copias se mantengan consistentes.

En cuanto a compartir estos datos, en los sistemas de archivos, estos pertenecen solamente a las personas o departamentos que lo utilicen. En cambio, en un sistema de base de datos, la base de datos pertenece a la empresa y puede ser compartida para todos los usuarios que se les autorice.

La integridad de la base de datos, es la validez y consistencia de los datos almacenados. Generalmente, la integridad se define mediante reglas que no se pueden romper. Estas reglas se pueden aplicar a los datos y a sus relaciones, el sistema gestor de bases de datos es el que se encarga de mantener dichas reglas.



DESVENTAJAS
Los Sistemas de Gestión de Bases de Datos son programas que pueden llegar a ser muy complicados con una gran funcionalidad. Se tiene que comprender a fondo esta funcionalidad para poder hacer buen uso de ellos.

El SGBD (Sistema de Gestión de Bases de Datos) y la base de datos, dependiento de los datos que tengan almacenados, pueden llegar a necesitar más espacio de almacenamiento. Todo esto hace que la implementación de un sistema de bases de datos sea más cara. 


TIPOS DE CAMPOS

Cada sistema de bases de datos tiene diferentes tipos de campos o de datos que pueden ser similares o diferentes. Los más comunes son:
  • Númerico: los tipos de datos númericos más comunes son enteros y reales, o sea con decimales y sin decimales
  • Booleanos: estos tipos de datos tienen dos estados, Verdadero y Falso.
  • MEMOS: son tipos de datos alfanuméricos con una longitud ilimitada. Pero la desventaja es que no pueden ser indexados.
  • Fechas: almacenan fechas, haciendo posible ordenar los registros por fechas o calcular los días entre una semana y otra.
  • Alfanuméricos: estos tipos de datos tienen números y letras. Tienen una lóngitud limitada de 255 caracteres.
  • Autoincrementables: son campos númericos enteros que se incrementan en una unidad para cada registro. Sirven de identificadores ya que son exclusivos de un registro.


BASES DE DATOS

Entre las bases de datos más comunes están:
  • MySql: base de datos con licencia GPL basada en un servidor. Su característica principal es que es muy rápida. No se recomienda para gran cantidad de datos.
  • PostgreSql y Oracle: sistemas de bases de datos muy poderosos. Registran gran cantidad de datos, y se utilizan normalmente en intranets y sistemas de gran calibre.
  • Access: base de datos desarrollada por  Microsoft, debe ser creada por el programa access, el cual crea un archivo .mdb.
  • Microsoft SQL Server: es una base de datos de Microsoft pero más potente. Utilizada para manejar grandes cantidades de información.



TIPOS DE BASES DE DATOS

Las bases de datos pueden clasificarse, de varias formas.

  • Por la variabilidad de los datos almacenados
Bases de datos estáticas: son bases de datos sólo de lectura, se utilizan generalmente para almacenar datos históricos que después se pueden utilizar para el estudio del comportamiento de los datos a través del tiempo, realizar proyecciones y tomar desiciones.

Bases de datos dinámicas: estas son donde los datos que están almacenados se modifican con el tiempo, con esto se permite hacer diferentes acciones, como actualización, borrado, agregar datos y consultarlos. Por ejemplo, un sistema de datos de una tienda, una farmacia, entre otros.

  • Por el contenido
Bases de datos bibliográficas: estas contienen un represetante de la fuente primaria, que es el que permite localizarla. Un registro de estos normalmente contiene información del autor, título, editorial, edición, fecha de publicación, etc. Las bases de datos bibliográficas sólo pueden tener un resumen o parte de la publicación original, pero JAMÁS el texto completo, ya que si tuviera el texto completo sería una base de datos a texto completo o de fuentes primarias, la cuál se las explicaré más adelante. Regresando a estas bases de datos, su contenido son cifras o números.

Bases de datos de texto completo: Ahora sí, como lo mencione arriba estas son las que almacenan las fuentes primarias, o sea el texto completo de una publicación.

Bases de datos de información química o biológica: son las que almacenan diferentes tipos de información acerca de la química, ciencias de la vida o médicas. Se clasifican en:
- Las que almacenan secuencias de nucleótidos o proteínas.
- Las bases de datos de rutas metabólicas.
- Bases de datos de estructura, tiene los registros de datos experimentales sobre estructuras 3D de biomoléculas.
- Bases de datos clínicas
- Bases de datos bibliográficas (biológicas, químicas, médicas, entre otras.)



 


  • Por su modelo de administración de datos

Bases de datos jerárquicas: son las que como su nombre lo dice, almacenan su información de forma jerárquica. Los datos se organizan en forma parecida a un árbol (visto al revés), en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres se le llama raíz, y a los nodos que no tienen hijos se les llama hojas. Estas bases de datos son muy útiles en las aplicaciones que tienen mucha información y datos muy compartidos.

Bases de datos de red: Estas bases de datos son muy parecidas a las de orden jerárquico, la diferencia más importante es la modificación del concepto de nodo, ya que en esta se permite que un mismo nodo tenga varios padres.

Bases de datos transaccionales: Estas bases de datos tienen el fin de enviar y recibir datos muy rápidamente. Las bases de datos transaccionales no son comunes y normalmente se utilizan en análisis de calidad, datos de producción, entre otras. Hay que recordar que el único fin de estas bases de datos es recolectar y recuperar los datos a la mayor velicidad posible, por esto la redundancia y duplicación de información no es un problema.

Bases de datos relacionales: Estas bases de datos son las que se utilizan actualmente, están diseñadas para modelar problemas reales y administrar datos dinámicamente. La idea principal de estas bases de datos es el uso de relaciones, las cuales se pueden considerar lógicamente como conjuntos de datos llamados tuplas. Imaginando que cada relación fuera como una tabla que está compuesta por registros (filas), que representarían las tuplas, y campos (columnas).

En estas bases de datos el modelo, lugar y la forma en la que se almacenan los datos no importa. Esta es la gran ventaja ya que es más facil de entender y de utilizar. La información ouede ser recuperada o almacenada mediante consultas que ofrecen una amplia flexibilidad y poder para administrar la información.

Bases de datos multidimensionales: Estas bases de datos son muy útiles para aplicaciones muy concretas, como la creación de Cubos OLAP. Es muy parecida a la base de datos relacional, la diferencia es que en las bases de datos multidimensionales los campos o atributos de una tabla puden ser de dos tipos: representan dimensiones de tabla o representan métricas que se desean estudiar.

Bases de datos orientados a objetos: este modelo es muy reciente y es propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). En estas bases de datos, los usuarios pueden definir operaciones sobre los datos. Una operación (función) se especifíca en dos partes. La interfaz de una operación incluye el nombre y los tipos de datos de los parámetros de la operación. La implementación de la operación se pone separado y puede modificarse sin afectar la interfaz.

Bases de datos documentales: permiten la indexación de texto completo, y enlíneas generales permiten realizar búsquedas más potentes.

Bases de datos deductivas: Es un sistema de bases de datos que permite hacer deducciones a través de inferencias. Se basa en reglas y hechos que se almacenan en la base de datos. Son también llamadas bases de datos lógicas.

Bueno esto es todo compañeros, espero que les sirva de algo, saludos:)

sábado, 20 de noviembre de 2010

CGI (Common Gateway Interface)

Hola compañeros, ahora les hablaré de CGI, la interfaz de entrada común.

Bueno, esta interfaz es una tecnología muy importante de World Wide Web ya que permite que un cliente (navegador web) solicite datos de un programa ejecutado en un servidor web. CGI especifica un estándar para transferir datos entre el cliente y el programa. 
Es un sistema de comunicación entre el servidor web y una aplicación externa, cuyo resultado final de la ejecución son objetos  MIME (extensiones multipropósito de correo de internet). A las aplicaciones que se ejecutan en el servidor web se les llama CGIs.

FORMA EN LA QUE ACTUA EL CGI
  1. El servidor recibe una petición (el cliente ha entrado a la URL que contiene el CGI), y  comprueba si se trata de una invocación de un CGI.
  2. Después de esto, el servidor prepara el entorno para ejecutar la aplicación. Esta información es proviene del cliente.
  3. Ahora el servidor ejecuta la aplicación, capturando su salida estándar.
  4. Luego, la aplicación realiza su función: se genera un objeto MIME que la aplicación escribe en su salida estándar.
  5. Para finalizar, cuando la aplicación concluye, el servidor envía la información producida, así como la imformación propia al cliente que se encontraba en estado de espera.
Bueno, como ya dijimos CGI establece comunicaci[on entre un servidor web y un programa, para que el programa puede interactuar con internet. CGI se ejecuta en tiempo real en un servidor web en respuesta a la solicitud de un navegador. Cuando esto pasa, el servidor web ejecuta un proceso que recibe los datos que envía el usuario (en caso de que haya datos), pone a disposición del usuario algunos datos en forma de variables y la salida en respuesta de su petición.

Priveer inteligencia e interactividad a una página web, es el propósito de los CGIs. Por ejemplo, cuando estamos en alguna página de la cual requerimos alguna información, y tenemos que buscar en los links que tiene esta página hasta encontrar lo que deseamos sería una tarea muy tardada y desespertante, por esto es mejor tener un buscador en forma de formulario para ingresar lo que estamos buscando, y así CGI nos dará las coincidencias de la búsqueda que estamos realizando.


Una de las funciones más importantes de los CGIs es procesar los datos ingresados por el usuario a partir de que ellos rellenan un formulario. 


El CGI puede recibir lo que contiene un formulario de las siguientes formas:
  • A través de la variable de ambiente QUERY_STRING
  • A través de la entrada éstandar, CONTENT_LENGTH nos indicará el largo del string que debemos leer
Estos dos modos se usarán dependiendo del método que se haya utilizado en el parámetro method de la etiqueta form del HTML.

Diferencias entre GET y POST




Siguiendo con formularios, vamos a ver un tipo de formularios que es el de campo de texto. Se introduce en el archivo HTML de la siguiente forma. El ejemplo lo escribí como si estuviera trabajando con los datos en un programa python.


<form action="http://localhost/cgi-bin/enviar.py" method="GET">
Introduzca aquí el texto: <input type= "text" name= "ejemplo_de_texto"size=30><p>
</form>


  

Bueno espero que les haya servido, saludos a todos!

Phyton

Hola compañeros, en esta entrada les hablaré del lenguaje python, que seguramente la mayoría ya lo hemos estado utilizando, por los proyectos de programación web o simplemente para practicar, pero para que no se les olvide, les dejo esta entrada para que no olviden lo básico de python.

Primero que nada, vamos a hablar sobre este lenguaje. El lenguaje python es un lenguaje de alto nivel, limpio y legible. Es un lenguaje interpretado y multiparadigma, ya que también soporta programación orientado a objetos, programación imperativa y algo de programación funcional.

Python se creó a finales de los 80, por Guido van Rossum en el CWI (National Research Institute for Mathematics and Computer Science). 

Una característica fundamental de python es la resolución dinámica de nombres, (también llamado ligadura dinámica de métodos)  o sea lo que une un método y un nombre de una variable en la ejecución de un programa.Otra característica es la facilidad de extensión. Pueden escribirse nuevos módulos fácilmente en C o C++. 

Python incluye un modo interactivo, en el que se escriben instrucciones en forma de comandos, las expresiones pueden ser introducidas una a una, logrando ver el resultado de su evaluación inmediatamente. Esto es muy útil para los programadores ya que se pueden probar partes de código en el modo interactivo antes de integrarlo como parte de un programa.

Este lenguaje se diseñó para ser leido con facilidad. A diferencia de otros lenguajes, se utilizan palabras en inglés en lugar de símbolos, por ejemplo los operadores lógicos !, ||, && en python se escriben not, or, and respectivamente.

El contenido que tienen los bloques de código es declarado mediante espacios o tabuladores antes de cáda línea de ordenes pertenecientes a dicho bloque. A diferencia de otros lenguajes, python no utiliza llaves {} para definir los bloques de una función.  En la siguiente imagen se muestra un ejemplo sobre como en python se diferencia en cuanto a esto.



Como pueden ver, en python no se utilizan llaves para encerrar los bloques de una función, si no se ponen dos puntos después de la función seguido del bloque que le pertenece a dicha función.

Para poner comentarios en python, se usa el símbolo gato (#). Estos comentarios sirven para ayudar a que nuestros programas sean más entendibles, poniendo para que usaste una función o que es lo que harás en un bloque, entre otras cosas.

En la siguiente imagen se muestran los tipos de datos  más utilizados en python.

Click para agrandar

Para declarar variables en python es como normalmente lo hacemos, por ejemplo.

a=65               #Aquí le estamos asignando el valor de 65 a la variable a
b="hola"         #Aquí asignamos la cadena de caracteres "hola" a la variable b

Ahora, para declarar una lista en python se utilizan corchetes "[]". Los elementos de la lista se separan por comas. En dichas listas se pueden tener elementos de diferentes tipos, las listas suelen usarse para elementos del mismo tipo en diferente cantidad. Para poder ingresar a los elementos de las listas se utiliza un índice entero (empezando con 0, no con 1). También se pueden usar índices negativos para ingresar elementos a partir del final. Ser mutables, es una característica de las listas, esto es que se puede cambiar su contenido en el tiempo de ejecución.

Aquí un ejemplo que saqué de internet para darles muestra de todo esto.

>>> lista = ["abc", 42, 3.1415]
>>> lista[0] # Acceder a un elemento por su índice
'abc'
>>> lista[-1] # Acceder a un elemento usando un índice negativo
3.1415
>>> lista.append(True) # Añadir un elemento al final de la lista
>>> lista['abc', 42, 3.1415, True]
>>> del lista[3] # Borra un elemento de la lista usando un índice 
(en este caso: True)
>>> lista[0] = "xyz" # Re-asignar el valor del primer elemento de la lista
>>> lista[0:2] # Mostrar los elementos de la lista del índice "0" al "2" 
(sin incluir este último)
['xyz', 42]
>>> lista_anidada = [lista, [True, 42L]] # Es posible anidar listas
>>> lista_anidada[['xyz', 42, 3.1415], [True, 42L]]
>>> lista_anidada[1][0] # Acceder a un elemento de una lista dentro de otra lista 
(del segundo elemento, mostrar el primer elemento)
True


Las funciones se definen con la palabra clave def, después se pone el nombre de la función y sus parámetros. El valor que se regresa en las funciones con def se dará con la instrucción return.

>>> def mult(x, y = 4):
...     return x * y # Regresa el resultado de multiplicar el valor de la variable "x" 
        y el valor de "y
>>> mult(8) # La variable "y" no se modifica, su valor: 4
32
>>> mult(6, 5) # La variable "y" se modifica, nuevo valor: 5
30


Las sentencias de condición if, ejecuta su contenido interno solo sí se cumple una condición. Se define utilizando la palabra if seguido por la condición y después el bloque de cófigo. Si existen condiciones adicionales, se introducen utilizando elif seguido de la condición y luego su bloque de código. Todas las condiciones se evaluan secuencialmente hasta encontrar la que sea verdadera y este es el único que se ejecuta. Puede haber un bloque con else, que se ejecute cuando la condición o condiciones anteriores fueron falsas.


>>> verdadero = True
>>> if verdadero: # No es necesario poner "verdadero == True"
...     print "Verdadero"
... else:
...     print "Falso"
...
Verdadero
>>> lenguaje = "Python"
>>> if lenguaje == "C": # lenguaje no es "C", por lo que este bloque se obviará 
y evaluará la siguiente condición
...     print "Lenguaje de programación: C"
... elif lenguaje == "Python": # Se pueden añadir tantos bloques "elif" como se quiera
...     print "Lenguaje de programación: Python"
... else: # En caso de que ninguna de las anteriores condiciones fuera cierta, 
se ejecutaría este bloque
...     print "Lenguaje de programación: indefinido"



En caso el caso del for, este recorre un objeto iterable, como una lista, y por cada elemento de la iteración ejecuta un bloque de código. Se define con la palabra for seguido de un nombre de variable, después se pone in, seguido del iterable, y al final el bloque de código interno.

>> lista = ["a", "b", "c"]
>>> for i in lista: # Iteramos sobre una lista, que es iterable
...     print i
...a
b
c
>>> cadena = "abcdef"
>>> for i in cadena: # Iteramos sobre una cadena, que también es iterable
...     print i, # Añadiendo una coma al final hacemos que no introduzca
 un salto de línea, sino un espacio
...
a b c d e f


Ahora, el ciclo while, este evalúa una condición y si es verdadera, ejecuta el bloque interno. Continúa evaluando y ejecutando mientras que la condición sea verdadera. Este ciclo se define con la palabra while seguida de la condición, y después el bloque interno.

>>> numero = 0
>>> while numero < 10:
...     numero += 1
...     print numero,
...
1 2 3 4 5 6 7 8 9 10

Bueno esto es todo, muchas gracias por leer las entradas:D, saludos a todos.

jueves, 18 de noviembre de 2010

Cliente - servidor

Hola compañeros, les platicaré sobre el sistema cliente servidor. Esto básicamente consiste en un cliente que hace peticiones a otro programa (servidor) el cual le da respuesta. Esto se puede aplicar a programas que se ejecutan sobre una sola computadora, por lo tanto tiene más ventaja en un sistema operativo multiusuario que se distribuye por medio de una red de computadoras.  

La red cliente-servidor es la red de comunicaciones en la cual todos los clientes están conectados a un servidor, en el que se centran los recursos y aplicaciones con las que se cuenta, y estos los pone a disposición de los clientes para los usuarios puedan disponer de ellos cada vez que son solicitados. 

El servidor es una aplicación que ofrece un servicio a los usuarios de internet, en cuant el cliente es el que pide este servicio. La aplicación consiste en una parte del servidor y una de cliente, que se pueden ejecutar en el mismo sistema o en diferentes. 

El servidor es un programa que recibe una solicitud, realiza un servicio y devuelve los resultados en forma de respuesta. Un servidor puede tener varias peticiones de diferentes clientes al mismo tiempo.

CARACTERISTICAS DEL CLIENTE
  • Es el que inicia las peticiones, tiene un papel activo en la comunicación
  • Espera la respuesta del servidor
  • Puede conectarse a varios servidores al mismo tiempo
  • Interactua directamente con los usuarios finales mediante la interfaz gráfica de usuario
  • Al contratar servicio de redes, tiene que tener la velocidad de conexión que le otorgan al cliente y el tipo de cable que utiliza

CARACTERISTICAS DEL SERVIDOR
  • Espera a que lleguen las peticiones de los  clientes, tiene un papel pasivo en la comunicación
  • Cuando le llega la petición, tienen que procesarla para después enviar una respuesta al cliente
  • Aceptan conexiones de gran número de clientes
  • No es frecuente que interactuen directamente con los usuarios finales
VENTAJAS
  • Centralización de control: el servidor controla los accesos, recursos y la integridad de los datos de modo que un programa cliente defectuoso o que no esté autorizado, no pueda dañar el sistema.
  • Se aumenta la capacidad de clientes y servidores por separado. Cualquiera de los elementos puede ser aumentado o mejorado en cualquier momento.
  • Fácil mantenimiento: las funciones y responsabilidades estan distribuidas entre varios ordenadores, es posible reemplazar, reparar, actualizar o hasta trasladar un servidor, mientras sus clientes no serán afectados por este cambio. Si se llelgaran a afectar, se afectarían muy poco. Esta independencia de los cambios se conoce como encapsulación.
  • Existen tecnologías diseñadas para este método que aseguran la seguridad en las transacciones, la amabilidad de la interfaz y la facilidad del empleo.
    El cliente no puede disponer de los recursos que existan en el servidor. 

DESVENTAJAS
  • La congestión del tráfico siempre es un problema en este paradigma. Cuango hay demasiados clientes enviando peticiones al mismo tiempo al mismo servidor, puede causar muchos problemas al servidor (entre mayor número de clientes, más problemas para el servidor). 
  • En el paradigma de Cilente-servidor cuando un servidor se cae, las peticiones de los clientes no pueden realizarse satisfactoriamente. 
  • El software y hardware de un servidos son muy determinantes. Un hardware regular puede que no sirva para cierta cantidad de cliente. Generalmente se necesita software y hardware específico, sobre todo en lado del servidor para hacer un mejor trabajo. 
  • El cliente no puede disponer de los recursos que existan en el servidor.   

TIPOS DE SERVIDORES
  • Servidores DNS. Estos servidores son los que se encargan de devolver la dirección IP como respuesta a una petición, o también puede devolver la dirección de otro servidor DNS que contiene esta información.
  • Servidores de Correo. Son los que almacenan y mandan los mensajes de correo electrónico (e-mail). Funcionan igual que el servicio de correo convencional. La información que manejan estos servidores son los mensajes de correo.
  • Servidores Web. Almacenan sitios web, antes eran únicamente páginas de Hipertexto en HTML, ahora también se incluyen imágenes, sonidos, ficheros ejecutables, bases de datos, etc. En estos tiempos, casi todos las páginas web están adoptando esta interfaz y responden a las peticiones de los navegadores. La información que están viendo en este blog proviene de un servidor web donde se guardan estas páginas.
  • Servidores FTP. Estos servidores almacenan ficheros preparados para descargarse y consultados mediante técnicas FTP. Al principio, la mayoría de la información que estaba en internet se encontraba en estos servidores, pero ahora se está disminuyendo el uso de estos servidores.
  • Servidores de terminales. Un ordenador que se utiliza para conectar varios modems así como una conexión de red de alta velocidad a otro ordenador (host). Este servidor atiende las llamadas telefónicas de los módems y pasa la comunicación al host por la línea de alta velocidad. Esta función se conoce como "Front-End" en informática.

REFERENCIA. http://es.wikipedia.org/wiki/Cliente-servidor

Hojas de estilo CSS

Las hojas de estilo en cascada (Cascading Style Sheets) es un lenguaje que se utiliza para definir el estilo de un HTML o XML.  World Wide Web Consortium es el que se encarga de formular la especificación de las hojas de estilo.

Existen tres tipos de estilos:
  • Hoja de estilo externa: es la que se encuentra almacenada en un archivo diferente al archivo donde se encuentra el código HTML de la página web. Esta es la más utilizada ya que separa completamente las reglas de formateo para el HTML de la estructura básica de la página.
  • Hoja   de estilo interna: es la hoja de estilo que se encuentra dentro de un documento HTML. Esta se pone a la derecha dentro del elemento head, para que de este modo se pueda separar la información del estilo del código HTML. Esta hoja de estilo se utiliza generalmente cuando se quiere proporcionar alguna característica a una página web en un simple fichero.
  • Estolo en línea: es un método que permite insertar estilo de página, dentro de una etiqueta HTML. Esta forma no es la más adecueada. El poner la descripción de formateo dentro de un documento de la página web, a nivel de código es una tarea larga y tardada. Este método se recomienda para dar formato a correos electrónicos en HTML.
VENTAJAS DE UTILIZAR HOJAS DE ESTILO
  • Con esto tienes un control de la presentación de una página web, con esto se agiliza la acutualización de la página.
  • Los navegadores web permiten a los usuarios especificar la hoja de estilo local que se aplicará a una página web, con esto aumenta mucho la accesibilidad.
  • Una página puede tener diferentes hojas de estilo según el dispositivo que la muestra o por elección del usuario.
  • El HTML es más claro y se reduce su tamaño, siempre y cuando no se utilicen estilos de línea.

Pero se preguntarán, ¿Como funcionan estas hojas de estilo?. Bueno, en una hoja de estilo usamos reglas que consisten en elegir selectores a los cuales se le asignan ciertas propiedades. Como por ejemplo, color de fondo, color de letras, tipo de letra, tamaño de letra, entre otros, como se muestra en la siguiente imagen.



Bueno, los selectores son utilizados para escoger los elementos a los que les vamos a aplicar las propiedades. Existen diferentes tipos de selectores, los más importantes se los mostraré.

Si queremos escoger una etiqueta, solo escribimos su nombre. Si queremos establecer las propiedades para los enlaces se hace de la siguiente forma.



También es posible elegir un elemento único utilizando su atributo id. Para esto se hace lo siguiente.
 

Se puede definir una clase y hacer que varios elementos la usen, escribiendo un punto antes del nombre. De la siguiente forma.

 
Después podemos usar esta clase en los párrafos que queramos (o en cualquier otro elemento), usando el atributo class de la siguiente forma:

Se puede seleccionar también ciertos elementos, siempre y cuando estén contenidos dentro de otros. Por ejemplo si queremos seleccionar los < li > pero solo de las listas sin ordenar sería de la siguiente forma.


Estas son los principales selectores, espero que les sirva de algo. Saludos

HTML

HTML - HyperText Markup Languaje (Lenguaje de Marcado de Hipertexto), como ya sabemos este es el lenguaje más predominante para elaboración de una página web. Se usa para describir la estructura y el contenido en forma de texto. HTML se escribe en forma de <etiquetas >. También puede incluir un script, el cual puede afectar el comportamiento de navegadores web.  

Bueno siguiendo con el tema, HTML tiene ciertos componentes que son muy importantes, entre ellos elementos y sus atrubutos, tipos de dato y la declaración del tipo de documento.


ELEMENTOS

Los elementos son la estructura básica de HTML. Estos tienen dos propiedades: atributos y restricciones, estos son necesarios para que el documento HTML se considere válido. Un elemento normalmente, tiene una etiqueta de inicio < nombre_elemento>y una etiqueta de cierre < / nombre_elemento> . Los atributos de estos elementos se encuentran en la etiqueta de inicio y el contenido está ubicado entre las dos etiquetas. < nombre_elemento atributo = "valor" >Contenido< / nombre_elemento>. Existen ciertos elementos, como < br> que no tienen contenido ni llevan etiqueta de cierre.

Les pondré algunos ejemplos de estos elementos:

< html> --> este se tiene que poner siempre para empezar a escribir el html y al final de todo tu html lo tienes que cerrar.

< head>Ejemplo --> esto se pone para que sea la cabeza de la página, es lo que aparece en las pestañas de la página o en el título de arriba de la barra de herramientas del navegador.

< title></span></b><span style="font-family: "Trebuchet MS",sans-serif;">Progra web</span><b><span style="font-family: "Trebuchet MS",sans-serif;">Progra web--> este es el título principal de la página el que aparece cuando se abre tu página mero arriba.

< body> --> aquí comienza tu cuerpo principal, donde irá toda la información, tablas, imagenes y todo lo de la página web.

hola soy carmen! -->Esto es el texto que puse dentro del body.

< / body >
--> aquí se cierra la etiqueda body
< / html >-->aquí se cierra la etiqueta html.

El marcado estructural es el que describe el propósito del texto. Por ejemplo <h2 >Carmen</ h2>; establece que "Carmen" es un encabezado de segundo nivel. Este marcado no define como se verá el elemento. Puedes decidir un formato específico utilizando las hojas de estilo css.

El marcado presentacional es el que describe la apariencia del texto, sin importar que función tenga. Por ejemplo < u >subrayado< / u> indica que ese texto en navegador web debe mostrarse asi: subrayado así como también < b > < /b > se muestra como negrita, entre otras cosas.

El marcado hipertextual se utiliza para enlazar partes de documentos con otros documentos o con otras parets del mismo documento. Para crear estos enlaces se tiene que poner la etiqueta < a > junto al atributo ahref, el cual establece la dirección URL a la que apunta el enlace. Por ejemplo un enlace a mi blog sería < a href = "http://carmen-suarez.blogspot.com >BLOG CARMEN< / a>. Esto también se utiliza para enlazar a imagenes.


ATRIBUTOS DEL BODY

< body bgcolor=... >
Es para definir el color de fondo

< body text=... >
Es para definir el color de texto
< body link=... >
Es para definir el color de los enlaces 

ETIQUETAS DE TEXTO

< pre > < / pre>
Crea texto preformateado
< h1> < / h1>
Crea el título principal
<i  > < / i >
Crea texto en itálicas
< tt > < / tt >
Crea texto teletipo
< cite > < / cite >
Crea una cita, usando itálicas
< strong > < / strong >
Enfatiza una palabra (italicas o negritas)

FORMATO

< p > < /p >
Crea un párrafo nuevo
< p align=... >
Alinea un párrafo
< dl > < / dl >
Crea una lista de definición
 < ol > < / ol >
Crea una lista enumerada
< ul > < / ul >
Crea una lista con puntos

TABLAS 

< table > < / table >
Crea una tabla
< tr > < / tr >
Filas de las tablas

< td > < / td>
Celdas de la tabla

ATRIBUTOS DE LAS TABLAS
< table border=... >
Grosor del borde de la tabla

< table cellspacing=... >
Espacio entre las celdas

< table width=... >
Ancho de la tabla en pixeles o en porcentaje

< tr colspan=... >
Cantidad de columnas dentro de una celda

< td rowspan=... >
Cantidad de filas de una celda


FORMULARIO
< form > < / form >
Crea un formulario

< select multiple name = "NAME" size=... >< / select >
Crea un menú de desplazamiento. Size es el número de opciones visibles antes de tener que desplazarse.
< option >
Es cada opción del menú

< select name = "NAME" > </  select >
Crea un menú desplegable
< textarea name = "NAME" cols = 40 rows = 8 > < / textarea >
Crea una área de texto

< input type = "checkbox" name = "NAME" >
Crea una checkbox

< input type="radio" name="NAME" value="x" >
Crea un radio button
< input type = text name = "foo" size = 20 >
Crea un área de texto de una sola línea. Size es el maximo de caracteres

< input type = "submit" value = "NAME" >
Crea un botón de envio

Les dejo un tutorial de HTML por si no saben bien que onda con esto, les servirá mucho. :)

Tutorial de HTML