Archivo categoría Programación
Definición de variables
Por Luis Gallardo - Programación - 04/11/2009
Siguiendo con nuestro curso de programación de HP-48, ahora comentaré sobre las definición de las variables. Una variable es donde se guarda temporalmente los datos que procesarán los programas. En el lenguaje USER-RPL las variables son vistas como locales, globales y del entorno.
Variables locales
Este tipo de variables son las que se usan internamente en los programas para realizar cálculos. Veamos un ejemplo:
Aquí las variables UNO y DOS contienen los valores 1 y 2, respectivamente. Luego en el mismo programa son usadas para realizar una suma cuyo resultado queda en la pila de la calculadora.
Variables globales
Si defines una variable global, esta puede ser usada desde el programa actual y también por otros programas que hayan sido invocados desde el actual .El ejemplo anterior lo modifiqué para usar un programa externo que hace la suma, llamado SUMAR:
El programa SUMAR invoca las variables globales y realiza la suma, como se muestra a continuación:
Este tipo de declaración no tiene restricción en el ámbito de existencia de la variable, ya que es definida como global. Pero tiene como inconveniente que los programas que usan variables globales ocupan más espacio que los que no lo usan.
Variables del entorno
Las variables del entorno son las que pueden ser usadas desde el directorio de trabajo actual. Por ejemplo, los valores 1 y 2 pueden guardarse en variables en el directorio actual con el nombre UNO y DOS, y se puede modificar el programa SUMAR para que invoque estas variables:
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 = "[email protected]"; // 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); ?>
Puedes descargar este ejemplo aquí…
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
Sígueme