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:



sábado, 28 de febrero de 2015

Escaleta: Herramienta para representación de funciones de teatro infantil


Escaleta: 

Herramienta para la representación de funciones de teatro infantil


Escaleta, es un programa que ayuda a controlar los efectos de sonido de una obra de teatro. Además facilita el seguimiento del texto que tienen que decir los actores. Ideal para las pequeñas funciones infantiles que representan los niños al final de curso. Permite guardar el texto y los sonidos, en un mismo archivo y presentarlos ordenadamente a medida que avanza el texto.  ¡para que no se lien los profes con tantos archivos de sonidos!.

Podemos reproducirlos desde el programa aplicando efectos de atenuación y añadir notas para facilitar las labores de coordinación (luces, escenarios, entrada de actores, etc)

Escaleta permite añadir los sonidos (y controlar su volumen) 
y nos permite poner comentarios donde nos interese
facilitando la representación de las obras teatrales
Viene  incluido en la distribución minino picaros 2014 (enlace)

Y también lo podeis descargar en este enlace: alojado en google drive




viernes, 27 de febrero de 2015

Plantillas de Curriculum Vitae en formato .odt (el que usan libreoffice, openoffice, etc)


Plantillas de Curriculum Vitae en formato .ODT





Os dejo aqui varias plantillas de curriculum vitae en formato .ODT, el formato  que usan libreoffice, openoffice, etc
  • Plantilla de Curriculum Vitae Cronológico
  • Plantilla de Curriculum Vitae Funcional
  • Plantilla de Curriculum Vitae Combinado
  • Plantilla de Curriculum Vitae Europeo

Os aconsejo que creeis un curriculum orientado a la oferta de trabajo. No valen los curriculum "generales" y que lo mandéis a cualquier oferta de trabajo.

Por ejemplo: 
Si aspiráis a un proceso de selección donde solicitan perfiles comerciales, entonces, crear un curriculum, donde se resalten vuestros cursos y experiencias en ventas. 


Enlace a carpeta compartida de google drive donde están los documentos: enlace



jueves, 26 de febrero de 2015

Truco: Como incrustar y visualizar un documento de google drive en tu blog (o en varios páginas web) y tenerlos siempre actualizados.


Truco: Como incrustar y visualizar un documento de google drive en tu blog (o en varios páginas web) y tenerlos siempre actualizados.

En este articulo os voy a explicar como incrustar y  visualizar un documento realizado en google drive en tu blog o página web, para conseguir que cualquier cambio que hagamos en el original, se repercute en el sitio donde este incrustado.

Como sabeis, google drive podemos crear documentos, hojas de calculo,presentaciones, facilmente desde el menu de Nuevo:

(incluso más tipos de documentos, según las extensiones que tengamos instaladas)

Os voy a comentar como insertar un documento en un blog, para que se muestre y cada vez que se haga una modificación en el documento, también se vea actualizado en nuestro blog o sitio donde lo hayamos insertado:

Abrimos el documento, (en este caso es documento de texto), y nos vamos al menú Archivo (1) y luego a la opción de Publicar en la web (2):

Si pulsamos en esta opción, vemos el siguiente formulario, donde nos tenemos que ir a la pestaña de Incrustar (3), copiaremos el código HTML que aparece (4),  pulsaremos en el botón de Publicar (5) y activaremos el checkbox de publicar cuando haya cambios (6):


De esta manera cada vez que haya cambios en el documento se publicará de nuevo con los cambios incoroporados.

Con el código HTML, que hemos copiado:
<iframe src="https://docs.google.com/document/d/XXXXXXXX/pub?embedded=true"></iframe>
, lo pegamos en nuestro sitio web. Ahora si lo visualizas, queda un poco feo (pequeño y sin bordes)


Vamos a mejorarlo un poco para cambiarle el tamaño y añadir un borde:

<iframe frameborder="1" src="https://docs.google.com/document/d/XXXXXXXXX/pub?embedded=true" style="height: 850px; width: 750px;"></iframe><br />

De esta forma conseguimos que quede del tamñao 850x750 , borde y  sus barras de desplazamiento  borde incluidas:
http://mapbdvistas.blogspot.com.es/p/noticias.html


Lo que más me gusta de esto, es que podemos publicar en varios sitios el documento, y solo cambiando el original (desde google drive), se actualizarán en todos los demás lugares.


Saludos

sábado, 21 de febrero de 2015

Desarrollo de simple juego didáctico: Preguntas sobre un mapa


Desarrollo de simple juego didáctico: Preguntas sobre un mapa



En este artículo desarrollaré un simple juego didáctico, que tratará sobre preguntas sobre un mapa (se puede usar también cualquier tema, por ejemplo sobre un dibujo de anatomía, etc). El objetivo del programa es ir colocando un botón en distintos sitios del mapa, y  se hacer una pregunta referida a donde esta el botón situado.


Bien empezamos:
Vamos a hacerlo sobre un mapa de Andalucía, y preguntar el nombre de las provincias.
1) Partimos de este mapa:


2)  Vamos a tomar los datos que necesitamos:
2.1) Nos preparamos la siguiente tabla, con los datos donde vamos a colocar el botón (las coordenadas) , preguntas y respuesta.


Posicion del botón

indice x y Pregunta Respuesta
0 156 323 ¿cual es el nombre de la provincia? Cádiz
1 40 180 ¿cual es el nombre de la provincia? Huelva
2 166 193 ¿cual es el nombre de la provincia? Sevilla
3 289 291 ¿cual es el nombre de la provincia? Málaga
4 556 260 ¿cual es el nombre de la provincia? Almería
5 420 253 ¿cual es el nombre de la provincia? Granada
6 437 127 ¿cual es el nombre de la provincia? Jaén
7 262 119 ¿cual es el nombre de la provincia? Córdoba


Nota:
Las coordenadas x e y de la tabla, las puedo obtener viendo el cursor en gimp cuando me desplazo por el mapa.




2.2) Al mapa que tengo, le voy a borrar los nombres, eso lo puedo hacer con Gimp:

He usado la "herramienta de clonado" de gimp, y queda muy bien :)

3) En el siguiente esquema podemos ver lo que tiene que hacer el programa:





4) ¿como introduzco los datos de posiciones y preguntas y respuestas en el programa?
4.1) Vamos a usar arrays de point (http://gambaswiki.org/wiki/comp/gb.qt4/point?l=es), para guardar las coordenadas x, e  y. Esta la usaremos para saber donde tengo que colocar el botón de pregunta.
Public ArrayCoordenadas As New Point[] 'array de coordenadas del botón pregunta
4.2) Vamos a crear una estructura de datos para almacenar la pregunta y respuesta:
Public Struct PreguntaRespuestas
  preguna As String
  respuesta As String
End Struct
Y crearemos un array de la estructura "PreguntaRespuestas", para manejar los datos:
Public ArrayPyR As New PreguntaRespuestas[] 'array de datos de preguntas y respuestas
4.3) Crearemos un subrutina  para introducir los datos de la tabla, en nuestras estructuras de datos:

Public Sub cargodatos()
Dim datopoint As New Point

Dim datotmp As New PreguntaRespuestas

datotmp.preguna = ("¿cual es el nombre de la provincia?")

datotmp.respuesta = "Cádiz"ArrayPyR.Add(datotmp) 'el 1º dato es cadiz

datopoint.x = 156

datopoint.y = 323

ArrayCoordenadas.Add(datopoint) 'coordenada de cadiz

'---------------------------------

datopoint = New Point 'hago una nueva instancia

datotmp = New PreguntaRespuestas 'hago una nueva instancia
datotmp.preguna = ("¿cual es el nombre de la provincia?")

datotmp.respuesta = "Huelva"

ArrayPyR.Add(datotmp)
datopoint.x = 40

datopoint.y = 180

ArrayCoordenadas.Add(datopoint)

......

5) Cuando el usuario haga click en el botón Preguntar, el programa eligirá un numero aleatorio, y mostrará el botón de pregunta en la posicion que indique el array de coordenadas usando el numero aleatorio elegido como indice.

Public Sub ButtonEmpezar_Click()
numero = Int(Rnd(0, ArrayCoordenadas.count)) 'redondeo para obtener un numero entero
ButtonPregunta.x = ArrayCoordenadas[numero].XButtonPregunta.y = ArrayCoordenadas[numero].YButtonPregunta.Visible = True 'muestro el boton de pregunta
End


6) El usuario pulsa en el botón de pregunta.
Usamos el numero elegido aleatoriamente en el paso anterior, para mostrar la pregunta y respuesta (usando como indice el numero aleatorio en el array ArrayPyR[]

Mostramos un formulario para mostrar la pregunta y que el usuario pueda escribir la respuesta.
respuestaUsuario = InputBox(ArrayPyR[numero].preguna)

Si la respuesta es acertada, se lo decimos, sino, mostramos la respuesta correcta:

If Upper$(respuestaUsuario) = Upper$(ArrayPyR[numero].respuesta) ThenMessage.Info(("Muy bien !!! Acertaste"))ElseMessage.Error(("Te equivocaste, la respuesta correcta era:") & "\n" & ArrayPyR[numero].respuesta)
Endif


7) Finalmente ocultamos el botón pregunta, y el programa esperará a que se pulse de nuevo el botón empezar para repetir el proceso.

En este video podeis ver el programa en funcionamiento:


Y en este video explico los pasos que he seguido para hacer el programa:
Diagrama de secuencia
Modificación del mapa con gimp (toma de coordenadas, borrado de zonas, redimensionamiento del mapa)
Codificación



Código fuente e instalador .deb del programa: enlace alojado en google drive

Saludos:


Nota:
Hay una mejora que se me ocurrio cuando hice los videos.
En ver de usar un Arrray Point y otro array de estructura PreguntaRespuesta, más simple hubiese sido definir una estructura que tuviera todas las propiedades, algo asi como:

Public struct PreguntasRespuestas
     x as integer
     y as integer
     pregunta as string
     respuesta as string
End struct





viernes, 20 de febrero de 2015

Helptranslator: Herramienta para ayudar a traducir aplicaciones usando google traductor y archivos .po

Helptranslator: 

Herramienta para ayudar a traducir aplicaciones usando google traductor y archivos .po

Cuando creamos una aplicación, siempre intentamos que llegue al mayor número de personas, y para ello añadir traducciones a distintos idiomas. Algunas veces no conocemos el idioma al que queremos traducir la aplicaciones y echamos mano a google traductor, que no  hace una traducción exacta, pero algo podemos  traducir (los textos de botones y frases simples) y  nos puede hacer un apaño o por lo menos tener una traducción "en bruto" que luego tendremos que pulir.
Total, que por lo menos estará traducida "de aquella manera", y siempre alguien nativo o con más conocimiento del idioma, podrá ver la aplicación  y comentarnos alguna mejora en la traducción.


NOTA: 05/10/2016
Nueva Version 0.0.9 en http://jsbsan.blogspot.com.es/2016/10/nueva-version-helptranslator-009.html





Introducción de aplicaciones / plantillas wordpress / etc.
Voy a hacer una pequeña introducción de que herramientas tenemos para realizar la traducción de las aplicaciones:
En otros lenguajes de programación / wordpress / etc. el propio ide o plugins se encargan de crear archivo los .pot y/o .po y con la herramienta poedit, podemos hacer la traducción.

Poedit

En gambas3 tenemos en el propio IDE un formulario propio para  traducir a otros idiomas. Internamente (en la carpeta .lang del proyecto), genera archivos .pot, .po (y .mo) con lo que se traduce la aplicación.

Formulario de traducción de aplicaciones en Gambas3

Como podeis observar,el formulario entre el poedit y el ide de gambas3 es muy parecido, a la hora de trabajar con las traducciones

¿Que aporta Helptranslador?
Nos facilita la traducción "en bruto" de todas las frases de los archivo .po, usando google traduce (o otro servicio de traducción automático).

Lo usamos de la siguiente manera:
1) Le decimos que archivo .po del idioma que queremos traducir (debe de estar creado)
2) Pulsamos un botón, que se encarga de extraer todas las frases a traducir y las copia al portapapeles
3) Nos vamos al navegaror web, a  la página web de google traduce, pegamos el contenido del portapapeles. Elegimos el idioma y lo traducimos.
4) Copiamos lo traducido por google traduce al portapapeles del navegador web.
5) Pegamos el contenido del portapapeles en el textbox amarillo de la aplicación helptranslator
6) Pulsamos al botón de "Añadir Traducción", para que el programa  cree el archivo .po con las frases traducidas ya añadidas. Y listo !!!, ya tenemos las frases incluidas en el archivo .po que hayamos usado.


7) Consejo final:
Una vez obtenido el archivo .po, con las frases ya traducidas "en bruto", hay que revisar las traducción, ya que google traduce (u otro traductor automático), comete errores o no traduzca correctamente, según el contexto.

Os dejo un par de videos de como se usa la aplicación:









Enlace de descarga de archivos de instalación y código fuente: 
https://cursogambas.blogspot.com/2022/01/programas-completos-y-ejemplos-del.html

Nota:
 Limitaciones de esta versión:
1)Solo se traduces palabras y frases. No se traducen textos largos. Por ejemplo si usamos un labeltext, un ponemos varios renglones (usando \n), no se traducen esas frases.

2)Es necesario generar el archivo .po.
En poedit, se generan a traves del .pot y en gambas3 se generan desde el IDE de programación, como se explica en el video.

Si hay muchas frases para traducir:  es posible que en la página de google translate no las traduzcas todas. En ese caso podemos crear una página web (en un blog de blogspot, o alojamiento gratuito), y pegar en el cuerpo (entre las etiquetas <body>  y </body> ) las frases a traducir, publicar esa página e irnos al google traduce y darle la direción de la pagina web, para que nos traduzca la pagian web completa. Luego seleccionamos el texto traducido y lo pegamos en el programa helptranslator.


Notas:
25/04/2015: Corregido problema con msgid_plural
22/02/2015: Gracias al aporte de  Didier, se ha mejorado la traducción al Francés del programa.
23/02/2015: Gracias al aporte de Vuott, se ha mejorado la tradución al italiano del programa.
25/02/2015: Gracias al aporte de Portano, se ha añadido la traducción al portugués al programa.
03/03/2015: Se pone por defecto que no se machaque las lineas que esten ya traducidas (version 0.0.7)

miércoles, 18 de febrero de 2015

TRUCO: Crear un programa para rellenar un impreso y convertirlo en pdf( 2º parte)

TRUCO: 

Crear un programa para rellenar un impreso y convertirlo en .pdf (2º parte)


En la entrada de la 1º parte  (enlace), explique como rellenar un impreso y convertirlo a formato  .svg


En el siguiente video tienes la explicación:



Ahora vamos a ver dos cosas más:
1) Como rellenar varias lineas
2) Como convertir el archivo .svg en formato .pdf

Vamos a ello:

1) Rellenar varias lineas.
Si necesitamos rellenar un texto largo, lo suyo es que por cada linea pongamos un código. En la siguiente captura vemos que en la plantilla .svg, he añadido varias DatosObservacionesXX ( DatosObservaciones01,DatosObservaciones02,DatosObservaciones03) para poder asi tener 3 lineas a rellenar


En el formulario del programas lo que haremos es tener un textbox por cada linea que queramos rellenar.

Nota:
Se podria tener en cuenta el limite de caracteres que nos caben en una linea y avisar al usuario que no lo supere, pero esto depende mucho  del tipo de letra y tamaño que tengan en la etiqueta del .svg.


2) Como convertir el archivo .svg en formato .pdf
 Para convertir el archivo .svg a .pdf, tendremos que usar el programa
rsvg-convert , que se instala de la siguiente forma:

$ sudo apt-get install librsvg2-bin

La linea en gambas seria:

 Shell "rsvg-convert -f pdf -o /tmp/rellenado.pdf /tmp/rellenado.svg" Wait

Os dejo aqui el código completo:


' Gambas class file

Public Sub _new()

End

Public Sub Form_Open()

End

Public Sub ButtonRellenar_Click()

Dim contenido As String

contenido = File.Load("plantilla.svg")

contenido = Replace(contenido, "DatoNif", TextBoxNIf.text)
contenido = Replace(contenido, "DatoNombre", TextBoxNombre.text)
contenido = Replace(contenido, "DatoMunicipio", TextBoxMunicipio.text)
contenido = Replace(contenido, "DatoProvincia", TextBoxProvincia.text)
contenido = Replace(contenido, "DatoObservacion01", TextBox1.text)
contenido = Replace(contenido, "DatoObservacion02", TextBox2.text)
contenido = Replace(contenido, "DatoObservacion03", TextBox3.text)

File.Save("/tmp/rellenado.svg", contenido)

Shell "rsvg-convert -f pdf -o /tmp/rellenado.pdf /tmp/rellenado.svg" Wait

'Nota: Tienes que activar el compoenente gb.desktop
'y tener instalado librsvg2-bin
'con el siguiente comando:
'sudo apt-get install librsvg2-bin
Desktop.Open("/tmp/rellenado.pdf")

End


Enlace de descarga del codigo fuente: alojado en drive google


Fuentes:
Conversión de .svg a .pdf: enlace

domingo, 15 de febrero de 2015

Gambas3: Simulación Física. Péndulo Caótico.



Gambas3:

 Simulación Física. Péndulo Caótico.


Os dejo un ejemplo de simulación física, realizado en Gambas3, de un péndulo caótico o también llamado péndulo doble.
Es una adaptación de un programa realizado yabasic en que he encontrado en el siguiente enlace, realizado por E. MARAZ & O. BURGOA de la Facultad de Ingeniería y Arquitectura - La Paz. (Universidad Privada Boliviana)

 "Para realizar la simulación usan las ecuaciones de Euler-Lagrange que describen el movimiento de un péndulo doble correctamente y el método numérico numérico de Runge Kutta para simularlo."



 

Con gambas he creado un formulario, donde fácilmente podemos cambiar los datos de inicio: longitud, masa, velocidad, ángulo, de los dos péndulos y ejecutar la simulación.


Uso un control timer, para hacer el recálculo de las posiciones y refrescar las gráficas.

Para representar la trayectoria del péndulo 2 (el rojo) y los ángulos 01 y 02, se van almacenando en arrays estos datos durante la realización del cálculo.



Podremos ver una gráfica de  como se mueven los péndulos y la trayectoria del pendulo 2 (el rojo) y en otra gráfica vemos los valores de los ángulos 01 y 02.



En el siguiente vídeo podeis ver el funcionamiento del programa:




Nota:
No lo comento en el video, pero si poneis la masa del pendulo 1 como 0.00,  el sistema funciona como un único péndulo.


Enlace de descarga: instalador y código fuente alojado en google drive

Fuente:
http://www.scielo.org.bo/scielo.php?pid=S1562-38232014000200005&script=sci_arttext
http://scienceworld.wolfram.com/physics/DoublePendulum.html

sábado, 14 de febrero de 2015

Businnes Intelligence Aplicado a la Liga de Futbol: Tablero Futbolero

Businnes Intelligence

 Aplicado a la Liga de Futbol: 

Tablero Futbolero


En el anterior artículo, hablé sobre una película  que trata de B.I. aplicado al beisbol. Hoy os traigo un ejemplo B.I. aplicado a otro deporte, el fútbol, en concreto a la liga de España. Es una página web donde podemos navegar por cientos de datos de distintas temporadas, equipos, evaluación de jugadores, resultados, ranking, etc...


http://www.tablerofutbolero.com/
Os dejo varias capturas:
Resultados hasta la jornada 22


Datos de la Jornada nº 22: Métricas por equipo, jugadores, estadísticas

Análisis de un partido
Ranking
Espero que os guste navegar por esta web :)



Fuente:
http://todobi.blogspot.com.es/2010/10/tablero-futbolero-2010.html
http://www.stratebi.com/