<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>escalabilidad &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/escalabilidad/</link>
	<description>Feed of posts on WordPress.com tagged "escalabilidad"</description>
	<pubDate>Wed, 02 Dec 2009 13:25:36 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Sql Azure la base de datos en la nube]]></title>
<link>http://highscalability.wordpress.com/2009/11/23/sql-azure-la-base-de-datos-en-la-nube-2/</link>
<pubDate>Mon, 23 Nov 2009 08:18:59 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/11/23/sql-azure-la-base-de-datos-en-la-nube-2/</guid>
<description><![CDATA[SQL Azure nos permite desarrollar bases de datos relacionales en la nube construida sobre la tecnolo]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><div id="_mcePaste" style="text-align:justify;"><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/1pPXzvSS0j0&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/1pPXzvSS0j0&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></div>
<div style="text-align:justify;">
<div style="text-align:justify;">SQL Azure nos permite desarrollar bases de datos relacionales en la nube construida sobre la tecnología SQL Server, esto nos permite construir aplicaciones de mediano tamaño que puedan escalar fácilmente y que tenga una alta disponibilidad, SQL Azure tiene completo soporte para T-SQL ademas que nos libra de la necesidad de instalar software o realizar la administración física de la base de datos, esto al mismo tiempo se traduce en una disminución de los costos de despliegue y mantenimiento.</div>
<p><!--more Seguir leyendo--></p>
<div style="text-align:justify;">Con SQL Azure podemos crear tablas, vistas, indices, procedimientos almacenados, triggers, funciones, tablas temporales, constraints, ademas de poseer un subconjunto de los procedimientos y vistas de sistema.</div>
<div>Pueden acceder a la versión de SQL Server 2008 Management Studio con soporte para SQL Azure <a href="http://go.microsoft.com/fwlink/?LinkID=168734&#38;clcid=0x409">aqui</a>.</div>
<div>Para empezar a usar SQL Azure necesitas:</div>
<div>
<ul>
<li>Descargar el <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&#38;displaylang=en">Windows Azure Platform Training Kit</a></li>
<li>Tener: Windows 7; Windows Server 2008; Windows Vista</li>
<li>Windows Vista SP1 (cuando instale en Windows Vista)</li>
<li>IIS 7.0 (with ASP.NET, WCF HTTP Activation and optionally CGI)</li>
<li>Microsoft Visual Studio 2008 SP1, Microsoft Visual Studio 2010 Beta 2 o Microsoft Visual Web Developer 2008 Express Edition with SP1</li>
<li>SQL Server 2005 Express Edition (o superior)</li>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=145526">Hotfix: Native Debugging Improvements</a> (no requerido para Visual Studio 2010)</li>
<li><a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=16827&#38;wa=wsignin1.0">Hotfix: Improve Visual Studio Stability</a> (no requerido para Windows 7 RC or later)</li>
<li><a href="http://support.microsoft.com/kb/967131">Hotfix: Support for FastCGI on the Development Fabric</a></li>
<li>(no requerido para Windows 7 RC o superior, o Windows Server 2008 SP2 o superior )</li>
<li>Descargar <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8d75d4f7-77a4-4adf-bce8-1b10608574bb&#38;displaylang=en">Tool &#38; SDK</a></li>
</ul>
</div>
<div>Artículos relacionados:</div>
<div><a href="http://highscalability.wordpress.com/2009/09/08/que-es-windows-azure/">Que es Windows Azure?</a></div>
<div style="text-align:justify;"><a href="http://highscalability.wordpress.com/2009/09/10/como-hospedar-tu-aplicacion-usando-los-servicios-de-windows-azure/">Como hospedar tu aplicación usando los servicios de Windows Azure</a></div>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tecnologías de almacenamiento]]></title>
<link>http://highscalability.wordpress.com/2009/11/02/tecnologias-de-almacenamiento/</link>
<pubDate>Mon, 02 Nov 2009 08:18:31 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/11/02/tecnologias-de-almacenamiento/</guid>
<description><![CDATA[Direct-Attached Storage DAS es una tecnología de un solo servidor como por ejemplo el disco duro int]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;"><img class="aligncenter size-medium wp-image-166" title="datacenter1" src="http://highscalability.wordpress.com/files/2009/11/datacenter1.jpg?w=300" alt="datacenter1" width="300" height="225" /></p>
<p style="text-align:justify;">Direct-Attached Storage</p>
<p style="text-align:justify;">DAS es una tecnología de un solo servidor como por ejemplo el disco duro interno de un servidor o un sistema <a href="http://en.wikipedia.org/wiki/RAID">RAID</a> conectado a un servidor por medio de  <a href="http://en.wikipedia.org/wiki/SCSI">SCSI </a>o <a href="http://en.wikipedia.org/wiki/Fibre_Channel">FC</a>, la principal característica de esta tecnología es que provee a un servidor un rápido acceso a los datos almacenados directamente a través de un bus interno o externo. Esta tecnología es recomendada para soluciones en la que los servidores necesiten un alto rendimiento pero no grandes capacidades de almacenamiento, por lo tanto es muy utilizada en servidores que funcionan como <a href="http://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>, <a href="http://en.wikipedia.org/wiki/Wireless_Integrated_Network_Sensors">WINS</a>, <a href="http://en.wikipedia.org/wiki/DHCP">DHCP </a>o controladores de dominio. La principal limitación de esta tecnología es que los datos solo pueden ser accedidos desde un solo servidor.</p>
<p><!--more Seguir leyendo--></p>
<p style="text-align:justify;"><img class="aligncenter size-full wp-image-163" title="das" src="http://highscalability.wordpress.com/files/2009/11/das1.jpg" alt="das" width="450" height="193" /></p>
<p style="text-align:justify;">
<p style="text-align:justify;">Network-Attached Storage</p>
<p style="text-align:justify;">NAS es un auto contenedor de almacenamiento que los otros servidores y clientes puedes acceder de forma fácil a través de la red, un dispositivo NAS, un dispositivo NAS utiliza un sistema operativo especialmente diseñado para manejar servicios de archivos y su principal ventaja es que fácil de implementar y puede proveer una larga cantidad de almacenamiento para servir a sus clientes dentro de la red, por otro lado su desventaja se basa en que lo clientes acceden al NAS a través de la red LAN en lugar de por un bus interno lo cual hace mas lento el acceso a los datos. Los dispositivos NAS suelen ser usados en servidores WEB, y otros servidores donde no se necesita una velocidad extremadamente alta a los datos.</p>
<p style="text-align:justify;"><img class="aligncenter size-full wp-image-164" title="nas" src="http://highscalability.wordpress.com/files/2009/11/nas.jpg" alt="nas" width="317" height="349" /></p>
<p style="text-align:justify;">Storage-Area Networks</p>
<p style="text-align:justify;">Las SANs  son redes de alto rendimiento dedicadas a servir datos entre los servidores y los subsistemas de almacenaje. Desde el punto de vista del sistema operativo de los servidores el almacén SAN aparenta estar instalado locamente, pero a diferencia de un sistema DAS el almacén de datos no esta restringido a un solo servidor sino que puede ser accedido desde n numero de servidores.</p>
<p style="text-align:justify;">Un SAN esta hecho de dispositivos especiales, incluyendo un <a href="http://en.wikipedia.org/wiki/Host_adapter">HBA </a>en servidor host, switches que ayudan a enlutar el trafico y  subsistemas de almacenamiento en disco, todo este conjunto de dispositivos es llamado la fabrica SAN y sin interconectados a través de fibra óptica o alambre de cobre, una ves interconectados el almacén disponible es dividido en particiones virtuales llamadas LUSs las cuales se muestran a los servidores como discos locales,</p>
<p style="text-align:justify;">Otras de las ventajas de SAN es que elimina la barrera de la distancia que existe en la tecnología DAS ya que permite acceder a recursos centralizados de almacenaje inclusive a 10 Km de distancia usando un canal de fibra conectándose un numero ilimitado de servidores. SAN es una solución para servidores que necesitan acceso rápido a una gran cantidad de  datos, tales comos servidores de correo, servidores de backup, servidores de contenido multimedia, servidores de aplicaciones y servidores de base de datos</p>
<p style="text-align:justify;"><img class="aligncenter size-full wp-image-165" title="san" src="http://highscalability.wordpress.com/files/2009/11/san.jpg" alt="san" width="450" height="312" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mejora los tiempos de repuesta usando un CDN]]></title>
<link>http://highscalability.wordpress.com/2009/10/14/mejora-los-tiempos-de-repuesta-usando-un-cdn/</link>
<pubDate>Wed, 14 Oct 2009 08:18:52 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/10/14/mejora-los-tiempos-de-repuesta-usando-un-cdn/</guid>
<description><![CDATA[Un CDN (content delivery network) esta compuesto por una red de servidores ubicados estratégicamente]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;"><img class="aligncenter size-medium wp-image-143" title="cdn" src="http://highscalability.wordpress.com/files/2009/10/cdn.jpg?w=300" alt="cdn" width="300" height="201" /></p>
<p style="text-align:justify;">Un CDN (content delivery network) esta compuesto por una red de servidores ubicados estratégicamente para proveer contenidos a diversos clientes y de esta manera maximizar el ancho de banda y aumentar la cantidad de peticiones por unidad de tiempo que pueden servir nuestras aplicaciones Web debido a que cada cliente accede al contenido estático de nuestra aplicación a través del servidor mas cercano que compone el CDN, el CDN posea copia del contenido en cada servidor  y este contenido puede estar compuesto por archivos descargables, documentos, stream de aplicaciones multimedia, archivos de script, etc.</p>
<p><!--more Seguir leyendo--></p>
<p style="text-align:justify;">De esta manera un CDN disminuye los cuellos de botella y mejora el tiempo de respuesta de cada petición HTTP, entre las empresas mas reconocidas que ofrecen servicios de CDN esta <a href="http://spanish.akamai.com/enes/">Akamai </a>y  <a href="http://www.mirror-image.com/site/">Mirrow Image</a> ademas hace unos pocos días Microsoft anuncio un servicio llamado Microsoft AJAX CDN el cual nos permite consumir librerías Ajax y  jQuery directamente desde este, por otra parte este servicio es totalmente gratuito y puede ser utilizado en aplicaciones comerciales y no comerciales.</p>
<p style="text-align:justify;">
<p style="text-align:justify;">Bajo este servicio ya existen registradas distintas librerías javascritp que puedes ver aquí <a href="http://www.asp.net/ajax/cdn" target="_blank">www.asp.net/ajax/cdn</a></p>
<p style="text-align:justify;">
<p style="text-align:justify;">Así por ejemplo si quisieras acceder al script de jQuery o a las librerías de Microsoft Ajax solo tendrías que agregar los siguiente a tu pagina.</p>
<p style="text-align:justify;"><span style="color:#008000;"> &#60;script src=&#8221;http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js&#8221; type=&#8221;text/javascript&#8221;&#62;&#60;/script&#62;</span></p>
<p><span style="color:#008000;"> &#60;script src=&#8221;http://ajax.microsoft.com/ajax/beta/0909/MicrosoftAjax.js&#8221; type=&#8221;text/javascript&#8221;&#62;&#60;/script&#62;</span></p>
<p><span style="color:#008000;">&#60;script src=&#8221;http://ajax.microsoft.com/ajax/beta/0909/MicrosoftAjaxTemplates.js&#8221; type=&#8221;text/javascript&#8221;&#62;&#60;/script&#62;</span></p>
<p><span style="color:#008000;"> </span></p>
<p style="text-align:justify;">Ahora si estamos usando el Framework 4.0 de Asp.net podemos usar una nueva propiedad del ScriptManager llamada EnableCdn el cual al colocarla en true redirige todas las peticiones a los archivos javascript de  ASP.NET ubicados normalmente en las librerias System.Web.dll o System.Web.Extensions.dllhacia al CDN y de esta manera mejorando el rendimiento de la aplicación.</p>
<p><span style="color:#008000;">&#60;asp:ScriptManager ID=&#8221;_scriptManager&#8221; runat=&#8221;server&#8221; EnableCdn =”true”&#62;</span></p>
<p><span style="color:#008000;">&#60;/asp:ScriptManager&#62;</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mejora el rendimiento de tus aplicaciones AJAX usando el objeto XmlHttpRquest]]></title>
<link>http://highscalability.wordpress.com/2009/10/07/mejora-el-rendimiento-de-tus-aplicaciones-ajax-usando-el-objeto-xmlhttprquest/</link>
<pubDate>Wed, 07 Oct 2009 08:18:51 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/10/07/mejora-el-rendimiento-de-tus-aplicaciones-ajax-usando-el-objeto-xmlhttprquest/</guid>
<description><![CDATA[Este objeto hoy presente en la mayoría de los exploradores fue creado originalmente por Microsoft y ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;"><img class="aligncenter size-medium wp-image-131" title="speed" src="http://highscalability.wordpress.com/files/2009/10/speed.jpg?w=300" alt="speed" width="300" height="186" /></p>
<p style="text-align:justify;">Este objeto hoy presente en la mayoría de los exploradores fue creado originalmente por Microsoft y es la base de la tecnología que conocemos como AJAX y la característica principal de este objeto es que nos permite a través de javascript realizar peticiones Get y Post por medio del http y https de esta manera  podemos recibir y enviar información a un servidor sin necesidad de refrescar la pagina y también podríamos consumir información desde distintos Web Services sin tener que enviar la pagina entera al servidor lo cual aumenta el consumo de ancho de banda y los tiempos de respuesta de nuestras aplicaciones Web.</p>
<p><!--more Seguir leyendo--></p>
<p>Veamos un ejemplo de cómo utilizar este objeto:</p>
<p>-          Como crear una instancia del objeto XMLHttpRquest</p>
<p><span style="color:#008000;">function CreaXmlHttp()</span></p>
<p><span style="color:#008000;">{</span></p>
<p><span style="color:#008000;">var MiXmlHttp;</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">// si no es IE</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">if (window.XMLHttpRequest)</span></p>
<p><span style="color:#008000;">{</span></p>
<p><span style="color:#008000;">MiXmlHttp = new XMLHttpRequest();</span></p>
<p><span style="color:#008000;">}</span></p>
<p><span style="color:#008000;">Else{</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">//IE usa un control activex</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">MiXmlHttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);</span></p>
<p><span style="color:#008000;">}</span></p>
<p><span style="color:#008000;"> </span></p>
<p><em><span style="color:#008000;">return </span></em><span style="color:#008000;">MiXmlHttp</span><em><span style="color:#008000;">;</span></em></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">}</span></p>
<p><span style="color:#008000;"> </span></p>
<p>-Como enviar información usando el Objeto XmlHttpRequest</p>
<p><span style="color:#008000;">function EnviandoInformacion(datos)</span></p>
<p><span style="color:#008000;">{</span></p>
<p><span style="color:#008000;">miHttp= CreaXmlHttp (); //crea la instancia de mi objeto XmlHttpRequest</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">// indico la función que se va encargar de procesar la respuesta</span></p>
<p><span style="color:#008000;">miHttp.onreadystatechange = ProcesoResultado;</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">miHttp.open(&#8220;GET&#8221;,&#8217;http://www.miweb.com/mipagina.aspx?variable=&#8217; + datos, true);</span></p>
<p><span style="color:#008000;">//usamos GET cuando solo vamos a enviar parámetros por query string</span></p>
<p><span style="color:#008000;">//o no se van enviar parámetros</span></p>
<p><span style="color:#008000;">//El tercer parámetro indica si la llamada será asincrónica</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">miHttp.send(null);//envio el request, se le pasa null porque no enviamos datos extras</span></p>
<p><span style="color:#008000;">}</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">function EnviandoInformacionXML(miXML)</span></p>
<p><span style="color:#008000;">{</span></p>
<p><span style="color:#008000;">miHttp= CreaXmlHttp (); //crea la instancia de mi objeto XmlHttpRequest</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">// indico la funcio que se va encargar de procesar la respuesta</span></p>
<p><span style="color:#008000;">miHttp.onreadystatechange = ProcesoResultado;</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">miHttp.open(&#8220;POST&#8221;,&#8217;http://www.miweb.com/mipagina.aspx&#8217;, true);</span></p>
<p><span style="color:#008000;">//usamos POST porque enviaremos datos XML</span></p>
<p><span style="color:#008000;"> </span></p>
<p><em><span style="color:#008000;">//</span></em><span style="color:#008000;"> indicando que los datos a enviarse están codificados como un formulario.</span><span style="color:#008000;"><em> </em></span></p>
<p><span style="color:#008000;">miHttp</span><em><span style="color:#008000;">.setRequestHeader(&#8216;Content-Type&#8217;, &#8216;application/x-www-form-urlencoded; charset=ISO-8859-1&#8242;);</span></em></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">miHttp.send(miXML);//envío el request con mis datos</span></p>
<p><span style="color:#008000;">}</span></p>
<p><span style="color:#008000;"> </span></p>
<p>-Recogiendo la petición del lado del servidor</p>
<p><span style="color:#008000;">private void ProcesoPeticion()</span></p>
<p><span style="color:#008000;">{</span></p>
<p><span style="color:#008000;">string datos = Request.QueryString["datos"];</span></p>
<p><span style="color:#008000;">//si los datos son XML</span></p>
<p><span style="color:#008000;">//        string datosXML = Request.Form[0];</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">HttpResponse response = HttpContext.Current.Response;</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">response.Clear();</span></p>
<p><span style="color:#008000;">response.ContentType = &#8220;text/plain&#8221;;</span></p>
<p><span style="color:#008000;">// si la respuesta es XML</span></p>
<p><span style="color:#008000;">//response.ContentType = &#8220;text/xml&#8221;;</span></p>
<p><span style="color:#008000;">response.Write(s);</span></p>
<p><span style="color:#008000;">response.Flush();</span></p>
<p><span style="color:#008000;">response.End();</span></p>
<p><span style="color:#008000;">}</span></p>
<p><span style="color:#008000;"> </span></p>
<p>-Recogiendo la respuesta del lado del cliente</p>
<p><span style="color:#008000;">function ProcesoResultado ()</span></p>
<p><span style="color:#008000;">{</span></p>
<p><span style="color:#008000;">if(xmlHttp.readyState == 4 &#38;&#38; xmlHttp.status == 200)</span></p>
<p><span style="color:#008000;">{</span></p>
<p><span style="color:#008000;">var resultado= xmlHttp.responseText;</span></p>
<p><span style="color:#008000;">//var resultado= xmlHttp.responseXML;</span></p>
<p><span style="color:#008000;"> </span></p>
<p><span style="color:#008000;">}</span></p>
<p><span style="color:#008000;">}</span></p>
<p><span style="color:#008000;"> </span></p>
<p>Si en lugar de hacer llamado a una pagina quisiéramos llamar a servicio Web nuestra URL debería ser algo así:</p>
<p><span style="color:#008000;">&#8220;http://www.miweb/miservicio.asmx/mimetodod?misdatos=&#8221;;</span></p>
<p>O</p>
<p><span style="color:#008000;"> &#8220;http://www.miweb/miservicio.svc/mimetodod?misdatos=&#8221;;</span></p>
<p>Si enviamos los datos en JSON debemos añadir además</p>
<p><span style="color:#008000;"> miHttp</span><em><span style="color:#008000;">.setRequestHeader(&#8216;Content-Type&#8217;, &#8216;application/json&#8217;);</span></em></p>
<p>A continuación le dejo unas tablas donde se indican el resto de los eventos, métodos y atributos que posee el objeto XmlHttpRerquest.</p>
<h3>Eventos</h3>
<table border="1" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td>
<p align="center"><strong>Propiedad</strong></p>
</td>
<td>
<p align="center"><strong>Descripción</strong></p>
</td>
</tr>
<tr>
<td><tt>onreadystatechange</tt></td>
<td>Evento que se dispara con cada cambio de estado.</td>
</tr>
<tr>
<td><tt>onabort</tt></td>
<td><em>(Level 2)</em> Evento que se dispara   al abortar la operación.</td>
</tr>
<tr>
<td><tt>onload</tt></td>
<td><em>(Level 2)</em> Evento que se dispara   al completar la carga.</td>
</tr>
<tr>
<td><tt>onloadstart</tt></td>
<td><em>(Level 2)</em> Evento que se dispara   al iniciar la carga.</td>
</tr>
<tr>
<td><tt>onprogress</tt></td>
<td><em>(Level 2)</em> Evento que se dispara   periódicamente con información de estado.</td>
</tr>
</tbody>
</table>
<h3>Métodos</h3>
<table border="1" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td>
<p align="center"><strong>Método</strong></p>
</td>
<td>
<p align="center"><strong>Descripción</strong></p>
</td>
</tr>
<tr>
<td><tt>abort()</tt></td>
<td>Cancela la petición en curso</td>
</tr>
<tr>
<td><tt>getAllResponseHeaders()</tt></td>
<td>Devuelve el conjunto de cabeceras HTTP como una cadena.</td>
</tr>
<tr>
<td><tt>getResponseHeader( nombreCabecera )</tt></td>
<td>Devuelve el valor de la cabecera HTTP especificada.</td>
</tr>
<tr>
<td valign="top"><tt>open</tt></p>
<p><tt>( método, URL [, asíncrono</tt><br />
<tt>[, nombreUsuario [, clave]]] )</tt></td>
<td>Especifica el método, URL y otros atributos opcionales de una   petición.</p>
<p>El parámetro de método puede tomar los valores &#8220;GET&#8221;,   &#8220;POST&#8221;, o &#8220;PUT&#8221; (&#8220;GET&#8221; y &#8220;POST&#8221; son   dos formas para solicitar datos, con &#8220;GET&#8221; los parámetros de la   petición se codifican en la URL y con &#8220;POST&#8221; en las cabeceras de   HTTP).</p>
<p>El parámetro <em>URL</em> puede ser una URL relativa o   completa.</p>
<p>El parámetro <em>asíncrono</em> especifica si la petición será   gestionada asíncronamente o no. Un valor <em>true</em> indica que el proceso del script   continúa después del método send(), sin esperar a la respuesta, y <em>false</em> indica que el script se detiene   hasta que se complete la operación, tras lo cual se reanuda la ejecución.</p>
<p>En el caso asíncrono se especifican manejadores de eventos, que   se ejecutan ante cada cambio de estado y permiten tratar los resultados de la   consulta una vez que se reciben, o bien gestionar eventuales errores.</td>
</tr>
<tr>
<td><tt>send([datos])</tt></td>
<td>Envía la petición</td>
</tr>
<tr>
<td><tt>setRequestHeader( etiqueta, valor )</tt></td>
<td>Añade un par etiqueta/valor a la cabecera HTTP a enviar.</td>
</tr>
</tbody>
</table>
<h3>Atributos</h3>
<table border="1" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td>
<p align="center"><strong>Atributo</strong></p>
</td>
<td>
<p align="center"><strong>Descripción</strong></p>
</td>
</tr>
<tr>
<td><tt>readyState</tt></td>
<td>Devuelve el estado del objeto como sigue:</p>
<p>0 = sin inicializar, 1 = abierto, 2 = cabeceras recibidas, 3 =   cargando y 4 = completado.</td>
</tr>
<tr>
<td><tt>responseBody</tt></td>
<td><em>(Level 2)</em> Devuelve la respuesta   como un array de bytes</td>
</tr>
<tr>
<td><tt>responseText</tt></td>
<td>Devuelve la respuesta como una cadena</td>
</tr>
<tr>
<td><tt>responseXML</tt></td>
<td>Devuelve la respuesta como XML. Esta propiedad devuelve un   objeto documento XML, que puede ser examinado usando las propiedades y   métodos del árbol del DOM.</td>
</tr>
<tr>
<td><tt>status</tt></td>
<td>Devuelve el estado como un número (p. ej. 404 para &#8220;Not   Found&#8221; y 200 para &#8220;OK&#8221;).</td>
</tr>
<tr>
<td><tt>statusText</tt></td>
<td>Devuelve el estado como una cadena (p. ej. &#8220;Not Found&#8221;   o &#8220;OK&#8221;).</td>
</tr>
</tbody>
</table>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Llamando a métodos de pagina con AJAX]]></title>
<link>http://highscalability.wordpress.com/2009/10/05/llamando-a-metodos-de-pagina-con-ajax/</link>
<pubDate>Mon, 05 Oct 2009 08:18:50 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/10/05/llamando-a-metodos-de-pagina-con-ajax/</guid>
<description><![CDATA[El uso de llamadas a métodos de pagina es comúnmente usado en AJAX ya que esta técnica permite llama]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="aligncenter size-medium wp-image-126" title="ajax_p" src="http://highscalability.wordpress.com/files/2009/09/ajax_p.jpg?w=300" alt="ajax_p" width="300" height="149" /></p>
<p style="text-align:justify;">El uso de llamadas a métodos de pagina es comúnmente usado en AJAX ya que esta técnica permite llamar a métodos estáticos desde javascript, para esto en necesario que el método que se desea exponer para ser consumido por javascript sea un método estático de esta manera no hará falta hacer una instancia de la pagina y no ahorramos todo el procesamiento que conlleva el ciclo de vida de una pagina, además de esto el método debe de tener el atributo WebMethod tal cual como si perteneciera a un servicio Web.</p>
<p style="text-align:justify;">
<p style="text-align:justify;">Para poder realizar la llamada desde javascript solo tenemos que colocar la propiedad EnablePageMethods  del ScriptManager igual a true luego podemos usar el método de la pagina con tan solo colocar PageMethods.NombreDelMetodo, el ultimo parámetro que recibirá nuestro método será el nombre de la función que será llamada al recibir el retorno del método de pagina.</p>
<p>Un ejemplo:</p>
<p>Del lado del servidor:</p>
<p><span style="color:#339966;">[WebMethod()]</span></p>
<p><span style="color:#339966;">Public static sting Mensaje (sting mensaje)</span></p>
<p><span style="color:#339966;">{</span></p>
<p><span style="color:#339966;">Return &#8220;Este es e mensaje:&#8221; + mensaje ;</span></p>
<p><span style="color:#339966;"> </span></p>
<p><span style="color:#339966;">}</span></p>
<p><span style="color:#000000;">Del lado del cliente:</span></p>
<p><span style="color:#339966;"> </span></p>
<p><span style="color:#339966;"> </span></p>
<p><span style="color:#339966;">&#60;script&#62;</span></p>
<p><span style="color:#339966;">function Enviar()</span></p>
<p><span style="color:#339966;">{</span></p>
<p><span style="color:#339966;">PageMethods.Mensaje($get(&#8220;mimensaje&#8221;).value , MensajeRecibido);</span></p>
<p><span style="color:#339966;">}</span></p>
<p><span style="color:#339966;">function MensajeRecibido(msg)</span></p>
<p><span style="color:#339966;">{</span></p>
<p><span style="color:#339966;">alert (msg);</span></p>
<p><span style="color:#339966;">}</span></p>
<p><span style="color:#339966;">&#60;/script&#62;</span></p>
<p><span style="color:#339966;"> </span></p>
<p><span style="color:#339966;">&#60;form runat=&#8221;server&#8221;&#62;</span></p>
<p><span style="color:#339966;">&#60;input /&#62;</span></p>
<p><span style="color:#339966;">&#60;input</span></p>
<p><span style="color:#339966;">value=&#8221;Enviar Mensaje&#8221; onclick=&#8221;Enviar();&#8221; /&#62;</span></p>
<p><span style="color:#339966;">&#60;br /&#62;</span></p>
<p><span style="color:#339966;"> </span></p>
<p><span style="color:#339966;">&#60;asp:ScriptManager</span></p>
<p><span style="color:#339966;">runat=&#8221;server&#8221; EnablePageMethods=&#8221;True&#8221; /&#62;</span></p>
<p><span style="color:#339966;">&#60;/form&#62;</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Exponiendo Web service con JSON]]></title>
<link>http://highscalability.wordpress.com/2009/09/30/exponiendo-web-service-con-json/</link>
<pubDate>Wed, 30 Sep 2009 08:18:54 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/09/30/exponiendo-web-service-con-json/</guid>
<description><![CDATA[JSON es un formato de intercambio ligero que al igual que el XML puede ser  leído fácilmente  y es i]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="aligncenter size-full wp-image-120" title="json" src="http://highscalability.wordpress.com/files/2009/09/json.jpg" alt="json" width="213" height="119" /></p>
<p style="text-align:justify;">JSON es un formato de intercambio ligero que al igual que el XML puede ser  leído fácilmente  y es independiente de la plataforma, esta basado en sub conjunto de javascript por esta razón puede ser convertido a javascript rápidamente y por lo tanto es ideal para aplicaciones Web basadas en AJAX, pero la ventaja de JSON sobre AJAX es que es capas de representar la misma información en un formato mas ligero que el XML y por lo tanto es mas rápido de transportar y consume menos ancho de banda.</p>
<p style="text-align:justify;"><!--more Seguir leyendo--></p>
<p style="text-align:justify;">Un ejemplo de un objeto serializado con ambos formatos:</p>
<p style="text-align:justify;">Con XML:</p>
<p style="text-align:justify;"><span style="color:#339966;">&#60;Product&#62;</span></p>
<p style="text-align:justify;"><span style="color:#339966;">&#60;ProductID&#62;1&#60;/ProductID&#62;</span></p>
<p style="text-align:justify;"><span style="color:#339966;">&#60;ProductCode&#62;p_1&#60;/ProductCode&#62;</span></p>
<p style="text-align:justify;"><span style="color:#339966;">&#60;ProductName&#62;a Product 1&#60;/ProductName&#62;</span></p>
<p style="text-align:justify;"><span style="color:#339966;">&#60;/Product&#62;</span></p>
<p style="text-align:justify;">Con JSON:</p>
<p style="text-align:justify;"><span style="color:#339966;">{&#8220;ProductID&#8221;:1,&#8221;ProductName&#8221;:&#8221;a Product 1&#8243;}</span></p>
<p style="text-align:justify;">Como podemos ver con JSON nos ahorramos una cantidad de información que no es necesaria que viaje en las peticiones que hacemos por ejemplo a un Web services. Así que veamos que necesitamos para que nuestro servicio Web se comunique a través de JSON.</p>
<p style="text-align:justify;">-Primero necestaremos que en nuestro archivo web.config contiene la sección correspondiente del objeto ScriptJsonSerializationSection</p>
<p style="text-align:justify;"><span style="color:#339966;">&#60;section name=&#8221;jsonSerialization&#8221;</span></p>
<p style="text-align:justify;"><span style="color:#339966;">type=&#8221;System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions,</span></p>
<p style="text-align:justify;"><span style="color:#339966;">Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35&#8243;</span></p>
<p style="text-align:justify;"><span style="color:#339966;">requirePermission=&#8221;false&#8221; allowDefinition=&#8221;Everywhere&#8221;/&#62;</span></p>
<p style="text-align:justify;">-Segundo configuraremos la clase de nuestro servicio Web para que use el atributo [System.Web.Script.Services.ScriptService]</p>
<p style="text-align:justify;"><span style="color:#339966;">[System.Web.Script.Services.ScriptService]</span></p>
<p style="text-align:justify;"><span style="color:#339966;">public class SimpleWebService : System.Web.Services.WebService</span></p>
<p style="text-align:justify;"><span style="color:#339966;">{</span></p>
<p style="text-align:justify;"><span style="color:#339966;">[WebMethod]</span></p>
<p style="text-align:justify;"><span style="color:#339966;">public string GetServerTime()</span></p>
<p style="text-align:justify;"><span style="color:#339966;">{</span></p>
<p style="text-align:justify;"><span style="color:#339966;">string serverTime =</span></p>
<p style="text-align:justify;"><span style="color:#339966;">String.Format(&#8220;The current time is {0}.&#8221;, DateTime.Now);</span></p>
<p style="text-align:justify;"><span style="color:#339966;">return serverTime;</span></p>
<p style="text-align:justify;"><span style="color:#339966;">}</span></p>
<p style="text-align:justify;"><span style="color:#339966;">}</span></p>
<p style="text-align:justify;">-Tercero indicaremos a nuestro Web method el formato que utilizara con el atributo [ScriptMethod(ResponseFormat = ResponseFormat.Json)]</p>
<p style="text-align:justify;"><span style="color:#339966;">[WebMethod]</span></p>
<p style="text-align:justify;"><span style="color:#339966;">[ScriptMethod(ResponseFormat = ResponseFormat.Json)]</span></p>
<p style="text-align:justify;"><span style="color:#339966;">public string GetServerTime()</span></p>
<p style="text-align:justify;"><span style="color:#339966;">{</span></p>
<p style="text-align:justify;"><span style="color:#339966;">string serverTime =</span></p>
<p style="text-align:justify;"><span style="color:#339966;">String.Format(&#8220;The current time is {0}.&#8221;, DateTime.Now);</span></p>
<p style="text-align:justify;"><span style="color:#339966;">return serverTime;</span></p>
<p style="text-align:justify;"><span style="color:#339966;">}</span></p>
<p style="text-align:justify;">Si queremos enviar objetos ya serializado en JSON para ser consumidos desde javascript podemos hacerlo de la siguiente manera</p>
<p style="text-align:justify;"><span style="color:#339966;">DataContractJsonSerializer serializer = new</span></p>
<p style="text-align:justify;"><span style="color:#339966;">DataContractJsonSerializer(yourObject.GetType());</span></p>
<p style="text-align:justify;"><span style="color:#339966;">//Creo un memory stream</span></p>
<p style="text-align:justify;"><span style="color:#339966;">MemoryStream ms = new MemoryStream();</span></p>
<p style="text-align:justify;"><span style="color:#339966;">//serializo el objeto en el Memory Steam</span></p>
<p style="text-align:justify;"><span style="color:#339966;">serializer.WriteObject(ms, yourObject);</span></p>
<p style="text-align:justify;"><span style="color:#339966;">//Convierto el objeto serializado en un string</span></p>
<p style="text-align:justify;"><span style="color:#339966;">string jsonString = Encoding.Default.GetString(ms.ToArray());</span></p>
<p style="text-align:justify;"><span style="color:#339966;">//close the memory stream</span></p>
<p style="text-align:justify;"><span style="color:#339966;">ms.Close();</span></p>
<p style="text-align:justify;">Para deserializar un objeton tambien es muy sencillo, imaginemos que recibimos el objeto persona</p>
<p style="text-align:justify;"><span style="color:#339966;">MemoryStream ms = new MemoryStream();</span></p>
<p style="text-align:justify;"><span style="color:#339966;">DataContractJsonSerializer ser =</span></p>
<p style="text-align:justify;"><span style="color:#339966;">new DataContractJsonSerializer(typeof(Persona));</span></p>
<p style="text-align:justify;"><span style="color:#339966;">ms.Position = 0;</span></p>
<p style="text-align:justify;"><span style="color:#339966;">Persona p = (Persona)ser.ReadObject(ms);</span></p>
<p style="text-align:justify;">Con la utilizacion de JSON vemos como podemos disminuir de manera considerable la cantidad de datos que enviamos y recibimos al servidor lo cual convierte a nuestra aplicacion en un sistema mucho mas escalabre y que respondera mucho mejor ante una sobre carga de usuarios.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sistemas abiertos III]]></title>
<link>http://jummp.wordpress.com/2009/09/26/sistemas-abiertos-iii/</link>
<pubDate>Sat, 26 Sep 2009 03:00:11 +0000</pubDate>
<dc:creator>jummp</dc:creator>
<guid>http://jummp.wordpress.com/2009/09/26/sistemas-abiertos-iii/</guid>
<description><![CDATA[Lo mismo que el software libre es libertad, los sistemas abiertos también son libertad, libertad de ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Lo mismo que el software libre es libertad, los sistemas abiertos también son libertad, libertad de elegir productos hardware y software compatibles entre sí a través de especificaciones que son públicas y convertidas en estándar a través de los organismos correspondientes de estandarización (especificaciones que son controladas por un número reducido de empresas, no forman parte de un sistema abierto, ya que es el mismo problema que dió lugar a los sistemas abiertos, solo que ahora cada pastel se lo reparten entre unos cuantos).</p>
<p>La necesidad de la existencia de sistemas abiertos provocó, por ejemplo, que las administraciones públicas tomasen cartas en el asunto y establecieran normativa en lo que respecta a la contratación pública, evitándose salvo en circunstancias excepcionales la adquisición de sistemas basados en especificaciones cerradas.</p>
<p>Conceptos íntimamente relacionados con los sistemas abiertos son los de interoperabilidad, portabilidad y escalabilidad. La interoperabilidad es la posibilidad de que máquinas (y el software que funciona sobre ellas) de diferentes fabricantes puedan comunicarse entre sí. La portabilidad se refiere a la posibilidad de que un software pueda ejecutarse independientemente de la máquina en la que se ejecute (con las limitaciones de los requerimientos que necesite la aplicación para funcionar). La escalabilidad hace referencia a la posibilidad de adecuar la infraestructura hardware y software a unas necesidades específicas, pudiendo ampliar o reducir dicha infraestructura conforme sea necesario, con los productos que en cada momento se consideren convenientes.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Como hospedar tu aplicación usando los servicios de Windows Azure]]></title>
<link>http://highscalability.wordpress.com/2009/09/10/como-hospedar-tu-aplicacion-usando-los-servicios-de-windows-azure/</link>
<pubDate>Thu, 10 Sep 2009 08:18:46 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/09/10/como-hospedar-tu-aplicacion-usando-los-servicios-de-windows-azure/</guid>
<description><![CDATA[En este otro video pueden tener una idea de los data center donde son guardadas todas estas aplicaci]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/CfYjDHVaXSo&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/CfYjDHVaXSo&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p style="line-height:14.25pt;"><span style="font-size:10pt;font-family:Georgia;color:black;">En este otro video pueden tener una idea de los data center donde son guardadas todas estas aplicaciones.</span></p>
<p style="line-height:14.25pt;"><span style="font-size:10pt;font-family:Georgia;color:black;"><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/K3b5Ca6lzqE&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/K3b5Ca6lzqE&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cuellos de botella en SqlServer]]></title>
<link>http://highscalability.wordpress.com/2009/09/05/cuellos-de-botella-en-sqlserver/</link>
<pubDate>Sat, 05 Sep 2009 17:11:14 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/09/05/cuellos-de-botella-en-sqlserver/</guid>
<description><![CDATA[Los cuello de botella hacen a nuestras aplicaciones lentas y limitan considerablemente el rendimient]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><img class="aligncenter size-full wp-image-55" title="cuello de botella" src="http://highscalability.wordpress.com/files/2009/09/cuello-de-botella.jpg" alt="cuello de botella" width="315" height="234" /></p>
<p>Los cuello de botella hacen a nuestras aplicaciones lentas y limitan considerablemente el rendimiento de nuestros sistemas, muchas veces cuando la arquitectura fisica que acompaña a nuestra aplicación no ha sido diseñada para ser escalable estos cuellos de botella se producen afectando los tiempos de respuesta de nuestros procesos. En SQL Server hay cuatro razones típicas por las que se producen los cuellos de botella, estas son :<br />
<!--more Seguir leyendo--><br />
-Un disco duro con baja velocidad lo cual provoca por supuesto lentitud a la hora de leer y escribir en los distintos sectores del disco.</p>
<p>Solución: un disco dura mas rápido o colocar la solución RAID mas adecuada para nuestro diseño de base de datos, generalmente se recomienda un sistema RAID 10 para nuestro archivo log y nuestros archivos de índices mientras que se recomienda un sistema RAID 5 para nuestros archivos de datos.</p>
<p>-Poca memoria lo cual causa una excesiva paginación.</p>
<p>Solución: agregar mas memoria para evitar la cantidad de paginación que tiene que realizar el procesador.</p>
<p>-Una utilización muy alta del procesador que generalmente es causada por tiempos demorados durante la paginación.</p>
<p>Solución: Agregar mas procesadores.</p>
<p>-Un bajo ancho de banda.</p>
<p>Solución: tratar de utilizar una red Ethernet de un gigabyte.</p>
<p>Algunas herramientas que podemos utilizar para detectar la existencia de cuellos de botella son:</p>
<p>-<strong>Task Manager</strong>: nos permite tener una visión general de lo que esta ocurriendo con la utilización de nuestro CPU y con la cantidad de memoria que se esta usando además de poder ver cuantos recursos esta utilizando cada proceso.</p>
<p>-<strong>System Monitor</strong><strong> </strong>: desde aquí podemos ver distintos contadores del sistema operativo y del SQL , algunos contadores útiles en nuestro caso serán:</p>
<p>-% processor time counter (&#62;80% es indicación de un cuello de botella a nivel del procesador)</p>
<p>-          % disk time (&#62;50% es indicación de un cuello de botella a nivel de disco)</p>
<p>-          avg. disk queue length (&#62;2 indicación de un cuello de botella a nivel de disco)</p>
<p>-          avg. disk sec/read or avg. disk sec/write (&#62;10-20 ms 2 indicación de un cuello de botella a nivel de disco)</p>
<p>-          vg. disk reads/sec or avg. disk writes/sec (&#62;85%  indicación de un cuello de botella a nivel de disco)</p>
<p>-SQL Server: Buffer manager object, buffer cache hit ratio, page life expectancy, checkpoint pages/sec, lazy writes/sec.</p>
<p>-  Para monitoria tu ancho de banda bytes total/sec, current bandwidth.</p>
<p><strong>-SQL Profiler</strong><strong> </strong></p>
<p>Esta herramienta te permitirá capturar toda la actividad que ocurre en tu base de datos incluyendo cada instrucción t-sql ejecutada, con el podemos capturar información referida al CPU, a las lecturas, escrituras y tiempos de respuestas.</p>
<p><strong>-Dynamic Management Views</strong></p>
<p><strong> </strong></p>
<p>Hay muchas consultas que podemos ejecutar que nos permitirán identificar cuellos de botella en nuestro sistema.</p>
<p>Que componente esta consumiendo mayor cantidad de memoria en el sql Server.</p>
<p>SELECT TYPE, SUM(MULTI_PAGES_KB) FROM<br />
SYS.DM_OS_MEMORY_CLERKS WHERE<br />
MULTI_PAGES_KB != 0 GROUP BY TYPE</p>
<p>Cuales objetos del sql están consumiendo memoria</p>
<p>SELECT TYPE, PAGES_ALLOCATED_COUNT FROM</p>
<p>SYS.DM_OS_MEMORY_OBJECTS WHERE<br />
PAGE_ALLOCATOR_ADDRESS IN (SELECT TOP 10<br />
PAGE_ALLOCATOR_ADDRESS FROM<br />
SYS.DM_OS_MEMORY_CLERKS ORDER BY<br />
MULTI_PAGES_KB DESC) ORDER BY<br />
PAGES_ALLOCATED_COUNT DESC</p>
<p>Las 25 tablas que tienen mayor espera de lectura y escritura.</p>
<p>SELECT TOP 25 DB_NAME(D.DATABASE_ID) AS</p>
<p>DATABASE_NAME,<br />
QUOTENAME(OBJECT_SCHEMA_NAME(D.OBJECT_ID,<br />
D.DATABASE_ID)) + N&#8217;.&#8217; +<br />
QUOTENAME(OBJECT_NAME(D.OBJECT_ID,<br />
D.DATABASE_ID)) AS OBJECT_NAME, D.DATABASE_ID,<br />
D.OBJECT_ID, D.PAGE_IO_LATCH_WAIT_COUNT,<br />
D.PAGE_IO_LATCH_WAIT_IN_MS, D.RANGE_SCANS,<br />
D.INDEX_LOOKUPS FROM (SELECT DATABASE_ID,<br />
OBJECT_ID, ROW_NUMBER() OVER (PARTITION BY<br />
DATABASE_ID ORDER BY<br />
SUM(PAGE_IO_LATCH_WAIT_IN_MS) DESC) AS<br />
ROW_NUMBER, SUM(PAGE_IO_LATCH_WAIT_COUNT) AS<br />
PAGE_IO_LATCH_WAIT_COUNT,<br />
SUM(PAGE_IO_LATCH_WAIT_IN_MS) AS<br />
PAGE_IO_LATCH_WAIT_IN_MS,<br />
SUM(RANGE_SCAN_COUNT) AS RANGE_SCANS,<br />
SUM(SINGLETON_LOOKUP_COUNT) AS<br />
INDEX_LOOKUPS FROM<br />
SYS.DM_DB_INDEX_OPERATIONAL_STATS(NULL, NULL,<br />
NULL, NULL) WHERE PAGE_IO_LATCH_WAIT_COUNT &#62; 0<br />
GROUP BY DATABASE_ID, OBJECT_ID ) AS D LEFT JOIN<br />
(SELECT DISTINCT DATABASE_ID, OBJECT_ID FROM<br />
SYS.DM_DB_MISSING_INDEX_DETAILS) AS MID ON<br />
MID.DATABASE_ID = D.DATABASE_ID AND<br />
MID.OBJECT_ID = D.OBJECT_ID WHERE<br />
D.ROW_NUMBER&#62;20 ORDER BY<br />
PAGE_IO_LATCH_WAIT_COUNT DESC</p>
<p>Lista de columnas que debería de tener índices.</p>
<p>SELECT * FROM SYS.DM_DB_MISSING_INDEX_GROUPS<br />
G JOIN SYS.DM_DB_MISSING_INDEX_GROUP_STATS GS<br />
ON GS.GROUP_HANDLE = G.INDEX_GROUP_HANDLE<br />
JOIN SYS.DM_DB_MISSING_INDEX_DETAILS D ON<br />
G.INDEX_HANDLE = D.INDEX_HANDLE</p>
<p>Las 25 recopilaciones de procedimientos almacenados que están consumiendo más CPU.</p>
<p>SELECT TOP 25 SQL_TEXT.TEXT, SQL_HANDLE,<br />
PLAN_GENERATION_NUM, EXECUTION_COUNT, DBID,<br />
OBJECTID FROM SYS.DM_EXEC_QUERY_STATS A<br />
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(SQL_HANDLE)<br />
AS SQL_TEXT WHERE PLAN_GENERATION_NUM &#62;1<br />
ORDER BY PLAN_GENERATION_NUM DESC</p>
<p>Los 50 mayores consumidores de cpu</p>
<p>SELECT TOP 50 SUM(QS.TOTAL_WORKER_TIME) AS<br />
TOTAL_CPU_TIME, SUM(QS.EXECUTION_COUNT) AS<br />
TOTAL_EXECUTION_COUNT, COUNT(*) AS<br />
NUMBER_OF_STATEMENTS, SQL_TEXT.TEXT,<br />
QS.PLAN_HANDLE FROM SYS.DM_EXEC_QUERY_STATS<br />
QS CROSS APPLY<br />
SYS.DM_EXEC_SQL_TEXT(SQL_HANDLE) AS SQL_TEXT<br />
GROUP BY SQL_TEXT.TEXT,QS.PLAN_HANDLE ORDER<br />
BY SUM(QS.TOTAL_WORKER_TIME) DESC</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[La empresa BackBlaze no enseña a construir un Data Center de bajo costo]]></title>
<link>http://highscalability.wordpress.com/2009/09/02/la-empresa-backblaze-no-ensena-a-construir-un-data-center-de-bajo-costo/</link>
<pubDate>Wed, 02 Sep 2009 17:39:08 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/09/02/la-empresa-backblaze-no-ensena-a-construir-un-data-center-de-bajo-costo/</guid>
<description><![CDATA[En un articulo publicado en su pagina, esta empresa dedicada al almacenamiento de grandes cantidades]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><img class="aligncenter size-full wp-image-49" title="datacenter" src="http://highscalability.wordpress.com/files/2009/09/datacenter.jpg" alt="datacenter" width="315" height="449" /></p>
<p>En un <a href="http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/">articulo publicado en su pagina</a>, esta empresa dedicada al almacenamiento de grandes cantidades de datos en línea, nos explican como construir un data center de bajo costo, ellos mismo desarrollaron esta solución debido a los altos costos de las soluciones mas comerciales. <a href="http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/">En el articulo</a> nos indican los paso para construir un equipo capaz de almacenar 67 terabytes de datos por menos de 8 mil dólares.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Buenas practicas para desarrollar aplicaciones escalables]]></title>
<link>http://highscalability.wordpress.com/2009/08/30/buenas-practicas-para-desarrollar-aplicaciones-escalables/</link>
<pubDate>Sun, 30 Aug 2009 01:04:18 +0000</pubDate>
<dc:creator>Alex</dc:creator>
<guid>http://highscalability.wordpress.com/2009/08/30/buenas-practicas-para-desarrollar-aplicaciones-escalables/</guid>
<description><![CDATA[Buenas practicas para desarrollar aplicaciones escalables según la empresa AFK Partners. Asincrónico]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="aligncenter size-full wp-image-31" title="engrenages" src="http://highscalability.wordpress.com/files/2009/08/engrenages.jpg" alt="engrenages" width="300" height="365" /></p>
<p>Buenas practicas para desarrollar aplicaciones escalables según la empresa AFK Partners.</p>
<ol>
<li><strong>Asincrónico</strong> &#8211;      Utilizar la comunicación asincrónica cuando sea posible.</li>
<li><strong>Swim Lanes</strong> –      asilar las fallas de hardware mediante la segmentación de los clientes. Esto evita que un cliente cause problemas en todos      los clientes. Esto también ayuda con      el diagnóstico de problemas.</li>
<li><strong>Caché</strong> &#8211;      Hacer uso de <a href="http://209.85.229.132/translate_c?hl=es&#38;ie=UTF-8&#38;sl=en&#38;tl=es&#38;u=http://akfpartners.com/techblog/2008/10/13/how-to-scale-a-read-subsystem/&#38;rurl=translate.google.es&#38;usg=ALkJrhhf1O6HShSdU1p5VrwEV4jgf4IF2Q">caché en      múltiples capas</a> –</li>
<li><strong>Seguimiento</strong> &#8211;      Comprender el <a href="http://209.85.229.132/translate_c?hl=es&#38;ie=UTF-8&#38;sl=en&#38;tl=es&#38;u=http://akfpartners.com/techblog/2009/06/15/monitoring-strategies/&#38;rurl=translate.google.es&#38;usg=ALkJrhjhmb-BxOM7Rc71xIIgFCV1vzCXnA">rendimiento de la aplicacion desde la perspectiva de un      cliente.</a> Monitoriear la aplicación  fuera de tu red y disponer de pruebas que      simulen la experiencia de un usuario real.<strong> </strong><strong></strong></li>
<li><strong>Replicación</strong> &#8211;      replicar bases de datos para la recuperación, así como disminuir  la carga al  leer desde  varias instancias.</li>
<li><strong>Sharding</strong> - <a href="http://209.85.229.132/translate_c?hl=es&#38;ie=UTF-8&#38;sl=en&#38;tl=es&#38;u=http://akfpartners.com/techblog/2008/05/08/splitting-applications-or-services-for-scale/&#38;rurl=translate.google.es&#38;usg=ALkJrhjrNDMmhq6FvOreeeb06_u2DGe2dw">divide la aplicación</a> y la <a href="http://209.85.229.132/translate_c?hl=es&#38;ie=UTF-8&#38;sl=en&#38;tl=es&#38;u=http://akfpartners.com/techblog/2008/05/22/splitting-databases-for-scale/&#38;rurl=translate.google.es&#38;usg=ALkJrhiXKLX2XlvFZDw4w1NY5sAkPLqB7Q">bases de datos según el  servicio</a> y / o por los clientes      que usan un módulo.</li>
<li><strong> Usar Pocos las carateristeicas de bases      de datos RDBMS </strong>- Usa la <a href="http://209.85.229.132/translate_c?hl=es&#38;ie=UTF-8&#38;sl=en&#38;tl=es&#38;u=http://akfpartners.com/techblog/2009/06/17/newsletter-the-future-of-relational-databases/&#38;rurl=translate.google.es&#38;usg=ALkJrhjk211jWD3NLFSijiHlM9LxEOdMcQ">base de      datos OLTP como un dispositivo de almacenamiento persistente</a> tanto como sea posible. <strong> </strong><strong></strong></li>
<li><strong>Pruebas de carga y rendimiento</strong> - <a href="http://209.85.229.132/translate_c?hl=es&#38;ie=UTF-8&#38;sl=en&#38;tl=es&#38;u=http://akfpartners.com/techblog/2009/01/18/the-purpose-of-qa/&#38;rurl=translate.google.es&#38;usg=ALkJrhhyIuNQoxF8_SxR3jS46l51Gk4vgA">prueba el rendimiento</a> de la versión de la aplicación      antes de colocarla en producción.</li>
<li><strong> Capacidad de planificación </strong>- Sepa cuánta capacidad tiene      en todos los niveles y servicios en su sistema.</li>
<li><strong> Retroceso</strong> &#8211;      Siempre <a href="http://209.85.229.132/translate_c?hl=es&#38;ie=UTF-8&#38;sl=en&#38;tl=es&#38;u=http://akfpartners.com/techblog/2009/05/12/scaling-availability-anti-patterns/&#38;rurl=translate.google.es&#38;usg=ALkJrhhv4FVfsMezOjx1MW9pV77y69E1Ag">tenga la posibilidad de revertir</a> una versión de código.</li>
<li><strong>Calidad      desde el principio</strong> &#8211; La calidad      no puede ser probada en un producto, <a href="http://209.85.229.132/translate_c?hl=es&#38;ie=UTF-8&#38;sl=en&#38;tl=es&#38;u=http://akfpartners.com/techblog/2009/01/18/the-purpose-of-qa/&#38;rurl=translate.google.es&#38;usg=ALkJrhhyIuNQoxF8_SxR3jS46l51Gk4vgA">debe ser      diseñada desde el principio</a></li>
</ol>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA["Cómo servir 16.000 millones de páginas web al mes, y no morir en el intento"]]></title>
<link>http://josiasdelaespada.wordpress.com/2009/07/29/como-servir-16-000-millones-de-paginas-web-al-mes-y-no-morir-en-el-intento/</link>
<pubDate>Wed, 29 Jul 2009 00:35:15 +0000</pubDate>
<dc:creator>josiasdles</dc:creator>
<guid>http://josiasdelaespada.wordpress.com/2009/07/29/como-servir-16-000-millones-de-paginas-web-al-mes-y-no-morir-en-el-intento/</guid>
<description><![CDATA[El otro día comentaba en una conversación que a veces resulta complicado estar al día en todo, y así]]></description>
<content:encoded><![CDATA[El otro día comentaba en una conversación que a veces resulta complicado estar al día en todo, y así]]></content:encoded>
</item>
<item>
<title><![CDATA[Android es escalable, iPhone no]]></title>
<link>http://an6roi6es.wordpress.com/2009/07/12/android-es-escalable-iphone/</link>
<pubDate>Sun, 12 Jul 2009 11:21:27 +0000</pubDate>
<dc:creator>androidess</dc:creator>
<guid>http://an6roi6es.wordpress.com/2009/07/12/android-es-escalable-iphone/</guid>
<description><![CDATA[En esta semana se ha comentando en todos los medios el Google Chrome OS para PC. Google Chrome OS no]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a rel="attachment wp-att-2580" href="http://and.roid.es/android-es-escalable-iphone.html/andy_rubin/"><img class="alignleft size-thumbnail wp-image-2580" title="andy_rubin" src="http://and.roid.es/wp-content/uploads/2009/07/andy_rubin-150x150.jpg" alt="andy_rubin" width="150" height="150" /></a></p>
<p>En esta semana se ha comentando en todos los medios el <strong>Google Chrome OS para PC</strong>. Google Chrome OS no es competencia de Android, es más, son 2 productos distintos. No solo lo digo yo, también lo dice Andy Rubin, vice presidente de Google mobile.</p>
<blockquote><p><em>&#8220;Se necesitan diferentes tecnologías para diferentes soluciones, yo veo que <strong>Chrome funcionará en muchos productos de consumo</strong>&#8220;</em></p></blockquote>
<p>Por si fuera poco Andy Rubin a la pregunta de si Android podrá superar a Apple en base instalada de 40 millones respondió:</p>
<blockquote><p><em>&#8220;La historia nos ha mostrado que <strong>un solo producto tiene limitaciones en la escalabilidad</strong>. Imagina: vamos a añadir otro producto, vale ya hemos doblado. Aún así solo son dos productos. <strong>Con Android, podrán haber 1.000 productos distintos</strong>, y la magia aqui es que <strong>todos estos productos comparten el mismo mercado</strong> (Android Marketplace)&#8221;</em></p></blockquote>
<p>Aún así ya hay más de 50.000 aplicaciones en la AppStore, comparado con las 5.000 de Android Market. <strong>Andy Rubin dijo que Android está en la fase de </strong><a title="Curva adaptación innovación Android" href="http://www.valuebasedmanagement.net/methods_rogers_innovation_adoption_curve.html"><strong>early adopter (yo diría innovator)</strong></a><strong>.</strong></p>
<blockquote><p><em>&#8220;Llevamos en el mercado 8 meses, esto nos ha mostrado la capacidad y ahora vamos a escalar el negocio. La tecnología open source, la adopción que hemos visto indica que estamos en el camino para escalar.&#8221; </em></p></blockquote>
<p>Para acabar, Andy habló de la intención llevar las<strong> redes sociales al móvil y puso el ejemplo de recibir una llamada y ver el estatus de esa persona en Facebook</strong>, mientras suena la llamada.</p>
<p>Parece que Andy Rubin tiene claro que l<strong>a escalabilidad de Android es mayor, que solo es cuestión de tiempo y modelos</strong>. Además, según Rubin <strong>el Android Market será común, cosa que dudo porque<a href="http://www.elperiodico.com/default.asp?idpublicacio_PK=46&#38;idioma=CAS&#38;idnoticia_PK=628683&#38;idseccio_PK=1012&#38;h"> todas las operadoras quieren llevarse su parte del pastel</a></strong>. Ahora estamos en una fase temprana de adopción y creo que dentro de un año veremos todas estas predicciones hechas realidad.</p>
<h3>Vía &#124; <a href="http://www.celularis.com/noticias/segun-google-el-iphone-no-pueden-escalar-android-si.php">Celularis</a></h3>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Escalando sitios con Drupal]]></title>
<link>http://hnzekto.wordpress.com/2009/07/03/escalando-sitios-con-drupal/</link>
<pubDate>Fri, 03 Jul 2009 08:26:35 +0000</pubDate>
<dc:creator>hnzekto</dc:creator>
<guid>http://hnzekto.wordpress.com/2009/07/03/escalando-sitios-con-drupal/</guid>
<description><![CDATA[http://www.johnandcailin.com/blog/john/scaling-drupal-open-source-infrastructure-high-traffic-drupal]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>http://www.johnandcailin.com/blog/john/scaling-drupal-open-source-infrastructure-high-traffic-drupal-sites</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Google y sus servidores]]></title>
<link>http://kurrosawa.wordpress.com/?p=1214</link>
<pubDate>Sat, 04 Apr 2009 08:20:24 +0000</pubDate>
<dc:creator>kurro</dc:creator>
<guid>http://kurrosawa.wordpress.com/?p=1214</guid>
<description><![CDATA[Es impresionante como esta empresa ha solucionado el problema de reducir costes de adquisición y man]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Es impresionante como esta empresa ha solucionado el problema de reducir costes de adquisición y mantenimiento sin renunciar a nada</p>
<p><a href="http://kurrosawa.wordpress.com/files/2009/04/google-server.jpg"><img class="aligncenter size-full wp-image-1222" title="google-server" src="http://kurrosawa.wordpress.com/files/2009/04/google-server.jpg" alt="google-server" width="500" height="276" /></a></p>
<p>Como se puede observar en esta foto extraída de un artículo relativo a los mismos  en el estupendo blog de tecnología y gadgets <a href="http://www.xataka.com/otros/los-servidores-que-utiliza-google"> Xataca</a>, el servidor está montado a medida con componentes que puedes comprar en cualquier parte, así en temas de sustituciones es mucho mas fácil encontrar repuestos y no necesitas grandes conocimientos técnicos para realizar la sustitución de cualquiera de ellos.</p>
<p>Si observamos la imagen del <a href="http://86400.es/2007/02/27/el-primer-servidor-de-google/">primer servidor de Google</a>, vemos como es la misma filosofía, un rack con placas y componentes corrientes.</p>
<p><img class="aligncenter" src="http://img177.imageshack.us/img177/7687/googleoh0.jpg" alt="" width="250" height="414" /></p>
<p>Hoy en día no se montan en racks sino que se ensamblan dentro de containers de transportes donde cabe 1160 servidores y a su vez, hay varios containers (no se sabe la cantidad exacta) por cada <a href="http://www.microsiervos.com/archivo/ordenadores/servidores-google-google-maps.html">DataCenter</a> de la empresa solucionando un problema de escalabilidad.</p>
<p>Esta cantidad tan enorme de información genera un flujo de datos en la red que al simularlo sobre un mapa mundial como si fueran luces nos regala imágenes como estas:</p>
<p style="text-align:center;"><a href="http://kurrosawa.wordpress.com/files/2009/04/labs_google1.gif"><img class="aligncenter size-full wp-image-1217" title="labs_google1" src="http://kurrosawa.wordpress.com/files/2009/04/labs_google1.gif" alt="labs_google1" width="655" height="328" /></a></p>
<p style="text-align:left;">Google también se interesa mucho por la reducción de costes de energía <a href="http://www.smallsquid.com/otros/google-quiere-sumergir-sus-servidores-en-el-oceano.html">instalando sus servidores en alta mar</a> para pagar menos impuestos y de paso alimentarlos con electricidad obtenida del movimiento de las olas o <a href="http://es.wikipedia.org/wiki/Energ%C3%ADa_undimotriz">Energía Undimotriz</a></p>
<p style="text-align:left;"><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/u-9P2VflRWU&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/u-9P2VflRWU&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p style="text-align:left;">
<p><img src="/DOCUME~1/tpv/CONFIG~1/Temp/moz-screenshot-8.jpg" alt="" /></p>
<p><img src="/DOCUME~1/tpv/CONFIG~1/Temp/moz-screenshot-7.jpg" alt="" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Videos de las charlas de la Conferencia Rails 2008]]></title>
<link>http://blog.luisbosque.com/2008/11/20/videos-de-las-charlas-de-la-conferencia-rails-2008/</link>
<pubDate>Thu, 20 Nov 2008 20:37:44 +0000</pubDate>
<dc:creator>Luis</dc:creator>
<guid>http://blog.luisbosque.com/2008/11/20/videos-de-las-charlas-de-la-conferencia-rails-2008/</guid>
<description><![CDATA[Ya están disponibles para descargar los videos de las charlas de la Conferencia Rails de este año. S]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ya están disponibles para descargar los videos de las charlas de la Conferencia Rails de este año.<br />
Se pueden bajar desde aquí:<br />
<a href="http://isabel.dit.upm.es/component/option,com_docman/task,cat_view/gid,128/Itemid,74/">http://isabel.dit.upm.es/component/option,com_docman/task,cat_view/gid,128/Itemid,74/</a></p>
<p>Están divididos por día (fueron 2 días) y por la sala de cada charla.</p>
<p>Concretamente la que charla que dimos Daniel Blanco, Fernando Blat y yo se puede descargar desde:<br />
<a href="http://isabel.dit.upm.es/component/option,com_docman/task,doc_download/gid,843/Itemid,74/">http://isabel.dit.upm.es/component/option,com_docman/task,doc_download/gid,843/Itemid,74/</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Claves para el logo perfecto]]></title>
<link>http://repentina5.wordpress.com/2008/10/03/claves-para-el-logo-perfecto/</link>
<pubDate>Sat, 04 Oct 2008 04:49:22 +0000</pubDate>
<dc:creator>slider037</dc:creator>
<guid>http://repentina5.wordpress.com/2008/10/03/claves-para-el-logo-perfecto/</guid>
<description><![CDATA[Siguiendo con un poco de identidad y logos, aqui un articulo interesante y consiso sobre tips para l]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Siguiendo con un poco de identidad y logos, aqui un articulo interesante y consiso sobre tips para la creacion de un buen logo, aqui una traduccion aproximada de su servidor del articulo original en ingles, publicado en <a href="http://insearchofdesign.com/?p=5" target="_blank">In Search of Design</a>:</p>
<p>La creación de un logo pareceria no tener logica, pero los diseñadores ponen mucho razonamiento y mucho tiempo en la toma de decisiones correctas para un cliente. Cuando creas un logo debes asegurarte de las siguientes observaciones:</p>
<p><strong>Escalabilidad: </strong>Sera mucho mas sencillo y claro de ver bajo las situaciones mas diversas? Tu quieres un logo que se pueda entender aun si mide 3 centimetros como si es agrandado para caber en un espectacular.</p>
<p><strong>Menos es Mas</strong>: Un buen logo debera ser lo suficientemente completo para describir un poco de lo que haces, pero lo suficientemente simple para escalarlo, por que un logo debe ser escalable, es importante que no haya demasiados elementos encimados dentro de los elementos. Evite agragar elementos innecesarios o cliches al logo.</p>
<p><strong>Enfoca</strong>: Tu logo debera expresar la razon principal de su negocio. Piensa sobre tu negocio. Si tu tienes que resumirlo en una sola palabra, cual seria?, Ahora esa palabra se ve reflejada simbolicamente en el logo? Su logo transmite confianza, estabilidad, eficiencia, orgullo, discrecion, lujo, o fe? si el simbolo, grafico o texto que elegiste no expresa lo que eres, deberias considerar una revision.</p>
<p><strong>Reconocibilidad</strong>: Los logos mas exitosos son esos que pueden ser reconocidos con un vistazo rapido. Si los consumidores tienen que mirar de cerca el logo para determinar lo qeu representa, tal vez quieras re-evaluar tu logo basado en esos principios de desarrollo del logo.</p>
<p><strong>Color</strong>: lo ultimo pero no lo menos importante, esta seguro que tu logo se vera bien en blanco y negro, los logos a color con muy comunes, pero aun existen aplicaciones que necesitan una version en blanco y negro. Tu quieres estar seguro que cuando tu logo sea puesto en blanco y negro, no pierda ningun detalle o caracteristica.</p>
<p>Un buen logo ayudara a tu negocio, un gran logo ayudara a hacer tu negocio. Solo recuerda, que como primer paso del proceso de &#8220;branding&#8221; tu logo puede hacer o romper tu negocio. Escoge sabiamente!, una vez establecida tu udentidad, esta sera la forma en que las personas reconoscan tu negocio. Tarjetas de presentacion, papeleria, folletos, anuncios, presencia web. la lista es infinita!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Y todo para nada...]]></title>
<link>http://windowstips.wordpress.com/2008/04/10/y-todo-para-nada/</link>
<pubDate>Thu, 10 Apr 2008 06:40:16 +0000</pubDate>
<dc:creator>Juanito</dc:creator>
<guid>http://windowstips.wordpress.com/2008/04/10/y-todo-para-nada/</guid>
<description><![CDATA[Las líneas de negocio están para eso, para abrir negocio donde antes no lo había, o había poco. Se p]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Las líneas de negocio están para eso, para abrir negocio donde antes no lo había, o había poco. Se puede destruir empleo por un lado, pero lo que sí es seguro es que generará empleo por el otro lado.</p>
<p>Pero todas las líneas de negocio existentes se van a tomar por el ·@%%&#38;&#38;.  Porque llega el articulazo del siglo. Donde esté <a href="http://www.kriptopolis.org/ordenadores-baratos-vs-ordenadores-potentes" target="_blank">un ordenador barato, que se quite uno potente</a>.</p>
<p>Reflexionemos un poco&#8230;</p>
<blockquote><p><em>Microsoft hace sistemas operativos y sus programas cada vez más pesados, que necesitan cada vez más recursos del sistema. Así todos son felices. Microsoft vende sus sistemas operativos, sus Office, etc, y, como los computadores en un momento determinado no los corren bien, la gente migra más rápidamente a procesadores más rápidos para correr estos programas. Así viene pasando desde Windows 95.</em></p>
<p><em>El problema, y el fracaso de Vista, es que ahora las cosas son un poco diferentes&#8230;</em></p>
<p><em>Por un lado, Vista exageró demasiado en cuanto a los recursos que necesita, no pudiendo correr sino solo en los procesadores más avanzados, impidiendo de esta manera las actualizaciones de XP a Vista. Era necesario comprar una máquina nueva y costosa. Por otro lado, XP sigue siendo suficientemente bueno y no justifica comprarse un nuevo computador para poder disfrutar de Vista.</em></p></blockquote>
<p>Sí, sí, sí, sí&#8230;. Spectra es malísima. Muy mala. Una cabrona vamos. Cada día hace sus programas más gordos (Creo que les dan harina y maizena), que necesitan más recursos y todos felices. Como los equipos antiguos no pueden, pues a comprar hardware nuevo.</p>
<p>Vista es un fracaso. Y del bueno te digo yo.</p>
<p>O sea, a ver si lo he entendido. Que donde esté un Windows95 o una mini-distribución de Linux, que se quiten las demás. Que donde esté mi procesador 486, que se quiten los demás. Porque todavía tengo uno en casa y le podría instalar un Windows 95. Creéis que ligaría en un bar si le digo a una chica que he instalado un Windows 95 en un 486&#8230; Y que funciona?</p>
<p>Me lloran los ojitos porque leo por primera vez en la ciudad de los Krispis que XP sigue siendo suficientemente bueno&#8230;. Se estarán pasando poco a poco al lado del mal?</p>
<p>Huelo a conspiración&#8230;.</p>
<blockquote><p><em>Por otro lado, dado el enorme poder de los microprocesadores de hoy, pueden aparecer computadores muy baratos (de menos de $300) y no tan potentes, pero que pueden hacer todo el trabajo cotidiano de oficina (procesador de palabras, hojas de cálculo, presentación gráfica, etc), además de navegar por Internet, correo, mensajería instantánea, etc.</em></p>
<p><em>Estos computadores baratos pueden trabajar bien con un sistema operativo no tan pesado como Vista. Funcionan bien con XP o Linux. Y aquí es donde está el problema de Microsoft y la industria en general.</em></p>
<p><em>Los computadores pobres de hoy en día pueden hacer el 99% del trabajo cotidiano de oficina y del hogar. ¿Para qué comprarse lo último?. En la mayoría de los casos no se justifica.</em></p>
<p><em>Entonces tenemos dos extremos. Por un lado, un computador muy sencillito pero que puede ejecutar el 99% de las cosas, y por el otro, uno muy poderoso (necesario para alimentar a Windows Vista).</em></p></blockquote>
<p>En cuanto al primer párrafo no tengo problemas. Es totalmente cierto. Tengo en casa otro PC con 512 RAM y procesador de 1GB y rula con Debian y XP de maravilla. Pero sigo sin ver el problema.</p>
<p>Spectra tiene, para aquellos que se quieran dejar engañar, porque es muy mala, una página dedicada a esos equipitos que no llegan al mínimo para poder acostarse con Vista, y son los llamados <a href="http://www.microsoft.com/latam/windowsvista/getready/capable.mspx" target="_blank">Vista Capable</a>.</p>
<p>Lo de los dos extremos me queda muy clarito.</p>
<blockquote><p>Microsoft se ve forzado a prolongar el XP porque de no hacerlo pierde el mercado de los computadores más sencillos, mercado que crecerá mucho en los próximos años.</p>
<p>No hay aplicaciones que usen tanto poder proveniente de los microprocesadores de hoy. Solo Windows Vista, los juegos y el procesamiento y edición de video, pero en pocos años, todo procesador, hasta el más pobre será capaz de manejar estas cosas. Así que el extremo de computadores muy poderosos, para uso personal tenderá a morir, quedando sólo los computadores económicos de menos de $200. Nadie necesitará un procesador de 16 núcleos, porque no habrá aplicaciones que necesiten tanto poder (para uso personal).</p>
<p>Este inmenso poder de los procesadores del futuro sólo lo usarán los que quieran correr aplicaciones como pronóstico del clima y otras similares, pero nunca una persona en su procesador de palabras, hoja de cálculo o incluso editando video.</p>
<p>Una alternativa para el uso de tanto poder, que es válida incluso hoy en día (en donde un procesador con 2 núcleos de 2 Ghz es mucho más de lo que se necesita en tareas cotidianas) sería que el computador tuviera 2 ó 4 salidas de video, y sus teclados y ratones respectivos. Así un computador manejaría 4 usuarios simultáneamente.</p>
<p>Un computador Core Duo está el 99% del tiempo sin uso, así que con los 4 usuarios estaría de una manera muy similar, y los 4 sentirían todo el poder para cada uno de ellos como si los demás no existieran (salvo en algún que otro momento en donde habría pequeños cuellos de botella).</p>
<p>Si se configura Linux para manejar estos 4 usuarios simultáneamente en un computador, sería el final de Windows, porque con sólo añadirle unas cuantas tarjetas de video (con sus respectivos controladores de teclado y ratón) se abaratarían los costos del computador para las empresas, escuelas, etc: 1 computador $400 + 4 tarjetas de video sencillas $25 c/u dan un total de $500, dividido entre cuatro personas, sale a $125 por &#8220;terminal&#8221;.</p></blockquote>
<p>Spectra es que es así. Se acojona y tiene que prolongar un producto. A mi también me lo dijo un primo de la novia de un amigo mío. Lo que no me dijo el primo de la novia de un amigo mío es que en la página de soporte de Spectra, tienes todos los datos de soporte, y de ahí es de donde se sacan los DATOS. Si quieres mirar hasta cuando vas a tener soporte (normal y extendido) te puedes pasar para recabar datos malignos. Los tienes para <a href="http://support.microsoft.com/lifecycle/?p1=3223" target="_blank">Windows XP</a> e incluso para <a href="http://support.microsoft.com/lifecycle/?p1=11734" target="_blank">Windows Vista</a>, así seguro que tienes datos para vaticinar el fin de Windows Vista. Pero claro, eso a una empresa se la repamplinfa. Se la suda que un Windows tenga un soporte de casi 14 AÑOS. Donde esté un <a href="http://es.wikipedia.org/wiki/Ubuntu_(distribuci%C3%B3n_Linux)#Asistencia_t.C3.A9cnica_de_largo_plazo" target="_blank">Ubuntu licenciado con soporte a 3 años</a> que se quite lo demás. Que me llega una incompatibilidad con una aplicación en mi Ubuntu? pues nada. O MIGRO a una distribución más novedosa, o tiraré de FOROS. Ya estoy viendo un problema de nivel 5 (O sea jodidísimo para la empresa), el soporte Server Ubuntu que se ha terminado (5 añitos), y el SysAdmin de la empresa poniendo todos sus recursos en un forero de 17 años. Qué hijadeputa es Spectra que te da casi 14 AÑOS para que te plantees una migración, te planta los Virtual Lab para que te vayas haciendo a la idea, los recursos para profesionales como los WebCast. Además son malísimos, porque si te has perdido uno, <a href="http://www.microsoft.com/spain/technet/jornadas/webcasts/webcasts_ant.aspx?id=11" target="_blank">te los graban!</a></p>
<p>Y claro, el inmenso poder de los procesadores del futuro sólo lo usarán los que quieran correr aplicaciones como pronóstico de clima&#8230;.. Y para  predecir el futuro creo&#8230;. Esto es gracioso, porque yo tengo un procesador de 1GB en casa, pero mi tía que quiere el ordenador para llevar sus tareas de costura &#8220;al día&#8221;, se fue a comprar un equipo, y de menos de dos núcleos no había nada&#8230;. Aunque claro, también se puede pasar por <a href="http://windowstips.wordpress.com/2007/08/08/amarillismo-en-kriptopolis/" target="_blank">DELL y comprar un Ubuntu de igual precio y menores características</a>.</p>
<p>Sobre los dos últimos párrafos&#8230;. No comment&#8230;. Este no sabe lo que es un AS/400, ni <a href="http://www.sap.com/spain/index.epx" target="_blank">SAP</a>, ni <a href="http://www.microsoft.com/systemcenter/" target="_blank">Operations Manager</a>, ni <a href="http://www-306.ibm.com/software/tivoli/products/security-operations-mgr/" target="_blank">IBM Tivoli Security Operations Manager</a>, ni SMS, ni <a href="http://www.microsoft.com/spain/dynamics/product/compare/default.mspx" target="_blank">Dynamics</a>&#8230;</p>
<p>O sea, que a ver si no lo he entendido tampoco. Un equipo antiguo, pongámosle (512/256 RAM con un Pentium IV) y un cliente de correo electrónico, la consola de SAP que conecta con un servidor (Ya sabes, definido en el <a href="http://trumpf-2.rz.uni-mannheim.de/Rolix/download/winnt/saplogon.ini" target="_blank">Saplogon.ini</a>), la consola 5250 del AS/400, el office (Word, Excel, PPT, etc..) y accediendo en todo momento a recursos compartidos (Para tenerlo todo un pelín más seguro) va de puta madre no? Y ya no digo de puta madre (que puede ir según el caso y la metodología de trabajo de cada uno), sino que irá de puta madre repartiendo recursos en 4 pantallas tontas. Que eso de la inversión y el reciclado de equipos es una panacea y no vale para nada. Que es preferible un equipo que &#8220;gaste&#8221; 256 de RAM y los otros 256 de RAM que me sobran (si es que tiene de sobra) lo tengo &#8220;por si las moscas&#8221;. Windows Vista gasta más RAM porque el acceso a ella es MAS RÁPIDO, así deja al disco tranquilo para que nos dure más. Eso de los discos duros híbridos con una memoria de precarga es otra panacea. Otro sacaero de dinero.. Total, el acceso a disco según tú es más rápido que el acceso a RAM. Si se peta seguro que es por un &#8220;cuello de botella&#8221;.</p>
<p>El otro día instalé un IIS 6 en un W2k3 en un PIII con 256 de RAM, un SQL Server 2000 como motor de BBDD y que servía una pequeña Web. Según tú, si me llama el cliente, le diré que cuando el servidor deje de servir páginas con rapidez, será por un &#8220;cuello de botella&#8221;&#8230; O también le puedo decir que los cuellos de botella empiezan cuando haya más de 15 usuarios en paralelo pidiendo servicios&#8230;</p>
<blockquote><p>Microsoft no podría competir con esto. Primero su Windows Vista está hecho para consumir muchos recursos (y producir una obsolescencia planificada de todos los computadores), no sirve para computadores económicos. Por otro lado, a Microsoft no le interesaría vender una sola licencia de XP, por ejemplo, para que 4 usuarios manejen sus &#8220;terminales&#8221;, sino más bien una licencia por cada terminal. Sin embargo, Linux, que es liviano, y puede manejar estos 4 usuarios no tiene ningún problema, y con computadores tan baratos como $125 por persona, no tiene competencia en empresas, escuelas, cybercafés, etc.</p></blockquote>
<p>Aquí sólo te puedo decir una cosa. En la Universidad tenemos Windows NT y solaris del año de la castaña, y una de las prácticas de Redes era conectar dos Windows 98 a través de una red AdHoc&#8230; La práctica de Linux era conectar varios equipos a través de recursos compartidos por Samba. En definitiva, sales con una base cojonuda para la vida real, y los ingenieros están preparados para afrontar un nuevo reto (pasar de una práctica con un Windows98 y WinNT, a un problema en la vida real en un entorno heterogéneo Win-Linux en sus últimas versiones).</p>
<p>En definitiva, creo que esta nueva línea de negocio, hará por fin que el departamento HelpDesk deje de recibir llamadas del tipo &#8220;Mi ordenador va lento&#8221;, &#8220;Se me traba&#8221;, &#8220;Esto va como cámara lenta&#8221;, etc&#8230;</p>
<p>Y ya dejo de escribir, porque me lloran los ojitos&#8230;.</p>
<p>En definitiva, que nos hemos equivocado, y como quiero redimirme, cuelgo aquí la fotografía que me pasó mi hermano <a href="http://elladodelmal.blogspot.com" target="_blank">Maligno</a> cuando estuvimos en el Asegur@IT II que se celebró en BCN. Como diría el Trianero&#8230;.</p>
<p>Va por ustedes&#8230;</p>
<p> <a href="http://windowstips.files.wordpress.com/2008/04/foto.pdf" target="_blank">Fotografía del evento</a> (Renombrar PDF por HTML si la queréis guardar de recuerdo)</p>
<p>1Saludo!!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Yaws]]></title>
<link>http://raulete.wordpress.com/2008/03/23/yaws/</link>
<pubDate>Sun, 23 Mar 2008 21:58:47 +0000</pubDate>
<dc:creator>Raúl Pedroche</dc:creator>
<guid>http://raulete.wordpress.com/2008/03/23/yaws/</guid>
<description><![CDATA[Antes de ponerme en el meollo, he de comentar algo que he encontrado por ahí. Pese a que me voy conv]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p align="justify">Antes de ponerme en el meollo, he de comentar algo que he encontrado por ahí.</p>
<p align="justify">Pese a que me voy convirtiendo cada vez más en un fan de Erlang según lo voy descubriendo, sigo siendo un tanto excéptico con respecto a su rendimiento.</p>
<p align="justify">Pues bien, pese a que no es un tema de rendimiento, resulta que hay un software desarrollado en Erlang que escala mejor que el software de referencia en su campo. Y la escalabilidad es otra cosa que no parece fácilmente asociable a un lenguaje funcional que se ejecuta en una máquina virtual.</p>
<p align="justify">StumpleUpon me ha llevado a <a href="http://steve.vinoski.net/blog/2008/02/05/static-languages-rationalizations-and-myths/" title="Steve Vinoski's Blog">este artículo</a>, que es realmente interesante de por sí. Pero la cuestión es que me ha hecho saber sobre <a href="http://yaws.hyber.org/" title="Yaws">Yaws</a>, un servidor web desarrollado en Erlang. El dato realmente llamativo es este: <a href="http://www.sics.se/~joe/apachevsyaws.html" title="Apache vs. Yaws">Yaws soporta veinte veces más sesiones HTTP concurrentes que Apache</a>.</p>
<p align="justify">Además, Yaws permite crear páginas web con código Erlang embebido, lo cual hace Erlang más atractivo: con Yaws se pueden hacer aplicaciones prácticas rápidamente. Creo.</p>
<p align="justify">Sí, sé que debería haber publicado hace algún tiempo la segunda parte del <a href="/2008/02/29/listas/" title="Listas">artículo sobre listas</a>. Prometo hacerlo esta semana.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Transparencias de la charla Rails Against The Machine]]></title>
<link>http://robotplaysguitar.com/2008/01/12/transparencias-de-la-charla-rails-against-the-machine/</link>
<pubDate>Sat, 12 Jan 2008 15:36:03 +0000</pubDate>
<dc:creator>Jacobo García López de Araujo</dc:creator>
<guid>http://robotplaysguitar.com/2008/01/12/transparencias-de-la-charla-rails-against-the-machine/</guid>
<description><![CDATA[Hace un par de meses, mi compañero de trabajo Christos y yo estuvimos dando una charla en la segunda]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Hace un par de meses, mi compañero de trabajo <a href="http://twitter.com/christos" title="Twitter de Christos Zisopoulos">Christos</a> y yo estuvimos dando una charla en la segunda <a href="http://conferenciarails.org/" title="Web Site de la conferencia Rails">Conferencia Rails Hispana</a>. La charla, titulada <a href="http://ponencias.conferenciarails.org/charlas/ver/10" title="Rails Against the Machine">Rails Against the Machine</a> trata sobre los problemas que hemos tenido en <a href="http://www.the-cocktail.com" title="Web Site de The Cocktail">The Cocktail</a> para escalar nuestra plataforma, el diseño que estamos implementando, y algunos <i>truquitos</i> escondidos de <a href="http://www.capify.org" title="Capistrano Web Site">Capistrano</a>.</p>
<p>Aqui teneis las transparencias:</p>
<p><!-- SlideShare error: doc is missing or has illegal characters /[^-_a-zA-Z0-9]/ --></p>
<p><a href="http://www.slideshare.net/guestae6a05/rails-against-the-machine/download" title="Pdf de las transparencias de Rails Against The Machine">Descarga el pdf</a>.</p>
<p>También podéis descargar el <a href="http://amaiac.net/conferenciarails2007/torrents/05_Rails_Hispana_Sala2_Rails_Against_The_Machine.wmv.torrent" title="Enlace Bittorrent de la charla Rails Against the Machine">video</a> [bittorrent] de la charla.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
