miércoles, 11 de marzo de 2015

Crar Jar Netbeans con librerias externas

CREAR UN ARCHIVO JAR NETBEANS CON LIBRERÍAS EXTERNAS

A principios de cuenta es necesario saber que en Netbeans puedes crear un archivo .jar haciendo clic en clear and build y si existen librerías externas Netbeans las guardara en una carpeta lib. 

La carpeta lib estará contenida dentro de la carpeta dist, donde también estará el jar que hemos creado.

Una vez dicho esto conozco dos maneras de incluir las librerías para que nuestro archivo .jar se ejecute sin problemas.

  1. Agregar la carpeta lib en el directorio donde pondremos nuestro archivo .jar para cuando necesite alguna librería la tome de la carpeta lib.
  2. La segunda forma de incluir en un archivo .jar se describe a continuación.
Crear un archivo distribuible jar para poder usar las aplicaciones que haces en java no tiene mucha ciencia y sino quieres meterle nada especial y simplemente quieres que se ejecute el programita en cuestión con netbeans tienes que hacer lo siguiente:
  1. Establecer el proyecto del que quieres obtener el jar como proyecto principal
  2. Ir al menú Run y elegir Clean and Build Main Proyect o pulsar Mayúsculas+F11
Otra opción es haciendo click derecho en el proyecto elegido elegir Clean and Build y se obtiene lo mismo. Lo hagas de la forma que lo hagas la primera vez hay que elegir Clean and Build y luego si quieres puedes usar Build o Build Main Proyect (ó F11).
El .jar resultante esta en la carpeta dist dentro del proyecto de netbeans.
Pero si has usado alguna librería externa netbeans no te la incluye en el jar sino que la deja mete en la carpeta lib (que también esta dentro de la carpeta dist). Para incluir la librería externa en el jar tienes que hacer lo siguiente:
  1. Descomprime el jar (Si usas winrar elige extraer aquí) y tendrás la carpeta lib y las dos que había dentro del jar META-INF y otra que tendrá el nombre de tu aplicación.
  2. Abre el archivo MANIFEST.MF que esta en la carpeta META-INF y modifica la ruta en la que buscará las librerías. Por ejemplo si tenemos Class-Path: lib/log4j-1.2.16.jar para que funcione al incluir la carpeta lib dentro del .jar la ruta deberá de ser Class-Path: ./lib/log4j-1.2.16.jar.
  3. Selecciona las 3 carpetas, botón derecho Añadir al archivo… le pones el nombre de tu aplicación (si quieres) eliges ZIP como formato del archivo y le das a aceptar (Si no usas winrar comprímelo en un ZIP como se haga teniendo en cuenta que lo que necesitas es comprimir las 3 carpetas sin que estén dentro de otra porque sino no funcionará el jar).
  4. Ahora solo queda cambiar la extensión del archivo resultante de .zip a .jar y ya tienes tu jar listo y con tus librerías externas incluidas.
Así de rápido y sencillo es incluir librerías (imágenes, los .java o lo que quieras) en el jar del proyecto usando NetBeans.
IMPORTANTE
Esta segunda forma de incluir librerías externas dentro de un archivo ,jar fue información totalmente copiada textualmente de la siguiente página: http://programandoointentandolo.com/2013/04/crear-archivo-jar-en-netbeans-con-librerias-externas.html





lunes, 9 de febrero de 2015

Editor "VI"

Editor "vi"

La siguiente información fue recuperada en su totalidad de: http://iie.fing.edu.uy/~vagonbar/unixbas/editorvi.htm

Uso básico de vi.

El editor vi es un editor de texto de pantalla completa que maneja en memoria el texto entero de un archivo. Es el editor clásico de UNIX; está en todas las versiones. Puede usarse en cualquier tipo de terminal con un mínimo de teclas; esto lo hace difícil de usar hasta que uno se acostumbra.Existe un editor vi ampliado llamado vim que contiene facilidades adicionales, así como diversas versiones del vi original. En todos los casos, el conjunto de comandos básicos es el mismo.
Existen en UNIX otros editores más potentes y versátiles, como emacs, que provee un ambiente de trabajo completo; también versiones fáciles de manejar como jove o pico, o aún mínimas e inmediatas como ae. En ambiente X-Windows hay muchos editores amigables, fáciles de usar y con múltiples capacidades. No obstante, vi está en todos los UNIX, requiere pocos recursos, se usa mucho en administración, para programar y en situaciones de emergencia. En casos de roturas de discos, corrupción de sistemas de archivos, errores en el arranque y otras catástrofes, puede ser el único editor disponible. Como la mayoría de las configuraciones en UNIX se manejan editando archivos, disponer de esta capacidad es esencial en la administración de un sistema.

Modos de vi.

Existen tres modos o estados en vi:
  • modo comando: las teclas ejecutan acciones que permiten desplazar el cursor, recorrer el archivo, ejecutar comandos de manejo del texto y salir del editor. Es el modo inicial de vi.
  • modo texto o modo inserción: las teclas ingresan caracteres en el texto.
  • modo última línea o ex: las teclas se usan para escribir comandos en la última línea al final de la pantalla.

Guía de supervivencia.

Con unos pocos comandos básicos se puede ya trabajar en vi editando y salvando un texto:
vi arch1  arranca en modo comando editando el archivo arch1
i         inserta texto a la izquierda del cursor
a         agrega texto a la derecha del cursor
ESC       vuelve a modo comando
x         borra el caracter bajo el cursor
dd        borra una línea
h o flecha izquierda     mueve el cursor un caracter a la izquierda
j o flecha abajo         mueve el cursor una línea hacia abajo
k o flecha arriba        mueve el cursor una línea hacia arriba
l o flecha derecha       mueve el cursor un caracter a la derecha
:w        salva el archivo (graba en disco)
:q        sale del editor (debe salvarse primero)

Uso avanzado de vi.

Invocación de vi.


  vi
abre la ventana de edición sin abrir ningún archivo.
  vi arch1
edita el archivo arch1 si existe; si no, lo crea.
  vi arch1 arch2
edita sucesivamente los archivos arch1 y luego arch2.
  vi +45 arch1
edita el archivo arch1 posicionando el cursor en la línea 45.
  vi +$ arch1
edita el archivo arch1 posicionando el cursor al final del archivo.
  vi +/Habia arch1
edita el archivo arch1 en la primera ocurrencia de la palabra "Habia".

Cambio de modo.


comando a texto:
   teclas de inserción i I a A o O, o

   tecla de sobreescritura R.
texto a comando:
   tecla ESC.
comando a última línea:
   teclas : / ?
última línea a comando:
   tecla ENTER (al finalizar el comando), o
   tecla ESC (interrumpe el comando).

 
Confundir un modo con otro la de mayor dificultades para el manejo de vi. Puede activarse un indicador de modo escribiendo
  :set showmode
Esto hace aparecer una leyenda que indica si se está en modo comando o inserción.

Modo Comando.

El editor vi, al igual que todo UNIX, diferencia mayúsculas y minúsculas. Confundir un comando en minúscula digitando uno en mayúscula suele tener consecuencias catastróficas. Se aconseja evitar sistemáticamente el uso de la traba de mayúsculas; mantener el teclado en minúsculas.

Números multiplicadores.

Muchos comandos aceptan un número multiplicador antes del comando. La acción es idéntica a invocar el comando tantas veces como indica el multiplicador. Ejemplos:
  10j
en modo comando avanza 10 líneas;
  5Y
copia 5 líneas y las retiene para luego pegar.

Ejemplos de manejo.

Los siguientes ejemplos de manejo asumen que el editor se encuentra en modo comando.
flechas       mueven el cursor (si el terminal lo permite)

h j k l       mueven el cursor (igual que las flechas)
itextoESC     inserta la palabra "texto" y vuelve a comando
x             borra el caracter sobre el cursor
dw            borra una palabra
dd            borra una línea
3dd           borra las 3 líneas siguientes
u             deshace último cambio
ZZ            graba cambios y sale de vi
:q!ENTER      sale de vi sin grabar cambios
/expresiónENTER     busca la expresión indicada
3Y            copia 3 líneas para luego pegar
:6r arch3     inserta debajo de la líne 6 el archivo arch3

Movimiento del cursor:

flechas      mover en distintas direcciones

h o BS       una posición hacia la izquierda
l o SP       una posición hacia la derecha
k o -        una línea hacia arriba
j o +        una línea hacia abajo
$            fin de línea
0            principio de línea
1G           comienzo del archivo
G            fin del archivo
18G          línea número 18
Ctrl-G       mostrar número de línea actual
w            comienzo de la palabra siguiente
e            fin de la palabra siguiente
E            fin de la palabra siguiente antes de espacio
b            principio de la palabra anterior
^            primera palabra de la línea
%            hasta el paréntesis que aparea
H            parte superior de la pantalla
L            parte inferior de la pantalla
M            al medio de la pantalla
23|          cursor a la columna 23

Control de pantalla.

Ctrl-f    una pantalla adelante

Ctrl-b    una pantalla atrás
Ctrl-l    redibujar la pantalla
Ctrl-d    media pantalla adelante
Ctrl-u    media pantalla atrás

Ingreso en modo texto:

i    insertar antes del cursor
I    insertar al principio de la línea
a    insertar después del cursor
A    insertar al final de la línea
o    abrir línea debajo de la actual
O    abrir línea encima de la actual
R    sobreescribir (cambiar) texto

Borrar

x     borrar caracter bajo el cursor

dd    borrar línea, queda guardada
D     borrar desde cursor a fin de línea
dw    borrar desde cursor a fin de palabra
d$    borrar desde cursor a fin de línea
d0    borrar desde cursor a principio de línea

Copiar y pegar

Y o yy      copiar línea

P           pegar antes del cursor
p           pegar después del cursor
yw          copiar palabra
y$          copiar de cursor a fin de línea
"ayy o "aY  copiar línea en buffer llamado 'a'
'a' "ayw    copiar palabra en buffer llamado
"ap         pegar desde buffer 'a', a la derecha del cursor
"aP         pegar desde buffer 'a', a la izquierda del cursor
"bdd        borrar línea y guardar en buffer 'b'
"bdw        borrar palabra y guardar en buffer 'b'

Búsqueda

/str    buscar hacia adelante cadena de caracteres 'str'

?str    buscar hacia atrás cadena de caracteres 'str'
n       repetir último comando / o ?
N       repetir último comando / o ? para el otro lado
fc      buscar el siguiente caracter 'c' en la línea
Fc      buscar el anterior caracter 'c' en la línea
tc      ir al caracter anterior al siguiente 'c'
Tc      ir al caracter posterior al precedente 'c'
;       repetir el último comando f, F, t, o T
,       último comando f, F, t, o T para el otro lado
La cadena a buscar en / o ? puede ser una expresión regular. 
La acción de f, F, t y T alcanza sólo a la línea actual; si el caracter buscado no está en esa línea el cursor no se mueve.

Reemplazo

Estos comandos admiten multiplicadores: un número delante del comando. Al dar un comando de reemplazo el editor coloca un símbolo $ en donde termina el pedido de reemplazo. El usuario escribe normalmente, sobreescribiendo, hasta donde necesite, y sale con ESC. Estos comandos admiten multiplicadores: 3cw abre un área de reemplazo para 3 palabras.
c         reemplaza caracteres
cw        reemplaza palabras
C o c$    reemplaza hasta el fin de línea
c0        reemplaza desde el comienzo de línea

Otros

J     unir dos líneas en una

ZZ    grabar cambios si los hubo y salir
u     deshacer última acción
U     deshacer todos los cambios en una línea

Modo Texto.

BS    borrar caracter hacia la izquierda

ESC   pasar a modo comando

Modo ex o última línea.

:q            salir si no hubo cambios
:q!           salir sin guardar cambios
:w            guardar cambios
:w arch1      guardar cambios en archivo arch1
:wq           guardar cambios y salir
:r arch2      insertar un archivo
:e arch2      editar un nuevo archivo
:e! arch2     idem sin salvar anterior
:r! comando   insertar salida de comando
:shell        salir al shell (vuelve con exit)

Mover

:1    mueve a línea 1 
:15   mueve a línea 15 
:$    mueve a última línea

Opciones

:set                cambio de opciones 
:set nu             mostrar números de línea 
:set nonu           no mostrar números de línea 
:set showmode       mostrar modo actual de vi 
:set noshowmode     no mostrar modo actual de vi

Reemplazo


La sintaxis del comando de búsqueda y reemplazo es la siguiente:
  :<desde>,<hasta>s/<buscar>/<reemplazar>/g
<desde>, <hasta> indican líneas en el archivo; <buscar> y <reemplazar> son cadenas de caracteres o expresiones regulares; / es un separador, s (sustituir) y g (global) son letras de comando para el manejo de expresiones regulares.
 

 :1,$s/Martes/martes/g
cambia Martes por martes en todo el archivo.
  :.,5s/ayuda/&ndo/g
cambia ayuda por ayudando desde línea actual hasta la 5a. línea.

Tipo de terminal.

vi es independiente del tipo de terminal, pero la variable de ambiente TERM debe estar fijada correctamente. Si no se conoce o no existe el tipo exacto de terminal, en la mayoría de los terminales remotos el tipo ansi da buenos resultados. Para fijar el terminal en tipo ansi, digitar
TERM=ansi;export TERM
Algunos comandos, especialmente more y a veces vi, pueden no responder bien en la terminal o el emulador que se está usando. En estos casos, puede usarse Ctrl-L para refrescar la pantalla. 

Fuente:
http://iie.fing.edu.uy/~vagonbar/unixbas/editorvi.htm

miércoles, 1 de octubre de 2014

Servidor Raíz - DNS

Servidor Raíz - DNS



Un Servidor Raíz de DNS es el servidor que tiene la información de dónde se encuentran los nombres para cada zona a nivel internet. De modo que cuando un usuario ingresa una página en su navegador primero consulta al servidor raíz quien le dice a dónde debe ir a consultar hasta llegar al dominio que busca.

El servidor raíz es la parte superior de la jerarquía de los dominios de internet, después sigue el segundo nivel (Ej. mx, es, us, etc.) y luego los dominios que están bajo estos como (uaemex.mx, nic,mx, etc.).

El funcionamiento de un servidor raíz
Dada una consulta de cualquier dominio, el servidor raíz proporciona al menos el nombre y la dirección del servidor autorizado de la zona de más alto nivel para el dominio buscado. De manera que el servidor del dominio proporcionará una lista de los servidores autorizados para la zona de segundo nivel, hasta obtener una respuesta razonable.

¿Cuántos servidores raíz hay en el mundo y dónde se encuentran?


Hasta el 2012 existían 13 servidores raíz en el mundo, de los cuales 10 servidores se encuentran en Estados Unidos y son administrados por dicho país, los otros tres restantes están en Europa y uno en Japón.

Los trece servidores están bajo el dominio root-servers.org y se pueden referenciar por una letra la cual va desde la A - M.

1. VeriSingn es el root-server A (192.41.0.4). Está ubicado en Dulles (Virginia, EEUU).

2. Instituto para la formación científica es el root-server B (192.225.79.201). Está situado en Marina del Rey (California).

3. Cogent Communications es el root-server C (192.33.4.12). Es una multinacional fundada en 1999 situada en Washington.

4. Universidad de Maryland es el root-server D (128.8.10.90) situado en la ciudad College Park.

5. Centro de investigación Ames de la NASA es el root-server E (192.203.230.10). El centro de investigación situado en Silicon Valley (California).

6. Consorcio de Sistemas de internet (ISC) es el root-server F (192.5.5.241), en realidad no es un sólo servidor físico, sino un sistema distribuido de varios servidores DNS a lo lago de diferentes ciudades como Ottawa, New York, Madrid, Roma, Paris, Barcelona, Buenos Aires, etc. Fue el primer servidor distribuido.

7. Departamento de Defensa de EEUU es el root-server G (192.112.36.4) y se encuentra en la capital Ahio.

8. Laboratorio de investigación de la Armada de EEUU es el root-server H (128.63.2.53).

9. Anutonomica/NORDUnet es el root-server I  (192.36.148.17), Es un servidor distribuido en diferentes ciudades.

10. VeriSing tiene un segundo servidor DNS, el root-server J (192.58.128.30), es un servidor distribuido.

11. Centro de Coordinación de Redes IP europeas es el root-server K (192.0.14.129). Es un servidor distribuido por ciudades como: Londres, Amsterdam, Frankfurt, etc.

12. Corporación de internet para la Asignación de Nombres y Números es el root-server L (192.7.83.42). se basa en un servidor distribuido entre los Angeles y Miami (Estados Unidos).

13. WIDE Project es el root-server M (202.12.27.33). Servidor distribuidos que se encuentra en varias ciudades de Tokyo, Seúl, Paris y San Francisco.

¿Qué pasa con los servidores raíz en México?

Como ya nos pudimos dar cuenta en México no contamos con un servidor raíz propiamente pero si tenemos con una replica del servidor raíz F y una copia del servidor raíz L, los cuales recordemos que son servidores distribuidos.

Ambas copias (F y L) están físicamente en la ciudad de Monterrey en este proyecto NIC México colabora y administra dicho servidor.




Acerca de NIC México
NIC México es una organización profesional independiente con la responsabilidad de administrar los nombres de dominio en Internet con terminación .MX. NIC México además de la administración del código territorial .MX, ofrece la asignación de recursos de Internet en México.

Acerca de ICANN
La Corporación para la Asignación de Nombres y Números de Internet (ICANN) es responsable de la administración y coordinación del Sistema de Nombres de Dominio de Internet (DNS). También se encarga de la asignación del espacio de direcciones del Protocolo de Internet (IP), así como de las funciones de gestión del sistema de Nombres de Dominio Genéricos de Primer Nivel (gTLDs) y también de los Nombres de Dominio de Código Territorial (ccTLDs), así como de la administración del sistema de servidores raíz (root servers).


Referencias consultadas (Recuperada el 01/10/2014)
http://www.root-servers.org/
http://www.ietf.org/
http://es.wikipedia.org/wiki/Servidor_ra%C3%ADz
http://www.nic.mx/es/NicMx.Comunicados?id=444
http://www.latinoamericann.org/?q=node/540
http://root-servers.org/
http://www.emezeta.com/articulos/rootservers-los-servidores-raiz-del-mundo

martes, 30 de septiembre de 2014

DNS

     DNS


uDefinición
Domain Name System o Sistema de Nombres de Dominio.
es un sistema de nomenclatura jerárquica para computadoras, servicios o cualquier recurso conectado a Internet o a una red privada.
Su finalidad es facilitar el manejo de direcciones IP.
www.uv.es es equivalente a 147.156.1.4
uTipos de Servidores DNS
- Servidor Primario
- Servidor Secuandario
- Servidor Master
uTipos de Registros de DNS
SOA, NS, A, CNAME, MX, TXT, etc.
uZona de Autoridad
Esta compuesta por un conjunto de dominios.

PRESENTACIÓN
Power Point:
PDF:




D sobre linux

miércoles, 3 de septiembre de 2014

SPANNING TREE PROTOCOL & BROADCAST STORM CONTROL

Spanning Tree Protocol & Broadcast storm control

Spanning Tree Protocol (STP)
Introducción
EL STP es un protocolo que trabaja a en la capa 2 (enlace de datos) del modelo OSI y por lo tanto su principal función es encontrar la ruta adecuada para comunicación a un bajo costo, claro está que como internet también las redes utilizan redundancia de rutas con el único fin de asegurar que los paquetes siempre lleguen a su destino aun cuando algunas rutas se hayan perdido.

El problema que se presenta cuando se tiene redundancia de rutas es cuando utilizamos puentes de red (bridge, dispositivos que interconectan segmentos de red permitiendo la transferencia de paquetes entre los segmentos interconectados) o un conmutador de paquetes (retransmite la información por varias vías hasta que lleguen a su destino).

Los puentes de red o conmutadores de paquetes pueden ocasionar que se generen bucles en la red lo  cual provoca que los paquetes estén circulando un sin número de veces por la red intentando encontrar su destino  y en consecuencia generando trafico basura en la red, en otras palabras, lo anterior implica lentitud en la red que dicho sea de paso es detestado por cualquier usuario actual.

Para que todo lo anterior no suceda es que existe STP el cual permite que sólo haya una ruta activa (aquella de menos costo, es decir, más cercana) y las rutas alternas las deshabilita parcialmente, en caso de que la ruta principal no esté disponible entonces intentará por alguna ruta alterna. La clasificación de las rutas se hace en forma de árbol.

Funcionamiento
El protocolo de STP primeramente identifica cada puente para después elegir el de mayor prioridad en base al menor costo. Una vez elegido este se convierte en la raíz del árbol y por lo tanto será la ruta principal o puente raíz puesto que tiene el menor costo. Después se elige el puerto raíz considerando el puerto que tiene el menor costo hacia el puente raíz.

Luego de elegir el puerto raíz ahora sigue elegir los puertos designados los cuales son elegidos en base al puerto que ofrezca la ruta con menor costo hacia el puerto raíz. Todas las demás rutas o puertos son bloqueados para evitar bucles.
Es importante mencionar que los puentes se comunican a través de mensajes llamados Bridge Protocol Data Units (BPDU), los cuales son los que comunican los segmentos de red y son los que pueden hacen posibles los bucles.

 Broadcast Storm Control
Su objetivo es justamente tener un control sobre el número de tramas de difusión envidadas por el switch, esto para evitar que estas tramas circulando afecten el rendimiento de la red de tal manera que consuman recursos de forma significativa.

Esta función que normalmente esta desactivada en los dispositivos administrables puede protegernos de un ataque de paquetes broadcast que saturen el switch y si a esto le agregamos que no tenemos implementado el Protocolo Spanning Tree esto sería un caos.

Existen 3 niveles de control:

        * Alto: 3.000 paquetes de difusión por segundo

        * Medio: 500 paquetes de difusión por segundo

        * Baja: 100 paquetes de difusión por segundo




Referencias
http://aprenderedes.com/2006/11/protocolo-de-arbol-de-extensionstp/

http://www.cisco.com/c/en/us/td/docs/switches/datacenter/sw/4_1/nx-os/security/configuration/guide/sec_nx-os-cfg/sec_storm.html#wp1109566

http://migerson.blogspot.mx/2012/02/spanning-tree-control-y-broadcast-storm.html

http://enredandoconredes.com/2012/06/20/trafico-broadcast/


miércoles, 27 de agosto de 2014

Web Semántica

Web semántica

Para entender lo que es web semántica primero empecemos revisando el significado de estos dos conceptos por separado.

Sabemos entonces que la web nos permite la distribución de documentos de hipertexto que son accesibles a través de la red de redes  llamada internet medio en el cual podemos visualizar páginas web estáticas o dinámicas y que esta red de redes la podemos “materializar” a través de un navegador web, es decir, podemos saber que existe la comunicación vía internet cuando a través de un navegador visualizamos dicha comunicación.

La web es eso que nos permite visualizar contenido multimedia como imágenes y video a través de una página web y que nos permite ir navegando a través de hiperenlaces.

Semántica lo relacionamos al significado o sentido de las palabras, esto es, que tenga coherencia lo que queremos decir y para hacerlo considera más de un par de palabras.

La web semántica es la distribución de contenidos a través de internet que se alojan en una página web estática o dinámica en la cual podemos ir navegando de un lugar a otro a través de hipertextos o buscadores que tienen por objetivo entender el significado de lo que nosotros escribamos en  lenguaje natural.

La web semántica pretende entender lo que el usuario escribe en un formulario simple como si estuviera pidiéndoselo a otra persona y no a una máquina que le tienes que dar demasiadas especificaciones para que encuentre coincidencias en páginas web y le muestre resultados que no era para nada lo que buscábamos.
Algunos relacionan todo lo anterior con las funcionalidades que debe o tiene la web 3.0, en realidad existe todavía una gran discusión si la web semántica es distinta a la web 3.0 o es que la web semántica es parte de la web 3.0

Mientras lo expertos y la historia se ponen de acuerdo alucinaremos que es lo mismo y por lo tanto la web 3.0 pretende desaparecer la búsqueda por palabras clave  para sustituirlo por búsquedas en forma de expresión humana natural.

La idea de la web semántica o web 3.0 es agregarle un plus a la web 2.0 para lograr entender a una persona en su lenguaje cotidiano y en consecuencia mostrarle resultados personalizados.

Los algoritmos de búsqueda han cambiado significativamente ya que el enfoque de búsqueda como explicábamos anteriormente también ha cambiado, en esta versión de la web, es necesario de algoritmos inteligentes que permitan la consulta o deducción de las necesidades del usuario.

Considero que aunque hay buscadores muy eficientes como google o inclusive bing aún no se ha logrado por completo los deseos de la web 3.0 en su totalidad por que actualmente siguen equivocándose en lo que yo busco cuando navego en internet aunque debo decirlo cada día son más eficientes y cercanos a entender mis necesidades.

Un ejemplo de lo anterior es el hecho de hacer predicciones sobre lo que escribo en relación al contexto y poderme ayudar a completar más rápidamente mis ideas o bien a predecir que canciones serán exitosas mediante un análisis de los contenidos que los usuarios publican o comentan en sus páginas web o en las redes sociales que últimamente están de moda y en donde ciegamente publicamos nuestros sentimientos, gustos, disgustos, etc.

Esta información puede ser analizada inteligentemente para identificar aspectos personales y de este modo enviarte publicidad que tu estarás interesado o bien ayudarte a encontrar algo rápidamente porque los buscadores empiezan a entender más a tu corazón más de lo que  tu cerebro lo conoce.

La web semántica incluye varias cosas interesantes que poco a poco se irán concretando mejor para ofrecernos y sorprendernos cada día tanto así que cuando alguien quiera saber lo que incluye la web semántica pueda llegar a este blog y confundirse quizá un poco más.

Referencias

miércoles, 13 de agosto de 2014

Python, ciclos, if, elif, etc.

Ciclos, if, elif, if en Python

Como ya sabemos para hacer un programa los ciclos son en ocasiones necesarios y nos ahorran mucho código y tiempo, en Python podemos usarlos también.

Ciclo While

cicloWhile.py

# Esto es un comentario en python
# Veremos el ciclo while

b = 1
while b < 11:
        print b
        b = b + 1

Análisis del programa
Como ya sabemos Python es un Lenguaje débilmente tipificado lo cual significa que no es necesario establecer de que tipo de dato cada función, variable, etc. En el programa anterior podemos ver que se crea una variable de tipo b que guarda un entero 1. Después tenemos un ciclo while que como se puede ver tiene una condición para repetirse mientras que b sea menor a 11 es decir imprimirá del 1 al 10 y luego sumará uno a b cada vez que itere.

Es importante recordar también que en Python no existen llaves como en C o Java ya que Python lo sustituye mediante el ordenamiento del código. 

Otra versión del programa anterior es la siguiente 

Utilizando if

b = 1
while b < 11:
        if b == 5:
                print "b = " + str(5)
        print b
        b = b + 1

En donde agregamos un if solamente.

Utilizando elif y else
En Python no existe el swith en donde nos permitía tener varios casos (case) en lugar de eso tenemos el elif el cual funciona me manera similar a un case ya que verifica que cumpla la condición y entra en ese caso, para el else lo que pasa es que actúa como la opción por default.


a = 5
b = 4

if a == 4:
        print a
elif a == 5:
        print "a es igual a " + str(a)


if b == 5:
        print b
elif a == 3:
        print "b es igual a " + str(b)
else :
        print "b debe ser 4"

El resultado debe ser:
a es igual a 5
b debe ser 4