Archivo etiqueta Programación

Liberado el API de forw.me

forw.me API

Les comentaba hace poco sobre forw.me, un acortador de urls el cual permite ahorrar caracteres al reducir url largas, lo cual es muy útil a la hora de usar servicios como twitter o identi.ca. Una de las cosas que estaba pendiente por parte de sus desarrolladores era el publicar un API para poder desarrollarse plugins y aplicaciones en base al servicio. Bien, ya liberaron el API!!

Para utilizar el servicio visita http://forw.me. También puedes estar en contacto a través de la cuenta twitter del desarrollador @forwme o a través del correo forwme@zava.com.ve

Compártelo:
  • Twitter
  • Facebook
  • Identi.ca
  • del.icio.us

,

No hay Comentarios

forw.me un acortador de url

forw.me

En estos días es una necesidad recurrir a acortadores de url para poder aprovechar los 140 caracteres que nos impone las redes sociales tales como Twitter o Identi.ca. Existen varias opciones que prestan este servicio, pero forw.me tiene algo diferente: es hecho en Venezuela por un venezolano.

Aparte de haber sido hecho en casa, paso a describir las características de este servicio:

  1. Acortador de url
  2. Integración con Twitter, Facebook, Google Buzz. Yahoo Buzz e Identi.ca.
  3. API para acceder al servicio de forma que puedan desarrollarse plugins y aplicaciones en base al servicio.
  4. Hecho en Python usando Django  como framework.
  5. Libre acceso.

Para utilizar el servicio visita http://forw.me. También puedes estar en contacto a través de la cuenta twitter del desarrollador @forwme o a través del correo forwme@zava.com.ve

Compártelo:
  • Twitter
  • Facebook
  • Identi.ca
  • del.icio.us

,

No hay Comentarios

Plugin Sociable hackeado para bit.ly

Sociable WordPress Plugin

Estuve probando varios plugins para que los usuarios del blog puedan compartir las entradas en las redes sociales como Twitter o Facebook y el que más me gustó fue Sociable. Pero al probar con Twitter y con Identi.ca me di cuenta que utiliza awe.sw como herramienta para acortar el URL, pero el servicio está colapsado y no están dando invitaciones. De esta forma me puse a investigar maneras de hacerlo funcionar con Bit.ly y me encontré con un artículo que describe exactamente lo que quería, sin embargo el código usa la función file_get_contents, la cual arroja el siguiente error en mi servidor:

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /home/g/gallardo/web/wp-content/plugins/sociable/sociable.php on line 813

Que es el resultado de no tener activa la variable allow_url_fopen habilitada en PHP. Después de consultar con mi proveedor de hosting, me aconsejaron que usará cURL en vez de file_get_contents, por lo que tuve que hacer algunas modificaciones al archivo sociable.php, y agregar el archivo sociable-bitly.php que es donde se acorta los URLs con cURL.

Ambos archivos los coloqué en un zip sociable.3.5.2-hacked.zip por si alguien necesita usarlo. Pero ojo,  que no es el plugin completo sino son únicamente estos archivos para copiar en la carpeta /sociable del plugin oficial. Otro detalle es que se debe editar el archivo sociable-bitly.php para colocar el login y el API Key de Bit.ly en las siguientes líneas:

$bitlylogin = 'yourbitlylogin';
$bitlyapikey= 'yourbitlyapikey';

Se podría hacer más cosas con este plugin, como por ejemplo quitar por completo el código de awe.sw, crear los campos de entrada para Bit.ly en el panel de administración, o integrarlo con tinyurl. Esperemos que la próxima versión oficial tenga algunos de estos cambios.

Referencias:

Compártelo:
  • Twitter
  • Facebook
  • Identi.ca
  • del.icio.us

,

No hay Comentarios

Empaquetenado código Python para Symbian

PyS60

Digamos que quieres empaquetar una aplicación Python para teléfonos Symbian de forma que puedas distribuir software en archivos de instalación .sis. ¿Cómo puedes hacerlo? Fácil, con ensymble.

Instalación de ensymble

En Debian puedes instalarlo desde los repositorios escribiendo:

aptitude install ensymble

Empaquetado de una aplicación

Si tienes un archivo llamado aplicacion.py y quieres convertirlo en un archivo de instalación .sis, solo escribe:

ensymble py2sis aplicacion.py

Empaquetado de directorios

Algunas veces necesitas empaquetar directorios para distribuir librerías. En este caso debes copiar la estructura de directorios que deseas en tu teléfono y copiar allí tus archivos. Por ejemplo, digamos que quieres hacer un archivo .sis para una librería Python que creaste, llamada milib donde los archivos configuraciones.py y red.py serán guardados:

mkdir MiLib/pyhon/lib/milib
cp configuraciones.py MiLib/pyhon/lib/milib
cp red.py MiLib/pyhon/lib/milib

ensymble simplesis --caption="MiLib" --version=1.0.2 MiLib

Con la última orden terminarás con un archivo llamado MiLib_v1_0_2.sis. Este archivo instalará un directorio llamado  E:\\Python\Lib\milib (o C:\\Python\Lib\milib dependiendo de donde lo instales) con tus dos archivos Python.

Compártelo:
  • Twitter
  • Facebook
  • Identi.ca
  • del.icio.us

, , ,

2 Comentarios

Octave: una alternativa a MATLAB

sombrero

Siempre me había preguntado si existía una alternativa Software Libre a MATLAB para hacer algunas prácticas de laboratorio de la universidad, al estilo de las que puedes encontrarte en materias como procesamiento de señales y comunicaciones. Buscando en Internet me encontré con Octave, así que decidí probarlo y darle una oportunidad. Veamos cómo instalarlo, cómo luce y mis comentarios al respecto…

Instalando Octave

En Debian basta con instalar el siguiente paquete:

aptitude install qtoctave

Esto instala Octave como intérprete de órdenes, algunos de sus componentes y una interfaz gráfica Qt para usar Octave como haríamos con MATLAB. Si se requiere de otros componentes de Octave se pueden instalar de acuerdo a las necesidades de cada quien. En mi caso yo tuve que instalar el componente decominicaciones:

aptitude install octave-communications

Interfaz QtOctave

La interfaz gráfica permite, entre otras cosas, trabajar con el interprete de órdenes de Octave, ver el listado de variables, editar un archivo .m, y ver el histórico de órdenes; muy similar a como haríamos en MATLAB.

QtOctave

Edición de un archivo.m

En la imagen de arriba vemos un script hecho para la práctica de Comunicaciones II (Universidad Simón Bolívar, Caracas – Venezuela), en el cual se generan algunos códigos de línea para ver cómo lucen en tiempo, sus densidades espectral de potencia, cuán inmune son al ruido y sus patrones de ojo; usando las funciones proporcionadas por la profesora de la materia las cuales fueron hechas en MATLAB. Veamos las imágenes que pude generar:

Tiempo Frecuencia

Subplot Patron del Ojo

Compatibilidad con MATLAB

Aunque muchas de las órdenes y funciones de MATLAB son reconocidas, no todo está implementado igual o de hecho puede que no esté presente en Octave. Por ejemplo, tuve que editar el archivo scope.m para comentar la orden cla (clear current axes) y la declaración de las variables globales no funcionaron para las funciones en los cripts del Toolbox que me proporcionaron para la práctica. Si tienes algún problema con una orden o función de MATLAB puedes consultar el listado de compatibilidad Octave <-> MATLAB

Comentarios finales

A mí parecer Octave es una alternativa real a MATLAB. Pueden decir que no es tan completo como MATLAB…si, es cierto, pero quién usa MATLAB al 100%?  Por otro lado, creo que esta sería una opción para erradicar las malas costumbres de otros sistemas operativos y malos hábitos como comprar licencias privativas que, aunque me consta que en los laboratorios de la universidad tienen sus licencias 100% legales, al final los estudiantes siempre terminan adquiriendo el software pirata para poder hacer sus prácticas en casa.

¿Se pueden adaptar estos laboratorios a Octave? Yo creo que si. Incluso los estudiantes de post-grado podrían crear código (ejemplo fft6) para contribuir con el proyecto Octave aumentando las librerías de funciones…Por mi parte, voy a comunicarle mis hallazgos a mi profesora a ver qué opina!

Compártelo:
  • Twitter
  • Facebook
  • Identi.ca
  • del.icio.us

,

5 Comentarios

Clases y Objetos en PHP

blocksAntes de comenzar a trabajar con clases y objetos, debemos conocer primero la diferencia entre la programación tradicional y la programación orientada a objetos (POO). En la programación tradicional los problemas son resueltos ejecutando una acción tras otra, en otras palabras, escribes un programa donde las acciones son ejecutadas una por una para resolver un problema.

Por ejemplo, si deseas sumar dos números en PHP, basta con el siguiente código:

&lt;?
// Define dos numeros
$a = 2;
$b = 3;
// Suma ambos numeros
$c = $a + $b;
echo "a+b=".$c;
?&gt;

Leer el resto de la entrada »

Compártelo:
  • Twitter
  • Facebook
  • Identi.ca
  • del.icio.us

,

No hay Comentarios

Respaldo completo en cPanel

logo_cpanelAyer tuve algunos problemas con la actualización de WordPress 2.8 y, supuestamente, qtranslate (un plugin para soportar varios lenguajes). El asunto es que pude restablecer WordPress 2.7.1 de un respaldo antiguo, pero me di cuenta que databa de hace un mes…malo, malo. Decidí investigar sobre respaldos automáticos con cPanel y me encontré con la entrada Automatic cPanel backup (domain & MySQL) with cron & PHP de Justin Cook. Allí hay un script para ejecutar la petición de respaldos completos de cPanel con redirección a un servidor ftp en una máquina remota. Debido a que no tengo un servidor ftp, cambié unas líneas para hacer respaldos localmente, de forma que pueda obtener esos respaldos desde la herramienta de respaldos completos de cPanel. Aquí está lo que hice:

PHP Script

<?php
// Info required for cPanel access
$cpuser = "username";
$cppass = "password";
$domain = "example.com";
$skin = "x3";

// Notification information
$notifyemail = "you@example.com";

// Secure or non-secure mode
$secure = 1;

// Set to 1 to have web page result appear in your cron log
$debug = 0;

// ** NO EDIT BELOW THIS LINE ***

if ($secure) {
   $url = "ssl://".$domain;
   $port = 2083;
} else {
   $url = $domain;
   $port = 2082;
}

$socket = fsockopen($url,$port);

if (!$socket) {
   echo "Failed to open socket connection… Bailing out!\n"; exit;
}

// Encode authentication string
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);

$params = \
"dest=homedir&email=$notifyemail&server=&user=&pass=&port=&rdir=";

// Make POST to cPanel
fputs($socket,\
"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\r\n");
fputs($socket,"Host: $domain\r\n");
fputs($socket,"Authorization: Basic $pass\r\n");
fputs($socket,"Connection: Close\r\n");
fputs($socket,"\r\n");

// Grab response even if we don't do anything with it.
while (!feof($socket)) {

$response = fgets($socket,4096);

if ($debug) echo $response;
}
fclose($socket);
?>

Cron jobs

Para tener un respaldo cada 15 días guarda el script de arriba como fullbackup.php y configura el cron en la herramienta de administración de cPanel como se muestra a continuación:

cron-cpanel-web

Referencias

Compártelo:
  • Twitter
  • Facebook
  • Identi.ca
  • del.icio.us

,

8 Comentarios

Curso de programación HP48

HP-Program

Hace un tiempo subí un curso de programación para las calculadoras HP-48g / HP 48gx. El asunto es que perdí la contraseña en ese servidor (angelfire) y no lo pude actualizar más. Así que es tiempo de recuperar lo que es mio: voy a poner el curso completo aquí con más ejemplos y, de ser posible, mejor explicado.

Vamos a comenzar de nuevo…

¿Qué es un programa?

Todo lo que esté entre los caracteres << >> es tomado como un programa. Por ejemplo, puedes escribir esto en la calculadora:

<< 1 2 + >>

Este programa pone en la pila de la HP los números 1 y 2, y finalmente los suma. Para editar cualquier programa en el modo USER-RPL solo colóquelo en la pila y pulse “EDIT”. Para guardarlo colóquelo en la pila, luego coloque un nombre y presione el botón “STO” (también puede escribirlo). Aquí está el ejemplo:

3: << 1 2 + >>
2: ‘Nombre’
1: STO

Esto por ahora. En la próxima entrega cubriré la definición de variables…

Compártelo:
  • Twitter
  • Facebook
  • Identi.ca
  • del.icio.us

,

7 Comentarios

Switch to our mobile site