jguardon 09-05-2024, 19:58
Los que usáis GitLab y GitHub habréis podido comprobar que nuestro código gambas se ve horrible al mirarlo desde el repositorio. No se detecta y no existe una definición de gambas para resaltar convenientemente el código. Si al menos lo detectase como visual basic, que tiene mucho en común, algo mejor se vería...

Pues buenas noticias, para decirle a GitLab que use la sintaxis de VB sólo debemos incluir en nuestros proyectos un fichero con el nombre ".gitattributes" con el puntito delante de archivo oculto y poner en su interior el siguiente texto:

*.module gitlab-language=vb
*.class gitlab-language=vb


Por supuesto, hay que incluirlo con git para que se suba al repo.

De esa forma, los ficheros con extensión .module y .class ( y si usamos alguno más también podríamos decidir su resaltado) usarán el resaltado de VB, que al menos es bastante más legible...

Saludos
jguardon 09-05-2024, 19:41
Buenas

Estoy construyendo una aplicación para demostrar el uso de las comunicaciones al estilo de una API Rest mediante Requests y Responses usando JSON. Se compone de un backend en el servidor mediante CGI que recibe "requests", se loguea al usuario, realiza consultas a la base de datos y devuelve "responses" a la otra aplicación de escritorio que hace de frontend.

De momento va funcionando bastante bien, pero la forma idónea de tratar con los datos en JSON tras viajar por Internet, es construirlos y deconstruirlos mediante el uso de Collection, colecciones de datos que son objetos en sí mismos, arrays de objetos, etc.

Pues bien, tengo una colección que se compone de un primer objeto (que solo me interesa para saber que la consulta ha tenido éxito) y el segundo objeto que es un array de colecciones de datos, en este caso de los usuarios dados de alta en el sistema. Lo que quiero es crear una clase que coja un array de colecciones y me lo muestre en un gridview usando el evento Data.

Os muestro el contenido -ficticio- del JSON que luego se convierte en un objeto Variant[] (array de Collection):

Código:
{
    "status": true,
    "users": [
        {
            "idx": 1,
            "name": "jguardon",
            "psswd": "9EEA5E027AB93EC1DA",
            "perm": 1,
            "active": 1,
            "expires": null,
            "wrkgrp": null,
            "phone": null,
            "email": "unmail@fdfd.es",
            "lastlogin": "05/05/2024 14:57:17",
            "currentsession": "46.26.157.55:A507054AF954F807B685081D",
            "added_by": null
        },
        {
            "idx": 11,
            "name": "tincho",
            "psswd": "79B48CB1E208A82",
            "perm": 2,
            "active": 1,
            "expires": null,
            "wrkgrp": null,
            "phone": "555 222 333",
            "email": "otromail@teertte.com",
            "lastlogin": "05/05/2024 15:01:16",
            "currentsession": "46.26.157.55:0824D9EC6D2FD2D3EB7AA0A2",
            "added_by": "jguardon"
        },
        {
            "idx": 12,
            "name": "terco",
            "psswd": "A44E76B7D61BFFA1",
            "perm": 2,
            "active": 1,
            "expires": null,
            "wrkgrp": null,
            "phone": "46455822",
            "email": "mimail@nomail.org",
            "lastlogin": "05/04/2024 16:40:35",
            "currentsession": "192.168.0.131:CD73FA57C9ED2F3A8D8EE128",
            "added_by": "jguardon"
        },
        {
            "idx": 13,
            "name": "jesusg",
            "psswd": "my-super-secure-password",
            "perm": 2,
            "active": 1,
            "expires": null,
            "wrkgrp": null,
            "phone": "5684 05 4053",
            "email": "abcde@fghi.jk",
            "lastlogin": null,
            "currentsession": "",
            "added_by": "jguardon"
        }
    ]
}


Mediante este código es muy fácil convertirlo en objetos de gambas3. De hecho se usa todo el rato Json.Decode() y JSON.Encode() para transicionar de json a colecciones y viceversa:


Código:
Dim cResp as New Collection

cResp = JSON.Decode(CR.getResponse())

    If cResp["status"] = True Then
       
        ' hacer algo con cResp["users"]
        ' para visualizarlo en un gridview

    Endif


Esos datos en JSON provienen de la base de datos en el servidor. 'idx' es el índice y clave primaria autoincrement, pero sabemos que tras borrar e insertar nunca van a ser consecutivos, por lo que no se pueden iterar usando ese índice.

Por cierto, si alguien quiere "bichear" la aplicación del servidor CGI, la tengo en GitLab, está un poco chapucera, no controla posibles errores y es muy simple, pero es parte de mi propio aprendizaje en el mundo de Gambas CGI. Se puede depurar en el IDE usando el navegador incrustado (que no va mostrar nada porque no va por ahí el JSON) o montarlo en un servidor Apache, Lighttpd o el que más os guste. Yo lo tengo en Lighttpd que es muy ligero y rápido.

https://gitlab.com/jguardon/gambas-cgi-test

La aplicación de escritorio aún no la tengo subida a GitLab, estoy esperando a que al menos funcione el poder mostrar datos en el gridview.

A partir de aquí se abre un mundo de posibilidades para crear aplicaciones profesionales basadas en "la nube", un servidor o como queráis decirle... pero eso sí, siempre usando conexiones seguras SSL.

Saludos y espero vuestros comentarios.
asqw12 03-05-2024, 16:06
Me pueden ayudar con este codigo, 
Lince:  2 a 6 jugadores  Tablero aleatorio en cada ronda de 9 X 8 imágenes, 72 en total  Gana el primero que encuentre 15 imágenes  Se reparten 3 imágenes a cada jugador sin que se repitan, las cuales debe encontrar en el tablero  Cada jugador marca en el tablero las cartas que va encontrando, la máquina debe validar si corresponde la imagen del tablero con la imagen seleccionada.  
Páginas (520):    1 42 43 44 45 46 520   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 265
Último miembro: Morfeo68
Temas del foro: 1,596
Mensajes del foro: 8,342
Últimos temas
Antiguo foro. ¿ Viable ?
Foro: Sobre gambas-es.org
Último mensaje por: guizans, 24-01-2025, 20:30
Respuestas: 3 - Vistas: 71
Gambas 3.20
Foro: Instalación
Último mensaje por: Shell, 24-01-2025, 15:36
Respuestas: 14 - Vistas: 406
Ver los repositorios del ...
Foro: Mundo Linux
Último mensaje por: guizans, 23-01-2025, 20:10
Respuestas: 4 - Vistas: 103
¿Cómo crear servidor FTP ...
Foro: General
Último mensaje por: Shordi, 22-01-2025, 12:19
Respuestas: 2 - Vistas: 97
TextEditor. Formateado. E...
Foro: General
Último mensaje por: Shell, 21-01-2025, 14:33
Respuestas: 2 - Vistas: 74
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.