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...

Blog tecnologico

Estoy manteniendo otro blog que puede resultar interesante, es mas de tecnologia en general


los espero alli


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