<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Cero entre cero</title>
	<link>http://ceroentrecero.com</link>
	<description>Por definicion... indefinido</description>
	<pubDate>Wed, 25 Feb 2009 01:16:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>
	<language>en</language>
			<item>
		<title>Typed DataSets y como asignar una propiedad a Null</title>
		<link>http://ceroentrecero.com/typed-datasets-y-como-asignar-una-propiedad-a-null/</link>
		<comments>http://ceroentrecero.com/typed-datasets-y-como-asignar-una-propiedad-a-null/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 01:16:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/typed-datasets-y-como-asignar-una-propiedad-a-null/</guid>
		<description><![CDATA[Los Typed Datasets son una herramienta muy util en .net. Nos permite tener DataTables, DataAdapter y DataRows con propiedades especificas a nuestro modelo de base de datos. Asi, podemos acceder a un registro, digamos asi:
EstudiantesDataRow fila= new estudiantes.NewGapsRow();
fila.Nombre = &#8220;Nombre&#8221;;
El problema es meter el valor null a un campo que lo admite, pues esto:
 fila.Nombre = [...]]]></description>
			<content:encoded><![CDATA[<p>Los <em>Typed Datasets</em> son una herramienta muy util en .net. Nos permite tener DataTables, DataAdapter y DataRows con propiedades especificas a nuestro modelo de base de datos. Asi, podemos acceder a un registro, digamos asi:</p>
<blockquote><p>EstudiantesDataRow fila= new estudiantes.NewGapsRow();</p>
<p>fila.Nombre = &#8220;Nombre&#8221;;</p></blockquote>
<p>El problema es meter el valor null a un campo que lo admite, pues esto:</p>
<blockquote><p> fila.Nombre = DBNull.value;</p></blockquote>
<p>Nos daria este mensaje de error:</p>
<blockquote><p><font><font size="2" face="Courier New">Cannot implicitly convert type &#8216;System.DBNull&#8217; to &#8216;String&#8217;</font></font></p></blockquote>
<p>Y para resolver este problema, simplemente tendremos que hacer uso del metodo &#8220;setXXXNull()&#8221; que nos crea el typed DataSet. OJO: Esto solo funciona para valores que permiten null en la base de datos.</p>
<blockquote><p>fila.SetNombreNull();</p></blockquote>
<p> <img src='http://ceroentrecero.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ∞</p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/typed-datasets-y-como-asignar-una-propiedad-a-null/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Aguas con el encoding al leer un archivo.</title>
		<link>http://ceroentrecero.com/aguas-con-el-encoding-al-leer-un-archivo/</link>
		<comments>http://ceroentrecero.com/aguas-con-el-encoding-al-leer-un-archivo/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 23:34:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/aguas-con-el-encoding-al-leer-un-archivo/</guid>
		<description><![CDATA[Leer archivos de texto linea por linea es muy muy sencillo con .Net, con el viejo metodo ReadLine del StreamReader:
System.IO.StreamReader file = new System.IO.StreamReader(ruta);
linea = file.ReadLine()
Sin embargo, el dia de hoy me salio un problema con este método, pues tenia un archivo con el caracter à, que es escencialmente diferente del caracter á por el [...]]]></description>
			<content:encoded><![CDATA[<p>Leer archivos de texto linea por linea es muy muy sencillo con .Net, con el viejo metodo ReadLine del StreamReader:</p>
<blockquote><p>System.IO.StreamReader file = new System.IO.StreamReader(ruta);<br />
linea = file.ReadLine()</p></blockquote>
<p>Sin embargo, el dia de hoy me salio un problema con este método, pues tenia un archivo con el caracter à, que es escencialmente diferente del caracter á por el acento invertido. Resulto que el ReadLine me estaba truncando este caracter. Despues de un ratito de quebradero de cabeza, la solucion fue indicarle el encoding al StreamReader a la hora de abrir el archivo:</p>
<blockquote><p>System.IO.StreamReader file = new System.IO.StreamReader(ruta,System.Text.Encoding.Default);</p></blockquote>
<p>Definitivamente esta es una saludable práctica que incluiré a partir de hoy en mis desarrollos.∞</p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/aguas-con-el-encoding-al-leer-un-archivo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Usando Google Chart Api para graficas en ASP.Net</title>
		<link>http://ceroentrecero.com/usando-google-chart-api-para-graficas-en-aspnet/</link>
		<comments>http://ceroentrecero.com/usando-google-chart-api-para-graficas-en-aspnet/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 20:38:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/usando-google-chart-api-para-graficas-en-aspnet/</guid>
		<description><![CDATA[Si son desarrolladores, seguramente han escuchado hablar de la API de Google Chart, que es basicamente una herramienta que Google nos regala como parte de su plan global para dominar al mundo, y que sirve para hacer graficas a partir de una URL con un formato especifico. Lo que basicamente significa es que esto:
http://chart.apis.google.com/chart?chl=A&#124;B&#124;C&#124;E&#38;chd=e:APAjAyBQ&#38;chco=0000FF&#38;cht=p3
Se puede [...]]]></description>
			<content:encoded><![CDATA[<p>Si son desarrolladores, seguramente han escuchado hablar de la <a href="http://code.google.com/apis/chart/">API de Google Chart</a>, que es basicamente una herramienta que Google nos regala como parte de su plan global para dominar al mundo, y que sirve para hacer graficas a partir de una URL con un formato especifico. Lo que basicamente significa es que esto:</p>
<p align="center">http://chart.apis.google.com/chart?chl=A|B|C|E&amp;chd=e:APAjAyBQ&amp;chco=0000FF&amp;cht=p3</p>
<p>Se puede ver como esto en nuestro sitio Web:</p>
<p style="text-align: center"><img src="http://chart.apis.google.com/chart?chl=A|B|C|E&amp;chd=e:APAjAyBQ&amp;chco=0000FF&amp;cht=p3&amp;chs=400x150" /></p>
<p>Es en realidad muy sencillo de usar, siempre y cuando podamos formatear correctamente los datos que querramos visualizar. Pero como normalmente no es necesario inventar la rueda, pues me di a la tarea de encontrar algun componente que me ayudara con esto. Asi que me encontre una pieza de codigo Llamada <a href="http://code.google.com/p/ngchart/">NGChart</a>, que es basicamente una libreria que elegantemente implementa cada grafica como clase, y haciendo uso del metodo ToString() nos regresa la direccion de la grafica que queremos usar. Basicamente importando la libreria y escribiendo un codigo como el siguiente:</p>
<blockquote><p> ChartData datosGrafica = new ChartData(datosInt);<br />
PieChartLabels etiquetas = new PieChartLabels(TxtEtiquetas.Text.Split(&#8217;,'));<br />
PieChart grafica = new PieChart(tipoGrafica, tamañoGrafica, datosGrafica, etiquetas);<br />
grafica.Colors = new ChartColors(System.Drawing.Color.Blue);<br />
Image1.ImageUrl = grafica.ToString();</p></blockquote>
<p>Tendremos una bonita grafica en nuestra página de .Net.</p>
<p>Ahora mi problema es hacer que esto funcione como un web service (para que pueda interactuar con una aplicación en JSP), pero ademas, que pueda surtir las graficas a una red interna que esta detras de un proxy que no nos deja salir a Google. Es mi siguiente reto, y ya les platicare de el (si lo logro). en la siguiente entrega. ∞</p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/usando-google-chart-api-para-graficas-en-aspnet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lidiando con errores de validación al renderear un control a HTML (reportes por Mail III)</title>
		<link>http://ceroentrecero.com/lidiando-con-errores-de-validacion-al-renderear-un-control-a-html-reportes-por-mail-iii/</link>
		<comments>http://ceroentrecero.com/lidiando-con-errores-de-validacion-al-renderear-un-control-a-html-reportes-por-mail-iii/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 17:23:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/lidiando-con-errores-de-validacion-al-renderear-un-control-a-html-reportes-por-mail-iii/</guid>
		<description><![CDATA[En el post anterior vimos lo facil que es hacer uso del Control.RenderControl() para exportar nuestras paginas a un formato HTML. Sin embargo, este metodo nos va a generar errores dependiendo del uso creativo que estemos empleando.
El primero es un error que ocurrirá al intentar hacer uso del metodo que ya vimos:
RegisterForEventValidation can only be [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://ceroentrecero.com/exportando-datos-a-excel-o-a-html-reportes-por-mail-ii/">el post anterior</a> vimos lo facil que es hacer uso del <em><strong>Control.RenderControl()</strong></em> para exportar nuestras paginas a un formato HTML. Sin embargo, este metodo nos va a generar errores dependiendo del uso creativo que estemos empleando.</p>
<p>El primero es un error que ocurrirá al intentar hacer uso del metodo que ya vimos:</p>
<blockquote><p><em>RegisterForEventValidation can only be called during Render</em>()</p></blockquote>
<p>Al parecer el problema es que estamos rendereando un control &#8220;fuera de tiempo&#8221; para ASP.Net. Para omitir este problema habra que deshabilitar la validación de los controles para esta pagina, poniendo en el encabezado la siguiente directiva:</p>
<blockquote><p>&lt;%@ Page Language=&#8221;C#&#8221; AutoEventWireup=&#8221;true&#8221; <strong>enableEventValidation =&#8221;false&#8221;</strong>&#8230;.</p></blockquote>
<p>Desconozco los efectos secundarios que puede tener deshabilitar la validación de eventos para la pagina, asi que recomiendo usarlo con cuidado, y en todo caso, tratar de aislar en la medida de lo posible el control a exportar.</p>
<p>El segundo problema viene al tratar de exportar mas de un control. Ya encarrerados, ¿por que no meter varios controles, digamos en un <em>asp:Panel </em>y al final renderear este ultimo?</p>
<p>Bueno, pues eso es precisamente lo que estaba intentado cuando me tope con este problema:</p>
<blockquote><p><em><span id="Layout_ctl07_repeaterMessages_ctl00_lblMessageText" class="threadMessageBody">The control must be placed inside a form tag with runat=server</span></em></p></blockquote>
<p>Al parecer, a ASP.Net no le gusta que rendereemos controles fuera de una forma. Y de esto se encarga un metodo de las formas llamado <em><code><strong>VerifyRenderingInServerForm.</strong></code></em></p>
<p>La forma recomendada es simplemente sobreescribir este metodo. La forma mas sencilla y practica (aunque algo salvaje) de hacerlo, es simplemente crear nuestra propia clase que sobreescriba este metodo:</p>
<blockquote><p>public class EmailReady : System.Web.UI.Page<br />
{<br />
public override void VerifyRenderingInServerForm(Control control)<br />
{</p>
<p>}<br />
}</p></blockquote>
<p>De manera que el metodo ahora no hace nada (usese bajo su propio riesgo).</p>
<p>Para que esto funcione, tendremos que cambiar la herencia de la clase de nuestra pagina, de</p>
<blockquote><p>public partial class Pagina : System.Web.UI.Page</p></blockquote>
<p>a</p>
<blockquote><p>public partial class Pagina : EmailReady</p></blockquote>
<p>Y nuestro método estara funcionando sin problemas.¬¬</p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/lidiando-con-errores-de-validacion-al-renderear-un-control-a-html-reportes-por-mail-iii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Exportando datos a Excel o a HTML (reportes por Mail II)</title>
		<link>http://ceroentrecero.com/exportando-datos-a-excel-o-a-html-reportes-por-mail-ii/</link>
		<comments>http://ceroentrecero.com/exportando-datos-a-excel-o-a-html-reportes-por-mail-ii/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 17:06:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/exportando-datos-a-excel-o-a-html-reportes-por-mail-ii/</guid>
		<description><![CDATA[En la antigua antiguedad, cuando queria exportar información a Excel  de una pagina Web, usaba el metodo de recorrer el control con los datos, escribir un csv en el servidor, y luego redireccionar al usuario al archivo recien creado (tenia incluso una rutina para hacer esto con GridViews, que se perdio en la base de [...]]]></description>
			<content:encoded><![CDATA[<p>En la antigua antiguedad, cuando queria exportar información a Excel  de una pagina Web, usaba el metodo de recorrer el control con los datos, escribir un csv en el servidor, y luego redireccionar al usuario al archivo recien creado (tenia incluso una rutina para hacer esto con GridViews, que se perdio en la base de codigo de mi antiguo trabajo). Un csv es un formato estandar que permite ser abierto en Excel, y aunque no tiene formato, pues muestra facilmente la información. Sin embargo, descubri que hay una forma mucho mas sencilla de lograr esto, con la ventaja de que podemos darle formato sin problemas.</p>
<p>Resulta que los controles de ASP.Net tienen la funcionalidad de poder escribirse a si mismos en formato HTML. Esto se logra con la funcion <strong><em>RenderControl. </em></strong>Esto nos da la posibilidad de ponernos creativos para exportar nuestros datos.</p>
<p>Si queremos que un control en particular sea descargable a Excel (que lee formato HTML) tendremos que hacer lo siguiente (lamento mucho no poder dar crédito al sitio donde encontre esta información, tiene que ser <a href="http://www.google.com.mx/search?num=100&amp;hl=en&amp;safe=off&amp;client=firefox-a&amp;rls=org.mozilla%3Aes-ES%3Aofficial&amp;hs=gMn&amp;q=%22If+you+want+the+option+to+open+the+Excel+file+without+saving+then%22&amp;btnG=Search">uno de estos</a>):</p>
<blockquote><p>Response.Clear();<br />
Response.AddHeader(&#8221;content-disposition&#8221;, &#8220;attachment;filename=FileName.xls&#8221;);<br />
Response.Charset = &#8220;&#8221;;</p>
<p>// If you want the option to open the Excel file without saving then<br />
// comment out the line below<br />
// Response.Cache.SetCacheability(HttpCacheability.NoCache);<br />
Response.ContentType = &#8220;application/file.xls&#8221;;</p>
<p>System.IO.StringWriter stringWrite = new System.IO.StringWriter();<br />
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);<br />
ControlAExportar.RenderControl(htmlWrite);</p>
<p>Response.Write(stringWrite.ToString());<br />
Response.End();</p></blockquote>
<p>Con un uso creativo del objeto Response, ni siquiera tenemos que guardar nuestra información como archivo en el servidor. Ahora bien, en nuestro objeto stringWrite lo unico que tenemos el HTML de nuestro control. Asi que, usando lo que aprendimos <a href="http://ceroentrecero.com/mandando-mails-con-formato-html-desde-aspnet-reportes-por-mail-i/">en el post anterior</a>, nada nos impide enviar la misma información por correo en lugar de crear un archivo de Excel. Basta con omitir el uso del objeto Response del codigo mostrado.</p>
<p>Sin embargo, este metodo no funcionara como tal, pues el ASP.Net hace algunas validaciones que estamos violando, de manera que hay que hacer uso de un par de hacks. De estos hablare <a href="http://ceroentrecero.com/lidiando-con-errores-de-validacion-al-renderear-un-control-a-html-reportes-por-mail-iii/">en el siguiente post</a>.¬¬</p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/exportando-datos-a-excel-o-a-html-reportes-por-mail-ii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mandando mails con formato HTML desde ASP.Net (reportes por mail I)</title>
		<link>http://ceroentrecero.com/mandando-mails-con-formato-html-desde-aspnet-reportes-por-mail-i/</link>
		<comments>http://ceroentrecero.com/mandando-mails-con-formato-html-desde-aspnet-reportes-por-mail-i/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 16:45:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/mandando-mails-con-formato-html-desde-aspnet-reportes-por-mail-i/</guid>
		<description><![CDATA[Recientemente me salio la necesidad de enviar mails con diversos tipos de datos desde una aplicación en ASP.Net, y me encontre con varios problemas interesantes para resolver, los cuales tratare en varias partes.
Primero esta el problema de mandar un correo. Por fortuna el .Net framework nos da herramientas para lograr esto de manera muy sencilla.
 MailMessage [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente me salio la necesidad de enviar mails con diversos tipos de datos desde una aplicación en ASP.Net, y me encontre con varios problemas interesantes para resolver, los cuales tratare en varias partes.</p>
<p>Primero esta el problema de mandar un correo. Por fortuna el .Net framework nos da herramientas para lograr esto de manera muy sencilla.</p>
<blockquote><p> MailMessage mail = new MailMessage();<br />
mail.From = new MailAddress(Properties.Settings.Default.MailAddress);<br />
mail.To.Add(To);<br />
mail.CC.Add(CC);<br />
mail.Bcc.Add(CCO);<br />
mail.Subject = Subject;<br />
mail.Body = Body;<br />
SmtpClient SMTPsender = new SmtpClient(Properties.Settings.Default.MailServerAddress);<br />
SMTPsender.UseDefaultCredentials = false;<br />
SMTPsender.Credentials =<br />
new System.Net.NetworkCredential(<br />
Properties.Settings.Default.Usuario,<br />
Properties.Settings.Default.Password,<br />
Properties.Settings.Default.Dominio);<br />
SMTPsender.Send(mail);</p></blockquote>
<p>Esta solución tan sencilla nos deja enviar correo en formato de solo texto. Pero ¿que pasa si queremos darle mas formato?. Tenemos que recurrir al HTML. Para ello, solo tenemos que hacer dos cosas diferentes:</p>
<ol>
<li>Especificar que el cuerpo de nuestro correo tiene formato HTML</li>
<blockquote><p>mail.IsBodyHtml = true;</p></blockquote>
<li>Formatear la cadena que enviamos con las etiquetas correspondientes.</li>
</ol>
<p>Pero, ¿que seria de nuestro correo con bonito formato Html si no tiene imagenes?</p>
<p>Para lograr imagenes dentro de un correo simplemente tenemos que usar el MIME. En nuestro codigo HTML vamos a usar la siguiente sintaxis:</p>
<blockquote><p>&lt;img alt=&#8221;Imageb&#8221; src=&#8221;cid:idDeLaImagen&#8221;/&gt;</p></blockquote>
<p>Asegurandonos que <em>idDeLaImagen </em>sea unica para este correo.</p>
<p>Posteriormente, vamos a agregar esa imagen a nuestro correo haciendo uso de los <em>AlternateViews</em></p>
<blockquote><p>//Agregamos como recurso ligado, el logo del proyecto.<br />
LinkedResource lr = new LinkedResource([la ruta de nuestra imagen]);<br />
lr.ContentId = &#8220;idDeLaImagen&#8221;;<br />
//Incluimos la vista en HTML como vista del correo a enviar.<br />
AlternateView av = AlternateView.CreateAlternateViewFromString<br />
(body, null, System.Net.Mime.MediaTypeNames.Text.Html);<br />
av.LinkedResources.Add(lr);<br />
mail.AlternateViews.Add(av);</p></blockquote>
<p>Esto nos permitira que los datos que adjuntamos se muestren como parte del correo y no como adjuntos.</p>
<p>Un par de aclaraciones pertinentes:</p>
<ol>
<li> Las lineas que dicen <em>Properties.Settings.Default</em>&#8230; implican que esos datos los estoy obteniendo del archivo de configuración. Una forma muy util de guardar caracteristicas de nuestro sistema.</li>
<li>Resulta que descubri que es legal usar como dirección para el <em>SmtpClient</em> la dirección del servidor Exchange de mi empresa. Desconozco la razon, pues se que Exchange no usa precisamente el mismo protocolo SMTP. Mi teoria es que los servidores Exchange (no se si por default) tienen ademas abierto el servicio SMTP. Por eso hago uso de las <em>NetworkCredential, </em>con cualquier usuario valido del dominio se puede enviar correos. Muy útil en ambientes empresariales con Exchange y ActiveDirectory.</li>
</ol>
<p>Las siguientes partes se trataran de como enviar datos directo de una pagina web por correo, ya sea como HTML o como un archivo adjunto de Excel, y ademas, de como lograr que los metodos propuestos funcionen <img src='http://ceroentrecero.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> ¬¬</p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/mandando-mails-con-formato-html-desde-aspnet-reportes-por-mail-i/feed/</wfw:commentRss>
		</item>
		<item>
		<title>El extraño caso de SQL server management studio y la pantalla azul</title>
		<link>http://ceroentrecero.com/el-extrano-caso-de-sql-server-management-studio-y-la-pantalla-azul/</link>
		<comments>http://ceroentrecero.com/el-extrano-caso-de-sql-server-management-studio-y-la-pantalla-azul/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 17:54:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/el-extrano-caso-de-sql-server-management-studio-y-la-pantalla-azul/</guid>
		<description><![CDATA[Pese a los detractores, yo soy un feliz usuario de windows XP (y estoy determinado a no usar Vista). Una de las razones es por su estabilidad. Dificilmente veo que mi equipo se congele, o peor aun, las tan populares &#8220;Blue screen of death&#8221; o BSOD. Sin embargo, desde que cambie de empleo, comenze a [...]]]></description>
			<content:encoded><![CDATA[<p>Pese a los detractores, yo soy un feliz usuario de windows XP (y estoy determinado a no usar Vista). Una de las razones es por su estabilidad. Dificilmente veo que mi equipo se congele, o peor aun, las tan populares &#8220;Blue screen of death&#8221; o BSOD. Sin embargo, desde que cambie de empleo, comenze a tener el problema de las pantallas azules cada vez que usaba el SQL Server Management Studio 2005.</p>
<p>En concreto, cada que habria una tabla (comando Open Table) era como jugar a la ruleta rusa. La pantalla azul aparecia, yo calculo que en uno de 3 intentos.</p>
<p>Intente muchas soluciones, desde actualizar, reinstalar, aplicar parches&#8230; pero nada funcionaba. Hasta que al fin, despues de husmear un poco en Google, encontre <a href="http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=262721">una pagina de Microsoft</a> donde se leian las siguientes e insignificantes lineas:</p>
<blockquote><p> <em>As workaround states, removing iPoint mouse driver should alleviate the problem.<br />
But why? Why should a mouse driver cause a database management application to BSOD in the Win32 kernel ?!                             </em></p></blockquote>
<p>Un poco incredulo, use <a href="http://www.google.com.mx/search?num=100&amp;hl=en&amp;safe=off&amp;client=firefox-a&amp;rls=org.mozilla%3Aes-ES%3Aofficial&amp;hs=uTo&amp;q=sql+server+management+studio+intellipoint&amp;btnG=Search">las palabras correctas en Google</a>, y BUM! resulto que es un problema mucho muy comun. En concreto: <strong>El software intellipoint</strong> (version 6.X.X) que sirve para controlar los apuntadores de Microsoft) al parecer <strong>tiene un bug que causa una pantalla azul</strong> al usar El SQL Server Management Studio en laptops con procesadores Intel de doble core.</p>
<p>No entiendo por que. Bueno, si entiendo, tiene que ver algo con el Kernell. Sin embargo me parecio una combinacion muy extraña. La bendita solucion es desinstalar Intellipoint. Sin embargo, a mi me gusta mucho mi mouse de Microsoft y la configuración de teclas que permite, de manera que no quiero desinstalarlo. Solución alterna: Mata el proceso <em>ipoint.exe </em>cada vez que vayas a usar el Management Studio. Un poco extraño, pero funciona <img src='http://ceroentrecero.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/el-extrano-caso-de-sql-server-management-studio-y-la-pantalla-azul/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Unable to find the requested .Net Framework Data Provider</title>
		<link>http://ceroentrecero.com/unable-to-find-the-requested-net-framework-data-provider/</link>
		<comments>http://ceroentrecero.com/unable-to-find-the-requested-net-framework-data-provider/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 20:26:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/unable-to-find-the-requested-net-framework-data-provider/</guid>
		<description><![CDATA[Precisamente hablando del MySql Connector para .Net, resulta que cuando quiere uno instalar la aplicacion en un servidor, puede haber un error como el que sigue:
 System.ArgumentException: Unable to find the requested .Net Framework Data Provider.  It may not be installed.
Despues de romperme un poco la cabeza, descubrí el origen del problema: El MySQL provider [...]]]></description>
			<content:encoded><![CDATA[<p>Precisamente hablando del MySql Connector para .Net, resulta que cuando quiere uno instalar la aplicacion en un servidor, puede haber un error como el que sigue:</p>
<blockquote><p> System.ArgumentException: Unable to find the requested .Net Framework Data Provider.  It may not be installed.</p></blockquote>
<p>Despues de romperme un poco la cabeza, descubrí el origen del problema: El MySQL provider no esta agregado a los DBProviderFactories. Normalmente esto lo hace el instalador del MySql connector, y lo hizo en mi equipo de desarrollo, pero no en el de producción.</p>
<p>La solución mas inmediata es, pues instalarlo en el servidor. Sin embargo, si no quieres o no estas en la posibilidad de meterle mano al servidor, puedes agregar lo siguiente a tu web.config:</p>
<blockquote><p>&lt;system.data&gt;<br />
&lt;DbProviderFactories&gt;<br />
&lt;add name=&#8221;MySQL Data Provider&#8221; invariant=&#8221;MySql.Data.MySqlClient&#8221; description=&#8221;.Net Framework Data Provider for MySQL&#8221; type=&#8221;MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d&#8221; /&gt;<br />
&lt;/DbProviderFactories&gt;<br />
&lt;/system.data&gt;</p></blockquote>
<p>Cuidando unicamente de que la version sea la que corresponda a la de nuestro connector.</p>
<p>También, no esta de mas checar que la dll de MySql.Data vaya en la carpeta bin <img src='http://ceroentrecero.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/unable-to-find-the-requested-net-framework-data-provider/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Conectar el .Net framework con MySql (con total soporte para ADO)</title>
		<link>http://ceroentrecero.com/conectar-el-net-framework-con-mysql-con-total-soporte-para-ado/</link>
		<comments>http://ceroentrecero.com/conectar-el-net-framework-con-mysql-con-total-soporte-para-ado/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 19:10:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/conectar-el-net-framework-con-mysql-con-total-soporte-para-ado/</guid>
		<description><![CDATA[Recientemente me salio la necesidad de manipular algunos datos a una base de MySql en lugar del ya tradicional SQL Server. Mi primera opcion fue hacer mi desarrollo en PHP. Pero luego se me ocurrio buscar una forma limpia de conectar el ASP.Net con MySQL. Afortunadamente, si la hay. El MySql Connector/Net
La mas nueva version [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente me salio la necesidad de manipular algunos datos a una base de MySql en lugar del ya tradicional SQL Server. Mi primera opcion fue hacer mi desarrollo en PHP. Pero luego se me ocurrio buscar una forma limpia de conectar el ASP.Net con MySQL. Afortunadamente, si la hay. <a href="http://dev.mysql.com/downloads/connector/net/5.1.html">El MySql Connector/Net</a></p>
<p>La mas nueva version (5.1), ya esta perfectamente integrada con el Visual Studio 2005. Y manipular las bases de datos exactamente de la misma manera que ya estamos acostumbrados. Les recomiendo que lo prueben!</p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/conectar-el-net-framework-con-mysql-con-total-soporte-para-ado/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Un bonito y util ejercicio</title>
		<link>http://ceroentrecero.com/un-bonito-y-util-ejercicio/</link>
		<comments>http://ceroentrecero.com/un-bonito-y-util-ejercicio/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 06:46:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[De Todo]]></category>

		<guid isPermaLink="false">http://ceroentrecero.com/?p=31</guid>
		<description><![CDATA[En días pasados, y por la época, me salio la necesidad de organizar un intercambio (si, esos en que se reúnen un grupo de amigos y/o conocidos y se intercambian regalos entre ellos). Como tenia la necesidad de que fuera secreto, decidí que la mejor solución (y la mas Geek), sería crear un programita que [...]]]></description>
			<content:encoded><![CDATA[<p>En días pasados, y por la época, me salio la necesidad de organizar un intercambio (si, esos en que se reúnen un grupo de amigos y/o conocidos y se intercambian regalos entre ellos). Como tenia la necesidad de que fuera secreto, decidí que la mejor solución (y la mas Geek), sería crear un programita que hiciera el sorteo por mi, y enviara correo a los interesados sin que yo me enterara de quien le dará a quien. El programita me represento algunos retos pequeños pero divertidos. Quiza lo mas divertido de aprender fue como funciona la clase <em>Random </em>y como podemos mandar Mails usando el SMTP de GMail.</p>
<p>No suena a demasiado dificil hacer un sorteo de intercambio programaticamente. Y en realidad, lo es. Solo que el generador de numeros aleatorios del .Net Framework no es realmente aleatorio. Veran.</p>
<p>Para usarlo empleamos una sentencia mas o menos asi:<br />
<code>Random rnd = new Random(int base)</code><br />
Donde base es el limite superior para los aleatorios. Para generar un numero aleatorio de una serie (ojo, dije serie) usamos<br />
<code>rnd.Next();</code><br />
El asunto esta en que, si siempre le damos la misma base, siempre obtendremos los mismos resultados. No podemos crear un objeto Random cada que lo queramos usar, tenemos que usar uno solo y dejar que solito &#8220;randomize&#8221; la serie. Despues de algunas aproximaciones, lo que termine por hacer es darle una base de los milisegundos de la hora.<br />
<code>Random rnd = new Random(DateTime.Now.Millisecond)</code><br />
Y como necesitaba que los numeros aleatorios estuvieran dentro de un rango (el tamaño de la lista de participantes), simplemente use el modulo:<br />
<code>rnd.Next() % elQueDa.Count  //elQueDa es un ArrayList con mi lista de participantes.</code><br />
Una vez solucionado ese asunto, tenia que hacer que enviara los mails a los participantes. Para ello, use la bendita clase <em>SmtpClient</em>  del framework. En realidad es muy facil de usar. Mi codigo se explica solo:<br />
<code>System.Net.NetworkCredential credential = new System.Net.NetworkCredential<br />
(Properties.Settings.Default.SmtpUserName,Password);<br />
SmtpClient senderClient = new SmtpClient(Properties.Settings.<br />
Default.SmtpAddress,Convert.ToInt32(Properties.Settings.Default.SmtpPort));<br />
senderClient.EnableSsl = Properties.Settings.Default.SmtpEnableSsl;<br />
senderClient.UseDefaultCredentials = false;<br />
senderClient.Credentials = credential;</code></p>
<p>MailMessage Mail = new MailMessage();<br />
Mail.From = new MailAddress(Properties.Settings.Default.MailFromAddress);<br />
Mail.Subject = Properties.Settings.Default.MailSubject;<br />
senderClient.Send(Mail)<br />
Unicamente hay que preocuparse de cachar las excepciones adecuadas. Por si les paso de noche,  <em>Properties.Settings.Default </em>es la forma de acceder a las propiedades guardadas en el archivo de configuracion, asi que no busquen en la documentacion propiedades como <em>SmtpEnableSsl </em>por que yo las di de alta asi en los Settings.</p>
<p>Hay que recordar que GMail trabaja con SSL. Para ello la linea de<br />
<code>senderClient.EnableSsl = Properties.Settings.Default.SmtpEnableSsl;</code><br />
Y tambien que hay que configurar el puerto (465 o 587, si uno da TimeOut, intentas con el otro).</p>
<p>Y ya, la verdad es que es muy facil hacer este tipo de cosas con el .Net Framework. Si le quieren echar un ojo, a<a href="http://doblenegacion.com/Intercambios/Intercambios.zip">qui encuentran el codigo</a>. Y si les interesa descargarlo para su uso, pueden entrar a <a href="http://doblenegacion.com/Intercambios/">esta pagina</a> (hacemos uso de las ventajas del Click Once Deployent). No me esforce demasiado en las validaciones, asi que asegurense de meter bien los datos.</p>
]]></content:encoded>
			<wfw:commentRss>http://ceroentrecero.com/un-bonito-y-util-ejercicio/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
