Archive

Posts Tagged ‘fedora’

Gedit como un IDE

September 20th, 2009 admin 1 comment

classBrowserFull

Gedit es el editor por defecto que trae Gnome.

Gedit tiene tareas básicas como resalto de sintaxis de varios lenguajes de programación, como C, C#, Java, Python entre otros, yo lo uso con frecuencia para editar fuente.

Hace poco descubrí muchas utilidades que ofrece, pero esto que ví realmente me dejó descrestado, la posibilidad de personalizar Gedit a tal punto que es posible navegar entre las clases que realizo en Java, el plugin es llamado gedit-classbrowser, se puede descargar desde http://www.stambouliote.de/projects/gedit_plugins.html, la instalación resultó ser sencilla:

Habilité el navegador de archivos de gedit, que me ubica un panel lateral para navegar entre los archivos del sistema.

Despúes de descargar el plugin lo descomprimí y renombre la carpeta a classbrowser.

Despúes de esto ubiqué el contenido al interior de la carpeta en ‘/usr/lib64/gedit-2/plugins‘; es necesario activar el plugin:

classBrowser

En la barra de herramientas: Editar -> Editar -> Preferencias [Complementos] y activar el plugin de Class Browser.

pero al arrancar Gedit en consola, me dí cuenta que solicitaba el ctag, no lo encontraba y no navegaba por las clases que abria, así que instalé el paquete:

# yum install ctags -y

Ya con esto el plugin funciona.

Pd: El truco lo ví en : http://byroncorrales.blogspot.com/2009/07/transformando-gedit-en-un-ide-tu-medida.html

Annotation @Override, Polimorfismo, Herencia

September 15th, 2009 admin 2 comments

Ahora ando aprendiendo Annotations en Java.

Leyendo la función del annotation @Override, consiste en que si la clase Padre y  la hija tienen un método con el mismo nombre, con este annotation no hace una sobre carga del método sino que lo redifine usando el método de la clase Hija, al fin y al cabo esa clase es la que usa el annotation.

Haciendo un ejercicio con una clase base ‘Parent’ y otra clase ‘Child’ que hereda, en ambas clases hay solo un método llamado ‘doWork()’ pero que imprimen distintos mensajes, la clase hija ‘Child’ declara un annotation ‘@Override’ obtuve mensjaes de error y comportamientos no deseados, moleste mucho con las clases y tenia esto:

// Clase Parent.java
class Parent {
public static void doWork ()
{
System.out.println (” Padre”);
}
}

// Clase Child
class Child extends Parent {
@Override    –> Acá uso el annotation para redefinir el método de la clase Padre
public static void doWork ()
{

System.out.println (” Hijo”);
}
public static void main (String args[])
{
Parent niño = new Child ();  // Polimorfismo, un Child es de tipo Parent, por eso es posible, no aplica a la inversa
Child niña = new Child ();

niño.doWork ();
niña.doWork ();
}
}

Al compilar la clase ‘Child’ obtenia este mensaje de error:

Child.java:5: method does not override or implement a method from a supertype
@Override
^
1 error

Si comentaba la línea del anotation podia compilar y obtenía una salida no deseada:

$ java Child
Padre
Hijo

Esto que significa?, que no esta funcionando el polimorfismo, mucho menos una sobrecarga de método, la salida que debo obtener es en ambos casos Hijo Hijo, no debe imprimir en ningún momento el texto Padre, despúes de reventar cabeza un rato, descubrí el motivo:

Los métodos static como son los métodos doWork() de las dos clases son métodos de Clase, no de instancia, es decir, no están asociados al objeto instanciado (Child) sino a la clase, así cree n cantidad de objetos de tipo ‘Child’, siempre existirá ese método por la clase ‘Parent’, por eso cuando el objeto niño llama el método doWork() no hace uso del método de un objeto que sería de tipo ‘Child’ sino que usa el método de dicha clase.
Por esa razón no hay polimorfismo, y obtengo el error al compilar con el annotation ‘@Override’.

Solución, quitar la palabra static de los métodos:

// Clase Parent.java
class Parent {
public void doWork () // Sin static
{
System.out.println (” Padre”);
}
}

// Clase Child
class Child extends Parent {
@Override
public void doWork () // Sin static
{

System.out.println (” Hijo”);
}
public static void main (String args[])
{
Parent niño = new Child ();  // Polimorfismo, un Child es de tipo Parent, por eso es posible, no aplica a la inversa
Child niña = new Child ();

niño.doWork ();
niña.doWork ();
}
}

$ java Child
Hijo
Hijo

Pd: Creo que este post esta muy aburrido.

Eliminar Kernel viejos en Fedora

September 11th, 2009 admin 3 comments

Saludos.

Desde que tengo Fedora 11, en dos ocasiones se ha hecho actualización de Kernel; ahora estoy con ‘2.6.30.5-43.fc11.x86_64′. Siempre que cambio kernel debo reinstalar la tarjeta NVidia, y eso me da mamera, prefiero editar el archivo ‘/boot/grub/menu.lst’ y dejar que arranque por el kernel que tiene instalado la Tarjeta envidia :P .

Ahora decidí habilitar el kernel mas último e instalar la tarjeta de video en ese kernel, inspirado por un post en DiarioLinux, en ese post lo hace desde Ubuntu, despúes me dí a la tarea de desinstalar los Kernel anteriores en fedora, a continuación los pasos, eso si con pelo en pecho y en línea de comandos:

rpm -qa | grep 2.6
kernel-2.6.29.6-217.2.7.fc11.x86_64
avant-window-navigator-0.3.2-6.fc11.x86_64
libtool-ltdl-2.2.6-11.fc11.1.x86_64
xorg-x11-xauth-1.0.2-6.fc11.x86_64
gnutls-2.6.6-1.fc11.x86_64
SDL_image-1.2.6-7.fc11.x86_64
python-2.6-9.fc11.x86_64
kernel-2.6.30.5-43.fc11.x86_64
cjkuni-uming-fonts-0.2.20080216.1-26.fc11.noarch
libmpcdec-1.2.6-5.fc11.x86_64
hal-libs-0.5.12-29.20090226git.fc11.x86_64
libglade2-2.6.4-1.fc11.x86_64
hal-0.5.12-29.20090226git.fc11.x86_64
kernel-firmware-2.6.30.5-43.fc11.noarch
psmisc-22.6-9.fc11.x86_64
audiofile-0.2.6-10.fc11.x86_64
gnutls-2.6.6-1.fc11.i586
im-chooser-1.2.6-3.fc11.x86_64
python-libs-2.6-9.fc11.x86_64
xorg-x11-drv-vmmouse-12.6.4-1.fc11.x86_64
gimp-libs-2.6.7-2.fc11.x86_64
iproute-2.6.29-2.fc11.x86_64
libtextcat-2.2-6.fc11.x86_64
kernel-devel-2.6.30.5-43.fc11.x86_64
udev-extras-20090226-0.5.20090302git.fc11.x86_64
gimp-2.6.7-2.fc11.x86_64
gimp-help-browser-2.6.7-2.fc11.x86_64
pidgin-2.6.2-1.fc11.x86_64
kernel-devel-2.6.29.6-217.2.16.fc11.x86_64
kernel-2.6.29.6-217.2.16.fc11.x86_64
cjkuni-ukai-fonts-0.2.20080216.1-26.fc11.noarch
ptlib-2.6.4-2.fc11.x86_64
kernel-headers-2.6.30.5-43.fc11.x86_64
pygtksourceview-2.6.0-1.fc11.x86_64
hunspell-en-0.20090216-2.fc11.noarch
libarchive-2.6.2-1.fc11.x86_64
kernel-devel-2.6.29.6-217.2.7.fc11.x86_64

Los paquetes necesarios para desinstalar son los que estan en Bold, así:

# yum remove kernel-2.6.2*
# yum remove kernel-devel-2.6.2*

Así remueve el kernel anterior al 2.6.30, lo que falta es editar el grub para eliminar las líneas de kernel anteriores

Desplegando Applets Java.

August 31st, 2009 admin No comments

Saludos.

Los applets Java, son aplicaciones realizadas en java que necesitan otra plataforma anfitriona para poder ejecutar, por ejemplo los tradicionales applets java que ejecutan sobre un navegador web, otro ejemplo común son los MidLets que son aplicaciones Java para ejecutar sobre dispositivos moviles.

En este pequeño post verás como desplegar un applet Java en un navegador.

Explicación: El applet solicita al usuario dos números cualquiera en dos dialogos de entrada de datos, luego los suma y muestra el resultado de la suma en un cuadro ;) :

// AdditionApplet.java -> Nombre del archivo
import java.awt.Graphics;
import javax.swing.*;

public class AdditionApplet extends JApplet {
double sum;

// Inicializador de las variables y valores del applet
public void init ()
{
String firstNumber;
String secondNumber;
double number1, number2;

//Lectura de los valores en un JOptionPane
firstNumber = JOptionPane.showInputDialog (
“Ingrese el primer número para el calculo”);
secondNumber = JOptionPane.showInputDialog (
“Ingrese el segundo número para el calculo”);

// Casteo de los números a Double
number1 = Double.parseDouble (firstNumber);
number2 = Double.parseDouble (secondNumber);

// Suma de los números
sum = suma (number1, number2);
}

private double suma (double num1, double num2)
{
double sumita;
System.out.println (”Sumando: “+num1+” + “+num2);
sumita = num1 + num2;
System.out.println (”Resultado:”+sum);
return sumita;
}

public void paint (Graphics g)
{
super.paint (g);

// Dibuja un rectangulo empezando desde (15,10)
// 270 pixeles de ancho y 20 de alto
g.drawRect (15, 10, 270, 20);

g.drawString (”El resultado de la suma es: “+sum, 25, 25 );
}
}

Despúes realizo una página html con cualquier nombre que invoca la clase:

<html>
<body>
<applet code=”AdditionApplet.class” width=”300″ height=”60″>
</applet>
</body>
</html>

A continuación es necesario compilar el código fuente para generar el .class que invoca el archivo html

$ javac AdditionApplet.java

Podemos visualizar la aplicación, abriendo la página web o usando el appletviewer, con la última opción se hace así:

$ appletviewer archivo.html ->Esquema

en mi caso:

$ appletviewer ejemplo4.html:

AddApplet addApplet2

Instalar Mobile Processing Fedora 64b

August 12th, 2009 admin No comments

MarlonJ ha iniciado en su portal un curso en Video de Desarrollo de aplicaciones para dispositivos moviles con J2ME y el IDE Mobile Processing.

En la primera sesión se pretendió instalar Mobile Processing en los equipos, en mi caso al intentar correr mobile en Fedora 11 64 bits obtuve este mensaje de “error”:

$ sh ./mobile

It appears that the version of Jikes distributed with Processing
cannot properly run on this system.

Possible solutions:

+ If you already have Jikes installed on your system, you may
just need to remove the version that is included with Processing.

+ You probably just need to track down a version of Jikes that will
work with your distribution.

+ You may need to install the rpm/package for compat-libstdc++
This is what it takes to get things running on most versions
of RedHat Linux or Fedora Core.

+ If all else fails, or if you just like building stuff yourself,
you can download the source for Jikes from SourceForge:
http://sourceforge.net/project/showfiles.php?group_id=128803
And it just takes a simple ./configure and make, followed by
copying src/jikes to the processing-XXXX folder and you should
be all set.

If you get stuck, ask questions online from the helpful folks via
the Processing discussion board: http://processing.org/discourse/

Good luck!

Despúes de indagar un poco, probando soluciones, encontré que el archivo ‘jikes’ esta compilado para 32 bits, lo que hizé fue descargar del enlace que propone el mensaje de error ‘http://sourceforge.net/project/showfiles.php?group_id=128803‘ y compilar, despúes es necesario reemplazar el archivo Jikes que esta en la carpeta de Mobile Processing:

$ ./configure
$ make
$ cd src/
$ cp jikes ~/java/mobile/jikes -> Es el path donde descomprimí el Mobile Processing
$ cd ~/java/mobile/
$ ./mobile

Mobile Processing Fedora 64 bits

Mobile Processing Fedora 64 bits

Ya el mobile processing corre, pero tengo otro problema cuando intento correr algún ejemplo, es una excepción como esta:

/tmp/untitled8257517426696114186.tmp/sketch_090812a/midlet/sketch_090812a.java:0:0:0:0: Semantic Error: You need to modify your classpath, sourcepath, bootclasspath, and/or extdirs setup. Jikes could not find package “java.lang”

Este error se resuelve, descargando  e instalando la versión de Java para 32 bits, reinstalando el j2mewtk indicandole la ruta de javac de 32 bits.

<script src=”http://static.livestream.com/scripts/playerv2.js?channel=learningmarlonjcom&layout=playerEmbedDefault&backgroundColor=0xffffff&backgroundAlpha=1&backgroundGradientStrength=0&chromeColor=0×000000&headerBarGlossEnabled=true&controlBarGlossEnabled=true&chatInputGlossEnabled=true&uiWhite=true&uiAlpha=0.5&uiSelectedAlpha=1&dropShadowEnabled=true&dropShadowHorizontalDistance=10&dropShadowVerticalDistance=10&paddingLeft=10&paddingRight=10&paddingTop=10&paddingBottom=10&cornerRadius=3&backToDirectoryURL=null&bannerURL=null&bannerText=null&bannerWidth=320&bannerHeight=50&showViewers=true&embedEnabled=true&chatEnabled=true&onDemandEnabled=true&programGuideEnabled=false&fullScreenEnabled=true&reportAbuseEnabled=false&gridEnabled=false&initialIsOn=true&initialIsMute=false&initialVolume=10&contentId=null&initThumbUrl=null&playeraspectwidth=4&playeraspectheight=3&mogulusLogoEnabled=true&width=400&height=400&wmode=window” type=”text/javascript”></script>