lunes, 2 de julio de 2018

Crear un espacio en un Menu (truco by amigo)




Nunca necesitaste un espacio en el editor de Menú para colocar entre items?

En mi caso surgió de la necesidad de que en una opción del menú no fuera clicleado por accidente, por estar una opción pegado a la otra,  pero en el editor de Menú no hay opción para eso.

Pues bien un amigo que de vez en cuando le gusta codear algo de gambas se le ocurrió una idea para solventar la falta de una opción para dejar un ítem vacío
 (no hablo de un separador)

Se logra haciendo un ítem común, cuando arranca el programa en el evento open cambiamos la propiedad caption por el carácter Chr(10) y guala!!, el espacio se visualiza.



domingo, 17 de junio de 2018

Catch (gestión de errores)

Esta instrucción indica el comienzo del código de gestión de errores de una función o procedimiento.
Cada zona "catch" se ejecuta cuando ha ocurrido un error entre el principio de la función y su final. El error puede ser disparado por la misma función, o por otra función que haya sido llamada durante su ejecución, siempre que la función llamada no tenga su propia zona "catch": cuanto más cercana al error es la zona "catch", más prioridad tiene.
Si un error se dispara durante la ejecución de la zona "catch", se propaga normalmente. ¡Esta zona no cubre sus propios errores!
Si existe una zona "finally" en la función, debe preceder a la zona "catch". Véase FINALLY para más detalles.

CATCH

SUB Function ( ... )
  ...
CATCH
  ...
END


En la imagen tenemos un código super simple sobre Catch.
Con Kill que es un comando para eliminar archivos o carpetas,
provocamos un error a propósito a fin de ver como funciona Catch.
Como observamos el archivo que se indica entre comillas no existe por tanto
dará un error que hará que todas las lineas después del Catch se ejecuten.
Si pusiéramos una carpeta o ruta de archivo existente el error no se producirá no ejecutándose ninguna linea de código después del Catch.

Algo muy importante de Catch, sino esta hará que nuestro programa se cuelgue haciéndole perder tiempo y trabajo al usuario que usa nuestra aplicación.

En cambio estando Catch aún sin lineas de código después de el nuestra aplicación no se colgará un detalle de importancia que no viene explicado en las informaciones sobre Catch.

Por ejemplo en el programa VisorRV1960 últimamente estoy usando este tipo de código en rutinas nuevas que no se bien como funcionarán y me cubro con Catch para no molestar y fastidiar al usuario del programa si hubiera un error (que provocará que el programa se cierre y que el usuario pierda su trabajo actual)



1- Es una linea que guarda en un archivo de texto la información del error.
2- Es un línea que lanza una ventana e informa al usuario del error.
El usuario podría reproducir el error y hacer una captura de pantalla e informar del error al programador para su posterior corrección.

Bueno espero que les sirva para sus proyectos y experiencias de iniciación en gambas. Saludos y comenten.

Enlaces a páginas, blog etc sobre Gambas



Aquí iré agregando enlaces o link de páginas web, blogs etc.
si tienes enlaces conocidos o no, que no estén en este post publicado en un comentario y lo iremos agregando.

En español:

Página principal de Gambas
http://gambas.sourceforge.net/es/main.html

Foro Nuevo:
https://www.gambas-es.org/index.php

Foro Antiguo de solo lectura:          (nuevo)
https://foro.gambas-es.org/

https://cursogambas.blogspot.com/

Pablo Mileti, algunos tutoriales en pdf
http://www.mileti.com.ar/apuntes.html


https://www.lawebdelprogramador.com/cursos/Gambas/index1.html

Página de retos de programación
http://www.solveet.com/gambas-solutions

https://gambeando.wordpress.com/


https://gambas.one/gambasfarm/




En otros idiomas:

Página principal de Gambas en ingles esta toda la información más actual. También esta en otros idiomas completos o no según el trabajo de los traductores.

http://gambas.sourceforge.net/en/main.html

Gambas Mailing List
http://lists.gambas-basic.org/listinfo/user

https://gitlab.com/gambas/gambas


playground

http://gambas.one/playground/examples.html


piga.tropicalwikis.com/wiki/Gambas_Examples


Foro italiano
http://www.gambas-it.org/smf/index.php

Foro alemán
https://www.gambas-buch.de/doku.php?id=start

Foro francés
http://www.gambaslinux.fr/

Código fuente de muchos proyectos
http://www.gambasforge.org/forge.html

Indonesia
http://gambaspi.blogspot.com/



Canales en Youtube:

Alessandri guzman abad
https://www.youtube.com/channel/UCEdI19J6sWOfZe_cdEE7U7g

Julio Sanchez
https://www.youtube.com/channel/UCgImvNl0hUyu8th9r1tpIyg

Fabian Bodard
https://www.youtube.com/channel/UCBt0sxV72FucwvJ6UuswonA

Fabricio Gomero (postapase)
https://www.youtube.com/channel/UCdMJwmAuoB9ecUr0P5l1CsA

Gambas-es
https://www.youtube.com/channel/UCDW7HIv_6xXHuuIYsJwiROw

CORLOMO CF

https://www.youtube.com/channel/UCxaGgo51eB2jgrp0McJfCuA

Seta Seta

https://www.youtube.com/channel/UC5AeDkO2KRAQnoL9qhA4lZg



Si conoces algún link importante sobre gambas que aquí falte menciónalo en un comentario y lo agrego, gracias.

domingo, 13 de mayo de 2018

Gambas 3.11 para Debian 8/9 y Devuan 1.0/2.0

Paquetes para Gambas 3.11 en Debian y Debuan listos para usar

https://software.opensuse.org//download.html?project=home%3Avegnuli%3Agambas&package=gambas3#manualDebian

Devuan 1 (jessie) es igual que Debian 8 (jessie) (same as Venenux 1.0)

Devuan 2 (ascii) es igual que Debian 9 (strecht) (same as Venenux 2.0)

Debian 7 has no packages yet due some problems with dependences..

El repositorio funciona y se han probado sin embargo para wheeze se estara tambien trabajando en uan mejora y tener los paquetes.

LAs instrucciones faciles, tal como dice el enlace, agregar el repo, apt update, apt install gambas3 no hay mucha ciencia..

Se acabo las winbuntadas de PPA al fin un repo con gambas al dia para la distro madre y regidora de el mejor linux..

NOTA: si la pagina no lista como instalarlo aqui a mano:

WHEEZE:

echo "deb https://download.opensuse.org/repositories/home:/vegnuli:/gambas/Debian_7.0/ ./" > /etc/apt/sources.list.d/
gambasvenenux.list
apt-get install gambas3

JEESIE o DEVUAN 1.0:

echo "deb https://download.opensuse.org/repositories/home:/vegnuli:/gambas/Debian_8.0/ ./" > /etc/apt/sources.list.d/
gambasvenenux.list


STRECHT o DEVUAN 2.0:

echo "deb https://download.opensuse.org/repositories/home:/vegnuli:/gambas/Debian_9.0/ ./" > /etc/apt/sources.list.d/gambasvenenux.list

apt-get install gambas3

lunes, 7 de mayo de 2018

Gambas web: 1 - Como comenzar con gambas en web

Fuente, mi propio articulo par la wiki http://gambaswiki.org/wiki/howto/getstartedwebgambas
ACTUALIZACION: en la wiki se esta trabajando en otro articulo y hay tambien otra entrada .. se traducira y habra nuevas buenas aqui pronto.

Introducción


Aquí hay una breve información sobre cómo iniciar y usar un sitio web de Gambas, sobre los requisitos necesarios y cómo acceder a ellos. Tenga en cuenta que la prueba de la página web dentro del IDE no es la misma que cuando se llama desde el navegador, porque el IDE, cuando se ejecuta, usa su propio servidor web incorporado con el código interpretado.

Use el directorio del proyecto como el programa para compilarlo e incrustarlo en el servidor web "real".


Illustrating the equivalents

Gambas en tecnologias web ofrece lo mismo que los otros:
TechnologyInterpretado? Compilado?
Gambas gbs files (gambas3-scripter) gb programs (gambas3-runtime)
Java jsp (Javas server pages) servlets (Java Enterprise)
PhP php/phtml (php-cgi/php-fpm) precompiled external extension
.NET asp (active server pages) COM ( CLR runtime)

Conceptos preliminares


La tecnología web de Gambas se proporciona para producir web 2.0 (contenido dinámico y también interactivo).

Hay dos formas de producir y/o procesar contenido web html dinámico o html estático: Interpretado y/o precompilado.





En la web esto se produce usnado dos conceptos principales: el request (Request en la wiki gambas) y el response (Response wiki gambas),  estos conceptos son primordiales y se asumiran que los comprende, se les conoce como el par "peticion-respuesta" y el punto de vista de quien es quien depende de donde se piden los datos. El contenido web es lo que se muestra en la "respuesta" (por lo general salvo excepciones).

El contenido web se produce con la ayuda de un servidor web, utilizando siempre CGI, anunciando directamente el programa precompilado o como envoltorio para el intérprete de Gambas a través del código de secuencia de comandos.

Independientemente de la forma en que el servidor entrega la página web del documento, sea interpretado o compilado, todo el tiempo se utiliza el concepto CGI. El programa en si es el CGI:

¿Qué es CGI ?:


Common Gateway Interface (CGI) ofrece un protocolo estándar para que los servidores web ejecuten programas como aplicaciones de consola (también llamados programas de interfaz de línea de comandos) que se ejecutan en un servidor que genera páginas web dinámicamente. Dichos programas se conocen como scripts CGI o simplemente como CGI. El servidor no determina cómo se ejecuta la secuencia de comandos.

Basicamente el programa CGI toma la peticion y emite una respuesta, esto se explica mas adelante.
Interpreted (as script) gambas3-scripter permits interpret a source files and based on their content as script will render html or not using logic, its only recommended for static content that only need minimal logic, when fails show the source code in webserver, this must be configure using the cgi as wrapper that deliver the request to interpreter.
Precompiled (as cgi) gambas3-runtime gambas3-web permits compiling the program that will be acts as cgi program and produces the html rendering. The ide component was given due install many of the necessary, but in server its not recommended, this must be configured as the handler of the request directly.

Requerimientos

Se requiere aparte del ide Gambas, tener instalado un webserver con capacidad CGI, ademas ajustar para que este pueda mostrar contenido web desde los home del usuario o desde una ruta especifica por ud (y en esta ruta el contenido del proyecto web, etc):

Requerimientos de instalaciónPrimero: ¡consigue Gambas! La forma más fácil es instalar Gambas desde su distribución de Linux.
Despues: ¡conocimiento web! Es necesario comprender REALMENTE los conceptos de "peticion-respuesta", aquí es necesario que esté familiarizado, HTTP se basa en un modelo de solicitud/respuesta, por lo que hay dos tipos de mensajes HTTP: la solicitud (Request) y la respuesta (Response). El navegador abre una conexión a un servidor y realiza una solicitud. El servidor procesa al cliente "realiza una solicitud" y el servidor web "devuelve una respuesta"; entonces los datos se envían y reciben usando los dos métodos HTTP más comunes: GET y POST. Gambas es un RAD (desarrollo rápido de aplicaciones), esos conceptos deben ser muy claros para el desarrollador.Último: ¡el entorno! Necesita un servidor web que brinde verdaderas capacidades de GCI. Nginx no proporciona capacidades reales, necesitará una mayor optimización para configurarlo. Para entornos de producción de alta gama, debe configurarse como un duplicado de otro servidor que proporciona un proxy inverso al servidor web real cgi con el programa cgi de Gambas3.


Tabla comparativa implementacion Gambas web

Desarrollar en Gambas necesita un punto de dirección correcto, por lo que ofrecemos un gráfico rápido para ver las características compatibles con respecto a otras tecnologías.

El desarrollo de las tecnologías web se ha fortalecido desde hace aproximadamente 3 años en los desarrolladores de la comunidad de Gambas, teniendo hoy incluso un componente de diseño gráfico completamente para hacer paginas html dinamicas.

Gambas es sintaxis BASIC, que es obviamente más fácil que cualquier otro lenguaje de programación, eso singifica que es mas rapido y mejor
!

FEATUREGambas Java .NET Python Php
Based Coding Language Basic C++,C Basic,C++ CPython,C Perl,C
Backguard coding compatible always always Breaking API each 4 years Incompatible always
Running On Unix based Any OS Only MS based Almost Any OS Almost Any OS
Web server Any cgi based Tomcat, Jboss, Glassfish, Websphere, Weblogic IIS Apache2, IIS, Lightty, Hiawatta,Ngynx Apache2, IIS, Lightty, Hiawatta,Ngynx
Runtime Gambas Runtime Java virtual Machine Common Languaje Runtime Python runtime Zend Engine
Graphical Designer Gambas IDE Eclipse thirparty .NET IDE Not Not
Web Components gb.web, gb.http, gb.web.feed, gb.util.web, gb.curl EJB, JSP, JSF, Spring, GWT ASP, Spring, COM Many php-cgi, php-fpm, php-curl, php-sockets, more..
Web frameworks Gambasforge Spring, Struts, GWT Buil-in Django,CubicWeb Codeigniter, Lavarel, Symphony
DBMS Data Access ODBC, MySQL, SqLite, Postgres JDBC: Oracle, Sybase, MSSQL, MySQL, Sqlite, DB2, etc ADO.NET-oleDB, ODBC PyODBC: ODBC php-odbc, Php-pysql, php-sybase, php-pgsql, php-sqlite
DBMS Data Mapping Jbsan MapBD Hibernate, Dozer, Commons, Mapstruts, ModelMapper ADO.NET Django, Pandas Codeigniter, Kohana, Doctrine
Web services gb.xml Build-in Buil-in Add-on (many) php-soap, php-xml
Mobile native not yet Androit SDK Xamarin(MOno) Kivy, BeeWare Not possible
Unit Tests By own JUnit NUnit,MSUTF PyUnit PhpUnit
 

Empezar a codigicar web gambas

Gambas es un software RAD por lo que supondrán que usará el IDE, debido a que siempre puede usar un editor de texto normal y luego compilar el programa cgi a mano en la consola.

Codificando y el IDE gambas

Habiendo instalado Gambas:
  • En el terminal ejecute el comando "gambas3.gambas" o desde menu
  • Al abrir el IDE Gambas seleccione y click a "New project...".
  • Escoja el tipo "Create a application web gb.web", y click siguiente
  • Escoger un directorio donde colocar la raiz del proyecto, y sig..
  • Ingresar el nombre del proyecto, sin espacio y sin capitalizacion...
  • Cierre la ventanita de "tips" del dia y se abre tres componentes
Esto inicia un módulo principal que cuando compila renderiza una página (que se coloca por defecto).



Codigo y sintaxis web gambas:

Igual que JSP, PHP o ASP: super familiar y parecido, pero ojo eso solo si es interpretado, al abrir el prjecto un archivo de este tipo esta por defecto:

Main.class
Este usa sintaxis interpretada, no debe hacer programas sensibles en esta sintaxism, porque cuando el interprete falla muestra el codigo fuente completo al navegador.

Probar el Main interpretado

Esto es facil pulsar F5 ejecutara el servidor web embebido (desde gambas 3.6 solamente, antes habia que hacerlo a mano).

El navegador web instalado arrancara por defecto y mostrara la salida que pinta el "Main.class" de el directorio seccion "Fuentes.

Habilitar el diseño grafico:


Hasta la version 3.9 el IDE al crear el proyecto no automatiza la creacion grafica de componetes web, esto lo habilitamos a mano dando click en el proyecto y despues en propiedades, alli seleccionamos gb.form.web y aceptar. 
QUE CAMBIA? bueno que haora podemos crear un nuevo tipo de form, llamado webform que veremos en el siguiente seccion abajo:




Crear y diseñar graficamente un nueva vista web:

FAcil una vez habilitado en nuestro proyecto web damos click derecho sobre el directorio seccion de Fuentes, alli seleccionamos del menu contextual Nuevo, y en la lista si habilitamos correctamente el modulo aparecera la opcion de Webform:


Un webform es un formulario igual que otros gambas, pero su lista de eventos y de controles es menor dado la naturaleza web del objetivo final.


CONCLUSION:


Por ahora esto es todo, en la siguiente articulo del curso aprenderemos entender como pintar y hacer el programa cgi propiamente, ya que al igual que php, todo el codigo html se debe pintar desde el programa, a menos usemos el webform donde solo añadimos el codigo que altera el comportamiento.