Mostrando entradas con la etiqueta laboratorio. Mostrar todas las entradas
Mostrando entradas con la etiqueta laboratorio. Mostrar todas las entradas

lunes, 27 de julio de 2009

Autodocumentación



Algo muy bueno y que realmente puede ser muy útil en python es la autodocumentación.

Realmente no requiere demasiada explicación, solamente es necesario ingresar un comentario del tipo (""") al comienzo de nuestra function (debe estar identada) y luego, invocando el comando help() pasandole el nombre la función veremos ese texto. Ejemplo:

def autodoc(msj):
"""Ejemplo de autodocumentacion
parametros: msj = Mensaje a mostrar"
""
print msj
help(autodoc)

Vamos a ver algo asi:

Help on function autodoc in module __main__:

autodoc(msj)
····Ejemplo de autodocumentacion
····parametros: msj = Mensaje a mostrar
(END)

sábado, 25 de julio de 2009

Crawling





Quería compartir una function de mi autoría escrita en php. Lo que hace es recorrer directorios recursivamente a partir de un path inicial.
Se llama crawleo por una particular obsesión con la palabra "jaleo". Jaleo, Crawleo... etc.

Yo uso llamo a una function (mia también) que se llama indexme. Lo que hace es indexar el contenido de los archivos en MySQL. No es relevante para el ejemplo asi que no la inclui.
Donde dice indexme pueden poner otra cosa :P
function crawleo($spath){
if(file_exists($spath)){
$ptr = opendir($spath);
while(($buf = readdir($ptr))!=null){
if(trim($buf)!="." && trim($buf)!=".."){
if(is_file($spath."\\".$buf)){
$currf = $spath."\\".$buf;
indexme($currf);
}elseif(is_dir($spath."\\".$buf)){
$currf = $spath."\\".$buf;
crawleo($currf);
}
}
}
closedir($ptr);
}else{
echo "Search Path: $spath not found";
}
}

miércoles, 3 de junio de 2009

Inicio "lento" en Debian 5 (Lenny)

Tengo Debian Lenny y me encontré con un problemita (no es grave para nada, pero me gustaría compartir la solución)

Resulta que cuando iniciaba tardaba un poco. Quedaba como frizado en dos lugares, que son:

Código:
Starting Common Unix Printing System: cupsd.
Y después en:

Código:
Starting MTA
Buscando (googleando) encontré como deshabilitar esos (y otros) servicios que quizá no usemos. En mi caso, cupsd (es un servicio de impresión) no tenia uso. El MTA (un servicio relacionado con el mail) tampoco.
Más info:
MTA
cupsd

El procedimiento es simple:

1) cd a /etc/rc2.d
2) Hacer un mv Snombre Knombre.

Ejemplo:

Código:
mv S50exim4 K50exim4
Ahora Lenny inicia en segundos.

Cómo usar PHP como lenguaje de script de consola?

El otro día programando una aplicación web (en PHP) que tenía, por un lado, una búsqueda hecha en PHP con MySQL y por otro lado necesitaba de un daemon. Éste es quién recolectaría la info y la guardaría en MySQL.
Me dispuse a escribirlo y pensé en Perl o Python (por tener algo de portabilidad windows/linux) , pero luego, lo pensé y me pregunté:
Ya que tengo php, no lo puedo usar como lenguaje de script de consola??? La respuesta es SI.


En Linux:

Instalar el intérprete
apt-get install php5-cli

Luego armamos el archivo con un hashbang al comienzo como cualquier otro script (#!)
Ejemplo:

#! /usr/bin/php5


Listo. Al ejecutarlo nos devolverá la salida "Esto es una prueba".


En Windows:

En mi caso uso phptriad y el path al php está en:

C:\apache\php\

Entonces, puedo armar un bat (por ejemplo) y llamar a mi script así:

cd C:\apache\php\
php -f C:\PHP\pru.sh

Es decir, con cd me paré en el directorio del php.exe. Con php -f le pasé como parámetro el script que está en pru.sh. -f es para decirle que queremos parsear un file.
Hay otro métodos (por ejemplo, agregar el path del PHP a la variable de entorno path)

Agrego un link interesante:
Instalación y configuración básica de LAMP en Debian

LAMP = Linux Apache MySQL PHP (o perl o python)
Qué es LAMP?

viernes, 20 de marzo de 2009

Visual Basic 6 (testeo de compilación)

Queriendo compilar en visual basic 6 de la misma forma que en C (generando objects por separado y luego linkeandolos) encontré lo siguiente:

El tema es, el VB6 compila con un exe C2.exe y linkea con el LINK.exe
Lo que hice fue, reemplazar el C2.EXE por un exe mio, mi exe loguea los parametros que le pasa el vb6. Luego hice lo mismo con el link.exe y listo, tenia los parametros que le tengo que pasar a los dos exes.
El C2.exe crea los OBJ, el link, linkea.
log del C2.exe
-il "C:\DOCUME~1\Martin\CONFIG~1\Temp\VB375862" -f "Class1" -W 3 -Gy -G5 -Gs4096 -dos -Zl -Fo"C:\Documents and Settings\Martin\Escritorio\frmLala.OBJ" -QIfdiv -ML -basic
log del link.exe
"C:\Documents and Settings\Martin\Escritorio\frmLala.OBJ" "C:\Documents and Settings\Martin\Escritorio\Proyecto.OBJ" "C:\Archivos de programa\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /OUT:"C:\Documents and Settings\Martin\Escritorio\Proyecto.exe" /BASE:0x400000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /INCREMENTAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078

Queda corregir un problema más. El vb6 genera un archivo por cada frm en un "lenguage intermedio". Se supone que es ese archivo que guarda en temporales y que genera usando el comando iL (intermediate language) Esto es una suposición mía.


Extensión XPI: Zips camuflados

Asi que eran zips camuflados nomás.
Viendo el xpi (extensión de firefox) de piratesoftheamazon con un editor HEXA veo la marca
PK
Al comienzo del file. "Es un zip" pienso. Le cambio la extensión y ahi lo tenía. Todos los files que usa, js, archivos de imagen, etc.
Interesante para hacer xpi propios.
Luego busqué en google, cosa que debería haber hecho antes :)

http://filext.com/file-extension/XPI