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:



martes, 31 de enero de 2017

Accesibilidad: Talkback o modo audiodescrito para ciegos en moviles




Accesibilidad:
 Talkback o modo audiodescrito para ciegos en moviles
Activar / Desactivar




Hoy os cuento una anécdota, que me ha pasado con una compañera de trabajo y su móvil. Sin darse cuenta anoche activo el modo TALKBACK, de su móvil samsung con sistema operativo android.
El caso es que no sabia desactivarlo, y estaba escuchando todo el rato la voz describiendo lo que hacia (pulsar opciones de teclado, elegir aplicaciones y abrirlas, etc...). Pero no encontraba la forma de "desplazarse"  por el menu de Ajustes , para encontrar la opción de accesibilidad y desactivar esta función TALKBACK...  el caso es que esta mañana le ha estado preguntado a los compañeros del trabajo, y  tras una pequeña búsqueda en internet hemos encontrado como son los gestos para moverse en los menus y aplicaciones con el modo Talkback activado... Resulta que si arrastras la pantalla con 2 dedos, ya se puede hacer el scrolling (o desplazamiento) de la aplicación y/o menús que estés usando... 




Una vez sabido esto, ya  pudimos entrar en Ajustes/Accesibilidad/Talkback y desactivarlo...

¡¡ OBJETIVO CONSEGUIDO !!




Fuente:
http://www.lg.com/es/posventa/microsites/movil/funcion-talkback

sábado, 28 de enero de 2017

[Java] Mi primera utilidad PegaRuta

[Java] Mi primera utilidad

PegaRuta



Necesitaba hacer un pequeño programa que facilitara la copia de archivos a una ruta temporal.


El caso es que tenia que tenia que funcionar en Windows, con lo cual tenia dos alternativas: Hacerlo en Java o en Python

Como hay mucha documentación sobre java, me decidí por este último.

El programa debía leer una ruta de un archivo "pegada" en el portapapeles,  y hacer una copia del archivo en un directorio temporal.

Para leer el portapapeles, use este código:
 Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
 Transferable t = cb.getContents(this);
// Construimos el DataFlavor correspondiente a String.
DataFlavor dataFlavorStringJava = new DataFlavor("application/x-java-serialized-object; class=java.lang.String");
// Si el dato se puede obtener como String, lo obtenemos
if (t.isDataFlavorSupported(dataFlavorStringJava)) {
 String texto = (String) t.getTransferData(dataFlavorStringJava);
}

Y Para la copia del fichero:
File FicheroOld=new File(texto);
                     
// copiamos el archivo a ruta temporal
// cambiando el nombre
                 
String separador = System.getProperty("file.separator");
                     
Path rutafin = Paths.get(separador + "tmp"+ separador + FicheroOld.getName());
                     
Files.copy(Paths.get(FicheroOld.getPath()),rutafin);
Nota:
Fijaros en la variable "separador", que va a variar si el sistema es linux o windows




Alojado en: https://github.com/jsbsan/pegaruta

[web] Poner anuncios de google adsense en wix (wixsite.com)



[web] Poner anuncios de google adsense en  wix (wixsite.com)

Me han pedido que haga un video explicando como poner anuncios de google adsense en las páginas hechas con wix (wixsite.com). Esta es una plataforma donde podemos hacer páginas web muy facilmente, "arrastrando y colocando" elementos, en la plantillas que elijamos. Os dejo el video explicando como insertar anuncios de google adsense en esta plataforma:







Y esta es la página web que he creado, donde se pueden ver los anuncios insertados:

http://zufrearacena.wixsite.com/misitio-1

Saludos

sábado, 21 de enero de 2017

kde: Organizar Automáticamente las ventanas de las aplicaciones abiertas.

kde: Organizar Automáticamente las ventanas de las aplicaciones abiertas.


Como ya sabeis, últimamente estoy usando KDE, pero echaba de menos alguna forma de poner las ventanas que tenia abierta de las aplicaciones en modo Mosaico (que se quedaran organizadas automáticamente cuando se abrían). Pues en el canal de telegran de kde en español ( https://t.me/kde_canasbravas ), me han dado varias pistas de como hacerlo.

Os dejo un video, donde explico como instala desde el fomulario de  "preferencias del sistema" y el uso el pluging Tiling para la organización de las ventanas en mi escritorio:





Nota para otros escritorios:
Otra aplicacion similar  es  xtitle pero en KDE, no llega a funcionar.


Como curiosidad os dejo el código fuente de este pluging:
https://github.com/faho/kwin-tiling





lunes, 16 de enero de 2017

Como se hizo.... MicroComando extraepaginapdf



Como se hizo.... MicroComando extraepaginapdf


Os dejo un pequeño video donde comento el código fuente de este programa que extrae las paginas de un pdf, usando por debajo de él, el programa pdftk:









Nota:
Para la descarga del programa visita este enlace:
 http://jsbsan.blogspot.com.es/2017/01/desarrollo-terminal-microcomandos.html


Saludos


domingo, 15 de enero de 2017

[Desarrollo Terminal]: MicroComandos hechos en gambas3

[Desarrollo]: 

MicroComandos hechos en gambas3


Aunque el punto fuerte de gambas3, es realizar aplicaciones gráficas de forma muy rápida, también podemos desarrollar aplicaciones para la terminal. En este artículo os traigo un ejemplo de ello.



El problema:
Se me plantea esta semana un trabajo donde tengo que trabajar con varios pdf y que debo de "trocear" (extraer páginas) de ellos. La solución inicial, es usar el comando pdftk, por ejemplo:

Si quiero extraer desde la página 52 hasta la 57 (ambas inclusive) del pdf "origen.pdf", y guardarlas en el archivo "salida.pdf", el comando seria así:

$pdftk A=origen.pdf cat A52-57 output salida.pdf

¿y si creo un comando más simple (más corto) para hacer lo mismo? Por ejemplo, algo así como:

$extraepaginapdf 52 57

Este comando, buscaría el primer archivo .pdf que se encuentre en el directorio actual, le extrae las páginas desde la 52 hasta la 57, y genera un archivo salida.pdf.

Bueno, pues lo he creado para que por defecto funcione así. Además tiene la opción de ponerle un nombre distinto al archivo de salida.

Os dejo un video para que veais como funciona:




Enlace de descarga: alojado en google drive




Fuentes:
http://jsbsan.blogspot.com.es/2016/12/terminal-modificar-archivos-pdf-con.html
https://fortinux.com/tutoriales/linux-2-tutoriales/tutorial-extraer-paginas-de-archivos-pdf-con-pdftk-en-linux/

viernes, 13 de enero de 2017

[Software Libre]: Inkscape

[Software Libre]: Inkscape



Inkscape es un editor de gráficos vectoriales gratuito y de código libre. Inkscape puede crear y editar diagramas, líneas, gráficos, logotipos, e ilustraciones complejas. El formato principal que utiliza el programa es Scalable Vector Graphics (SVG) versión 1.1.

Cursos de Inkscape:  1/52



Otro: Ilustración fácil con Inkscape (1/10)




Medium banner says Support Inkscape

fuentes:
https://inkscape.org/es/
https://inkscape.org/es/aprende/tutoriales/
https://inkscape.org/es/aprende/videos/
https://inkscape.org/es/ayudanos/donar/
https://es.wikipedia.org/wiki/Inkscape
https://es.wikipedia.org/wiki/Scalable_Vector_Graphics

domingo, 8 de enero de 2017

Como se hizo.... Gplanet

Como se hizo.... Gplanet


He hecho una serie de video tutoriales, para explicar un poco como esta hecho el juego Gplanet  ( enlace ), espero que os guste:




Enlace a la lista de reproducción:

Os dejo una descripción de los videos de la lista:

1.Presentación.Pues eso, presento el juego

2. Explico como descargar el juego (y también gambas3 y git)

3. Hablo de la estructura del proyecto gplanet y la clase Flota

4. Hablo de las clases: Fondo, Planeta y Tablero

5. La IA del juego... como es y como funciona.

6. Eventos: las clases se comunican entre si !!!



Videos:



Saludos







viernes, 6 de enero de 2017

Gracias a mis 500 suscriptores !!!


Gracias a mis 500 suscriptores !!!


Los reyes magos me han traído un pequeño regalo: en el día de hoy mi canal de youtube ha llegado a los 500 suscriptores:

 !! Gracias a tod@s!!!



Este año, la temática del canal seguirá con la publicación de trucos, guías y manuales de uso de programas de softwarelibre, además  seguiré mostrando los programas que vaya realizando en el lenguaje gambas3.





Un saludo, y feliz día de reyes.


miércoles, 4 de enero de 2017

[Nueva Versión]: Lanzado gambas3.9.2

[Nueva Versión]: Lanzado gambas3.9.2


El pasado 1 de enero, Benoit nos ha traido una nueva versión de gambas3, con corrección de errores de la anterior version gambas3.9.1. Hoy mismo se ha actualiado el  PPA.

Para añadir el ppa e instalar gambas3:

$sudo add-apt-repository ppa:gambas-team/gambas3
$sudo apt-get update
$sudo apt-get install gambas3


¿Qué hay de nuevo?
Esta versión corrige la mayoría de los errores graves encontrados desde el lanzamiento de Gambas 3.9.1.

ChangeLogCONFIGURACIÓN
Detectar correctamente la actualización de la base de datos svn para generar el archivo de la versión del tronco.

ENTORNO DE DESARROLLO
  • Opcionalmente, cargue el componente gb.inotify.
  • Cliente de la granja: Ayuda para la publicación de la biblioteca y la instalación de la biblioteca.
  • Traducción: Las ubicaciones de las cadenas traducidas deben ser más legibles ahora.
  • Cuadro de diálogo de bienvenida: El botón de software está deshabilitado si no se instala ningún software.
  • Boletín de bienvenida: el software y las listas de ejemplos se actualizan automáticamente una vez que se ha utilizado el cliente de software de la comunidad.
  • Diálogo de bienvenida: El software se puede desinstalar haciendo clic en el pequeño icono en la parte superior derecha de la caja del software.
  • Empaquetador: El nombre del paquete de la biblioteca ahora está siempre prefijado con el nombre o prefijo del proveedor, de modo que este nombre es predecible.
  • Empaquetador: Por lo tanto, hacer un paquete de un proyecto utilizando otra biblioteca no se bloquea más si esa biblioteca nunca se empaquetó.
  • Empaquetador: Al crear el paquete, muestre los mensajes en un cuadro debajo del registro de salida. No utilice más cuadros de mensaje.
  • Cliente de la granja de servidores: Al desinstalar una biblioteca, elimina automáticamente el directorio del proveedor si se anula.
  • Cliente de la granja de servidores: Al desinstalar un software instalado desde la granja de servidores, elimine automáticamente el directorio del proveedor si se anula.
  • Permitir que los archivos ubicados en un directorio vinculado se modifiquen sólo si se abren en modo falso, es decir, solo.
  • Editor de conexión: El botón "Solicitud de SQL" ahora es una entrada en la lista de tablas.
  • Editor de conexión: La descripción de la base de datos es ahora la información de herramientas del botón de configuración de la base de datos.
  • Editor: Corregir fallo en el escaneado de código después de una eliminación.
  • Empaquetador: el cuadro de texto de descripción ahora se expande verticalmente.
  • Empaquetador: La descripción del paquete Debian ahora se genera correctamente en todos los casos.
  • Editor: Solución de un bloqueo de intérprete al analizar una expresión que incluye la última palabra clave.
  • Retire la bonita indentación de código en la función Comienzo / Fin. Necesito encontrar una manera de cerrar las sangrías en las funciones sin terminar.
  • Diálogo de biblioteca: No se bloquea si una biblioteca global y una biblioteca local tienen el mismo proveedor.
  • Cierre explícitamente el formulario FOutput para que pueda guardar sus configuraciones antes de que su padre se destruya.

INTERPRETE
  • El archivo de traducción del proyecto se carga siempre correctamente. Ese era un viejo error.
  • El retardo del temporizador ahora se almacena en 31 bits, por lo que ahora puede ser de hasta 2 ^ 31 - 1 milisegundos, es decir, aproximadamente 24 días, 20 horas y 31 segundos.
  • Exec con un nombre de programa nulo ya no se bloquea.
  • El depurador no se bloquea más al mostrar un objeto estático de tipo recopilación.
  • Cerrar observó la entrada y salidas del proceso tan pronto como se muera. De lo contrario, ejecutar dos procesos que utilizan terminales virtuales sucesivamente puede fallar.
  • Eliminar mensajes de depuración.

GB.ARGS
Tome UTF-8 en cuenta al formatear texto de ayuda.
Corregir texto de ayuda para las opciones que no tienen nombre corto.

GB.DB
Connection.ApplyTemplate () ahora maneja correctamente una intercalación cuyo nombre es "predeterminado" en el archivo de plantilla.

GB.DB.SQLITE2
Las cadenas de SQL, incluidos los caracteres de barra invertida, están ahora correctamente citados.

GB.DB.SQLITE3
Las cadenas de SQL, incluidos los caracteres de barra invertida, están ahora correctamente citados.
GB.DBUS
DBusObject.Raise () ahora utiliza la interfaz de objeto predeterminada si no se especifica ninguna interfaz en el nombre del evento.
Corregir la pérdida de cadena en la rutina de ordenación de firmas.

GB.DESKTOP
  • Desktop.RunAsRoot () ahora usa gksu si gksudo no se encuentra.
  • Desktop.RunAsRoot () debería funcionar correctamente en SuSE ahora. Utiliza kdsu si no se encuentra kdsudo.
  • Utilice la cartera KDE5 cuando el escritorio sea KDE5. Utilice una cartera KDE4 antigua posible sólo si no se encuentra ninguna contraseña en la cartera KDE5.
  • Compatibilidad con equipos de escritorio cygwin.
  • Configurar Desktop.Passwords [] ahora funciona correctamente si se utiliza la herramienta secreta.

GB.EVAL.HIGHLIGHT
Agregue algunas propiedades y símbolos CSS.

GB.FORM
DirChooser, FileChooser: Agregue un menú de "borrar directorio" que sólo puede eliminar directorios vacíos.
DirView: Los eventos de visualización de archivos no molestan el cambio de nombre.
MenuButton: La rutina emergente automática del menú no debería bloquearse más.

GB.FORM.EDITOR
TextEditor: Editor funciona correctamente de nuevo cuando un procedimiento se contrae.

GB.GTK
Window.Menus [] no se bloquea más.
Solución que evita que los colores de información de herramientas del sistema sean ilegibles.

GB.GTK3
Window.Menus [] no se bloquea más.
Solución que evita que los colores de información de herramientas del sistema sean ilegibles.

GB.GUI.BASE
GridView: Detenga el temporizador de desplazamiento cuando se pierde el foco, como si abriera un diálogo modal durante un evento MouseDown, no obtendrá el evento MouseUp. Tal vez debería plantear sistemáticamente un falso evento MouseUp cuando el foco se pierde, y QT no lo envió.
IconView: actualiza correctamente el diseño cuando las imágenes de los iconos se hacen más pequeñas.

GB.INOTIFY
La creación de un reloj con una ruta nula ahora genera un error en lugar de bloquearse.
No asuma que inotify_add_watch () tiene éxito en todos los casos. La ruta de observación puede haber sido eliminada después de haber creado el reloj.

GB.JIT
Corrige la detección jit.h y resuelve el problema donde hay varias versiones de llvm. Jit.h sólo está disponible antes de llvm 3.6 y gb.jit sólo se puede compilar con estas  versiones.

GB.MAP
Ahora las polilíneas funcionan correctamente.
El zoom no cambia el centro del mapa.

GB.MEDIA
Vincular explícitamente con la biblioteca de subprocesos.
MediaPipeline: Evita que la rutina de devolución de mensajes sea posible.
MediaPipeline: Levanta el evento Start cuando se inicia una nueva secuencia.
MediaPipeline: Las propiedades de posición y duración se calculan ahora durante la rutina de devolución de llamada del mensaje.
MediaPipeline: Levante el evento AboutToFinish dos segundos antes del final de la secuencia.
MediaPlayer: NextURL es una nueva propiedad que debe establecer para definir la siguiente secuencia que se reproducirá sin intervalo.
MediaPlayer: La configuración de la propiedad URL detiene automáticamente el reproductor.
MediaPlayer: El evento AboutToFinish ahora es planteado por MediaPipeline. Esta no es la señal de aproximadamente a terminar de GStreamer.

GB.MEDIA.FORM
MediaView: Expone el evento de MediaPlayer AboutToFinish.
MediaView: Expone la propiedad MediaPlayer NextURL interna.
GB.NET.POP3
Pop3Client.Refresh () ha sido implementado. Este método era necesario para actualizar el caché interno de mensajes, de modo que no tiene que abrir una nueva conexión cada vez que necesite leer el cuadro de mensaje.

GB.QT4
Solución que evita que los colores de información de herramientas del sistema sean ilegibles.

GB.QT5
Solución que evita que los colores de información de herramientas del sistema sean ilegibles.

GB.SDL
Cygwin necesita la biblioteca compartida x11 - según Bastian Germann.

GB.SDL2.AUDIO
Elimine las referencias innecesarias a los objetos de canal, que conducen a la pérdida de memoria.

GB.XML
XmlNode: No se bloquee cuando _get () ing un valor de atributo vacío.
XmlNode.Attributes ahora funciona correctamente al obtener atributos vacíos.
XmlElement.GetAttribute () ahora funciona correctamente con atributos vacíos.
Cygwin cambia - según Bastian Germann.

GB.WEB
Si el encabezado Http-Accept-Language es nulo, Request.Language devuelve el lenguaje actual del sistema en lugar de "C".
Tipos de Mime para archivos json, kml y kmz. Utilizado por el método Response.SendFile ().
No modifique DB.Current cuando las sesiones se administran con bases de datos sqlite.
Utilizar Response.SendFile () establece correctamente la propiedad Done.
Obtener las claves de sesiones con sqlite funciona correctamente ahora.

GB.WEB.FORM
  • WebForm.Download () es un nuevo método estático que activa una descarga de archivos en el lado del cliente.
  • WebTextBox: El evento predeterminado es "Cambiar" ahora.
  • Permite cotizaciones en los elementos de finalización automática.
  • WebControl.Name ahora puede escribirse, de modo que la propiedad virtual de grupo se puede utilizar en el IDE.
  • WebContainer: forzar una actualización completa cuando cambia la propiedad Visible.
  • WebTable: Agrega una propiedad oculta al objeto de columna.
  • WebUploadArea: Clear () es un nuevo método que borra el archivo posiblemente subido.
  • WebTable: La selección ahora se mantiene correctamente entre las solicitudes.
  • El método público estático HandleRequest ahora se llama correctamente en su formulario de inicio.
  • Quite el soporte para múltiples formularios principales.
  • WebTable: AddColumn () es un nuevo método para agregar una columna y definir sus propiedades en una línea de código.
  • WebForm: Evita que la ventana de diálogo no redimensionable se expanda para ajustarse a su contenido.
  • WebForm: restaura correctamente instancias automáticas entre solicitudes.
  • WebForm: El método Hide () funciona como se espera ahora.
  • WebForm: Persistente es una nueva propiedad que indica que un formulario debe estar oculto en lugar de ser eliminado cuando se hace clic en el botón Cerrar o se llama al método Close ().
  • WebDataBox: DateTime es una nueva propiedad que permite al control aceptar una parte de tiempo.


Fuente Original:

domingo, 1 de enero de 2017

Juego de Estrategia 4x: Gplanet



Juego de Estrategia 4x:

 Gplanet






Empezamos el año 2017, con un juego de temática Star Wars, del tipo 4X (eXploración, eXpansión, eXplotación de recursos y eXterminación del enemigo). ¡¡¡ Conquista planetas, para conseguir más naves, y gana al imperio galáctico. !!!






Aqui teneis el instalador .deb alojado en gdrive:    descarga



El proyecto de gplanet, con su código fuente está alojado en github en la siguiente dirección:


En próximas entradas, explicaré como esta hecho.... para que podáis hacer vuestras propias versiones.


Nota:
El juego esta hecho en gambas3, teneis que tener instalado gambas3.9.1

   $sudo add-apt-repository ppa:gambas-team/gambas3  
   $sudo apt-get update
   $sudo apt-get install gambas3


Post Data:
Dedicado al recuerdo de Carrie Fisher
http://starwarsprincesaleiaorgana.blogspot.com.es/