17 de junio de 2013

Repositorio Local y MirrorList con CentOS 6.4

Walter Cervini wcervini at gmail.com


Introducción

Mucha veces me preguntan del porque de un repositorio local para actualizar equipos o instalar nuevos paquetes. Pues por varios motivos:
  • Ahorro de Ancho de banda.
  • Actualizaciones e instalación de paquetes mucho mas rapidas.
  • Deployments de Instalaciones locales sin uso de Cd’s ó DVD’s.
  • y algunas otras mas que se me escapan en este momento
Aviso Bajo ningun motivo este deployment inhabilita SELinux, se hara la explicacion de como implementar el servicios y aplicar los contextos necesarios de SELinux para que este funcione de forma optima
Sugerencia La implementacion de este deployment es para cualquier de las versiones de CentOS soportadas hasta el momento

Puesta en Marcha

Paquetes Necesarios
* createrepo
* rsync
* policycoreutils
* script para la actualizacion de los repositorios.
Nota El paquete policycoreutils servira para configurar las politicas de SELinux
El script para la actualizacion de los repositorios esta disponible al final de este articulo
Instalación de los paquetes
sudo yum install -y rsync createrepo policycoreutils
Creacion del Repositorio Local
En este punto creamos las carpetas donde residiran los repositorios locales y configuraremos apache y SELinux.
Creamos la carpeta home y la llamaremos repo
mkdir /home/repo
Cambiamos el permiso de la carpeta para que todos pueda acceder y leer los archivos y carpetas
chmod 755 /home/repos
Habilitamos SELinux para que permita la funciolidad del servicio configurando el directorio con la etiqueta httpd_sys_content_t con el comando chcon y lo aplicamos de forma recursiva al directorio /home/repo/
   chcon fcontext -a -t httpd_sys_content_t /home/repo/ -R
Ahora crearemos el script en BASH que mantenga actualizado nuestro repositorio
    #/bin/bash
    rsync='/usr/bin/rsync -avzH --delete'
    local='/home/repo'
    mirror='us-msync.centos.org::CentOS'
    verlist='6.4 5.9' # Aqui las versiones a Descargar
    archlist='x86_64 i386' # Aqui colocamos las arquitecturas a Descargar
    baselist='updates extras centosplus contrib fasttrack cr os' #Aqui definimos los repositorios a Descargar
    for ver in $verlist
    do
        for arch in $archlist
        do
            for base in $baselist
            do
                echo "*******************************"
                echo ``
                echo "Sincronizando $ver/$base/$arch"
                echo ``
                echo "*******************************"
                remote=$mirror/$ver/$base/$arch/
                $rsync $remote $local/$ver/$base/$arch/
            done
        done
    done
Nota Llamaremos a este script up_repos.sh y lo colocaremos en /root/bin
El directorio bin no existe dentro de la carpeta root, sera necesario crearlo con el comando sudo mkdir /root/bin
Tambien debemos dar atributos de ejecucion al script que creamos, para esto efectuamos sudo chmod 755 /root/bin/up_repos.sh
Con respecto al script antes creado, debo mencionar algunos puntos la variable definida con $verlist contendra las versiones de CentOS, $archlist las arquitecturas y $baselist los repositorios, es decir en el script descargaremos los paquetes de los repositorios os, updates, extras, centosplus, contrib fasttrack y cr para las arquitecturas x86_64 y i386 para las versiones de CentOS 6.4 y 5.9
Aviso Ajuste el lector la version, arquitetura y repositorios que desea descargar, cada opcion en cualquiera de las tres variables debera esta separada con un espacio en blanco.

Automatizando el repositorio de forma automatica.

Para que nuestro repositorio local este siempre al dia, podemos colocar en el servicio cron esta actividad, en mi caso acostubro a actualizar siempre en las noches a partir de las 11, donde no esta el personal de la oficina laborando. Para esto usamos en comando sudo crontab -e y añadimos lo siguiente
00 23 * * * /root/bin/up_repos.sh
presionamos <ESC> y :wq
En este punto, nuestro repositorio estara actualizandose todos los dias a las 11 de la noche, si existen alguna actualizacion.
Hasta el momento hemos configurado nuestro repositorio y sus actualizaciones, peso esta vacio, no contiene ningun paquete. Para comenzar la actualizacion debemos ejecutar el comando de forma manual, esto lleva un buen tiempo si no hemos modificado el script up_repo_sh.
Solo debemos ejecutar
sudo /root/bin/up.repo.sh
Instalacion del Mirrorlist Local
Ahora crearemos el mirrorlist local, para que cuando nuestras maquinas intenten actualizarse o instalar algun paquete lo hagan en los repos locales.
Añadir en **/etc/hosts/** la ip donde esta ubicado nuestro repositorio,
esto debera añadirlo en cada una de las maquinas que desee que lea el
repositorio local
Si nuestro repo tiene la direccion 192.168.0.1 colocaremos lo siguiente
192.168.0.1 mirrorlist.centos.org
Configuracion de Apache
Para que apache pueda resolver el nombre mirrorlist.centos.org debemos añadir la siguiente configuracion a Apache, creando el archivo repo.conf en la carpeta /etc/httpd.conf.d/.
repo.conf
        alias /Centos /home/repo/Centos

        <Directory /home/repo/Centos>
           Options Indexes FollowSymlinks
           AllowOverride none
           order allow,deny
           allow from all
        </Directory>
En la raiz del Servidor Apache creamos el archivo index.php
index.php
<?php
#Nombre o Direccion Ip del Repsotiorio de Paquetes
$IPorHostName='repolocal.localhost';
#Parametros requeridos para la asignacion del mirror
$release=$_REQUEST['release'];
$arch=$_REQUEST['arch'];
$repo=$_REQUEST['repo'];

#Mirrorlist Oficial extraido de CentOS
$MirrorsCentOS="
ftp://ftp.inf.utfsm.cl/pub/Linux/CentOS/$release/$repo/$arch
http://mirror.netglobalis.net/pub/centos/$release/$repo/$arch
http://mirror.gtdinternet.com/$release/$repo/$arch/
http://centos.teletalk.net.br/$release/$repo/$arch/
http://centos.ufms.br/$release/$repo/$arch/
http://mirror.globo.com/centos/$release/$repo/$arch/
http://centos.secrel.com.br/$release/$repo/$arch/
http://centos.ufes.br/$release/$repo/$arch/
http://centos.mirror.mendoza-conicet.gob.ar/$release/$repo/$arch/
http://mirrors.ucr.ac.cr/centos/$release/$repo/$arch/";
echo 'http://'.$IPorHostName.'/Centos/'.$release.'/'.$repo.'/'.$arch;
echo $MirrorsCentOS;
?>
Nota El valor de la Variable $IPosHostName puede contener el nombre que deseen dar a su Servidor
Configuracion de los servicios para que inicien de forma automatica y sean visibles en la red
chkconfig httpd on
Configuracion del firewall
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
service iptables save

Pruebas

En alguna de las maquinas que haya configurado intente buscar o instalar
sudo yum search ipa
Verifique el log de httpd acecess.log en /var/log/httpd.log
192.x.x.x - - [16/Jun/2013:05:22:09 -0430] "GET /?release=6&arch=x86_64&repo=os HTTP/1.1" 200 493 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:09 -0430] "GET /Centos/6/os/x86_64/repodata/repomd.xml HTTP/1.1" 200 3751 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:12 -0430] "GET /?release=6&arch=x86_64&repo=centosplus HTTP/1.1" 200 581 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:12 -0430] "GET /Centos/6/centosplus/x86_64/repodata/repomd.xml HTTP/1.1" 200 3457 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:13 -0430] "GET /?release=6&arch=x86_64&repo=contrib HTTP/1.1" 200 548 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:13 -0430] "GET /Centos/6/contrib/x86_64/repodata/repomd.xml HTTP/1.1" 200 2970 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:13 -0430] "GET /ep/?repo=6&arch=x86_64 HTTP/1.1" 200 212 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:13 -0430] "GET /epel/6/x86_64/repodata/repomd.xml HTTP/1.1" 200 4302 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:13 -0430] "GET /?release=6&arch=x86_64&repo=extras HTTP/1.1" 200 537 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:13 -0430] "GET /Centos/6/extras/x86_64/repodata/repomd.xml HTTP/1.1" 200 3550 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:13 -0430] "GET /?release=6&arch=x86_64&repo=updates HTTP/1.1" 200 548 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:13 -0430] "GET /Centos/6/updates/x86_64/repodata/repomd.xml HTTP/1.1" 200 3469 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [16/Jun/2013:05:22:13 -0430] "GET /walter/6/x86_64/repodata/repomd.xml HTTP/1.1" 200 3000 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [17/Jun/2013:03:16:17 -0430] "GET /Centos/6/os/x86_64/repodata/repomd.xml HTTP/1.1" 200 3751 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [17/Jun/2013:03:16:18 -0430] "GET /Centos/6/centosplus/x86_64/repodata/repomd.xml HTTP/1.1" 200 3457 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [17/Jun/2013:03:16:18 -0430] "GET /Centos/6/contrib/x86_64/repodata/repomd.xml HTTP/1.1" 200 2970 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [17/Jun/2013:03:16:18 -0430] "GET /epel/6/x86_64/repodata/repomd.xml HTTP/1.1" 200 4302 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [17/Jun/2013:03:16:19 -0430] "GET /Centos/6/extras/x86_64/repodata/repomd.xml HTTP/1.1" 200 3550 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [17/Jun/2013:03:16:19 -0430] "GET /Centos/6/updates/x86_64/repodata/repomd.xml HTTP/1.1" 200 3469 "-" "urlgrabber/3.9.1 yum/3.2.29"
192.x.x.x - - [17/Jun/2013:03:16:19 -0430] "GET /walter/6/x86_64/repodata/repomd.xml HTTP/1.1" 200 3000 "-" "urlgrabber/3.9.1 yum/3.2.29"

Comentarios Finales

Espero que este articulo haya sido de su agrado y de su utilidad

Derechos de Autoria

Usted es libre de:

        Copiar, distribuir y comunicar públicamente la obra
        Remezclar — transformar la obra

Reconocimiento: Debe reconocer los créditos de la obra de la manera especificada por el autor o el licenciador
(pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra).

Comercial: No puede utilizar esta obra para fines comerciales.
cc
Este articulo está bajo una licencia de Creative Commons Reconocimiento-NoComercial 3.0 Unported
Copyright 2013 Walter Cervini wcervini at gmail.com, All Rights Reserved

31 de mayo de 2013

Habilitando la Consola Serial en Centos

Con esto de las maquinas Virtuales y KVM , existe la posibilidad de conectarse a estas a traves de "virsh".
Ingresar en la consola en la maquina que esta ejecutando KVM y simplemente tipee virsh
deberá ver algo similar  a la imagen siguiente, y luego vuelva a presionar ENTER.


Si no le pregunta por el usuario , deberá configurar los parámetros de Kernel para poder habilitar la consola serial.
Para esto debea editar el archivo /boot/grub/grub.conf y anexar al final de la linea donde aparece KERNEL lo siguiente;

console=tty console=ttS0,115200n8



Guarde los Cambios y reinicie la maquina virtual.




28 de mayo de 2013

Discos compartidos con iSCSI en CentOS 6 (rev 1.0)



En la actualidad tengo algunos servidores con CentOS 6, mas la estación  en la cual trabajo. Esta ultima quedo sin espacio en disco, y en uno de los servidores tengo un disco de 1.0 Tb el cual presentare usando iSCSI.
Como primer paso instalo el paquete que presenta los targets a los iniciadores, configuramos para que el servicio sea persistente, e iniciamos el servicio para disponer del el en este momento

  • yum install scsi-target-utils
  • chkconfig tgtd on
  • service tgtd start

El segundo punto es configurar las LUNs de almacenamiento. Este puede ser un achivo plano, un volumen LVM o un dispositivo de bloque, y para este caso usare un volumen lvm que creare en el servidor.
Teniendo a disposicion un volumen LVM, lo siguiente sera exportar la unidad iSCSI y la LUN, para esto usaremos el comando tgtadm, que me permitira crear un target y asociarlo al storage creado anteriormente.

  • tgtadm --lld iscsi --op new --mode target --tid 1 --targetname iqn.2012-04.ve.com.cervini:disco1
--lld es el drive que usaremos, en este caso es iscsi
--op es la operacion que efectuaremos sobre el dispositivo, que en este caso es uno nuevo
--tid en el numero del target,
--targetname es el nombre del target en formato IQN o iSCSI Quilified Name

Luego asociamos el dispositivo a al volumen y la LUN

  • tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --backing-storage /dev/vg_walter/lv_home  
lo nuevo aqui es la lun y el dispositivo a usar para el storage.


Licencia de Creative Commons
Discos compartidos con iSCSI en CentOS 6 (rev 1.0) by Walter Cervini is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.

Interfaces Bondining con Bridge en Centos 6.4

En dias pasados estaba montado el grupo de Virtualización en un CentOS 6.4 sobre un Servidor "Dell Power Edge 2950".

No voy a entrar mucho en detalles, el lector conoce donde están ubicados cada uno de los archivos que mencionare a continuación:

Para configurar una interface "Bond" sobre un Bridge efectué los siguientes pasos:

  •  Instalar Bridge-Utils
Configurar las interfaces:

ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.10.253
NETMASK=255.255.255.0
NETWORK=192.168.10.0
BROADCAST=192.168.10.255
ONBOOT=yes
DNS1=192.168.10.1
GATEWAY=192.168.10.1
DELAY=0
SLAVE=bond0

ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BRIDGE=br0
USERCTL=no
ARP=no
BONDING_OPTS="mode=1 miimon=100"
BOOPROTO=static

ifcfg-eth0
DEVICE=eth0
HWADDR=00:24:E8:4F:21:B5
TYPE=Ethernet
UUID=ab0c1c06-14f2-4a9c-bae6-9b76a30425fb
ONBOOT=yes
USERCTL=no
SLAVE=yes
MASTER=bond0

ifcfg-eth1
DEVICE=eth1
HWADDR=00:24:E8:4F:21:B7
TYPE=Ethernet
UUID=42b86b65-b804-469c-a7d7-593cbcfa797c
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes

Adicionalmente cree el archivo /etc/modprobe.d/bonding.conf con la siguiente informacion

alias bond0 bonding


Eso es todo, espero les sirva este pequeño articulo, en caso de dudas; dejen sus comentarios.

12 de febrero de 2012

Utilizar API de Twitter con PHP

Utilizar API de Twitter con PHP:

Twitter es una de las redes sociales de mayor crecimiento, como ya todos sabemos permite a los usuarios postear mensajes de una longitud reducida en número de caracteres. A través de las API de Twitter cualquiera puede crear aplicaciones que comuniquen con el servicio de la mencionada red social.

Hay un gran número de posibilidades si nos planteamos comunicar nuestro sitio web con Twitter, no me refiero a la implementación sino a las diferentes funcionalidades que podemos integrar en nuestro sitio web si decidimos comunicarlo con Twitter.

En este caso vamos a ver la opción más sencilla pero a su vez también la más utilizada, actualizar el estado de una cuenta de Twitter desde un script PHP.

Si hacemos una búsqueda en Google seguramente encontremos tutoriales que nos explican como utilizar la API de Twitter gracias al uso de la librería CURL, pero este método quedo obsoleto hace unos meses y si intentamos implementarlo recibiremos el siguiente error: “basic authentication is not supported”

 

< ?php
include '../../twitter.php';
$message = 'New movie ...';
$url = 'http://twitter.com/statuses/update.xml';
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
if (empty($buffer)) {
 echo "error!";
} else {
 echo 'success!';
}
?>

Cómo acabamos de comentar este método ya no funciona ya que ahora es necesario el uso de Oauth

Para aquellos interesados en trabajar con la API de Twitter por primera vez y para aquellos que necesitan actualizar el código que ha quedado obsoleto en estos últimos meses debido al cambio, os recomiendo el siguiente artículo (en inglés).

Resumiendo un poco hay que realizar tres sencillos pasos:

1. Registrar una aplicación en: http://dev.twitter.com/apps/new. Tienes que dar a esta aplicación permisos de lectura y escritura para poder actualizar el estado de tu cuenta de Twitter.

2. Tienes que obtener 4 claves para conseguir actualizar el estado de la cuenta, estas son las claves necesarias: Consumer key, Consumer secret, Access Token (oauth_token), Access Token Secret (oauth_token_secret)

3. Descarga twitteroauth.

Ejemplo de uso (para actualizar el estado de una cuenta Twitter desde PHP):

< ?php
$consumerKey = 'insert your consumer key';
$consumerSecret = 'insert your consumer secret';
$oAuthToken = 'insert your access token';
$oAuthSecret = 'insert your token secret';

require_once(twitteroauth.php');

$tweet = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret);
$statusMessage = 'Prueba';
$tweet->post('statuses/update', array('status' => $statusMessage));
?>

Redhat en la Nube con OpenShift

Redhat a puesto en la Red su propia nube llamada OpenShift Express totalmente gratuita. En ella podremos montar aplicaciones
Java, Perl, PHP, Python y Ruby con un servidor de bases de datos como MySQL, Postgres o
MongoDB.  Al abrir una cuenta, se te asignara una URL única para tu aplicación y un repositorio
git asociado.  Los desarrollos seran almacenados en git automáticamente, esta accion desplegara la aplicacion en la nube de forma automática. Tambien tienen una versión no gratuita llamada Openshift Flex, que para obtenerla deberás darte de alta de la versión gratuita. Mas informacion en  https://openshift.redhat.com/app/ 

Crea tu propio mirrorlist en Centos (Rev 1)

Mucho del dia a dia lo realizo con repositorios locales de CentOS, Epel y mi repositorio personal.
Hago uso de los mirrorlist de Centos como segunda opcion y por supuesto los locales son de primer frente.
Para esto instalo apache y php en mi servidor de repositorio de paquetes, y modifico cada un de los archivos .repo contenidos en /etc/yum.repos.d/ .
El archivo original de CentOS-Base.repo contiene la siguiente informacion

[base]
name=CentOS-$releasever - Base
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#Fasttrack - packages by Centos Users
[fasttrack]
name=CentOS-$releasever - Contrib
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=fasttrack
#baseurl=http://mirror.centos.org/centos/$releasever/fasttrack/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Modificamos el archivo y colocamos en la linea anteriior al los mirror por defecto el nuestro quedando el archivo de congifuracion asi;
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out #baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
mirrorlist= http://10.1.1.1/?release=$releasever&arch=$basearch&repo=os
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist= http://10.1.1.1/?release=$releasever&arch=$basearch&repo=updates
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist= http://10.1.1.1/?release=$releasever&arch=$basearch&repo=extras
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist= http://10.1.1.1/?release=$releasever&arch=$basearch&repo=centosplus
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist= http://10.1.1.1/?release=$releasever&arch=$basearch&repo=contrib
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#Fasttrack - packages by Centos Users
[fasttrack]
name=CentOS-$releasever - Contrib
mirrorlist= http://10.1.1.1/?release=$releasever&arch=$basearch&repo=fasttrack
http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=fasttrack
#baseurl=http://mirror.centos.org/centos/$releasever/fasttrack/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


Luego creamos un archivo index.php que contenga la siguiente información:

<?php
$ip='10.1.1.1';
$release=$_REQUEST['release'];
$arch=$_REQUEST['arch'];
$repo=$_REQUEST['repo'];
if ($repo == 'epel'): 
    echo  'http://'.$ip.'/'.$repo.'/'.$release.'/'.$arch.'/';
elseif ($repo == 'walter'): 
    echo 'http://'.$ip.'/'.$repo.'/'.$release.'/'.$arch.'/';
else: 
    echo 'http://'.$ip.'/centos/'.$release.'/'.$repo.'/'.$arch.'/';
endif;
?>


Este archivo debe estar en el path por defecto de apache /var/www/html , y pos supuesto nuestro repositorio en la ruta definida por el mirrorlist "http://10.1.1.1/centos/"

mi alias de apache donde se encuentra el repositorio de paquetes es el siguientes

alias /centos /var/www/html/centos

<Directory /var/www/html/centos>
   Options Indexes FollowSymlinks
   AllowOverride none
   order allow,deny
   allow from all
</Directory>

el directorio que esta en apache es un enlace blando a /home/repos/centos, un usuario del sistema, otra cosa es configurar SELinux con el contexto de archivo para apache "httpd_sys_content_t"

21 de noviembre de 2009

Enviando Twits desde una shell

Para enviar mensajes por twitter debemos tener instalado curl y desde una consola ejecutar
curl -u user:pass -d status="Mensaje hasta 140 Caracteres" http://twitter.com/statuses/update.xml

6 de noviembre de 2009

Ser Ingeniero o ser Prostituta

Muchas de las profesiones se asemejan, y no es sus características, si no en el efecto a que conlleva, aqui le menciono solo algunas similitudes entre la profesion mas antigua del mundo "La Prostitucion", y una de las mas estudiada, "La Ingenieria de Sistemas"

Las similitudes a las que me refiero son las siguientes:
  1. Trabajas en horas extrañas. ¡Como las Prostitutas!
  2. Generalmente trabajas hasta tarde. ¡Como las Prostitutas!
  3. Generalmente eres más productivo por la noche. ¡Como las Prostitutas!
  4. Te pagan para mantener al cliente feliz. ¡Como las Prostitutas!
  5. El cliente paga mucho más pero tu jefe se queda con casi todo el dinero. ¡Como las Prostitutas!
  6. Cobras por hora pero tu tiempo se extiende hasta que termines. ¡Como las Prostitutas!
  7. Si eres bueno, nunca estás orgulloso de lo que haces. ¡Como las Prostitutas!
  8. Te recompensan por satisfacer las fantasías de tus clientes. ¡Como las Prostitutas!
  9. Es difícil tener y mantener una familia. ¡Como las Prostitutas!
  10. Cuando te preguntan en qué trabajas no lo puedes explicar. ¡Como las Prostitutas!
  11. Tus amigos se distancian de ti y tú sólo andas con otros igual que tu. ¡Como las Prostitutas!
  12. El cliente paga tu cuenta del hotel y por horas trabajadas. ¡Como las Prostitutas!
  13. Tu jefe tiene un buen coche. ¡Como las Prostitutas!
  14. Cuando vas a hacer una “asistencia” al cliente estás óptimo. ¡Como las Prostitutas!
  15. Pero cuando vuelves pareces haber salido del infierno. ¡Como las Prostitutas!
  16. Evalúan tu “capacidad” con horribles pruebas. ¡Como las putas!
  17. El cliente siempre quiere pagar menos y encima quiere que hagas maravillas. ¡Como las Prostitutas!
  18. Cada día al levantarte dices “NO VOY A HACER ESTO TODA MI VIDA!!!” ¡Como las Prostitutas!
  19. Sin conocer nada de su problema los clientes esperan que les des el consejo que necesitan. ¡Como las Prostitutas!
  20. Si las cosas salen mal es siempre culpa tuya. ¡Como las Prostitutas!
  21. Tienes que brindarle servicios gratis a tu jefe, amigos y familiares. ¡Como las Prostitutas!

Ya ven por que pienso retirarme de la Ingenieria De Sistemas
Copyright © 2009 Locuras Geek es un proyecto Web de Miguel Mariano

11 de agosto de 2009

MySQL bash_completion

Para los que hacen uso de bash_completion, aqui les dejo el script para completar comandos mysql, o lo pueden descargar aqui

# mysql(1) completion
#
have mysql &&
_mysql()
{
        local cur prev

        COMPREPLY=()
        cur=`_get_cword`
        prev=${COMP_WORDS[COMP_CWORD-1]}

        case "$prev" in
        -u)
                COMPREPLY=( $( compgen -u -- $cur ) )
                return 0
                ;;
        *)
                ;;
        esac

        COMPREPLY=( $( compgen -W '-? -I -A -B -C -c -# -D -e -E -f -g -G -i -b -h -H -X -L -n -N -o -O -p -P -q -r -s -S -t -T -u -U -v -V' -- $cur ) )

        COMPREPLY=( "${COMPREPLY[@]}" \
                    $( compgen -W '--auto-rehash --no-auto-rehash --batch --character-sets-dir --default-character-set --comments --compress --debug --database --delimiter --execute --vertical --force --named --no-named-commands --ignore-spaces --local-infile --no-beep --host --html --xml --line-numbers --skip-line-numbers --unbuffered --column-names --skip-column-names --sigint-ignore --set-variable --one-database --pager --no-pager --password --port --prompt --protocol --quick --raw --reconnect --silent --socket --ssl --ssl-ca --ssl-capath --ssl-cert --ssl-cipher --ssl-key --ssl-verify-server --table --debug-info --tee --no-tee --user --safe-updates --i-am-a-dummy --verbose --version --wait --connect_timeout --max_allowed_packet --net_buffer_length --select_limit --max_join_size --safe-updates --secure-auth --show-warnings --print-defaults --no-defaults --defaults-file --defaults-extra-file' -- $cur ) )
} &&
complete -F _mysql mysql

8 de mayo de 2009

Huawei U1211 como modem en Linux

Estaba en búsqueda de algún teléfono móvil que me sirviera para navegar en internet, económico y que tuviera capacidades de modem, los elegidos fueron Motorola y Huawei. Me decidi por huawei, basicamente por costo y adicionalmente maneja la banda 3G.
La gran sorpresa es que no existen drivers o manejadores bajo linux, asi que me dedique a buscar en internet y los resultados fueron devastadores.
Basicamente voy a explicarles los pasos que realize y el respectivo test de velocidad:
Primero conectamos y verificamos que el dispositivo sea reconocido de forma generica.Una vez conectado ejecutamos lsusb -v |less y buscamos huawei.



Aqui buscamos dos parametros que son el codigo de vendedor y el codigo del producto.


Ahora bien Teniendo los codigos montaremos el modulo usbserial, (nota: para aquellos que estén usando ubuntu deben tener el ultimo kernel 9.04 instalados 2.6.28-12-generic, ya que la versiones de kernel anteriores usbserial no viene como modulo).

modprobe usbserial vendor=0x12d1 product=0x1008

Listo el pollo como decimos en Venezuela, ahora tendremos dos dispositivos nuevos llamados ttyUSB0 (el modem) y ttyUSB1 (no he averiguado que es).
De aqui en adelante es coser y cantar, usando el comando wvdialconf, debera reconocer el dispositivos antes mencionados y generara un archivo de configuracion /etc/wvdial.conf.
Deberan configurar este archivo con informacion adicional como el numero a discar, password, user, etc, solo voy a mostrarles mi archivos de configuracion para que tengan una idea, ya que buscando en Google hay in sinfin de opciones.
Lo que queria recalcar es como usar este dispositivo movil como model para conectarse a internet.
Aqui les dejo un test de velocidad que a mi parecer no esta nada mal para esta conectado en la banda 2G.



Aqui les dejo mi archivo de configuracion wvdial.conf

[Dialer digitel]
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Abort on No Dialtone = off
Password = ''
Check Def Route = off
Phone = *99#
Idle Seconds = 0
Abort on Busy = off
;Minimize = on
Modem Type = Analog Modem
Stupid Mode = on
Baud = 9600
Auto DNS = on
Dial Command = ATM1L3DT
Auto Reconnect = off
Ask Password = off
Init = ATX3
ISDN = off
Dial Attempts = 1
Username = ''
;Dock = on
Carrier Check = on
Init3 = AT+CGDCONT=1,"IP","gprsweb.digitel.ve"
Modem = /dev/ttyUSB0


27 de abril de 2009

Guerra de Las Galaxias en ASCII

Me llamo mucho la atencion de un blog en peru sobre la serie Star Wars en Ascii sobre telnet cool no lo creen, lo cierto es que quien lo hizo tuvo mucho ingenio, aqui les dejo el link:
telnet towel.blinkenlights.nl

18 de febrero de 2008

Reproductores con Codecs Propietarios

Muchos de los problemas que pasan los usuarios con sus reporductores de audio y video, son los codecs asociados con estos mismos. En la pagina de Eidast (http://eidast.blogspot.com), encontre un articulo que solventa esta problematica
Instalar los drivers para exaile

yum install gstreamer-plugins-ugly

Y para darle soporte para poder ver DVDs se debe primero eliminar el totem que viene por defecto

yum remove totem

y luego instalar el reproductor de video con los codecs adecuados

yum install totem-xine totem-xine-plparser libdvdcss libdvdnav xine-lib-extras-nonfree

17 de febrero de 2008

Controlando Exaile con tu movil a traves de Bluetooth

Desde hace varios dias estaba buscando aplicaciones que pudiera controlar mi reproductor de musica (Exaile) en Fedora 8, usando los dispositivos bluetooth de mi telefono Nokia E62 y mi laptop Thinkpad T42. Para esta ivestigacion use como anyremote, ganyremote, anyremote-doc, anyremote-data.

Como primer punto debemos poseer Bluetooth tanto en el PC como en el telefono movil. Adicionalmente tener instalados los siguientes paquetes

  • bluez-gnome
  • Bluez-utils

Instalando todas las aplicaciones antes mencionadas, pongamos manos a la obra y comencemos la configuracion:

Verificando el dispositivo Bluetooth en linux
Por lo General el dispositivo bluetooth en linux es identificado como rfcomm, el cual podemos identificar su existencia con el siguiente comando:''ls -l /dev/rfcomm*''en caso de no exista el dispositivo en nuetro dispositivo podemo crearlo usando en comando mknod como sigue a continuacion

-m 666 /dev/rfcomm0 c 216 0

Creado el dispositivo configuremos la conexión al blootooth editaremos primero el archivo rfcomm.conf

como primer paso debemos conocer la direccion mac de nuestro movil y para esto usaremos el comando hcitool

hcitool scan


Este comando presentara una lista con todos los dispositivos detectados por nuestro pc un ejemplo de mi maquina es el siguiente:

root@volp-laptop bluetooth# hcitool scan
Scanning ...
00:18:42:BD:DA:52 VolpE62
root@volp-laptop bluetooth#

y por otra parte debemos conocer el canal por el cual nos conectaremos, para lo cual usaremos el comando sdptool

sdptool browse mac-del-movil | egrep “Serial|Dialup|Channel”

y este el resultado
root@volp-laptop bluetooth# sdptool browse 00:18:42:BD:DA:52 |egrep "Serial|Dialup|Channel" "Dialup Networking" (0x1103)
Channel: 1

"Dialup Networking" (0x1103)
Channel: 9
Channel: 28
Channel: 29
Channel: 15
Channel: 10

Channel: 11
Channel: 12
Channel: 13
Channel: 14
Channel: 8

Los servicios por los cuales controlaremos el PC a traves del telefono puede ser Dialup Network o Serial port. En mi caso es el cana 1
ahora editemos el archivo rfcomm.conf

#RFCOMM configuration file.
rfcomm0 {
#Automatically bind the device at startup

bind yes;
#Bluetooth address of the device
#Aqui la mac del dispositivo que capturamos con el PC
device 00:18:42:BD:DA:52;
#RFCOMM channel for the connection
#Aqui el canal que capturamos con el PC
channel 1;
#Description of the connection
comment "Control de Exaile";

}


Guardamos la configuracion y listo.

Podemos darle un poco de seguridad y colocarle un codigo pin para poder accesar nuestra consola de control del reproductor. Esto lo hacemos creando un archivo dentro de la carpeta /etc/bluetooth que llamaremos pin alli colocaremos el numero que deseemos para pin como ejemplo usaremos 123456.

Por ultimo instalaremos el cliente en nuetro telefono llamado anyremote.jar el cual lo enviaremos al mismo via bluetooth.

Una vez instalado, ejecutamos exayle, configuramos ganyremote en el PC, para la aplicacion la cual queremos controlar, en este caso exaile



Luego solo nos falta presionar run.



Hasta este punto tenemos corriendo el server de anyremote.

Ahora en el telefono ejecutamos anyremote, en la opciones ejecutamos search, y debemos ver nombre_maquila-anyRemote.

Al seleccionar esa conecion, nos solicitara el password o numero de pin, y aparecera una consola la cual podemos controlar nuestro media player via bluetooth.

El enlace en donde pueden conseguir todos los paquetes necesarios en formato RPM es el siguiente:
http://anyremote.sourceforge.net/dload.html

Informacion adicional pueden conseguir en:
http://anyremote.sourceforge.net/


19 de agosto de 2007

Validacion de Usuarios con OpenId

El eterno problema de todo desarrollador web, es la autenticacion de los usuarios.
Pues bien, en la actualidad existen, sitios web que facilitan este trabajo (http://myopenid.com), los cuale se encargar de dar seguridad a tu site, esto incluye la creacion de certificados, para ser usados con acceso directo. El unico problema con estos sistemas, es que no existe casi librerias para los diferentes manejadores de contenidos, haciendo casi nulo el uso de esta herramienta.

9 de junio de 2007

Emulacion de Router Cisco

Esta disponible para el mundo linux un emulador de Routers, llamado Dynamips el cual trabaja en conjunto con Dynagen. Lo mas cool de esta aplicacion que requieres las imagenes de IOS de los routers a emular.
En particular es capaz de emular routers cisco con IOS series 2691, 3620, 3640, 3660, 3725, 3745, and 7200. Su uso es bien sencillo ya que la configuracion de los mapas de red, se efectua en archivos plano con estandares de INI.
Paso previo a iniciar el router es desempaquetar en archivo bin del IOS, ya que como conocen, los routers cisco descomprimen o desempaquetan los ios en el inicio del equipo y lo colocan en un area de memoria. Pues bien, cumplido los procesos antes mecionados, podemos dar inicio a nuestro(s) router(s), y efectuar las pruebas que deseamos.
Otro punto adicional es que podemos incorporar Switch, maquinas y redes diferentes a los archivos de configuracion.
Por otra parte todos los dispositivos que forman parte de la red, tienen terminales individuales, lo que facilita su uso. Si quieren conocer un poco mas sobre este tema pueden descargar el tutorial en la pagina de Dynagen.

26 de mayo de 2007

Instalando VMware Server en Fedora Core 6

Existen muchos port sobre problemas en la instalacion de VMware Server sobre Fedora, muchos con trucos que no funcionan, sobre todo si posees las ultimas actualizaciones del Kernel con la ultima version de VMware Server. Supongo que han dado tantas vueltas en distintas paginas y conocen como efectuar la instalacion de VMware. Basicamente estos son los requerimientos o la instalacion que efectue en mi caso, por lo tanto voy a obviar muchos pasos e involucrarnos en concfreto al problema.

Requerimientos:

Kernel version: 2.6.20-1.2948.fc6
VMware server Version: 1.03 en formato RPM
Instalar kernel-devel y Xinetd.

Post Instalacion

Una vez instalados todos los requerimientos, debemos ejecutar vmware-config.pl
y por supueto, el error.
Este es parte de error que genera la configuracion :



Using 2.6.x kernel build system.
make: se ingresa al directorio `/tmp/vmware-config10/vmmon-only'
make -C /lib/modules/2.6.20-1.2948.fc6/build/include/.. SUBDIRS=$PWD
SRCROOT=$PWD/. modules
make[1]: se ingresa al directorio
`/usr/src/kernels/2.6.20-1.2948.fc6-i686'
CC [M] /tmp/vmware-config10/vmmon-only/linux/driver.o
In file included from
/tmp/vmware-config10/vmmon-only/linux/driver.c:80:
/tmp/vmware-config10/vmmon-only/./include/compat_kernel.h:21:
error: expected declaration specifiers or ‘...’
before ‘compat_exit’
/tmp/vmware-config10/vmmon-only/./include/compat_kernel.h:21:
error: expected declaration specifiers or ‘...’
before ‘exit_code’
/tmp/vmware-config10/vmmon-only/./include/compat_kernel.h:21:
aviso: el tipo de dato por defecto es ‘int’ en la
declaración de ‘_syscall1’
make[2]: *** [/tmp/vmware-config10/vmmon-only/linux/driver.o] Error 1
make[1]: *** [_module_/tmp/vmware-config10/vmmon-only] Error 2
make[1]: se sale del directorio
`/usr/src/kernels/2.6.20-1.2948.fc6-i686'
make: *** [vmmon.ko] Error 2
make: se sale del directorio `/tmp/vmware-config10/vmmon-only'
Unable to build the vmmon module.
For more information on how to troubleshoot module-related problems,
please
visit our Web site at
"http://www.vmware.com/download/modules/modules.html" and
"http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".
Execution aborted.

Como se observa el error es causado en una de las cabeceras de vmmon de VMware, y eso es lo que vamos a solventar.

Codigo de la cabecera compat_kernel.h
A continuacion el codigo de la cabecera compat_kernel.h y la linea 21 resaltada en blanco. Lo que hacemos es colocarla como comentario, y solventado el problema. Es usado para procesadores de 64 bit y arm y provee un acceso a la funcion de salida Exit().




#ifndef
__COMPAT_KERNEL_H__
# define __COMPAT_KERNEL_H__
#include <asm/unistd.h>
/*
* Used by _syscallX macros. Note that this is global
variable, so
* do not rely on its contents too much. As exit() is only
function
* we use, and we never check return value from exit(), we
have
* no problem...
*/
extern int errno;
/*
* compat_exit() provides an access to the exit() function. It
must * be named compat_exit(), as exit() (with different
signature) is * provided by x86-64, arm and other (but not by
i386).
*/
#define __NR_compat_exit __NR_exit
//static
inline _syscall1(int, compat_exit, int, exit_code);

/*
* wait_for_completion and friends did not exist before 2.4.9.
*/
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 9)
#define compat_complete_and_exit(comp, status) complete_and_exit(comp,
status)
#else
/*
* See compat_wait_for_completion in compat_completion.h.
* compat_exit implicitly performs an unlock_kernel, in
resident code,
* ensuring that the thread is no longer running in module
code when the
* module is unloaded.
*/
#define compat_complete_and_exit(comp, status) do { \
lock_kernel(); \
up(comp); \
compat_exit(status); \
} while (0)
#endif
#endif /* __COMPAT_KERNEL_H__ */

Se preguntaran donde consigo este archivo.....
El mismo esta en un archivo comprimito tar llamado vmmon.tar, que instala vmware y en el caso de fedora es instalado en /usr/lib/vmware/modules/source/vmmon.tar, debemos descomrpimir este archivo en una carpeta temporal. Al descomprimirlo, buscar dentro de la carpeta vmmon_only/include el archivo compat_kernel.h y editarlo. En la edicion del archivo colocar como comentatio la linea 21, anteponiendo una doble barra de division (//).
Guardar la modificacion, empaquetar nuevamente directorio vmmon en formato tar y copiarlo nuevamente en /usr/lib/vmware/modules/source/vmmon.tar.
Ahora podemos ejecutar vmware-config.pl y responder a las preguntas que nos haga el instalador.

Esto es todo, si tienen alguna duda no duden en escribirme.

19 de mayo de 2007

Campaña de Software Libre

El fin de esta Campaña no es otro que alentarlo a que descubra, utilice y se cambie al Software Libre.
Hoy en día existe una gran gama de soluciones más rápidas, eficaces y seguras, desde sistemas operativos, gestores de correo, ofimática y navegadores.
Nosotros preferimos usar el Navegador Firefox. Por favor no se sienta agredido o discriminado, si ud. está utilizando IExplorer, puede navegar, pero sepa que no compartimos su elección.

Banner Mejor Cámbiese

10 Razonez para usar Software Libre

01. Mayor Estabilidad y Rapidez

Cuando Netscape demandó a Microsoft por competencia desleal al incluir Internet Explorer con todas las versiones de Windows, la empresa de Bill Gates se defendió fusionándolos, para argumentar que eran inseparables. Desafortunadamente para los usuarios, este matrimonio forzoso derivó en un sistema operativo más inestable de lo normal: ahora cuando se cae Internet Explorer - lo que no es raro - se cae toda la interfaz, haciendo necesario reiniciar el PC.

Firefox es un programa independiente, con un código mejorado por decenas de programadores que lo hacen más sólido y estable. Si llega a fallar basta con reiniciarlo; no se lleva con él a todo el sistema operativo. Pero no sólo eso. Firefox procesa los documentos HTML más rápido que IE (comprobado cronómetro en mano) e incluso es más veloz de iniciar.


02. Seguridad y Privacidad

Prácticamente todos los días - no exagero - se descubre una nueva vulnerabilidad en Internet Explorer. Microsoft debe publicar parches constantemente para evitar que sirva como puerta de entrada a hackers curiosos o malintencionados. Esta situación ha llevado a que instituciones como el CERT - del propio gobierno estadounidense - recomienden usar otros navegadores con mejores estándares de seguridad.

La principal culpable es una tecnología de Microsoft llamada ActiveX, la que permite instalar software a través del navegador en forma automática. Esta idea que en un principio nos facilitaría la vida a nosotros también se la facilitó a los inescrupulosos, quienes ahora la aprovechan para llenar nuestras máquinas de programas espía, publicidad no deseada, marcadores telefónicos, virus y otras basuras que atiborran el disco duro, consumen recursos o asfixian la conexión a Internet. ¿Nunca se han preguntado de dónde salen esos malditos anuncios de casinos o por qué la página de inicio cambia cada vez que abren IE?...

Firefox no incluye ActiveX, por lo que la instalación de cualquier programa desde la Red debe pasar necesariamente por nuestra autorización. Adicionalmente, incorpora una amplia gama de opciones para administrar nuestra privacidad como no registrar los sitios que hemos visitado o vaciar las cookies que dejan los sitios, al cerrar el navegador. También podemos rechazarlas de antemano y especificar si queremos que Firefox almacene en forma segura nuestros datos y contraseñas.


03. Bloqueo de ventanas emergentes (pop-ups)

Y hablando de molestias, los usuarios de IE lloraron, patalearon e hicieron berrinche para que se les proporcionara una forma de librarse de esas moscas de la Web que son las ventanas emergentes, pero Microsoft hizo oídos sordos hasta sólo algunos meses atrás cuando lanzó la barra de MSN. Ahora la empresa nos chantajea obligándonos a usar un software adicional - con herramientas que tal vez no queremos - para bloquearlas.

Tal como apuntaba mi amigo Javier en nuestra reunión de ayer, esta "novedad" de IE ya la disponían los primeros usuarios de Mozilla años atrás, y por supuesto Firefox la trae incorporada, sin necesitar de software adicional.


04. Navegación por pestañas (tabs)

Otra gracia que incorpora Firefox casi desde su creación es la navegación por pestañas, una forma increíblemente eficaz e intuitiva para tener varias páginas disponibles al mismo tiempo, sin saturar la barra de tareas.

Es insólito que Microsoft todavía no habilite una función similar para Internet Explorer (sólo se puede realizar con software de terceros) y se haya conformado con habilitar un contador de ventanas abiertas en Windows XP, lo que obliga a explorar para dar con el sitio deseado. Parafraseando a Michael Moore, "Shame on you, Mr. Gates".


05. Personalizable (Temas) y Extensible (Extensiones)

Firefox es un navegador a la medida y a la pinta de cada cual. Con un par de pulsaciones se puede escoger entre una creciente gama de temas con los cuales "vestir" a nuestro navegador, desde los más pulcros y tecnificados, hasta otros tiernos e hilarantes. ¡Incluso se lo puede disfrazar de Internet Explorer o Safari!... eso sí es tolerancia.

Pero lo mejor de todo son las extensiones, pequeñas adiciones gratuitas elaboradas por cientos de desarrolladores alrededor del mundo que cumplen todas las labores imaginables. Pasearemos por ellas en otra ocasión, pero les contaré sobre cuatro sin las que ya no puedo vivir: RadialContext provee una pequeña interfaz al pulsar el botón derecho del ratón que nos dejará todas las opciones del navegador a un clic de distancia. Basta unos minutos de entrenamiento y ya verán cómo empiezan a extrañarla la próxima vez que los fuercen a usar IE.

TabBrowser Extensions inyecta esteroides sobre las opciones de manejo de pestañas de Firefox, permitiendo cambiarlas de lugar, capturar los enlaces que abren nuevas ventanas del navegador y mucho más.

Por su parte, IEView nos recuerda que la Web todavía gira en torno a IE por lo que nos da una opción para abrir un potencial sitio Web que no funcione en Firefox directamente en Internet Explorer (también útil para chequear compatibilidad al desarrollar un sitio).

Y ya que hablamos de desarrollo Web, mi favorita: Web Developer Tool, una fantástica barra que hará las delicias de todo diseñador al permitirle chequear al instante distintas resoluciones, aislar imágenes sin ALT, examinar CSS, probar formularios, validar código o accesibilidad en el W3C y muchas otras de esas cosas alienígenas que nos ponen los ojos turnios.

Si el diseño Web es lo tuyo, es un deber conseguirla.


06. Multiplataforma y Multilingüe

Firefox es todo un cosmopolita. Está disponible para seis plataformas distintas - Windows, Linux y Macintosh entre ellas - y vienen más en camino, incluyendo dispositivos portátiles como teléfonos celulares. Si le sumamos que sus versiones ya están traducidas a 17 idiomas, comprenderemos que este navegador es capaz de acompañarnos independiente del sistema o bandera que tengamos. Eso es más de lo que puede decir Microsoft, que ni siquiera ha lanzado IE para Linux para no 'dormir con el enemigo'.


07. Facilidad de Instalación e Importación

¿Preocupado de que abandonar IE sea un trauma?. No podrían ser temores más infundados. Firefox incluye un asistente de instalación muy sencillo, en el idioma que elijas. Si tienes Favoritos que deseas conservar, Firefox te dará la posibilidad de importarlos durante el mismo proceso. Adicionalmente podrás elegir el momento en que desees hacer de Firefox tu navegador por defecto... aunque estoy seguro de que no te tomará mucho decidirlo.


08. Cumple los Estándares

El idioma de la Web es el HTML, y como todo lenguaje tiene sus propias normas 'ortográficas', que son los estándares. Estos ayudan a interpretar correctamente lo que el diseñador o desarrollador quiso hacer en un sitio, con independencia del navegador, sistema o plataforma en uso. Históricamente, IE ha hecho caso omiso de los estándares, implementándolos a su antojo e incluso inventando su propio lenguaje, destrozando la Web en una miríada de sitios "IE only".

Firefox cumple fielmente los estándares recomendados por el W3C, al igual que sus amigos Opera, Safari, Konqueror, Epyphany o Galeon... así que ya sabes quién es el malhablado del barrio.


09. Búsqueda Directa

Simple, sencillo, directo. Sin necesidad de "barritas", Firefox incorpora un espacio en su interfaz para realizar búsquedas no sólo en uno, sino en cientos de motores de búsquedas, desde Yahoo hasta Eurekster, pasando por todas las versiones locales de Google, incluyendo la chilena.

Pero eso no es todo: se pueden agregar búsquedas en diccionarios, traductores, enciclopedias, sitios de compras, críticas de películas, universidades y miles que se agregan día a día. Por ejemplo, en mi navegador tengo un acceso directo al Diccionario de la RAE y otro a un diccionario de inglés. Basta ingresar el término, pulsar aceptar y el resultado salta a la pantalla.

Creo que el señor Sopena puede ir buscándose otro empleo.


10. Integración con RSS

Y para finalizar, una yapa que ni los foxeros más fervorosos nos esperábamos. Firefox es capaz de marcar sitios compatibles con el sistema RSS, lo cual permite saber si han sido actualizados sin necesidad de visitarlos.

Por ejemplo, ustedes podrían marcar Francotirador para visualizar sobre la interfaz en qué día y hora publiqué por última vez, de forma de ingresar sólo cuando haya algo nuevo. Sumamente útil cuando solemos visitar decenas de sitios al día - especialmente bitácoras - y no queremos perder tiempo abriéndolos todos sólo para descubrir que apenas unos cuantos fueron renovados. Usar esta función es sumamente fácil, pero pueden leer más sobre ella en esta publicación de Juan Pablo Aqueveque.

Fuentes: Christian Leal R. (Andlynx)

Share Up To 110 % - 10% Affiliate Program