Buscar en este blog

domingo, 21 de septiembre de 2008

LINUX. buscar ficheros

Hay varios comandos que desde consola nos ayudan a buscar ficheros:

locate busca rápidamente, ya que no va leyendo el disco, sino que mira en un indice que tiene en una base de datos: man locate

# Por ejemplo para buscar donde está el server.xml del tomcat
[user@locahost ~]$ locate server.xml
/usr/local/apache-tomcat-5.5.26/conf/server.xml

find es el comando para buscar, este si que va leyendo el disco. CUIDADO que es recursivo, por ello es mejor indicarle la ruta donde empezar a buscar.

# Por ejemplo para buscar los java compilados
[user@locahost ~]$ find programas/ -name *class

Lo mejor es juntar el comando find con el comando grep ó egrep o fgrep
y así buscamos dentro del contenido del los ficheros
# Buscamos los ficheros con extensión java que tengan el texto jdbc:mysql
[user@locahost ~]$ find programas/ -type f -name *.java -print | xargs egrep -i "jdbc:mysql"

Un mini-how to sobre comandos para buscar en linux lo teneis en
espaciolinux.com

Ahora estoy intentando buscar todos los ficheros que hayan cambiado los últimos 18 días y que se copien al dir backup. A ver cómo consigo que también me cree el directorio de cada fichero ???
# Buscar en el dir programas los ficheros que no sean ocultos, ! -name '.*', que hayan sido modificados desde hace 18 días hasta ahora y que los copie al dir backup
[user@locahost ~]$ find programas/ ! -name '.*' -type f -mtime -18 -exec cp -p {} backup/ \;

Ya he conseguido las opciones del comando para indicar bien el criterio de tiempo o fecha del archivo, revisar el "man find" es fundamental. En cambio el tema de que vaya creando los directorios lo he omitido porque con el comando rsync me actualizaría los directorios y ficheros sin complicarme con tantos parametros "rsync -av origen destino", a ver si tengo tiempo de crear otra entrada sobre "rsync". Bueno a lo que vamos, "find":

Numeric arguments can be specified as

+n for greater than n,

-n for less than n,

n for exactly n.

-amin n
File was last accessed n minutes ago.

-anewer file
File was last accessed more recently than file was modified. If
file is a symbolic link and the -H option or the -L option is in
effect, the access time of the file it points to is always used.

-atime n
File was last accessed n*24 hours ago. When find figures out
how many 24-hour periods ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.



El tema está en si era "-mtime +18" o "-mtime -18".
# Modificación anterior a 18 días
-mtime +18

# Modificación posterior a 18 dias
-mtime -18

Busco los ficheros que hayan sido modificados en estos últimos 18 días y los copio.

find datos/ -type f -mtime -18 -exec cp -p {} /mnt/dat/backup/ \;


Busco los ficheros con fecha de modificación anterior a estos últimos 7 días y los borro.

find datos/ -type f -mtime +7 -exec rm -f {} \;


Leyendo el manual de find "man find" hay opciones para ficheros accedidos, cambiados, modificados

-atime n
-ctime n
-mtime n

Para entender las fechas de los ficheros, ejecutar el comando stat.

stat fichero



Vuelvo a recordar que el comando find es recursivo, por lo que siempre hay que indicarle la ruta y tener cuidado cono que le ponemos al -exec para evitar sorpresas:


SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

lunes, 7 de julio de 2008

JAVASCRIPT. trim()

Con expresiones regulares es muy fácil hacer un trim con javascript:

cadena=cadena.replace(/^[\s]*[\s]$/, "");

martes, 24 de junio de 2008

JAVA. Iterator. List, Set, Map

// la solución correcta
List list = new ArrayList();
Set set = new HashSet();
Map map = new TreeMap();

// la solución incorrecta
ArrayList list = new ArrayList();
HashSet set = new HashSet();
TreeMap map = new TreeMap();

JAVA. HttpServletRequest mostrar todos los parametros recibidos.

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

// TMP debug
HashMap parametros = (HashMap) req.getParameterMap();
Iterator it = parametros.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
System.out.println(entry.getKey()+"="+entry.getValue());
}
// FIN TMP debug
}

==================================================

for ( Iterator iterator = aMap.entrySet ( ) .iterator ( ) ; iterator.hasNext ( ) ; ) {
Map.Entry entry = ( Map.Entry ) iterator.next ( ) ;
String key = ( String ) entry.getKey ( ) ;
String value = ( String ) entry.getValue ( ) ;
}

miércoles, 28 de mayo de 2008

LINUX. Buscar cadena en los ficheros de una ruta dada

Con esta combinación de comandos, gracias a las tuberias de la shell
podemos hacer búsquedas desde el bash:

find "ruta" -type f | xargs grep "cadena a buscar"

find -type f | xargs grep jdbc:oracle:oci

find /usr/local/tomcat -type f | xargs grep jdbc:oracle:oci

martes, 29 de abril de 2008

REGEX. Expresiones Regulares

Un lugar donde se aglutina información sobre este tema

http://www.regular-expressions.info/

Con las expresiones regulares, podemos validar parametros, campos, reemplazar cadenas, etc ...

Simplifican muchas tareas del desarrollo con un simple ereg o un replaceAll.


/* PHP */
function validarNumeroConDecimales( $_id ) {

// deben ser dígitos, el punto ,la coma y el posible signo
// algún caracter ^ distinto de 0-9.,+-
if (ereg("[^0-9.,+-]+",$_id)) {
return false;
}

return true;
}

/* java */
public static boolean validarEmail_1( String _email ) {

// validar email
Pattern p = Pattern.compile("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$");
Matcher m = p.matcher(_email);
boolean b = m.matches();

return b;
}

public static boolean validarEmail_2( String _email ) {

// validar email
boolean b = Pattern.matches("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$", _email);

return b;
}

miércoles, 9 de abril de 2008

ORACLE. Información session del usuario


-- información usuarios

select v.sid, v.serial#, v.username, v.program
from user_users u, v$session v
where v.user# = u.user_id

select *
from user_users u, v$session v
where v.user# = u.user_id

-- session del usuario

select userenv('sessionid')
from dual;

--- información del usuario apartir de la session
select *
from user_users u, v$session v
where v.user# = u.user_id
and audsid = userenv('sessionid')

select *
from user_users u, v$session v
where v.user# = u.user_id
order by LOGON_TIME DESC

select SCHEMANAME, OSUSER, MACHINE, TERMINAL, PROGRAM, MODULE, LOGON_TIME
from user_users u, v$session v
where v.user# = u.user_id
order by LOGON_TIME DESC

martes, 8 de abril de 2008

HTML. CSS. input disabled - input readonly

En IExplorer hay problemas con los input disabled, pero podemos usar los input readonly.

Con los input disabled en el IExplorer no coge el del color de la fuente. Lo pone a un color gris claro.

Pero con los input readonly si que coge el color de la fuente.

Además los input disabled no se envian ni por el POST ni por el GET.
En cambio los input readonly si se envían en la petición.

En Mozilla FireFox los input disabled si que cogen el estilo del color de la fuente.

<input type="text" id="campo_disabled" name="campo_disabled"
size="5" readonly="readonly" value="deshabilitado"/>

<input type="text" id="campo_readonly" name="campo_readonly"
size="5" disabled="disabled" value="solo lectura"/>

input {
border: #7f9db9 1px solid;
padding:0 0 0 3px;
font-family:Tahoma,Georgia,serif;
font-weight: lighter;
color:#007EF4;
}

input [disabled] {
background-color: #D4D0C8;
}

input [readonly] {
background-color: #D4D0C8;
}

http://www.htmlcodetutorial.com

JAVA. Fecha barras a Date.

Esta función pasa de un string con la fecha en barras a un Date.

En el ejemplo uso el java.sql.Date pero se podría cambiar por un java.util.Date
o incluso modificar la función para que devolviera el Calendar.

public java.sql.Date convertirFechaBarrasToDate(String fecha) {
int barra1=fecha.indexOf("/");
int barra2=fecha.indexOf("/",1+barra1);
int date=new Integer(fecha.substring(0,barra1)).intValue();
int month=new Integer(fecha.substring(1+barra1,barra2)).intValue()-1;
int year=new Integer(fecha.substring(1+barra2)).intValue();
java.util.GregorianCalendar calendar=new java.util.GregorianCalendar( year, month, date);
return (new java.sql.Date(calendar.getTimeInMillis()));
}

Creo que se puede mejorar con expresiones regulares

JAVA. Date a fecha barras. 08/04/2008.

Cómo convertir la fecha de un Date a fecha de barras, como 08/04/2008.

java.util.Date fecha = new java.util.Date();
java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("dd/MM/yyyy");

String fecha_barras = sdf.format(fecha);

System.out.println("Fecha="+fecha_barras);

domingo, 6 de abril de 2008

LINUX. configurar X. xorg.conf

Desde muchas distribuciones de linux es posible desde el entorno gráfico configurar las opciones de pantalla y tarjeta gráfica. Sistema -> Administración -> Pantallas y gráficos

Pero podemos volver a configurar las X, generandose un nuevo /etc/X11/xorg.conf, mediante el siguiente comando en un terminal:

sudo dpkg-reconfigure xserver-xorg

Este comando será válido para distribuciones ubuntu, tal vez debian. Para Fedora y/o RedHat deberemos hacerlo con yum y parametros distintos a los indicados.

Otra forma de actualizar la configuración de las X sería:

sudo dpkg-reconfigure -phigh xserver-xorg

---
suerte

miércoles, 2 de abril de 2008

LINUX. Dónde establecer las variables entorno

Los ficheros donde introducir los export serían:

/etc/profile (a nivel de sistema)

~/.profile

~/.bash_profile
~/.bashrc

// donde ~ es tu directorio home

=====
// ejemplo 1: distintas formas de establecer las variables de entorno JAVA

export JAVA_HOME=/usr/java/jdk1.5.0_07
export JDK_HOME=/usr/java/jdk1.5.0_07
export JAVA_PATH="$JAVA_HOME"
export PATH=$PATH:$JAVA_HOME/bin
export JDK_HOME="$JAVA_HOME"

export PATH JAVA_HOME
export JAVA_HOME JDK_HOME PATH

JAVA_HOME=/usr/java/jdk1.5.0_07
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME

=====
// ejemplo 2: algunas variables de entorno ORACLE
export PATH="$PATH:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin"
export ORACLE_HOME="/usr/lib/oracle/xe/app/oracle/product/10.2.0/server"
export ORACLE_SID="XE"

NLS_LANG=SPANISH_SPAIN.WE8ISO8859P1; export NLS_LANG

jueves, 21 de febrero de 2008

JAVASCRIPT. Posicionar Ventana. Redimensionar Ventana.



function CambiarDimension(){
window.resizeTo(660,605);
var ancho=window.screen.availWidth;
var alto=window.screen.availHeight;
var posY=(alto/2)-(605/2);
var posX=(ancho/2)-(660/2);
window.moveTo(posX,posY);
}

function posicionarVentana( ) {
window.moveTo( 180, 0);
}

// para ventanas pop-ups
window.open("vistas/Formulario.html" , "WindowFormulario" , "left=180,top=0,width=800,height=600,status=yes,toolbar=no,resizable=no,scrollbars=no");