<?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-5217763770974196275</id><updated>2024-11-12T04:19:46.944-05:00</updated><category term="Programación"/><category term="C#"/><category term="Database"/><category term="Oracle"/><category term="Visual Studio .NET"/><category term=".NET"/><category term="Linux"/><category term="Windows Server"/><category term="HP"/><category term="Impresoras"/><category term="Procmail"/><category term="Sendmail"/><category term="Terminal Server."/><category term="Windows"/><category term="Excel"/><category term="Exportar Base de Datos"/><category term="Intercalación"/><category term="Migración"/><category term="Oracle 11g a 10g"/><category term="SQL Server"/><category term="Shared Server"/><title type='text'>TheJ@ck Blog -- De Tosagua pa´ el mundo</title><subtitle type='html'>El tema central de este BLOG es de programación y tecnología en general, aunque tambien publique otros temas.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5217763770974196275.post-7281142050799676757</id><published>2014-05-29T16:37:00.000-05:00</published><updated>2014-11-25T14:28:25.853-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Excel"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio .NET"/><title type='text'>Exportar un DataTable a Excel desde C#</title><content type='html'>Estimados Corregí un error en el código, paso la variable dt como parametro tipo DataTable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un pequeño pero muy útil fragmento de código que explica como exportar desde C# un DataTable a Excel, espero que sea de gran ayuda para el lector saludos.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Codigo:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
using xls = Microsoft.Office.Interop.Excel;&lt;/div&gt;
&lt;div&gt;
/////AQUI TODO LO DEMAS:..&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
namespace Prueba&lt;/div&gt;
&lt;div&gt;
{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; public class Excel&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
public void exportXLS(DataTable dt)&lt;/div&gt;
&lt;div&gt;
{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var lines = new List&lt;string&gt;();&lt;/string&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string[] columnNames = dt.Columns.Cast&lt;datacolumn&gt;().&lt;/datacolumn&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Select(column =&amp;gt; column.ColumnName).&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ToArray();&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var header = string.Join(((char)9).ToString(), columnNames);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lines.Add(header);&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var valueLines = dt.AsEnumerable()&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;.Select(row =&amp;gt; string.Join(((char)9).ToString(), row.ItemArray));&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lines.AddRange(valueLines);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string cArchivo = &quot;suarchivo.xls&quot;;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; File.WriteAllLines(cArchivo, lines);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oXL = new xls.Application();&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oXL.Workbooks.Open(cArchivo);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oXL.Visible = true;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/7281142050799676757/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/7281142050799676757' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7281142050799676757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7281142050799676757'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2014/05/exportar-un-datatable-excel-desde-c.html' title='Exportar un DataTable a Excel desde C#'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-35757474619219868</id><published>2013-03-26T09:18:00.003-05:00</published><updated>2013-03-26T09:18:38.393-05:00</updated><title type='text'>Hacer hablar a tu aplicación de .NET</title><content type='html'>En .NET podemos hacer fácilmente que nuestra aplicación lea un texto gracias al sintetizador de voz de Microsoft, por defecto en nuestro Windows tenemos la Voz de Anna, en Idioma ingles, pero podemos bajar &amp;nbsp;otros idiomas y otras voces, en la siguiente aplicación enumeramos las voces en un listbox para luego seleccionarla para que lea el texto que se encuentra en el textbox cuando presionemos el botón.&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/AVvXsEh2gpKHd9qWF26tlaQ1jS6qaucEZpZKDr7AucAklv-NZZ3S-X_dI7jn8P3p2RNrvG7H9DMhPGdeKyVgh8vd5oYUbju2cPmg0k9-H0PxPxTAcCpN1ADxTV57y1mWtd1XA9kOEAkG9huSJPc/s1600/aplicacion+voice.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2gpKHd9qWF26tlaQ1jS6qaucEZpZKDr7AucAklv-NZZ3S-X_dI7jn8P3p2RNrvG7H9DMhPGdeKyVgh8vd5oYUbju2cPmg0k9-H0PxPxTAcCpN1ADxTV57y1mWtd1XA9kOEAkG9huSJPc/s320/aplicacion+voice.png&quot; width=&quot;320&quot; /&gt;&lt;/a&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;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Código:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
using System;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
using System.Collections.Generic;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
using System.ComponentModel;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
using System.Data;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
using System.Drawing;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
using System.Linq;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
using System.Text;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
using System.Windows.Forms;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
using SpeechLib;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
namespace PruebaDeVoz&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
{&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; public partial class Form1 : Form&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Form1()&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; InitializeComponent();&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SpVoice v = new SpVoice();&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private void button1_Click(object sender, EventArgs e)&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v.Voice = v.GetVoices().Item(listBox1.SelectedIndex);&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; v.Speak(textBox1.Text);&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private void Form1_Load(object sender, EventArgs e)&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (ISpeechObjectToken &amp;nbsp;voz in v.GetVoices())&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; listBox1.Items.Add(voz.GetDescription());&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&amp;nbsp; &amp;nbsp; }&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
}&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Espero que le sea de utilidad esta entrada, podrán darse cuenta que es realmente sencillo sintetizar voz gracias a la tecnología Microsoft.&lt;/div&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/35757474619219868/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/35757474619219868' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/35757474619219868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/35757474619219868'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2013/03/hacer-hablar-tu-aplicacion-de-net.html' title='Hacer hablar a tu aplicación de .NET'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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/AVvXsEh2gpKHd9qWF26tlaQ1jS6qaucEZpZKDr7AucAklv-NZZ3S-X_dI7jn8P3p2RNrvG7H9DMhPGdeKyVgh8vd5oYUbju2cPmg0k9-H0PxPxTAcCpN1ADxTV57y1mWtd1XA9kOEAkG9huSJPc/s72-c/aplicacion+voice.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217763770974196275.post-7236178954294058526</id><published>2012-06-19T16:11:00.001-05:00</published><updated>2012-11-26T11:45:04.874-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Exportar Base de Datos"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle 11g a 10g"/><title type='text'>Exportar Base de Datos de Oracle 11g a  Oracle 10g</title><content type='html'>Siempre es fácil exportar de una versión anterior a una nueva, ya que la nueva tiene las características de reconocer formatos anteriores, sin embargo uno de los problemas sería intentar que un archivo DMP generado de la versión 11g por ejemplo, sea reconocido en la versión 10g.&lt;br /&gt;
Siempre había estado acostumbrado hacer una exportación simple con el comando “Exp” , lo he utilizado sin problema. Cuando me encontré con la necesidad de exportar hacia una versión inferior ya no funcionó, después de buscar en algunos foros encontré la solución, exportación por medio del comando “EXPDP” este me crea un dumpfile, en el que puedo especificarle la versión con la que necesito compatibilidad.&lt;br /&gt;
Un ejemplo de línea de comando en una base de datos 11g puede ser:&lt;br /&gt;
expdp &lt;a href=&quot;mailto:miuser/mipass@midb&quot;&gt;miuser/mipass@midb&lt;/a&gt; schemas=miesquema dumpfile=mifile.dmp&amp;nbsp; version=10&lt;br /&gt;
En este comando le especifico que lo quiero con compatibilidad de versión 10&lt;br /&gt;
El archivo se va a generar en el directorio oracle:&amp;nbsp; DATA_PUMP_DIR, cuando deseamos importarlo, debemos revisar si existe el directorio DATA_PUMP_DIR en la base de datos destino, si no existe debemos crear ese directorio, tanto a nivel de sistema operativo como a nivel de Oracle.&amp;nbsp; una vez que estemos seguros de la existencia y la ruta, el archivo debe copiarse en el directorio antes mencionado para poder ser importado, se importa de la siguiente manera:&lt;br /&gt;
impdp userid=tuuser/tupass schemas=tuesquema dumpfile=tufile.dmp &lt;br /&gt;
Espero que sea de ayuda. </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/7236178954294058526/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/7236178954294058526' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7236178954294058526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7236178954294058526'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2012/06/exportar-base-de-datos-de-oracle-11g.html' title='Exportar Base de Datos de Oracle 11g a  Oracle 10g'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-5360104923185784630</id><published>2012-02-17T12:26:00.001-05:00</published><updated>2012-11-26T11:47:23.554-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Programación"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio .NET"/><title type='text'>Comparación de dos instancias de una Clase Compleja en C#</title><content type='html'>Una de las funciones mas útiles es “Equals” nativo de la clase tipo object, esto nos ayuda a comparar si una instancia de un objeto es igual a otra, pero cuando contamos con clases un poco mas complejas, donde tenemos varias propiedades, los resultados tal vez no sean muy coherentes, en este caso es mejor realizar un algoritmo de comparación, para esto debemos hacer que nuestra clase esté basado en la Interface &lt;strong&gt;IEquatable&lt;/strong&gt;, y programarla función “Equals”, ahora esto puede ser un asunto muy engorroso si tenemos bastantes propiedades que queremos comparar, y es en este momento que podemos utilizar &lt;strong&gt;“Reflection”&lt;/strong&gt;, en el siguiente ejemplo crearé una clase “credito” con algunas propiedades basada a la interface &lt;strong&gt;IEquatable,&lt;/strong&gt; y en la programación de la función Equals usaremos reflection, para evitar comparar propiedad por propiedad, esto es bastante útil cuando se tiene bastante bastantes propiedades:&lt;br /&gt;
&lt;div id=&quot;codeSnippetWrapper&quot; style=&quot;background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; height: 247px; line-height: 12pt; margin: 20px 0px 10px; max-height: 200px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 94.73%;&quot;&gt;
&lt;div id=&quot;codeSnippet&quot; style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum1&quot; style=&quot;color: #606060;&quot;&gt;   1:&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; credito:IEquatable&amp;lt;credito&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum2&quot; style=&quot;color: #606060;&quot;&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum3&quot; style=&quot;color: #606060;&quot;&gt;   3:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; Decimal credito_id { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum4&quot; style=&quot;color: #606060;&quot;&gt;   4:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String vendedor_id { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum5&quot; style=&quot;color: #606060;&quot;&gt;   5:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String estado { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum6&quot; style=&quot;color: #606060;&quot;&gt;   6:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String cliente_id { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum7&quot; style=&quot;color: #606060;&quot;&gt;   7:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String nombre { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum8&quot; style=&quot;color: #606060;&quot;&gt;   8:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String apellido { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum9&quot; style=&quot;color: #606060;&quot;&gt;   9:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; DateTime fecha_nac { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum10&quot; style=&quot;color: #606060;&quot;&gt;  10:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String direccion_domicilio { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum11&quot; style=&quot;color: #606060;&quot;&gt;  11:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String telefono_domicilio { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum12&quot; style=&quot;color: #606060;&quot;&gt;  12:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; Double numero_cuotas { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum13&quot; style=&quot;color: #606060;&quot;&gt;  13:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String cedula_conyuge { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum14&quot; style=&quot;color: #606060;&quot;&gt;  14:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String nombre_conyuge { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum15&quot; style=&quot;color: #606060;&quot;&gt;  15:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String observacion { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum16&quot; style=&quot;color: #606060;&quot;&gt;  16:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String email { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum17&quot; style=&quot;color: #606060;&quot;&gt;  17:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; Int64 cotizacion_id { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum18&quot; style=&quot;color: #606060;&quot;&gt;  18:&lt;/span&gt;     &lt;span style=&quot;color: green;&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum19&quot; style=&quot;color: #606060;&quot;&gt;  19:&lt;/span&gt;     &lt;span style=&quot;color: green;&quot;&gt;/// Permite realizar comparaciones del objeto de este  tipo &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum20&quot; style=&quot;color: #606060;&quot;&gt;  20:&lt;/span&gt;     &lt;span style=&quot;color: green;&quot;&gt;/// desarrollado por Patricio Rosado &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum21&quot; style=&quot;color: #606060;&quot;&gt;  21:&lt;/span&gt;     &lt;span style=&quot;color: green;&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum22&quot; style=&quot;color: #606060;&quot;&gt;  22:&lt;/span&gt;     &lt;span style=&quot;color: green;&quot;&gt;/// &amp;lt;param name=&quot;other&quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum23&quot; style=&quot;color: #606060;&quot;&gt;  23:&lt;/span&gt;     &lt;span style=&quot;color: green;&quot;&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum24&quot; style=&quot;color: #606060;&quot;&gt;  24:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt; Equals(credito other)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum25&quot; style=&quot;color: #606060;&quot;&gt;  25:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum26&quot; style=&quot;color: #606060;&quot;&gt;  26:&lt;/span&gt;         &lt;span style=&quot;color: green;&quot;&gt;//Se Obtienen la lista de propiedades de los objetos para compararlos uno a uno.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum27&quot; style=&quot;color: #606060;&quot;&gt;  27:&lt;/span&gt;         PropertyInfo [] prop1 =GetType().GetProperties();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum28&quot; style=&quot;color: #606060;&quot;&gt;  28:&lt;/span&gt;         PropertyInfo [] prop2 =GetType().GetProperties();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum29&quot; style=&quot;color: #606060;&quot;&gt;  29:&lt;/span&gt;         &lt;span style=&quot;color: blue;&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; i = 0; i &amp;lt; prop1.Length; i++)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum30&quot; style=&quot;color: #606060;&quot;&gt;  30:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum31&quot; style=&quot;color: #606060;&quot;&gt;  31:&lt;/span&gt;             &lt;span style=&quot;color: green;&quot;&gt;// en caso de que ninguno de las dos propiedades no sean nulas, se comparan.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum32&quot; style=&quot;color: #606060;&quot;&gt;  32:&lt;/span&gt;             &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (prop1[i].GetValue(&lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;) != &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt; &amp;amp;&amp;amp; prop2[i].GetValue(other, &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;) != &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum33&quot; style=&quot;color: #606060;&quot;&gt;  33:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum34&quot; style=&quot;color: #606060;&quot;&gt;  34:&lt;/span&gt;                 &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (!prop1[i].GetValue(&lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;).Equals(prop2[i].GetValue(other, &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;)))&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum35&quot; style=&quot;color: #606060;&quot;&gt;  35:&lt;/span&gt;                     &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum36&quot; style=&quot;color: #606060;&quot;&gt;  36:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum37&quot; style=&quot;color: #606060;&quot;&gt;  37:&lt;/span&gt;             &lt;span style=&quot;color: blue;&quot;&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum38&quot; style=&quot;color: #606060;&quot;&gt;  38:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum39&quot; style=&quot;color: #606060;&quot;&gt;  39:&lt;/span&gt;                 &lt;span style=&quot;color: green;&quot;&gt;//Caso contrario se revisa que los dos estén nulos, si uno de los dos no es nulo &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum40&quot; style=&quot;color: #606060;&quot;&gt;  40:&lt;/span&gt;                 &lt;span style=&quot;color: green;&quot;&gt;//Se retorna False.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum41&quot; style=&quot;color: #606060;&quot;&gt;  41:&lt;/span&gt;                 &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (prop1[i].GetValue(&lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;) == &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt; &amp;amp;&amp;amp; prop2[i].GetValue(other, &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;) != &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum42&quot; style=&quot;color: #606060;&quot;&gt;  42:&lt;/span&gt;                     &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum43&quot; style=&quot;color: #606060;&quot;&gt;  43:&lt;/span&gt;                 &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (prop1[i].GetValue(&lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;) != &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt; &amp;amp;&amp;amp; prop2[i].GetValue(other, &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;) == &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum44&quot; style=&quot;color: #606060;&quot;&gt;  44:&lt;/span&gt;                     &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum45&quot; style=&quot;color: #606060;&quot;&gt;  45:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum46&quot; style=&quot;color: #606060;&quot;&gt;  46:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum47&quot; style=&quot;color: #606060;&quot;&gt;  47:&lt;/span&gt;         &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum48&quot; style=&quot;color: #606060;&quot;&gt;  48:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum49&quot; style=&quot;color: #606060;&quot;&gt;  49:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
no olvidar hacer un using System.Reflection;</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/5360104923185784630/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/5360104923185784630' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/5360104923185784630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/5360104923185784630'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2012/02/comparacion-de-dos-instancias-de-una.html' title='Comparación de dos instancias de una Clase Compleja en C#'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-1824005268553952803</id><published>2011-12-27T14:15:00.001-05:00</published><updated>2012-11-26T11:47:59.564-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Shared Server"/><title type='text'>¿Por que usar Shared Server en Oracle Database?</title><content type='html'>Una de las cosas que debemos tomar en cuenta cuando tenemos base de datos Oracle, es la cantidad de procesos en el servidor que se pueden ejecutar por cada cliente conectado a la base de datos, estos procesos consumen memoria del servidor, y cuando los requerimientos a la base de datos aumentan, y existen muchas conexiones concurrentes, se nos hace un problema cuando estos procesos se consumen la memoria del servidor.&lt;br /&gt;
Oracle tiene una solución bastante practica para estos “problemas” y son los servidores compartidos, con la configuración correcta podemos hacer que varios clientes sean atendidos por un solo proceso en el servidor, estos procesos son llamados despachadores o dispatchers.&lt;br /&gt;
Haciendo una balanza se puede hacer que ciertos usuarios tengan conexión a un servidor dedicado, mientras la mayoría este con servidores compartidos, mas información sobre como configurar servidores compartidos en Oracle Database lo encontramos en el siguiente link &lt;a href=&quot;http://docs.oracle.com/cd/B19306_01/network.102/b14212/dispatcher.htm&quot;&gt;http://docs.oracle.com/cd/B19306_01/network.102/b14212/dispatcher.htm&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/1824005268553952803/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/1824005268553952803' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/1824005268553952803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/1824005268553952803'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/12/por-que-usar-shared-server-en-oracle.html' title='¿Por que usar Shared Server en Oracle Database?'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-6232770757366108880</id><published>2011-12-21T09:36:00.001-05:00</published><updated>2012-11-26T11:48:31.770-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Intercalación"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><title type='text'>Intercalación En SQL Server Analysis Service y SQL Server DataBase</title><content type='html'>En mi reciente incursión al mundo de Business Intelligence con Sql Server, me he encontrado con ciertas novedades a tomar en cuenta, una de ellas fue la intercalación.&lt;br /&gt;
Con aun muy poca experiencia instalé SQL Server R2 y por un alerta que me salía cambié mi idioma de Windows a Español -&amp;nbsp; España, instalé y luego cambié la configuración en Windows.&lt;br /&gt;
Después de un arduo trabajo en sacar un piloto acerca de un cubo de ventas, el cual dicho sea de paso fue todo un éxito, se me ocurrió que era mejor definir los formatos de las métricas en el cubo, para no hacer eso en el cliente, todo estaba bien, pero el gran problema es que me salía el símbolo de Euro, revisé la configuración de Windows y nada, luego fui a la configuración de idioma e intercalación de SSAS y cambio la configuración de español – España a español -&amp;nbsp; Ecuador, reinicio AS, proceso el cubo y comenzó mi problema. las dimensiones que tenían miembros acentuados o caracteres como la Ñ no podían ser procesados, me lleve bastante tiempo en revisar que era, volví a dejar como estaba, pero no funcionaba, revisé en los foros, y pedí ayuda en los foros de Microsoft,él Colega Guillermo Taylor, me dijo que la solución era simple, tener una intercalación en la Base de Datos, compatible con la intercalación de SSAS, me pareció lógico, mas que nada porque el problema es que mientras SSAS buscaba datos de una dimensión con tildes la base de datos no diferenciaba tildes, así que si SSAS buscaba “Alejandría” la base de datos solo encontraba “Alejandria”, lo revisé, lo dejé idéntico, intento procesar las dimensiones, y NADA….&lt;br /&gt;
La solución estaba dada, Guillermo tenía razón, pero además de hacer configurar correctamente la Intercalación de la Base de Datos y SSAS también había que re implementar&amp;nbsp; todo el Cubo, algo que en ese momento no sabía pero que por instinto lo hice, gracias a Dios encontré ayuda idónea y&amp;nbsp; salí bien librado.&lt;br /&gt;
Tengo mas de 7 años de experiencia con Oracle, pero en SQL Server 2008 me cambiaron muchas cosas de su antecesor SQL 2000 y me siento un novato pero estoy poniéndome al día con los conocimientos, y a medida tenga mas experiencia los comentaré por este medio, puede que estas experiencias ayuden a mas personas.</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/6232770757366108880/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/6232770757366108880' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/6232770757366108880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/6232770757366108880'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/12/intercalacion-en-sql-server-analysis.html' title='Intercalación En SQL Server Analysis Service y SQL Server DataBase'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-1365634727908091348</id><published>2011-11-24T15:10:00.001-05:00</published><updated>2012-11-26T11:49:05.981-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Programación"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio .NET"/><title type='text'>Autenticación en C#</title><content type='html'>Algo super sencillo de hacer es un proceso de Autenticación, sin embargo muchas personas lo hacen dentro del hilo de ejecución del sistema, poniendo como Pantalla principal el formulario de la contraseña y luego ocultándolo, ya que si se cierra se termina el hilo de ejecución del sistema. &lt;br /&gt;
Para hacerlo de una mejor manera podemos hacer lo siguiente…&lt;br /&gt;
En nuestro proyecto tenemos el Program.cs, el cual es el principal, agregamos un formulario principal [frmPrincipal] y uno de autenticación [frmAutentica] y hacemos lo siguiente:&lt;br /&gt;
en Program.cs tenemos un código parecido a este:&lt;br /&gt;
&lt;div id=&quot;codeSnippetWrapper&quot; style=&quot;background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; height: 294px; line-height: 12pt; margin: 20px 0px 10px; max-height: 200px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 100.79%;&quot;&gt;
&lt;div id=&quot;codeSnippet&quot; style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum1&quot; style=&quot;color: #606060;&quot;&gt;   1:&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;namespace&lt;/span&gt; Comercial&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum2&quot; style=&quot;color: #606060;&quot;&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum3&quot; style=&quot;color: #606060;&quot;&gt;   3:&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; Program&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum4&quot; style=&quot;color: #606060;&quot;&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum5&quot; style=&quot;color: #606060;&quot;&gt;   5:&lt;/span&gt;         &lt;span style=&quot;color: green;&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum6&quot; style=&quot;color: #606060;&quot;&gt;   6:&lt;/span&gt;         &lt;span style=&quot;color: green;&quot;&gt;/// Punto de entrada principal para la aplicación.&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum7&quot; style=&quot;color: #606060;&quot;&gt;   7:&lt;/span&gt;         &lt;span style=&quot;color: green;&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum8&quot; style=&quot;color: #606060;&quot;&gt;   8:&lt;/span&gt;         [STAThread]&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum9&quot; style=&quot;color: #606060;&quot;&gt;   9:&lt;/span&gt;         &lt;span style=&quot;color: blue;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; Main()&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum10&quot; style=&quot;color: #606060;&quot;&gt;  10:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum11&quot; style=&quot;color: #606060;&quot;&gt;  11:&lt;/span&gt;             Application.EnableVisualStyles();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum12&quot; style=&quot;color: #606060;&quot;&gt;  12:&lt;/span&gt;             Application.SetCompatibleTextRenderingDefault(&lt;span style=&quot;color: blue;&quot;&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum13&quot; style=&quot;color: #606060;&quot;&gt;  13:&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;/*Es en este lugar donde hay que insertar el código que valida el usuario*/&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum14&quot; style=&quot;color: #606060;&quot;&gt;  14:&lt;/span&gt;             Application.Run(&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; frmPrincipal());&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum15&quot; style=&quot;color: #606060;&quot;&gt;  15:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum16&quot; style=&quot;color: #606060;&quot;&gt;  16:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum17&quot; style=&quot;color: #606060;&quot;&gt;  17:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
El código que metemos en ese lugar es el que usamos para invocar nuestro formulario de autenticación, en este formulario validamos el usuario y la clave y damos como resultado&amp;nbsp; DialogResult.Ok en caso que la autenticación sea exitosa. además para mantener en Memoria, nombre, id y otros datos del usuario podemos crear una clase que guarde estos datos, y luego invocarla. el código puede ser algo parecido al siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;codeSnippetWrapper&quot; style=&quot;background-color: #f4f4f4; border-bottom: silver 1px solid; border-left: silver 1px solid; border-right: silver 1px solid; border-top: silver 1px solid; cursor: text; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; height: 278px; line-height: 12pt; margin: 20px 0px 10px; max-height: 200px; overflow: auto; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; text-align: left; width: 99.48%;&quot;&gt;
&lt;br /&gt;
&lt;div id=&quot;codeSnippet&quot; style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum1&quot; style=&quot;color: #606060;&quot;&gt;   1:&lt;/span&gt; DatosUsuario user = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; DatosUsuario();&lt;span style=&quot;color: green;&quot;&gt;// Aqui se los datos del usuario&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum2&quot; style=&quot;color: #606060;&quot;&gt;   2:&lt;/span&gt; frmAutentica auth = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; frmAutentica();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum3&quot; style=&quot;color: #606060;&quot;&gt;   3:&lt;/span&gt; auth.user = user;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum4&quot; style=&quot;color: #606060;&quot;&gt;   4:&lt;/span&gt; DialogResult dr;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum5&quot; style=&quot;color: #606060;&quot;&gt;   5:&lt;/span&gt; dr=auth.ShowDialog();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum6&quot; style=&quot;color: #606060;&quot;&gt;   6:&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (dr == DialogResult.OK)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum7&quot; style=&quot;color: #606060;&quot;&gt;   7:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum8&quot; style=&quot;color: #606060;&quot;&gt;   8:&lt;/span&gt;     &lt;span style=&quot;color: green;&quot;&gt;// En el form frmPRincipal creamos una sobrecarga del constructor para que nos acepte el parametro user&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: white; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum9&quot; style=&quot;color: #606060;&quot;&gt;   9:&lt;/span&gt;     Application.Run(&lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; frmPrincipal(user));&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;br /&gt;
&lt;pre style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &#39;Courier New&#39;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span id=&quot;lnum10&quot; style=&quot;color: #606060;&quot;&gt;  10:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Espero esta contribución les ayude.</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/1365634727908091348/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/1365634727908091348' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/1365634727908091348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/1365634727908091348'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/11/autenticacion-en-c.html' title='Autenticación en C#'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-964002032499913384</id><published>2011-10-05T21:32:00.001-05:00</published><updated>2011-10-05T21:32:16.772-05:00</updated><title type='text'>Con Steve Jobs muere una era de la informática.</title><content type='html'>&lt;p&gt;Tal vez no muchos han tenido la suerte de ver la pelicula “Los piratas de Sillicon Valley”, y aunque es un docudrama no autorizado, habla mucho sobre este gran personaje, Steve Jobs, en la misma película podemos ver también a personajes importantes de la Informática como Bill Gates, Steve Wozniac, Paul Allen, Steve Ballmer, entre otros.&lt;/p&gt;  &lt;p&gt;Hago referencia a esta película, porque a pesar de que ya todos conocíamos al empresario Steve, al igual que a Bill, fue con esta película, que al menos personalmente me sentí mas identificado con la informática, me ha servido de inspiración, no solo Jobs, sino también Woz, Gates, y compañía, pues indudablemente eran unos Genios, en toda la extensión de la palabra.&lt;/p&gt;  &lt;p&gt;Se acusa a Steve de haber sido arrogante, insoportable, apasionado, y adicto al trabajo, pero ¿quien con menos talento nos creemos la ultima coca cola del desierto?, así es la vida, Dios le dio el talento para cambiar el mundo, para hacer historia, para mejorar con la tecnología la calidad de vida de las personas, pues es así como Steve hizo su contribución con este planeta.&lt;/p&gt;  &lt;p&gt;Ahora solo se haba de iPhone, iPod, iPad, pero la historia es mas que eso, Apple I, Apple II, Lisa, Machitosh, que en realidad fueron las creaciones que hicieron de APPLE una empresa de respeto.&lt;/p&gt;  &lt;p&gt;Para un muchacho de 21 años, cuando la mayoría de jóvenes a esa edad nos ingeniábamos como cortejar a la chica guapa de la U, Steve ya comenzaba desde un garaje a cambiar el mundo, he ahí lo mas inspirador.&lt;/p&gt;  &lt;p&gt;Dentro de esa carcaza de Genio estaba un ser humano, con familia, hijos, esposa, y una vida compleja, llena de enfermedades.&lt;/p&gt;  &lt;p&gt;Definitivamente Steve dejará un vacía muy grande en el mundo informático, nos toca esperar que un nuevo genio surja y también se de a la tarea de cambiar el mundo..&lt;/p&gt;  &lt;p&gt;Adiós Steve Jobs.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/964002032499913384/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/964002032499913384' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/964002032499913384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/964002032499913384'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/10/con-steve-jobs-muere-una-era-de-la.html' title='Con Steve Jobs muere una era de la informática.'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-4822033414356557375</id><published>2011-09-22T13:36:00.001-05:00</published><updated>2011-09-22T13:36:24.524-05:00</updated><title type='text'>Ser Informático… ¿es buen negocio?</title><content type='html'>&lt;p&gt;Después de un análisis en que hubiera sido el mejor negocio o la mejor profesión a la que me pude haber dedicado llegué a la siguiente conclusión.&lt;/p&gt; &lt;p&gt;1. No importa la profesión o la rama, lo importante es la pasión y amor con la que hagas tu trabajo.&lt;/p&gt; &lt;p&gt;2. La mejor profesión o la que mas nos gusta no siempre nos hará millonarios es mas probablemente seamos chiros.&lt;/p&gt; &lt;p&gt;3. Si queremos tener dinero debemos hacer lo que mas dinero da en el momento y lugar en el que estamos, así no nos guste lo que hagamos.&lt;/p&gt; &lt;p&gt;Además&amp;nbsp; de estos tres puntos que eran muy generales, me imaginaba que hubiera pasado si hubiese escogido ser otra cosa y no un informático, entonces me puse a ver a mi esposa y sus estudios de Educadores de Párvulos, a mi primo y sus estudios de Arquitectura, a muchos amigos abogados, y otros tantos doctores, y me puse a pensar, que si bien es cierto uno debe hacer lo que a uno lo hace feliz, y cada persona tomará siempre caminos distintos, pero definitivamente existen muchas ventajas de ser un informático.&lt;/p&gt; &lt;p&gt;1. La Informática se aplica a todas las áreas, así que buscar trabajo es fácil.&lt;/p&gt; &lt;p&gt;2. Cuando estás estudiando solo necesitas un computador, toda tu inteligencia, creatividad y lógica. nada de libros de miles de dólares o materiales costosos etc.&lt;/p&gt; &lt;p&gt;3. Definitivamente el pago es bueno cuando trabajas en países del primer mundo, y entre aceptable y mas o menos en los países del tercer mundo.&lt;/p&gt; &lt;p&gt;Lamentablemente en mi país algunas empresas no solicitan DBA, Programadores, HelpDesk, Ing. de Producción, Ing de Desarrollo, Arq. de Software entre otras… si no que es muy común encontrar anuncios que digan…&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#ff0000&quot;&gt;“Se Solicita Asistente de Sistemas ”&lt;/font&gt;&lt;/strong&gt;&lt;font color=&quot;#cccccc&quot;&gt; &lt;/font&gt;&lt;font color=&quot;#a5a5a5&quot;&gt;(Pueden Creerlo??? Asistente de Sistemas, si leyeron bien, Asistente… a que se refiere?&amp;nbsp; suena a que&amp;nbsp; necesito alguien que me traiga el café… pero bueeeeee)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color=&quot;#a5a5a5&quot;&gt;Además piden:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Que tenga titulo de ingeniero en sistemas o afines&lt;/p&gt; &lt;p&gt;Con experiencia en Manejo de Bases de Datos Oracle, Sql Server, DB2.&lt;/p&gt; &lt;p&gt;Programación en .NET, C#, VB, c++, C, Java, php. mínimo de 3 años&lt;/p&gt; &lt;p&gt;claros conocimientos en metodologías&amp;nbsp; y arquitectura de software.&lt;/p&gt; &lt;p&gt;Conocimiento indispensables en administración de Windows 2008, Linux, Unix, Mac.&lt;/p&gt; &lt;p&gt;Creativo, que trabaje bajo presión, investigativo, y alta capacidad de análisis.&lt;/p&gt; &lt;p&gt;Sueldo: $600&lt;/p&gt; &lt;p&gt;Entonces es ahí en donde me pregunto..&lt;/p&gt; &lt;p&gt;1. Que es un Asistente de Sistemas? suena a Secretario? o es que para preparar un café necesitas un algoritmo? o es que solo vas a recibir llamadas y tramitarlas dependiendo el problema?&lt;/p&gt; &lt;p&gt;2. Alguien a quien se denomine asistente sería capaz de hacer toda la basura que están pidiendo?, es mas ¿Podrá entenderlo?&lt;/p&gt; &lt;p&gt;3. Si en adquirir esos conocimientos algunos tendrían que volver al colegio y universidad y otros incluso volver a nacer,&amp;nbsp; porque te ofrecen un sueldo menor al de algunos que posiblemente a duras penas saben leer, escribir y hablar?&lt;/p&gt; &lt;p&gt;Bueno son cosas que hasta ahora creo que solo pasan en mi querido Ecuador…&lt;/p&gt; &lt;p&gt;Ser informático es muy rentable solo si trabajamos en Verdaderas empresas serias, o como independientes, caso contrario, mejor dedicarse a vender Huevos.. jeje&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/4822033414356557375/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/4822033414356557375' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/4822033414356557375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/4822033414356557375'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/09/ser-informatico-es-buen-negocio.html' title='Ser Informático… ¿es buen negocio?'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-4274563773475197303</id><published>2011-08-24T14:22:00.001-05:00</published><updated>2011-08-24T14:22:32.607-05:00</updated><title type='text'>Patentes ¿Conceptuales?</title><content type='html'>&lt;p&gt;Al parecer si se te ocurre una idea cualquiera que esta sea y la implementas en tu app, escribiendo tu propio código, incluso sin usar códigos de terceros, y a otro se le ocurrió “el concepto” antes que a ti, tendrás que pagar licencia por el uso de patentes?, tal vez entiendo mal o definitivamente si se nos ocurre poner un botoncito de actualizar versión hay que ver a quien se le ocurrió la idea primero para pagarle por poder desarrollarlo incluso, si la idea fue propia y no copiada?&lt;/p&gt; &lt;p&gt;David un programador Español, es uno de los tantos programadores de app que se encuentran en problemas de patentes, sin haber copiado absolutamente nada, un algoritmo escrito por el e ideado por el, resulto ser similar al de un concepto patentado.. bueno, el asunto esta raro, nadie da razones, nadie dice porque, David no sabe ni que mismo es que ha supuestamente utilizado de esa patente, el asunto es que ya tiene demandas fuertes, ahora el problema es ¿que pasa con la libertad de los programadores?, Facebook, o Myspace tuvieron que pagarle a alguien por el concepto “Redes Sociales”.&amp;nbsp; bueno no se hasta donde llegue la cosa, en realidad no está clara, mas acerca de esta noticia en &lt;a href=&quot;http://www.bbc.co.uk/mundo/noticias/2011/08/110824_tecnologia_lodsys_patentes_nc.shtml&quot;&gt;http://www.bbc.co.uk/mundo/noticias/2011/08/110824_tecnologia_lodsys_patentes_nc.shtml&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Saludos..&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/4274563773475197303/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/4274563773475197303' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/4274563773475197303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/4274563773475197303'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/08/patentes-conceptuales.html' title='Patentes ¿Conceptuales?'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-3294027704341040452</id><published>2011-08-10T10:20:00.001-05:00</published><updated>2012-11-26T11:50:29.141-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Migración"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Novedades Migrando base de datos de Oracle 10g a Oracle 11g</title><content type='html'>&lt;div align=&quot;justify&quot;&gt;
Al momento de la migración de la base de datos de Oracle 10g a Oracle 11g, me encontré con algunas novedades interesante, una de ellas son las nuevas características de auditoría y seguimiento, la nueva herramienta “adrci” para la revisión de las mismas, y otra que me puso a investigar que son los ACL.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Los ACL’s es una nueva característica de la versión 11g,el objetivo de esta es la seguridad a nivel de redes, se podría decir que es una especie de firewall, aunque no necesariamente lo sea.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Si no conocemos esta nueva funcionalidad tendremos problemas al intentar por ejemplo enviar mails, o consumir un http.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
a continuación pondré un ejemplo de como crear un ACL y asignar privilegios necesarios para enviar un mail:&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
1. Creamos un ACL&lt;/div&gt;
begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbms_network_acl_admin.create_acl (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; acl =&amp;gt; &#39;nombreacl.xml&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; description =&amp;gt; &#39;Normal Access&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; principal =&amp;gt; &#39;USUARIOoROL&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; is_grant =&amp;gt; TRUE,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; privilege =&amp;gt; &#39;connect&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; start_date =&amp;gt; null,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_date =&amp;gt; null&lt;br /&gt;);&lt;br /&gt;end;&lt;br /&gt;
2. Agregamos usuarios o roles al ACL anterior&lt;br /&gt;
begin&lt;br /&gt;dbms_network_acl_admin.add_privilege (&lt;br /&gt;acl =&amp;gt; &#39;nombreacl.xml&#39;,&lt;br /&gt;principal =&amp;gt; &#39;USUARIOoROL&#39;,&lt;br /&gt;is_grant =&amp;gt; TRUE,&lt;br /&gt;privilege =&amp;gt; &#39;connect&#39;,&lt;br /&gt;start_date =&amp;gt; null,&lt;br /&gt;end_date =&amp;gt; null);&lt;br /&gt;end;&lt;br /&gt;
Si queremos agregar mas usuarios, lo podemos hacer con esta misma rutina&lt;br /&gt;
3. Asignamos el HOST al que tendrá acceso&lt;br /&gt;
begin &lt;br /&gt;DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl&amp;nbsp; =&amp;gt; &#39;nombreacl.xml&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host =&amp;gt; &#39;tudominio.comOtuIP&#39;);&lt;br /&gt;end;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Las vistas del Diccionario de datos con las que puedes revisar los acl son:&lt;br /&gt;
DBA_NETWORK_ACLS&lt;br /&gt;
DBA_NETWORK_ACL_PRIVILEGES&lt;br /&gt;
USER_NETWORK_ACL_PRIVILEGES</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/3294027704341040452/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/3294027704341040452' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/3294027704341040452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/3294027704341040452'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/08/novedades-migrando-base-de-datos-de.html' title='Novedades Migrando base de datos de Oracle 10g a Oracle 11g'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-7363099498945982409</id><published>2011-05-30T14:39:00.001-05:00</published><updated>2011-05-30T14:39:54.392-05:00</updated><title type='text'>Iniciando una aplicación con UI para BlackBerry  en Java</title><content type='html'>&lt;p&gt;Al instalar el plugin de Blackberry SDK, tambien se nos instala una documentación completa acerca del API. &lt;/p&gt; &lt;p&gt;Este es un ejemplo básico de código para crear una aplicación con una interface de usuario, a la cual llamaremos, HolaMundo.&lt;/p&gt; &lt;p&gt;Código:&lt;/p&gt; &lt;p&gt;package HolaMundo; //PAQUETE&lt;/p&gt; &lt;p&gt;import net.rim.device.api.ui.UiApplication; //IMPORTAMOS API BB UI&lt;br&gt;public class HolaMundoMain extends UiApplication&amp;nbsp; //SE HEREDA ui&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HolaMundo.HolaMundoMain theapp= new HolaMundo.HolaMundoMain();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; theapp.enterEventDispatcher();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt; ///CONSTRUCTOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public HolaMundoMain()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pushScreen(new Pantalla());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;// Se crea una clase Pantalla Heredando a MainScreen&lt;/p&gt; &lt;p&gt;public final class Pantalla extends MainScreen&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;public Pantalla() &lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt; setTitle(“Hola Mundo”); // ESPECIFICAMOS EL TITULO DE LA PANTALLA&lt;/p&gt; &lt;p&gt;}&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;Después de esto ya tenemos la ventana principal con titulo en nuestro BlackBerry.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Saludos &lt;/p&gt; &lt;p&gt;Atte. &lt;/p&gt; &lt;p&gt;JPRC&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/7363099498945982409/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/7363099498945982409' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7363099498945982409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7363099498945982409'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/05/iniciando-una-aplicacion-con-ui-para.html' title='Iniciando una aplicación con UI para BlackBerry  en Java'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-7284445918496972349</id><published>2011-05-06T17:13:00.001-05:00</published><updated>2011-05-06T17:13:36.307-05:00</updated><title type='text'>Aplicaciones para Blackberry con Java</title><content type='html'>&lt;p align=&quot;justify&quot;&gt;Después de intentar meterme en el desarrollo de juegos sin éxito hasta ahora por el poco tiempo libre que tengo para la investigación, decidí que la mejor forma de aportar es seguir haciéndolo con mi experiencia en el día día de mi trabajo, ahora se me dio la oportunidad de hacer aplicativos para BlackBerry, nada general, son cosas muy particulares, para la empresa en que trabajo, pero si puedo compartir, ciertos códigos, y experiencia. &lt;/p&gt; &lt;p align=&quot;justify&quot;&gt;Lo primero que deben hacer para desarrollar aplicaciones en BlackBerry es saber Java, si no saben Java, por lo menos programación orientada a objeto para que el aprendizaje de java no sea muy difícil, luego debemos&amp;nbsp; Bajar e instalar, JRE, Eclipse, y BlackBerry Plugin para eclipse, esto lo hacemos en las siguientes direcciones url:&lt;/p&gt; &lt;p&gt;Eclipse&lt;/p&gt; &lt;p&gt;&lt;a title=&quot;http://archive.eclipse.org/eclipse/downloads/drops/R-3.3.2-200802211800/eclipse-SDK-3.3.2-win32.zip&quot; href=&quot;http://archive.eclipse.org/eclipse/downloads/drops/R-3.3.2-200802211800/eclipse-SDK-3.3.2-win32.zip&quot;&gt;http://archive.eclipse.org/eclipse/downloads/drops/R-3.3.2-200802211800/eclipse-SDK-3.3.2-win32.zip&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Blackberry Plugin&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://swdownloads.blackberry.com/Downloads/developerdownload.do&quot;&gt;https://swdownloads.blackberry.com/Downloads/developerdownload.do&lt;/a&gt;&lt;/p&gt; &lt;p&gt;JRE x64&lt;/p&gt; &lt;p&gt;&lt;a title=&quot;http://download.oracle.com/auth/otn-pub/java/jdk/6u25-b06/jre-6u25-windows-x64.exe?e=130393772&quot; href=&quot;http://download.oracle.com/auth/otn-pub/java/jdk/6u25-b06/jre-6u25-windows-x64.exe?e=130393772&quot;&gt;http://download.oracle.com/auth/otn-pub/java/jdk/6u25-b06/jre-6u25-windows-x64.exe?e=130393772&lt;/a&gt;&lt;/p&gt; &lt;p&gt;JRE 32bit&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://download.oracle.com/auth/otn-pub/java/jdk/6u25-b06/jre-6u25-windows-i586.exe?e=1303941089&amp;amp;h=21373f5&quot;&gt;http://download.oracle.com/auth/otn-pub/java/jdk/6u25-b06/jre-6u25-windows-i586.exe?e=1303941089&amp;amp;h=21373f5&lt;/a&gt;&lt;/p&gt; &lt;p&gt;En la siguiente entrega, pondré a disposición código fuente.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/7284445918496972349/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/7284445918496972349' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7284445918496972349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7284445918496972349'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/05/aplicaciones-para-blackberry-con-java.html' title='Aplicaciones para Blackberry con Java'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-6854455641093049925</id><published>2011-04-12T17:47:00.001-05:00</published><updated>2014-09-29T20:15:16.494-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HP"/><category scheme="http://www.blogger.com/atom/ns#" term="Impresoras"/><category scheme="http://www.blogger.com/atom/ns#" term="Terminal Server."/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server"/><title type='text'>Problemas con Impresora HP 1102w y Terminal Server de Windows 2008 SE R2 (EasyPrint)</title><content type='html'>Cuando probé el EasyPrint del Windows 2008, fue un alivio al trabajo de tener que instalar los drivers de todas las impresoras que utilizaba con el Terminal Server y el sistema. todo iba de maravilla hasta el día en que me pidieron que compre una impresora laser para una de las sucursales, y compré la impresora antes mencionada, al instalarla en el cliente todo parecía perfecto incluso me gustó mucho la parte en que se auto instalaba sin necesidad de que le insertara el disco, y todo aparentemente funcionaba bien, hasta que intenté imprimir algo desde el sistema conectado por medio de Terminal Server.&lt;br /&gt;
al inicio pensé que era un problema del sistema, pero luego me di cuenta que el problema era un asunto de compatibilidad de la impresora con EasyPrint. en realidad busque mucho por internet, y me daban algunas soluciones pero nada funcionaba, el problema se parecía mucho, al que tenía anteriormente, en el que tuve que otorgar permisos especiales a la carpeta c:\windows\System32\spool\PRINTERS, pero este no era el mismo problema.&lt;br /&gt;
Para solucionar este problema con esta impresora específicamente tuve que instalar los controladores actualizados en el Servidor, y mandar abajo el EasyPrint, esto lo hice entrando al editor de directivas de grupo, en la carpeta, Configuracion del Equipo\Plantillas administrativas\Componentes de Windows\Terminal Services\Terminal Server\Redireccion de Impresora\&lt;br /&gt;
hay que deshabilitar la opción: Usar el controlador de impresora easyprint de terminal server&lt;br /&gt;
Con estas acciones pude superar el problema con la impresora HP LaserJet 1102w y Terminal server.</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/6854455641093049925/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/6854455641093049925' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/6854455641093049925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/6854455641093049925'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/04/problemas-con-impresora-hp-1102w-y.html' title='Problemas con Impresora HP 1102w y Terminal Server de Windows 2008 SE R2 (EasyPrint)'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217763770974196275.post-7591573544625966164</id><published>2011-04-11T13:14:00.001-05:00</published><updated>2012-11-26T11:51:49.778-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Programación"/><title type='text'>Control de Procedimientos en Oracle DB</title><content type='html'>Algunas veces cuando trabajamos en un grupo de desarrollo, podemos encontrarnos con unos problemitas, uno de ellos es la necesidad de cambiar un procedimiento, función o paquete de la base de datos y después de cambiarlo podemos encontrarnos conque otro de nuestros compañeros también lo está cambiando.&amp;nbsp; Bueno que pase esto aunque no lo crean es muy probable, y podríamos perder los cambios del primero que guarda.. y solo queda el paquete tal como lo deja el ultimo que guarda.. Mi amigo Victor Endara publicó algo interesante y muy útil para controlar esto, ojalá les ayude mucho.. &lt;br /&gt;
&lt;a href=&quot;http://victor-endara.blogspot.com/2011/04/oracle-control-procedimientos.html&quot;&gt;http://victor-endara.blogspot.com/2011/04/oracle-control-procedimientos.html&lt;/a&gt;&lt;br /&gt;
Saludos a todos.</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/7591573544625966164/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/7591573544625966164' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7591573544625966164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7591573544625966164'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/04/control-de-procedimientos-en-oracle-db.html' title='Control de Procedimientos en Oracle DB'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-7986334805573907572</id><published>2011-02-15T12:38:00.001-05:00</published><updated>2011-02-15T12:38:06.942-05:00</updated><title type='text'>Microsoft y Nokia</title><content type='html'>&lt;p&gt;En Latino américa Nokia tiene ganado gran parte del mercado, al menos en Ecuador las personas confían bastante en Nokia, Ahora con la nueva moda de teléfonos inteligentes, y por la increíble necesidad de tener uno de esos lindos teléfonos incluso en personas desempleadas (jaja), quien domina el mercado de Smart Phone es el BlackBerry, es increíble ver al menos en Guayaquil, la cantidad de personas que andan con uno de estos teléfonos, incluso es tan común que al subirnos a un bus popular nos encontremos con personas con un BlackBerry de $700, la preferencias de las personas por este teléfono es lógica, ya que es bastante funcional y elegante, sin embargo así mismo hay muchas personas que siguen confiando en Nokia, un teléfono fuerte, con buena señal, y una funcionalidad increíble, pero que en el mercado de teléfonos inteligentes se estaba quedando dormido.&lt;/p&gt; &lt;p&gt;En lo personal siempre me gustaron los Nokia, mas que nada por su Hardware, nunca he tenido un teléfono tan fuerte y con tan buena señal como ese, sin embargo tengo un teléfono con Windows Mobile 6.1, espero este año cambiarme a uno con Windows Phone 7. y no es que sea un fanático Microsoft, pero la funcionalidad de Windows Mobile 6.1 es excelente, puedo hacer cosas que solo con el BlackBerry mas caro podría hacer, y aun tercio del precio. Además de contar con incontables apps, y una gran mayoría gratuitos, y como si eso fuera poco, además de soportar Java como todos lo hacen, tengo .NET Compact&amp;nbsp; para desarrollar aplicaciones con mi Visual Studio, donde puedo usar C#,VB, y también si deseo Java.&lt;/p&gt; &lt;p&gt;Mi intención no es hacer publicidad, pero no podía dejar pasar la oportunidad, para estar optimista de la alianza que ha hecho Microsoft y Nokia, ya que desde mi punto de vista unos de los mejores Hardware se une a unos de los mejores Software en telefonía, ahora espero que cuando se cumpla mi contrato con mi teléfono Windows Mobile, ya haya en el mercado un teléfono Nokia con Windows Phone 7.&lt;/p&gt; &lt;p&gt;Esta alianza tal vez pueda hacer que Microsoft y Nokia ya puedan competir con Apple y Google con su iPhone y el Android respectivamente, en lo que a Smart Phone se refiere.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/7986334805573907572/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/7986334805573907572' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7986334805573907572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7986334805573907572'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/02/microsoft-y-nokia.html' title='Microsoft y Nokia'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-7630034533191981337</id><published>2011-01-04T11:44:00.001-05:00</published><updated>2011-01-04T11:44:12.317-05:00</updated><title type='text'>Empezar a desarrollar Juegos en XNA Game de Microsoft</title><content type='html'>&lt;p&gt;Una de las cosas mas interesantes de la programación es el desarrollo de juegos, y mas si somos expertos en video juegos, en mi caso no es así, soy tan malo que los pocos juegos que desarrolle en Blitz Basic tuve que crear juegos con vidas infinitas para poder pasar los obstáculos que yo mismo desarrollaba. &lt;/p&gt;  &lt;p&gt;Ahora, voy a intentar desarrollar algo decente desde XNA Game, el único problema es que nunca&amp;#160; en mi corta vida he visto XNA así que es un reto para mi poner un muñequito que tire piedras o algo así. porque no se absolutamente nada de XNA solamente la sintaxis del lenguaje que utiliza que es el C#.&lt;/p&gt;  &lt;p&gt;Así que vamos a comenzar por lo primero en la página de microsoft bajamos el XNA Game 3.1.&lt;/p&gt;  &lt;p&gt;Poco a poco iré publicando mis logros, ahora me toca investigar como se hace cada cosa, y lógicamente antes de eso ver que juego es el que quiero hacer.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/7630034533191981337/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/7630034533191981337' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7630034533191981337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/7630034533191981337'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2011/01/empezar-desarrollar-juegos-en-xna-game.html' title='Empezar a desarrollar Juegos en XNA Game de Microsoft'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217763770974196275.post-4241968666653269511</id><published>2010-11-25T18:48:00.001-05:00</published><updated>2012-11-26T11:56:49.160-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Programación"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio .NET"/><title type='text'>Obtener elementos de un enumerador en C#</title><content type='html'>A veces necesitamos extraer los elementos de un enumerador, y no sabemos como.. bueno es realmente sencillo, aquí les va el código:&lt;br /&gt;
&lt;div class=&quot;csharpcode&quot;&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   1:  &lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; nombre &lt;span class=&quot;kwrd&quot;&gt;in&lt;/span&gt; Enum.GetNames(&lt;span class=&quot;kwrd&quot;&gt;typeof&lt;/span&gt;(MyEnumerador)))&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;alt&quot;&gt;&lt;span class=&quot;lnum&quot;&gt;   3:  &lt;/span&gt;    &lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt;.cmbElementos.Items.Add(nombre);&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span class=&quot;lnum&quot;&gt;   4:  &lt;/span&gt; }&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, &quot;Courier New&quot;, courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este ejemplo estamos llenando un combo con los elementos del Enumerador.  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/4241968666653269511/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/4241968666653269511' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/4241968666653269511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/4241968666653269511'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2010/11/obtener-elementos-de-un-enumerador-en-c.html' title='Obtener elementos de un enumerador en C#'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-8320682742458646802</id><published>2010-11-24T10:42:00.001-05:00</published><updated>2010-11-24T10:42:26.571-05:00</updated><title type='text'>MyPhone Muy buena utilidad para Windows Mobile</title><content type='html'>&lt;p&gt;Buscando nuevas utilidades para mi teléfono Windows Mobile encontré MyPhone, un servicio de Microsoft para teléfonos basados en Windows, donde tenemos un servicio interesante, pero en sí lo que hacemos es respaldar la información de nuestro teléfono en el internet, de forma ordenada, Contactos, mensajes, photos, videos, etc. podemos archivar todos estos datos, programar las Sincronización con el teléfono, guardar la ubicación de la ultima sincronización, entre otras cosas.&lt;/p&gt;  &lt;p&gt;Si tenemos una cuenta pagada, de este servicio podemos incluso hacer sonar nuestro teléfono o saber la ubicación&amp;#160; si está perdido.&lt;/p&gt;  &lt;p&gt;Para las personas que tienen teléfonos basados en Windows les recomiendo esta herramienta. les va a encantar.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/8320682742458646802/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/8320682742458646802' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/8320682742458646802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/8320682742458646802'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2010/11/myphone-muy-buena-utilidad-para-windows.html' title='MyPhone Muy buena utilidad para Windows Mobile'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-5732963050696804934</id><published>2010-11-11T18:35:00.001-05:00</published><updated>2013-02-19T11:48:52.724-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Levantar un Servidor NTP  en RedHat Enterprise</title><content type='html'>Aunque existe un archivo /etc/ntp.conf, que podemos configurar&amp;nbsp; personalizando nuestro servidor, en realidad el archivo está apto para trabajar, es recomendable que si deseamos modificar este archivo saquemos copia al mismo para tenerlo de respaldo.&lt;br /&gt;
El servicio que debemos levantar es el ntpd, de esta manera:&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; style=&quot;width: 230px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;228&quot;&gt;service ntpd start&lt;/td&gt;     &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
para configurar el servidor para que se levante automáticamente lo podemos hacer de la siguiente manera:&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; style=&quot;width: 228px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;226&quot;&gt;chkconfig&amp;nbsp; ntpd --levels 345 on&lt;/td&gt;     &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Ahora hay que abrir el puerto UDP 123 tanto en datos de entrada como en datos de salida, la forma de hacerlo dependerá del Firewall que tengan, en el caso de IPTABLES lo hacemos de esta manera:&lt;br /&gt;
# iptables -I INPUT -p udp --dport 123 -j ACCEPT   &lt;br /&gt;
# iptables -I OUTPUT -p udp --dport 123 -j ACCEPT&lt;br /&gt;
Ahora haciendo de cuenta que nuestro servidor tiene la ip: 192.168.1.1 vamos a otra maquina linux y le decimos que se actualice desde este servidor con el siguiente comando:&lt;br /&gt;
ntpdate -s 192.168.1.1</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/5732963050696804934/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/5732963050696804934' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/5732963050696804934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/5732963050696804934'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2010/11/levantar-un-servidor-ntp-en-redhat.html' title='Levantar un Servidor NTP  en RedHat Enterprise'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-833674175178033962</id><published>2010-10-22T14:16:00.001-05:00</published><updated>2012-11-26T11:58:11.016-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server"/><title type='text'>Dar permisos a Todos los usuarios a la Carpeta Oracle</title><content type='html'>Para tener acceso desde todos los usuarios al cliente de Oracle debemos darle acceso a la Carpeta de Oracle de la siguiente manera.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt; Abrir las propiedades de la carpeta ORACLE&lt;/li&gt;
&lt;li&gt;En la ficha Seguridad Presionar el Boton “Avanzado”&lt;/li&gt;
&lt;li&gt;En la ventana de Configuracion de seguridad avanzada hacemos click en Editar&lt;/li&gt;
&lt;li&gt;En esta ventana agregamos los usuarios o grupos con la configuración de permisos necesarios. &lt;/li&gt;
&lt;/ol&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnEPhyAjc56mAzuBn3fwwhaauu1fOLpaAhK5TD89fkPoCPq3aZgrWVmWG9w9NtpYUtlYVqJ7XGvr3t9QPvuoxQO0beNuuWc2yq62XBQUPq3SPcB3ykiI3iyXOi72VvaxXI6T6Ywsu89Y4/s1600-h/image%5B4%5D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;428&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjtyM5mWAxzNjANsev2_NuZL_4cO8V1hxerWBT1DgO0ZUvcUK5VLBGVcMR4PZZxS-LLlK67pLZWwdG-ZBQKk2BlYd_bdWhKzcy4Gq0e_ZCtWbrZ_-ZEQKMmWMotBvYcljbcCQIQsmqP5s/?imgmax=800&quot; style=&quot;border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;&quot; title=&quot;image&quot; width=&quot;678&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
al hacer click en agregar saldrá esa ventana.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaP5gBPvHZsjPpFpVjxRACShhYBycwdsnRHf0VvPW-jzMxrCQhn5OjRfEWt8dmvbzN0EEjdzHiuX0BCqipRysns-xHUhjQn6pBCkBpOLtfJv1Uu5wBBUiPY_anm0YtQsLABY4k-UXi_ro/s1600-h/image%5B8%5D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;203&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif4vHu6NGUZZmNA6el2RiMoY8nXMnHrR0xYUUb_zx-h-jth-jdynJ0l0w-ajLyLo11Uf1x6YECigRih1YVOVsSRAmt_gLYvWPVh6bwrG9Rc9glj4AXxYK1wZSkJjhAq299cDtzGANiizg/?imgmax=800&quot; style=&quot;border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;&quot; title=&quot;image&quot; width=&quot;406&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
y Luego se editan los permisos&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZFAAhj9TB1AifVLySz2Q6gl_R4iXsnhxaSrfe6xhA4iBU3cmFZYx0FZRVeI8PnC2dMf_bZl5yll4GPZF65X6HWsjUyM9_7M0lBCa2zaklRHpF98UQI7c0smd4pNGg27UuVn9wL2GaMt0/s1600-h/image%5B12%5D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;281&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ91F2u79zymqrJKmRhZTHJBSxswCksGOYtEKjhyRwA0HCTZjVVO2NS4-rrr6UZ9XCF2e0TJFWBqwmqWzLxD2KgUbBEJo8NnZ2oC9r8yXKF_gMexhnEZZepSd6OOWJQnRMh0vjrgn3v4Y/?imgmax=800&quot; style=&quot;border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;&quot; title=&quot;image&quot; width=&quot;244&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/833674175178033962/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/833674175178033962' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/833674175178033962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/833674175178033962'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2010/10/dar-permisos-todos-los-usuarios-la.html' title='Dar permisos a Todos los usuarios a la Carpeta Oracle'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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/AVvXsEgjtyM5mWAxzNjANsev2_NuZL_4cO8V1hxerWBT1DgO0ZUvcUK5VLBGVcMR4PZZxS-LLlK67pLZWwdG-ZBQKk2BlYd_bdWhKzcy4Gq0e_ZCtWbrZ_-ZEQKMmWMotBvYcljbcCQIQsmqP5s/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217763770974196275.post-1316315825658248789</id><published>2010-10-12T14:13:00.001-05:00</published><updated>2012-11-26T11:58:43.443-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Programación"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio .NET"/><title type='text'>Ordenamiento de Items en  ListView al dar click en columnas [C#]</title><content type='html'>A veces necesitamos ordenar datos en un listview dependiendo la columna donde le demos clic, esto es fácil aplicando los algoritmos de ordenamiento conocidos, en el siguiente código cree una clase heredada de listview y le di luego esa característica, me evitará tener que escribir el código en cada una de los forms donde los use.&lt;br /&gt;
&lt;br /&gt;
using System;   &lt;br /&gt;using System.Collections.Generic;    &lt;br /&gt;using System.ComponentModel;    &lt;br /&gt;using System.Drawing;    &lt;br /&gt;using System.Data;    &lt;br /&gt;using System.Linq;    &lt;br /&gt;using System.Text;    &lt;br /&gt;using System.Windows.Forms; &lt;br /&gt;
namespace SPControls   &lt;br /&gt;{    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class JPListView : ListView    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public JPListView()    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ColumnClick += new ColumnClickEventHandler(JPListView_ColumnClick);    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Metodo de Ordenamiento Automatico al hacer clic en las cabeceras de las columnas    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name=&quot;sender&quot;&amp;gt;&amp;lt;/param&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name=&quot;e&quot;&amp;gt;&amp;lt;/param&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void JPListView_ColumnClick(object sender, ColumnClickEventArgs e)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ColumnIndexOrder != e.Column)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OrderAsc(e.Column);    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (OrderTypeSel == SPControls.JPListView.OrderType.Asc)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OrderDes(e.Column);    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OrderAsc(e.Column);    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public enum OrderType     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Asc=1,    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Des=2    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private int mColumnIndexOrder = 0;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private OrderType mOrderTypeSel;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int ColumnIndexOrder     &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return mColumnIndexOrder; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public OrderType OrderTypeSel    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return mOrderTypeSel; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Ordena la lista dependiendo del Índice Seleccionado    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Autor: Jackson Patricio Rosado Cedeño    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name=&quot;ColumnIndex&quot;&amp;gt;&amp;lt;/param&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void OrderAsc(int ColumnIndex)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Metodo de Inserción Directa    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListViewItem Intercambio;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i, j;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 1; i &amp;lt; Items.Count; i++)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intercambio=Items[i];    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j = i - 1;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (string.Compare(Intercambio.SubItems[ColumnIndex].Text,Items[j].SubItems[ColumnIndex].Text)&amp;lt;0 &amp;amp;&amp;amp; j &amp;gt;= 0)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Items[j + 1] =(ListViewItem) Items[j].Clone();    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j--;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (j &amp;lt; 0)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Items[j + 1] = Intercambio;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mColumnIndexOrder = ColumnIndex;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mOrderTypeSel = OrderType.Asc;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Ordena de Forma descendente dependiendo el indice seleccionado    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Autor: Jackson Patricio Rosado Cedeño    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name=&quot;ColumnIndex&quot;&amp;gt;&amp;lt;/param&amp;gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void OrderDes(int ColumnIndex)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Metodo de Inserción Directa    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListViewItem Intercambio;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i, j;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 1; i &amp;lt; Items.Count; i++)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intercambio = Items[i];    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j = i - 1;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (string.Compare(Intercambio.SubItems[ColumnIndex].Text, Items[j].SubItems[ColumnIndex].Text) &amp;gt; 0 &amp;amp;&amp;amp; j &amp;gt;= 0)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Items[j + 1] = (ListViewItem)Items[j].Clone();    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j--;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (j &amp;lt; 0)    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Items[j + 1] = Intercambio;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mColumnIndexOrder = ColumnIndex;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mOrderTypeSel = OrderType.Des;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;}</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/1316315825658248789/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/1316315825658248789' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/1316315825658248789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/1316315825658248789'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2010/10/ordenamiento-de-items-en-listview-al.html' title='Ordenamiento de Items en  ListView al dar click en columnas [C#]'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-2510210423954462251</id><published>2010-09-10T13:37:00.001-05:00</published><updated>2010-09-10T13:37:14.821-05:00</updated><title type='text'>Sistemas Operativos Desconocidos para la mayoría.</title><content type='html'>&lt;p&gt;Esta vez, vamos a dedicarle algunos post a los sistemas operativos que son completamente desconocidos para la gran mayoría de personas que utilizan un computador. pues en el mercado actual tenemos varias opciones para escoger:&lt;/p&gt;  &lt;p&gt;1.- Windows (El Sistema Operativo Mas Utilizado en Microcomputadoras por usuarios comunes y profesionales)&lt;/p&gt;  &lt;p&gt;2.- MacOS X (Exclusivo de Apple, en la ultima década a ganado terreno nuevamente gracias al regreso de&amp;#160; Steve Jobs)&lt;/p&gt;  &lt;p&gt;3.- Linux (Mas Utilizado en maquinas que trabajan como servidores, muy estable y confiable, aunque para muchos difícil a nivel de usuario final) de Linux existen algunas distribuciones como son (Fedora, RedHat, Debian, Ubuntu, FreeBSD,Suse, etc.)&lt;/p&gt;  &lt;p&gt;4. Luego tenemos otros Sistemas Operativos que trabajan en servidores especializados como&amp;#160; UNIX y sus diferentes variaciones como Solaris de Sun Microsystem (Ahora de ORACLE), muy utilizado en el ámbito empresarial,&amp;#160; BSD, Xenix etc. Cabe recalcar que el Sistema Operativo UNIX ha servido de inspiración para otros como Linux, Minix, y MacOS X. que están basados en UNIX. y que hicieron posible trabajar “Como en UNIX” en un PC.&lt;/p&gt;  &lt;p&gt;5.- Sistemas operativos especializados que vienen con las Mainframes.&lt;/p&gt;  &lt;p&gt;6.- y Por ultimo los sistemas operativos de antaño, que ya dejaron de ser usados como el MS-DOS, FreeDOS, Basic (Considerado S.O. en los 70’s) entre otros.&lt;/p&gt;  &lt;p&gt;Pero bueno ya con esto incluso estamos nombrando algunos Sistemas Operativos que para muchos son desconocidos, pero existen otros sistemas operativos algunos incluso creados por hobbie y que son desconocidos para muchos. Comenzaremos por “KolibriOS” un Sistema Operativo Basado en “MenuetOS” otro sistema operativo escrito completamente “FASM” un compilador de ASM o Ensamblador. Tiene una interface interesante y el código fuente está disponible para su estudio, ideal para los estudiantes de ASM. aquí les facilito unas capturas de pantalla.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_YQCfTeFGhh9_Kh0MWUWD1005eBXujcBcYkDpbENU8tUgaWWwhsINZ4ZVpU6EhPB6I8tdgnXUKi8i6LYlnS2ApyPprNoV4E71tcciGem9cSZE0ikZs8YPcuVf2-3IF5Ll9sU4t-QLGJ4/s1600-h/image%5B15%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZae6tgFD9nkIdroYHSlzx_sM0zlspg9dWhNrf53PTZPr_zDP1frZA-1SCa2wdAeubyD3BsV1CTLikN89yaFuroTo5zTP2H4T9uJLhoXDKxynKUL-OBreacOIeUippD-RfpYLqnL51a1g/?imgmax=800&quot; width=&quot;344&quot; height=&quot;265&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNzCMXLa0XAjD1wjRLPeSqsG5bCO88Tq5nz-bXMrFSwBs6O8XUgVv-2udURvqTdFfAaJdq1EztezB3uKlMct9w3pqi87xu3YfA5ec4RRT9O60t-W7yeVMmW2y37Zhz34dL_sW2zeulORQ/s1600-h/image%5B9%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY_XGxBIufVrOH8Yqd2rLclECHDUD54Cmol_26d9zvQNc_3UUlzXG18MCA8jYKpdeXXmngU-hBkKbwP1j-OLiQfUTiBulOpxmYB59_fM6y7N18PM2sbWaDR1ARSMhtaWJyVaerqGQBQWI/?imgmax=800&quot; width=&quot;357&quot; height=&quot;272&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9HjlWY7mUYWyF2Ik52hYyk3WFnDTlDFnsIU694qZxHY1HhGiuU5FicPkrOZvYAwaXdWqslJHRWF_dC-THHOHeo1IX_fIqp9udKewb3POfSFVrNHexFXwNJa-Ko2TJD7-vRZMnt7Wc-x8/s1600-h/image%5B14%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeYL675Lpy1ljMc33RhYDDYcUIL0vS3Rsl0pxQL9DxRE6izrHnaBP_muPOAMfCOP1tMuTX72VP5mVycv4Cd6M0RJS5m3pGpTTnGSclN0BvzMVwJfgAqMB2E94Jr8GHRpE2eeXPOD0v6-A/?imgmax=800&quot; width=&quot;360&quot; height=&quot;273&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;pueden bajar el soft de 3MB aproximadamente y probarlo en una maquina virtual en &lt;a href=&quot;http://www.kolibri.org&quot;&gt;www.kolibri.org&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Saludos a Todos.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/2510210423954462251/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/2510210423954462251' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/2510210423954462251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/2510210423954462251'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2010/09/sistemas-operativos-desconocidos-para.html' title='Sistemas Operativos Desconocidos para la mayoría.'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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/AVvXsEiZae6tgFD9nkIdroYHSlzx_sM0zlspg9dWhNrf53PTZPr_zDP1frZA-1SCa2wdAeubyD3BsV1CTLikN89yaFuroTo5zTP2H4T9uJLhoXDKxynKUL-OBreacOIeUippD-RfpYLqnL51a1g/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5217763770974196275.post-1591747760363783151</id><published>2010-09-07T12:23:00.001-05:00</published><updated>2012-11-26T11:58:58.987-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Programación"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio .NET"/><title type='text'>Pequeño ejemplo de como enviar un mail desde C#</title><content type='html'>Este código es muy sencillo gracias a las clases dentro del espacio de nombre&amp;nbsp; “System.Net.Mail”, un código bastante simple.&lt;br /&gt;
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(“smtp.tuservidor.com”, 25); //se conecta atu servidor al puerto 25. esto debes cambiarlo con los datos propios de tu servidor SMTP&lt;br /&gt;
/// preparacion del mensaje.   &lt;br /&gt;System.Net.Mail.MailMessage mensaje = new System.Net.Mail.MailMessage();    &lt;br /&gt;mensaje.From = new System.Net.Mail.MailAddress(&lt;a href=&quot;mailto:remitente@miservidor.com&quot;&gt;“remitente@miservidor.com&lt;/a&gt;”);    &lt;br /&gt;mensaje.To.Add(&lt;a href=&quot;mailto:destinatario1@tuservidor.com&quot;&gt;“destinatario1@tuservidor.com&lt;/a&gt;”);    &lt;br /&gt;mensaje.BodyEncoding = System.Text.Encoding.GetEncoding(1252);    &lt;br /&gt;mensaje.Subject = &quot;Hola Mundo&quot;;    &lt;br /&gt;mensaje.Body = “Este es el Cuerpo del mensaje”    &lt;br /&gt;
smtp.Send(mensaje); // se envia el mensaje   &lt;br /&gt;
mensaje.Dispose(); // se destruye el mensaje&lt;br /&gt;
Ojalá les Ayude. Hasta luego.</content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/1591747760363783151/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/1591747760363783151' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/1591747760363783151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/1591747760363783151'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2010/09/pequeno-ejemplo-de-como-enviar-un-mail.html' title='Pequeño ejemplo de como enviar un mail desde C#'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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-5217763770974196275.post-3227867418348733279</id><published>2010-08-27T12:58:00.001-05:00</published><updated>2012-11-26T11:59:33.752-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Procmail"/><category scheme="http://www.blogger.com/atom/ns#" term="Sendmail"/><title type='text'>Filtrar Spam en Sendmail por medio de PROCMAIL</title><content type='html'>Esta es una pequeña receta de procmail que me a ayudado mucho para el filtro de correos no deseados, estos filtros son el resultado de revisar los SUBJECT (Asunto) mas comunes en el Spam como lo son viagra lover exotic, nude, etc.&lt;br /&gt;
En si, este pequeño script lo que hace es hacer que procmail revise el Subject de los correos y si una de las palabras definidas en este se encuentra lo envíe a un buzón especifico en este caso “spam” para su posterior revisión. Para que procmail pueda hacer esta reasignación necesitaremos que el buzon “spam” permita el acceso a todos los usuarios, para esto podemos copiar cualquier otro buzón, vaciarlo y luego darle los accesos. lo podemos hacer de esta forma.&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; style=&quot;width: 425px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;423&quot;&gt;cd /var/mail/&lt;br /&gt;
cp jrosado spam&amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;///Copiamos el buzón de jrosado a el archivo spam&lt;/span&gt;&lt;br /&gt;
mutt –f spam &lt;span style=&quot;color: green;&quot;&gt;/// Revisamos el buzon spam y lo vaciamos&lt;/span&gt;&lt;br /&gt;
chmod 777 spam &lt;span style=&quot;color: green;&quot;&gt;/// damos acceso a Lectura, ejecución y lectura para el dueño, grupo y todos los usuarios&lt;/span&gt;.&lt;/td&gt;     &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Una vez ya creado el buzón spam, editamos el archivo /etc/procmailrc y escribimos el siguiente código:&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; style=&quot;width: 238px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;236&quot;&gt;LOGFILE=$HOME/procmail.log          &lt;br /&gt;
&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;:0&lt;/span&gt;               &lt;br /&gt;* ^Subject:(.*Acai|.*Treat|.*Viagr|.*manhood|.*Viagra|.*Setup|.*Twitter|.*lover|&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: teal;&quot;&gt;.*nude|.*exotic|.*energy|.*libido|.*bikini|.*male|.*prescription|&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: teal;&quot;&gt;.*pills|*.Enhancing|.*virility|.*luxury|.*orgasm|.*Astounding|&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: teal;&quot;&gt;.*Enlarging|.*sale|.*Penis|.*Free|.*Obama|.*answer|&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: teal;&quot;&gt;.*health|.*spears|.*jolie|.*discount|.*empower|&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: teal;&quot;&gt;.*Pharmacy|.*dollars|.*trials|.*sexual|.*transaction|.*sales) &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
/var/spool/mail/spam&lt;/td&gt;     &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
lo que está escrito con color azulado va en la misma línea por espacio se ven en diferentes lineas.&lt;br /&gt;
Espero que les sirva para su administración de correos electrónicos y ayude a dar el mejor servicio a sus usuarios.&lt;br /&gt;
Nota: la Distribución de Linux utilizada en este ejemplo es Oracle Linux Enterprise 4. (Basado en Redhat).    </content><link rel='replies' type='application/atom+xml' href='http://thejackblog.blogspot.com/feeds/3227867418348733279/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5217763770974196275/3227867418348733279' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/3227867418348733279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5217763770974196275/posts/default/3227867418348733279'/><link rel='alternate' type='text/html' href='http://thejackblog.blogspot.com/2010/08/filtrar-spam-en-sendmail-por-medio-de.html' title='Filtrar Spam en Sendmail por medio de PROCMAIL'/><author><name>Jackson Rosado</name><uri>http://www.blogger.com/profile/10704798367673099245</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>