Programación
Modificación al plugin MyBBPublisher
28 ene
Debido a diversas razones y a la sencillez con la que realiza las publicaciones el plugin para difundir los nuevos temas en sitios sociales (Facebook y Twitter), me vi en la obligación de realizar una modificación a MyBBPublisher, la cual está enfocada sólo en Facebook.
Basándome en la referencia (API de facebook) y su método ‘post‘, encontré los parámetros que pueden ser enviados para publicar contenido en nuestra ‘fan page’.
MyBBPublisher por defecto maneja sólo estos dos valores:
- access_token (indispensable)
- message
Sin embargo, esto nos dá muchas limitaciones, ya que el contenido enviado a facebook queda muy vacío.
Revisando un poco más la referencia, se pueden encontrar los siguientes campos:
- description -> La descripción del enlace.
- link -> El enlace adjunto a la publicación.
- picture -> Nos permite agregar una imagen a la publicación.
- name -> El nombre del enlace.
Ahora la cuestión radica en conseguir la información necesaria para cada parámetro. Ya se hace necesario abrir el archivo “mybbpublisher.php” para comenzar a modificar su contenido.
Primero que todo, buscamos aproximadamente la línea 661 donde se encuentra:
$text_fb = stripslashes($mythread['subject']);
Y agregamos el siguiente código, el cual nos dará la descripción (texto) del tema recién publicado.
$message_fb = htmlspecialchars_uni(stripslashes($mythread['message']));
Explicando un poco, esto es fácil…Aplicamos el mismo método usado para obtener el ‘Asunto’ del tema, pero según mybb_posts para obtener el contenido del post se usa Más >
Psyco: acelera tus aplicaciones
26 ene
Psyco es un módulo que nos permite mejorar la velocidad de nuestros programas a cambio de un pequeño tiempo de inicialización. Esto se logra a partir de la compilación de código.
Para que Psyco compile tanto código como sea posible, sólo hay que añadir:
import psyco psyco.full()
Pero para aplicaciones complejas, la función full no será de ayuda puesto que necesitará mucho tiempo y memoria. En este caso, podemos recurrir a la función profile la cual analizará el código y estudiará que funciones merece la pena compilar.
import psyco psyco.profile()
También sería útil llamar a la función log mediante la cual psyco crea un archivo de texto con el tiempo de ejecución y la memoria utilizada para el programa y también nos informará de cualquier problema que se pueda haber encontrado.
Podemos indicarle la función, clase o métido explicitamente a través de la función bind
import psyco psyco.log() psyco.profile()
Podemos indicarle la función, clase o métido explicitamente a través de la función bind.
import psyco psyco.bind(la_funcion)
Fuente: Cibernodo Más Información
Instalar Python (y otros) en Android
26 ene
Hace poco, por curiosidad, busqué una forma de instalar el intérprete de Python* en Android. Googleando un poco, di con unas aplicaciones que permiten portar y usar estos intérpretes de forma nativa en este sistema.
* Aplica para varios lenguajes más, el proceso es el mismo.
1. Requisitos- Un dispositivo con Android 2.0 o superior.
- El AC SWM (AndroidCentral Sideload Wonder Machine)
2. Instalando el SL4A
El SL4A es un software que gestiona la instalación de intérpretes, ejecución, edición y manipulación de scripts. Para poder continuar con este tutorial es indispensable que lo instalemos.
2.1 Instalar desde el dispositivo Es básicamente el método más sencillo. Debes navegar por la página de descargas del SL4A y bajar la versión más reciente (sl4a_r4.apk). Una vez descargada, la instalas normalmente.
NOTA: Para usar este método hay que tener activa la opción de ”Orígenes desconocidos“ en Ajustes -> Aplicaciones.
2.2 Instalar desde el PC Si por cualquier extraña razón el primer método no funciona (como en mi caso), tenemos esta opción. En este caso, usaremos la aplicación AC SWM (AndroidCentral Sideload Wonder Machine).
Conectamos el móvil en modo ‘Depuración’, luego seleccionamos el .apk y damos clic en Install. Más información sobre este método
3. Instalando el Intérprete
Como en el caso anterior, se pueden instalar los intérpretes mediante dos métodos.
3.1 Instalar desde el dispositivo Vamos a abrir el SL4A. Te aparecerá una ventana como esta:
Abre el menú “View” Más >
Copiar imágenes del caché de Windows Live Messenger
9 oct
Windows Live Messenger, guarda todas las imágenes de los contactos y las que se hayan compartido en una carpeta llamada “MessengerCache“. Pues bien, si se entra en esa carpeta (C:\Users\Usuario\AppData\Local\Temp\MessengerCache) se pueden ver gran cantidad de archivos sin extensión, los cuales corresponden, efectivamente, a varias imágenes.
Es una tarea tediosa renombrar manualmente uno a uno cada archivo para agregarle la extensión, así que, como debía buscar una foto se me ocurrió hacer un script en Python (quedó algo feo) que me automatizara esta tarea.
Sin más qué decir, aquí está:
# -*- coding: utf-8 -*- import os, shutil Username = os.environ['USERPROFILE'] Path = r'%s\AppData\Local\Temp\MessengerCache' % Username #Carpeta destino. Dest = 'C:\\WindowsLiveMessenger\\' #Si no existe el directorio, lo creamos. if not os.path.isdir(Dest): os.mkdir(Dest) #Nos posicionamos en el directorio del Caché. os.chdir(Path) #Listo los archivos que hay en el directorio. sFiles = os.listdir('.') print 'Hay un total de %i archivos' % len(sFiles) print 'Se están copiando las imágenes...' #Copio cada archivo con su respectiva extensión. for sFile in sFiles: if os.path.isfile(sFile): shutil.copy(sFile,Dest+sFile+'.jpg') print 'Tarea terminada.'
Delphi XE2…¡Windows (32 & 64 bit), MacOS e iOS!
18 sep
Hola a todos,
Delphi XE2 es el nuevo producto de la cadena de “Delphi” de Embarcadero.
Ahora este RAD incluye el framework FireMonkey. Esto nos permite hacer aplicaciones nativas para Windows ( 32-bit & 64-bit ), MacOS e iOS ( iPad, iPhone, iPod Touch), asimismo, se espera que próximamente se incluya Linux y Android.
Esta nueva versión realmente promete mucho, y espero que en un futuro ( XE3, quizá ) se puedan realizar aplicaciones nativas para Linux, lo cual le daría una gran cuota al desarrollo de aplicaciones en ObjectPascal.
Capturas Vídeo de demostración
Más información ( + Descarga del free trial ) http://edn.embarcadero.com/article/41593
Variaciones: Sucesión de Fibonacci
17 jul
Pasando el tiempo, me dio por leer un poco sobre la Sucesión de Fibonacci. Gracias a ello, hice en Python dos formas para realizar esta sucesión
No siendo más, aquí os las dejo:
from math import sqrt, pow def f(x): return ((1/sqrt(5))*pow(((1+sqrt(5))/(2)),x)-(1/sqrt(5))*pow(((1-sqrt(5))/(2)),x))
from math import sqrt, pow a = 1.61803398874989 f = lambda x: (pow(a,x)- pow(-a,-x))/ sqrt(5) for i in range(25): print f(i)
Y en menos líneas…
from math import sqrt, pow a = 1.61803398874989 for i in range(25): print (lambda x: (pow(a,x)-pow(-a,-x))/sqrt(5))(i)
XSSPloit: Un escáner de vulnerabilidades XSS
17 jul
XSSploit es un escáner multi-plataforma de Cross-Site Scripting y exploiter escrito en Python. Se ha desarrollado para ayudar a descubrir y explotar las vulnerabilidades XSS en pruebas de penetración.
Cuando se utiliza, XSSploit primero se arrastra todo el sitio web e identifica las formas encontradas. A continuación, analiza estas formas de detectar automáticamente las vulnerabilidades existentes XSS, así como sus principales características.
Las vulnerabilidades que se hayan descubierto puede ser explotadas mediante un motor de explotacion del XSSploit. Esta funcionalidad extensible permite elegir el comportamiento deseado y genera automáticamente el enlace HTML con el payload del exploit embebido.
Requisitos: - Python 2.5 - Wxpython
Generar un enlace de TinyURL desde Delphi Prism
13 jul
TinyURL es un servicio gratuito que permite convertir una URL larga en un corta (acortador de URL), la cual es muy efectiva a la hora de usar servicios como Twitter.
Para usar este servicio en Delphi es necesario realizar una petición a: http://tinyurl.com/api-create.php?url={URL que se va a convertir aquí} Lo cual nos dará como respuesta la URL generada por TinyURL.
Un ejemplo realizado en Delphi Prism…
namespace ConsoleApplication; interface uses System.Net, System.IO; type ConsoleApp = class public class function GetTinyUrl(sURL: String): String; class method Main(args: array of string); end; implementation class function ConsoleApp.GetTinyUrl(sURL: String): String; const TinyAPI = 'http://tinyurl.com/api-create.php?url='; var myWebRequest: WebRequest; myWebResponse: WebResponse; myStream: StreamReader; myTinyURL: String; begin myWebRequest := WebRequest.Create(TinyAPI+sURL); myWebRequest.Method := 'GET'; myWebResponse := myWebRequest.GetResponse(); myStream := new StreamReader(myWebResponse.GetResponseStream); myTinyURL := String.Empty; myTinyURL := myStream.ReadToEnd(); myWebResponse.Close(); Result := myTinyURL; end; class method ConsoleApp.Main(args: array of string); begin Console.WriteLine('Generar TinyURL...'); Console.WriteLine(GetTinyUrl('http://daw-labs.com')); Console.ReadLine(); end; end.
El resulado es:
Generar TinyURL... http://tinyurl.com/5vde8s6
Script para descargar fondos de pantalla
7 jul
Teniendo en cuenta el tip que encontré sobre GNOME ( pueden ver haciendo clic aquí ), decidí por hacer un script en Python que facilitara un poco la tarea. Es algo sencillo y simple, lo hice sólo para entretenerme un rato.
#!/usr/bin/python # -*- coding: utf-8 -*- from ftplib import FTP import re, urllib, os def ArrayFilter(lList, sScreen): pReg = re.compile(r'.+'+sScreen+'.{4,5}') nList = [] for i in lList: iterator = pReg.finditer(i) for match in iterator: nList.append(match.group()) return nList def WriteFileAndDownload(sFilenames): tFile = open(os.environ['HOME']+'/tmpWall.txt','wb') for i in sFilenames: tFile.write('ftp://ftp.gnome.org/pub/GNOME/teams/art.gnome.org/backgrounds/'+i+'\n') tFile.close() os.system('wget -i '+os.environ['HOME']+'/tmpWall.txt') def DownloadWallpapers(sResolution): ftp = FTP('ftp.gnome.org') ftp.login() ftp.cwd('pub/GNOME/teams/art.gnome.org/backgrounds') lWalls = ArrayFilter(ftp.nlst(),sResolution) ftp.close() if len(lWalls) > 0: print 'Hay un total de: ',len(lWalls),' wallpapers' opD = raw_input('==> ¿Desea descargarlos todos? (s/n) >>> ') if opD.upper() == 'S': WriteFileAndDownload(lWalls) else: sLimit = input('==> ¿Cuántos desea descargar? >>> ') WriteFileAndDownload(lWalls[0:sLimit]) else: print 'No hay wallpapers con ese tamaño. Adèu' Resolution = raw_input('\nIngrese la resolución de su pantalla (ej. 1024x768) >>> ') DownloadWallpapers(Resolution)
Manejar Twitter desde Python
20 jun
Hace mucho tiempo busqué un módulo que fuese fácil y sencillo para manejar Twitter desde un script en Python. Buscando un poco encontré un par de módulos antiguos que usaban la autenticación básica ( Usuario y contraseña ) pero ya son obsoletos, pues Twitter ahora exige que esta sea por medio de OAuth; buscando más y más logré toparme con la librería perfecta llamada Tweepy.
No siendo más, explicaré cómo usarla de manera sencilla.
• Obtener TweepyPuede descargarse directamente desde PyPi o desde mi Dropbox.
• Registrar la aplicación en TwitterPrimero que todo hay que ir a este enlace: https://dev.twitter.com/apps/new Quizá deba iniciar sesión.
Posteriormente procedemos a rellenar los campos necesarios para el registro de la siguiente manera:
Finalizado lo anteriormente expuesto, damos clic en “Register application ” y veremos algo así:
Dejamos la ventana abierta o guardamos los valores de Consumer key y Consumer secret, ya que posteriormente los necesitaremos.
• Conexión con la cuenta de TwitterComo la autenticación se realiza de otra forma, la aplicación debe de ser autorizada para que pueda emplearse como cliente para nuestra cuenta de Twitter.
Crearemos un script de un sólo uso, el cual generará los datos necesarios para poder conectarnos automáticamente en el futuro a nuestra cuenta.
#!/usr/bin/env python import tweepy CONSUMER_KEY = 'Su Consumer Key aqui' CONSUMER_SECRET = Más >

