<?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>es.naroh</title>
	<atom:link href="http://www.naroh.es/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.naroh.es/blog</link>
	<description></description>
	<lastBuildDate>Sat, 27 Apr 2013 20:34:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>El bulo de las 0 dimisiones por corrupción</title>
		<link>http://www.naroh.es/blog/2013/politica/el-bulo-de-las-0-dimisiones-por-corrupcion/</link>
		<comments>http://www.naroh.es/blog/2013/politica/el-bulo-de-las-0-dimisiones-por-corrupcion/#comments</comments>
		<pubDate>Sat, 27 Apr 2013 20:34:16 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[Política]]></category>
		<category><![CDATA[Redes Sociales]]></category>
		<category><![CDATA[Dimisiones]]></category>
		<category><![CDATA[Indignados]]></category>
		<category><![CDATA[Mentiras]]></category>
		<category><![CDATA[Políticos]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2740</guid>
		<description><![CDATA[Las redes sociales son un hervidero de bulos y datos falsos. Hoy casualmente he visto un tweet que dice lo siguiente (cito el tweet que parece precursor del bulo): Echando un ojo rápido al alcance del tweet se puede ver que ha &#8230; <a href="http://www.naroh.es/blog/2013/politica/el-bulo-de-las-0-dimisiones-por-corrupcion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>Las redes sociales son un hervidero de bulos y datos falsos.</strong> Hoy casualmente he visto un tweet que dice lo siguiente (cito el tweet que parece precursor del bulo):</p>
<p><img class="aligncenter size-full wp-image-2741" alt="tweet0dimisiones" src="http://www.naroh.es/blog/wp-content/uploads/2013/04/tweet0dimisiones.png" width="498" height="495" /></p>
<p><a href="http://naroh.es/proyectos/reachofatweet/">Echando un ojo rápido al alcance del tweet</a> se puede ver que ha llegado a más de 7.000 personas. Y ese &#8220;a más&#8221; es difícil de cuantificar, ya que por limitaciones de la API de Twitter sólo se puede consultar el alcance de 100 RT al tweet original (y ahora va por más de 133) y además yo de primeras le leí el tweet a <a href="https://twitter.com/atlante83">@atlante83</a>, que le hizo un retweet <em>old school, </em>y teniendo en cuenta que él tiene<strong> más de</strong> <strong>15.000 followers</strong> podemos concluir que el alcance ha sido más que considerable.</p>
<p>Bien, preguntando por las fuentes me remitieron a <a href="http://twitter.com/atlante83/status/328236805596016640">que son datos de 2009</a> (hace cuatro años, vaya) y que <a href="http://twitter.com/atlante83/status/328238778974101506">son las cifras que dio el Fiscal General</a> por entonces. <a href="http://wiki.15m.cc/wiki/Lista_de_pol%C3%ADticos_condenados#2013">La fuente es una wiki del movimiento 15M</a> donde <strong>curiosamente en ningún lugar cita ningún número de dimisiones</strong> (ni en la propia wiki ni en las referencias a noticias en medios).</p>
<p>Parece que los datos de las dimisiones no tienen fuente pero&#8230; Bueno, igual son ciertos. Dado que son datos de hace 4 años no podemos contar las dimisiones de <a href="http://www.elmundo.es/elmundo/2012/12/10/espana/1355142964.html">Cervera</a>, <a href="http://www.huffingtonpost.es/2013/02/14/dimite-miguel-bustos-_n_2684016.html">Bustos</a>, <a href="http://www.cincodias.com/articulo/economia/dimite-numero-psc-imputado-caso-corrupcion-sabadell/20121127cdscdseco_7/">Fernández</a>, <a href="http://www.lavozdegalicia.es/noticia/espana/2012/10/03/dimite-portavoz-pp-parlamento-valenciano-imputado-corrupcion/0003_201210G3P18991.htm">Blasco</a> o <a href="http://politica.elpais.com/politica/2013/03/27/actualidad/1364395761_309130.html">Mascaró</a>, así que hay que hacer una búsqueda un poco más profunda&#8230; <strong>En la que nos encontramos que, por ejemplo,<a href="http://www.rtve.es/noticias/20090209/dos-miembros-del-equipo-aguirre-dimiten-trama-corrupcion-madrid/230086.shtml"> en febrero de 2009 dimitieron nada más y nada menos que dos consejeros del Gobierno de Esperanza Aguirre por el caso Gürtel</a>. Vaya, parece que las cero dimisiones son falsas.</strong></p>
<p>En fin, esto no es más que otro ejemplo de <strong>lo fácil que es inventarse unos datos amparado en la <i>indignación verdadera</i></strong> y hacerlos circular llegando a miles y miles de personas que, con su enorme espíritu crítico, los hacen a su vez circular entre todos sus contactos <strong>sin dudar ni contrastar</strong> lo que se dice.</p>
<p><strong>Sociedad informada</strong>, lo llaman.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2013/politica/el-bulo-de-las-0-dimisiones-por-corrupcion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Diputados arrancacabezas</title>
		<link>http://www.naroh.es/blog/2013/politica/diputados-arrancacabezas/</link>
		<comments>http://www.naroh.es/blog/2013/politica/diputados-arrancacabezas/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 11:29:23 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[Política]]></category>
		<category><![CDATA[escraches]]></category>
		<category><![CDATA[Sigfrid Soria]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2734</guid>
		<description><![CDATA[Hoy el PP ha anunciado que apartará de la Directiva Nacional al diputado canario Sigfrid Soria tras haber publicado el anterior tweet (y unos cuantos más relacionado los participantes de los escraches-acoso con el Ku Klux Klan). Lo primero de todo: las &#8230; <a href="http://www.naroh.es/blog/2013/politica/diputados-arrancacabezas/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2735" alt="BHkPg3NCAAAYhzx" src="http://www.naroh.es/blog/wp-content/uploads/2013/04/BHkPg3NCAAAYhzx.jpg" width="600" height="400" /></p>
<p>Hoy el PP ha anunciado que <a href="http://www.eldiario.es/politica/PP-Sigfrid-Junta-Directiva-Nacional_0_120738058.html">apartará de la Directiva Nacional al diputado canario Sigfrid Soria</a> tras haber publicado el anterior tweet (y unos cuantos más relacionado los participantes de los <em>escraches-acoso</em> con el Ku Klux Klan).</p>
<p>Lo primero de todo:<strong> las declaraciones son desafortunadas</strong>. Quiero decir, un diputado —o cualquier cargo público— no puede ir por ahí hablando de arrancar cabezas. Me parece bastante normal que aparten de la directiva a un señor que no puede mantener la boquita cerrada y hace declaraciones de ese tipo.</p>
<p>Pero una cosa son las declaraciones y otras los hechos.</p>
<p>Creo firmemente que <strong>si se diese el caso de que alguien le atacase a él (o a su hija, como dice) tendría todo el derecho del mundo a defenderse, físicamente si hace falta</strong>. <a href="http://es.wikipedia.org/wiki/Leg%C3%ADtima_defensa">Aquello de la<strong> legítima defensa</strong> y tal</a>, que también tienen los diputados. Porque por lo que he visto muchísima gente cree que si eres diputado, o alcalde, o cualquier cargo público tienes que quedarte calladito y tragando si te agreden. Y oye, no,<strong> eso no va en el sueldo.</strong></p>
<p>Así que, definitivamente, este diputado ha metido la pata con sus tweets pero no con lo que piensa. De hecho, si en lugar de haber dicho eso hubiera actuado tal y como comenta en el eventual caso de que él o algún familiar fuera agredido tendría todo mi apoyo. Pero hombre&#8230; Así no.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2013/politica/diputados-arrancacabezas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cataluña, esa tierra de libertad</title>
		<link>http://www.naroh.es/blog/2013/politica/cataluna-esa-tierra-de-libertad/</link>
		<comments>http://www.naroh.es/blog/2013/politica/cataluna-esa-tierra-de-libertad/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 14:05:03 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[Política]]></category>
		<category><![CDATA[Catalán]]></category>
		<category><![CDATA[Cataluña]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2727</guid>
		<description><![CDATA[Por si no os parecía bastante eso de que te puedan multar por rotular tu tienda Frutería Manolo en lugar de Fruitería Manolo: 5. Les emissores de radiodifusió i de televisió han de garantir que en la programació de música cantada hi &#8230; <a href="http://www.naroh.es/blog/2013/politica/cataluna-esa-tierra-de-libertad/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Por si no os parecía bastante eso de que te puedan multar por rotular tu tienda <em>Frutería Manolo</em> en lugar de <em>Fruitería Manolo:</em><strong><br />
</strong></p>
<blockquote><p>5. Les emissores de radiodifusió i de televisió han de garantir que en la programació de música cantada hi hagi una presència adequada de cançons produïdes per artistes catalans i <strong>que com a mínim el vint-i-cinc per cent siguin cançons interpretades en llengua catalana</strong> o en aranès.</p></blockquote>
<p><a href="http://www20.gencat.cat/docs/governacio/Funcio%20Publica/Documents/Normativa/Arxius/lle1-98.pdf">Ley 1/1998 de política lingüística</a>. Artículo 26, <em>Els mitjans de radiodifusió i televisió de concessió </em>(página 7).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2013/politica/cataluna-esa-tierra-de-libertad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Almacenar datos en Android mediante serialización</title>
		<link>http://www.naroh.es/blog/2013/android/almacenar-datos-en-android-mediante-serializacion/</link>
		<comments>http://www.naroh.es/blog/2013/android/almacenar-datos-en-android-mediante-serializacion/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 02:08:57 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Almacenamiento persistente]]></category>
		<category><![CDATA[Des-serialización]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Serialización]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2699</guid>
		<description><![CDATA[A la hora de realizar aplicaciones es posible que sea necesario almacenar datos en el teléfono de forma permanente para utilizarlos cuando sea necesario. Si bien Android nos permite guardar pares de datos mediante las Shared Preferences éste método está &#8230; <a href="http://www.naroh.es/blog/2013/android/almacenar-datos-en-android-mediante-serializacion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full noborder wp-image-2711" alt="serializacion" src="http://www.naroh.es/blog/wp-content/uploads/2013/03/serializacion.jpg" width="566" height="163" /></p>
<p>A la hora de realizar aplicaciones es posible que sea necesario almacenar datos en el teléfono de forma permanente para utilizarlos cuando sea necesario. Si bien Android nos permite guardar pares de datos mediante las <a href="http://developer.android.com/guide/topics/data/data-storage.html#pref">Shared Preferences</a> éste método está pensado para almacenar datos primitivos (ints, booleans, Strings&#8230;) y <strong>no debe utilizarse para almacenar grandes cantidades información</strong>. Por lo tanto si queremos almacenar una cantidad considerable, especialmente si esta información es un <strong>objeto</strong>, tenemos que buscar otras formas de<strong> almacenamiento persistente</strong>.</p>
<p>Una de las <a href="http://developer.android.com/guide/topics/data/data-storage.html">opciones que tenemos a la hora de almacenar objetos</a> es el <strong>almacenamiento interno</strong> o externo del terminal. Si bien antes era más recomendable utilizar el almacenamiento externo (aún a riesgo de problemas si éste de repente deja de estar presente) por la falta de memoria interna de algunos terminales ahora es habitual tener dispositivos con gran capacidad, o incluso dispositivos que carecen de almacenamiento externo (como la gama Nexus de la propia Google), así que no es mala idea almacenar la información en el almacenamiento interno del dispositivo. <strong>Los datos guardados en el almacenamiento interno pueden ser tanto privados para la aplicación como públicos, y son eliminados al desinstalar la app.</strong> Pero todo esto lo podéis ver mejor en la sección correspondiente de la sección de desarrolladores de Android, <a href="http://developer.android.com/guide/topics/data/data-storage.html#filesInternal">using the internal storage</a>.</p>
<p>Bien, en el anterior enlace nos enseñan cómo almacenar un String, pero no cómo crear nuestro propio objeto adecuado o cómo almacenar un objeto. Y esto es lo que voy a cubrir en este post.</p>
<p><span id="more-2699"></span></p>
<h2>Pero, ¿qué es la serialización?</h2>
<p>Si no has trasteado mucho con Java puede que eso de <em>serializar</em> (verbo que no existe pero que a los programadores nos resulta muy útil) no te suene. No pasa nada: es algo muy sencillo. <strong>La serialización es convertir un array de bytes para su almacenamiento en un archivo o su envío por Internet. </strong>Y la des-serialización, como es obvio, es tomar ese array de bytes y convertirlo en el objeto que era antes de la serialización para poder utilizarlo como si nada hubiera pasado.</p>
<h2>No todos los objetos son serializables</h2>
<p>Desgraciadamente no todo se puede serializar, pero hay un montón de cosas que sí lo permiten: <strong>se pueden serializar todas aquellas clases que implementan la <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html">interfaz Serializable</a></strong> (o la subinterfaz Externalizable), como, por poner un ejemplo, <a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html">ArrayList</a>. A la hora de serializar acuérdate de acudir a la API correspondiente (a la de Java en el caso de que trabajes con clases propias de Java o a la correspondiente si no) para comprobar que la clase permite su serialización u obtendrás una bonita excepción <a href="http://docs.oracle.com/javase/7/docs/api/java/io/NotSerializableException.html">NotSerializableException</a><b>.</b></p>
<p>Además, a pesar de que una clase implemente Serializable o Externalizable<strong> las variables <em>static</em> tampoco pueden ser serializadas debido a que son variables <em>de clase</em>, </strong>esto es, pertenecen a la clase y no al objeto que estamos tratando. Y <strong>si tratamos de serializar un objeto que contiene una instancia no serializable</strong> <strong>también tendremos una NotSerializableException. </strong>Esto puede evitarse anteponiendo la palabra <em>transient</em> a la instancia no serializable, de forma que en el proceso de serialización sea ignorada.</p>
<h2>Una serialización sencilla en Android</h2>
<p>Para hacer todo esto más gráfico lo mejor de todo es poner un sencillo ejemplo práctico de serialización. Nuestro proyecto se encargará de crear un objeto Alumno, que contendrá su nombre (String), apellidos (String), lista de asignaturas (ArrayList&lt;String&gt;), nota media (int) y un boolean que indicará si pasa de curso o no. Para ello tendrá dos clases (la pantalla de la actividad principal y otra donde crearemos un objeto). El XML de la actividad principal será extremadamente sencillo: dos Button dentro de una LinearLayout y un TextView dentro de una RelativeLayout que engloba a todos los elementos.</p>
<h2>El XML de nuestra actividad</h2>
<p>Gráficamente nuestra aplicación presentará dos botones. Uno de ellos servirá para serializar un objeto que crearemos vía código y otro para des-serializarlo. Cuando se des-serialice el objeto se imprimirá en un TextView para comprobar que todo ha ido correctamente. El código es este:</p><pre class="crayon-plain-tag">&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:padding="@dimen/activity_horizontal_margin"
    tools:context=".MainActivity" &gt;

    &lt;LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" &gt;

        &lt;Button
            android:id="@+id/serializar"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Serializar" /&gt;

        &lt;Button
            android:id="@+id/deserializar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Des-serializar" /&gt;
    &lt;/LinearLayout&gt;

    &lt;TextView
        android:id="@+id/textodesserializado"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/linearLayout1"
        android:layout_alignParentBottom="true"
        android:layout_alignRight="@+id/linearLayout1"
        android:layout_below="@+id/linearLayout1"
        android:layout_marginTop="24dp"
        android:text="El método toString del objeto Alumno imprimirá aquí la información al des-serializar..."
        android:textAppearance="?android:attr/textAppearanceMedium" /&gt;

&lt;/RelativeLayout&gt;</pre><p></p>
<h2>Nuestro objeto Alumno</h2>
<p>Para poder serializar un objeto antes hay que, obviamente, crearlo. Para ello crearemos una clase llamada Alumno donde especificaremos cómo será nuestro objeto Alumno. Para que sea posible su serialización hay que añadir <em>implements Serializable</em> tras el <em>public class Alumno</em>.</p>
<p>Nuestro objeto constará de los campos ya descritos, dos constructores por defecto (uno vacío, por costumbre, y otro con todos los campos declarados), métodos <em>get </em>y <em>set</em> para todos los campos y otros dos elementos: un método toString() y un <strong>long serialVersionUID</strong>,  un long necesario, ya que la rutina de serialización asocia cada clase serializada con ID que se utiliza para comprobar la compatibilidad a la hora de la des-serialización (<a href="http://josedeveloper.com/2012/02/24/sabias-que-el-serialversionuid-en-las-clases-java-nos-previene-de-errores-en-la-deserializacion/">más información aquí</a>). Este UID es static, final y long: <em>static final long SerialVersionUID = loquesea;. </em>Puedes darle un valor tú mismo o dejar que eclipse lo haga (ya que nada más implementar la <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html">interfaz Serializable</a> comenzará a quejarse sobre este tema, por lo que bastará con seguir sus recomendaciones).</p>
<p>El código será el siguiente. Incluímos un<em> ArrayList&lt;String&gt;</em> para las asignaturas que no nos dará problema a la hora de serializar debido a que <em>ArrayList</em> implementa la clase Serializable también.</p><pre class="crayon-plain-tag">package com.naroh.ejemploserializacionobjeto;

import java.io.Serializable;
import java.util.ArrayList;

public class Alumno implements Serializable {

	private static final long serialVersionUID = 5680898935329497057L;
	private String nombre;
	private String apellido;
	private ArrayList&lt;String&gt; asignaturas;
	private double notamedia;
	private boolean pasadecurso;

	public Alumno() {
	}

	public Alumno(String nombre, String apellido, ArrayList&lt;String&gt; asignaturas, int notamedia, boolean pasadecurso) {
		super();
		this.nombre = nombre;
		this.apellido = apellido;
		this.asignaturas = asignaturas;
		this.notamedia = notamedia;
		this.pasadecurso = pasadecurso;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public ArrayList&lt;String&gt; getAsignaturas() {
		return asignaturas;
	}

	public void setAsignaturas(ArrayList&lt;String&gt; asignaturas) {
		this.asignaturas = asignaturas;
	}

	public double getNotamedia() {
		return notamedia;
	}

	public void setNotamedia(double d) {
		this.notamedia = d;
	}

	public boolean isPasadecurso() {
		return pasadecurso;
	}

	public void setPasadecurso(boolean pasadecurso) {
		this.pasadecurso = pasadecurso;
	}

	@Override
	public String toString() {
		return "Alumno [nombre=" + nombre + ", apellido=" + apellido + ", asignaturas=" + asignaturas + ", notamedia=" + notamedia + ", pasadecurso=" + pasadecurso + "]";
	}	
}</pre><p></p>
<h2> La actividad principal de nuestra aplicación</h2>
<p>Realizaremos la serialización en la actividad principal. Para ello lo primero que tenemos que hacer es crear un objeto Alumno y añadir los datos: se llamará <a href="http://www.youtube.com/results?search_query=juan+cuesta&amp;page=&amp;utm_source=opensearch">Juan Cuesta</a>, crearemos un <em>Array </em>de asignaturas, añadiremos una nota media de 8,4 y un true al boolean <em>PasaDeCurso.</em></p>
<p>A continuación pasaremos a la parte que sólo tiene sentido en nuestro proyecto, la funcionalidad de los botones mediante onClickListener para llamar a los métodos que realizarán el trabajo:</p>
<p><strong>Serializa(Alumno a) </strong>llevará a cabo el proceso de serialización. Crearemos un FileOutputStream (que como su nombre indica es un stream para guardar datos) y a continuación abriremos un <em>try{</em> para el manejo de las excepciones que nos puedan saltar en el proceso. A continuación abriremos (o crearemos) el fichero donde guardaremos la información mediante</p><pre class="crayon-plain-tag">fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);</pre><p>Los parámetros del openFileOutput son el nombre del archivo a crear o abrir y el <strong><a href="http://developer.android.com/reference/android/content/Context.html#MODE_PRIVATE">método de creación</a></strong>. <strong>Context.MODE_PRIVATE hace que sólo esté disponible para la aplicación</strong> y que ni el resto de apps ni el usuario puedan acceder a él, mientras que MODE_WORLD_WRITEABLE hace todo lo contrario: permite que cualquiera pueda acceder y escribir el archivo.</p>
<p>Tras ello abriremos un ObjectOutputStream, necesario para guardar nuestro objeto, y lo vincularemos al FileOutputStream que ya habíamos creado. Finalmente utilizamos <em>writeObject(Object o);</em> para escribir en el archivo, tras lo cual cerraremos el ObjectOutputStream.</p>
<p><strong>Desserializa() </strong>se encargará de la des-serialización. Para ello utilizarmos algo similar a Serializa(): un FileInputStream para leer desde el archivo. A continuación crearemos un objeto Alumno, que rellenaremos con los datos leídos del fichero tras des-serializar, y abriremos otra sentencia <em>try{</em> donde abriremos el archivo, crearemos un ObjectInputStream vinculado al stream de lectura del archivo y asignaremos lo leído mediante el método <em>readObject() </em>al objeto Alumno de reciente creación (fíjate que hay que hacer un cast del objeto). Finalmente cerraremos el ObjectInputStream y añadiremos el objeto Alumno recién creado al TextView de nuestra pantalla. Para ello comprobaremos que el objeto Alumno no sea null, algo que podría pasar si tenemos algún problema a la hora de leer el archivo. Así evitaremos que nuestra aplicación se cierre de forma inesperada.</p>
<p>Este será el código:</p><pre class="crayon-plain-tag">package com.naroh.ejemploserializacionobjeto;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OptionalDataException;
import java.io.StreamCorruptedException;
import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity{
	protected Alumno a;
	// Nombre del archivo donde vamos a guardar el objeto
	protected String filename = "alumno.dat"; 

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// Creamos un alumno e introducimos los datos de prueba

		a = new Alumno();
		a.setNombre("Juan");
		a.setApellido("Cuesta");
		ArrayList&lt;String&gt; asignaturas = new ArrayList&lt;String&gt;();
		asignaturas.add("Introducción a la Ley de Propiedad Horizontal");
		asignaturas.add("Gestión de infraestructuras comunitarias");
		asignaturas.add("Recursos humanos");
		asignaturas.add("Principios históricos en la restauración de fachadas");
		a.setAsignaturas(asignaturas);
		a.setNotamedia(8.4);
		a.setPasadecurso(true);

		// Añadimos onClickListeners a los dos botones con las acciones que deben realizar

		Button serializa = (Button) findViewById(R.id.serializar);
		serializa.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Log.i("A", "tocado serializa");
				Serializa(a);
			}
		});

		Button desserializa = (Button) findViewById(R.id.deserializar);
		desserializa.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Desserializa();

			}
		});
	}

	protected void Serializa(Alumno a){
		FileOutputStream fos;
		try {
			fos = openFileOutput(filename, Context.MODE_PRIVATE);
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			oos.writeObject(a);
			oos.close();
			Toast.makeText(this, "Objeto correctamente serializado y guardado", Toast.LENGTH_SHORT).show();
		} catch (FileNotFoundException e) {
			Toast.makeText(this, "Error: archivo no encontrado", Toast.LENGTH_SHORT).show();
			e.printStackTrace();
		} 
		catch (IOException e) {
			Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
			e.printStackTrace();
		}
	}

	protected void Desserializa(){
		FileInputStream fin;
		Alumno afromfile = null;

		try {
			fin = openFileInput(filename);
			ObjectInputStream ois = new ObjectInputStream(fin);
			afromfile = (Alumno) ois.readObject();
			ois.close();
			Toast.makeText(this, "Objeto des-serializado y extraído", Toast.LENGTH_SHORT).show();
		} catch (StreamCorruptedException e) {
			Toast.makeText(this, "Error en las comprobaciones de consistencia", Toast.LENGTH_SHORT).show();
			e.printStackTrace();
		} catch (OptionalDataException e) {
			Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			Toast.makeText(this, "Archivo no encontrado", Toast.LENGTH_SHORT).show();
			e.printStackTrace();
		} catch (IOException e) {
			Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		TextView texto = (TextView) findViewById(R.id.textodesserializado);
		if(afromfile != null) texto.setText(afromfile.toString());
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}</pre><p></p>
<h2> ¡Y ya está!</h2>
<p>Si todo funciona como debe ser, al pulsar el botón Serializa la aplicación serializará el objeto Alumno y lo guardará en el archivo. Tras pulsar des-serializar se realizará la opción inversa y el objeto recuperado se imprimirá en el TextView creado para ello. Si pulsas el botón Des-serializar antes de haber serializado el objeto saltará una notificación advirtiendo de que no se ha encontrado el archivo (excepción FileNotFound manejada en el <em>try</em> de la des-serialización).</p>
<p>Además del código aquí posteado he dejado el proyecto en GitHub para poder manejarlo más cómodamente: <strong><a href="https://github.com/Naroh091/Android-Object-Serialization-Example">Android-Object-Serialization-Example</a>.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2013/android/almacenar-datos-en-android-mediante-serializacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ListViews personalizadas en Android</title>
		<link>http://www.naroh.es/blog/2013/android/listviews-personalizadas-en-android/</link>
		<comments>http://www.naroh.es/blog/2013/android/listviews-personalizadas-en-android/#comments</comments>
		<pubDate>Sat, 09 Mar 2013 17:25:45 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[ListView]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2652</guid>
		<description><![CDATA[Tengo un par de amigos que están empezando a meterse en el mundillo de la programación para Android, y como buenos principiantes, tienen muchas ganas pero también muchas dudas. Hace unos días me preguntaron por cómo hacer listas personalizadas para &#8230; <a href="http://www.naroh.es/blog/2013/android/listviews-personalizadas-en-android/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2682" alt="resultadolistview" src="http://www.naroh.es/blog/wp-content/uploads/2013/03/resultadolistview.png" width="630" height="400" /><br />
Tengo un par de amigos que están empezando a meterse en el mundillo de la programación para Android, y como buenos principiantes, tienen muchas ganas pero también muchas dudas.</p>
<p>Hace unos días me preguntaron por cómo hacer listas personalizadas para sus aplicaciones de Android. A pesar de que hay bastantes ejemplos por Internet (y también está disponible la <a href="http://developer.android.com">documentación de Google</a>) he mirado algunas páginas y desde luego no destacan por su sencillez a la hora de dar explicaciones, por lo que quizá una persona que esté empezando en el mundillo los encuentre bastante difícil de entender. Así que me he decidido a, en lugar de explicárselo personalmente a ellos, hacer un post con una explicación lo más clara posible y si así puedo ayudar a alguna otra persona bienvenido sea.</p>
<h2>Quiero un <em>ListView</em> que contenga imágenes</h2>
<p>Las listas en Android se llenan de elementos mediante un <em>Adapter</em>, que, para explicarlo de forma sencilla, es una especie de puente entre la lista y los datos que queremos que aparezcan en esa lista. Esto quiere decir que no importan los datos que deseemos añadir a una lista, la <em>ListView</em> siempre será igual, cambiando el <em>Adapter. </em>Nos podemos encontrar con varios tipos de <em>Adapter</em> por defecto, como, por ejemplo, el <em><a href="http://developer.android.com/reference/android/widget/ArrayAdapter.html">ArrayAdapter</a>, </em>que muestra un <em>array</em> en una lista.</p>
<p>Además del <em>Adapter</em> también necesitamos un archivo xml donde se especifique cómo va a ser la lista. Estos archivos son archivos <em>layout</em>, exactamente iguales a los que definen cómo son las actividades de nuestra aplicación. Android cuenta con varios archivos <em>layout</em> para listas por defecto, como <em>simple_list_item1, simple_list_item2</em>&#8230; Dependiendo del layout que escojas la lista tendrá un aspecto u otro (y tendrás que escoger un <em>Adapter</em> u otro, o sobreescribir métodos).</p>
<p>Pero como todo esto es muy sencillo vamos a lo que importa: vamos a crear una lista que muestre la lista del Consejo de Dirección de la empresa Cebollas Paco S.L; lista que nos mostrará una foto del directivo, su nombre completo y su cargo.</p>
<p><span id="more-2652"></span></p>
<h2>Creando el layout para los elementos de cada lista</h2>
<p>Creamos un archivo <em>layout </em>de la forma habitual, escogiendo la opción <em>XML Layout File</em>. Lo llamaremos <em>itemlista.xml </em>y constará de una <em>RelativeLayout</em>, un <i>ImageView</i> con ID &#8220;foto&#8221; y dos <em>TextView </em>de distinto tamaño, el mayor con el ID &#8220;nombre&#8221; y el menor con el ID &#8220;cargo&#8221;.</p>
<p>Diseñamos a nuestro gusto nuestro <em>layout</em>. En mi caso he dado un <em>padding</em> de 10dp a la <em>RelativeLayout </em>y he colocado los campos de texto a la izquierda de la imagen (he colocado el androide en el campo de imagen para que sea visible y más fácil de entender, pero una vez le dais una altura y anchura podéis dejarlo vacío ya que los que tenga cada campo en el XML se sobreescribirán mediante los datos que pasemos por código).</p>
<p><a href="http://www.naroh.es/blog/2013/android/listviews-personalizadas-en-android/attachment/ejemplolayoutfoto/" rel="attachment wp-att-2667"><img class="aligncenter size-full wp-image-2667" alt="ejemplolayoutfoto" src="http://www.naroh.es/blog/wp-content/uploads/2013/03/ejemplolayoutfoto.png" width="572" height="196" /></a>Estupendo, ya tenemos cómo se verán los elementos de nuestra lista personalizada. Ahora vamos a lo más importante: el código.</p>
<h2>Creando un objeto <em>Directivo</em></h2>
<p>Para poder llenar nuestra lista de los directivos de la empresa tendremos que crear un objeto que nos permita representarlos. Para ello crearemos una nueva clase dentro de nuestro proyecto, la clase Directivo, que utilizaremos para crear un objeto de tipo Directivo donde se puedan almacenar los datos deseados: fotografía, nombre y cargo. Recordad que es una clase auxiliar, así que debe crearse como tal, no como una actividad (no hay que registrarla en AndroidManifest ni crear un xml asociado).</p>
<p>Esta clase contendrá tres elementos protegidos, un <em>Drawable</em> para la fotografía (no tiene por qué ser un <em>Drawable</em> de forma obligatoria, puede ser un <i>Drawable</i> o lo que sea que necesites), dos <em>String</em> para el nombre y para el cargo y un <em>long</em> para poder obtener el ítem con el que se está interactuando en el caso de que queramos dar esa opción. Una vez declarados los elementos (y hechas las importaciones necesarias) podemos hacerlo todo un poco más sencillo utilizando las herramientas automáticas de Eclipse que nos permiten crear automáticamente el constructor y los métodos <em>set</em> y <em>get </em>(clic derecho sobre el editor de código &gt; Source).</p>
<p>Gráficamente un objeto directivo será algo así:</p>
<p><img class="aligncenter size-full wp-image-2677" alt="esquemaDirectivo" src="http://www.naroh.es/blog/wp-content/uploads/2013/03/esquemaDirectivo.png" width="630" height="150" /></p>
<p>Nuestra clase Directivo tendrá la siguiente pinta:</p><pre class="crayon-plain-tag">package com.naroh.pruebalistviewimagenes;

import android.graphics.Drawable;

public class Directivo {
	protected Drawable foto;
	protected String nombre;
	protected String cargo;
	protected long id;

	public Directivo(Drawable foto, String nombre, String cargo) {
		super();
		this.foto = foto;
		this.nombre = nombre;
		this.cargo = cargo;
	}

	public Directivo(Drawable foto, String nombre, String cargo, long id) {
		super();
		this.foto = foto;
		this.nombre = nombre;
		this.cargo = cargo;
		this.id = id;
	}

	public Drawable getFoto() {
		return foto;
	}

	public void setFoto(Drawable foto) {
		this.foto = foto;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getCargo() {
		return cargo;
	}

	public void setCargo(String cargo) {
		this.cargo = cargo;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}
}</pre><p></p>
<h2> Creando nuestro propio <i>Adapter</i></h2>
<p>Dado que la lista representará objetos que hemos creado es bastante obvio que no podremos utilizar ningún <em>adapter</em> predefinido. Por lo tanto tendremos que crear nosotros mismos uno, algo que no es demasiado difícil una vez le pillas el truco. Básicamente será un conjunto de una <em>Activity</em> (o sea, el contexto de la actividad en la que mostraremos la lista) y un <em>ArrayList</em><em> </em>de nuestros directivos, lo que representaremos por <em>ArrayList&lt;Directivo&gt;. </em>Para crear nuestro <em>Adapter</em> crearemos la clase <em>AdapterDirectivos.</em> y extenderemos de <em>BaseAdapter, </em>implementando los métodos de <em>BaseAdapter </em>necesarios.</p>
<p>Si te cuesta ver mentalmente la estructura del <em>ArrayList&lt;Directivo&gt; </em>imagínate una cuerda de tender la ropa (el <em>array</em>) de donde cuelgan un montón de calcetines (los directivos). Más o menos así te puedes acercar a dibujar mentalmente cómo es un array de objetos.</p>
<p>A continuación os dejo mi clase <em>AdapterDirectivos.</em> Hay una cosa que aparece ahí y no he explicado, y es ese <em>convertView</em> que aparece en el método getView. Se trata de un truquillo para aumentar la eficiencia a la hora de <em>pintar</em> las listas, y podéis ahondar un poco sobre ello en este post: <a href="http://android-er.blogspot.com.es/2010/06/using-convertview-in-getview-to-make.html">Using convertView in getView() to make ListView efficient</a> y en la <a href="http://developer.android.com"> </a><a href="http://developer.android.com/reference/android/widget/Adapter.html#getView%28int,%20android.view.View,%20android.view.ViewGroup%29">documentación de Android</a>. He colocado unos comentarios<em style="color: inherit;"> inline</em> en el código que espero que sean suficientemente explicativos:</p><pre class="crayon-plain-tag">package com.naroh.pruebalistviewimagenes;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class AdapterDirectivos extends BaseAdapter{

	protected Activity activity;
	protected ArrayList&lt;Directivo&gt; items;

	public AdapterDirectivos(Activity activity, ArrayList&lt;Directivo&gt; items) {
	    this.activity = activity;
	    this.items = items;
	  }

	@Override
	public int getCount() {
		return items.size();
	}

	@Override
	public Object getItem(int arg0) {
		return items.get(arg0);
	}

	@Override
	public long getItemId(int position) {
		return items.get(position).getId();
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {

		// Generamos una convertView por motivos de eficiencia
		View v = convertView;

		//Asociamos el layout de la lista que hemos creado
		if(convertView == null){
			LayoutInflater inf = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			v = inf.inflate(R.layout.itemlista, null);
		}

		// Creamos un objeto directivo
		Directivo dir = items.get(position);
		//Rellenamos la fotografía
		ImageView foto = (ImageView) v.findViewById(R.id.foto);
		foto.setImageDrawable(dir.getFoto());
		//Rellenamos el nombre
		TextView nombre = (TextView) v.findViewById(R.id.nombre);
		nombre.setText(dir.getNombre());
		//Rellenamos el cargo
		TextView cargo = (TextView) v.findViewById(R.id.cargo);
		cargo.setText(dir.getCargo());

		// Retornamos la vista
		return v;
	}
}</pre><p></p>
<h2><span style="color: #000000; font-weight: bold;">Cargando el contenido en la lista</span></h2>
<p>Lo más complicado ya ha pasado. Ahora lo único que tenemos que hacer es adecuar la actividad donde vamos a mostrar la lista y su layout. En el código de la actividad tendremos que crear objetos Directivo que introduciremos en un <i>ArrayList&lt;Directivo&gt; </i>e instanciar un <em>AdapterDirectivos</em> y colocarlo como el <em>Adapter </em>de la lista que tenemos en nuestro <em>layout</em> de actividad.</p><pre class="crayon-plain-tag">package com.naroh.pruebalistviewimagenes;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ListView;

public class Principal extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_principal);

		ListView lista = (ListView) findViewById(R.id.listadirectivos);
		ArrayList&lt;Directivo&gt; arraydir = new ArrayList&lt;Directivo&gt;();
		Directivo directivo;

		// Introduzco los datos
		directivo = new Directivo(getResources().getDrawable(R.drawable.ariannahuffington), "Arianna Huffington", "Presidenta");
		arraydir.add(directivo);
		directivo = new Directivo(getResources().getDrawable(R.drawable.corinna), "Princesa Corinna", "CEO");
		arraydir.add(directivo);
		directivo = new Directivo(getResources().getDrawable(R.drawable.hillaryclinton), "Hillary Clinton", "Tesorera");
		arraydir.add(directivo);
		directivo = new Directivo(getResources().getDrawable(R.drawable.bono), "Bono el de U2", "Amenizador");
		arraydir.add(directivo);
		directivo = new Directivo(getResources().getDrawable(R.drawable.carmenmairena), "Carmen de Mairena", "Directora RRHH");
		arraydir.add(directivo);

		// Creo el adapter personalizado
		AdapterDirectivos adapter = new AdapterDirectivos(this, arraydir);

		// Lo aplico
		lista.setAdapter(adapter);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.principal, menu);
		return true;
	}

}</pre><p></p>
<h2> Todo listo</h2>
<p>¡Ya está! No ha sido tan terrible, ¿verdad? Tras estos sencillos pasos tendremos el resultado de la imagen que encabeza este post.</p>
<p>Además del código aquí posteado también he creado un repositorio en GitHub con el proyecto para que lo descarguéis y ejecutéis en vuestro Eclipse si lo deseáis: <strong><a href="https://github.com/Naroh091/Android-Custom-ListView-with-images">Android-Custom-ListView-with-images</a>.</strong></p>
<p>Mucha suerte con la programación y que vaya todo bien. Y recuerda que si no entiendes algo siempre puedes preguntar en los comentarios.</p>
<p>PS. En el caso de que tu lista contenga gran cantidad de imágenes descargadas desde Internet puede resultarte muy útil este artículo para aumentar la eficiencia y la respuesta al usuario de tu aplicación: <a href="http://www.startcapps.com/blog/tutorial-como-optimizar-una-listview-con-imagenes-de-internet/">Cómo optimizar una ListView con imágenes de Internet</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2013/android/listviews-personalizadas-en-android/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>¿Es la vivienda un derecho fundamental en España? La respuesta es no</title>
		<link>http://www.naroh.es/blog/2013/politica/es-la-vivienda-un-derecho-fundamental-en-espana/</link>
		<comments>http://www.naroh.es/blog/2013/politica/es-la-vivienda-un-derecho-fundamental-en-espana/#comments</comments>
		<pubDate>Sun, 10 Feb 2013 12:14:56 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[Política]]></category>
		<category><![CDATA[Constitución]]></category>
		<category><![CDATA[Derechos Fundamentales]]></category>
		<category><![CDATA[Vivienda]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2627</guid>
		<description><![CDATA[Ayer pudimos ser testigos de excepción en Twitter de algo parecido a un campo de distorsión de realidad creado alrededor de un tweet de la exministra de vivienda Maria Antonia Trujillo, pero lamentablemente llevado a cabo por personas que ni siquiera &#8230; <a href="http://www.naroh.es/blog/2013/politica/es-la-vivienda-un-derecho-fundamental-en-espana/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ayer pudimos ser testigos de excepción en Twitter de algo parecido a un <a href="http://en.wikipedia.org/wiki/Reality_distortion_field">campo de distorsión de realidad</a> creado alrededor de un tweet de la exministra de vivienda Maria Antonia Trujillo, pero lamentablemente llevado a cabo por personas que ni siquiera tenían conocimiento acerca de lo que estaban hablando. El tweet en cuestión es este:</p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>El derecho a la vivienda es un derecho constitucional pero no un derecho fundamental. Hay diferencias, digo yo</p>
<p>&mdash; MaríaAntoniaTrujillo (@matrujil) <a href="https://twitter.com/matrujil/status/300393951712669696">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Lo que dice Trujillo es cierto.<strong> La vivienda no es un derecho fundamental en España y efectivamente hay diferencias.</strong> El <em>derecho</em> a la vivienda se puede encontrar en el artículo 47 de la CE:</p>
<blockquote><p><strong>Artículo 47.</strong></p>
<p><strong>Todos los españoles tienen derecho a disfrutar de una vivienda digna y adecuada.</strong></p>
<p>Los poderes públicos promoverán las condiciones necesarias y establecerán las normas pertinentes para hacer efectivo este derecho, regulando la utilización del suelo de acuerdo con el interés general para impedir la especulación.</p>
<p>La comunidad participará en las plusvalías que genere la acción urbanística de los entes públicos.</p></blockquote>
<p>¿Es un derecho fundamental? Veamos lo que dice Lorenzo Cotino Hueso, profesor titular de Derecho Constitucional de la Universitat de València, en <em><a href="http://www.portalfio.org/inicio/repositorio//CUADERNOS/CUADERNO-4/Lorenzo%20Cotino%20Hueso.pdf">Aproximación a los Derechos Fundamentales</a></em>:</p>
<blockquote><p>El capítulo tercero (artículos 39 al 52) regula los “Principios rectores de la política social y económica”, con algunos “derechos” y principios económicos, sociales, culturales y medioambientales.<strong> En virtud </strong><strong>del artículo 53.3 en ningún caso pueden considerarse derechos fundamentales.</strong> [1]</p></blockquote>
<p>Bien, ¿qué dice ese artículo 53.3? Podemos encontrar una buena explicación <a href="http://www.congreso.es/consti/constitucion/indice/sinopsis/sinopsis.jsp?art=53&amp;tipo=2">en la propia web del Congreso de los Diputados</a>:</p>
<blockquote><p><span style="color: #444444;">A la vista de la redacción del precepto constitucional, <strong>resulta claro que el Capítulo Tercero no recoge auténticos derechos; se trata, en dicción constitucional que obvia tal mención, de &#8220;principios&#8221; que cumplen más bien una función orientadora de la actuación de los poderes públicos</strong> (especialmente del Legislativo y el Ejecutivo, aunque expresamente se cita también la práctica judicial). No son tampoco normas de aplicación inmediata o cuyos &#8220;derechos&#8221; tienen su origen inmediato en la Constitución, porque requieren de un desarrollo legislativo para poder ser alegados ante los Tribunales ordinarios.<strong> No pueden tener, por sí mismos, acceso al Tribunal Constitucional,</strong> aunque se encuentran, eso sí, protegidos por el principio general de rigidez constitucional y por la correlativa posibilidad de cuestionar la inconstitucionalidad de una norma con rango legal que los vulnere.</span></p></blockquote>
<p>Y, ¿qué quiere decir que la vivienda no sea un derecho fundamental según la CE? Nos lo puede decir la propia Maria Antonia Trujillo (quien, para el que no lo sepa, además de haber sido Ministra de Vivienda es Doctora en Derecho Constitucional):</p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>@<a href="https://twitter.com/ireramoss">ireramoss</a> la protección y la exigibilidad del derecho</p>
<p>&mdash; MaríaAntoniaTrujillo (@matrujil) <a href="https://twitter.com/matrujil/status/300396382433456129">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Efectivamente, <strong>que no sea derecho fundamental sino principio rector importa y mucho. Los derechos fundamentales de la CE están sujetos a exigibilidad: en el caso de que no se cumplan (derecho a la vida, de igualdad, etc) se pueden reclamar mediante un recurso de amparo ante el Tribunal Constitucional. </strong></p>
<p>Bien, explico todo esto (y, de verdad, no hace falta tener un doctorado en Derecho Constitucional para saberlo, vale con leer para informarse sobre lo que se habla) porque a raíz de todo esto ayer hubo tweets que, sinceramente, daban para llorar sangre. Y es que la mayoría, además, no llegaban <em>del enemigo</em>, sino de compañeros de filas. Pero de compañeros de filas muy curiosos, de esos que quizá no sean necesarios en ningún partido político: los que<strong> son capaces de negar un hecho objetivo y empírico  mientras se envuelven en la palabra <em>socialista</em>.</strong> Para muestra, varios botones:</p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>Señora Trujillo, ya sé que hace mucho que no la llaman de medios de la caverna. ¿No cobra suficiente como profesora? ¿Quiere SOBREsueldos?</p>
<p>&mdash; Jose (@jrgallegog) <a href="https://twitter.com/jrgallegog/status/300407676368723970">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>No la oigo decir nada sobre la constitucionalidad del urdangariiiiiiiiiiiiiin</p>
<p>&mdash; Sandra Pérez García (@sandradespacho) <a href="https://twitter.com/sandradespacho/status/300395559058034688">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>Asi q el derecho a la vivienda es un derecho constitucional y no fundamental? Y por eso a la p calle las familias honradas y trabajadoras</p>
<p>&mdash; Sandra Pérez García (@sandradespacho) <a href="https://twitter.com/sandradespacho/status/300394953505386496">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>@<a href="https://twitter.com/matrujil">matrujil</a> Y usted se define como socialista? Pues haga examen de conciencia y vea qué es socialismo. Lo que usted dice, no lo es.</p>
<p>&mdash; Daniel Rico Morant (@DaniRicoMorant) <a href="https://twitter.com/DaniRicoMorant/status/300399461048397826">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>Tu no solo no eres socialista @<a href="https://twitter.com/matrujil">matrujil</a> eres tan <a href="https://twitter.com/search/%23criminal">#criminal</a> como el banquero que desahucia</p>
<p>&mdash; Kolontai(@kolontai1959) <a href="https://twitter.com/kolontai1959/status/300398621172576258">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>@<a href="https://twitter.com/matrujil">matrujil</a> No me acabo de creer lo que mis ojos han podido leer. Usted, como socialista, en mi ser y en mi mente ha caído en descrédito.</p>
<p>&mdash; Daniel Rico Morant (@DaniRicoMorant) <a href="https://twitter.com/DaniRicoMorant/status/300397548672274433">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>@<a href="https://twitter.com/matrujil">matrujil</a> la superioridad moral de &#8220;para los que no lo entendéis&#8221; no es digno de alguien q se puede deducir, x su trayectoria, es socialista</p>
<p>&mdash; Manu B Terrada (@mbterrada) <a href="https://twitter.com/mbterrada/status/300398947787210752">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Bien, parece que con proclamarte <em>socialista</em> ya no tienes que atenerte a la realidad. Y si te atreves a resaltar algo que es como es, guste o no, entonces eres un mal socialista o, aún peor, no eres socialista para nada. Y yo me pregunto, <strong>¿qué sentido tiene negar una realidad que no gusta en lugar de enfrentarse a ella y cambiarla?</strong> ¿Se necesita gente en política que niegue cosas tan obvias, descalificando a aquella persona que tiene muchos más conocimientos en el tema que ellos?</p>
<p>Por cierto: me he guardado para el final los dos mejores tuits de la jornada, lo que podríamos denominar el <em>zas inmisericorde de la exministra</em>:</p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>.@<a href="https://twitter.com/matrujil">matrujil</a> Como joven socialista siento vergüenza de gente como tu.</p>
<p>&mdash; Mario (@PiedrafitaMario) <a href="https://twitter.com/PiedrafitaMario/status/300395487406723072">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<blockquote class="twitter-tweet" width="550" lang="es"><p>@<a href="https://twitter.com/piedrafitamario">piedrafitamario</a> nos pasa lo mismo</p>
<p>&mdash; MaríaAntoniaTrujillo (@matrujil) <a href="https://twitter.com/matrujil/status/300396656120180736">10 de febrero de 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Brutal.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2013/politica/es-la-vivienda-un-derecho-fundamental-en-espana/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>La contabilidad de Bárcenas y ¡Basta Ya!</title>
		<link>http://www.naroh.es/blog/2013/politica/los-sobres-de-barcenas-y-basta-ya/</link>
		<comments>http://www.naroh.es/blog/2013/politica/los-sobres-de-barcenas-y-basta-ya/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 15:32:36 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[España]]></category>
		<category><![CDATA[Política]]></category>
		<category><![CDATA[UPyD]]></category>
		<category><![CDATA[Bárcenas]]></category>
		<category><![CDATA[Basta Ya]]></category>
		<category><![CDATA[PP]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2608</guid>
		<description><![CDATA[Hoy El País publica una información bastante peliaguda: una supuesta contabilidad B llevada a cabo por Bárcenas durante los años de gestor y tesorero del Partido Popular. Esos papeles, negados por prácticamente todos los protagonistas, registran salidas y entradas de &#8230; <a href="http://www.naroh.es/blog/2013/politica/los-sobres-de-barcenas-y-basta-ya/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.naroh.es/blog/2013/politica/los-sobres-de-barcenas-y-basta-ya/attachment/barcenasapuntescuenta/" rel="attachment wp-att-2613"><img class="noborder aligncenter size-full wp-image-2613" alt="barcenasapuntescuenta" src="http://www.naroh.es/blog/wp-content/uploads/2013/01/barcenasapuntescuenta.png" width="992" height="204" /></a></p>
<p>Hoy El País <a href="http://politica.elpais.com/politica/2013/01/30/actualidad/1359583204_085918.html">publica una información</a> bastante peliaguda: una <strong>supuesta contabilidad B llevada a cabo por Bárcenas durante los años de gestor y tesorero del Partido Popular.</strong> Esos papeles, negados por prácticamente todos los protagonistas, <strong>registran salidas y entradas de dinero</strong> a una supuesta <i>cuenta B</i> del Partido Popular de la cual se nutrían esos sobresueldos que presuntamente la cúpula del PP se embolsaba de forma periódica.</p>
<p><strong>Entre todos esos registros hay, por ejemplo, <a href="http://politica.elpais.com/politica/2013/01/31/actualidad/1359634766_210374.html">uno que ha admitido Pío García-Escudero</a></strong>: un préstamo que habría pedido y devuelto al PP tras un atentado que destrozó su vivienda en Madrid y que al parecer se habría pagado con ese dinero B, cosa de lo que Escudero podría no estar al corriente.</p>
<p><strong>Otra entrada en los papeles se dedica a la extinta <a href="http://es.wikipedia.org/wiki/%C2%A1Basta_Ya!">plataforma antiterrorista ¡Basta Ya!</a></strong>, con el apoyo de organizaciones como el Foro de Ermua o la Asociación Víctimas del Terrorismo. <strong>En dichos papeles se consigna una salida de 3.005€ a esta plataforma</strong>, salida <a href="http://ecodiario.eleconomista.es/politica/noticias/4568374/01/13/Gorriaran-admite-que-Basta-Ya-podria-haber-recibido-donaciones-de-Barcenas-y-del-PP-como-la-publicada.html">que podría haber sido posible como donación</a> de acuerdo de uno de los portavoces de la Plataforma y actual diputado de UPyD el Congreso, Carlos Martínez Gorriarán. Al fin y al cabo no parece sonar tan raro que un partido político tan azotado por ETA como era el PP donase dinero a una organización cívica que precisamente tenía como objetivo oponerse de forma enérgica al terrorismo y el apoyo a las víctimas del mismo.</p>
<p><strong>La plataforma mantenía por aquella época una cuenta corriente abierta donde recibía miles de donaciones para el mantenimiento de su actividad</strong>, donaciones que en aquella época bien podrían producirse con identidades distintas a la real debido a la amenaza terrorista: no en vano todos los que formaron esa plataforma pasaron automáticamente a estar amenazados de muerte, lo que no parece raro que se extendiese a aquellos que la financiasen.</p>
<p>¿Se recibieron 3.005€ de dinero negro? Puede ser así. ¿Cómo se recibieron? <strong>Mediante, al parecer, un ingreso en cuenta, bien a nombre de Bárcenas, del PP o bajo otra identidad.</strong></p>
<p><strong>¿Es responsable ¡Basta Ya! de ese dinero negro? Pues tanto como lo podría ser el camarero que sirve un café a un cliente que le paga con dinero negro sin que éste lo sepa. Es decir: no.</strong> Yo puedo donar, por ejemplo, 1.000€ de dinero negro a la Asociación Española contra el Cáncer sin que ellos tengan posibilidad de saber el origen de ese dinero, si es negro o no. La responsabilidad de la organización a la hora de recibir esas donaciones es declararlo a Hacienda si supera una cierta cantidad (que estaba regulada en una ley derogada a finales de 2002). Para hacernos una idea, 3.005,06€ eran 500.000 pesetas de las de antes, por lo que la donación queda 6 céntimos por debajo de una cantidad que, por lo redonda, bien podría ser el límite marcado por la ley en aquella fecha para no se tuviera que dar parte a Hacienda de esa donación.</p>
<p>Hoy tenemos a un montón de gente gritando que UPyD es corrupto por 3.005€ de los que no había forma de conocer su procedencia (porque cuando vas dejando dinero negro por ahí no es una cosa que vayas gritando, y si así fuera este escándalo del PP no habría tardado casi 20 años en saltar) donados en 2002 (5 años antes de la fundación del partido) por una plataforma que recibía miles de donaciones cada año y que luego decidió fundarlo junto con muchos otros particulares y grupos de personas. No me extraña: <strong>al fin y al cabo la gente que grita esa tontería juega su papel en un escenario en el que a río revuelto, ganancia de pescadores.</strong></p>
<p>Pero no, lo siento. No cuela.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2013/politica/los-sobres-de-barcenas-y-basta-ya/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Cómo saltarse el instalador de publicidad de epubgratis.me</title>
		<link>http://www.naroh.es/blog/2013/internet/como-saltarse-el-instalador-de-publicidad-de-epubgratis-me/</link>
		<comments>http://www.naroh.es/blog/2013/internet/como-saltarse-el-instalador-de-publicidad-de-epubgratis-me/#comments</comments>
		<pubDate>Mon, 21 Jan 2013 16:48:03 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[epubgratis]]></category>
		<category><![CDATA[instalador]]></category>
		<category><![CDATA[magnet link]]></category>
		<category><![CDATA[publicidad]]></category>
		<category><![CDATA[quitar]]></category>
		<category><![CDATA[saltarse]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2588</guid>
		<description><![CDATA[La web epubgratis.me bastante famosa entre todos aquellos que poseen un lector de e-books y no están dispuestos a pagar lo mismo por un libro en formato digital que por uno en formato físico. El caso es que desde hace &#8230; <a href="http://www.naroh.es/blog/2013/internet/como-saltarse-el-instalador-de-publicidad-de-epubgratis-me/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.naroh.es/blog/2013/internet/como-saltarse-el-instalador-de-publicidad-de-epubgratis-me/attachment/169048285433c3bc36b475d67888bd1310a1880a/" rel="attachment wp-att-2589"><img class="noborder aligncenter size-full wp-image-2589" alt="169048285433c3bc36b475d67888bd1310a1880a" src="http://www.naroh.es/blog/wp-content/uploads/2013/01/169048285433c3bc36b475d67888bd1310a1880a.png" width="508" height="397" /></a></p>
<p>La web epubgratis.me bastante famosa entre todos aquellos que poseen un lector de e-books y no están dispuestos a pagar lo mismo por un libro en formato digital que por uno en formato físico. El caso es que<strong> desde hace un tiempo para descargar un libro es necesario bajarse un instalador ejecutable</strong> que, además de contener el <a href="http://www.genbeta.com/a-fondo/las-claves-para-entender-los-enlaces-magnet-el-futuro-del-intercambio-de-archivos">enlace magnet</a> para descargar el libro por torrent también<strong> contiene la instalación de publicidad.</strong> Si bien la instalación de publicidad se puede rechazar <strong>es un proceso bastante pesado</strong>, sobre todo si se descargan varios libros a la vez, y además en algún momento puedes olvidarte de desmarcar las casillas y encontrarte con el ordenador lleno de barras de publicidad y buscadores extraños.</p>
<p>Sin embargo, la solución a esto es muy sencilla: dado que el instalador .exe que debe bajarse sólo puede ejecutarse en ordenadores que corran Windows<strong> la web comprueba qué sistema operativo está usando el usuario.</strong> Esto se hace mediante el <em><a href="http://es.wikipedia.org/wiki/Agente_de_usuario">user-agent</a>, </em>que, para explicarlo de forma sencilla, es un compendio de información que el navegador envía al servidor identificando qué navegador es, su versión, el sistema operativo sobre el que corre&#8230; De esta manera, <strong>si el visitante está bajo un entorno Windows la web le ofrece la descarga del instalador de publicidad, pero si está usando Linux u OSX el sistema le ofrece el enlace magnet directamente</strong>, con lo que con sólo hacer clic en el botón de descarga el libro se añade a nuestro cliente de torrents.</p>
<p><a href="http://www.naroh.es/blog/2013/internet/como-saltarse-el-instalador-de-publicidad-de-epubgratis-me/attachment/captura-de-pantalla-2013-01-21-a-las-17-28-29/" rel="attachment wp-att-2591"><img class="noborder aligncenter size-full wp-image-2591" alt="Captura de pantalla 2013-01-21 a la(s) 17.28.29" src="http://www.naroh.es/blog/wp-content/uploads/2013/01/Captura-de-pantalla-2013-01-21-a-las-17.28.29.png" width="610" height="204" /></a>¿Cómo conseguir engañar al sistema de epubgratis para que pienses que en vez de en Windows estás en Linux o en Mac? Muy sencillo: <strong>cambiando el <em>user-agent</em>.</strong> Para ello hay multitud de opciones, sobre todo si tu navegador es Chrome o Firefox. Mi método es para aquellos que usen Chrome, pero si utilizas otro navegador con un par de búsquedas en Google deberías tener resuelto el problema (Por ejemplo, para Firefox está disponible <a href="https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/">una extensión muy parecida</a>).</p>
<p>Lo primero que tienes que hacer es <strong>descargarte la extensión <em><a href="https://chrome.google.com/webstore/detail/user-agent-switcher-for-c/djflhoibgkdhkhhcedjiklpkjnoahfmg">User-Agent Switcher for Chrome</a>. </em></strong>En cuanto la añadamos tendrás un nuevo botón en el área de extensiones, el cual al ser pulsado nos dará varias opciones de navegadores. Una vez pulsado haz clic en <em>Settings</em> para acceder a la página de configuración de la extensión.</p>
<p><a href="http://www.naroh.es/blog/2013/internet/como-saltarse-el-instalador-de-publicidad-de-epubgratis-me/attachment/captura-de-pantalla-2013-01-21-a-las-17-36-40/" rel="attachment wp-att-2594"><img class="noborder aligncenter size-full wp-image-2594" alt="Captura de pantalla 2013-01-21 a la(s) 17.36.40" src="http://www.naroh.es/blog/wp-content/uploads/2013/01/Captura-de-pantalla-2013-01-21-a-las-17.36.40.png" width="1135" height="552" /></a><strong>Vamos a añadir la posibilidad de identificarnos como Chrome bajo Mac OSX.</strong> Para ello, en la fila de casillas disponible para escritura, escribiremos <em>Chrome OSX</em> bajo el título <em>New User-agent name.</em> La casilla <em>New User-Agent String</em> deberá tener el siguiente contenido:</p><pre class="crayon-plain-tag">&lt;strong&gt;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17&lt;/strong&gt;</pre><p>En la casilla <em>Group</em> escribe <em>Chrome </em>y en el desplegable <em>Append?</em> asegúrate de que está seleccionada la opción <em>Replace</em>. En <em>Indication Flag</em> puedes escribir algo como <em>OSX. </em>Pulsa el botón <em>Add</em> para añadir el <em>user-agent</em> a la extensión.</p>
<p>A continuación, a la izquierda, selecciona la pestaña <em>Permanent Spoof list.</em> En la casilla <em>Domain</em> escribe <em>epubgratis.me</em> y en el desplegable <em>User-Agent String </em>selecciona el <em>user-agent</em> que acabas de añadir. Haz clic en <em>Add</em> para que <strong>a partir de entonces cada vez que entres en epubgratis.me el navegador se identifique como Chrome bajo OSX.</strong><span style="text-decoration: underline;"><br />
</span></p>
<p><a href="http://www.naroh.es/blog/2013/internet/como-saltarse-el-instalador-de-publicidad-de-epubgratis-me/attachment/captura-de-pantalla-2013-01-21-a-las-17-45-38/" rel="attachment wp-att-2597"><img class="noborder alignleft size-full wp-image-2597" alt="Captura de pantalla 2013-01-21 a la(s) 17.45.38" src="http://www.naroh.es/blog/wp-content/uploads/2013/01/Captura-de-pantalla-2013-01-21-a-las-17.45.38.png" width="39" height="33" /></a>Ahora, entra en la web. <strong>Verás que el icono de la extensión contiene la abreviatura que colocaste al añadir el <em>user-agent</em></strong>, <em>OSX</em> en el caso de que hayas seguido estas instrucciones al pie de la letra. Sin embargo en el resto de webs el icono no mantendrá esa abreviatura sobre fondo rojo: eso quiere decir que el navegador está identificándose con su <em>user-agent</em> real.</p>
<p>Prueba a descargarte un libro mediante el botón <em>Descargar Magnet Link</em>.<strong> Ahora tendrás acceso al enlace de descarga de forma directa</strong>, sin tener tediosos instaladores de publicidad por medio.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2013/internet/como-saltarse-el-instalador-de-publicidad-de-epubgratis-me/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>La profesión peor considerada de España</title>
		<link>http://www.naroh.es/blog/2013/informatica/la-profesion-peor-considerada-de-espana/</link>
		<comments>http://www.naroh.es/blog/2013/informatica/la-profesion-peor-considerada-de-espana/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 19:57:27 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[Informática]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2576</guid>
		<description><![CDATA[Según todos los barómetros de opinión la ocupación peor considera por los españoles es la política. Esta es la opción que elige una gran parte de los que responden a las encuestas del CIS, o lo que podemos escuchar en &#8230; <a href="http://www.naroh.es/blog/2013/informatica/la-profesion-peor-considerada-de-espana/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.naroh.es/blog/2013/informatica/la-profesion-peor-considerada-de-espana/attachment/computer_cartoon/" rel="attachment wp-att-2581"><img class="noborder size-full wp-image-2581 aligncenter" alt="computer_cartoon" src="http://www.naroh.es/blog/wp-content/uploads/2013/01/computer_cartoon.jpg" width="441" height="479" /></a></p>
<p>Según todos los barómetros de opinión la ocupación peor considera por los españoles es la política. Esta es la opción que elige una gran parte de los que responden a las encuestas del CIS, o lo que podemos escuchar en las numerosas protestas que saturan nuestras calles estos días. Pero hay otra profesión, otra ocupación que está aún peor valorada, una valoración que se encuentra en el subconsciente de las personas y que, a pesar de no ser objeto de todos los odios, sí es el objetivo de muchas personas que quieren eliminarla de la faz de la tierra: la informática.</p>
<p>Los informáticos somos esos seres huraños que se pasan el día delante del ordenador y cobran por ello. Hey, no importa lo que hagamos: a pesar de que nosotros nos dediquemos a picar código en lugar de ver vídeos de gatitos como seguramente otros <strong>eso de cobrar por estar delante de una cosa tan divertida como un ordenador no es para nada aceptable. </strong><em><br />
</em></p>
<p>Por eso, cuando saltan las noticias como el <a href="http://www.abc.es/20121112/espana/abci-senado-nueva-201211121026.html">coste de la web del Senado</a> o <a href="http://politica.elpais.com/politica/2013/01/17/actualidad/1358435806_006001.html">la web de Turismo de Extremadura</a> los opinólogos salen de sus cuevas y se dedican a hablar del tema aunque no tengan ni idea. Y encima, si les das carnaza como<a href="http://tecnologia.elpais.com/tecnologia/2012/11/28/actualidad/1354095742_842570.html"> clonar una web aderezada con la ignorancia de los periodistas</a> de los medios generalistas te salen <strong>idioteces como que una web puede ser realizada a &#8220;coste cero&#8221;. </strong></p>
<p><strong>Y no, amigos, una web no puede ser realizada a coste cero. Nunca.</strong> Lo primero de todo, porque los informáticos somos gente decente, de verdad, que se merece un sueldo por trabajar: ni más ni menos que el resto de españoles. Así que ese coste cero lo elevamos como mínimo a la suma de los salarios de todos los trabajadores. Y una web, aunque parezca que sale de la nada (y aún más si es tan compleja como la del Senado)<strong> requiere mucho tiempo de estudios, organización de la estructura, prototipado</strong>&#8230; Vamos, que montar una web lleva mucho trabajo sea <em>open source</em> o no, y ese trabajo conlleva soltar dinero. Y eso es sólo la fase inicial, porque a todo ese coste, que es alto, <strong>hay que sumarle el alojamiento de la web</strong> (porque una web no se aloja en el aire, necesita unos servidores, un datacenter bueno y potente si la web es de gran tráfico, con motores de búsqueda y servicio de vídeos),<strong> el mantenimiento del contenido</strong>&#8230; Y eso obviando muchos pasos. Pero claro, queda muy florido decir que una web se ha podido clonar a coste cero, aunque sea mentira. Pues vale, hombre, pero es que clonar una web es como reescribir una novela ya escrita. Absolutamente todos los pasos se reducen a uno: copiar lo que ya está hecho. Pues vaya.</p>
<p>Pero hete aquí que los comentaristas de El País nos dan todas las soluciones:</p>
<p><a href="http://www.naroh.es/blog/2013/informatica/la-profesion-peor-considerada-de-espana/attachment/elpaiscarrera/" rel="attachment wp-att-2580"><img class="noborder aligncenter size-full wp-image-2580" alt="elpaiscarrera" src="http://www.naroh.es/blog/wp-content/uploads/2013/01/elpaiscarrera.png" width="540" height="250" /></a>¡Claro que sí! ¿Cómo no lo habíamos pensado?<strong> Lo mejor es sustituir todos los desarrollos hechos por ingenieros profesionales por proyectos de fin de carrera.</strong> Porque los informáticos con carrera no valen de nada y la experiencia es accesoria: cualquiera puede abarcar un proyecto de cualquier magnitud. Y como tiene que ser a coste cero, los materiales (contenido, herramientas, alojamiento) que corran de parte del estudiante.</p>
<p>Pero es más, yo ahondaría en esa idea:<strong> sustituir a las enfermeras y médicos de hospitales por estudiantes de enfermería y medicina que trabajen tres meses atendiendo a enfermos en los hospitales como proyecto de final de carrera.</strong> Y como tiene que ser a coste cero, que además los materiales salgan de su bolsillo. Y también podemos sustituir a los profesores de igual manera que a los médicos. ¡Qué ahorro para el sector público! Y para las familias también si decretamos la sustitución de profesiones liberales por estudiantes con proyectos de final de carrera. Arquitectos, por ejemplo.</p>
<p><strong>Y así estaremos en el maravilloso país del coste cero</strong>, donde nadie tendrá trabajo. Porque si seguimos por esta senda nadie es imprescindible. Tampoco los informáticos.</p>
<p>PS1. De verdad, <strong>si no tienes ni idea sobre el sector, no hables. </strong>Yo no me voy a meter con el precio de las piezas de coches que vienen de Alemania, tú no te metas con el precio de las webs si no tienes ni idea de sus características ni conoces el campo.</p>
<p>PS2. Ni defiendo los costes de las webs citadas ni los dejo de defender. No conozco a fondo el proyecto de ambas para poder realizar una valoración. Pero <strong>una web ambiciosa puede costar ese dinero, sí. </strong>Lo que no quiere decir que quizá en España se lleve más dinero los jefes de la empresa por amiguismo que el informático que de verdad se lo merece.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2013/informatica/la-profesion-peor-considerada-de-espana/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Goodbye, Instagram</title>
		<link>http://www.naroh.es/blog/2012/internet/goodbye-instagram/</link>
		<comments>http://www.naroh.es/blog/2012/internet/goodbye-instagram/#comments</comments>
		<pubDate>Tue, 18 Dec 2012 13:37:40 +0000</pubDate>
		<dc:creator>Naroh</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Redes Sociales]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Instagram]]></category>

		<guid isPermaLink="false">http://www.naroh.es/blog/?p=2560</guid>
		<description><![CDATA[Some or all of the Service may be supported by advertising revenue. To help us deliver interesting paid or sponsored content or promotions, you agree that a business or other entity may pay us to display your username, likeness, photos &#8230; <a href="http://www.naroh.es/blog/2012/internet/goodbye-instagram/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.naroh.es/blog/2012/internet/goodbye-instagram/attachment/facebook-buys-instagram-1-billion-usd-mobile-social/" rel="attachment wp-att-2565"><img class="aligncenter noborder size-full wp-image-2565" alt="facebook-buys-instagram-1-billion-usd-mobile-social" src="http://www.naroh.es/blog/wp-content/uploads/2012/12/facebook-buys-instagram-1-billion-usd-mobile-social.jpeg" width="500" height="333" /></a></p>
<blockquote><p>Some or all of the Service may be supported by advertising revenue. To help us deliver interesting paid or sponsored content or promotions, <strong>you agree that a business or other entity may pay us to display your username, likeness, photos (along with any associated metadata), and/or actions you take, in connection with paid or sponsored content or promotions, without any compensation to you.</strong> If you are under the age of eighteen (18), or under any other applicable age of majority, you represent that at least one of your parents or legal guardians has also agreed to this provision (and the use of your name, likeness, username, and/or photos (along with any associated metadata) on your behalf.</p></blockquote>
<p>Es un extracto de los <a href="http://instagram.com/about/legal/terms/updated/">nuevos términos de uso de Instagram</a>, que entran en vigor del 16 de enero de 2013. En ellos <strong>se da derecho a Instagram (y por extensión a su dueño, Facebook) a vender tus fotografías a quien quieran sin, obviamente, pagarte un duro.</strong></p>
<p><em>&#8220;¿Y quién va a querer comprar mis fotografías?&#8221; </em>Se preguntarán algunos. Parece improbable que una empresa pueda interesarse por las fotos de un usuario en concreto, ¿verdad? Pero si pensamos en que <strong>quizás un hotel o un parque de atracciones quiera utilizar en su publicidad las fotografías hechas en él</strong> (y lo tiene fácil, porque la mayoría de la gente geolocaliza las fotos) no se ve todo de una manera tan abstracta. Y <strong>las posibilidades reales de ver nuestras fotos, o incluso nuestra cara, en un anuncio publicitario sin que nosotros hayamos visto un duro por él aumentan.</strong></p>
<p>Sé que en una red social gratuita <strong>los usuarios son en realidad el producto</strong>, la vía con la cual la compañía consigue dinero agitándolos delante de los anunciantes para que contraten campañas publicitarias. De hecho esa es otra vía de monetización que contemplan los nuevos términos de Instagram. Pero que se lucren de esa manera por el contenido generado&#8230; Bueno, es ir un paso allá. Y no voy a tragar con ello.</p>
<p>Así que, si tampoco aceptas que Facebook pueda venderte<strong> lo mejor será que borres tu cuenta antes del 16 de enero</strong>, porque una vez superada esa fecha no habrá vuelta atrás: tendrá <strong>derecho perpetuo para vender tus imágenes.</strong> Y quizás te interese también echar un ojo a <strong><a href="http://instaport.me">Instaport</a></strong>, para<strong> descargar todas tus imágenes en un</strong> .zip y no perder nada.</p>
<p>Instaport está, por cierto, con problemas por un exceso de tráfico. Parece que no estoy solo.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.naroh.es/blog/2012/internet/goodbye-instagram/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
