Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



lunes, 6 de octubre de 2014

Explorador de proyecto de gambas3: Uso de la orden SCAN

Explorador de proyecto de gambas3: 

Uso de la orden SCAN


Tras leer un hilo (enlace) abierto por Shell en el foro de gambas-es.org, me he mirado  hoy  que hacia esta orden, que nunca había escuchado nada de ella,  ni de su uso, he intentar hacer un ejemplo de como usarla
Lo primero que vi fue la ayuda de gambaswiki ( http://gambaswiki.org/wiki/lang/scan?l=es ):

String Array = Scan ( String AS String , Pattern AS String )


La definición viene a decir que:

Busca coincidencia de una cadena con respecto a un patrón dado (según los patrones usados por LIKE, y devuelve una matriz con las cadenas asociadas a un caracter generico "*"

Me he hecho una aplicación que es capaz de leer un proyecto completo realizado en gambas3, y extraer los eventos, métodos, y variables que usa cada clase ó modulo.
Para la parte que "analiza" y extrae la información uso la funcion scan.

Por ejemplo:
    LISTA = Scan(lineas[A], "PUBLIC SUB *")
    If LISTA.count > 0 Then
      sublista = Scan(LISTA[0], "*_*")
      If sublista.count = 0 Then
        'se trata de una subrutina
        TreeView1.Add(ruta & "/public" & LISTA[0], LISTA[0] & " en " & Str$(a), Picture["method.png"], ruta & "/public")
        Continue
      Else
        'se trata de un evento
        TreeView1.Add(ruta & "/event" & LISTA[0], LISTA[0] & " en " & Str$(a), Picture["event.png"], ruta & "/event")

        Continue
      Endif
    Endif

En una linea de código (Linea[A]), compruebo con SCAN que su contenido es igual al patron "PUBLIC SUB *", asi discrimino todas las lineas donde se definen subrutinas públicas. Si coincide, devuelve un array de cadena con el contenido del nombre de la subrutina.
Esta subrutina, puede ser que sea un evento, para ello la vuelvo a analizar con el siguiente patrón:
= Scan(LISTA[0], "*_*")

Con el cual busco que el contenido del nombre que he extraido en el primer patrón, contiene un caracter "_" que en gambas se usa para señalar evento. Si se cumple esto, se trata de un evento, y pongo el icono de evento, y si no,  se trata de un método y pongo su respectivo icono.
Ademas de poner el icono, y el nombre del método/evento/variable también pongo el numero de linea donde esta dicha definición en la clase, para poderla buscar posteriormente.

Aquí tenéis el programa analizando en el proyecto del juego "1945":




Os dejo aqui el código completo: enlace de descarga en drive google

Saludos.

Julio


Desarrollo Online de un marcador de records para un juego (I)

Marcador de Records


Desarrollo Online de un marcador de records para un juego



1) Descripción del proyecto
Competir entre los jugadores es la forma de dar más interés a una juego. La forma más sencilla de competencia es una tabla de puntuaciones máximas conseguidas por los jugadores, donde se vean reflejados. Ser el primero y/o estar por delante de los otros jugadores es un modo de que los jugadores sigan "enganchados al juego", intentando mejorar su posición en la tabla de records aumentando sus puntuaciones.

¿donde situar esta tabla? Esta tabla debería de estar accesible para el juego desde cualquier lugar.
No nos vale una carpeta compartida, ya que solo lo tendremos accesibles a ordenadores de nuestra intranet o red interna. O sea la podemos subir a un sitio web en internet y tenerla siempre online, para que sea posible leerla y añadirle los resultados que consiga el jugador (el jugador debe de disponer de conexión a internet) las 24 horas del día, los jugadores pueden estar en cualquier parte del mundo.

Tendremos que crear un "sitio" web encargado de servir los datos  y modificar la tabla de  datos (el llamado ordenador servidor).
El programa  "cliente", el que tendrá instalado en su ordenador cada jugador, se encargará de enviar y leer los datos al servidor, mostrándolo en la pantalla del ordenador del cliente.



Esquema de varios clientes conectados a través de internet a un servidor



2) Lenguajes a usar en el servidor
Para guardar los datos usaremos una base de datos, en concreto el motor de bases de datos MySQL.
Algunos sitios web, permiten que se puedan acceder a la base de datos directamente. Normalmente esto no es posible, y/o hay que pagar un suplemento para hacerlo.
Lo más corriente es que para acceder a la base de datos, usemos un lenguaje de programación del lado del servidor. Para el lenguaje del servidor, se podrían usar varios: Python, PHP, Java,  etc.
Normalmente, y es lo más frecuente, los alojamientos web ofrecen servicios para MySQL y soportan el lenguaje PHP.  Por lo cual usaremos PHP, que es  un lenguaje muy utilizado en las páginas web y del  puedes encontrar mucha información en internet (manuales, tutoriales, foros, etc).

3) Buscando alojamiento web.
Existen multitud de empresas que nos ofrecen alojamientos web. Como lo que vamos a hacer  es una prueba, vamos a usar un alojamiento web gratuito que acepte tener bases de datos MySQL y PHP. Si fuera para usarlo en "producción", si deberíamos tener un alojamiento contratado para tener más garantías del funcionamiento del servicio.

He encontrado este alojamiento,  http://www.hostinazo.com , donde se pueden crear cuentas gratuitas, y tiene los servicios que necesitamos (admite el lenguaje PHP y bases de datos MySql),y  es el que voy a usar.

4) Implementación al lado del servidor
4.1) Crear la base de datos en el alojamiento.
Para crear la base de datos en el alojamiento web, vamos a usar la herramienta PHPmyAdmin.
¿que datos vamos a guardar en la base de datos?
Vamos a crear una tabla "datos", con los campos siguientes:

  • id: identificador único y autonumérico  para cada registro
  • jugador: nombre del jugador
  • pais: país de donde es el jugador (lo ponemos sin acento para que no de problemas)
  • marcador: puntuación


Se podían añadir más campos,  por ejemplo el nivel, la fecha , etc., pero nos quedamos con estos campos que son los típicos.

4.2) Crear el programa que nos de información del  marcador de records
Este programa lo crearemos mediante PHP  y se encargará de:
1) Leer las variables que se le pasen en la url, y con estos datos,  añadirlo a la tabla de datos de la base de datos.
2) Borrar registros que no sirvan: Vamos a limitar el número de registros a 20, para que solo guarde los 20 mejores resultados. Conseguimos que así que la base de datos ocupe muy poco en el sitio web. Con lo cual abrimos la posibilidad de crear más tablas de datos para distintos juegos.
3) Salida de datos del marcador: nos muestra los registros de la tabla de la base de datos, en formato html.

5) Implementación al lado del cliente
Para el lado del cliente, podemos usar cualquier lenguaje (gamba3,python, java, C,etc) que sea capaz de leer páginas web o por lo menos que tenga una librería o módulo para tal fin.
Vamos a usar la url de la página web para pasar los datos al servidor, siendo el servidor el encargado de leer e insertar los datos nuevos en la tabla.
Luego, nuestro programa Cliente,  simplemente leyendo la salida que genere el programa cliente, (que será una página web en formato html), obtendrá los datos de la tabla de records, para mostrar en la pantalla del ordenador cliente.


Continuaremos en la siguiente entrada, describiendo la parte del servidor: uso de PhpMySql y PHP

Nota: Enlace a indice del "Desarrollo Online": enlace

Saludos

Jsbsan



jueves, 2 de octubre de 2014

Videotutoriales: Curso Inicio Práctico a la Programación con Python 3.X de Jesus Conde

Curso Inicio Práctico a la Programación con Python 3.X


de
Jesús Conde


El otro dia ,en este post , os comente sobre un curso de  videos tutoriales sobre como hacer aplicaciones gráficas con PyQT. Ahora os traigo otro curso del mismo autor sobre python 3.X. Quizás este sea el indicado para empezar a aprender el lenguaje y luego el del PyQT para hacer aplicaciones gráficas:

Os dejo el enlace a la lista de reproducción:


Este es el indice del curso:
01.- Curso Python 3.X ¿Qué será lo que tiene Python?  
02.- Curso de Python 3.x. Python orientado a objetos.  
03.- Curso Python 3.X. Inicializar Objetos.                  
04.- Curso de Python 3.X. Uso de módulos y paquetes.
05.- Curso de Python 3. Imports absolutos y relativos.
06.- Curso de Python 3. ¿Quién puede acceder a mis datos?
07.- Curso de Python 3.X. Caso de uso: Crear Cuaderno de Notas
08.- Curso de Python 3.X. Creación de la Clase Cuaderno.
09.- Curso de Python 3.X. Creación del Módulo Menu
10.- Curso de Python 3.X. Herencias en Python.
11.- Curso de Python 3. Sobrescritura de Métodos y uso de super.
12.- Curso de Python 3. Herencias Múltiples y sus problemas.
13.- Curso de Python 3.X Polimorfismo y Duck Typing.
14.- Curso Python 3.x. Caso de Uso. Crear Inmobiliaria.
15.- Curso de Python 3.x. Desarrollo Clases de la Inmobiliaria.
16.- Curso de Python 3.X. Completar Caso de Estudio Inmobiliaria.
17.- Curso de Python 3. Tratar con errores y excepciones.
18.- Curso de Python 3. Manejar Excepciones.
19.- Curso de Python3. Jerarquía de herencias
20.- Curso Python 3.X. Definir nuestras propias excepciones.
21. Curso de Python 3. Caso de Estudio. Sistema de autentificación.
22.- Curso de Python 3. Caso de uso. Clases Exception y Authenticator.
23.- Curso de Python 3. Caso estudio. Completar Sistema de Autentificación.
24.- Curso de Python 3. Estructuras de datos.
25.- Curso de Python 3.x Trabajo con Tuples
26.- Curso de Python 3.X. Named Tuples
27.- Curso de Python 3.X. Uso de diccionarios.
Extra Crear Ejecutable:  Convertir de Python 3 a ejecutables .exe

Con gnu/linux es muy sencillo:
-Buscas donde tienes instalado python en tu sistema, escribes en la linea de comandos:
$ which python

Y te saldrá una ruta, por ejemplo esta:
/usr/bin/python

Entonces, la primera línea del script de python tienes que escribir la ruta que te ha dado, con el signo #! delante:
#!/usr/bin/python

Luego, le das permisos de ejecución al script por ejemplo, si tenemos un fichero de python llamado script.py::
$chmod +x script.py
Y ya lo puedes ejecutar:
$./script.py


Saludos