Conky : El monitor del sistema más versatil

conkyConky es un software libre para monitorear el estado de sistemas basados en linux. Lo mejor es de conky es su gran versatilidad, dispone de su propio lenguaje de scripts, este script nos permite por ejemplo mostrar la salida de un comando cada cierto tiempo. Por ejemplo tail -n 5 /var/log/messages , mostrar textos fijos, conky tiene una gran lista de variables predefinidas, podemos poner lineas, tablas, graficos y todo ello del color que queramos. Tenemos una innumerable lista de posibilidades, pero lo mejor para empezar es estudiar scripts que la comunidad pone a disposición, y siguiendo la filosofía de software libre mejorandolo y adaptandolo a nuestras necesidades, para despues volverle a poner a disposición de la comunidad. Siguiendo esta filosofía aqui os pongo mi .conkyrc. Para configurar vuestro conky igual que el mio, debeis escribir en consola: gedit ~/.conkyrc y pastear todo este script, despues es fácil analizar la sintaxis y modificarlo a nuestras necesidades:

# Algunos trozos basadas en : http://ubuntuforums.org/showthread.php?t=281865&page=172
# Requiere : Hddtemp y lm-sensors
# makiolo@gmail.com

background no
use_xft yes
xftfont Terminus:size=8
out_to_console no
update_interval 2.0
total_run_times 0
own_window no
double_buffer yes
draw_shades no
draw_outline no
draw_borders no
stippled_borders 8
border_margin 12
border_width 1
default_color white
default_shade_color black
default_outline_color white
alignment top_right
maximum_width 270
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
gap_x 12
gap_y 24
no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 2
override_utf8_locale yes
use_spacer yes

TEXT
${color #000000}SISTEMA ${hr 2}${color}
${color #ddaa00}PC:${alignr} ${color}Linux Ubuntu 7.10, $nodename
${color #ddaa00}Kernel :${alignr}${color}$kernel
${color #ddaa00}Tiempo encendido:${alignr} ${color }$uptime

${color #000000}CARGA DEL SISTEMA ${hr 2}${color}
CPU 0 (${freq_g cpu0}Ghz): ${color #FF0000} ${color #ddaa00} ${cpu cpu1}% ${color #ff0000}${execi 5 sensors | grep "Core 0" | cut -c15-17}$color °C ${color}${cpubar cpu1}
CPU 1 (${freq_g cpu1}Ghz): ${color #FF0000} ${color #ddaa00} ${cpu cpu2}% ${color #ff0000}${execi 5 sensors | grep "Core 0" | cut -c15-17}$color °C ${color}${cpubar cpu2}
Temperatura tarjeta gráfica: ${color #FF0000} ${execi 30 nvidia-settings -q gpucoretemp | grep '):' | awk '{print $4}' | cut -c -2}$color °C
${cpugraph cpu0 20,270 000000 6495ED}
${font Liberation Sans:size=9}${color #000000}PROCESO${alignr}CPU 	   PID  ${color}
${color #ddaa00}${top name 1}$alignr${top cpu 1}%${top pid 1}
${color #F0F8FF}${top name 2}$alignr${top cpu 2}%${top pid 2}
${color #F0F8FF}${top name 3}$alignr${top cpu 3}%${top pid 3}
${color #F0F8FF}${top name 3}$alignr${top cpu 4}%${top pid 4}
${color #F0F8FF}${top name 3}$alignr${top cpu 5}%${top pid 5}
${color #F0F8FF}...${alignr}... 	   ...  $font
${color}$processes procesos $alignr ($running_processes despiertos)

${color #000000}MEMORIA ${hr 2}$(color)
${color}RAM al $memperc% ${color 000066}${membar 5,00}

${color #000000}DISCO DURO ${hr 2}${color}
${color #ddaa00}Temperatura:${alignr}${color lightgrey}${exec nc localhost 7634 | cut -f 4 -d "|"}º C
${color #ddaa00}Lectura: ${alignr}${color lightgrey}$diskio_read
${color #ddaa00}Escritura: ${alignr}${color lightgrey}$diskio_write
${diskiograph 20,270 000000 941545}
${color #ddaa00}Ubuntu: ${color lightgrey}${fs_used /} / ${fs_size /} ${color 000066}${fs_bar 6 /}$color
${color #ddaa00}XP: ${color lightgrey}${fs_used /media/windowsXP} / ${fs_size /media/windowsXP}  ${color 000066}${fs_bar 6 /media/windowsXP}$color

${color #000000}ALIMENTACIÓN ${hr 2}${color}
${color #ddaa00}Enchufe:${alignr} ${color}${acpiacadapter}${color}
${color #ddaa00}Batería:${alignr}${color}${battery BAT1}

${color #000000}INTERNET ${hr 2}${color}
${color #ddaa00}IP Publica: ${color #EAE52F}${alignr}${execi 7200 lynx -dump www.whatismyip.com | grep "Your IP Address Is" | awk '{print $5}'}
${color #ddaa00}WLan: ${color }$alignr${execi 7200 ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | grep -v '172.16.235.1' | grep -v '192.168.148.1' | cut -d: -f2 | awk '{ print $1}'}
${color #ddaa00}SSID: ${color }$alignr${wireless_essid wlan0}
${color #ddaa00}Quality: $alignr${color }${wireless_bitrate wlan0} ${wireless_link_qual_perc wlan0}
${wireless_link_bar wlan0}
${color lightgrey}Download:${color} ${downspeed wlan0} KB/s$alignr${color lightgrey} Upload:${color} ${upspeed wlan0} KB/s
${color}${downspeedgraph wlan0 20,200 ddaa00 ddaa00} ${color}${alignr}${upspeedgraph wlan0 20,70 ddaa00 ddaa00}
${color lightgrey}Descargado: ${color}${totaldown wlan0}$alignr${color lightgrey}Subido: ${color}${totalup wlan0}
${color slate grey}Conexiones ${color lightgrey}Entrada: ${color #ff0000}${tcp_portmon 1 32767 count} ${color lightgrey}Salida: ${color #ff0000}${tcp_portmon 32768 61000 count} ${color #ddaa00}Total: ${color #ff0000}${tcp_portmon 1 65535 count}

Enlaces útiles:
Web de Conky
Foro ubuntu con .conkyrc de la comunidad
Variables predefinidas por conky
Comandos de confugiración

Como hacer juegos profesionales: Linux + OGRE + PhysX 2ª Parte

1ª Parte : Introducción
2ª Parte : Nuestra Primera aplicación

Nuestra primera aplicación

Vamos a crear 2 cubos, de manera que lo dejaremos caer, y se comportan con una física real. Al principio los tutoriales serán mucho de copy & paste, para entrar a la acción rapidamente, despues se ira explicando más casa cosa.

Empezamos a escribir código

  • Creamos una carpeta para empezar nuestro proyecto : mkdir -p ~/proyectos/juegosProfesionales
  • Nos cambiamos a nuestro nuevo directorio de trabajo : cd ~/proyectos/juegosProfesionales
  • Creamos un main.hpp : gedit main.hpp main.cpp
  • En el main.hpp pegamos esto :
    Leer más »

¡¡¡Aprobé el carnet de conducir!!! :D

Os meto un gran offtopic al blog pero hoy me he quitado un gran peso de encima. He aprobado el carnet de conducir!. Solo eso, no creo k le interesa a nadie que visite este blog pero weno xD.

Consejos para el práctico

  • Piensa que vas solo en el coche, además como tu profesor se callará iras más concentrado que nunca. La realidad es que detras tienes un pavo con un bazoka apuntandote deseando que a su criterio grites: Disparame!
  • Si eres nervioso (como yo) empieza 1º
  • Trata de abusar de la 3ª, para rectas en ciudad, para entrar o salir de autopista …

Aunque sea Off-Topic, me interesa escuchar vuestras experiencias.

Expresiones regulares útiles

En este post ire poniendo algunas expresiones regulares que frecuentemente uso y siempre pierdo el “snippets“. Estos ejemplos estan escritos en PHP, pero son altamente portables estudiando simplemente que función en nuestro lenguaje analiza expresiones regulares. Algunas expresiones regulares no son muy buenas, asi que poner en los comentarios más expresiones regulares y os ire añadiendo.

//Nombre de usuario
//Acepta entre 4 y 28 caracteres de largo, alpha-numérico y acepta guiones_bajos.

$string = "userNaME4234432_";
if (preg_match('/^[a-z\d_]{4,28}$/i', $string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Direcciones de email

$string = "first.last@domain.co.uk";
if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Código postal

$string = "55324-4324";
if (preg_match('/^[0-9]{5,5}([- ]?[0-9]{4,4})?$/', $string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Dirección IP

$string = "255.255.255.0";
if (preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/',$string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Color hexadecimal

$string = "#666666";
if (preg_match('/^#(?:(?:[a-f\d]{3}){1,2})$/i', $string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

//Fechas

$string = "10/15/2007";
if (preg_match('/^\d{1,2}\/\d{1,2}\/\d{4}$/', $string))
{
    echo "el patrón coincide con = ".$string."<br />";
}

Fuente : http://www.blogandia.com/uncategorized/8-expresiones-regulares/

Como hacer juegos profesionales: Linux + OGRE + PhysX 1ª Parte

1ª Parte : Introducción
2ª Parte : Nuestra Primera aplicación

Llevo mucho tiempo tratando de hacer juegos, no soy ningún experto, pero tratare de explicar lo que ya se y lo que vaya aprendiendo, en una serie de posts sin un buen orden incremental de dificultad.

Inicialmente empeze en java 2D con un juego tipo worms gracioso, enseguida quise probar OpenGL a pelo con los tutoriales de NeHe, lentamente me hice un motor gráfico y un motor físico muy básico. Trabajando por individual solo podemos llegar a nivel amateur y eso si aprender un montón, cuando ya os meteis con biblotecas tan profesionales como ogre o physx es muy recomendable que esteis algo familiarizados con formas más caseras. Pero bueno tampoco es imprescindible.

Yo voy a suponer durante esta tira de posts que teneis unos conocimientos básicos de programación 3d y algo avanzados de c++. Todo aquello que no se entienda pos lo hablamos entre todos en los comentarios.

Comentamos nuestra plataforma de desarrollo:
Leer más »

Instalar Avant en Hardy

Llevo tiempo sin postear, (ya os explicare por que), el viernes que viene tengo el último examen, y espero publicar unos cuantos posts interesantes. Mientras tanto sere breve, os comento el proceso para instalar avant en Ubuntu Hardy 8.04.

imagen de avant

Primero desinstalamos cualquier resto de algún avant anterior:

sudo apt-get --purge remove avant-window-navigator-bzr awn-core-applets-bzr awn-manager-bzr libawn-bzr python-libawn-bzr
sudo rm -f /usr/local/bin/awn*
sudo rm -f /usr/local/bin/avant*
sudo rm -rf /usr/local/lib/awn
sudo rm -f /usr/local/share/locale/*/LC_MESSAGES/avant-window-navigator.mo
sudo rm -f /usr/local/share/applications/avant*
sudo rm -f /usr/local/share/applications/awn*
sudo rm -rf /usr/local/share/avant-window-navigator
sudo rm -f /usr/local/lib/libawn*
sudo rm -rf /usr/local/include/libawn
sudo rm -f /usr/local/lib/libawn*
sudo rm -f /usr/local/lib/pkgconfig/awn.pc
sudo rm -rf /usr/local/share/awn-core-applets
sudo rm -rf /usr/local/lib/python2.5/site-packages/awn/

No os asusteis xD, la mayoría sobra, pero es que yo soy muy precavido con los archivos que se me quedan descolgados. (De hecho todavía queda vuestra configuración de home).
OJO aqui, con los siguientes 2 comandos borramos los temas y configuración de nuestro home, os lo recomiendo especialmente si llevais tiempo sin actualizar avant, o si os da algún problema dicha configuración heredada:

rm ~/.config/awn -R
rm ~/.avant -R (puede que ni exista)

Ahora añadiremos los repositorios:

echo deb http://ppa.launchpad.net/awn-testing/ubuntu hardy main | sudo tee -a /etc/apt/sources.list
echo deb-src http://ppa.launchpad.net/awn-testing/ubuntu hardy main | sudo tee -a /etc/apt/sources.list

No necesitan llave pública, simplemente los actualizamos sudo apt-get update

Instalamos los paquetes nuevos : sudo apt-get install awn-manager-trunk awn-extras-applets-trunk

Por último en Sistema->Preferencias->Sesiones añadimos al inicio de la sesión avant-window-navigator

Cuando reinicieis, si teneis el composite activado, debería saliros, si no quereis reiniciar pulsar ALT+F2 y escribir avant-window-navigator

netstat : Listado de conexiones

Netstat (network statistics) es una herramienta de línea de comandos que muestra un listado de las conexiones activas de un ordenador, tanto entrantes como salientes. Existen versiones de este comando en varios sistemas, como Unix/Linux, Mac OS X, Windows y BeOS.

Todos conocereis netstat, es casi la unica herramienta para ver la actividad de nuestra red y otras herramientas existentes de más alto nivel se suelen basar en netstat para sacar la información.

Con este post pretendo reflejar el comando netstat que normalmente uso y una breve explicación de cada parametro:

sudo netstat -punta
sudo netstat -putan
sudo netstat -patun
sudo netstat -pantu
sudo netstat -tunpa

Elegir la combinación memotécnica que más os guste, todas son equivalentes, pero la única que tiene sentido es la primera(por si no es evidente xD):

p: Muestra el PID y el nombre del proceso (solo si pones sudo)
u: Muestra sockets UDP
n: Mostrar númericamente, más rápido por que no tiene que resolver las ips y puertos
t: Muestra sockets TCP
a: Muestra todos los sockets(TCP y UDP) en cualquier de sus estados (conectado , en escucha …)

Nota final: La verdad es que windows es más fácil de recordar con su netstat -ano . oaejaejo 0_o

Fuentes: man y Wikipedia

Trabajo de opinión sobre el Software Libre

Últimamente la uni me tiene muy ocupado, tengo muchos posts previstos pero no tengo tiempo, ahora mismo estoy haciendo un trabajo sobre software libre. Se supone que máximo son 500 palabras, pero me parece que me voy a pasar… El trabajo me parece muy interesante para el blog, de hecho, lo hice directamente en el blog.

¿Que es el Software Libre?

Richard Stallman sobre los años 80 estaba creando un reemplazo de Unix libre, cuando a principios de los 90 habían desarrollado un reemplazo para la casi totalidad de aplicaciones, solo faltaba el kernel. La FSF trato de desarrollar un micronúcleo llamado GNU Hurd, el diseño era muy avanzado y complejo, pronto fue difícil de mantener por los programadores, los micronúcleos forman redes de clientes y servidores que se comunican mediante un protocolo común por llamadas asíncronas. Independientemente a la FSF, Linus Torvalds desarrollo un kernel monolítico en Helsinki (Finlandia), según las teorías de Tanenbaum Linux era obsoleto e iba ser un fracaso. La realidad es que Linux se adopto para formar el conocido GNU/Linux.
Leer más »

Recuperar la lista de paquetes instalados

Suponer que teneis que configurar 20 Ubuntus’s, al principio todos hacemos lo mismo, instalar el language-support-es (si durante la instalación no teniamos internet) e ir instalando nuestras aplicaciones/plugins/configuraciones esenciales como nautilus-open-terminal, gnome-do, compiz, avant, wine, unison, conky y un largo etcétera. Podeís recurrir a clonar la imagen desde un pc y replicarla en los demás con el comando dd o con el norton ghost.

Puede que algunos ubuntus ya tengan información sensible y no sea posible el formateo, para ese caso la única solución posible es ponernos en las mismas maquinas el mismo sources.list(los mismos repositorios) y en una maquina modelo (configuración finalizada y correcta) guardar la lista de paquetes instalados. Despues sobre esa lista la iremos aplicando en distintas máquinas.

  • Sobre la maquina modelo guardamos la salida en el archivo listaPaquetesInstalados . Escribimos en una terminal :

dpkg --get-selections | grep -v deinstall > listaPaquetesInstalados

  • Despues nos iremos a las distintas maquinas donde queremos instalar toda esa lista de paquetes, y teniendo el archivo listaPaquetesInstalados en el directorio de trabajo activo, escribimos estos 4 comandos:

sudo apt-get update
sudo apt-get dist-upgrade
sudo dpkg --set-selections < listaPaquetesInstalados
sudo dselect install

Fuentes: http://www.guia-ubuntu.org/index.php?title=Recuperar_lista_de_paquetes_instalados

Cúpula de nebulosa para Compiz

Teneis unas bonitas cúpulas de nebulosas en Compiz-Themes.org

tema compiz nebulae

Tema Nebulae

Cuando os decidais por el skydome que queramos, nos vamos a las opcionez avanzadas de conpiz / Opciones de Cubo de Escritorio / Pestaña Apariencia / En la sección Skydome activamos cúpula e indicamos la ruta de la imagen, opcionalmente podemos hacer que la cúpula sea animada o no.

Intrusiones en redes de area local por Main in the Middle

mono dsniffDsniff nos demuestra lo inseguras que son nuestras redes, sobretodo si nos empeñamos en enviar contraseñas en formato texto plano. Con este sniffer, nos daremos cuenta de los realmente importante que puede llegar a ser la utilizacion de la encriptacion en nuestras comunicaciones diarias …

Dsniff es una suite para redes de area local como el aircrack lo es en las redes wifi. Es muy potente y el autor advierte que no abusemos de este software. Esta suite incluye muchos programas, que ire explicando uno a uno:

Leer más »

Instalar últimos drivers de ATI/NVIDIA fácilmente con Envy

Envy, es una de las soluciones que tenemos para instalar fácilmente nuestros drivers gráficos. Gracias a un estupendo trabajo de Alberto Milone podemos disfrutar de la instalación de nuestros drivers de manera gráfica, ya que el proyecto surge como un script, pero posteriormente adquirio una GUI sencilla, pero suficiente para lograr su objetivo.
Envy es una aplicación escrita en PyGTK la cual tienen la función de detectar, descargar e instalar el driver tu tarjeta de video.
Para instalarlo, simplemente vete a su página y bajate el último deb para tu versión de ubuntu, despues lo abrimos Aplicaciones \ Herramientas del sistema \ Envy y le damos a Instalar el driver de NVIDIA o ATI. Envy detecta tu tarjeta de gráfica y descarga los drivers propietarios directamente de la misma web de ATI o Nvidia según sea el caso.instala las dependencias para compilar el módulo, reescribe el archivo xorg.conf, reinicia las X y voilá ya tienes instalados tus drivers.
Ahora mismo las versiónes de Envy estan así:
Última versión de driver que esta instalando el envy:
  • NVIDIA: 169.09 , 96.43.01 y 71.86.01
  • ATI: 8.40.4, 8.01 y 8.28.8

Cuando querramos cambiar de versión de driver, el autor recomienda utilizar la opción del envy “Desinstalar driver”. Pero si teneis un envy viejo (< 0.82) deberíais purgar el paquete. Lo mejor es que visiteis este FAQ que lo explica.

Fuente:

Poner Gmail como cliente de correo predeterminado en GNOME

Entiendo que la mayoría de los que leeis esto, usais Gmail normalmente… Para poner Gmail como cliente de correo predeterminado hay que recurrir a un script, hasta que sea incluido en alguna futura versión de gnome(ya existe la idea en ubuntu BrainStorm, además si mirais los comentarios un usuario hace referencia a esta extensión de firefox, que debería hacer lo mismo, de todas maneras, tener en cuenta que solo os funcionaría en firefox ). Con esta solución os funcionarían los “mailto:”. Para ello:

Nos vamos a Sistema / Preferencias / Aplicaciones preferidas

gmail_correo

Debajo del lector de correo, seleccionamos Personalizar y en comando ponemos la ruta de un script que haremos posteriormente, el ejemplo es para mi pc, debeis poner la ruta del script, (%s representa el parametro que le pasara gnome a nuestro script):

/home/makiolo/scripts/open_mailto.sh %s

Lo siguiente es poner el script en se directorio ( en mi ejemplo /home/makiolo/scripts/). [Download]

Este es el contenido del script (modificado con la aportación de Spayder26 del gnome-open en vez de firefox):

#!/bin/sh
gnome-open "https://mail.google.com/mail?view=cm&tf=0&to=`echo $1 | sed 's/mailto://'`"

#Asegurate que copias la linea anterior entera

Recordar darle los permisos de ejecución, (o utilizar el nautilus):

  • chmod +x /home/makiolo/scripts/open_mailto.sh

Si quereis, lo podeis combinar con GMail Notify para que nos logee frecuentemente(Debeis añadir a vuestra sesión el comando gmail-notify para que arranque con vuestro gnome), y ya de paso nos mire el correo nuevo.

  • sudo apt-get install gmail-notify

Haz click en este falsoemail@email.es para probarlo.

Actualizar el Compiz Fusion que viene con Ubuntu

Actualizado: Al final he acabado quitando el repositorio, funciona bien, y muy bien por que te añade muchos plugins, pero a mi por lo menos me bajan las fps en algunos momentos críticos.

Si queremos probar las novedades que van pasando por nuestro querido proyecto compiz fusion es necesario ponernos el repositorio de compiz-fusion-git. La forma más fácil es añadir el repositorio de http://kwatrow.nl/repo/. Estoy suponiendo que tu distribución de linux viene con compiz (véase Ubuntu):

  • Escribimos en un terminal estas 2 lineas:
  • echo deb http://kwatrow.nl/repo Gutsy compiz-fusion-git | sudo tee -a /etc/apt/sources.list
  • echo deb-src http://kwatrow.nl/repo Gutsy compiz-fusion-git | sudo tee -a /etc/apt/sources.list
  • Nos bajamos la clave pública que nos autentifica en el repositorio: wget http://kwatrow.nl/repo/Quattro.gpg
  • Añadimos la clave : sudo apt-key add Quattro.gpg
  • Y borramos la clave : rm Quattro.gpg
  • Actualizamos los repositorios : sudo apt-get update
  • Deberian aparecernos estas 11 actualizaciones:
compiznuevo
  • Si te falta algún paquete añadelo(especialmente python-compizconfig) y asegurate que todos los paquetes que tengas relacionados con compiz, son de la versión del nuevo repositorio y no hay mezclas entre repositorios de ubuntu y de kwatrow.nl. No debería pasar, pero me dio un paquete roto con compiz-gnome que solucione facilmente.
  • Ahora solo nos queda cerrar el compiz: pulsa ALT+F2 y escrbimos metacity –replace (son 2 guiones)
  • Y lo volvemos abrir así: pulsamos ALT+F2 one more time y escribimos compiz –replace (son 2 guiones)
  • Nos vamos al Compiz Config Settings Manager y nos podemos tirar horas trasteando …
  • Un buen blog especificó del tema es : Compiz Fusion Revolution
  • Nota: si teneis problemas arrancando compiz, es posible que os ocurra que carge antes compiz que gnome, añadiros en sesiones un script que os carga un script con un sleep que será mayor o menor dependiendo de tu maquina. Además en apariencia poneos que no queréis efectos visuales, con esto además de solucionar el problema posiblemente gnome os carge más rápido. si teneis cualquier problema dejar un comentario y lo vamos mirando entre todos.

Actualizado : Si quereis emerald, os recomiendo, además de instalarlo ( sudo apt-get install emerald ) que os hagais este pequeño script, guardarlo y darles permiso de ejecución, y ponerlo que ejecute el inicio de la sesión:

#!/bin/sh
sleep 20
compiz --replace -c emerald

Ejecutar ASP .NET con MonoDevelop

Esta pequeño tutorial ha sido probado en ubuntu pero en otras distribuciones de linux no debería ser muy distinto.

Primero instalamos todos los paquetes relacionados con mono o monodevelop :

  • sudo apt-get install mono mono-gmcs mono-utils monodevelop monodoc mono-xsp monodoc-http monodoc-ipod-manual monodoc-njb-manual monodoc-nunit-manual monodoc-gtk2.0-manual monodoc-gecko2.0-manual monodoc-ipod-manual monodoc-njb-manual monodoc-nunit-manual monodoc-gecko2.0-manual mono-xsp2 monodevelop-java libnunit-doc monodevelop-nunit monodevelop-versioncontrol

Si os falta algún paquete, o teneis algún problema de dependencias, probar a poneros el repositorio de getdeb, que tiene versiones más actualizadas de mono y monodevelop:

  • echo deb http://ubuntu.org.ua/ getdeb/ | sudo tee -a /etc/apt/sources.list
  • Actualizamos la lista de repositorios : sudo apt-get update

Si quieres, instalate los ejemplos para ASP.NET 1.1 y 2.0:

  • sudo apt-get install asp.net-examples asp.net2-examples
  • El ejemplo de 2.0 tiene un bug tonto que se arregla : sudo cp /usr/share/asp.net2-demos/index.aspx /usr/share/asp.net2-demos/index2.aspx
  • Para ver el ejemplo nos vamos a:
    • nos vamos al directorio de trabajo que corresponde : cd /usr/share/asp.net-demos/
    • Ahora simplemente ponemos en consola xsp2
    • Nos monta un servidor donde podemos ver el ejemplo : http://127.0.0.1:8080/
    • El ejemplo de asp 1.1 es igual pero esta en cd /usr/share/asp.net-demos/y ejecutando xsp
    • Además del server de testing que montas sobre el actual directorio de trabajo en el puerto 8080, los paquetes mono-xsp y mono-xsp2 montan 2 demonios en el 8081 y el 8082 respectivamente. Yo los he dejado pero sabeis que podeis configurar los opciones por defecto de un demonio en /etc/default. En concreto en /etc/default/mono-xsp y /etc/default/mono-xsp2 respectivamente.

El ejemplo es poco educativo,así que vamos hacer un ejemplo para ir empezando:

  • Empezamos un proyecto en MonoDevelop:
monodevelop1
  • En Default.aspx escribimos entre las etiquetas body:
monodevelop2
  • En Default.aspx.cs detectamos el evento del boton:
monodevelop3
  • Ya esta ahora tenemos que construir el proyecto cada vez que modifiquemos algo. El ejecutar solo le damos la primera vez para montar el server xsp2 en http://localhost:8080/ y las siguientes veces el ciclo de desarrollo sera: 1º Realizar cambio, 2º Construir el proyecto y 3º Actualizar con F5 sobre la pestaña de firefox que corresponda :P
  • Por último, os explico alguna conceptos que pueden seros útil para ir empezando, tanto en visual studio como en monodevelop una solución es un conjunto de proyectos, mientras que un proyecto es un conjunto de paginas (en ASP.NET), por eso hay un botón para construir proyecto y otro para construir solución.
  • Una página tiene por un lado la vista(Default.aspx) y por otro lado la lógica de la pagina.
  • Los IDE suelen autogenerar parte de la lógica. Por ello la lógica a su vez se divide en dos.
  • Lógica para que el usuario añada a eventos concretos de la página(Default.aspx.cs), cuando empieza la carga, se pulsa un botón, empieza a escribir …,
  • La lógica autogenerada por el IDE (Default.designer.aspx.cs), que en el caso de MonoDevelop es editable.Estas dos páginas son la misma clase definida en 2 partes, que es una de las novedades de .NET 2.0, la inclusión de clases parciales. Por tanto las variables que añade automaticamente en Default.designer.aspx.cs tienen ambito visible desde Default.aspx.cs y nos permite hacer lo del ejemplo.
  • Nota: Si en la vista borrais un boton asp u otro objeto asp(borrando el html a pelo) que esta identificado por un id, y por tanto tiene una variable en Default.designer.aspx.cs, vereis que la variable no se borra. Parece que la versión de MonoDevelop 0.16 que uso solo añade lógica autogenerada pero nunca borra. La solución es simplemente borrar todas las variables que ha autodefinido y cuando construyas la solución o el proyecto se generaran las variables que falten.
  • Nota 2: Es imprescindible el uso de monodoc (además de google, no hace falta decirlo xD)
  • Hoy ha salido MonoDevelop 1.0, todavía no lo he probado, si algo de este tutorial ha cambiado (especialmente la nota anterior), editare el post en cuanto lo pruebe.

En definitiva, monodevelop para mí es un IDE que estoy empezando a tener en cuenta, yo estoy ahora mismo como programador PHP4(sin objetos)+MYSQL y no uso editores WYSIWYG para nada, utilizo eclipse+aptana si el pc en el que trabajo tiene bastante memoria y uso quanta en el curro que es un PIII justito. Cuando ya tienes experiencia con html+ css+ javascript + librerias ajax(jquery,mootols …) perfectamente puedes prescindir de este tipo de editores y tirar de F5 de firefox. No me convenze la POO de PHP5 y por eso veo mejor opción ASP.NET con C#, por la forma más correcta de tratar los objetos. Ante todo me gusta el software libre, por eso empeze con php, … pero aunque .NET heche atras por ser de M******** parece que se ha estandarizado, eso ha ayudado a la implementación que ha hecho la gente de Miguel Icaza. El problema es que pienso que en unos años ni M******** NO respetará su propio estandar con tal de marcar una diferencia de mercado. Hoy os digo que tengo intención es de aprender .NET profesionalmente asi que igual os digo mañana que no vale la pena por que todavía no se ha estabilizado como lenguaje.

SSH sin contraseña (usando certificados DSA)

ssh tunelPara autentificarnos por ssh hay 2 opciones:

  1. Por la contraseña clásica. Es el método síncrono tiene como inconveniente que hay que introducir la contraseña cada vez que intentamos autentificarlos.
  2. Mediante certificado RSA o DSA. Es el método asíncrono. Resumidamente consiste en generar una clave privada y otra pública, y distribuir la clave pública a los servidores que queremos conectar. Por supuesto la ventaja es que al no pedir contraseña podemos automatizar scripts junto con cron. Por ejemplo realizar una sincronización con unison entre 2 carpetas remotas remotas cada 5 minutos.

Puesto que la primera opción no tiene mucho misterio, voy a explicar como generar la clave y distribuirla, para realizar estos 2 tareas vamos hacer 2 alias, por que es normal que usemos frecuentemente estos comandos algo enrevesados nos ayudamos de los alias:

  • Abrimos el .bashrc : sudo gedit .bashrc y al final del fichero añadimos estos 2 líneas y guarda :
    alias generarClaveSSH='ssh-keygen -t dsa'
    
    alias distribuirClaveSSH='ssh-copy-id -i .ssh/id_dsa.pub'
  • Ahora vamos a generar las claves mediante DSA que corresponde al SSH2, teniendo muchos problemas menos de seguridad que RSA. Para ellos vamos a usar los alias, pero antes abre otra consola para que carge los alias : Escribimos generarClaveSSH . Le damos al enter a todas las preguntas, no escribimos nada, de esta manera no protegemos el certificado SIN un passphrase. Si hubieramos puesto un passphrase cada vez que conectasemos tendríamos que indicar un passphrase nuestro, asi que en principio estaríamos con el mismo problema que antes. Esto se usa para centralizar todas las claves en 1. Si le interesa a alguien lo puedo explicar un poco más, pero veo poco útil especificar un passphrase para el uso que le estoy dando.
  • Ahora simplemente falta distribuir la clave al ordenador remoto para ello necesitamos la IP y el USUARIO, escribimos: distribuirClaveSSH USUARIO@IP. En este momento os preguntara la contraseña de la cuenta USUARIO, la introducimos y a partir de ahora el servidor SSH montado en IP te aceptara directamente por que tiene tu clave pública.
  • Para probarlo como sabreis ssh USUARIO@IP

Nada más, espero que le sirve a alguien, dentro de unos días ampliare este post explicando el unison.

Conceptronic c54ri PCI en Linux con ndiswrapper

Esta tarjeta usa el chip ralink, este serie de chips (rt2500, rt61 …) esta soportado en linux por el propio fabricante.

El problema es que la serie rt en ubuntu tiene el siguiente bug : https://bugs.launchpad.net/ubuntu/+bug/34902.

La solución que propongo es bajarnos la última versión de la web del fabricante, y nos vamos a Support -> Windows (!!) y nos bajamos el que indice como part Number PCI/mPCI/CB(RT256x/RT266x. En definitiva, necesitamos el driver de windows, ya sea el del cd de conceptronic, o mejor el último que haya en la web de conceptronic. (El del CD a mí me da muy poca señal, además el nuevo nos vendra bien, nos añade soporte WPA2 …). Vamos a extraer la información del driver de windows para generar un driver para linux. Como sabréis esto lo hace ndiswrapper.

ndiswrapper

Al contrario que muchos piensan ndiswrapper no emula nada, simplemente con el fichero inf o sys es capaz de extraer toda la información para instalar el driver de forma nativa (como wine = Wine Is Not Emulator). Por pasos:

  • Doy por hecho que teneis localizados los ficheros esenciales del driver, estos son : rt61.sys y el rt61.inf.
  • Nos bajamos el código fuente de la última versión estable de ndiswrapper, cuando escribí esto era la 1.52:
    • unp ndiswrapper-1.52.tar.gz (unp es un script que descomprime, olvidandose de si es rar, zip, tar.bz2 …)
    • cd ndiswrapper-1.52
  • Ahora compilamos con los siguientes comandos:
  • Nos aseguramos que tenemos lo minimo para compilar : sudo apt-get install build-essential
  • Para compilar ejecutamos : make
  • No tiene dependencias asi que no deberían salir errores. Por ultimo instalamos con sudo make install
  • Estando en el directorio de trabajo de donde tenemos el driver escribimos : sudo ndiswrapper -i rt61.inf
  • Comprobamos que esta con : ndiswrapper -l
  • Instalar el modulo : sudo ndiswrapper -mi
  • Por último solo falta evitar que se carga el driver bugeado que viene con ubuntu : sudo gedit /etc/modprobe.d/blacklist y añadimos al final la linea : blacklist rt61pci

Ya esta, para no complicarnos la vida cargando y descargando modulos, reiniciamos : sudo shutdown -r now . Si Despues de esto el driver os funciona pero vuestro problema es del software de ubuntu que gestiona la wifi, como por ejemplo que ignore la conexión cuando se establece conexión con ip estática, os pide contraseña cada vez que iniciais … etc. Entonces obligatoriamente deberías instalaros wicd, como explico en este otro post.

Espero que le sirva a alguien :P

Instalar gnome-do con plugins

Esta aplicación se ha vuelto imprescindible para mi, y es sinonimo de usabilidad. Su funcionamiento es tan sencillo como pulsar una combinación de teclas configurable (por defecto: SÚPER+ESPACIO) escribir un texto y darle a enter. El texto será esa aplicación que sabemos su nombre sobradamente pero nunca nos acordamos en que menu,o parte del menú la situa el sistema operativo. Por supuesto la coincidencia es suficiente con que se parezca vagamente con lo que buscamos. Ganamos gran velocidad al prescindir del ratón. Si a eso le unimos no solo buscar entre la lista de aplicaciones, sino que con plugins podemos buscar entre nuestros ficheros, o bien entre nuestra librería de rhythmbox…

gnome-do

  • Añadimos los repositorios:
    • echo deb http://ppa.launchpad.net/rharding/ubuntu gutsy main | sudo tee -a /etc/apt/sources.list
    • echo deb-src http://ppa.launchpad.net/rharding/ubuntu gutsy main | sudo tee -a /etc/apt/sources.list
  • Actualizamos : sudo apt-get update
  • Instalamos el gnome-do : sudo apt-get install gnome-do
  • En esta web hay una serie de plugins para gnome-do a continuación pongo la lista (si quereis más información os recomiendo altamente que visiteís dicha página):
    • Rhythmbox…Fun with Music!
    • Google Calculator Action
    • OpenSearch (”Search Web”) Action
    • Locate Files Action
    • Epiphany Bookmarks
    • Amarok “For the love of God don’t bug me about an Amarok plugin anymore” Plugin
    • Tomboy
    • Banshee, primero :
  • Me he inventado una serie de comandos para bajarnos todos por consola, primero.
  • Creamos el directorio donde la documentación especifica que deben ir: mkdir ~/.do/plugins -p
  • Nos cambiamos a ese directorio de trabajo cd ~/.do/plugins/
  • Me descargo recursivamente la web : wget -r http://do.davebsd.com/plugins/
  • Busco ficheros con extensión dll (plugins de gnome-do) y los muevo al directorio actual : find do.davebsd.com/ -name *.dll | xargs -i -t mv .$1/{} . (El punto también, representa el directorio actual)
  • El resto sobra : rm -Rf do.davebsd.com/
  • Por último solo nos faltaría hacer que arranque al comienzo de la sesión : Sistema -> Preferencias -> Sesiones
  • En la lista de programa de inicio iniciales añadimos gnome-do como nombre y observaciones (por ejemplo). Y en comando ponemos gnome-do -q (el parametro significa quiet, así arranca minimizado)
  • En el próximo arranque ya lo tendremos, si no queremos esperar pulsamos ALT+F2 y escribimos gnome-do
  • Os recomiendo que os visiteis las fuentes, son los wikis oficiales de gnome-do.

Fuentes:
https://wiki.ubuntu.com/GnomeDo/Installation
https://wiki.ubuntu.com/GnomeDo/Use
https://wiki.ubuntu.com/GnomeDo/Plugins

Instalar Netbeans 6.0 en Ubuntu por repositorio

logoNBEste IDE es mi favorito para java cuando tengo que usar swing, he encontrado un repositorio para ubuntu gutsy, que nos evita instalar el binario de SUN. Para ellos procedemos a lo siguiente:

  • Añadimos el repositorio : echo deb http://srvremi.free.fr/ubuntu gutsy main | sudo tee -a /etc/apt/sources.list
  • Autententificamos el nuevo repositorio : gpg –keyserver wwwkeys.eu.pgp.net –recv-keys AA82C25A36399439
  • gpg –armor –export AA82C25A36399439 | sudo apt-key add -
  • Actualizamos : sudo apt-get update
  • Para una instalación básica de NetBeans 6.0 ponemos : sudo apt-get install netbeans6-base netbeans6-common netbeans6-j2ee netbeans6-java
  • Aqui pongo una lista del resto de paquetes que añaden funcionalidad a netbeans:
    • netbeans6-cpp - C/C++ (Prefiero eclipse + con plugins para soporte c++)
    • netbeans6-glassfish - GlassFish V2
    • netbeans6-ruby - Ruby
    • netbeans6-mobility - Mobility
    • netbeans6-openesb - Open ESB V2 Preview 3
    • netbeans6-soa - SOA
    • netbeans6-tomcat - GlassFish V2
    • netbeans6-uml - UML (lo use para una práctica de la universidad, me ahorro mucho tiempo)

Fuentes:
http://srvremi.free.fr/blog/2007/12/installer-netbeans-6-sur-ubuntu.html

El mejor gestor WIFI/Cable : wicd vs NetworkManager

Personalmente pienso que el gestor de conexiones wifi/cable que viene con ubuntu (NetworkManager) apesta por los siguientes motivos (principalmente con el WIFI):

  • Cuando el WIFI es itinerante me pide contraseña de root para el desbloqueo del anillo.
  • Graves problemas de refresco con la lista de red WIFI.
  • No puede conectar a redes WIFI con el SSID oculto.
  • A veces se le olvida las contraseñas.
  • En algunas configuraciones wifi solo he conseguido conectar en modo itinerante, es decir por dhcp, esto no me vale para abrir puertos por ip.
  • Si pierdes la señal del AP, rara vez reconecta.
  • Me machaca el /etc/resolv.conf, lo necesito para el servidor DNS local dnsmasq
  • Gran dependencia con gnome.

Aqui una lista más completa de bugs, en mi opinión es un programa que funciona perfectamente para cable pero para wifi parece una versión pre-alpha.

Vamos a instalar wicd, que soluciona todos estos problemas, hasta ahora no he encontrado ningun problema, ire actualizando el post si lo tuviera. Pero antes una pqqueña enumeración de las características de wicd:

  • Sirve para cable/wifi
  • Funciona en cualquier gestor de ventanas (gnome,kde,fluxbox …)
  • No depende del gestor de ventanas, tiene su propio demonio.
  • Distintos perfiles para cada conexion wifi y cable.
  • Sin problemas con ips estaticas y listas de 3 dns.

Vamos a instalarlo:

  • Añadimos el repositorio (donde pone gutsy podría ser dapper, edgy o feisty) y actualizamos : echo deb http://apt.wicd.net gutsy extras | sudo tee -a /etc/apt/sources.list && sudo apt-get update
  • Instalamos el wicd (OJO! nos pedira desinstalar cualquier otro programa que gestione la wifi y pueda entrar en conflicto con él, tal y como wifi-radar o el networkManager) : sudo apt-get install wicd
  • Ahora os recomiendo que os añadais el Monitor de redel applet del panel de gnome para ver la fuerza de la señal wifi Wicd viene con un indicador de la configuración actualmente establecida, IP, señal wifi … mejor que el que viene con gnome. En el wiki de wicd explica que hay hacer lo siguiente:
    • Escribimos gedit en consola y pasteamos lo siguiente :
      #!/bin/sh
      sleep 20
      /opt/wicd/tray.py
    • Guardarlo en vuestra carpeta de scripts de usuario (es a gustos), yo por ejemplo en mi pc, la ruta completa con el nombre del script quedaría: /home/makiolo/scripts/panelWICD
    • Por último lo ponemos en la sesión, vamos a Sistemas->Preferencias->Sesione y ponemos wicd en todos los campos de texto excepto en comando que ponemos /home/makiolo/scripts/panelWICD
  • Pongo un par de ejemplos de configuraciones,por cable con DHCP y por wifi con ip estática, respectivamente:

wicd cablewicd wifi

En ambos casos le damos a conectar y listo. Por último aclarar que si no entendeis como gestiona los perfiles, o los lugares es muy sencillo crea automáticamente un nuevo perfil para cada MAC que encuentre, si nos vamos a la UNI, o a cualquier sitio que wicd recuerde su MAC, conectará automáticamente (siempre y cuando lo hayais configurado para ello).