Variables variables en Bash

Las variables variables se utilizan cuando queremos tener nombres de variables que puedan usarse y modificarse de forma dinámica. PHP permite su uso de forma directa: <?php $a = 'hello'; ?> Una variable variable toma el valor de una variable y lo usa para el nombre de la variable. Podemos utilizar “hello” como nombre de variable utilizando dos signos de dólar: <?php $$a = 'world'; ?> En este punto tenemos dos variables, $a que contiene “hello” y $hello que contiene “world”. Así, las siguientes instrucciones escriben “hello world”: ...

June 29, 2011 · 1 min · 181 palabras · Nacho Cano

Nombres de fichero con espacios en Bash

Si queremos recorrer un directorio y hacer algo con cada fichero o subdirectorio contenido en él, podemos ejecutar algo como: $ for f in *; do echo "$f"; done En lugar de utilizar un for, también podríamos usar el comando find con el parámetro exec: $ find . -maxdepth 1 \( -name '*' ! -name '.' \) -exec echo {} \; O en lugar del exec con un while: $ find . -maxdepth 1 \( -name '*' ! -name '.' \) | while read f; do echo "$f"; done Un par de cosas: ...

May 11, 2011 · 1 min · 181 palabras · Nacho Cano

Desordenando listas en Python

Si tenemos una lista de elementos, por ejemplo: >>> l = [ 2, 3, 5, 7, 11, 13, 17, 19 ] Y queremos desordenarla, pero con la condición de que ningún elemento ocupe la misma posición que ocupaba originalmente, podemos aplicar el algoritmo de Sottolo: >>> from random import randrange >>> def sattoloCycle(items): ... i = len(items) ... while i > 1: ... i = i - 1 ... j = randrange(i) # 0 < = j <= i-1 ... items[j], items[i] = items[i], items[j] ... return >>> sattoloCycle(l) >>> print l [5, 17, 3, 2, 7, 11, 13]

March 29, 2011 · 1 min · 99 palabras · Nacho Cano

LaTeX en Wordpress

Descarga el plugin de LaTeX para Wordpress. Luego, escribe: \begin{align*} ax^2+bx+c &= 0 \\ x^2+\frac{b}{a}x+\frac{c}{a} &= 0 \\ x^2+\frac{b}{a}x &= -\frac{c}{a} \\ x^2+\frac{b}{a}x+\frac{b^2}{4a^2} &= \frac{b^2}{4a^2} - \frac{c}{a} \\ (x+\frac{b}{2a})^2 &= \frac{b^2}{4a^2} - \frac{4ac}{4a^2} \\ x+\frac{b}{2a} &= \pm\sqrt{\frac{b^2-4ac}{4a^2}} \\ x+\frac{b}{2a} &= \frac{\pm\sqrt{b^2-4ac}}{2a} \\ x &= \frac{-b\pm\sqrt{b^2-4ac}}{2a} \end{align*} El resultado será parecido a éste: $$ \begin{align*} ax^2+bx+c &= 0 \\ x^2+\frac{b}{a}x+\frac{c}{a} &= 0 \\ x^2+\frac{b}{a}x &= -\frac{c}{a} \\ x^2+\frac{b}{a}x+\frac{b^2}{4a^2} &= \frac{b^2}{4a^2} - \frac{c}{a} \\ (x+\frac{b}{2a})^2 &= \frac{b^2}{4a^2} - \frac{4ac}{4a^2} \\ x+\frac{b}{2a} &= \pm\sqrt{\frac{b^2-4ac}{4a^2}} \\ x+\frac{b}{2a} &= \frac{\pm\sqrt{b^2-4ac}}{2a} \\ x &= \frac{-b\pm\sqrt{b^2-4ac}}{2a} \end{align*} $$

March 29, 2011 · 1 min · 91 palabras · Nacho Cano

ls sin ls

En bash: $ for i in *; do echo $i; done Fuente: nfosolutions.com En C: /* * * Esempio che scansiona una cartella stampando a video i file in essa * contenuti. */ #include #include #include #include int main(int argc, char *argv[]) { DIR *dir; struct dirent *drent; if(argc < 2) { fprintf(stderr, "%s \n", argv[0]); return EXIT_FAILURE; } if((dir = opendir(argv[1])) == NULL) { fprintf(stderr, "Errore opendir()\n"); return EXIT_FAILURE; } while((drent = readdir(dir)) != NULL) { fprintf(stdout, "--> %s\n", drent->d_name); } if(closedir(dir) < 0) { fprintf(stderr, "Errore closedir()\n"); return EXIT_FAILURE; } } En Python: ...

March 12, 2011 · 2 min · 347 palabras · Nacho Cano

Imágenes embebidas en el código HTML, CSS o JSON

Mediante esquema data:URI se pueden incluir imágenes codificadas en base64 en el CSS de una página o en el src de una etiqueta img como si fueran fuentes externas. También se pueden introducir otro tipo de datos, como por ejemplo, código HTML. <img src="data:image/png;base64,iVBORw0KGgo[...]QmCC" title="image" alt="image" /> También se puede utilizar en un JSON: { "image":{ "data_uri":"data:image/png;base64,iVBORw0KGgo[...]QmCC" } } Las ventajas de utilizar este método son que no se necesitan abrir conexiones adicionales para decargar los datos, ya que toda la información está incluida en el propio archivo, con lo que dejan recursos disponibles, algo que puede ser especialmente útil en redes inalámbricas muy saturadas o lentas, como algunas redes de telefonía móvil, y se crean menos entradas en la caché del navegador. Además, al estar incluidos en el código se pueden cachear. ...

March 6, 2011 · 2 min · 343 palabras · Nacho Cano

urlencode y urldecode

Los siguientes caracteres son los únicos que se pueden utilizar en una URL: [a-zA-Z0-9-._~] El resto, se deben codificar usando el prefijo % seguido del valor ASCII hexadecimal del carácter. Por ejemplo: ( = %28 ) = %29 / = %2F + = %2B ... Para codificar la URL podemos utilizar la función uri_escape del módulo URI de Perl. alias urlenc='furlenc() { perl -MURI::Escape -e "print uri_escape(\"$1\").\"\n\";"; }; furlenc' $ urlenc http://www.google.com http%3A%2F%2Fwww.google.com Para la decodificación de la URL, podemos hacer uso de sed: ...

March 6, 2011 · 1 min · 102 palabras · Nacho Cano

Mystery

Casi parece que está escrito en chino, o mejor dicho en brainfuck, o puede que no sea muy zen, pero no deja de ser elegante. def mystery(n): a = list(range(n)) [[(yield i) for a[::i] in [([0]*n)[::i]]] for i in a[2:] if a[i]] El nombre de la función pretende no dar pistas para que intentemos averiguar qué hace exactamente esta función. He aquí una pista: Fuente: numberspiral.com >>> f = mystery(20) >>> try: ... while True: ... print f.next() ... except StopIteration: ... pass 2 3 5 7 11 13 17 19

February 26, 2011 · 1 min · 91 palabras · Nacho Cano

Python Zen

Just to keep in mind… Author: euart >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than _right_ now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!

February 26, 2011 · 1 min · 154 palabras · Nacho Cano

Cambiar la contraseña de administrador en Django 1.2

A partir de Django 1.2 se ha añadido el comando manage.py changepassword. $ ./manage.py changepassword ['username'] Si no proporcionamos un nombre de usuario se intentará cambiar el nombre de usuario que concuerde con el del usuario que ha iniciado sesión. Este comando nos ahorra escribir lo siguiente: >>> from django.contrib.auth.models import User >>> u = User.objects.get(username__exact='john') >>> u.set_password('new password') >>> u.save() El usuario administrador es el primer usuario del sistema por lo que podemos escribir: ...

February 16, 2011 · 1 min · 149 palabras · Nacho Cano