<?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>Ingenieria del caos</title>
	<atom:link href="http://www.ingenieriadelcaos.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ingenieriadelcaos.com</link>
	<description>Programación, ingeniería del software, tecnología y lo que surja</description>
	<lastBuildDate>Thu, 22 Jul 2010 16:09:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Retirar una IP del screening en los servidores de correo MDaemon (11.0)</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/07/retirar-una-ip-del-screening-en-los-servidores-de-correo-mdaemon-11-0/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/07/retirar-una-ip-del-screening-en-los-servidores-de-correo-mdaemon-11-0/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 16:09:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=170</guid>
		<description><![CDATA[No sé si es un bug generalizado, pero al menos en nuestro MDaemon versión 11 nos hemos dado cuenta de que no podemos quitar una IP de la monitorización de IPs (la monitorización permite rechazarlas y que no se llegue a producir el saludo típico del protocolo SMTP si la IP de origen está en [...]]]></description>
			<content:encoded><![CDATA[<p>No sé si es un bug generalizado, pero al menos en nuestro MDaemon versión 11 nos hemos dado cuenta de que no podemos quitar una IP de la monitorización de IPs (la monitorización permite rechazarlas y que no se llegue a producir el saludo típico del protocolo SMTP si la IP de origen está en la lista). A nivel de interfaz se quita correctamente, pero por el motivo que sea no se guarda el cambio en la configuración. Para realizarlo hemos tenido que pegarnos un repaso a los archivos .DAT del programa que contienen la configuración.</p>
<p>La información está contenida en <strong>IPScreen.dat,</strong> situado en la carpeta <strong>APP</strong>. El archivo está en texto plano y es bastante autoexplicativo.</p>
<p>Saludos,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/07/retirar-una-ip-del-screening-en-los-servidores-de-correo-mdaemon-11-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cuidado con la clase WMI MicrosoftDNS_Zone</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/05/cuidado-con-la-clase-wmi-microsoftdns_zone/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/05/cuidado-con-la-clase-wmi-microsoftdns_zone/#comments</comments>
		<pubDate>Thu, 27 May 2010 13:17:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=167</guid>
		<description><![CDATA[Cuando estaba desarrollando la funcionalidad de gestión manual de registros de DNS en Domitienda me encontré con un problema bastante importante de rendimiento en la clase MicrosoftDNS_Zone de WMI. Básicamente, al utilizarla se disparaban dos procesos hasta copar el 100% de la CPU: El proceso del servidor de DNS de Microsoft (dns.exe) y el provider de [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando estaba desarrollando la funcionalidad de <a href="http://blog.domitienda.com/index.php/2010/05/11/gestion-avanzada-de-registros-dns-desde-domitienda-com/">gestión manual de registros de DNS</a> en <a href="http://www.domitienda.com" target="_blank">Domitienda </a>me encontré con un <strong>problema bastante importante de rendimiento en la clase MicrosoftDNS_Zone</strong> de WMI. Básicamente, al utilizarla se disparaban dos procesos hasta copar el 100% de la CPU: El proceso del servidor de DNS de Microsoft (dns.exe) y el provider de WMI de la máquina (wmiprvse.exe).</p>
<p>Siempre he tenido claro que las consultas por WMI son tirando a lentas y que hay que restringir resultados todo lo posible (sin llegar a desnaturalizar el resultado devuelto). Sin embargo, en este caso, cualquier enumeración sobre esta clase provocaba los efectos ya descritos, todo sobre un Windows 2003 Server correctamente actualizado (aunque ciertamente, soportando muchas zonas).</p>
<p>No he llegado a descubrir a qué se debe semejante problema (que podía dejar la máquina colgada durante 50 segundos). Lo que he tenido claro es que al menos en el servidor en cuestión era necesario evitar comprobaciones de, por ejemplo, existencia de una zona concreta (es más &#8220;barato&#8221; crear la zona y tratar la excepción en caso de que ya exista). También, un modo de paliar esa sensación de cuelgue extremo es <strong>crear un provider de WMI aislado solamente para el servidor de DNS</strong>. De este modo, <strong>el resto de operaciones esperando para realizar alguna operación mediante WMI pueden usar el provider genérico</strong>. <strong>El planificador de tareas de Windows 2003 ya se encarga de repartir el tiempo lo mejor que puede entre ambos</strong>, y los resultados mejoran bastante (pese a que la CPU se siga pasando al 100% más de lo que toca).</p>
<p>En el <a href="http://blogs.technet.com/b/janelewis/archive/2009/12/18/high-cpu-on-wmiprvse-exe-caused-by-memory-leak-dnsprov-dll-windows-2003.aspx" target="_blank">blog de Jane Lewis </a>puede leerse sobre esta técnica. Traduzco aquí para futura referencia:</p>
<p><strong>Aislar WMIPRVSE.EXE en una instancia privada para el servidor de DNS de Microsoft</strong></p>
<ol>
<li>Ejecutar wbemtest.exe.</li>
<li>Click sobre connect y luego root\microsoftdns en el namespace.</li>
<li>Enum classes</li>
<li>Recursive y click en OK</li>
<li>Seleccionar __Win32Provider de la lista de clases y hacer doble click.</li>
<li>Click en &#8220;Instances&#8221;.</li>
<li>Seleccionar la instancia y doble click.</li>
<li>Seleccionar &#8220;HostingModel&#8221; y hacer doble click.</li>
<li>Cambiar el valor de “NetworkServiceHost” a“NetworkServiceHost:DNSProvHost” (Sin las comillas)</li>
<li>Guardar propiedad</li>
<li>Guardar el objeto</li>
<li>Cerrar wbemtest.exe.</li>
</ol>
<p>Como siempre gracias al autor,  <a href="http://blogs.technet.com/b/janelewis/" target="_blank">Jane</a> en este caso, por esta información.</p>
<p>Si tenéis cualquier información y queréis compartirla no dudéis en poneros en contacto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/05/cuidado-con-la-clase-wmi-microsoftdns_zone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guia de estilo basica en C#</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/05/guia-de-estilo-basica-en-c/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/05/guia-de-estilo-basica-en-c/#comments</comments>
		<pubDate>Sun, 09 May 2010 15:53:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=159</guid>
		<description><![CDATA[Toda esta información está extraida en parte del imprescindible libro &#8220;Framework Design Guidelines&#8220;. Hasta dónde puedas aplicarlo dependerá de tu contexto, tipo de empresa, sector, etc. pero su lectura debería considerarse obligatoria. Voy a aprovechar para hacer una pequeña recopilación. El mantenimiento de una guía de estilo no es sencilla y como cualquier marca de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/05/0321605004_0321605004.jpg"><img class="size-medium wp-image-161 alignright" style="margin-left: 5px; margin-right: 5px;" title="0321605004_0321605004" src="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/05/0321605004_0321605004-220x300.jpg" alt="" width="220" height="300" /></a><br />
Toda esta información está extraida en parte del <strong>imprescindible libro</strong> &#8220;<a href="http://www.amazon.com/Framework-Design-Guidelines-Conventions-Libraries/dp/0321545613/ref=dp_ob_title_bk" target="_blank">Framework Design Guidelines</a>&#8220;. Hasta dónde puedas aplicarlo dependerá de tu contexto, tipo de empresa, sector, etc. pero su lectura debería considerarse obligatoria. Voy a aprovechar para hacer una pequeña recopilación.</p>
<p>El mantenimiento de una guía de estilo no es sencilla y como cualquier marca de calidad que deseemos dejar en nuestros proyectos nos costará dinero. No obstante, <strong>el hábito que realmente es importante fomentar en el equipo de desarrollo es la consistencia en las prácticas</strong> más que el seguimiento de estas en concreto. Eso sí, ya que estamos enmarcando nuestros proyectos en el framework, no tendría ningún sentido no hacerlo.</p>
<p><strong>La forma adecuada de utilizar las mayúsculas (Capitalization Conventions)</strong></p>
<p>Hay dos tipos de codificaciones, <strong>PascalCasing </strong>y <strong>camelCasing</strong>. ¿Cuando se utiliza cada una?</p>
<p><strong>PascalCasing</strong>: Nombres de clases, miembros públicos, propiedades, métodos, namespaces, etc.<br />
<strong>camelCasing</strong>: Parámetros, variables privadas.</p>
<p>En cierto modo,<strong><em> todo lo público se escribe en Pascal</em></strong>, <strong><em>todo lo privado en camel</em></strong>. Se escriben en mayúsculas los acrónimos de hasta dos letras de longitud: <strong>IOStream, <span style="font-weight: normal;">en caso concretario no es necesario: <strong>HtmlText </strong>.</span></strong></p>
<p><strong>Constructores </strong></p>
<p>Los constructores son la primera operación que se ejecuta con la creación de una clase. Cuando un programador los utiliza no espera que tengan un coste excesivo, por ello un constructor debe ser sencillo y no hacer mucho más trabajo que inicializar las variables privadas (dejar el objeto en el estado que tiene que estar). Cualquier tarea más compleja debería ser un método aparte ya que esto permite una mayor riqueza de usos para el usuario de la clase (como la paralelización de ciertas tareas, o simplemente hacerle consciente de que está ejecutando una operación).</p>
<p><strong>Métodos y propiedades</strong></p>
<p>En muchas ocasiones a un programador le pueden surgir dudas con estas dos construcciones. ¿Hasta donde debe llegar una propiedad o cuando debería ser un método?.</p>
<p><strong>¿Qué caracteriza a una propiedad?</strong></p>
<ul>
<li>No dependen unas de otras</li>
<li>No debería ser obligatorio llamarlas en ningún orden concreto</li>
<li>No deben tener efectos colaterales sobre la instancia de la clase</li>
<li>No deben lanzar excepciones</li>
<li><strong>El programador espera que se comporten como un simple campo, por lo tanto así deberían estar implementadas</strong>.</li>
</ul>
<p><strong>¿Qué caracteriza a un método?</strong></p>
<ul>
<li>Altera de manera visible la instancia o realiza alguna conversión</li>
<li>El orden de llamada es muy importante</li>
<li>Devuelve un array</li>
</ul>
<p><strong>Codificación de los miembros de una clase</strong></p>
<p>Siempre me ha generado cierta inquietud cómo debía nombrar a las variables miembro de una clase. Realmente, al usarlas en una función, es ideal utilizar la palabra reservada <strong><em>this </em></strong>para que de un solo vistazo se pueda indicar al lector del código que estamos hablando de una de estas variables. Otro modo es prefijar de algún modo estas variables (&#8220;m_Variable&#8221;). Aunque esto no está soportado mayoritariamente es interesante un comentario de <strong>Anthony Moore</strong> (Equipo BLC del Framework) con el cual coincido. Según él, el prefijado de estas variables puede evitar errores de programación entre variables locales y variables miembro, además de  permitir diferenciarlas también de variables estáticas.</p>
<p>Espero que os sea de utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/05/guia-de-estilo-basica-en-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nuevos servidores virtuales (VPS) en Domitienda</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/05/nuevos-servidores-virtuales-vps-en-domitienda/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/05/nuevos-servidores-virtuales-vps-en-domitienda/#comments</comments>
		<pubDate>Wed, 05 May 2010 15:23:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=155</guid>
		<description><![CDATA[Hemos sacado en Domitienda nuestro nuevo producto: los servidores privados virtuales (VPS). Me gustaría hacerme eco de la oferta de salida: 6 meses adicionales 1 certificado SSL de 128 bits Aproximadamente sale a 26€ mensuales La verdad es que poder disfrutar de, a efectos prácticos, un servidor privado por estos precios es una completa revolución. Además [...]]]></description>
			<content:encoded><![CDATA[<p>Hemos sacado en <a href="http://www.domitienda.com">Domitienda </a>nuestro nuevo producto: <a href="http://www.domitienda.com/VPS/vps_informacion.aspx" target="_blank">los servidores privados virtuales (VPS)</a>. Me gustaría hacerme eco de la oferta de salida:</p>
<ul>
<li>6 meses adicionales</li>
<li>1 certificado SSL de 128 bits</li>
<li>Aproximadamente sale a 26€ mensuales</li>
</ul>
<p>La verdad es que <strong>poder disfrutar de, a efectos prácticos, un servidor privado por estos precios es una completa revolución</strong>. Además no están en absoluto cortos de <a href="http://www.domitienda.com/VPS/VPSDedicadoAvanzado.aspx" target="_blank">RAM </a>por lo que puede ser una interesante diversificación tecnológica en los productos de hosting de cualquier empresa. Por otro lado, como programador, es carta libre para hacer lo que quieras.</p>
<p>Espero que lo valoréis convenientemente <img src='http://www.ingenieriadelcaos.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/05/nuevos-servidores-virtuales-vps-en-domitienda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extrayendo ensamblados de la GAC de nuestro PC</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/04/extrayendo-ensamblados-de-la-gac-de-nuestro-pc/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/04/extrayendo-ensamblados-de-la-gac-de-nuestro-pc/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 21:14:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=146</guid>
		<description><![CDATA[La &#8220;Global Assembly Cache&#8221; es un repositorio de ensamblados .NET, a la que se puede acceder en modo compartido por todo el software programado bajo esta tecnología, evitando lo que se conocía como el &#8220;infierno de las DLL&#8221; (incompatibilidad entre versiones, problemas de memoria compartida, problemas para actualizar todas las copias de la librería en [...]]]></description>
			<content:encoded><![CDATA[<p>La <a href="http://en.wikipedia.org/wiki/Global_Assembly_Cache" target="_blank">&#8220;Global Assembly Cache&#8221;</a> es un repositorio de ensamblados .NET, a la que se puede acceder en modo compartido por todo el software programado bajo esta tecnología, evitando lo que se conocía como el <a href="http://en.wikipedia.org/wiki/DLL_hell" target="_blank">&#8220;infierno de las DLL&#8221;</a> (incompatibilidad entre versiones, problemas de memoria compartida, problemas para actualizar todas las copias de la librería en el PC, etc). En definitiva, la GAC tiene una serie de propiedades que la hacen muy interesante y la convierten en un punto y aparte en el modo de abordar este problema en sistemas operativos Windows.</p>
<p>En ocasiones puede ser de gran utilidad extraer una DLL de la GAC, por ejemplo, para usarla en entornos de hosting compartido. Para una empresa de hosting es complejo tener instalado en el sistema una gran variedad de componentes de terceros, ya que pueden sobrecargar, requieren más mantenimiento y hay posibilidades de afectar al sistema durante la instalación. En este caso y según el componente que queramos usar, es posible subir la DLL a la carpeta BIN y de esta manera poder acceder a la librería sin necesidad de instalarla. La mayoría de componentes dejan las librerías instaladas en la cache y mantienen una copia en la carpeta de instalación, pero otras sin embargo quedan &#8220;encerradas&#8221; en la GAC (como algunas del espacio de nombres <em>Microsoft.Reporting</em>).</p>
<p>Si accedemos a C:\Windows\Assembly se nos presenta una interfaz que no nos permite manejarlas (copiar, pegar). Necesitamos abrir una consola con permisos de administrador:</p>
<div id="attachment_149" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/04/cmd_admin.png"><img class="size-medium wp-image-149" title="cmd_admin" src="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/04/cmd_admin-300x79.png" alt="" width="300" height="79" /></a><p class="wp-caption-text">Abrir una consola como administradores</p></div>
<p>Acto seguido accedemos a la ruta C:\Windows\Assembly\GAC_MSIL.</p>
<div id="attachment_151" class="wp-caption alignnone" style="width: 510px"><a href="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/04/gac_msil1.png"><img class="size-full wp-image-151" title="gac_msil" src="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/04/gac_msil1.png" alt="" width="500" height="197" /></a><p class="wp-caption-text">El directorio GAC_MSIL</p></div>
<p>Nos aparecerán listadas una gran variedad de carpetas, cada una de ellas referida a un ensamblado. Deberemos acceder a la deseada y volver a listar:</p>
<div id="attachment_152" class="wp-caption alignnone" style="width: 586px"><a href="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/04/gac_msil2.png"><img class="size-full wp-image-152" title="gac_msil2" src="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/04/gac_msil2.png" alt="" width="576" height="72" /></a><p class="wp-caption-text">Ejemplo de la codificación de los directores que contienen los ensamblados</p></div>
<p>Aparece una carpeta con un formato que viene dado por la versión del ensamblado en primer lugar y el <em>PublicKeyToken </em>en segundo. Dentro de esta carpeta podremos acceder a la DLL buscada y copiarla donde deseemos.</p>
<p>- copy *.dll c:\destino</p>
<p>Saludos,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/04/extrayendo-ensamblados-de-la-gac-de-nuestro-pc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The George Clooney code</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/04/the-george-clooney-code/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/04/the-george-clooney-code/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 08:36:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=138</guid>
		<description><![CDATA[Sinceramente, sin estas 410 pastillas de Nespresso mi rendimiento caería bastante&#8230; Buenos días a todos,]]></description>
			<content:encoded><![CDATA[<p>Sinceramente, sin estas 410 pastillas de Nespresso mi rendimiento caería bastante&#8230; <img src='http://www.ingenieriadelcaos.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/04/2010-04-27-10.19.222.jpg"><img class="alignnone size-medium wp-image-141" title="2010-04-27 10.19.22" src="http://www.ingenieriadelcaos.com/wp-content/uploads/2010/04/2010-04-27-10.19.222-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Buenos días a todos,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/04/the-george-clooney-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Esencial si quieres trabajar con WMI</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/04/esencial-si-quieres-trabajar-con-wmi/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/04/esencial-si-quieres-trabajar-con-wmi/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 12:06:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=136</guid>
		<description><![CDATA[Es muy útil seguir el blog del equipo que lleva el desarrollo de una tecnología vital para administrar grandes infraestructuras de TI distribuidas. Podéis encontrarlos en esta URL: - Windows Management Infraestructure Blog Concretamente, en cuanto a problemas de rendimiento relacionados con el ejecutable wmiprvse.exe (el provider de WMI en el que se apoyan todas [...]]]></description>
			<content:encoded><![CDATA[<p>Es muy útil seguir el blog del equipo que lleva el desarrollo de una tecnología vital para <strong>administrar <strong>grandes </strong>infraestructuras de TI distribuidas</strong>. Podéis encontrarlos en esta URL:</p>
<p>- <a href="http://blogs.msdn.com/wmi/default.aspx" target="_blank">Windows Management Infraestructure Blog</a></p>
<p>Concretamente, en cuanto a problemas de rendimiento relacionados con el ejecutable <strong>wmiprvse.exe</strong> (el provider de WMI en el que se apoyan todas las herramientas que lo necesiten), podéis averiguar como obtener las trazas aquí:</p>
<p>- <a href="http://blogs.msdn.com/wmi/archive/2009/05/27/is-wmiprvse-a-real-villain.aspx" target="_blank">Is WMI a real villain?</a></p>
<p>Espero que os sea de utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/04/esencial-si-quieres-trabajar-con-wmi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2010 disponible para suscriptores</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/04/visual-studio-2010-disponible-para-suscriptores/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/04/visual-studio-2010-disponible-para-suscriptores/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 11:58:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=130</guid>
		<description><![CDATA[Tal y como ya ha aparecido en el blog de Domitienda, o bien en el del Guille ya está disponible el Visual Studio 2010 para suscriptores de la MSDN. Aparte de las mejoras en el IDE (desarrollado en WPF), lo más significativo es la integración total con el Framework 4.0. No creo que pase mucho [...]]]></description>
			<content:encoded><![CDATA[<p>Tal y como ya ha aparecido en el <a href="http://blog.domitienda.com/" target="_blank">blog de Domitienda</a>, o bien en el del <a href="http://www.elguillemola.com/index.php/2010/04/descarga-el-visual-studio-2010-express-es-gratis/" target="_blank">Guille</a> ya está disponible el Visual Studio 2010 para suscriptores de la MSDN. Aparte de las mejoras en el IDE (desarrollado en WPF), lo más significativo es la integración total con el <a href="http://en.wikipedia.org/wiki/.NET_Framework" target="_blank">Framework 4.0</a>.</p>
<p>No creo que pase mucho tiempo hasta que en <a href="http://www.domitienda.com/" target="_blank">Domitienda </a>sea posible disponer de productos de hosting compartido en esta tecnología.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/04/visual-studio-2010-disponible-para-suscriptores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RadGrid, manejador AJAX y EnableEventValidation</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/03/radgrid-manejador-ajax-y-enableeventvalidation/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/03/radgrid-manejador-ajax-y-enableeventvalidation/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 19:48:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[RadGrid]]></category>
		<category><![CDATA[Telerik]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=119</guid>
		<description><![CDATA[Hoy me he encontrado, de nuevo, con otro comportamiento extraño del componente RadGrid, de Telerik. Al parecer el manejador AJAX que incorpora de manera nativa tiene algún problema con las últimas versiones de Firefox. Al reportar un cliente esta circunstancia, el primer intento (y fallido) fue desactivar ésta propiedad. Al fin y al cabo, el [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy me he encontrado, de nuevo, con otro comportamiento extraño del componente RadGrid, de Telerik. Al parecer el manejador AJAX que incorpora de manera nativa tiene algún problema con las últimas versiones de Firefox. Al reportar un cliente esta circunstancia, el primer intento (y fallido) fue desactivar ésta propiedad. Al fin y al cabo, el postback en este caso no era un problema tan grande.</p>
<p>Sin embargo, como no podía ser de otro modo, la cosa se complicó. Al pulsar sobre uno de los controles de servidor alojados en el componente se producía la conocida excepción:</p>
<p><em>Argumento de devolución o de devolución de llamadas no válido. La validación  de eventos se habilita usando &lt;pages enableEventValidation=&#8221;true&#8221;/&gt; en la  configuración o &lt;%@ Page EnableEventValidation=&#8221;true&#8221; %&gt; en una página.  Por motivos de seguridad, esta característica comprueba que los argumentos  pasados a eventos de devolución o de devolución de llamadas se origina desde el  control del servidor que inicialmente los procesó. Si los datos son válidos y  son los que se esperaba, utilice el método  ClientScriptManager.RegisterForEventValidation para registrar los datos de  devolución o de devolución de llamadas para su validación.</em></p>
<p>Como se puede consultar en la MSDN, de manera predefinida todos los controles registran los eventos que causan postbacks de manera que puedan ser validados, reduciendo de este modo la posibilidad de que se produzcan peticiones al servidor que puedan causar un comportamiento no contemplado. No obstante, aunque no se debe desactivar, lo hice para probar el comportamiento del formulario web. Todos los controles de tipo servidor (runat=server) no lanzaban su evento de manera correcta.</p>
<p>Después de buscar un poco en Google, encontré la solución en el foro de la empresa:</p>
<p><em><a href="http://www.telerik.com/community/forums/aspnet/ajax/invalid-postback-callback-argument.aspx">http://www.telerik.com/community/forums/aspnet/ajax/invalid-postback-callback-argument.aspx</a></em></p>
<p>El problema estaba en que había una porción de código fuera de la siguiente comprobación:</p>
<p><!-- code formatted by http://manoli.net/csharpformat/ --></p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">if</span> (!<span class="kwrd">this</span>.Page.IsPostBack())</pre>
<pre><span class="lnum">   2:  </span>{</pre>
<pre class="alt"><span class="lnum">   3:  </span>    <span class="kwrd">this</span>.Cargar();</pre>
<pre><span class="lnum">   4:  </span>}</pre>
<pre class="alt"><span class="lnum">   5:  </span></pre>
<pre><span class="lnum">   6:  </span><span class="kwrd">this</span>.CargarSiempre();</pre>
</div>
<p>Al parecer este código no protegido por la comprobación modificaba de algún modo la colección de controles que albergaba el RadGrid lo cual causaba que fallase la validación que se producía a posteriori. La solución en este caso ha resultado bastante sencilla y ha consistido en incluir todo el código dentro del If. De hecho, el motivo de que estuviera fuera era que se procesara en todas las peticiones a la web, también en las que se realizan mediante AJAX.</p>
<p>Espero que os sirva de ayuda.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/03/radgrid-manejador-ajax-y-enableeventvalidation/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Forbes, How to hack the sky (Leonardo Nve)</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/03/forbes-how-to-hack-the-sky-leonardo-nve/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/03/forbes-how-to-hack-the-sky-leonardo-nve/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 06:30:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[DVB]]></category>
		<category><![CDATA[Satélites]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=116</guid>
		<description><![CDATA[El día 24 de Marzo se celebra el Asegur@IT 7 en la ciudad de Barcelona, evento organizado por Informatica 64. Es llamativa la charla de Leo Nve y Christian Martorella sobre hacking en entornos de comunicaciones basados en satélites. Ha salido publicado en Forbes: - http://www.forbes.com/2010/02/02/hackers-cybercrime-cryptography-technology-security-satellite.html Buscando en internet se puede encontrar más material.]]></description>
			<content:encoded><![CDATA[<p>El día 24 de Marzo se celebra el <a href="http://www.informatica64.com/asegurait7/" target="_blank">Asegur@IT 7</a> en la ciudad de Barcelona, evento organizado por <a href="http://www.informatica64.com" target="_blank">Informatica 64</a>. Es llamativa la charla de Leo Nve y Christian Martorella sobre hacking en entornos de comunicaciones basados en satélites. Ha salido publicado en Forbes:</p>
<p>- <a href="http://www.forbes.com/2010/02/02/hackers-cybercrime-cryptography-technology-security-satellite.html" target="_blank">http://www.forbes.com/2010/02/02/hackers-cybercrime-cryptography-technology-security-satellite.html</a></p>
<p><a href="http://www.esiea-recherche.eu/Slides09/slides_iAWACS09_Egea_Playing-Satellite.pdf" target="_blank">Buscando en internet</a> se puede encontrar más material.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/03/forbes-how-to-hack-the-sky-leonardo-nve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El poder la excepcion</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/01/el-poder-la-excepcion/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/01/el-poder-la-excepcion/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 23:37:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=109</guid>
		<description><![CDATA[En cualquier curso de algoritmia o programación, bien en las universidades o en otro tipo de estudios se introduce la excepción como mecanismo básico de comunicación de errores en un entorno orientado a objetos. Sin embargo, quizá no sé explique o no se entienda por parte de los alumnos las implicaciones de usarlas correctamente en contraposición [...]]]></description>
			<content:encoded><![CDATA[<p>En cualquier curso de algoritmia o programación, bien en las universidades o en otro tipo de estudios se introduce la <strong>excepción </strong>como<strong> mecanismo básico de comunicación de errores en un entorno orientado a objetos</strong>. Sin embargo, quizá no sé explique o no se entienda por parte de los alumnos las implicaciones de usarlas correctamente en contraposición a otros métodos como la devolución de códigos de error.</p>
<p>Hay una serie de consecuencias importantes que podríamos resumir en:</p>
<ul>
<li><strong>Unifican el método de comunicación de error</strong>. Deben ser utilizadas para comunicar errores en cualquier situación donde sea conveniente y no deben ser mezcladas con otro tipo de métodos, como los citados códigos de error. <strong>Un método de comunicación de errores siempre es mucho mejor que dos.</strong></li>
</ul>
<ul>
<li><strong>Permiten controlar el error lejos del punto de fallo<span style="font-weight: normal;">.  Utilizando códigos de error este control siempre está cerca del fallo lo que aumenta las posibilidades de elección. La excepción puede ir &#8220;subiendo&#8221; en la pila de llamadas.</span></strong></li>
</ul>
<ul>
<li><strong>El código se torna más robusto, el tratamiento de errores puede centralizarse o dividirse según decida el programador</strong>. Comunicar errores con códigos de error obliga, evidentemente, a utilizar sentencias condiciones (IF) para comprobar el éxito o fallo de la llamada. Además de aumentar la complejidad del código obliga a tratar el problema ahí mientras que con las excepciones podemos agrupar el tratamiento en el &#8220;<em>catch</em>&#8221; o en una parte superior de la pila de llamadas.</li>
</ul>
<ul>
<li><strong>Los códigos de error pueden ser ignorados con facilidad</strong>. Las excepciones sin embargo, rompen la ejecución normal del programa lo que hace imposible que sean ignoradas. Partiendo de que cuantos más errores sean detectados durante la fase de testing mejor será el código generado, queda claro que las excepciones facilitan esta detección.</li>
</ul>
<p>Vamos, visto lo visto, cada vez que salte una excepción alégrate. En tu próxima versión no saltará <img src='http://www.ingenieriadelcaos.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/01/el-poder-la-excepcion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La nueva Domitienda.com</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2010/01/la-nueva-domitienda-com/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2010/01/la-nueva-domitienda-com/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 16:54:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=105</guid>
		<description><![CDATA[Después de mucho tiempo de trabajo este lunes empezará a funcionar la nueva plataforma web de Domitienda.com. A nivel técnico comentar que se ha producido un cambio drástico en la arquitectura de todo el proceso de compra y facturación. En el blog podéis echar un vistazo a las funcionalidades que han acabado incluidas en la [...]]]></description>
			<content:encoded><![CDATA[<p>Después de mucho tiempo de trabajo este lunes empezará a funcionar la nueva plataforma web de <a title="Domitienda.com" href="http://www.domitienda.com">Domitienda.com</a>. A nivel técnico comentar que se ha producido un cambio drástico en la arquitectura de todo el proceso de compra y facturación. En el <a title="Blog Domitienda.com" href="http://blog.domitienda.com">blog </a>podéis echar un vistazo a las funcionalidades que han acabado incluidas en la versión del día 11/01/09.</p>
<p>Sería interesante una visita ya que los descuentos promocionales del lanzamiento no tienen desperdicio:</p>
<p><a title="Domitienda.com" href="http://www.domitienda.com">www.domitienda.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2010/01/la-nueva-domitienda-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error 404 al ejecutar paginas ASPX sobre IIS 6</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2009/12/error-404-al-ejecutar-paginas-aspx-sobre-iis-6/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2009/12/error-404-al-ejecutar-paginas-aspx-sobre-iis-6/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 22:01:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=96</guid>
		<description><![CDATA[Pese a ser un error bastante básico y que probablemente conozcáis, cuando se instalan sistemáticamente servidores con IIS es bastante posible que al aparecer este cause confusión y sorpresa. Buena señal supongo, estamos acostumbrados a hacer las cosas bien, o al menos como funcionan. El síntoma es claro, se produce un error 404 (página o [...]]]></description>
			<content:encoded><![CDATA[<p>Pese a ser un error bastante básico y que probablemente conozcáis, cuando se instalan sistemáticamente servidores con IIS es bastante posible que al aparecer este cause confusión y sorpresa. Buena señal supongo, estamos acostumbrados a hacer las cosas bien, o al menos como funcionan.</p>
<p>El síntoma es claro, <strong>se produce un error 404</strong> (página o directorio no encontrado) a<strong>l intentar ejecutar alguna página programada bajo el framework de .NET </strong>(extensión ASPX). El servidor tiene correctamente instaladas las versiones 1.1, 2.0, 3.0 y 3.5 del framework y además el filtro isapi está correctamente configurado.</p>
<p>Este error se produce ya que por algún motivo <strong>se ha instalado previamente el framework al IIS</strong>. Por lo tanto, pese a estar correctamente instalados ambos, el primero no se registra en el segundo. La solución es muy fácil, se debe ejecutar el siguiente archivo con el parámetro descrito:</p>
<p>- C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i</p>
<p>De este modo el framework 2.0 aparecerá correctamente en &#8220;Extensiones de servicio web&#8221; dentro del &#8220;Administrador de Internet Information Services (IIS)&#8221;. El ejecutable no solo realiza este paso si no que además establece los permisos oportunos dentro de la carpeta de temporales de ASP.NET.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2009/12/error-404-al-ejecutar-paginas-aspx-sobre-iis-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando DataSets</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2009/06/usando-datasets/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2009/06/usando-datasets/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 12:22:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=100</guid>
		<description><![CDATA[Los Datasets forman parte de ADO.NET. Una librería de acceso a datos (no solo bases de datos relacionales) que se usa en el framework. Desde la versión 2.0 del framework tomaron si cabe más protagonismo debido al nuevo enfoque. Los Datasets se completaron con losTableAdapters. Clases concebidas para trabajar en conjunto y que exponen una serie de consultas [...]]]></description>
			<content:encoded><![CDATA[<p>Los <strong style="font-weight: bold;">Datasets </strong>forman parte de <strong style="font-weight: bold;">ADO.NET</strong>. Una librería de acceso a datos (no solo bases de datos relacionales) que se usa en el framework. Desde la versión 2.0 del framework tomaron si cabe más protagonismo debido al nuevo enfoque. Los <strong style="font-weight: bold;">Datasets </strong>se completaron con los<strong style="font-weight: bold;">TableAdapters</strong>. Clases concebidas para trabajar en conjunto y que exponen una serie de consultas de casi cualquier tipo que pueden ser diseñadas de manera muy cómoda a través del Visual Studio.</p>
<p>Los puntos fuertes son muchísimos, seguro que muchos fuera de mi conocimiento por falta de uso. Nos limitamos a utilizarlos a través de un Access o SQL Server pero van más allá. Queda ya para la historia su capacidad de integrar mediante un mismo modelo de programación el acceso a tantos tipos de datos distintos, además de permitirnos trabajar en nuestra aplicación directamente y de manera desconectada con nuestro origen de datos y siempre con <strong style="font-weight: bold;">variables debidamente tipadas</strong>. Esencial también y punto estrella para mí, el <strong style="font-weight: bold;">haber ofrecido de manera transparente y casi desconocida la parametrización de las consultas SQL</strong> evitando de esta manera infinidad de errores de <strong style="font-weight: bold;">Inyección SQL</strong> y comodidad extrema a la hora de pasar parámetros a la query (¿acaso alguien recuerda ya pasar una fecha al formato SQL correcto?).</p>
<p>Hago incapié en la seguridad y en la inyección SQL por la peligrosidad de este tipo de fallos de los que tan solo el programador se puede proteger (no hay política de seguridad que tu compañía de hosting te pueda ofrecer). Especialmente peligroso en motores potentes como SQL Server, Oracle, etc. que son capaces de ejecutar varios comandos en una misma sentencia simplemente separando por punto y coma. Un atacante hábil en una consulta mal parametrizada puede manipular la SQL completándola y añadiendo detrás la <em style="font-style: italic;">query </em>más dañina que se le ocurra. No os costará nada encontrar <a href="http://es.wikipedia.org/wiki/Inyección_SQL" target="_blank">muchísima literatura sobre el tema</a> y algunos <a href="http://news.softpedia.com/news/International-Herald-Tribune-SQL-Injection-104799.shtml" target="_blank">casos famosos</a>.</p>
<p>Por desgracia, todas estas ventajas no son gratis o baratas desde el punto de vista de la eficiencia. Los datasets son objetos complejos que no solo representan tablas si no que además representan relaciones entre tablas. Esto que no deja de ser una ventaja en muchos escenarios supone que al realizar operaciones sobre el <strong style="font-weight: bold;">DataSet </strong>es necesario comprobar que las restricciones de integridad referencial se cumplen, con el coste computacional asociado.</p>
<p>He visto en muchos proyectos además, la manía de arrastrar tantas tablas como se pueda. En muchas ocasiones no hace más que provocar una caida de rendimiento en varios aspectos. En primer lugar en tiempo de ejecución. Un <strong style="font-weight: bold;">DataSet mal dimensionado es más lento al cargarse</strong>y además mucho más lento al operar con él. Además, en el trabajo del día a día del programador, manejar uno de estos a través del Visual Studio puede ser una odisea.</p>
<p>Desde un punto de vista <strong style="font-weight: bold;">transaccional</strong>, si no proponemos una estructura mejor cada operación con un <strong style="font-weight: bold;">TableAdapter </strong>inicializa una nueva conexión. Ello nos limita a la hora de utilizar transacciones, ya sea a nivel del motor de base de datos, o a un nivel superior utilizando clases como el <a href="http://msdn.microsoft.com/es-es/library/system.transactions.transactionscope(VS.80).aspx" target="_blank">TransactionScope </a>del framework. Sobra decir que cada vez cuesta más encontrar aplicaciones donde se pueda pasar sin entender una infinidad de operaciones de manera atómica y más en un entorno tan distribuido como el actual.</p>
<p>Para terminar, desde el punto de vista de la <strong style="font-weight: bold;">interoperabilidad</strong>. Probablemente te interese esta parte si te estás iniciando en WCF o tecnologías similares. El hecho de que un <strong style="font-weight: bold;">Dataset </strong>se serialice automáticamente como XML no quiere decir que todas las aplicaciones sean capaz de interpretarlo. De hecho, será dificil de ver si la aplicación consumidora del servicio no es .NET. El <em style="font-style: italic;">schema </em>del <strong style="font-weight: bold;">DataSet </strong>puede es complicado de procesar y en la mayoría de los casos tremendamente pesado en comparación con serializar una clase formada por tipos básicos o con una serialización personalizada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2009/06/usando-datasets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Principios de arquitectura de Ebay</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2009/06/principios-de-arquitectura-de-ebay/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2009/06/principios-de-arquitectura-de-ebay/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 23:56:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=76</guid>
		<description><![CDATA[Podeis ver el vídeo aquí: http://www.infoq.com/presentations/shoup-ebay-architectural-principles Siempre me ha atraido bastante la idea de la aplicación crítica en sectores como el bancario, asegurador, administración pública, etc. Esta exposición hará por lo tanto las delicias de aquellos interesados en conocer de primera mano la arquitectura de una verdadera 24&#215;7. Las cifras asustan: 248.000.000 usuarios registrados 1 [...]]]></description>
			<content:encoded><![CDATA[<p>Podeis ver el vídeo aquí:</p>
<p><a href="http://www.infoq.com/presentations/shoup-ebay-architectural-principles">http://www.infoq.com/presentations/shoup-ebay-architectural-principles</a></p>
<p>Siempre me ha atraido bastante la idea de la aplicación crítica en sectores como el bancario, asegurador, administración pública, etc. Esta exposición hará por lo tanto las delicias de aquellos interesados en conocer de primera mano la arquitectura de una verdadera 24&#215;7. Las cifras asustan:</p>
<ul>
<li>248.000.000 usuarios registrados</li>
<li>1 billón de fotografías</li>
<li>4,4 billones de llamadas al API</li>
<li>44 billones de sentencias SQL diarias</li>
</ul>
<p>Todo ello descansado sobre patrones que aplican de manera constante:</p>
<ul>
<li>Partition everything</li>
<li>Async everywhere</li>
<li>Automate everything</li>
<li>Remember everything fails</li>
</ul>
<p>Especialmente impactante el hincapié que se hace sobre la tolerancia a fallos. Supone asumir de manera constante que cualquier operación puede fallar o cualquier recurso puede estar no disponible y tomar todas las medidas para que el sistema reaccione de la manera más inteligente posible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2009/06/principios-de-arquitectura-de-ebay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Herramientas y tecnicas para identificar problemas relacionados con concurrencia</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2009/05/herramientas-y-tecnicas-para-identificar-problemas-relacionados-con-concurrencia/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2009/05/herramientas-y-tecnicas-para-identificar-problemas-relacionados-con-concurrencia/#comments</comments>
		<pubDate>Sun, 17 May 2009 16:30:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=70</guid>
		<description><![CDATA[Artículo muy interesante: http://msdn.microsoft.com/en-us/magazine/cc546569.aspx]]></description>
			<content:encoded><![CDATA[<p>Artículo muy interesante:</p>
<p><a href="http://msdn.microsoft.com/en-us/magazine/cc546569.aspx">http://msdn.microsoft.com/en-us/magazine/cc546569.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2009/05/herramientas-y-tecnicas-para-identificar-problemas-relacionados-con-concurrencia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escribiendo por deporte</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2009/05/escribiendo-por-deporte/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2009/05/escribiendo-por-deporte/#comments</comments>
		<pubDate>Sun, 03 May 2009 00:31:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=68</guid>
		<description><![CDATA[El gobierno español pasa de Linux en la educación &#8230; efectista cuanto menos. Textualmente, &#8220;un nuevo escándalo tecnológico en el seno de nuestro gobierno&#8220;.  Tanto la noticia de esta publicación como de HispaLinux está llena de &#8220;perlas&#8221; a cada cual más gorda:  &#8220;Si se considerara un precio (rebajado) de 60 Euros por cada sistema operativo y [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Permanent Link to El gobierno español pasa de Linux en la educación" rel="bookmark" href="http://www.muylinux.com/2009/05/01/el-gobierno-espanol-pasa-de-linux-en-la-educacion/">El gobierno español pasa de Linux en la educación</a> &#8230; efectista cuanto menos. Textualmente, &#8220;<em>un nuevo escándalo tecnológico en el seno de nuestro gobierno</em>&#8220;.  Tanto la noticia de esta publicación como de HispaLinux está llena de &#8220;perlas&#8221; a cada cual más gorda:</p>
<p> &#8220;<em>Si se considerara un precio (rebajado) de 60 Euros por cada sistema operativo y de otros 52 Euros por cada licencia de Microsoft Office para Estudiantes, estaríamos hablando de un dispendio anual y recurrente en el tiempo de prácticamente 100 millones de Euros</em>&#8220;.</p>
<p>Ese es el precio oficial, en efecto, de compra de licencia para un solo estudiante. ¿De verdad debemos suponer sin más información que es ese al precio que ha comprado el gobierno?. ¿Con qué información se hace esa afirmación?.</p>
<p>&#8220;<em>A lo anterior habría que sumar otros costes de licencias, como el antivirus, indispensable para ese sistema operativo (e innecesario para Linux)</em>&#8221;</p>
<p>Claro, ya que es el sistema operativo más seguro del mundo y sobre el cual no hay que establecer controles de seguridad. No es que esten mal informados, si no que faltan a la verdad. Hay divertidisimas estadísticas sobre el tanto porcentual de colaboradores de distribuciones concretas de Linux que tienen el nivel como para programar a niveles de abstracción cercanos al núcleo (un selecto grupo de ingenieros que cobra y muchísimo en empresas privadas) así como artículos sobre los distintos &#8220;toques&#8221; que se le ha dado a la industria del software libre para que siguiera las &#8220;buenas prácticas&#8221; que marca ahora mismo la ingeniería del software. Tareas relacionadas con la seguridad, como muchas otras. El hecho de que yo pueda ver el código no implica jamás que vaya a descubrir un bug.</p>
<p>&#8220;<em>Por último, hay que tener en cuenta los sobreesfuerzos de mantenimiento que requiere Windows y que tendrían que sufragar las comunidades autónomas</em>.&#8221;</p>
<p>De nuevo se falta a la verdad, y no es falta de información. De sobra es conocido que el software libre no es ni mucho menos gratuito y desde luego, los costes de mantenimiento de cualquier distribución requieren profesionales. Profesionales que por cierto, cobran igual que los que trabajan en entornos Windows. Que no es la primera vez que una administración pública (no española) da marcha atrás en un intento de implantación de Linux.</p>
<p>Así se pierde toda la razón y realmente es una lástima. Más que nada por que esgrimen argumentos que sí son realmente interesantes. Hay que preguntarse que dependencia tecnológica adquiere España al realizar una operación así o si es normal que en estos momentos de crisis no se saque esto a concurso. Pero desde luego, que Linux es más barato que Windows por el hecho de ser libre es como para reirse. Para bien o para mal, no es así.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2009/05/escribiendo-por-deporte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Utilizando una cuenta concreta de Windows para ejecutar un servicio</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2009/04/utilizando-una-cuenta-concreta-de-windows-para-ejecutar-un-servicio/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2009/04/utilizando-una-cuenta-concreta-de-windows-para-ejecutar-un-servicio/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 22:23:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=64</guid>
		<description><![CDATA[Es curioso hasta que punto te puede llevar a la locura un pequeño error de nomenclatura. Acabo de instalar con éxito un servicio de Windows que yo mismo he programado bajo C# (Framework 3.5). Por requerimientos concretos de este servicio en lugar de ejecutarse bajo el Local System Account (LSA) se debe ejecutar bajo una [...]]]></description>
			<content:encoded><![CDATA[<p>Es curioso hasta que punto te puede llevar a la locura un pequeño error de nomenclatura.</p>
<p>Acabo de instalar con éxito un servicio de Windows que yo mismo he programado bajo C# (Framework 3.5). Por requerimientos concretos de este servicio en lugar de ejecutarse bajo el Local System Account (LSA) se debe ejecutar bajo una cuenta concreta de usuario de Windows (normal y corriente).</p>
<p>Las ordenes para instalar desinstalar el servicio son:</p>
<p>- C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil &#8220;c:\miservicio.exe&#8221;</p>
<p>- C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil /u &#8220;c:\miservicio.exe&#8221;</p>
<p>En caso de que hayamos especificado en nuestro ServiceProcessInstaller la propiedad &#8220;Account&#8221; como &#8220;User&#8221; se nos preguntará en el momento de la instalación acerca del usuario que &#8220;prestará&#8221; credenciales al servicio. Muy bien, <strong>importante</strong>, en caso de estar especificando un usuario local se escribe del siguiente modo:</p>
<p><strong><em> &#8220;.\nombredeusuario&#8221;</em></strong></p>
<p>Sin las comillas, por supuesto. Espero que a alguien le sirva de ayuda.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2009/04/utilizando-una-cuenta-concreta-de-windows-para-ejecutar-un-servicio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Securizacion de SQL Server 2005</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2009/01/securizacion-de-sql-server-2005/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2009/01/securizacion-de-sql-server-2005/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 09:43:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=60</guid>
		<description><![CDATA[Interesante artículo: http://duartes.org/gustavo/articles/Lock-Down-SQL-Server-2005.aspx Extraido de: http://duartes.org/gustavo/blog/]]></description>
			<content:encoded><![CDATA[<p>Interesante artículo:</p>
<p><a href="http://duartes.org/gustavo/articles/Lock-Down-SQL-Server-2005.aspx">http://duartes.org/gustavo/articles/Lock-Down-SQL-Server-2005.aspx</a></p>
<p>Extraido de:</p>
<p><a href="http://duartes.org/gustavo/blog/">http://duartes.org/gustavo/blog/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2009/01/securizacion-de-sql-server-2005/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El servidor RPC no esta disponible</title>
		<link>http://www.ingenieriadelcaos.com/index.php/2008/12/el-servidor-rpc-no-esta-disponible/</link>
		<comments>http://www.ingenieriadelcaos.com/index.php/2008/12/el-servidor-rpc-no-esta-disponible/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 18:45:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Administración remota]]></category>
		<category><![CDATA[DCOM]]></category>
		<category><![CDATA[Windows 2003 Server]]></category>
		<category><![CDATA[WMI]]></category>

		<guid isPermaLink="false">http://www.ingenieriadelcaos.com/?p=48</guid>
		<description><![CDATA[Todo aquel que haya lidiado con DCOM o bien con WMI se habrá encontrado en alguna ocasión con algún problema de conectividad con una máquina remota. El problema es que los errores no son todo lo descriptivos que deberían, y es muy posible pasarse mucho tiempo buscando donde no hay nada. Esto no pretende ser [...]]]></description>
			<content:encoded><![CDATA[<p>Todo aquel que haya lidiado con <a href="http://es.wikipedia.org/wiki/Distributed_Component_Object_Model" target="_blank">DCOM </a>o bien con <a href="http://es.wikipedia.org/wiki/WMI" target="_blank">WMI </a>se habrá encontrado en alguna ocasión con algún problema de conectividad con una máquina remota. El problema es que los errores no son todo lo descriptivos que deberían, y es muy posible pasarse mucho tiempo buscando donde no hay nada. Esto no pretende ser una guía de conexión a máquinas remotas mediante DCOM (que es el mecanismo que subyace cuando atacamos también alguna clase WMI), pero quien sabe si le servirá de ayuda a alguien:</p>
<p>1) <strong>El firewall necesita una configuración</strong> especial para admitir accesos por los puertos que utilizan esta tecnología. Asegurate de que no te esté bloqueando nada la conexión.</p>
<p>2) <strong>Los errores no son siempre muy descriptivos</strong>. Asegurate de estar atacando a un ordenador existente y que esté en funcionamiento. Suena tonto, pero puedes perder mucho tiempo atacando una IP que no es y recibiendo un error de acceso denegado que te haga pensar en otros motivos.</p>
<p>3) <strong>Asegurate de que WMI está instalado</strong>. Ejecuta <strong><em>wbemtest </em></strong>para comprobarlo.</p>
<p>4) <strong>El usuario con el que accedes debería estar en el grupo de &#8220;Administradores&#8221;</strong> de la máquina objetivo. Asegurate por lo tanto de que tanto nombre, contraseña y privilegios están correctamente establecidos.</p>
<p>Mucho cuidado con los despistes, que pueden hacer perder mucho tiempo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ingenieriadelcaos.com/index.php/2008/12/el-servidor-rpc-no-esta-disponible/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
