<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sumolari.com</title>
	<atom:link href="http://sumolari.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sumolari.com</link>
	<description>Proyectos de un amante de la informática</description>
	<lastBuildDate>Thu, 28 Feb 2013 18:30:19 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Cambia los colores de los contactos de WhatsApp en iOS</title>
		<link>http://sumolari.com/cambia-los-colores-de-los-contactos-de-whatsapp-en-ios/</link>
		<comments>http://sumolari.com/cambia-los-colores-de-los-contactos-de-whatsapp-en-ios/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 15:59:49 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[colores]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[WhatsApp]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=13785</guid>
		<description><![CDATA[Aviso: Este tutorial sólo sirve para la versión de WhatsApp de iOS. Probablemente la forma de cambiar los colores en la versión para Android sea similar, pero no lo puedo asegurar porque no tengo un dispositivo con Android con el trastear. Cuando escribes en un chat de grupo en WhatsApp, la aplicación asigna automáticamente un [...]]]></description>
				<content:encoded><![CDATA[<div class="alert alert-info"><strong>Aviso:</strong> Este tutorial sólo sirve para la versión de WhatsApp de iOS. Probablemente la forma de cambiar los colores en la versión para Android sea similar, pero no lo puedo asegurar porque no tengo un dispositivo con Android con el trastear.</div>
<p>Cuando escribes en un chat de grupo en <strong>WhatsApp</strong>, la aplicación asigna automáticamente un color a cada miembro del grupo, de modo que sea fácil saber quién escribe cada mensaje. Sin embargo en algunas ocasiones este color aleatorio no es el más adecuado para el contacto: ¿Un color verde seco para el amor de tu vida y sin embargo un rosa sexy para tu amigo de la infancia? ¡Eso no puede quedar así!</p>
<p>La cuestión es: ¿es posible cambiar los colores que <strong>WhatApp</strong> asigna a los contactos en los chats de grupo? La respuesta es<strong> sí</strong>, a pesar de que la aplicación no lo permita por defecto, aunque es necesario haberle hecho el Jailbreak al dispositivo y disponer de una aplicación para gestionar archivos (<a href="http://cydia.saurik.com/package/eu.heinelt.ifile">iFile</a> o similar).</p>
<p><strong>WhatsApp</strong> asigna  a cada contacto con el que mantienes una conversación, un número entero aleatorio, comprendido entre 0 y 18 (tal vez el rango sea mayor, pero en mi lista de contactos sólo hay números entre o y 18), donde cada número se corresponde a un color diferente, de modo que dos contactos con el mismo número tendrán el mismo color en chats de grupo. Esta lista de parejas de números de teléfono e identificadores de colores se almacena en un archivo dentro de la carpeta de documentos de <strong>WhatsApp</strong>.</p>
<p>La ruta completa a este archivo es:</p>
<pre class="prettyprint linenums">/var/mobile/Applications/{CARPETA_NOMBRADA_ALEATORIAMENTE}/Documents/Colors.plist</pre>
<p>Donde {CARPETA_NOMBRADA_ALEATORIAMENTE} es una carpeta cuyo nombre está compuesto por letras y números aleatorios (seguramente no sean tan aleatorios, pero en cada dispositivo son diferentes). En mi caso la carpeta comenzaba por <em>C4D42785</em>, pero en vuestro caso puede ser completamente diferente. Lo que si será es un nombre largo, formado por muchas letras y números y sin sentido a simple vista.</p>
<p>Dentro de esta carpeta aleatoria encontraremos una carpeta llamada <code>WhatsApp.app</code>. En cuanto veamos una carpeta con un nombre aletorio que en su interior tiene una llamada <code>WhatsApp.app</code>, ya habremos encontrado la carpeta que buscábamos.</p>
<p>Dependiendo del editor que usemos para abrir el archivo, veremos código o una interfaz con las parejas de teléfonos y códigos de color distribuidas a lo largo de una tabla. A continuación teneís un par de imágenes con las dos posibilidades y marcados los números de teléfono y los códigos de color.</p>

<a href='http://sumolari.com/cambia-los-colores-de-los-contactos-de-whatsapp-en-ios/sineditorvisualplano/' title='WhatsApp - Colors.plist '><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2012/04/sinEditorVisualPlano-230x130.png" class="attachment-thumbnail" alt="WhatsApp - Colors.plist" /></a>
<a href='http://sumolari.com/cambia-los-colores-de-los-contactos-de-whatsapp-en-ios/coneditorvisualplano/' title='WhatsApp - Colors.plist '><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2012/04/conEditorVisualPlano-230x130.png" class="attachment-thumbnail" alt="WhatsApp - Colors.plist" /></a>

<p>Por último queda ver qué color se corresponde a cada identificador. A continuación tenéis una tabla recopilatoria de los 19 colores que <strong>WhatsApp</strong> ha asignado a mis contactos.</p>
<table class="table table-bordered">
<thead>
<tr>
<th>Identifier</th>
<th>Color</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td><span style="width: 20px; height: 20px; background: #32948A; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>1</td>
<td><span style="width: 20px; height: 20px; background: #F27405; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>2</td>
<td><span style="width: 20px; height: 20px; background: #B23203; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>3</td>
<td><span style="width: 20px; height: 20px; background: #793F52; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>4</td>
<td><span style="width: 20px; height: 20px; background: #FF523B; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>5</td>
<td><span style="width: 20px; height: 20px; background: #99C40A; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>6</td>
<td><span style="width: 20px; height: 20px; background: #C88900; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>7</td>
<td><span style="width: 20px; height: 20px; background: #363D9B; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>8</td>
<td><span style="width: 20px; height: 20px; background: #673B7E; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>9</td>
<td><span style="width: 20px; height: 20px; background: #1CB9D5; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>10</td>
<td><span style="width: 20px; height: 20px; background: #846600; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>11</td>
<td><span style="width: 20px; height: 20px; background: #DDCC0B; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>12</td>
<td><span style="width: 20px; height: 20px; background: #D9006A; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>13</td>
<td><span style="width: 20px; height: 20px; background: #19A901; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>14</td>
<td><span style="width: 20px; height: 20px; background: #034402; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>15</td>
<td><span style="width: 20px; height: 20px; background: #FE0303; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>16</td>
<td><span style="width: 20px; height: 20px; background: #BA33DC; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>17</td>
<td><span style="width: 20px; height: 20px; background: #544759; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
<tr>
<td>18</td>
<td><span style="width: 20px; height: 20px; background: #A197A6; display: block; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;"> </span></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/cambia-los-colores-de-los-contactos-de-whatsapp-en-ios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WP Carousel 1.1</title>
		<link>http://sumolari.com/wp-carousel-1-1/</link>
		<comments>http://sumolari.com/wp-carousel-1-1/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 17:24:41 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[mis creaciones]]></category>
		<category><![CDATA[wp carousel]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=7025</guid>
		<description><![CDATA[En principio pensaba liberar WP Carousel 1.1 cuando se liberase WordPress 3.3, pero hace unos días recibí un email del repositorio de plugins de  WordPress.org donde se me pedía que retirara el script StepCarousel por tener una licencia incompatible con GPL (todos los plugins del repositorio deben estar liberados bajo la licencia GPL). Para que [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://sumolari.com/wp-content/uploads/2011/12/Captura-de-pantalla-2011-12-06-a-las-18.17.31.png" rel="lightbox-7025"><img class="alignleft size-medium wp-image-7026 leftimage" title="Un carrusel de WP Carousel con Nivo Slider" src="http://sumolari.com/wp-content/uploads/2011/12/Captura-de-pantalla-2011-12-06-a-las-18.17.31-300x219.png" alt="Un carrusel de WP Carousel con Nivo Slider" width="300" height="219" /></a>En principio pensaba liberar <a href="http://wordpress.org/extend/plugins/wp-carousel">WP Carousel</a> 1.1 cuando se liberase <a href="http://sumolari.com/category/wordpress/">WordPress 3.3</a>, pero hace unos días recibí un email del repositorio de plugins de  WordPress.org donde se me pedía que retirara el script StepCarousel por tener una licencia incompatible con GPL (todos los plugins del repositorio deben estar liberados bajo la licencia GPL). Para que no retirasen <a href="http://wordpress.org/extend/plugins/wp-carousel">WP Carousel</a> del repositorio oficial y así facilitar su instalación y actualización con un sólo click, he decidido adelantar el lanzamiento.</p>
<p>Como ha sido algo apresurado, no he tenido tiempo de actualizar la documentación, cosa que haré lo antes posible.</p>
<p>Estos son los principales cambios de <a href="http://wordpress.org/extend/plugins/wp-carousel">WP Carousel</a> 1.1:</p>
<ol>
<li>Se ha <strong>eliminado StepCarousel</strong>, a partir de ahora por defecto se usará jCarousel.</li>
<li>Se ha <strong>actualizado la pestaña de ayud</strong>a con más información y compatible con el nuevo sistema de ayuda de <a href="http://sumolari.com/category/wordpress/">WordPress 3.3</a>.</li>
<li>Se ha resuelto el error que aparecía al usarse un theme que no existía. Ahora se muestra un mensaje de error pero la ejecución de la página prosigue.</li>
<li>Se ha añadido un <strong>archivo de configuración</strong> para poder mantener la configuración interna de <a href="http://wordpress.org/extend/plugins/wp-carousel">WP Carousel</a> (nombres de las tablas, prioridades de carga, etc) al actualizar WP Carousel. El uso de este archivo está en la pestaña de ayuda.</li>
<li>Se ha añadido una nueva opción interna para mostrar la lista de los últimos artículos en lugar del campo para introducir la ID del artículo cuando se supera el límite de artículos para la lista de artículos de la página de opciones del carrusel.</li>
<li>Se ha eliminado la matriz $log del código, reduciendo consumo de memoria.</li>
<li>Se ha <strong>añadido <a href="http://nivo.dev7studios.com/demos/">Nivo Slider</a></strong>como motor de carruseles. Los themes compatibles con Nivo Slider son diferentes los themes compatibles con jCarousel, y están claramente identificados en el selector de themes: sus nombres comienzan por &#8220;Nivo -&#8221;.</li>
</ol>
<p>Podéis actualizar WP Carousel desde el Panel de Administración de WordPress.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/wp-carousel-1-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Actualización 2.0.1 de Music Maniac</title>
		<link>http://sumolari.com/actualizacion-2-0-1-de-music-maniac/</link>
		<comments>http://sumolari.com/actualizacion-2-0-1-de-music-maniac/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 17:28:50 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod Touch]]></category>
		<category><![CDATA[mis creaciones]]></category>
		<category><![CDATA[Muisc Maniac]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=5659</guid>
		<description><![CDATA[En cuestión de horas estará disponible la versión 2.0.1 de Music Maniac en el AppStore. Esta actualización corrige algunos errores de la versión 2.0, entre los que se encuentran: Un error en la traducción al español. Errores diversos al tener pocas canciones en la biblioteca de iTunes (o pocos metadatos sobre las mismas). Un error [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://sumolari.com/wp-content/uploads/2011/09/LiteiTunesArtwork.png" rel="lightbox-5659"><img class="alignright size-medium wp-image-5664" title="Icono de Music Maniac Lite 2.0" src="http://sumolari.com/wp-content/uploads/2011/09/LiteiTunesArtwork-300x300.png" alt="Icono de Music Maniac Lite 2.0" width="150" height="150" /></a>En cuestión de horas estará disponible la versión 2.0.1 de <a href="http://musicmaniac.sumolari.com/">Music Maniac</a> en <a href="http://itunes.com/apps/music-maniac">el AppStore</a>. Esta actualización corrige algunos errores de la versión 2.0, entre los que se encuentran:</p>
<ul>
<li>Un error en la traducción al español.</li>
<li>Errores diversos al tener pocas canciones en la biblioteca de iTunes (o pocos metadatos sobre las mismas).</li>
<li>Un error que no iluminaba la respuesta correcta al terminar una ronda y no seleccionar ninguna canción.</li>
<li>Se ha mejorado el consumo de capacidad de almacenamiento que requiere Music Maniac para guardar ciertas estadísticas.</li>
</ul>
<p>También incluye otros cambios menores, como que al jugar Offline y salir de un concurso, en lugar de perder los avances, se carga la vista de estadísticas y se guardan los puntos obtenidos durante el tiempo que se jugó.</p>
<p>Además esta actualización también afecta a <a href="http://itunes.apple.com/es/app/music-maniac-lite/id411728119?mt=8">Music Maniac Lite</a>, pudiendo disfrutar de las novedades de la versión 2.0 en la versión reducida de <a href="http://itunes.apple.com/es/app/music-maniac/id404414993?mt=8">Music Maniac</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/actualizacion-2-0-1-de-music-maniac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guardar objetos en archivos con Objective-C</title>
		<link>http://sumolari.com/guardar-objetos-en-archivos-con-objective-c/</link>
		<comments>http://sumolari.com/guardar-objetos-en-archivos-con-objective-c/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 06:50:02 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Introducción a Objective-C]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=5633</guid>
		<description><![CDATA[Ayer Carmen Parra preguntaba en un comentario cómo se pueden guardar los datos introducidos por el usuario en un archivo. Como el proceso es demasiado largo como para publicarlo en un comentario, he decidido escribir este pequeño tutorial. NSArray, NSDictionary, NSString, NSNumber, NSData y otros Hay dos métodos sencillos para almacenar un objeto en un [...]]]></description>
				<content:encoded><![CDATA[<p>Ayer <a href="http://sumolari.com/introduccion-a-objective-c-el-paradigma-de-la-poo/comment-page-1/#comment-42784">Carmen Parra</a> preguntaba en un comentario cómo se pueden guardar los datos introducidos por el usuario en un archivo. Como el proceso es demasiado largo como para publicarlo en un comentario, he decidido escribir este pequeño tutorial.</p>
<h3>NSArray, NSDictionary, NSString, NSNumber, NSData y otros</h3>
<p><a href="http://sumolari.com/wp-content/uploads/2011/09/Captura-de-pantalla-2011-09-07-a-las-07.21.15.png" rel="lightbox-5633"><img class="alignright size-medium wp-image-5634 rightimage" title="Resultado del código de ejemplo" src="http://sumolari.com/wp-content/uploads/2011/09/Captura-de-pantalla-2011-09-07-a-las-07.21.15-300x115.png" alt="Resultado del código de ejemplo" width="300" height="115" /></a>Hay dos métodos sencillos para almacenar un objeto en un archivo y poder recuperarlo cuando nos convenga. El primero no se puede aplicar a cualquier objeto, sino a objetos de algunas clases de <a href="http://sumolari.com/category/objective-c/">Objective-C </a>que responden a dos métodos llamados <em>writeToFile:atomically:</em> y <em>writeToURL:atomically:</em>. El uso de estos métodos es muy sencillo, basta con llamarlos en el momento en el que queramos que el objeto se guarde en un archivo.</p>
<p>A continuación teneís un ejemplo comentado. Básicamente creamos una matriz, le añadimos algo de contenido, la imprimimos, la guardamos en un archivo y nos deshacemos de ella. A continuación creamos otra matriz que lea el contenido del archivo y comprobamos que tiene el mismo contenido que la anterior. El resultado que obtendréis será similar al de la imagen de la derecha.</p>
<pre class="prettyprint linenums">
NSMutableArray *array = [[NSMutableArray alloc] init]; // Creamos una matriz
	[array addObject:@&quot;¡Hola&quot;]; // Añadimos un objeto
	[array addObject:@&quot;mundo!&quot;]; // Añadimos otro objeto
	NSLog(@&quot;Matriz original: %@&quot;, array); // Imprimimos la matriz original
	[array writeToFile:@&quot;filename&quot; atomically:YES]; // Escribimos en el archivo filename el contenido de la matriz
	[array release]; // Liberamos memoria
	NSMutableArray *arrayFromFile = [[NSMutableArray alloc] initWithContentsOfFile:@&quot;filename&quot;]; // Esta matriz tiene el mismo contenido que tenía la matriz anterior
	NSLog(@&quot;%@&quot;, arrayFromFile); // Imprimimos la matriz recuperada del archivo
	[arrayFromFile release]; // Liberamos memoria
</pre>
<p>Del mismo modo que se puede guardar en un archivo un objeto de la clase <em>NSArray</em>, también se puede usar con objetos <em>NSDictionary</em>, <em>NSString</em>, <em>NSData</em> y <em>NSNumber</em>, entre otros. Sin embargo no se puede usar con objetos de una clase creada por nosotros (en la mayoría de los casos).</p>
<h3>Clases creadas por nosotros</h3>
<p>Para guardar en un archivo un objeto de una clase creada por nosotros, tendremos que hacer que el objeto sigua el protocolo <em>NSCoding</em>. Tras esto, mediante las clases <em>NSKeyedArchiver</em> y <em>NSKeyedUnarchiver</em> podremos guardar en un archivo y leer de un archivo nuestro objeto. Este protocolo tiene dos métodos necesarios: <em>initWithCoder:</em> y <em>encodeWithCoder:</em>.</p>
<p>Vamos a suponer que hemos creado la clase <em>Empleado</em>, que tiene la siguiente interfaz:</p>
<pre class="prettyprint linenums">
@interface Empleado : NSObject
@property (nonatomic, retain)	NSString	*nombre, *apellidos;
@property						NSUInteger	edad;
@property						BOOL		esEmpleadoDelMes;
@end
</pre>
<p>Para poder almacenar este objeto en un archivo tendremos primero que hacer que siga el protocolo <em>NSCoding</em>. Modficaremos la interfaz y la dejaremos así:</p>
<pre class="prettyprint linenums">
#define kNombre				@&quot;Nombre&quot;
#define kApellidos			@&quot;Apellidos&quot;
#define kEdad				@&quot;Edad&quot;
#define kEsEmpleadoDelMes	@&quot;esEmpleadoDelMes&quot;
@interface Empleado : NSObject
@property (nonatomic, retain)	NSString	*nombre, *apellidos;
@property						NSUInteger	edad;
@property						BOOL		esEmpleadoDelMes;
@end
</pre>
<p>Básicamente hay dos cambios: hemos indicado que la clase sigue el protocolo <em>NSCoding</em> y hemos definido una serie de constantes que usaremos más adelante y que entenderéis en seguida su utilidad.</p>
<p>Ahora pasamos a la implementación. Esta es la implementación original de la clase <em>Empleado</em>, antes de seguir el protocolo <em>NSCoding</em>:</p>
<pre class="prettyprint linenums">
@implementation Empleado
@synthesize nombre, apellidos;
@synthesize edad;
@synthesize esEmpleadoDelMes;
- (void)dealloc
{
	[nombre release];
	[apellidos release];
	[super dealloc];
}
@end
</pre>
<p>Ahora vamos a añadir los dos métodos que necesitamos para seguir el protocolo <em>NSCoding</em>. Estos métodos nos permiten archivar nuestro objeto. El método <em>encodeWithCoder:</em> tiene por parámetro un objeto de la clase <em>NSCoder</em>. En este objeto archivaremos las propiedades del nuestro, asignándole a una serie de claves las propiedades del objeto.</p>
<p>Por ejemplo, si queremos hacer que la propiedad <em>nombre</em> se archive en la clave <em>clave</em>, el método tendría el siguiente aspecto:</p>
<pre class="prettyprint linenums">
- (void)encodeWithCoder:(NSCoder *)coder {
    [coder encodeObject:self.nombre forKey:@&quot;clave&quot;];
}
</pre>
<p>No todas las propiedades se archivan de la misma forma. Los objeto se archivan a través del método <em>encodeObject:forKey:</em>, los números enteros se archivan con <em>encodeInteger:forKey:</em> y los valores booleanos con <em>encodeBool:forKey:</em>. Las claves son muy importantes, ya que el método <em>initWithCoder:</em> va a desarchivar el objeto usando las mismas claves para acceder a las propiedades, por eso hemos definido una serie de constantes que serán las claves que usaremos para archivar y desarchivar las propiedades.</p>
<p><strong>Nota:</strong> Tenéis una lista de todos los métodos para archivar objetos, así como una explicación del proceso de archivar y desarchivar objetos en <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Archiving/Articles/codingobjects.html#//apple_ref/doc/uid/20000948-BCIHBJDE">la documentación de Apple</a> (en inglés).</p>
<p>Nuestro método <em>encodeWithCoder:</em> quedará así:</p>
<pre class="prettyprint linenums">
- (void)encodeWithCoder:(NSCoder *)coder {
    [coder encodeObject:self.nombre forKey:kNombre];
	[coder encodeObject:self.apellidos forKey:kApellidos];
	[coder encodeInteger:self.edad forKey:kEdad];
	[coder encodeBool:self.esEmpleadoDelMes forKey:kEsEmpleadoDelMes];
}
</pre>
<p>El método <em>initWithCoder:</em> es muy similar al anterior, sólo que su funcionamiento es el contrario: a partir de un objeto archivado se obtienen las propiedades y se crea un objeto de la clase <em>Empleado</em> (en este caso) con las propiedades que tenía el objeto al archivarse. En este caso enviaremos el mensaje <em>decodeObjectForKey:@&#8221;clave&#8221;</em> a <em>coder</em> y asignaremos el valor devuelto a la propiedad de nuestro objeto. De nuevo, se usan métodos diferentes para decodificar número enteros, valores booleanos y otros tipos de variables. Nuestro método <em>initWithCoder: </em>quedará así:</p>
<pre class="prettyprint linenums">
- (id)initWithCoder:(NSCoder *)coder {
    if ((self = [super init])) {
		self.nombre = [coder decodeObjectForKey:kNombre];
		self.apellidos = [coder decodeObjectForKey:kApellidos];
		self.edad = [coder decodeIntForKey:kEdad];
		self.esEmpleadoDelMes = [coder decodeBoolForKey:kEsEmpleadoDelMes];
	}
    return self;
}
</pre>
<p><a href="http://sumolari.com/wp-content/uploads/2011/09/Captura-de-pantalla-2011-09-07-a-las-08.43.05.png" rel="lightbox-5633"><img class="alignleft size-medium wp-image-5641 leftimage" title="Resultado del ejemplo" src="http://sumolari.com/wp-content/uploads/2011/09/Captura-de-pantalla-2011-09-07-a-las-08.43.05-300x19.png" alt="Resultado del ejemplo" width="300" height="19" /></a>Ahora pasemos a crear un objeto <em>Empleado</em>, a guardarlo en un archivo y a comprobar que funciona correctamente. Primero incluímos la interfaz de la clase <em>Empleado </em>en el archivo en el que vamos a crear el objeto, en mi caso, y al tratarse de una &#8220;<em>Command Line Tool</em>&#8220;, lo incluiré en el archivo <em>main.m</em>. El siguiente código comentado crea un objeto de la clase <em>Empleado</em>, le asigna algunos valores sus propiedades, lo archiva y después crea un nuevo objeto con el contenido del archivo en el que se ha guardado antes el objeto:</p>
<pre class="prettyprint linenums">
Empleado *trabajador = [[Empleado alloc] init]; // Creamos el objeto
	trabajador.nombre = @&quot;Juan&quot;; // Le damos un nombre
	trabajador.apellidos = @&quot;García López&quot;; // Unos apellidos
	trabajador.edad = 26; // Una edad
	trabajador.esEmpleadoDelMes = YES; // Y lo hacemos empleado del mes
	NSLog(@&quot;%@ %@ tiene %lu años&quot;, trabajador.nombre, trabajador.apellidos, trabajador.edad); // Imprimimos sus datos
	[NSKeyedArchiver archiveRootObject:trabajador toFile:@&quot;empleado&quot;]; // Lo guardamos en el archivo empleado
	[trabajador release]; // Liberamos memoria
	Empleado *trabajadorRecuperado = [NSKeyedUnarchiver unarchiveObjectWithFile:@&quot;empleado&quot;]; // Creamos un objeto a partir del archivo empleado
	NSLog(@&quot;%@ %@ tiene %lu años&quot;, trabajadorRecuperado.nombre, trabajadorRecuperado.apellidos, trabajadorRecuperado.edad); // Imprimimos sus datos
</pre>
<p>Así se puede guardar un objeto de cualquier clase en un archivo, de forma que puede ser recuperado en cualquier momento. Los objetos más complejos pueden necesitar métodos más complejos a la hora de archivarlos. Del mismo modo no se tienen por qué archivar todas las propiedades si no se quiere.</p>
<p>Por último <a href="http://cl.ly/140k2I3L2b1U1N0E0Z1H">dejo a vuestra disposición los archivos del proyecto que he creado mientras escribía el tutorial</a>, por si os atascáis y necesitáis un empujoncito.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/guardar-objetos-en-archivos-con-objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Music Maniac 2.0 en el AppStore</title>
		<link>http://sumolari.com/music-maniac-2-0-en-el-appstore/</link>
		<comments>http://sumolari.com/music-maniac-2-0-en-el-appstore/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 16:08:58 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod Touch]]></category>
		<category><![CDATA[mis creaciones]]></category>
		<category><![CDATA[Music Maniac]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=5614</guid>
		<description><![CDATA[Ya está disponible Music Maniac 2.0 en el AppStore como una actualización de Music Maniac. Las novedades ya las resumí hace unos días, que son en definitiva nuevos modos de juego, nueva interfaz, modo multijugador online y otras mejoras que no se pueden resumir en un solo párrafo. La versión Lite de Music Maniac estará [...]]]></description>
				<content:encoded><![CDATA[<p>Ya está disponible <a title="Music Maniac 2.0 muy pronto en el App Store" href="http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/">Music Maniac 2.0</a> en <a href="http://itunes.com/apps/music-maniac">el AppStore</a> como una actualización de <a href="http://musicmaniac.sumolari.com">Music Maniac</a>. Las novedades ya las resumí hace unos días, que son en definitiva nuevos modos de juego, nueva interfaz, modo multijugador online y otras mejoras que no se pueden resumir en un solo párrafo.</p>
<p>La versión Lite de Music Maniac estará disponible muy pronto.</p>
<p>Página de <a href="http://musicmaniac.sumolari.com">Music Maniac en Sumolari.com</a> | <a title="Music Maniac 2.0 muy pronto en el App Store" href="http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/">Galería de imágenes de Music Maniac</a> | <a href="http://itunes.com/apps/music-maniac">Music Maniac en el AppStore</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/music-maniac-2-0-en-el-appstore/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Music Maniac 2.0 muy pronto en el App Store</title>
		<link>http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/</link>
		<comments>http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 10:37:43 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod Touch]]></category>
		<category><![CDATA[mis creaciones]]></category>
		<category><![CDATA[Music Maniac]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=5494</guid>
		<description><![CDATA[Music Maniac 2.0 ha sido aprobada en el App Store.  Estará disponible como actualización para todos los usuarios de Music Maniac cuando haya sido aprobada la versión Lite. Mientras tanto, y a falta de unos días (u horas) para que esté disponible esta nueva versión, voy a resumir las principales novedades. Reescrita desde 0 Esta [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://sumolari.com/wp-content/uploads/2011/08/music_maniac_icon.png" rel="lightbox-5494"><img class="alignleft leftimage" style="border: 0pt none;" title="Music Maniac 2.0" src="http://sumolari.com/wp-content/uploads/2011/08/music_maniac_icon.png" alt="Music Maniac 2.0" width="155" height="155" /></a><a href="http://musicmaniac.sumolari.com">Music Maniac 2.0</a> ha sido aprobada en el App Store.  Estará disponible como actualización para todos los usuarios de <a href="http://musicmaniac.sumolari.com">Music Maniac</a> cuando haya sido aprobada la versión Lite. Mientras tanto, y a falta de unos días (u horas) para que esté disponible esta nueva versión, voy a resumir las principales novedades.</p>
<h3>Reescrita desde 0</h3>
<p>Esta no es una actualización cualquiera. He comenzado desde 0 la aplicación y la he vuelto a programar al completo, eliminando cualquier error de la versión anterior y añadiendo nuevas funciones. La interfaz también ha cambiado. Ahora el jugador puede añadir concursos a <a href="http://musicmaniac.sumolari.com">Music Maniac</a>, configurando las rondas, los modos de juego y las preguntas. No hay ningún límite de concursos, y por defecto hay tres concursos (que por supuesto, pueden modificarse o eliminarse). Se pueden desplazar los concursos para ver otros.</p>
<p>En la parte inferior de la pantalla hay una serie de trucos e indicaciones. El menú de la aplicación se despliega al hacer un doble toque en la parte superior de la pantalla, e imita la forma de la barra de multitarea de iOS 4. Cada icono lleva a una sección diferente de la aplicación, generalmente para añadir, ordenar o editar concursos.</p>
<h3>Modo multijugador</h3>
<p>Se ha rediseñado el modo multijugador. A partir de ahora se podrá jugar hasta con 4 jugadores, vía Game Center o compartiendo el mismo dispositivo. La interfaz se adapta al número de jugadores para mostrar las puntuaciones de cada uno en todo momento. Además se puede pausar el juego y salir en cualquier momento.</p>
<p>Se ha mejorado el modo online. Ahora <a href="http://musicmaniac.sumolari.com">Music Maniac</a> crea una caché del Top 50 de la iTunes Store y te permite jugar tanto en solitario como con amigos con estas canciones. La primera descargar puede tardar un poco, ya que se deben descargar alrededor de 50 MB, no obstante las siguientes son más rápidas, ya que <a href="http://musicmaniac.sumolari.com">Music Maniac</a> aprovecha las canciones que ya se han descargado y siguen en el Top 50 de la iTunes Store  para agilizar la siguiente sincronización.</p>
<h3>Rendimiento mejorado</h3>
<p><a href="http://musicmaniac.sumolari.com">Music Maniac</a> es ahora más estable y más rápida. Se puede jugar en cualquier dispositivo que soporte iOS 4 y con bibliotecas grandes. El modo online ofrece además un redimiento mejorado al descargar y procesar todas las canciones para que durante las partidas el dispositivo tenga que hacer el minimo esfuerzo posible y se pueda mantaner un ritmo trepidante.</p>
<h3>Universal</h3>
<p>La aplicación sigue siendo universal, es decir, la diversión no se queda en el iPhone o iPod touch, sino que se puede jugar en el iPad con una interfaz mejorada para su pantalla. Los gráficos también están preparados para la Retina Display del iPhone 4 y los iPod touch de última generación.</p>
<p>Desde la aplicación <em>Ajustes</em> se puede cambiar el idioma de <a href="http://musicmaniac.sumolari.com">Music Maniac</a>, traducido por completo al inglés, español y catalán. Puedes jugar con <a href="http://musicmaniac.sumolari.com">Music Maniac</a> en inglés aunque tengas tu dispositivo en español&#8230; ¡o en ruso!</p>
<h3>Nuevo sistema de juego</h3>
<p>En <a href="http://musicmaniac.sumolari.com">Music Maniac</a> se pueden crear los concursos más flexibles vistos en iOS. Ya no se establece el número de rondas por concurso, sino el número de veces que quieres jugar con un modo. Así es posible crear un concurso con una sola ronda para el modo rápido y muchas más rondas para el modo estándar. Además <a href="http://musicmaniac.sumolari.com">Music Maniac</a> ofrece un nuevo modo de juego: el <strong>modo apuesta</strong>. Cuanto más puntos se arriesguen más puntos se pueden ganar.</p>
<h3>Game Center</h3>
<p>Además de soportar el modo multijugador hasta 4 jugadores a través de Game Center, <a href="http://musicmaniac.sumolari.com">Music Maniac</a> incluye logros y tablas de clasificación en las que poder lucirse, También lleva un recuento de los aciertos y al final de cada concurso online que se juegue muestra la lista de las canciones que han sonado, por si te ha gustado alguna y quieres acerte con ella.</p>
<h3>Imágenes</h3>
<p>Estas son las imágenes que aparecerán en el App Store. Hay más imágenes en <a href="http://musicmaniac.sumolari.com">la página de Music Maniac</a>.</p>

<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-1/' title='Music Maniac 2.0 - iPhone'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-1-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPhone" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-2/' title='Music Maniac 2.0 - iPhone'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-2-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPhone" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-3/' title='Music Maniac 2.0 - iPhone'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-3-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPhone" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-4/' title='Music Maniac 2.0 - iPhone'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-4-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPhone" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-5/' title='Music Maniac 2.0 - iPhone'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-5-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPhone" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-1-2/' title='Music Maniac 2.0 - iPad'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-11-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPad" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-2-2/' title='Music Maniac 2.0 - iPad'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-21-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPad" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-3-2/' title='Music Maniac 2.0 - iPad'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-31-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPad" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-4-2/' title='Music Maniac 2.0 - iPad'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-41-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPad" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/la-foto-5-2/' title='Music Maniac 2.0 - iPad'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/la-foto-51-230x130.png" class="attachment-thumbnail" alt="Music Maniac 2.0 - iPad" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/itunesartwork-2/' title='Icono de Music Maniac 2.0'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/iTunesArtwork-230x130.png" class="attachment-thumbnail" alt="Icono de Music Maniac 2.0" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/liteitunesartwork/' title='Icono de Music Maniac 2.0 Lite'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/LiteiTunesArtwork-230x130.png" class="attachment-thumbnail" alt="Icono de Music Maniac 2.0 Lite" /></a>
<a href='http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/background_texture2x/' title='Pantalla de carga de Music Maniac 2.0'><img width="230" height="130" src="http://sumolari.com/wp-content/uploads/2011/08/background_texture@2x-230x130.png" class="attachment-thumbnail" alt="Pantalla de carga de Music Maniac 2.0" /></a>

]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/music-maniac-2-0-muy-pronto-en-el-app-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Music Maniac 2.0</title>
		<link>http://sumolari.com/music-maniac-2-0/</link>
		<comments>http://sumolari.com/music-maniac-2-0/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 15:47:36 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Carrusel]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=5469</guid>
		<description><![CDATA[<h2>Music Maniac</h2>
<p>El juego donde tu música y tú sois los protagonistas.</p>
<div class="btn-group"><a href="http://itunes.apple.com/us/app/music-maniac-lite/id411728119?mt=8" class="btn">Pruébala</a><a href="http://itunes.apple.com/us/app/music-maniac/id404414993?mt=8" class="btn btn-primary">Cómprala</a></div>]]></description>
				<content:encoded><![CDATA[<p><a href="http://sumolari.com/music-maniac"><img title="Music Maniac 2.0 - Carousel" src="http://sumolari.com/wp-content/themes/SumoProject/img/music_maniac_slider.png" alt="Music Maniac 2.0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/music-maniac-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Borra archivos de un pendrive en Mac OS X sin vaciar la papelara</title>
		<link>http://sumolari.com/borra-archivos-de-un-pendrive-en-mac-os-x-sin-vaciar-la-papelara/</link>
		<comments>http://sumolari.com/borra-archivos-de-un-pendrive-en-mac-os-x-sin-vaciar-la-papelara/#comments</comments>
		<pubDate>Sat, 20 Aug 2011 10:26:09 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[automator]]></category>
		<category><![CDATA[trucos]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=5423</guid>
		<description><![CDATA[Editado: En la primera versión de esta pequeña aplicación había un error que provocaba que en unidades con nombres que incluyesen espacios o caracteres especiales no se borrasen los archivos de forma definitiva. Se ha resuelto y he actualizado el artículo añadiendo el enlace para descargar la última versión en lugar de la que tenía [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Editado:</strong> En la primera versión de esta pequeña aplicación había un error que provocaba que en unidades con nombres que incluyesen espacios o caracteres especiales no se borrasen los archivos de forma definitiva. Se ha resuelto y he actualizado el artículo añadiendo el enlace para descargar la última versión en lugar de la que tenía el error. ¡Gracias a Jorosa por el aviso!</p>
<div id="attachment_5430" class="wp-caption alignleft" style="width: 240px"><a href="http://sumolari.com/wp-content/uploads/2011/08/Captura-de-pantalla-2011-08-20-a-las-12.00.20.png" rel="lightbox-5423"><img class="size-thumbnail wp-image-5430 " title="Archivos &quot;borrados&quot; del pendrive" src="http://sumolari.com/wp-content/uploads/2011/08/Captura-de-pantalla-2011-08-20-a-las-12.00.20-230x130.png" alt="Archivos &quot;borrados&quot; del pendrive" width="230" height="130" /></a><p class="wp-caption-text">Hay cerca de 800MB de archivos &quot;borrados&quot; en este pendrive</p></div>
<p>Hay veces que uno se sorprende al ver ciertos comportamientos de <a href="http://sumolari.com/category/mac-os-x/">Mac OS X</a>. Uno de los que menos me gustan es la forma de borrar archivos de un dispositivo extraíble (por ejemplo, un pendrive). En lugar de borrar el archivo, como sería de esperar, o moverlo a la papelera del Mac, lo almacena en una carpeta oculta dentro del propio pendrive que usa a modo de papelera. Si nos fijamos en la papelera de nuestro Mac, veremos que los archivos que hemos borrado del pendrive aparecen en ella, aunque no estén almacenados en el Mac.</p>
<p>El problema radica en que además de no borrar realmente los archivos y dejarlos en el pendrive (ocupando parte de su preciada capacidad), no hay forma de borrar los archivos individualmente de la papelera. Si usamos la combinación <em>Función</em> + <em>Retroceso</em> lo que hacemos es devolver el archivo eliminado a su carpeta de origen en lugar de borrarlo. Estamos pues obligados a vaciar la papelera y borrar definitivamente otros archivos que tal vez no queramos perder todavía.</p>
<p>Así que, algo mosqueado porque esto no haya cambiado ni en Snow Leopard ni en Lion (ni tiene pinta de que vaya a cambiar), he creado una simple aplicación en Automator para &#8220;<em>limpiar</em>&#8221; los pendrives de archivos supuestamente eliminados.</p>
<h3>Cómo funciona</h3>
<div id="attachment_5433" class="wp-caption alignright" style="width: 240px"><a href="http://sumolari.com/wp-content/uploads/2011/08/Captura-de-pantalla-2011-08-20-a-las-12.08.27.png" rel="lightbox-5423"><img class="size-thumbnail wp-image-5433" title="La carpeta .Trashes al descubierto" src="http://sumolari.com/wp-content/uploads/2011/08/Captura-de-pantalla-2011-08-20-a-las-12.08.27-230x130.png" alt="La carpeta .Trashes al descubierto" width="230" height="130" /></a><p class="wp-caption-text">Esto lo aclara todo</p></div>
<p>Antes de dar los enlaces para descargar la aplicación, veamos cómo funciona. Como ya he dicho, Mac OS X mueve los archivos &#8220;<em>borrados</em>&#8221; a una carpeta oculta que funciona a modo de papelera. Esta carpeta se llama <em>.Trashes</em> (como de costumbre en OS X, al llevar un punto al principio del nombre, la carpeta es oculta). Si borramos la carpeta<em> .Trashes</em>, borramos todos los archivos que queríamos eliminar pero, ¿cómo la borramos sin pasar por la papelera de nuevo?</p>
<p>Aquí es donde entra en juego el potencial de un sistema basado en Unix. Gracias al comando <strong>rm</strong> (<strong>r</strong>emo<strong>v</strong>e) podemos eliminar archivos o carpetas sin necesidad de pasar por la papelera. Combinando esto con un par de parámetros, concretamente <strong>-R</strong> (borrar de forma recursiva) <strong>-f</strong> (sin pedir confirmación) y <strong>-d</strong> (directorios y archivos) conseguimos vaciar el pendrive de archivos que queríamos borrar.</p>
<p>Obviamente tener que escribir todo esto en la terminal cada vez que queremos limpiar un pendrive de archivos &#8220;<em>borrados</em>&#8221; no es muy cómodo. Para hacer más cómoda la tarea recurriremos a <em>Automator</em>, ese pobre incomprendido que si bien es capaz de hacer maravillas, la mayoría de los usuarios desconoce incluso su existencia.</p>
<p><a href="http://sumolari.com/wp-content/uploads/2011/08/Captura-de-pantalla-2011-08-20-a-las-11.43.22.png" rel="lightbox-5423"><img class="size-thumbnail wp-image-5435 alignleft leftimage" style="border: none;" title="Creamos una nueva aplicación en Automator" src="http://sumolari.com/wp-content/uploads/2011/08/Captura-de-pantalla-2011-08-20-a-las-11.43.22-230x130.png" alt="Creamos una nueva aplicación en Automator" width="230" height="130" /></a><a href="http://sumolari.com/wp-content/uploads/2011/08/Captura-de-pantalla-2011-08-20-a-las-11.53.38.png" rel="lightbox-5423"><img class="alignright size-medium wp-image-5436" title="El flujo resultante" src="http://sumolari.com/wp-content/uploads/2011/08/Captura-de-pantalla-2011-08-20-a-las-11.53.38-300x176.png" alt="El flujo resultante" width="300" height="176" /></a>Para crear la aplicación abrimos <em>Automator </em>y elegimos crear una aplicación. A continuación arrastramos las acciones para formar el flujo que podéis ver en la imagen de la derecha. Básicamente el flujo es el siguiente:</p>
<ol>
<li>Solicitamos una carpeta. El usuario deberá seleccionar un dispositivo extraíble.</li>
<li>Establecemos el valor de una variable con la ruta de la carpeta seleccionada.</li>
<li>Leemos el valor de esta variable y se lo pasamos a un script Shell como parámetro (este paso y el anterior supongo que se pueden omitir y usar el resultado del paso 1 como argumentos para el paso 4, pero por pereza no lo he comprobado &#8211; si alguien se anima que lo comente en los comentarios).</li>
<li>En el script <em>Shell</em> usamos el comando <strong>cd</strong> (<strong>c</strong>hange <strong>d</strong>ir) para ir a la ruta del pendrive.</li>
<li>A continuación, en el mismo <em>Shell</em> y cambiada la ruta a la que nos interesa, borramos la carpeta <em>.Trashes</em> con los parámetros que he expuesto antes.</li>
</ol>
<h3>Descarga</h3>
<p>Seguidos los pasos y entendido el funcionamiento, <a href="http://sumolari.com/?dl_id=7">aquí tenéis a vuestra disposición la aplicación</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/borra-archivos-de-un-pendrive-en-mac-os-x-sin-vaciar-la-papelara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP Carousel 1.0.1</title>
		<link>http://sumolari.com/wp-carousel-1-0-1/</link>
		<comments>http://sumolari.com/wp-carousel-1-0-1/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 07:15:23 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[mis creaciones]]></category>
		<category><![CDATA[wp carousel]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=5397</guid>
		<description><![CDATA[En unos pocos minutos estará disponible la versión 1.0.1 de WP Carousel. Esta versión no incluye ninguna novedad, sino que está centrada en arreglar algunos errores que han afectado a algunos usuarios. Entre los cambios que tiene esta versión se encuentran: Se ha desactivado el contador que impedía mostrar dos veces un carrusel debido a [...]]]></description>
				<content:encoded><![CDATA[<p>En unos pocos minutos estará disponible la versión 1.0.1 de <a title="WP Carousel" href="http://sumolari.com/proyecto/wp-carousel/">WP Carousel</a>. Esta versión no incluye ninguna novedad, sino que está centrada en arreglar algunos errores que han afectado a algunos usuarios. Entre los cambios que tiene esta versión se encuentran:</p>
<ul>
<li>Se ha desactivado el contador que impedía mostrar dos veces un carrusel debido a que algunos usuarios obtenían ese error aún cuando no habían mostrado más de un carrusel. Aún así persiste la limitación de no poder mostrar el mismo carrusel varias veces en la misma página.</li>
<li>A partir de ahora cuando un elemento no tenga extracto ni tenga valor en el campo personalizado que utiliza <a title="WP Carousel" href="http://sumolari.com/proyecto/wp-carousel/">WP Carousel</a> para las descripciones, se mostrará todo el contenido del elemento.</li>
<li>A partir de ahora los vídeos que se añadan a los contenidos personalizados funcionarán correctamente.</li>
<li>Se ha eliminado algo de código innecesario y se han hecho algunos cambios menores.</li>
</ul>
<p>Como de costumbre, se puede actualizar desde el Panel de Administración de WordPress o descargar el plugin desde <a href="http://wordpress.org/extend/plugins/wp-carousel/">WordPress.org</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/wp-carousel-1-0-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Se buscan Beta-Testers para Music Maniac 2.0</title>
		<link>http://sumolari.com/se-buscan-beta-testers-para-music-maniac-2-0/</link>
		<comments>http://sumolari.com/se-buscan-beta-testers-para-music-maniac-2-0/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 16:56:49 +0000</pubDate>
		<dc:creator>Sumolari</dc:creator>
				<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod Touch]]></category>
		<category><![CDATA[mis creaciones]]></category>
		<category><![CDATA[Music Maniac]]></category>

		<guid isPermaLink="false">http://sumolari.com/?p=5356</guid>
		<description><![CDATA[Nota: Ya se han registrado suficientes probadores para Music Maniac 2.0. Muchas gracias a todos por mostrar vuestro interés. El desarrollo de Music Maniac 2.0 va a buen ritmo, y ya ha llegado el momento de buscar voluntarios interesados en probar la aplicación, reportar errores y hacer sugerencias para mejorar aún más esta versión. ¿Qué [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://sumolari.com/wp-content/uploads/2011/08/trofeo.png" rel="lightbox-5356"><img class="alignleft size-medium wp-image-5366 leftimage" title="Music Maniac 2.0" src="http://sumolari.com/wp-content/uploads/2011/08/trofeo-198x300.png" alt="Music Maniac 2.0" width="198" height="300" /></a></p>
<p><strong>Nota:</strong> Ya se han registrado suficientes probadores para Music Maniac 2.0. Muchas gracias a todos por mostrar vuestro interés.</p>
<p>El desarrollo de Music Maniac 2.0 va a buen ritmo, y ya ha llegado el momento de buscar voluntarios interesados en probar la aplicación, reportar errores y hacer sugerencias para mejorar aún más esta versión.</p>
<h3>¿Qué se ofrece?</h3>
<p>Colaborar en la creación de una aplicación para iOS, ser escuchado y ver las sugerencias que sean propuestas implementadas en la la versión final de la apliación. Poder sentir que se ha sido parte del proyecto y aparecer en los créditos de la aplicación, además de recibir una copia de la aplicación, incluidas todas las futuras actualizaciones de la misma.</p>
<h3>¿Qué se necesita para ser probador?</h3>
<p>Un dispositivo que soporte y tenga instalado iOS 4.0 (iPod Touch 2G/3G/4G, iPhone 3G/3GS/4 o iPad), con conexión a Internet vía Wi-Fi o 3G (imprescindible conexión a Internet en el dispositivo para poder instalar las Betas). Los dispositivos a los que se les ha realizado el Jailbreak no están excluidos, aunque no he comprobado que se puedan instalar las Betas en ellos.</p>
<h3>¿En qué consiste la aplicación?</h3>
<p>Se trata de la reescritura desde 0 de Music Maniac, el concurso musical para iOS. Describiendo a grandes rasgos la aplicación, he reescrito todo el código desde 0, he rediseñado toda la aplicación y la he reestructurado para hacerla estable, rápida y atractiva. Pero de momento quiero guardar en secreto las novedades, hasta tener lista la versión final.</p>
<h3>¿Cómo inscribirse?</h3>
<p>Ya se han registrado suficientes probadores y no se admiten más inscripciones. ¡Gracias por mostrar tu interés!</p>
]]></content:encoded>
			<wfw:commentRss>http://sumolari.com/se-buscan-beta-testers-para-music-maniac-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
