Contenido relevante:
SCJP: Intro, cap1, cap2, cap3, cap4, cap5, cap6, cap7, cap8
Eclipse: Instalacion, Primer error, Mas...
Linux: Adm archivos, User, Com, Compresion, RAID, Compiz, Mas...
Java: Instalacion JDK (Java), Mas...

Ubuntu 7.10 (Gutsy Gibbon) activar Compiz

Esta version de ubuntu ya trae preconfigurado a los drivers fglrx, xgl y compiz, falta instalar algunos paquetes y activarlo.

Si intentaramos directamente activar compiz nos daria este error:
"The Composite extension is not available"

Yo tengo una placa ATI, segun lei para Nvidia no cambia mucho o casi nada.
Primero Activo el controlador/driver restringido, ya que ati tiene drivers propietarios ("cerrados").
Desde: Sistema /Administracion /Gestor de controladores restringidos:
Marcar "habilitado", y luego cerrar, inmediatamente bajara los drivers necesarios (15MB).
Luego de instalarlo, nos pedirá reiniciar el sistema, lo cual hacemos.

Una vez iniciada la pc, verificamos que este habilitado:
Ahora tenemos que instalar el XGL, solo ejecutar esta linea de commandos:
sudo aptitude install xserver-xgl (5MB)

Nos aparecera este mensaje a tener en cuenta:
"Xgl server setup changed

The Xgl server will now be started automatically next time you login. It is no longer necessary to use any special X session to start Xgl, and such sessions will likely fail to work properly. Please select a regular session from your session manager next time you log in. To disable Xgl autostart for this user, create a file named ~/.config/xserver-xgl/disable"

y reinicia.

Con esto ya tenemos habilitado el driver y compiz, si vamos a la configuracion: con el boton derecho del mouse en el escritorio - Cambiar fondo de escritorio - Solapa efectos visuales, veremos solo 3 opciones genericas:
ummmm... obviamente queremos personalizar todas las bondades de compiz, para esto tenemos que bajarnos el administrador:
sudo apt-get install compizconfig-settings-manager
vamos de nuevo a la solapa "Cambiar fondo de escritorio" y vemos:
y ahora si vemos la cuarta opcion (tambien podemos acceder desde el menu: Sistema /Preferencias /Advance Descktop Effects Settings)

y veremos las multiples opciones!
ENJOY! :)

Ubuntu - Desactivar Campana/Speaker

Si te molesta que cada "error" suene el speaker de la pc (no la placa de sonido), se puede desactivar fácilmente desde: Sistema /Preferencias /Sonido - solapa "Campana del sistema", basta con desmarcar "Activar campana de sistema", puede ser interesante "Campana visual del sistema".

Linux - Ubuntu, Montar unidades Interfaz Grafica

Luego de instalar linux - ubuntu, es bueno "conectar/montar" unidades de otros sistemas operativos y demas, con esta herramienta es bien facil.

Con ubuntu 7.10 viene ntfs-3g que nos da la posibilidad de escribir en ntfs :), asi que con esta herramienta podemos configurar de forma facil y rapida las unidades y algunas opciones que de otra manera deberias hacerla modificando archivos de configuración.

(no te mal acostumbres con herramientas graficas :) )

Opciones principales:
Montar y desmontar unidades:

Para instalar, tenes que bajar al .deb desde download (para feisty funciona) de la pagina y luego ejecutarlo, con eso es sufciente, luego desde el menu: sistema /administracion /administrador de disco

RAID en Linux Ubuntu 7.10 (Gutsy Gibbon GG) - Instalacion, parte 1

-Por favor, si les sirve o no, dejen un comentario.-

La idea es como el blog, hacerlo lo mas facil posible para usuarios noveles como yo sobre linux ubuntu (y basado en esta version GG Gutsy Gibbon)
Puede que los pasos parezcan atravesado y con poco sentido, pero debo decir que me funciono, y lo repeti 3 veces por las dudas.

Mi configuración es la siguiente:
Motherboard: DFI Lanparty UT NF4 Ultra-D
Memoria: 2GBram, Corsair
Video PCI-E: ATI X1900XTX, 512MBram y toda la bola.
Discos: 2 Western Digitals 300 GB, 16 MB de buffer, NCQ, RAID 0 (STRIPE)
13 particiones en total
3 primarias, DOS, windows XP y Ubuntu y el resto de deposito.


En el caso de querer manipular las particiones y demas, utilizar "gparted" (desde la consola, "sudo gparted"), en mi caso, agregue/formatee una partición de 20gb en formato ext3 con "Acronis Disk Director", supongo que no habrá problema con gparted.

Como Bootmanager utilizo a "Acronis Boot Manager", tiene una presentación sencillamente genial, lo malo es la deteccion de nuevos SO (anda muy mal), pero es muy bonito y funciona bien dentro de todo.

Particion 1: DOS (100MB fat16), con el bootmanager, herramientas básicas para generar imagenes/backup, particionar y otras herramientas de recuperación, para no tener que utilizar un cd booteable.
Particion 2: Windows XP sp2 (10GB, ntfs)
Particion 3: Nueva para Ubuntu (20GB, ext3)
Particion 4: Extendida con otras multiples particiones logicas.


Si tenes una linda configuración de maquina, y tenes un RAID # (o cero como en mi caso), en la BIOS lo tenes configurado correctamente, instalaste windows y anduvo bien.
Cuando vas a instalar ubuntu, y llegaste a la ventana de particionamiento te encontraste con esto:


Pero..., "tengo un sistema raid 0", "debería mostrarme solo un disco grande nada mas", okey, vamos a la opción manual:

Sisi, es una sensación terrible! nunca aparece como una sola unidad!, de mas esta decir que no avances ya que podes potencialmente destruir el contenido de tus discos.

Ahora si al vayamos a la solucion:

Luego de leer muuuucho y probar otro poco, lo pude lograr, pude solucionar este problema.
La solución a este problema es la siguiente, tenemos que usar un pseudo driver llamado FakeRaid para "mentirle" al SO, si bien quita un poco de performance, pero sirve (supongo que no es la única manera, pero me funciono).

Booteamos con el cd-live (requisito indispensable tener conexión a internet, con algún router/modem con server DHCP alcanza, si no tendrás que configurarlo a mano en el live)

Abrimos una consola y escribimos/pegamos esto:
(Para abrir la consola, ejecuta gnome-terminal en la consola... :P)
* Agregamos los repositorios universe
sudo nano /etc/apt/sources.list
* Descomentamos las dos lineas de universe, deberia quedar asi:
deb http://archive.ubuntu.com/ubuntu gutsy universe
deb-src http://archive.ubuntu.com/ubuntu gutsy universe
ctrl+o para guardar (luego enter)
ctrl+x para salir

* Instalamos el FakeRaid (dmraid), serán un 7mB totales
sudo aptitude update && sudo aptitude install dmraid

* Ejecutamos, inmediatamente comienza a funcionar siendo transparente para el sistema.
sudo dmraid -ay

Aparecerá algo así:
RAID set "nvidia_ehaddfjh" already active
RAID set "nvidia_ehaddfjh1" already active
RAID set "nvidia_ehaddfjh2" already active

RAID set "nvidia_ehaddfjh3" already active

RAID set "nvidia_ehaddfjh5" already active

RAID set "nvidia_ehaddfjh6" already active

RAID set "nvidia_ehaddfjh7" already active

RAID set "nvidia_ehaddfjh8" already active

RAID set "nvidia_ehaddfjh9" already active

RAID set "nvidia_ehaddfjh10" already active

RAID set "nvidia_ehaddfjh11" already active

RAID set "nvidia_ehaddfjh12" already active

RAID set "nvidia_ehaddfjh13" already active

(El nombre depende del chipset y el numero de particion)

* Listo con la consola por el momento.
Volvemos a insistir con la instalación, veremos que sigue detectando dos discos en el primer formulario de configuración de particiones, vayamos a "manual", ahora si, cambio un poco:


RECORDAR EL NUMERO DE PARTICION!!!


Si vemos bien, veremos que tenemos dos partes, una con el nombre de la partición pero sin numero en los primeros items, y luego sí con números.
Lo que tenemos que hacer es desmontar todo, o mejor dicho no tiene que quedar ninguna partición sin numero montada, debemos dejar una partición root ("/"), para esto por cada item vamos a las propiedades y eliminamos el punto de montaje.
Marcamos para que formatee la partición raiz ("/")
Verificar que la partición swap, tenga numero, si no tiene luego dará error y hay que volver a ejecutar. ELIMINAR esa partición swap si no tiene numero, dejara un hueco y luego la haremos.

Le damos a "siguiente", van a empezar a aparecer cuadros de dialogos como este:

No se ha asignado un punto de montaje para el sistema de ficheros fat16/fat32/ntfs en la partición #1 de LVM VG nvidia_ehaddfjh, LV nvidia_ehaddfjh. Si no vuelve al menú de particionado y asigna un punto de montaje allí, no se utilizará esta partición.
Pulsamos sobre "continuar" (Aparecerá por cada particion que no montamos)

Luego aparecerá el formulario para poner nombre a la maquina y al primer usuario.
Nos mostrara un resumen de tareas, verificar una vez mas que no este "montando" sobre alguna unidad que no tenga numero de partición, si es así, dará este error:

Falló el intento de montar un sistema de ficheros de tipo swap en LVM VG nvidia_ehaddfjh, LV nvidia_ehaddfjh sobre none.  Puede reanudar el particionado en el menú de particionado.
Esto nos provoca una falla y nos vuelve a los primeros pasos de la instalación, teniendo que hacer de nuevo los pasos del montaje y demas.

El resumen nos tendría que quedar algo así:

Finalmente AHORA SI! comienza a formatear e instalar.

Tardo 25' incluyendo la bajada de paquetes de idioma, ya que lo instale en español.
Una vez que termine de instalar nos va a dar un error :(

"La ejecución de «grub-install (hd0)» falló.
Ésto es un error fatal."

Es correcto, va a intentar instalar el grub y no va a saber donde y que hacer con el RAID.

Continua en instalacion de GRUB en RAID con FakeRaid

GRUB, RAID en Linux Ubuntu 7.10 (Gutsy Gibbon GG) - Instalacion, parte 2

Luego de la instalación con FakeRaid, vimos que fallaba la instalación de grub porque no “sabia” donde instalarse.

Continuaremos desde el punto donde quedamos y también cubriremos en el caso de que falle la instalación de grub (En otras palabras, si fallo la instalación de grub se puede volver a intentar siguiendo estos mismos pasos).
Por ende pueden aparecer mensajes que ya fue instalado tal cosa y similares, es correcto, no te preocupes.

GRUB:
Instala fakeraid siguiendo los pasos de la parte 1.
Luego en la consola escribí esto:
sudo mkdir /target
Monta la partición nueva en el directorio target (cambia por tu partición).
sudo mount -t ext3 /dev/mapper/nvidia_ehaddfjh3 /target
sudo mount --bind /dev /target/dev
sudo chroot /target
Por las dudas volver a instalar dmraid, o verifica que exista
(Si no lo encuentra puede tengas que agregar al universe, ver parte 1)
aptitude install dmraid
Cambia el directorio x86_64-pc por el que te corresponda.
cp /usr/lib/grub/x86_64-pc/stage1 /boot/grub/
cp /usr/lib/grub/x86_64-pc/stage2 /boot/grub/
cp /usr/lib/grub/x86_64-pc/e2fs_stage1_5 /boot/grub

Algo que se puede llegar a ignorar pero a mi me sirvio y dio mas “claridad”, es modificar el archivo de mapeos sacando el identificador y poniendo la ruta directa a la partición.
Si te fijas arriba de cada mapeo hay un comentario que dice cual es la ruta de la partición, yo directamente use esa linea para el mapeo.

sudo nano /etc/fstab

# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
# /dev/mapper/nvidia_ehaddfjh3
UUID=a43234fd-7a92-43c7-a0a5-b5d0023879da / ext3 defaults,errors=remount-ro 0 $
# /dev/mapper/nvidia_ehaddfjh7
UUID=0b898937-0864-4e66-b52f-778fc05d0cd3 none swap sw 0 0
/dev/hda /media/cdrom0 udf,iso9660 user,noauto,exec 0 0

Me quedo asi:

# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/mapper/nvidia_ehaddfjh3 / ext3 defaults,errors=remount-ro 0 1
/dev/mapper/nvidia_ehaddfjh7 none swap sw 0 0
/dev/hda /media/cdrom0 udf,iso9660 user,noauto,exec 0 0


Luego ejecuta
grub
Entras a un shell, luego escribi esto: (obviamente apuntando a tu disco, presta atención que no apunta a una partición).

device (hd0) /dev/mapper/nvidia_ehaddfjh

Si te dice que no encuentra el archivo (File not found), verificar el nombre, y si estas seguro que esta bien escrito, verificar la carpeta mapper, si no existe, se “perdió” el montaje, es necesario salir de chroot y volver a ejecutar: sudo mount --bind /dev /target/dev, y continuar donde dejaste.

En el shell de grub, escribi lo siguiente, verificar el numero de partición donde hiciste la instalación y ponele ese numero menos uno, en mi caso era 3, entonces es un 2, lo mismo con hd0, significa que es mi primer disco.
root (hd0,2)
setup (hd0)

Luego de ejecutar este comando deberias ver un mensaje de "succeeded", si no es asi, estamos jodidos, algún paso esta mal, o algo “imprevisto”, volve a intentar paso a paso, si fue todo bien, entonces segui con estos pasos:
quit
update-grub

Edita la configuracion de grub:
nano /boot/grub/menu.lst

(No borres los simbolos #)
Reemplaza con la particion donde hicimos la instalación:
# kopt=root=/dev/mapper/nvidia_ehaddfjh3 ro
Reemplaza con el disco donde hicimos la instalacion:
# kopt_2_6=root=/dev/mapper/nvidia_ehaddfjh ro
De nuevo, tu unidad partición de instalación menos uno
# groot=(hd0,2)
guarda y sal del editor (ctrl+o, ctrl+x)

cd /usr/share/initramfs-tools/scripts/init-premount/
nano udev

Agrega al final esta linea (es para darle mas tiempo cuando inicia el sistema a que cargue el dmraid):
udevsettle --timeout=10
guarda y sal del editor (ctrl+o, ctrl+x)


Luego ejecuta:
update-initramfs -u

Y con esto reinicia, cruza los dedos y espera! :)

Si fallo el inicio y dice: "Error 15: File not found", es muy probable que sea un error de configuración de grub, podes volver a intentarlo siguiendo los pasos de esta entrada, pero esta vez presta mas atencion! :)


ENJOY!

Fuentes:
FakeRaid:
https://help.ubuntu.com/community/FakeRaidHowto
http://www.ubuntu-in.org/wiki/SATA_RAID_Howto

Instalacion:
http://backports.ubuntuforums.com/showthread.php?t=464758
http://foro.noticias3d.com/vbulletin/showthread.php?p=1622685#post1622685

SCJP - Sun Certified Java Programmer - Tips

En estas entregas, voy a poner tips que resumi de este libro.
(Mas que recomendable!)

Author: Bert Bates, Kathy Sierra
Publisher: McGraw-Hill Osborne
ISBN-10: 0072253606
ISBN-13: 9780072253603


Mi idea no es que con esta info puedan dar el examen, pero si un repaso luego de haber estudiado, es solo un RESUMEN.

Me lo hice para mi, y pensé en "porque no compartirlo?" (puede no ser muy "técnico" u "objetoso" al principio.)

Son datos rápidos de que no me tengo que olvidar en el momento de la certificación.
Es un gran trabajo hacer este resumen, espero que les sea util, luego publicare mi score a ver si realmente me sirvió :)

Ni se les ocurra mencionar la orto grafia!, si pueden criticar y mejorar errores de concepto y demases.

Sin mas, estos son los capitulos:
Capitulo1: parte 1, parte 2, parte 3, parte 4, parte 5

SCJP C1P5: Declaracion de variables/metodos y acceso (2)

Capitulo 1, parte 5
viene de:
parte 4

Variables "Final":
No se pueden modificar, son CONSTANTES.
final class Food ... no se puede heredar.
final void method()... no se puede sobreescribir
final int size = 40; ... no se puede cambiar

Variables Transient:
Solo se aplica a variables de instancia.
ver capitulo 6

Variables Volatile:
solo se aplica a variables de instancia.
ver capitulo 9

Static variables:
Lo que se puede declarar con el modificador static:
Methods
Variables
Clases anidadas
Initialization blocks

Que NO se puede declarar static:
Constructores (ya que solo se utiliza cuando se instancia la clase al que corresponde)
Classes (que no esten anidadas)
Interfaces
Metodos locales dentro de inner classes
Local variables


Enum:
Es un "tipo" de clases especializada para contener constantes enumeradas.
declaracion:
enum numeros {UNO, DOS, TRES};
solo se puede declarar fuera de una clase o dentro como variable de instancia (nonlocal)
es opcional el punto y coma final.

Tambien puede tener constructor y miembros, de la misma manera que una clase comun.


CAPITULO UNO FINALIZADO, ENHORABUENA SI LEISTE TODOS!!!

SCJP C1P4: Declaracion de variables/metodos y acceso

Capitulo 1, parte 4
viene de: parte 3

Constructor:
* Nunca devuelven tipo
* Mismo nombre que la clase
* Modificadores: public o private
(Luego lo veremos mas en detalle)

Declaracion de variable:
Variables tipo primitivas: 8 tipos, de las cuales seis son numéricas
Variables tipo Referencias: Objects y todo lo que heredan de este (o sea, todos)

Rangos:

Type
Bits
Bytes
Minimum
Maximum
byte
8
1
-128
127
short
16
2
-32768
32767
int
32
4
-2147483648
2147483647
long
64
8
-263
263 -1
float
32
4
n/an/a
double
64
8
n/a
n/a

Variable Argument Lists (var-args) (lista de argumentos variables):
Con esta implementacion, a partir de java 5, se puede enviar por medio de un argumento un numero indeterminado de objetos del mismo tipo.
Reglas:
* Tiene que ser de un tipo o primitiva
* Se utiliza tres puntos seguido en la declaración "..."
* Puede haber otros parámetros en los argumentos del metodo
* Solo un parámetro de este tipo
* Tiene que ser el ultimo parámetro
Ejemplo:
abstract void pepe2(int a, String... b);
(Luego lo veremos mejor)

Variables de instancia:
Son las variables de la clase, también son conocidas como "field", "attribute" y "properties".
* Se puede usar cualquier modificador de acceso
* Solo pueden utilizar un modificador de no-acceso: final, transient, static
* No se pueden utilizar modificadores de no-acceso: abstract, syncronized, strictfp, native

Variables locales:
Son aquellas que se declaran dentro de algún método, no se puede utilizar la mayoría de los modificadores, solo final.
Estas variables no se almacena en la memoria heap, solo en el stack (hasta que termine el bloque donde se declaró)

Modificadores posibles:
Local Variables
Variables (non-local)
Methods
final
final
public
protected
private
static
transient
volatile
final
public
protected
private
static
abstract
syncronized
strictfp
native


Tecnicas:
shadowing: utiliza el mismo nombre una variable local que una de instancia, y se utiliza solamente en ese mismo metodo,
ejemplo:
class testServer{
int count = 9;
public void login(){
int count = 10;
system.out.println("count "+ count);
}
}

this: para referirse a una variable de instancia o local y no de argumento, se "debe" utilizar la palabra this, que también le da mejor legibilidad al código,
ejemplo:
class testServer{
int a;
public void setA(int a){
this.a = a;
system.out.println("a: "+ a);
}
}


Array:
Coleccion de objetos del mismo tipo "empaquetados" en una variable y con un indice
Thread[] thread; //valido
Thread thread[]; //valido pero feo
thread = new Thread[3]; // prepara espacio ("alloca") para 3 elementos
thread[1] = new Thread(); // para crear las instancias

Thread[] thread2 = {new Thread(),new Thread()}; //valido 2 elementos nuevos, crea el array y las instancias

Thread[] thread3 = new Thread[]{new Thread(),new Thread()}; //valido, pero no se suele usar

pueden tener mas de una dimencion, o sea arrays de arrays
String[][] variosNombres;

* No se puede "allocar" memoria anticipadamente, esto no ese puede hacer: Thread[3] threads;


NOTA: De todas maneras se recomienda utilizar clases del tipo Collection, que luego veremos en detalle.

continua en: parte 5

SCJP C1P3: Declaracion de interfaces

Capitulo 1, parte 3
viene de: parte 2


Declaración de interfaces

Una interfaz es un contrato, no dice como va a hacer, simplemente se especifica los requerimientos.
Es 100% abstracta, no se define nada, es solo declarativa

* Todos los métodos de las interfaces, implícitamente son públicos y abstractos, no es necesario declararlo
* Todas las variables definidas deben ser public, final y static, o sea, solo puede tener constantes
* Los métodos no pueden ser static, final, strictfp o native
* Una interfaz puede extender de una o varias interfaces
* Una interfaz no puede implementar otra interfaz o clase
* Se declara con la palabra "interface"
* Los tipos de interfaz pueden ser polimorficas

Declaracion de miembros de clase
Access:
Igual que los modificadores de clases, pero para los métodos hay un modificador mas: "protected", en interfaces no.
Public, protected, default, private

Protected
Es igual a default, con la salvedad de que no es visible desde otros packages, solo son visibles si se esta heredando. En otras palabras los métodos protected solo son visibles por medio de la herencia, o desde el mismo package, usado para declarar metodos que tienen funcionalidad solo a travez de la herencia.

Es recomendable usar la metodología de los beans (atributos = setters/getters)
Los metodos privados de una superclase "no se pueden" sobreescribir

Nonaccess:
Final, Abstract, Syncronized, Native, Strictfp
Final: Prohíbe sobrescribir el método (también se pueden usar final en la linea de la declaración de un método, como argumento de una variable)
Abstract: SOLO se utiliza en clases abstractas y no contiene implementacion, con esto se fuerza a que las clases que extienden deban implementar dicho metodo.
Algo a tener en cuenta es que como no lleva implementacion, la declaración es sin llaves y termina con punto y coma
abstract void pepe2();
Syncronized: Este modificador fuerza a que solo un thread a la vez pueda acceder a dicho método.
Native: Con este modificador se puede codificar en C y compilar a nivel maquina, no maquina virtual.
Strictfp: Fuerza a que se utilize la norma IEEE754 para los cálculos con coma flotante (float)

continua en: parte 4

SCJP C1P2: Declaracion de clases

Capitulo 1, parte 2
viene de: parte 1

Declaracion de clases
Nomenclatura:
* Solo puede haber un clase publica por archivo
* Los comentarios pueden estar al comienzo o al final del archivo
* El nombre del archivo debe coincidir con el nombre de la clase public
* La linea del package debe estar en la primera linea, arriba de todo el codigo.
* Puede contener varias clases no publicas
* Los imports deben estar debajo del package y arriba de la declaración de la clase
* Los imports y el package son para todo el archivo sin importar cuantas clases contenga
* Las clases no publicas no deben tener el mismo nombre del archivo

Modificadores:
De acceso: default, public, protected, private
De no-acceso: strictfp, final, abstract
De acceso:
Default: sin ningun moficador de acceso explicito, solo permite acceso al package donde se encuentra, y solo en ese nivel.
Public: acceso desde cualquier package, se encuentra en el JU (java universe)
Luego detallare los otros modificadores de acceso.

No-acceso:
strictfp: utiliza una norma IEEE754 para numeros flotantes
final:Se utiliza para no permitir herencia de la clase
abstract: nunca se inicializa, su unica razon de ser es, para que se pueda heredar de ella, para representar "cosas" genericas que todos los descendientes deberian implementar/tener

tip: cuando se declaran metodos en una clase abstracta no deben tener llaves (si es que no tiene contenido)
tip: Las clases abstractas pueden tener metodos abstractos, las clases concretas no pueden tenerlos.

no se pueden marcar con abstract y final modificadores a la vez

Continua en: parte3

SCJP C1P1: Convenciones, Identificadores y propiedades

Capitulo 1, parte 1:

***
Declaracion y control de acceso
***

Identificadores (variables) y JavaBeans


* Las variables deben comenzar con letra o caracter $ o _
* Después del primer carácter, puede contener cualquier combinación de letras o caracteres: $ _ numéricos
* No hay limites de caracteres para los nombres de las variables
* No se pueden usar keywords de java (plabras reservadas)
* Los nombres de las variables son case sensitive

Convenciones de sun:
Usar la tabulacion para las estructuras de código
Utilizar camelCase: Cada palabra concatenada su primera letra debe estar en mayuscula.

Classes:
* Primera letra debe ser mayúscula, luego utilizar camelCase.
* Suelen ser sustantivos

Interfaces:
* Suelen ser adjetivos, casi siempre en ingles termina con "ble"
Ejemplo:
Runnable
Serializable

Metodos:
* Primera letra en minúscula, luego camelCase
* Suele ser verbo-sustantivo
Ejemplo:
getBalance
doCalculation
setCustomerName

Variables:
* Primera letra en minúscula, luego camelCase
* nombres lo mas corto posible, pero que tenga un buen significado, pensar en utilizar combinaciones de nombres que sean facil de recordar.

Constantes:
* nombre en mayúscula
* utilizar como separador de palabras el underscore

JavaBeans:
Propiedades o atributos.
Se utilizan propiedades (variables con métodos propios de lectura y escritura, mas conocido como: setters and getters)
Ejemplo de invocaciones:
setPropiedad(valor);
getPropiedad();

Return: Si lo que devuelve no es booleano, se debe utilizar "get"+variable, de lo contrario, si es booleano se puede utilizar "is"+variable
isTrue();

Ejemplo:
private int size;
public int getSize(){
return size:
}
public void setSize(int n){
size=n;
}
* utilizar public para los métodos
* private para las variables

Métodos Listener

* Para registrar listeners utilizar el prefijo "add"
* Para eliminar el registro utilizar el prefijo "remove"
* Todos los Listener deben contener la palabra "Listener" al final del metodo

continua en: part2

Eclipse & java error - Ubuntu 7.10 Gutsy Gibbon

Bajamos a eclipse (3.3) y lo dejamos en un dir temporal, luego le cambiamos los permisos y descomprimimos.

Si lo ejecutamos dara un error como este:

JVM terminated. Exit code=13
/usr/bin/java
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-jar /media/work/ides/Eclipse33L/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
-os linux
-ws gtk
-arch x86
-showsplash
-launcher /media/work/ides/Eclipse33L/eclipse
-name Eclipse
--launcher.library /media/work/ides/Eclipse33L/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.0.1.R33x_v20070828/eclipse_1020.so
-startup /media/work/ides/Eclipse33L/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
-exitdata 220011
-vm /usr/bin/java
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-jar /media/work/ides/Eclipse33L/plugins/org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar

Significa que falta instalar una nueva version o mas completa de java, seguir con este tutorial.
Una vez instalado el JDK, lo unico que tenemos que hacer es bajar de la web a y ponerle

Ubuntu 7.10 (Gutsy Gibbon) Tips

Algunos tips interesantes:

Ingresar como admin: sudo -s , o sudo -i
Abrir terminal:
gnome-terminal

Instalacion JDK (JAVA) - Ubuntu 7.10 Gutsy Gibbon

Instalacion de java:
Bajar el bin desde http://java.sun.com/javase/downloads/index_jdk5.jsp (por ej: JDK 5.0 Update 13, Linux self-extracting file) a /usr/local/ u otro.

Cambiar permisos (ver permisos, chmod) y luego ejecutarlo (lo descomprime)
chmod +x jdk-1_5_0_12-linux-i586.bin

Luego es necesario avisarle al SO que tenemos otro "JAVA", por defecto viene uno "basico".

Se puede hacer de dos maneras, con comandos o con una GUI:
1) Utilizamos el comando:
sudo update-alternatives --install /usr/bin/java java /home/crystian/dev/java/jdk1.5.0_12/bin 70

Comando: update-alternatives
Parametro de instalcion: --install
Lugar original del enlace: /usr/bin/java
Nombre del enlace: java
Ubicacion del JDK: /home/crystian/dev/java/jdk1.5.0_12/bin
Prioridad: 70 (cuanto mas alto, mas prioridad tendra)

Luego ejecutamos:
sudo update-alternatives --config java
nos aparece una lista, seleccionamos (poniendo el numero de la fila) la nueva entrada.

2) Con GUI
Si no te llevas bien con los comandos, tenes a galternatives, esta aplicacion es con interfaz grafica, para bajar y utilizar:
sudo aptitude install galternatives
sudo galternatives
Buscar y seleccionar "java", ir a "añadir" el directorio del nuevo SDK, aparecerá en la lista (el numero de prioridad cuanto mas alto tiene mas prioridad), verificar que quede seleccionado el nuevo jdk.

Con eso estaria instalado y listo, para comprobar ejecutar: java -version

Recomendacion:
seria util tambien crear las variables del entorno de java:
sudo vi /etc/bash.bashrc:
agregar al final:
export JAVA_HOME=directorio raiz donde está jdk
export PATH=$JAVA_HOME/bin:$PATH

Mostrar texto en el booteo- Ubuntu 7.10 Gutsy Gibbon

A esto se lo conoce como: verbose booting process.

Entrar a la consola:
Editar el archivo menu.lst con: sudo nano /boot/grub/menu.lst
Debajo de todo suelen aparecer los sistemas operativos configurados en grub, buscamos el de ubuntu y le sacamos el parametro final "quiet spalsh"
Reiniciamos y listo!


:)

Enlaces Linux - Ubuntu 7.10 Gutsy Gibbon

Enlaces duros y simbolicos:

ln archivo archivo2, crea un enlace duro llamado fichero2 apuntando al inodo de fichero (solo archivos)
ln -s archivo archivo2, crea un enlace simbólico, puede apuntar a un archivo o un directorio.
si se borra algún archivo "duro", no se borra físicamente el archivo hasta que no se borren todos los enlaces. los simbólicos se pueden borrar pero quedaria huérfanos

ls -i, para ver el N del inodo
ls -l, para ver cantidad de enlaces (segunda columna) y en los simbólicos se ve a donde apuntan por medio de "->" en la ultima columna

Comandos de compresion / descompresion de linux

Existen varias opciones de compresión de ficheros en Linux: gzip, bz2, rar, zip, y
todos ellos se pueden combinar con el empaquetar o archivador TAR.

tar
Archivador, agrupa ficheros en uno, además se le puede decir que comprima:

tar cfp resultado.tar /etc /var
guarda el contenido de /etc y /var dentro del fichero resultado.tar

tar xfp resultado.tar
saca todo el contenido de resultado.tar

tar zcfp usr.tgz /usr
archiva y comprime con gzip el directorio /usr

tar jcfp usr.tgz /usr
archiva y comprime con bzip2 el directorio /usr

tar zxfp usr.tgz
Descomprime el fichero anterior

gzip/gunzip, zip/unzip, rar/unrar
Compresor/Descompresor. Los ficheros comprimidos con gzip o con zip no se
descomprimen igual. Un fichero comprimido con el winzip habría que abrirlo con el unzip en linux.

gzip fichero
comprime fichero, le ańade la extensión gz

gunzip fichero.gz
descomprime ficheros gz.

zip -r9 todo.zip directorio/
comprime el directorio en el fichero todo.zip

unzip: descomprime para ficheros zip

bz2/bunzip2
Compresor cańero, comprime bastante más que gzip, aunque tarda y chupa mas cpu

bz2 fichero
comprime fichero, le ańade la extensión bz2

bunzip2 fichero.bz2
descomprime

tar jcfp usr.tar.bz2 /usr
archiva y comprime con bz2

GRACIAS: Ińigo Tejedor & Pello Altadill (PDF)
http://4party.cuatrovientos.org

Comandos de comunicacion de Linux

telnet
Descripción: Establece conexiones a puertos TCP
Ejemplo: telnet localhost 25

mesg
Descripción: Establece si se aceptan mensajes a través de write o talk.
Ejemplo: mesg -y

write
Descripción: envía mensajes a otros usuarios.
Ejemplo: write jrmorris pts/0

wall
Descripción: envía un mensaje a todos los usuarios conectados al sistema
Ejemplo: wall “a cascarla el sistema”

ifconfig
Descripción: =interface config. configuracion de interfaces de red, modems, etc.
Ejemplos: ifconfig, ifconfig eth0 ip netmask 255.255.255.0

route
Descripción: gestiona las rutas a otras redes.
Ejemplos: route, route -n

iptraf
Descripción: muestra en una aplicacion de consola TODO el trafico de red IP, UDP, ICMP.
Permite utilizar filtros, y es SUMAMENTE UTIL para diagnostico y depuracion de firewalls
Ejemplos: iptraf

tcpdump
Descripción: vuelca el contenido del trafico de red.
Ejemplos: tcpdump, tcpdump -u

ping
Descripción: heramienta de red para comprobar entre otras cosas si llegamos a
un host remoto.
Ejemplos: ping www.rediris.es

traceroute
Descripción: herramienta de red que nos muestra el camino que se necesita para llegar a otra maquina.
Ejemplos: traceroute www.rediris.es

mail
Descripción: envio y lectura de correo electronico.
Ejemplos: mail pepe@cuatrovientos.org < style="font-weight: bold;">wget
Descripción: programa para descargar ficheros por http o ftp.
Ejemplos: wget http://www.rediris.es/documento.pdf

lynx
Descripción: navegador web con opciones de ftp, https.
Ejemplos: lynx www.cuatrovientos.org, lynx --source
http://www.cuatrovientos.org/script.sh | sh

ftp
Descripción: cliente FTP.
Ejemplos: ftp ftp.cuatrovientos.org

whois
Descripción: whois de dominios.
Ejemplos: whois cuatrovientos.org

sniffit
Descripción: Sniffer o husmeador de todo el trafico de red. No suele venir
instalado por defecto.
Ejemplos: sniffit -i


GRACIAS: Ińigo Tejedor & Pello Altadill (PDF)
http://4party.cuatrovientos.org

Comandos de administración de Linux

Comandos de administración: usuarios, procesos, kernel

sysctl
Descripción: Configurar los parámetros del kernel en tiempo de ejuecución.
Ejemplos: sysctl -a

ulimit
Descripción: muestra los limites del sistema (maximo de ficheros abiertos, etc..)
Ejemplos: ulimit

adduser
Descripción: ańadir usuario de sistema.
Ejemplos: adduser pepe, adduser -s /bin/false pepe

userdel
Descripción: = eliminar usuario de sistema
Ejemplos: userdel pepe

usermod
Descripción: = modificar usuario de sistema
Ejemplos: usermod -s /bin/bash pepe

df
Descripción: = disk free. espacio en disco disponible. Muy util.
Ejemplos: df, df -h

uname
Descripción: =unix name. Informacion sobre el tipo de unix en el que estamos,
kernel, etc.
Ejemplos: uname, uname -a

netstat
Descripción: la informacion sobre las conexiones de red activas.
Ejemplos: netstat, netstat -ln, netstat -l, netstat -a

ps
Descripción: =proccess toda la informacion sobre procesos en ejecucion.
Ejemplos: ps, ps -axf, ps -A, ps -auxf

pstree
Descripción: =proccess tree, muestra los procesos en forma de árbol
Ejemplos: pstree

kill
Descripción: envía seńales a procesos. La más común es la de matar el proceso.
Ejemplo: kill -9 34 (la seńal -9 es KILL y mata el proceso numero 34)

free
Descripción: muestra el estado de la memoria RAM y el SWAP.
Ejemplos: free

vmstat
Descripción: muestra el estado de la memoria virtual
Ejemplos: vmstat, vmstat -s

du
Descripción: =disk use. uso de disco. Muestra el espacio que esta ocupado en
disco.
Ejemplos: du *, du -sH /*, du -sH /etc

lsof
Descripción: muestra los ficheros(librerias, conexiones) que utiliza cada proceso
Ejemplos: lsof, lsof -i, lsof | grep fichero

lsmod
Descripción: Muestra los modulos de kernel que estan cargados.
Ejemplos: lsmod

insmod
Descripción: instala modulos de kernel
Ejemplo: insmod e1000, insmod usb_core

modprobe
Descripción: Trata de instalar un modulo, si lo encuentra lo instala pero de forma temporal.
Ejemplos: modprobe ip_tables, modprobe eepro100

rmmod
Descripción: Elimina modulos del kernel que estan cargados
Ejemplos: rmmod

fdisk
Descripción: sirve para gestionar las particiones de una unidad de disco
Ejemplos: fdisk /dev/hda , fdisk -l /dev/sda


GRACIAS: Ińigo Tejedor & Pello Altadill (PDF)
http://4party.cuatrovientos.org

Comandos de administracion de archivos en Linux

Estos son los comandos tipicos/comunes de administracion de archivos de linux/unix

cd

Descripción: =chage dir. comando para cambiarnos de directorio.
Ejemplos: cd, cd /ruta/de/directorio, cd ../../directorio/

pwd
Descripción: nos dice en qué directorio nos encontramos actualmente
Ejemplos: pwd

ls
Descripción: =list. listar contenido de directorios.
Ejemplos: ls, ls -l, ls -fl, ls --color

cp
Descripción: =copy. copiar ficheros/directorios.
Ejemplos:cp -rfp directorio /tmp, cp archivo archivo_nuevo

rm
Descripción: =remove. borrar ficheros/directorios.
Ejemplos: rm -f fichero, rm -rf directorio, rm -i fichero

mkdir
Descripción: =make dir. crear directorios.
Ejemplos: mkdir directorio

rmdir
Descripción: =remove dir. borrar directorios, deben estar vacios.
Ejemplos: rmdir directorio

mv
Descripción: =move. renombrar o mover ficheros/directorios.
Ejemplos: mv directorio directorio, mv fichero nuevo_nombre, mv fichero a_directorio

nano
Descripción: editor de fichero muy simple. Vi o emacs son para la 31337.
Ejemplo: nano -w

clear
Descripción: limpia la pantalla. Ctrl-L tiene el mismo efecto.

exit
Descripción: termina la sesión del shell. Ctrl-D tiene el mismo efecto

date
Descripción: gestión de fecha de sistema, se puede ver y establecer.
Ejemplos: date, date 10091923

history
Descripción: muestra el historial de comandos introducidos por el usuario.
Ejemplos: history | more

more
Descripción: muestra el contenido de un fichero con pausas cada 25 lineas.
Ejemplos: more fichero
Al hacer more:
/cadena : podemos hacer búsqueda de cadena
f : adelante
b: volver arriba
v: iniciar vi en la linea que estamos
Nota: estas opciones también sirven para el comando man

grep
Descripción: filtra los contenidos de un fichero.
Ejemplos:cat fichero | grep cadena, grep -il “cadena” directorio/

cat
Descripción: muestra todo el contenido de un fichero sin pausa alguna.
Ejemplos: cat fichero

chmod
Descripción: cambia los permisos de lectura/escritura/ejecucion de ficheros/directorios.
Ejemplos: chmod +r fichero, chmod +w directorio, chmod +rw directorio -R,
chmod -r fichero
chmod +x fichero : da permiso de ejecucion

chown
Descripción: =change owner. cambia los permisos de usuario:grupo de
ficheros/directorios.
Ejemplos: chown root:root fichero, chown pello:usuarios directorio -R

tar
Descripción: =Tape ARchiver. archivador de ficheros.
Ejemplos: tar cvf fichero.tar directorio , tar xvf fichero.tar, tar zcvf fichero.tgz
directorio, tar zxvf fichero.tgz

gunzip
Descripción: descompresor compatible con ZIP.
Ejemplos: gunzip fichero

rpm
Descripción: gestor de paquetes de redhat y fedora. Para instalar o actualizar software de sistema.
Ejemplos: rpm -i paquete.rpm, rpm -qa programa, rpm --force paquete.rpm, rpm -q --info programa

dpkg
Descripción: gestor de paquetes de Debian. Para instalar o actualizar software en el sistema.
Ejemplos: dpkg -i paquete.deb

alias
Descripción: para crear alias de comandos. Útil para comandos largos.

mount
Descripción: montar unidades de disco duro, diskette, cdrom.
Ejemplos: mount /dev/hda2 /mnt/lnx, mount /dev/hdb1 /mnt -t vfat

umount
Descripción: desmontar unidades.
Ejemplos: umount /dev/hda2, umount /mnt/lnx

who
Descripción: muestra los usuarios de sistema que han iniciado una sesion.
Ejemplos: who, w, who am i

sort
Descripción: ordena el contenido de un fichero.
Ejemplos: cat /etc/numeros | sort, ls | sort

ln
Descripción: =link. para crear enlaces, accesos directos.
Ejemplos: ln -s /directorio enlace

tail
Descripción: muestra el final (10 lineas) de un fichero.
Ejemplos:tail -f /var/log/maillog, tail -100 /var/log/maillog | more

head
Descripción: muestra la cabecera (10 lineas) de un fichero.
Ejemplos: head fichero, head -100 /var/log/maillog | more

file
Descripción: nos dice de que tipo es un fichero.
Ejemplos: file fichero, file *

cmp
Descripción: compara dos ficheros y nos dice si son distintos
Ejemplos: cmp fichero1 fichero2

file
Descripción: nos dice de que tipo es un fichero.
Ejemplos: file fichero, file *

diff
Descripción: muestra las diferencias entre dos ficheros. Muy usado para parchear software.
Ejemplos: diff fichero1 fichero2

wc
Descripción: word count, calcula número de palabras y otros datos similares de un fichero.
Ejemplos: wc fichero, wc -l fichero


GRACIAS: Ińigo Tejedor & Pello Altadill (PDF)
http://4party.cuatrovientos.org