Aplicar permisos de forma recursiva cuando sólo disponemos de FTP, ¿la solución? PHP

9 06 2011

Bien conocido es la problemática que se le presenta al desarrollador de aplicaciones web cuando, por ejemplo, necesita asignar permisos a un árbol de directorios lo suficientemente profundo como para que hacerlo elemento por elemento sea una tarea tediosa cuando el proveedor de servicios de hosting no ofrece acceso por SSH y sólo dispone de acceso por FTP al sistema de ficheros del plan contratado.

Casi ningún cliente de FTP permite asignación de permisos de manera recursiva o en profundidad, esto es, a un directorio y a todo lo que esté bajo el mismo; yo al menos no he encontrado ninguno que lo haga.

Entonces, ¿cuál es la solución para agilizar este procedimiento?

Pues si habéis sido listos y habéis escogido Linux para vuestro plan de alojamiento y éste permite ejecución de scripts, estáis de enhorabuena, pues tanto Perl como PHP poseen funciones que permiten cambiar permisos a ficheros y directorios del sistema en el que se estén ejecutando.

A continuación os dejo un sencillo script en PHP que asigna permisos 755 a todos los directorios y 644 a todos los ficheros:

// Comenzamos desde el directorio donde se ejecuta este script
$dir = "./";
$dirModes = 0755;
$fileModes = 0644;
$d = new RecursiveDirectoryIterator( $dir );
foreach (new RecursiveIteratorIterator($d, 1) as $path) {
    if ($path->isDir()) {
        chmod($path, $dirModes);
    } else if (is_file($path)) {
        chmod($path, $fileModes);
    }
}
Anuncios




Desplegables horizontales en HTML

30 03 2010

Hace unos días en el trabajo, mientras aplicaba estilos a un input select de un formulario en un documento HTML, cometí un error al aplicar un estilo in-line, encontrándome con esto:

Select horizontal

Select horizontal

Mi reacción fue reirme, dado que nunca había visto un desplegable de esta forma pero, ¿qué sucedió?

Bien, la cuestión es que en lugar de aplicar la propiedad de estilo css display:inline al elemento select, lo apliqué al alemento option de ese select, con lo que la siguiente opción se coocó justo a continuación y no debajo, como está estabecido por defecto (display:block).

Intrigado, me pregunté si sería posible disponer las opciones de un desplegable como una matriz y la conclusión es que sí se puede.

La solución es mezclar la aplicación errónea del estilo display:inline con el uso de elementos optgroup. Cada optgroup será una fila de nuestra matriz de opciones y cada opción dentro de cada fia tendrá aplicado un estilo display:inline. Como por defecto los elementos HTML se muestran como block, cada fila (optgroup) se mostrará debajo de la anterior y dentro de ellas, cada opción, al tener aplicado estilo display:inline, se mostrará justo al lado de la anterior 🙂

Así podemos construir de una forma sencillísima cosas como esta:

Select matricial

Select matricial

El código HTML correspondiente es el siguiente:

<select id="selectMatricialDesplegable" size="1">
    <optgroup>
        <option style="display:inline;">01</option>
        <option style="display:inline;">02</option>
        <option style="display:inline;">03</option>
        <option style="display:inline;">04</option>
        <option style="display:inline;">05</option>
        <option style="display:inline;">06</option>
        <option style="display:inline;">07</option>
    </optgroup>
    <optgroup>
        <option style="display:inline;">08</option>
        <option style="display:inline;">09</option>
        <option style="display:inline;">10</option>
        <option style="display:inline;">11</option>
        <option style="display:inline;">12</option>
        <option style="display:inline;">13</option>
        <option style="display:inline;">14</option>
    </optgroup>
    <optgroup>
        <option style="display:inline;">15</option>
        <option style="display:inline;">16</option>
        <option style="display:inline;">17</option>
        <option style="display:inline;">18</option>
        <option style="display:inline;">19</option>
        <option style="display:inline;">20</option>
        <option style="display:inline;">21</option>
    </optgroup>
    <optgroup>
        <option style="display:inline;">22</option>
        <option style="display:inline;">23</option>
        <option style="display:inline;">24</option>
        <option style="display:inline;">25</option>
        <option style="display:inline;">26</option>
        <option style="display:inline;">27</option>
        <option style="display:inline;">28</option>
    </optgroup>
</select>

No es nada espectacular pero mola. Espero que os sirva.





Importar módulos en OpenCms por lotes… ¿cómo?

17 02 2010

Una de las tareas más tediosas a la hora de poner en marcha nuestro gestor de contenidos basado en OpenCms es, sin duda alguna, la importación de los módulos que queramos añadir, máxime si estos son demasiados y si son dependientes entre ellos, ¿no es cierto?.

Para facilitar esta tarea, mientras desarrollaba para un proyecto con OpenCms en la empresa en la que trabajo, se me ocurrió hacer un pequeño alto en el camino y construir un modulito que permitiese importar módulos por lotes a nuestro gestor de contenidos. De aquí salió MultiModuleImporter.

La idea es sencilla, recopilamos todos aquellos módulos que queramos importar en un fichero comprimido .zip, lo seleccionamos desde la administración del workplace y todos nuestros módulos quedan importados, es más, todas las dependencias entre el conjunto de módulos a instalar quedan resueltas gracias a la ordenación topológica que ofrece la API de OpenCms.

A este módulo se le saca verdadero partido cuando, tras instalar OpenCms debemos instalar todos los módulos que conformen nuestra versión final del gestor de contenidos que hayamos desarrollado, evitando tener que importarlos uno a uno y evitando comprobar las dependencias, cosa que puede llegar a ser bastante frustrante.

Os paso el enlace a la descarga del módulo en la web de OpenCms Hispano, para que lo probéis y juzguéis vosotros mismos:





Prometo escalar correctamente mi web

19 01 2010

Esto es lo que ocurre cuando no se hace una predicción de los accesos concurrentes que puede llegar a tener un sitio web:

La web de Onda Cádiz, saturada.

Para que veáis el papel crucial que juega una buena planificación y una previsión acertada para escalar correctamente nuestra aplicación y realizar las configuraciones oportunas tanto en el servidor de aplicaciones como en el gestor de bases de datos, evitando con ello quedarnos en la estacada en momentos decisivos, como en esta web, en la que todo se fue al traste cuando la comparsa de Juan Carlos Aragón comenzaba su primera actuación en la fase de preliminares del Carnaval de Cádiz.





Ya no tienes excusa para no tener web: conoce Google Sites

19 01 2010

Hoy en día es inconcebible la compañía, pequeña o mediana empresa, organización, club e incluso el negocio familiar que no disponga de un sitio web, pues como todos sabemos, hoy día quien no está en Internet, simplemente, no está.

Ahora bien, no todo el mundo tiene tiempo, dinero o ganas para hacerse un sitio web a medida, por lo que mucha gente opta por crearse una cuenta en redes sociales como Facebook o Tuenti para “estar en el aire”, una excelente opción, desde luego, ya que estas cuentas son gratuitas y ofrecen bastantes facilidades comunicativas y multimedia. Pero ¿y si lo que queremos es tener un sitio mínimamente ajustado a nuestras necesidades y que sea independiente, y para colmo que sea gratis? La respuesta es muy sencilla: Google Sites.

Pues sí, nuestro querido amigo ha puesto a disposición de cualquiera que disponga de una cuenta de Google (que por su puesto es gratis), nada menos que 100 MB de espacio para crear todos los sitios web completos que quepan en dicho espacio mediante el conjunto de herramientas online: ¡sólo necesitas un navegador y una conexión a Internet para trabajar!

Con esto, cualquier usuario es capaz de crear un sitio web básico en menos de 30 minutos y, lo más importante, desde el momento que creas una página en tu site, ya está indexada por Google 😉

Las características, a mi gusto, más destacables del entorno de trabajo de Google sites son:

  • Facilidad de maquetación de las páginas.
  • Multitud de temas a partir de los cuales comenzar tu diseño.
  • Componentes para contenido dinámico (p.e. Anuncios).
  • Multitud de gadgets con los que integrar contenidos de terceros (p.e. Flickr o WordPress)

Algunos ejemplos de webs creadas con Google sites:

A no ser que no tengas ni tiempo ni ganas ya no hay excusa para no tener una web decente.








A %d blogueros les gusta esto: