Archivo etiqueta Programación
Liberado el API de forw.me
Por Luis Gallardo - Off-Topic, Programación - 04/08/2010

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
forw.me un acortador de url
Por Luis Gallardo - Off-Topic, Programación - 23/07/2010
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:
- Acortador de url
- Integración con Twitter, Facebook, Google Buzz. Yahoo Buzz e Identi.ca.
- API para acceder al servicio de forma que puedan desarrollarse plugins y aplicaciones en base al servicio.
- Hecho en Python usando Django como framework.
- 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
Plugin Sociable hackeado para bit.ly
Por Luis Gallardo - Programación - 12/07/2010
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:
Empaquetenado código Python para Symbian
Por Luis Gallardo - Linux, Programación - 03/04/2010
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.
Octave: una alternativa a MATLAB
Por Luis Gallardo - Linux, Programación - 15/10/2009
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.
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:
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!
Clases y Objetos en PHP
Por Luis Gallardo - Programación - 26/06/2009
Antes 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:
<? // Define dos numeros $a = 2; $b = 3; // Suma ambos numeros $c = $a + $b; echo "a+b=".$c; ?>
Respaldo completo en cPanel
Por Luis Gallardo - Programación - 18/06/2009
Ayer 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:
Referencias
Curso de programación HP48
Por Luis Gallardo - Programación - 12/05/2009
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…











Planeta Linux