miércoles, 13 de diciembre de 2017

Elementary OS: 1 año de uso y la Wifi NO falla



Hace ya algo más de un año que comencé a usar Elementary OS. En aquel momento pensé:

  • "En unas semanas me aburriré de eOS"
  • "No creo que vaya muy bien"
  • "Ubuntu es mucho mejor"
  • ...
Creí que sería un tema fugaz, que rápidamente descubriría que es un sistema débil, poco maduro, frágil,... Pues no. Va realmente muy muy bien. En el mismo ordenador he probado otros sistemas: Ubuntu, Kubuntu, Lubuntu,... todos, absolutamente todos, me han dado muchos problemas con la tarjeta de red inalámbrica de mi portátil, y Elementary, ni uno. Nunca falla la conexión, va siempre bien. No he tenido que hacer mil y un scripts para conseguir que la Wifi no se corte.

Y en general, el sistema va de maravilla: rápido, fluido, liviano,... y con una interfaz gráfica realmente muy muy atractiva.

lunes, 11 de diciembre de 2017

Frases célebres: Ser pobre y estudiar

Cuando se nace pobre,
estudiar es el mayor acto 
de rebeldía contra el sistema

El saber rompe las cadenas
de la esclavitud


Elementary OS: Script para mostrar escritorio con atajo de teclado

Una de las cosas que me chirrían de Elementary OS es que no tenga la opción de utilizar un atajo de teclado para mostrar el escritorio. Es cierto que en el dock que incluye por defecto hay un acceso directo al escritorio, pero no he visto una forma sencilla de activarlo desde teclado. Me he acostumbrado a que la tecla <Súper>+D me muestra el escritorio, y si vuelvo a pulsarla, me devuelve las ventanas a su aspecto original.

Lo he resuelto con un script en bash que utiliza las siguientes herramientas de XWindows:
  • wmctrl
  • xwininfo
  • xdotool


Lo primero será por tanto instalar estas herramientas en tu sistema Elementary OS:
  • sudo apt install wmctrl
  • sudo apt install xwininfo
  • sudo apt install xdotool


¿Qué hace cada una de ellas?


wmctrl -d: relación de escritorios virtuales

wmctrl -d nos muestra una línea por cada uno de los escritorios virtuales que tenemos. En mi caso tengo 4 escritorios virtuales. Fíjate que marca con un asterisco (*) el que está activo. En la imagen anterior se ve que el escritorio 0 es el que está activo ahora


wmctrl -l: ventanas activas en mi sistema
wmctrl -l nos muestra una línea por cada ventana activa en el sistema.
Veamos campo por campo el sentido de cada línea:

  1. El primer campo es el ID de la ventana
  2. El segundo campo es en qué escritorio virtual se encuentra la ventana. Fíjate que -1 es un escritorio no existente.
  3. El tercer campo es el nombre del PC
  4. El cuarto campo es el nombre de la ventana.

xwininfo: ¿Está la ventana x minimizada?
Esta herramienta me permite obtener información de detalle de una determinada ventana. Por ejemplo, ¿está minimizada?
Básicamente funciona así: xwininfo -id <idventana>
Donde, idventana es el ID que nos devuelve wmctrl.

xdotool: realizar acciones sobre una ventana
xdotool me permite realizar acciones sobre una ventana concreta:
  • maximizar
  • minimizar
  • restaurar
  • asignarle el foco, es decir, pornerla en primer plano y marcarla como activa


Básicamente, lo que hace mi script es:

  1. Contar el número de ventanas visibles del escritorio actual
  2. Si n_ventanas_visibles > 0 entonces, minimizar todas
  3. Si no, restaurar todas las ventanas del escritorio activo

Con un pequeño matiz, cuando minimizo todas, guardo en un fichero temporal cuál es la ventana activa en ese momento. Esto me permitirá que, si vuelvo a restaurar las ventanas, se vuelva a marcar como activa aquella en la que yo estaba trabajando.

A este script yo lo he llamada mDesktop.sh. Para asignarle un atajo de teclado, sencillamente configuro los atajos de teclado personalizados en Elementary OS:


A continuación te muestro el código completo del script:


#!/bin/bash
mute=1

Program=$@
program_workingDir=`dirname $(readlink -f $0)`
status_fname="$program_workingDir/.mdesktop_status"
program_systemWindows="$program_workingDir/.mdesktop_systemWindows"

n_visible=0
window_id=0
window_name=""
window_hidden=0
window_isignorable=0
window_vd=0 #vd means virtual desktop
vd_activeId=0

#-----------------------------------------------------------------------------------------------
function debug() {
if [[ $mute == 0 ]]
then
echo "DEBUG: $1"
fi
}
#-----------------------------------------------------------------------------------------------
function vd_getActiveId() {
local vd_id=-1
local vd_status="-"

while read vDesktop
do
vd_id=`echo "$vDesktop" | tr -s ' ' | cut -f 1 -d " "`
vd_status=`echo "$vDesktop" | tr -s ' ' | cut -f 2 -d " "`

if [ "$vd_status" == "*" ]
then
echo $vd_id
break
fi
done < <(wmctrl -d)
}
#-----------------------------------------------------------------------------------------------
function isSystemWindow() {
local window_isSystem=0
window_isSystem=$(grep "$window_name" $program_systemWindows | wc -l)
echo $window_isSystem
}
#-----------------------------------------------------------------------------------------------
# window_activeId
# Window id which actually is focused, it is, the one which is active
# This value will be saved in .desktop_status so it can be restored
#-----------------------------------------------------------------------------------------------
function windows_minimize_all() {
local window_activeId=-1
debug "windows_minimize_all..."

window_activeId=$(xdotool getactivewindow)
echo "$window_activeId" > $status_fname
while read Window
do
window_name=`echo "$Window" | tr -s ' ' | cut -f 4 -d " "`
window_id=`echo "$Window" | tr -s ' ' | cut -f 1 -d " "`
window_vd=`echo "$Window" | tr -s ' ' | cut -f 2 -d " "`

if [[ $(isSystemWindow $window_name) == 1 ]]
then
debug "NOT minimize $window_name: system window"
continue
fi
if [[ $window_vd != $vd_activeId ]]
then
debug "NOT minimize $window_name: in another desktop"
continue
fi

debug "MINIMIZE $window_name"
xdotool windowminimize $window_id
done < <(wmctrl -l)
}
#-----------------------------------------------------------------------------------------------

function windows_restore_all() {
while read Window
do
window_name=`echo "$Window" | tr -s ' ' | cut -f 4 -d " "`
window_id=`echo "$Window" | tr -s ' ' | cut -f 1 -d " "`
window_vd=`echo "$Window" | tr -s ' ' | cut -f 2 -d " "`

if [[ $(isSystemWindow $window_name) == 1 ]]
then
debug "NOT RESTORE $window_name: system window"
continue
fi
if [[ $window_vd != $vd_activeId ]]
then
debug "NOT RESTORE $window_name: in another desktop"
continue
fi

xdotool windowactivate $window_id
done < <(wmctrl -l)
# Set focus to the window was active before minimizing all
window_activeId=$(cat $status_fname)
debug "SETTING FOCUS TO: $window_activeId"

xdotool windowactivate $window_activeId
}
#-----------------------------------------------------------------------------------------------
debug "###############################################"
debug "###############################################"
debug "# MAIN  ##########################################"
debug "###############################################"
debug "###############################################"

vd_activeId=$(vd_getActiveId)
debug "current virtual desktop=$vd_activeId"

while read Window
do
debug "-----------------------------------------------------------------------"
debug "$Window"
window_id=`echo "$Window" | tr -s ' ' | cut -f 1 -d " "`
window_vd=`echo "$Window" | tr -s ' ' | cut -f 2 -d " "`
window_name=`echo "$Window" | tr -s ' ' | cut -f 4 -d " "`
window_hidden=`xwininfo -all -id $window_id | grep "Hidden" | wc -l`
window_isignorable=$(isSystemWindow $window_name)
debug "Window Id: $window_id"
debug "Window vd: $window_vd"
debug "Window Hidden: $window_hidden"
debug "Window Name: $window_name"
debug "Window is system: $window_isignorable"

# is current window an ignore Window?
if [[ $window_isignorable == 1 ]]
then
debug "Ignore actual Window"
continue
fi

# is current active virtual desktop?
if [[ $window_vd != $vd_activeId ]]
then
debug "Ignore actual Window: in another desktop"
continue
fi

# Is there any visible window?
if [[ $window_hidden == 0 ]]
then
debug "show_desktop"
let n_visible++
fi
done < <(wmctrl -l)


# We must exec every window and minimize or maximize, depending wether it was already minimized or not
debug "###n_visible = $n_visible"
# windows_restore_all
if [[ $n_visible == 0 ]]
then
debug "restore all windows"
windows_restore_all
else
debug "minimize all windows"
windows_minimize_all
fi


Fuentes:

miércoles, 29 de noviembre de 2017

FreeFileSync en Elementary OS Loki: sincronización de carpetas entre mi PC y mi pen drive



En mi día a día trabajo con multitud de PCs: el de casa y uno por cada aula en la que doy clase. No es trivial mantener sincronizados los datos en todos estos PCs, de modo que lo que haga en casa se actualice en el PC1, en el PC2,... y viceversa.

Una solución que hemos hecho todos alguna vez es tener un pen drive con todos los archivos de casa, pero claro, luego llegas al trabajo, haces un cambio en algún archivo, y en casa modificaste otro, pero es que en trabajo también lo modificaste,... total, que ya no sabes cuál es el bueno, si el de casa o el del pen drive,... ¡¡¡¡ahhhh!!!! Al final, siempre terminas perdiendo algún archivo clave.

La idea de FreeFileSync es que este software, de forma automática, compara dos carpetas y añade, quita y modifica de cada una lo que falta, lo que sobra o lo que sencillamente ha variado respectivamente, tomando siempre la versión más reciente.

Es una especie de Git, o de Subversion, pero para mantener sincronizadas dos carpetas.
En mi caso lo usaré para mantener sincronizado mi PC con mi pen drive.
Haré algo parecido a lo que hace Dropbox: tendré una carpeta que llamaré Trabajo, y esa carpeta la tendré en el PC de casa, en el pen drive, y en cada uno de los equipos que uso en el trabajo. 

Lo bueno de FreeFileSync es que, además de ser software libre, es multiplataforma. Así que en el instituto, que lo que hay es Windows, se sincronizará sin problemas con mi PC que es Linux. Así que instalaré FreeFileSync en todos los equipos y tendré que acostumbrarme al final de cada día a hacer una sincronización PC del trabajo -> USB -> PC de casa y viceversa.



Accedemos a la web de FreeFileSync en 



Bajo la sección Downloads, elegimos nuestro sistema operativo
En mi caso, Ubuntu 16.04 que es en la que se basa Elementary OS



Aspecto de la página principal de FreeFileSync



FFS sincronizando archivos

jueves, 23 de noviembre de 2017

La versión de Cisco Packet Tracer para Android es brutal



Hace ya un tiempo que instalé CPT en Android, pero por aquel entonces yo me imaginé que sería una versión descafeinada, incompleta, una especie de CPT--, en la que no estuvieran todas las funcionalidades que hay para la versión PC.


Guión de valoración de un lab de Cisco



Pues bien, la he estado usando, me he descargado unos cuantos labs de Cisco y los he podido resolver completamente en mi tablet Android.
Aún no he encontrado nada que no funcione y además es realmente cómoda la interfaz que han propuesto para trabajar sin ratón, sino directamente pulsando sobre la pantalla.

Conexión por hiperterminal a un switch


La gran ventaja que le veo es que te permite estudiar y practicar redes tomando un cortado, al aire libre o en la playa, y no sentado en casa, en una habitación oscura y detrás de un teclado de ordenador.

Visión física de un switch Cisco Catalyst 2960




Aplicaciones de red del escritorio de un PC


martes, 21 de noviembre de 2017

Packet Tracer 7.0 en Elementary OS: Cisco no descuida a Linux



Hoy me ha sorprendido cómo Cisco está mimando a Linux. He tardado 0,1 minutos en instalar la versión 7.0 en mi equipo, en el que tengo Elementary OS Loki, que ya sabes que está basado en Ubuntu.

El grado de dificultad ha sido cero.



Accedo a la página www.netacad.com con mi nombre de usuario y contraseña
dentro de la academia de Cisco. Si no tienes un usuario, regístrate, que es gratis.
A continuación, vete a la sección Packet Tracer



Descargamos la versión deseada, en este caso, para Linux



Descomprimimos el fichero .tar.gz que descarga
Accedemos a la carpeta contenedora y ejecutamos el script de instalación
sudo ./install


Al terminar, ya tenemos la versión 7.0 funcionando en Elementary OS 
En cualquier otra distribución basada en Ubuntu el procedimiento es idéntico



martes, 14 de noviembre de 2017

Infraestructuras de redes de datos: Conexión cable de pares trenzados en roseta



En el siguiente vídeo, Samuel Santos, alumno del 1er curso del CFGM de Instalaciones de Telecomunicaciones, nos explica cómo interpretar la etiqueta de conexionado que incluye una de las rosetas que hemos usado en clase y que puede servirte de ayuda si estás dando tus primeros pasos en redes de datos.

Esperamos que te guste.



viernes, 10 de noviembre de 2017

Instalando NetBeans en Elementary OS desde cero

1. Instalamos el kit de desarrollo para Java
sudo apt-get install openjdk-8*

2. Descargamos Netbeans para Ubuntu Linux

En https://netbeans.org/ dentro de la sección de descargas




Hacemos ejecutable el fichero .sh que hemos descargado y lo lanzamos:
chmod +x netbeans-8.2-javase-linux.sh 



Seguimos los pasos del guión de instalación


Es muy importante tener claro dónde se guarda la carpeta del JDK, porque durante la instalación lo va a requerir. En mi caso está en: /usr/lib/jvm/java-8-openjdk-amd64

El propio instalador nos ha creado un acceso directo en el menú de aplicaciones


Y ahí está, Netbeans corriendo en Elementary OS




Fuentes y recursos:

Elementary OS: indicador de escritorios virtuales




Cuando instalas Elementary OS no se incluye por defecto ningún indicador ni ningún visualizador que indique en qué escritorio virtual estás trabajando, y para mí es de gran ayuda saber en cuál me encuentro.

Pues bien, este indicador es muy sencillo, muy básico, pero cumple su función estupendamente.

Veamos cómo instalarlo:

Accedemos a la web del fabricante:
Descargamos el fichero .deb de instalación



Instalamos desde consola el archivo .deb que hemos descargado:
sudo dpkg -i indicator-workspaces_0.5_all.deb



Cerramos y abrimos sesión




Nuestro indicador de los espacios de trabajo, listo!



Fuentes:

viernes, 27 de octubre de 2017

Oferta de empleo: técnico de mantenimiento para Mercadona



Población:SANTA CRUZ DE TENERIFE 
Provincia:SANTA CRUZ DE TENERIFE 
País:ESPAÑA

Descripción
Puesto vacante:PERSONAL DE MANTENIMIENTO en Santa Cruz de Tenerife 
Nivel:Empleado/a
Personal a cargo:0
Número de vacantes:
Descripción de la ofertaJornada 40 h / Semanales.
Jornada laboral de lunes a sábado.
Técnico/a de mantenimiento para tienda.
Progresión salarial.

Requisitos
Estudios mínimos:FP Grado Medio – Electricidad y Electrónica
Experiencia mínima:No requerida
Imprescindible:Residente en provincia del puesto vacante
Requisitos mínimos:Don de gentes.
Disponibilidad horaria de lunes a sábado.

Contrato
Tipo de contrato:Indefinido 
Jornada laboral:Jornada Completa 

Salario
Salario:15.000 € - 21.000 € Bruto/año

Más información en: https://career012.successfactors.eu/career?career_ns=job_listing&company=mercadonas&navBarLevel=JOB_SEARCH&rcm_site_locale=es_ES&site=VjItSmJSOVQrSWdMM0ZGS0o1NlhCVFAzUT09&career_job_req_id=27098&selected_lang=es_ES&jobAlertController_jobAlertId=&jobAlertController_jobAlertName=&_s.crb=Xq8gCPVBZP1H3fgyEFv9LSGih0o%3d

miércoles, 11 de octubre de 2017

Libreoffice: desactivar la función de autocompletado de palabras mientras escribes



Recuerdo cuando empecé a usar Staroffice, Openoffice, Libreoffice... por primera vez, esta característica parecía muy prometedora. Vi en aquel momento que podía suponer una forma de facilitar la escritura, de con menos pulsaciones de teclado acelerar la escritura.

Pero no, me equivocaba, y con el paso del tiempo, al menos para mí, no es sino un incordio, una molestia, que me obliga una y otra vez a escribir las palabras completas y a tener que re-revisar varias veces lo que escribo por si acaso el sistema de autocompletado se haya equivocado y haya previsto que quería escribir A cuando en realidad yo quería poner B, cosa además muy habitual.

Pues bien, veamos cómo desactivarlo.


A la vez que voy escribiendo, el sistema me sugiere la palabra que cree que quiero escribir. 
Deseo desactivar esta funcionalidad



Accedemos a Herramientas -> Corrección automática -> Opciones de autocorrección



Bajo compleción de palabras, desmarcamos la opción Activar la compleción de palabras



miércoles, 20 de septiembre de 2017

Eliminar trabajos pendientes en la cola de impresión en Linux

Hace un tiempo que instalé una impresora en mi equipo con Elementary OS Loki y, cada vez que se reinicia, se muestra un mensaje de error de la impresora. Entiendo que se ha quedado un trabajo por imprimir, y al estar la impresora apagada, me avisa el sistema.


Veamos cómo anular esos trabajos pendientes de la cola.



Mensaje de error. Hay trabajos pendientes por imprimir
pero que ya no necesito y quiero eliminar



Con el comando lpstat vemos todos los trabajos pendientes de imprimir
A continuación, sudo cancel -u moises y elimino todos los trabajos asociados a mi usuario.
Como ves, si volvemos a consultar los trabajos pendientes de la cola de impresión, 
el listado aparece vacío


Después de cancelar los trabajos de la cola, el sistema me avisa de que así ha sido




Fuentes:




martes, 19 de septiembre de 2017

Draftsight: el clon gratuito de AutoCAD. Instalación en Linux Elementary OS

Lo primero que hacemos es acceder a la página de Draftsight
y pulsamos la opción Descargar Draftsight



Seleccionamos la versión basada en Ubuntu
Esto nos descargará un fichero .deb a nuestro disco


Desde la carpeta en la que se haya descargado
sudo dpkg -i draftsight.deb
Con esto instalamos la aplicación en nuestro sistema



Finaliza con éxito la instalación


En nuestro menú de aplicaciones, ya tenemos la herramienta disponible.
La iniciamos




Nos avisa que tenemos que activarlo


 
Sencilllamente rellenamos el correo, el sector y el país en el que lo vamos a usar



Finalizamos la activación



El sistema nos enviará el clásico correo para activarlo


Volvemos a arrancar el programa y aceptamos los términos de licencia



Y ya tenemos Draftsight en funcionamiento en Elementary OS



Y aquí, un primer diseño básico que he realizado y efectivamente me ha respetado absolutamente todos los comandos de AutoCAD