miércoles 18 de marzo de 2009

Hace tiempo~

Hace tiempo que no publicaba algo decente. Bien, hoy he aprendido algo muy bonito: Montar sistemas de archivos en la red, compartidos por un computador que corre bajo windows.

Es algo tonto, incluido en el comando mount, pero sumamente util. Una vez mas he perdido la configuracion de mi teclado, por estar inventando, asi que disculpen pero hoy no hay tildes.

Bien, para montar, es decir, hacer accesible desde nuestro computador, una carpeta compartida en windows, se utiliza lo siguiente:

mount //111.111.111.111/nombredelrecursocompartido /punto/de/montaje

en mi caso, la direccion en que esta compartido el recurso es 192.168.1.102; el nombre es Compartida; el punto de montaje es /mnt, aunque lo mas recomendable es crear un subdirectorio de /mnt, o mejor aun, mantenerse alejado de eso y tener un directorio en nuestra carpeta personal.

Lo he montado de la siguiente manera:

$mount //192.168.1.102/Compartida/ /mnt

Luego me ha pedido clave de acceso, a lo cual respondi con una cadena en blanco, y presto!! cuando voy a /mnt y ejecuto ls (o voy a traves del entorno grafico del Xubuntu 8.04 en el que trabajo ahora), estan presentes los subdirectorios de la carpeta compartida, lo que me permite interactuar con ellos como si fueran locales. OjO, del lado de windows la carpeta esta como compartida, sin ninguna contrasena establecida para el acceso.

Bien, suerte! Tengo que terminar el backup!

domingo 4 de enero de 2009

Sistema de Prueba

Voy a decir, como suelo hacerlo, algo que resulta obvio a miles (quizás decenas de miles) de personas, pero que he aprendido, no de un libro o porque me lo dijeron, sino de leer y pensar.

La idea tiene uno o dos días dándome vueltas en la cabeza, y aquí va; no es un proyecto de software en sí, sino una idea sobre un tipo de proyecto de software, una herramienta para el desarrollo de software.

Desarrollo de Sistemas de Prueba y Detección de Fallos Para Sistemas de Software en Desarrollo (0.1)

Para poder hacerlo, primero se necesita tener un sistema, no necesariamente en desarrollo, pero la finalidad es:
  • Evitar pasar horas y horas buscando los errores del programa
  • Sacar a la luz menos errores (desconocidos)
  • Documentar y ventilar los errores del programa con todo el control posible sobre el estado del programa, es decir, conocer el valor de todas las variables que se tienen en juego (hasta donde sea posible)
La idea para hacer esto es un script que se integraría al código fuente, un módulo de autoprueba que permita a los desarrolladores probar todos los estados del software y a los usuarios poder archivar el reporte de maco (haré una entrada sobre este término) que sea realmente útil a los desarrolladores.
A nivel básico, el software tendría funciones que llaman, de manera consecutiva para obtener todas las combinaciones posibles dentro de parámetros establecidos por el probador, todas las funciones del programa, hasta que:
  • La prueba finalice.
  • El programa falle.
En el primer caso, devolvería en un archivo todos los parámetros establecidos, tentativamente información sobre el computador en que se ejecutó (como cantidad de RAM utilizada/disponible, velocidad del procesador u otros factores que podrían afectar la velocidad de ejecución del software), la cantidad de veces que se llamó a cada función del programa y todas las llamadas al programa hechas, y el tiempo que se tardó en completar la prueba.

En el segundo caso, devolvería el estado del programa en el momento en que falló, el código de error que lanzó el programa (si hubo). En caso de que el programa muera de manera inesperada, habrá disponible una manera sencilla de saber el estado del programa en el momento en que falló: el programa va archivando, hasta el momento de finalización de la prueba, el estado en que está ejecutando todas las funciones actualmente, y la próxima función a ser evaluada.

También se podrán establecer grupos de resultados considerados erróneos (o mejor dicho, parámetros dentro de los cuales los resultados son considerados correctos), de tal forma que el software pueda reportar errores de lógica.
--
Sé que es algo limitado y sencillo, pero simplemente es una idea inicial. Aún no he implementando tal cosa para ninguno de mis sistemas. Esto es, según mi criterio, el inicio de la inteligencia artificial que llevaría a una Singularidad.

Quien esté familiarizado con este tipo de cosas, favor comentar. Quien le haya agradado esta publicación, favor de comentar. A quien no, también.

viernes 2 de enero de 2009

Año nuevo, cosas nuevas ( II )

Ahora publico el trocito sobre cómo hice el sitio, cómo ejecuté el código python desde php.
Nótese que tengo python 2.5.1 instalados en el computador.

Bien, si recuerdan, había enlazado un folder en mi directorio personal
~/public_html

a un directorio en la carpeta del servidor
/opt/lammp/htdocs/$USER

la cuál en mi caso es:
/opt/lammp/htdocs/irving
de forma que mi sitio web está en
http://localhost/irving

Bien, creo que eso está bien como historia de trasfondo. En la carpeta ~/public_html hay dos documentos:

py.py
print "Te mordió la culebra!"

index.php

<html>
<title>IAJRZ (nivreial)</title>
<body>
<p>
Bienvenido a mi mundo.
<br/>
<?php
echo `/usr/bin/python py.py`
?>
<br/>ya corrio<br/>
</p>
</body>
</html>
La magia la hizo el operador ``, que ejecuta en la línea de comandos lo que está dentro. Ejemplo...
<?php`shutdown now -f`?>
apagaría el servidor, si este corriera en algún sistema POSIX.

Año nuevo, cosas nuevas

Y es así como pude, en un servidor XAMPP for Linux aquí en localhost, ejecutar un script python desde un html...

Es algo sencillo, de veras, pero que me permitirá hacer los juegos basados en navegador que tanto Arnulfito me ha insistido en que haga con él.

Cómo lo hice?
1) Instalar XAMPP (ideal para ambientes de desarrollo)
2) Crear documento 'py.py' y en la misma carpeta 'index.php'; esto fue en una subcarpeta asignada al webserver

Cómo instalar XAMPP for Linux en Ubuntu. Como siempre, desde línea de comandos.

/home/irving/Desktop#: wget http://ufpr.dl.sourceforge.net/sourceforge/xampp/xampp-linux-1.5.3a.tar.gz
/home/irving/Desktop#: tar xvfz xampp-linux-1.5.3a.tar.gz -C /opt
/home/irving/Desktop#: exit


Ya está instalado. Cómo ejecutar?
:/# /opt/lampp/lampp start


Cómo detener?
:/# /opt/lampp/lampp stop


Si tienes interfaz gráfica, puedes hacer un lanzador que esté en el menú Aplicaciones -> Internet (En mi caso, Xubuntu 8.04, Aplicaciones -> Otros)

:/$cat >> ~/.local/share/applications/xampp-control-panel.desktop

[Desktop Entry]
Comment=Start/Stop XAMPP
Name=XAMPP Control Panel
Exec=gksudo "python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py"
Icon[en_CA]=/usr/share/icons/Tango/scalable/devices/network-wired.svg
Encoding=UTF-8
Terminal=false
Name[en_CA]=XAMPP Control Panel
Comment[en_CA]=Start/Stop XAMPP
Type=Application
Icon=/usr/share/icons/Tango/scalable/devices/network-wired.svg


NOTA: En formato especial está lo que introduje al documento. Esto es particular de cada usuario.

Luego hice una carpeta particular en mi carpeta de usuario donde guardaría mis sitios web, y la enlacé con una carpeta en el servidor web (en este caso el local; esto me dará una idea de qué esperar al subir al servidor definitivo).

Creación de la carpeta:

$~:mkdir ~/public_html


Enlace:
#/home/irving:ln -s ~/public_html /opt/lampp/htdocs/$USER


Notas:
-la carpeta del webserver es /opt/lampp/htdocs
-la carpeta que usamos tiene nuestro nombre de usuario en el webserver, así que para accesarla es necesario visitar http://localhost/
-es recomendable configurar el webserver. para eso ir a http://localhost/


Publico más tarde (u otro día) cómo hice ejecutar el script...

sábado 27 de diciembre de 2008

D'oh!

Sí, la palabrilla mágica de Homero Simpson que significa que algo anda mal.
Pues en mi lanzamiento apresurado de 0.0.2 de Mapero no me aseguré de un paso "trivial"... como verificar que tuviera todas las características. estoy trabajando en la versión 0.0.2.5, que es la que incluye el navegador por habitaciones de los mapas.

Si se preguntan por qué versión 0.0.2.5 y no 0.0.2 real, es porque también estoy haciendo una modificación no planificada a main.py para mejorar el flujo del programa.

lunes 22 de diciembre de 2008

pyStats 0.2

Ahora guarda todo en el mismo archivo, con fecha/hora y archivo del que se sacó la información; Vamos camino ya hacia las estadísticas de evolución!

Los cambios en realidad son muy pocos, sólo detalles en cuanto al código. Sin embargo, la utilidad de la forma en que se guarda la información es muchísimo mayor.

Los inconvenientes más grandes que tiene pyStats es que si se movió un archivo de un directorio a otro lo toma como un archivo diferente, por lo cuál es preferible que se corra la copia de pyStats 'localmente' con los archivos a los que les sacaremos las estadísticas.

El leedme.txt es el mismo, así que sólo subo el ".py"

Mapero Versión 0.0.2 Liberada!

Esta vez con un diseño más robusto que el 0.0.1, permitirá ser ampliado con mayor facilidad, pudiendo producir el 0.0.3 en menor tiempo (menos distancia entre lanzamientos!)

Permite, mediante el uso de main.py, exportar mapas ".dum" a formato comprensible ".txt"

Este lanzamiento incluye el eterno mapa1.dum, esta vez explotando las características de la especificación .dum 0.1.2 y ahora también el mapa1.txt, una transformación a mapa legible, que sirve para saber qué esperar al exportar de .dum a .txt

Subo pronto, que me tengo que ir!! pero está listo.