Archive

Archive for the ‘Linux’ Category

Usa bloqueador Solar

November 17th, 2009 admin 1 comment

Enjoy this vid:

YouTube Preview Image
Categories: Linux Tags: , ,

Oracle, revela los planes de productos Open Source de Sun

October 28th, 2009 admin No comments

En Abril de 2009 se anunció la adquisición de Sun por parte de Oracle, muchos nos sorprendió la capacidad y el poder de inversión de Oracle; desde eso ha venido mucho análisis y espectativa de los productos Open Source abanderados por Sun, como Java, Netbeans, OpenSolaris entre otros.

Hoy he visto un documento que revela los planes de algunos de estos productos, a continuación mencionaré en forma breve:

Acelerar la inversión y la innovación en Java:

Oracle Planea acelerar la inversión en la plataforma Java para beneficio de sus clientes y la comunidad Java.
Así también quieren comprometerse mas con la comunidad que hace que Java sea ubicuo, una plataforma innovativa alrededor de los estándares abiertos.

¿Qué planea Oracle para Solaris?

Oracle planea invertir mas dinero en Solaris del que invertía Sun.
Las capacidades del Sistema Operativo Solaris lo hacen lider en desempeño, escalabilidad, confiabilidad y seguridad, todos estos son requerimientos de los clientes.

Que está planeando Oracle para el servidor empresarial Glassfish, después que la transacción termine?

Oracle planea continuar desarrollando Glassfish  como una implementación Open Source de la versión empresarial de Java (Java EE), soportando activamente la comunidad de Glassfish.

¿Qué planea Oracle para Netbeans?

Se espera que Netbeans sea una opción Open Source y complemente JDeveloper y Oracle Pack for Eclipse.

¿Qué planea Oracle para MySQL?

Oracle planea invertir mas dinero en MySQL de lo que invertía Sun.
Oracle Planea integrar MySQL a su suite de producto de Base de Datos.

¿Que hay de Linux?

Oracle aún continua con su compromiso con el Sistema Operativo Linux y planea continuar desarrollando y mejorando Linux.

Enlace del documento: http://www.oracle.com/ocom/groups/public/documents/webcontent/038563.pdf

Categories: Java, Linux, videogame Tags: , , , ,

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

Fail2ban

September 10th, 2009 admin No comments

En una conversacion que comenzó manera no usual con otro administrador de red (http://ik4ros.blogspot.com/)me comentó de un paquete llamado Fail2ban; fail2ban es un escaneador de logs como del apache o ssh y banea las IPs que origina muchas contraseñas fallidas.

Para instalar y configurar fail2ban en Fedora 11:

# yum install fail2ban

Configuramos las ips que nunca tendrán rechazo por fail2ban, es decir, las que siempre podrán autenticarse:

# vi /etc/fail2ban/jail.conf

Se busca la línea que contenga ‘ignoreip’ y se edita con las ips que quiera autenticar sin problema:

# “ignoreip” can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1 192.168.X.X -> IPs separada por espacios

Otro parámetro importante es el tiempo de baneado, es el tiempo en que una ip dura rechazada, por defecto esta a 600 segundos (10 minutos), considero conveniente subir el tiempo de baneo.

# “bantime” is the number of seconds that a host is banned.
bantime  = 3600

Ahora si editemos la configuración de ssh, es el único que esta habilitado por defecto:

[ssh-iptables]
enabled  = true -> Habilita este servicio
filter   = sshd -> Cual es el demonio
action   = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com] -> A quien envia notifiación y quien la envia
logpath  = /var/log/secure -> Este es el log que usa SSH en Fedora / RHEL / CentOS
maxretry = 3 ->  Número de intentos que se puede realizar antes de banear

Ahora lo que sigue es reiniciar el fail2ban y probar.

# service fail2ban restart

Podemos ver las reglas IPTables ahora con el chain fail2ban:

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-SSH  tcp  –  anywhere             anywhere            tcp dpt:ssh
ACCEPT     all  –  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp –  anywhere             anywhere
ACCEPT     all  –  anywhere             anywhere
ACCEPT     tcp  –  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  –  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  –  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-SSH (1 references)
target     prot opt source               destination
RETURN     all  –  anywhere             anywhere

Es necesario activar el servicio para que arranque automáticamente cuando inicie el sistema:

# chkconfig –levels 2345 fail2ban on

Categories: Linux Tags: , , , , ,

Generador de estádisticas de navegación – AWStats

September 8th, 2009 admin No comments

AWStats es una herramienta que genera estádisticas gráfcas de navegación web, streaming, ftp y servicio de correo.

A partir de los logs es posible realizar los reportes sea por línea de comando o via CGI, supuestamente muestra toda la información posible en pocos gráficos.Es capaz de generar estádisticas a partir de log de Apache, ISS, Servidores proxy, supongo que el squid debe estar incluido, servidores de correo y algunos servidores FTP.

AWStats está liberado bajo licencia GPL, diponible en .zip tar.gz, en binario de windows y también su modúlo de Webmin

En su página es posible ver demos y pantallazos de su página oficial: http://awstats.sourceforge.net/:

Categories: Linux Tags: , , , , ,

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