convertir archivos HEIC a JPG en Linux

tenemos que instalar el paquete «libheif-examples»

$ sudo apt install libheif-examples

para convertir un archivo usamos el comando:

$ heif-convert  archivo.heic archivo.jpg

En el caso de que tuvieramos muchos archivos, nos paramos en la carpeta donde tenemos todos los archivos HEIC que querramos convertir a JPG  y  ponemos:

for f in *.HEIC; do heif-convert -q 100 $f $f.jpg; done

icloud en gnu/linux

Me pidieron ayuda para poder entrar a la nube de Apple desde un escritorio GNU/Linux (Mint).   Buscando encontré icloud-for-linux,  se instala desde SNAP:

$ sudo apt update
$ sudo apt install snapd
$ sudo snap install icloud-for-linux icloud-notes-linux-client

Luego, una vez instalado,  para poder correrlo tuve que agregar /snap/bin al $PATH,   para ello agregué la siguiente línea a  ~/.bashrc

$ sudo nano ~/.bashrc

voy al final y agrego:

export PATH="$PATH:/snap/bin"

grabo y salgo.

ahora si,  cerrar la terminal y volverla a abrir y ejecutar con :

$ icloud-for-linux.photos

Impresora HP en Huayra Parte2 HPLIP más nuevo [Solucionado]

Instalando una impresora  HP M102w  en Huayra me encontré con el siguiente problema.

Si bien HP dá soporte para GNU/Linux con HPLIP,   dicho modelo es soportado a partir de la versión 3.16.11,  según dice en este link oficial.

En Huayra 3.2  tenemos HPLIP en el repo pero es una versión anterior, así que la forma de solucionarlo es agregar el repositorio «backport», donde hay versiones más nuevas de determinados paquetes.  Por suerte,  justo en backport estaba la versión de HPLIP que dá soporte a mi impresora.

Se hace de la siguiente manera:  (para Jessie)

editamos el sorce.list:

$sudo nano /etc/apt/sourse.list

y agregamos la siguiente línea:

deb http://ftp.debian.org/debian jessie-backports main

grabamos, salimos y actualizamos el repo:

$sudo apt-get update

y finalmente instalamos el HPLIP desde el repo backport, con el siguiente comando:

apt-get -t jessie-backports install hplip

Theft Deterrent no aparece el agente [SOLUCIONADO]

Voy a explicar cómo hacer cuando no aparece el ícono del Agente de seguridad Thef Deterrent en Huayra:

Para empezar, vamos a intentar «levantar» nuevamente el agente. para ello abrimos una tarminal con «CTRL + ALT + T» (o desde Aplicaciones -> Accesorios -> Terminal de Mate) y escribimos los siguientes comandos:

$sudo killall theftdeterrent

(pedirá la contraseña) y luego:

$sudo theftdeterrent &

Si aún no funciona podemos probar de «re-instalar» el paquete huayra-tpm, de la siguiente manera:

$sudo apt-get install –reinstall huayra-tpm

Informe Nacional FLISoL 2016

» La incorporación de Software Libre no se trata únicamente de costos, sino fundamentalmente de protección, confidencialidad, accesibilidad, interoperabilidad, compatibilidad de la información,
seguridad y soberanía tecnológica. «

Lic. Laura Marotias

Informe Nacional FLISoL 2016 Argentina en PDF

Un año más llegó el evento que todos esperamos, en el que venimos trabajando hace meses con mucho esfuerzo y dedicación. Un evento de la comunidad para la comunidad, federal, independiente y soberano porque no recibimos apoyos económicos que presionen o condicionen. Plural e inclusivo. Así lo queremos, así fue y seguirá siendo.
Se va cumpliendo el objetivo principal del evento que es llegar a más gente para difundir el software libre. Este año pese a una disminución en la cantidad de sedes, aumentamos notablemente la cantidad de asistentes con respecto al año pasado, alcanzando casi los cuatro mil participantes.
Vale la pena el esfuerzo, tengamos siempre presente que haciendo estamos también diciendo, una gran comunidad que se planta y construye colectivamente para el bien común. Nosotros seguiremos incluyendo, compartiendo, descubriendo y aprendiendo juntos.
Leí hace poco que en tiempos de crisis, se deben articular estrategias fuertes, radicales. Ahí vamos, a toda máquina para FLISOL 2017, dialogando con organismos para que inviten masivamente a participar del festival y en busca de nuevas sedes, para multiplicarnos y seguir creciendo.

FLISoL es fiesta nacional, y la hacemos nosotros.

Diego Accorinti
Coordinador Nacional FLISoL Argentina
Ciudad de buenos Aires, 24 de Mayo de 2016

Emulador MAME en Huayra linux y dónde descargar ROMS

En este post muestro cómo jugar al ya famoso emulador MAME de máquinas ARCADE en nuestro Huayra gnu/linux.  Gracias a @malefico y a @FerToledo por ayudarme a romper mi karma anti-mame.

El primer paso será agregar a nuestros repositorios el repo externo
deb-multimedia.org:

alumno@huayra:~$ sudo nano /etc/apt/sources.list

y agregamos la línea:

deb http://www.deb-multimedia.org jessie main contrib non-free

guardamos el archivo con CTRL+O y salimos del editor con CRTL+X

Luego, desde una consola actualizamos los repos e instalamos el front-end QMC2:

alumno@huayra:~$ sudo apt-get update
y luego:
alumno@huayra:~$ sudo apt-get install qmc2-mame

qmc2-mame

Ahora, solo nos faltan las ROMS de los juegos.  Podemos pegar una mirada por acápor acá,  o bajar algún torrent cargado, por ejemplo éste.

5 -> Insert coin
1 -> Jugar!

TeamViewer en Huayra Linux [solucionado]

Si alguna vez se te presenta la necesidad de instalar
el cliente de TeamViewer* (recordamos que es software privativo, recomendamos utilizar, de ser posible, alternativas libres) para linux en Huayra,  o si ya lo intentaste y tuviste problemas, acá la respuesta:

teamViewer

Debido a  una librería que ya no viene en Debian 7 64bit no se puede resolver una dependencia al instalar Teamviewer. Por esto debemos instalar la versión de 32 bit de la siguiente forma:

Descargamos la versión 32-Bit / 64-Bit Multiarch

Procedemos a instalarla:

dpkg -i teamviewer_linux.deb

La instala pero dirá que no puede configurarla. Ahora resolvemos las dependencias con pequetes de 32bits:

dpkg --add-architecture i386
apt-get update

Y a continuación hacemos un:

apt-get install -f

y Listo!

Menú -> Aplicaciones -> Internet -> TeamViewer

Impresora HP en Huayra linux [solucionado]

Si querés hacer andar una impresora HP en Huayra gnu/linux y te sucede que vá el documento a la cola de impresión y sale sin ningún error, pero la impresora ni se mosquea, probá con esta solución:

Aca van los pasos:

1º) Borrar la impresora detectada desde: Sistema > Administración > Impresoras

2º) Apagar y desconectar el cable USB y el cable de energía de la impresora

3º) Abrir la terminal y ejecutar las siguientes instrucciones

(descargamos el driver)

$ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz

(ahora desempaquetamos)

$ sudo tar zxf foo2zjs.tar.gz

(cambiamos de carpeta)

$ cd foo2zjs

(compilamos)

$ make

(ahora conseguiremos el fichero firmware de la impresora LaserJet que tenemos)

$ ./getweb 1020 #si es HP LaserJet 1020
$ ./getweb 1018 #si es HP LaserJet 1018
$ ./getweb 1005 #si es HP LaserJet 1005
$ ./getweb 1000 #si es HP LaserJet 1000

(instalamos el driver)

$ sudo make install

$ sudo make install-hotplug

$ sudo make cups

4º) Volver a conectar los cables USB y de energía de la impresora.

5º) Encender la impresora, ir nuevamente a Sistema > Administración > Configuración de impresión

6º) Seguir los pasos del asistente.

Y a imprimir!

Hacé con software Libre: programando un juego Parte 2

Al finalizar la primera parte del tutorial compartido la semana pasada, logramos tener un actor (la nave) volando por el espacio. Vamos a agregarle algunas líneas de código para moverlo con las flechas de dirección del teclado. Para eso, vamos a «enseñarle» un comportamiento de PILAS llamado «MoverseConElTeclado»:

Agregamos la siguiente línea:

minave.aprender(pilas.habilidades.MoverseConElTeclado)

Luego, para que la nave no salga de la pantalla, le enseñamos una segunda habilidad, «LimitadoABordesDePantalla»:

minave.aprender(pilas.habilidades.LimitadoABordesDePantalla)

Recordá que cada vez que agregamos nuevas líneas de código debemos guardar el archivo.
Como segundo paso, vamos a agregar un detalle al juego: haremos que nuestra nave largue humo. Para eso, usaremos el sistema de Partículas de pilas. Agregamos al código de la nave las siguientes líneas:

c2 = pilas.fisica.Circulo(minave.x, minave.y, 100, restitucion=0.1, amortiguacion=0.5)
minave.imitar(c2)

emisor = EmisorHUMO(pilas, 0, 0)
emisor.imagen_particula = pilas.imagenes.cargar_grilla(«imagenes/humo.png»)
emisor.constante = True
emisor.composicion = «blanco»
emisor.duracion = 2
emisor.frecuencia_creacion = 0.03
emisor.vida = 8
emisor.aceleracion_x_min = 36
emisor.aceleracion_x_max = 50
emisor.x_min = 171
emisor.y_min = 2
emisor.transparencia_min = 30
emisor.transparencia_max = 50

emisor.aprender(pilas.habilidades.Imitar, minave)

—————————————
La «clase» Nave  quedaría así :

class Nave(pilasengine.actores.Actor):

def iniciar(self):
self.imagen = «imagenes/lanave.png»

minave = Nave(pilas);
minave.z = -2

c2 = pilas.fisica.Circulo(minave.x, minave.y, 100, restitucion=0.1, amortiguacion=0.5)
minave.imitar(c2)

emisor = EmisorHUMO(pilas, 0, 0)
emisor.imagen_particula = pilas.imagenes.cargar_grilla(«imagenes/humo.png»)
emisor.constante = True
emisor.composicion = «blanco»
emisor.duracion = 2
emisor.frecuencia_creacion = 0.03
emisor.vida = 8
emisor.aceleracion_x_min = 36
emisor.aceleracion_x_max = 50
emisor.x_min = 171
emisor.y_min = 2
emisor.transparencia_min = 30
emisor.transparencia_max = 50

emisor.aprender(pilas.habilidades.Imitar, minave)

minave.aprender(pilas.habilidades.MoverseConElTeclado)
minave.aprender(pilas.habilidades.LimitadoABordesDePantalla)

————————–
Necesitamos copiar este archivo a la carpeta de nuestro proyecto, luego lo renombramos a «emisorHUMO.py»  y agregamos esta línea al comienzo del archivo «juego.py» , luego de «import pilasengine» :

from emisorHUMO import *

Guardamos, y ejecutamos en la terminal. En este momento, deberías ver algo así:

juego-pilas_05

Ahora, agregaremos algunos objetos enemigos, aquellos que debemos esquivar para evitar recolectar los pedazos de nuestra nave por la galaxia. Para añadir el actor «Asteroide», copiamos antes del pilas.ejecutar(), el siguiente código:

class Asteroide(pilasengine.actores.Actor):

def iniciar(self):
self.imagen = «imagenes/asteroide.png»
self.escala = 0.3
self.x = -500
self.y = pilas.azar(-300, 300)
self.giro = 2
self.z = self.y

def actualizar(self):
self.rotacion += self.giro
self.x += 2
# Elimina el objeto cuando sale de la pantalla.
if self.x > 500:
self.eliminar()

juego-pilas_06

Nuevamente, guardamos el proyecto y lo ejecutamos en la terminal.
Ahora que ya sabemos cómo serán y cómo actuarán nuestros enemigos, necesitamos «instanciarlos», es decir, que de un molde (la clase) se generen muchos objetos (instancias).
Para ello, primero creamos un grupo, con la siguiente línea:

enemigos = pilas.actores.Grupo()

ahora creamos el método que generará los asteroides:

def crear_asteroide():
#creo el actor enemigo
asteroide = Asteroide(pilas);
#creo un objeto para la física
c1 = pilas.fisica.Circulo(asteroide.x, asteroide.y, 100, restitucion=1, amortiguacion=2)
asteroide.imitar(c1)
#lo agrego al grupo
enemigos.agregar(asteroide)

Finalmente, necesitamos programar cada cuanto queremos que aparezca nuestro actor enemigo. Para ello, PILAS tiene una herramienta llamada «Tareas».
En nuestro juego queremos que aparezca un asteroide cada dos segundos, entonces creamos una Tarea que llame cada dos segundos al método “crear_asteroide”:

pilas.tareas.siempre(2, crear_asteroide)

Después de guardar y ejecutar en la terminal, tendremos la nave volando y los asteroides dispersos aleatoriamente en la pantalla, rodando amenazantes, funcionando con el motor de física de PILAS.
Para terminar y que los asteroides no caigan como pelotas, necesitamos eliminar la gravedad.

Agregamos al final (siempre antes de pilas.ejecutar() ):

#Elimino los límites laterales y la gravedad
pilas.fisica.gravedad_x = 0
pilas.fisica.gravedad_y = 0
pilas.fisica.eliminar_paredes()
pilas.fisica.eliminar_techo()
pilas.fisica.eliminar_suelo()

El código del archivo juego.py completo hasta este punto es el siguiente:



# -*- coding: utf-8

import pilasengine
from emisorHUMO import *

pilas = pilasengine.iniciar(ancho=900, alto=550, titulo=’De la tierra a la luna’)

puntaje = pilas.actores.Puntaje(280, 200, color=pilas.colores.blanco)
fondo = pilas.fondos.Galaxia(dx=-2, dy=0)

class Nave(pilasengine.actores.Actor):

def iniciar(self):
self.imagen = «imagenes/lanave.png»

minave = Nave(pilas);
minave.z = -2

c2 = pilas.fisica.Circulo(minave.x, minave.y, 100, restitucion=0.1, amortiguacion=0.5)
minave.imitar(c2)

emisor = EmisorHUMO(pilas, 0, 0)
emisor.imagen_particula = pilas.imagenes.cargar_grilla(«imagenes/humo.png»)
emisor.constante = True
emisor.composicion = «blanco»
emisor.duracion = 2
emisor.frecuencia_creacion = 0.03
emisor.vida = 8
emisor.aceleracion_x_min = 36
emisor.aceleracion_x_max = 50
emisor.x_min = 171
emisor.y_min = 2
emisor.transparencia_min = 30
emisor.transparencia_max = 50

emisor.aprender(pilas.habilidades.Imitar, minave)

minave.aprender(pilas.habilidades.MoverseConElTeclado)
minave.aprender(pilas.habilidades.LimitadoABordesDePantalla)

class Asteroide(pilasengine.actores.Actor):

def iniciar(self):
self.imagen = «imagenes/asteroide.png»
self.escala = 0.3
self.x = -500
self.y = pilas.azar(-300, 300)
self.giro = 2
self.z = self.y

def actualizar(self):
self.rotacion += self.giro
self.x += 2
# Elimina el objeto cuando sale de la pantalla.
if self.x > 500:
self.eliminar()

#defino un grupo de enemigos
enemigos = pilas.actores.Grupo()

def crear_asteroide():
#creo el actor enemigo
asteroide = Asteroide(pilas);
#creo un objeto para la física
c1 = pilas.fisica.Circulo(asteroide.x, asteroide.y, 100, restitucion=1, amortiguacion=2)
asteroide.imitar(c1)
#lo agrego al grupo
enemigos.agregar(asteroide)

# Creo una tarea para que aparezca un asteroide cada 2 segundos.
pilas.tareas.siempre(2, crear_asteroide)

#Elimino los límites laterales y la gravedad
pilas.fisica.gravedad_x = 0
pilas.fisica.gravedad_y = 0
pilas.fisica.eliminar_paredes()
pilas.fisica.eliminar_techo()
pilas.fisica.eliminar_suelo()

pilas.ejecutar()


En la próxima entrega veremos cómo tratar las «colisiones», cuando la nave choca con uno de los asteroides.
Podes descargarte el ejemplo completo acá.

¡Hasta pronto!
Diego.

Primera parte del tutorial