martes, 21 de octubre de 2008

Testear la Memoria


Esta semana puse una Memoria RAM de 1MB, en el servidor de mi trabajo. pero causo que la máquina se colgará cada 6 horas, por momentos sentia que estaba usando Windows. Así que decidí hacer un test en la memoria RAM.

Una de las herramientas que nos puede salvar es MEMTEST. Podemos descargar el CD del sitio web, y instalarno de los paquetes de nuestra distribución, en mi caso Debian:
#aptitude install memtest86

Listo ahora esta instalado y debemos de modificar nuestro sistema de arranque GRUB, para que nos muestre como una opción el MemTest. Para esto modificamos el archivo /boot/grub/menu.lst
#emacs /boot/grub/menu.list

Recuerde que todo lo hacemos como super usuarios.

Ahora desmarcamos la linea que nos dice:
#mentest86=true
debe quedar así:
mentest86=true
Guardamos, y actualizamos grub:
#update-grub

Listo, al reiniciar nos mostrara la opción de MemTest para el testeo de memoria, ahora simplemente lo ejecutamos y listo, dejemos que de unas cuantas pasadas, para que nos muestre si la RAM esta dañada.

miércoles, 15 de octubre de 2008

Linux: Reparando el disco Duro

Estuve sufriendo, por los cortes de luz, que la computadora mandaba errores del disco duro, y algunas veces de PANIC KERNEL. Asi que decidi en comenzar a darle mantenimiento a la PC.

Primero veremos el tipo de partición que queremos reparar, ejecutando en consola:
#cat /etc/fstab
Esto nos listará las particiones del disco duro y su tipo de archivos, en mi PC aparece:

proc /proc proc defaults 0 0

/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda6 /home ext3 defaults 0 2
/dev/hda5 none swap sw 0 0
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

Pienso reparar la partición primaria que seria /dev/hda1 de tipo de archivos ext3. para eso utilizare la herramienta fsck.

Las reparaciones no se pueden realizar con el disco montado, así que es necesario hacerlo mediante un LiveCD. En mi caso encontre uno de Ubuntu 5.1, con el cual cargue el sistema, y en consola digite:
#fsck.ext3 -f -tt- v -D -y /dev/hda1
Si el tipo de partición fuese ext2:
#fsck.ext2 -f -tt- v -D -y /dev/hda1

Nota: En otras distribuciones se usa e2fsck en lugar de fsck.ext3 o fsck.ext2.


¿Qué significan tantas opciones?

Podemos ver en el man de fsck una pista de lo que estamos haciendo:
-f: Fuerza el chequeo del sistema de archivo, aunque paresca limpio.
-tt: Muestra las estadisticas de fsck.
-v: Modo de seguimiento, muestra los pasos desarrollados.
-D: Optimiza los directorios de la partición.
-y: Asume la respuesta YES en todas las preguntas.

Con esto terminamos el chequeo y reparación del disco. Ahora podemos reiniciar la PC para comenzar a trabajar.

sábado, 20 de septiembre de 2008

Aplicaciones Web 2.0 con Software Libre

El presente trabajo, muestra las herramientas y aplicaciones de Software libre que se utilizan para la creación de entornos Web 2.0.

Presentación pública

miércoles, 20 de agosto de 2008

Zend: Doctrine Auth Adapter

Aca pongo a su disposición el adaptador para autorización que desarrolle para Zend utilizando el ORM Doctrine, Suerte.
class Doctrine_Auth_Adapter implements Zend_Auth_Adapter_Interface{
private $_tablename=null;
private $_identityColumn=null;
private $_credentialColumn=null;
private $_identity;
private $_credential=null;
private $_resultRow=null;
public function __construct( $tableName=null, $identityColumn=null, $credentialColumn=null) {
$this->_tableName=$tableName;
$this->_identityColumn=$identityColumn;
$this->_credentialColumn=$credentialColumn;
} //end function
public function setIdentity($identity) {
$this->_identity=$identity;
return $this;
} //end function
public function setCredential($credential) {
$this->_credential=$credential;
return $this;
} //end function
public function setIdentityColumn($identityColumn) {
$this->_identityColumn=$identityColumn;
return $this;
} //end function
public function setCredentialColumn($credentialColumn) {
$this->_credentialColumn=$credentialColumn;
return $this;
} //end function
function getResultRowObject() {
if (!$this->_resultRow) return false;
$returnObject = new stdClass();
foreach ($this->_resultRow as $resultColumn => $resultValue) {
  $returnObject->{$resultColumn} = $resultValue;
}
return $returnObject;
} //end function

public function authenticate() {
$authResult = array(
                    'code'     => Zend_Auth_Result::FAILURE,
                    'identity' => $this->_identity,
                    'messages' => array()
                    );
$usr=Doctrine_Query::create()->from($this->_tableName)->where($this->_identityColumn.'=?',$this->_identity)->fetchArray();
if (count($usr)==0) {
  $authResult['code'] = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
  $authResult['messages'][] = 'Login failed';
} //end if
else{
  if ($usr[0][$this->_credentialColumn]==$this->_credential){
    $this->_resultRow=$usr[0];
    $authResult['code'] = Zend_Auth_Result::SUCCESS;
    $authResult['messages'][] = 'Login succesful';
  }
  else{
    $authResult['code'] = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
    $authResult['messages'][] = 'Password failed';
  }
}
return new Zend_Auth_Result($authResult['code'],$authResult['identity'],$authResult['messages']);
} //end function

}//end class

miércoles, 28 de mayo de 2008

Video: Killer Tux

Tux, el poderoso guerrero enfrentandose a la máquina "casi" perfecta:



Un grandioso final.

miércoles, 21 de mayo de 2008

Descargar y convertir películas FLASH a VIDEO

Este es un pequeño tutorial que explica como descargar películas FLASH (de YouTube) y convertirlas en formato video (AVI).

Paso 1: Descargamos el video
Para descargar el video utilizaremos DownloadHelper, la cual es una extensión para Mozilla Firefox que permite descargar videos flash (flv) de distintas páginas. Aquí un video de su uso.








Instala la extensión haciendo click aquí

Paso 2: ffmpeg
ffmpeg es un visor, codificador y decodificador multimedia, con soporte para varios formatos. Para instalarlo utilizamos la siguiente orden:
#aptitude install ffmpeg

Paso 3: Conversión
Ahora procedemos a convertir el video que descargamos; el cual hemos llamado prueba.flv
#ffmpeg -i prueba.flv prueba.avi
Si quisieramos extraer solo el sonido usamos:
#ffmpeg -i prueba.flv -f mp3 prueba.mp3
Ahora veamos el video, para esto usaremos el reproductor de ffmpeg:
#ffplay prueba.avi

MEnconder: Otra alternativa
Otra alternativa distinta de ffmpeg es mencoder, este paquete no viene en debian asi que hay que añadir un nuevo repositorio:
# echo “deb http://www.debian-multimedia.org testing main” >> /etc/apt/sources.list
# apt-get update# apt-get install debian-multimedia-keyring
Ahora solo instalamos los paquetes necesarios
# aptitude install mencoder
Ahora convertimos nuestro archivo prueba.flv
#mencoder prueba.flv -ovc lavc -oac mp3lame -o prueba.avi

martes, 29 de abril de 2008

Instalación de Apache y TomCat

Esta semana se me dieron ganas de instalar Apache y Tomcat, en mi Debian Etch, y buscando en páginas amigas encontre este excelente tutorial desarrollado por Rodolfo Pilas (http://www.pilas.net), que tuve la oportunidad de conocer hace 2 años, y lo considero uno de los mas apasionados por el software Libre. Acá les dejo el enlace al tutorial:

http://pi.lastr.us/doku.php?id=documentos:apache_tomcat

jueves, 24 de abril de 2008

.:FLISOL 2008:. Puro Software Libre


El Festival Latinoamericano de Instalación de Software Libre (FLISoL) es el evento de difusión de Software Libre más grande en Latinoamérica. Se realiza desde el año 2005 y su principal objetivo es promover el uso del software libre, dando a conocer al público en general su filosofía, alcances, avances y desarrollo.
Para tal fin, las diversas comunidades locales de software libre (en cada país, en cada ciudad/localidad), organizan simultáneamente eventos en los que se instala, de manera gratuita y totalmente legal, software libre en las computadoras que llevan los asistentes. Además, en forma paralela, se ofrecen charlas, ponencias y talleres, sobre temáticas locales, nacionales y latinoamericanas en torno al Software Libre, en toda su gama de expresiones: artística, académica, empresarial y social.







En nuestra Tacna-Perú, el FLISOL se estará desarrollando el día sábado 26 a las 9:00 a.m. en el Local central de la Universidad Nacional Jorge Basadre Grohmann, sito en Av. Pinto con Av. Bolognesi s/n. Para mayores detalles visita la página:

http://flisol.info/
http://flisoltacna.info/

martes, 22 de abril de 2008

Mutt y envio de correo masivo

Muchas veces en instituciones es necesario enviar correos de manera masiva a los integrantes de la institución, por ejemplo enviar correos a los alumnos de un colegio. Para esto podemos utilizar nuestro querido mutt de la siguiente manera:

Paso1:
Creamos el contenido del correo en un archivo (contenido.txt)

Paso 2:
Creamos la lista de correos a los que vamos a enviar el contenido; esta la creeamos en el archivo listacorreo.txt

Paso 3:
Creamos un script bash (enviarcorreo.sh), con el siguiente contenido:

#!/bin/bash
mails=$(cat listacorreo.txt | sort | uniq)
contenido=$(cat contenido.txt)
for user in $mails
do
echo $contenido | mutt -s "Primer Envio" $user
echo "Enviando correo a $user"
done

Paso 4:
Ejecutamos:
#sh ./enviarcorreo.sh

¿Y si quiero que el contenido lo mande como HTML?
Simple, modifico el archivo de configuración de mutt (.mutt/muttrc) y añado la siguiente línea:
set content_type="text/html"

viernes, 18 de abril de 2008

Visualizar HTML en mutt

Mutt no deja de sorprenderme, leyendo la documentación he encontrado la forma de poder ver directamente el formato HTML en mutt, añadiendo la siguiente línea a nuestro archivo de configuración ($HOME/.mutt/muttrc):
auto_view text/html
Una belleza, no creen...

lunes, 7 de abril de 2008

Enviar correo en emacs

Hace algún tiempo publicamos el articulo Mutt+Gmail, el cual nos mostraba como configurar msmtp para el envio de correos.
Ahora vamos a configurar Emacs para que envie correos con msmtp. Suponiendo que ya tenemos configurado msmtp para el envio de correos ahora solo falta configurar emacs.

Paso 1: Configuración

Añadimos las siguientes líneas al archivo de configuración .emacs

(setq user-mail-address "micorreo@mipagina.com")
(setq sendmail-program "/usr/bin/msmtp")

Guardamos y reiciamos Emacs.

Paso 2: Probando

Abrimos Emacs y ponemos C-x m inmediatamente nos aparecerá un formulario como el siguiente:

To: (Dirección de correo del destinatario)
Subject: (Título del envio)
--Text follows this line--
(Texto del mensaje)

Luego enviamos con las teclas C-c C-s

Mayores detalles en la documentación.

jueves, 3 de abril de 2008

Libro de Firebird


Esta semana me puse a buscar un buen libro de Firebird, y me dí con la sorpresa, de la poca documentación que puede tener nuestro gestor de Base de Datos favorito; dandome casí por vencido encontre este muy buen libro; espero que les guste:

El libro de Firebird, Referencia para Desarrolladores de Base de datos.

miércoles, 26 de marzo de 2008

8 SIIS - Zend Framework

Del 12 al 15 de marzo se organizó en la ciudad de Tacna el "8vo Seminario Internacional de Informática y Sistemas" cuyo objetivo fue contribuir en la formación de los estudiantes y profesionales en el área de Informática, Sistemas y ramas afines, a través de la experiencia, el intercambio de ideas y los conocimientos que aportarán investigadores y docentes de reconocido prestigio en el ámbito nacional e internacional.

Tuve la oportunidad de participar en este Seminario con el tema: "Zend Framework, Desarrollo de aplicaciones MVC con PHP". Aquí les dejo las diapositivas para su interes:



También pueden ver todas la diapositivas del seminario en http://www.slideshare.net/siis/

AjaxRain: mas de 1000 scripts ajax

AjaxRain es uno de los portales más grandes de almacenamiento de código javascript y componentes Ajax organizados según los kits de desarrollo a los que pertenecen. AjaxRain provee una invaluable cantidad de poderosos recursos para el desarrollo de interfaces Web, trabajando con los kits mas populares: jquery, dojo toolkit, yahoo, scriptacolous, prototype, lightbox, extjs, etc.

Un sitio muy importante para todo desarrollador web.

portal http://www.ajaxrain.com

lunes, 10 de marzo de 2008

uncaught exception: Permiso denegado al llamar al método XMLHttpRequest.open

uncaught exception: Permiso denegado al llamar al método XMLHttpRequest.open es uno de los errores que ocurre al querer acceder a una página fuera de nuestro dominio, mediante el objeto XMLHttpRequest. Este error ocurre en el navegador Mozilla Firefox, que por cuestiones de seguridad bloquea el acceso a objetos de distintos dominios. Para solucionar este problema es necesario añadir algunas líneas a nuestro archivo de configuración de Mozilla Firefox (user.js), el cual se encuentra en la carpeta:

$HOME/.mozilla/firefox/x* (Linux)
%AppData%\Mozilla\Firefox\Profiles (Windows)

Añadiendo estas líneas el problema se soluciona:

user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.open", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.sites", "http://localhost http://www.pagina1.com http://www.pagina2.com");
user_pref("capability.policy.XMLHttpRequestToAnySite.CDATASection.nodeValue", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.attributes", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.childNodes", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.firstChild", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.getAttribute", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.getElementsByTagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.lastChild", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.nodeName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.nodeType", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.parentNode", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.tagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.nextSibling", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.previousSibling", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.HTMLCollection.length", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.HTMLCollection.item", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.attributes", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.childNodes", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.firstChild", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.getAttribute", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.getElementsByTagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.lastChild", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.nodeName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.nodeType", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.parentNode", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.tagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.nextSibling", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.previousSibling", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLDocument.documentElement", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLDocument.getElementsByTagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.channel", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.open", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.responseText", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.responseXML", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.send", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.setRequestHeader", "allAccess");
user_pref("capability.policy.policynames", "XMLHttpRequestToAnySite");

En la sección
user_pref("capability.policy.XMLHttpRequestToAnySite.sites", "http://localhost http://www.pagina1.com http://www.pagina2.com");
añadimos los sitios web que queramos acceder con el objeto XMLHttpRequest (van separados de espacio cuando son mas de uno).

Luego en el explorador ponemos:
about:config
y buscamos el apartado: signed.applets.codebase_principal_support
al cual le asignamos el valor true.

Listo, solo falta reiniciar el firefox.

martes, 26 de febrero de 2008

Emacs y RSS

En esta oportunidad vamos a instalar un lector de noticias (RSS) y añadirlo a nuestro querido Emacs. para esto vamos a instalar SnowNews, un lector de noticias en modo texto, muy fácil de usar:

#aptitude install snownews

Luego lo ejecutamos:
#snownews

Le añadimos un lugar de noticias presionando la letra "a", y escribimos
http://www.somoslibres.org/backend.php
Presionamos [Enter] y listo podemos ver las noticias de nuestro sitio favorito; podemos también añadir mas sitios. Para mayor información sobre el uso de snownews puede ejecutar la ayuda de snownews presionando la tecla h.

Para añadirlo a emacs sólo es necesario añadir las siguientes líneas a nuestro archivo .emacs
(defun rss()
(interactive)
(ansi-term "snownews" "snownews"))

Ahora para poder llamarlo solo es necesario el comando Alt+x mail y podremos ver las noticias de nuestros sitios favoritos.

viernes, 22 de febrero de 2008

Emacs y Mutt

En esta ocación solo voy a describir el proceso para poder ver correo del cliente Mutt en Emacs. Para esto solo debemos añadir a nuestro archivo .emacs las siguientes líneas:

(defun mutt()
(interactive)
(ansi-term "mutt" "Mutt"))

con esto solo es necesario ejecutar Alt+x mutt para poder ver nuestro correo en emacs.

Mutt + GMail


Hace algunos días estuve cambiando todo mi escritorio KDE por un
manejador de ventanas ligero (Fluxbox); así también tuve que
cambiar alguno de los programas para poder trabajar con menos
recursos. El cliente de correo que ahora utilizo es MUTT, el cual lo
instale y configure de la siguiente manera, para que pueda trabajar
con gmail.

Paso 1: Instalar MUTT y MSMTP
Mutt es nuestro cliente de correos y msmtp es nuestro cliente smtp que
nos permitirá conectarnos con GMail
#aptitude install mutt
#aptitude install msmtp

Paso 2: Configurar msmtp
Creamos el archivo .smtprc
#emacs .smtprc
Y añadimos las siguientes líneas

defaults
tls on
account default
host smtp.gmail.com
auth on
tls on
tls_certcheck off
user miusuario@gmail.com
pass mipassword

Luego de editar el archivo .smtprc debemos de darle permisos para que
solo nuestro usuario pueda tener acceso al archivo.
#chmod 600 .msmtprc

Paso 3: Configurar mutt
Ahora vamos a realizar una configuración sencilla de mutt, para esto
debemos crear el archivo .mutt/muttrc
#emacs .mutt/muttrc

Añadimos las siguientes líneas al archivo:

#INICIO DE ARCHIVO

#Cabezera de los correos por defecto
my_hdr From: Juan Carbajal Paxi

#Configuramos POP3
set pop_host=pops://miusuario:mipassword@pop.gmail.com:995
set pop_last
unset pop_delete

#Asignamos el programa que enviara los correos
set sendmail=/usr/bin/msmtp

#Asignamos el folder para los correos
set folder=$HOME/Mail

#Chequeamos correos cada 60 segundos
set check_new
set mail_check=60
set beep_new

#No saltar al siguiente mail cuando llegamos al final del actual
set pager_stop
#Ordenamos las cabezeras para leerlas mejor
hdr_order From: Date: To: Cc: Subject:
#Asignamos nuestra firma
set sig_dashes
set signature=$HOME/.mutt/firma

set editor="nano"
#Extraemos los correos al comienzo de ejecutar MUTT
exec fetch-mail

#FIN DE ARCHIVO

Si revisamos vemos que se ha añadido una firma para nuestros mensajes
que se encuentra en el archivo .mutt/firma; solo es necesario
editarlo.

Bueno con estos sencillos pasos tenemos configurado mutt con gmail.

jueves, 10 de enero de 2008

Thunar y XArchiver


Thunar es un administrador de archivos para el escritorio XFCE; una de las características de Thunar es el grupo de plugins que posee; uno de estos es thunar-archive-plugin el cual permite crear y administrar archivos comprimidos de manera fácil y rápida; thunar-archive-plugin es un interfaz configurable para herramientas como ark (KDE) y file-roller(gnome). Pero buscando independencia de los demás escritorios en esta ocasión usaremos xarchiver como herramienta de compresión.

Paso 1: Instalación de XArchiver

Instalar xarchiver es muy sencillo:
#aptitude install xarchiver
si vemos su ayuda
#xarchiver --help

podemos destacar las siguientes opciones
-x, --extract-to=[destination path]
    Extrae el archivo en el directorio especificado y sale.
        xarchiver --extract-to=micarpeta miarchivo.tar.gz
-e, --extract=[archive path]
    Extrae el archivo preguntando el destino y sale.
        xarchiver --extract=micarpetapordefecto miarchivo.tar.gz
-d, --add-to=[file1] [file2] [file3] ... [fileN]
    Pregunta el nombre de archivo comprimido, añade los archivos y sale.
        xarchiver --add-to=miarchivo.tar.gz archivo1 archivo2 archivo3
-a, --add=[archive name]
    Añade los archivos seleccionados al archivo especifico y sale

Paso 2: ¿Cómo configurar thunar-archive-plugin para trabajar con xarchiver?

Al instalar xarchiver se creo el archivo /usr/share/applications/xarchiver.desktop esto indica que "podemos" configurar thunar-archive-plugin para que trabaje con nuestra aplicación. Para esto creamos el archivo /usr/lib/thunar-archive-plugin/thunar-archive-plugin/xarchiver.tap; el cual posee el script que se ejecutara cuando Thunar administre archivos comprimidos. El código de este archivo el siguiente:

#!/bin/sh
# Inicio de Código
# Sacamos de la pila de parámetros la acción y la carpeta
action=$1; shift;
folder=$1; shift;
# Analizamos la acción
case $action in
create)
exec xarchiver --add-to="archivo" "$@"
;;

extract-here)
exec xarchiver --extract-to="$folder" "$@"
;;

extract-to)
exec xarchiver --extract="$folder" "$@"
;;

*)
echo "Acción no soportada '$action'" >&2
exit 1
esac
# Fin de Código

Analizando el Código:
Existen 3 variables
action: Primer parámetro, indica la acción realizada create, extract-here, extract-to
folder: Segundo parámetro, indica el directorio donde se ejecuta la acción
@: Demás parámetros, archivos a los cuales se ejecuta la acción

Cuando la acción es create
exec xarchiver --add-to="archivo" "$@"
Muestra un un cuadro de dialogo presentando el nombre de archivo comprimido; en nuestro caso "archivo" será el nombre por defecto, al cual se añadiran los archivos $@

Cuando la acción es extract-here
exec xarchiver --extract-to="$folder" "$@"
Extrae el archivo comprimido $@ en la carpeta actual ($folder)

Cuando la acción es extract-to
exec xarchiver --extract="$folder" "$@"
Muestra un cuadro de dialogo preguntando la carpeta donde se extraerá el archivo comprimido ($@). Por defecto aparecerá $folder como carpeta.

Paso 3: Puliendo la aplicación
Antes de probar xarchiver con debemos de verificar que no se tengan instalados file-roller o ark. o eliminar los archivos
/usr/lib/thunar-archive-plugin/thunar-archive-plugin/ark.tap
/usr/lib/thunar-archive-plugin/thunar-archive-plugin/file-roller.tap

Listo, tenemos Thunar trabajando con XArchiver. Ahora cada vez que hagan clic derecho sobre un archivo tendrán las opciones de compresión habilitadas con XArchiver.

Salvapantallas (xscreensaver) en XFCE


XFCE es un escritorio muy potente, pero una de sus desventajas es no poseer un Salva-pantallas por defecto (en la instalación), así que tendremos que instalar el Salva-pantallas a mano. Para esto usaremos XScreensaver, como administrador de Salva-pantallas.

Paso 1: Instalación
#aptitude install xscreensaver

Paso 2: Arrancar el demonio
Ahora solo debemos de crear o modificar nuestro archivo $HOME/.xsession, el cual se ejecuta cuando el usuario inicia sesión. A este archivo añadimos estas líneas:

xscreensaver -nosplash &
exec xfce4-session

la primera línea ejecuta xscreensaver como demonio y la segunda línea ejecuta nuestro escritorio XFCE4.

Paso 3: Configuración
Podemos cambiar de Salva-pantallas utilizando el comando
#xscreensaver-command -prefs

o también aparecerá por defecto en nuestro menú de configuración de XFCE.

Listo, tenemos nuestro Salva-pantallas funcionando.

Configure Grafana and Slack

To configure Grafana to send alerts to Slack, you need to set up a notification channel in Grafana and configure it to use the Slack integra...