<?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>Braintive &#187; Tutoriales</title>
	<atom:link href="http://www.braintive.com/category/tutoriales/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.braintive.com</link>
	<description>Hacemos realidad tu proyecto tecnológico</description>
	<lastBuildDate>Tue, 24 Apr 2018 15:28:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.7</generator>
	<item>
		<title>6 consejos para crear tu tienda con CMCommerce</title>
		<link>http://www.braintive.com/6-consejos-para-crear-tu-tienda-con-cmcommerce/</link>
		<comments>http://www.braintive.com/6-consejos-para-crear-tu-tienda-con-cmcommerce/#comments</comments>
		<pubDate>Tue, 14 Oct 2014 16:26:18 +0000</pubDate>
		<dc:creator><![CDATA[Alfredo Fabretti]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[social commerce]]></category>

		<guid isPermaLink="false">http://www.braintive.com/?p=1273</guid>
		<description><![CDATA[CMCommerce te permite crear una tienda virtual en tu página de Facebook. La diferencia con otro tipo de servicios similares es que brinda herramientas completas, asemejándose más a un sitio de ecommerce real que a una tienda adaptada para Facebook. Hoy voy a tratar de brindarles cinco consejos para poder abrir una tienda en Facebook [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a title="CMCommerce" href="http://www.cmcommerce.biz" target="_blank">CMCommerce</a> te permite crear una tienda virtual en tu página de Facebook. La diferencia con otro tipo de servicios similares es que brinda herramientas completas, asemejándose más a un sitio de ecommerce real que a una tienda adaptada para Facebook.</p>
<p>Hoy voy a tratar de brindarles cinco consejos para poder abrir una tienda en Facebook que ayude a aumentar las ventas.</p>
<p><span id="more-1273"></span></p>
<p><strong>1) Los consejos para un sitio de ecommerce normal</strong> aplican para tu tienda en Facebook. Esto significa que debes poner buenas fotos de tus productos, descripciones claras y precisas, responder las preguntas de tus posibles compradores, etc.</p>
<p><strong>2) Consigue gente a la que le guste tu página.</strong> Si no tienes público, tener una tienda en Facebook es como tener tu negocio dentro de una galería por la que no pasa nadie. Mientras más fans, más ventas tendrás.</p>
<p><strong>3) Otorga descuentos y promociones</strong>, <a title="CMCommerce" href="http://www.cmcommerce.biz" target="_blank">CMCommerce</a> te da herramientas de descuentos y promociones por código que puedes utilizar para enviar por mail o publicar en tu muro por tiempo determinado.</p>
<p><strong>4) Publica los nuevos productos en tu muro</strong>, cuando des de alta un producto nuevo, compártelo en Facebook con la opción de compartir en CMCommerce, de esta manera tus seguidores podrán ver fácilmente los nuevos productos y tendrán el link a la tienda en la descripción de la foto.</p>
<p><strong>5) Invierte en <a title="Facebook ads" href="http://www.facebook.com/ads" target="_blank">Ads de Facebook</a>.</strong> Atado al consejo nro 3, puede llegar un momento que no sepas de dónde conseguir más público. Los ads de Facebook son una opción bastante económica que te ayudará a atraer gente a tu página y a tu tienda.</p>
<p><strong>6) Incentiva a tus compradores a calificar y comentar</strong> sobre tus productos. Está comprobado que las calificaciones y recomendaciones son importantes para un consumidor a la hora de decidirse por un producto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/6-consejos-para-crear-tu-tienda-con-cmcommerce/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>5 tips de PostgreSQL para optimizar tus aplicaciones</title>
		<link>http://www.braintive.com/5-tips-postgresql-para-optimizar-tus-aplicaciones/</link>
		<comments>http://www.braintive.com/5-tips-postgresql-para-optimizar-tus-aplicaciones/#comments</comments>
		<pubDate>Tue, 05 Aug 2014 13:03:32 +0000</pubDate>
		<dc:creator><![CDATA[Fernando Finelli]]></dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.braintive.com/?p=1207</guid>
		<description><![CDATA[PostgreSQL es un sistema de bases de datos opensource, tiene más de 15 años de desarrollo y hoy en día es uno de los motores más poderosos y flexibles para utilizar con cualquier tipo de plataforma. En este post explicamos 5 tips sencillos pero que tal vez no sabías de este motor de bases de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a title="PostgreSQL" href="http://www.postgresql.org" target="_blank">PostgreSQL</a> es un sistema de bases de datos opensource, tiene más de 15 años de desarrollo y hoy en día es uno de los motores más poderosos y flexibles para utilizar con cualquier tipo de plataforma. En este post explicamos 5 tips sencillos pero que tal vez no sabías de este motor de bases de datos.<br />
<span id="more-1207"></span></p>
<p>En esta entrada vamos a ver 5 funciones que tal vez no sabías que se podían hacer con PostgreSQL pero que al saber cuándo y dónde utilizarlas nos puede simplificar el desarrollo de nuestras aplicaciones.</p>
<p><strong>1. Un único query que retorne datos asociados de otra tabla.</strong></p>
<p>Por ejemplo, listado de usuarios y los intereses de cada uno (que se encuentan en otra tabla)</p>
<p>Funciones: array_agg y array_to_string</p>
<blockquote><p><em>select u.nombre, u.apellido</em><br />
<em> ,(select array_to_string(array_agg(intereses),&#8217;,&#8217;) from usuario_interes where usuario_id = u.usuario_id) as intereses</em><br />
<em>from usuario u</em></p></blockquote>
<p>Retorna los intereses como: &#8220;futbol,basket,tenis&#8221;</p>
<p>&nbsp;</p>
<p><strong>2. Obtener la cantidad total de registros afectados en un LIMIT sin necesidad de realizar otro query count(*).</strong></p>
<p>Ideal para paginación de resultados, pudiendo colocar el total general de registros, más allá del total de cada página.</p>
<p>Función: OVER()</p>
<blockquote><p>select nombre, apellido, count(*) OVER() as total<br />
from usuarios<br />
limit 10 offset 30</p></blockquote>
<p>&nbsp;</p>
<p><strong>3. Obtener un valor determinado sobre un listado de elementos separados por un caracter común.</strong></p>
<p>función: split_part</p>
<blockquote><p>select split_part(&#8216;a,b,c,d&#8217;, &#8216;,&#8217; , 2);</p></blockquote>
<p>Resultado: &#8220;b&#8221;</p>
<p>Ideal para parsear campos en donde se mantiene alguna normalización que permita obtener algún dato en particular. Por dar un ejemplo, un número telefónico separado por &#8220;-&#8220;, se puede obtener por un lado la característica y por otro la numeración.</p>
<p>&nbsp;</p>
<p><strong>4- Formateo de fechas y retornarlas en el uso horario correspondiente.</strong></p>
<p>Cuando utilizar now() o current_timestamp para obtener la fecha del sistema, esta se va a guardar en el formato horario del servidor, que seguramente va a ser diferente al nuestro</p>
<blockquote><p>select to_char(fecha_creacion AT TIME ZONE &#8216;-03:00&#8242;, &#8216;DD/MM/YYYY&#8217;) as fecha<br />
from usuario</p></blockquote>
<p>&nbsp;</p>
<p><strong>5- Como usar FullText Index, para realizar búsquedas ágiles y contextuales.</strong></p>
<p>Útil para realizar un única búsqueda y que esta se realize en muchos campos, sin necesidad de utilizar un like por cada campo. Además la performance utilizando fulltext es muy buena y se puedan agregar lógica en las búsquedas.</p>
<p>Crear un campo en la tabla que contengan todos los valores por lo que se quiere ubicar el registro.</p>
<blockquote><p>search varchar(512);</p></blockquote>
<p>Crear un campo tsvector para poder indexar el contenido.</p>
<blockquote><p>textsearchable_index tsvector;</p></blockquote>
<p>Luego cada vez que se inserta o se actualizan los datos se debe realizar lo siguiente</p>
<blockquote><p>UPDATE usuario set search = coalesce(nombre,&#8221;) || &#8216; &#8216; || coalesce(apellido,&#8221;) || &#8216; &#8216; || coalesce(email,&#8221;);</p>
<p>UPDATE usuario SET textsearchable_index = to_tsvector(search);</p></blockquote>
<p>Para realizar las búsquedas se debe utilizar</p>
<blockquote><p>select *<br />
from usuario<br />
where textsearchable_index @@ to_tsquery(&#8216;Juan&#8217;)</p>
<p>select *<br />
from usuario<br />
where textsearchable_index @@ to_tsquery(&#8216;Juan &amp; Perez&#8217;)</p>
<p>select *<br />
from usuario<br />
where textsearchable_index @@ to_tsquery(&#8216;Jua:*&#8217;)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/5-tips-postgresql-para-optimizar-tus-aplicaciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mediator.js: JavaScript tiene su torre de control</title>
		<link>http://www.braintive.com/mediator-js-javascript-tiene-su-torre-de-control/</link>
		<comments>http://www.braintive.com/mediator-js-javascript-tiene-su-torre-de-control/#comments</comments>
		<pubDate>Fri, 01 Aug 2014 13:16:40 +0000</pubDate>
		<dc:creator><![CDATA[Nicolás Trillo]]></dc:creator>
				<category><![CDATA[Diseño web]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[asicronico]]></category>
		<category><![CDATA[asincronismo]]></category>
		<category><![CDATA[canales de comunicacion]]></category>
		<category><![CDATA[jack lawson]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mediator]]></category>
		<category><![CDATA[mediator.js]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.braintive.com/?p=1190</guid>
		<description><![CDATA[mediator.js fue escrito por Jack Lawson para ayudarnos a resolver con mayor facilidad los problemas que surgen al programar una aplicación asincrónica. No sólo es muy útil y fiable (tuve la posibilidad de utilizar mediator en un proyecto de gran envergadura), sino que también es extremadamente liviano (1,12 kb) y no tiene dependencias con ninguna [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong><em>mediator.js</em></strong> fue escrito por <a title="Twitter" href="https://twitter.com/ajacksified" target="_blank">Jack Lawson</a> para ayudarnos a resolver con mayor facilidad los problemas que surgen al programar una aplicación asincrónica. No sólo es muy útil y fiable (tuve la posibilidad de utilizar mediator en un proyecto de gran envergadura), sino que también es extremadamente liviano (1,12 kb) y no tiene dependencias con ninguna librería.</p>
<p><span id="more-1190"></span></p>
<p>Imaginemos por un momento que estamos en un aeropuerto. Aviones aterrizan y despegan con total coordinación. Los vuelos de decenas de compañías en ese aeropuerto se encuentran organizados y sincronizados con los de otros aeropuertos en el resto del mundo.</p>
<p>La torre de control aéreo recibe información de todas partes y toma las decisiones que le son entregadas a los pilotos para que todo se realice sin inconvenientes. Esto es <em>mediator.js</em>, una pequeña clase <em>JavaScript</em> que centraliza la comunicación y nos permite crear canales por los cuales se puede enviar o recibir información, sin tener que preocuparnos por el sincronismo del código que escribamos.</p>
<h3>Cómo utilizarla</h3>
<p>La forma de uso es muy sencilla: se crea un canal de datos con un nombre a nuestra elección. Luego, podemos elegir que parte del código va a utilizar ese canal, indicando si vamos a enviar datos <span style="text-decoration: underline;">(publicando</span> en el canal) o sólo nos prepararemos a &#8220;escuchar&#8221; <span style="text-decoration: underline;">(suscribiendonos</span> al canal) la información que pueda llegar a través de ese medio.</p>
<p>Para lograr esto, mediator.js nos provee de <strong>4 métodos básicos en su API</strong>:</p>
<ul>
<li><strong>publish</strong>: nos permite publicar información en un canal determinado, sin tener que preocuparnos por quién se encargará de hacer llegar esa información a los suscriptores.</li>
<li><strong>subscribe</strong>: a simples rasgos nos permite decir a qué canal de información nos suscribiremos y qué elegimos hacer con lo que recibamos allí.</li>
<li><strong>remove</strong>: nos permite eliminar un canal de información, para romper el lazo entre quien publica y sus suscriptores</li>
<li><strong>once</strong>: nos permite suscribirnos a un canal de información pero, esta vez sólo recibirá datos por única vez. Luego eliminará su suscripción.</li>
</ul>
<h3>Ejemplo</h3>
<p>Para entender mejor el funcionamiento, podemos ver el ejemplo que propone Jack Lawson en la <a title="mediator.js - Sitio oficial" href="http://thejacklawson.com/Mediator.js/" target="_blank">web oficial</a> de esta clase:</p>
<pre>var mediator = new Mediator();</pre>
<pre>// Muestra un alert box con los datos cuando el mensaje es publicado en el canal
// Subscribe retorna el objeto "Subscriber"
mediator.subscribe("message", function(data){ alert(data); });
mediator.publish("message", "Hello, world");</pre>
<pre>// Otro ejemplo de uso, con objetos JS:
mediator.subscribe("channel", function(data){ alert(data.Message); }
mediator.publish("channel", { Message: "Hey!", From: "Jack" }); //alerts
</pre>
<h3>Uso en el mundo real</h3>
<p>Nosotros utilizamos esta clase para nuestro cliente <a title="Datafactory" href="http://www.datafactory.la" target="_blank">DataFactory</a> donde necesitamos procesar gran cantidad de estadísticas deportivas y mostrarlo en varias pantallas de una aplicación. Con mediator creamos un canal por incidencia (pases, tiros al arco, tiros libres, goles, etc), luego cada módulo que necesitaba esta información solo tenia que suscribirse al canal correspondiente, esperando que le lleguen los datos ya procesados.</p>
<h3>Resumen</h3>
<p>Finalmente podemos destacar que mediator.js no es sólo una herramienta muy útil para utilizar en un navegador (tanto como JavaScript nativo o cargándolo modularmente mediante RequireJS), ya que también es compatible con Node JS, (descargando por NPM el paquete mediator-js). Sin dudas este pequeño código de 1kb se merece un lugar en nuestros proyectos web.</p>
<p>&nbsp;</p>
<p><strong>Para más información recomendamos leer:</strong></p>
<p><a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/#mediatorpatternjavascript" target="_blank">El patrón Mediator &#8211; Por Addy Osmani</a></p>
<p><a href="http://thejacklawson.com/Mediator.js/" target="_blank">Sitio oficial de mediator.js</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/mediator-js-javascript-tiene-su-torre-de-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crea tu propia nube con Rackspace Cloud</title>
		<link>http://www.braintive.com/crea-tu-propia-nube-con-rackspace-cloud/</link>
		<comments>http://www.braintive.com/crea-tu-propia-nube-con-rackspace-cloud/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 14:17:34 +0000</pubDate>
		<dc:creator><![CDATA[Alfredo Fabretti]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://web.braintive.com/?p=1067</guid>
		<description><![CDATA[Mucho cambió en internet desde que se inventó el concepto de &#8220;la nube&#8221;. Pero este cambio no fué fuerte sólo para el usuario final sino también para las empresas que vieron una posibilidad de reducir sus costos de infraestructura y de poder ser más flexibles para escalar bajo demanda casi inmediatamente. Todavía existen muchos preconceptos [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Mucho cambió en internet desde que se inventó el concepto de &#8220;la nube&#8221;. Pero este cambio no fué fuerte sólo para el usuario final sino también para las empresas que vieron una posibilidad de reducir sus costos de infraestructura y de poder ser más flexibles para escalar bajo demanda casi inmediatamente.</p>
<p><span id="more-1067"></span></p>
<p>Todavía existen muchos preconceptos y por un lado nos encontramos con gente que no quiere creer que estas soluciones de colocation &#8220;virtual&#8221; son el futuro porque se les termina el negocio que tienen actualmente, por otro lado encontramos los que todavía no confían porque realmente ir por una de estas soluciones es delegar mucho poder a un tercero y por otro lado nos encontramos con miles de empresas que deciden comenzar sus negocios o migrar el actual poniendo sus servidores en nubes virtuales. Un ejemplo de este último grupo son: Instagram, SAP, Nasdaq, Socialvibe, Animoto, Ask.fm, Autodesk, HootSuite, Reddit, Ubisoft, Amazon, Foursquare y la lista es interminable.</p>
<p>Una de las empresas que se dedica a ofrecer el servicio de Cloud computing es Rackspace, y nos ofrece una API sencilla de utilizar para crear imágenes, servidores, modificar servidores ya creados, etc.</p>
<p>Es importante entender que este tipo de servicios se cobra por hora de uso, eso significa que si no creaste ningún servidor, no se te cobrará por nada. En cuanto crees un servidor se comenzará a contar las horas de vida de ese servidor y al final del mes se aplicará la tarifa correspondiente al tipo de servidor que creaste. Mientras más potencia tenga el servidor que creaste, más altas serán las tarifas que se aplican por lo que es importante (aprovechando las ventajas de estos servicios) empezar de a poco e ir subiendo cuando sea necesario.</p>
<p>En este post vamos a ver de qué manera podemos realizar las operaciones más básicas para poder armar nuestra nube y escalar fácilmente cuando sea necesario. Utilizaremos principalmente curl para realizar las llamadas pero esto puede realizarse desde cualquier lenguaje de programación, con la ventaja de que podremos automatizar estas llamadas en base a la lógica que creamos conveniente para nuestra nube.</p>
<h3><b>Identificarse con Rackspace Cloud</b></h3>
<p>Antes de realizar cualquier operación es necesario identificarse con la API de Rackspace, para ello es necesario tener nuestro usuario (username) y apikey. Esta información la obtendremos desde el panel de administración de Rackspace Cloud.</p>
<p>Una vez que tenemos esos datos, realizamos la llamada necesaria para obtener las credenciales con las que realizaremos el resto de las operaciones:</p>
<pre><em>curl -s https://identity.api.rackspacecloud.com/v2.0/tokens -X 'POST' \</em>
<em>      -d '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"&lt;USERNAME&gt;", "apiKey":"&lt;APIKEY&gt;"]}' \</em>
<em>      -H "Content-Type: application/json" | python -m json.tool</em></pre>
<p>Donde &lt;USERNAME&gt; y &lt;APIKEY&gt; debe reemplazarse por tus datos.</p>
<p>El resultado de esta llamada será un JSON el cual nos dará dos datos importantes que tenemos que anotar: el número de cuenta y el Token. Estos dos datos serán las credenciales a utilizar en el resto de las operaciones. Por lo tanto busca estos datos de la siguiente manera:</p>
<p><strong>Account</strong> = serviceCatalog -&gt; endpoints -&gt; tenantId</p>
<p><strong>Token</strong> = token -&gt; id</p>
<p>&nbsp;</p>
<p>Luego para nuestra conveniencia mantendremos en variables de nuestra sesión estos datos:</p>
<p><em>export account=&#8221;&lt;Account&gt;&#8221; </em></p>
<p><em>export token=&#8221;&lt;Token&gt;&#8221;</em></p>
<h3><b>Listar Imágenes</b></h3>
<p>Ahora que ya estamos identificados lo primero que haremos es buscar una imagen que se adapte a nuestra necesidad. Supongamos que nos gusta Red Hat pero no queremos pagar el extra por la licencia de uso, asique vamos a buscar a Centos en su versión 6.3</p>
<pre><em>curl -s https://dfw.servers.api.rackspacecloud.com/v2/$account/images/detail \
 -H "X-Auth-Token: $token" | python -m json.tool</em></pre>
<p>Nuevamente el resultado estará en formato JSON, el dato que nos interesará es el ID de la imagen de nombre CentOS 6.3. Buscamos el tag name:</p>
<p><em>&#8220;name&#8221;: &#8220;CentOS 6.3&#8243;</em></p>
<p>y obtenemos el ID que en este caso es c195ef3b-9195-4474-b6f7-16e5bd86acd0</p>
<p>Ya estamos un paso más cerca de crear nuestro primer servidor en la nube.</p>
<h3><b>Listar Flavors (RAM y procesador)</b></h3>
<p>Una vez que tenemos decidida la imagen con su sistema operativo, nos falta definir qué poder tendrá nuestro servidor, para eso listaremos los &#8220;Flavors&#8221; y buscaremos para empezar 4gb de RAM.</p>
<pre><em>curl -s https://dfw.servers.api.rackspacecloud.com/v2/$account/flavors \
  -H "X-Auth-Token: $token" | python -m json.tool</em></pre>
<p>El que nos interesa entonces será el ID 5 que nos proveerá de 4gb de RAM.</p>
<h3><b>Crear Server</b></h3>
<p>Ya tenemos el ID de la imagen y tenemos el ID del flavor, lo único que nos queda ahora es combinar ambos y crear nuestro servidor.</p>
<p>Primero crearemos un archivo con la configuración deseada:</p>
<p>Crear archivo server_build.json</p>
<pre><em>{</em>

<em>    "server" : {</em>

<em>        "name" : "&lt;MIPRIMERSERVER&gt;",</em>

<em>        "imageRef" : "c195ef3b-9195-4474-b6f7-16e5bd86acd0",</em>

<em>        "flavorRef" : "5",</em>

<em>        "metadata" : {</em>

<em>            "My Server Name" : "MI PRIMER SERVER"</em>

<em>        }</em>

<em>    }</em>

<em>}</em></pre>
<p>Donde <strong>ImageRef</strong> es el ID de la imagen del CentOS 6.3 y <strong>flavorRef</strong> el ID para crear el servidor con 4gb de RAM.</p>
<p>&nbsp;</p>
<p>Luego realizamos la llamada pasando el archivo como parámetro para enviar la configuración deseada:</p>
<pre><em>curl -s https://dfw.servers.api.rackspacecloud.com/v2/$account/servers \</em>
-X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: $token" \
-H "X-Auth-Project-Id: test-project" \
-T server_build.json | python -m json.tool</pre>
<p>&nbsp;</p>
<p>El server comenzará a crearse y obtendremos dos datos muy importantes: la clave de root y el id del servidor</p>
<p><strong>Clave de root</strong> = server -&gt; adminPass</p>
<p><strong>ID del servidor</strong> = server -&gt; id</p>
<h3><b>Información del servidor</b></h3>
<p>El servidor estará creándose y esto llevará un tiempo. Pero cómo sabemos cuándo estará listo para usar?  Cuál es la IP del servidor para poder conectar?</p>
<pre><em>curl -s https://dfw.servers.api.rackspacecloud.com/v2/$account/servers/&lt;ID del servidor&gt; \
  -H "X-Auth-Token: $token" | python -m json.tool</em></pre>
<p>Veremos lo siguiente:</p>
<p>&#8220;name&#8221;: &#8220;&lt;MIPRIMERSERVER&gt;&#8221;,<br />
&#8220;progress&#8221;: 17,<br />
&#8220;status&#8221;: &#8220;BUILD&#8221;</p>
<p>Cuando el servidor esté completamente creado, ejecutando la misma llamada veremos:</p>
<p>&#8220;progress&#8221;: 100,<br />
&#8220;status&#8221;: &#8220;ACTIVE&#8221;,</p>
<p>En <strong>addresses -&gt; public -&gt; addr</strong> obtendrás la <strong>IP pública</strong> para conectar al servidor</p>
<h3>Borrar servidor</h3>
<p>En caso de que te hayas equivocado o no necesites más este servidor, puedes eliminarlo fácilmente con esta llamada:</p>
<pre><em>curl -i https://dfw.servers.api.rackspacecloud.com/v2/$account/servers/&lt;ID del servidor&gt; \
  -X DELETE    -H "X-Auth-Token: $token"</em></pre>
<h3>Conclusión</h3>
<p>Estos son las llamadas básicas para que puedas administrar tus servidores en Rackspace Cloud, hay muchas más llamadas como por ejemplo para aumentar la potencia de tu servidor y crear servidores en base a imágenes de otro servidor que hayas creado.</p>
<p>Como hemos visto, usando un poco de imaginación podríamos crear un sistema de escalabilidad automática para nuestra aplicación en la nube en base a las necesidades del momento. Esta es desde mi punto de vista una de las más grandes ventajas de estos nuevos servicios de virtualización.</p>
<p><b> </b></p>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/crea-tu-propia-nube-con-rackspace-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 acciones útiles que puedes hacer con Siri</title>
		<link>http://www.braintive.com/10-acciones-utiles-que-puedes-hacer-con-siri/</link>
		<comments>http://www.braintive.com/10-acciones-utiles-que-puedes-hacer-con-siri/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 22:02:37 +0000</pubDate>
		<dc:creator><![CDATA[Alfredo Fabretti]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[siri]]></category>

		<guid isPermaLink="false">http://web.braintive.com/?p=1055</guid>
		<description><![CDATA[Siri es el (o mejor dicho &#8220;la&#8221; porque es una voz femenina) asistente virtual de iOS. Después de usarla por un tiempo, dejando de lado las bromas que uno puede hacerle, es interesante cómo se pueden simplificar algunas operaciones que con los dedos nos llevaría un poco más de tiempo en realizarlas. 1. &#8220;Recuérdame &#60;cuando&#62; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Siri es el (o mejor dicho &#8220;la&#8221; porque es una voz femenina) asistente virtual de iOS. Después de usarla por un tiempo, dejando de lado las bromas que uno puede hacerle, es interesante cómo se pueden simplificar algunas operaciones que con los dedos nos llevaría un poco más de tiempo en realizarlas.</p>
<p><span id="more-1055"></span></p>
<p>1. <strong>&#8220;Recuérdame &lt;cuando&gt; llamar a mi mujer&#8221;</strong>  donde &lt;cuando&gt; puede ser en 10 minutos o mañana a las 2 de la tarde por ejemplo. Ingresará luego de confirmar, un evento en tu calendario.</p>
<p>2. <strong>&#8220;Anota &lt;algo&gt;&#8221;</strong> donde &lt;algo&gt; puede ser que has gastado $10, un número de teléfono, un email, una dirección o lo que necesites en ese momento. Creará una nota en tu dispositivo.</p>
<p>3. <strong>&#8220;Cómo llego a &lt;lugar&gt;&#8221;</strong> donde &lt;lugar&gt; puede ser un alias (casa, trabajo, etc) en tu propio contacto o una persona que tengas en tus contactos. Esto abrirá la aplicación mapas con las indicaciones listas para llegar de donde te encuentres a ese &lt;lugar&gt;.</p>
<p>4. <strong>&#8220;&lt;Contacto&gt; es mi &lt;relación&gt;&#8221;</strong> donde &lt;contacto&gt; es alguien de tu lista de contactos y &lt;relación&gt; puede ser madre, hermano, esposo/a,  jefe, etc. Esto generará un alias y puedes utilizarlo para cualquiera de las otras funciones de Siri (por ejemplo &#8220;Llamar a jefe&#8221;).</p>
<p>5. <strong>&#8220;Dile a &lt;contacto&gt; &lt;algo&gt;&#8221;</strong> donde &lt;contacto&gt; es alguien de tu lista de contactos y &lt;algo&gt; el texto que deseas enviarle. Esto enviará un mensaje a tu contacto.</p>
<p>6. <strong>&#8220;Despiértame &lt;cuándo&gt;&#8221;</strong> agregará una alarma en ese horario. Por ejemplo &#8220;Despiértame a las 10 de la mañana&#8221;.</p>
<p>7. <strong>&#8220;Facetime a &lt;contacto&gt;&#8221;</strong> iniciará una llamada de Facetime a tu contacto.</p>
<p>8. <strong>&#8220;Abre &lt;programa&gt;&#8221;</strong> abrirá el programa que le indiques.</p>
<p>9. <strong>&#8220;Buscar &lt;algo&gt;&#8221;</strong>, Siri buscará negocios cerca de tu localización, por ejemplo &#8220;Buscar comida india&#8221; o &#8220;Buscar peluquería&#8221;.</p>
<p>10. <strong>&#8220;Twitear &lt;tweet&gt;&#8221;</strong>, enviará el tweet automáticamente a Twitter.</p>
<p>&nbsp;</p>
<p>Estas son sólo 10 acciones que puedes realizar con Siri, hay muchas más e incluso estoy seguro que hay muchas sin descubrir. Si encuentras alguna interesante y quieres compartirla será bienvenida!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/10-acciones-utiles-que-puedes-hacer-con-siri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mejorar las conversiones en un sitio web con Google WO</title>
		<link>http://www.braintive.com/mejorar-las-conversiones-de-un-sitio-web-con-google-wo/</link>
		<comments>http://www.braintive.com/mejorar-las-conversiones-de-un-sitio-web-con-google-wo/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 11:00:19 +0000</pubDate>
		<dc:creator><![CDATA[Alfredo Fabretti]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Diseño web]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.braintive.com/?p=295</guid>
		<description><![CDATA[Puede suceder que la registración de tu sitio web tenga un porcentaje bajo de conversión o tal vez ese banner de la Home promocionando un nuevo producto no está llamando la suficiente atención del que visita tu sitio. Siguiendo con el tema planteado por Fernando en su post Conversiones en formularios de registración, hoy explicaremos cómo [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Puede suceder que la registración de tu sitio web tenga un porcentaje bajo de conversión o tal vez ese banner de la Home promocionando un nuevo producto no está llamando la suficiente atención del que visita tu sitio. Siguiendo con el tema planteado por Fernando en su post <a title="Post de Conversiones en formularios de registración" href="http://blog.braintive.com/2011/06/conversiones-en-formularios-de-registracion/">Conversiones en formularios de registración</a>, hoy explicaremos cómo medir si las modificaciones que hacemos para mejorar las conversiones realmente dan resultado.</p>
<p><span id="more-295"></span></p>
<p>Una de las herramientas (o mejor dicho servicio) que se puede utilizar para este fin es <a title="Ir a Google Website Optimizer" href="http://www.google.com/websiteoptimizer" target="_blank">Google Website Optimizer</a>. Este servicio nos permite trackear diferentes versiones de una misma página para saber cuál da mejor resultado de conversión.</p>
<p>Por ejemplo podemos crear 3 o 4 versiones diferentes de la registración de nuestro sitio web con diferentes campos, textos o validaciones. La idea es analizar cuál de estas diferentes versiones de la registración logró más conversiones. Esto se logra conociendo cuál de estas versiones llegó al paso final de la registración, o mejor dicho en vocabulario de Google WO: cuál de estas versiones logró más accesos a la <strong>conversion page</strong>.</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>¿Qué es conversion page?</strong></span></p>
<p>La<strong> conversion page</strong> es la página que nos ayudará a medir la tasa de conversión de cada versión, es en realidad a dónde queremos que el usuario llegue por medio de un paso previo. Por cada usuario que llegue a esta página, contaremos una conversión exitosa.</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>Requerimientos básicos para comenzar a experimentar con Google WO</strong></span></p>
<p>Cuando ingresamos por primera vez a Google Website Optimizer, nos explicará lo que tenemos que tener preparado para realizar lo que ellos llaman <em>&#8220;experimentos&#8221;. </em>Básicamente lo que se necesita es tener:</p>
<ul>
<li>mínimo conocimiento de HTML (o alguien que lo tenga por nosotros)</li>
<li>crear 3 o más versiones diferentes de la página que queremos medir (por ejemplo varias versiones de la Home o de una registración)</li>
<li>acceso a modificar los archivos de nuestro sitio.</li>
</ul>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>¿Cuál es la idea de crear diferentes versiones de una misma página?</strong></span></p>
<p>Website Optimizer se encargará de distribuir a los visitantes equitativamente a una versión diferente de la página, para de esta manera poder medir cuál es la más eficaz en la conversión.</p>
<p>Una vez creadas las distintas versiones de la página a medir, debemos poner un código javascript dentro del &lt;head&gt; de cada versión. También es necesario poner un código javascript diferente en nuestra página de conversión (ej: paso final de nuestra registración).</p>
<p>Cuando hayamos puesto el código javascript en las diferentes páginas, haremos click en Validate pages y se realizará la verificación para comprobar de que todo esté funcionando correctamente.</p>
<p>De esta manera, si hemos configurado adecuadamente lo necesario podremos arrancar el experimento y luego de un tiempo los datos irán apareciendo en el reporte.</p>
<p style="text-align: center;"><a href="http://blog.braintive.com/wp-content/uploads/2011/05/Screen-shot-2011-06-06-at-16.13.30.png"><img class="size-full wp-image-449  aligncenter" title="Screen shot 2011-06-06 at 16.13.30" src="http://blog.braintive.com/wp-content/uploads/2011/05/Screen-shot-2011-06-06-at-16.13.30.png" alt="" width="818" height="349" /></a></p>
<p>Dependiendo del tráfico de nuestro sitio, luego de unas horas o unos días podremos ver cuál es la versión de la página que permite la mejor conversión. De acuerdo a estos resultados tendríamos que reemplazar nuestra página original por esta versión y finalizar el experimento.</p>
<p>En la imagen de ejemplo, por el momento la versión más efectiva de nuestro experimento es la número dos ya que tiene 18 conversiones sobre 54 visitas, siguiendo la original con 16 conversiones sobre 54 visitas y por último la tercera versión con 11 conversiones sobre 56 visitas.</p>
<p>Esta es otra de las maneras que tenemos para optimizar, o como la imágen de este post sugiere <em>&#8220;afinar el lapiz&#8221;</em> de nuestros sitios web para mejorar las conversiones de cualquier página.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/mejorar-las-conversiones-de-un-sitio-web-con-google-wo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
