02 junio 2008

Programar tareas en Linux con cron

Para programar tareas con Linux, lo más usual es utilizar el comando cron que nos permite establecer la frecuencia con que se debe ejecutar la tarea. El fichero clave para configurar las tareas está en /etc/crontab y por defecto aparecen directorios predefinidos donde se pueden ubicar scripts para su ejecución.

# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #
Para añadir una entrada manual tenemos que seguir el formato de la línea a introducir:
minuto hora dia-del-mes mes dia-de-la-semana usuario comando De modo que para se ejecute el script backup.sh que tenemos en /root una vez a la semana (domingo) a las 2:30 pondríamos:
30 2 * * 7 root /root/backup.sh
Nota 1: cron hace comprobaciones sobre lo que tiene que ejecutar cada minuto. El asterisco '*' sirve para indicar que cualquier valor es válido en ese campo, de tal modo que si todos los campos son asteriscos, la tarea se ejecutará cada minuto.
Nota 2: Si en lugar de especificar los minutos, horas, etc... queremos especificar cada x unidades, debemos hacerlo con la barra de dividir: */30 * * * * (cada 30 minutos) 30 */6 * * * * (cada 6 horas cuando los minutos sean 30) ... Más información: LinuxTotal.com.mx

14 mayo 2008

Ordenar alfabéticamente programas del menú de inicio

Cuando en Windows XP instalamos programas, la mayoría añaden accesos directos en el menú de Inicio, pero con el tiempo van quedando desordenados y es difícil localizar las aplicaciones. Existe una forma muy sencilla de poner por orden alfabético esos elementos:

  1. Vamos a [Inicio > Todos los programas] y ponemos el cursor encima de cualquiera de ellos
  2. Pulsamos el botón derecho y seleccionamos "Ordenar por nombre"
Nota: Al ordenar primero van las carpetas y luego los elementos sueltos.

30 abril 2008

Sincronizar hora en XP desde línea de comandos

Para sincronizar la hora y la fecha en Windows XP lo más sencillo es hacer doble click en el reloj (abajo a la derecha), elegir la pestaña Hora de Internet, y pulsar [Actualizar hora]. Ahí también se puede introducir el servidor de hora deseado (time.windows.com por defecto).

Pero si lo que queremos es automatizar esa tarea para realizarla con cierta frecuencia o al inicio de windows, podemos utilizar el comando c:\windows\system32\w32tm.exe /resync

En el registro, podemos modificar parámetros en:
HKLM\System\CurrentControlSet\Services\W32Time
Descripción detallada (inglés)

Para programar la actualización de la hora podemos seguir los pasos que había descrito aquí.

Más información: http://support.microsoft.com/kb/307897/es

29 abril 2008

LaTeX en Windows

Para poder usar un excelente lenguaje de formateo de textos profesional como es LaTeX en Windows podemos usar el siguiente software libre:

  • MiKTeX
    http://www.miktex.org

    La implementación más popular de LaTeX disponible para Windows se llama MiKTeX. Se puede conseguir, de forma totalmente gratuita, la última versión desde su página. MiKTeX es un proyecto activo se actualiza y mejora con bastante frecuencia.

  • Ghostscript y GSview
    http://www.cs.wisc.edu/~ghost/

    Este par de programas los necesitas para todo lo relacionado con los archivos PostScript. Ghostscript es el motor principal que se encarga de hacer las conversiones de formtato y toda clase de operaciones especiales con archivos PostScript. GSview es una interface gráfica con ventanas y botones al estilo Windows para hacer el uso de Ghostscript mucho mas sencillo.

  • TeXnicCenter
    http://www.texniccenter.org/

    MiKTeX, junto con un Bloc de Notas y una ventana de MS-DOS, es suficiente para compilar documentos de LaTeX. Sin embargo, para hacerte la vida mucho mas fácil, es muy recomendable utilizar el TeXnicCenter. Éste es un editor especializado con syntax highlight (colores para resaltar la sintaxis) así como botones y menús para tener todos los comandos de LaTeX a la mano.

Fuente: http://www.cs.man.ac.uk/~navarroj/latex/winlatex.html

26 abril 2008

Localizar el menú autoplay en el registro de XP

Me ha costado, pero he conseguido averiguar donde se aloja en el registro de XP las entradas de la famosa ventana "¿Qué desea que haga Windows?" que aparece cuando introducimos un disco (CD-ROM o DVD) y se ejecuta el autorun. En la ruta:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ \Explorer\AutoplayHandlers\Handlers

están todos los handlers ("manejadores") que aparecen en la ventana, pero para eliminarlos y corregir errores lo mejor es usar el programa CleanHandlers que se puede descargar desde:
http://windowsxp.mvps.org/autoplayhandlers.htm

Para crear nuevas entradas podemos usar Tweak UI (descargable desde la página de las Microsoft PowerToys), yendo a la sección [My Computer > Autoplay > Handlers] y pulsando [Create].

21 abril 2008

Túnel SSH para conectarse a subversion

Vou a poner un caso ilustrativo que puede ser extensible a casos similares. Tenemos un Equipo A que quiere acceder a un repositorio de Subversion (puerto 3690) de un Equipo B, pero el Equipo B tiene restringido el acceso a determinadas IPs entre las cuales está el Equipo C (en el cual tenemos cuenta). La solución es utilizar un túnel ssh para poder conectar el Equipo A al Equipo B a través del Equipo C.


EquipoA> ssh -L3690:EquipoB:3690 EquipoC


Lo que significa: "crea un túnel SSH para que el puerto local (Equipo A) 3690 esté conectado con el puerto 3690 del Equipo B a través del Equipo C."

Una vez establecida la conexión (nos pedirá los datos de la cuenta del Equipo C que usamos de intermediario), podemos conectarnos a su repositorio mediante la URL: svn://localhost:3690 desde el Equipo A de forma transparente.

Existe otra alternativa sin usar el Equipo C de intermediario cuando tenemos cuenta en el propio Equipo B al que nos queremos conectar:


EquipoA> ssh -L3690:EquipoB:3690 EquipoB


Lo que significa: "crea un túnel SSH para que el puerto local (Equipo A) 3690 esté conectado con el puerto 3690 del Equipo B directamente por SSH". Nos conectaremos al repositorio con: svn://localhost:3690

Una última opción, si tenemos acceso ssh al Equipo A, sería conectarnos por ssh al Equipo B y desde ahí ejecutar (usando ahora el parámetro -R para dejar el puerto accesible desde el equipo al que nos conectamos, no desde el que lo lanzamos) :


EquipoB> ssh -R3690:EquipoB:3690 EquipoA


Lo que significa: "crea un túnel SSH para que el puerto 3690 del Equipo B esté conectado con el puerto 3690 del Equipo A directamente por SSH". Nos conectaremos al repositorio con: svn://localhost:3690

Nota 1: La conexión permanecerá activa mientras dure la sesión SSH.

Nota 2: Desde Windows se puede utilzar el putty para crear el túnel, introduciendo los parámetros en la categoría Connection > SSH > Tunnels y luego conectándonos al EquipoB por ssh como siempre.

13 marzo 2008

Contar número de ficheros en Linux

Para contar el número de ficheros que hay en un directorio en Linux podemos usar el comando wc -l que cuenta el número de líneas. De esta forma haciendo:

> find -type f | wc -l

obtendríamos el número deseado.

Otros comandos interesantes son du (directory usage) para saber lo que ocupa un directorio recursivamente:

> du -h

df (disk free) para saber el espacio usado y libre en disco:

> df -h

Y free para saber la memoria usada y disponible:

> free -m

Los dos primeros admiten el parámetro -h (human readable), para que no muestre en bytes sino en KB o MB si el valor es alto y el último admite -b (Bytes), -k (KB), -m (MB) y -g (GB).

03 marzo 2008

Priorizar adaptador de red en Windows XP y Vista

Cuando tenemos varios interfaces de red es posible que necesitemos priorizar alguno para que los enrutamientos se realicen en un determinado orden (por ejemplo cuando instalamos Hamachi)

  • Windows XP: Vamos a [Inicio > Panel de Control > Conexiones de Red] y en el menú Opciones Avanzadas... elegimos "Configuración avanzada..." donde ya podremos ordenar seleccionando la Conexión deseada en el cuadro superior y pulsando arriba o abajo.

  • Windows Vista: Accedemos a las Conexiones de Red escribiendo ncpa.cpl en el campo Búsqueda que aparece en el Menú de Inicio y pulsando Enter. En la ventana pulsamos una vez la tecla ALT para que aparezca el menú, vamos a [Opciones Avanzadas...] y elegimos "Configuración avanzada..." donde ya podremos ordenar seleccionando la Conexión deseada en el cuadro superior y pulsando arriba o abajo.
Nota: para ver como están configuradas las rutas, se puede ejecutar el comando route print desde la Consola del Sistema.

19 febrero 2008

Mediawiki: Crear usuario y modificar barra lateral

MediaWiki es la aplicación en la que se ha basado la famosa Wikipedia, pero en ocasiones no es fácil encontrar la manera de realizar ciertas operaciones como crear un usuario o modificar la barra lateral (sidebar) como administrador (wiki sysop):

  • Crear una cuenta de usuario: introducimos en el campo de búsqueda Special:Userlogin y le damos a buscar. Si tenemos los permisos apropiados aparecerá la opción de crear una cuenta.

  • Modificar la barra lateral: introducimos en el campo de búsqueda: MediaWiki:Sidebar y le damos a buscar.

    Más información: http://www.mediawiki.org/wiki/Manual:Navigation_bar

29 enero 2008

Usando JSON con PHP

JSON (JavaScript Object Notation) se puede utilizar en lugar de XML para el intercambio de información con Javascript. Algunos llaman AJAJ en lugar de AJAX a la programación Javascript asíncrona con JSON. La clave para leer objetos JSON con Javascript es la función eval() que debe ser utilizada con precaución, ya que ejecuta cualquier código que se le pase como parámetro.

Para intercambiar información JSON entre Javascript y PHP existen dos funciones muy útiles (a partir de PHP 5.x): json_encode() y json_decode().

Ejemplo:

$i = array(
array("id" => 1, "name" => "linus"),
array("id" => 2, "name" => "bill"),
array("id" => 3, "name" => "steve")
);

echo json_encode($i);

El resultado será:
[{"id":1,"name":"linus"},{"id":2,"name":"bill"},{"id":3,"name":"steve"}]

Para utilizar los datos JSON en el cliente mediante Javascript usaremos eval() para leer el objeto enviado desde PHP:
var json = eval('(' + miRespuestaJSON + ')');
for(var i = 0; i < json.length; i++)
{
console.info(json.id + " " + json.name);
}

Fuente:
http://www.json.es/2007/07/09/usando-json-desde-php/

26 enero 2008

PNG transparente en Internet Explorer 6

Existen varias soluciones para tratar de solucionar este gran problema del IE6, una de ellas es incorporar en la página HTML (dentro de head) el siguiente código:

<!--[if lt IE 7]>
<script language="JavaScript">
function PNG_loader() {
for(var i=0; i<document.images.length; i++) {
var img = document.images[i];
var imgName = img.src.toUpperCase();
if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
var imgID = (img.id) ? "id='" + img.id + "' " : "";
var imgClass = (img.className) ? "class='" + img.className + "' " : "";
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
var imgStyle = "display:inline-block;" + img.style.cssText;
if (img.align == "left") imgStyle += "float:left;";
if (img.align == "right") imgStyle += "float:right;";
if (img.parentElement.href) imgStyle += "cursor:hand;";
var strNewHTML = "<span " + imgID + imgClass + imgTitle
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>";
img.outerHTML = strNewHTML;
i--;
}
}
}
window.attachEvent("onload", PNG_loader);
</script>
<![endif]-->

Nota: A veces puede tener efectos secundarios y descolocar algún elemento cercano a las imágenes ya que cambia la etiqueta img por span...

Más información:
http://homepage.ntlworld.com/bobosola/pnghowto.htm

27 noviembre 2007

Problemas en webs con codificación UTF-8

Me he encontrado con este problema al instalar en la versión española de phpTrafficA, un portal PHP-MySQL para estadísticas. Los caracteres latinos salían incorrectamente a pesar de tener configurado en el HTML:

<?xml version="1.0" encoding="UTF-8"?>
o
<meta equiv="content-type" content="text/html; charset=UTF-8">

Existen varias soluciones:
  • Modificar apache2.conf. Por defecto las páginas PHP se suelen servir con codificación ISO-8859-1. Se podría forzar a servirlas en UTF-8 poniendo: AddDefaultCharset UTF-8
  • Modificar el fichero .htaccess del directorio web, pudiendo desactivar (AddDefaultCharset off) o forzar UTF-8 (AddDefaultCharset utf-8)
  • Configurando la cabecera de las páginas mediante PHP, añadiendo al principio de las páginas:
    <?php header('Content-Type: text/html; charset=UTF-8'); ?>

22 noviembre 2007

Consola MS-DOS de Vista con teclado en inglés

Este problema es un clásico de Windows Vista 32 (en Vista 64 no puede ejecutarse MS-DOS ya que en 64 bits, por diseño de la CPU no pueden ejecutarse tareas de 16 bits).

Al abrir un cmd.exe el teclado sigue en español, pero en cuanto ejecutamos un command, el teclado se convierte al teclado inglés y por tanto todas las aplicaciones MSDOS puras, heredan el teclado en inglés.

Para solucionarlo, abrimos con el Bloc de Notas el fichero C:\windows\system32\autoexec.nt y le añadimos al final una línea que ponga:

kb16 sp

Y ya está. Al arrancar de nuevo cualquier programa MSDOS, ya tendrá correctamente configurado el teclado.

Fuente:

http://www.multingles.net/docs/jmt/wvteclado.html

30 octubre 2007

Opción "No a todo" en diálogo al borrar, copiar o mover

Cuando realizamos algunas operaciones de borrar, copiar o mover archivos puede aparecernos un diálogo con varias opciones para borrar o sobreescribir: , Sí a todo, No, Cancelar... Pero no tenemos la necesaria opción "No a todo". Sin embargo podemos ejecutar esa opción haciendo click en "No" mientras se mantiene pulsada la tecla Mayúsculas.

22 septiembre 2007

CSS: hacks para igualar webs en distintos navegadores

A pesar de utilizar CSS, muchas veces no conseguimos que el resultado se vea igual en todos los navegadores. Para conseguir distinguirlos y crear estilos propios para cada uno, se han venido utilizando los famosos "hacks" que normalmente aprovechan bugs de los navegadores Internet Explorer (IE) para marcar diferencias y sobreescribir valores genéricos:

p{
color:#000; /* Definición genérica */
}
* html p {
color:#f00; /* Solo se modifica para IE6 */
}

p {
color: #000; /* Definición genérica */
#color: #f00; /* Se modifica sólo para IE */
}

.titulo {
height: 15px; /* Definición genérica */
#height: 15px; /* Se modifica sólo para IE */
_height: 21px; /* Se modifica sólo para IE6 */
}

#header {margin-bottom: 3em;} /* Definición genérica */
html>body #header {margin-bottom: 1em;} /* Se modifica sólo para IE6 */

.elemento {
width: 700px;
\width: 710px; /* Se modifica sólo para IE5.x */
wid\th: 710px; /* Se modifica para el resto de navegadores */
}

El uso de los hacks no es muy recomendable, puesto que en el futuro es probable que queden obsoletos y en los nuevos navegadores las páginas se vean incorrectamente. Además su uso hace que los documentos CSS puedan dejar de seguir el estándar. Así, siempre que sea posible, usaremos esta otra alternativa que nos permite cargar un css específico para cada navegador:

<!-- Usar ie6.css si el navegador es igual a Internet Explorer 6 -->
<!--[if IE 6]>
<link href="css/ie6.css" rel="stylesheet" type="text/css">
<![endif]-->

<!-- Usar ie.css si el navegador es Internet Explorer -->
<!--[if IE]>
<link href="css/ie.css" rel="stylesheet" type="text/css" />
<![endif]-->

<!-- Usar ie56.css si el navegador es anterior a Internet Explorer 7 -->
<!--[if lt IE 7]>
<link href="/css/ie56.css" rel="stylesheet" type="text/css">
<![endif]-->

<!-- Usar estilo si el navegador es Internet Explorer 6 o posterior -->
<!--[if gte IE 6]>
<style>.titulo {width: 150px;}</style>
<![endif]-->

Enlaces relacionados:
http://metalize.liveonstyle.com/2007/07/08/evita-los-hacks-en-tu-css
http://www.albertofortes.com/blog/?p=290
http://www.disenorama.com/articulos/el-modelo-de-cajas-en-CSS
http://css-discuss.incutio.com/?page=BoxModelHack

12 septiembre 2007

Problema de apagado automático en XP

Si tenemos el problema de que al apagar el Windows nos aparece el mensaje "Ahora puede apagar su equipo" y no se apaga automáticamente (aún teniendo una fuente ATX), es probable que sea por la configuración de la gestión de energía del XP o por no estar correctamente configurada en la BIOS. Para solucionarlo se puede probar con las siguientes opciones:

OPCIÓN 1: Vamos a [Inicio > Panel de Control > Pantalla], luego seleccionamos la pestaña 'Protector de Pantalla' y pulsamos en [Energía...]. Si te aparece la pestaña APM, activas aí la compatibilidad de ahorro de energía.

OPCIÓN 2: Vamos a [Inicio > Panel de Control > Opciones de Energía] y si aparece la pestaña APM, activamos "Habilitar la compatibilidad con la administración avanzada de energía"

OPCIÓN 3: Vamos a [Inicio > Panel de Control > Sistema] y en la pesataña 'Hardware' pulsamos en [Administrador de dispositivos]. Vamos al menú Ver y seleccionamos 'Mostrar dispositivos ocultos' y luego buscamos en los dispositivos "Equipo compatible con Advanced Configuration and Power Interface (ACPI)" para habilitarlo.

OPCIÓN 4: Entramos en la BIOS (pulsando [Supr/Del] al encender el equipo), buscamos la opción APM (Advanced Power Management) o ACPI (Advanced Configuration and Power Interface) y la ponemos en ENABLED para activarla.

Enlaces relacionados:
http://www.configurarequipos.com/doc19.html
http://www.forospyware.com/archive/t-68546.html
http://www.yoreparo.com/foros/reparacion_de_computadoras/49108.html

01 septiembre 2007

Javascript: codificación hexadecimal de caracteres

Si vamos a enviar con Javascript (mediante GET o POST) parámetros de un formulario que contienen tildes, eñes o caracteres raros, podemos utilizar la función escape(cadena) para generar una cadena válida y unescape(cadena) para invertir el proceso.

La función escape retorna la codificación hexadecimal del argumento en el conjunto de caracteres Latinos ISO. La función unescape retorna la cadena ASCII para el especificado valor hexadecimal decodificado.

Ejemplos:

document.write(escape("¡Qué hermoso niño!"));
Salida: %A1Qu%E9%20hermoso%20ni%F1o%21

document.write(unescape("%A1Qu%E9%20hermoso%20ni%F1o%21"));
Salida: ¡Qué hermoso niño!


 

Existen otras funciones similares como:

  • encodeURI(cadena) / decodeURI(cadena)
  • encodeURIComponent(cadena) / decodeURIComponent(cadena),
  • encodeURL(cadena) / decodeURL(cadena)
  • encodeURLComponent(cadena) / decodeURLComponent(cadena)

Más info y codificador on-line (inglés):
http://www.barelyfitz.com/projects/encoder/

Nota: Estas funciones pueden ser útiles para el envío automático de formularios web a una dirección de correo electrónico, cuando en el email no se visualizan correctamente los caracteres (por ejemplo para usar cuando enviamos parámetros al famoso script formmail).

28 agosto 2007

Anular e intercambiar teclas en XP

Cada tecla tiene dos códigos (ScanCode), uno lo emite cuando se pulsa (representado en rojo) y el otro cuando se deja de pulsar (representado en azul). Por ejemplo, en hexadecimal:

El ScanCode de la tecla S es: 001F
El ScanCode de la tecla L es: 0026
El ScanCode de la tecla CTRL izq. es: 001D
El ScanCode de la tecla CTRL dcho. es: E01D
El ScanCode de la combinación ALT+SUPR es: 0098

Para poder anular o cambiar teclas debemos ir al editor del registro ([Inicio > Ejecutar > regedit] + ENTER) y buscar la clave:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\KeyBoard Layout

Luego hay que crear un nuevo valor binario (REG_BINARY) llamado Scancode Map con la siguiente estructura:

00 00 00 00 (Cabecera)
00 00 00 00 (Flags)
00 00 00 00 (nº de teclas a modificar + 1)
00 00 00 00 (Código para la primera tecla a modificar)
...
00 00
00 00
(Código para la última tecla a modificar)
00 00 00 00 (Terminación)

Así, puesto que:

(
OJO que los números van al revés con respecto al ScanCode)

El código para anular la tecla CTRL izdo. (001D) es 00 00 1D 00
El código para anular la tecla CTRL dcho. (E01D) es 00 00 1D E0
El código para anular la combinación ALT+SUPR (0098) es 00 00 98 00
El código para cambiar la tecla S (001F) por la L (0026) es 26 00 1F 00

La estructura del valor a introducir para conseguir anular y cambiar lo de arriba sería:

00 00 00 00 (Cabecera)
00 00 00 00 (Flags)
05 00 00 00 (nº de teclas a modificar + 1)
00 00 1D 00 (Anular la tecla CTRL izdo.)
00 00 1D E0 (Anular la tecla CTRL dcho.)
00 00 98 E0 (Anular la combinación ALT+SUPR)
26 00 1F 00 (Cambiar la tecla S por la L)
00 00 00 00 (Terminación)

Lo que tendríamos que introducir en el valor binario del registro sería entonces:

00 00 00 00 00 00 00 00 05 00 00 00 00 00 1D 00 00 00 1D E0 00 00 98 E0 26 00 1F 00 00 00 00 00

Tabla de ScanCodes:
http://www.glue.umd.edu/~nsw/ench250/scancode.htm

Enlace relacionado:
http://pio9.com/22teclado.htm

08 julio 2007

Proteger carpeta en Windows XP

A veces, podemos querer mantener una carpeta protegida en una zona común del disco duro y que otros usuarios de nuestro PC (incluídos los administradores) no tengan acceso a ella. Ésto se puede hacer en Windows XP modificando convenientemente los permisos sin necesidad de recurrir a ningún programa específico:

  1. Vamos a Mi PC (o cualqueir ventana del exploraror de archivos) y en el menú Herramientas elegimos Opciones de carpeta...
  2. En la pestaña Ver, al final de todo desmarcamos "Utilizar uso simple de archivos" para poder acceder a la opciones avanzadas de seguridad de las carpetas y archivos.
  3. Creamos la carpeta a proteger y pulsamos sobre ella con el botón derecho para elegir la opción "Compartir y Seguridad..."
  4. En la pestaña Seguridad aparecen los usuarios y grupos de usuarios que por defecto tienen acceso a la carpeta. Si intentamos eliminarlos nos avisa de que debemos desactivar la opción de heredar permisos...
  5. Pulsamos el botón inferior [Opciones avanzadas...] y desmarcamos la casilla "Heredar del objeto principal las entradas de permisos relativas a los objetos secundarios. Incluirlas junto a..." tras lo cual nos aparecerá un cuadro de confirmación con varias opciones. Pulsamos [Quitar] y luego [Aceptar]. Nos avisarán de que hemos denegado a todos el acceso a la carpeta y que sólo el propietario podrá cambiar los permisos. Pulsamos [Sí] para continuar y volver a la ventana donde ahora aparecerá la lista de "Nombres de grupos o usuarios" vacía.
  6. Pulsamos [Agregar...], después [Avanzadas...], luego [Buscar ahora] y seleccionamos el usuario al que le querramos dar permiso de la lista (normalmente nuestro propio usuario).
  7. Pulsamos [Aceptar] hasta volver nuevamente a la lista donde aparecerá el usuario que acabamos de seleccionar. Los permisos normales que deben estar seleccionados (columna Permitir) son:
    • Lectura y ejecución
    • Mostrar el contenido de la carpeta
    • Leer
    • Escribir (si queremos)
  8. Pulsamos [Aceptar] para finalizar. Opcionalmente podemos volver a activar la opción desmarcada en el paso 2 si queremos dejar todo como estaba.
A partir de este momento los otros usuarios (aún siendo administradores) no podrán acceder a la carpeta.

05 junio 2007

CSS: centrar un div con tamaño absoluto

Cuando trabajamos con tamaños absolutos (position: absolute) no es sencillo centar un div en la página. Esta es una opción para un div de 300x200 pixels:

div {
position: absolute;
left: 50%;
top: 50%;
width: 300px;
height: 200px;
margin-top: -100px; /* mitad de la altura */
margin-left: -150px; /* mitad del ancho */
overflow: auto;
border: 1px solid red;
}

Información detallada:
http://www.programacionweb.net/articulos/articulo/?num=461

Para el caso de querer centrar un div no absoluto podríamos hacer lo siguiente:
  1. Crear un div que ocupe el 100%
  2. Ponerle tex-align:center;
  3. Dentro de ese div insertar otro del tamaño que sea
  4. Poner a este segundo div margin-left:auto; margin-right:auto;