<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3296983612585198839</id><updated>2026-02-26T14:25:06.497-08:00</updated><category term="Microsoft"/><category term="JavaScript"/><category term="SQL Server"/><category term="T-SQL"/><category term="Antivirus"/><category term="Windows"/><category term="BlackBerry"/><category term="SSIS"/><category term="Smartphones"/><category term="TI"/><category term="ASP .NET"/><category term="Blogger"/><category term="CSharp"/><category term="Command-Line"/><category term="Documentación"/><category term="Excel"/><category term="HTML"/><category term="LINQ to Entities"/><category term="MVC 3"/><category term="Móviles"/><category term="Nicaragua"/><category term="PHP"/><category term="Seguridad"/><category term="Sitios"/><category term="Spyware"/><category term="e-Books"/><title type='text'>Mi experiencia programando</title><subtitle type='html'>Compartiendo un poco sobre mi experiencia como desarrollador de aplicaciones.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-4973715310236615782</id><published>2015-02-20T13:01:00.000-08:00</published><updated>2015-02-24T08:34:37.173-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSharp"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><title type='text'>Un poco sobre HtmlAgilityPack</title><content type='html'>&lt;div&gt;
Tuve la necesidad de manipular un poco de HTML con C# y pues todas la búsquedas apuntaron a &lt;a href=&quot;http://htmlagilitypack.codeplex.com/&quot;&gt;HtmlAgilityPack&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;El problema&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
Por medio de un editor WYSIWYG, en modo HTML, permito la edición de contenido que se publica en un sitio web, no se trata de un CMS, pero los usuarios tienden a redactar el texto primero en Microsoft Word © y luego copiarlo al editor del sitio. El HTML que se forma incluía una serie de estilos que corrompía la maquetación del sitio.&lt;/div&gt;
&lt;div&gt;
El contenido se muestra de dos maneras, primero un breve resumen y luego el contenido completo. La dificultad se encuentra en el resumen, puesto que debe cortar el texto original podría provocar que una etiqueta quede mal construida o sin cerrar.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;La solución&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Lo primero que necesitaba era limpiar el HTML antes de almacenarlo en el base de datos. La limpieza consiste en eliminar todo los atributos de los elementos, el que más me molestaba era el atributo &quot;style&quot;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush: csharp&quot;&gt;private string Clean(string html)
{
 HtmlDocument doc = new HtmlDocument();
 System.IO.StringWriter sw;
 string result;

 doc.LoadHtml(html);

 foreach(HtmlNode n in doc.DocumentNode.SelectNodes(&quot;*&quot;))
 {
  if (n.HasAttributes)
  n.Attributes.RemoveAll();
 }
 
 sw = new System.IO.StringWriter();
 doc.Save(sw);
 doc = null;

 result = sw.ToString();

 sw.Dispose();
 sw = null;

 return result;
}
&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ahora debía recortar el texto a los primeros 250 caracteres y garantizar tener un HTML bien formado. El código lo estoy utilizando desde una vista con Razor.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush: csharp&quot;&gt;string tmp;
HtmlDocument doc;
System.IO.StringWriter sw;

doc = new HtmlDocument();

tmp = Model.info_a_publicar;

if (!string.IsNullOrWhiteSpace(tmp) &amp;amp;&amp;amp; tmp.Length &amp;gt; 250)
{
 tmp = tmp.Substring(0, 250);
 tmp = tmp.Substring(0, tmp.LastIndexOf(&quot; &quot;)); //con esto garantizo de tener palabras completas

 sw = new StringWriter();

 doc.OptionFixNestedTags = true;
 doc.OptionAutoCloseOnEnd = true;
 doc.OptionCheckSyntax = true;
 doc.LoadHtml(tmp);
 doc.Save(sw);

 sw.Flush();
 tmp = sw.ToString();
 sw.Close();

 sw = null;
}

doc = null;
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/4973715310236615782/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2015/02/un-poco-sobre-htmlagilitypack.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/4973715310236615782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/4973715310236615782'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2015/02/un-poco-sobre-htmlagilitypack.html' title='Un poco sobre HtmlAgilityPack'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-968817375342646356</id><published>2013-11-15T15:05:00.001-08:00</published><updated>2013-11-18T08:04:37.047-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="T-SQL"/><title type='text'>DATEPART() + @@DATEFIRST = ?</title><content type='html'>En uno&amp;nbsp;de esos días en&amp;nbsp;los que busco como complicarme la vida me pregunté ¿Habrá una forma de saber el día de la semana de una fecha sin preocuparme por la configuración de &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms181598.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SET DATEFIRST&lt;/a&gt;?&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu3TQPq7IWkeciostHom96Wgw0FrpTUkt4Nq-7caUDWotOiTp1A2Pktn_jX-jOYFn8ufC41TxaXbwjm3LFAeSTrnEUoRZcYZQlsiFK11UnQbhcYcbUrL5nFaYMrxfko_FrE5lpapJ25PZT/s1600/datefirst_weekday.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu3TQPq7IWkeciostHom96Wgw0FrpTUkt4Nq-7caUDWotOiTp1A2Pktn_jX-jOYFn8ufC41TxaXbwjm3LFAeSTrnEUoRZcYZQlsiFK11UnQbhcYcbUrL5nFaYMrxfko_FrE5lpapJ25PZT/s1600/datefirst_weekday.png&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Imagen 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Entonces decidí ver la diferentes valores que podían tomar los días de la semana para los valores posibles que puede tomar SET DATEFIRST. El resultado es la matriz que se muestra en la imagen 1.&lt;br /&gt;
&lt;br /&gt;
Si configuramos SET DATEFIRST a 1 entonces el primer día de la semana será lunes, es decir que &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms174420.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;DATEPART(dw, &lt;fecha&gt;&lt;fecha&gt;)&lt;/fecha&gt;&lt;/fecha&gt;&lt;/a&gt; nos devolverá 1 para lo lunes y&amp;nbsp; 7 para los domingos. &lt;br /&gt;
&lt;br /&gt;
Ahora si configuramos SET DATEFIRST a 2 entonces el primer día de la semana será martes,&amp;nbsp;entonces DATEPART(dw, &lt;fecha&gt;&lt;fecha&gt;) nos devolverá el 1 para los martes, 6 para los domingos y 7 para los lunes.&lt;/fecha&gt;&lt;/fecha&gt;&lt;br /&gt;
&lt;fecha&gt;&lt;/fecha&gt;&lt;br /&gt;
&lt;fecha&gt;&lt;/fecha&gt;&lt;br /&gt;
&lt;br /&gt;
Si sumo los diferentes valores que puede tomar un lunes con los diferentes valores que toma la variable &lt;a href=&quot;http://technet.microsoft.com/en-us/library/ms187766.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;@@DATEFIRST&lt;/a&gt; tenemos lo siguiente.&lt;br /&gt;
&lt;br /&gt;
@@DATEFIRST + DATEPART(dw, &lt;fecha&gt;&lt;fecha&gt;)&lt;/fecha&gt;&lt;/fecha&gt;&lt;br /&gt;
==&amp;gt; 1 + 1 = 2&lt;br /&gt;
==&amp;gt;&amp;nbsp;2 +&amp;nbsp;7 = 9&lt;br /&gt;
==&amp;gt; 3 + 6&amp;nbsp;= 9&lt;br /&gt;
==&amp;gt; 4 + 5 = 9&lt;br /&gt;
==&amp;gt; 5 + 4 = 9&lt;br /&gt;
==&amp;gt; 6 + 3 = 9&lt;br /&gt;
==&amp;gt; 7 + 2 = 9&lt;br /&gt;
&lt;br /&gt;
Obtengo&amp;nbsp;que para los lunes hay dos posibles valores 2 y 9.&lt;br /&gt;
&lt;br /&gt;
Repito el mismo proceso para los miércoles:&lt;br /&gt;
@@DATEFIRST + DATEPART(dw, &lt;fecha&gt;&lt;fecha&gt;)&lt;/fecha&gt;&lt;/fecha&gt;&lt;br /&gt;
==&amp;gt; 1 +&amp;nbsp;3 = 4&lt;br /&gt;
==&amp;gt;&amp;nbsp;2 +&amp;nbsp;2 = 4&lt;br /&gt;
==&amp;gt;&amp;nbsp;3 +&amp;nbsp;1&amp;nbsp;= 4&lt;br /&gt;
==&amp;gt;&amp;nbsp;4 +&amp;nbsp;7 = 11&lt;br /&gt;
==&amp;gt;&amp;nbsp;5 +&amp;nbsp;6 = 11&lt;br /&gt;
==&amp;gt; 6 +&amp;nbsp;5 = 11&lt;br /&gt;
==&amp;gt; 7 +&amp;nbsp;4 = 11&lt;br /&gt;
&lt;br /&gt;
Para los miércoles tengo dos posibles valores 4 y 11.&lt;br /&gt;
&lt;br /&gt;
Ahora lo hago para los domingos&amp;nbsp;:&lt;br /&gt;
@@DATEFIRST + DATEPART(dw, &lt;fecha&gt;&lt;fecha&gt;)&lt;/fecha&gt;&lt;/fecha&gt;&lt;br /&gt;
==&amp;gt; 1 +&amp;nbsp;7 = 8&lt;br /&gt;
==&amp;gt;&amp;nbsp;2 +&amp;nbsp;6 = 8&lt;br /&gt;
==&amp;gt;&amp;nbsp;3 +&amp;nbsp;5&amp;nbsp;= 8&lt;br /&gt;
==&amp;gt;&amp;nbsp;4 +&amp;nbsp;4 = 8&lt;br /&gt;
==&amp;gt;&amp;nbsp;5 +&amp;nbsp;3 = 8&lt;br /&gt;
==&amp;gt; 6 +&amp;nbsp;2 = 8&lt;br /&gt;
==&amp;gt; 7 +&amp;nbsp;7 = 8&lt;br /&gt;
&lt;br /&gt;
Para los domingos solo hay un posible valor 8.&lt;br /&gt;
&lt;br /&gt;
Concluyo que si&amp;nbsp;el resultado de sumar @@DATEFIRST + DATEPART(dw, &lt;fecha&gt;&lt;fecha&gt;) es:&lt;/fecha&gt;&lt;/fecha&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;2 ó 9&amp;nbsp;la fecha es un lunes&lt;/li&gt;
&lt;li&gt;3 ó 10&amp;nbsp;la fecha es un martes&lt;/li&gt;
&lt;li&gt;4 ó 11 la fecha es un miércoles&lt;/li&gt;
&lt;li&gt;5 ó 12 la fecha es un jueves&lt;/li&gt;
&lt;li&gt;6 ó 13 la fecha es un viernes&lt;/li&gt;
&lt;li&gt;7 ó 14 la fecha es un sábado&lt;/li&gt;
&lt;li&gt;8 la fecha es un domingo.&lt;/li&gt;
&lt;/ol&gt;
De esta forma no me preocupo de&amp;nbsp;tener que usar&amp;nbsp;SET DATEFIRST, sobre todo cuando toca modificar o agregar un subproceso a un proceso muy complejo. También me evito la necesidad que&amp;nbsp;al&amp;nbsp;final&amp;nbsp;del subproceso de&amp;nbsp;a restablecer SET DATEFIRST a su valor inicial.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/968817375342646356/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2013/11/datepart-datefirst.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/968817375342646356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/968817375342646356'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2013/11/datepart-datefirst.html' title='DATEPART() + @@DATEFIRST = ?'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu3TQPq7IWkeciostHom96Wgw0FrpTUkt4Nq-7caUDWotOiTp1A2Pktn_jX-jOYFn8ufC41TxaXbwjm3LFAeSTrnEUoRZcYZQlsiFK11UnQbhcYcbUrL5nFaYMrxfko_FrE5lpapJ25PZT/s72-c/datefirst_weekday.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-5041217928042462201</id><published>2013-03-12T15:55:00.000-07:00</published><updated>2013-03-13T10:11:02.118-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LINQ to Entities"/><category scheme="http://www.blogger.com/atom/ns#" term="T-SQL"/><title type='text'>LINQ: IN (subquery)</title><content type='html'>Usar una subconsulta en un operdor IN es algo muy común para un programador, pero ¿Por qué es tan difícil encontrar un ejemplo claro de esto para LINQ to Entities?&lt;br /&gt;
&lt;br /&gt;
Luego de darme a la tarea de buscar la solución para implentar el operador IN (subquery)&amp;nbsp;con LINQ to Entities encontré este enlace &lt;a href=&quot;http://stackoverflow.com/questions/3477918/linq-subquery-in&quot;&gt;http://stackoverflow.com/questions/3477918/linq-subquery-in&lt;/a&gt;. La solución es muy sencilla, pero&amp;nbsp;me sorpendí porque en lugar de ver&amp;nbsp;IN (subquery)&amp;nbsp;ví un EXISTS(subquery) en la sentencia.&lt;br /&gt;
&lt;br /&gt;
Eemplo:&lt;br /&gt;
&lt;br /&gt;
LINQ&lt;br /&gt;
&lt;pre class=&quot;brush: csharp&quot;&gt;var subquery = from a in Bitacoras
 where a.env_numero == 5
 select a.asig_codigo;

var query = from b in Asignacions
 where subquery.Contains(b.asig_codigo)
 select b.asig_codigo;&lt;/pre&gt;
&lt;br /&gt;
T-SQL generado&lt;br /&gt;
&lt;pre class=&quot;brush: sql; highlight: [4]&quot;&gt;SELECT 
[Extent1].[asig_codigo] AS [asig_codigo]
FROM [dbo].[Asignacion] AS [Extent1]
WHERE  EXISTS (SELECT 
 1 AS [C1]
 FROM [dbo].[Bitacora] AS [Extent2]
 WHERE (5 = [Extent2].[env_numero]) AND ([Extent2].[asig_codigo] = [Extent1].[asig_codigo])
)&lt;/pre&gt;
&lt;br /&gt;
No fue el&amp;nbsp;EXISTS(subquery) lo que me sorprendió, es preferible usar el operador EXISTS en lugar de IN por que el primero tiene un mejor rendimiento. Lo que realmente me sorprendió es ver que LINQ to&amp;nbsp;Entities generó una sentencia T-SQL optimizada para manejar grandes volúmenes de datos.&lt;br /&gt;
&lt;br /&gt;
Sucede que&amp;nbsp;el concepto que tengo es que para un&amp;nbsp;proyecto sencillo, sin preocupción alguna, puedes&amp;nbsp;hacer todas tus consultas con LINQ to Entities, pero es &amp;nbsp;muy probable que un futuro el volumen de datos crezca a niveles considerables y halla que trasladar ciertas&amp;nbsp;consultas a procedimientos almacenados aplicando técnicas de optimización.&lt;br /&gt;
&lt;br /&gt;
Ahora tendré toda confianza de usar&amp;nbsp;consultas de LINQ parecidas a la anterior.&lt;br /&gt;
&lt;br /&gt;
Para finalizar les dejo un ejemplo de LINQ to Entities usando el operador IN, pero con volores conocidos.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
LINQ&lt;br /&gt;
&lt;pre class=&quot;brush: csharp&quot;&gt;var ids = new int[]{1,2,3,4,5};

var q = from b in Envios
  where ids.Contains(b.env_numero)
  select b;&lt;/pre&gt;
&lt;br /&gt;
T-SQL generado&lt;br /&gt;
&lt;pre class=&quot;brush: sql; highlight: [7]&quot;&gt;SELECT 
[Extent1].[env_numero] AS [env_numero], 
[Extent1].[gtor_codigo] AS [gtor_codigo], 
[Extent1].[env_fecha] AS [env_fecha], 
[Extent1].[env_fecha_fin] AS [env_fecha_fin]
FROM [dbo].[Envio] AS [Extent1]
WHERE [Extent1].[env_numero] IN (1,2,3,4,5)&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/5041217928042462201/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2013/03/linq-in-subquery.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/5041217928042462201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/5041217928042462201'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2013/03/linq-in-subquery.html' title='LINQ: IN (subquery)'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-6380627104534051735</id><published>2013-02-12T15:09:00.000-08:00</published><updated>2013-02-13T14:49:57.731-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Command-Line"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Instalando desde la línea de comandos</title><content type='html'>Hace poco requería conseguir una manera de centralizar desde un mismo punto&amp;nbsp;la instalación de&amp;nbsp;los programas &lt;a href=&quot;http://www.gpg4win.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Gpg4win&lt;/a&gt; y MORFIS, este último&amp;nbsp;esta desarrollo con .Net 1.1 por lo tanto es un requisito. Pero me urgía hacer esto, así que en ese momento creí que la forma más rápida para hacerlo era con un archivo .bat.&lt;br /&gt;
&lt;br /&gt;
Para lanzar&amp;nbsp;los instaladores solo necesitaba hacer uso del comando &lt;a href=&quot;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/start.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;start&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: shell;&quot;&gt;start /wait gpg4win.exe
start /wait aspnet1_1.exe /Q
start /wait aspnet1_1sp1.exe /Q
start /wait morfis_setup.ex /qr
&lt;/pre&gt;
&lt;br /&gt;
El modificador /wait obliga al command a esperar que termine de ejecutarse el exe, modificador /Q y /qr reduce la interacción del usuario con los instaladores. Para el caso del .Net 1.1 SP1 no se presenta ni pantalla.&lt;br /&gt;
&lt;br /&gt;
Para evitar&amp;nbsp;los ruidos de&amp;nbsp;los&amp;nbsp;exes y otros comandos&amp;nbsp;se debe apagar los mensajes de salida con &lt;a href=&quot;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/echo.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;echo&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;@echo off&lt;/pre&gt;
&lt;br /&gt;
Pero la instalación del .Net está condicionoda por su presencia, así que lo primero es saber como Windows me informa de la presencia de .Net 1.1, san Google me ayudo a encontrar ese dato en un &lt;a href=&quot;http://support.microsoft.com/kb/318785&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;artículo&lt;/a&gt; de MS. Era de esperarse que esa información estuviera en el registro de Windows, para poder consultar el regedit, Windows a puesto a mi disposición el comando &lt;a href=&quot;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/reg.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;reg query&lt;/a&gt;, pero necesitaba poder leer la salida del este comando así que hice uso de &lt;a href=&quot;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/findstr.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;findstr&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;reg query &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v install | findstr 0x1

reg query &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v SP | findstr 0x1

reg query &quot;HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v Install | findstr 0x1

reg query &quot;HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v SP | findstr 0x1
&lt;/pre&gt;
&lt;br /&gt;
Tengo que hacer 4 consultas&amp;nbsp;porque las&amp;nbsp;llaves cambian según la arquitectura y se deben leer do valores de una llave, el primer valor es para saber si está instalado .Net 1.1 y el segundo valor para saber si ya tiene su SP1. El modificador /v&amp;nbsp;del comando &lt;em&gt;reg query&lt;/em&gt;&amp;nbsp;le indica que busque un valor especifico en la llave especificada, el operador | (pipe) redirecciona la salida de &lt;em&gt;reg query&lt;/em&gt; a la entrada de &lt;em&gt;findstr&lt;/em&gt; al cual le indico que busque la cadena &quot;0x1&quot;, si lo encuentra &lt;em&gt;findstr&lt;/em&gt; retorna el código&amp;nbsp;0 de lo contrario 1. &lt;br /&gt;
&lt;br /&gt;
Con un &lt;a href=&quot;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/if.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;if&lt;/a&gt; puedo verificar el código de retorno de &lt;em&gt;findstr &lt;/em&gt;y modificar la linea de ejecución con un &lt;a href=&quot;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/goto.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;goto&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;reg query &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v install | findstr 0x1
IF %errorlevel% == 0 SET netv1sp1=%netv1sp1%1

reg query &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v SP | findstr 0x1
IF %errorlevel% == 0 SET netv1sp1=%netv1sp1%1

reg query &quot;HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v Install | findstr 0x1
IF %errorlevel% == 0 SET netv1sp1=%netv1sp1%1

reg query &quot;HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v SP | findstr 0x1
IF %errorlevel% == 0 SET netv1sp1=%netv1sp1%1

IF &quot;%netv1sp1%&quot; == &quot;11&quot; goto morfis
IF &quot;%netv1sp1%&quot; == &quot;&quot; goto ambos
IF &quot;%netv1sp1%&quot; == &quot;1&quot; goto servicepack&lt;/pre&gt;
&lt;br /&gt;
El codigo de retorno se almacena en la variable &lt;strong&gt;errorlevel&lt;/strong&gt; si está es igual a cero uso el comando &lt;a href=&quot;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/set.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;set &lt;/a&gt;para saber que tengo instalado en la PC,&amp;nbsp;la variable &lt;strong&gt;netv1sp1&lt;/strong&gt; puede tener 3 valores. (Para obtener los valores de la variables estás se deben encerrar con&amp;nbsp; %):&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&quot;11&quot;&lt;/strong&gt;: Net&amp;nbsp;1.1 está instalado y tiene su SP1 así que paso directo a instalar MORFIS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;1&quot;&lt;/strong&gt;: Está instalado .Net 1.1 pero hace falta el SP1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;&quot;&lt;/strong&gt;: Hay que instalar .Net 1.1 y su SP1&lt;/li&gt;
&lt;/ol&gt;
Optimece el bat para que funcione en con Windows XP, no vaya hacer me encuentre con un cavernícola que aún lo use.&lt;br /&gt;
&lt;br /&gt;
Para finalizar uso el comando &lt;a href=&quot;http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/pause.mspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;pause&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
El resultado final del bat es:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;@echo off
echo ==============================================================
echo NO CIERRE ESTA VENTANA
echo ==============================================================
echo 1. Iniciando la Instalación
echo 1.2 Instalando GnuPG
start /wait GnuPG\gpg4win-light-2.1.0.exe

echo 1.3 Instalando Morfis

reg query &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v install | findstr 0x1
IF %errorlevel% == 0 SET netv1sp1=%netv1sp1%1

reg query &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v SP | findstr 0x1
IF %errorlevel% == 0 SET netv1sp1=%netv1sp1%1

reg query &quot;HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v Install | findstr 0x1
IF %errorlevel% == 0 SET netv1sp1=%netv1sp1%1

reg query &quot;HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v1.1.4322&quot; /v SP | findstr 0x1
IF %errorlevel% == 0 SET netv1sp1=%netv1sp1%1

IF &quot;%netv1sp1%&quot; == &quot;11&quot; goto morfis
IF &quot;%netv1sp1%&quot; == &quot;&quot; goto ambos
IF &quot;%netv1sp1%&quot; == &quot;1&quot; goto servicepack 

:ambos
echo 1.3.1 Instalando net v1.1
start /wait aspnet1_1.exe /Q

:servicepack
echo 1.3.1 Instalando net v1.1 sp 1
start /wait aspnet1_1sp1.exe /Q

:morfis
start /wait morfis_setup.exe /qr

echo INSTALACACIÓN COMPLETA
pause&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/6380627104534051735/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2013/02/instalando-desde-la-linea-de-comandos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/6380627104534051735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/6380627104534051735'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2013/02/instalando-desde-la-linea-de-comandos.html' title='Instalando desde la línea de comandos'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-8982961819337937384</id><published>2013-01-30T12:20:00.001-08:00</published><updated>2013-01-30T12:20:47.138-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BlackBerry"/><category scheme="http://www.blogger.com/atom/ns#" term="Smartphones"/><title type='text'>BlackBerry10: Hub and Keyboard</title><content type='html'>Acabo de ver el &lt;a href=&quot;http://tremolo.edgesuite.net/blackberry_experience_launch/desktop_dvr/index.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;vídeo&lt;/a&gt; del lanzamiento de BlackBerry 10 y las caratetísticas que más me gustaron fue BlackBerry Hub y BlackBerry Keyboard.&lt;br /&gt;
&lt;br /&gt;
Tener centroalizado todas tus notificaciones de&amp;nbsp;mensajaría, redes sociales, etc &amp;nbsp;y poder interactuar con ellas desde una misma aplicación está estupendo. El teclado se ve fuera de serie, estratosférico, realmente inteligente,&amp;nbsp;sin duda será lo primero que pruebe cuando tengan el &lt;a href=&quot;http://us.blackberry.com/smartphones/blackberry-z10.html?lid=us:bb:devices:blackberryz10&amp;amp;lpos=us:bb:devices&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;BlackBerry Z10&lt;/a&gt; en mis manos.&lt;br /&gt;
&lt;br /&gt;
Bueno solo resta esperar el comportamiento del mercado para saber si BlackBerry logrará reposicionarse en el mundo de los teléfonos inteligentes (smartphones).</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/8982961819337937384/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2013/01/blackberry10-hub-and-keyboard.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8982961819337937384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8982961819337937384'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2013/01/blackberry10-hub-and-keyboard.html' title='BlackBerry10: Hub and Keyboard'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-4879663857581701205</id><published>2013-01-25T12:27:00.001-08:00</published><updated>2013-01-28T09:49:25.234-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>JavaScript: Mi mejor aliado</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3YKGpgd2vMaJq_Dl-l0nNBVoxXpciNg5F2Sk0zuFsA2DZPFPw2dh5dA47OcUzLHFay-6vUJ74pfn9epq-1idsW6LuI860sls5jTtUZ69xGkklU34gbVezCB__8X86ssgz_8KDzDkrgNNw/s1600/borrar3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Es increible en todo lo que me ayuda JavaScript. Su último rescate&amp;nbsp;fue ayudarme a obtener un sencillo reporte cuyos datos estaban en un&amp;nbsp;grupo de &amp;nbsp;&lt;a href=&quot;http://www.google.com/apps/index1.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Google Apps&lt;/a&gt;. El panel de administración gratuito de Google Apps lista los miembros de los grupos de 30 en 30 y&amp;nbsp;no te pemite navegar fácilmente entre las páginas. Lo datos que debía obtener eran el correo electrónico y la función del miembro dentro del grupo.&lt;br /&gt;
&lt;br /&gt;
﻿&lt;br /&gt;
﻿﻿﻿&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxJG_hFoMks10Oz_vEoOvkoqYpjUGMhzdnX5tEtbOPB8ORNj_62GxbZfY4qJiR0wioLJrL2FN8I9ro3yusB6WJBOv9id1KhWylPZQnMleZB9A-lqFRfn0eOu512SupyfVzqKPkkucxWLNs/s1600/borrar1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;88&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxJG_hFoMks10Oz_vEoOvkoqYpjUGMhzdnX5tEtbOPB8ORNj_62GxbZfY4qJiR0wioLJrL2FN8I9ro3yusB6WJBOv9id1KhWylPZQnMleZB9A-lqFRfn0eOu512SupyfVzqKPkkucxWLNs/s400/borrar1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Listado de los miembro de un grupo en el panel de Google Apps&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
El problema es obtener los datos, con un simple copiar y pegar no me resultó;&amp;nbsp;iba a&amp;nbsp;tardar mucho acomando los datos de&amp;nbsp;8 páginas.&amp;nbsp;&amp;nbsp;En la imagen de abajo&amp;nbsp;veran el resultado en Notepad. El resultado en Excel no se lo muestro porque la situación se complica aun más.&lt;br /&gt;
&lt;br /&gt;
﻿﻿﻿﻿﻿﻿&lt;br /&gt;
﻿&lt;br /&gt;
﻿﻿﻿&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJgmw7eGI95eO_gZp8Doy_d5VaEHarfCd1HdUC_dARn9B1nZCtgxWR04DoG2LWnQRhfoghvTaHbunuzjxRYXXR_CbcS5gMflL_5blGg_zA4Q45ixnq91JDOQ_r-9dFdT47vwqD5uNm9HE3/s1600/borrar2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJgmw7eGI95eO_gZp8Doy_d5VaEHarfCd1HdUC_dARn9B1nZCtgxWR04DoG2LWnQRhfoghvTaHbunuzjxRYXXR_CbcS5gMflL_5blGg_zA4Q45ixnq91JDOQ_r-9dFdT47vwqD5uNm9HE3/s400/borrar2.png&quot; width=&quot;370&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Los datos depués de pegarlos en Notepad&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibmwY8sTaG7PjIXO0ZGYQqMHwmPJXoRHnIaUuO8jfbShiQ1M5RMnhUalPJt1RVEdKUrxiXxX4elZEVONn9OKgLMjpyJAVK8jpu1hdIEWXjuYyvTp6M73T1HT4Ne6NTiB8wwhqOvdDpjiqK/s1600/borrar3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
Con la ayuda de un sencillo script que ejecuto desde la consola de las herramientas&amp;nbsp;para desarrolladores de IE9 (F12) logré extraer lo datos, ubicarlos en una tabla al final de la página y luego a copiar y pegar en Excel para darle forma al reporte.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3YKGpgd2vMaJq_Dl-l0nNBVoxXpciNg5F2Sk0zuFsA2DZPFPw2dh5dA47OcUzLHFay-6vUJ74pfn9epq-1idsW6LuI860sls5jTtUZ69xGkklU34gbVezCB__8X86ssgz_8KDzDkrgNNw/s1600/borrar3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3YKGpgd2vMaJq_Dl-l0nNBVoxXpciNg5F2Sk0zuFsA2DZPFPw2dh5dA47OcUzLHFay-6vUJ74pfn9epq-1idsW6LuI860sls5jTtUZ69xGkklU34gbVezCB__8X86ssgz_8KDzDkrgNNw/s320/borrar3.png&quot; width=&quot;166&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;El resulado del script&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿&lt;/div&gt;
Acá les dejo el script:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: js&quot;&gt;//Obtenemos todas las tablas que hay en la página
rTables = document.getElementsByTagName(&quot;TABLE&quot;);

//La tercera tabla es la que contiene los datos
rTable = rTables[3];

//Creamos una nueva tabla para acomodar los datos
rs = document.createElement(&quot;TABLE&quot;);

//Recorro los datos para acomodarlos
for(i = 2; i &amp;lt; rTable.rows.length-1; i++)
{
 r = rs.insertRow(-1);
 c = r.insertCell(-1);
 c.innerText = rTable.rows[i].cells[2].innerText
 c = r.insertCell(-1);
 c.innerText = rTable.rows[i].cells[3].innerText
}

//Inserto los datos reacomodados al final de la página
document.getElementsByTagName(&quot;BODY&quot;)[0].appendChild(rs);
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/4879663857581701205/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2013/01/javascript-mi-mejor-aliado.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/4879663857581701205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/4879663857581701205'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2013/01/javascript-mi-mejor-aliado.html' title='JavaScript: Mi mejor aliado'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxJG_hFoMks10Oz_vEoOvkoqYpjUGMhzdnX5tEtbOPB8ORNj_62GxbZfY4qJiR0wioLJrL2FN8I9ro3yusB6WJBOv9id1KhWylPZQnMleZB9A-lqFRfn0eOu512SupyfVzqKPkkucxWLNs/s72-c/borrar1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-7218589642114105139</id><published>2012-12-05T11:52:00.002-08:00</published><updated>2012-12-05T11:52:21.007-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="SSIS"/><title type='text'>SSIS y los MessageBox</title><content type='html'>Sigo&amp;nbsp;en mi proceso de migración de los paquetes versión 2000 a 2008, en está&amp;nbsp;ocasión&amp;nbsp;me encontré con&amp;nbsp;una características que&amp;nbsp;me libera&amp;nbsp;de una preocupación.&lt;br /&gt;
&lt;br /&gt;
En muchas ocasiones cuando&amp;nbsp;he estado&amp;nbsp;desarrollando un paquete he utilizado un &lt;em&gt;MessageBox&lt;/em&gt; desde una tarea de script,&amp;nbsp;para depurar los valores de las variables del paquete. En una ocasión le sucedió a un colega que olvidó&amp;nbsp;comentar la linea de código del &lt;em&gt;MessageBox&lt;/em&gt; y actualizó el paquete en el ambiente de producción, esto provocó muchos problemas porque el paquete no terminaba de ejecutarse&amp;nbsp;esperando&amp;nbsp;su clic en el&amp;nbsp;botón &quot;Ok&quot; del&amp;nbsp;MessageBox&amp;nbsp;y detenía todo la cola de procesos.&lt;br /&gt;
&lt;br /&gt;
Pero con SSIS 2008 no se presenta ese problema, MS&amp;nbsp;lo hizo más inteligente, ¿Sería&amp;nbsp; que con mucha frecuencía los desarrolladores dejaban MessageBox en sus paquetes? pues ahora se genera el siguiente error cuando se ejecuta un paquete con MessageBox&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;Description: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---&amp;gt;; System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is&amp;nbsp;not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.&lt;/span&gt;&lt;/blockquote&gt;
Cuidado, que si SSIS esta configurado para mostrar la notificaciones el MessageBox se invocará y se quedará esperando su clic para continuar.&lt;br /&gt;
&lt;br /&gt;
El código para ejecutar el paquete:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;DTExec 
  /sql Operaciones
  /set \Package.Variables[User::correo].Properties[Value];mi@correo.com
  /set \Package.Variables[User::file].Properties[Value];data.zip
  /set \Package.Variables[User::tipo].Properties[Value];mensual
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/7218589642114105139/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2012/12/ssis-y-los-messagebox.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/7218589642114105139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/7218589642114105139'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2012/12/ssis-y-los-messagebox.html' title='SSIS y los MessageBox'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-6096846276757467968</id><published>2012-11-16T15:02:00.000-08:00</published><updated>2012-11-16T15:18:12.035-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="SSIS"/><title type='text'>SSIS: NULL(DT_STR, «length», «code_page»)</title><content type='html'>Migrando un DTS de SQL Server 2000 a un paquete de SSIS 2008, me econtré dos situaciones muy interesante.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Escenario&lt;/h4&gt;
&lt;br /&gt;
El DTS se encarga de cargar un archivo de texto plano de una fuente externa a una tabla en SQL Server, en una&amp;nbsp;columna&amp;nbsp;tipo fecha se&amp;nbsp;presenta una particularidad. El campo presenta tres valores diferentes:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;vacío, separador de columna continuo (,,) el cual se intepreta como valor nulo&lt;/li&gt;
&lt;li&gt;el texto &lt;em&gt;NULL&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;o una fecha con hora&amp;nbsp;(01/01/2012 00:00:00)&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR82haK2pc_0uQLlwGosqM7KLUJADy7fQwmZy5NHn3gVPP8FmqJbJqy0IOVRCsvwP8CfDCutab1pz2lNfuUZ10IZDGJKz-jJyM66FBNRK0lBj1f32GcGBgyWPQTysDY688r3QJQlfNzSlR/s1600/codificando_20121116_01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;DTS Preview&quot; border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR82haK2pc_0uQLlwGosqM7KLUJADy7fQwmZy5NHn3gVPP8FmqJbJqy0IOVRCsvwP8CfDCutab1pz2lNfuUZ10IZDGJKz-jJyM66FBNRK0lBj1f32GcGBgyWPQTysDY688r3QJQlfNzSlR/s320/codificando_20121116_01.png&quot; title=&quot;Columna con tres diferentes valores&quot; width=&quot;278&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Imagen 1 - Columna con tres diferentes valores&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;h4&gt;
Caso 1&lt;/h4&gt;
&lt;br /&gt;
Con el DTS de SQL Server&amp;nbsp;2000 los datos se cargan sin ninguna complicación, tanto vacío como &lt;em&gt;NULL&lt;/em&gt; son intepretado como un valor nulo en la tabla.&amp;nbsp;Esto no ocurre en el paquete&amp;nbsp;SSIS 2008, sino&amp;nbsp;que se genera un error&amp;nbsp;&quot;The value could not be converted because of a potential loss of data.&quot;, el motivo de este error es obvio, el texto &lt;em&gt;NULL&lt;/em&gt; no se puede convertir a una fecha validad.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWGJNZq5NgyD6_K9HoRBL2nREe08AsJWDj0kRk0P-Ubnh8Ydg5kgJx-j1klegY268BaZ16KOitCldT1yIpJ5tfPFt-CRXSW-6PmmnqTBbgBnFflnqroIZ6iOGXHcOQj-SCXfl6DcdD7ubb/s1600/codificando_20121116_02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Datos en la Tabla&quot; border=&quot;0&quot; height=&quot;189&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWGJNZq5NgyD6_K9HoRBL2nREe08AsJWDj0kRk0P-Ubnh8Ydg5kgJx-j1klegY268BaZ16KOitCldT1yIpJ5tfPFt-CRXSW-6PmmnqTBbgBnFflnqroIZ6iOGXHcOQj-SCXfl6DcdD7ubb/s320/codificando_20121116_02.png&quot; title=&quot;Datos importados a SQL Server&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Imagen 2 - Datos importados a SQL Server&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
La solución a este caso fue utilizar una transformación &lt;em&gt;Derived Column&lt;/em&gt;, esta me permite evaluar el valor de la columna problemática y generar uno nuevo a partir de este.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUAvWojb99GYe5qwT9uP4WMeOFVrQlOW4kljZZD33f4ZWj6f6R7CthyB11iQauy_MdD2lBT76GTG6WJRL0HLtpl9uvtmR3QIAt6XsUO2mrdXMrdLl0A2n_XCXZjOlwrOF3rrXDl85DJdcp/s1600/codificando_20121116_03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUAvWojb99GYe5qwT9uP4WMeOFVrQlOW4kljZZD33f4ZWj6f6R7CthyB11iQauy_MdD2lBT76GTG6WJRL0HLtpl9uvtmR3QIAt6XsUO2mrdXMrdLl0A2n_XCXZjOlwrOF3rrXDl85DJdcp/s1600/codificando_20121116_03.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;
Caso 2&lt;/h4&gt;
Como el problema era el valor &lt;em&gt;NULL,&amp;nbsp;&lt;/em&gt;por lo anto el objetivo consistió en usar la transformación &lt;em&gt;Derived Column &lt;/em&gt;para&amp;nbsp;remplazarlo por&amp;nbsp;vacío, además se configuró la transformación&amp;nbsp;para que sobreescriba el campo&amp;nbsp;y no generar una columna nueva. El tipo de dato de la columna era &lt;em&gt;string[DT_STR]&lt;/em&gt; esto es de esperarse porque la fuente de los datos es un archivo de texto plano.&lt;br /&gt;
&lt;br /&gt;
En la primera expresión que escribí utilicé la función &lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;em&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms141758.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;NULL(DT_STR, «length», «code_page»)&lt;/a&gt;&lt;/em&gt;&lt;/span&gt;, esta función debería de devolver un valor vacío (nulo) válido para el tipo de dato de la columna origen.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;[Column 53] == &quot;NULL&quot; ? NULL(DT_STR,50,1252) : [Column 53]
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Pero la expresión generaba este error:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;
Error at Cargo datos [Derived Column [369]]: For operands of the conditional operator, the data type DT_STR is supported only for input columns and cast operations. The expression &quot;[Column 53] == &quot;NULL&quot; ? NULL(DT_STR,50,1252) : [Column 53]&quot; has a DT_STR operand that is not an input column or the result of a cast, and cannot be used with the conditional operation. To perform this operation, the operand needs to be explicitly cast with a cast operator.&lt;/span&gt;&lt;/blockquote&gt;
¿Qué?&amp;nbsp;El mensaje de&amp;nbsp;error explica que el valor resultante debe provenir de una columna de entrada o o de una operación de conversión de tipos. Entonces, el tercer argumento del operador ternario &lt;em&gt;?: &lt;/em&gt;esta correcto porque el valor proviene de una columna de entrada de datos, pero el segúndo argumento es la función &lt;em&gt;NULL() &lt;/em&gt;que no es un cast ni es un una columna de entrada, por lo tanto lo correcto es:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;--ahora con cast
[Column 53]==&quot;NULL&quot;?(DT_STR,50,1252)NULL(DT_STR,50,1252):[Column 53]

&lt;/pre&gt;
&lt;br /&gt;
&lt;h4&gt;
Resumen&lt;/h4&gt;
&lt;pre class=&quot;brush: sql; highlight: 6&quot;&gt;--incorrecto
[Column 53]==&quot;NULL&quot;?NULL(DT_STR,50,1252):[Column 53]
--cast incorreto
(DT_STR,50,1252)([Column 53]==&quot;NULL&quot;?NULL(DT_STR,50,1252):[Column 53])
--correcto
[Column 53]==&quot;NULL&quot;?(DT_STR,50,1252)NULL(DT_STR,50,1252):[Column 53]
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/6096846276757467968/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2012/11/migrando-un-dts-de-sql-server-2000-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/6096846276757467968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/6096846276757467968'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2012/11/migrando-un-dts-de-sql-server-2000-un.html' title='SSIS: NULL(DT_STR, «length», «code_page»)'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR82haK2pc_0uQLlwGosqM7KLUJADy7fQwmZy5NHn3gVPP8FmqJbJqy0IOVRCsvwP8CfDCutab1pz2lNfuUZ10IZDGJKz-jJyM66FBNRK0lBj1f32GcGBgyWPQTysDY688r3QJQlfNzSlR/s72-c/codificando_20121116_01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-8508259573431543324</id><published>2012-11-15T11:18:00.001-08:00</published><updated>2012-11-19T09:26:53.050-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="e-Books"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>Recomendado: JavaScript Succinctly</title><content type='html'>Recuerdo mi primer &lt;em&gt;¡Hola mundo!&lt;/em&gt; con Javascript, eso fue en el año 2002, mi editor HTML en esa época era Notepad. Estoy casi seguro que todos los programaodores Web&amp;nbsp;han tenido un amor a primera vista con Javascript.&lt;br /&gt;
&lt;br /&gt;
Aún sin tener la plena conciencia de lo que era Javascript en esos días y de lo que llegaría hacer hoy, empecé a introducirme en el mundo mágico de este lenguaje para manipular el &lt;a href=&quot;http://en.wikipedia.org/wiki/Document_Object_Model&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;DOM&lt;/a&gt;. Navegando entre varios sitios, unos muy buenos otro no, fui mejorando mi habilidad en usar&amp;nbsp;el lenguaje.&lt;br /&gt;
&lt;br /&gt;
Pero a pesar de toda la experiencia adquiridad en el camino y&amp;nbsp;de ser una herramienta indiscutible en mis últimos proyectos Web, nuca consideré tener un profundo conocomiento del lenguaje hasta que leí el e-book &lt;strong&gt;JavaScript Succinctly&lt;/strong&gt; de &lt;a href=&quot;http://www.syncfusion.com/resources/techportal/ebooks&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Syncfusion.com&lt;/a&gt;. Gracias a ese libro logré entender la arquitéctura&amp;nbsp;de Javascript.</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/8508259573431543324/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2012/11/recomendado-javascript-succinctly.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8508259573431543324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8508259573431543324'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2012/11/recomendado-javascript-succinctly.html' title='Recomendado: JavaScript Succinctly'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-4445348039848755747</id><published>2012-11-14T14:30:00.000-08:00</published><updated>2012-11-14T14:31:58.519-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="T-SQL"/><title type='text'>sysindexes, sys.indexes y INFORMATION_SCHEMA</title><content type='html'>Estoy en el proceso de migrar los DTS de SQL Server 2000 a paquetes de SSIS de 2008. Estoy aprovechando para implementar algunas &lt;em&gt;mejores prácticas&lt;/em&gt;. La primera duda que tuve fue con el uso de &lt;strong&gt;sysindexes &lt;/strong&gt;para saber de la existencia de un índice, era de mi conocimiento que lo recomendado por MS es utilizar &lt;strong&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms187376.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;sys.indexes&lt;/a&gt;&lt;/strong&gt; porque sysindexes es considerado obsoleto y se mantiene para compatibilidad con versiones anteriores, es decir&amp;nbsp;que el código que escribí en 2006 aún funciona, pero aún tenía la&amp;nbsp;duda ¿cuál sería la mejor práctica?&lt;br /&gt;
&lt;br /&gt;
Decidí consultar con&amp;nbsp;él DBA, su repuesta fue&amp;nbsp;que la&amp;nbsp;mejor práctica para consultar la &lt;a href=&quot;https://www.google.com/search?hl=en&amp;amp;q=definition%3Ametadata&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;metadata&lt;/a&gt;&amp;nbsp;en SQL Server es utlizar el conjunto de vistas &lt;a href=&quot;http://en.wikipedia.org/wiki/Information_schema&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;INFORMATION_SCHEMA&lt;/a&gt;&amp;nbsp;que es un estándar ANSI que MS implentó en SQL Server, pero el estándar no contempla brindar información de los indices.&lt;br /&gt;
&lt;br /&gt;
Al final mi sentencia quedó:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;IF EXISTS(SELECT 1 FROM sys.indexes WHERE name = &#39;IDX&#39;)
 DROP INDEX nombre_tabla.IDX
&lt;/pre&gt;
&lt;br /&gt;
Para finalizar, doy a conocer mi decepción de la función &quot;Migrate...&quot; para los DTS, no me ha servido para nada porque la parte fundametal que es el &lt;em&gt;Data Flow&lt;/em&gt; no la migra. &lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/4445348039848755747/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2012/11/sysindexes-sysindexes-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/4445348039848755747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/4445348039848755747'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2012/11/sysindexes-sysindexes-y.html' title='sysindexes, sys.indexes y INFORMATION_SCHEMA'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-2589469147346781217</id><published>2012-10-18T11:17:00.000-07:00</published><updated>2012-11-14T14:35:40.321-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Documentación"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="TI"/><title type='text'>Aprendí a leer la ayuda</title><content type='html'>En el primer semestre de mi carrera me introdujeron en el mundo de PASCAL y C para convertir la teoría en práctica. Al inicio era muy fácil porque solo se trataba de transcribir los código que el profesor(a) nos daba en papel.&lt;br /&gt;
&lt;br /&gt;
Luego llegó el momento en que deje ser un simple mono (digitador) y me volví un Homo Sapiens, deseaba hacer cosas diferentes y aprender nuevas funciones, expresiones, etc., pero me encontré con una temible tecla F1.&lt;br /&gt;
&lt;br /&gt;
Para mí era como leer jeroglíficos, no entendía para nada el lenguaje usado en la ayuda y me costaba interpretar los ejemplos proporcionados. A medida a que más me enfrentaba a la ayuda fue mejorando mi habilidad para leer misma, sobre todo la notaciones usadas para representar la sintaxis del lenguaje.&lt;br /&gt;
&lt;br /&gt;
Ahora que he adquirido algo de madurez lo primero que hago al valorar cualquier herramienta tecnológica es revisar la calidad de la ayuda con&amp;nbsp;el objetivo&amp;nbsp;de disminuir la curva de aprendizaje&amp;nbsp; de la nueva herramienta.&lt;br /&gt;
&lt;br /&gt;
Cuando empezó popularizarse el uso de las librerías de &lt;a href=&quot;https://www.google.com/search?q=javascript+libraries&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;JavaScript&lt;/a&gt; lo primero que hice fue investigar en los foros cuales eran las más usadas, encontré algunos nombres como &lt;a href=&quot;http://prototypejs.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Prototype&lt;/a&gt;, &lt;a href=&quot;http://mootools.net/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Mootools&lt;/a&gt; y &lt;a href=&quot;http://jquery.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;JQuery&lt;/a&gt;. En esa&amp;nbsp;epoca las más populares eran &lt;a href=&quot;http://mootools.net/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Mootools&lt;/a&gt; y &lt;a href=&quot;http://jquery.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;JQuery&lt;/a&gt;, pero para decidirme en cual usar visité cada sitio para leer su respectiva documentación (ayuda), para mí la de &lt;a href=&quot;http://prototypejs.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Prototype&lt;/a&gt; era la más fácil de aprender y minimizaría la curva de aprendizaje, la documentación de las otras me pareció muy confusa. &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://prototypejs.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Prototype&lt;/a&gt; sin duda me consquistó al mundo de las librerías de &lt;a href=&quot;https://www.google.com/search?q=javascript+libraries&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;JavaScript&lt;/a&gt;, pero &lt;a href=&quot;http://jquery.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;JQuery&lt;/a&gt; se popularizó bastante y empezó hacer la más usada, además ofrecía muy buenas características que realmente me interesaban, así que pronto me cruce a &lt;a href=&quot;http://jquery.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;JQuery&lt;/a&gt;. Pero mi paso por &lt;a href=&quot;http://prototypejs.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Prototype&lt;/a&gt; me ayudó mucho facilitarme la transición.&amp;nbsp;Cuando&amp;nbsp;visitaba la documentación de &lt;a href=&quot;http://jquery.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;JQuery&lt;/a&gt; ya no me pareció confusa y se me hizo más fácil interpretar y comprender los ejemplos.&lt;br /&gt;
&lt;br /&gt;
Sin duda el saber leer la documentación o ayuda ha sido una de mis mejores armas para poder profundizar mis conocimientos&amp;nbsp;en una herramienta tecnológica.</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/2589469147346781217/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2012/10/aprendi-leer-la-ayuda_18.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/2589469147346781217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/2589469147346781217'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2012/10/aprendi-leer-la-ayuda_18.html' title='Aprendí a leer la ayuda'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-2844041017146379617</id><published>2012-04-13T12:02:00.000-07:00</published><updated>2012-04-13T12:02:44.652-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="T-SQL"/><title type='text'>Deseo Cumplido</title><content type='html'>&lt;br /&gt;Nunca pensé que extrañaría algo de MS Access, pero así fue.&lt;br /&gt; &lt;br /&gt;La primera versión de MS SQL Server que usé fue la 7, aunque por muy poco tiempo, la transición a 2000 fue rápida; con 2k fue que profundice en la codificación de T-SQL. &lt;br /&gt;&lt;br /&gt; Lo impensable, extrañaba la función IIF de MS Access, era un experto usándola y con frecuencia me preguntaba ¿Por qué SQL Server no tiene la función IIF? me imagino que pensaras que soy un caprichoso y que la expresión CASE WHEN era mas que suficiente y asi es, estas en toda la razón.&lt;br /&gt;&lt;br /&gt;Pero me parece que MS se dio cuenta de la importancia de poder escribir código con personalidad y elegancia. Y desde la versión 2005 a venido agregando mayores características a T-SQL que permiten escribir un código de programador elite, por ejemplo TRY CATCH, WITH, etc.&lt;br /&gt;&lt;br /&gt; Sorpresa, mi deseo fue cumplido en la versión 2012 que incluye la función IIF, ahora podre escribir código T-SQL con un toque de poesía. Lo anterior me lleva a pensar que mi deseo no era un capricho sino una validad necesidad.&lt;br /&gt;&lt;br /&gt;Para conocer más de las nuevas características de SQL 2012 visita &lt;a href=&quot;http://j.mp/HGi0cJ&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Programmability Enhancements (Database Engine)&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/2844041017146379617/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2012/04/deseo-cumplido.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/2844041017146379617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/2844041017146379617'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2012/04/deseo-cumplido.html' title='Deseo Cumplido'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-105872796287376941</id><published>2012-04-09T20:06:00.004-07:00</published><updated>2012-04-13T12:03:36.872-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad"/><title type='text'>A defenderse de XSRF</title><content type='html'>El desarrollo web implica mucho estar al tanto de las diferentes forma de ataques, hasta  el momento conocía &lt;a href=&quot;http://j.mp/HFBBDG&quot; target=&quot;_blank&quot;&gt;SQL Injection&lt;/a&gt; y &lt;a href=&quot;http://j.mp/Id5nBz&quot; target=&quot;_blank&quot;&gt;Cross-site scripting (XSS)&lt;/a&gt;. Hoy conocí&amp;nbsp;&lt;a href=&quot;http://j.mp/ItPTYM&quot; target=&quot;_blank&quot;&gt;Cross-Site Request Forgery (XSRF)&lt;/a&gt;, así que tengo que algo nuevo que &amp;nbsp;aprender y aplicar en los sitios que tengo en producción.</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/105872796287376941/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2012/04/defenderse-de-xsrf.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/105872796287376941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/105872796287376941'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2012/04/defenderse-de-xsrf.html' title='A defenderse de XSRF'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-8577269166001170163</id><published>2011-09-28T09:28:00.000-07:00</published><updated>2012-11-14T14:37:30.635-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Nicaragua"/><category scheme="http://www.blogger.com/atom/ns#" term="TI"/><title type='text'>Información TIC de Nicaragua</title><content type='html'>Navegando, por pura casualidad, me encontré con un documento muy interesante sobre el avance de las TIC en nicaragua. El documento fue elaborado por la cancillería de Dinamarca en Junio 2009. Lo más divertido es que cuando estuve tratando de conseguir esta información no la encontré sino hasta el 2011.&lt;br /&gt;
&lt;br /&gt;
En resumen el documento consiste en ofrecer a Nicaragua como un buen punto de adquirir servicios TIC&amp;nbsp;gracias&amp;nbsp;la crecimiento de la red telecomunicaciones y el acceso de Internet por las redes Maya y Arcos, a esto se le agrega un bajo costo en mano de obra y la disposición de profesionales TIC por el alto desempleo.&lt;br /&gt;
&lt;br /&gt;
Pueden leer el documento a más a detalle por acá&amp;nbsp;&lt;a href=&quot;http://www.slideshare.net/pedropaiz/reporte-tic-nicaragua&quot;&gt;http://www.slideshare.net/pedropaiz/reporte-tic-nicaragua&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/8577269166001170163/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2011/09/informacion-tic-de-nicaragua.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8577269166001170163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8577269166001170163'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2011/09/informacion-tic-de-nicaragua.html' title='Información TIC de Nicaragua'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-337017184893097443</id><published>2011-06-22T08:47:00.000-07:00</published><updated>2011-06-22T08:51:33.234-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP .NET"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC 3"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>Cambiando a ASP.NET MVC 3</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Después de conocer PHP había quedado convencido de su superioridad sobre ASP, pero la evolución a ASP .NET fue un cambio de 360°, el nacimiento de los Server Control simplificó mucho el trabajo del desarrollador, pero se tuvo que sacrificar un poco la libertad en el diseño de la interfaz gráfica. Por lo tanto continué profundizando en PHP, porque los &lt;a href=&quot;http://es.wikipedia.org/wiki/Framework&quot;&gt;frameworks&lt;/a&gt; permitían agilizar el desarrollo y mantener un control total sobre diseño de&amp;nbsp; la interfaz gráfica, pero sobre todo una fácil implementación de AJAX.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Ahora MVC 3, me ha hecho inclinar más aún la balanza hacia ASP .NET, porque ahora se suma al fácil desarrollo, un buen control en el diseño de la interfaz gráfica. Realmente me he impresionado la facilidad con la que se implementa un nuevo proyecto.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Ahora sólo espero que Microsoft trabaje en mejorar el desempeño del ASP .NET, el cual está todavía muy lejos de alcanzar a PHP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Si quieres aprender MVC 3 visita &lt;a href=&quot;http://www.asp.net/mvc&quot;&gt;http://www.asp.net/mvc&lt;/a&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/337017184893097443/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2011/06/cambiando-aspnet-mvc-3.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/337017184893097443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/337017184893097443'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2011/06/cambiando-aspnet-mvc-3.html' title='Cambiando a ASP.NET MVC 3'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-5330258420035950229</id><published>2011-06-15T19:08:00.000-07:00</published><updated>2011-06-15T19:08:49.749-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><category scheme="http://www.blogger.com/atom/ns#" term="Móviles"/><title type='text'>Blogger: Plantillas para móviles</title><content type='html'>Que buena sorpresa me&amp;nbsp;encontré hoy al entrar en&amp;nbsp;Blogger,&amp;nbsp;éste&amp;nbsp;agregó plantillas para dispositivos móviles en la publicaciòn de lo blogs. Me parece&amp;nbsp; que tardaron mucho tiempo para hacer el cambio, pero lo importante es que ya existe la opción. Ahora configurarla y disfrutar de ella desde mi Blackberry.</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/5330258420035950229/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2011/06/blogger-plantillas-para-moviles.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/5330258420035950229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/5330258420035950229'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2011/06/blogger-plantillas-para-moviles.html' title='Blogger: Plantillas para móviles'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-8536149579583590698</id><published>2011-04-15T15:36:00.000-07:00</published><updated>2011-04-15T15:36:07.372-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Antivirus"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Anti-Malware y Avast! muy buen equipo</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;Si eres de la filosofía de buscar productos gratis o eres una buena personas y no estás de acuerdo con la piratería, te recomiendo estas aplicaciones de anti virus &lt;a href=&quot;http://www.avast.com/es-ww/free-antivirus-download&quot;&gt;Avast!&lt;/a&gt; y &lt;a href=&quot;http://www.malwarebytes.org/mbam.php&quot;&gt;Anti-Malware&lt;/a&gt;, ambos son versiones limitadas, pero juntos hacen un buen equipo, al estilo merengue. El detalle está en que la versión limitada de Anti-Malware, la cual no se ejecuta en modo &quot;tiempo real&quot;, por lo tanto te recomiendo hacer una revisión completa de tu equipo una vez al mes.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;Si al final te terminan convenciendo el funcionamiento de ambos, te recomiendo hacer la inversión de adquirir la versión completa.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/8536149579583590698/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2011/04/anti-malware-y-avast-muy-buen-equipo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8536149579583590698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8536149579583590698'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2011/04/anti-malware-y-avast-muy-buen-equipo.html' title='Anti-Malware y Avast! muy buen equipo'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-4061880065274744080</id><published>2011-02-26T10:03:00.000-08:00</published><updated>2013-01-25T13:08:39.611-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BlackBerry"/><category scheme="http://www.blogger.com/atom/ns#" term="Smartphones"/><title type='text'>Recibir archivos en BB por Bluetooth</title><content type='html'>No es mi costumbre andar intercambiando fotos,&amp;nbsp;música, mp3, etc. vía bluetooth con mi teléfono. Con lo celulares normalmente es bien &amp;nbsp;sencillo intercambiar archivo con bluetooth, pero los BB me han dejado algo incoforme, sino lo pones en modo de recepción no hay forma de &amp;nbsp;recibir el archivo. Después de varios meses de tener el BB, hasta hoy (descubrí el agua helada) supe como recibir archivo en mi BB, porque tenía la necesidad de copiar un SW. Para mayor info visiten&amp;nbsp;&lt;a href=&quot;http://www.blackberry.com/btsc/search.do?cmd=displayKC&amp;amp;docType=kc&amp;amp;externalId=KB05409&quot;&gt;Transfer a file using Bluetooth technology between two BlackBerry smartphones&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/4061880065274744080/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2011/02/recibir-archivos-en-bb-por-bluetooth.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/4061880065274744080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/4061880065274744080'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2011/02/recibir-archivos-en-bb-por-bluetooth.html' title='Recibir archivos en BB por Bluetooth'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-5396124398739977248</id><published>2011-02-15T08:17:00.000-08:00</published><updated>2011-02-15T08:17:53.207-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Excel"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><title type='text'>Excel una caja negra</title><content type='html'>Hace mucho tiempo desarrollé una aplicación que guarda los datos de una hoja de Excel en un archivo de texto plano siguiendo una estructura pre-establecida, la aplicación es utilizada mayoritariamente por contadores, quienes continuamente se ven sorprendidos, porque cuando generan el archivo de texto plano y lo abren descubren que encuentran cifras incorrectas. Por su puesto ellos lo primero que hacen es culpar a la aplicación que por&amp;nbsp;intransitividad&amp;nbsp;recame en mi.&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMwmkzA-xR16qjRKCOEP-WL8xBLRmF_oGvXzn7_rZJEy3cWrvT_bUfQ1_MIea92vOswh3hpzEb0UZPl_BZbk4IXs7TSwDe2K4cFYdmtPyjdbGJVfI-gyixgFMDjP3QdHDC1t9SDH3pc_XO/s1600/excel_formula.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;104&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMwmkzA-xR16qjRKCOEP-WL8xBLRmF_oGvXzn7_rZJEy3cWrvT_bUfQ1_MIea92vOswh3hpzEb0UZPl_BZbk4IXs7TSwDe2K4cFYdmtPyjdbGJVfI-gyixgFMDjP3QdHDC1t9SDH3pc_XO/s320/excel_formula.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Imagen 1 - Formula&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;En la imagen 1 observan una simple formula cuyo resultado es 2.33, lo cual es completamente correcto, lo puedes verificar con calculadora o bien con&amp;nbsp;lápiz&amp;nbsp;y papel. Si le aplican formato a la celda para que presente 15 o más números decimales notaran un valor inesperado.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;/div&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqObz7yEFnDpVzBB7zecuT4YOXvYONORxJCi8721o1DkiN_4XkkAneu3UvqDV8D3rhqOxHZHVnRWNzKcEJ7ZruaJBiAfKZWK6G5em4KiKnwdjKfNzla08nQZ5YQscUpd8P-gT4KWUMtido/s1600/excel_formula_02.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;120&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqObz7yEFnDpVzBB7zecuT4YOXvYONORxJCi8721o1DkiN_4XkkAneu3UvqDV8D3rhqOxHZHVnRWNzKcEJ7ZruaJBiAfKZWK6G5em4KiKnwdjKfNzla08nQZ5YQscUpd8P-gT4KWUMtido/s320/excel_formula_02.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Imagen&amp;nbsp;2 - Celda formateada con 15 decimales&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;En la&amp;nbsp;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;imagen&amp;nbsp; &lt;/span&gt;2 pueden ver una copia de la formula pero con la celda formateada&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;con 15 decimales, ¿de dónde sale esa cifra? No tengo idea, pero esa es la cifra que captura la aplicación que desarrollé y que se escribe en el archivo de texto plano.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0X40PKGOhShiznXHtX7q9o-8UQX0S214iEngG9oXlaG_qm3i_FSPtqvDpUcxJyzRudh_APmKd7dX1cX2j6n6mvxolGi8-Msm0Vzq_btvYkEv8a0cRkdUQfjoNxXMmOgrz6I3ewz1iQiPu/s1600/excel_formula_03.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;104&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0X40PKGOhShiznXHtX7q9o-8UQX0S214iEngG9oXlaG_qm3i_FSPtqvDpUcxJyzRudh_APmKd7dX1cX2j6n6mvxolGi8-Msm0Vzq_btvYkEv8a0cRkdUQfjoNxXMmOgrz6I3ewz1iQiPu/s320/excel_formula_03.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Imagen 3 - Usando la función&amp;nbsp;REDONDEAR&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;Hasta el momento la solución más rápida que he encontrado para darle a los contadores, cuando me llaman desconcertados ante la situación, es indicarle que utilicen la función REDONDEAR (ROUND) en sus formulas, para que la aplicación lea el valor correcto, a como se observa en la imagen 3.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/5396124398739977248/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2011/02/excel-una-caja-negra.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/5396124398739977248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/5396124398739977248'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2011/02/excel-una-caja-negra.html' title='Excel una caja negra'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMwmkzA-xR16qjRKCOEP-WL8xBLRmF_oGvXzn7_rZJEy3cWrvT_bUfQ1_MIea92vOswh3hpzEb0UZPl_BZbk4IXs7TSwDe2K4cFYdmtPyjdbGJVfI-gyixgFMDjP3QdHDC1t9SDH3pc_XO/s72-c/excel_formula.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-8308296502050739734</id><published>2011-02-04T06:46:00.000-08:00</published><updated>2011-02-15T08:19:03.529-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Cannot delete System: Error while deleting key</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;Tener el control del fondo de pantalla de mi PC es de extrema importancia, todos queremos tener una imagen que nos inspire, relaje, nos traiga buenos recuerdos, nos motive, etc. Las ocasiones en que he perdido ese control han sido para mí como una declaración de guerra y no volvería tener paz hasta volver a tener en el control.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;Entre las políticas de mi lugar de trabajo está la de tener un fondo de pantalla institucional, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;¿quién no se aburre al tener el mismo fondo todo un año?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ES-NI&quot; style=&quot;mso-ansi-language: ES-NI;&quot;&gt;Así que recurrí a preguntar a San Google, la que sucedía es que había perdido el control sobre una llave en especifica del registro de Windows, con solo volver tomar la propiedad del mismo ya pude regresar a la normalidad. Acá les dejo el enlace que me brindo la solución&amp;nbsp;&lt;a href=&quot;http://www.pcreview.co.uk/forums/error-deleting-key-t1578222.html&quot;&gt;Error deleting key&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/8308296502050739734/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2011/02/cannot-delete-system-error-while.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8308296502050739734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/8308296502050739734'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2011/02/cannot-delete-system-error-while.html' title='Cannot delete System: Error while deleting key'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-1003557756022592440</id><published>2011-01-22T08:08:00.000-08:00</published><updated>2011-01-22T08:15:18.780-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Antivirus"/><category scheme="http://www.blogger.com/atom/ns#" term="Spyware"/><title type='text'>Me deshice del Search Settings v1.2.3...</title><content type='html'>Inesperadamente empezó a ejecutarse un instalador de Search Setting v1.2.3 cada vez que iniciaba el explorador web o de archivos. Inicialmente pensé que era una aplicación complementaria de algunos de los SW que tengo instalados que se había corrupto, trate de repararlo pero no encontré como, así que en cada ocasión que el instalador se disparaba yo le daba cancelar.&lt;br /&gt;
&lt;br /&gt;
Como yo confío mucho en el antivirus que tengo no imagine que ese instalador era un spyware, así que después de varios días de estar cancelando el falso instalador se me ocurrió preguntar a San Google, en el cual me dio a conocer la verdadera identidad de Bourne y como se debía eliminar.&lt;br /&gt;
&lt;br /&gt;
Les dejo el enlace del foro en el cual encontré un T-800 del Search Settings v1.2.3 &lt;a href=&quot;http://www.forospyware.com/t311771.html&quot;&gt;forospyware&lt;/a&gt;, sólo espero que detrás el T-800 no venga un T-1000.</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/1003557756022592440/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2011/01/me-deshice-del-search-settings-v123.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/1003557756022592440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/1003557756022592440'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2011/01/me-deshice-del-search-settings-v123.html' title='Me deshice del Search Settings v1.2.3...'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-1347631294396985580</id><published>2010-10-29T21:49:00.000-07:00</published><updated>2010-10-29T21:51:09.049-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Sitios"/><title type='text'>W3Schools</title><content type='html'>En una ocasión que me encontraba programando un proyecto personal y necesité recordar JavaScript, me pregunte ¿dónde puedo encontrar una referencia de JavaScript? recordé mi página amiga de muchos años &lt;a href=&quot;http://www.w3schools.com/&quot;&gt;W3Schools&lt;/a&gt;, en&amp;nbsp;ese momento&amp;nbsp;me dije &quot;no puedo dejar de escribir en mi blog sobre ella&quot;.&lt;br /&gt;
&lt;br /&gt;
En ese sitio&amp;nbsp;me inicié en muchas de las tecnologías para la web, por ejemplo CSS, XML, etc.. Desde que la encontré no he dejado de visitarla, porque me brinda&amp;nbsp;una referencia rápida de CSS y JavaScript, entre otras.&lt;br /&gt;
&lt;br /&gt;
Así que la recomiendo a todas aquellas personas que estén iniciando sus pasos en el mundo de hacer páginas web. Es una página muy clara y sencilla, te brinda la posibilidad de hacer tus&amp;nbsp;propios ejercicios en línea. Me gusta mucho&amp;nbsp;los Quizzes, porque me permite autoevaluarme, así&amp;nbsp;que de vez en cuando los&amp;nbsp;repito para&amp;nbsp;refrescar&amp;nbsp;mis&amp;nbsp;conocimientos con respecto algún tema en especifico.&lt;br /&gt;
&lt;br /&gt;
También te brinda la posibilidad de&amp;nbsp;obtener un certificado,&amp;nbsp;el cual todavía no me he dado el lujo de hacerlo. Tal vez alguien me cuenta que tal son.&lt;br /&gt;
&lt;br /&gt;
Espero que disfruten de la página tanto como yo.</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/1347631294396985580/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2010/10/w3schools.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/1347631294396985580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/1347631294396985580'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2010/10/w3schools.html' title='W3Schools'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-7441242819277546990</id><published>2010-09-24T20:20:00.000-07:00</published><updated>2010-09-24T20:20:22.540-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><title type='text'>Configurando SyntaxHighligther</title><content type='html'>&lt;a href=&quot;http://alexgorbatchev.com/&quot;&gt;SyntaxHighligther&lt;/a&gt; es una herramienta preciosa que era necesaria para este blog. La recomiendo a todos aquellos bloggers que les gusta publicar código. Mis agradecimiento a Alex Gorbatchev por tan excelente aporte.&lt;br /&gt;
&lt;br /&gt;
Hora de probar.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: js&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
alert(&#39;Hello World!&#39;);
&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Precioso.</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/7441242819277546990/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2010/09/configurando-syntaxhighligther.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/7441242819277546990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/7441242819277546990'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2010/09/configurando-syntaxhighligther.html' title='Configurando SyntaxHighligther'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3296983612585198839.post-1342133609340988161</id><published>2010-07-31T00:11:00.000-07:00</published><updated>2010-07-31T00:11:26.846-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Antivirus"/><title type='text'>Actualiza tu antivirus</title><content type='html'>Mantener la definiciones del antivirus actualizadas era para mi suficiente para sentirme seguro, pero de un tiempo acá venía notando un comportamiento inusual en mi PC, inmediatamente sospeche de virus.&lt;br /&gt;
&lt;br /&gt;
Tuve que volver a recordar las mejores prácticas para eliminar los virus de mi PC, realmente tenía rato de no enfrentarme con virus. Inicie mi PC en modo seguro y ejecute el antivirus, este encontró unos cuanto virus lo cuales logró limpiar, por lo tanto dí por superado el hecho.&lt;br /&gt;
&lt;br /&gt;
En los siguientes días volví&amp;nbsp; a notar el inusual comportamiento, así que otra vez al ataque, volví a ejecutar el antivirus, obteniendo los mismos resultado. Así que empezé a sospechar que el motor antivirus&amp;nbsp; necesitaba una actualización, pero no tenía como hacerlo por falta de $$, para mi el antivirus es muy importante para estar utilizando una copia pirata.&lt;br /&gt;
&lt;br /&gt;
Así que averiguaré que antivirus utilizaban las personas que yo conozco y me he encontrado con Avast!, lo instale y ejecute, y este me encontró una gran cantidad de archivos infectados. Ahora si noto una mejoría en el rendimiento de mi PC. Pero los más importante es una versión gratuita.&lt;br /&gt;
&lt;br /&gt;
Seguiremos probando Avast! para ver si al final lo empiezo a recomendar. Mientras tanto tendré que aprender la lección no sólo confiar en tener actualizada la definición de los virus.</content><link rel='replies' type='application/atom+xml' href='http://reel-codificando.blogspot.com/feeds/1342133609340988161/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://reel-codificando.blogspot.com/2010/07/actualiza-tu-antivirus.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/1342133609340988161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3296983612585198839/posts/default/1342133609340988161'/><link rel='alternate' type='text/html' href='http://reel-codificando.blogspot.com/2010/07/actualiza-tu-antivirus.html' title='Actualiza tu antivirus'/><author><name>Rolando Espinosa</name><uri>http://www.blogger.com/profile/17972687110267581019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>