Allanando el camino a los iniciados en Gambas, porque programar en Gambas es un placer!!
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)
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
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/
JEESIE o DEVUAN 1.0:
echo "deb https://download.opensuse.org/
STRECHT o DEVUAN 2.0:
echo "deb https://download.opensuse.org/
apt-get install gambas3
lunes, 7 de mayo de 2018
Gambas web: 1 - Como comenzar con gambas en web
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:Technology | Interpretado? | 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!
FEATURE | Gambas | 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
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.