Archive for Desarrollo web

diciembre 22nd 2017

Conoce Symfony … Así va a funcionar el nuevo drupal

Número de lecturas: 1476
{lang: 'es-419'}

Hace un mes participe en el Drupal Camp 2017, pude dictar una charla la cual la comparto espero les sea un aporte.

diciembre 19th 2017

VichUploaderBundle – no se puede reemplazar ni actualizar el archivo cargado

Número de lecturas: 1156
{lang: 'es-419'}

Generalmente cuando utilizo symfony para cargar imagenes lo hacia con las opciones del framework y en otros proyectos que utilizo VichUploaderBundle solo cargaba el archivo y lo solucionaba, sin embargo en este proyecto en especifico tengo la necesidad de editar el archivo que ya subi, lo cual no se hace con la configuración “normal” del Bundle.

Pero con unos pequeños en el archivo config.yml cambios todo funciona perfectamente.

La clave esta en agregar estas líneas:

//config.yml
delete_on_remove: true
delete_on_update: true

Un ejemplo completo sería asi:

vich_uploader:
    db_driver: orm
 
    mappings:
        user_images:
            delete_on_remove: true
            delete_on_update: true
            inject_on_load: true
            uri_prefix:         '%app.path.user_images%'
            upload_destination: '%kernel.root_dir%/../web/uploads/images/users'

Si se necesita más lugares donde cargar archivos se agregan mappings con la misma lógica

Fuente:

http://mossco.co.uk/
https://symfony.com/doc/current/controller/upload_file.html
https://stackoverflow.com/questions/22484000/update-form-vich-uploader-cannot-delete-or-edit-file

noviembre 27th 2017

Renombrar varios archivos a la vez, en lote, desde consola (linux)

Número de lecturas: 2635
{lang: 'es-419'}

Muchas veces tenemos un montón de ficheros y queremos modificar en lote su nombre de archivo por alguna circunstancia, añadir texto, suprimir texto, reemplazar algún carácter por otro… y nos llevaría mucho tiempo ir editando uno a uno cuando lo que queremos es hacer la misma edición para todos. Para ello podemos renombrar todos los archivos en lote, todos a la vez, usando desde una consola Linux el comando rename (*ver pie) con expresiones regulares que nos permitan reemplazar lo que necesitemos. Mostraremos características, algunos ejemplos y la explicación de expresiones regulares para usar con rename:

Características:

Parámetros del comando rename:
-v (Verbose: modo detallado, nos saca en pantalla lo que se va haciendo en el proceso)
-n (No Action: no realiza la acción, solo nos muestra lo que haría, es importante poner este parámetro junto con -v la primera vez que ejecutamos para comprobar que el resultado que vamos a obtener es el que queremos)
-f (Force: sobrescribe los ficheros existentes)
*.* para que trate todos los archivos con extensión del directorio
\ Localiza caracteres especiales tipo [ , {, (, -, _, “.”, …

 

Ejemplos:

1) Añadir algo tras una parte del nombre del archivo que es común en todos los ficheros.
Ejemplo:
imagenXXXX.jpg por imagen_NEW_XXXX.jpg

# rename 's/imagen/imagen_NEW_/' *.jpg -v-n

2) Renombrar un grupo de imágenes con nombres diferentes. Si tenemos un grupo de imágenes (por ejemplo PNG) a las que les queremos añadir una información en la parte final del nombre de la imagen antes de la extensión.
Ejemplo:
nombreimagen.png por nombreimagen_150x150.png

# rename 's/\.png/\_150x150.png/' *.png -v -n

3) Vamos a suponer que queremos reemplazar los guiones bajos por guiones medios (“_” por “-“) en los nombres de nuestros archivos de un directorio determinado.

# rename 's/_/-/' *.jpg -v -n

Podemos ejecutar repetidamente por si hay varios guiones bajos en el nombre del archivo o utilizar expresiones regulares de repetición tipo {m} {n}… * Ver más abajo la referencia de expresiones regulares

4) Añadir texto al inicio del nombre del fichero. Con el carácter ^ le indicamos al comando rename que se sitúe en el comienzo del nombre del fichero y ahí inserte o ejecute la segunda parte.
Ejemplo:
leccion 1.doc,
leccion 2.doc
por
tema – leccion 1.doc,
tema – leccion 2.doc …

# rename 's/^/tema – /' *.doc -v -n

5) Si queremos eliminar varios caracteres antes de un punto de corte determinado.
Ejemplo:
texto1_abc_001_small.jpg,
texto2_abc_002_small.jpg,
texto3_abc_003_small.jpg
por
texto1_small.jpg,
texto2_small.jpg,
texto3_small.jpg

Utilizamos para el corte la cadena “_small” y le decimos que nos elimine los 8 caracteres (\w) anteriores, o los reemplace por lo que indiquemos en la segunda parte del comando rename.

# rename 's/\w{8}\_small/_small/' *.jpg -v -n

5b) Si queremos reemplazar desde un punto determinado de corte, pero respetando un número concreto de caracteres numéricos antes de la parte donde se produce el corte. Para este caso usamos el elemento “$1” en la cadena de la parte derecha, para que nos coja esa variable obtenida de la parte izquierda.  Viendo el ejemplo se entenderá mejor.
Ejemplo:
texto1_uno001_small.jpg,
texto2_otro002_small.jpg,
texto3_cualquiera003_small.jpg …
por
texto1_uno_ADD-001_small.jpg,
texto2_otro_ADD-002_small.jpg,
texto3_cualquiera_ADD-003_small.jpg …

Utilizamos para el corte la cadena “_small” y le decimos que nos guarde los 3 caracteres numéricos (\d) anteriores (001, 002, 003…) utilizando el $1 en la segunda parte del comando (la expresión de la derecha) Nos añadirá o modificara lo indicado en la segunda parte del comando rename justo antes de esos 3 caracteres reservados antes del corte.

# rename 's/(\w{3})\_small/_ADD–$1_small/' *.jpg -v -n

6) Cambiar mayúsculas y minúsculas.
Ejemplo:
mi_fichero.txt por MI_FICHERO.TXT

# rename 'y/a-z/A-Z/' *.txt -v -n

7) Eliminar del nombre del fichero caracteres especiales que no están entre la letra a y la z (a-z) . Dejando en el nombre del fichero solo caracteres alfanuméricos.
Ejemplo:
mi-fichero.txt por mifichero.txt

# rename 'v/[^a-z]//' *.* -v -n

Para cambiar varios caracteres lo ejecutamos varias veces:
Ejemplo:
mi-fichero-con-varios-caracteres.txt por mificheroconvarioscaracteres.txt
Lo ejecutaremos 4 veces.

 

Expresiones regulares:

A continuación dejo un listado explicando (en inglés) las expresiones regulares que se pueden utilizar con este comando rename:

^ matches the beginning of the line
$ matches the end of the line
. Matches any single character
(character)* match arbitrarily many occurences of (character)
(character)? Match 0 or 1 instance of (character)
[abcdef] Match any character enclosed in [] (in this instance, a b c d e or f) ranges of characters such as [a-z] are permitted. The behaviour of this deserves more description.
[^abcdef] Match any character NOT enclosed in [] (in this instance, any character other than a b c d e or f)
(character){m,n} Match m-n repetitions of (character)
(character){m,} Match m or more repetitions of (character)
(character){,n} Match n or less (possibly 0) repetitions of (character)
(character){n} Match exactly n repetitions of (character)
(expression) Group operator.
\n Backreference – matches nth group
expression1|expression2 Matches expression1 or expression 2. Works with GNU sed, but this feature might not work with other forms of sed.
\w matches any single character classified as a “word” character (alphanumeric or “_”)
\W matches any non-“word” character
\s matches any whitespace character (space, tab, newline)
\S matches any non-whitespace character
\d matches any digit character, equiv. to [0-9]
\D matches any non-digit character

 

* Please note that the rename command is part of the util-linux package and can be installed on a Debian or Ubuntu Linux, using the following syntax:

$ sudo apt-get install renameutils

Fuente:
bonaval.com

noviembre 24th 2017

¿Qué es y para que sirve un sandbox en la informática?

Número de lecturas: 990
{lang: 'es-419'}

A continuación veremos una explicación simple para que todo el mundo pueda comprender lo que es un sandbox en el mundo de la informática.

¿QUÉ ES UN SANDBOX?

Un sandbox es un mecanismo de seguridad para disponer de un entorno aislado del resto del sistema operativo.

Todos los programas que se ejecutan dentro de un sandbox lo hacen de forma controlada mediante los siguientes aspectos:

  1. Se les asigna un espacio en disco. Estos programas no podrán acceder a ningún espacio del disco que no les haya sido asignado previamente.
  2. Podemos hacer que nuestros programas se ejecuten en un sistema de archivos temporal (tmpfs) para aislarlos del resto del sistema operativo.
  3. También se les asigna un espacio en memoria. Los programas no podrán acceder a otras partes de la memoria que no les hayan sido asignadas.
  4. Les podemos dar o restringir la capacidad para acceder y consultar dispositivos de almacenamiento externos.
  5. Les restringimos la capacidad para que puedan inspeccionar la máquina anfitrión.
  6. Podemos restringir el acceso de los programas a la red, al servidor de las X, al servidor de sonido, etc.
  7. Podemos limitar el ancho de banda que usa un determinado programa.
  8. Etc.

Consecuentemente podemos afirmar que los programas se ejecutan en un entorno controlado y separado del sistema operativo. Por lo tanto el hecho de ejecutar un programa en un sandbox es un ejemplo específico de virtualización.

¿QUÉ UTILIDAD TIENE UN SANDBOX?

Nos podemos hacer la idea que su principal utilidad es ejecutar programas de forma segura y sin peligro de comprometer el resto del sistema operativo.

Algunos ejemplos de los casos en que podemos utilizar un sandbox son los siguientes:

  1. Instalar y usar de forma segura programas que no son fiables y/o pueden contener virus y/o código malicioso.
  2. Usar programas que tienen el potencial de comprometer la seguridad de nuestro sistema operativo como por ejemplo un navegador web, Skype, un lector de pdf, un keygen descargado de Internet, etc.
  3. Crear un entorno de pruebas para ejecutar programas o un código que acabamos de crear.
  4. Para descargar Torrents.
  5. Etc.

Por lo tanto podemos ver que un sandbox no es de uso exclusivo para programadores o expertos informáticos. También es útil para todo tipo de usuarios.

Algunos de los navegadores web que usamos disponen de su propio sandbox. No obstante no es mala idea usar dos capas de protección porque los navegadores web son altamente susceptibles de sufrir problemas de seguridad.

¿CÓMO PODEMOS USAR UN SANDBOX?

En función del sistema operativo que usemos existen diferentes software que nos permitirán ejecutar programas dentro de un sandbox. Algunos ejemplos son los siguientes:

  1. GNU-Linux: Firejail, Glimpse.
  2. Windows: Sandboxie, Shadow Defender.

Fuente:

geekland.eu