Build a Hash Table in Python With TDD – Real Python

In this step-by-step tutorial, you’ll implement the classic hash table data structure using Python. Along the way, you’ll learn how to cope with various challenges such as hash code collisions while practicing test-driven development (TDD). » Real Python | realpython.com

February 28, 2026 · 1 min · 40 palabras · Nacho Cano

Implicit string concatenation

Python automatically concatenates adjacent string literals thanks to implicit string concatenation. This feature can sometimes lead to bugs. » Trey Hunner | pythonmorsels.com

January 2, 2026 · 1 min · 23 palabras · Nacho Cano

Never write for-loops again

It’s been a while since I started exploring the amazing language features in Python. At the beginning, it’s just a challenge I gave myself to practice using more language features instead of those I learned from other programming language. And things are just getting more fun! Not only the code become shorter and cleaner, but also code looks more structured and disciplined. I’ll get into those benefits more in this article. ...

December 12, 2016 · 1 min · 77 palabras · Nacho Cano

Iniciar sesión en DynDNS desde el terminal

Hace un par de semanas, DynDNS cambió su política de uso de las cuentas gratuitas para incluir una cláusula por la cual es necesario hacer mínimo un login al mes si no se quieren perder los dominios que tengamos: Starting now, if you would like to maintain your free Dyn account, you must log into your account once a month. Failure to do so will result in expiration and loss of your hostname. This activity helps us eliminate hostnames that are no longer needed and/or dormant. Note that an update client will not suffice for this monthly login. ...

June 10, 2013 · 2 min · 248 palabras · Nacho Cano

Distribución de frecuencias

Distribución de los comandos más utilizados Una de esas combinaciones de comandos curiosas es aquella que nos devuelve un listado de los comandos más utilizados ordenados por frecuencia, en este caso limitado a los más frecuentes: $ history | awk '{a[$2]++} END {for (i in a) { print a[i] " " i }}' | sort -rn | head 62 cd 50 sudo 45 vim 39 ls 32 ssh 25 wget 23 memento.sh 23 cat 9 curl 9 man A partir de estos datos, podemos obtener una distribución de su frecuencia de uso en relación al número total de comandos diferentes utilizando el paquete estadístico R: ...

June 22, 2012 · 5 min · 980 palabras · Nacho Cano

AnonTwi, tweets cifrados

AnonTwi es un script en Python que permite enviar y recibir tweets y mensajes cifrados mediante AES y HMAC-SHA1 en Twitter, al que se conecta mediante SSL. Otras caracterísiticas son la posibilidad de usar la red TOR, envío de mensajes largos o la falsificación de las cabeceras que envía. Instalación AnonTwi está todavía en fase beta de desarrollo, algo que se debe tener en cuenta según el uso que queramos darle, pero si queremos probarlo, podemos usar la última versión descargándola del repositorio: ...

June 16, 2012 · 4 min · 693 palabras · Nacho Cano

vimrepress, publicar en WordPress desde vim

vimrepress es un complemento para trabajar con WordPress. Esta mañana he leído sobre él en el blog de CyberHades y me han entrado ganas de probarlo. Instalación Para que funcione, además de instalar el complemento deberemos activar el servicio XML-RPC en WordPress para publicar de forma remota. Para activarlo vamos a Ajustes > Escritura y marcamos la casilla XML-RCP. Ahora vamos a instalar el complemento. Descargamos la última versión estable, en estos momentos la 2.1.5, y la descomprimimos en el directorio ~/.vim: ...

May 20, 2012 · 2 min · 329 palabras · Nacho Cano

Encuentra el hash

Existen herramientas que permiten romper un hash, aunque a veces puede ahorrar tiempo y recursos buscar si el hash ya ha sido encontrado. Ni siquiera hace falta una rainbow table. findmyhash es un script escrito en Python que puede buscar diferentes tipos de hash en diferentes servicios de cracking online. Los algoritmos soportados son los siguientes: MD4 MD5 SHA1 SHA256 RMD160 MYSQL CISCO7 LM NTLM Un ejemplo sencillo. Si no encuentra el hash, también lo buscará en Google: ...

September 30, 2011 · 2 min · 395 palabras · Nacho Cano

Limitando el número de procesos por usuario

Mediante el comando ulimit podemos consultar y controlar el valor de los recursos disponibles para la consola y los procesos que puedan ser iniciados desde ella. Las diferentes opciones que acepta este comando son: -a All current limits are reported -b The maximum socket buffer size -c The maximum size of core files created -d The maximum size of a process’s data segment -e The maximum scheduling priority ("nice") -f The maximum size of files written by the shell and its children -i The maximum number of pending signals -l The maximum size that may be locked into memory -m The maximum resident set size (many systems do not honor this limit) -n The maximum number of open file descriptors (most systems do not allow this value to be set) -p The pipe size in 512-byte blocks (this may not be set) -q The maximum number of bytes in POSIX message queues -r The maximum real-time scheduling priority -s The maximum stack size -t The maximum amount of cpu time in seconds -u The maximum number of processes available to a single user -v The maximum amount of virtual memory available to the shell and, on some systems, to its children -x The maximum number of file locks -T The maximum number of threads Para consultar todos los valores asignados actualmente: ...

August 1, 2011 · 3 min · 628 palabras · Nacho Cano

Endianness

“Endianicidad” designa el formato en el que se almacenan los datos de más de un byte en un ordenador. El sistema big-endian adoptado por Motorola entre otros, consiste en representar los bytes en el orden “natural”, así el valor hexadecimal 0x4A3B2C1D se codificaría en memoria en la secuencia {4A, 3B, 2C, 1D}. En el sistema little-endian adoptado por Intel, entre otros, el mismo valor se codificaría como {1D, 2C, 3B, 4A}, de manera que de este modo se hace más intuitivo el acceso a datos, porque se efectúa fácilmente de manera incremental de menos relevante a más relevante (siempre se opera con incrementos de contador en la memoria). ...

July 30, 2011 · 2 min · 400 palabras · Nacho Cano