Curso C# con Mono – ¡Hola Mundo!

Muchos de vosotros veréis este lenguaje como una creación de Microsoft que nada tiene que ver con el Software Libre. Sin embargo, aunque sí es cierto que su creación dependió directamente de la empresa de Redmond y es el lenguaje estrella a día de hoy para desarrollar con la plataforma .NET, el genial Miguel de Icaza supo crear una alternativa libre compatible con esta nueva tecnología. read more

Leer más » 41 Comentarios

Instalar LAMP en Ubuntu 10.10

Sí, quizás muchos de vosotros lo habréis hecho con anterioridad y ya sabréis que LAMP es el acrónimo de Linux Apache MySQL HP; pero la realidad es que tras instalar la nueva versión de Ubuntu, la 10.10, parece que el selector de paquetes por tareas del gestor de paquetes Synaptic ahora no existe, y tenemos que instalarlo manualmente.

La tarea es bien sencilla, desde un terminal, instalamos el paquete tasksel, el mismo que utiliza Synaptic internamente para realizar esta tarea:

ahornero@6581-D:~$ sudo apt-get install tasksel read more

Leer más » 38 Comentarios

Establecer ‘Ubuntu font’ como fuente en todas tus Webs

Con Google Chrome o Chromium es bien sencillo, han preparado una extensión para este cometido.

¿Qué si lo he probado ya? No he dudado ni un momento, me parece una de la tipografías más elegantes y legibles que existen, y el hecho de poder usarla en todas las webs que visites me parece la mejor forma de integrar mi escritorio (de Ubuntu) con la nube. Lo he probado bajo Chromium, aunque no debe de haber ningún problema bajo Google Chrome, ya que el motor de extensiones es el mismo.

¿Cómo configurarlo? Más fácil aun, nos dirigimos al siguiente enlace, instalamos la extensión y listo, a disfrutar de un entorno mucho más amigable. En la imagen de arriba os dejo una captura de Linux Hispano con la fuente por defecto del nuevo Ubuntu y como se visualiza a través de esta extensión. Enlace: Chrome Extensions. read more

Leer más » 1 Comentario

Reanudar una descarga de Google Chrome con wget

Sí, desde que Google Chrome estuvo disponible para Linux a partir del 9 de septiembre de 2009 no he usado otro navegador (Firefox en contadas ocasiones por compatibilidad). Uno de los problemas que he notado es que si al descargar un archivo de un servidor, este se cae o se pierde la conexión por algún motivo, no podremos reanudar la descarga perdiendo lo que hasta ese momento hemos descargado.

Bien, para los amantes de la terminal (para los que no, también, es bien sencillo) os propongo el siguiente método para reanudar una descarga. A través del comando wget y usando como archivo de salida lo que hasta el momento se ha descargado, bastará con lanzarlo de la siguiente manera: read more

Leer más » 15 Comentarios

10 buenos hábitos para manejar la consola (2/2)

Si el otro día os comentábamos los primeros 5 buenos hábitos para manejar la consola, hoy os traemos los siguientes 5 con lo que terminamos esta serie, que como es digo, es una traducción adaptada del original de la librería técnica de IBM.

6. Agrupa tus comandos en una lista

Muchas shells nos proporciona métodos para agrupar conjuntos de comandos juntos en una lista de forma que podamos pasar el total de la suma de sus salidas a través de pipelines o redirigir todos los flujos hacia el mismo lugar. Veamos dos formas de hacerlo.

Ejecutar una lista de comandos en una shell secundaria

Se usan paréntesis para encerrar una lista de comandos en un grupo simple. Haciéndolo de esta forma, los comandos se ejecutan en una nueva shell secundaria y te permite redirigir o si no, recoger la salida del conjunto, como en el siguiente ejemplo.

~ $ ( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c && \
> VAR=$PWD; cd ~; tar xvf -C $VAR archivo.tar ) \
> | mailx admin -S "Archivo"

En este ejemplo, el contenido del archivo es extraído en el directorio tmp/a/b/c mientras que la salida de los comandos agrupados es enviada por correo al administrador.

Ejecuta una lista de comandos en la shell actual

Utiliza las llaves para marcar la lista de comandos que deben ejecutar en la shell actual. Estate seguro que incluyes espacios entre las llaves y los comandos (sino puedes tener problemas de interpretación). También, debes tener cuidado poniendo un punto y coma al final de la lista. Veamos un ejemplo para este caso:

~ $ { cp ${VAR}a . && chown -R guest.guest a && \
> tar cvf newarchive.tar a; } | mailx admin -S "Nuevo archivo"

7. Utiliza xargs además de find

Utiliza xargs como filtro para hacer un mejor uso de la salida de la orden find. De esta forma, podemos hacer algo con la salida de find. La estructura básica es la siguiente:

~ $ find criterio-búsqueda-archivos ruta | \
> xargs acción-a-realizar-con-salida

Podríamos usarlo por ejemplo para borrar todos los ficheros MP3 de un directorio en particular:

find /tmp -maxdepth 1 -name '*.mp3' -maxdepth 1 | xargs rm

Por ejemplo, los del directorio temporal sin mirar en subdirectorios (maxdepth es1).

8. Aprende a conocer cuando grep debería hacer la cuenta

Aunque con el parámetro -c le indicamos a grep que nos devuelva la cantidad de ocurrencias, no siempre funciona de forma correcta porque devuelve una salida por cada fichero, que a su vez muestra en diferentes líneas.

Para ello usamos:

~ $ grep -o and ruta | wc -l
3402

Siendo 3402, para este ejemplo, el número de ocurrencias.

9. Compara algunos campos en la salida, no sólo las líneas al completo

Para búsquedas en las que queremos definir que sólo haga comparaciones para ciertos campos, deberemos utilizar awk en lugar de grep. Veamos un ejemplo muy claro: estamos buscando ficheros cuya última modificación fue en diciembre. Sin embargo, tenemos un fichero de nombre “December”, aunque la modificación no sea en diciembre sí aparecería en el resultado usando grep.

~/tmp $ ls -l /tmp/a/b/c | grep Dec -rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf -rw-r--r-- 1 root root 238 Dec 03 08:19 README -rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar ~/tmp $ read more

Leer más » 10 Comentarios

10 buenos hábitos para manejar la consola (1/2)

Esta serie de buenos hábitos al manejar la consola son una traducción adaptada aoriginal titulado: UNIX tips: Learn 10 good UNIX usage habits, aparecido en la parte de desarrolladores del portal de IBM.

1. Crea árboles de directorios de un sólo golpe

En vez de hacer:

~ $ mkdir tmp
~ $ cd tmp
~/tmp $ mkdir a
~/tmp $ cd a
~/tmp/a $ mkdir b
~/tmp/a $ cd b
~/tmp/a/b/ $ mkdir c
~/tmp/a/b/ $ cd c
~/tmp/a/b/c $

Podemos hacer directamente:

~ $ mkdir -p tmp/a/b/c

E incluso podemos hacer árboles definiendo más de una rama por nivel, con las llaves definimos más de un hijo por nivel:

~ $ mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

2. Descomprime indicando la ruta, no muevas primero el fichero y luego lo descomprimas
Imaginad que queremos descomprimir el fichero newarc.tar.gz en el directorio tmp/a/b/c pero tenemos dicho fichero en un directorio que no es ése. La solución más típica es mover el fichero y luego descomprimirlo. Esto supone una carga extra que en el caso de ficheros muy grandes supone un problema. Con el parámetro “-C” de tar le podemos indicar la ruta de descompresión:

~ $ tar xvf -C tmp/a/b/c newarc.tar.gz

3. Combina tus comandos con operadores de control
En una misma línea podemos utilizar más de un comando. La forma más simple de hacerlo es con el punto y coma “;”. El problema deriva cuando los comandos que ejecutas dependen el uno del otro, si el primero falla, afecta a los siguientes.

Veamos cómo solucionarlo.

Ejecuta el comando sólo si el anterior ha devuelto un cero (se ha ejecutado de forma exitosa)
Para este caso tenemos el operador &&:

~ $ cd tmp/a/b/c && tar xvf ~/archive.tar

Caso contrario
Si queremos controlar el caso en que el primer comando falle tenemos el operador :

~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c

Tenemos la opción de controlar ambos casos de una vez:

~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c && tar xvf -C tmp/a/b/c ~/archive.tar

4. Utiliza las comillas cuando trabajes con variables
Si utilizas variables, al asignarles valores alfanuméricos, texto; deberías utilizar siempre comillas dobles (a no ser que tengas razones para no hacerlo). También puedes poner el nombre de la variable entre llaves para asegurarte que se ejecutan bien las llamadas.

Veamos una serie de ejemplos y casos diferentes, con sus respectivas salidas:

~ $ ls tmp/ a b ~ $ VAR="tmp/*" ~ $ echo $VAR tmp/a tmp/b ~ $ echo "$VAR" tmp/* ~ $ echo $VARa ~ $ echo "$VARa" ~ $ echo "${VAR}a" tmp/*a ~ $ echo ${VAR}a tmp/a read more

Leer más » 8 Comentarios

Modificar la asignación de memoria de intercambio (Swap). 2/2

… continuación de la entrada:

En la anterior entrada adelantamos que veríamos cómo crear una memoria de intercambio para usar un fichero en lugar de una partición, una opción muy útil cuando deseamos tener más memoria Swap en un momento determinado o cuando no disponemos de particiones extra.

A través del siguiente ejemplo y usando el comando dd crearemos una memoria de intercambio, ubicaremos el archivo en la raíz (/) y lo haremos con un tamaño de dos gigabytes (2048MB):

root@asus:~$ dd if=/dev/zero of=/swap_file bs=1M count=2048
2048+0 records in
2048+0 records out read more

Leer más » 3 Comentarios

Evitar que WordPress haga miniaturas de las imágenes al subirlas

Cuando utilizamos WordPress en un servidor compartido tenemos que tener cuidado con distintos tipos de consumos. Dos de ellos: consumo de CPU y espacio disponible son de vital importancia y es posible que estéis malgastándolos sin saberlo.

Cada vez que subís una imagen con el cómodo sistema para subir ficheros multimedia basado en Flash, WordPress además de almacenar el fichero, hace una serie de miniaturas de la imagen (necesarias para algunos temas o complementos) en diferentes tamaños que: read more

Leer más » 4 Comentarios

Modificar la asignación de memoria de intercambio (Swap). 1/2

Lo primero que hemos de preguntarnos, antes de añadir más memoria de intercambio a nuestro sistema, es de cuanta memoria disponimos. Para esto podemos utilizar el comando free o swapon como se muestra a continuación:

1. Usando el comando free con el parámetro -m (-m para mostrarlo en MB, podemos usar -b,-k o -g para bytes, KB o GB respectivamente), vemos que en este caso no iba a ser necesario disponer de más memoria de intercambio (Swap) ya que la tenemos prácticamente libre.

ahornero@asus:~$ free -m
total used free shared buffers cached
Mem: 3955 3687 267 0 1258 1268
-/+ buffers/cache: 1160 2794
Swap: 3916 1 3915 read more

Leer más » 7 Comentarios

Conectar a Eduroam con Android

Eduroam (education Roaming), es una red inalámbrica presente en multitud de universidades y otros centros de investigación, a lo largo de decenas de países.

¿Para qué sirve?

Te permite autenticarte en la Eduroam de tu centro de destino, con tus credenciales de tu centro de origen. Es decir, despreocuparte de tener que pedir datos de conexión cada vez que vas a otro centro de este tipo. Yo por ejemplo la uso tanto en mi centro de trabajo, como cuando voy a clase en la universidad y es verdaderamente práctico. read more

Leer más » 4 Comentarios