lunes, 20 de octubre de 2008

Plantilla Ant

Bueno como todos ya conoceréis Ant es una herramienta desarrollada integramente en java y que sirve para automatizar el proceso de compilación, despliegue, generación de documentación etc ... Estas y otras muchas son tareas que debemos repetir multiples veces. Bueno pues esta herramienta ha sido pensada de forma que tu describes un fichero xml que por norma general suele llamarse build.xml, en el que describes los pasos que quieres realizar una vez hayas modificado el código. De esta forma podremos desplegar nuestra aplicación tantas veces como queramos en el servidor bajando el fuente desde un ftp o un subversion y todo ejecutando en el directorio el comando "ant" (seguido del nombre del fichero de descripción en el caso de que no sea build.xml).

Bueno pues voy a poneros una plantilla que va a recoger todas estas tareas:

-Limpiar: Se eliminan los directorios que contienen las clases compiladas y la documentación que pudo ser generrada anteriormente. Se eliminan ambos a la vez para que no exista una versión de documentación que no se corresponda con las clases compiladas y viceversa.

-Compilar: En la primera de sus tareas se crea, si no existe, el directorio donde se guardarán las clases compiladas. El directorio no existirá porque se ha eliminado con el objetivo limpiar, del cual depende compilar. La segunda tarea compila las clases, situadas en ${src} y almacena los resultados de la compilación en el directorio ${build}. Para ello utiliza el classpath definido en la propiedad ${classpath}.

-Jar: Se genera un archivo .jar con todas las clases presentes een el directorio ${destino} (build). Esta tarea depende del objetivo compilar para garantizar que existan clases compiladas en este directorio antes de intentar generar el archivo .jar.

-Documentar: En la primera tarea se crea, si no existe, el directorio donde se guardará la documentación generada. El directorio no existirá porque se ha eliminado con el objetivo limpiar, del cual depende compilar. La segunda tarea genera la documentación del proyecto.

-Main: Se ejecutan todos los objetivos para crear el programa y dejarlo listo para ser ejecutado.

<project name="Proyecto_basico" default="main" basedir=".">

   <!-- propiedades globales del proyecto -->
   <!-- definición de directorios que se van a usar-->
   <property name="src" value="."/>
   <property name="build" value="build"/>
   <property name="doc" value="doc"/>

  <!-- caracteristicas del proyecto-->
  <property name="classpath" value="./lib/misclases.jar"/>

  <target name="limpiar">
    <delete dir="$"/>
     <delete dir="${doc}"/>
  </target>

  <target name="compilar" depends="limpiar">
     <mkdir dir="${build}"/>
     <javac srcdir="${src}" destdir="${build}" classpath="${classpath}"/>
  </target>

  <target name="jar" depends="compilar">
     <jar jarfile="clases.jar" basedir="${build}" includes="**"/>
  </target>

  <target name="documentar" depends="limpiar">
     <mkdir dir="${doc}"/>
     <javadoc packagenames="proyectobasico" sourcepath="${src}" destdir="${doc}"/>
  </target>

  <target name="main" depends="compilar,documentar">
  </target>

</project>

Bueno espero que os sirva para describir vuestros proyectos si en algún momento no recordáis la sintaxis de Ant.

jueves, 2 de octubre de 2008

Comprimir y descomprimir en Linux

Como siempre los artículos que publico son a modo de recordatorio, de forma que este blog es como una guía para el día a día. Hoy he encontrado un artículo en (http://stolz.gsmlandia.com), que creo muy interesante y necesario, descomprimir y comprimir ficheros en linux desde línea de comandos.

Comprimir y descomprimir archivos en Linux desde la línea de comandos es algo habitual y siempre viene bien tener a mano un pequeño resumen de cómo hacerlo.

Los típicos

Ficheros .tar

tar empaqueta varios archivos en uno solo, pero no comprime.
  • Instalar la herramienta: # emerge -n tar

  • Empaquetar: # tar cf archivo.tar ficheros

  • Desempaquetar: # tar -xvf archivo.tar

  • Ver contenido: # tar -tf archivo.tar

Ficheros .gz

gzip sólo comprime fichero a fichero, no empaqueta varios ficheros en uno ni comprime directorios.
  • Instalar la herramienta: # emerge -n gzip

  • Comprimir: # gzip fichero

  • Descomprimir: # gzip -d fichero.gz

Ficheros .bz2

bzip2 sólo comprime fichero a fichero, no empaqueta varios ficheros en uno ni comprime directorios.
  • Instalar la herramienta: # emerge -n bzip2

  • Comprimir: # bzip2 fichero

  • Descomprimir: # bzip2 -d fichero.bz2

Para comprimir varios ficheros y archivarlos en uno solo, al estilo de los compresores zip o rar hay que combinar tar con gzip o con bzip2 como muestro a continuación.

Ficheros .tar.gz

  • Comprimir: # tar -czf archivo.tar.gz ficheros

  • Descomprimir: # tar -xvzf archivo.tar.gz

  • Ver contenido: # tar -tzf archivo.tar.gz

Ficheros .tar.bz2

  • Comprimir: # tar -c ficheros | bzip2 > archivo.tar.bz2

  • Descomprimir: # bzip2 -dc archivo.tar.bz2 | tar -xv

  • Ver contenido: # bzip2 -dc archivo.tar.bz2 | tar -t

Ficheros .zip

  • Instalar las herramientas: # emerge -n zip unzip

  • Comprimir: # zip archivo.zip ficheros

  • Descomprimir: # unzip archivo.zip

  • Ver contenido: # unzip -v archivo.zip

Ficheros .rar

  • Instalar la herramienta: # emerge -n rar

  • Comprimir: # rar a archivo.rar ficheros

  • Descomprimir: # rar x archivo.rar

  • Ver contenido: # rar l archivo.rar o # rar v archivo.rar

Los no tan típicos

Ficheros .lha

  • Instalar la herramienta: # emerge -n lha

  • Comprimir: # lha a archivo.lha ficheros

  • Descomprimir: # lha x archivo.lha

  • Ver contenido: # lha v archivo.lha o # lha l archivo.lha

Ficheros .arj

  • Instalar las herramientas: # emerge -n arj unarj

  • Comprimir: # arj a archivo.arj ficheros

  • Descomprimir: # unarj archivo.arj o # arj x archivo.arj

  • Ver contenido: # arj v archivo.arj o # arj l archivo.arj

Ficheros .zoo

  • Instalar la herramienta: # emerge -n zoo

  • Comprimir: # zoo a archivo.zoo ficheros

  • Descomprimir: # zoo x archivo.zoo

  • Ver contenido: # zoo L archivo.zoo o # zoo v archivo.zoo

Ahora que sabes como compimir directorios, recuerda hacerte una copia de seguridad de tu sistema :)

lunes, 29 de septiembre de 2008

Configuración de SSH en debian

Lo primero que hacemos es instalar el SSH

#apt-get install ssh

Luego de la instalación buscamos el archivo de configuración sshd_config que esta en

# vi /etc/ssh/sshd_config

(Nota. no confundir con el fichero ssh_config)

Agregamos o modificamos las siguientes entradas en el archivo


Parámetro Port
Si fuera necesario por seguridad se puede cambiar el puerto por el cual escucha el SSH

Port 54321

Parámetro ListenAddress
Especificamos bajo que direcciones intefaces responderá las peticiones

ListenAddress 10.0.0.5

Parámetro PermitRootLogin
Especificamos si el superusuario podrá conectarse mediante SSH

PermitRootLogin no

Parámetro X11Forwarding
Especificamos si es necesario que se ejecuten aplicaciones gráficas mediante SSH

X11Forwarding no

Parámetro AllowUsers
Especificamos que usuarios se conectarán mediante SSH

AllowUsers espiridion, cascajo, pully

Tambien se puede restringir el acceso por usuario y host

AllowUsers espiridion@192.168.0.55 cascajo@192.168.5.22

Reiniciamos el SSH

#/etc/init.d/ssh restart

domingo, 28 de septiembre de 2008

Cómo llamar al recolector de basura JAVA

     He encontrado un árticulo muy bueno en (http://www.programacion.com/) que te comenta cosas 

tan olvidadas para los programadores de lenguajes como JAVA, en la que nos olvidamos de la 

destrucción de objetos, ya que el recolector de basura lo hace supuestamente por nosotros. 


Forzar la Finalización y la Recolección de Basura

El sistema de ejecución de Java realiza las tareas de manejo de memoria por tí. Cuando un programa ha terminado de utilizar un objeto-- esto es, cuando ya no hay más referencias a ese objeto- el objeto es finalizado y luego se recoge la basura.

Estas tareas suceden asíncronamente en segundo plano. Sin embargo, se puede forzar la finalización de un objeto y la recolección de basura utilizando los métodos apropiados de la clase System.

. Finalizar Objetos

Antes de recolectar la basura de un objeto, el sistema de ejecución de Java le da la oportunidad de limpiarse a sí mismo. Este paso es conocido como finalización y se consigue mediante una llamada al método finalize() del objeto. El objeto debe sobreescribir este método para realizar cualquier tarea de limpieza final como la liberación de recursos del sistema como ficheros o conexiones. Para más informaciónsobre el método finalize() puedes ver: Escribir un método finalize().

Se puede forzar que ocurra la finalización de un objeto llamando al método runFinalization() de la clase System.

System.runFinalization();

Este método llama a los métodos finalize() de todos los objetos que están esperando para ser recolectados.

. Ejecutar el Recolector de Basura

Se le puede pedir al recolector de basura que se ejecute en cualquier momento llamando al método gc() de la clase System.

System.gc();

Se podría querer ejecutar el recolector de basura para asegurarnos que lo hace en el mejor momento para el programa en lugar de hacerlo cuando le sea más conveniente al sistema de ejecución.

Por ejemplo, un programa podría desear ejecutar el recolector de basura antes de entrar en un cálculo o una sección de utilización de memoria extensiva, o cuando sepa que va a estar ocupado algun tiempo. El recolector de basura requiere unos 20 milisegundos para realizar su tarea, por eso un programa sólo debe ejecutarlo cuando no tenga ningún impacto en su programa -- esto es, que el programa anticipe que el recolector de basura va a tener tiempo suficiente para terminar su trabajo.

Plantilla MIDlet J2ME

Como todos conocéis J2ME es la tecnología de Sun Microsystems para dispositivos empotrados. Se entienden como tal los dispositivos Moviles, PDAS, PocketPC, Video, Decodificadores, Lavadoras etc...

Bueno pues os cuento un poco de historia. Dentro de J2ME existe 2 configuraciones:

CLDC: Connected Limited Device Configuration, para dispositivos con muy pocos recursos como móviles, PDAs ...

CDC: Connected Device Configuration, para dispositivos con altos recursos como el decodificador de antena.

Y ahora dentro de cada Configuración tenemos distintos perfiles (profile):

Para trabajar con dispositivos moviles por tanto nos centraremos en la configuración CLDC con el perfil MIDP que actualmente va por su versión 2.0.

Bien pues las aplicaciones MIDP se llaman MIDlets por afinidad con los APPlets. Pues aquí os dejo la plantilla que nos ayudará a empezar a programar nuestro MIDlet, el "Hola mundo":

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HolaMundo extends MIDlet{

//Atributos
private Display pantalla;
private Form formulario = null;

//Constructor
public HolaMundo(){
pantalla = Display.getDisplay(this);
formulario = new Form(“Hola Mundo”);
}

public void startApp(){
pantalla.setCurrent(formulario);
}

public void pauseApp(){
}

public void destroyApp(boolean unconditional){
pantalla = null;
formulario = null;
notifyDestroyed();
}
}

Convierte tu viejo Windows XP en un MacosX tiger

Esta semana bicheado cosas por la red, he encontrado una herramienta que cambia totalmente tu windows XP y lo convierte en un Tiger. Es increible porque no estamos hablando de un simple skin. Estamos hablando de una transformación completa con el famoso Dock de MacosX o una utilidad llamada spysearch para búsquedas indexadas.

Os podéis hacer una idea del cambio brutal que hace en el sistema por lo que recomiendo que hagáis un punto de retorno antes de instalarlo pero no os preocupéis porque al instalarlo el se encarga de hacerlo.

Podéis encontrar el link para descargar:

http://www.flyakiteosx.com/


http://osx.portraitofakite.com/

jueves, 19 de junio de 2008

Comandos de consola en Windows XP

Alguna vez que otra he tenido que montar un servidor IIS sobre un windows server. Todo esto porque a alguien se le ocurre que el lenguaje ASP es un bueno lenguaje para desarrollar páginas webs :S. Bueno cuando te encargan una tarea de estas, andas muy perdido ya que en un windows todo lo sabes hacer a través del entorno gráfico, pues bien aquí os dejo una lista de comandos de consola muy útiles que no servirán para trabajar más comodamente e incluso sin tener que arrancar un escritorio remoto, sino a través de un Openssh por ejemplo.


subst x: c:\carpeta: Crea una unidad virtual a través de una carpeta.

Archivos y sistemas de ficheros

cacls: Permite modificar los permisos en ficheros y carpetas, permitiendo o prohibiendo a cada usuario leer, escribir o modificar el contenido de dichos archivos o carpetas.

chkdsk: Comprueba el estado de una partición y repara los daños en caso de que encuentre alguno. Si lo ponemos sin ningún parámetro simplemente escaneará la partición, si queremos que además corrija los errores, deberemos añadir la opción /F, es decir, chkdsk /F.

cipher: Permite cifrar archivos, directorios o particiones siempre que se encuentren en el sistema de archivos NTFS.

comp: Compara archivos o carpetas y muestra las diferencias existentes entre ellos.

compact: Permite comprimir archivos o carpetas para ahorrar espacio en el disco duro. Para comprimir los archivos deberemos utilizar el modificador /c y para descomprimirlo en modificador /u. Por ejemplo, para comprimir la carpeta c:\pruebas debemos utilizar el comando compact /c c:\pruebas y para descomprimirla compact /u c:\pruebas.

convert: Convierte particiones FAT ó FAT32 a NTFS. Antes de utilizar este comando es recomendable realizar una copia de seguridad puesto que es posible que durante la conversión se pierdan datos.

defrag: Desfragmenta los archivos de una unidad, similar a la utilidad Defragmentador de discos de Windows pero en modo consola.

diskpart: Permite crear, eliminar y administrar particiones. Este programa en modo consola debemos utilizarlo con cuidado puesto que es fácil que eliminemos sin darnos cuenta todo el contenido del disco duro o de la partición activa.

find y findstr: Estos comandos buscan cadenas de textos en el interior de uno o varios archivos. Sin embargo, el comando findstr ofrece más opciones de búsqueda que el comando find.

iexpress: Este comando lanzará un asistente para crear archivos comprimidos .CAB autodescomprimibles.

openfiles: Muestra a un administrador los archivos abiertos en un sistema a un administrador y permite desconectarlos si se han abierto a través de red.

Configuración del sistema

bootcfg: Permite ver y modificar las entradas del archivo boot.ini. Estas entradas nos permiten seleccionar con que sistema operativo deseamos iniciar el equipo.

control userpasswords2: Permite modificar las claves y los permisos de los diferentes usuarios, así como requerir la pulsación de control+alt+suprimir para poder iniciar sesión, haciendo el inicio de sesión más seguro.

driverquery: Hace un listado de todos los drivers instalados en el sistema y muestra información sobre cada uno de ellos.

dxdiag: Lanza la herramienta de diagnóstico de Direct X, con la cual podremos comprobar la versión Direct X que tenemos instalada y permite comprobar mediante tests que todo lo referente a estos controladores funcione correctamente.

gpresult: Muestra información sobre las políticas de grupo aplicadas a un usuario.

gpupdate: Vuelve a aplicar las políticas de grupo.

msconfig: Desde esta aplicación en modo gráfico podremos seleccionar que programas y servicios se cargan durante el inicio de Windows así como los sistemas operativos que el usuario puede seleccionar para iniciar el ordenador.

pagefileconfig: Permite configurar el archivo de paginación de Windows.

prncnfg: Muestra información sobre las impresoras instaladas

prnjobs: Muestra información sobre los trabajos de impresión en cola.

reg: Permite ver y modificar valores del registro de Windows. Las opciones posibles son:

reg query => realiza una consulta en el registro

reg add => añade una entrada al registro

reg delete => elimina una clave del registro

reg copy => copia una clave del registro a otra parte del registro o a otro equipo

reg save => guarda una parte del registro en un archivo

reg restore => restaura una parte del registro de un archivo

reg load => carga una clave o árbol al registro desde un archivo

reg unload => descarga una clave o árbol del registro

reg compare => compara varios valores del registro

reg export => exporta el registro o parte del registro a un archivo

reg import => importa el registro o parte del registro de un archivo

regedit: Editor del registro en modo gráfico.

sc: Este commando nos permite administrar los servicios, ya sea iniciar uno, detenerlo, mandarle señales, etc.

sfc: Este comando permite buscar archivos del sistema dañados y recuperarlos en caso de que estén defectuosos (es necesario el CD de instalación del sistema operativo para utilizarlo). Para realizar una comprobación inmediata, deberemos ejecutar la orden sfc /scannow.

systeminfo: Muestra información sobre nuestro equipo y nuestro sistema operativo: número de procesadores, tipo de sistema, actualizaciones instaladas, etc.

taskkill: Permite eliminar un proceso conociendo su nombre o el número del proceso (PID).

tasklist: Realiza un listado de todos los procesos que hay. Útil si deseamos eliminar un proceso y no conocemos exactamente su nombre o su PID.

Redes

arp: Muestra y permite modificar las tablas del protocolo ARP, encargado de convertir las direcciones IP de cada ordenador en direcciones MAC (dirección física única de cada tarjeta de red).

ftp: Permite conectarse a otra máquina a través del protocolo FTP para transferir archivos.

getmac: Muestra las direcciones MAC de los adaptadores de red que tengamos instalados en el sistema.

ipconfig: Muestra y permite renovar la configuración de todos los interfaces de red.

nbtstat: Muestra las estadísticas y las conexiones actuales del protocolo NetBIOS sobre TCP/IP, los recursos compartidos y los recursos que son accesibles.

net: Permite administrar usuarios, carpetas compartidas, servicios, etc. Para un listado completo de todas las opciones, escribir net sin ningún argumento. Para obtener ayuda sobre alguna opción en concreto, escribier net help opción.

netsh: Este programa en modo consola permite ver, modificar y diagnosticar la configuración de la red

netstat: Mediante este comando obtendremos un listado de todas las conexiones de red que nuestra máquina ha realizado.

nslookup: Esta aplicación se conecta a nuestros servidores DNS para resolver la IP de cualquier nombre de host. Por ejemplo, si ejecutamos nslookup y escribimos www.xdireccion.com, nos responderá con algo como:

Respuesta no autoritativa:
Nombre: www.xdireccion.com
Address: 217.76.130.250


Esto quiere decir que la dirección webwww.xdireccion.com corresponde con la IP 217.76.130.250.

pathping: Muestra la ruta que sigue cada paquete para llegar a una IP determinada, el tiempo de respuesta de cada uno de los nodos por los que pasa y las estadísticas de cada uno de ellos.

ping: Poniendo detrás del comando ping el nombre o la dirección IP de la máquina, por ejemplo ping 192.168.0.1 enviaremos un paquete a la dirección que pongamos para comprobar que está encendida y en red. Además, informa del tiempo que tarda en contestar la máquina destino, lo que nos puede dar una idea de lo congestionada que esté la red.

rasdial: Permite establecer o finalizar una conexión telefónica.

route: Permite ver o modificar las tablas de enrutamiento de red.

tracert: Muestra el camino seguido para llegar a una IP y el tiempo de respuesta de cada nodo.


Varios

at: Permite programar tareas para que nuestro ordenador las ejecute en una fecha o en un momento determinado.

logoff:: Este comando nos permite cerrar una sesión iniciada, ya sea en nuestro ordenador o en otro ordenador remoto.

msg:: Envía un mensaje a unos o varios usuarios determinados mediante su nombre de inicio de sesión o el identificador de su sesión

msiexec:: Permite instalar, desinstalar o reparar un programa instalado mediante un paquete MSI (archivos con extensión .msi).

runas: Permite ejecutar un programa con privilegios de otra cuenta. Útil por ejemplo si estamos como usuario limitado y queremos hacer algo que necesite privilegios de administrador.

shctasks: Permite administrar las tareas programadas.

shutdown: Permite apagar, reiniciar un ordenador o cancelar un apagado. Es especialmente útil si hemos sido infectado con el virus Blaster o una de sus variantes para cancelar la cuenta atrás. Para ello, tan sólo tendremos que utilizar la sintaxis shutdown -a.


Microsoft Management Console (MMC)

Estos comandos nos darán acceso a distintas partes de la Microsoft Management Console, un conjunto de pequeñas aplicaciones que nos permitirán controlar varios apartados de la configuración de nuestro sistema operativo.

Para acceder a estas opciones, no es necesario entrar en la consola del sistema (cmd.exe), sino que basta con introducirlos directamente desde inicio - ejecutar.

ciadv.msc: Permite configurar el servicio de indexado, que acelera las búsquedas en el disco duro.

compmgmt.msc: Da acceso a la Administración de equipos, desde donde podemos configurar nuestro ordenador y acceder a otras partes de la MMC.

devmgmt.msc:: Accede al Administrador de dispositivos.

dfrg.msc: Desfragmentador del disco duro.

diskmgmt.msc: Administrador de discos duros.

fsmgmt.msc: Permite administrar y monitorizar los recursos compartidos.

gpedit.msc: Permite modificar las políticas de grupo.

lusrmgr.msc: Permite ver y modificar los usuarios y grupos locales.

ntmsmgr.msc: Administra y monitoriza los dispositivos de almacenamientos extraíbles.

ntmsoprq.msc: Monitoriza las solicitudes del operador de medios extraíbles.

perfmon.msc: Monitor de rendimiento del sistema.

secpol.msc: Configuración de la política de seguridad local.

services.msc: Administrador de servicios locales.

wmimgmt.msc: Configura y controla el servicio Instrumental de administración (WMI) de Windows.