Ir al contenido principal

Entradas

Stop python debugger exactly on the failing loop iteration

This post is for ipdb users. Is this case familiar for you?: Write a break point on your code Go into a loop Start pressing 'c' and 'n' until you found the iteration that is failing. It can works, but you can only do this ... one or two times maybe?? If you need to this frequently, this method doesn't works and you need another tool, but .... what's the tool I need? You need launch_ipdb_on_exception ... ... from ipdb import launch_ipdb_on_exception with launch_ipdb_on_exception(): for i in range ( 9 ): print (i) if i== 4 : raise Exception('Debug time!') ... # Output 0 1 2 3 4 Exception('Debug time!',) > <ipython-input-1-4f44dca149ad>(7)<module>() 5 print(i) 6 if i==4: ----> 7 raise Exception('Debug time!') ipdb> i # Note ipdb console!! 4 ipdb> c # Continues the execution In [2]: i # Ipython console again Out[2]: 4 In [3...

How to add an import to multiple python files | Añadir import a muchos ficheros python

If you want to add an import line to one or multiple python files, you can achieve this easily using the isort package. Install isort in your python environment: pip install -r isort   Now, execute the next isort command to add an import to multiple python files. Multiple options can be added to configure how isort works. For example, imagine you have some changes on your working copy that cause an error because you need an import. If you write this files into a "files.txt" file (one line per file) Example /tmp/files.txt file1.py controllers/file2.py Command line FILES=$(cat /tmp/files.txt) isort -a "from foo import bar" ${FILES} As I say before, you can mix with a lot of options, for example this is the command I use to handle line length, indentation, third parties, ... isort -ac -tc -m 3 -w 119 -i4 -up -y ${FILES} Hope you found this useful!!

PyConEs 2017 overall

In September 2017 Ebury went to PyCon Spain 2017 which took place in Cáceres (Extremadura), at the beautiful location of San Francisco’s Cultural Complex. Read on for insights on refactoring, unicode, serverless, testing factories, diversity in the work place and open source! To read more about the PyCon Spain 2017, visit this page!! : https://labs.ebury.rocks/2017/10/31/pycones-2017-overall/

Clases abstractas con python

¿Como se crean clases abstractas con python?. Voy a explicar cual es la forma correcta de definir una clase abstracta y heredar de ella. El procedimiento general es: Definir una clase abstracta utilizando una metaclase. Definir la subclase de la clase abstracta (sin herencia). Registrar esta última clase como subclase de la clase abstracta. Tomemos como ejemplo el siguiente código: from abc import ABCMeta, abstractmethod class AbstractFoo:     __metaclass__ = ABCMeta          @abstractmethod     def bar(self):         pass     @classmethod     def __subclasshook__(cls, C):         return NotImplemented class Foo(object):     def bar(self):         print "hola" AbstractFoo.register(Foo)  Lo primero que hacemos es importar del módulo abc la...

Tutorial / Manual / HOWTO Programación Android desde cero - Parte 3

Hola a todos, para comenzar esta tercera parte, que mejor que recordar que es lo que vamos a ver. La segunda parte del tutorial terminó diciendo que quedaba por ver como crear diferentes pantallas, como "registrarlas" en el programa, y como manejarnos de una a otra. Bien, pues lo primero que debemos de hacer es abrir nuestro proyecto de ejemplo de la parte anterior, o crearnos si queremos uno nuevo en blanco, yo explicare como si creásemos de nuevo otro proyecto desde 0. Desde el explorador de proyectos: click derecho -> nuevo proyecto de android Creamos el proyecto, en mi caso tutorial_android_3 , que implemente una actividad (le he dejado el nombre por defecto), como target de la api de android he puesto que se usará la versión 2.2. Una vez terminemos, deberemos de tener algo parecido a esto: Bien, en el proyecto tenemos una sola actividad que hemos llamado One_Activity. Ahora vamos a proceder a crear una segunda actividad. Para eso haremos click derecho e...

Spoof IP

Hola amigos, contaros que desde hace tiempo andaba detrás de un reto hacking en el que se pedía spoofear cierta IP, que era inválida. Como no podía ser que mi máquina tomase una ip inválida para spoofear, solo cabía esperar que en el servidor se compruebe la ip considerando la cabecera X-FORWARDED-FOR. El script en el que necesito spoofear mi ip está escrito en PHP, y en este lenguaje muchar veces los programadores comprueban la cabacera X-FORWARDED-FOR, por ejemplo: $ipString=@getenv("HTTP_X_FORWARDED_FOR"); El problema radica en que el valor de la cabecera x-forwarded-for puede ser spoofeado si se modifican las cabeceras http que se envían al servidor. Se podrían construir paquetes personalizados, pero he preferido usar alguna herramienta ya existente para facilitar la tarea (y tardar menos en pasar el reto). Instalaremos en local (por ejemplo) un proxy, y ponemos este entre nuestro navegador y la puerta de enlace escuchando en algún puerto, después se configura...

Medición de tiempo en Python

B uenas a todos, ayer me llegó un tweet en el que alguien necesitaba trabajar con conjuntos (sets) en PYTHON. Esta persona se encontró con diversas opiniones sobre como era más correcto trabajar con los conjuntos, encontrándose con que la discusión derivó a mediciones tiempos y ordenes de eficiencia (como de lento es cada método). Y aquí es donde me di cuenta que siempre elijo el mejor, pero no entro a cronometrar el algoritmo (en cuanto a las funciones a utilizar, si estás utilizando python3 deberías considerar esta entrada: https://jesusenlanet.blogspot.com/2018/08/python3-stop-measuring-time-with.html ). Así, he estado buscando las diferentes formas de medir tiempos, y me he encontrado con varias formas, diré cuales son y por que las descarto: - Medir el tiempo "a mocho" dentro del código y ensuciándolo Descartado radicalmente por ser poco elegante y propenso a que se meta la pata. - Uso de hilos con thread. Descartado debido a que según he leído, el modulo thr...