lunes, 22 de noviembre de 2010

Redes computacionales

Una red de computadoras se refiere a varios equipos conectados, ya pueden ser via cables, señales, ondas o cualquier metodo de tranferir datos, archivos, recursos o servicios. Las redes funcionan mediante protocolos, llamados TCP/IP, se trata de una red internapara comunicación de Internet.
Las redes computacionales se pueden clasificar de la siguiente manera:
  1. Red de area personal (PAN): es una red de computadoras para la comunicación entre distintos dispositivos (computadoras, puntos de acceso a internet, telefonos, impresoras, etc.)
  2. Red de area local (LAN): es una de las conexiones mas usadas mediante modems que tengan wifi, es la interconexion de varias computadoras o perifericos, generalmente se conectan laptops.
  3. Red de area metropolitana (MAN): es una red de alta velocidadque da cobertura en un área geográfica extensa, permiten la transmicion de voz, video, datos, etc.
  4. Red de area amplia (WAN): son redes informáticas que se extienden sobre un área geográfica extensa. Contiene una colección de máquinas dedicadas a ejecutar los programas de usuarios.
  5. Red de area de campus (CAN): conecta redes de area local a través de un área geográfica limitada, puede ser mediante un campo universitario o una base militar.
  6. Red de area de almacenamiento (SAN): es una red concebida para conectar servidores, matricesde discos y librerías de soporte.
Las redes computacionales tienen varios componentes, entre los principales con los "Ordenadores", tambien denominados host, generalmente son sitios de trabajo o servidores.
Otro podria ser las "tarjetas de red", ya que esta permite el enlace entre la computadora que contenga esta tarjeta con la transmicion de datos, emplea un protocolo para su comunicacion.



Servidores: es un programa que está diseñado para transferir hipertextos, páginas web o páginas HTML, textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones o reproductores de música. El programa implementa el protocolo HTTP.



Existen diversos tipos de servidores web, pero entre los que mas se destacan son los siguientes:
  • Servidor de archivos: almacena varios tipos de archivo y los distribuye a otros clientes en la red.
  • Servidor de impresiones: controla una o más impresoras y acepta trabajos de impresión de otros clientes de la red, poniendo en cola los trabajos de impresión.
  • Servidor proxy: realiza un cierto tipo de funciones a nombre de otros clientes en la red para aumentar el funcionamiento de ciertas operaciones, este es usado para poder entrar a paginas web bloqueadas o navegar desde otras direcciones ip.
  • Servidor web: como ya habiamos mencionado almacena y tranfiere documentos HTML, imágenes, archivos de texto, escrituras, etc.






domingo, 21 de noviembre de 2010

Software libre

Software libre se refiere a la libertad en que los usuarios tienen al momento de modificar, estudiar, compartir, copiar, etc. cualquier código que tenga este derecho, también puede distribuirlo a los demás. Un programa es software libre si los usuarios tienen todas las libertades de modificarlo o compartirlo. Hoy en día la comunidad de software libre dispone de múltiples herramientas de altísima calidad, ya que con el paso del tiempo ha evolucionado por los usarios. Linux es usado por grandes empresas como la NASA o Google, dando un buen aspecto y mas razones para usarlo.



Existen muchos programas que cuentan con un codigo de software libre, pero existe un navegador y un sistema operativo muy famosos que cuentan con esto:
  1. Sistemas operativos: Linux (Debian, Red Hat, etc.)

2. Navegadores: Mozilla Firefox



GNU/Linux: Linux es un sistema operativo donde combina el nucleo con el kernel libre, denominado Linux. Su desarrollo es uno de los ejemplos más prominente de su software libre; todo su codigo fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los términos de la GPL, que significa "Licencia Publica General de GNU".
Linux puede funcionar de entorno grafico como en modo consola, que se ejecuta desde la terminal, Linux cuenta con varios escritorios graficos, donde los mas pupalres serian:
GNOME, KDE y LXDE.
En Linux tambien nos podemos encontrar que cuenta con muchos compiladores, ya que en este sistema operativo podemos escribir codigos en muchos lenguajes, ya que este los tiene incluidos, como puede ser: C++, Python, Java, Perl, Javascript, C, Ada, PHP, Ruby, entre otros, esto da una gran ventaja para utilizar este gran sistema operativo.


Este es un ejemplo de interfaz grafica del escritorio de Linux.

Entre las principales caracteristicas de Linux podremos encontrar las siguientes:
  1. Multitarea: varios programas (realmente procesos) ejecutándose al mismo tiempo.
  2. Multiusuario: varios usuarios en la misma máquina al mismo tiempo.
  3. Tiene protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.
  4. Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas.
  5. Contiene un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de archivos DOS.
  6. Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario.
  7. En linux casi no encontramos virus, esto sucede ya que podemos actualizarlo cada 6 meses, ya que la compañia Redhat saca nuevas versiones mejoradas de Linux.
Estas son algunas ventajas de usar Linux, ya que es un sistema como ya mencionamos de Codigo abierto, y se puede modificar o distribuir libremente para ir evolucionando este gran sistema operativo.

Mozilla Firefox: Es uno de los navegadores mas populares que existen y el mas usado, Firefox es de codigo libre o abierto, tiene las ventajas de navegacion por pestañas, corrector ortografico, busqueda progresiva, marcadores dinamicos, navegacion privada,
y un sistema de búsqueda integrado que utiliza el motor de busqueda que desee el usuario. Ademas de poder personalizar la ventana con diferentes temas o plugins adicionales para aumentar las opciones de busqueda.


Ventana de forefox personalizada por un tema black.

Caracteristicas que podemos encontrar en Firefox:
  1. Proteccion antiphishing: Cuando encuentres una página web que sea sospechosa de fraude (también conocido como phishing) Firefox te advertirá y te ofrecerá una página de búsqueda para encontrar la página web que realmente estabas buscando.
  2. Bloqueador de ventanas emergentes: Firefox te da control sobre las páginas que estás viendo, bloqueando ventanas emergentes molestas.
  3. Restaurar sesion: si Firefox tiene que reiniciarse o se cierra, cuando se inicie de nuevo lo tendrás exactamente como lo dejaste.
  4. Corrector ortografico: firefox tiene un corrector ortográfico integrado para evitar que comentas errores en las entradas de tu blog o en tu correo electrónico.
  5. Proteccion de programas espias: Firefox no permitirá que una página web descargue, instale, o ejecute programas en tu ordenador sin tu consentimiento explícito.
El software libre cada vez mas va en aumento, permitiendo a los usuarios poder mejorarlo cada dia mas y mas y poder compartirlos con los demas sin ningun tipo de restriccion o problema.

Fuentes: http://www.tufuncion.com/caracteristicas-firefox
es.wikipedia.org/
http://www.wikilearning.com/tutorial/caracteristicas_principales_de_linux-caracteristicas_de_linux/20536-2




Pygame (2 parte)

En esta entrada les mostrare como agregar una pelota a la ventana que habíamos creado en la entrada anterior de pygame, crear dos barritas como si fuera un juego.
Para lograr esto usaremos sprites, los sprites son usados en videojuegos para crear los gráficos de los protagonistas, en este caso nuestro sprite sera una pelota pequeña que rebotara entre la pantalla. Vamo a modificar el codigo que ya teniamos, para no volver a hacer las ventanas ni el fondo.
Para esto cambiaremos el fondo de pantalla que teníamos, ya que usaremos otro mas claro en donde se pueda apreciar la dicha pelota.
El fondo que yo use es este:



Nota: hay que guardar la imagen en la ubicación de nuestro código, así como cambiar el nombre en el código de la imagen para que pueda ser cargada.

Despues de esto descargaremos la imagen de la pelota, esta es la que yo use, pero ustedes pueden poner la que sea, mientras sea pequena:

Después de esto agregaremos las siguientes lineas a nuestro código:
-------------------------------------------------------------------------------------
class Bola(pygame.sprite.Sprite): --> esta función es para declarar las sprites, lo que seria la pelota
def __init__(self): --> aquí solo se inicia la clase de arriba
pygame.sprite.Sprite.__init__(self) -->esa función es parecida a la de arriba que sirve para llamar a la clase para el sprite
self.image = load_image("bola.png", True) -->aquí cargaremos la imagen de la pelota
self.rect = self.image.get_rect() -->en esta función se crean las barras, ya que crear en forma de rectángulo

self.rect.centerx = WIDTH / 2
-->esta linea y la de abajo es para la posición inicial de nuestra pelota, podemos modificar los valores para cambiar su posición.
self.rect.centery = HEIGHT / 2

self.speed = [0.5, -0.5]
-->aquí podemos modificar la velocidad de la pelota, solamente cambiamos los valores.
-------------------------------------------------------------------------------------
Despues de agregarle la clase bola a nuestro código, hay que agregarla, para esto ponemos la siguiente linea antes del bucle while:
-------------------------------------------------------------------------------------
bola = Bola()
-------------------------------------------------------------------------------------

Al final el código nos quedaría así:
-------------------------------------------------------------------------------------
import sys, pygame
from pygame.locals import *
WIDTH = 640
HEIGHT = 480

class Bola(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = load_image("bola.png", True)
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH / 2
self.rect.centery = HEIGHT / 2
self.speed = [0.5, -0.5]
def load_image(filename, transparent=False):
try: image = pygame.image.load(filename)
except pygame.error, message:
raise SystemExit, message
image = image.convert()
if transparent:
color = image.get_at((0,0))
image.set_colorkey(color, RLEACCEL)
return image
def main():
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("lab progra web")
background_image = load_image('pingpong.png')
bola = Bola()
while True:
for eventos in pygame.event.get():
if eventos.type == QUIT:
sys.exit(0)
screen.blit(background_image, (0, 0))
screen.blit(bola.image, bola.rect)
pygame.display.flip()
return 0
if __name__ == '__main__':
pygame.init()
main()
-------------------------------------------------------------------------------------
Nos quedaría así:



Ahora sigue lo bueno, le daremos movimiento a nuestra pelota.Para esto agregaremos las siguientes lineas después de haber declarado la clase bola:
-------------------------------------------------------------------------------------
def actualizar(self, time): -->aquí definimos el método para el tiempo transcurrido.
self.rect.centerx += self.speed[0] * time --->esta linea y la de abajo son complicadas, ya que aqui establecemos la velocidad en la que se mueve la pelota mediante ejes, que serian x, y
self.rect.centery += self.speed[1] * time
if self.rect.left <= 0 or self.rect.right >= WIDTH: ---> esta linea y las otras dos de abajo, indican que si la pelota llegue a cualquier extremo, derecho o izquierdo, rebote.
self.speed[0] = -self.speed[0]
self.rect.centerx += self.speed[0] * time
if self.rect.top <= 0 or self.rect.bottom >= HEIGHT: --->esto es lo mismo de arriba, hace que rebote la pelota al momento de llegar a cualquier extremo.
self.speed[1] = -self.speed[1]
self.rect.centery += self.speed[1] * time
----------------------------------------------------------------------------------------------------------
Después de esto vamos a agregarle un reloj, esto nos servirá para que controle el tiempo en que la pelota rebote en la ventana, para esto agregamos la siguiente linea antes del bucle while
--------------------------------------------------------
clock = pygame.time.Clock()
--------------------------------------------------------

Ahora dentro del bucle while agregamos la siguiente linea para saber cuanto tiempo pasa cada vez que se ejecuta una intersección del bucle
---------------------------------------------------------
time = clock.tick(60)
---------------------------------------------------------

Ahora solo ponemos esta linea para actualizar la posición de la pelota antes de actualizarla con la ventana.
--------------------------------------------------------
bola.actualizar(time)
--------------------------------------------------------

Al final nuestro código quedaría de esta forma:
--------------------------------------------------------------------------------
import sys, pygame
from pygame.locals import *
WIDTH = 640
HEIGHT = 480

class Bola(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = load_image("bola.png", True)
self.rect = self.image.get_rect()
self.rect.centerx = WIDTH / 2
self.rect.centery = HEIGHT / 2
self.speed = [0.5, -0.5]
def actualizar(self, time):
self.rect.centerx += self.speed[0] * time
self.rect.centery += self.speed[1] * time
if self.rect.left <= 0 or self.rect.right >= WIDTH:
self.speed[0] = -self.speed[0]
self.rect.centerx += self.speed[0] * time
if self.rect.top <= 0 or self.rect.bottom >= HEIGHT:
self.speed[1] = -self.speed[1]
self.rect.centery += self.speed[1] * time

def load_image(filename, transparent=False):
try: image = pygame.image.load(filename)
except pygame.error, message:
raise SystemExit, message
image = image.convert()
if transparent:
color = image.get_at((0,0))
image.set_colorkey(color, RLEACCEL)
return image
def main():
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("lab progra web")
background_image = load_image('pingpong.png')
bola = Bola()
clock = pygame.time.Clock()
while True:
time = clock.tick(60)
for eventos in pygame.event.get():
if eventos.type == QUIT:
sys.exit(0)
bola.actualizar(time)
screen.blit(background_image, (0, 0))
screen.blit(bola.image, bola.rect)
pygame.display.flip()
return 0
if __name__ == '__main__':
pygame.init()
main()
--------------------------------------------------------------------------------

Pondré imágenes .jpg ya que nose como capturar imágenes gif para mostrar la pelota en movimiento.





Eso es todo, mas adelante continuare de como agregar las barras en los costados.

Fuente: http://miprogramacionenjuegos.wordpress.com/2007/05/15/la-clase-sprite/
http://razonartificial.com/2010/02/pygame-5-moviendo-sprites/












sábado, 20 de noviembre de 2010

Motores de Busqueda Web

Un motor de búsqueda es un sistema creado para buscar archivos almacenados en servidores web, las búsquedas se hacen mediante "spider", con palabras claves o arboles jerárquicos. Actualmente existen muchos motores de búsqueda, (Google, Yahoo, Hotbot, Bing, etc.) que nos ofrecen una velocidad y eficacia al momento de hacer nosotros nuestra búsqueda.


Actualmente son muchos los buscadores de búsqueda que existen, ya que día a día compiten por ser los mas solicitados, pero les hablare de uno en especifico que para muchos es el mejor en la actualidad, "Google". Google: Google es una empresa cuyo principal producto es el motor de búsqueda. Google tiene múltiples funciones de búsqueda avanzada para refinar las consultas. Su infraestructura principal está compuesta por varios data centers que funcionan con la distrubución RedHat, del sistema operativo GNU/Linux. ¿Como funciona Google?: La tecnologia de Google se basa mediante hipertextos, analiza el contenido de cada pagina web y la posicion de cada termino en cada una de las paginas consultadas. Google utiliza una tecnologia llamada "Page Rank", lo que hace es que cual coloca a los resultados más importantes en primer lugar en la búsqueda, despues mide de forma objetiva la importancia de las páginas web y se calcula que resuelve una ecuación de 500 millones de variables y más de 2.000 millones de términos. Aqui hay una imagen de como Google sigue ciertos pasos para buscar las paginas web consultadas por el usuario:

Google realizar ciertas funciones al momento de hacer sus busquedas en internet, como "Parseo", "Indexacion de documentos" y "Ordenacion".
  1. Parseo: Google se encarga solventar cuaquier error o problema que encuentre en un documento.
  2. Indexacion de documentos y keywords: despues de que google parsea los documentos, cada una de las palabras que la conforman se almacenan en un indice que permite a Google manejar miles de Terabytes muy rapido y agilmente.
  3. Ordenacion: Despues de estos dos pasos, Google ordenara los resultados y mostrara al usuario.



Google ademas de ser el mejor buscador cuenta con numerosos servicio al alcanze del usuario, son muchos pero entre los que destacan son:
  • Google Alerts: te permite ser avisado por correo electrónico acerca de búsquedas y/o textos particulares.
  • Google code search: Es un buscador de código fuente que permite utilizar comandos de búsqueda especiales.
  • Google earth (muy bueno): permite visualizar imágenes de satélite de cualquier rincón del mundo.
  • Google Groups: te permite crear listas de correo, interactuar en ellas y leer los mensajes de Usenet.
  • Google maps (muy bueno): es un servicio de mapeo el cual integra rutas de conducción y localización con mapas de ciudades. Dispone de un API bastante elaborado con el que se pueden realizar aplicaciones independientes que utilicen Google maps.
  • Google mobile: permite el acceso al buscador Google a través de un movil WAP.
  • Google sms: permite acceder a varios servicios del buscador a traves del movil.
Entre otros que cuenta Google.

viernes, 19 de noviembre de 2010

Common Gateway Interface

Common Gateway Interface mejor conocido por sus siglas "CGI", es una importante herramienta que permite al usuario solicitar datos de un programa ejecutado en un servidor web, permite la transferencia de datos entre el cliente y el programa.En una aplicacion CGI, el servidor web pasa las instrucciones del cliente a un programa externo a este.

Una de las ventajas de un CGI, es que puede ser creado por cualquier lenguaje de programacion que cree un archivo ejecutable, como pueden ser Java, Python, C++, Perl, etc. El CGI es comunmente usado para para contadores, bases de datos, motores de búsqueda, formulários, generadores de email automático.
El funcionamiento del CGI es sencillo, primero los script estan almacenados en un servidor, despues son llamados, se ejecutan y dan la informacion al usuario.

Aqui se muestra como interactua la ejecucion de un CGI




Estructura de un CGI:
  • Leer la forma de entrada del usuario.
  • Hacer lo que se desee con los datos.
  • Escribir la respuesta HTML a STDOUT.
Aunque los CGI se puedan programar en cualquier lenguaje, tambien existen otros lenguajes llamados de secuencias de comandos, como el lenguaje Perl, que no necesitan de esta operacion (compilar), siendo un lenguaje mas sencillo para este tipo de aplicaciones, ya que Perl es el lenguaje mas usado por los ususarios para la creaciones de CGI.

Pasos fundamentales para la creacion de un CGI:
  1. Escribir el CGI en el lenguaje deseado, (no hay que olvidar que Perl es el mas usado en este aspecto).
  2. Se debe de colocar el CGI en el servidor, estos archivos normalmente acostumbran a responder a nombres como "cgi-bin", "cgi-local", esto lo hacen para mayor seguridad en los archivos.
  3. Para que el CGI pueda funcionar, se debe de mandar a funcionar desde una pagina web, mediante un enlace.
  4. Despues de esto el programa CGI se conecta a la base de datos a la que esta asociada, despues la base de datos responde al CGI aportando todo lo que el CGI contenga.
  5. Una ves recibidos los datos al CGI, crea un HTML para crear una interfaz, que incluye la informacion extraida de la base de datos.




Razones para el uso de CGI:
  • Es un metodo muy rapido cuando se emplean demaciados codigos.
  • Es compatible con casi todos los sistemas operativos actuales.
  • Compatible con todos los clientes.
  • Se puede emplear cualquier lenguaje de programacion.
Razones por el cual no usar CGI:
  • Su tecnologia es un poco obsoleta.
  • No mantiene un estado.
  • Integracion debil entre el servidor y el CGI.
Enlace
Fuente: www.maestrosdelweb.com/editorial/cgiintro/
es.wikipedia.org/wiki/Interfaz_de_entrada_común

Usabilidad web

La usabilidad web se refiere a la experiencia que puede llegar a tener un usuario con un sitio web. Un sitio que tenga buena usabilidad es aquel que tenga una buena presentacion clara, ligera y entendible. Los diseñadores de paginas web se tienen que esforzar al maximo, ya que con el tiempo los usuarios se vuelven mas exigentes a la hora de navegar entre paginas web.
Los diseñadores de paginas web tienen que tener puntos importantes para el navegante:
  • Navegacion clara y sencilla que hable por si misma como usarla
  • Búsquedas faciles.
  • Texto de presentación preciso y directo.
  • Estructura visible de la página.
Al momento de diseñar paginas web se tienen que tener en claro estos puntos, claro que hay mas extensos, pero esos son los basicos para una buena presentacion.

Esta imagen muestra un diagrama de metas de un diseñador, como puede ser para una empresa que diseña paginas web.



Cuando empezamos a navegar entre paginas web, podemos establecer como estables las paginas que nos gusten, esto quiere decir que el contenido de dicha pagina es claro y estable. Existen 3 factores que deben de emplearse para una buena usabilidad web:
  1. Eficacia del uso: se refiere a que el usuario experimente y aprenda a utilizar una pagina web, posteriormente se le hace mas rapido y facil acceder a ella.
  2. Frecuencia y severidad del error: se trata de corregir errores que los usuarios cometen, ya sea porque no es entendible alguna parte de la pagina, el diseñador tiene que emplear tecnias para corregir esto.
  3. Facilidad de aprender: al momento de que el usuario ingrese a dicha pagina, el usuario se tiene que adaptar de forma rapida, para que si desea volver, lo haga con mucha mas facilidad.
Aqui les mostrare dos paginas web, en donde si comparamos en una se puede ver un trabajo muy desarrollado, en cambio a la otra uno muy pobre, y eso es lo que determina que una pagina tenga buen ranking y visitada por muchos usuarios.



Este es un ejemplo de una pagina web con poca usabilidad web, ya que los colores son pobres, no tiene mucha dinamica, cuenta con muy pocas cosas y el diseño no es tan bueno como otras paginas. Esta pagina se encuentra entre las 25 peores paginas web segun una revista llamada "PC World". Les dejo el link: http://whitehouse.com/

Aqui hay otro ejemplo pero diferente, ya que esta presenta animaciones, noticias, mas dinamismo, y mas interactividad.



http://www.realmadrid.com/cs/Satellite/es/Home.htm

Aqui vimos la comparacion en lo que se podria decir una buena contra una mala pagina web, todo depende de las herramientas que se den y los diseñadores para darle al usuario una mejor navegacion web.

Fuete: www.taringa.net
www.desarrolloweb.com


Interaccion humano-computadora

Este concepto es muy fundamental en la informática, ya que se encarga del diseño, evaluacion e implementación de cualquier aparato tecnológico que interactúen con la persona.



En este concepto hay que tener en cuenta que la interacción no solo puede ser de una computadora, sino también como de celulares, iphone, laptops, ipad, etc, ya que presentan una interfaz gráfica y esta debe ser entendible por el usuario. Para entender mejor este concepto se tienen que tener en cuenta los siguientes puntos:
  • Los desarrolladores deben de tener mucha paciencia al momento de crear el software, ya que tiene que ser muy entendible por el usuario.
  • Tener conocimiento de ingeniería al momento de hacer las interfaces.
  • Capacidad humana para utilizar maquinas.
  • Implementar algoritmos y programas de la interfaz en si.
Componentes:
  1. Usuario: Esto quiere decir que el usuario se puede comunicar a través de visión, audición, tacto y movimiento.
  2. Computador: Los dispositivos de entrada permiten introducir texto, como sería el caso del teclado, el teclado de un teléfono, el habla o bien un escrito a mano, dibujos, selecciones por pantalla, con el ratón.
  3. Origen del proceso interactivo: esto se refiere a que tiene que haber buena comunicación entre el usuario y el computador, por eso la interfaz gráfica tiene que estar diseñada a las necesidades del usuario.


La Interacción humano-computadora es una disciplina relativamente joven, en la que desde el primer ordenador, ha sido necesario el diseño de un sistema de comunicación persona-computadora. La importancia de esta disciplina se pone sobre relieve al leer artículos sobre el tema escritos hace poco más de cuarenta años, en los que se predecían elementos de interacción de los que se dispone actualmente.



Existen siete principios que se tienen que considerar en todo momento a la hora de diseñar la interfaz de usuario: "tolerancia, simplicidad, visibilidad, factibilidad, consistencia, estructura y retroacción."

Fuente: http://es.wikipedia.org/wiki/Interacci%C3%B3n_persona-computador