FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Curso virtual implementación IA en nuestras aplicaciones
Posts: 6984
Joined: Fri Oct 07, 2005 07:07 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Wed Feb 26, 2025 11:06 PM

Dear Antonio,

thank you.

Best regards,

Otto

Posts: 163
Joined: Thu Mar 16, 2017 04:08 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Thu Feb 27, 2025 01:07 AM
Estimados; por favor agregarme al webinar con este usuario de Skype: nanoespinoza@outlook.com

Saludos

Fernando Espinoza A.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Thu Feb 27, 2025 03:47 AM
Una vez comenzó el webinar a las 17 pm según lo establecido no hubo forma de agregar a nadie más, por atención a los demás asistentes.

Pedimos diculpas si alguno se quedó fuera, hoy posiblemente publicamos el video completo en youtube y proporcionaremos aqui el enlace.

Al final pudimos cubrir todo el temario en un solo día. Fuimos a buen ritmo y dió tiempo suficiente para todo.

Gracias a todos :!:
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Thu Feb 27, 2025 07:23 AM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Thu Feb 27, 2025 02:28 PM

Buenos dias,

Para los que pagamos el webinar con la ultima versión de FW 32 y 64, estas ya fueron enviadas o se descargan de algun lugar?

Gracias

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Thu Feb 27, 2025 05:13 PM
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Sun Mar 09, 2025 07:51 PM

Buenas tardes,

Como todo el domingo se lo ha pasado lloviendo he tenido tiempo de ponerme a probar con GROK.

Necesitaba construir unas estructuras en C para la lectura de unos chips de Texas Instruments a los que se conectan unos sensores industriales de los del tipo de corriente entre 4mA a 20mA. Aunque no me voy a enrollar con la parte de electrónica.

El caso es, que tenía la idea clara de lo que quería y traté de hacerlo todo a mano aunque como quiera que lo de los punteros y no digamos ya lo de los punteros de los punteros y estructuras anidadas es bastante complicado, después de varias horas, me desesperé y probé, siguiendo las recomendaciones del Master Antonio con GROK.

NO DOY CRÉDITO. ME HA PARECIDO LITERALMENTE CIENCIA FICCIÓN.

Se ha enterado de lo que le preguntaba a la primera, lo ha ido perfeccionando según se lo iba solicitando, y aunque es verdad que algunas veces se quedaba colgado y había que volver a empezar, le metía el código que había ido elaborando, parte mía y parte de Grok y una vez lo analizaba sabía exactamente para lo que lo quería, y podíamos continuar.

No tengo palabras para describir la experiencia, es algo inefable.

Lo que si es cierto, es que uno tiene que saber por donde se está moviendo y las cosas, al menos, te tienen que sonar. No se puede dejar todo en manos de Grok y darlo por terminado, pero la ayuda ha sido muy muy grande y muy técnica. El código te lo devuelve con explicaciones y ejemplos, en fin...tremendo.

Si esto es ahora, que acaba de empezar, no se a lo que va a llegar, para lo bueno y para lo malo. Un poco de miedito también da. Aunque entran auténticas ganas de pillarse uno de esos equipos de nvidia que recomendó Antonio y ponerse a entrenarlo.

Los padres de la Física Nuclear, que sirvió luego de base a otros para la fabricación bomba atómica, llegaron a la conclusión de que lo único que garantizaba la seguridad de que nadie empezaría a usarla era que todos la tuvieran. Me pregunto si estarían también estarían de acuerdo en que el descubrimiento matemático que subyace a esta tecnología del conocimiento deberá también estar en manos de todos, con no pocos riesgos, o habrá unas diferencias entre unos y otros que pueden también ser preocupantes. Tal vez por ello, los padres de la IA digan que hay que parar un poco, aunque todos sabemos que no va a parar nadie (hay muchos dólares y control del poder en juego). Mientras las máquinas no se conecten a un relé y además tengan la decisión de activarlo...

En cualquier caso, una experiencia que ha sido extraordinaria, gracias a la información que Antonio nos ha proporcionado.

Muchas Gracias Antonio.

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Sun Mar 09, 2025 09:22 PM
La siguiente revolución en IA viene de nuevo de China por parte de "Manus":

https://manus.im/

Un agente IA que funciona realmente bien :!: :)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 309
Joined: Wed Mar 28, 2018 04:38 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Tue Sep 16, 2025 03:10 PM
no sé si es el post correcto, pero lo pongo por si a alguien le sirve de ayuda.
Los que utilizáis la IA por el chat de VsCode, si le ponéis en el contexto las clases y funciones de Fivewin, va a tener todo el conocimiento interno del funcionamiento de las clases en su contexto y las respuestas pueden ser "aún más" sorprendentes.
Para hacerlo hay que configurar el setgtings.json de la carpeta .vscode del proyecto así:
"github.copilot.chat.experimental.projectContext": {
    "enabled": true,
    "files": [
      ".vscode/instructions.md",
      ".vscode/copilot-context.md"
    ],
    "directories": [
      "C:/fw/source/classes",
      "C:/fw/source/function",
      "C:/fw/source/winapi"
    ]
  },
También es una muy buena práctica meterle un par de ficheros de instrucciones y contexto para el propio copilot, toda información previa al prompt introducido hace que la respuesta sea más fina y mejor.

Espero que a alguien le ayude.

Salud!
--------

¿ Y porque no ?

¿ And why not ?
Posts: 244
Joined: Fri Oct 28, 2005 06:29 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Tue Sep 16, 2025 04:40 PM

Victor

De donde surgen los archivos de documentacion ".vscode/instructions.md" y ".vscode/copilot-context.md" ?

No sería mejor agregar la ruta de \samples también ?

Me gustaria ver que tal funciona con esta implementacion.

Muchos saludos

Alejandro Cebolido

Buenos Aires, Argentina
Posts: 309
Joined: Wed Mar 28, 2018 04:38 PM

Re: Curso virtual implementación IA en nuestras aplicaciones

Posted: Wed Sep 17, 2025 08:57 AM
Son ficheros de contexto que le ayudan a la IA utilizada en VsCode.
Un instructions.md sobre un proyecto que utilizo ( con mis peculiaridades de ORM, scalar y librerías externas ) sería este:
# Instrucciones para IA - Proyecto 

## Descripción del Proyecto

Sistema desarrollado en **Harbour/xHarbour** con interfaz gráfica **FiveWin** y librerías adicionales por ActiveX **Chilkat** y **Codejock** 

## Arquitectura Técnica

### Lenguajes y Frameworks
- **Lenguaje Principal**: Harbour/xHarbour (dialecto de Clipper)
- **GUI Framework**: FiveWin (framework para Windows)
- **Librerías importantes**: Chilkat y Codejock
- **Base de Datos**: DBF/CDX (dBase compatible)
- **ORM** : ORM Propio
- **Compilador**: Harbour + Borland/Embarcadero C++
- 
### Codificación
- **Codepage**: ESWIN (Windows-1252 español)
- **Caracteres especiales**: Usar funciones de conversión UTF-8 apropiadas
- **Base de datos**: DBF con índices CDX


### Estructura de Directorios

```
proyecto/
│── PRG/             # Código fuente principal (.prg)
├── siclases/            # Clases específicas del sistema
├── clases32/            # Librerías y componentes externos
├── lib32/               # Librerías compiladas
├── inc/                 # Archivos de inclusión
├── sifuncs/             # Funciones del sistema
├── VFuncs/              # Funciones adicionales
└── iconos/              # Recursos gráficos
```
## Convenciones de Código

### Sintaxis Harbour
```harbour
// Definición de función
Function Main(cParametros)
  // código
Return (nil)

// Definición de clase
CLASS TExample
    EXPORTED:
        DATA cProperty AS Character INIT ""
        METHOD New() CONSTRUCTOR
        METHOD SomeMethod()
    PROTECTED:
        DATA lPrivate AS Logical INIT .F.
END CLASS

// Uso de objetos
WITH OBJECT oApp := TGestion():New()
    :Method1()
    :Method2()
END WITH
```

### Convenciones de Nombres
- **Variables**: camelCase con prefijo tipo (`cString`, `nNumber`, `lLogical`, `oObject`, `aArray`)
- **Funciones**: PascalCase (`Main`, `IniciaGestion`)
- **Métodos**: PascalCase (`:New()`, `:BuildMainWindow()`)
- **Clases**: PascalCase con prefijo T (`TApplication`)
- **Modelos**: PascalCase con prefijo M ( `MSeries`)

### Gestión de Errores
- Uso de objetos con propiedades `:Success` y `:Fail()`
- Logs detallados en archivos `.log`
- Mensajes al usuario con `MsgAlert()`, `MsgInfo()`

### Base de Datos
- Modelos de datos con prefijo `m` (ej: `mCliente`, `mFactura`)
- Uso de índices CDX para búsquedas
- ORM propio integrado en `TORMModel.prg`. Documentación del ORM en .\Servicios\Database\ORM2.0\README.md

## 🎯 Estándares de Desarrollo y Mejores Prácticas

### Clean Code Principles
- **Nombres descriptivos**: Variables y funciones deben explicarse por sí mismas
- **Funciones pequeñas**: Máximo 50 líneas por función/método
- **Responsabilidad única**: Cada clase/función debe tener un solo propósito
- **Comentarios útiles**: Solo cuando el código no sea auto-explicativo
- **Evitar código duplicado**: Refactorizar en funciones comunes

### Gestión de Errores Robusta
```harbour
// ✅ SIEMPRE validar parámetros de entrada
METHOD ProcessDocument(oDocument) CLASS TExample
    
    If oDocument == Nil .Or. oDocument:Fail()
        Self:__oReturn:Success := .F.
        Self:__oReturn:Log := 'Documento inválido o no encontrado'
        Return ( Self )
    Endif
    
    // Lógica del método...
    
Return ( Self )
```

### Refactoring Guidelines
- **Extraer métodos**: Cuando hay bloques de código repetidos
- **Simplificar condiciones**: Usar variables booleanas descriptivas
- **Eliminar parámetros innecesarios**: Máximo 3-4 parámetros por función
- **Usar objetos de configuración**: Para múltiples parámetros relacionados

### Testing y Validación
- **Validar datos de entrada**: Siempre verificar tipos y rangos
- **Testing de casos extremos**: Valores null, vacíos, muy grandes
- **Logs detallados**: Para debugging en producción
- **Rollback de transacciones**: En operaciones críticas de BD

### Performance Best Practices
```harbour
// ✅ Usar índices CDX eficientemente
oModel:Find(nID, 'ID')  // Busca por índice principal

// ✅ Cerrar recursos explícitamente
WITH OBJECT oFile := TFileReader():New(cFileName)
    :Process()
    :Close()  // Liberar recursos
END WITH

// ✅ Minimizar consultas a BD en bucles
aClientes := mCliente():New():GetCollection()  // Una sola consulta
FOR EACH oCliente IN aClientes
    // Procesar en memoria
NEXT
```

### Security & Data Integrity
- **Sanitización de inputs**: Especialmente para XML/SQL
- **Validación de permisos**: Verificar acceso antes de operaciones
- **Encriptación**: Para datos sensibles (usar Chilkat)
- **Backup automático**: Antes de operaciones de riesgo

### Code Review Checklist
1. **¿El código es auto-explicativo?**
2. **¿Se manejan todos los casos de error?**
3. **¿Hay código duplicado que pueda refactorizarse?**
4. **¿Las variables tienen nombres descriptivos?**
5. **¿Se liberan correctamente los recursos?**
6. **¿Se respetan las convenciones del proyecto?**
7. **¿Funciona correctamente en casos extremos?**

### Harbour/xHarbour Specific Rules
- **Usar WITH OBJECT**: Para múltiples llamadas al mismo objeto
- **Inicializar variables**: Siempre declarar tipo y valor inicial
- **Gestionar memoria**: Cerrar archivos, liberar objetos grandes
- **Codepage consistente**: ESWIN en todo el proyecto

## Consideraciones Especiales

### Codificación de Caracteres
- Problemas comunes con caracteres especiales (ñ, tildes)
- Usar `hb_StrToUTF8()` para conversiones
- Sanear caracteres de control antes de XML

### Compatibilidad
- Sistema legacy con alta compatibilidad requerida
- Soporte Windows 7/8/10/11
- Integración con hardware específico (impresoras, cajones)

## Tareas Comunes para IA

1. **Debugging de codificación**: Solucionar caracteres extraños en XML/textos
2. **Optimización de consultas**: Mejorar rendimiento de base de datos

## 🤖 Directrices para Asistencia de IA

### Enfoque Obligatorio
- **SIEMPRE** aplicar principios de Clean Code
- **SIEMPRE** sugerir refactoring cuando detectes código duplicado
- **SIEMPRE** validar robustamente errores y casos extremos
- **SIEMPRE** considerar el rendimiento y la memoria

### Al Analizar Código
1. **Identificar problemas**: Código duplicado, funciones largas, nombres poco claros
2. **Sugerir mejoras**: Refactoring, optimizaciones, mejor estructura
3. **Validar errores**: ¿Se manejan todos los casos de fallo?
4. **Verificar convenciones**: ¿Sigue el estilo del proyecto?
5. **Considerar mantenibilidad**: ¿Será fácil de mantener en el futuro?

### Al Crear Código Nuevo
```harbour
// ✅ ESTRUCTURA OBLIGATORIA para nuevos métodos/funciones
METHOD ExampleMethod(cParam1, nParam2) CLASS TExample
    
    // 1. Validación de parámetros SIEMPRE
    If cParam1:Empty() .Or. nParam2 <= 0
        Self:__oReturn:Success := .F.
        Self:__oReturn:Log := 'Parámetros inválidos en ExampleMethod'
        Return ( Self )
    Endif
    
    // 2. Variables locales con tipo explícito
    Local oResult as Object := Nil
    Local lSuccess as Logical := .T.
    
    // 3. Lógica principal con manejo de errores
    TRY
        // Lógica aquí...
        
    CATCH oError
        Self:__oReturn:Success := .F.
        Self:__oReturn:Log := 'Error en ExampleMethod: ' + oError:Description
        lSuccess := .F.
    END
    
    // 4. Logging para debugging
    If lSuccess
        Self:__oReturn:Log := 'ExampleMethod ejecutado correctamente'
    Endif
    
Return ( Self )
```

### Prioridades de Sugerencias
1. **🔴 CRÍTICO**: Seguridad, pérdida de datos, errores fatales
2. **🟡 ALTO**: Performance, memoria, casos no manejados  
3. **🟢 MEDIO**: Clean code, refactoring, mantenibilidad
4. **🔵 BAJO**: Estilo, comentarios, optimizaciones menores

### Respuestas Esperadas
- **Explicar el "por qué"**: No solo qué cambiar, sino por qué es mejor
- **Mostrar antes/después**: Código original vs mejorado
- **Considerar impacto**: ¿Afecta a otras partes del sistema?
- **Sugerir testing**: Cómo verificar que funciona correctamente

## Comandos de Desarrollo

### Compilación
```bash
# Compilar
h.bat 
# Compilar con debug
h.bat debug
```
Como verás, la propia IA me ha ayudado bastante a crearlo.
Esto crea un contexto para cada iteración que realizas con la IA, de este modo ella ya sabe mucho sobre el proyecto, no ha de suponer nada y le defines como quieres que actúe.

Este sería un copilot-context.md de ejemplo:
# Configuración de Contexto del Proyecto

Este archivo asegura que GitHub Copilot siempre tenga acceso al contexto del proyecto Completo.

## Archivos de Referencia Obligatorios
- `.vscode/instructions.md` - Guía completa del proyecto 

## Configuración Aplicada
La configuración en `settings.json` incluye:
- Soporte para archivos `.prg` (Harbour)
- Contexto del proyecto habilitado
- Locale en español
- Referencias automáticas a las instrucciones del proyecto

## Uso
Cuando uses GitHub Copilot Chat en este workspace, automáticamente tendrá acceso a:
- Las instrucciones específicas del proyecto
- Convenciones de código Harbour
- Arquitectura del ERP
- Patrones de desarrollo del proyecto
Este aún no lo tengo tan perfilado, es más enfocado al proyecto en sí.

Para que la IA trabaje bien, hay que darle un buen prompt de contexto y donde buscar. La verdad, que desde que utilizo estas configuraciones, las respuestas de la IA y lo que hace en modo agente dentro de VsCode es más sorprendente aún.

Por lo que comentas de poner los samples también, todo ayuda, también se pueden meter las contribs de harbour. O sea, a más info le metas de Harbour y Fivewin, mejor te dará las respuestas en este contexto de Framework. Y si tienes una carpeta con ejemplos, tests o pruebas propios que sean funcionales, también es buena práctica. !Ojo! métele cosas que funcionen, no le metas pruebas que al final no han funcionado o la vas a confundir... :D
--------

¿ Y porque no ?

¿ And why not ?

Continue the discussion