Trucos sobre manejo de softwarelibre y gnu linux. También a los programas que hago en gambas3, python, java, etc.... Consejos y trucos sobre otros programas: excel, word, internet, instalación de programas, Arduino y demás....
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:
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)
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
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.
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.
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:
PublicSubcargodatos() DimdatopointAsNewPoint
DimdatotmpAsNewPreguntaRespuestas
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=NewPoint'hago
una nueva instancia
datotmp=NewPreguntaRespuestas'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.
PublicSubButtonEmpezar_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.
Si la respuesta es acertada, se lo decimos, sino, mostramos la respuesta correcta:
IfUpper$(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
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
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.
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:
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)
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 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 yabasicen 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.
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...