<?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>Dejandomarcas</title>
	<atom:link href="http://blog.dejandomarcas.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dejandomarcas.com</link>
	<description>Cuando creo que lo sé todo, me doy cuenta de que no sé nada</description>
	<lastBuildDate>Tue, 16 Aug 2011 14:00:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Controlar meta tags dependiendo del idioma</title>
		<link>http://blog.dejandomarcas.com/programacion/cakephp-controlar-metatags-dependiendo-del-idioma/</link>
		<comments>http://blog.dejandomarcas.com/programacion/cakephp-controlar-metatags-dependiendo-del-idioma/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 13:28:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[metatags]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.dejandomarcas.com/?p=378</guid>
		<description><![CDATA[Ya de vuelta de las vacaciones me voy a animar a explicar cómo he implementado los meta tags de Dejandomarcas.com Hay que tener en cuenta el idioma seleccionado por el cliente mientras navega por la web, por tanto, he creado un par de funciones en el archivo app_controller.php para controlar este hecho: &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 0px 10px;" src="http://www.ecos-online.de/files/ecos/imagecache/content200px/leadimages/shakespeare.jpeg" alt="Shakespeare controla el Inglés en Dejandomarcas.com" width="200" height="237" />Ya de vuelta de las vacaciones me voy a animar a explicar cómo he implementado los <strong>meta tags</strong> de <a title="Dejandomarcas.com" href="http://www.dejandomarcas.com" target="_blank">Dejandomarcas.com</a></p>
<p>Hay que tener en cuenta el idioma seleccionado por el cliente mientras navega por la web, por tanto, he creado un par de funciones en el archivo <em>app_controller.php</em> para controlar este hecho:</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Archivo app/app_controller.php</p>
<pre class="brush: php; ">

&lt;?php

    // Metodo publico para cambiar el lenguaje de la aplicacion
    public function switchLanguage() {

    	// Compruebo si la variable de sesion de lenguaje esta definida
    	if (isset($this-&gt;params[&#039;named&#039;][&#039;lang&#039;])) {

    		// Guardo la variable
    		$this-&gt;Session-&gt;write(&#039;lang&#039;, $this-&gt;params[&#039;named&#039;][&#039;lang&#039;]);

    	} elseif ($this-&gt;Session-&gt;check(&#039;lang&#039;)) {

    		// Default en castellano
    		$this-&gt;Session-&gt;write(&#039;lang&#039;, $this-&gt;Session-&gt;read(&#039;lang&#039;));

    	} else {

     		// Default en castellano
    		$this-&gt;Session-&gt;write(&#039;lang&#039;, &#039;spa&#039;);   	

    	}

    	// Switch de idiomas
    	if ($this-&gt;Session-&gt;read(&#039;lang&#039;) == &#039;eng&#039;) {

    		// Ingles
    		Configure::write(&#039;Config.language&#039;, &#039;eng&#039;);

    	} else {

    		// Castellano
    		Configure::write(&#039;Config.language&#039;, &#039;spa&#039;);
    	}
    }

    // Metodo publico para obtener los metatags de una seccion activa
    public function getMetas() {

    	// Compruebo el language de la sesion
    	switch ($this-&gt;Session-&gt;read(&#039;lang&#039;)) {

    		// Traduccion al castellano
    		case &quot;spa&quot;:

    			// Compruebo por donde estoy navegando
				switch ($this-&gt;params[&#039;controller&#039;]) {
					case &quot;home&quot;:
						$title = __(&#039;Portfolio web&#039;, true);
						$description = __(&#039;Ultimos trabajos añadidos al portfolio web de Javier Garcia&#039;, true);
						$keywords = __(&#039;diseño grafico, desarrollo web, web, php, cakephp, portfolio, desarrollo web sevilla, programacion web sevilla&#039;, true);
						break;
					case &quot;pages&quot;:
						$title = __(&#039;Programador php, Desarrollador web, Diseñador en Sevilla&#039;, true);
						$description = __(&#039;PHP, CakePHP, Drupal, OOP, XML, HTML, CSS, Javascript, JQuery, Ajax, MySQL, Oracle, Photoshop, Flash&#039;, true);
						$keywords = __(&#039;diseño grafico, desarrollo web, web, php, cakephp, portfolio, desarrollo web sevilla, programacion web sevilla&#039;, true);
						break;
					case &quot;contact&quot;:
						$title = __(&#039;Formulario de contacto&#039;, true);
						$description = __(&#039;Contacta conmigo rellenando el siguiente formulario&#039;, true);
						$keywords = __(&#039;diseño grafico, desarrollo web, web, php, cakephp, portfolio, desarrollo web sevilla, programacion web sevilla&#039;, true);
						break;
				}
				break;

			// Traduccion al ingles
			case &quot;eng&quot;:

				// Compruebo por donde estoy navegando
				switch ($this-&gt;params[&#039;controller&#039;]) {
					case &quot;home&quot;:
						$title = __(&#039;Portfolio web&#039;, true);
						$description = __(&#039;Latest works added to my portfolio&#039;, true);
						$keywords = __(&#039;diseño grafico, desarrollo web, web, php, cakephp, portfolio, desarrollo web sevilla, programacion web sevilla&#039;, true);
						break;
					case &quot;pages&quot;:
						$title = __(&#039;Web programmer, web developer in Seville&#039;, true);
						$description = __(&#039;PHP, CakePHP, Drupal, OOP, XML, HTML, CSS, Javascript, JQuery, Ajax, MySQL, Oracle, Photoshop, Flash&#039;, true);
						$keywords = __(&#039;diseño grafico, desarrollo web, web, php, cakephp, portfolio, desarrollo web sevilla, programacion web sevilla&#039;, true);
						break;
					case &quot;contact&quot;:
						$title = __(&#039;Contact me&#039;, true);
						$description = __(&#039;Contact me filling the following form&#039;, true);
						$keywords = __(&#039;diseño grafico, desarrollo web, web, php, cakephp, portfolio, desarrollo web sevilla, programacion web sevilla&#039;, true);
						break;
				}
				break;

			// Salida por defecto
			default:

				// Compruebo por donde estoy navegando
				switch ($this-&gt;params[&#039;controller&#039;]) {
					case &quot;home&quot;:
						$title = __(&#039;Portfolio web&#039;, true);
						$description = __(&#039;Ultimos trabajos añadidos al portfolio web de Javier Garcia&#039;, true);
						$keywords = __(&#039;diseño grafico, desarrollo web, web, php, cakephp, portfolio, desarrollo web sevilla, programacion web sevilla&#039;, true);
						break;
					case &quot;pages&quot;:
						$title = __(&#039;Programador php, Desarrollador web, Diseñador en Sevilla&#039;, true);
						$description = __(&#039;PHP, CakePHP, Drupal, OOP, XML, HTML, CSS, Javascript, JQuery, Ajax, MySQL, Oracle, Photoshop, Flash&#039;, true);
						$keywords = __(&#039;diseño grafico, desarrollo web, web, php, cakephp, portfolio, desarrollo web sevilla, programacion web sevilla&#039;, true);
						break;
					case &quot;contact&quot;:
						$title = __(&#039;Formulario de contacto&#039;, true);
						$description = __(&#039;Contacta conmigo rellenando el siguiente formulario&#039;, true);
						$keywords = __(&#039;diseño grafico, desarrollo web, web, php, cakephp, portfolio, desarrollo web sevilla, programacion web sevilla&#039;, true);
						break;
				}
				break;
		}

		// Seteo las variables para la vista
		$this-&gt;set(&#039;title&#039;, $title);
		$this-&gt;set(&#039;description&#039;, $description);
		$this-&gt;set(&#039;keywords&#039;, $keywords);
    }

?&gt;
</pre>
<p>¿Cómo funciona todo esto?</p>
<p>Si os habéis fijado, el switch de idiomas lo hago mediante un par de citas literarias (me pareció una idea curiosa de hacerlo en lugar de poner las típicas banderas). Al hacer click sobre la frase <em>What&#8217;s done is done&#8217; &#8211; W. Shakespeare</em> llamo a la función <em>switchLanguage()</em>, la cual me evalúa qué idioma está definido en la sesión y lo cambia en consecuencia. En este momento, llamo también a <em>getMetas()</em>, que me cambiará los meta tags en consonancia con el idioma seleccionado.</p>
<p>Para cargar los valores por defecto tan solo deberemos incluir las dos funciones dentro de la sentencia <em>beforeFilter()</em>.</p>
<p>Espero que os ayude en vuestros pinitos con <strong>CakePHP</strong> y que os sea de utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/programacion/cakephp-controlar-metatags-dependiendo-del-idioma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vacaciones</title>
		<link>http://blog.dejandomarcas.com/general/nuevo-blog-dejandomarcas/</link>
		<comments>http://blog.dejandomarcas.com/general/nuevo-blog-dejandomarcas/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 11:18:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[vacaciones]]></category>

		<guid isPermaLink="false">http://blog.dejandomarcas.com/?p=374</guid>
		<description><![CDATA[Bueno, ya he terminado de migrar todos mis proyectos al nuevo servidor que he contratado con Webfaction. Tras retocar un poco el diseño del blog migrado a mi nuevo server, he decidido dejarlo así de momento, ya que se ve bastante claro y limpio. Durante las dos próximas semanas voy a estar de vacaciones, así [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, ya he terminado de migrar todos mis proyectos al nuevo servidor que he contratado con <a href="http://www.webfaction.com/" title="Webfaction" target="_blank"><strong>Webfaction</strong></a>. Tras retocar un poco el diseño del blog migrado a mi nuevo server, he decidido dejarlo así de momento, ya que se ve bastante claro y limpio.</p>
<p>Durante las dos próximas semanas voy a estar de vacaciones, así que no creo que pueda postear mucho contenido. De todas formas estaré activo en <a href="http://twitter.com/Dejandomarcas" title="Twitter" target="_blank"><strong>twitter</strong></a> y <a href="http://www.facebook.com/dejandomarcas" title="Facebook" target="_blank"><strong>facebook</strong></a>, así que cualquier cosa que necesiteis ya sabeis dónde encontrarme.</p>
<p>Feliz verano!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/general/nuevo-blog-dejandomarcas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diseño y programación de un portfolio web con CakePHP</title>
		<link>http://blog.dejandomarcas.com/programacion/diseno-y-programacion-de-un-portfolio-web-con-cakephp/</link>
		<comments>http://blog.dejandomarcas.com/programacion/diseno-y-programacion-de-un-portfolio-web-con-cakephp/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 14:24:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://tomaru.wordpress.com/?p=339</guid>
		<description><![CDATA[Una de las secciones que más he cuidado de dejandomarcas.com v2.0 es el portfolio. Al programar con CakePHP he podido diseñar un controlador que me obtenga todos los datos de mis trabajos de forma clara y ordenada, dejando a la vista que se encargue de cómo quiero mostrarlo en pantalla. A continuación voy a explicar [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las secciones que más he cuidado de <a title="Dejandomarcas.com" href="http://www.dejandomarcas.com" target="_blank"><strong>dejandomarcas.com v2.0</strong></a> es el portfolio. Al programar con <strong>CakePHP</strong> he podido diseñar un controlador que me obtenga todos los datos de mis trabajos de forma clara y ordenada, dejando a la vista que se encargue de cómo quiero mostrarlo en pantalla.</p>
<p>A continuación voy a explicar cómo lo he hecho, tanto el código del controlador, como el diseño de la vista, para que si quereis montar una galería de imágenes o un portfolio personal, podais hacerlo de una forma sencilla, siempre utilizando CakePHP, así aprendemos un poquito de este maravilloso framework.</p>
<p><strong>Creo el modelo <em>app/models/portfolio.ph</em>p</strong></p>
<pre class="brush: php; ">

&lt;?php

// Este es el modelo que uso para trabajar con la bd
class Portfolio extends AppModel {

  // Nombre modelo
  public $name = &#039;Portfolio&#039;;

  // Nombre tabla BD
  public $useTable = &#039;portfolio&#039;;

  // Campo de ordenación por defecto
  public $order = &#039;Portfolio.id DESC&#039;;

  // Usado para la validacion de los datos de entrada dentro del panel de administracion
  public $validate = array(
    &#039;nombre&#039; =&gt; array(&#039;required&#039; =&gt; array(&#039;rule&#039; =&gt; &#039;notEmpty&#039;, &#039;message&#039; =&gt; &#039;name can not be empty&#039;)),
    &#039;descripcion&#039; =&gt; array(&#039;required&#039; =&gt; array(&#039;rule&#039; =&gt; &#039;notEmpty&#039;, &#039;message&#039; =&gt; &#039;description can not be empty&#039;))
  );
}

?&gt;
</pre>
<p><strong>Creo el controlador <em>app/controllers/home_controller.php</em></strong></p>
<pre class="brush: php; ">

&lt;?php

class HomeController extends AppController {

// Nombre controlador
public $name = &#039;Home&#039;;

// Modelos empleados
public $uses = array(&#039;Portfolio&#039;);

// Disposición de diseño por defecto
public $layout = &#039;main&#039;;

// Componentes utilizados
public $components = array(&#039;String&#039;);

// Helpers utilizados
public $helpers = array(&#039;String&#039;);

/* METODOS PUBLICOS */

// Indice de trabajos
public function index() {

  // Busco todos los registros
  $registers = $this-&gt;Portfolio-&gt;find(&quot;all&quot;, array(&quot;conditions&quot; =&gt; array(&quot;Portfolio.ver&quot; =&gt; 1)));

  // Seteo el registro y los medios
  $this-&gt;set(&#039;registers&#039;, $registers);
}

// Metodo para lanzar una URL del portfolio sumando uno a las visitas que ya tenia
public function getURL($id) {

  // No renderizo la vista
  $this-&gt;autoRender = false;

  // Busco el registro correspondiente a la id recibida
  $register = $this-&gt;Portfolio-&gt;find(&quot;first&quot;, array(&quot;conditions&quot; =&gt; array(&quot;Portfolio.id&quot; =&gt; $id)));

  // Recupero la id
  $this-&gt;Portfolio-&gt;id = $id;

  // Sumo uno a las visitas
  $visitas = $register[&#039;Portfolio&#039;][&#039;visitas&#039;] + 1;

  // Guardo los datos
  if ($this-&gt;Portfolio-&gt;saveField(&#039;visitas&#039;, $visitas)) {

      // Lanzo la URL
      $this-&gt;redirect($register[&#039;Portfolio&#039;][&#039;enlace&#039;]);
    }
  }
}
?&gt;
</pre>
<p><strong>Y por último, la vista <em>app/views/themed/default/home/index.ctp</em></strong></p>
<pre class="brush: php; ">

&lt;div id=&quot;bread&quot;&gt;
  &lt;?php echo $html-&gt;image(&#039;main/blue-folder-open-document.png&#039;);?&gt;&lt;?php echo __(&#039;latest works&#039;);?&gt;
&lt;/div&gt;
&lt;?php
// Recorro los registros del controlador
foreach ($registers as $register) {
?&gt;
  &lt;div class=&quot;project&quot;&gt;
    &lt;div class=&quot;box&quot;&gt;
      &lt;a href=&quot;&lt;?php echo $html-&gt;url(array(&#039;controller&#039; =&gt; &#039;home&#039;, &#039;action&#039; =&gt; &#039;getURL&#039;, $register[&#039;Portfolio&#039;][&#039;id&#039;]));?&gt;&quot; target=&quot;_blank&quot;&gt;
        &lt;?php echo $html-&gt;image($register[&#039;Portfolio&#039;][&#039;imagen&#039;], array(&#039;alt&#039; =&gt; __($register[&#039;Portfolio&#039;][&#039;nombre&#039;], true));?&gt;
      &lt;/a&gt;
    &lt;/div&gt;
    &lt;h2&gt;&lt;?php echo $register[&#039;Portfolio&#039;][&#039;nombre&#039;];?&gt;&lt;/h2&gt;
    &lt;p&gt;» &lt;?php echo utf8_encode($register[&#039;Portfolio&#039;][&#039;descripcion&#039;]);?&gt;&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
}
?&gt;
</pre>
<p>Con estos tres archivos ya tengo declarado el modelo de datos que voy a utilizar junto con sus validaciones para el panel de administración, el controlador que me ayuda a declarar todos los métodos para gestionar los datos, y por último, la vista, que mostrará en pantalla los datos obtenidos.</p>
<p>El resultado es el que veis en <a title="Portfolio" href="http://www.dejandomarcas.com/index.php/home" target="_blank">http://www.dejandomarcas.com/index.php/home</a></p>
<p>¿Tenéis dudas?, pues animaros y comentar!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/programacion/diseno-y-programacion-de-un-portfolio-web-con-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprobar user-agent iphone o android con PHP</title>
		<link>http://blog.dejandomarcas.com/programacion/comprobar-user-agent-iphone-o-android-con-php/</link>
		<comments>http://blog.dejandomarcas.com/programacion/comprobar-user-agent-iphone-o-android-con-php/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 14:26:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[user-agent]]></category>

		<guid isPermaLink="false">http://tomaru.wordpress.com/?p=334</guid>
		<description><![CDATA[¿Cómo puedo comprobar si el cliente que visita mi web usa iPhone o Android? Mi solución personal en forma de función: &#38;lt;?php // Compruebo el user-agent mediante una expresion regular function iPhoneCheck() { if (preg_match(&#039;/iPhone/i&#039;, $_SERVER[&#039;HTTP_USER_AGENT&#039;]) &#124;&#124; preg_match(&#039;/Android/i&#039;, $_SERVER[&#039;HTTP_USER_AGENT&#039;])) return true; else return false; } // Forma de uso if (iPhoneCheck()) { // Resto de [...]]]></description>
			<content:encoded><![CDATA[<p>¿Cómo puedo comprobar si el cliente que visita mi web usa iPhone o Android?</p>
<p>Mi solución personal en forma de función:</p>
<pre class="brush: php; ">

&amp;lt;?php

// Compruebo el user-agent mediante una expresion regular
function iPhoneCheck() {
    if (preg_match(&#039;/iPhone/i&#039;, $_SERVER[&#039;HTTP_USER_AGENT&#039;]) || preg_match(&#039;/Android/i&#039;, $_SERVER[&#039;HTTP_USER_AGENT&#039;]))
        return true;
    else
        return false;
}

// Forma de uso
if (iPhoneCheck()) {

    // Resto de codigo y acciones

}

?&amp;gt;
</pre>
<p>¿Cómo lo haceis vosotros?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/programacion/comprobar-user-agent-iphone-o-android-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>background-image: ese gran aliado</title>
		<link>http://blog.dejandomarcas.com/diseno/background-image-ese-gran-aliado/</link>
		<comments>http://blog.dejandomarcas.com/diseno/background-image-ese-gran-aliado/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 09:35:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Proyectos interesantes]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[pattern]]></category>

		<guid isPermaLink="false">http://tomaru.wordpress.com/?p=330</guid>
		<description><![CDATA[Un factor importante a la hora de diseñar nuestra web es el background. Yo siempre opto por un color sólido, pero es cierto que a veces queda mejor un pequeño pattern con una imagen simple. El efecto queda perfecto: imagen de poco tamaño, totalmente personalizable, acorde con el css de nuestro layout, y totalmente compatible [...]]]></description>
			<content:encoded><![CDATA[<p>Un factor importante a la hora de diseñar nuestra web es el background. Yo siempre opto por un color sólido, pero es cierto que a veces queda mejor un pequeño pattern con una imagen simple. El efecto queda perfecto: imagen de poco tamaño, totalmente personalizable, acorde con el css de nuestro layout, y totalmente compatible con cualquier navegador.</p>
<p>¿Cómo puedo conseguir un pattern atractivo sin necesidad de volverme loco con Photoshop?, fácil, <a href="http://patterns.ava7.com/tag-zslant.php" title="AVA7 Patterns" target="_blank">visitando AVA7 Patterns</a>, una magnífica web que pone a nuestra disposición cientos y cientos de formas de crear nuestro patrón.</p>
<p>Espero que también os guste :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/diseno/background-image-ese-gran-aliado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Necesitas inspiración?</title>
		<link>http://blog.dejandomarcas.com/diseno/%c2%bfnecesitas-inspiracion/</link>
		<comments>http://blog.dejandomarcas.com/diseno/%c2%bfnecesitas-inspiracion/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 08:20:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Proyectos interesantes]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[maquetacion]]></category>

		<guid isPermaLink="false">http://tomaru.wordpress.com/?p=327</guid>
		<description><![CDATA[Es cierto que a la hora de diseñar un formulario, un layout, un header, y un larguísimo etc. para cualquiera de nuestros proyectos necesitamos inspirarnos en algo para poder encontrar ese diseño sólido que andamos buscando. Durante muchos años, páginas como cssmania o csszendgarden han sido motivo de visita obligada para conseguir ese toque final [...]]]></description>
			<content:encoded><![CDATA[<p>Es cierto que a la hora de diseñar un formulario, un layout, un header, y un larguísimo etc. para cualquiera de nuestros proyectos necesitamos inspirarnos en algo para poder encontrar ese diseño sólido que andamos buscando.</p>
<p>Durante muchos años, páginas como <a href="http://www.cssmania.com/" title="CSSMania" target="_blank">cssmania</a> o <a href="http://www.csszengarden.com/" title="CSSZendgarden" target="_blank">csszendgarden</a> han sido motivo de visita obligada para conseguir ese toque final que andamos buscando, pero existe algo más concreto en la red? es decir, y si necesito diseñar una página 404 para mi web?</p>
<p>Os presento <a href="http://patterntap.com/" title="PatterTab" target="_blank">PatternTap.com</a></p>
<blockquote><p><em>Pattern Tap is here to satisfy and encourage the inspiration needs of my interface design peers and peeps. We aspire to be the one stop pattern shop for your next inspiration need.</em></p></blockquote>
<p>Sin duda una de mis web favoritas y de asistencia obligada en mis marcadores. Desde aquí se puede conseguir muchísima inspiración en múltiples de sets de diseños. Formularios, navegaciones, cabeceras, layouts, comentarios, listas, subnavegación, y un maravilloso etc. que nos ayudarán a conseguir ese diseño que tanto vamos buscando.</p>
<p>Espero que os guste :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/diseno/%c2%bfnecesitas-inspiracion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User experience</title>
		<link>http://blog.dejandomarcas.com/diseno/user-experience/</link>
		<comments>http://blog.dejandomarcas.com/diseno/user-experience/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 11:27:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Proyectos interesantes]]></category>
		<category><![CDATA[analisis]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[usabilidad]]></category>
		<category><![CDATA[usabilidad web]]></category>
		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://tomaru.wordpress.com/?p=304</guid>
		<description><![CDATA[Es difícil medir la experiencia de un usuario en nuestra web. Gracias a Google Analytics y a otras aplicaciones, podemos hacernos una idea de qué está pasando desde que un cliente entra en nuestra página hasta que se va. Pero, realmente es fiable?. Otra buena práctica es la de buscar a una persona totalmente ajena [...]]]></description>
			<content:encoded><![CDATA[<p>Es difícil medir la experiencia de un usuario en nuestra web. Gracias a <a title="Google Analytics" href="http://www.google.com/analytics/" target="_blank">Google Analytics</a> y a otras aplicaciones, podemos hacernos una idea de qué está pasando desde que un cliente entra en nuestra página hasta que se va. Pero, realmente es fiable?.</p>
<p>Otra buena práctica es la de buscar a una persona totalmente ajena al proyecto y al campo, sentarla delante de un ordenador y observar cómo navega por nuestro site. Tomar apuntes, fijarse bien donde clica y donde no, ver si se ha dado cuenta de ese magnífico banner que tanto te ha costado diseñar, etc.</p>
<p>Acabo de encontrar una herramienta magnífica que nos ayuda en esta tarea. Se trata de <strong>CrazyEgg</strong>, una empresa especializada en <strong>User Experience</strong> que ofrece sus servicios para poder medir este hecho.</p>
<p>El sistema se basa en 4 factores principales: <strong><em>Heatmap</em>, <em>Scrollmap</em>, <em>Confetti</em> y <em>Overlay</em>.</strong></p>
<p><img class="alignleft" src="https://www.crazyegg.com/external/images/view_heatmap.jpg" alt="" width="153" height="81" /><strong>Heatmap</strong> nos permite ver los clicks de nuestros usuarios mediante un mapa de calor. Cuanto más azul es el color, menos clics ha habido, y cuanto más rojo, más clics ha tenido dicho enlace. Es genial como se ve el montaje en directo.</p>
<p>&nbsp;</p>
<p><strong><img class="alignleft" src="https://www.crazyegg.com/external/images/scroll_map.jpg" alt="" width="151" height="79" />Scrollmap</strong> nos permite medir el factor de rebote. Si tenemos una página muy &#8220;larga&#8221;, podemos observar qué factor de scroll ha hecho el cliente, de manera que podamos cazar al cliente que entra, echa un ojo, y se va sin hacer nada.</p>
<p>&nbsp;</p>
<p><strong><img class="alignleft" src="https://www.crazyegg.com/external/images/view_confetti.jpg" alt="" width="153" height="81" />Confetti</strong> puede que sea de las más interesantes, ya que no solo nos permite ver los clics como Heatmap, sino que también nos lo fragmenta en enlaces referidos, sources, términos de búsqueda o keywords y un largo etc.</p>
<p>&nbsp;</p>
<p><strong><img class="alignleft" src="https://www.crazyegg.com/external/images/view_overlay.jpg" alt="" width="153" height="81" />Overlay</strong> nos muestra un resumen del número de clics que ha tenido un enlace.</p>
<p>Vale, pero cuánto cuesta todo esto?, pues no es caro, en serio, por 9 euros al mes podemos tener derecho a tener 10 páginas monotorizadas.</p>
<p>&nbsp;</p>
<p>Más información <a href="https://www.crazyegg.com/" title="CrazyEgg" target="_blank">CrazyEgg</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/diseno/user-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dejandomarcas.com V2.0</title>
		<link>http://blog.dejandomarcas.com/diseno/dejandomarcas-com-v2-0/</link>
		<comments>http://blog.dejandomarcas.com/diseno/dejandomarcas-com-v2-0/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 16:20:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Proyectos interesantes]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[dejandomarcas]]></category>
		<category><![CDATA[dejandomarcas.com]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://tomaru.wordpress.com/?p=301</guid>
		<description><![CDATA[Ya está arriba la nueva versión de Dejandomarcas.com He procedido a reprogramar toda la aplicación usando CakePHP. El diseño también ha sufrido un cambio drástico, mostrando una cara mucho más limpia, más fresca y mucho más intuitiva. Espero que os guste :]]]></description>
			<content:encoded><![CDATA[<p>Ya está arriba la nueva versión de <a href="http://www.dejandomarcas.com" title="Dejandomarcas.com v2.0" target="_blank">Dejandomarcas.com</a></p>
<p>He procedido a reprogramar toda la aplicación usando <strong>CakePHP</strong>. El diseño también ha sufrido un cambio drástico, mostrando una cara mucho más limpia, más fresca y mucho más intuitiva.</p>
<p>Espero que os guste :] </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/diseno/dejandomarcas-com-v2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Spam en Whatsapp?</title>
		<link>http://blog.dejandomarcas.com/general/%c2%bfspam-en-whatsapp/</link>
		<comments>http://blog.dejandomarcas.com/general/%c2%bfspam-en-whatsapp/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 11:46:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[whatsapp]]></category>

		<guid isPermaLink="false">http://tomaru.wordpress.com/?p=297</guid>
		<description><![CDATA[Durante los últimos días he recibido un par de mensajes en whatsapp notificando que debía copiar y pegar dicho mensaje a todos mis contactos para verificar mi cuenta. Este tipo de spam ya se hizo muy popular en páginas como Hotmail o Yahoo. En el mensaje, se asegura que los servidores de Whatsapp han estado [...]]]></description>
			<content:encoded><![CDATA[<p>Durante los últimos días he recibido un par de mensajes en <strong>whatsapp</strong> notificando que debía copiar y pegar dicho mensaje a todos mis contactos para verificar mi cuenta. Este tipo de spam ya se hizo muy popular en páginas como Hotmail o Yahoo.</p>
<p>En el mensaje, se asegura que los servidores de Whatsapp han estado saturados y que se va a proceder a una tarea de mantenimiento, y se incita a los usuarios a reenviar el texto a sus contactos con el fin de difundir la noticia. En caso contrario, advierte de que Whatsapp dejará de estar operativo.</p>
<p>A través de su cuenta oficial en <a href="https://twitter.com/#!/WhatsApp/status/77881067582918656" target="_blank">Twitter</a>, <strong>Whatsapp Inc.</strong> ha confirmado que dicho mensaje en cadena sobre el servicio que está circulando <strong>&#8220;no es verdad&#8221;. &#8220;Por favor, no la haga caso y no la reenvíe&#8221;</strong>, aconseja la compañía.</p>
<p>Aquí el mensaje:</p>
<p><em><br />
Este mensaje es para informarles a todos nuestros usuarios, que nuestros servidores han estado recientemente muy congestionados, por lo que estamos pidiendo su ayuda para solucionar este problema. Necesitamos que nuestros usuarios activos reenvien este mensaje a cada una de las personas de su lista de contactos a fin de confirmar nuestros usuarios activos que utilizan WhatsApp, si usted no envía este mensaje a todos sus contactos de WhatsApp, entonces su cuenta permanecerá inactiva con la consecuencia de perder todos sus contactos. El símbolo de actualización automática en su SmartPhone, aparecera con la transmisión de este mensaje. Su SmartPhone se actualizará dentro de las 24 horas siguientes, contará con un nuevo diseño y un nuevo color para el chat. Estimados usuarios de WhatsApp, vamos a hacer una actualización para WhatsApp de 23:00 p.m. hasta las 05:00 a.m. de este día. Si usted no envía esto a todos sus contactos la actualización se cancelará y no tendrá la posibilidad de chatear con sus contactos, si tiene la versión anterior<br />
</em></p>
<p>Así que ya sabeis, ni p*** caso&#8230;</p>
<p>Fuente <a href="http://www.elmundo.es/elmundo/2011/06/07/navegante/1307448356.html" title="Elmundo.es" target="_blank">Elmundo.es</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/general/%c2%bfspam-en-whatsapp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Una oferta de trabajo bastante curiosa</title>
		<link>http://blog.dejandomarcas.com/general/una-oferta-de-trabajo-bastante-curiosa/</link>
		<comments>http://blog.dejandomarcas.com/general/una-oferta-de-trabajo-bastante-curiosa/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 11:35:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://tomaru.wordpress.com/?p=293</guid>
		<description><![CDATA[Creías haberlo visto todo en las ofertas de trabajo? yo creo que no&#8230; &#38;lt;?php define(&#039;LATITUDE&#039;,40.4222691); define(&#039;LONGITUDE&#039;,-3.699632); define(&#039;HOST_URL&#039;, &#039;http://simbiotica.es&#039;); define(&#039;AVAILABILITY&#039;,&#039;&#38;lt;&#38;lt;Insert your avaiability here&#38;gt;&#38;gt;&#039;); define(&#039;MIN_EXPERIENCE&#039;,86400*30*12); $langs = array(&#039;es&#039;, &#039;en&#039;); define(&#039;LANGS&#039;, serialize($langs)); define(&#039;DEBUG_TIME&#039;,86400*30*3); define(&#039;RUN_TIME&#039;,86400*30*6-DEBUG_TIME); set_time_limit(0); //needed to run. require &#039;php.inc&#039;; require &#039;sql.inc&#039;; //highly recommended. include &#039;webServices.inc&#039;; include &#039;oop.inc&#039;; include &#039;javaScript.inc&#039;; include &#039;jQuery.inc&#039;; //not needed, but would improve performance. [...]]]></description>
			<content:encoded><![CDATA[<p>Creías haberlo visto todo en las ofertas de trabajo? yo creo que no&#8230;</p>
<pre class="brush: php; ">

&amp;lt;?php

define(&#039;LATITUDE&#039;,40.4222691);
define(&#039;LONGITUDE&#039;,-3.699632);
define(&#039;HOST_URL&#039;, &#039;http://simbiotica.es&#039;);
define(&#039;AVAILABILITY&#039;,&#039;&amp;lt;&amp;lt;Insert your avaiability here&amp;gt;&amp;gt;&#039;);
define(&#039;MIN_EXPERIENCE&#039;,86400*30*12);
$langs = array(&#039;es&#039;, &#039;en&#039;);
define(&#039;LANGS&#039;, serialize($langs));
define(&#039;DEBUG_TIME&#039;,86400*30*3);
define(&#039;RUN_TIME&#039;,86400*30*6-DEBUG_TIME);
set_time_limit(0);
//needed to run.
require &#039;php.inc&#039;;
require &#039;sql.inc&#039;;
//highly recommended.
include &#039;webServices.inc&#039;;
include &#039;oop.inc&#039;;
include &#039;javaScript.inc&#039;;
include &#039;jQuery.inc&#039;;
//not needed, but would improve performance.
include &#039;gmapsAPI.inc&#039;;
include &#039;facebookAPI.inc&#039;;
include &#039;serverConfig.inc&#039;;
include &#039;as3.inc&#039;;

public function daylyWork(){
	backendProgramming();
	backendIntegration();
	dataModeling();
	databaseMaintenance();
}

private function checkAvailability(){
	switch (AVAILABILITY){
		case &#039;in house freelance&#039;:
		return true;
		break;

		case &#039;part time&#039;:
		return true;
		break;

		case &#039;full time&#039;:
		return true;
		break;

		case &#039;work from home&#039;:
		return false;
		break;

 	}
}

private function calculateSalary($experience, $work_hours, $responsibility, $added_value){
	//human interaction needed here
	//No reliable algorithm
}

if(interested &amp;amp;&amp;amp; checkAvailability(AVAILABILITY)){
	$toEmail= &#039;info@simbiotica.es&#039;;
	$subject = &#039;Oferta de empleo&#039;;
	$html = &#039;&amp;lt;html&amp;gt;
					&amp;lt;head&amp;gt;
					&amp;lt;/head&amp;gt;
					&amp;lt;body&amp;gt;

					&amp;lt;&amp;lt; Insert your online portfolio &amp;amp; comments here &amp;gt;&amp;gt;

					&amp;lt;/body&amp;gt;
				&amp;lt;/html&amp;gt;&#039;;
	$headers = &amp;quot;From: YOUR NAME HERE &amp;lt;YOUR E-MAIL HERE&amp;gt;rn&amp;quot;;
	$headers .= &amp;quot;MIME-Version: 1.0rn&amp;quot;;
	$headers .= &amp;quot;Content-type: text/html; charset=utf-8rn&amp;quot;;

	mail($toEmail, $subject, $html, $headers);
}

?&amp;gt;
</pre>
<p>Visto en <a href="http://simbiotica.es/" title="Simbiotica.es" target="_blank">Simbiotica.es</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dejandomarcas.com/general/una-oferta-de-trabajo-bastante-curiosa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
