<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>David Balogh</title>
	<atom:link href="http://daxip.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://daxip.wordpress.com</link>
	<description>Blog personal de David Balogh</description>
	<lastBuildDate>Thu, 17 Dec 2009 18:02:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='daxip.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>David Balogh</title>
		<link>http://daxip.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://daxip.wordpress.com/osd.xml" title="David Balogh" />
	<atom:link rel='hub' href='http://daxip.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Web Application Stress</title>
		<link>http://daxip.wordpress.com/2009/12/17/web-application-stress/</link>
		<comments>http://daxip.wordpress.com/2009/12/17/web-application-stress/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 05:12:59 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web application stress]]></category>

		<guid isPermaLink="false">http://daxip.wordpress.com/?p=42</guid>
		<description><![CDATA[Existen diversos casos en los cuales, una vez finalizada una aplicación web, debemos someterla a diferentes pruebas para poder analizar su estabilidad en dicho caso. Una de las pruebas mas importantes a realizar es la de stress, puesto que esto nos ayudara a comprender como se comportara nuestra aplicación web, cuando posea cierta cantidad de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=42&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Existen diversos casos en los cuales, una vez finalizada una aplicación web, debemos someterla a diferentes pruebas para poder analizar su estabilidad en dicho caso.</p>
<p>Una de las pruebas mas importantes a realizar es la de stress, puesto que esto nos ayudara a comprender como se comportara nuestra aplicación web, cuando posea cierta cantidad de usuarios concurrentes visitandola. Por otra parte, dicha prueba nos permitirá conocer si nuestra aplicación se encuentra preparada, en el caso que reciba un <a href="http://es.wikipedia.org/wiki/Ataques_de_denegaci%C3%B3n_de_servicio" target="_blank">ataque de tipo DOS (Denial Of Service)</a>, puesto que estos ataques son los mas comunes, y consisten en sobre cargar un web site con una gran cantidad de conexiones concurrentes.</p>
<p>Para realizar estas pruebas existen grandes cantidades de software, de los cuales voy a hacer referencia a uno antiguo, pero que me resulto muy util a la hora de utilizarlo, el nombre del programa es Microsoft Web Application Stress o también conocido como WAS.</p>
<p><a href="http://daxip.files.wordpress.com/2009/12/was_intro.jpg"></a><a href="http://daxip.files.wordpress.com/2009/12/was_intro.jpg"><img class="alignnone size-full wp-image-43" title="was_intro" src="http://daxip.files.wordpress.com/2009/12/was_intro.jpg?w=489&#038;h=357" border="0" alt="" width="489" height="357" /></a></p>
<p>Poseemos diversas maneras de configurar el software, la primera es la posibilidad de grabar una especie de macro para establecer un conjunto de acciones que deseamos que repita una cierta cantidad de veces,  o por otro lado simplemente introducir la url e indicarle que ingrese paralelamente las cantidades de veces que queremos testear.</p>
<p>Particularmente yo opto por la segunda opción, donde generalmente introduzco la url del website que deseo testear y tal vez alguna página interna como se muestra a continuación:</p>
<p><a href="http://daxip.files.wordpress.com/2009/12/was_script.jpg"><img class="alignnone size-full wp-image-45" title="was_script" src="http://daxip.files.wordpress.com/2009/12/was_script.jpg?w=489&#038;h=357" border="0" alt="" width="489" height="357" /></a></p>
<p>Por último solo resta configurar en la sección de &#8220;Settings&#8221; la cantidad de concurrent connections (en el ejemplo especifique 100) que deseamos testear y el tiempo (en mi caso durante 1 minuto) que durará nuestra prueba:</p>
<p><a href="http://daxip.files.wordpress.com/2009/12/was_settings.jpg"><img class="alignnone size-full wp-image-46" title="was_settings" src="http://daxip.files.wordpress.com/2009/12/was_settings.jpg?w=489&#038;h=357" border="0" alt="" width="489" height="357" /></a></p>
<p>Una vez finalizados los pasos anteriores estamos en condiciones de hacer clic en ejecutar, y nuestra prueba de stress se encontrará corriendo durante el tiempo que hemos indicado en la sección settings.</p>
<p>Es importante destacar que para comprobar la carga que esta recibiendo nuestra aplicación se pueden configurar diversos contadores en nuestro servidor de testing (herramientas de las cuales hablare en un futuro post) para poder visualizar las conexiones concurrentes que posee y como reacciona el hardware a medida que dichos contadores incrementan.</p>
<p>Para finalizar el post dejo el link para descargar el <a href="http://dbalogh.s3.amazonaws.com/was_setup.zip">Microsoft Web Application Stress</a> desde mi storage, puesto que es muy dificil conseguirlo.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=42&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2009/12/17/web-application-stress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>

		<media:content url="http://daxip.files.wordpress.com/2009/12/was_intro.jpg" medium="image">
			<media:title type="html">was_intro</media:title>
		</media:content>

		<media:content url="http://daxip.files.wordpress.com/2009/12/was_script.jpg" medium="image">
			<media:title type="html">was_script</media:title>
		</media:content>

		<media:content url="http://daxip.files.wordpress.com/2009/12/was_settings.jpg" medium="image">
			<media:title type="html">was_settings</media:title>
		</media:content>
	</item>
		<item>
		<title>Amazon EC2</title>
		<link>http://daxip.wordpress.com/2009/06/10/amazon-ec2/</link>
		<comments>http://daxip.wordpress.com/2009/06/10/amazon-ec2/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 04:07:27 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[Amazon web services]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Infraestructura]]></category>

		<guid isPermaLink="false">http://davidbalogh.com.ar/?p=38</guid>
		<description><![CDATA[Amazon Elastic Compute Cloud o más conocido como Amazon EC2 es un gran producto de Amazon web services que vengo utilizando hace mas de 6 meses. Se trata de un servicio que ofrece servidores virtuales dentro de un cloud, dicho servicio permite diseñar aplicaciones web escalables. Con tan solo registrarse en Amazon EC2 y completar los datos de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=38&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://aws.amazon.com/ec2/">Amazon Elastic Compute Cloud</a> o más conocido como <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://aws.amazon.com/ec2/">Amazon EC2</a> es un gran producto de <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://aws.amazon.com/">Amazon web services</a> que vengo utilizando hace mas de 6 meses. Se trata de un servicio que ofrece servidores virtuales dentro de un cloud, dicho servicio permite diseñar aplicaciones web escalables.</p>
<p>Con tan solo registrarse en <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://aws.amazon.com/ec2/">Amazon EC2</a> y completar los datos de tu tarjeta de crédito accederás a la posibilidad de obtener distintas caracteristicas de servidores, o instancias como ellos le llaman, como detallo a continuación:</p>
<p>Standard Instances (para la mayoría de las aplicaciones webs)</p>
<ul>
<li><strong>Small Instance (Default):</strong> 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of instance storage, 32-bit platform.</li>
<li><strong>Large Instance:</strong> 7.5 GB of memory, 4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each), 850 GB of instance storage, 64-bit platform.</li>
<li><strong>Extra Large Instance:</strong> 15 GB of memory, 8 EC2 Compute Units (4 virtual cores with 2 EC2 Compute Units each), 1690 GB of instance storage, 64-bit platform.</li>
</ul>
<p>High-CPU Instances (mayor capacidad de microprocesador que ram, utilizada para aplicaciones intensivas)</p>
<ul>
<li><strong>High-CPU Medium Instance:</strong> 1.7 GB of memory, 5 EC2 Compute Units (2 virtual cores with 2.5 EC2 Compute Units each), 350 GB of instance storage, 32-bit platform.</li>
<li><strong>High-CPU Extra Large Instance:</strong> 7 GB of memory, 20 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each), 1690 GB of instance storage, 64-bit platform.</li>
</ul>
<p>Pero sin duda lo que me resulto más interesante de éste servicio es la manera de cobrar que poseen, un verdadero cobro On-Demand. El servicio o mejor dicho cada servidor se cobra por hora total o parcial en el cual esta encendido, esto nos permite una gran flexibilidad a la hora de levantar nuevos servicios o de desechar servidores en caso de instalaciones de software fallidas.</p>
<p>Los precios de los servidores virtuales varían dependiendo la instancia elegida para levantar o lanzar como ellos le llaman. Los siguientes precios son de servidores windows (con su correspondiente licencia) y ubicados en Estados Unidos:</p>
<p>Standard Instances</p>
<ul>
<li>Small Instance (Default): u$s 0.125 por hora.</li>
<li>Large Instance: u$s 0.50 por hora.</li>
<li>Extra Large Instance: u$s 1.00 por hora.</li>
</ul>
<p>High-CPU Instances</p>
<ul>
<li>High-CPU Medium Instance: u$s 0.30 por hora.</li>
<li>High-CPU Extra Large Instance: u$s1.20 por hora.</li>
</ul>
<p>Y por último, Amazon se encarga de darnos ancho de banda On-Demand también, el cual posee el siguiente precio:</p>
<p>Data Transfer In</p>
<ul>
<li>All data transfer: u$s 0.10 per GB</li>
</ul>
<p>Data Transfer Out</p>
<ul>
<li>First 10 TB per Month $0.17 per GB</li>
<li>Next 40 TB per Month $0.13 per GB</li>
<li>Next 100TB per Month $0.11 per GB</li>
<li>Over 150 TB per Month $0.10 per GB</li>
</ul>
<p>Una vez que nos decidimos a probar este excelente servicio, luego del registro, tan solo tenemos que bajar un plugin que ellos han desarrollado para firefox, llamado <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609&amp;categoryID=88">Elasticfox</a> con el cual, luego de agregar nuestra cuenta de e-mail, y los diferentes <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&amp;action=access-key">indentificadores o keys</a> que nos solicita, podremos comenzar a levantar servidores y desde allí mismo nos dará un acceso directo para la conexión por escritorio remoto.</p>
<p>Actualmente me encuentro manejando un proyecto en el cual poseemos una infraestructura dentro de Amazon de más de 10 servidores, y nos resulto muy util y flexible para la administración de los mismos, así como también en casos de <a href="http://en.wikipedia.org/wiki/Disaster_recovery">disaster recovery</a>, puesto que hemos podido levantar nuevos servidores con la misma configuración en tiempos record desde 7 minutos.</p>
<p>Para finalizar el post solo me queda comentar que en tiempos de aplicaciones llamadas <a href="http://en.wikipedia.org/wiki/Software_as_a_service">software as a services</a> o aplicaciones webs que necesitan una gran flexibilidad a la hora de escalar, Amazon es la mejor solución sin ningún tipo de duda, y aún mas conociendo los tiempos que requiere solicitar en ocasiones un servidor a un data center, o los costos por tener un servidor desconectado.</p>
<p>Obviamente existen <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://aws.amazon.com/products/">muchos servicios</a> más que ofrece Amazon, e igual de importantes que el EC2, como son el de <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://aws.amazon.com/s3/">Storage</a>, <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://aws.amazon.com/elasticloadbalancing/">Load Balancing</a>, y otros, pero los mismos quedaran para futuros posts.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=38&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2009/06/10/amazon-ec2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>
	</item>
		<item>
		<title>Optimizaciones para SQL Server 2005</title>
		<link>http://daxip.wordpress.com/2008/10/25/optimizaciones-para-sql-server-2005/</link>
		<comments>http://daxip.wordpress.com/2008/10/25/optimizaciones-para-sql-server-2005/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 03:14:50 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[Microsoft .Net]]></category>
		<category><![CDATA[Sql Server 2005]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Optimizaciones]]></category>

		<guid isPermaLink="false">http://daxip.wordpress.com/?p=30</guid>
		<description><![CDATA[Para ciertos casos de uso es necesario trabajar bastante en optimizaciones para base de datos, puesto que ciertos sistemas pueden poseer un gran problema con el procesamiento en servidores, y el cpu puede llegar al 100%. Para resolver dicho problema, luego de varias consultas e investigaciones, logre conseguir 10 importantes items a tener en cuenta a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=30&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para ciertos casos de uso es necesario trabajar bastante en optimizaciones para base de datos, puesto que ciertos sistemas pueden poseer un gran problema con el procesamiento en servidores, y el cpu puede llegar al 100%.</p>
<p>Para resolver dicho problema, luego de varias consultas e investigaciones, logre conseguir 10 importantes items a tener en cuenta a la hora de pensar en el diseño de la base de datos, de un sistema que es accedido por miles y miles de usuarios al mismo tiempo.</p>
<p>Cabe resaltar que me encuentro hablando de un sistema totalmente dinamico, el cual por cada acceso necesita consultar si o si a nuestra base de datos, sin necesidad de poseer paginas estaticas. Los siguientes items no son los únicos, pero a mi entender son bastante importantes:</p>
<p><strong>1.- Sin Tablas Temporales</strong>: No se debe utilizar tablas temporales en stored procedures, las famosas #tmps nos hacen consumir bastantes recursos de memoria, en reemplazo de las mismas, se utilizan los data type table. Su uso es bastante similar, ej:</p>
<p>DECLARE @tmp TABLE(Id int, UserName varchar(128))<br />
INSERT INTO @tmp(Id, UserName)<br />
VALUES(1, &#8216;dave&#8217;)</p>
<p><strong>2.- FullText en varios discos</strong>: Para las búsquedas es muy común utilizar contains, los cuales buscan dentro de los FullText creados para ciertos campos de una tabla. Cuando se posee más de un FullText, es recomendable tener un disco para cada uno de ellos, puesto que los mismos ejercen mucha presión en el disco, de esta manera dividimos la presión separandola en discos distintos.</p>
<p><strong>3.- Sin Like&#8217;s</strong>: Es importante reemplazar todos nuestros queries en los cuales utilicemos el famoso &#8216;like&#8217;, ya que el mismo consume mucho procesamiento para ser ejecutado, en reemplazo, se puede utilizar el Contains.</p>
<p><strong>4.- LOCK de tablas</strong>: En cada consulta o SELECT las tablas necesitan ser lockeadas, para devolver ciertas información solicitada para los queries, esto es completamente innecesario el 99% de las ocasiones, y genera un problema muy grande en nuestra base, ya que al ser consultada por miles de transacciones, las mismas comienzan a dar time out. La solución es incluir la siguiente sitaxis luego de cada select que deseemos realizar:</p>
<p>SELECT Id, UserName FROM WebUser <strong>WITH (NOLOCK)</strong> WHERE <a href="mailto:Id=@ParamId">Id=@ParamId</a></p>
<p><strong>5.- Leer y Escribir</strong>: Para tener preparado el sistema para escalar de manera masiva, es importante tener en cuenta realizar dos diferentes conecciones a la base, una para leer información y otra para escribir en tablas. La velocidad es la misma, ya que las conecciones se ejecutan de manera paralela, y en un futuro (inmediato tal vez), se podra utilizar un servidor de sql para escribir y x servidores a los cuales se replicara, y estos seran a los que consultaremos la información desde los web servers.</p>
<p><strong>6.- Redundar información</strong>: En ciertas ocasiones se necesita realizar una acción que puede requerir varios recursos del sistema, es necesario analizar CUANDO es conveniente hacerla. Por ejemplo, saber cuantas relaciones hijas posee un detarminado registro, para éste caso analicemos cuantas veces se insertaran mas relaciones hijas o cuantas veces se consultaran la totalidad de las mismas. En la mayoria de los casos de uso, seguramente se encontraran con que las consultas son mas solicitadas que las escrituras, para ello se pueden hacer tablas de history, donde la información de los counts se pueda guardar, la misma puede ser guardada mendiante un trigger en la tabla que se desee contar, y de esta manera actualizar el history en cada insert, update o delete. Otra posibilidad es hacer correr un job cada x tiempo y que actualice la tabla history.<br />
Es posible tambien tener las tablas con todos los registros en otra base de datos, y que ésta se encargue de replicar la información en los servidores de consulta.</p>
<p><strong>7.- Evitar los Count(*)</strong>: Esta consulta muchas veces hace que nuestros queries posean mayor tiempo en su ejecución, una posibilidad de evitarlo, es realizando tablas donde guardemos los contadores, y actualicemos los campos con incrementos o decrementos en los registros. Reconozco que en ciertos casos, genera problemas utilizar éste metodo, es por ello, que debemos analizar muy bien, cuando es necesario utilizar los COUNT.</p>
<p><strong>8.- Index</strong>: Antes de realizar un indice, debemos analizar por cuales campos realizamos las consultas a ciertas tablas, una vez que obtuvimos dicha información, debemos generar diferentes indices en las tablas, en los cuales seleccionaremos los campos por los cuales realizamos los filtros en las consultas, o sea en nuestro WHERE.</p>
<p><strong>9.- IS NULL</strong>: Para realizar consultas sobre un null en un campo, no se debe realizar mendiante una igualdad, en cambio se debe realizar mediante un &#8220;IS&#8221;, como muestra el siguiente ejemplo:</p>
<p>SELECT Id, UserName FROM WebUser WITH (NOLOCK) WHERE Name <strong>IS NULL</strong></p>
<p><strong>10.- WARNING CON LOS LOWER</strong>: Otro gran error es realizarle un LOWER a un campo de una tabla, para realizar comparaciones mediante igualdades. Si desde el comienzo sabemos que ésta acción será necesaria en un futuro, entonces, deberiamos insertar los registros con minúsculas. A continuación un ejemplo <em>erroneo</em>:</p>
<p>SELECT Id, UserName FROM WebUser WHERE LOWER(Name)=LOWER(@ParamName)</p>
<p> </p>
<p>Si se cumplen los anteriores 10 items la presión sobre el servidor en el cual se encuentre la base de datos, será increiblemente menor.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=30&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2008/10/25/optimizaciones-para-sql-server-2005/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>
	</item>
		<item>
		<title>app_offline.htm</title>
		<link>http://daxip.wordpress.com/2008/08/23/app_offlinehtm/</link>
		<comments>http://daxip.wordpress.com/2008/08/23/app_offlinehtm/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 22:43:25 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[Mantenimiento]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[app_offline]]></category>

		<guid isPermaLink="false">http://daxip.wordpress.com/?p=27</guid>
		<description><![CDATA[Seguramente en muchas ocasiones se debe actualizar un web site, y se quiere evitar cualquier acceso al mismo, para que los usuarios no realicen acciones en medio de un update, o por otras razones, como por ejemplo cuando se cae algún servidor con el cual es necesario intereactuar. Cada vez que esto ocurre es un [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=27&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Seguramente en muchas ocasiones se debe actualizar un web site, y se quiere evitar cualquier acceso al mismo, para que los usuarios no realicen acciones en medio de un update, o por otras razones, como por ejemplo cuando se cae algún servidor con el cual es necesario intereactuar.</p>
<p>Cada vez que esto ocurre es un gran problema tener que poner la página de &#8220;Estamos realizando mantenimiento.&#8221; puesto que habria que levantar otro web site, y poner que cada uno de los errores apunte a la misma página.</p>
<p>Afortunadamente con .Net disponemos de la posibilidad de tan solo poner un archivo llamado &#8220;app_offline.htm&#8221; en el directorio raiz de nuestro web site, y cada vez que se realice una petición a alguna página interna, .Net detectará la existencia de éste archivo y mostrara su contenido, en cada solicitud que se realice.</p>
<p>Una vez finalizado el update o solucionado el problema, con solo eliminar dicho arhivo, ya volveremos a obtener las paginas que solicitemos.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/daxip.wordpress.com/27/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/daxip.wordpress.com/27/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=27&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2008/08/23/app_offlinehtm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>
	</item>
		<item>
		<title>XslTransform</title>
		<link>http://daxip.wordpress.com/2008/08/06/xsltransform/</link>
		<comments>http://daxip.wordpress.com/2008/08/06/xsltransform/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 03:14:59 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[Microsoft .Net]]></category>
		<category><![CDATA[Optimización]]></category>
		<category><![CDATA[StringBuilder]]></category>
		<category><![CDATA[XmlDataDocument]]></category>
		<category><![CDATA[Xsl]]></category>
		<category><![CDATA[XslCompiledTransform]]></category>
		<category><![CDATA[XslTransform]]></category>

		<guid isPermaLink="false">http://daxip.wordpress.com/?p=24</guid>
		<description><![CDATA[Esta clase es el camino que, a mi criterio, necesitan los desarrolladores .Net para hacer competetencia a PHP frente a la optimización y velocidad de WebSites. Muchas veces el tiempo de carga de una página se encuentra comprometido, por la cantidad de información que es necesaria joinear desde la base de datos. En éste post propongo una [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=24&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Esta clase es el camino que, a mi criterio, necesitan los desarrolladores .Net para hacer competetencia a PHP frente a la optimización y velocidad de WebSites.</p>
<p>Muchas veces el tiempo de carga de una página se encuentra comprometido, por la cantidad de información que es necesaria joinear desde la base de datos. En éste post propongo una nueva manera de traer y mostrar información, muy parecida a como actua php.</p>
<p>Solo es necesario obtener todos los registros a mostrar desde la base de datos mediante un DataAdapter y luego mediante un Fill, llenamos de DataTables un DataSet. De ésta manera, podremos obtener un XmlDataDocument y comenzar a utilizar la clase XslTransform.</p>
<p>Para realizar una transformación, solo se necesitan un XmlDataDocument y un archivo Xsl (recomendado en file system), y con ambos componentes obtendremos un html como resultado.</p>
<p style="text-align:center;"><img class="size-medium wp-image-25  aligncenter" src="http://daxip.files.wordpress.com/2008/08/xsltransform.gif?w=490" alt="" /></p>
<p>El return nos llega como tipo string y a éste mismo lo podremos situar en cualquier posición de nuestro aspx. A continuación un breve ejemplo de cómo realizar una trasformación:</p>
<p>   StringBuilder StringControl = new StringBuilder();<br />
   XslTransform XslTran = new XslTransform();<br />
   string XslPath = Server.MapPath(&#8220;Myfile.xsl&#8221;);<br />
   MyObject data = new MyObject();<br />
   data.Load();</p>
<p>   XslTran.Load(XslPath);<br />
   XslTran.Transform(data.XmlDataDocument, null,<br />
   new StringWriter(StringControl), null);</p>
<p>   ltContent.Text = StringControl.ToString(); //aquí llega cargado con el html</p>
<p>Para cerrar el post quiero comentar que ésta clase se encuentra obseleta en la versión 2.0 de .net, de todas maneras se puede seguir utilizando, pero en la nueva clase que se llama XslCompiledTransform encontre mas desventajas que en la clase XslTransform.</p>
<p>Y por último, quiero aclarar que dicha optimización es recomedable aplicar en escenarios de front end, o sea de consulta de datos, ya que en un back end, muchas veces es necesario aplicar capaz de seguridad para obtener la información.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/daxip.wordpress.com/24/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/daxip.wordpress.com/24/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=24&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2008/08/06/xsltransform/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>

		<media:content url="http://daxip.files.wordpress.com/2008/08/xsltransform.gif" medium="image" />
	</item>
		<item>
		<title>ISAPI Rewrite</title>
		<link>http://daxip.wordpress.com/2008/06/20/isapi-rewrite/</link>
		<comments>http://daxip.wordpress.com/2008/06/20/isapi-rewrite/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 02:49:37 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://daxip.wordpress.com/?p=17</guid>
		<description><![CDATA[Existe una funcionalidad en IIS bastante útil, y que sirve muchisimo para SEO, la misma se llama ISAPI Filters, y se utiliza para crear un rewrite de nuestras urls y que estas, en vez de ser carpetas, sean tomadas como parametros. Un ejemplo de rewrite es www.myspace.com/david, detras de ésta url seguramente se realiza un redireccionamiento interno a, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=17&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Existe una funcionalidad en IIS bastante útil, y que sirve muchisimo para SEO, la misma se llama ISAPI Filters, y se utiliza para crear un rewrite de nuestras urls y que estas, en vez de ser carpetas, sean tomadas como parametros. Un ejemplo de rewrite es <a href="http://www.myspace.com/david">www.myspace.com/david</a>, detras de ésta url seguramente se realiza un redireccionamiento interno a, por ejemplo:</p>
<p> www.myspace.com/User.aspx?UserName=david</p>
<p>El resultado proyectado a la visión del usuario será el mismo, pero lo que cambia es la facilidad de la url a la hora de recordarla.</p>
<p>Para poder integrar esta funcionalidad en un WebSite, primero hay que bajar el <a href="http://www.isapirewrite.com">módulo de rewrite</a> y saber algo de Regex, ya que todas las reglas que se crean allí, utilizan ésta sintaxis. Una vez bajada la dll y el ini, debemos configurar el WebSite, anteriormente creado, yendo a propiedades del mismo y a la solapa ISAPI Filters:</p>
<p style="text-align:center;"><img class="alignnone size-medium wp-image-18" src="http://daxip.files.wordpress.com/2008/06/rewrite.jpg?w=300&#038;h=291" alt="" width="300" height="291" /></p>
<p>Una vez allí, clic en el botón &#8220;Add&#8230;&#8221; y en la caja que aparece, se debe ingresar la ruta en la cual se encuentra la dll anteriormente descargada. Para finalizar, se debe stopear y startear nuevamente el Application Pool asiganado a ese WebSite.</p>
<p>Como último paso para lograr el rewrite que posee MySpace, debemos agregar las siguientes linea en el archivo mod_rewrite.ini:</p>
<p>RewriteRule (.*\.aspx$) /$1<br />
RewriteRule ^(\/\w+)$ /User.aspx?UserName=$1</p>
<p>La primer linea se utiliza para que en nuestro directorio raíz reconozca todos los archivos, cuya extensión es .aspx y no les haga un rewrite, y la segunda línea nos permite enviarle al archivo User.aspx, como parametro, lo que el navegante haya escrito luego del dominio y la barra (ojo que el parametro llega con la barra incluida).</p>
<p>Si tenemos carpetas dentro de nuestro site y no queremos que se reescriban, debemos agregar la siguiente línea en medio de las dos anteriores:</p>
<p>RewriteRule ^\/Images\/(.*) /Images/$1</p>
<p>En éste caso no redireccionará /Images a User.aspx, sino que seguira apuntando al mismo lugar, y asi podemos crear tantas excepciones como sean necesarias.</p>
<p>Es importante aclarar que cada vez que se realice un cambio al archivo mod_rewrite.ini, habra que reiniciar el application pool de ese website, para que las nuevas reglas sean cargadas.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/daxip.wordpress.com/17/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/daxip.wordpress.com/17/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=17&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2008/06/20/isapi-rewrite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>

		<media:content url="http://daxip.files.wordpress.com/2008/06/rewrite.jpg?w=300" medium="image" />
	</item>
		<item>
		<title>HttpWebRequest</title>
		<link>http://daxip.wordpress.com/2008/06/12/httpwebrequest/</link>
		<comments>http://daxip.wordpress.com/2008/06/12/httpwebrequest/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 02:25:41 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[Microsoft .Net]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[HttpWebRequest]]></category>
		<category><![CDATA[Xml]]></category>

		<guid isPermaLink="false">http://daxip.wordpress.com/?p=15</guid>
		<description><![CDATA[En ocasiones es necesario tener algún tipo de información sobre Htmls externos o consultar un Xml que es generado en otro server. Un caso particular puede ser un Rss que nos retorna una página. En el post anterior mencioné cómo hacer un lector de Rss de manera simple, con ésta clase se puede profundizar más [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=15&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En ocasiones es necesario tener algún tipo de información sobre Htmls externos o consultar un Xml que es generado en otro server. Un caso particular puede ser un Rss que nos retorna una página. En el post anterior mencioné cómo hacer un lector de Rss de manera simple, con ésta clase se puede profundizar más en detalle para conocer cómo actuan estas herramientas en .Net.</p>
<p>Para ello solo debemos agregar el using de System.Net y podremos acceder a la clase llamada HttpWebRequest, para realizar peticiones web desde nuestro servidor, a continuación expongo un método a modo de ejemplo:</p>
<p>private string GetData()<br />
{<br />
        HttpWebRequest request =<br />
        (HttpWebRequest)WebRequest.Create(&#8220;http://domain.com/file.xml&#8221;);</p>
<p>        request.MaximumAutomaticRedirections = 4;<br />
        request.MaximumResponseHeadersLength = 4;<br />
        request.Credentials = CredentialCache.DefaultCredentials;<br />
        HttpWebResponse response =<br />
        (HttpWebResponse)request.GetResponse();</p>
<p>        Stream receiveStream = response.GetResponseStream();<br />
        StreamReader readStream =<br />
        new StreamReader(receiveStream, Encoding.UTF8);</p>
<p>        string res = readStream.ReadToEnd();</p>
<p>        response.Close();<br />
        readStream.Close();<br />
        return res;</p>
<p>    }</p>
<p>Este método retorna un tipo de dato string donde viene cargado todo el html o xml que devuelve la consulta, es importante aclarar que si utilizamos una url que retorna un error (por ejemplo el 404, página no encontrada) ésta clase produce una exception que debremos cactchear.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/daxip.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/daxip.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=15&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2008/06/12/httpwebrequest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>
	</item>
		<item>
		<title>RSS Reader</title>
		<link>http://daxip.wordpress.com/2008/06/10/rss-reader/</link>
		<comments>http://daxip.wordpress.com/2008/06/10/rss-reader/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 18:47:44 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[Rss Reader]]></category>

		<guid isPermaLink="false">http://daxip.wordpress.com/?p=13</guid>
		<description><![CDATA[Muchas veces es necesario integrar un lector de rss automatico en algún sector de un WebSite. En esta oportunidad encontre una dll que puede ser muy util, por la simplicidad de integración que posee la misma. Con tan solo registrar la assembly RessToolKit de la siguiente manera: &#60;%@ Register Assembly=&#8221;RssToolkit&#8221; Namespace=&#8221;RssToolkit.Web.WebControls&#8221; TagPrefix=&#8221;rss&#8221; %&#62; Ya puedes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=13&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Muchas veces es necesario integrar un lector de rss automatico en algún sector de un WebSite. En esta oportunidad encontre una dll que puede ser muy util, por la simplicidad de integración que posee la misma.</p>
<p>Con tan solo registrar la assembly RessToolKit de la siguiente manera:</p>
<p>&lt;%@ Register Assembly=&#8221;RssToolkit&#8221;<br />
Namespace=&#8221;RssToolkit.Web.WebControls&#8221; TagPrefix=&#8221;rss&#8221; %&gt;</p>
<p>Ya puedes comenzar a integrar un nuevo tag en el código de la página. Este webcontrol recibe como parametro un int llamado MaxItems, en el cual decides la cantidad de items a mostrar (si escribes 0 tomara todos) y otro parametro de tipo string llamado Url, donde se debe especificar el Uri del xml.</p>
<p>Por último debemos integrar un DataList donde el DataSourceID será el ID de nuestro webcontrol creado anteriormente, y con un simple Eval escribiremos el nombre del nodo que queremos llamar, como muestra el siguiente ejemplo:</p>
<p>&lt;rss:rssdatasource id=&#8221;RssDataSource2&#8243; runat=&#8221;server&#8221; maxitems=&#8221;3&#8243; Url=&#8221;<a href="http://www.clarin.com/diario/hoy/um/sumariorss.xml">http://www.clarin.com/diario/hoy/um/sumariorss.xml</a>&#8220;&gt;<br />
&lt;/rss:rssdatasource&gt;<br />
&lt;asp:DataList ID=&#8221;BlogList2&#8243; runat=&#8221;server&#8221; DataSourceID=&#8221;RssDataSource2&#8243;&gt;<br />
   &lt;ItemTemplate&gt;<br />
      &lt;asp:Panel ID=&#8221;panelHeader&#8221; runat=&#8221;server&#8221;<br />
       Style=&#8221;width:400px; display: block; font-weight: bold;&#8221;&gt;<br />
         &lt;%# Eval(&#8220;title&#8221;) %&gt;<br />
      &lt;/asp:Panel&gt;<br />
      &lt;asp:Panel ID=&#8221;Panel1&#8243; runat=&#8221;server&#8221;<br />
      Style=&#8221;margin-top: 3px; width:400px;margin-bottom:10px; &#8220;&gt;<br />
         &lt;%# Eval(&#8220;description&#8221;) %&gt;<br />
         &lt;asp:HyperLink ID=&#8221;hlMore&#8221; runat=&#8221;server&#8221;<br />
         NavigateUrl=&#8217;&lt;%# Eval(&#8220;link&#8221;) %&gt;&#8217; Target=&#8221;_blank&#8221;<br />
         Text=&#8221;leer más&#8221;&gt;&lt;/asp:HyperLink&gt;<br />
      &lt;/asp:Panel&gt;<br />
   &lt;/ItemTemplate&gt;<br />
&lt;/asp:DataList&gt;</p>
<p>Para bajarte ésta dll lo puedes hacer desde <a href="http://www.codeplex.com/">CodePlex</a> haciendo <a href="http://www.codeplex.com/ASPNETRSSToolkit/Release/ProjectReleases.aspx?ReleaseId=3674">clic aquí</a> donde también encontraran el código fuente.</p>
<p> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/daxip.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/daxip.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=13&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2008/06/10/rss-reader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>
	</item>
		<item>
		<title>Publicar fotos desde celular en un WebSite</title>
		<link>http://daxip.wordpress.com/2008/06/06/publicar-fotos-desde-celular-en-tu-web/</link>
		<comments>http://daxip.wordpress.com/2008/06/06/publicar-fotos-desde-celular-en-tu-web/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 21:46:55 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[Microsoft .Net]]></category>

		<guid isPermaLink="false">http://daxip.wordpress.com/?p=4</guid>
		<description><![CDATA[La publicación se basará en el envío de fotos tomadas desde un celular (o cualquier otro dispositivo capaz de enviar imagenes mediante correo electronico) a una dirección de e-mail, la cual debera ser username-password@sudominio.com de esta manera solo el usuario owner accedera a la posibilidad de publicar contenido, en el espacio que se le asigna dentro del [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=4&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>La publicación se basará en el envío de fotos tomadas desde un celular (o cualquier otro dispositivo capaz de enviar imagenes mediante correo electronico) a una dirección de e-mail, la cual debera ser <em>username-password@sudominio.com</em> de esta manera solo el usuario owner accedera a la posibilidad de publicar contenido, en el espacio que se le asigna dentro del website.</p>
<p style="text-align:center;"><img src="http://daxip.files.wordpress.com/2008/06/publicacion2.jpg?w=450&#038;h=420" alt="" width="450" height="420" /></p>
<p>El primer paso, para no tener que integrar un servidor de e-mails dedicado, necesitamos registrar nuestro dominio en <a href="http://www.google.com/a/">google apps</a> y solo crear un e-mail, el cual sera el administrador, ya que vamos a necesitar apuntar el <em>*@sudominio.com</em> al único e-mail verdaderamente existente. De ésta manera solo vamos a tener que chequear una dirección de e-mail y no tantas, como usuarios tenga el sistema.</p>
<p>El segundo paso es desarrollar una herramienta que nos chequee mediante pop3, si tenemos e-mails nuevos dentro de la cuenta en la cual recibe todos los correos. Para ello podemos utilizar varias existentes en el mercado, yo particularmente tuve muy buena experiencia con una llamada <a href="http://www.freedownloadscenter.com/Email_Tools/Misc__Mail_Tools/Mail_dll.html">Mail.dll</a> que es bastante simple de implementar. Una vez que obtenemos el attach de cada e-mail nuevo (siempre realizando todas las validaciones correspondientes de formato, peso, etc) lo que sigue es guardar éste adjunto en una carpeta temporal donde el nombre del archivo tendrá el siguiente formato:<br />
<strong>{UserName}-{Password}@[{EmailId}][{AttachId}].jpg<br />
</strong>De esta menera vamos a evitar cualquier tipo de repetición, porque hay que recordar que todos los archivos se guardarán en la misma carpeta temporal.</p>
<p>El tercer paso es el mas importante de todos, ya que tenemos que desarrollar otro proceso que chequee constantemente la carpeta temporal, preguntado si existen archivos para procesar o no. Para esto vamos a tomar los datos guardados en el filename, antes del arroba y realizamos un split con el &#8216;-&#8217; para obtener UserName y Password separados. La idea es tener un stored procedure preparado para recibir estos dos datos y si la validación resulta OK ya guardar toda la info de esta foto y retornar la ruta en la cual sera publicada. En ocasiones ésta ruta necesita ser encriptada por algún algoritmo (en otro post publicaré como desarrollar un algoritmo para file system) es por ello que el stored retornará un output con la ruta en la cual el proceso debe guardar la foto. En caso que la validación de UserName y Password resulten false solo tendremos que eliminar el archivo de la carpeta temporal.</p>
<p>Con estos tres pasos tenemos un sistema de publicación de fotos en web ya analizado y testeado, es importante tener en cuenta aplicar constantes configurables para tiempos de espera, entre cada requests al pop3 y, para la búsqueda de nuevos archivos dentro de la carpeta temporal, asi como también el limite máximo de peso de una foto, ya que esto implicara un delay en la descarga sincronica.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/daxip.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/daxip.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=4&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2008/06/06/publicar-fotos-desde-celular-en-tu-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>

		<media:content url="http://daxip.files.wordpress.com/2008/06/publicacion2.jpg" medium="image" />
	</item>
		<item>
		<title>{PrimerPost}</title>
		<link>http://daxip.wordpress.com/2008/05/28/primerpost/</link>
		<comments>http://daxip.wordpress.com/2008/05/28/primerpost/#comments</comments>
		<pubDate>Wed, 28 May 2008 01:28:52 +0000</pubDate>
		<dc:creator>David Balogh</dc:creator>
				<category><![CDATA[Publicación]]></category>

		<guid isPermaLink="false">http://daxip.wordpress.com/?p=3</guid>
		<description><![CDATA[Comenzando con esta aventura que se me ocurrió hace un par de semanas, al fin me sente en el desk y terminé de configurar mi blog. A decir verdad WordPress tiene un gran problema si levanta el administrador en español, me costo mucho configurar mi dominio y finalmente me di cuenta que tenia que terminar [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=3&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Comenzando con esta aventura que se me ocurrió hace un par de semanas, al fin me sente en el desk y terminé de configurar mi blog.</p>
<p>A decir verdad WordPress tiene un gran problema si levanta el administrador en español, me costo mucho configurar mi dominio y finalmente me di cuenta que tenia que terminar pagando USD10 para poder utilizar uno propio. Pero no basto con apuntar los 3 DNS y pagar en PayPal (también tuve que registrar un usuario, con lo que odio hacer eso&#8230;) sino que luego de todo esto, el admin no me reconocia los 10 créditos que había comprado&#8230; un desastre total, tuve que cambiar el idioma de mi panel de control a ingles para poder agregar mi dominio, muy mal wordpress team.</p>
<p>Pero bueno, en el final del día pude levantar mi blog:</p>
<p><a href="http://www.davidbalogh.com.ar">www.davidbalogh.com.ar</a></p>
<p>En este espacio en la web voy a publicar todas mis investigaciones e ideas en las cuales me encuentro trabajando. Todos mis post van a tratar sobre tecnología y sintaxis de programación, donde la mayoria de las veces hablare de Microsoft .Net.</p>
<p>El objetivo es dejar publicado de manera abierta toda la documentación que pueda llegar a generar.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/daxip.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/daxip.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/daxip.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/daxip.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/daxip.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/daxip.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/daxip.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/daxip.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/daxip.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/daxip.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/daxip.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/daxip.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/daxip.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/daxip.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/daxip.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/daxip.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=daxip.wordpress.com&amp;blog=2840758&amp;post=3&amp;subd=daxip&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://daxip.wordpress.com/2008/05/28/primerpost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d33a29e0fd2fb417babdbe198e19ef4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidbalogh</media:title>
		</media:content>
	</item>
	</channel>
</rss>
