dserrano5 wrote:Tengo un cacho de software medio publicable ya
Bueno, ahora tengo un cacho de software 3/4 de publicable, así que ahí va

. Poneos cómodos que esto es largo...
Se presenta en forma de un tochaco de 9 megas. La razón de esto es que programo en Perl, y en el .exe está incluido el intérprete y todos los requisitos necesarios para que chute. No se instala: se ejecuta y listos. La primera ejecución tarda bastante (20-30 segundos en mi máquina virtual) porque se tiene que descomprimir toda la historia a un directorio temporal; en las siguientes ejecuciones ya se reconoce todo lo descomprimido y se utiliza. Si eso se borra por la razón que sea, pues luego vuelve a tardar

. Si se borra mientras el programa se está ejecutando, supongo que pueden pasar cosas malas xD. Naturalmente, no doy ninguna garantía!
Al ejecutarlo, aparece una consola de MS-DOS con mensajicos varios. Esto, en una versión más publicable que la actual, no será así, pero de momento me parece interesante tenerlo por si aparecen errores. Cerrándola, se sale del programa.
No tengo mucha idea de windows, así que no sé si saltará el firewall o algún sistemita de protección a tal efecto. El programa realmente es un servidor web y al ejecutarlo, aparte de la consolita de MS-DOS, no va a suceder nada. Para usarlo, hay que ejecutar un navegador y conectarse a
http://localhost:8080/" onclick="window.open(this.href);return false;. Pero el hecho de que sea un servidor web posiblemente haga saltar alguna alarma; no hay problemas de seguridad, no es accesible desde fuera, ni siquiera desde la red local que podáis tener instalada en casa (si alguien me demuestra que estoy equivocado, estaré encantado de saberlo!). También se sale del programa, aparte de cerrando el ventanuco, navegando a
http://localhost:8080/quit" onclick="window.open(this.href);return false;.
Qué está hecho:
- Los apartados "Information", "Denomination", "Country" y "Location" del NIG. Prácticamente están tal cual, aunque el "Location" está un poco vago y se parece mucho al BBCode correspondiente. En este último, en la parte de los alfabetos, se usan un par de caracteres Unicode (✔ y ×) para rellenar el bingo. Porfa, avisadme si se ven bien o no.
- "Combination history": como su nombre indica, aquí va el histórico de combinaciones que ya conocéis. Deberían salir también las desconocidas. En mis pruebas, a veces el histórico no sale, pero eso a vosotros no os debería pasar (hago pruebas con varios archivos CSV, y esto ocurre al cambiar de uno a otro).
- "Note evolution": si las grafiquitas que puse el otro día en el foro os gustaron, estas os van a encantar
.
- "Interval" es para agrupar los billetes por días, semanas, meses, años o por un número N de billetes (sin tener en cuenta el tiempo). O usad "all" para mostrar todo (pero entonces no salen líneas en la gráfica, sólo unos puntos invisibles
, afortunadamente se puede mover el ratón por encima de la "gráfica" y aparece un popup móvil con la información relevante).
- "Filter" es para filtrar a nivel de CSV: todo lo que no coincida con lo que se ponga, se ignora. Hay que ser estrictos y teclear las cosas tal cual, es decir, las ciudades con la primera letra mayúscula (o no, si está mal en la base de datos de EBT
) y todo eso (para los informáticos: es una expresión regular de Perl, con una pizquita de sal). El filtro por "serial" es para poder usar, por ejemplo, sólo los billetes que empiecen por "V444" y cosas así. El filtro por "signature", se usa introduciendo o bien "WD" o bien "JCT". El filtro por "timestamp" es para la fecha y hora: "2010", "2011-01", " 09:". El filtro por "Shortcode", pues igual que los otros, se puede usar "M", "M00", "M001", "001", "001A1", "J6" y así. Los filtros por "Latitude" y "Longitude" no los he probado, lo suyo es que aceptaran rangos o algo así majete (no es el caso).
- "Group by" agrupa los billetes según lo seleccionado. Por ejemplo "Country code" provoca que se dibujen en la gráfica hasta 15 líneas, una para los billetes eslovacos (E), otra para los malteses (F), otra para los chipriotas (G), et cetera. "Printer code" es para las imprentas: la finlandesa (D), una de las francesas (E), la austríaca (F) y tal. "Plate" agrupa según la plancha - ojo, hay cientos de planchas y seleccionar esto a pelo resultará en una gráfica bastante fea (pero ahora digo cómo se soluciona). "Combination 1", a falta de un nombre mejor, agrupa por la combinación de imprenta-país, es decir, "MV", "PX", "DL" y compañía. "Combination 2" tiene en cuenta, además, el valor de los billetes, de forma que separa "MV5" de "MV10" y "MV20". De estas, como sabéis, hay 110 combinaciones, y ocurre un poco lo mismo que con "Plate". Se soluciona con...
- ..."Show only": aquí tecleamos lo único que mostraremos en la gráfica, como si fuera otro filtrado. Así, si agrupamos por "Plate" y aquí ponemos "M", sólo se muestran las planchas españolas. O si agrupamos por "Combination 2" y aquí ponemos "MV,LU", sólo se muestran los billetes de las combinaciones M/V y L/U, con la denominación desglosada.
- "Output": "Count" muestra el número de billetes, "Percent" muestra el porcentaje sobre el total de lo filtrado y "Percent only over shown" muestra el porcentaje sólo sobre lo que se está mostrando (es decir, sobre lo que hemos puesto en "Show only"). Seleccionar "Percent only over shown" sin haber puesto nada en "Show only" es un error y no genera ninguna gráfica.
- "Plate bingo": lo hice esta tarde, me lo he pasado pipa
. También se usan los caracteres Unicode de antes, por lo que saldrá igual de bien o mal que los alfabetos de ciudades en cada país.
- "Configuration": uy, aquí olvidé quitar las opciones planeadas pero inactivas
. Lo único que chuta es lo del CSV file, lo demás no lo he usado ni siquiera una sola vez, así que a lo mejor al poner algo se peta
. No se puede subir el CSV de hits, aquí no hay nada de hits todavía.
Demasiada información de repente, me parece... en fin, jugad con el tema y todo os irá sonando.
Las gráficas que puse el otro día se reproducen así:
- Interval: 1 month
- Filter: denomination 20
- Group by: plate
- Show only: L076,L077,L078,L079,M021,M022,M023,M024,M025 (es decir: L07[6-9],M02[1-5]

).
- Output: (lo que queráis)
Planes inmediatos:
- Soporte de traducciones: los textos estarán en un archivo editable con el bloc de notas y todos podrán traducir el programa a su idioma nativo.
- Configuración externa: una de las mayores carencias del NIG es que cuando aparecen combinaciones nuevas, no podemos editar ninguna configuración para añadirlas nosotros (curiosamente, sí podemos editar los archivos de códigos postales, que raramente cambian
). Esto en mi programita se podrá configurar, y también las planchas nuevas con la firma de quien sea y las letras de los países o imprentas nuevas. Queda por concretar cómo haré para las firmas de las planchas compartidas (
P005/X,
F002/N y
F002/N).
- Probar un CSV grande, hasta ahora sólo he probado con mis 7000 billetes (pero eso, con suerte, ya lo hace alguno de vosotros por mí
).
- Ahora mismo tengo 2143 billetes en "Madrid" y 78 en "madrid". Soluciones: filtrar por "adrid", "[Mm]adrid" o "(?i)madrid"... Creo que le pondré que se ignoren las mayúsculas/minúsculas, porque los usuarios, comprensiblemente, no van a querer hacer estas mi*rdas
.
Al configurar el archivo CSV, se crea una mini base de datos en "C:\Documents and Settings\(usuario)\Datos de programa\.ebt\storable-cache". Aquí va toda la información que el programa muestra, y al ser un archivo en disco, se conserva entre una ejecución y otra. Es decir, el programita sólo genera las estadísticas al configurar/actualizar el archivo CSV, no cada vez que se ejecuta (tal como hace el NIG). Si el histórico de combinaciones o cualquier otra cosa sale mal, probad a borrar este archivo y configurad de nuevo el programa, a ver si se arregla con eso.
Plus: no se generan todas las estadísticas de una pasada, sino que al navegar a "Information" se genera sólo lo relevante, luego al cambiar a "Denomination" lo mismo, y así con cada sección. Pega: navegar a cada sección por primera vez tardará un poquito

. Al fin y al cabo, todos estos poquitos sumados acaban resultando en el mismo tiempo total

.
Para desarrolladores y curiosos (hola dargqui
): como ya he dicho, al ejecutar el programa se descomprimen muchas cosas en un directorio temporal, que en mi sistema es "C:\Documents and Settings\(usuario)\Configuración local\Temp". Aquí se crea una estructura tal que:
Code: Select all
Temp
\_ par-(hostname)
\_ cache-(dígitos hex)
\_ inc
\_ lib
\_ EBT.pm (toda la funcionalidad va aquí)
\_ (resto de módulos de Perl necesarios)
\_ script
\_ public
\_ images (banderitas y denominaciones)
\_ ofc2 (para las gráficas en Flash)
\_ (varios archivos .js y el .css)
\_ templates
\_ (plantillas html)
En un esquema MVC, en EBT.pm estaría todo el modelo. El controlador sería script\hue-ajax.pl (juas, había AJAX al principio pero ya no queda ni rastro de eso xD) y la vista está en todas las plantillas. Salir del programa, editar estas cosas y volver a arrancarlo, funciona bien (es decir, el programa no detecta los cambios y funciona sobre este directorio temporal, en lugar de ignorarlo y crearse otro temporal nuevo).
La página tiene un iframe donde se cargan todas las secciones. Pienso en redimensionar su anchura dependiendo de la resolución de la pantalla. La altura ya se redimensiona con cada sección nueva que se navega.[/color][/size]
Por cierto, ni idea de qué nombre poner a esto. Odio poner nombres a las cosas

.
Bueno, realmente esto no se presenta en un tochaco de 9 megas, sino en uno comprimido de 6. Es normal que los servicios de alojamiento de ficheros presenten pegas a la hora de alojar un .exe, así que lo comprimí sin más para que me dejara. Además así la descarga se aligera un poco. El winzip debería tragarse la compresión que he usado. Por cierto, ¿todavía existe el winzip? Es que hace 8 años que no toco un windows...

.
Sin más, helo
aquí (el primer file hosting gratuito que me apareció en google). Disfrutad!
Tengo una amiga en Perú; volvía hoy y le han cerrado el espacio aéreo... la ola le tiene que estar llegando ahora mismo... glups
.