martes, 3 de noviembre de 2009

Internet 120MB en Portugal


La banda ancha en Portugal sigue mejorando y las ofertas cada vez son más rápidas y económicas. El operador Cabovisao acaba de presentar una oferta de 60 megas desde 58,65 euros y otra de 120 megas desde 65,65 euros. Ambas incluyen más de 90 canales de televisión.

Inicialmente, el servicio lo prestará en las siguientes ciudades: Viseu, Beja, Corroios, Moita, Alcochete, Sesimbra and Palmela. La velocidad de subida es de 3 y 6 megas respectivamente.

Las modalidades bautizadas como "Nitro 60 y Nitro 120" incluyen más de 90 canales de televisión (algunos en alta definición), tarifa plana nacional de llamadas y 30 minutos a móviles. En comparación con España, el precio es más económico y además las prestaciones no tienen nada que ver.

Las ofertas de banda ancha ultrarrápida llegaron a Portugal el pasado año de manos de Clix, un operador de cable que lanzó 100 megas de bajada y 10 de subida desde 64,90 euros. Posteriormente, Zon también lanzó una oferta de 50 megas y otra de 100 megabits con tecnología Docsis 3.0.

La banda ancha móvil también es más rápida en Portugal

Vodafone ofrece actualmente 21,6 megas de bajada y 5,7 megas de subida en movilidad. Además, el límite de tráfico en Portugal es de 6 GB (el doble que en España).



Fuente: http://www.adslzone.net/article3126-portugal-estrena-conexiones-de-120-megas-las-diferencias-con-espana-se-amplian.html

Ademas les tengo algo interesante XD :

Una abuelita de 75 años tiene la banda ancha más rápida del mundo

A Sigbritt Löthberg de Karlstad en Suecia, le han provisto de la conexión doméstica a Internet más rápida del mercado, con transferencias de 40 Gigabites por segundo.

Sigbritt que hasta ahora nunca había tenido un ordenador, resulta ser la mama de la leyenda local de internet Peter Löthberg que junto a Karlstad Stadsnät el departamento de red del ayuntamiento, organizó la conexión.

Hafsteinn Jonsson, jefe de Karlstad Stadsnät network dijo que simplemente era una demostración. Él trataba de conseguir que las operadoras de Internet invirtieran en conexiones más rápidas. Y Peter Löthberg que actualmente trabaja para Cisco, buscaba mostrar líneas de alta capacidad a grandes distancias a bajo precio.

Según la noticia de The Local, esta conexión permite visualizar simultáneamente 1.500 canales de alta definición HDTV o descargar completamente un DVD de alta resolución en solo dos segundos.

La conexión ultrarápida es posible gracias a una técnica de modulación que permite que los datos sean transferidos directamente entre dos routers hasta 2.000 kilómetros sin transpondedores intermedios. Aparentemente la mayor dificultad del proyecto fue instalar Windows en el PC de Löthberg.

No está claro que piensa la abuelita de su conexión o incluso si ella la usará.

Fuente:http://www.thelocal.se/7869/20070712/

viernes, 16 de octubre de 2009

Un Antigeek


Cómo reconocer a un antigeek? :O!

Sacado de un blog que ni me acuerdo XD!!!!...
...no mentiras de : http://solomisfrasescelibes.blogspot.com/2009/07/el-anti-geek.html

Y dice así:

1. Escribe en todos lados con comic sans: osea no importa que sea una presentacion seria para dar un seminario o una conferencia, un borrador de tesis, o una carta, digame usted! si es la fuente del emeeseene, comic sans es siempre la jodida mejor eleccion para estos seres. Y si lo pones' en rosado o verde mejor, y no olvides que brille bastante.!



2. Solo usa hotmail: para este ser correo electronico es sinonimo de hotmail no tiene ni idea que existen otros clientes. Te pide que le hagas un emeeemeeseenee y que se llame pedro@hotmail, o juan@hotmail, no ha pillado aun, que deben haber otros 5millones de pedros y juanes arroba hotmailespuntocom, puesto que internet no es el solar de su casa, aunque seguramente hasta ahi hay uno de esos hablando con una Maria. Wait! esta es la mejor parte: cuando te da su correo te recalca "es en minusculas", ...insisto, ¬¬. Aun le cuesta decir arroba, y constantemente suelta un "aproba o ajobra" o alguna otra mutacion del lenguaje.



3. Se la come con su contraseña: yo que inocente creia no pasaba y eran solo chistes hasta que lo vi con mis propios ojos, 123456, 963852741,
elnombredetunovio(a)actual, la cedula!, la cedula es muy popular debo acotar, conozco yonosecuantospendejos noobs que usan su cedula como contraseña hotmail y para el facebook , lo mas divertido es que sus panas no-geeks (que le odian en secreto y le quieren "hakiar el mesenyer") nunca lo descubriran.


4. Tienen nicks, correos y nombres de usuario llenos de caracteres webones, y caritas felices o infelices, corazones rotos o no, esto depende del status sentimental o de la fase del ciclo menstrual, florecitas remariconas, son larguisimos e incomprensibles por una raza no entrenada "-··-F1*rZZZ1T@ tii @mou (a)-0··|"(L)" eso si en un color bien frikeante que dañe la vista, para eso se bajan su "mesenyer plus!". ¿No crees que sea alguito inadecuado que tus colegas o superiores te añadan al correo como la_flacabella69?.


5. Tienen metroflog X_X


6. Tienen el myspace lleno de gifs animados y mariposas, hadas o calaberas pendejas fondo negro letras blancas, vainas verdes brillantes, 100 listas de reproduccion, 50 pases de diapositivas con "fotitox". Al menos al embobador facebook aun no se le pueden hacer esas maldades.


7. Escriben todo con K, y con Z, y con el culo!, porque Andres Bello se revuelca en su tumba cada vez que confunden "hay" con "ahi", "haya" con alla", la S con la C (por FAVOR, primer grado people, primer grado!).


8. No saben inglés, porque eso es "muy difícil". Aunque deje mucho que desear, Español, el ingles deberia ser poco reto gramatical.


9. Linux les da miedo, no saben lo que es twitter, un tag, no entienden "LOL", le preguntan a google como si le preguntaran una direccion a un gocho, todo lo instalan si dice gratis, o free virus scan o un culo feliz de screensaver! yei!, next, next, next, acepto, finish!; aceptan a cualquiera en su myspace, hi5, facebook, msn...etc. no importa que se llame Troyano!.


10. No pasaran de las primeras lineas de este post.


11. No saben que es un cluster.

domingo, 4 de octubre de 2009

Edicion de Grub en Canaima


Canaima es una distribución del gobierno Bolivariano de Venezuela, basado en Debian.
http://canaima.softwarelibre.gob.ve/cms

Para editar el grub, cómo no puedes usar "sudo" ni "su" entonces debes entrar a la configuración de ventanas de entrada.
*Sistema >administracion>Ventana de entrada.
*Pasas a la pestaña de seguridad y activas la opción para que desde la ventana de entrada pueda entrar el root, pues normalmente por seguridad no se permite hacerlo.
*A lo que marques cierras la ventana y sales de esta sesión para ahora si entrar como root.
*Abres terminal y escribes : nano (es un editor) y modificas el grub, abajo aparece como guardar tus cambios y salir y pss listo.

Puede que no te sirva cambiar el default por el que tu quieras, pero si el tiempo.

Ejemplo para solución:

Instalaste W XP y luego Canaima, entonces sale canaima modo normal, luego recuperacion y de tercero windows.

Entonces en ves de cambiar default 0 por default 3, cambia de lugar windows poniendolo de primero.


Reseumen: Escribe;
nano /boot/grub/grub.cfg
(pues aqui no es menu.lst)

y te sale algo asi:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/update-grub using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
set root=(hd0,2)
search --fs-uuid --set 32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6
if font /usr/share/grub/ascii.pff ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
terminal gfxterm
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set root=(hd0,2)
search --fs-uuid --set 32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6
insmod png
if background_image /usr/share/canaima-estilo-visual/canaima-grub.png ; then
set color_normal=white/black
set color_highlight=green/black
else
set menu_color_normal=white/black
set menu_color_highlight=green/black
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_hurd ###
### END /etc/grub.d/10_hurd ###
(colocas la parte roja en esta parte pero cambias de lugar END blah blah linux de lugar)
### BEGIN /etc/grub.d/10_linux ###
set root=(hd0,2)
search --fs-uuid --set 32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6
menuentry "Canaima GNU/Linux, linux 2.6.26-1-686" {
linux /boot/vmlinuz-2.6.26-1-686 root=UUID=32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6 ro splash quiet vga=791
initrd /boot/initrd.img-2.6.26-1-686
}
menuentry "Canaima GNU/Linux, linux 2.6.26-1-686 (modo rescate)" {
linux /boot/vmlinuz-2.6.26-1-686 root=UUID=32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6 ro single
initrd /boot/initrd.img-2.6.26-1-686
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {
set root=(hd0,1)
chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file is an example on how to add custom entries
### END /etc/grub.d/40_custom ###

Después de cambiar de lugar la entrada de XP y también si quieres cambiar el tiempo de espera osea set timeout.

Queda algo así:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/update-grub using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=15
set root=(hd0,2)
search --fs-uuid --set 32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6
if font /usr/share/grub/ascii.pff ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
terminal gfxterm
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set root=(hd0,2)
search --fs-uuid --set 32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6
insmod png
if background_image /usr/share/canaima-estilo-visual/canaima-grub.png ; then
set color_normal=white/black
set color_highlight=green/black
else
set menu_color_normal=white/black
set menu_color_highlight=green/black
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_hurd ###
### END /etc/grub.d/10_hurd ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {
set root=(hd0,1)
chainloader +1
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/10_linux ###
set root=(hd0,2)
search --fs-uuid --set 32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6
menuentry "Canaima GNU/Linux, linux 2.6.26-1-686" {
linux /boot/vmlinuz-2.6.26-1-686 root=UUID=32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6 ro splash quiet vga=791
initrd /boot/initrd.img-2.6.26-1-686
}
menuentry "Canaima GNU/Linux, linux 2.6.26-1-686 (modo rescate)" {
linux /boot/vmlinuz-2.6.26-1-686 root=UUID=32aaaee3-cb1b-48ab-af8c-3f3de9ce80b6 ro single
initrd /boot/initrd.img-2.6.26-1-686
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file is an example on how to add custom entries
### END /etc/grub.d/40_custom ###


Y todo listo.

martes, 14 de abril de 2009

( Java )Conceptos básicos de Programación Orientada a Objetos Parte I


¿Qué son los objetos?

En informática, un OBJETO es un conjunto de variables y de los métodos relacionados con esas variables.

Un poco más sencillo: un objeto contiene en sí mismo la información y los métodos o funciones necesarios para manipular esa información.

Lo más importante de los objetos es que permiten tener un control total sobre 'quién' o 'qué' puede acceder a sus miembros, es decir, los objetos pueden tener miembros públicos a los que podrán acceder otros objetos o miembros privados a los que sólo puede acceder él. Estos miembros pueden ser tanto variables como funciones.
El gran beneficio de todo esto es la encapsulación, el código fuente de un objeto puede escribirse y mantenerse de forma independiente a los otros objetos contenidos en la aplicación.


¿Qué son las clases?

Una CLASE es un proyecto, o prototipo, que define las variables y los métodos comunes a un cierto tipo de objetos.

Un poco más sencillo: las clases son las matrices de las que luego se pueden crear múltiples objetos del mismo tipo. La clase define las variables y los métodos comunes a los objetos de ese tipo, pero luego, cada objeto tendrá sus propios valores y compartirán las mismas funciones.
Primero deberemos crear una clase antes de poder crear objetos o ejemplares de esa clase.


¿Qué son los mensajes?

Para poder crear una aplicación necesitarás más de un objeto, y estos objetos no pueden estar aislados unos de otros, pues bien, para comunicarse esos objetos se envían mensajes.
Los mensajes son simples llamadas a las funciones o métodos del objeto con el se quiere comunicar para decirle que haga cualquier cosa.
¿Qué es la herencia?

Qué significa esto la herencia, quién hereda qué; bueno tranquilo, esto sólo significa que puedes crear una clase partiendo de otra que ya exista.

Es decir, puedes crear una clase a través de una clase existente, y esta clase tendrá todas las variables y los métodos de su 'superclase', y además se le podrán añadir otras variables y métodos propios.
Se llama 'Superclase' a la clase de la que desciende una clase, puedes ver más sobre la declaración de clases en la página Declarar Clases.
Variables y Tipos de Datos

Las variables son las partes importantes de un lenguaje de programación: ellas son las entidades (valores, datos) que actúan y sobre las que se actúa.
Una declaración de variable siempre contiene dos componentes, el tipo de la variable y su nombre.

tipoVariable nombre;


Tipos de Variables

Todas las variables en el lenguaje Java deben tener un tipo de dato. El tipo de la variable determina los valores que la variable puede contener y las operaciones que se pueden realizar con ella.

Existen dos categorias de datos principales en el lenguaje Java: los tipos primitivos y los tipos referenciados.

Los tipos primitivos contienen un sólo valor e incluyen los tipos como los enteros, coma flotante, los caracteres, etc... La tabla siguiente muestra todos los tipos primitivos soportados por el lenguaje Java, su formato, su tamaño y una breve descripción de cada uno.







Los tipos referenciados se llaman así porque el valor de una variable de referencia es una referencia (un puntero) hacia el valor real. En Java tenemos los arrays, las clases y los interfaces como tipos de datos referenciados.

jueves, 9 de abril de 2009

Java desde Cero


Autor Original (creo): juancho77

CONTENIDOS DEL CURSO

Abarca la instalación del compilador (JDK), la instalación de un IDE (Bluej) sencillo, potente e intuitivo, una breve introducción a la programación orientada a objetos y los factores principales de java: variables, variables de clase, herencia, polimorfismo, etc, etc, etc. Finaliza con algo de interfaces gráficas.

Capitulo 1
  • Instalación de Java en nuestro ordenador
  • Instalación de un IDE para desarrollar nuestros programas. (BlueJ)
  • Conociendo BlueJ

Capitulo 2
  • Introducción a la programación orientada a objetos
  • Introducción al lenguaje de programación Java
  • Expresiones, sintaxis, desarrollo de codigo Java



Capitulo 1: Introducción e Instalación de Java en nuestro ordenador.


Ante de todo, lee esto :

El lenguaje Java se creó con cinco objetivos principales:

  1. Debería usar la metodología de la programación orientada a objetos.
  2. Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
  3. Debería incluir por defecto soporte para trabajo en red.
  4. Debería diseñarse para ejecutar código en sistemas remotos de forma segura.
  5. Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.

Para conseguir la ejecución de código remoto y el soporte de red, los programadores de Java a veces recurren a extensiones como CORBA (Common Object Request Broker Architecture), Internet Communications Engine o OSGi respectivamente.

Para lograr ser portable, Java incorpora su propio Bytecode. El bytecode Java es un código intermedio entre el lenguaje de maquina y el lenguaje fuente. Se podría incluso decir que esta semicompilado. De esta forma, como el bytecode es único para cualquier sistema, se dice que el bytecode es universal, y que la portabilidad esta garantizada. Sin embargo, el bytecode debe ser interpretado cada vez que se ejecuta para que la maquina lo entienda: de esto se encarga la Maquina Virtual de Java (JVM por sus siglas en inglés). La JVM "traduce" el bytecode cada vez que se lo requiere en ejecución, es decir, en tiempo real. Es por esto que muchas veces los programas desarrollados en este lenguaje resultan un tanto mas lentos que otros.

Existen diferentes versiones de la JVM, para distintos tipos de "audiencias". Es muy posible que ya tengas en el ordenador alguna versión de Java dado que hoy en día muchisimos sitios incorporan programas Java embebidos y para ejecutarlos requieren, precisamente, la JVM instalada. La versión más básica y corriente es el JRE (Java Runtime Environment), que en la actualidad se encuentra en su versión... bueno, ya no se sabe qué versión es, dado que Sun distribuye el JRE en un paquete: el J2SE, que en la actualidad se encuentra en su versión 1.4.2. Existen otros tipos de paquetes (o API's), que no trataremos aquí, pero que vale mencionar: J2ME (para celulares) y J2EE (para empresas).

Sin embargo, si ademas de querer ver y reproducir contenido Java deseas desarrollar tus propias aplicaciones es necesario descargar un paquete mas completo que incluya ademas el JDK (Java Development Kit). Este paquete incluye librerias, documentación y fundalmente, el compilador.

Una de las versiones, la que NO debemos descargar, dirá mas o menos: "Java SE Runtime Environment (JRE)". La que SI Smiley debemos descargar dirá mas o menos: "Java SE Development Kit (JDK)". Una vez ubicado nuestro archivo, lo descargamos. El link hasta el dia de la fecha (25/01/2009) es ESTE.
Lo siguiente es elegir el sistema operativo que estamos corriendo: en este tutorial abarcaré solo Linux y Windows por ser los mas populares.

INSTALANDO JAVA JDK EN UNA PLATAFORMA LINUX.

Lamentablemente, o afortunadamente, si estamos, por ejemplo, corriendo Slackware, la única solución es descargar el fichero .bin o rpm e instalarlo en el ordenador.
En la web explican como instalar ambos tipos de ficheros, pero el ejemplo es para JRE. Como se imaginarán, el JDK es exactamente igual, salvo que deberán cambiar el nombre del fichero.
Para que sea mas claro, la parte tachada debe ser cambiada por el nombre de nuestro fichero

sudo aptitude install jre-6u13-linux-i586-p
xD creo que es asi sino pues no se compliquen y vayan a la pagina de SUN y se lo descargan el .bin

INSTALANDO JAVA JDK EN UNA PLATAFORMA WINDOWS.

Como siempre, doble click al ejecutable, siguiente, acepto, siguiente... la instalación en Windows es bien sencilla. En algunos ordenadores es necesario declarar las variables de sistema. Esto hará que el compilador sea accesible para todo el sistema.
Notar que si instalamos solo el JRE, cuando escribimos "java" en la consola veremos una serie de opciones, pero si queremos acceder al "javac" (java Compiler) sucede que "no se reconoce como un comando por lotes...".
--------------------------------------------------------------------------------------------------

A partir de este momento, el compilador de Java ya se encuentra instalado en el equipo, junto con las librerias, la documentación, las clases, y todo lo necesario para crear, compilar y ejecutar contenido Java. Sin embargo, resulta dificil y rebuscado programar usando la consola, por lo que el siguiente paso sera obtener un IDE (Integrated Development Environment) que nos facilite la tarea.
En el curso utilizaremos BlueJ, un entorno desarrollado por universidades destinado a estudiantes y "beginners" en el lenguaje, que nos permitirá manejar clases y objetos de forma sencilla e intuitiva. Ademas propone un acercamiento interesante al diagramado UML aplicando herencia y relaciones. Para descargarlo, visitaremos su website y en la barra de menu seleccionaremos DOWNLOAD.

La instalación de BlueJ es muy sencilla. Tan solo nos solicitará qué versión de Java queremos usar con Bluej (que versión del compilador). Si en vez del JDK instalamos el JRE, el cuadro de selección aparecerá vacío ya que no encontrará ningun compilador disponible. Ahora todo se ve mas claro verdad?
Bajo Linux la instalación tambien es sencilla. Solo hay que aclarar que, al dia de la publicación, la versión GNU del interprete Java no es soportada por BlueJ.
Para instalarlo, debemos ejecutar el siguiente comando para desempaquetar el jar.

en la carpeta donde se encuentra el archivo de instalación de bluej
ruta donde se instalo el jdk -jar nombre del archivo de instalacion de bluej.jar

Nota: si estamos usando alguna versión de Ubuntu, o Slack, o Debian, etc, es recomendable desactivar los efectos especiales del escritorio en caso de sufrir alguna anomalía con el instalador.
Finalmente, para ejecutar BlueJ en Linux hay que activar un script que se encuentra en la carpeta de instalación que hayamos seleccionado. Se ejecuta así:

./bluej # bluej es el nombre del archivo.

USANDO BLUEJ

Una vez instalado Bluej, lo ejecutamos. La pantalla inicial que veremos será algo así en Windows:

http://www.freeimagehosting.net/uploads/075e26a61a.jpg

Bluej trabaja con proyectos. Un proyecto es una colección de clases, documentos de ayuda, librerias, etc. Por eso, para comenzar a trabajar y escribir código tendremos que dirigirnos al menu Project -> New Project. Hecho esto, una pantalla nos obligará a elegir una ubicación para el proyecto y un nombre para guardarlo. Un proyecto de Bluej se verá como una carpeta tradicional en el Explorador de Windows, con sus respectivos archivos adentro. Sin embargo, BlueJ es capaz de detectar carpetas que contienen proyectos y las marca con otro color. Luego, veremos lo siguiente:

http://www.freeimagehosting.net/uploads/1fcebe1f4a.jpg

El programa ahora luce con las opciones de izquierda habilitadas, el mapa de trabajo se torna de otro color y aparece una "hoja" en el campo de trabajo. La hoja representa lo que en realidad es un archivo de texto en el proyecto. No se puede eliminar, y en ella es donde escribiremos todos los datos relativos al Autor, especificaciones de uso, como compilar, etc. Puedes abrirla y editarla haciendo doble click en ella. Si vas a la carpeta donde guardaste el proyecto veras que existe un archivo .txt que contiene lo que hayas escrito anteriormente.
Todos los codigos Java se escriben en Clases. Por ahora no explicaremos que son, solamente las mencionaremos para que podamos seguir viendo mas sobre BlueJ. Si estas ansioso, puedes visitar ESTE link. Para crear una clase, debemos usar el boton correspondiente en el panel de opciones izquierdo: aquel rotulado "New Class". Luego debemos escribir un nombre para nuestra clase y seleccionar el tipo de clase que crearemos. Hecho esto, BlueJ mostrará un rectangulo anaranjado que representará a la clase en el proyecto. En el explorador de Windows, una clase se verá como un archivo de la forma:

nombre_de_la_clase.class

en la carpeta del proyecto.
Para editar una clase, debemos hacer un doble-click en el icono que la representa. El editor de clases de BlueJ no es mas que un editor de notas común (como notepad), con ciertas funciones basicas de un compilador: compilar , debuggear, insertar funciones, insertar comentarios, etc. El contenido default de una clase esta indicado en el archivo:

ruta_de_la_carpeta_de_instalación\BlueJ\lib\english\templates\newclass\stdclass.tmpl

y es editable con el bloc de notas.
En la siguiente imagen se ven dos clases recien creadas, el are de proyecto, y el archivo de comentarios abierto. Las flechas que interconectan las clases representan las relaciones "has a" y "is a" (o de pertenencia y herencia), conceptos de Programacion Orientada a Objetos que se verán mas adelante.
BlueJ adopta el estandar UML para representar los proyectos: UML significa Unified Model Design y es uno de los modelos mas utilizados para el diseño de programas a nivel diagramado. Para mas información puedes visitar este LINK de wikipedia.

Por último, para cerrar esta reseña BASICA sobre BlueJ, hay que señalar que en el panel Ayuda hay una opción que nos permitirá acceder facilmente al Javadoc Online. En este enlace ya hablamos un poco del Javadoc.
Esta opcion es la que se ve resaltada en la siguiente imagen, que ademas incluye una muestra de la "terminal" de BLUEJ (la terminal muestra las salidas que provocaria nuestro programa ante la ejecución de ciertas sentencias, que luevo veremos, y ademas nos muestra, en el caso de haberlos, los errores de ejecución):

Con esto damos por terminada la parte I del curso.

Capítulo 2: POO y código Java.

Para iniciar esta segunda parte, haremos un pequeño acercamiento al concepto de Programación Orientada a Objetos y el trabajo con este paradigma.
La POO propone un paralelismo entre el mundo real y el programa. Por ejemplo, si deseamos escribir un software para un taller de autos podriamos comenzar identificando a los empleados, los autos a reparar, los repuestos, etc. Todos ellos tendrán que estar representados en el programa. Así, podríamos necesitar que con un botón se consulte a un objeto deposito cuantos respuestos del tipo neumatico quedan. En este hipotetico caso, el objeto almacen ofrece un servicio consultar() que recibe como parametro el tipo de elemento que queremos averiguar.
Hasta aquí seguramente no has entendido nada. Solamente hemos hecho una introducción a muchos de los conceptos que irán sonando con el transcurso del curso, y que son elementales para dominar Java.

En Java, todos los códigos se escriben en Clases. Las clases son unidades básicas que representan a un "objeto del mundo real": class persona, class auto, etc. Las clases ofrecen servicios: Los servicios son a Java lo que los procedimientos y funciones son a Pascal, y tenemos dos tipos: setters (establecedores) y getters (obtenedores). Los del primer tipo no retornan ningún valor, y su misión es modificar variables o imprimir datos en pantalla, por ejemplo. Los getters, en cambio, retornan valores de algún tipo.

Vamos a ver todo esto mas claro con un ejemplo: abrimos BlueJ y le damos a Project -> New Project. Creamos una nueva clase con el botón "New Class" ubicado en el panel izquierdo. El nombre de la clase puede ser el que quieras. En el mundo de la programación orientada a objetos se promueve que el nombre de la clase empieze con mayuscula y ademas sea representativo del objeto al que identifica. Ejemplo: una clase que represente a un Auto no debería llamarse Moto.class, ni tampoco auto.class, sino mas bien Auto.class. Una vez tengamos la clase creada, veremos al abrirla que BlueJ muestra un texto predeterminado. Borramos todo eso y copiamos lo siguiente:

public class XInfor
{
private String mensaje;
public XInfor ()
{
mensaje="Welcome Hell!";
System.out.println(mensaje);
}

public void modificarMensaje(String nuevoMensaje)
{
mensaje=nuevoMensaje;
}
public void mostrarMensaje()
{
System.out.println(mensaje);
}
}

Paso a explicar el codigo:

public class XInfor

Así es como toda clase debe empezar. public es un modificador, del cual
hablaremos más adelante y no debe preocuparnos por ahora. Luego class y
el nombre que hayamos elegido.

private String mensaje;
public XInfor ()
{
mensaje="Welcome Hell!";
System.out.println(mensaje);
}

La primera línea es una declaración de una variable. En este caso, de
tipo String, que representa a cadenas de texto. Mas adelante hablaremos
de tipos de variables. Para saber: esta es una variable de instancia.
Lo que queremos representar es que todos los objetos XInfor que creemos
tendrán una variable de tipo String llamada mensaje.
Lo que le sigue
es un tipo especial de servicio. Se llama constructor, y es llamado
inmediatamente despues de que se crea el objeto. En realidad, el
constructor "construye" el objeto, ya que es aquí donde generalmente se
asignan los valores a las variables de instancia. En este caso, le
asignamos a mensaje el valor Welcome Hell!.
Finalmente, lo que hacemos es llamar a una clase que proporciona Java embebida.
Esta clase contiene un servicio llamado println, que recibe un argumento de tipo
String como parametro (println(Java.lang.String))), y lo imprime por pantalla.

Los siguiente son dos servicios de tipo void.
El tipo void indica que el servicio no retornará ningún valor. Lo que
hacen los métodos, como dicen sus nombres, es modificar el mensaje e
imprimirlo en pantalla.
Probemos el programa: nos dirigimos a la pantalla del BlueJ, y damos click derecho
al icono de la clase XInfor. Seleccionamos new XInfor().
Veremos como aparece un recuadro rojo e inmediatamente se abre la
pantalla de la Terminal, imprimiendo el mensaje "Welcome Hell!".
El
recuadro rojo representa a un objeto. Como decíamos, a partir del
modelo (la clase) Java crea un objeto: el objeto será capaz de recibir
y procesar nuestros mensajes. Probemos hacer click derecho en el
objeto. BlueJ nos muestra todos los servicios que puede ejecutar.
Seleccionamos modificarMensaje y le enviamos por parametro algo
que deseemos (para que funcione, el texto debe ir entre comillas dobles
-> "TEXTO"). Luego, de la misma forma, seleccionamos mostrarMensaje y vemos que pasa.

Recomiendo probar a modificar el programa anterior:
  • Al llamar a modificarMensaje, el servicio concatene el mensaje actual con el nuevo. El operador de concatenación en Java es el signo de suma (+).
  • Probar incorporando el siguiente servicio y llamandolo a ver que sucede.

public String obtenerMensaje()
{
return mensaje;
}

El lenguaje Java

Como
todo lenguaje de programación, java tiene una Sintaxis y una Semántica
propia. Empezaremos por ver reglas básicas de escritura.
  • Excepto las lineas donde se declaran metodos, clases, etc, todas deben finalizar en ; .
  • Los comentarios son líneas que el compilador no tendrá en cuenta. Se escriben de alguna de las siguientes forma:


//esto es un comentario
/*
esto tambien
*/

  • Algunas de las palabras reservadas mas comunes que veremos en Java son: public, private, class, static, void, instanceof. No podremos usarla para nombres de variables, ni de métodos o clases tampoco.

Variables en Java

Las variables en Java son todo un dilema para los novatos o los que vienen de lenguajes mas "sencillos" como pascal o basic, donde el manejo de la memoria es apenas similar. Veamos: ¿qué es una variable? Una variable es un señalador. Una forma de registrar valores temporales, que logicamente pueden ir variando con el uso del programa. Las variables mantienen referencias a locaciones de memoria en la computadora, y en Java existen dos tipos: variables de tipo primitivo y variables de tipo clase.
Variables Primitivas: son sencillamente una abstracción de la celda de memoria que representan. Los tipos primitivos mas comunes son int, char, long, double, boolean y float. Las variables de este tipo mantienen valores concretos asociados a su tipo.

Variables de Clase:
contienen referencias a objetos. Una variable de clase Auto, por
ejemplo, contendrá una referencia a un objeto Auto, o no. En el segundo
caso, se dice que la referencia es NULA. Es decir, la variable no
contiene nada. Las variables de este tipo mantienen referencias.
Retomando
el ejemplo visto al comienzo, la clase String representa un tipo de
clase. En realidad, String hace referencia a un conjunto de caracteres.
La clase String viene por defecto con Java y fue incluida de forma que
se pueda utilizar como un tipo primitivo (en el sentido de la
declaración y uso). Sin embargo, ahora veremos que no se puede comparar
como si fuera primitiva.

Las variables tambien se dividen según donde esten ubicadas en el código y
a quien "pertenezcan". Tenemos entonces las variables de instancia y las variables de cuerpo.
Las primeras pertenecen a una clase. Son las que modelan el objeto que
se crea a partir de esa clase; pensemos un poquito en esto. Un objeto A
sera igual que otro de tipo A, salvo si se modifican los valores de
instancia de uno de ellos. Un
auto es del mismo tipo que otro auto, pero tendrá distinta marca,
numero de puertas, color, etc. Estas caracteristicas vienen definidas
por las variables de instancia.

Las variables de cuerpo son todas las demas: van declaradas en servicios, y sirven de
auxilio para hacer cálculos y modificaciones.

Declaración de Variables
Es
sencillo. Debemos indicar el tipo y el nombre de la variable. Así, para
declarar una variable de tipo entero que simbolize las ruedas de un

auto, hariamos algo así:

int ruedas;

De esa forma, se crea una locación de memoria que albergará un valor entero.
Se inicializa por defecto a 0 (boolean a false, char a '/0' y
una variable de clase por defecto lleva "null"
). También podríamos haber hecho esto:

int ruedas=4

iniciandola en el valor 4. O esto:

int ruedas; ruedas=4;

Operaciones con Variables

Java presenta distintos tipos de operadores.
Aritméticos: la suma (+), la resta (-), la multiplicación (*) y la división (/).

int ruedas=4; int cables=3; int res=cables + ruedas;

res tendrá un valor de 7.
Asignación: el operador de asignación en Java es el "=".

int booleano; booleano=true;

Existen otras formas abreviadas que incorpora Java para hacer mas
cortas ciertas secciones de código. En el siguiente cuadro se ven las
equivalencias:

http://i29.tinypic.com/dn0qk8.jpg

De union los mas importantes son ++ y --. Como resultado, obtenemos:
genteEnLaFiesta tendrá un valor de 11.


int genteEnLaFiesta=10; genteEnLaFiesta++;

-----
-----
Otra definicion para Compilador:

El compilador es un programa que se encarga de traducir los programas escritos por el
programador en lenguaje de alto nivel (entendible por el ser humano) a un lenguaje de
bajo nivel que es el comprensible por la máquina y que, de esta manera, permite que pueda
ser ejecutado por la computadora.

Las primeras tres fases son de análisis: análisis léxico, sintáctico y semántico, fases en
las que se leen los caracteres del código fuente, se analizan, se comprueban si son válidos
y se van reagrupando en secuencias lógicas y frases gramaticales. Esta primera parte es la que
se conoce como Front End.

Y las últimas tres fases son las de síntesis: generación de código intermedio, optimización de código
y generación
de código, que son en las que -a partir del análisis anterior- se genera la traducción para convertirlo
en código objeto o lenguaje máquina. Esta segunda parte se denomina Back End.

Durante todo este proceso, se va ejecutando en forma permanente el manejador de errores, que se encarga
de analizar en cada una de las fases los posibles errores que puede haber durante el proceso de la traducción.

Links para visitar:

http://www.freeimagehosting.net/uploads/62f7f1ae05.jpg
http://www.luiskano.net/blog/2007/09/07/como-instalar-java-jdk-en-windows-xp/
http://www.desarrolloweb.com/articulos/1776.php

viernes, 26 de diciembre de 2008

Pseudocódigo...




Primero una definición de wikipedia: Pseudocódigo.

Ahora sino se entiende por alguna razón sobrehumana está esto:

http://es.wikipedia.org/wiki/Pseudoc%C3%B3digo

http://sophia.javeriana.edu.co/programacion/Recursos/ejercicios/Pensamiento/Parcial_1/SolProblemas_Uso_Algoritmos/Ejercicio_8.html



Bueno en resumen el pseudocódigo es una forma generalizada de aprender-enseñar un lenguaje de programación.

Ejemplo:

(variable1>variable2) entonces
{
mostrar + " la " + variable1 + " es mayor que " + variable2;
final del sí
}

Aunque muchos entienden eso ( creo ) hay otros que no, así que explico:

Sí la variable "variable1" la cual es declarada anteriormente y asignado un valor ejemplo:

Declarar variable1 como entero
variable1==5;

(en este caso "variable1" es de tipo entero osea sin coma flotante y su valor es 5).


Aunque las cosas simples y yo enrede las cosas, por lo menos explique espero entiendan.

Hay que tener en cuenta que en todos los lenguajes no siempre es igual.

jueves, 25 de diciembre de 2008

Pre-Inauguración



Bueno este blog lo cree para tener como nota de todo lo que he aprendido o pienso aprender sobre programación, tengo así todo organizado y lo repasaré. Si puedes deja un comentario para desarrollo y así me ayudas a "crecer".

Saludos y espero no abandonarlo... aunque es el primero que hago.