Ir al contenido principal

Entradas

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...

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

En la primera parte de este tutorial, vimos como crear un proyecto, que diferencias hay entre una versión a otra, y cual es la estructura básica del proyecto en eclipse. En esta segunda parte, veremos el emulador y los modos de arranque, y cual es la manera más sencilla (para mí), de arrancarlo. También vamos a ver algo de código por primera vez :) Bien, antes de usar el emulador, tendremos que crear uno. Podremos crear tantos emuladores como queramos, para crear un emulador en eclipse: - Window -> Android SDK and AVD manager Se abrirá una ventana como la de la imagen: - Pulsar en el botón nuevo y aparecerá la ventana de diálogo que nos permitirá crear una nueva máquina virtual: - Le damos el nombre que queramos. - Después hay que darle un tamaño a la tarjeta SD, el mínimo es de 9MB, también podríamos usar un archivo en el que ya tengamos una tarjeta SD. - Yo suelo dejar marcada la casilla de snapshot, así se generará un archivo donde se guardará el emulador. ...

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

Hola, como dice el título, comienzo a escribir una serie de artículos sobre programación en Android. Comenzaré desde cero (0), he intentaré ir adaptando los siguientes artículos tanto a intentar dar a conocer problemas con los que nos encontraremos conforme vayamos incrementando el tamaño o complejidad de nuestra aplicación, además de adentrarnos más en profundidad en los conceptos que nos vayan surgiendo. Yo explicaré para el entorno de desarrollo ECLIPSE. Los pasos para poder instalar todo lo necesario, los podéis encontrar aquí o buscando en google "como instalar eclipse y android sdk": http://www.nettaringa.com.ar/?p=2202 Bien, lo primero que vamos a hacer en esta parte, va a ser crear un nuevo proyecto basado en android, para esto, primero debemos arrancar eclipse . Una vez arrancado, le daremos a la pestaña FILE -> NEW -> ANDROID PROJECT En la ventana que aparece, deberemos de poner, de arriba a abajo: Project name : nombre del proyecto. Content s...