Buscar
Social
Ofertas laborales ES

Foro de la JavaCup > Primera beta de javaLeague

Antes que nada, disculpar el retraso en traer novedades, pero me ha sido imposible ir más rápido.

Ya hay una primera versión de la web javaLeague:

http://javaleague.appspot.com

Es una primera versión que contiene (seguro) errores y hay varias funcionalidades que no están cubiertas, pero más o menos ya se vislumbra (creo) lo que queremos conseguir.

La novedad principal es que ya no necesitamos que subáis el código fuente de la táctica. Solo es necesario el fichero jar con las clases. Echarle un vistazo a la wiki donde se explica el procedimiento para darse de alta.

Todos los partidos (los amistosos y los de liga) se ejecutan automáticamente en Google App Engine. Usamos un usuario gratuito en Google App Engine, por lo que la cuota de uso de recursos es limitada y se actualiza cada día, por lo que es posible que en algún momento la web dejé de responder hasta que nos reinicien la cuota al día siguiente.

He creado una liga de prueba, por lo que os rogaría que os apuntaseis para intentar hacer una prueba lo más parecida a la realidad.

Probar todo lo que podáis y lo vamos comentando en el foro.

Gracias y un saludo,

Alfonso

mayo 29, 2014 | Registered CommenterAlfonso

Revisando la web, he encontrado el siguiente error.
Buscando las ligas aparece la que cree de prueba "Prueba 1". Al pulsar sobre ella para acceder al detalle de la misma sale una ventana con error.
Hay que cerrar esta ventana y la web sigue funcionando. Vemos los datos de la liga y nos podemos apuntar a ella.
Ya estoy con ello para corregir este error.

¿ Habéis encontrado algún otro error ?
¿ Tenéis problemas para registraros ?
¿ Qué os parece la web ?

Comentarnos por favor cualquier cosa referente a la web que estiméis oportuna. Entre todos conseguiremos hacer que javaLeague sea un éxito.

Gracias.

Alfonso

junio 4, 2014 | Registered CommenterAlfonso

Hola Sito,

Hace unos días me registre en la Web y respecto a este tema no he encontrado errores.

Me sale el problema que comentas, al buscar una liga aparece "Prueba 1", al seleccionarla me saca dos alert diferentes que creo que es el error que comentas.

He subido una táctica de prueba y me he inscrito en la única liga existente por el momento, pero al acceder a ella para ver sus datos me salen cuatro opciones (Apuntarme, Editar Liga, Borrar Liga y Crear Calendario Liga) al medio segundo de que me salga esto, me envía a la pantalla de descripción de la liga y me vuelven a salir los dos errores mencionados anteriormente.

Por lo demás la Web esta bastante bien y es intuitiva. Creo que le faltan un par de funcionalidades, como ver las estadísticas de otros jugadores, pero como he dicho, para empezar la veo bien.

Un saludo

junio 19, 2014 | Unregistered CommenterProbateando

Gracias Probateando.
Efectivamente es el mismo error, al apuntarse y luego al mostrar el detalle de la liga.
Estoy modificando y corrigiendo más cosas.
Vi que habías solicitado un partido amistoso. Para que veas la prueba hice lo mismo con mi usuario de prueba y ya tenemos un partido programado y que se ejecutará en breve en la web.
Seguramente cuando vuelvas a entrar, ya te aparecerá el partido que hemos disputado.
Gracias por probar.
Saludos,

junio 19, 2014 | Registered CommenterAlfonso

Hola de nuevo,

Estoy probando todo lo que puedo en busca de algún error, y parece que se ha producido uno en el partido amistoso, por lo poco que he podido ver no se saca el resultado del fichero que lees (he mirado algo el source xD).
Creo que estas cacheando los objetos, pero quiero saber como has podido acceder a una bbdd con un usuario gratuito en GAE, creía que no era posible, aunque veo que en el log aparece la clase JdbcMySqlConnectionCleanupFilter.

Saludos

junio 19, 2014 | Unregistered CommenterProbateando

Estuve revisando los logs y el error viene de la página para subir/actualizar la táctica.
Subió tu táctica pero luego dio error y no reseteó correctamente los campos de la táctica por lo que para la aplicación era correcta y te permitió solicitar un partido amistoso.
Luego a la hora de ejecutar el partido amistoso dio error porque no encontró la táctica.
Acabo de subir una versión que creo que corrige este error y reseteé los campos de tu táctica. Tendrás que subirla de nuevo.
Una vez que la subas, prueba por favor de nuevo lo de jugar un partido amistoso, que debería funcionar sin problemas.

Respecto a lo de acceder a una bbdd externa, no lo hago. Utilizo el DataStore de GAE mediante el frameWork Objectify (https://code.google.com/p/objectify-appengine/), allí es donde almaceno todas las entidades y luego uso Cloud Storage de GAE para almacenar los ficheros de las tácticas y de los partidos.
La verdad es que no te sabría decir "quien" utiliza esa clase ;)

Saludos,

junio 20, 2014 | Registered CommenterAlfonso

Ya tienes la táctica subida y estoy a la espera de que la Web ejecute el partido. ¿Le has metido un job/cron/demonio para que cada X tiempo ejecute los partidos o algo así? No mola que aparezca lo de esperando, si sabes cuando se va a ejecutar ponle una cuenta atrás o algo similar para que no resulte tan tediosa la espera.

Hace mucho tiempo que no toco GAE y por aquel entonces no encontré la forma de tener algo parecido a una BBDD de forma gratuita. Me alegro de que ya hayan creado algo y sea gratis

Un saludo

junio 20, 2014 | Unregistered CommenterProbateando

Gracias por el tiempo que estás dedicando a las pruebas. Me está sirviendo de mucha ayuda con la aplicación.
Te cuento como funciona el tema de la ejecución de los partidos.
Hay dos tipos de partidos, los de liga y los amistosos.
Una vez creado el calendario de la liga por el manager de la misma, se crean todos los partidos con una fecha/hora de ejecución y de visualización. Existe una tarea programada (https://developers.google.com/appengine/docs/java/config/cron) que se ejecuta cada media hora y comprueba los partidos que estuviesen programados para ser ejecutados en ese intervalo de tiempo. Para cada partido que toque ejecutar, genera un trabajo en la cola definida (https://developers.google.com/appengine/docs/java/config/queue) para los partidos de liga. La cola ejecuta un partido de cada vez. Tuve problemas para ejecutar más de un partido a la vez, ya que al cargar las clases de las tácticas y del framework se me pisaban las de un partido con otro y acababa dándome error.
Para los partidos amistosos es más sencillo. Cuando un usuario marca que quiere jugar un partido amistoso se le pone en modo de espera a que otro usuario marque jugar partido amistoso. En ese momento se crea el partido, se le pone fecha/hora (se revisa el número de partidos en la cola y se hace una estimación de cuando se puede ejecutar) y directamente se envía el partido a ser ejecutado en la cola correspondiente (hay dos colas, una para los partidos de liga y otra para los amistosos).

En el momento que el segundo usuario marque jugar partido amistoso debería poner la fecha/hora de visualización del partido.

Revisando los logs veo que dio un error al cargar Tactica.jar para ejecutar el partido. Concretamente dio error al iniciar el partido y cargar el color de la camiseta. ¿ Puede ser que en tu táctica se use la clase java.awt.Color ? No está soportada por GAE (https://developers.google.com/appengine/docs/java/jrewhitelist).
En vez de java.awt.Color hay que utilizar org.javahispano.javacup.model.util.Color
Me apunto como tarea el comprobar esto cuando se sube la táctica. Ahora mismo solo comprueba que la táctica subida implementa el interfaz Tactic.

Si ese es el problema, cambias la clase y actualizas de nuevo tu táctica, el partido debería ejecutarse ya que la tarea sigue intentando arrancar.

Gracias de nuevo por tus pruebas.

junio 20, 2014 | Registered CommenterAlfonso

Como mi nick indica, estoy para probar.

Efectivamente el problema esta en que utilizo la clase Color del paquete java.awt, un consejo, actualiza el zip "framework_src.zip" y en vez de poner el proyecto con el nombre "javaCup" ponle "javaLeague" o algo distintivo, como también tengo abierto el proyecto de la javaCup estaba creando mi táctica en él en vez del otro, de ahí el problema con la clase Color.

A raíz de estos problemas me ha surgido una duda que no se si contemplas, en los amistosos no influye tanto como en los partidos de liga, por el simple echo de que queremos jugar contra alguien y no nos jugamos nada, pero en la liga es diferente, voy a ir al grano que si no el comentario no acabaría nunca, ¿qué pasaría si en un partido de liga hubiera dado estos errores u otros diferentes? ¿el partido se habría suspendido? o ¿el jugador qué no ha tenido errores tiene el partido como ganado y se lleva los 3 puntos?

Un saludo

junio 21, 2014 | Unregistered CommenterProbateando

Ok, tienes razón. Cambiaré el nombre del proyecto para que no cree confusión.

Mi idea es que si ocurre un error durante la ejecución de un partido de liga, sea el manager de la liga el que decida que hacer. Dispondrá de una página donde podrá decidir si repetir el partido, dar por ganado a uno o a otro o empate. Guardo la traza del error y la tendrá disponible para decidir.

Estuve mirando la posibilidad de que fuese el sistema el que automáticamente examinase la traza y descubriese que táctica provocó el error, y entonces dar por ganador del partido automáticamente al otro, pero no lo veo claro y creo que se podrían cometer bastantes injusticias. Por ejemplo como los que nos acaba de pasar. La clase java.awt.Color se usaba en el frameWork javaCup de ediciones anteriores y entonces es normal que muchas tácticas lo sigan utilizando. Creo que lo más sensato es que cada caso de error sea revisado por el manager de la liga.

¿ Qué opináis ?

Saludos,

junio 21, 2014 | Registered CommenterAlfonso

Me gusta la idea, aunque le veo una pega. Imagina que una persona esta ociosa por jugar en muchas ligas y se apunta a todas las que vea, se puede producir el caso en que dicha persona no conozca al Manager, ¿cómo vas a hacer para que el Manager le avise al jugador de su error para que dicho error no se siga produciendo?¿Cómo verías la posibilidad de que al subir una táctica esta se pudiera validar?, se me ha ocurrido, por ejemplo, que al subir una táctica el sistema diese opción a validarla por medio de un partido (contra un equipo base del sistema) y que si se llegasen a producir errores que se mostrasen al usuario para que pudiera corregirlos, o en caso de no entender el motivo, venir al foro y preguntar.

Un saludo

Pd: he encontrado dos nuevos errores:
1º. No me recuerda la cuenta, marco la casilla recordar pero siempre tengo que introducir mis credenciales
2º. Se ha vuelto a producir el mismo error que ayer al ejecutar el partido amistoso.

junio 21, 2014 | Unregistered CommenterProbateando

Por una parte creo que la actualización de una táctica tiene que ser algo rápido. Ahora mismo solo compruebo que implemente el interfaz Tactic, pero creo que se puede añadir la comprobación de instanciar un partido con la táctica subida y cualqueir otra de prueba, sin llegar a ejecutar el partido. Con esto detectaría el error de la clase java.awt.Color y no llevaría apenas tiempo.
Y por otra parte, se puede hacer lo que dices. Añadir un botón de comprobación de táctica que puede utilizar el usuario y que ejecutaría uno o varios partidos de prueba para verificar que la táctica va bien.

Ahora mismo tengo inestable la versión publicada, pero creo (o eso espero) que si subes de nuevo la táctica (te la tuve que borrar) y pruebas a jugar un partido amistoso, por fin, funcionará!!!

Estoy trabajando en corregir estos problemas y añadir nuevas funcionalidades (ver el partido en directo, etc etc) y subirlo en breve. Espero que a finales de mes lo pueda tener disponible.

Saludos,

junio 23, 2014 | Registered CommenterAlfonso

Buenas

Por fin hemos podido jugar el partido!! Espero la actualización para poder ver el partido desde la Web.
En relación a lo de validar la táctica con un partido de prueba, no me refería que tuviese que verse el partido, era más a lo que comentas de instanciar uno sin llegar a ejecutarse, y en caso de que se produjese error, que lo mostrase al usuario.

Un saludo

junio 26, 2014 | Unregistered CommenterProbateando