Anuncios Google

[APORTE LUA] Manejando ficheros logs

Lo peor que tiene Lua para la PSP mientras depuras tu código, es que no tienes manera elegante de tener un log en pantalla. Puedes mandar la salida a un fichero, peeero, reza para que no te toque un nil (qué manera más absurda tiene este lenguaje de tratar un valor nulo).

Al final me he puesto y he creado una forma de crear ficheros logs para ayudar a depurar nuestros homebrews. SIN PREOCUPARSE DE LOS NIL. Pongo el código y explico cómo va.

--[[
Class Name: myLog
Version: 1.0.1
Author: GorristeR
Date: 2011-01
 
This code is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
 
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
]]--
 
myLog = {}
 
function myLog:Create(fname)
    local data = {}
    local f
    data["fileName"] = fname
    f = io.open(fname, "w")
    f:close()    
    return setmetatable({data},{__index = myLog}, myLog)
end
 
function myLog:Print(...)
    local output = ""
    local f
    --Grandiosa chapuza de los desarroladores de Lua,
    --ipair() se detiene si encuentra un nil.... WTF!!!
    for n = 1,table.getn(arg) do
        if arg[n] == nil then
            arg[n] = "nil"
        end
    end;
    for k,v in ipairs(arg) do
        output = output .. tostring(v)
    end
    f = io.open(self[1]["fileName"], "a")
    f:write(output.."\n")
    f:close()    
 end

Para implementarlo, hay que guardar ese código como "mylog.lua" y luego tan sólo hay que poner estas 2 lineas en nuestro código:

dofile("mylog.lua")
log = myLog:Create("nombre del fichero que quieras.log o punto lo que sea")

Una vez hecho esto cada vez que queramos guardar algo en el log, tan sólo hay que ir poniendo las siguientes intrucciones donde queramos

--Aquí código nuestro
log:Print("la variable n vale", n, "y la variable total es igual a ", tot)
 
--Más Código
log:Print("Entrando funcion configurar(), contador vale: ", contador)
 
---Más Código
log:Print("Fin función configurar()")
 
--Etc,

Y eso es todo, espero que a alguien le sea útil, a mí desde luego me está sirviendo, si lo llego a saber lo hago antes xDDD.

 

Otro aporte anterior: Ordenar y  filtrar ficheros en Lua


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de trom_us

por otra parte

una recomendacoin seria y es que no voy a poner el codigo como yo lo manejo, es recordar que no se puede escribir en la memoria del psp, si el usb esta activado, al menos no en las versiones de luaplayer, en luadev nose, entonces a los usuarios que les paresca una buena solucion de depuracion dichas lineas, recomiendo añadir aquellas que permitan identificar si la coneccion usb esta activada, ya sea con el cable puesto o no. ya que eso causara 99.99% seguro en datos corruptos de dicho archivo, y/o de la carpeta direccion total de la ubicacion del mismo. en otras palabras no olviden desactivar el usb antes de usar

log:Print("...")

para mas informacion con sulta un tutorial de Lua/LuaPlayer
Imagen de pspgorrister

Si eso es cierto...

...me dejas de piedra Sorprendido. Increíble que después de tanto tiempo, Lua tenga ese fallo con el USB.

 

Un saludo.

Imagen de trom_us

eso,

talvez como se supone la pc deveria tener control total sobre la usb, al intentar guardar desde el psp, se corrompen los archivos, supongo en aparaos nuevos no sucede porque no se llama directamente ala memoria sino que hay un programa que transmite la informacion de los archivos requerida por los PC, tal caso de los celulares, video camaras y otros dispositivos que dan la impresion de que se pueden utilizar como memorias flash, pero no lo es asi. lo cual los vuelve muy lentos.

yo escribo los programas en la pc, pero directamente los guardo al psp, éste conectado via usb, y apenas doy guardar, lanzo el acceso directo desde el escritorio de GuinXell, y se carga el programa y lo verifico. por ello las primeras veces me corrompio la memoria cuando empece a guardar archivos desde el psp, y de ahi que me di cuenta, pero ahora todas mis funciones que uso de guardar propias, verifican el usb y lo desconectan, lo vuelven a su estado original al terminar la operacion... comentario o recomendacion como gusten verlo.

Imagen de Chimecho

Unas par de cositas :P

Has puesto: Para implementarlo, hay que guardar ese código como "myconfig.lua", pero luego dices: dofile("mylog.lua") eh? xD

Otra cosa, veo que usas: for n = 0,table.getn(arg) do, pero si mal no recuerdo (si estoy equivocado, corríjanme), los arrays en lua no empiezan en 1?

y algo de poca importancia, pero... end;? costumbre de C? (a mi también me pasa a veces xD)

Y por cierto, muy útil el código, me servirá para saber dónde me da error :P, ya que el módulo de errores de LuaDev no está pulido al 100% y a veces me salen errores vacíos (¬¬' DeViaNTe) xD

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de pspgorrister

Corregidos.

Sí, efectivamente el primer bug, es por el lío del myconfig que hice para manejar ficheros ini.

Y también empezar de 0 es un bug, aunque nunca imprime el elemento 0 ya que después vuelvo a usar ipair, por eso no lo detecte. Y no es costumbre de C, sino de C, C++, Delphi, Pascal, Visual Basic, PHP, Bash.... ¿sigo?. Difícil de quitar cuando sabes tantos lenguajes y Lua es el único que conduce por la izquierda.

 

Gracias!


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de Chimecho

De nada :)

Pues eso, de nada :D
PD: antes leí derecha jaja

Imagen de ANI-KIBA

Perfecto :D

Añadido a favoritos :D

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.