<?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: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-2156290701393301637</id><updated>2012-01-25T04:09:13.430-08:00</updated><category term='Redes'/><category term='Inventores'/><category term='Lenguajes programación'/><category term='Windows XP'/><category term='Suse (distribuciones Linux)'/><category term='Teclado'/><category term='Puertos USB'/><category term='Sitios web hechos con flash'/><category term='NotifyIcon'/><category term='Metodólogia'/><category term='TreeNode'/><category term='ArrayList'/><category term='Truco para los reports hechos con DevExpress para evitar que las filas cortadas aparezcan sin linea superior'/><category term='Ejemplo'/><category term='MonoDeveloped'/><category term='Utilidades'/><category term='Combobox'/><category term='Cargar datos'/><category term='Windows'/><category term='C #'/><category term='XAMPP'/><category term='Photoshop'/><category term='Ordenador'/><category term='Filtrar'/><category term='Visual Studio 2008'/><category term='Gestor de directorios'/><category term='Pen Drive'/><category term='Libreria Tkinter'/><category term='Librerias OLEDB'/><category term='Buenos consejos'/><category term='Árbol en Joomla'/><category term='Mono'/><category term='Diferencia en horas y minutos de dos horarios'/><category term='Rgiones'/><category term='Error'/><category term='Antivirus'/><category term='Servidor Apache'/><category term='Genius Driver'/><category term='Calculo del peso de un directorio'/><category term='Configuraciones'/><category term='Modulo'/><category term='Funciónes'/><category term='Whatsapp'/><category term='Inno Setup 5'/><category term='Visual Basic 6'/><category term='Windows Vista'/><category term='VMWare'/><category term='Propiedades'/><category term='MySQL'/><category term='CSS'/><category term='Maquina Virtual'/><category term='Componentes DevExpress'/><category term='Utilidades del sistema'/><category term='GridView'/><category term='ordenar una TList'/><category term='SQL Server 2005'/><category term='Progamas Windows'/><category term='Herramientas de desarrollo web'/><category term='Libreria Shufle'/><category term='XML'/><category term='Eliminar en base de datos Access'/><category term='Multiplataforma'/><category term='DevExpress'/><category term='Restoration 2.5.14'/><category term='Navegador de directorios (versión mejorada)'/><category term='Arreglar fotos  movidas'/><category term='Ideas para proyectos propios'/><category term='Cómo crear checkbox en tiempo de ejecución'/><category term='Aclaración entre Menú y Componente / Modulo en Joomla'/><category term='Script que me abre una página web u otra según un numero al azar'/><category term='Centrar formulario'/><category term='Modificar en base de datos Access'/><category term='Bandeja de sistema'/><category term='Bluetooth'/><category term='Hilos (Thread)'/><category term='Diseño'/><category term='Lenguaje de marcas extensible'/><category term='JavaScript'/><category term='Windows-No hay disco'/><category term='Arquitectura de software'/><category term='Errores de código'/><category term='Telefonía móvil'/><category term='Orientación y tipo de hoja'/><category term='Python'/><category term='Navegador de directorios'/><category term='MVC'/><category term='Funciones de String'/><category term='Cálculo para obtener el IVA de una cantidad'/><category term='Ejercicio hecho en C # que carga en una combo subcadeenas escritas en un textbox y separadas por ;'/><category term='VirtualBox'/><category term='.Net'/><category term='Obtener ruta'/><category term='Codigo'/><category term='Correo Electronico'/><category term='Cómo mejorar como programador'/><category term='Traducir al castellano'/><category term='Windows Siete'/><category term='Libreria Random'/><category term='Productos Google'/><category term='Base de datos'/><category term='Ajax'/><category term='Subir a FTP'/><category term='GUI'/><category term='TOP'/><category term='Matemáticas'/><category term='Opinion'/><category term='Access'/><category term='DNIe'/><category term='Cómo recuperar archivos borrados de la papelera de reciclaje'/><category term='Crear instaladores'/><category term='Noticias'/><category term='Virus'/><category term='Curiosidades de C Sharp y SQL'/><category term='XtraReports'/><category term='Fotografía'/><category term='Regedit'/><category term='Código'/><category term='TextBox'/><category term='Android'/><category term='Analizar y descomprimir disco'/><category term='Msconfig'/><category term='Insertar en base de datos Access'/><category term='Script'/><category term='Jasper'/><category term='Reports'/><category term='Internet'/><category term='Quitar seguridad UAC'/><category term='Google Wave'/><category term='Criptología'/><category term='Error del sistema'/><category term='GNU/Linux'/><category term='Algunas frases buenas'/><category term='Particionar disco duro'/><category term='Gestor drivers'/><category term='Uso de propiedades'/><category term='ASP'/><category term='Proyecto Bouncy Castle'/><category term='Listado de todos los archivos encontrados en un directorio (incluyendo subdirectorios)'/><category term='Java'/><category term='Open Source'/><category term='App Engine'/><category term='Joomla'/><category term='Trucos'/><category term='Ejemplo de interface gráfica'/><category term='TreeView'/><category term='Linux'/><category term='Reparar acceso a Internet'/><category term='EasyPHP'/><category term='Componentes'/><category term='Php'/><category term='Menus'/><category term='Hardware'/><category term='Seleccionar en base de datos Access'/><category term='Fecha y hora'/><category term='¿Qué es el Modelo Vista Controlador?'/><category term='Conectar a internet'/><category term='Estructura en árbol'/><category term='Enlaces'/><category term='TDT'/><category term='Máscaras de formato'/><category term='Formateo y reinstalación'/><title type='text'>PROGRAMANDO DESDE SPAIN</title><subtitle type='html'>BITÁCORA DE UN DESARROLLADOR DE APLICACIONES INFORMÁTICAS QUE SABE ALGO DE JAVA</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4098889544277144985</id><published>2012-01-17T04:19:00.000-08:00</published><updated>2012-01-17T04:25:14.788-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='DevExpress'/><category scheme='http://www.blogger.com/atom/ns#' term='Truco para los reports hechos con DevExpress para evitar que las filas cortadas aparezcan sin linea superior'/><title type='text'>Truco para los reports hechos con DevExpress para evitar que las filas cortadas aparezcan sin linea superior</title><content type='html'>Tras este titulo tan largo se esconde una explicación breve pero muy valiosa.&lt;br /&gt;&lt;br /&gt;Vereis, harto de que mis informes (tan bien hechos) se destrozasen por el salto inevitable de cambio de página, pensé y descubrí como arreglarlo.&lt;br /&gt;&lt;br /&gt;Y la solución es poner una linea lo más fina posible y tan ancha como la tabla donde se cargan los datos, y colocarla en el HeaderPage del report.&lt;br /&gt;&lt;br /&gt;Y hasta aquí todo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4098889544277144985?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4098889544277144985/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2012/01/truco-para-los-reports-hechos-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4098889544277144985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4098889544277144985'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2012/01/truco-para-los-reports-hechos-con.html' title='Truco para los reports hechos con DevExpress para evitar que las filas cortadas aparezcan sin linea superior'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-6909590662884784044</id><published>2012-01-17T00:09:00.000-08:00</published><updated>2012-01-17T00:14:41.546-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matemáticas'/><category scheme='http://www.blogger.com/atom/ns#' term='Cálculo para obtener el IVA de una cantidad'/><title type='text'>Cálculo para obtener el IVA de una cantidad</title><content type='html'>Esta entrada no es muy clasificable en el ámbito que me muevo de programación, no obstante como de una vez para otra me olvido, he decidido escribirla:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;cantidadIVA = ((cantidad_sin_iva * 18) / 100);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agur.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-6909590662884784044?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/6909590662884784044/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2012/01/calculo-para-obtener-el-iva-de-una.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6909590662884784044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6909590662884784044'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2012/01/calculo-para-obtener-el-iva-de-una.html' title='Cálculo para obtener el IVA de una cantidad'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-6642057118063917815</id><published>2012-01-08T07:40:00.000-08:00</published><updated>2012-01-08T10:33:32.845-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Ordenador'/><category scheme='http://www.blogger.com/atom/ns#' term='Maquina Virtual'/><category scheme='http://www.blogger.com/atom/ns#' term='Whatsapp'/><title type='text'>Objetivo logrado: instalar Whatsapp en un ordenador</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-9bPEg1W7y8k/Twm52jcQ60I/AAAAAAAABLc/G669v7KbHS4/s1600/android-h.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 264px;" src="http://2.bp.blogspot.com/-9bPEg1W7y8k/Twm52jcQ60I/AAAAAAAABLc/G669v7KbHS4/s320/android-h.jpg" alt="" id="BLOGGER_PHOTO_ID_5695287550664567618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Fue tedioso pero yo resulté constante y al final lo logré.&lt;br /&gt;&lt;br /&gt;Empezaré desde el principio:&lt;br /&gt;&lt;br /&gt;1. Para utilizar whatsapp desde una computadora hay que saber una cosa: se necesita un número de teléfono nuevo. ¿Por qué? Porque no se permite usar el mismo número de teléfono para el whatsapp del ordenador y del móvil al mismo tiempo.&lt;br /&gt;En mi caso para este proposito utilicé los servicios de&lt;span style="text-decoration: underline;"&gt; F&lt;/span&gt;&lt;a href="http://www.fonyou.es/"&gt;onyou&lt;/a&gt; donde gratuitamente te creas un nuevo número.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-0kZrve3bFSM/TwnhWyJo-eI/AAAAAAAABLo/B5yVfNdpf7Y/s1600/whatsapp-mil-millones-mensajes.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 209px; height: 182px;" src="http://3.bp.blogspot.com/-0kZrve3bFSM/TwnhWyJo-eI/AAAAAAAABLo/B5yVfNdpf7Y/s320/whatsapp-mil-millones-mensajes.jpg" alt="" id="BLOGGER_PHOTO_ID_5695330985322281442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2. Android se debe correr en una máquina virtual. Yo usé &lt;a href="http://youwave.com/"&gt;YouWave &lt;/a&gt;de Android. La desventaja que tiene es que es de pago y te deja un breve tiempo para su uso gratuito. Pero bueno, siempre se puede gastar uno el dinero en comprar la licencia, o hacer uso de aplicacions Open source que sirvan para lo mismo.&lt;br /&gt;&lt;br /&gt;3. Asi que se tiene instalado Youwave, nos descargamos Whatsapp. Para esto o entramos en la páagina web utilizando el navegador de Android o lo hacemos con nuestro ordenador. El sitio oficial es &lt;a href="http://www.whatsapp.com/"&gt;http://www.whatsapp.com/&lt;/a&gt;&lt;br /&gt;Con la aplicación descargada y dependiendo de cómo la hayamos obtenido procedemos a instalarla. Si la descargamos utilizando la segunda opción debemos guardarlo en  &lt;em&gt;C:\User\&lt;tu usuario=""&gt;\youwave\android.apps.&lt;br /&gt;&lt;/tu&gt;&lt;/em&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;Luego ejecuamos el instalador&lt;em&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;.&lt;/em&gt; De esta operación tengo que destacar que el número de teléfono a intreoducir tiene que ser el nuevo.&lt;br /&gt;&lt;br /&gt;Después ya podremos agregar a nuestros contactos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para ver un manual más detallado pinchen &lt;a href="http://www.redeszone.net/windows/whatsapp-en-un-pc-manual-para-instalar-whatsapp-en-el-ordenador/"&gt;aquí&lt;/a&gt;  o &lt;a href="http://www.malavida.com/blog/31686/whatsapp-para-pc"&gt;aquí&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-6642057118063917815?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/6642057118063917815/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2012/01/objetivo-logrado-ya-consegui-tener.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6642057118063917815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6642057118063917815'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2012/01/objetivo-logrado-ya-consegui-tener.html' title='Objetivo logrado: instalar Whatsapp en un ordenador'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-9bPEg1W7y8k/Twm52jcQ60I/AAAAAAAABLc/G669v7KbHS4/s72-c/android-h.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2218150830495204149</id><published>2012-01-05T00:24:00.000-08:00</published><updated>2012-01-05T00:32:59.894-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='¿Qué es el Modelo Vista Controlador?'/><category scheme='http://www.blogger.com/atom/ns#' term='Enlaces'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Arquitectura de software'/><title type='text'>¿Qué es el Modelo Vista Controlador?</title><content type='html'>Según la amiga Wikipedia se definiria así:&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;b&gt;Modelo Vista Controlador (MVC)&lt;/b&gt; es un patrón de &lt;a href="http://es.wikipedia.org/wiki/Arquitectura_de_software" title="Arquitectura de software"&gt;arquitectura de software&lt;/a&gt; que separa los &lt;a href="http://es.wikipedia.org/wiki/Datos" title="Datos" class="mw-redirect"&gt;datos&lt;/a&gt; de una aplicación, la &lt;a href="http://es.wikipedia.org/wiki/Interfaz_de_usuario" title="Interfaz de usuario"&gt;interfaz de usuario&lt;/a&gt;, y la &lt;a href="http://es.wikipedia.org/wiki/L%C3%B3gica_de_negocio" title="Lógica de negocio"&gt;lógica de negocio&lt;/a&gt; en tres &lt;a href="http://es.wikipedia.org/wiki/Componentes" title="Componentes" class="mw-redirect"&gt;componentes&lt;/a&gt; distintos. El patrón de llamada y retorno MVC (según CMU), se ve frecuentemente en aplicaciones &lt;a href="http://es.wikipedia.org/wiki/Web" title="Web" class="mw-redirect"&gt;web&lt;/a&gt;, donde la vista es la página &lt;a href="http://es.wikipedia.org/wiki/HTML" title="HTML"&gt;HTML&lt;/a&gt; y el código que provee de datos dinámicos a la página. El modelo es el &lt;a href="http://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_base_de_datos" title="Sistema de gestión de base de datos" class="mw-redirect"&gt;Sistema de Gestión de Base de Datos&lt;/a&gt; y la &lt;a href="http://es.wikipedia.org/wiki/L%C3%B3gica_de_negocio" title="Lógica de negocio"&gt;Lógica de negocio&lt;/a&gt;, y el controlador es el responsable de recibir los eventos de entrada desde la vista.&lt;a href="http://www.fdi.ucm.es/profesor/jpavon/poo/2.14.MVC.pdf"&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class=" down" style="display: block;" id="formatbar_CreateLink" title="Enlace" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;img src="img/blank.gif" alt="Enlace" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt; &lt;/a&gt;&lt;/blockquote&gt;&lt;div style="text-align: left;"&gt;Luego un compañero del trabajo me pasó este &lt;a href="http://www.fdi.ucm.es/profesor/jpavon/poo/2.14.MVC.pdf"&gt;enlace &lt;/a&gt;y me quedó más claro porque se incluye un ejemplo hecho en Java.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ver &lt;a href="http://es.wikipedia.org/wiki/Modelo_Vista_Controlador"&gt;enlace de la Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;br /&gt;&lt;br /&gt;Ahora solo falta ponerlo en practica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2218150830495204149?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2218150830495204149/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2012/01/que-es-el-modelo-vista-controlador.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2218150830495204149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2218150830495204149'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2012/01/que-es-el-modelo-vista-controlador.html' title='¿Qué es el Modelo Vista Controlador?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2068386679767831190</id><published>2011-12-22T14:29:00.000-08:00</published><updated>2011-12-22T23:53:58.326-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Libreria Random'/><category scheme='http://www.blogger.com/atom/ns#' term='Libreria Shufle'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='Script que me abre una página web u otra según un numero al azar'/><title type='text'>Python: Script que me abre una página web u otra según un numero al azar</title><content type='html'>Este es un programita breve y que se podría abreviar más, que elige al azar una emisora de radio para abrirla en un navegador.&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;En el primer import importo la función  shuffle que es propia de la libreria random.  En la segunda importo la libreria webbrowser.&lt;br /&gt;En la tercera creo una lista con los nombres de las tres emisoras.&lt;br /&gt;En la cuarta llamo a la función shuffle. Esta función reorganiza el listado al azar.&lt;br /&gt;En las quinta y sexta imprimo la lista y el primer elemento de la lista respectivamente. Estas lineas de código las escribí para verificar el exito del la función shuffle. Pero bien podrian quitarse,... ¿para lo quéd hacen?&lt;br /&gt;Luego, abro una ruta u otra dependiendo del nombre de emisora seleccionado utilizado la función open_new de la libreria webbrowser.&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;from random import shuffle&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;import webbrowser&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;listaDeEmisoras=["Kiss fm","M 80","Europa fm"]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;shuffle(&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;listaDeEmisoras&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;print &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;listaDeEmisoras&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;print &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;listaDeEmisoras&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;listaDeEmisoras&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[0]=="Kiss fm"):&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;[]&lt;/span&gt;webbrowser.open_new("http://www.kissfm.es/player/kissplayer/index.php")&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;elif (&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;listaDeEmisoras&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[0]=="Europa fm"):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;[]&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;webbrowser.open_new("www.europafm.com/directo/")&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;elif (&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;listaDeEmisoras&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;[0]=="M 80"):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;[]&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;webbrowser.open_new("http://www.m80radio.com/multimedia/radios.html")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y hasta aquí todo. Solo falta poner el .exe de este programa en Inicio para que al iniciarse Windows se ejecute.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;br /&gt;&lt;br /&gt;¡Y FELIZ NAVIDAD!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2068386679767831190?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2068386679767831190/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/python-script-que-me-abre-una-pagina.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2068386679767831190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2068386679767831190'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/python-script-que-me-abre-una-pagina.html' title='Python: Script que me abre una página web u otra según un numero al azar'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8439743456006422345</id><published>2011-12-19T01:41:00.000-08:00</published><updated>2011-12-19T02:08:56.432-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Código'/><category scheme='http://www.blogger.com/atom/ns#' term='ordenar una TList'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><title type='text'>C#: ¿Cómo se ordena una TList ?</title><content type='html'>Es muy sencillo. De tan fácil como es hasta cavilé demasiado.&lt;br /&gt;&lt;br /&gt;Teniendo una lista:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;TList&lt;personascontacto&gt; listaDePersonasDeContacto = DataRepository.PersonsContacto.GetAll();&lt;/personascontacto&gt;&lt;/span&gt;&lt;br /&gt;y esta se ordena así:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; listaDePersonasDeContacto.Sort(PersonasContactoColumn.StrApellido1.ToString());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por cierto, &lt;span style="color: rgb(153, 0, 0);"&gt;PersonasContactoColumn.StrApellido1.ToString() &lt;/span&gt;devuelve la columna por la que queremos ordenar. En este caso el primer apellido del contacto.&lt;br /&gt;&lt;br /&gt;Saludos!&lt;br /&gt;&lt;br /&gt;Gracias Edwin por explicarmelo porque yo me calenté mucho la cabeza. ¡Con lo tirao que está!&lt;br /&gt;&lt;br /&gt;P.D.: Haciendo esto, indico que en caso de que haya coincidencia, mire el segundo apellido&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;listaDePersonasDeContacto.Sort(PersonasContactoColumn.StrApellido1.ToString() + ", " + PersonasContactoColumn.StrApellido2.ToString());&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8439743456006422345?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8439743456006422345/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/c-como-se-ordena-una-tlist.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8439743456006422345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8439743456006422345'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/c-como-se-ordena-una-tlist.html' title='C#: ¿Cómo se ordena una TList ?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4226001824125353189</id><published>2011-12-18T01:18:00.000-08:00</published><updated>2011-12-18T06:40:31.651-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo de interface gráfica'/><category scheme='http://www.blogger.com/atom/ns#' term='Libreria Tkinter'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Ejemplo básico de interface gráfca de usuario con Python</title><content type='html'>Para hacer interfaces gráficas utilizando Python existen muchas librerias que se pueden descargar e instalar en el equipo. Aquí  hay un listado &lt;a href="http://wiki.python.org/moin/GuiProgramming"&gt;http://wiki.python.org/moin/GuiProgramming&lt;/a&gt;. No obstante para este ejemplo se usa &lt;a href="http://wiki.python.org/moin/TkInter"&gt;Tkinter&lt;/a&gt;. Siendo está ya la integrada al instalar Python.&lt;br /&gt;&lt;br /&gt;En elejemplo de hoy vamos a utilizar Tkinter para crer un botón que al ppulsarlo nos escriba la palabra "Hola".&lt;br /&gt;&lt;br /&gt;En primer lugar hacemos la importación de la libreria para tener todos sus componentes disponibles:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;from Tkinter import *&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En segundo lugar creamos la ventana principal. Para ello usamos Frame, que es uno de los componentes de la libreria Tkinter. Frame es la ventana principal.&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;frame=Frame()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para visualizar el texto utilizaremos el componente Entry de Python porque este componente sirve para meter o visualizar una linea. En cambio si fuesen varias utilizariamos Text.&lt;br /&gt;&lt;br /&gt;Para crear nuestro cmpo de texto necesitamos crear una variable del tipo StringVar. Esta variable simplemente contiene una caja de texto  le diremos a nuestra caja de texto que en ella guarde el texto.  La forma de hacerlo es así de sencilla:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;v = StringVar()&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;campoTexto = Entry(frame, textvariable=v )&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;Con esto hemos creado la variable v de tipo StringVar y luego hemos creado campoTexto de tipo Entry. Los parametros: frame indica donde queremos que vaya el campo de texto y con textvariable=v indicamos cual es la StringVar donde queremos que deje el texto escrito por el usuario o en el que queremos dejr nosotros el texto que se muestre. Los métodos v.get() y v.set() nos van a permitir obtener o fijar el texto.&lt;br /&gt;&lt;br /&gt;Para el botón, usaremos el componente Button de Python.&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;boton=Button(frame, text="Saludar",command=saludando)&lt;/span&gt;&lt;br /&gt;Aquí de nuevo, frame, indica donde queremos que aparezca el botón. Con text indicamos que la propiedad text valga "Saludar" y que la función qu se ejecute al pulsar el botón se llame Saludando. Por supuesto esta función se debe de definir antes de escribir este código:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;def saludando():&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt; [] &lt;/span&gt; v.set("Hola")&lt;/span&gt;&lt;br /&gt;Esta función simplemente pone Hola dentro del StringVar que asociamos previamente al campo de texto Entry. Cuando se ejecute esta función, se meterá dentro de v un texto "Hola" y este se mostrará en el campo Entry de la ventana.&lt;br /&gt;&lt;br /&gt;El código completo es este:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;from Tkinter import *&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;def saludando():&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;[] &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;v.set("Hola")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;frame=Frame() &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;v=StringVar()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;campo=Texto=Entry(frame,textvariable=v)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;boton=Button(frame,text="Saludar",command=saludando)&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;buton.pack(side=LEFT)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;v = StringVar()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;text = Entry(frame, textvariable=v )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;text.pack(side=LEFT)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;frame.pack()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;frame.mainloop()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nos quedan por explicar algunos detalles:&lt;br /&gt;Para cada widguet (button, entry, frame,...) necesitaremos llamar a su método pack() el cual se encarga de colocar cadda elemento de la ventana dándole el tamaño adecuado. Podemos dejar los parametros vacios, dejando que elija, o bien, indicar la ubicación nosotros mismos. En estas lineas lo pusimos nosotros mismos: &lt;span style="color: rgb(153, 0, 0);"&gt;text.pack(side=LEFT)&lt;/span&gt;  y &lt;span style="color: rgb(153, 0, 0);"&gt;text.pack(side=LEFT)&lt;/span&gt;. Asi aparecerán en horizontal.&lt;br /&gt;&lt;br /&gt;Una vez terminado el programa, para siga &lt;a href="http://chuwiki.chuidiang.org/index.php?title=Ejemplo_b%C3%A1sico_de_interface_gr%C3%A1fica_de_usuario_con_Python#" style="text-decoration:underline" id="_GPLITA_0" title="Powered by Text-Enhance"&gt;activo&lt;/a&gt; y la ventana funcionando, debemos meternos en el bucle principal de tratamiento de eventos de &lt;i&gt;frame&lt;/i&gt;. Es decir, hacemos la llamada a &lt;i&gt;frame.mainloop()&lt;/i&gt;.  Si no lo hacemos así, el programa termina inmediatamente y no veremos  nada (salvo que escribamos línea a línea en el intérprete de python).  Esta llamada lo único que tiene dentro es un bucle infinito, en el que  va recogiendo los eventos de teclado o ratón para "despacharlos" a los  componentes de la ventana y que estos puedan tratarlos, por ejemplo, el  click sobre el botón.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Est articulo lo he sacado de &lt;a href="http://chuwiki.chuidiang.org/index.php?title=Ejemplo_b%C3%A1sico_de_interface_gr%C3%A1fica_de_usuario_con_Python"&gt;http://chuwiki.chuidiang.org/index.php?title=Ejemplo_b%C3%A1sico_de_interface_gr%C3%A1fica_de_usuario_con_Python&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos. Y mañana mas&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4226001824125353189?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4226001824125353189/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/ejemplo-basico-de-interface-grafca-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4226001824125353189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4226001824125353189'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/ejemplo-basico-de-interface-grafca-de.html' title='Ejemplo básico de interface gráfca de usuario con Python'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-104704776319097888</id><published>2011-12-12T00:04:00.000-08:00</published><updated>2011-12-12T00:18:19.535-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cómo crear checkbox en tiempo de ejecución'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='Código'/><category scheme='http://www.blogger.com/atom/ns#' term='XtraReports'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Componentes DevExpress'/><title type='text'>C #; Cómo crear checkbox en tiempo de ejecución.</title><content type='html'>En este caso he subido código que crea checkbox en tiempo de ejecución. Porque el report que lo utiliza requiere que por cada archivo localizado en un directorio (incluyendo subdirectorios) se añada así al informe, en lugar de como texto normal en una label normal. Supongo que es un pijotada pero me ha servido para aprender una cosa nueva. Asique ya me podria ir a la cama sino fuese porque son  las 9:20.&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private void CrearCheckbox(string texto)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            posicionY += 23; /*incremento la posicionY (esta variabled dtermina donde se va a ubicar el checkbox)*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                Detail.HeightF = posicionY; /*aumento la longitud del detalle*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                DevExpress.XtraReports.UI.XRCheckBox chkNombreFichero1 = new XRCheckBox(); /*creo el checkbox*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                chkNombreFichero1.Name = "chk" + numeroDeFicheros.ToString(); /*le doy nombre*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                chkNombreFichero1.WidthF = 615; /*le doy ancho */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                chkNombreFichero1.HeightF = 23; /*le doy altura*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                chkNombreFichero1.Text = texto; /*le doy el mismo valor que el nombre del fichero*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                chkNombreFichero1.TopF = posicionY - 23; /*lo coloco en la posición*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                chkNombreFichero1.Checked = true; /*lo activo*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                chkNombreFichero1.Visible = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                numeroDeFicheros += 1; //incremento el valor para que los nombres no se repitan&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                Detail.Controls.Add(chkNombreFichero1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            { &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Saludos desde Albacete.&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-104704776319097888?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/104704776319097888/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/c-como-crear-checkbox-en-tiempo-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/104704776319097888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/104704776319097888'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/c-como-crear-checkbox-en-tiempo-de.html' title='C #; Cómo crear checkbox en tiempo de ejecución.'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-1579612678136913215</id><published>2011-12-08T04:04:00.000-08:00</published><updated>2011-12-08T05:14:23.044-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Listado de todos los archivos encontrados en un directorio (incluyendo subdirectorios)'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>En C#: listado de todos los archivos encontrados en un directorio (incluyendo subdirectorios)</title><content type='html'>Para desarrollar este código utilizo un botón (llamado btnVer) y una caja de texto (llamada txtContenido).&lt;br /&gt;En la caja de texto cargo los nombres de todos los ficheros contenidos en la ruta donde está el proyecto (no olvidemos que este código nació para probar un algoritmo que en el trabajo no me salia, y en casa sí).  El botón hace la llamada a los procesos.&lt;br /&gt;&lt;br /&gt;Así es el resultado del formulario al ejecutar el programa:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-n83uUBwrenY/TuC3nKwQ7hI/AAAAAAAABKE/0et6iuSf00g/s1600/listado%2Bde%2Bficheros.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 170px;" src="http://3.bp.blogspot.com/-n83uUBwrenY/TuC3nKwQ7hI/AAAAAAAABKE/0et6iuSf00g/s320/listado%2Bde%2Bficheros.jpg" alt="" id="BLOGGER_PHOTO_ID_5683744613271137810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Código del botón:&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;        private void btnVer_Click(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;     txtContenedor.Text = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;     ExtraerFicherorDelSubDirectorio(Application.StartupPath);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora el código de &lt;span style="color: rgb(204, 0, 0);"&gt; ExtraerFicherorDelSubDirectorio (string ruta)&lt;/span&gt; que es una función recursiva:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;        private void ExtraerFicherorDelSubDirectorio(string ruta)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;     DirectoryInfo oDirectorio = new DirectoryInfo(ruta);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;  &lt;/span&gt;&lt;br /&gt;    //obtengo ls ficheros contenidos en la ruta&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;    foreach (FileInfo file in oDirectorio.GetFiles())&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;         txtContenedor.Text += file.Name+"\n";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;               }&lt;/span&gt;&lt;br /&gt;   //obtego los subdirectorios que cuelgan de la ruta&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;   foreach (DirectoryInfo subdirectorios in oDirectorio.GetDirectories())&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;              {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;        ExtraerFicherorDelSubDirectorio(subdirectorios.FullName);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;               }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;Saludos.&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-1579612678136913215?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/1579612678136913215/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/en-c-listado-de-todos-los-archivos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1579612678136913215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1579612678136913215'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/12/en-c-listado-de-todos-los-archivos.html' title='En C#: listado de todos los archivos encontrados en un directorio (incluyendo subdirectorios)'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-n83uUBwrenY/TuC3nKwQ7hI/AAAAAAAABKE/0et6iuSf00g/s72-c/listado%2Bde%2Bficheros.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7971456069167854696</id><published>2011-11-26T01:09:00.000-08:00</published><updated>2011-11-26T01:44:38.495-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Buenos consejos'/><category scheme='http://www.blogger.com/atom/ns#' term='Cómo mejorar como programador'/><title type='text'>5 habilidades que debes de desarrollar para ser mejor programador.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Ve7zrEu_1D8/TtCxv0YYaxI/AAAAAAAABJ4/cbpevEovAOU/s1600/programador-feliz-1.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 267px; height: 274px;" src="http://2.bp.blogspot.com/-Ve7zrEu_1D8/TtCxv0YYaxI/AAAAAAAABJ4/cbpevEovAOU/s320/programador-feliz-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5679234565187070738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para ser un buen programador lo menos importante es saber muchos lenguajes de programación. Lo esencial, y a lo que hay que aprender, es a plantear y diseñar las mejores soluciones ante un problema. Por esta razón vamos a apreder 5 habilidades con  el fin de ser mejores programando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. CREATIVIDAD:&lt;/span&gt;&lt;br /&gt;Esta habilidad de suma importancia consiste en tener la imaginación para ver mentalmente la solución a un problema planteándola como algoritmo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. ORGANIZACIÓN MENTAL:&lt;/span&gt;&lt;br /&gt;Ser despistado y no tener bien organizadas las ideas es un gran inconveniente. Es importante tener las ideas claras porque así se sabrá qué pasos seguir sin perderse por el camino.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. TENER MENTE ABIERTA:&lt;/span&gt;&lt;br /&gt;No hay que tener la mente cuadrada pensando que para conseguir un objetivo sólo hay una solución. Al contrario, siempre hay varias.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. SER AMBICIOSO:&lt;/span&gt;&lt;br /&gt;No hay que agobiarse por obtener errores. Ni mucho menos abandonar. Al contrario hay que ser constante. En informática lo más probable es que obtengas un error así que hay que estar preparado para solventarlo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. SER CURIOSO:&lt;/span&gt;&lt;br /&gt;Si te quedas con lo que ya sabes sin tener la sana curiosidad de aprensder más no serás buen programador. Aquí lo ideal es estar abierto, querer mejorar aprendiendo metodologíaas más eficientes, y escuchar siempre consejos que ayuden.&lt;br /&gt;&lt;br /&gt;Saludos, Victor&lt;br /&gt;&lt;br /&gt;P.D.: La idea la saque de aquí:&lt;a href="http://www.vidamrr.com/2011/11/5-habilidades-que-debes-desarrollar.html"&gt; http://www.vidamrr.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7971456069167854696?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7971456069167854696/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/11/5-habilidades-que-debes-de-desarrollar.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7971456069167854696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7971456069167854696'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/11/5-habilidades-que-debes-de-desarrollar.html' title='5 habilidades que debes de desarrollar para ser mejor programador.'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Ve7zrEu_1D8/TtCxv0YYaxI/AAAAAAAABJ4/cbpevEovAOU/s72-c/programador-feliz-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-755612664869560026</id><published>2011-11-18T12:57:00.000-08:00</published><updated>2011-11-18T13:02:45.145-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diferencia en horas y minutos de dos horarios'/><category scheme='http://www.blogger.com/atom/ns#' term='Código'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Cálculo de la diferencia en horas y minutos de dos horarios</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-DcJPoFoyEG4/TsbHRK162LI/AAAAAAAABJs/s5lKS-8WhG8/s1600/cp.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-GU9Fqoxbnak/TsbG_LuFPHI/AAAAAAAABJg/_DwWLNSy2og/s1600/python.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 267px; height: 235px;" src="http://2.bp.blogspot.com/-GU9Fqoxbnak/TsbG_LuFPHI/AAAAAAAABJg/_DwWLNSy2og/s320/python.png" alt="" id="BLOGGER_PHOTO_ID_5676443169127218290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Estaba meditando como resolver un código que me calculase la diferencia entre dos horas cuando se terminó la jornada laboral. Entonces decidí que tal código lo haría en Python como práctica de un aprendizaje.&lt;br /&gt;&lt;br /&gt;Y cómo no, tras un ratejo en el que he disfrutado con Python (ese lenguaje que no gusta a mis compañeros de trabajo al punto del que no le ven ni uso ni futuro), he resuelto el código necesario.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-DcJPoFoyEG4/TsbHRK162LI/AAAAAAAABJs/s5lKS-8WhG8/s1600/cp.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 438px; height: 413px;" src="http://3.bp.blogspot.com/-DcJPoFoyEG4/TsbHRK162LI/AAAAAAAABJs/s5lKS-8WhG8/s320/cp.jpg" alt="" id="BLOGGER_PHOTO_ID_5676443478129301682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Perdonen por haber puesto en una imagen el códigio fuente pero lo hice por causas mayores: El operador de comparativa (&amp;gt;) era confundido con los delimitadores de las etiquetas de HTML.&lt;br /&gt;&lt;br /&gt;El código podria tener más complejidad, pero por hoy esta perfecto. Mañana más.&lt;br /&gt;&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-755612664869560026?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/755612664869560026/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/11/calculo-de-la-diferencia-en-horas-y.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/755612664869560026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/755612664869560026'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/11/calculo-de-la-diferencia-en-horas-y.html' title='Cálculo de la diferencia en horas y minutos de dos horarios'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-GU9Fqoxbnak/TsbG_LuFPHI/AAAAAAAABJg/_DwWLNSy2og/s72-c/python.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-1999864469437574440</id><published>2011-10-08T03:16:00.000-07:00</published><updated>2011-10-08T14:29:31.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Funciones de String'/><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='TextBox'/><category scheme='http://www.blogger.com/atom/ns#' term='Combobox'/><category scheme='http://www.blogger.com/atom/ns#' term='Ejercicio hecho en C # que carga en una combo subcadeenas escritas en un textbox y separadas por ;'/><category scheme='http://www.blogger.com/atom/ns#' term='Código'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><title type='text'>Ejercicio hecho en C # que carga en una combo subcadeenas escritas en un textbox y separadas por ;</title><content type='html'>&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Este ejercicio, como reza el titulo del articulo, consiste en cargar en la combo cmbDatos, las palabras delimitadas por ; que se escriben en txtString.&lt;br /&gt;El uso del ArrayList lista es puramente para mi comodidad  porque así, cuando probaba la aplicación iba corroborado que subcadenas se extraian.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;        private void btnCargar_Click(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            cmbDatos.Items.Clear();&lt;br /&gt;            ArrayList lista = new ArrayList();&lt;br /&gt;            string subcadena;&lt;br /&gt;            string cadena = txtString.Text;&lt;br /&gt;            while (cadena.Length &amp;gt; 0)&lt;br /&gt;            {&lt;br /&gt;                int indice = cadena.IndexOf(';');&lt;br /&gt;                if (indice &amp;gt; 0)&lt;br /&gt;                    subcadena = cadena.Substring(0, indice);&lt;br /&gt;                else&lt;br /&gt;                {&lt;br /&gt;                    subcadena = cadena;&lt;br /&gt;                    cadena = "";&lt;br /&gt;                }&lt;br /&gt;                lista.Add(subcadena);&lt;br /&gt;                int numeroDeCararteres= (cadena.Length-1) - indice;&lt;br /&gt;                if (numeroDeCararteres&amp;gt;-1)&lt;br /&gt;                   cadena = cadena.Substring(indice+ 1,numeroDeCararteres);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;            for (int i = 0; i &amp;lt; lista.Count; i++)&lt;br /&gt;            {&lt;br /&gt;                cmbDatos.Items.Add(lista[i].ToString());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-1999864469437574440?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/1999864469437574440/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/10/ejercicio-hecho-en-c-que-carga-en-una.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1999864469437574440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1999864469437574440'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/10/ejercicio-hecho-en-c-que-carga-en-una.html' title='Ejercicio hecho en C # que carga en una combo subcadeenas escritas en un textbox y separadas por ;'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8058996431997081209</id><published>2011-08-26T11:13:00.000-07:00</published><updated>2011-08-26T11:21:48.037-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Componentes'/><category scheme='http://www.blogger.com/atom/ns#' term='Menus'/><category scheme='http://www.blogger.com/atom/ns#' term='Aclaración entre Menú y Componente / Modulo en Joomla'/><category scheme='http://www.blogger.com/atom/ns#' term='Modulo'/><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>Aclaración entre Menú y Componente / Modulo en Joomla</title><content type='html'>&lt;br /&gt;Como tengo/tenía cierto lio en la cabeza acerca de qué era qué, le pregunté a mi amigo Cheno. Y él, pacientemente me dijo sobre el menú predefinido Este sitio, que:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Eso es un menu, existente en la zona de administracion. Puedes gestionar los menus, poner el nombre que quieras,  los elementos que tienen. También los puedes desactivar si quieres&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y sobre la posibilidad de crear un menú yo mismo me dijo:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"Eso en la zona de modulos si no recuerdo mal&lt;/span&gt;.&lt;span style="font-weight: bold;"&gt; Ah pues en donde los menus puedes crear otro&lt;/span&gt;. Y&lt;span style="font-weight: bold;"&gt; luego activarlo y darle una posicion&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; en la zona de componentes y modulos. N&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;o recuerdo si se considera un componente o un modulo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; pero por ahi aparecera"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Y hasta aquí una breve aclaración.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8058996431997081209?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8058996431997081209/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/08/aclaracion-entre-menu-y-componente.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8058996431997081209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8058996431997081209'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/08/aclaracion-entre-menu-y-componente.html' title='Aclaración entre Menú y Componente / Modulo en Joomla'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-3228721858768855079</id><published>2011-08-26T11:01:00.000-07:00</published><updated>2011-08-26T11:12:07.262-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Componentes'/><category scheme='http://www.blogger.com/atom/ns#' term='Árbol en Joomla'/><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><title type='text'>Árbol en Joomla</title><content type='html'>&lt;br /&gt;Mi idea es realizar una página web en Joomla para promocionar objetos a la venta. Mayorritariamente antigüedades.&lt;br /&gt;&lt;br /&gt;En este preciso momento me ronda por la cabeza hacer un menú desplegable (que funcione como un árbol) y donde se vayan desplegando ramificaciones con forme interese.  Por ejemplo, las dos ramas principales serian Vehículos y Antigüedades. De la primera se colgarian Turismos, Furgonetas, Motocicletas. De la segunda, Armarios, Televisores, Teléfonos. Y así hasta que yo quisiese seguir prfundizando.&lt;br /&gt;&lt;br /&gt;Este enlace conduce a un foro donde se proponen componentes para el fin que tyo persigo:&lt;br /&gt;&lt;a href="http://www.joomlaspanish.org/foros/showthread.php?t=2839"&gt;http://www.joomlaspanish.org/foro&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class=" down" style="display: block;" id="formatbar_CreateLink" title="Enlace" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;img src="img/blank.gif" alt="Enlace" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;s/showthread.php?t=2839&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-3228721858768855079?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/3228721858768855079/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/08/arbol-en-joomla.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3228721858768855079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3228721858768855079'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/08/arbol-en-joomla.html' title='Árbol en Joomla'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4108126612688501915</id><published>2011-08-01T03:05:00.000-07:00</published><updated>2011-08-01T03:21:34.937-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EasyPHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Sitios web hechos con flash'/><category scheme='http://www.blogger.com/atom/ns#' term='XAMPP'/><category scheme='http://www.blogger.com/atom/ns#' term='Herramientas de desarrollo web'/><title type='text'>Herramientas para desarrollar un sitio web</title><content type='html'>Con eso de que quiero irme de putas y no tengo dinero para ello estoy pensando desarrollar sitios web para ir ganando dinero en un futuro. Paara empezar a profesionalizarme, y hoy que el monitor de mi puesto de trabajo no funciona, investigué sobre herramientas para hacer webs locales,  probarlas y luego subirlas a Internet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Me hablaron de XAMPP, he aquí webs que informan de ello:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.baitic.com/productividad/tutorial-como-instalar-wordpress-sobre-xampp-en-windows.html"&gt;http://www.baitic.com/productividad/tutorial-como-instalar-wordpress-sobre-xampp-en-windows.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apachefriends.org/en/xampp-windows.html"&gt;http://www.apachefriends.org/en/xampp-windows.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Me hablaron de EasyPHP&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cristalab.com/tutoriales/crear-un-servidor-local-con-easyphp-c23163l/"&gt;http://www.cristalab.com/tutoriales/crear-un-servidor-local-con-easyphp-c23163l/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;También de Joomla, pero fue hace mucho tiempo (sus enlaces están en esta misma página web, en la sección Mundo Joomla).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Por internet localicé esto &lt;a href="http://es.wix.com/eteam1/fish_build_a_free_flash_websit?utm_campaign=ma_carlosleopoldo.com&amp;amp;experiment_id=ma_carlosleopoldo.com_es"&gt;http://es.wix.com/eteam1/fish_build_a_free_flash_websit?utm_campaign=ma_carlosleopoldo.com&amp;amp;experiment_id=ma_carlosleopoldo.com_es&lt;/a&gt; Sirve para hacer sitios web con flash&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4108126612688501915?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4108126612688501915/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/08/herramientas-para-desarrollar-un-sitio.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4108126612688501915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4108126612688501915'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/08/herramientas-para-desarrollar-un-sitio.html' title='Herramientas para desarrollar un sitio web'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-5874787337415028305</id><published>2011-06-03T02:31:00.000-07:00</published><updated>2011-09-06T01:43:44.603-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reports'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='DevExpress'/><category scheme='http://www.blogger.com/atom/ns#' term='Orientación y tipo de hoja'/><title type='text'>Ideas para el manejo de reports con DevExpress: orientación y tipo de hoja</title><content type='html'>Entre PageKind (propiedad que permite elegir entre muchos formatos de hoja. Por citar ejemplos A2, A3, A4, A5,...) y Landscape (vale true si la orientación es vertical y false cuando es horizontal) se puede dar un formato u otro al report final.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-5874787337415028305?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/5874787337415028305/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/06/ideas-para-el-manejo-de-reports-con.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5874787337415028305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5874787337415028305'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/06/ideas-para-el-manejo-de-reports-con.html' title='Ideas para el manejo de reports con DevExpress: orientación y tipo de hoja'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8124596489227276654</id><published>2011-05-26T02:51:00.000-07:00</published><updated>2011-05-26T02:54:03.871-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Código'/><category scheme='http://www.blogger.com/atom/ns#' term='Curiosidades de C Sharp y SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Función SQL que devuelve el numero de coincidencias de un caracter en una cadena</title><content type='html'>Funcíon  SQL que devuelve el numero de coincidencias de un caracter en una cadena&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;CREATE FUNCTION [dbo].[fnCountChar] ( @pInput VARCHAR(max), @pSearchChar CHAR(1) )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;RETURNS INT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;DECLARE @vInputLength        INT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;DECLARE @vIndex              INT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;DECLARE @vCount              INT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;SET @vCount = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;SET @vIndex = 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;SET @vInputLength = DATALENGTH(@pInput)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;WHILE @vIndex &amp;lt;= @vInputLength&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    IF SUBSTRING(@pInput, @vIndex, 1) = @pSearchChar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        SET @vCount = @vCount + 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    SET @vIndex = @vIndex + 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;RETURN @vCount&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;END&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8124596489227276654?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8124596489227276654/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/05/funcion-sql-que-devuelve-el-numero-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8124596489227276654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8124596489227276654'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/05/funcion-sql-que-devuelve-el-numero-de.html' title='Función SQL que devuelve el numero de coincidencias de un caracter en una cadena'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-183935716419977685</id><published>2011-05-08T09:40:00.000-07:00</published><updated>2011-05-08T09:51:55.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Librerias OLEDB'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='Seleccionar en base de datos Access'/><title type='text'>En C sharp, seleccionar registros en una base de datos Access (versión 97) usando las librerias ODBC</title><content type='html'>&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;Aqui escribo el ódigo para seleccionar el máximo valor de un campo determinado:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        private void IdMasAlto() &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DatosConexionABaseDeDatos odatosConexion = new DatosConexionABaseDeDatos();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            OleDbConnection conexion = odatosConexion.getConexion();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            conexion.Open();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DataSet ds = new DataSet();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DataTable dt = new DataTable();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            string strSQL = "SELECT MAX(IdTipo) AS ultimo FROM Tipo";&lt;br /&gt;&lt;/span&gt;//La consulta únicamente devolverá un registro de una columna: Un valor.&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            OleDbDataAdapter oAdaptador= new OleDbDataAdapter(strSQL, conexion);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oAdaptador.Fill(ds, "elultimo");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            dt = ds.Tables["elultimo"];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DataRow fila =dt.Rows[0];&lt;/span&gt;&lt;br /&gt;//ID es una propiedad&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            ID = Convert.ToInt32(fila["ultimo"].ToString());&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            conexion.Close();&lt;/span&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;Este códigio, modificandolo, servirá para recorrer  varios registros devuelvos.  Quedando así: &lt;em&gt;&lt;b&gt;          &lt;/b&gt;&lt;/em&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  if (dt.Rows.Count == 0)   &lt;br /&gt;                this.lblUsuario.Text = "No existe el usuario...";&lt;br /&gt;           else&lt;br /&gt;            {  &lt;br /&gt;                  foreach (System.Data.DataRow fila in dt.Rows)      &lt;br /&gt;                 {   &lt;br /&gt;                            this.lblUsuario.Text = "Bienvenido " + fila["nombre"].ToString();        &lt;br /&gt;                 }&lt;/span&gt;&lt;p style="color: rgb(153, 0, 0);"&gt;&lt;em&gt;&lt;b&gt;&lt;/b&gt;&lt;/em&gt; &lt;/p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Por supuesto, y antes de marchar, recordar que hay que hacer las siguientes importaciones antes de empezar, en las primeras líneas:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Data.OleDb;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-183935716419977685?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/183935716419977685/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/05/en-c-sharp-seleccionar-registros-en-una.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/183935716419977685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/183935716419977685'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/05/en-c-sharp-seleccionar-registros-en-una.html' title='En C sharp, seleccionar registros en una base de datos Access (versión 97) usando las librerias ODBC'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4690563539980140667</id><published>2011-04-12T08:49:00.000-07:00</published><updated>2011-04-12T09:00:16.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Errores de código'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><title type='text'>C Sharp, en una función contructora no debe faltar,...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.tadega.net/Fotos/var/resizes/SPC/verbos/hacer_%20construir.jpg?m=1297147499"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 228px; height: 270px;" src="http://www.tadega.net/Fotos/var/resizes/SPC/verbos/hacer_%20construir.jpg?m=1297147499" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;...la llamada a la función &lt;span style="color: rgb(153, 0, 0);"&gt;InitializeComponent()&lt;/span&gt; porque de no hacerlo luego nos surgirán errores de código que nos informarán de que, los objetos, del formulario o del report, no han sido construidos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4690563539980140667?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4690563539980140667/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/04/c-sharp-en-una-funcion-contructora-no.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4690563539980140667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4690563539980140667'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/04/c-sharp-en-una-funcion-contructora-no.html' title='C Sharp, en una función contructora no debe faltar,...'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4221775745461391457</id><published>2011-03-31T10:32:00.000-07:00</published><updated>2011-05-08T09:41:54.981-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='Curiosidades de C Sharp y SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Curiosidades de C Sharp y SQL (1)</title><content type='html'>El otro día me descuerné pensando qué podría estar equivodo en esta sentencia SQL, ¿y adivinan el &lt;span style="font-style: italic;"&gt;error&lt;/span&gt;?:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;            string SQL = "INSERT INTO Programa (Nombre, Anio, Version, Tipo, EnISO, InstaladoEnPortatil, InstaladoEnPC, Observaciones, Descripcion, Fabricante, CuandoCaduca, EsLibre, ParaWindows, ParaLinux, ParaMacintosh, ConCrack, Serial, Usuario, Password) VALUES  ('" + _programa.nombre.ToUpper() + "', '" + _programa.anio + "', '" + _programa.version + "', " + _programa.codTipo + ", " + _programa.enISO + ", " + _programa.instaladoEnPortatil + ", " + _programa.instaladoEnPC + ", '" + _programa.observaciones + "', '" + _programa.descripcion + "', '" + _programa.fabricante + "', '" + _programa.cuandoCaduca + "', " + _programa.esLibre + ", " + _programa.paraWindows + ", " + _programa.paraLinux + ", " + _programa.paraMacintosh + ", " + _programa.conCrack + ", '" + _programa.serial + "', '" + _programa.usuario + "', '" +_programa.password + "')";&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;¿Ya la han ojeado bien?&lt;br /&gt;&lt;br /&gt;Pues el problema era que Password al ser una palabra reservada no se puede utilizar como nombre para un campo de una tabla con base de datos Access.&lt;span style="color: rgb(102, 0, 0);"&gt; &lt;/span&gt;Entonces probé a cambiarla por ClaveDeAcceso, y el error, Instrucción SQL erronea, se esfumó.&lt;span style="color: rgb(102, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Saludos.&lt;span style="color: rgb(102, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4221775745461391457?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4221775745461391457/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/03/curiosidades-de-c-sharp-y-sql-1.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4221775745461391457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4221775745461391457'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/03/curiosidades-de-c-sharp-y-sql-1.html' title='Curiosidades de C Sharp y SQL (1)'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-210168359424729246</id><published>2011-03-19T08:10:00.000-07:00</published><updated>2011-03-19T08:34:19.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eliminar en base de datos Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Librerias OLEDB'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>En C sharp, eliminar registros en una base de datos Access (versión 97) usando las librerias ODBC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.crabgrassband.org/C-sharp-logo.gif"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 209px; height: 209px;" src="http://www.crabgrassband.org/C-sharp-logo.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Aqui escribo el ódigo para modificar un registro utilizando las mismas  herramientas y lois mismos métdos que seusaron para hacer la inserciónen el articulo &lt;a href="http://programandodesdespain.blogspot.com/2011/03/en-c-sharp-insertar-registros-en-una.html"&gt;En C sharp, insertar registros en una base de datos Access (versión 97) usando las librerias ODBC&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Al igual que en el anterior, importo las siguientes librerias:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Data.OleDb;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;y trabajo en la clase Tipo.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;      public void Eliminar(Tipo _tipo)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DatosConexionABaseDeDatos odatosConexion = new DatosConexionABaseDeDatos();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            OleDbConnection conexion = odatosConexion.getConexion();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            string eliminarSQL = "DELETE FROM Tipo WHERE IdTipo=" + _tipo.id;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            conexion.Open();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            OleDbDataAdapter oAdaptador = new OleDbDataAdapter(eliminarSQL, conexion);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            OleDbCommandBuilder oBuilder = new OleDbCommandBuilder(oAdaptador);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DataSet oDsTipo = new DataSet("Tipo");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oAdaptador.Fill(oDsTipo, "Tipo");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            conexion.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Este  mantiene diferencias con el sucesor, como que nunca se seleccionan  todos los campos, y en cambio se ejecuta una sentencia DELETE. Además se  ahorran las líneas donde se creabe un objeto Row agregandose como  nuevo, porque obviamente esto no añade sino que suprime registros que  ya existen.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-210168359424729246?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/210168359424729246/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/03/en-c-sharp-eliminar-registros-en-una.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/210168359424729246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/210168359424729246'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/03/en-c-sharp-eliminar-registros-en-una.html' title='En C sharp, eliminar registros en una base de datos Access (versión 97) usando las librerias ODBC'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8765642336138076944</id><published>2011-03-19T05:20:00.000-07:00</published><updated>2011-03-19T08:34:42.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Librerias OLEDB'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='Modificar en base de datos Access'/><title type='text'>En C sharp, modificar registros en una base de datos Access (versión 97) usando las librerias ODBC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://images.encydia.com/6/66/Logo_CSharp.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 280px; height: 280px;" src="http://images.encydia.com/6/66/Logo_CSharp.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Aqui escribo el ódigo para modificar un registro utilizando las mismas herramientas y lois mismos métdos que seusaron para hacer la inserckión en el articulo &lt;a href="http://programandodesdespain.blogspot.com/2011/03/en-c-sharp-insertar-registros-en-una.html"&gt;En C sharp, insertar registros en una base de datos Access (versión 97) usando las librerias ODBC&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Al igual que en el anterior, importo las siguientes librerias:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Data.OleDb;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;y trabajo en la clase Tipo.&lt;br /&gt;&lt;br /&gt;Sin más preámbulos aquí está el código para modificar un registro.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;  &lt;span style="color: rgb(153, 0, 0);"&gt;      public void ModificarTipoExistente(Tipo _tipo)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DatosConexionABaseDeDatos odatosConexion = new DatosConexionABaseDeDatos();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            OleDbConnection conexion = odatosConexion.getConexion();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            string updateSQL = "UPDATE Tipo SET Descripcion='" + _tipo.descripcion + "', Tipo='" + _tipo.tipo + "' WHERE IdTipo=" + _tipo.id;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            conexion.Open();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            OleDbDataAdapter oAdaptador = new OleDbDataAdapter(updateSQL, conexion);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            OleDbCommandBuilder oBuilder = new OleDbCommandBuilder(oAdaptador);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DataSet oDsTipo = new DataSet("Tipo");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oAdaptador.Fill(oDsTipo, "Tipo");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            conexion.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Este mantiene diferencias con el sucesor, como que nunca se seleccionan todos los campos, y en cambio se ejecuta una sentencia UPDATE. Además se ahorran las líneas donde se creabe un objeto Row agregandose como nuevo, porque obviamente esto no añade sino que actualiza registros que ya existen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8765642336138076944?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8765642336138076944/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/03/en-c-sharp-modificar-registros-en-una_19.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8765642336138076944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8765642336138076944'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/03/en-c-sharp-modificar-registros-en-una_19.html' title='En C sharp, modificar registros en una base de datos Access (versión 97) usando las librerias ODBC'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2220277146668994204</id><published>2011-03-13T05:07:00.000-07:00</published><updated>2011-03-26T07:49:59.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Librerias OLEDB'/><category scheme='http://www.blogger.com/atom/ns#' term='Código'/><category scheme='http://www.blogger.com/atom/ns#' term='Insertar en base de datos Access'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><title type='text'>En C sharp, insertar registros en una base de datos Access (versión 97) usando las librerias ODBC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i.anuxi.pe/i-a/etSq-1.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 249px; height: 249px;" src="http://i.anuxi.pe/i-a/etSq-1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ayer, tras muchas horas buscando por Internet un ejemplo válido de cómo agregar registros en una base de datos Access, versión 97, utilizando las funciones de las librerias ODBC, di, al rededor de las 6 de la tarde con esta página web &lt;a href="http://www.java2s.com/Tutorial/CSharp/0560__ADO.Net/UseDataTabletoinsertaRow.htm"&gt;32.36.2.Use DataTable to insert a Row&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aquí dejo mí codigio, logrado en base a esa página que os he dicho:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Data.OleDb;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace GesPro.Tipo&lt;br /&gt;{&lt;br /&gt; class Tipo&lt;br /&gt; {&lt;br /&gt;     string tipo;&lt;br /&gt;     string descripcion;&lt;br /&gt;     //constructor sin parametros de la clase&lt;br /&gt;     public Tipo()&lt;br /&gt;     {&lt;br /&gt;         this.descripcion = "";&lt;br /&gt;         this.tipo = "";&lt;br /&gt;     }&lt;br /&gt;     //constructor con parametros de la clase&lt;br /&gt;     public Tipo(string _tipo, string _descripcion)&lt;br /&gt;     {&lt;br /&gt;         this.descripcion = _descripcion;&lt;br /&gt;         this.tipo = _tipo;&lt;br /&gt;     }&lt;br /&gt;     // función que inserta nuevos regisrtros en la tabla Tipo de la base de datos GesPro.mdb&lt;br /&gt;     public void InsertarNuevoTipo(Tipo _tipo)&lt;br /&gt;     {&lt;br /&gt;         string ruta = System.IO.Directory.GetCurrentDirectory() + @"\GesPro.mdb"; //indica la ruta donde está la base de dxatos&lt;br /&gt;         string cadenaDeConexion = @"Provider=Microsoft.JET.OLEDB.4.0;" + @"data source=" + ruta; //establece cadena de conexión con la base de datos&lt;br /&gt;         OleDbConnection conexion = new OleDbConnection(cadenaDeConexion); //creo un objeto conexion&lt;br /&gt;         string seleccionarTodosLosRegistros = "SELECT * FROM Tipo";&lt;br /&gt;         conexion.Open(); //abro conexión&lt;br /&gt;         OleDbDataAdapter oAdaptador = new OleDbDataAdapter(seleccionarTodosLosRegistros,conexion); //creo un adaptador con una sql que selecciona todos los registros&lt;br /&gt;         OleDbCommandBuilder oBuilder = new OleDbCommandBuilder(oAdaptador);&lt;br /&gt;&lt;br /&gt;         DataSet oDsTipo = new DataSet("Tipo"); //creo un objeto dataset&lt;br /&gt;         oAdaptador.Fill(oDsTipo,"Tipo");&lt;br /&gt;         DataTable oTablaTipo = oDsTipo.Tables["Tipo"]; //creo una tabla para datos y le añado el nuevo registro campo a campo&lt;br /&gt;         DataRow oRow = oTablaTipo.NewRow();&lt;br /&gt;         oRow["Tipo"] = _tipo.tipo;&lt;br /&gt;         oRow["Descripcion"] = _tipo.descripcion;&lt;br /&gt;         oTablaTipo.Rows.Add(oRow);&lt;br /&gt;         oAdaptador.Update(oDsTipo, "Tipo"); //actualizo el objeto adaptador&lt;br /&gt;&lt;br /&gt;         conexion.Close();&lt;br /&gt;     }&lt;br /&gt;   &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2220277146668994204?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2220277146668994204/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/03/en-c-sharp-insertar-registros-en-una.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2220277146668994204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2220277146668994204'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/03/en-c-sharp-insertar-registros-en-una.html' title='En C sharp, insertar registros en una base de datos Access (versión 97) usando las librerias ODBC'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7148478090105036689</id><published>2011-01-07T08:40:00.000-08:00</published><updated>2011-01-13T03:31:26.506-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Código'/><category scheme='http://www.blogger.com/atom/ns#' term='Centrar formulario'/><title type='text'>Cómo centrar un formulario en Java</title><content type='html'>Así se hace:&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;FrmInicio1 frm = new FrmInicio1();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;        frm.setLocationRelativeTo(null);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;        frm.setVisible(true);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7148478090105036689?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7148478090105036689/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2011/01/como-centrar-un-formulario-en-java.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7148478090105036689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7148478090105036689'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2011/01/como-centrar-un-formulario-en-java.html' title='Cómo centrar un formulario en Java'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-6797781084315864982</id><published>2010-11-24T10:14:00.000-08:00</published><updated>2010-12-03T05:19:51.903-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photoshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Arreglar fotos  movidas'/><category scheme='http://www.blogger.com/atom/ns#' term='Fotografía'/><title type='text'>Primer apunte sobre fotografía: ¿cómo arreglar una foto que está borrosa?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_i3wb94gYj00/TM86bMCD_2I/AAAAAAAADcY/5b9wFlksw_g/s1600/adobe-photoshop.gif"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 253px; height: 235px;" src="http://3.bp.blogspot.com/_i3wb94gYj00/TM86bMCD_2I/AAAAAAAADcY/5b9wFlksw_g/s1600/adobe-photoshop.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Es fácil:&lt;br /&gt;1º Abres la imagen con el Photoshop y luego la guardas con formato PSD.&lt;br /&gt;2º. Luego se duplica la capa, y en el menú de capas, donde pone &lt;span style="font-weight: bold;"&gt;Modo de fusión &lt;/span&gt;eliges entre "Luz fuerte" o "Luz suave"si hay tonos de piel.&lt;br /&gt;3º. Después ve al menú Filtros, Otros, &lt;span style="font-weight: bold;"&gt;Paso alto&lt;/span&gt;, y le pones un valor de 2,5.&lt;br /&gt;&lt;br /&gt;Este consejo lo leí &lt;a href="http://foros.quesabesde.com/camdig/foro/arreglar-fotos-desenfocadas,95853.htm"&gt;aqui&lt;/a&gt;, asique no fue idea mia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-6797781084315864982?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/6797781084315864982/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/11/primer-apunte-sobre-fotografia-como.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6797781084315864982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6797781084315864982'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/11/primer-apunte-sobre-fotografia-como.html' title='Primer apunte sobre fotografía: ¿cómo arreglar una foto que está borrosa?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_i3wb94gYj00/TM86bMCD_2I/AAAAAAAADcY/5b9wFlksw_g/s72-c/adobe-photoshop.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-708981119582176665</id><published>2010-11-01T04:44:00.000-07:00</published><updated>2010-11-01T07:21:03.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Funciónes'/><category scheme='http://www.blogger.com/atom/ns#' term='TOP'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>¿Para qué sirve la función TOP en SQL Server 2005?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.oriensoft.com/Services/Dedicated_Hosting/Database_Servers/SQLServer_logo.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 306px; height: 132px;" src="http://www.oriensoft.com/Services/Dedicated_Hosting/Database_Servers/SQLServer_logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En el trabajo me mandaron hacer una vista (utilizando SQL Server 2005) y sin que yo escribiera nada que incitase a la aplicación a escribir TOP 100 PORCENT, el editor la escribia, y aún yo borrándola, volvía a ponerla. Preegunté a mis compañeros y estos me dijeron que buscase en Google, y así hice. Entonces encontré este enlace: &lt;a href="http://tecnico.komoloves.com/que-es-el-top-100-percent-de-sql-server/"&gt;Que es el TOP 100 PERCENT de SQL Server&lt;/a&gt;. Y ahí descubrí que TOP 100 PORCENT es una nueva funcionalidad que nos visualiza un porcentaje de columnas que cumplan la condición solicitada. Obviamente 100 nos visualizará todas, y 50 la mitad.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;La sintaxis de la función TOP es:&lt;/span&gt;&lt;br /&gt;&lt;pre style="color: rgb(153, 0, 0);"&gt;&lt;code&gt;SELECT TOP limite_de_filas FROM MyTable.&lt;/code&gt;&lt;/pre&gt;En este caso, con TOP hemos limitado a un número exacto el limite de filas que queremos que sean devueltas.&lt;br /&gt;&lt;br /&gt;&lt;pre style="color: rgb(153, 0, 0);"&gt;&lt;code&gt;SELECT TOP limite_de_filas PERCENT * FROM MyTabla&lt;/code&gt;&lt;/pre&gt; En este caso, ya usando PERCENT, limitamos al el número de filas con un porcentaje como limite.&lt;br /&gt;&lt;br /&gt;Lo malo es que ORDER BY y TOP son ligeramente incompatibles porque al combinar con PORCENT. Y para que su funcionamiento sea positivo uno tiene que hacer cosas como esta:&lt;br /&gt;&lt;br /&gt;&lt;pre style="color: rgb(153, 0, 0);"&gt;&lt;code&gt;SELECT * FROM (SELECT TOP 99 PERCENT * FROM T ORDER BY col1) AS A&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Para profundizar más vayan al enlace que meniono arriba.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-708981119582176665?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/708981119582176665/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/11/para-que-sirve-top-100-porcent-en-sql.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/708981119582176665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/708981119582176665'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/11/para-que-sirve-top-100-porcent-en-sql.html' title='¿Para qué sirve la función TOP en SQL Server 2005?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7804835664218880645</id><published>2010-10-09T05:10:00.000-07:00</published><updated>2010-10-09T05:21:30.994-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Puertos USB'/><title type='text'>Probables soluciones para arreglar los puertos USB</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.getusb.info/wp-content/uploads/2008/02/021108a.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 229px; height: 197px;" src="http://www.getusb.info/wp-content/uploads/2008/02/021108a.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span class="textoforo8"&gt;Mi amigo Salva tiene en su casa un ordenador al que no le marchan los puertos USB, detectando a veces un dispositivo conectado, y otras no.&lt;br /&gt;&lt;br /&gt;Aquí os dejo posibles solucione que hayé en esta web: &lt;/span&gt;&lt;a href="http://www.configurarequipos.com/tema44711-8-0.html"&gt;No me funcionan los puertos USB... AYUDA, DESESPERACIÓN!!!   - &lt;/a&gt;:&lt;br /&gt;&lt;span class="textoforo8"&gt;&lt;br /&gt;1. Probaremos a actuaizar los controladores. Ve a  administrador de dispositivos y busca controladores de bus serie  universal (USB). Te saldrá un asistente que te buscará e instalará los  drivers.&lt;br /&gt;&lt;br /&gt;2. También tienes un solucionador de problemas ahí.              ve a&lt;br /&gt;Panel de control-rendimiento y mantenimiento-herramientas  administrativas-administracion de equipos y administrador de  dispositivos.&lt;br /&gt;&lt;br /&gt;3.  En última instancia puedes desinstalar e instalar (el conrolador) y quizas así entren en funcionamiento.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Salu2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7804835664218880645?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7804835664218880645/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/10/probables-soluciones-para-arreglar-los.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7804835664218880645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7804835664218880645'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/10/probables-soluciones-para-arreglar-los.html' title='Probables soluciones para arreglar los puertos USB'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-1565297511185122328</id><published>2010-09-26T06:27:00.000-07:00</published><updated>2010-09-26T07:40:30.195-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gestor de directorios'/><category scheme='http://www.blogger.com/atom/ns#' term='Navegador de directorios'/><category scheme='http://www.blogger.com/atom/ns#' term='Código'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><title type='text'>En C#: Gestor de directorios</title><content type='html'>Basandome en &lt;a href="http://programandodesdespain.blogspot.com/2010/05/en-c-como-montar-un-navegador-en-un.html"&gt;En C#: Cómo montar un navegador en un TreeView ( 2º versión)&lt;/a&gt; hice los apaños necesarios para que ahora me sacara los subdirectorios del direwctorio raiz llamado Documentos y ubicado dentro de la carpeta Debug del proyecto. Algo que se hace así:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Application.StartupPath + "\\Documentos";&lt;/span&gt;&lt;br /&gt;Si, y es esa barra, y no esta /. Aviso porque luego la piciamos confundiendonos con Linux.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;&lt;br /&gt;Las diferencias enrtre un proyecto y otro son:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Ahora cargo el contenido de una carpeta, sus subdirectorios. Utilizando como nodo-raiz uno que tenga por ruta la ruta-inicial, que vale la concatenación de &lt;span style="color: rgb(153, 0, 0);"&gt;Application.StartupPath&lt;/span&gt; más el nombre del directorio raiz. Para el nombre del nodo-raiz, poodemos usar la &lt;span style="color: rgb(153, 0, 0);"&gt;\&lt;/span&gt;tipica o el nombre de la carpeta contanedora. Anteriormente, en la segunda versión, usabamos una función que cargaba los drivers, ahora no, ahora cargamos los subdirectorios. Así:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;public void Inicio2()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            //lo primero, cargsr el contenido de la carpeta raiz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            rutaInicial = Application.StartupPath + "\\Documentos";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DirectoryInfo dirInf = new DirectoryInfo(rutaInicial);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                foreach (DirectoryInfo subdir in dirInf.GetDirectories())&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    //de cada directorio se obtiene el nombre y el fullname y se convierte a nodo. El nodo se agrega al principal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    SuperTreeNode nodo = new SuperTreeNode();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    nodo.Text = subdir.Name;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    nodo.Ruta = subdir.FullName;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    NodoRaiz.Nodes.Add(nodo);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    StateLblInformacion.Text = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                //en la barra de estado uestro los errores q se pueden gnerar (falta de derechos o unidad no lista)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                StateLblInformacion.Text = ex.Message; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. La otra diferencia importante, no es nada del otro mundo: deshabilitar el botón que permite suprimir un directorio y la opción del menú contextual. Y esto se hace en el evento&lt;span style="color: rgb(102, 0, 0);"&gt; AfterSelect&lt;/span&gt; del control TreeView. Así:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;if (NodoSeleccionado.Ruta.CompareTo(NodoRaiz.Ruta) == 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                BtnBorrarDirectorio.Enabled = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                BtnBorrarDirectorio.Enabled = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            MenuItemBorrarDirectorio.Enabled = BtnBorrarDirectorio.Enabled;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-1565297511185122328?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/1565297511185122328/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/09/en-c-gestor-de-directtorios.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1565297511185122328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1565297511185122328'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/09/en-c-gestor-de-directtorios.html' title='En C#: Gestor de directorios'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-447654884860396802</id><published>2010-09-19T08:59:00.000-07:00</published><updated>2010-09-19T09:58:33.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Siete'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Quitar seguridad UAC'/><title type='text'>Cómo quitar del Windows la seguridad UAC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://t3.gstatic.com/images?q=tbn:yUHfe6WglHYm7M:http://www.jjfez.com/espanol/imagenes%20de%20la%20web/arte%20variado/acuarelas/candado.jpg&amp;amp;t=1"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 263px; height: 192px;" src="http://t3.gstatic.com/images?q=tbn:yUHfe6WglHYm7M:http://www.jjfez.com/espanol/imagenes%20de%20la%20web/arte%20variado/acuarelas/candado.jpg&amp;amp;t=1" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Cinco secillos pasos para deshacernos de las pesadas preguntas que Windows nos hace para evitar posibles &lt;span style="font-style: italic;"&gt;cagadas:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1º. Vamos a Panel de control.&lt;br /&gt;2º Cuentas de usuario.&lt;br /&gt;3º Clicamo en Activar o desactivar el control de cuentas del usuario-.&lt;br /&gt;4. Wala! Desactivamos la casilla de Usar el control de cuentas de usuario (UAC) para ayudar a proteger el equipo.&lt;br /&gt;5º Tras esto, al pulsar el botón Aceptar nos preguntará si queremos reiniciar ahora o más tarde. Tras el reincio el Windows Vista, o 7, porque para sendos es igual, no será tan protector.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El dibujo lo saqué de &lt;a href="http://revistaprofe.com/intersite/archives/date/2007/01"&gt;esta web&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-447654884860396802?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/447654884860396802/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/09/como-quitar-del-windows-la-seguridad.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/447654884860396802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/447654884860396802'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/09/como-quitar-del-windows-la-seguridad.html' title='Cómo quitar del Windows la seguridad UAC'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2003548843506012419</id><published>2010-09-08T10:08:00.000-07:00</published><updated>2010-09-10T11:34:33.999-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Reparar acceso a Internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>Reparar el acceso a internet en un Windows Vista</title><content type='html'>Tuve que arreglarle el ordenador a una amiga porque no tenía acceso a nternet usando su Windows Vista. Entonces busqué en Google y localicé esta &lt;a href="http://gabrielcarpio.wordpress.com/2009/05/13/reparar-conexion-a-internet-en-windows-vista/"&gt;web&lt;/a&gt;. En ella su propietario, mil gracias, nos indica que vayamos al Simbolo del sistema (ir a administración), y antes de abrirlo para meter comando, clicar sobre el icono con el botón derecho para abrirlo como Ejecutar como Administrador. Después, ya dentro, tecleen &lt;strong style="color: rgb(204, 0, 0);"&gt;netsh winsock reset. &lt;/strong&gt;Tras la ejecución del programa, deberás reiniciar el ordenador. Y walá! Funciona! Y sin rezar a dios.&lt;strong style="color: rgb(204, 0, 0);"&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Esta averia pudo suceder si se coló un virus. Con lo cual tras el reinicio, pase su anivirus para limpiar su pc de troyanos, gusanos y demás guarradas. &lt;strong style="color: rgb(204, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jtVyavFMR-E/SYtGx66_E2I/AAAAAAAAAGc/9gtI2aihu3M/s320/cabra_ortodoncia.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 259px; height: 222px;" src="http://4.bp.blogspot.com/_jtVyavFMR-E/SYtGx66_E2I/AAAAAAAAAGc/9gtI2aihu3M/s320/cabra_ortodoncia.jpg" alt="" border="0" /&gt;&lt;/a&gt;Cuando ejecutamos el comando &lt;strong style="color: rgb(204, 0, 0);"&gt;netsh winsock reset&lt;/strong&gt;, este limpia y resetea al estado de configuración por defecto, elimina todos los LSP (Layered Service Providers) previamente instalados, incluyendo el potencial LSP causante del mal funcionamiento para la conexión de red o internet.&lt;br /&gt;&lt;strong style="color: rgb(204, 0, 0);"&gt;&lt;/strong&gt;&lt;br /&gt;Saludos y gracias al autor del blog, Gabriel Carpio por su aportación.&lt;strong style="color: rgb(204, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;div&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;&lt;b&gt;ANEXO ¿Qué es un Layered Service Provider (LSP)?:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Layered Service Provider (LSP) es una característica de Microsoft Windows Winsock 2 Service Provider Interface (SPI).Layered Service Provider es una DLL que usa Winsock API para insertarse en la pila de TCP/IP. Una vez en la pila, un Layered Service Provider puede insertar y modificar entradas y salidas de tráfico de Internet. Esto pemite procesar todo el tráfico TCP/IP que tiene lugar entre la Internet y aplicaciones que están accesando Internet (tales como un navegador web, un cliente de correo electrónico, etc).&lt;strong style="color: rgb(204, 0, 0);"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-weight: normal; line-height: 19px;font-family:sans-serif;font-size:13px;"  &gt;&lt;p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Sacado de la Wikipedia.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2003548843506012419?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2003548843506012419/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/09/restaurar-el-acceso-internet-en-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2003548843506012419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2003548843506012419'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/09/restaurar-el-acceso-internet-en-un.html' title='Reparar el acceso a internet en un Windows Vista'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jtVyavFMR-E/SYtGx66_E2I/AAAAAAAAAGc/9gtI2aihu3M/s72-c/cabra_ortodoncia.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-1378382225122186565</id><published>2010-09-05T10:15:00.000-07:00</published><updated>2011-12-12T00:18:27.618-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Script'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Código'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Diseño'/><category scheme='http://www.blogger.com/atom/ns#' term='Componentes DevExpress'/><title type='text'>Consejos de Rodrigo para futuro código con ASP, JavaScript, C Sharp, componentes Devexpress y no recuerdo qué más</title><content type='html'>El viernes el colega de trabajo Rodrigo se pasó buen rato ayudandome a resolver un código sencillo, pero repleto de errores por mi novatez.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Primero&lt;/span&gt;, el código javascript se tiene que separar de los archivos aspx porque así se gana limpieza. Estos nuevos archivos se llamarán como los aspx pero con extensión js. Y serán incluidos en los archivos form. De esta manera, siendo esto un ejemlo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/TIdT_ajJmyI/AAAAAAAABEY/Nx34U357fWE/s1600/js.bmp"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 469px; height: 88px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/TIdT_ajJmyI/AAAAAAAABEY/Nx34U357fWE/s400/js.bmp" alt="" id="BLOGGER_PHOTO_ID_5514468617662077730" border="0" /&gt;&lt;/a&gt;Y ojito con qué nombre ponen a ClientInstanceName, porque en los .js, a las variables de los asp, se las conoce por ese nombre. Se sugiere que el ID de un control y el clientinstancename sean el mismo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://allserieslinamarcela.files.wordpress.com/2009/04/woody20woodpecker.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 203px; height: 319px;" src="http://allserieslinamarcela.files.wordpress.com/2009/04/woody20woodpecker.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Segundo&lt;/span&gt;, javascript es C. Sin enbargo, como en nuestro caso usamos herramientas DevExpress, tendremos que usar los métodos de estas herramientas. Para saber cuales son, pues vamos a la ayuda, y allí tecleamos el nombre del control.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tercero&lt;/span&gt;, ah! Ojo,  ojito... No podemos usar un visible común. Sino, que tenemos que usar un clientVisible.  Porque la tenemos que visualizar o dejar de hacerlo, de lado del cliente, y no del lado del servidor. En tonces si usamos Visible, nos va a fallar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Consejo&lt;/span&gt;, no vayan de listos, y... Otra cosa, observen si el navegdor seleccionado no dibuja una señal de advertencia.. Porque si lo hace, en el código tienen un error, aunque no se haya detectado en el depurador.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Otros consejos, pero de diseño: &lt;/span&gt;usen tablas, y siempre con el mismo número de columnas. Y otra cosa. Uff, no paro. Utilicen y reutilicen UserForm, porque así les va a cundir más.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-1378382225122186565?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/1378382225122186565/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/09/consejos-de-rodrigo-para-futuro-codigo.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1378382225122186565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1378382225122186565'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/09/consejos-de-rodrigo-para-futuro-codigo.html' title='Consejos de Rodrigo para futuro código con ASP, JavaScript, C Sharp, componentes Devexpress y no recuerdo qué más'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7_ZQdva14nc/TIdT_ajJmyI/AAAAAAAABEY/Nx34U357fWE/s72-c/js.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8263879146254126313</id><published>2010-08-23T07:41:00.000-07:00</published><updated>2011-12-12T00:18:36.513-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Traducir al castellano'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='Componentes DevExpress'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Traducir componentes DevExpress</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://boxcabi.files.wordpress.com/2010/01/devexpress.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 228px; height: 113px;" src="http://boxcabi.files.wordpress.com/2010/01/devexpress.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Estaba de los nervios esta mañana por no poder lograr este objetivo: traducir los componentes DevExpress del inglés al castellano, cuando mi supervisor a las 12.30 ha acudido a recatarme. Le he explicado qué quería hacer y me ha llamado melón (en su argot: tonto). Al momento ha cogido el mouse y se ha puesto a teclear en google y ha encontrado cómo hacerlo. Yo flipaba pensando qué del modo que él lo estaba haciendo se ahorraban muchos calentamientos de cabeza, a la par, que quedaba más profesional. Pero no logré quedarme muy bien con la coplilla, así que ahora, a las 16.51, me puse a buscar la soluciónj en google.  No sé si será la misma.&lt;br /&gt;&lt;br /&gt;Encontré esto, escrito en C sharp:&lt;br /&gt;1. Añadir dos lineas para especificar el idioma en el proyecto (form_load):&lt;br /&gt;&lt;pre style="color: rgb(153, 0, 0);"&gt;// Necesario para traducir los componentes a Español&lt;br /&gt;/*1º linea*/&lt;br /&gt;System.Threading.Thread.CurrentThread.CurrentCulture =&lt;br /&gt;new System.Globalization.CultureInfo("es-ES");&lt;br /&gt;/*2º linea*/&lt;br /&gt;System.Threading.Thread.CurrentThread.CurrentUICulture =&lt;br /&gt;new System.Globalization.CultureInfo("es");&lt;br /&gt;&lt;/pre&gt;2. Añadir la carpeta con los resources en la raíz del proyecto. Esta carpeta la puedes conseguir en el sitio oficial de &lt;a href="http://www.devexpress.com/" target="_blank"&gt;DevExpress&lt;/a&gt;, donde deberás seleccionar el idioma deseado y tu versión de DevExpress.&lt;br /&gt;&lt;br /&gt;Los pasos los he copiado literalmente de &lt;a href="http://www.joselite.com/traducir-componentes-devexpress"&gt;http://www.joselite.com/traducir-componentes-devexpress&lt;/a&gt;. Al que pido perdón si molesto. Y doy gracias por su ayuda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8263879146254126313?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8263879146254126313/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/08/traducir-componentes-devexpress.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8263879146254126313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8263879146254126313'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/08/traducir-componentes-devexpress.html' title='Traducir componentes DevExpress'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8630924862548516398</id><published>2010-07-21T08:54:00.000-07:00</published><updated>2010-09-08T01:37:44.010-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Criptología'/><category scheme='http://www.blogger.com/atom/ns#' term='DNIe'/><category scheme='http://www.blogger.com/atom/ns#' term='Proyecto Bouncy Castle'/><title type='text'>El proyecto Bouncy Castle</title><content type='html'>¡Genial, en el curso deel DNIe a se habla de programción!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7_ZQdva14nc/TEcYyXK35KI/AAAAAAAABCk/vOriTHP_yBY/s1600/Tema_3_Imagen_013.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 262px;" src="http://2.bp.blogspot.com/_7_ZQdva14nc/TEcYyXK35KI/AAAAAAAABCk/vOriTHP_yBY/s320/Tema_3_Imagen_013.png" alt="" id="BLOGGER_PHOTO_ID_5496389123721127074" border="0" /&gt;&lt;/a&gt;La imagen promociona el proyecto Bouncy Castle, que ya se puede descargar en su &lt;a href="http://www.bouncycastle.org/"&gt;web oficial&lt;/a&gt;, de software libre que desarrolla una serie de librerías criptográficas  libres y, entre otros, ofrece un &lt;em&gt;provider&lt;/em&gt; para el JCE de Java.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Además del código del proyecto se puede encontrar una extensa  documentación así como diversos ejemplos de uso de las librerías.&lt;/p&gt; &lt;p&gt;Además de la implementación de un provider JCE para usar en Java  también contiene otras utilidades que pueden ser de interés a la hora de  hacer una aplicación basada en el DNI electrónico, especialmente si se  quieren implementar servicios de valor añadido. Las más relevantes son:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Librería para leer y escribir objetos codificados en ASN.1&lt;/li&gt;&lt;li&gt;API para comunicaciones TLS de cliente&lt;/li&gt;&lt;li&gt;Generador de Certificados X.509, CRLs y ficheros PKCS#12&lt;/li&gt;&lt;li&gt;Generación de Certificados de Atributos&lt;/li&gt;&lt;li&gt;Generación y procesado de objetos S/MIME y CMS (PKCS#7/RFC 3852)&lt;/li&gt;&lt;li&gt;Generación y procesado de consultas OCSP (RFC 2560)&lt;/li&gt;&lt;li&gt;Generación y procesado de sellos de tiempo TSP (RFC 3161)&lt;/li&gt;&lt;li&gt;Generación y procesado de objetos OpenPGP (RFC 2440).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Señores, no dispongo de tiempo por l momento, aí pes, dejo este tema a mitad, para abordr cuando sepa más.&lt;br /&gt;&lt;br /&gt;SALUDOS :P&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;______________________&lt;br /&gt;&lt;br /&gt;&lt;p&gt;A continuación se muestra un ejemplo de aplicación realizada en Java  usando los servicios criptográficos del provider Bouncy Castle en lugar  del provider por defecto que viene en el sistema.&lt;/p&gt; &lt;p&gt;La aplicación en cuestión realiza el Hash (resumen criptográfico) de  un fichero de texto en claro.&lt;/p&gt; &lt;div class="codigo"&gt; &lt;p&gt;EJEMPLO de código: &lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;/* Cargar "provider" */&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;Security.addProvider(new BouncyCastleProvider());  &lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt; &lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;/* Crear función resumen, SHA-1 en el ejemplo */&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;MessageDigest messageDigest = MessageDigest.getInstance("SHA"); &lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;/* Leer fichero de 1k en 1k y resumir*/&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;byte[] buffer = new byte[1000];&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;FileInputStream in = new FileInputStream(&lt;nombrefichero&gt;);&lt;/nombrefichero&gt;&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;int leidos = in.read(buffer, 0, 1000);&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;while (leidos != -1) &lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;      {&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;      // Pasa texto claro a la función resumen&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;      messageDigest.update(buffer); &lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;      leidos = in.read(buffer, 0, 1000);&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;      }&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;in.close();&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;// Completar el resumen&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;byte[] resumen = messageDigest.digest();&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;// Mostrar resumen&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;System.out.println("RESUMEN:");&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;mostrarBytes(resumen);&lt;/p&gt; &lt;p style="color: rgb(204, 0, 0);"&gt;System.out.println();&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8630924862548516398?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8630924862548516398/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/07/el-proyecto-bouncy-castle.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8630924862548516398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8630924862548516398'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/07/el-proyecto-bouncy-castle.html' title='El proyecto Bouncy Castle'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7_ZQdva14nc/TEcYyXK35KI/AAAAAAAABCk/vOriTHP_yBY/s72-c/Tema_3_Imagen_013.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-1795095831164723048</id><published>2010-07-03T03:28:00.000-07:00</published><updated>2010-07-03T06:17:21.582-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Configuraciones'/><category scheme='http://www.blogger.com/atom/ns#' term='Msconfig'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><category scheme='http://www.blogger.com/atom/ns#' term='Utilidades del sistema'/><title type='text'>Utilidades del Sistema</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/TC8VKma0_zI/AAAAAAAABBk/w5iP3EeHcFo/s1600/2.JPG"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;No se mucho de ella. No obstante para entrar a las Utilidades del Sistema, hay que ir a Inicio, Ejecutar... y tras esto tecleear msconfig. El cmando nos abre esta ventana:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/TC8VKma0_zI/AAAAAAAABBk/w5iP3EeHcFo/s1600/2.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 405px; height: 264px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/TC8VKma0_zI/AAAAAAAABBk/w5iP3EeHcFo/s320/2.JPG" alt="" id="BLOGGER_PHOTO_ID_5489629742643871538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Lo poco que sé es que se puede deshabilitar el antivirus así como otros programas.  También se puede seleccionar el modo de inicio, configurar el SYSTEM.INI, WIN.INI, BOOT.INI, Servicios e Inicio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-1795095831164723048?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/1795095831164723048/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/07/no-se-mucho-de-ella.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1795095831164723048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1795095831164723048'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/07/no-se-mucho-de-ella.html' title='Utilidades del Sistema'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7_ZQdva14nc/TC8VKma0_zI/AAAAAAAABBk/w5iP3EeHcFo/s72-c/2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4608499413593295728</id><published>2010-07-03T00:07:00.000-07:00</published><updated>2010-07-03T01:55:14.805-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Regedit'/><category scheme='http://www.blogger.com/atom/ns#' term='Virus'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows-No hay disco'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><category scheme='http://www.blogger.com/atom/ns#' term='Error del sistema'/><title type='text'>Puñetero mensaje de error del sistema: "exception processing message c0000a3 parameters"</title><content type='html'>&lt;span class="textoforo8"&gt;&lt;br /&gt;Ayer me topé con este mensaje de error:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7_ZQdva14nc/TC7xUofs3xI/AAAAAAAABA0/x0MQkq-6qF8/s1600/Dibujo.bmp"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 509px; height: 129px;" src="http://3.bp.blogspot.com/_7_ZQdva14nc/TC7xUofs3xI/AAAAAAAABA0/x0MQkq-6qF8/s320/Dibujo.bmp" alt="" id="BLOGGER_PHOTO_ID_5489590332581273362" border="0" /&gt;&lt;/a&gt;Previamente al combate con este mensaje, provocado por un virus, iremos akl Editor de Registro. Para hacerlo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A. SILENCIAR EL MENSAJE DE ERROR:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ponemos en el menú Ejecutar la intrucción Regedit, así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/TC72Od_aQmI/AAAAAAAABBU/Li5u--1Q7Oc/s1600/regedit.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 277px; height: 148px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/TC72Od_aQmI/AAAAAAAABBU/Li5u--1Q7Oc/s320/regedit.png" alt="" id="BLOGGER_PHOTO_ID_5489595724240405090" border="0" /&gt;&lt;/a&gt;Al ejecutarlo nos aparecerá una ventana como esta, y deberemos navegar hasta HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Windows:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/TC72fpAZwzI/AAAAAAAABBc/310nwCEsnlo/s1600/10656-p-1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 198px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/TC72fpAZwzI/AAAAAAAABBc/310nwCEsnlo/s320/10656-p-1.png" alt="" id="BLOGGER_PHOTO_ID_5489596019255132978" border="0" /&gt;&lt;/a&gt;Cuandio lleguemos, iremos a la sección de la derecha. Escogeremos donde pone ErrorMode y cklicaremos para modificar el valor. Pondremos 1 en lugar de 0. Esto hace que se dejen de mostrar los mensajes de error. ¿Para qué? Para así poder pasar a destruir la causa de este error de memoria conforme viene a continuación explicado.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.liutilities.com/products/registrybooster/tweaklibrary/tweaks/10656/10656-p-2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 259px; height: 159px;" src="http://www.liutilities.com/products/registrybooster/tweaklibrary/tweaks/10656/10656-p-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="textoforo8"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;B. MATANZA DEL VIRUS:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Para cepillarnos el error hay que arrancar en modo seguro y ha&lt;/span&gt;&lt;span class="textoforo8"&gt;cer&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.childcareaware.org/images/category_icons/tools.gif"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 283px; height: 209px;" src="http://www.childcareaware.org/images/category_icons/tools.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;span class="textoforo8"&gt; un análisis  completo del pc, pasando el antivirus actualizado, antiespía como spybot,  limpie&lt;/span&gt;&lt;span class="textoforo8"&gt;za de registro con regseek u otro, desfragmentar el disco y  terminar con un scandisk completo.&lt;br /&gt;El scandisk, que se encuentra en propiedades del disco C: en  herramientas , reparar errores, lo marcas y reinicia el pc. &lt;/span&gt;&lt;br /&gt;&lt;span class="textoforo8"&gt;Si continua igual debemos hacer una restauración del sistema a un día  donde todo funcionaba, en accesorios, herramientas del sistema restaurar  el sistema.&lt;br /&gt;Que no se puede restaurar el sistema habrá que reparar el sistema  con la consola de recuperación o reinstalar el sistema.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;C. VOLVER A PERMITIR LA VISUALIZACIÓN DE ERRORES:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Francamete es el mejor paso, porque unok lo hace sabiendo que todo su pc ya está sano. Para ello, hay que hacer lo mismo que en el A, salvo porque aquí hay que poner 0 al ErrorMode.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Que tengan Suerte.....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para confeccionar este manual me basé en las webs:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.liutilities.com/products/registrybooster/tweaklibrary/tweaks/10656/"&gt;http://www.liutilities.com/products/registrybooster/tweaklibrary/tweaks/10656/ &lt;/a&gt;(para los pasos A y C)&lt;a href="http://www.liutilities.com/products/registrybooster/tweaklibrary/tweaks/10656/"&gt;.&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.configurarequipos.com/tema2446094-8-0.html"&gt;http://www.configurarequipos.com/tema2446094-8-0.html&lt;/a&gt; (para el B).&lt;/li&gt;&lt;/ul&gt;GRACIAS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4608499413593295728?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4608499413593295728/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/07/punetero-mensaje-de-error-del-sistema.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4608499413593295728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4608499413593295728'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/07/punetero-mensaje-de-error-del-sistema.html' title='Puñetero mensaje de error del sistema: &quot;exception processing message c0000a3 parameters&quot;'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7_ZQdva14nc/TC7xUofs3xI/AAAAAAAABA0/x0MQkq-6qF8/s72-c/Dibujo.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-3633355258200908116</id><published>2010-07-02T11:07:00.000-07:00</published><updated>2010-07-02T11:13:16.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Analizar y descomprimir disco'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>¿Cómo analizar y desfragmentar un disco de Windows XP?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.emetreinta.es/wp-content/uploads/image/herramienta.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 239px; height: 355px;" src="http://www.emetreinta.es/wp-content/uploads/image/herramienta.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esta guía paso a paso describe cómo realizar el mantenimiento en  volúmenes de disco en equipos basados en Windows XP. Analizar y la  desfragmentar los discos sirve para mantener el rendimiento y el  funcionamiento general del sistema. &lt;h3 id="tocHeadRef"&gt; Analizar y desfragmentar volúmenes &lt;/h3&gt;&lt;script type="text/javascript"&gt;                 loadTOCNode(2, 'summary');             &lt;/script&gt; Dado que la desfragmentación de un disco puede llevar bastante tiempo  (dependiendo del tamaño del volumen, el número de archivos, el  porcentaje de fragmentación y la disponibilidad de los recursos del  sistema), es recomendable analizar los volúmenes antes de  desfragmentarlos para decidir si vale la pena o no ejecutar el proceso  desfragmentación. &lt;h4 id="tocHeadRef"&gt; Analizar un volumen &lt;/h4&gt;&lt;script type="text/javascript"&gt;             loadTOCNode(3, 'summary');         &lt;/script&gt; Para comprobar si existen archivos o carpetas fragmentados en un  volumen: &lt;ol&gt;&lt;li&gt; Haga clic en &lt;b&gt;Inicio&lt;/b&gt;, seleccione &lt;b&gt;Todos los programas&lt;/b&gt;, &lt;b&gt;Accesorios&lt;/b&gt;,  &lt;b&gt;Herramientas del sistema&lt;/b&gt; y, a continuación, haga clic en &lt;b&gt;Desfragmentador  de disco&lt;/b&gt;. &lt;/li&gt;&lt;li&gt; Haga clic en el volumen que desea analizar. &lt;/li&gt;&lt;li&gt; Haga clic en &lt;b&gt;Analizar&lt;/b&gt; para empezar el análisis. &lt;/li&gt;&lt;li&gt; Revise los resultados del análisis después de que éste se haya  completado; para ello, haga clic en &lt;b&gt;Presentar informes&lt;/b&gt;. Si la  herramienta de análisis recomienda desfragmentar el volumen, siga los  pasos descritos en la sección siguiente. &lt;/li&gt;&lt;/ol&gt;&lt;h4 id="tocHeadRef"&gt; Desfragmentar un volumen &lt;/h4&gt;&lt;script type="text/javascript"&gt;             loadTOCNode(3, 'summary');         &lt;/script&gt;&lt;ol&gt;&lt;li&gt; Si la herramienta &lt;b&gt;Desfragmentador de disco&lt;/b&gt; no se está ejecutando  ya, haga clic en &lt;b&gt;Inicio&lt;/b&gt;, elija &lt;b&gt;Todos los programas&lt;/b&gt;, &lt;b&gt;Accesorios&lt;/b&gt;,  &lt;b&gt;Herramientas del sistema&lt;/b&gt;,y después, haga clic en &lt;b&gt;Desfragmentador  de disco&lt;/b&gt;. &lt;/li&gt;&lt;li&gt; Seleccione el volumen que desea desfragmentar. &lt;/li&gt;&lt;li&gt; Haga clic en &lt;b&gt;Desfragmentar&lt;/b&gt; para iniciar la operación. &lt;/li&gt;&lt;li&gt; Revise el progreso de la operación en la ventana Visualización de la  desfragmentación. Los archivos de disco fragmentados se muestran en  rojo, los archivos contiguos en azul y los archivos del sistema en  verde. El objetivo consiste en eliminar la mayor parte del color rojo de  la ventana. &lt;/li&gt;&lt;/ol&gt;&lt;h3 id="tocHeadRef"&gt; Errores &lt;/h3&gt;&lt;script type="text/javascript"&gt;                 loadTOCNode(2, 'summary');             &lt;/script&gt; Aunque cualquier usuario puede tener acceso a la herramienta  Desfragmentador de disco, para poder analizar o desfragmentar un  volumen, se requieren privilegios de administrador. Para realizar la  desfragmentación, debe iniciar sesión como administrador o como miembro  del grupo local Administradores.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOTA: &lt;/span&gt;La guia la he tomado del &lt;a href="http://support.microsoft.com/kb/305781/es"&gt;Soporte de Microsoft&lt;/a&gt;. Gracias&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-3633355258200908116?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/3633355258200908116/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/07/como-analizar-y-desfragmentar-un-disco.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3633355258200908116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3633355258200908116'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/07/como-analizar-y-desfragmentar-un-disco.html' title='¿Cómo analizar y desfragmentar un disco de Windows XP?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-5737472861646968874</id><published>2010-06-19T06:32:00.001-07:00</published><updated>2010-06-19T06:33:31.145-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Opinion'/><title type='text'>"Hazlo como quieras, total, lo va a usar un mono"</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7_ZQdva14nc/TBzHDTBitnI/AAAAAAAABAs/9vTxHd_fq8c/s1600/4278312.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 236px;" src="http://2.bp.blogspot.com/_7_ZQdva14nc/TBzHDTBitnI/AAAAAAAABAs/9vTxHd_fq8c/s320/4278312.jpg" alt="" id="BLOGGER_PHOTO_ID_5484477305690699378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dicen que la innformática es difícil, pero lo complejo es hacer una aplicación sencilla, casi para zopencos. Para nosotros, los sufridos desarrolladores, va dedicada esta actualización.&lt;br /&gt;&lt;br /&gt;1 abrazo.......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-5737472861646968874?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/5737472861646968874/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/06/hazlo-como-quieras-total-lo-va-usar-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5737472861646968874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5737472861646968874'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/06/hazlo-como-quieras-total-lo-va-usar-un.html' title='&quot;Hazlo como quieras, total, lo va a usar un mono&quot;'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7_ZQdva14nc/TBzHDTBitnI/AAAAAAAABAs/9vTxHd_fq8c/s72-c/4278312.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-3223659417484766765</id><published>2010-06-03T09:01:00.000-07:00</published><updated>2010-06-03T09:09:50.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='VirtualBox'/><title type='text'>Pantalla completa "sin marco" en VirtualBox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://envezdelpsiquiatra.files.wordpress.com/2009/05/virtualbox.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 284px; height: 283px;" src="http://envezdelpsiquiatra.files.wordpress.com/2009/05/virtualbox.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;VMWare si cuenta con una opción que dispone a pantalla  completa la ventana sobre la que se carga el s.o. virtual. Pero con VirtualBox nos tenemos que calentar un poquillo la cabeza porque originalmente al elegir pantalla completa nos va a salir una ventana "con un marco een negro", y como esto es una capullada, nos vamos a retorcer un poco la cabeza pensando cómo quitar el marco, que en el VMWare no salia. Pues bien, según leí en un foro esto se arregla subiendo la resolución a 800 x 600 del s.o. virtual que corremos en el momento.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludetes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-3223659417484766765?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/3223659417484766765/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/06/vmware-si-cuenta-con-una-opcion-que.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3223659417484766765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3223659417484766765'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/06/vmware-si-cuenta-con-una-opcion-que.html' title='Pantalla completa &quot;sin marco&quot; en VirtualBox'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2822751801987221400</id><published>2010-06-02T10:42:00.000-07:00</published><updated>2010-06-02T11:24:29.115-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilidades'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Cómo recuperar archivos borrados de la papelera de reciclaje'/><category scheme='http://www.blogger.com/atom/ns#' term='Restoration 2.5.14'/><category scheme='http://www.blogger.com/atom/ns#' term='Progamas Windows'/><title type='text'>¿Cómo recuperar archivos borrados de la papelera de reciclaje?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7_ZQdva14nc/TAagVYHUFOI/AAAAAAAABAU/iPVn8cmIqwg/s1600/McGee-tim-mcgee-8970951-120-120.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 163px; height: 163px;" src="http://2.bp.blogspot.com/_7_ZQdva14nc/TAagVYHUFOI/AAAAAAAABAU/iPVn8cmIqwg/s320/McGee-tim-mcgee-8970951-120-120.jpg" alt="" id="BLOGGER_PHOTO_ID_5478242285853611234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La información que aquí escribo la tomé de &lt;a href="http://www.ayudadigital.com/Manuales_informatica/recuperar_archivos_borrados.htm"&gt;http://www.ayudadigital.com/Manuales_informatica/recuperar_archivos_borrados.htm&lt;/a&gt;  a los que doy las gracias.  Espero que no se sientan molestos por esta  copia de su manual, pues si me agregué sus conocimientos fue para  tenerlos más a mano por si  surgiese la necesidad de rescatarla en el  trabajo.&lt;br /&gt;&lt;br /&gt;Cuando borramos  un archivo y lo eliminamos de la papelera de reciclaje , no borramos  fisicamente  el archivo, lo unico que hacemos es que el archivo desaparezca de la  lista de  programas o archivos de Windows, pero dicho archivo continua alli en  nuestro  disco duro hasta que escribimos nueva información encima de ellos. Si  este  proceso de escritura aún no ha ocurrido todavia estamos a tiempo de  recuperarlos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para recuperar archivos borrados de la papelera de reciclaje es buenisimo este programa: &lt;b&gt;Restoration  2.5.14 &lt;/b&gt; que no es necesario instalar y es gratuito. Para obtenerlo pulsar &lt;a href="http://www.snapfiles.com/get/restoration.html"&gt;aqui&lt;/a&gt;. Al ejecutar el programa se nos crea una carpeta como la que veis  a continuación&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ayudadigital.com/Manuales_informatica/recuperar%20archivos/restore.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 118px; height: 54px;" src="http://www.ayudadigital.com/Manuales_informatica/recuperar%20archivos/restore.jpg" alt="" border="0" /&gt;&lt;/a&gt;Al abrir esta carpeta nos encontraremos los siguientes archivos:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ayudadigital.com/Manuales_informatica/recuperar%20archivos/restore1.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 369px; height: 95px;" src="http://www.ayudadigital.com/Manuales_informatica/recuperar%20archivos/restore1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tenemos que pinchar sobre &lt;b&gt;Restoration &lt;/b&gt;en esta carpeta y se nos  abre la  siguiente ventana&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ayudadigital.com/Manuales_informatica/recuperar%20archivos/restore2.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 399px; height: 311px;" src="http://www.ayudadigital.com/Manuales_informatica/recuperar%20archivos/restore2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Si recuerdas el nombre del fichero borrado o una parte de él, lo      escribes en la casilla &lt;b&gt;All or part of the file &lt;/b&gt; si deseas      incluir los fragmentos o clusters ocupados por ficheros que han      escrito encima marca la casilla &lt;b&gt;Include used cluster. &lt;/b&gt;     Para recuperar el archivo incluso aunque tenga un tamaño de 0      bits , activa la casilla &lt;b&gt;Include even &lt;/b&gt; . Por último,      pulsa el botón &lt;b&gt;Search Deleted Files &lt;/b&gt;y obtendras los      archivos borrados que cumplan esas condiciones.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ayudadigital.com/Manuales_informatica/recuperar%20archivos/restore3.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 285px; height: 168px;" src="http://www.ayudadigital.com/Manuales_informatica/recuperar%20archivos/restore3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Si tenemos la suerte de encontrarlos, podemos recuparlos      pulsando el icono &lt;b&gt;Restore by copying.&lt;/b&gt;&lt;/p&gt;     &lt;p&gt;En ocasiones es posible que no recordemos los nombres de los      ficheros eliminados, en este caso no queda otra solución que      hacer un barrido de la unidad para recuperar cualquier      informacion coherente. Para ello entramos en el menu &lt;b&gt;Others     &lt;/b&gt;y marcamos sobre &lt;b&gt;Scan all clusters.&lt;/b&gt; Los archivos      recuperados podremos devolverlos a su ubicación original con el      mencionado boton &lt;b&gt;Restore by Copying.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;Saludetes.&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2822751801987221400?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2822751801987221400/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/06/como-recuperar-archivos-borrados-de-la.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2822751801987221400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2822751801987221400'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/06/como-recuperar-archivos-borrados-de-la.html' title='¿Cómo recuperar archivos borrados de la papelera de reciclaje?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7_ZQdva14nc/TAagVYHUFOI/AAAAAAAABAU/iPVn8cmIqwg/s72-c/McGee-tim-mcgee-8970951-120-120.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8941079854955411732</id><published>2010-05-23T07:51:00.000-07:00</published><updated>2010-05-27T11:18:34.071-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ideas para proyectos propios'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Bluetooth'/><title type='text'>Ideas para proyectos propios (I) y (II)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://reparatupc.info/wp-content/uploads/2008/10/bluetooth1.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 264px; height: 227px;" src="http://reparatupc.info/wp-content/uploads/2008/10/bluetooth1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Utilizando C sharp haré una aplicación que transfiera archivos de un teléfono móvil a un ordenador a través de bluetooth y viceversa.&lt;br /&gt;&lt;br /&gt;Y luego, haré otra para realizar copias de seguridad de la agenda del teléfono a una base de datos dl ordenador. Así mismo esta copia podrá ser exportada al télefono.&lt;br /&gt;&lt;br /&gt;Estos dos links me servirán de algo:&lt;br /&gt;&lt;a href="http://www.programmersheaven.com/2/Transferring-Files-and-Monitoring-Bluetooth-Ports"&gt;&lt;br /&gt;Transferring files and monitoring Bluetooth ports in C# &lt;/a&gt;&lt;h3&gt;&lt;/h3&gt;&lt;a href="http://www.daniweb.com/forums/thread7600.html"&gt;Scanning for bluetooth devices&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Importante libreria: &lt;a href="http://www.desarrollomobile.net/devmob/BluetoothLibrary/tabid/54/Default.aspx"&gt;http://www.desarrollomobile.net/devmob/BluetoothLibrary/tabid/54/Default.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A ver cuánto tardo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8941079854955411732?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8941079854955411732/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/05/ideas-para-proyectos-propios-i-y-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8941079854955411732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8941079854955411732'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/05/ideas-para-proyectos-propios-i-y-ii.html' title='Ideas para proyectos propios (I) y (II)'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7248227726940589661</id><published>2010-05-10T10:57:00.000-07:00</published><updated>2010-05-10T11:04:42.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Pen Drive'/><title type='text'>Cómo hacer práctico un Pen drive para que se puedan guarrdar archivos "grandes"</title><content type='html'>Es fácil.&lt;br /&gt;&lt;br /&gt;1. Vamos a las propiedades de MI PC (pinchando con el botón derecho).&lt;br /&gt;2. Tras esto clicamos en Administrador de dispositivos.&lt;br /&gt;3. Seleccionamos Unidades de Almacenamiento, pinchamos sobre USB.&lt;br /&gt;4. Luego, nos salen sus propiedades, y de ahí escogemos Directivas. Entonces de las dos opciones OPTIMIZAR PARA RENDIMIENTO es la buena.&lt;br /&gt;5. Aceptamos.&lt;br /&gt;6. Fotmateamos el pen drive.&lt;br /&gt;&lt;br /&gt;Y listo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7248227726940589661?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7248227726940589661/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/05/como-hacer-practico-un-pen-drive-para.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7248227726940589661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7248227726940589661'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/05/como-hacer-practico-un-pen-drive-para.html' title='Cómo hacer práctico un Pen drive para que se puedan guarrdar archivos &quot;grandes&quot;'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-5992782707352695956</id><published>2010-05-02T07:00:00.000-07:00</published><updated>2010-05-02T07:17:00.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='TreeNode'/><category scheme='http://www.blogger.com/atom/ns#' term='Estructura en árbol'/><category scheme='http://www.blogger.com/atom/ns#' term='Navegador de directorios'/><category scheme='http://www.blogger.com/atom/ns#' term='TreeView'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Navegador de directorios (versión mejorada)'/><title type='text'>En C#: Cómo montar un navegador en un TreeView ( 2º versión)</title><content type='html'>Para desarrollar esta segunda versión, que sustituye, mejorando a &lt;a href="http://programandodesdespain.blogspot.com/2010/04/mas-codigo-en-c-como-montar-un.html"&gt;"Más código en C#: Cómo montar un navegador en un TreeView"&lt;/a&gt;, cree una clase. La llamé "SuperTreeNode" y hereda todo de la clase "TreeNode" perteneciente a System.Windows.Forms.&lt;br /&gt;&lt;br /&gt;Código de la clase SuperTreeNode:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    class SuperTreeNode:TreeNode //los dos puntos preceden a la clase superior&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        private string ruta;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        public SuperTreeNode()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            : base()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            this.ruta = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        public SuperTreeNode(string ruta)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            : base()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            this.ruta = ruta;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        public SuperTreeNode(string texto, string ruta):base(texto)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            this.ruta = ruta;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        public string Ruta&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            get { return ruta; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            set { ruta = value; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El código de la clase donde se realizan las funciones relativas a la carga de los directorios, en esta versión, se cargan cuando se procede a utilizarlos, resolviendo asi el problemas con la memoria RAM, que antes se veia afectada.&lt;br /&gt;&lt;br /&gt;Código de la clase del formulario principal, donde uso System.IO;:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;   public partial class Form1 : Form&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        SuperTreeNode NodoRaiz;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        public Form1()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            InitializeComponent();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            NodoRaiz = new SuperTreeNode();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            NodoRaiz.ImageIndex = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            NodoRaiz.Text = "MI PC"; //doy un texto al nodo primario&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            TreeVArboleda.Nodes.Add(NodoRaiz); //el nodoprimario lo agrego al arbol&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        private void Form1_Load(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            Inicio(); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            TreeVArboleda.ExpandAll();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        public void Inicio()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            //lo primero, sacar las unidades.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DriveInfo[] drivers = DriveInfo.GetDrives();//se obtienen todos los drivers &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            foreach (DriveInfo driver in drivers)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    //de cada driver se obtiene el nombre y el fullname y se convierte a nodo. El nodo se agrega al principal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    SuperTreeNode nodo = new SuperTreeNode();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    nodo.Text = driver.Name; //nombre&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    nodo.Ruta = driver.RootDirectory.FullName; //ruta&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    NodoRaiz.Nodes.Add(nodo);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    StateLblInformacion.Text ="";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    StateLblInformacion.Text = ex.Message;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        private void TreeVArboleda_AfterSelect(object sender, TreeViewEventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            SuperTreeNode nodo = (SuperTreeNode)e.Node;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            TxtRutaActual.Text = nodo.Ruta; //obtengo la ruta seleccionada&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                //obtengo el contenido (subdirectorios) del directorio de la ruta&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                DirectoryInfo unDirectorio = new DirectoryInfo(TxtRutaActual.Text);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                DirectoryInfo[] subdirectorios = unDirectorio.GetDirectories();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                nodo.Nodes.Clear();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;              &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                foreach (DirectoryInfo directorios in subdirectorios)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                        //por cada subdirectorio cro un nodo llamado hijo al que anclo al nodo creado al principio&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                        SuperTreeNode hijo = new SuperTreeNode(directorios.Name, directorios.FullName);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                       &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                        nodo.Nodes.Add(hijo);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                        StateLblInformacion.Text = "";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    catch (Exception ex2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                        StateLblInformacion.Text = ex2.Message;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                StateLblInformacion.Text = ex.Message;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-5992782707352695956?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/5992782707352695956/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/05/en-c-como-montar-un-navegador-en-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5992782707352695956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5992782707352695956'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/05/en-c-como-montar-un-navegador-en-un.html' title='En C#: Cómo montar un navegador en un TreeView ( 2º versión)'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2987292902983066559</id><published>2010-04-17T03:29:00.000-07:00</published><updated>2010-04-17T04:42:02.464-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Calculo del peso de un directorio'/><title type='text'>Cómo en C# obtener el tamaaño de un directorio</title><content type='html'>Esta misma función la escribí en el post anterior, pero creo necesario volverla a escribir porque puede ser útil al márgen de la otra utilidad que le dí.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;private long  ObtenerPesoDirectorioEnBytes(DirectoryInfo d)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             long pesoDir = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 // Totalizar tamaño de  archivos &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 FileInfo[] fis =  d.GetFiles();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                foreach (FileInfo fi in fis)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    pesoDir += fi.Length;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                // Totalizar tamaño  sub-directorios &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                  DirectoryInfo[] dis = d.GetDirectories();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 foreach (DirectoryInfo  di in dis)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                      pesoDir += ObtenerPesoDirectorioEnBytes(di);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception exp)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 // Código para la  excepción va aquí &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;              return pesoDir;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por su puesto, gracias a quién colgó por internet este código, del que yo no he cambiado nada.&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2987292902983066559?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2987292902983066559/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/como-en-c-obtener-el-peso-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2987292902983066559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2987292902983066559'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/como-en-c-obtener-el-peso-de.html' title='Cómo en C# obtener el tamaaño de un directorio'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4672603289993840005</id><published>2010-04-17T02:49:00.000-07:00</published><updated>2010-04-17T03:28:49.506-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='TreeNode'/><category scheme='http://www.blogger.com/atom/ns#' term='Estructura en árbol'/><category scheme='http://www.blogger.com/atom/ns#' term='Navegador de directorios'/><category scheme='http://www.blogger.com/atom/ns#' term='TreeView'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Calculo del peso de un directorio'/><title type='text'>Más código en C#: Cómo montar un navegador  en un TreeView</title><content type='html'>Para implementar este código utilicé una clase, que llamé ExploradorLocal. Para su programación he usado clase IO y Windows.Forms, donde la primera se usa para el manejo de archivos y directorios. Y la otra sirve para manipular TreeView y TreeNode, clases que usaremos para el árbol, donde la segunda, es obviamente la que crea nodos dependientes del árbol.&lt;br /&gt;&lt;br /&gt;Esta clase cuenta cobn un objeto ArrayList que es Contenedor y que contiene el contenido del directorio.  También trabajo con la clase ContenidoDirectorio, la cual tiene como variables nombre, tipo, ultima fecha de acceso y peso. Las tres primeras del tipo string, y la cuarta long.  En el ArrayList se meterá cada componente conforme se vaya leyendo el contenido del directorio, y esto sucede enla tercera de la funciones (métodos si usamos la nomenclatura de POO).&lt;br /&gt;&lt;br /&gt;La primera función, ExtraerEstructuraUnidades() ,  devuelve un objeto TreeView, donde ya se "cargaron" todas las ramificacones del arbol. Esta función se ocupa de encontrar las unidades (drivers).&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    public TreeView ExtraerEstructuraUnidades()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             /*Extrae las unidades*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 oTree.Nodes.Clear();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 DriveInfo[] TodosLosDrivers = DriveInfo.GetDrives();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 foreach (DriveInfo driver in TodosLosDrivers)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    TreeNode node = new TreeNode();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     node.Text = driver.Name;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    oTree.Nodes.Add(node);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     ExtraerEstructuraDirectorios(driver.Name, node, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 ex.ToString();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            return oTree;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La siguiente, que es recursiva tiene por finalidad, extraer los directorios que cuelgan de la ruta especificada. Superior es el nodo superior, y nivel es una variable que hace de tope, impidiendo el bucle infinito.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        private void ExtraerEstructuraDirectorios(string ruta,  TreeNode superior, int nivel)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            /*Extrae el  contenido de cada unidad (solo directorios)*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                nivel++;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                if (nivel == 4) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     return;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                DirectoryInfo dir = new DirectoryInfo(ruta);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 if (!dir.Exists)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    Console.WriteLine("No se puede  acceder a: " + ruta);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                foreach(DirectoryInfo dirInfo  in dir.GetDirectories())&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     TreeNode child = new TreeNode();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    child.Text =  dirInfo.Name;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    superior.Nodes.Add(child);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     ExtraerEstructuraDirectorios(child.FullPath, child, nivel);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                Console.WriteLine("Ha surgido un problema: "  +ex.Message);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En esta tercera función se extrae el contenido del directorio actual, aarchivos y subdirectorios, para luego, y aunque aquí no se vea, cargar su información en un objeto GridView.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        public void  ObtenerContenidoDirectorio()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            /*Extrae el  contenido de cada directorio (subdirectorios y ficheros)*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             Contenedor.Clear(); //borrado del arraylist&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                // miro si la ruta existe&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 DirectoryInfo dir = new DirectoryInfo(rutaSeleccionada);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 if (!dir.Exists)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    Console.WriteLine("El  directorio " + rutaSeleccionada + " no existe.");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 // lista del contenido&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                foreach (DirectoryInfo di in  dir.GetDirectories())&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    //se  obtiene el peso en bytes del subdirectorio&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    long  peso = ObtenerPesoDirectorioEnBytes(di);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     //oContenido contiene un elemento del directorio&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     Clases.ContenidoDirectorio oContenido = new Proyecto .Clases.ContenidoDirectorio(di.Name, "Subdirectorio",  Convert.ToString(di.LastWriteTime), peso);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     //Contenedor contiene muchos oContenido&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     Contenedor.Add(oContenido);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 // fill the Files listbox&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                foreach (FileInfo fi in  dir.GetFiles())&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     Clases.ContenidoDirectorio oContenido = new&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; Proyecto&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;.Clases.ContenidoDirectorio(fi.Name, fi.Extension,  Convert.ToString(fi.LastWriteTime), fi.Length);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     Contenedor.Add(oContenido);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;              &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 ex.ToString();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;              &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En esta cuarta función se extrae el peso en bytes de un  directorio (pasado por parametro).&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         private long ObtenerPesoDirectorioEnBytes(DirectoryInfo d)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             long pesoDir = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 // Totalizar tamaño de archivos &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                FileInfo[] fis =  d.GetFiles();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                foreach (FileInfo fi in fis)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    pesoDir += fi.Length;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                // Totalizar tamaño sub-directorios &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 DirectoryInfo[] dis = d.GetDirectories();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 foreach (DirectoryInfo di in dis)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                     pesoDir += ObtenerPesoDirectorioEnBytes(di);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception exp)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 // Código para la excepción va aquí &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             return pesoDir;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Para realizar este proyecto, cuya idea es imitar a Filezilla, estoy utilizando código encontrado pr Internet, así pues gracias a aquellos que me ilustran.&lt;br /&gt;&lt;br /&gt;Saludos&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4672603289993840005?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4672603289993840005/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/mas-codigo-en-c-como-montar-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4672603289993840005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4672603289993840005'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/mas-codigo-en-c-como-montar-un.html' title='Más código en C#: Cómo montar un navegador  en un TreeView'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-3638092447072699329</id><published>2010-04-16T09:18:00.000-07:00</published><updated>2010-04-17T02:47:53.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='GridView'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='Cargar datos'/><title type='text'>C#: Insertar datos en un GriedView sin origen en base de datos</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);"&gt;Fue fácil pero apunto esto para un  futuro y para el que lo necesite. ste es un ejemlo, de cómo cargar un  objeto GridView se carga sin etar enlazado a una Base de datos de atos,  en este caso pertenecientes a un ArrayList.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            /*Se carga una  rejilla a traves de los datos del ArrayList Peliculas*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;Pelicula unaPeli = new Pelicula(TxtTitulo.Text, TxtGenero.Text);&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; //objeto de Tipo Pelicula&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            Peliculas.Add(unaPeli);&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; //Peliculas es un arryList&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            /*Creación del objeto otabla en donde se van a ir agregando uno a uno los elementos del ArrayList*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DataTable oTabla = new DataTable();&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; //objeto DataTable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DataColumn oColumTitulo= new DataColumn("Titulo");&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; //objeto &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;DataColumn &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DataColumn oColumGenero = new DataColumn("Genero");&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  //objeto &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;DataColumn &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oTabla.Columns.Add(oColumTitulo);&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  //se añaden esas columnas&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oTabla.Columns.Add(oColumGenero);&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;int tam = Peliculas.Count; //Arrayist&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            for (int i = 0; i &lt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                unaPeli = (Pelicula) Peliculas[i];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                string[] strFila = new string[2];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                strFila[0] = unaPeli.Titulo;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                strFila[1] = unaPeli.Genero;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                oTabla.Rows.Add(strFila); //se añad una nueva fila&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            GrdVPeliculas.DataSource= oTabla; //se le asigna el origen&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            GrdClmTitulo.FieldName= oColumTitulo.ColumnName;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            GrdClmGenero.FieldName = oColumGenero.ColumnName;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Espero no ser muy ilegible, jejejej.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Saludos.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;            &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-3638092447072699329?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/3638092447072699329/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/c-insertar-datos-en-un-griedview.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3638092447072699329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3638092447072699329'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/c-insertar-datos-en-un-griedview.html' title='C#: Insertar datos en un GriedView sin origen en base de datos'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-3215047831807915444</id><published>2010-04-16T07:46:00.000-07:00</published><updated>2010-04-19T08:43:53.785-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Rgiones'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><title type='text'>Cómo en C# se ordena el código</title><content type='html'>Lo vi en un compañero del curro y me gustó mucho. Utilizar regiones es la clave. Habrá regiones para cada ámbito de archivo (clases, códigos de formularios, etc.), por ejemplo: para las variables, constructores, eventos, funciones, propiedades, y así según hagan falta.&lt;br /&gt;En C Sharp las rgiones comienzan escribiendo &lt;span style="color: rgb(204, 0, 0);"&gt;#region nombre_de_la_región&lt;/span&gt; y terminan escribiendo&lt;span style="color: rgb(102, 0, 0);"&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt; En las líneas de enmedio se esrcirbe el código ejecutable.&lt;br /&gt;Dividir en regiones resulta ventajoso pues el código encasillado se ve a simple vista, al mismo tiempo que si se quiere se puede ocultar con un simple click en la cruz que se dibuja nada más se abre la región.&lt;br /&gt;&lt;br /&gt;Saludos de este Victor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-3215047831807915444?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/3215047831807915444/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/como-en-c-se-ordena-el-codigo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3215047831807915444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3215047831807915444'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/como-en-c-se-ordena-el-codigo.html' title='Cómo en C# se ordena el código'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7722846224072686470</id><published>2010-04-15T08:40:00.000-07:00</published><updated>2010-04-15T09:12:36.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hilos (Thread)'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>Los hilos en C#, breve presentacion</title><content type='html'>&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 10"&gt;&lt;meta name="Originator" content="Microsoft Word 10"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5CIndi%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:applybreakingrules/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:SimSun; 	panose-1:2 1 6 0 3 1 1 1 1 1; 	mso-font-alt:宋体; 	mso-font-charset:134; 	mso-generic-font-family:auto; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:1 135135232 16 0 262144 0;} @font-face 	{font-family:"\@SimSun"; 	panose-1:2 1 6 0 3 1 1 1 1 1; 	mso-font-charset:134; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 680460288 22 0 262145 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:SimSun;} a:link, span.MsoHyperlink 	{color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{color:purple; 	text-decoration:underline; 	text-underline:single;} @page Section1 	{size:595.3pt 841.9pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabla normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman";} &lt;/style&gt; &lt;![endif]--&gt;&lt;br /&gt;Partiendo de que se cónoce qué es un hilo (thread), voy a comentar cómo se usan en este lenguaje.&lt;br /&gt;&lt;br /&gt;Lo primero: importar Threading, &lt;span style="color: rgb(102, 0, 0);"&gt;using System.Threading; &lt;/span&gt;&lt;br /&gt;Después, si ya se tiene hecha la función (procedimiento) que se quiere ejecutar en background, se hace esto: &lt;span style="color: rgb(102, 0, 0);"&gt;Thread hilo = new Thread(nmbre_procedimiento)&lt;/span&gt; Bien,  las funciones no pueden tener parámetros, o al menos, aún no he visto un ejemplo donde se ejecute un hilo cuya función los tenga.  Además los hilos no pueden trabajar con controles de diseño. Así que hay que ser pillo y quebrarse la cabeza con trucos.&lt;br /&gt;En tercer lugar se indica que se desarrollará es Background: &lt;span style="color: rgb(102, 0, 0);"&gt;hilo.isBackground=true;&lt;/span&gt;&lt;br /&gt;Cuarto, el hilo se pone en marcha con el metodo &lt;span style="color: rgb(102, 0, 0);"&gt;Start();&lt;/span&gt;&lt;br /&gt;Quinto, para provocar intervalos sin actividad: &lt;span style="color: rgb(102, 0, 0);"&gt;Hilo.Sleep(num_milisegundos);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y hasta aquí una resumida introducción.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7722846224072686470?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7722846224072686470/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/los-hilo-en-c-se-usan-asi.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7722846224072686470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7722846224072686470'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/los-hilo-en-c-se-usan-asi.html' title='Los hilos en C#, breve presentacion'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-6973205133958555642</id><published>2010-04-08T09:34:00.000-07:00</published><updated>2010-04-13T08:36:38.219-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><category scheme='http://www.blogger.com/atom/ns#' term='Formateo y reinstalación'/><title type='text'>Quireo mi pc limpio de polvo y paja</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4mOT_AEwNW0/SkvsmkxX-BI/AAAAAAAAAAM/TH9F_j5laRU/s320/Simulador_de_Formateo_XP.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 222px; height: 167px;" src="http://3.bp.blogspot.com/_4mOT_AEwNW0/SkvsmkxX-BI/AAAAAAAAAAM/TH9F_j5laRU/s320/Simulador_de_Formateo_XP.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Eso, y estar con mi Claudia, siempre, bien.&lt;br /&gt;&lt;br /&gt;Pasos para cepillarme el Windows XP de mi ordenador, para volver a reinstalarlo, pero habiendo formateado:&lt;br /&gt;&lt;br /&gt;1.  Entonces es facil, solo necesitas un disco de windows xp y los drivers para instalarlos despues de formatear y volver a instalar windows.&lt;br /&gt;&lt;br /&gt;2.  Metes el disco de windows xp nada mas encender el pc, y en la configuracion de la bios, el orden de booteo lo tienes que tener para que lea primero el cd y luego ya el discoduro miras que este eso bien, se reinicia y despues se mete directamente en el arranque del cd de windows.&lt;br /&gt;&lt;br /&gt;3.  Te cargan unas cuantas cosas  y te salen las particiones que tienes y cuanta capacidad tiene cada particion  y en el mismo sitio te dice como eliminar particiones, como crear nuevas y como instalar windows. Si no hay particiones, entonces solo te saldra una, con la capacidad total del disco duro...&lt;br /&gt;&lt;br /&gt;4.  Luego puedes hacer dos cosas, eliminarla y volver a crearla(eso se suele hacer si quieres mas de una particion) o directamente darle a intro y despues te salen las opciones de formateo...le das a ntfs normal(porque tambien te sale el rapido)  y ya solo se encarga de formatear e instalar windows  una vez que termina de instalar, que es lo que mas tarda.....ya cuando estes en el escritorio con el ordenador limpio de mierda, le metes los drivers de la placa base, tarjeta grafica, sonido, etc.... y ya esta.&lt;br /&gt;&lt;br /&gt;Estos pasos me los ha dado mi compañera de ASI Esther.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Anexo anexado a los dos días de haber catado "Eureka!" :&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.netstate.com/states/mottoes/images/ca_eureka.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 250px; height: 237px;" src="http://www.netstate.com/states/mottoes/images/ca_eureka.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;En caso de que surja un error en la detección de disco duro, particiones, al ir a instalar Windows XP de nuevas, &lt;/span&gt;&lt;span style="font-style: italic;"&gt;se debe hacer esto:&lt;br /&gt;1. Entrar en la BIOS (para poder acceder hay que pulsar "como loco" mientras el sistema arranca F2, en mi caso.&lt;br /&gt;2. Ya dentro, hay que desabilitar el &lt;a href="http://es.wikipedia.org/wiki/RAID"&gt;RAID &lt;/a&gt;pues seguramente el fallo se produjese porque en el CD de instalación no van incorporados los drivers para manejar discos &lt;a href="http://es.wikipedia.org/wiki/Disco_duro"&gt;SCSI&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;3. Reniciar y cruzar los dedos para que ahora si se pueda lograr el objetivo.&lt;br /&gt;&lt;br /&gt;Este consejo se lo debo a mi colega Miguel&lt;br /&gt;&lt;br /&gt;1 abrazo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-6973205133958555642?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/6973205133958555642/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/quireo-mi-pc-limpio-de-polvo-y-paja.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6973205133958555642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6973205133958555642'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/04/quireo-mi-pc-limpio-de-polvo-y-paja.html' title='Quireo mi pc limpio de polvo y paja'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_4mOT_AEwNW0/SkvsmkxX-BI/AAAAAAAAAAM/TH9F_j5laRU/s72-c/Simulador_de_Formateo_XP.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8751576180506483197</id><published>2010-03-29T07:23:00.000-07:00</published><updated>2010-03-29T10:04:49.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TDT'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><title type='text'>Cómo grabar TDT</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.planafabrega.com/img/tdt-logo.gif"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 199px; height: 232px;" src="http://www.planafabrega.com/img/tdt-logo.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Uno de mis mejores amigos de infancia fue mi video VHS pues la otra amiga era la televisión, porque gracias a ellos no perdí memorables episodios de mis series favoritas antes de que el Utorrent existiera, ni el historico Mallorca - Lazio del 1999. Asi que cuando hoy mi madre me dijo que el apagón analógico había llegado a San Pedre, cogí, etre en Mozilla y tecleé Google.es. Y tan pronto se dice  "Clint Eastwood es grande", encontré este &lt;a href="http://www.todoexpertos.com/categorias/ciencias-e-ingenieria/ingenieria-electronica/respuestas/1987429/grabar-tdt-en-video"&gt;enlace&lt;/a&gt;. Y lei que es sencillo poder grabar los canales del TDT en mi video VHS (y sin comprar un nuevo TDT). Sin embargo lo que el Experto comenta que, parece fácil aún no lo hice.&lt;br /&gt;&lt;br /&gt;El Experto dice que el Euroconector del TDT tiene que ser en el que pone TV. Intercalando el video entre el TDT y la tele.  Esa es la parte resumida, pues la parte detallada es esta: "el cable coaxial es para ver los analogicos y funcionan a si: de la toma  de la pared al (IN) del tdt y del  (OUT) del tdt al (IN del video) del  OUT del video al televisor, con esto todo canal que sea analogico o en  modo RF como el video se vera por la tele. si del tdt mediante euro  conector lo enchufas al video y encuentras el canal para grabar al mismo  tiempo deberas de localizar este canal en el televisor con lo que veras  el tdt en le tele, el problema es cuando graves que no podras ver otro  canal del tdt. " Y esto ya lo copio exactamente, así pues disculpe la ofensa, si la provoco.  Y gracias de antemano.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos-&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8751576180506483197?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8751576180506483197/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/como-grabar-tdt.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8751576180506483197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8751576180506483197'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/como-grabar-tdt.html' title='Cómo grabar TDT'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2036059312400499166</id><published>2010-03-22T09:13:00.000-07:00</published><updated>2010-03-23T08:29:22.079-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Máscaras de formato'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Máscara de formato para Emails</title><content type='html'>Tras mucho calentarnos la cabeza, descubrimos que la máscara de formato de un TextBox para la configuración de emails es así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;EDIT MASK:&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);" class="ecxinternallink"&gt;0-9.a-zA-Z&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;*\@&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);" class="ecxinternallink"&gt;0-9.a-zA-Z&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;*\.&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);" class="ecxunknownlink"&gt;a-zA-Z&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;+{2,}            &lt;/span&gt;&lt;br /&gt;MASK TYPE:&lt;span style="color: rgb(153, 0, 0);"&gt; RegEx&lt;/span&gt;&lt;br /&gt;AUTOCOMPLETE MODE:&lt;span style="color: rgb(153, 0, 0);"&gt; Optimistic&lt;/span&gt;&lt;br /&gt;IGNORES MASK BLANK:&lt;span style="color: rgb(153, 0, 0);"&gt; True&lt;/span&gt;&lt;br /&gt;SHOW PLACEHOLDERS:&lt;span style="color: rgb(153, 0, 0);"&gt; True&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7_ZQdva14nc/S6fEcPAf2VI/AAAAAAAAA_M/ZONCqVyeU1w/s1600-h/MASK+EDITOR.bmp"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 248px; height: 322px;" src="http://1.bp.blogspot.com/_7_ZQdva14nc/S6fEcPAf2VI/AAAAAAAAA_M/ZONCqVyeU1w/s320/MASK+EDITOR.bmp" alt="" id="BLOGGER_PHOTO_ID_5451541863299275090" border="0" /&gt;&lt;/a&gt;La imagen muesta el editos para máscaras y cómo debe de configurarse, no fuese a haber dudas, jejej.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Por si acaso, la máscara buena es la que hay en rojo, no la de la imagen, que se tomó antes de dar con la buena tras unas  depuraciones.&lt;br /&gt;&lt;br /&gt;Atentamente El autor&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2036059312400499166?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2036059312400499166/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/mascaras-de-formato-de-c.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2036059312400499166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2036059312400499166'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/mascaras-de-formato-de-c.html' title='Máscara de formato para Emails'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7_ZQdva14nc/S6fEcPAf2VI/AAAAAAAAA_M/ZONCqVyeU1w/s72-c/MASK+EDITOR.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-3778999516033956770</id><published>2010-03-20T02:48:00.000-07:00</published><updated>2010-03-20T02:58:32.804-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teclado'/><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Puertos USB'/><title type='text'>Cómo solucionar que los teclados USB funcionen desde que el ordenador se enciende</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www2.configurarequipos.com/imgdocumentos/Javetec/teclado_usb.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 189px; height: 115px;" src="http://www2.configurarequipos.com/imgdocumentos/Javetec/teclado_usb.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El mayor problema que plantean es que hay muchas placas que no  habilitan el teclado USB en el POST, por lo que no lo podemos utilizar  hasta que no estamos dentro de Windows. No obstante son muchas las  placas que si que pueden habilitar el teclado USB directamente en el  arranque, normalmente mediante una opción en el SETUP (que suele ser una  opción con un texto parecido a &lt;i&gt;Enable USB Keyboard&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;Esto lo encontré &lt;a href="http://www.configurarequipos.com/doc504.html"&gt;aquí&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-3778999516033956770?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/3778999516033956770/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/como-solucionar-que-los-teclados-usb.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3778999516033956770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3778999516033956770'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/como-solucionar-que-los-teclados-usb.html' title='Cómo solucionar que los teclados USB funcionen desde que el ordenador se enciende'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7252727905815421966</id><published>2010-03-14T08:59:00.000-07:00</published><updated>2010-03-14T09:04:01.423-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Obtener ruta'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>Cómo en C # obtener la ruta del proyecto</title><content type='html'>Así es la línea de código, que devuelve un string. Para hacer uso de esta linea deberemos importar la libreria IO, que pertenece a System:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;System.IO.Directory.GetCurrentDirectory(); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/S50IaV_Hp9I/AAAAAAAAA-M/kQb4omUgv9Y/s1600-h/Dibujo.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 64px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/S50IaV_Hp9I/AAAAAAAAA-M/kQb4omUgv9Y/s400/Dibujo.JPG" alt="" id="BLOGGER_PHOTO_ID_5448520372859676626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bye&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7252727905815421966?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7252727905815421966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/como-en-c-obtener-la-ruta-del-proyecto.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7252727905815421966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7252727905815421966'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/como-en-c-obtener-la-ruta-del-proyecto.html' title='Cómo en C # obtener la ruta del proyecto'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7_ZQdva14nc/S50IaV_Hp9I/AAAAAAAAA-M/kQb4omUgv9Y/s72-c/Dibujo.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2008070114123531221</id><published>2010-03-13T09:54:00.000-08:00</published><updated>2010-03-13T10:03:06.585-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Access'/><category scheme='http://www.blogger.com/atom/ns#' term='Base de datos'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>Conexión a una base de datos Access con C# mediante código</title><content type='html'>&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;El ejemplo lo extraje de &lt;span style="color: rgb(153, 0, 0);"&gt;&lt;a href="http://en.csharp-online.net/Working_with_Data%E2%80%94Connecting_to_Access_using_OLE_DB"&gt;aquí&lt;/a&gt;&lt;/span&gt;&lt;a href="http://en.csharp-online.net/Working_with_Data%E2%80%94Connecting_to_Access_using_OLE_DB"&gt;,&lt;/a&gt; y como reza el título&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;, conecta el programa a una base de datos Access del Office&lt;span style="color: rgb(153, 0, 0);"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="result_box" class="long_text"&gt;&lt;span style="background-color: rgb(255, 255, 255);" title="In this section, we will use the Northwind Trader database that installs (optionally) with Microsoft Access." onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor='#fff'"&gt;En este ejemplo, seutiliza la base de datos Neptuno que se instala Trader (opcionalmente) con Microsoft Access. &lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);" title="The program is a Console Application that simply loads a DataSet from the Customers table of the database." onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor='#fff'"&gt;El programa es una aplicación de consola que simplemente carga un conjunto de datos de la tabla Clientes de la base de datos. &lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);" title="Then, we loop through the records, printing the CustomerName field to the screen." onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor='#fff'"&gt;Luego, recorrer los registros, la impresión del campo CustomerName a la pantalla.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;using System;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;using System.Data;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;using System.Data.OleDb;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;namespace csbook.ch15 {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;   class Example15_2 {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      static void Main(string[] args) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         string conString =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;              @"Provider=Microsoft.JET.OLEDB.4.0;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            + @"data source=c:\data\Northwind.mdb";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         // create an open the connection          &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         OleDbConnection conn = new OleDbConnection(conString);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         conn.Open();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         // create the DataSet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         DataSet ds = new DataSet();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         // create the adapter and fill the DataSet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         OleDbDataAdapter adapter = &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            new OleDbDataAdapter("Select * from Customers", conn);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         adapter.Fill(ds);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         // close the connection&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         conn.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         DataTable dt = ds.Tables[0];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         foreach (DataRow dr in dt.Rows) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            Console.WriteLine(dr["CompanyName"].ToString());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Gracias a&lt;a href="http://en.csharp-online.net/"&gt; http://en.csharp-online.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2008070114123531221?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2008070114123531221/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/conexion-una-base-de-datos-access-con-c.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2008070114123531221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2008070114123531221'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/conexion-una-base-de-datos-access-con-c.html' title='Conexión a una base de datos Access con C# mediante código'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-5890243023947145438</id><published>2010-03-05T09:53:00.000-08:00</published><updated>2010-03-05T10:02:48.884-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Enlaces'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Particionar disco duro'/><title type='text'>Enlaces utiles para particionar Windows Vista</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://techtastico.com/files/2007/08/windows_vista_logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 152px; height: 111px;" src="http://techtastico.com/files/2007/08/windows_vista_logo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enlaces utiles para particionar Windows Vista y así, si todo sale chachy del Paraguay, disfrutar de Suse 11.2 en mi portatil, sin haberme cepillado el Windows Vista, del que sólo me gusta su programa para utiliuzar la Web cam que incorpora el propio pc. Ahí van:&lt;br /&gt;&lt;a href="http://www.configurarequipos.com/doc423.html"&gt;1.  Administrar particiones en Windows Vista.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.configurarequipos.com/tema2469520-34-0.html"&gt;2.Como realizar una Partición en Windows Vista (Solucionado)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hanzcocchi.net/crear-y-eliminar-particiones-en-windows-vista/"&gt;3.Crear y Eliminar Particiones en Windows Vista&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.elforoperuano.com/zona-tutoriales/2320-crear-particiones-windows-vista-ningun-programa.html"&gt;4.Crear particiones en windows vista sin USAR NINGUN PROGRAMA&lt;/a&gt;&lt;strong class="bigusername"&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Suerte&lt;br /&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h1&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-5890243023947145438?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/5890243023947145438/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/enlaces-utiles-para-particionar-windows.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5890243023947145438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5890243023947145438'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/enlaces-utiles-para-particionar-windows.html' title='Enlaces utiles para particionar Windows Vista'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-1479448414766346816</id><published>2010-03-03T12:05:00.000-08:00</published><updated>2010-03-03T12:08:31.656-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genius Driver'/><category scheme='http://www.blogger.com/atom/ns#' term='Gestor drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='Progamas Windows'/><title type='text'>Genius driver: genial gestor de drivers</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img45.xooimage.com/files/7/e/a/1250956145_driver...us_9_box-123c97f.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 300px; height: 367px;" src="http://img45.xooimage.com/files/7/e/a/1250956145_driver...us_9_box-123c97f.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span property="dc:content"&gt;&lt;br /&gt;&lt;br /&gt;Datos Técnicos&lt;br /&gt;Driver Genius Professional Edition v9.0.0.180 Retail Español&lt;br /&gt;Spanish | Medicina Incl. | 13.2 MB&lt;br /&gt;&lt;br /&gt;Descripción&lt;br /&gt;¡Mantén los drivers de tu sistema siempre actualizados!&lt;br /&gt;&lt;br /&gt;* Encuentra automáticamente los drivers necesarios para tu PC&lt;br /&gt;* Más de 30.000 drivers disponibles en la base de datos&lt;br /&gt;* Elimina los drivers no válidos y sin utilizar&lt;br /&gt;* Guarda tus drivers en un archivo ejecutable&lt;br /&gt;* Driver Genius Professional es “EL programa” de administración de  controladores y de diagnóstico de tu equipo.&lt;br /&gt;&lt;br /&gt;Si reinstalas regularmente tu sistema, sabes que puede ser difícil y  tardado encontrar los controladores adecuados para tu sistema. Gracias  Driver Genius, puedes guardar todos tus drivers en tu PC y restaurarlos  una vez que haz reinstalado el sistema. ¡Olvídate de perder tiempo en la  instalación y encontrando los controladores que necesitas!&lt;br /&gt;&lt;br /&gt;Con Driver Genius&lt;br /&gt;&lt;br /&gt;* Mantén actualizados tus drivers gracias a la función automática de  sincronización&lt;br /&gt;Base de datos con más de 30.000 drivers para todo tipo de material:  tarjeta de video, tarjeta de sonido, tarjeta de red, MODEM, ratón,  teclado, cámara de foto digital, tarjeta de adquisición video…&lt;br /&gt;* Guarda una copia de tus drivers creando un archivo ejecutable&lt;br /&gt;* Restáuralos automáticamente y en un abrir y cerrar de ojos&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ventajas&lt;br /&gt;Con Driver Genius puedes:&lt;br /&gt;&lt;br /&gt;* Crear una copia de seguridad. Puedes crear una copia de todos los  controladores instalados en tu sistema. Dicha copia estará comprimida en  un archivo ejecutable EXE&lt;br /&gt;* Reinstalar los controladores. Sólo tienes que hacer doble clic en  el archivo ejecutable&lt;br /&gt;* Actualizar tus controladores. A través de Internet para tener  siempre la última versión&lt;br /&gt;* Obtener más detalles sobre tu sistema. Procesador, memoria,  unidades de disco, etc.&lt;br /&gt;* Acceder a opciones ocultas de tu tarjeta gráfica NVIDIA, para ello  deberás disponer de una tarjeta con dicho chip&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Novedades en la versión 9&lt;br /&gt;&lt;br /&gt;* Nuevo Descarga tus drivers de forma más rápida y confiable&lt;br /&gt;* Driver Genius 9 detecta y se conecta automáticamente al servidor  de descargas más rápido.&lt;br /&gt;* Nuevo Detecta automáticamente el mejor servidor para incrementar  la velocidad de descarga&lt;br /&gt;* En el caso de una falla en la descarga, Driver Genius 9 cambia  directamente a otro servidor de descarga. Nuevo El asistente de  Instalación de Drivers te ayuda para que la instalación sea sencilla Ya  no es necesario buscar uno por uno todos los controladores que has  instalado en tu PC para reinstalarlos. Con el botón “instalar” extrae e  instala todos los controladores necesarios directamente desde Driver  Genius.&lt;br /&gt;* Nuevo El enlace ‘Ver detalles’ te da informacion sobre los drivers  que necesitan actualizarse&lt;br /&gt;* Actualizado La base de datos incluye miles de drivers nuevos para  los más modernos equipos&lt;br /&gt;* Mejorado Gracias a la interfaz maneja de forma conveniente y más  fácil tus drivers&lt;br /&gt;* FASTER Respaldo de tus drivers&lt;br /&gt;* Mejorado El Escaneo de Driver te permite actualizarlos más  rápidamente&lt;br /&gt;* Mejorado Soporta Windows Vista&lt;br /&gt;* Nuevo Soporta Windows 7 y Windows Server 2008 (incluye 64-bits de  soporte para los dos)&lt;br /&gt;&lt;br /&gt;Requerimientos del Sistema&lt;br /&gt;&lt;br /&gt;* Sistema Operativo: Windows 98, Windows Millenium, Windows 2000,  Windows Server 2003, Windows XP, Windows XP 64-bit, Windows Vista  32-bit, Windows Vista 64-bit, Windows 7.&lt;br /&gt;&lt;br /&gt;La información la he tomado de Tarriga.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-1479448414766346816?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/1479448414766346816/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/genius-driver-genial-gestor-de-drivers.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1479448414766346816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1479448414766346816'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/genius-driver-genial-gestor-de-drivers.html' title='Genius driver: genial gestor de drivers'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-3963270969690716158</id><published>2010-03-03T08:03:00.000-08:00</published><updated>2010-03-04T08:23:18.211-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Genius Driver'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Siete'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Opinion'/><title type='text'>Estoy del Windows Vista hasta .... los cojinetes</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.uc3m.es/portal/pls/portal/docs/9667845.JPG"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 122px; height: 122px;" src="http://www.uc3m.es/portal/pls/portal/docs/9667845.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Estoy de Windows Vista hasta ...... los cojinetes (de mi bici),.....Y no suelto tacos por educacion, no sea que el destino ponga a una tia buena a leer este blog, vaya y se enamore de mi y deje de estarlo cuando descubra que hablo mal. Y no me refiero a mi pronunciación, que ambién es regular, siendo optimitas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A lo que vamos, que me aburro del Vista de los cojintes:  de sus preguntas, porque aunque mi ex novia me llame muñeco, hace tiempo que superé la edad de aprender a leer,  entonces sé lo que hago; me canso ya de que la interface esté en inglés, porque aunque sea una de las lenguas de Sudáfrica (tierra de mi héroe Mandela), a mi se me da mejor el castellano, porque yo no pasé del aprobado en el bachiller, ni en la ESO, y ni siquiera en el cole asi que cuando me salta algun mensajito de más de tres palabras, me despisto. Además me tiene frito el Office 2007  y sus licencias, ya que aún dando la clave, que pilla bien, me machaca con errores. Creo que lo único molón de este pastel envuelto en producto guay es la web cam ya lista.  aprendí a usarla tarde, ya no tenía novia. Otra cosa que me fastidia, hay más, por ejemplo no poder guardar las fotografias donde me venga en gana, poque por narices tienen que ir a la carpeta Imagenes, es ... a ver si me acuerdo... es la edad.... -y esto también me lo dice mi ex-novia, que me quiere mucho-, es que mucho programas que en Windows XP van en Vista no lo hacen, por ejemplo JBuilder 5, por ello tuve que creearme una máquina virtual donde instalé el XP, -¡un follón!-. ¡Ajá1 Recordé: odio qu baste con pasar el pntero del ratón sobre una opción para que se ejecute y eso e detstable, mas para mi dada mi discapacidad, porque el SS.OO  entiende que quieres hacer cosas cuando no es verdad.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bitelia.com/files/2009/10/UbuntuLogo910RC.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 169px; height: 172px;" src="http://bitelia.com/files/2009/10/UbuntuLogo910RC.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Aquí un &lt;a href="http://www.spanishred.com/foro/archive/index.php/t-39955.html"&gt;enlace &lt;/a&gt;con soluciones (una de las ideas que le dan es qu reinstale el XP compartiendo PC con Ubuntu, es la distribución Linux más similar al hijo de Bill Gates) que plantean a una chica más  fastidiada que yo con su PC con programas preinstalados. Aún así no es tan fácil, de echo en informática qué es fácil. Ni apagar el ordenador a veces, ... jeje Así pues formatear e instalar XP no es pan comido,... ¿Porque así que me haya cepillado el Sistema Operativo incial e donde saco los drivers pues me vendieron el ordenador sin cd's? Si, si, existen las páginas oficiales, pero te puedes morir....Entonces es cuando recuerdo un consejo de mi amigo Omar Espinoza (Pythoniso): &lt;span style="font-style: italic;"&gt;en desarrollo todo tiene olución. Y no te asustes, en tio Google hay respuestas para todo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://alt1040.com/files/2009/06/windows-7-logo1-300x300.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 159px; height: 159px;" src="http://alt1040.com/files/2009/06/windows-7-logo1-300x300.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Sin embargo, me pasaré a Windows 7. Tomaré los drivers que me vinieron con el Vista, y los gestionaré con el &lt;a href="http://www.taringa.net/posts/downloads/4047659/Driver-Genius-2010-crackeado.html"&gt;Genius Driver&lt;/a&gt; haciendo una copia de respaldo para luego usarlos al instalar el 7. Pero antes de lanzarme a ello, voy a verificar que mi PC es compatible con Windows Seven, usando &lt;a href="http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=1b544e90-7659-4bd9-9e51-2497c146af15&amp;amp;displayLang=en"&gt;este programilla: Windows 7 Updrague avisor. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dessenme suerte.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-3963270969690716158?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/3963270969690716158/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/estoy-del-windows-vista-hasta-los.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3963270969690716158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3963270969690716158'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/03/estoy-del-windows-vista-hasta-los.html' title='Estoy del Windows Vista hasta .... los cojinetes'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8190557000601291774</id><published>2010-02-28T08:02:00.000-08:00</published><updated>2010-03-01T08:32:50.858-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Suse (distribuciones Linux)'/><category scheme='http://www.blogger.com/atom/ns#' term='Conectar a internet'/><title type='text'>Cómo configurar Suse 11.2 (en máquina virtual) para acceder a Internet (en máquina real)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7_ZQdva14nc/S4qXw8HjrUI/AAAAAAAAA88/3xpZChYmyBk/s1600-h/2djniuf.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_7_ZQdva14nc/S4qXw8HjrUI/AAAAAAAAA88/3xpZChYmyBk/s320/2djniuf.jpg" alt="" id="BLOGGER_PHOTO_ID_5443329966658006338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El título mismo dice que es lo que quiero hacer, así pues manitas a ello. En Internet encontré estas instrucciones, y como mejor no se pueden explicar (yo sólo he numerado los pasos), las tomo prestadas. El autor es Henry Miler, al que espero no ofender.&lt;br /&gt;1º Vamos a Yast.&lt;br /&gt;2º Dispositivos de red. Ajustes de la red.&lt;br /&gt;3º En opciones globales, la dejkas como IFUP, no como networkmanager, habilitado ipv6, luego en nombre del host a enviar como AUTO.  Después en las opciones que puedes editar, te recomiendo que dejes la red como hotplug, para que si se ce, se active automaticamente, del mismo modo, si el modem estuviese encendido se conectaría por si sólo.&lt;br /&gt;4º Tras configurar la red, marchas a la casilla ADSL y le pones añadir -&gt; conexión habilitada por no administrador. En los proveedores pones Speedy y tu nombre de usuario y contraseña. Luego, en la siguiente casilla tickeas: llamada bajo demanda, modificar DNS al conectar y reconexión automática. Puedes agregar los servidores de télefonica.&lt;br /&gt;5º Los servidores de Teléfonica son: 200.28.4.130 y 200.28.4.129, sin embargo creo que funcionan para Ámerica Latina y no en España. Todo es probar&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8190557000601291774?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8190557000601291774/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/02/como-configurar-suse-112-en-maquina.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8190557000601291774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8190557000601291774'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/02/como-configurar-suse-112-en-maquina.html' title='Cómo configurar Suse 11.2 (en máquina virtual) para acceder a Internet (en máquina real)'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7_ZQdva14nc/S4qXw8HjrUI/AAAAAAAAA88/3xpZChYmyBk/s72-c/2djniuf.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4370148320964406718</id><published>2010-02-12T13:18:00.000-08:00</published><updated>2010-09-08T01:38:40.809-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Propiedades'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Uso de propiedades'/><title type='text'>C#: Uso de propiedades.</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 10"&gt;&lt;meta name="Originator" content="Microsoft Word 10"&gt;&lt;link style="color: rgb(51, 51, 255);" rel="File-List" href="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman"; 	mso-ansi-language:EN-GB; 	mso-fareast-language:EN-US;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabla normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman";} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;El concepto de propiedad:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una propiedad es una mezcla entre concepto de campo y el concepto de método. Externamente se accede a ella comoo si de un campo normal se tratase, pero internamente es posible asociar código a ejecutar een cada asignación o lectura de su valor. Este código puede usarse para comprobar que no se asignen valores inválidos, para calcular su valor sólo al solicita su lectura, etc.&lt;br /&gt;&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 10"&gt;&lt;meta name="Originator" content="Microsoft Word 10"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman"; 	mso-ansi-language:EN-GB; 	mso-fareast-language:EN-US;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabla normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman";} &lt;/style&gt; &lt;![endif]--&gt;Una propiedad no almacena datos, sino sólo se utiliza como si los almacenase. En la práctica lo que se suele hacer escribir como código a ejecutar cuando se le asigne un valor, código que controle que ese valor sea correcto y que lo almacene en un campo privado si lo es; y como código a ejecutar cuando se lea su valor, código que devuelva el valor almacenado en ese campo público. Así se simula que se tiene un campo público sin los inconvenientes que estos presentan por no poderse controlar el acceso a ellos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 153);"&gt;Definición de propiedades&lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para definir una propiedad se usa la siguiente sintaxis:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7_ZQdva14nc/S3fri_RBKmI/AAAAAAAAA7s/9-sZjesaFYY/s1600-h/Sin+t%C3%ADtulo-2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 258px; height: 216px;" src="http://2.bp.blogspot.com/_7_ZQdva14nc/S3fri_RBKmI/AAAAAAAAA7s/9-sZjesaFYY/s400/Sin+t%C3%ADtulo-2.png" alt="" id="BLOGGER_PHOTO_ID_5438074061404056162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    &lt;tipopropiedad&gt; &lt;nombrepropiedad&gt;&lt;/nombrepropiedad&gt;&lt;/tipopropiedad&gt;&lt;/span&gt;&lt;br /&gt;Java no cuanta con esta utilidad, al menos que yo lo sepa, pero si C#, asi que hay que aprovvecharla. Pues abarata código.&lt;br /&gt;&lt;br /&gt;Ejemplo de propiedad:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;public string Servidor&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            set {  servidor = value; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            get { return servidor; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }  		 	   		  &lt;/span&gt;&lt;br /&gt;El ejemplo da nombre a un servidor (tipo string) con el método set, y con get lo retorna. Las propiedades tilizan por defecto el tipo String, enttonces si se usan variables de otro tipo, se deverá hacer un casting.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4370148320964406718?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4370148320964406718/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/02/segunda-semana-laboral-espablando.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4370148320964406718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4370148320964406718'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/02/segunda-semana-laboral-espablando.html' title='C#: Uso de propiedades.'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7_ZQdva14nc/S3fri_RBKmI/AAAAAAAAA7s/9-sZjesaFYY/s72-c/Sin+t%C3%ADtulo-2.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-5928317005115548374</id><published>2010-02-03T05:08:00.000-08:00</published><updated>2010-02-03T06:58:34.306-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Subir a FTP'/><category scheme='http://www.blogger.com/atom/ns#' term='MonoDeveloped'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>En C#: Subir un archivo a un sitio FTP</title><content type='html'>Mi primera tarea como programador, a sueldo, en Telesoft, fue buscar en internet cómo usando C#, desde Monodeveloped se puede hacer una copia de ficheros a un sitio FTP. Entonces vi que es así de fácil al mirar &lt;a href="http://eurecadigital.wordpress.com/2009/03/17/ftp-con-c-upload-subir-un-fichero/"&gt;Ftp con c# (Upload) Subir un Fichero&lt;/a&gt; del blog Eureka Digital.&lt;br /&gt;&lt;br /&gt;Este es el código:&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;private bool SubirArchivoAFTP(string server, string user, string pass, string origen, string rutadestino, string nombredestino)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(server + rutadestino + “/” + nombredestino);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        request.Method = WebRequestMethods.Ftp.UploadFile;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        request.Credentials = new NetworkCredential(user, pass);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        request.UsePassive = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        request.UseBinary = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        request.KeepAlive = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        FileStream stream = File.OpenRead(origen);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        byte[] buffer = new byte[stream.Length];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        stream.Read(buffer, 0, buffer.Length);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        stream.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        Stream reqStream = request.GetRequestStream();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        reqStream.Write(buffer, 0, buffer.Length);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        reqStream.Flush();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        reqStream.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        return true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    catch(Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        return false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="color: rgb(153, 0, 0);"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-5928317005115548374?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/5928317005115548374/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/02/en-c-subir-un-archivo-un-sitio-ftp.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5928317005115548374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5928317005115548374'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/02/en-c-subir-un-archivo-un-sitio-ftp.html' title='En C#: Subir un archivo a un sitio FTP'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-6978479405391311324</id><published>2010-01-30T11:30:00.000-08:00</published><updated>2010-02-14T03:35:49.510-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Buenos consejos'/><category scheme='http://www.blogger.com/atom/ns#' term='Algunas frases buenas'/><title type='text'>Algunas frases buenas I</title><content type='html'>&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;He aqí un puñado de conclusiones:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Un buen trabajo es aquel hecho por un hombre contento.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;2. Imprescindible anticiparse, y echar imaginación.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://media.daemonstv.com/wp-content/uploads/2009/09/ncis-5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 288px; height: 196px;" src="http://media.daemonstv.com/wp-content/uploads/2009/09/ncis-5.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-style: italic;"&gt;3. No dejar para mañana lo que puedas hacer hoy.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;4. Si apuestas ganas, si no lo haces no ganas.&lt;br /&gt;&lt;br /&gt;5. Nunca des por sentado lo que te diga nadie, ni siquiera el jefe. Comprueba, verifica, o llámalo X, pero no te tragues nada de lo que te digan. Ni siquiera si pusieron su mano sobre una Biblia mientras juraban ser fieles a la verdad. ¿Por qué? Porque en programación, como en cualquier trabajo, el tiempo es oro, y no se puede perder cumpliendo con la mentira o el fallo de otros.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.tvfanatic.com/images/gallery/leroy-jethro-gibbs-photo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 264px; height: 395px;" src="http://static.tvfanatic.com/images/gallery/leroy-jethro-gibbs-photo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;6. Lánzate a leer el mensaje de error con lógica.&lt;br /&gt;&lt;br /&gt;7. Los agobios son malos, pero dormirse en los lareles es peor.&lt;br /&gt;&lt;br /&gt;8. Complcáte la vida narrando una historia policiáca, pero programando  trabaja la simpleza, Siempre.&lt;br /&gt;&lt;br /&gt;9. Al trabajo se va a trabajar. Los amigos se ttratan en fin de semana o por Messenger.&lt;br /&gt;&lt;br /&gt;10. Piensa en la novia antes de entrar a trabajar, mientras almuerzas y al salir de la ofiicina. De echo, en cuanto te pones el abrigo ya puedes hacerlo.&lt;br /&gt;&lt;br /&gt;11. No hagas la contra al jefe, excepto si sabes que llevas razón tras verificar.&lt;br /&gt;&lt;br /&gt;12. Si tu superior critica tu trabajo, calla y aprende. O calla. O aprende. Pero mejor la prmera opción.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;13. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Ayer me di cuenta, todo gracias al toque de atención de mi jefe, de que en el puesto de trabajo uno debe de ir a lo práctico cuando escribe código y no a lo politicamente correcto.  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;14. &lt;/span&gt;&lt;span style="font-style: italic;"&gt;Al menos si programas en el centro de trabajo, es la de códificar escalonadamente, y esto significa: ante una tarea lo suficientemente grande como para ver caramente subtareas, tomar la idea, de dividir la gran tarea en conjunto de acciones más pequeños, para controlar mejor si se produce un errror. Entonces al corroborar que la subtarea se ejecuta con éxito, se pasará a codificar la siguiente.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;15. Al mal timpo, buena cara. Las solucins en desarrollo siempe llegan.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.hifi-writer.com/blog/graphics/mcgee.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 265px; height: 148px;" src="http://www.hifi-writer.com/blog/graphics/mcgee.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-6978479405391311324?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/6978479405391311324/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2010/01/algunas-frases-buenas-i.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6978479405391311324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6978479405391311324'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2010/01/algunas-frases-buenas-i.html' title='Algunas frases buenas I'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-1734259465956274517</id><published>2009-12-28T05:02:00.000-08:00</published><updated>2009-12-28T06:15:27.985-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Fecha y hora'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>En C#: Función que devuelve la fecha actual en formato DateTime</title><content type='html'>&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;La función que abajo uso sirve para inicializar con la fecha del momento un objeto DateTimePicker:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;private DateTime getFechaActual()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            int anio, dia, mes;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            DateTime dtFecha;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            anio=DateTime.Today.Year;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            mes=DateTime.Today.Month;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            dia=DateTime.Today.Day;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            dtFecha = new DateTime(anio, mes, dia);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            return dtFecha;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;No más dificil será para adjudicar la hora, los minutos y los segundos.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-1734259465956274517?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/1734259465956274517/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/en-c-funcion-que-devuelve-la-fecha.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1734259465956274517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/1734259465956274517'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/en-c-funcion-que-devuelve-la-fecha.html' title='En C#: Función que devuelve la fecha actual en formato DateTime'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8319694315751608567</id><published>2009-12-22T07:55:00.000-08:00</published><updated>2009-12-22T08:27:29.755-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='NotifyIcon'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><category scheme='http://www.blogger.com/atom/ns#' term='Bandeja de sistema'/><title type='text'>Minimizar una aplicación hecha en C# mostrando su icono en la bandeja de sistema</title><content type='html'>¿Alguna vez quisieron que su aplicación tuviera un acceso en la bandeja de sistema (system tray) , a la izquierda del reloj, si están en Windows? Pues bien, el código que escribo a continuación, si programan con C#, hará que al minimizar la ventana, apareczca un acceso en la anterioremente nombrada bandeja. Mas cuando restauren la ventana, desaparecerá.&lt;br /&gt;&lt;br /&gt;Para ello habrán de llevar al diseño del formulario la herramienta NotifyIcon. Cuando la tengan, podrán cambiarle la propiedad Icon cn un icono que exista en el disco duro. Entoncesese será el icono que aparezca en la bandeja del sistema.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Marcando el objeto notifyIcon1, en eventos, cliquen en DoubleClick, así meteran código en el evento. Este será el código:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        private void notifyIcon1_DoubleClick(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 //Hacemos visible el formulario&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      this.Show();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      this.WindowState = FormWindowState.Normal;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;       //Ocultamos el icono de la bandeja de sistema&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;       notifyIcon1.Visible = false;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con esto aún no tenemos resuelto el objetivo. Ahora se programará el evento Resize del formulario:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;     private void Form1_Resize(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        //Si el estado actual de la ventana es "minimizado"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;       if (this.WindowState == FormWindowState.Minimized)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;       {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         //Ocultamos el formulario&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             this.Visible = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          //Hacemos visible el icono de la bandeja del sistema&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;             notifyIcon1.Visible = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/SzDy84raedI/AAAAAAAAA4c/IAiFijhLbtk/s1600-h/Sin+t%C3%ADtulo-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 354px; height: 30px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/SzDy84raedI/AAAAAAAAA4c/IAiFijhLbtk/s400/Sin+t%C3%ADtulo-1.png" alt="" id="BLOGGER_PHOTO_ID_5418097479547255250" border="0" /&gt;&lt;/a&gt;Así quedará la aplicación cuando la ventana sea minimizada (el mapa de España es el icono).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esto lo hee sacado de la web &lt;a href="http://www.locualo.net/programacion/minimizar-bandeja-del-sistema-system-tray-net/00000090.aspx"&gt;http://www.locualo.net/programacion/minimizar-bandeja-del-sistema-system-tray-net/00000090.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8319694315751608567?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8319694315751608567/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/alguna-vez-quisieron-que-su-aplicacion.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8319694315751608567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8319694315751608567'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/alguna-vez-quisieron-que-su-aplicacion.html' title='Minimizar una aplicación hecha en C# mostrando su icono en la bandeja de sistema'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7_ZQdva14nc/SzDy84raedI/AAAAAAAAA4c/IAiFijhLbtk/s72-c/Sin+t%C3%ADtulo-1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-669888448107364296</id><published>2009-12-22T07:46:00.000-08:00</published><updated>2009-12-22T12:57:49.398-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Crear instaladores'/><title type='text'>Cómo hacer un instalador en Visual Studio 2008</title><content type='html'>Tras echar un ojo en Google y encontrar &lt;a href="http://facundoduran.wordpress.com/2008/02/29/como-hacer-un-instalador-en-visual-studio-2008"&gt;http://facundoduran.wordpress.com/2008/02/29/como-hacer-un-instalador-en-visual-studio-2008&lt;/a&gt;  sólo me tuve que poner a seguir los pasos que Facundo Duran dictaba y acabé dándome cuenta de la sencillez de la operación.&lt;br /&gt;&lt;br /&gt;Yo no seré tan explicatvo como él, mi paciencia es menor, o eso creo.&lt;br /&gt;&lt;br /&gt;Entonces diré, les explicaré la operación con el proyecto EnviarEmails, que hay que ir hasta Generar-&gt; Publicar EnviarEmails&lt;br /&gt;&lt;br /&gt;Entonces les saldrá este formulario  donde habrán de indicar la ubicación donde quieren que quede guardado el programa de instalación.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7_ZQdva14nc/SzEkCy4IDAI/AAAAAAAAA4s/z2t8sK15a3s/s1600-h/1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 250px;" src="http://3.bp.blogspot.com/_7_ZQdva14nc/SzEkCy4IDAI/AAAAAAAAA4s/z2t8sK15a3s/s320/1.png" alt="" id="BLOGGER_PHOTO_ID_5418151457138936834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;El segundo paso será indicar a partir de dónde descargar la aplicación. Normalmente usremos la última opción.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7_ZQdva14nc/SzElHqlYJfI/AAAAAAAAA40/2iYmRM7qzSA/s1600-h/2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 249px;" src="http://2.bp.blogspot.com/_7_ZQdva14nc/SzElHqlYJfI/AAAAAAAAA40/2iYmRM7qzSA/s320/2.png" alt="" id="BLOGGER_PHOTO_ID_5418152640323790322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;El tercer paso pregunta por dónde irá a buscar las actualizaciones. En mi caso pondré que de ningún sitio (última opción) porque no las habrá.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7_ZQdva14nc/SzElvDzfPBI/AAAAAAAAA48/m_mo0HB8sr0/s1600-h/3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 252px;" src="http://3.bp.blogspot.com/_7_ZQdva14nc/SzElvDzfPBI/AAAAAAAAA48/m_mo0HB8sr0/s320/3.png" alt="" id="BLOGGER_PHOTO_ID_5418153317108759570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Lueg ya se finaliza.&lt;br /&gt;&lt;br /&gt;Entonces habrá que ir hasta la carpeta donde se guardó el programa instalador y ejecutar Setup que ejecutará la aplicación que lleva por nombre el mismo nombre del proyecto. En este caso EnviarEmails.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para desinstalar la aplicación deben de ir a la opción Agregar o quitar programas de Panel de control.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/SzEyu0nN3CI/AAAAAAAAA5E/GaqTwLsyCqs/s1600-h/4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/SzEyu0nN3CI/AAAAAAAAA5E/GaqTwLsyCqs/s320/4.png" alt="" id="BLOGGER_PHOTO_ID_5418167606681918498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-669888448107364296?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/669888448107364296/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/como-hacer-un-instalador-en-visual.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/669888448107364296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/669888448107364296'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/como-hacer-un-instalador-en-visual.html' title='Cómo hacer un instalador en Visual Studio 2008'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7_ZQdva14nc/SzEkCy4IDAI/AAAAAAAAA4s/z2t8sK15a3s/s72-c/1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8473679095496785895</id><published>2009-12-22T07:33:00.000-08:00</published><updated>2009-12-22T12:51:54.507-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Basic 6'/><category scheme='http://www.blogger.com/atom/ns#' term='Inno Setup 5'/><category scheme='http://www.blogger.com/atom/ns#' term='Crear instaladores'/><title type='text'>Inno Setup 5: herramienta para crear instaladores para aplicaciones programadas con Visual Basic 6.0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://animatek.files.wordpress.com/2007/02/vb6.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 170px; height: 149px;" src="http://animatek.files.wordpress.com/2007/02/vb6.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;¿Alguna vez han querido hacer, a partir de un ejecutable de un programa desarrollado en Visual Basic 6, un instalador que les permita instalar esa aplicación en cualquier ordenador, Windows, por supuesto? Yo si, pero no fue hasta hace unos días cuando me lancé a ello, entonces en Internet localicé a alguien que recomendaba &lt;a href="http://inno-setup.softonic.com/"&gt;Inno Setup 5&lt;/a&gt;. Y la verdad es genial. Su uso es sencillo y en un momento, y leyendo bien las opciones, porque aparece en inglés, puee generar un instalador de tus aplicaciones. Incluye selector de idiomas, la posibilidad de lanzar la aplicación tras instalarlo, la posibilidad de crear un acceso directo, de dar un icono al archivo (para que no sea el habitual de un pc y un disco al lado), de generar una aplicación de desinstalación... Y todo paso a paso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8473679095496785895?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8473679095496785895/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/inno-setup-5-herramienta-para-crear.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8473679095496785895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8473679095496785895'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/inno-setup-5-herramienta-para-crear.html' title='Inno Setup 5: herramienta para crear instaladores para aplicaciones programadas con Visual Basic 6.0'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-870173863250750261</id><published>2009-12-17T00:47:00.000-08:00</published><updated>2009-12-17T01:03:21.850-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Filtrar'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>Filtrando con Filechooserwidget</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; color: rgb(153, 0, 0);"&gt;&lt;/p&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 10"&gt;&lt;meta name="Originator" content="Microsoft Word 10"&gt;&lt;div style="text-align: left;"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:Calibri; 	mso-font-alt:"Century Gothic"; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:Calibri; 	mso-fareast-font-family:Calibri; 	mso-bidi-font-family:"Times New Roman"; 	mso-fareast-language:EN-US;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabla normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman";} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  public void CrearFiltros()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Gtk.FileFilter filtro2 = new Gtk.FileFilter();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;filtro2.Name="Imagenes DICOM";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;//filtro2.AddMimeType("image/dicom");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;filtro2.AddPattern("*.DCM");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;filechooserwidget2.AddFilter(filtro2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Gtk.FileFilter filtro1= new Gtk.FileFilter();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;filtro1.Name="Todos los ficheros";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;filtro1.AddPattern("*");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;filechooserwidget2.AddFilter(filtro1);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Lo que este código hace es un filtro del objeto filechooserwidget2 de la clase Filechooserwidget. Este objeto tiene el siguiente aspecto:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/Synx8rnGjHI/AAAAAAAAA38/NrO1MIjYy_c/s1600-h/Sin+t%C3%ADtulo-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/Synx8rnGjHI/AAAAAAAAA38/NrO1MIjYy_c/s320/Sin+t%C3%ADtulo-1.png" alt="" id="BLOGGER_PHOTO_ID_5416126051690908786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Entonces con las lineas de arriba lo que hago es una filtración, para no poder seleccionar los archivos que no cumplan con el filtro indicado en esos momentos.&lt;br /&gt;&lt;br /&gt;Nota: los archivos que no tengan extensión explicita sólo serán vistos desde la opción *.*, que permite la selección sin filtración.&lt;br /&gt;&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 10"&gt;&lt;meta name="Originator" content="Microsoft Word 10"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_editdata.mso"&gt;&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Arial Black"; 	panose-1:2 11 10 4 2 1 2 2 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:647 0 0 0 159 0;} @font-face 	{font-family:Calibri; 	mso-font-alt:"Century Gothic"; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:Calibri; 	mso-fareast-font-family:Calibri; 	mso-bidi-font-family:"Times New Roman"; 	mso-fareast-language:EN-US;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabla normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman";} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:28pt;"  &gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:f&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/o:lock&gt;&lt;v:shape id="_x0032__x0020_Imagen" spid="_x0000_i1025" type="#_x0000_t75" alt="imagen.jpg" style="width: 420pt; height: 292.5pt; visibility: visible;"&gt;  &lt;v:imagedata src="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.jpg" title="imagen"&gt; &lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/v:path&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;/v:stroke&gt;&lt;/v:shapetype&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 10"&gt;&lt;meta name="Originator" content="Microsoft Word 10"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_editdata.mso"&gt;&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;   &lt;/w:Compatibility&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Arial Black"; 	panose-1:2 11 10 4 2 1 2 2 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:647 0 0 0 159 0;} @font-face 	{font-family:Calibri; 	mso-font-alt:"Century Gothic"; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:Calibri; 	mso-fareast-font-family:Calibri; 	mso-bidi-font-family:"Times New Roman"; 	mso-fareast-language:EN-US;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabla normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman";} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:28pt;"  &gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;&lt;o:lock ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;v:shape id="_x0032__x0020_Imagen" spid="_x0000_i1025" type="#_x0000_t75" alt="imagen.jpg" style="width: 420pt; height: 292.5pt; visibility: visible;"&gt;&lt;v:imagedata src="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.jpg" title="imagen"&gt;&lt;/v:imagedata&gt;&lt;/v:shape&gt;&lt;/v:path&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;/v:stroke&gt;&lt;/v:shapetype&gt;&lt;/span&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; color: rgb(153, 0, 0);"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-870173863250750261?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/870173863250750261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/filtrando-con-filechooserwidget.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/870173863250750261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/870173863250750261'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/filtrando-con-filechooserwidget.html' title='Filtrando con Filechooserwidget'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7_ZQdva14nc/Synx8rnGjHI/AAAAAAAAA38/NrO1MIjYy_c/s72-c/Sin+t%C3%ADtulo-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-6120171049127629326</id><published>2009-12-05T08:29:00.000-08:00</published><updated>2009-12-07T02:56:21.356-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Buenos consejos'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='ArrayList'/><title type='text'>Usar los ArrayList descartando los arrays básicos</title><content type='html'>Sencillamente expondré unas claves que harán caer en picado la popularidad de los Arrays, de toda la vida, por su evolucionado sucersor: El ArrayList.&lt;br /&gt;&lt;br /&gt;Para hacer uso de los ArayList, en Java se debe escribir la línea import Java.Utils.ArrayList; que importará la clase ArrayList de la que se declará un objeto que luego se instanciara. Y en C# habrá que importar la clase Collections que existe dentro de System usando la palabra clave using. Luego, igual que en Java, se declará un objeto y se instanciará.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&lt;br /&gt;¿Pero cuáles son las ventajas de un objeto ArrayList sobre una variable array de cualquier tipo?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un ArrayList colecciona objetos, un array colecciona dtos de un mismo tipo, que además es básico.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Su tamaño. Es decir, cuando declaras un array debes indicar su tamaño al instanciarlo. Y si quieres incuir más valores para los que en origen se creó, deberás redimensionarlo, pero al hacer esto los valores introducidos con anterioridad sepierden. Esto no sucede con los ArrayList porque uno de sus constructores, los construye con tamaño indeterminado, por lo que no hay límite. &lt;/li&gt;&lt;li&gt;El catálogo de métodos que tiene un objeto de ArrayList,  de los que obviamente carece un array, que si se necesitan deberán programarse. Por ejemplo, a los arrays le faltan la funcionalidad de ordenar descendente y ascendentemente, de eliminar un item según un valor coleccionado, de limpiar su contenido a traves de una función, sin tener que realizar un bucle. Para saber si un array cuenta con un dato tendrás que recorrerlo entero. Sin embargo un ArrayList te devuelve el objeto que en la colección tiene ese valor.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Estas y algunas más son las razones por las que utilizar objetos ArrayList en lugar  de arrays de tipo básico que, se me han aparecido durante este fin de semana en el que me reencontré con esta herramienta que, conocí en mi aprendizaje de Java.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-6120171049127629326?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/6120171049127629326/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/aleluya-existen-los-arraylist-en-c.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6120171049127629326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6120171049127629326'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/12/aleluya-existen-los-arraylist-en-c.html' title='Usar los ArrayList descartando los arrays básicos'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8101635932900823174</id><published>2009-11-27T09:09:00.000-08:00</published><updated>2009-11-27T09:36:38.702-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productos Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Wave'/><category scheme='http://www.blogger.com/atom/ns#' term='Noticias'/><title type='text'>Google Wave</title><content type='html'>Esta tarde me ha llegado la invitación de mi amigo Omar para el acceso al maravilloso mundo de &lt;a href="http://wave.google.com/help/wave/closed.html"&gt;Google Wave&lt;/a&gt;. De este mundo se puede saber más en &lt;a href="http://www.maestrosdelweb.com/actualidad/google-wave/"&gt;este link&lt;/a&gt;. Pero aquí os dejo una imagen por aquello de que vaklen más que mil palabras.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7_ZQdva14nc/SxAKCvFZi9I/AAAAAAAAA3k/chc7vOqEFkU/s1600/google-wave.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 208px;" src="http://2.bp.blogspot.com/_7_ZQdva14nc/SxAKCvFZi9I/AAAAAAAAA3k/chc7vOqEFkU/s320/google-wave.jpg" alt="" id="BLOGGER_PHOTO_ID_5408834194587093970" border="0" /&gt;&lt;/a&gt;Pero, no seré vago, y les comentaré por encima que, este nuevo producto se presenta como el fúturo para las nuevas tecnologías en el mundo de la comunicación. Es la unión de todos los prioductos Google: imagine Maps, Email, Blogger, Chat, y todo en tiempo real.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;De Wave gusta:&lt;/span&gt;&lt;br /&gt;Con la demostración se puede pensar en una alternativa al email, una opción diferente de comunicación que integra muchas de las herramientas que utilizamos en la actualidad de forma dispersa, como los mapas, vídeos, contactos, imágenes, chats, compartir documentos en una misma herramienta.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Apartado técnico:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Han lanzado el &lt;a href="http://www.waveprotocol.org/" title="Introduction ‎(Google Wave Federation Protocol)‎"&gt;Protocolo Wave&lt;/a&gt; que hasta cierto punto propone lo que hace el SMTP y permite que sea distribuido e interoperable entre diferentes proveedores. El protocolo es abierto y se puede colaborar con su desarrollo. Revisen los &lt;a href="http://www.waveprotocol.org/wave-community-principles" title="Community Principles ‎(Google Wave Federation Protocol)‎"&gt;principios de la comunidad&lt;/a&gt;, el &lt;a href="http://www.waveprotocol.org/draft-protocol-spec" title="Draft Protocol Spec ‎(Google Wave Federation Protocol)‎"&gt;draft del protocolo&lt;/a&gt; y más &lt;a href="http://www.waveprotocol.org/whitepapers" title="Whitepapers ‎(Google Wave Federation Protocol)‎"&gt;documentación de la arquitectura&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;La plataforma busca empujar la masificación de HTML 5 como estándar&lt;/li&gt;&lt;li&gt;Un “wave” es una conversación, un documento, donde una o varias personas pueden comunicarse y trabajar compartiendo cualquier tipo de contenido y servicio de Google, así como de terceros (vimos integración de twitter por ejemplo)&lt;/li&gt;&lt;li&gt;Toda la plataforma es extendible por extensiones y robots que pueden ayudarte a automatizar tareas y procesos&lt;/li&gt;&lt;li&gt;El codename del proyecto es Walkabout y nace de Where 2 Tech, fundado por Jen y Lars Rasmussen y que fue adquirido por Google. Este producto les ayudó al desarrollo de Google Maps. También es interesante enterarnos que todo este proyecto nace de las oficinas de Google Australia&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8101635932900823174?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8101635932900823174/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/esta-tarde-me-ha-llegado-la-invitacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8101635932900823174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8101635932900823174'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/esta-tarde-me-ha-llegado-la-invitacion.html' title='Google Wave'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7_ZQdva14nc/SxAKCvFZi9I/AAAAAAAAA3k/chc7vOqEFkU/s72-c/google-wave.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2123926988751483715</id><published>2009-11-24T08:17:00.000-08:00</published><updated>2009-11-24T08:38:45.827-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='MonoDeveloped'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Los ficheros con extensión .csproj</title><content type='html'>Los ficheros cuya extensión es .csprioj guardan con formato XML las referencias a ficheros externos, así como la estructura del proyecto.&lt;br /&gt;&lt;br /&gt;Entonces no bastará para suprimir un fichero del proyecto abierto, ir hasta el apartado Files y suprimirlo con la opción Delete File del propio apartado. Porque para completar la acción de borrado, y que al compilar no salten errores, con el discurso &lt;span style="font-style: italic;"&gt;"no se encuentra el archivo blablabla.bla",  &lt;/span&gt; habrá que ir hasta el fichero con extensión csproj y suprimir la línea que a él se refiere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2123926988751483715?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2123926988751483715/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/los-ficheros-con-extension-csproj.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2123926988751483715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2123926988751483715'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/los-ficheros-con-extension-csproj.html' title='Los ficheros con extensión .csproj'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-6064778271234680200</id><published>2009-11-22T12:29:00.000-08:00</published><updated>2009-11-26T12:00:06.435-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Maquina Virtual'/><title type='text'>¿Cómo acceder a Internet mediante VMWare y Linux?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://elproyectomatriz.files.wordpress.com/2009/04/internet6.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 185px; height: 138px;" src="http://elproyectomatriz.files.wordpress.com/2009/04/internet6.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tengo por sistema operativo Windows XP con internet mediante ADSL por router, y en él una máquina virtual Suse, pues bien, quiero configuurar los respectivos pc's para disponer de Internet en la máquina virtual.&lt;br /&gt;&lt;br /&gt;Entonces, en el momento de instalación, usando VMWare, escojo la opción NAT.  Esto también es válido en modo edición.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si existiera problema, o sea, desde el real al virtual no se puede estableecer comunicación haciendo ping [ip], entonces averiguo si mi módem tiene más de 2 salidas para Internet. Esto lo hago así:&lt;br /&gt;&lt;br /&gt;Con la máquina virtual, entro en la cuenta del usuario root, tecleo el password y abro una terminal. Entonces escribo ifconfig y pulso Enter.&lt;br /&gt;&lt;br /&gt;Me aparecerán las tarjetas de red.&lt;br /&gt;&lt;br /&gt;En mi caso cuando vi que no existia eth0, verifiqué que mi modem sólo tiene una salida, pues sino me hubiese dado la 0 en vez de la 1, cuyo estado era UP, y sin embargo no podía acceder a Internet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-6064778271234680200?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/6064778271234680200/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/usando-suse-como-acceder-internet.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6064778271234680200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6064778271234680200'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/usando-suse-como-acceder-internet.html' title='¿Cómo acceder a Internet mediante VMWare y Linux?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-3350581269546516028</id><published>2009-11-22T07:53:00.000-08:00</published><updated>2009-11-22T08:05:07.597-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='Suse (distribuciones Linux)'/><title type='text'>Usando Suse: ¿cómo modificar el idioma del teclado?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://hepunx.rl.ac.uk/%7Ecandreop/generators/GENIE/images/logos/suse.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 117px; height: 107px;" src="http://hepunx.rl.ac.uk/%7Ecandreop/generators/GENIE/images/logos/suse.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para modificar el teclado de Suse por defecto en inglés americano, hay que ir hasta YaST, teclear el password necesario (mono en mi caso),  ir a Keyboard Layout y elegir el layout correspondiente (Spain para mi). Para asegurarnos de que tenemos la configuración correcta, antes de pulsar OK, testeamos en la caja de texto. Luego damos a OK y respondemos Save a la primera pregunta y OK a la segunda y última. Si aún asi el teclado sigue sin ser español, volvemos a Keyboard Layout y en Additional Layouts marcamos Spain tras buscarlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-3350581269546516028?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/3350581269546516028/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/usando-suse-como-modificar-el-idioma.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3350581269546516028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3350581269546516028'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/usando-suse-como-modificar-el-idioma.html' title='Usando Suse: ¿cómo modificar el idioma del teclado?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2760652237889964224</id><published>2009-11-17T01:05:00.000-08:00</published><updated>2009-11-17T14:08:24.719-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MonoDeveloped'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Usando Monodeveloped: agregar referencias a un proyecto.</title><content type='html'>Para agregar referencias en Monodeveloped no hay que complicarse tanto la vida como dicen por ahí. De echo basta con ir al panel Solution/References/Nombre del proyecto/Refereces. De ahí se escoge la opción Edit References. Entonces solo te bastará con marcar la que te valga. Y pulsar OK. Tras ello, ya en la vista codigo del formulario con el que trabajas, tecleas: Using ubicación.nombre; Y lista para usar, pero ¡OJO! no todo será igual a C# en el IDE Visual Studio .NET. Si a caso, ya contaré ciertas diferencias que, me han vuelto loco en un grado más.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2760652237889964224?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2760652237889964224/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/para-agregar-referencias-en.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2760652237889964224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2760652237889964224'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/para-agregar-referencias-en.html' title='Usando Monodeveloped: agregar referencias a un proyecto.'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-115232226889962148</id><published>2009-11-15T09:40:00.000-08:00</published><updated>2009-11-22T09:33:26.122-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Multiplataforma'/><category scheme='http://www.blogger.com/atom/ns#' term='Lenguajes programación'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Proyecto Mono</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_TnXIWwCD8Ow/Rn7CkDdgriI/AAAAAAAAAC0/ANFjwy1iLcg/s400/mono.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 214px; height: 151px;" src="http://1.bp.blogspot.com/_TnXIWwCD8Ow/Rn7CkDdgriI/AAAAAAAAAC0/ANFjwy1iLcg/s400/mono.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 10"&gt;&lt;meta name="Originator" content="Microsoft Word 10"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CAna%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_editdata.mso"&gt;&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink 	{color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{color:purple; 	text-decoration:underline; 	text-underline:single;} p 	{mso-margin-top-alt:auto; 	margin-right:0cm; 	mso-margin-bottom-alt:auto; 	margin-left:0cm; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:595.3pt 841.9pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:221717374; 	mso-list-template-ids:-1828572720;} @list l0:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:36.0pt; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	mso-ansi-font-size:10.0pt; 	font-family:Symbol;} @list l1 	{mso-list-id:555550720; 	mso-list-template-ids:1050281916;} @list l1:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:36.0pt; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	mso-ansi-font-size:10.0pt; 	font-family:Symbol;} @list l2 	{mso-list-id:583730419; 	mso-list-template-ids:1049028938;} @list l2:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:36.0pt; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	mso-ansi-font-size:10.0pt; 	font-family:Symbol;} @list l3 	{mso-list-id:2041779866; 	mso-list-template-ids:-1502473258;} @list l3:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:36.0pt; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	mso-ansi-font-size:10.0pt; 	font-family:Symbol;} ol 	{margin-bottom:0cm;} ul 	{margin-bottom:0cm;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabla normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman";} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Mono&lt;/b&gt; es el nombre de un proyecto de &lt;a href="http://es.wikipedia.org/wiki/C%C3%B3digo_abierto" title="Código abierto"&gt;código abierto&lt;/a&gt; iniciado por &lt;a href="http://es.wikipedia.org/wiki/Ximian" title="Ximian"&gt;Ximian&lt;/a&gt; y actualmente impulsado por &lt;a href="http://es.wikipedia.org/wiki/Novell" title="Novell"&gt;Novell&lt;/a&gt; (tras la adquisición de Ximian) para crear un grupo de herramientas libres, basadas en &lt;a href="http://es.wikipedia.org/wiki/GNU/Linux" title="GNU/Linux"&gt;GNU/Linux&lt;/a&gt; y compatibles con &lt;a href="http://es.wikipedia.org/wiki/.NET_de_Microsoft" title=".NET de Microsoft"&gt;.NET&lt;/a&gt; según lo especificado por el &lt;a href="http://es.wikipedia.org/wiki/ECMA" title="ECMA"&gt;ECMA&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Mono posee importantes componentes útiles para desarrollar &lt;a href="http://es.wikipedia.org/wiki/Software" title="Software"&gt;software&lt;/a&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;Una &lt;a href="http://es.wikipedia.org/wiki/M%C3%A1quina_virtual" title="Máquina virtual"&gt;máquina virtual&lt;/a&gt; de infraestructura de lenguaje      común (CLI) que contiene un cargador de clases, un &lt;a href="http://es.wikipedia.org/wiki/Compilador_en_tiempo_de_ejecuci%C3%B3n" title="Compilador en tiempo de ejecución"&gt;compilador en tiempo de      ejecución&lt;/a&gt; (JIT), y unas rutinas de recolección de memoria.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Una biblioteca de clases      que puede funcionar en cualquier lenguaje que funcione en el CLR (Common      Language Runtime).&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Un &lt;a href="http://es.wikipedia.org/wiki/Compilador" title="Compilador"&gt;compilador&lt;/a&gt;      para el lenguaje &lt;a href="http://es.wikipedia.org/wiki/C_Sharp" title="C Sharp"&gt;C#&lt;/a&gt;, MonoBasic (la versión para mono de &lt;a href="http://es.wikipedia.org/wiki/Visual_Basic" title="Visual Basic"&gt;Visual      Basic&lt;/a&gt;), &lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java" title="Lenguaje de programación Java"&gt;Java&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/Python" title="Python"&gt;Python&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;El CLR y el Sistema de      tipos común (CTS) permite que la aplicación y las bibliotecas sean      escritas en una amplia variedad de lenguajes diferentes que compilen para &lt;a href="http://es.wikipedia.org/wiki/Byte_code" title="Byte code"&gt;byte code&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Esto significa que si, por      ejemplo, se define una clase que realice una manipulación algebraica en &lt;a href="http://es.wikipedia.org/wiki/C_Sharp" title="C Sharp"&gt;C#&lt;/a&gt;, ésta      pueda ser reutilizada en cualquier lenguaje compatible con CLI. Puede      crear una clase en &lt;a href="http://es.wikipedia.org/wiki/C_Sharp" title="C Sharp"&gt;C#&lt;/a&gt;, una subclase en &lt;a href="http://es.wikipedia.org/wiki/Cplusplus" title="Cplusplus"&gt;C++&lt;/a&gt; e      instanciar esa clase en un programa en &lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Eiffel" title="Lenguaje de programación Eiffel"&gt;Eiffel&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Un sistema de objetos      único, sistema de hilos, bibliotecas de clases y sistema recolector de      memoria pueden ser compartidos por todos estos lenguajes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Es un proyecto      independiente de la plataforma. Actualmente Mono funciona en &lt;a href="http://es.wikipedia.org/wiki/GNU/Linux" title="GNU/Linux"&gt;GNU/Linux&lt;/a&gt;,      &lt;a href="http://es.wikipedia.org/wiki/FreeBSD" title="FreeBSD"&gt;FreeBSD&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/UNIX" title="UNIX"&gt;UNIX&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/Mac_OS_X" title="Mac OS X"&gt;Mac OS X&lt;/a&gt;,      &lt;a href="http://es.wikipedia.org/wiki/Solaris_%28sistema_operativo%29" title="Solaris (sistema operativo)"&gt;Solaris&lt;/a&gt; y plataformas &lt;a href="http://es.wikipedia.org/wiki/Windows" title="Windows"&gt;Windows&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Existe un proyecto similar, llamado &lt;a href="http://es.wikipedia.org/wiki/Portable.NET" title="Portable.NET"&gt;Portable.NET&lt;/a&gt;, es parte del proyecto &lt;a href="http://es.wikipedia.org/wiki/DotGNU" title="DotGNU"&gt;dotGNU&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;Historia:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Tan pronto como &lt;a href="http://es.wikipedia.org/wiki/Microsoft" title="Microsoft"&gt;Microsoft&lt;/a&gt; publicó los documentos que especifican la arquitectura &lt;a href="http://es.wikipedia.org/wiki/.NET" title=".NET"&gt;.NET&lt;/a&gt; en diciembre de 2000, &lt;a href="http://es.wikipedia.org/wiki/Miguel_de_Icaza" title="Miguel de Icaza"&gt;Miguel de Icaza&lt;/a&gt; (cofundador de la empresa Ximian y de la &lt;a href="http://es.wikipedia.org/w/index.php?title=GNOME_Foundation&amp;amp;action=edit&amp;amp;redlink=1" title="GNOME Foundation (aún no redactado)"&gt;GNOME Foundation&lt;/a&gt;) comenzó a interesarse en ellos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.wikipedia.org/wiki/GNOME" title="GNOME"&gt;GNOME&lt;/a&gt; siempre había luchado por proporcionar facilidades al programador, y una de las características más conocidas es que existen multitud de &lt;i&gt;&lt;a href="http://es.wikipedia.org/wiki/Binding" title="Binding"&gt;bindings&lt;/a&gt;&lt;/i&gt; para poder utilizar cualquier &lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n" title="Lenguaje de programación"&gt;lenguaje de programación&lt;/a&gt; para desarrollar aplicaciones. Pero la elaboración de dichos &lt;i&gt;bindings&lt;/i&gt; era tremendamente laboriosa y cada vez que se realizaba un cambio en la interfaz original, era necesario cambiar todos y cada uno de los bindings.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Para intentar mejorar y facilitar la reutilización de código se realizó una implementación de componentes, llamada &lt;a href="http://es.wikipedia.org/wiki/Bonobo" title="Bonobo"&gt;Bonobo&lt;/a&gt;, utilizando &lt;a href="http://es.wikipedia.org/wiki/CORBA" title="CORBA"&gt;CORBA&lt;/a&gt;. Pero tampoco ha tenido éxito, ya que era necesario que todo el software utilizase esa característica y eso no fue así. Por tanto, con &lt;a href="http://es.wikipedia.org/wiki/.NET" title=".NET"&gt;.NET&lt;/a&gt; se abre una nueva puerta para conseguir hacer de &lt;a href="http://es.wikipedia.org/wiki/GNOME" title="GNOME"&gt;GNOME&lt;/a&gt; en un futuro un escritorio mejor y más atractivo tanto para usuarios como para programadores. Con esta tecnología por fin se consigue lo que el proyecto &lt;a href="http://es.wikipedia.org/wiki/GNOME" title="GNOME"&gt;GNOME&lt;/a&gt; siempre había buscado, independencia del lenguaje para programar en dicho escritorio.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.wikipedia.org/wiki/Miguel_de_Icaza" title="Miguel de Icaza"&gt;Miguel de Icaza&lt;/a&gt;, después de analizar el &lt;a href="http://es.wikipedia.org/wiki/Int%C3%A9rprete_%28inform%C3%A1tica%29" title="Intérprete (informática)"&gt;intérprete&lt;/a&gt; del &lt;i&gt;byte code&lt;/i&gt;, advierte que no existen especificaciones. En febrero de 2001 comienza a indagar por dicha información en las listas de correo de &lt;a href="http://es.wikipedia.org/wiki/.NET" title=".NET"&gt;.NET&lt;/a&gt; y al mismo tiempo comienza a trabajar en un &lt;a href="http://es.wikipedia.org/wiki/Compilador" title="Compilador"&gt;compilador&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/C_Sharp" title="C Sharp"&gt;C#&lt;/a&gt; en cooperación con Rhys Weatherley y Jay Freeman, el mismo fue programado en &lt;a href="http://es.wikipedia.org/wiki/C_Sharp" title="C Sharp"&gt;C#&lt;/a&gt; como un ejercicio para demostrar su potencia.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;En abril de 2001, la &lt;a href="http://es.wikipedia.org/wiki/ECMA" title="ECMA"&gt;ECMA&lt;/a&gt; publica el formato de archivos faltante y en &lt;a href="http://es.wikipedia.org/wiki/GUADEC" title="GUADEC"&gt;GUADEC&lt;/a&gt; (6 al 8 de abril de 2001) Icaza demuestra las habilidades de su compilador. Después de un minucioso análisis, donde claramente se concluye que es posible construir esa tecnología, &lt;a href="http://es.wikipedia.org/wiki/Ximian" title="Ximian"&gt;Ximian&lt;/a&gt; reasigna recursos humanos de otros proyectos y crea el equipo Mono. Aspirando a tener una herramienta que fuese un sustituto completo de la tecnología &lt;a href="http://es.wikipedia.org/wiki/.NET" title=".NET"&gt;.NET&lt;/a&gt;, formaron &lt;b&gt;The Mono Open Source Project&lt;/b&gt;, el cual fue anunciado en julio de 2001, en la conferencia de O’Reilly.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Pasaron 3 años hasta que el &lt;a href="http://es.wikipedia.org/wiki/30_de_junio" title="30 de junio"&gt;30 de junio&lt;/a&gt; de &lt;a href="http://es.wikipedia.org/wiki/2004" title="2004"&gt;2004&lt;/a&gt; Mono 1.0 finalmente fue lanzado.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 12pt;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Componentes:&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Mono_architecture.svg/570px-Mono_architecture.svg.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 260px; height: 165px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Mono_architecture.svg/570px-Mono_architecture.svg.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;a href="http://es.wikipedia.org/wiki/Archivo:Mono_architecture.svg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Bibliotecas de clase:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Las bibliotecas de clase proveen un conjunto de facilidades que ayudan al desarrollo de aplicaciones. Son escritas en primer lugar en C#, pero gracias al lenguaje común de especificación (CLS), las mismas pueden ser invocadas en cualquier otro lenguaje de .NET. Las bibliotecas de clase están estructuradas en espacios de nombres (namespaces) y puestas en producción en bibliotecas compartidas denominadas assemblies o ensamblados. Cuando hablamos del framework de .NET, nos estamos refiriendo en primer lugar a las bibliotecas de clase.[JAC]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Espacios de Nombres (namespaces) y Ensamblados (assemblies)&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Los &lt;a href="http://es.wikipedia.org/wiki/Espacio_de_nombre" title="Espacio de nombre"&gt;espacios de nombres&lt;/a&gt; son un mecanismo que permite agrupar lógicamente clases similares en una estructura jerárquica, evitando así conflictos de nombres. La estructura se implementa utilizando palabras separadas por puntos. Por ejemplo, &lt;i&gt;System.IO&lt;/i&gt; o &lt;i&gt;System.Net&lt;/i&gt; agrupan las clases para acceso a ficheros y para comunicaciones de red, respectivamente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Los &lt;a href="http://es.wikipedia.org/wiki/Ensamblado" title="Ensamblado"&gt;ensamblados&lt;/a&gt; son el paquete físico de las librerías de clase. Son archivos con extensión.dll, como las librerías de Windows. Ejemplos de librerías son mscorlib.dll, System.dll, System.Data.dll.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Los &lt;a href="http://es.wikipedia.org/wiki/Espacio_de_nombre" title="Espacio de nombre"&gt;espacios de nombres&lt;/a&gt;, por lo general, están compuestos por muchos &lt;a href="http://es.wikipedia.org/wiki/Ensamblado" title="Ensamblado"&gt;ensamblados&lt;/a&gt; y un ensamblado puede estar compuesto de varios archivos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Lenguaje Común de Infraestructura (CLR):&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;El lenguaje común de infraestructura o más comúnmente llamado &lt;b&gt;Common Language Runtime&lt;/b&gt; (&lt;a href="http://es.wikipedia.org/wiki/CLR" title="CLR"&gt;CLR&lt;/a&gt;) es implementado por el ejecutable de Mono. El runtime es utilizado para correr aplicaciones compiladas en &lt;a href="http://es.wikipedia.org/wiki/.NET" title=".NET"&gt;.NET&lt;/a&gt;. Este lenguaje común de infraestructura está definido en los estándares &lt;a href="http://es.wikipedia.org/wiki/ECMA" title="ECMA"&gt;ECMA&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/ECMA-335" title="ECMA-335"&gt;ECMA-335&lt;/a&gt;. Para ejecutar una aplicación se deberá invocar el &lt;i&gt;runtime&lt;/i&gt; con los parámetros adecuados.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Lenguaje Común de Especificación (CLS)&lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;Se encuentra especificado en el estándar &lt;a href="http://es.wikipedia.org/wiki/ECMA-335" title="ECMA-335"&gt;ECMA-335&lt;/a&gt; y define la interfaz con el &lt;a href="http://es.wikipedia.org/wiki/CLR" title="CLR"&gt;CLR&lt;/a&gt;. Por ejemplo, convenciones sobre el tipo de datos que se utilizará para implementar los enumerados. El compilador Mono genera una imagen que cumple con el &lt;a href="http://es.wikipedia.org/w/index.php?title=CLS&amp;amp;action=edit&amp;amp;redlink=1" title="CLS (aún no redactado)"&gt;CLS&lt;/a&gt;, esta imagen está codificada en el denominado &lt;b&gt;Common Intermediate Language&lt;/b&gt; (&lt;a href="http://es.wikipedia.org/wiki/Common_Intermediate_Language" title="Common Intermediate Language"&gt;CIL&lt;/a&gt;) o &lt;b&gt;Lenguaje Intermedio Común&lt;/b&gt;. El &lt;i&gt;runtime&lt;/i&gt; de Mono toma dicha imagen y la ejecuta.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Mono y las patentes de Microsoft:&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;La implementación de Mono de esos componentes de .NET no sometidos a &lt;a href="http://es.wikipedia.org/wiki/ECMA" title="ECMA"&gt;ECMA&lt;/a&gt; para su estandarización ha levantado algunas preocupaciones por la posible violación de patentes de software durante la vida del proyecto. En particular, la discusión se desarrolló por si Microsoft podría o no destruir al proyecto mono mediante demandas sobre las patentes violadas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p&gt;En la actualidad existe un vivo debate sobre la (in)conveniencia de aceptar y usar Mono en la comunidad de desarrolladores de &lt;a href="http://es.wikipedia.org/wiki/GNU/Linux" title="GNU/Linux"&gt;GNU/Linux&lt;/a&gt;. Los principales argumentos en contra de Mono son:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;No está libre de patentes      de software, y existe el riesgo de que Microsoft exija licencias para usar      C# / CLI.&lt;sup id="cite_ref-0"&gt;&lt;a href="http://es.wikipedia.org/wiki/Proyecto_Mono#cite_note-0"&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;Por otra parte, el proyecto &lt;a href="http://es.wikipedia.org/wiki/Gnome" title="Gnome"&gt;Gnome&lt;/a&gt; está desarrollando un lenguaje alternativo, &lt;a href="http://es.wikipedia.org/wiki/Vala_%28lenguaje_de_programaci%C3%B3n%29" title="Vala (lenguaje de programación)"&gt;Vala&lt;/a&gt;, creado específicamente para desarrollar aplicaciones para Gnome, pero libre de las potenciales amenazas de Microsoft.&lt;a href="http://es.wikipedia.org/wiki/Proyecto_Mono#cite_note-1"&gt;[2&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Ver también:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Proyecto_Mono_Remoting"&gt;Proyecto Mono Remoting&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/MonoDevelop"&gt;MonoDeveLop&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Enlaces externos:&lt;/span&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://www.mono-project.com/" rel="nofollow"&gt;Mono-Project.com&lt;/a&gt;,      Página principal del proyecto, en inglés.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://www.mono-hispano.org/" rel="nofollow"&gt;Mono.Hispano.org&lt;/a&gt;,      Página de la Comunidad de Mono de habla castellana.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://www.monodevelop.com/" rel="nofollow"&gt;MonoDevelop.com&lt;/a&gt;, IDE      de desarrollo, en ♦.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://es.wikipedia.org/wiki/Mono_remoting" rel="nofollow"&gt;Mono      Remoting&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://www.icsharpcode.net/OpenSource/SD/" rel="nofollow"&gt;SharpDevelop2,      IDE de desarrollo para Windows con soporte para compilación con Mono&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://www.casidiablo.net/aplicaciones-con-gui-en-net-%C2%BFgtk-o-windows-forms/" rel="nofollow"&gt;Aplicaciones con GUI en Mono: ¿Gtk# o Windows Forms?&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://www.pedrov.phpnet.us/csharpmono.html" rel="nofollow"&gt;Programación      en Mono con C#&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Planetas:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://www.go-mono.com/monologue/" rel="nofollow"&gt;Oficial&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;a href="http://planeta.mono-hispano.org/" rel="nofollow"&gt;En Castellano&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;div class="thumb tright"&gt;&lt;div class="thumbinner" style="width: 302px;"&gt;&lt;div class="thumbcaption"&gt;&lt;div class="magnify"&gt;&lt;br /&gt;La fuennte de este artículo es la &lt;a href="http://es.wikipedia.org/wiki/%25s"&gt;Wikipedia&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-115232226889962148?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/115232226889962148/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/proyecto-mono.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/115232226889962148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/115232226889962148'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/proyecto-mono.html' title='Proyecto Mono'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_TnXIWwCD8Ow/Rn7CkDdgriI/AAAAAAAAAC0/ANFjwy1iLcg/s72-c/mono.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7838154812430868519</id><published>2009-11-15T07:55:00.000-08:00</published><updated>2009-11-15T07:59:34.713-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Peoyecto GNOME</title><content type='html'>&lt;b&gt;&lt;br /&gt;GNOME&lt;/b&gt; es un &lt;a href="http://es.wikipedia.org/wiki/Entorno_de_escritorio" title="Entorno de escritorio"&gt;entorno de escritorio&lt;/a&gt; e infraestructura de desarrollo para &lt;a href="http://es.wikipedia.org/wiki/Sistema_operativo" title="Sistema operativo"&gt;sistemas operativos&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/Unix" title="Unix"&gt;Unix&lt;/a&gt; y derivados Unix como &lt;a href="http://es.wikipedia.org/wiki/GNU/Linux" title="GNU/Linux"&gt;GNU/Linux&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/BSD" title="BSD" class="mw-redirect"&gt;BSD&lt;/a&gt; o &lt;a href="http://es.wikipedia.org/wiki/Solaris" title="Solaris"&gt;Solaris&lt;/a&gt;; compuesto enteramente de &lt;a href="http://es.wikipedia.org/wiki/Software_libre" title="Software libre"&gt;software libre&lt;/a&gt;.&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://fedoreando.files.wordpress.com/2009/03/gnome.png?w=300&amp;amp;h=300"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 177px; height: 177px;" src="http://fedoreando.files.wordpress.com/2009/03/gnome.png?w=300&amp;amp;h=300" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;El proyecto fue iniciado por los programadores mexicanos &lt;a href="http://es.wikipedia.org/wiki/Miguel_de_Icaza" title="Miguel de Icaza"&gt;Miguel de Icaza&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/Federico_Mena" title="Federico Mena"&gt;Federico Mena&lt;/a&gt; y forma parte oficial del proyecto &lt;a href="http://es.wikipedia.org/wiki/GNU" title="GNU"&gt;GNU&lt;/a&gt;. Nació como una alternativa a &lt;a href="http://es.wikipedia.org/wiki/KDE" title="KDE"&gt;KDE&lt;/a&gt; bajo el nombre de &lt;i&gt;&lt;b&gt;G&lt;/b&gt;NU &lt;b&gt;N&lt;/b&gt;etwork &lt;b&gt;O&lt;/b&gt;bject &lt;b&gt;M&lt;/b&gt;odel &lt;b&gt;E&lt;/b&gt;nvironment&lt;/i&gt;. Actualmente se encuentra disponible en 48 idiomas, entre ellos el &lt;a href="http://es.wikipedia.org/wiki/Idioma_espa%C3%B1ol" title="Idioma español"&gt;español&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Para más información ver la &lt;a href="http://es.wikipedia.org/wiki/GNOME"&gt;Wikipedia&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7838154812430868519?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7838154812430868519/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/peoyecto-gnome.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7838154812430868519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7838154812430868519'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/peoyecto-gnome.html' title='Peoyecto GNOME'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-6517737503407308631</id><published>2009-11-15T05:38:00.000-08:00</published><updated>2009-11-15T07:41:39.631-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><title type='text'>MonoDevelop</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.solutecperu.com/blog/images/mono-logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 176px; height: 153px;" src="http://www.solutecperu.com/blog/images/mono-logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MonoDevelop es un entorno de desarrollo integrado libre y gratuito, diseñado primordialmente para &lt;a href="http://es.wikipedia.org/wiki/C_Sharp" title="C Sharp"&gt;C#&lt;/a&gt; y otros lenguajes &lt;a href="http://es.wikipedia.org/wiki/.NET" title=".NET" class="mw-redirect"&gt;.NET&lt;/a&gt; como &lt;a href="http://es.wikipedia.org/w/index.php?title=Nemerle&amp;amp;action=edit&amp;amp;redlink=1" class="new" title="Nemerle (aún no redactado)"&gt;Nemerle&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/Boo" title="Boo"&gt;Boo&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java" title="Lenguaje de programación Java"&gt;Java&lt;/a&gt; (vía &lt;a href="http://es.wikipedia.org/wiki/IKVM.NET" title="IKVM.NET"&gt;IKVM.NET&lt;/a&gt;) y en su versión 2.2 &lt;a href="http://es.wikipedia.org/wiki/Python" title="Python"&gt;Python&lt;/a&gt;. MonoDevelop originalmente fue una adaptación de SharpDevelop para &lt;a href="http://es.wikipedia.org/wiki/Gtk" title="Gtk" class="mw-redirect"&gt;Gtk#&lt;/a&gt;, pero desde entonces se ha desarrollado para las necesidades de los desarrolladores de Mono. El &lt;a href="http://es.wikipedia.org/wiki/IDE" title="IDE"&gt;IDE&lt;/a&gt; incluye manejo de clases, ayuda incorporada, completamiento de código, Stetic (diseñador de &lt;a href="http://es.wikipedia.org/wiki/GUI" title="GUI" class="mw-redirect"&gt;GUI&lt;/a&gt;), soporte para proyectos, y un depurador integrado.&lt;/p&gt; &lt;p&gt;MonoDevelop 2.0 puede ejecutarse en las distintas distribuciones de &lt;a href="http://es.wikipedia.org/wiki/Linux" title="Linux" class="mw-redirect"&gt;Linux&lt;/a&gt; y en &lt;a href="http://es.wikipedia.org/wiki/Mac" title="Mac" class="mw-redirect"&gt;Mac&lt;/a&gt;. En la versión de pruebas 2.2 Beta2 MonoDevelop ya cuenta con soporte completo para &lt;a href="http://es.wikipedia.org/wiki/GNU/Linux" title="GNU/Linux"&gt;GNU/Linux&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/Windows" title="Windows" class="mw-redirect"&gt;Windows&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/Mac" title="Mac" class="mw-redirect"&gt;Mac&lt;/a&gt;, completando así un hito para ser un verdadero &lt;a href="http://es.wikipedia.org/wiki/IDE" title="IDE"&gt;IDE&lt;/a&gt; Multiplataforma.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;Historia:&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style="font-size: small; font-weight: normal; float: none; margin-left: 0px;" class="editsection"&gt;&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;A finales del 2003 un grupo de desarrolladores provenientes de la comunidad Mono comenzó a migrar a SharpDevelop a Linux usando las librerías GTK.&lt;/p&gt; &lt;p&gt;En estos momentos MonoDevelop ha sido absorbido por el proyecto Mono y está siendo activamente mantenido por Novell y la comunidad Mono. MonoDevelop se empaqueta y distribuye junto a Mono desde la segunda beta de Mono 1.0.&lt;/p&gt; &lt;p&gt;MonoDevelop 2.0 es la última versión de MonoDevelop, liberada el 30 de marzo del 2009.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;MonoDevelop en plataformas n Linux:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;MonoDevelop 2.2 ya dispone de un instalador para Windows y Mac Ofreciendo así un completo soporte multiplataforma.&lt;/p&gt; &lt;p&gt;MonoDevelop se distribuye junto con Mono para Mac OS X incluyendo el diseñador de interfaces gráficas para Mac OS funcionando de manera nativa. MonoDevelop es empaquetado para Solaris sobre SPARC y x86 pero es mantenido por grupos de la comunidad OpenSolaris. Finalmente, MonoDevelop es también mantenido por la comunidad FreeBSD.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Ver también:&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://es.wikipedia.org/wiki/Proyecto_Mono"&gt;El proyecto Mono.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Enlaces de interes:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mono-project.com/" class="external text" rel="nofollow"&gt;Mono-Project.com&lt;/a&gt;, Página principal del proyecto, en inglés.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.monodevelop.com/" class="external text" rel="nofollow"&gt;MonoDevelop.com&lt;/a&gt;, IDE de desarrollo, en inglés.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.monodevelop.com/Download" class="external text" rel="nofollow"&gt;MonoDevelop.com/Download&lt;/a&gt;, Área de descargas, en inglés&lt;/li&gt;&lt;li&gt;&lt;a href="http://necudeco.com/index.php/2007/07/21/monodevelop-version-014/" class="external text" rel="nofollow"&gt;Características de MonoDevelop 0.14&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mono-live.com/" class="external text" rel="nofollow"&gt;mono-live.com&lt;/a&gt;,LiveCD con aplicaciones desarrolladas en Mono. Incluye el IDE MonoDevelop&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mono-hispano.org/" class="external text" rel="nofollow"&gt;mono-hispano.org&lt;/a&gt;, Página de la comunidad de desarrolladores bajo Mono de habla Castellana.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Est ha sido sacado d la&lt;a href="http://es.wikipedia.org/wiki/MonoDevelop"&gt; Wikipedia&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-6517737503407308631?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/6517737503407308631/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/monodevelop.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6517737503407308631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6517737503407308631'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/monodevelop.html' title='MonoDevelop'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-431535677394852943</id><published>2009-11-15T02:48:00.000-08:00</published><updated>2009-12-11T03:48:39.283-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Lenguajes programación'/><category scheme='http://www.blogger.com/atom/ns#' term='Fecha y hora'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>Funciones que devuelven Fechas y Horas actuales convertidas en String, utilizando C Sharp</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://eltamiz.com/elcedazo/wp-content/uploads/2008/11/dali-reloj-blando-en-el-momento-de-su-primera-explosion.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 231px; height: 187px;" src="http://eltamiz.com/elcedazo/wp-content/uploads/2008/11/dali-reloj-blando-en-el-momento-de-su-primera-explosion.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En el título ya aclaré de que va esta actualización, así que ahora sólo pondré el código de sendas funciones:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Retornar fecha:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        private string GetFecha()&lt;br /&gt;       {&lt;br /&gt;           string fecha;&lt;br /&gt;           fecha = DateTime.Now.ToShortDateString();&lt;br /&gt;           return fecha;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Retornar hora:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       private string GetHora()&lt;br /&gt;       {&lt;br /&gt;           string hora;&lt;br /&gt;           hora = DateTime.Now.ToShortTimeString();&lt;br /&gt;           return hora;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-431535677394852943?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/431535677394852943/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/funciones-que-devuelven-fechas-y-horas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/431535677394852943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/431535677394852943'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/funciones-que-devuelven-fechas-y-horas.html' title='Funciones que devuelven Fechas y Horas actuales convertidas en String, utilizando C Sharp'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7056094435309755256</id><published>2009-11-15T01:58:00.000-08:00</published><updated>2009-11-15T02:48:11.036-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lenguajes programación'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>XML y CSharp (C#)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://webspace.utexas.edu/curtispe/images/xmlLogo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 311px; height: 187px;" src="https://webspace.utexas.edu/curtispe/images/xmlLogo.png" alt="" border="0" /&gt;&lt;/a&gt;Quen quiera saber que es XML, que lea actualizaciones anteriores o vaya directamente a la Wikipedia. Aquí escribiré cómo desde C# se puede acceder a un archivo escribiendo en él, o para leer. Aunque mi pequeño fracaso, ¿o no?, es que no encontré modo de agregar a un archivo unnuevo registro, sin borrar el contenido actual. Por ello tuve que calentarme la cabeza, y desarrollé dos funciones, una que utilizaba un archivo auxiliar y otra que cargaba en arrays los datos actuales y luego añadia el nuevo registro.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Cómo se lee:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; private void LeerFicheroXML()&lt;br /&gt;      {&lt;br /&gt;          XmlTextReader lectorXML = new XmlTextReader(strRutaDocumentoXML);&lt;br /&gt;          StreamReader lector = new StreamReader(strRutaDocumentoXML, System.Text.Encoding.UTF8);&lt;br /&gt;          lectorXML.Namespaces = false;&lt;br /&gt;          contador = 0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;          while (lectorXML.Read())&lt;br /&gt;          {&lt;br /&gt;              switch (lectorXML.NodeType)&lt;br /&gt;              {&lt;br /&gt;                  case XmlNodeType.Element:&lt;br /&gt;                      switch (lectorXML.Name)&lt;br /&gt;                      {&lt;br /&gt;                          case "NombreRepositorio":&lt;br /&gt;                              CmbListaRepositorios.Items.Add(lectorXML.ReadString());&lt;br /&gt;                              contador++;&lt;br /&gt;                              break;&lt;br /&gt;                          case "Email":&lt;br /&gt;                              CmbListaEmails.Items.Add(lectorXML.ReadString());&lt;br /&gt;                              contador++;&lt;br /&gt;                              break;&lt;br /&gt;                          case "Fecha":&lt;br /&gt;                              break;&lt;br /&gt;                              contador++;&lt;br /&gt;                          case "Hora":&lt;br /&gt;                              contador++;&lt;br /&gt;                              break;&lt;br /&gt;                      }&lt;br /&gt;                      break;&lt;br /&gt;              }&lt;br /&gt;&lt;br /&gt;          }&lt;br /&gt;          lectorXML.Close();&lt;br /&gt;          lector.Close();&lt;br /&gt;       &lt;br /&gt;       &lt;br /&gt;      }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cómo se agregan datos utilizando arrays auxiliares:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;private void AgregagandoDatos()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;       {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           contador++;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           string[] emails; // Declaración del array&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           emails = new string[contador]; // Instanciación del array&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           string[] nombreRepositorios;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           nombreRepositorios = new string[contador];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           string[] fechas;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           fechas = new string[contador];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           string[] horas;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           horas = new string[contador];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           for (int i = 0; i &lt;&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               fechas[i]="";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               horas[i]="";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               nombreRepositorios[i]="";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               emails[i]="";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           //declaro el lector y el escritor &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           XmlTextReader lectorXML = new XmlTextReader(strRutaDocumentoXML);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           StreamReader lector = new StreamReader(strRutaDocumentoXML, System.Text.Encoding.UTF8);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           lectorXML.Namespaces = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;          &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               //comienzo la lectura&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               int ind = 0, indE=0, indN=0, indH=0, indF=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               while (lectorXML.Read())&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   switch (lectorXML.NodeType)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                       case XmlNodeType.Element:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                           switch (lectorXML.Name)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                           {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                               case "NombreRepositorio":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   nombreRepositorios[indN] = lectorXML.ReadString();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   indN++;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   break;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                               case "Email":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   emails[indE] = lectorXML.ReadString();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   indE++;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   break;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                               case "Fecha":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   fechas[indF] = lectorXML.ReadString();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   indF++;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   break;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                               case "Hora":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   horas[indH] = lectorXML.ReadString();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   indH++;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                                   break;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                           }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                           break;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               lectorXML.Close();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               lector.Close();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               //y ahora comienzo a escribir en el archivo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               XmlTextWriter escritorXML = new XmlTextWriter(strRutaDocumentoXML, Encoding.UTF8);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.Formatting = Formatting.Indented;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.WriteStartDocument();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               ind=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               while(nombreRepositorios[ind]!="")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   escritorXML.WriteStartElement("Repositorios");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   escritorXML.WriteElementString("NombreRepositorio", nombreRepositorios[ind]);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   escritorXML.WriteElementString("Email",emails[ind]);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   escritorXML.WriteElementString("Hora", horas[ind]);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   escritorXML.WriteElementString("Fecha", fechas[ind]);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;       &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                   ind++;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.WriteElementString("NombreRepositorio", CmbListaRepositorios.Text);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.WriteElementString("Email", CmbListaEmails.Text);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.WriteElementString("Hora", GetHora());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.WriteElementString("Fecha", GetFecha());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.WriteEndElement();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.WriteEndDocument();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.Flush();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               escritorXML.Close();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               CmbListaEmails.Items.Add(CmbListaEmails.Text);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;               CmbListaRepositorios.Items.Add(CmbListaRepositorios.Text);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                MessageBox.Show("Se produjo el siguiente error: "+ ex.Message + "\n" + ex.InnerException,"Informando", MessageBoxButtons.OK,MessageBoxIcon.Error);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;       }&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7056094435309755256?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7056094435309755256/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/xml-y-csharp-c.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7056094435309755256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7056094435309755256'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/xml-y-csharp-c.html' title='XML y CSharp (C#)'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-8762763326943838281</id><published>2009-11-07T14:10:00.000-08:00</published><updated>2009-12-11T03:49:25.487-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Correo Electronico'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>Día glorioso en C#: Cómo se manda un correo electónico</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cinepremiere.com.mx/files/u6/Oscares_Inmerecidos_BENIGNI.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 197px; height: 248px;" src="http://www.cinepremiere.com.mx/files/u6/Oscares_Inmerecidos_BENIGNI.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Dado que no hay muchas fotos del logo de C Sharp, contento como estoy, aunque no más que el gran Benigni el día que su película "La vida es bella" arrasó en los Oscar's, coloco su foto.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      &lt;br /&gt;&lt;br /&gt;private void BtnEnviar_Click(object sender, EventArgs e)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            int i = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            MailMessage oMail= new MailMessage(); //creo un objeto mensaje&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;         &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;           &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                //recorro la combo, para tomar los nombres de correo seleccionados y agregarlos al campo CC del &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                //objeto Mail&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                for (i =0; i&lt;&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    CmbPara.SelectedIndex = i;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                    if (CmbPara.GetItemChecked(i))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                        oMail.CC.Add(new MailAddress(Convert.ToString(CmbPara.SelectedItem.ToString())));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                MessageBox.Show("Se dio un error al ir agregando los cntactos. El error es:\n\n" + ex.Message + "\n\nEl InnerException es: " + ex.InnerException,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            //quien lo manda y mi apodo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oMail.From = new MailAddress(TxtDe.Text, "El Terrible Malpaso", Encoding.UTF8);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            //asunto&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oMail.Subject=TxtAsunto.Text;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            //cuerpo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oMail.Body=RchTexto.Text;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            SmtpClient oClienteSMTP = new SmtpClient(); //creo el bjeto cliente&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oClienteSMTP.Host = "smtp.gmail.com"; //mi host&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            NetworkCredential autentificar = new NetworkCredential(TxtDe.Text,"topsecret"); //mi cuenta y su contraseña&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oClienteSMTP.Port = 25; //numero de puerto&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oClienteSMTP.UseDefaultCredentials = false; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oClienteSMTP.Credentials = autentificar;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            oClienteSMTP.EnableSsl = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                oClienteSMTP.Send(oMail); //envio&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                MessageBox.Show("El mensaje ha sido enviado con éxito","¡Bien!",MessageBoxButtons.OK,MessageBoxIcon.Information);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            catch (Exception ex)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;                MessageBox.Show("Error al envar el mensaje: \n\nMensaje: " + ex.Message + "\n\nInerException: " + ex.InnerException, "¡Error!", MessageBoxButtons.OK, MessageBoxIcon.Stop);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-8762763326943838281?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/8762763326943838281/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/dia-glorioso-en-c-como-se-manda-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8762763326943838281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/8762763326943838281'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/dia-glorioso-en-c-como-se-manda-un.html' title='Día glorioso en C#: Cómo se manda un correo electónico'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4327589014662837064</id><published>2009-11-03T02:38:00.000-08:00</published><updated>2009-12-11T03:51:14.160-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Codigo'/><title type='text'>Mis saludos a la clase JOptionPane</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6hHF5zWjFNg/SXdXNnCjFGI/AAAAAAAAASc/6PKzaf9yGyU/s320/ProgramacionWebAgilConJava_html_e4e0a82.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 206px; height: 205px;" src="http://3.bp.blogspot.com/_6hHF5zWjFNg/SXdXNnCjFGI/AAAAAAAAASc/6PKzaf9yGyU/s320/ProgramacionWebAgilConJava_html_e4e0a82.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hoy Googleando he descubierto cómo Java muestra mensajes de opciones y mensajes con caja de texto para rellenar contestando a una pregunta. Y desde hoy sumaré un atractivo a mis aplicaciones de escritorio. La web de donde logré mis conocimientos es &lt;a href="http://www.mygnet.net/codigos/java/modo_grafico/cuadros_de_dialogo_e_inputbox_usando_javax_dot_swing_dot_joptionpane_graphic_user_iterface.1560"&gt;esta&lt;/a&gt;. Y yo le he sacado uso con estas sentencias:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt; void jButton1_actionPerformed(ActionEvent e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    String strNuevoNombre= JOptionPane.showInputDialog(null,"Cambiate de nombre: ","Cambio de nombre",JOptionPane.INFORMATION_MESSAGE);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    if (strNuevoNombre.length()&gt;0 &amp;amp;&amp;amp; strNuevoNombre.compareToIgnoreCase("maquina")!=0 &amp;amp;&amp;amp; strNuevoNombre.compareToIgnoreCase("humano")!=0){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      this.partida1.cambiarNombreAlJugadorHumano(strNuevoNombre);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      this.jLabelNombreJugTurno.setText(partida1.getTurno().getNombre());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      JOptionPane.showMessageDialog(null,"Ha actualizado correctamente tu nombre.","Cambio de nombre",JOptionPane.INFORMATION_MESSAGE);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;    else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;      JOptionPane.showMessageDialog(null,"Nombre incorrecto. Pruebe con otro diferente a Humano o Maquina.","Error",JOptionPane.OK_OPTION);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4327589014662837064?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4327589014662837064/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/mis-saludos-la-clase-joptionpane.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4327589014662837064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4327589014662837064'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/11/mis-saludos-la-clase-joptionpane.html' title='Mis saludos a la clase JOptionPane'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6hHF5zWjFNg/SXdXNnCjFGI/AAAAAAAAASc/6PKzaf9yGyU/s72-c/ProgramacionWebAgilConJava_html_e4e0a82.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-413582703367734760</id><published>2009-10-28T12:19:00.000-07:00</published><updated>2009-11-01T11:32:40.659-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lenguaje de marcas extensible'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>Breve  anotación de XML</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ofertondelibros.com/images/large/isbn978076/9780764570773-l.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 224px; height: 280px;" src="http://www.ofertondelibros.com/images/large/isbn978076/9780764570773-l.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;XML&lt;/b&gt;, siglas en &lt;a href="http://es.wikipedia.org/wiki/Idioma_ingl%C3%A9s" title="Idioma inglés"&gt;inglés&lt;/a&gt; de &lt;i&gt;E&lt;b&gt;x&lt;/b&gt;tensible &lt;b&gt;M&lt;/b&gt;arkup &lt;b&gt;L&lt;/b&gt;anguage&lt;/i&gt; (&lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_marcado" title="Lenguaje de marcado"&gt;lenguaje de marcas&lt;/a&gt; extensible), es un &lt;a href="http://es.wikipedia.org/wiki/Metalenguaje" title="Metalenguaje"&gt;metalenguaje&lt;/a&gt; extensible de etiquetas desarrollado por el &lt;a href="http://es.wikipedia.org/wiki/World_Wide_Web_Consortium" title="World Wide Web Consortium"&gt;World Wide Web Consortium&lt;/a&gt; (W3C). Es una simplificación y adaptación del &lt;a href="http://es.wikipedia.org/wiki/SGML" title="SGML"&gt;SGML&lt;/a&gt; y permite definir la gramática de lenguajes específicos (de la misma manera que &lt;a href="http://es.wikipedia.org/wiki/HTML" title="HTML"&gt;HTML&lt;/a&gt; es a su vez un lenguaje definido por SGML). Por lo tanto XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades. Algunos de estos lenguajes que usan XML para su definición son &lt;a href="http://es.wikipedia.org/wiki/XHTML" title="XHTML"&gt;XHTML&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/SVG" title="SVG" class="mw-redirect"&gt;SVG&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/MathML" title="MathML"&gt;MathML&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;XML no ha nacido sólo para su aplicación en &lt;a href="http://es.wikipedia.org/wiki/Internet" title="Internet"&gt;Internet&lt;/a&gt;, sino que se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas. Se puede usar en bases de datos, editores de texto, hojas de cálculo y casi cualquier cosa imaginable.&lt;/p&gt; &lt;p&gt;XML es una &lt;a href="http://es.wikipedia.org/wiki/Tecnolog%C3%ADa" title="Tecnología"&gt;tecnología&lt;/a&gt; sencilla que tiene a su alrededor otras que la complementan y la hacen mucho más grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil.&lt;/p&gt;&lt;p&gt;Paramás información, visitar &lt;a href="http://es.wikipedia.org/wiki/XML"&gt;La Wikipedia&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Actualmente me devano los sesos cosdificando en C# el acceso, creación, lectura y escritura en archivos de este formato.&lt;/p&gt;&lt;p&gt;Ya escribiré cómo lo resolví. Pero mientras tanto incluyo un enlace muy bueno sobre el tema &lt;a href="http://www.forosdelweb.com/f78/agregar-nodo-xml-c-720764/"&gt;http://www.forosdelweb.com/f78/agregar-nodo-xml-c-720764/&lt;/a&gt; Y a seguir indagando.&lt;a href="http://www.forosdelweb.com/f78/agregar-nodo-xml-c-720764/"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-413582703367734760?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/413582703367734760/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/breve-anotacion-de-xml.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/413582703367734760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/413582703367734760'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/breve-anotacion-de-xml.html' title='Breve  anotación de XML'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7509022641069844240</id><published>2009-10-25T06:09:00.000-07:00</published><updated>2010-02-14T02:55:42.627-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Buenos consejos'/><title type='text'>Cómo ser un buen programador según Pythoniso (Omar Espinoza)</title><content type='html'>1. Recuerda que debes hacerte de hábitos estándares de desarrollo documentar, respaldar, testar, etc.&lt;br /&gt;2. Un ultimo consejo, no te hagas el programador del mañana, evítalo a toda costa. Habrá veces que no podrás evitarlo, pero intenta siempre no ser así. Con gusto te defino, un "programador del mañana" es aquel que dice que todo quedará para mañana...aquí en Monterrey, esos programadores no tienen cabida.&lt;br /&gt;3. concéntrate en tu trabajo, y siempre se optimista, recuerda que todos los problemas en un desarrollo se solucionan, no tengas miedo de nuevos desafíos, si esta fuera de tu conocimiento, se optimista que para eso esta Google.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://joselo.files.wordpress.com/2007/06/programmer1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 333px;" src="http://joselo.files.wordpress.com/2007/06/programmer1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La pic fue sacada de GOGLE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7509022641069844240?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7509022641069844240/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/como-ser-un-buen-programador-segun.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7509022641069844240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7509022641069844240'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/como-ser-un-buen-programador-segun.html' title='Cómo ser un buen programador según Pythoniso (Omar Espinoza)'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-7296649082345620639</id><published>2009-10-22T08:39:00.000-07:00</published><updated>2009-10-22T08:49:31.996-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Redes'/><category scheme='http://www.blogger.com/atom/ns#' term='Correo Electronico'/><category scheme='http://www.blogger.com/atom/ns#' term='Telefonía móvil'/><category scheme='http://www.blogger.com/atom/ns#' term='Inventores'/><title type='text'>Ray Tomlinson y Martin Cooper: Premios principes de Asturias a la innovación tecnologíca</title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Ray Tomlinson&lt;/b&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lara87.files.wordpress.com/2008/10/1971_tomlinson12.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 226px;" src="http://lara87.files.wordpress.com/2008/10/1971_tomlinson12.jpg" alt="" border="0" /&gt;&lt;/a&gt;(nació el 1941). Graduado en &lt;a href="http://es.wikipedia.org/wiki/Ingenier%C3%ADa_el%C3%A9ctrica" title="Ingeniería eléctrica"&gt;ingeniería eléctrica&lt;/a&gt; del &lt;b&gt;Masachusetts Institute Tecnology&lt;/b&gt; (&lt;b&gt;&lt;a href="http://es.wikipedia.org/wiki/MIT" title="MIT" class="mw-redirect"&gt;MIT&lt;/a&gt;&lt;/b&gt;). A poco de recibirse en 1967 ingresó a la empresa &lt;b&gt;BBN&lt;/b&gt; (&lt;i&gt;&lt;a href="http://es.wikipedia.org/wiki/Bolt,_Beranek_and_Newman" title="Bolt, Beranek and Newman" class="mw-redirect"&gt;Bolt, Beranek and Newman&lt;/a&gt;&lt;/i&gt;), la cual recibió el encargo de trabajar para la &lt;a href="http://es.wikipedia.org/wiki/Red_de_computadoras" title="Red de computadoras"&gt;red de &lt;/a&gt;&lt;a href="http://es.wikipedia.org/wiki/Red_de_computadoras" title="Red de computadoras"&gt;computadoras&lt;/a&gt; "&lt;b&gt;&lt;a href="http://es.wikipedia.org/wiki/ARPANET" title="ARPANET"&gt;ARPANET&lt;/a&gt;&lt;/b&gt;" (&lt;b&gt;Advanced Research Projects Agency Network&lt;/b&gt;) con un sistema de inter-&lt;a href="http://es.wikipedia.org/wiki/Comunicaci%C3%B3n" title="Comunicación"&gt;comunicación&lt;/a&gt; militar. Una vez integrado al equipo de trabajo, desarrollaron un &lt;a href="http://es.wikipedia.org/wiki/Software" title="Software"&gt;programa&lt;/a&gt; llamado &lt;b&gt;SNDMSG&lt;/b&gt; para enviar mensajes entre las distintas terminales de una misma computadora.&lt;/p&gt; &lt;p&gt;Al inicio de la década de &lt;a href="http://es.wikipedia.org/wiki/1970" title="1970"&gt;1970&lt;/a&gt;, los usuarios militares o de grandes empresas, utilizaban mayormente la informática mediante "&lt;b&gt;&lt;a href="http://es.wikipedia.org/wiki/Terminal_tonta" title="Terminal tonta"&gt;terminales tontas&lt;/a&gt; o bobas&lt;/b&gt;" (&lt;i&gt;una pantalla y un teclado, sin la capacidad de procesamiento ni almacenamiento&lt;/i&gt;), conectados a un &lt;a href="http://es.wikipedia.org/wiki/Servidor" title="Servidor"&gt;servidor&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;En septiembre de 1971, cuando la &lt;b&gt;BBN&lt;/b&gt; ya estaba conectada al &lt;b&gt;ARPANET&lt;/b&gt;, Tomlison adaptó el programa &lt;i&gt;SNDMSG&lt;/i&gt; de forma tal que sirviera para enviar mensajes entre diferentes usuarios conectados a una red más amplia, pero sin que sean conocidos (&lt;i&gt;Lo que hoy día se conoce como &lt;a href="http://es.wikipedia.org/wiki/Correo_electr%C3%B3nico" title="Correo electrónico"&gt;correo electrónico&lt;/a&gt; o &lt;a href="http://es.wikipedia.org/wiki/E-mail" title="E-mail" class="mw-redirect"&gt;e-mail&lt;/a&gt;&lt;/i&gt;). Allí fue que se le ocurrió utilizar un &lt;a href="http://es.wikipedia.org/wiki/S%C3%ADmbolo" title="Símbolo"&gt;símbolo&lt;/a&gt;, el &lt;b&gt;@&lt;/b&gt; (&lt;b&gt;&lt;a href="http://es.wikipedia.org/wiki/Arroba_%28s%C3%ADmbolo%29" title="Arroba (símbolo)"&gt;arroba&lt;/a&gt;&lt;/b&gt;), con este método uniría el nombre del usuario y del servidor.&lt;/p&gt; &lt;p&gt;La idea era utilizar un &lt;a href="http://es.wikipedia.org/wiki/S%C3%ADmbolo" title="Símbolo"&gt;símbolo&lt;/a&gt; que estuviese en todos los teclados pero que no apareciera en los &lt;a href="http://es.wikipedia.org/wiki/Nombre" title="Nombre"&gt;nombres&lt;/a&gt; propios de las &lt;a href="http://es.wikipedia.org/wiki/Persona_f%C3%ADsica" title="Persona física"&gt;personas&lt;/a&gt; o empresas ni de los servidores. El @ estaba en los teclados pero no tenía utilidad alguna, por lo que no entraba en conflicto con nada estipulado anteriormente.&lt;/p&gt; &lt;p&gt;Tomlison sigue trabajando en BBN, ha realizado también otros desarrollos importantes con el diseño de computadoras, arquitectura de redes, protocolos en la red y síntesis digital.&lt;/p&gt; Ha sido galardonado con el &lt;a href="http://es.wikipedia.org/wiki/Premio_Pr%C3%ADncipe_de_Asturias_de_Investigaci%C3%B3n_Cient%C3%ADfica_y_T%C3%A9cnica" title="Premio Príncipe de Asturias de Investigación Científica y Técnica"&gt;Premio Príncipe de Asturias de Investigación Científica y Técnica&lt;/a&gt; 2009, compartido con &lt;a href="http://es.wikipedia.org/wiki/Martin_Cooper" title="Martin Cooper"&gt;Martin Cooper&lt;/a&gt;, inventor de la &lt;a href="http://es.wikipedia.org/wiki/Telefon%C3%ADa_m%C3%B3vil" title="Telefonía móvil"&gt;telefonía móvil&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;b&gt;Martin Cooper&lt;/b&gt;  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1f/2007Computex_e21Forum-MartinCooper.jpg/450px-2007Computex_e21Forum-MartinCooper.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 191px; height: 253px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1f/2007Computex_e21Forum-MartinCooper.jpg/450px-2007Computex_e21Forum-MartinCooper.jpg" alt="" border="0" /&gt;&lt;/a&gt;(nacido en 1928, en &lt;a href="http://es.wikipedia.org/wiki/Chicago" title="Chicago"&gt;Chicago&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/Illinois" title="Illinois"&gt;Illinois&lt;/a&gt;) es considerado el padre del &lt;a href="http://es.wikipedia.org/wiki/Tel%C3%A9fono_m%C3%B3vil" title="Teléfono móvil" class="mw-redirect"&gt;teléfono móvil&lt;/a&gt;. Cooper es el CEO y fundador de &lt;b&gt;ArrayComm&lt;/b&gt;, una compañía que trabaja en la investigación de antena inteligente y la mejora de la tecnología inalámbrica redes, y fue el director corporativo de Investigación y Desarrollo de &lt;a href="http://es.wikipedia.org/wiki/Motorola" title="Motorola"&gt;Motorola&lt;/a&gt;. Recibió su licenciatura en ingeniería eléctrica del &lt;a href="http://es.wikipedia.org/wiki/Instituto_Tecnol%C3%B3gico_de_Illinois" title="Instituto Tecnológico de Illinois"&gt;Instituto Tecnológico de Illinois&lt;/a&gt; en &lt;a href="http://es.wikipedia.org/wiki/1950" title="1950"&gt;1950&lt;/a&gt; y recibió su título de maestría de la misma institución en &lt;a href="http://es.wikipedia.org/wiki/1957" title="1957"&gt;1957&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;En &lt;a href="http://es.wikipedia.org/wiki/1995" title="1995"&gt;1995&lt;/a&gt;, Cooper recibió el &lt;b&gt;Wharton Infosys Business Transformation Award&lt;/b&gt; por sus innovaciones tecnológicas en el ámbito de la comunicación. Martin Cooper también es miembro de &lt;a href="http://es.wikipedia.org/wiki/Mensa_%28organizaci%C3%B3n%29" title="Mensa (organización)"&gt;Mensa&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Cooper ha confesado que fue viendo al &lt;a href="http://es.wikipedia.org/wiki/James_Tiberius_Kirk" title="James Tiberius Kirk"&gt;Capitán Kirk&lt;/a&gt; usar su comunicador en la serie &lt;i&gt;&lt;a href="http://es.wikipedia.org/wiki/Star_Trek:_La_serie_original" title="Star Trek: La serie original" class="mw-redirect"&gt;Star Trek&lt;/a&gt;&lt;/i&gt; lo que le inspiró para desarrollar el teléfono móvil&lt;sup id="cite_ref-0" class="reference"&gt;&lt;a href="http://es.wikipedia.org/wiki/Martin_Cooper#cite_note-0"&gt;&lt;span class="corchete-llamada"&gt;[&lt;/span&gt;1&lt;span class="corchete-llamada"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt; Ha sido galardonado con el &lt;a href="http://es.wikipedia.org/wiki/Premio_Pr%C3%ADncipe_de_Asturias_de_Investigaci%C3%B3n_Cient%C3%ADfica_y_T%C3%A9cnica" title="Premio Príncipe de Asturias de Investigación Científica y Técnica"&gt;Premio Príncipe de Asturias de Investigación Científica y Técnica&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/2009" title="2009"&gt;2009&lt;/a&gt;, compartido con &lt;a href="http://es.wikipedia.org/wiki/Ray_Tomlinson" title="Ray Tomlinson"&gt;Ray Tomlinson&lt;/a&gt;, inventor del &lt;a href="http://es.wikipedia.org/wiki/Correo_electr%C3%B3nico" title="Correo electrónico"&gt;correo electrónico&lt;/a&gt;.&lt;a href="http://es.wikipedia.org/wiki/Martin_Cooper#cite_note-1"&gt;&lt;span class="corchete-llamada"&gt;[&lt;/span&gt;2&lt;/a&gt;&lt;a href="http://es.wikipedia.org/wiki/Ray_Tomlinson#cite_note-0"&gt;&lt;span class="corchete-llamada"&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-7296649082345620639?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/7296649082345620639/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/ray-tomlinson-y-martin-cooper-premios.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7296649082345620639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/7296649082345620639'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/ray-tomlinson-y-martin-cooper-premios.html' title='Ray Tomlinson y Martin Cooper: Premios principes de Asturias a la innovación tecnologíca'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-3822337176983474013</id><published>2009-10-19T11:22:00.000-07:00</published><updated>2009-10-19T11:27:13.987-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virus'/><category scheme='http://www.blogger.com/atom/ns#' term='Antivirus'/><title type='text'>Los falsos antivirus ahora secuestran e inutilizan el ordenador</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lawebdelprogramador.com/noticias/imagen.php?id=43"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 164px; height: 164px;" src="http://www.lawebdelprogramador.com/noticias/imagen.php?id=43" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PandaLabs ha identificado una tendencia mucho más agresiva de venta de los llamados falsos antivirus o rogueware. Hasta ahora, cuando un PC era afectado por un malware de estas características, se limitaba a enseñar mensajes de alerta de infección invitando al usuario a comprar. Ahora, están combinando estas tecnologías con el secuestro –literal- del ordenador y su inutilización, lo que conocíamos hasta la fecha como ransomware.&lt;p&gt; Una vez infectado el ordenador, la víctima experimenta una gran frustración al ver cómo al intentar ejecutar cualquier programa, abrir un documento, etc., el ordenador no responde y sólo aparece un mensaje informando al usuario (falsamente) que todos los archivos están infectados y que la única solución es comprar el falso antivirus.&lt;/p&gt;&lt;p&gt; Esta falsa aplicación, llamada Total Security 2009, la venden por 79,95 €. Además ofrecen servicios de soporte técnico premium por 19.95€ adicionales. Una vez pagado, el usuario recibe un número de serie que, al introducirlo en la aplicación, libera todos los ficheros y ejecutables y deja trabajar y recuperar la información. Dicha falsa aplicación, sin embargo, sigue instalada.&lt;/p&gt;&lt;p&gt; Hace un par de meses, PandaLabs publicó un informe sobre el lucrativo negocio que supone la venta de falsos antivirus. “Este movimiento hacia el secuestro del ordenador nos hace pensar que o bien los usuarios han empezado a reconocer estas amenazas o bien que los fabricantes de seguridad estamos cerrando el cerco. Por eso, se ven obligados a ser todavía más agresivos en la forma en que fuerzan a los usuarios a comprar”. Dicho estudio está disponible en: &lt;a href="http://www.pandasecurity.com/img/enc/El%20Negocio%20de%20los%20falsos%20antivirus.pdf" class="link2" target="_blank"&gt;http://www.pandasecurity.com/img/enc/El%20Negocio%20de%20los%20falsos%20antivirus.pdf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;  Los números de serie así como un vídeo demostrando cómo funciona se pueden encontrar en: &lt;a href="http://pandalabs.pandasecurity.com/archive/Rogueware-with-new-Ransomware-Technology_2221_.aspx" class="link2" target="_blank"&gt;http://pandalabs.pandasecurity.com/archive/Rogueware-with-new-Ransomware-Technology_2221_.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="link2"&gt;La noticia ha sido sacada, literalmente, de &lt;/span&gt;&lt;a href="http://pandalabs.pandasecurity.com/archive/Rogueware-with-new-Ransomware-Technology_2221_.aspx" class="link2" target="_blank"&gt;http://www.lawebdelprogramador.com/&lt;br /&gt;&lt;/a&gt;    &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-3822337176983474013?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/3822337176983474013/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/los-falsos-antivirus-ahora-secuestran-e.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3822337176983474013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/3822337176983474013'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/los-falsos-antivirus-ahora-secuestran-e.html' title='Los falsos antivirus ahora secuestran e inutilizan el ordenador'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4119807658464152340</id><published>2009-10-03T09:07:00.000-07:00</published><updated>2009-10-04T10:11:43.695-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lenguajes programación'/><category scheme='http://www.blogger.com/atom/ns#' term='C #'/><title type='text'>Aprendiendo C#</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.hcs.harvard.edu/csharp/Logo1.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 235px; height: 235px;" src="http://www.hcs.harvard.edu/csharp/Logo1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;C#&lt;/b&gt; (pronunciado &lt;i&gt;&lt;b&gt;"si sharp"&lt;/b&gt;&lt;/i&gt; en inglés y &lt;i&gt;&lt;b&gt;"c sostenido"&lt;/b&gt;&lt;/i&gt; o &lt;i&gt;&lt;b&gt;"c almohadilla"&lt;/b&gt;&lt;/i&gt; o &lt;i&gt;&lt;b&gt;"cesar"&lt;/b&gt;&lt;/i&gt;, o chochál en español) es un &lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n" title="Lenguaje de programación"&gt;lenguaje de programación&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos" title="Programación orientada a objetos"&gt;orientado a objetos&lt;/a&gt; desarrollado y estandarizado por &lt;a href="http://es.wikipedia.org/wiki/Microsoft" title="Microsoft"&gt;Microsoft&lt;/a&gt; como parte de su plataforma &lt;a href="http://es.wikipedia.org/wiki/.NET_de_Microsoft" title=".NET de Microsoft" class="mw-redirect"&gt;.NET&lt;/a&gt;, que después fue aprobado como un estándar por la &lt;a href="http://es.wikipedia.org/wiki/ECMA" title="ECMA"&gt;ECMA&lt;/a&gt; e &lt;a href="http://es.wikipedia.org/wiki/ISO" title="ISO"&gt;ISO&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Su sintaxis básica deriva de &lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_C" title="Lenguaje de programación C"&gt;C&lt;/a&gt;/&lt;a href="http://es.wikipedia.org/wiki/C%2B%2B" title="C++"&gt;C++&lt;/a&gt; y utiliza el modelo de objetos de la plataforma.NET el cual es similar al de &lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java" title="Lenguaje de programación Java"&gt;Java&lt;/a&gt; aunque incluye mejoras derivadas de otros lenguajes (entre ellos Delphi).&lt;/p&gt; &lt;p&gt;La creación del nombre del lenguaje, C#, proviene de dibujar dos signos positivos encima de los dos signos positivos de "C++", queriendo dar una imagen de salto evolutivo del mismo modo que ocurrió con el paso de C a C++.&lt;/p&gt; &lt;p&gt;C#, como parte de la plataforma.NET, está normalizado por &lt;a href="http://es.wikipedia.org/wiki/ECMA" title="ECMA"&gt;ECMA&lt;/a&gt; desde diciembre de 2001 (&lt;a href="http://www.ecma-international.org/publications/standards/Ecma-334.htm" class="external text" rel="nofollow"&gt;ECMA-334&lt;/a&gt; "Especificación del lenguaje C#"). El 7 de noviembre de 2005 salió la versión 2.0 del lenguaje que incluía mejoras tales como tipos genéricos, métodos anónimos, iteradores, tipos parciales y tipos anulables. El 19 de noviembre de 2007 salió la versión 3.0 de C# destacando entre las mejoras los tipos implícitos, &lt;a href="http://es.wikipedia.org/wiki/Tipos_an%C3%B3nimos" title="Tipos anónimos"&gt;tipos anónimos&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/LINQ" title="LINQ" class="mw-redirect"&gt;LINQ&lt;/a&gt; (&lt;i&gt;Language Integrated Query&lt;/i&gt; -consulta integrada en el lenguaje).&lt;/p&gt; &lt;p&gt;Aunque C# forma parte de la plataforma.NET, ésta es una &lt;a href="http://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones" title="Interfaz de programación de aplicaciones"&gt;interfaz de programación de aplicaciones&lt;/a&gt; (&lt;b&gt;API&lt;/b&gt;); mientras que C# es un lenguaje de programación independiente diseñado para generar programas sobre dicha plataforma. Ya existe un &lt;a href="http://es.wikipedia.org/wiki/Compilador" title="Compilador"&gt;compilador&lt;/a&gt; implementado que provee el marco de &lt;a href="http://es.wikipedia.org/wiki/DotGNU" title="DotGNU"&gt;DotGNU&lt;/a&gt; - &lt;a href="http://es.wikipedia.org/wiki/Proyecto_Mono" title="Proyecto Mono"&gt;Mono&lt;/a&gt; que genera programas para distintas plataformas como &lt;a href="http://es.wikipedia.org/wiki/Win32" title="Win32" class="mw-redirect"&gt;Win32&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/UNIX" title="UNIX" class="mw-redirect"&gt;UNIX&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/Linux" title="Linux" class="mw-redirect"&gt;Linux&lt;/a&gt;.&lt;/p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Tipos de datos:&lt;/span&gt; &lt;p&gt;C# contiene dos categorías generales de tipos de datos integrados: &lt;b&gt;tipos de valor&lt;/b&gt; y &lt;b&gt;tipos de referencia&lt;/b&gt;. El término &lt;b&gt;tipo de valor&lt;/b&gt; indica que esos tipos contienen directamente sus valores.&lt;/p&gt; &lt;p&gt;C# define ocho tipos de enteros, a saber:&lt;/p&gt; &lt;table style="width: 348px; height: 386px;" class="wikitable" border="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th colspan="4"&gt;Tipo de datos de enteros&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Tipo&lt;/th&gt; &lt;th&gt;Ancho en bits&lt;/th&gt; &lt;th&gt;Rango&lt;/th&gt; &lt;th&gt;Significado&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/td&gt; &lt;td&gt;8&lt;/td&gt; &lt;td&gt;De 0 a 255&lt;/td&gt; &lt;td&gt;Entero sin signo de 8 bits&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;sbyte&lt;/b&gt;&lt;/td&gt; &lt;td&gt;8&lt;/td&gt; &lt;td&gt;De -128 a 127&lt;/td&gt; &lt;td&gt;Entero con signo de 8 bits&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;short&lt;/b&gt;&lt;/td&gt; &lt;td&gt;16&lt;/td&gt; &lt;td&gt;De -32.768 a 32.767&lt;/td&gt; &lt;td&gt;Entero corto&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;ushort&lt;/b&gt;&lt;/td&gt; &lt;td&gt;16&lt;/td&gt; &lt;td&gt;De 0 a 65.535&lt;/td&gt; &lt;td&gt;Entero corto sin signo&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;int&lt;/b&gt;&lt;/td&gt; &lt;td&gt;32&lt;/td&gt; &lt;td&gt;De -2.147.483.648 a 2.147.483.647&lt;/td&gt; &lt;td&gt;Entero medio&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;uint&lt;/b&gt;&lt;/td&gt; &lt;td&gt;32&lt;/td&gt; &lt;td&gt;De 0 a 4.294.967.295&lt;/td&gt; &lt;td&gt;Entero medio sin signo&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;long&lt;/b&gt;&lt;/td&gt; &lt;td&gt;64&lt;/td&gt; &lt;td&gt;De -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807&lt;/td&gt; &lt;td&gt;Entero largo&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;ulong&lt;/b&gt;&lt;/td&gt; &lt;td&gt;64&lt;/td&gt; &lt;td&gt;De 0 a 18.446.744.073.709.551.615&lt;/td&gt; &lt;td&gt;Entero largo sin signo&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Los tipos de punto flotante pueden representar números con componentes fraccionales. Existen dos clases de tipos de punto flotante; &lt;b&gt;float&lt;/b&gt; y &lt;b&gt;double&lt;/b&gt;. El tipo &lt;b&gt;double&lt;/b&gt; es el más utilizado porque muchas funciones matemáticas de la biblioteca de clases de C# usan valores &lt;b&gt;double&lt;/b&gt;. Quizá, el tipo flotante más interesante de C# es &lt;b&gt;decimal&lt;/b&gt;, dirigido al uso de cálculos monetarios. La aritmética de punto flotante normal está sujeta a una variedad de errores de redondeo cuando se aplica a valores decimales. El tipo &lt;b&gt;decimal&lt;/b&gt; elimina estos errores y puede representar hasta 28 lugares decimales.&lt;/p&gt; &lt;table style="width: 397px; height: 194px;" class="wikitable" border="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th colspan="4"&gt;Tipo de datos de punto flotante&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Tipo&lt;/th&gt; &lt;th&gt;Ancho en bits&lt;/th&gt; &lt;th&gt;Rango&lt;/th&gt; &lt;th&gt;Significado&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;float&lt;/b&gt;&lt;/td&gt; &lt;td&gt;32&lt;/td&gt; &lt;td&gt;De 1,5E-45 a 3,4E+38&lt;/td&gt; &lt;td&gt;Punto flotante corto&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;double&lt;/b&gt;&lt;/td&gt; &lt;td&gt;64&lt;/td&gt; &lt;td&gt;De 5E-324 a 1,7E+308&lt;/td&gt; &lt;td&gt;Punto flotante largo&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;decimal&lt;/b&gt;&lt;/td&gt; &lt;td&gt;128&lt;/td&gt; &lt;td&gt;De 1E-28 a 7,9E+28&lt;/td&gt; &lt;td&gt;Punto flotante monetario&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Los caracteres en C# no son cantidades de 8 bits como en otros muchos lenguajes de programación. Por el contrario, C# usa un tipo de caracteres de 16 bits llamado &lt;a href="http://es.wikipedia.org/wiki/Unicode" title="Unicode"&gt;Unicode&lt;/a&gt; al cual se le llama &lt;b&gt;char&lt;/b&gt;. No existen conversiones automáticas de tipo entero a &lt;b&gt;char&lt;/b&gt;.&lt;/p&gt; &lt;table style="width: 400px; height: 108px;" class="wikitable" border="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th colspan="4"&gt;Tipo de datos de carácteres&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Tipo&lt;/th&gt; &lt;th&gt;Ancho en bits&lt;/th&gt; &lt;th&gt;Rango&lt;/th&gt; &lt;th&gt;Significado&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;char&lt;/b&gt;&lt;/td&gt; &lt;td&gt;16&lt;/td&gt; &lt;td&gt;De 0 a 65,535 (código Unicode)&lt;/td&gt; &lt;td&gt;Carácter&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;table class="wikitable" border="1"&gt;&lt;/table&gt; &lt;p&gt;No existe una conversión definida entre &lt;b&gt;bool&lt;/b&gt; y los valores enteros (1 no se convierte a verdadero ni 0 se convierte a falso).&lt;/p&gt;&lt;table style="width: 389px; height: 124px;" class="wikitable" border="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th colspan="4"&gt;Tipo de datos lógicos&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Tipo&lt;/th&gt; &lt;th&gt;Ancho en bits&lt;/th&gt; &lt;th&gt;Rango&lt;/th&gt; &lt;th&gt;Significado&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;bool&lt;/b&gt;&lt;/td&gt; &lt;td&gt;1&lt;/td&gt; &lt;td&gt;true or false, no se usa 1 ó 0 ya que no hay conversión definida&lt;/td&gt; &lt;td&gt;true or false&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Constantes:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;p&gt;Las constantes en C# se denominan &lt;i&gt;literales&lt;/i&gt;. Todas las constantes tienen un tipo de dato, en caso de ser una constante entera se usa la de menor tamaño que pueda alojarla, empezando por &lt;b&gt;int&lt;/b&gt;. En caso de punto flotante se considera como un &lt;b&gt;double&lt;/b&gt;. Sin embargo se puede especificar explícitamente el tipo de dato que una constante deberá usar, por medio de los sufijos:&lt;/p&gt; &lt;table class="wikitable" border="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th&gt;Sufijo&lt;/th&gt; &lt;th&gt;Tipo de dato&lt;/th&gt; &lt;th&gt;Ejemplo&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;L&lt;/td&gt; &lt;td&gt;long&lt;/td&gt; &lt;td&gt;12L&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;UL&lt;/td&gt; &lt;td&gt;ulong&lt;/td&gt; &lt;td&gt;68687UL&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;F&lt;/td&gt; &lt;td&gt;float&lt;/td&gt; &lt;td&gt;10,19F&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;M&lt;/td&gt; &lt;td&gt;decimal&lt;/td&gt; &lt;td&gt;9,95M&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;En ocasiones, resulta más sencillo usar un sistema numérico basado en 16 en lugar de 10, para tal caso C# permite especificar constantes enteras en formato &lt;a href="http://es.wikipedia.org/wiki/Hexadecimal" title="Hexadecimal" class="mw-redirect"&gt;hexadecimal&lt;/a&gt;, y se hace empezando con &lt;b&gt;0x&lt;/b&gt;. Por ejemplo: &lt;b&gt;0xFF&lt;/b&gt; equivale a 255 en decimal.&lt;/p&gt; &lt;p&gt;C# tiene carácteres denominados &lt;b&gt;secuencias de escape&lt;/b&gt; para facilitar la escritura con el teclado de símbolos que carecen de representación visual. Estos son:&lt;/p&gt; &lt;table class="wikitable" border="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th&gt;Secuencia de escape&lt;/th&gt; &lt;th&gt;Descripción&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\a&lt;/td&gt; &lt;td&gt;Alerta (timbre)&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\b&lt;/td&gt; &lt;td&gt;Retroceso&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\f&lt;/td&gt; &lt;td&gt;Avance de página&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\n&lt;/td&gt; &lt;td&gt;Nueva línea&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\r&lt;/td&gt; &lt;td&gt;Retorno de carro&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\t&lt;/td&gt; &lt;td&gt;Tabulador horizontal&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\v&lt;/td&gt; &lt;td&gt;Tabulador vertical&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\0&lt;/td&gt; &lt;td&gt;Nulo&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\'&lt;/td&gt; &lt;td&gt;Comilla sencilla&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\"&lt;/td&gt; &lt;td&gt;Comilla doble&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;\\&lt;/td&gt; &lt;td&gt;Diagonal invertida&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;C#, al igual que C++, es compatible con el tipo de constante cadena de caracteres. Dentro de la cadena de caracteres se pueden usar secuencias de escape. Una cadena de caracteres puede iniciarse con el símbolo &lt;b&gt;@&lt;/b&gt; seguido por una cadena entre comillas, en tal caso, las secuencias de escape no tienen efecto y además la cadena puede ocupar dos o más líneas.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Variables:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Toda variable se debe declarar antes de ser utilizada. La forma en que se declara una variable en C# es la siguiente:&lt;/p&gt; &lt;p&gt;&lt;code&gt;tipo nombre_variable;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Para asignar un valor a una variable:&lt;/p&gt; &lt;p&gt;&lt;code&gt;nombre_variable = valor&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Las conversiones de tipo de variables en C# se representan en la siguiente tabla en donde la fila es el origen y la columna el destino. Los significados de las letras son: &lt;b&gt;A&lt;/b&gt; (Conversión automática o implícita), &lt;b&gt;E&lt;/b&gt; (Conversión explícita), &lt;b&gt;I&lt;/b&gt; (Conversión incompatible).&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7_ZQdva14nc/SseFF9huTRI/AAAAAAAAAvk/SAtTV9tijO0/s1600-h/Sin+titulo-1+copia.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://3.bp.blogspot.com/_7_ZQdva14nc/SseFF9huTRI/AAAAAAAAAvk/SAtTV9tijO0/s400/Sin+titulo-1+copia.jpg" alt="" id="BLOGGER_PHOTO_ID_5388421816633937170" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Toda conversión implícita no ocasiona pérdida de información, truncamientos o redondeos.&lt;/li&gt;&lt;li&gt;Es posible (mas no siempre ocurre) que en una conversión explícita haya pérdida de información, truncamientos o redondeos.&lt;/li&gt;&lt;li&gt;En toda conversión implícita el tipo de dato destino es mayor que el tipo de dato origen.&lt;/li&gt;&lt;li&gt;La conversión explícita se realiza de la siguiente forma: &lt;code&gt;(tipo-destino) expresion&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Además de realizarse dentro de una asignación, las conversiones de tipos también tienen lugar dentro de una expresión, pues en cada operación ambos operandos deben de ser del mismo tipo. Si la conversión es del tipo implícito se efectúa el siguiente algoritmo en dicho orden:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Si un operando es &lt;b&gt;decimal&lt;/b&gt;, el otro operando se transforma a &lt;b&gt;decimal&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Si un operando es &lt;b&gt;double&lt;/b&gt;, el otro operando se transforma a &lt;b&gt;double&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Si un operando es &lt;b&gt;float&lt;/b&gt;, el otro operando se transforma a &lt;b&gt;float&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Si un operando es &lt;b&gt;ulong&lt;/b&gt;, el otro operando se transforma a &lt;b&gt;ulong&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Si un operando es &lt;b&gt;long&lt;/b&gt;, el otro operando se transforma a &lt;b&gt;long&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Si un operando es &lt;b&gt;uint&lt;/b&gt;, y si el otro operando es de tipo &lt;b&gt;sbyte&lt;/b&gt;, &lt;b&gt;short&lt;/b&gt; o &lt;b&gt;int&lt;/b&gt;, los dos se transforman a &lt;b&gt;long&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Si un operando es &lt;b&gt;uint&lt;/b&gt;, el otro operando se transforma a &lt;b&gt;uint&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Si ninguno de los casos anteriores, los dos operandos se transforman a &lt;b&gt;int.&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Operadores:&lt;/span&gt;&lt;br /&gt;&lt;p&gt;C# tiene cuatro clases generales de operadores: &lt;b&gt;aritméticos&lt;/b&gt;, &lt;b&gt;a nivel de bit&lt;/b&gt;, &lt;b&gt;relacionales&lt;/b&gt; y &lt;b&gt;lógicos&lt;/b&gt;.&lt;/p&gt; &lt;table style="width: 343px; height: 571px;" class="wikitable" border="1"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th colspan="3"&gt;Operadores&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Operador&lt;/th&gt; &lt;th&gt;Significado&lt;/th&gt; &lt;th&gt;Tipo&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;+&lt;/td&gt; &lt;td&gt;Suma&lt;/td&gt; &lt;td&gt;Aritmético&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;-&lt;/td&gt; &lt;td&gt;Resta&lt;/td&gt; &lt;td&gt;Aritmético&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;*&lt;/td&gt; &lt;td&gt;Producto&lt;/td&gt; &lt;td&gt;Aritmético&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;/&lt;/td&gt; &lt;td&gt;División&lt;/td&gt; &lt;td&gt;Aritmético&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; %&lt;/td&gt; &lt;td&gt;Módulo (residuo entero)&lt;/td&gt; &lt;td&gt;Aritmético&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;++&lt;/td&gt; &lt;td&gt;Incremento&lt;/td&gt; &lt;td&gt;Aritmético&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;--&lt;/td&gt; &lt;td&gt;Decremento&lt;/td&gt; &lt;td&gt;Aritmético&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;==&lt;/td&gt; &lt;td&gt;Igual que&lt;/td&gt; &lt;td&gt;Relacional&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; !=&lt;/td&gt; &lt;td&gt;Distinto que&lt;/td&gt; &lt;td&gt;Relacional&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&gt;&lt;/td&gt; &lt;td&gt;Mayor que&lt;/td&gt; &lt;td&gt;Relacional&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;&lt;/td&gt; &lt;td&gt;Menor que&lt;/td&gt; &lt;td&gt;Relacional&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&gt;=&lt;/td&gt; &lt;td&gt;Mayor o igual que&lt;/td&gt; &lt;td&gt;Relacional&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;=&lt;/td&gt; &lt;td&gt;Menor o igual que&lt;/td&gt; &lt;td&gt;Relacional&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&amp;amp;&lt;/td&gt; &lt;td&gt;AND&lt;/td&gt; &lt;td&gt;Lógico y a nivel de bits&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;|&lt;/td&gt; &lt;td&gt;OR&lt;/td&gt; &lt;td&gt;Lógico y a nivel de bits&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;^&lt;/td&gt; &lt;td&gt;XOR y de nivel de bits&lt;/td&gt; &lt;td&gt;Lógico&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;||&lt;/td&gt; &lt;td&gt;OR de cortocircuito&lt;/td&gt; &lt;td&gt;Lógico&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&amp;amp;&amp;amp;&lt;/td&gt; &lt;td&gt;AND de cortocircuito&lt;/td&gt; &lt;td&gt;Lógico&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; !&lt;/td&gt; &lt;td&gt;NOT&lt;/td&gt; &lt;td&gt;Lógico&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;~&lt;/td&gt; &lt;td&gt;Complemento a uno&lt;/td&gt; &lt;td&gt;A nivel de bits&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;&lt;&lt;/td&gt; &lt;td&gt;Desplazamiento a la izquierda&lt;/td&gt; &lt;td&gt;A nivel de bits&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&gt;&gt;&lt;/td&gt; &lt;td&gt;Desplazamiento a la derecha&lt;/td&gt; &lt;td&gt;A nivel de bits&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;ul&gt;&lt;li&gt;Los operadores aritméticos funcionan igual que en C y C++.&lt;/li&gt;&lt;li&gt;El resultado de los operadores relacionales y lógicos es un valor &lt;b&gt;bool&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Los operadores de cortocircuito evalúan el segundo operando solo cuando es necesario.&lt;/li&gt;&lt;li&gt;Los operadores a nivel de bit no se pueden aplicar a tipos &lt;b&gt;bool&lt;/b&gt;, &lt;b&gt;float&lt;/b&gt;, &lt;b&gt;double&lt;/b&gt; o &lt;b&gt;decimal&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 153);"&gt;Instrucciones de control:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La instrucción &lt;b&gt;if-else&lt;/b&gt; es básicamente igual que en C, C++ y Java.&lt;/li&gt;&lt;li&gt;La diferencia de la instrucción &lt;b&gt;switch&lt;/b&gt; con la versión de C, C++ y Java es que todo cuerpo perteneciente a un &lt;b&gt;case&lt;/b&gt; debe de toparse con un &lt;b&gt;break&lt;/b&gt; o un &lt;b&gt;goto&lt;/b&gt; antes de toparse con otro &lt;b&gt;case&lt;/b&gt;, a menos que dicho cuerpo esté vacío.&lt;/li&gt;&lt;li&gt;La instrucción &lt;b&gt;for&lt;/b&gt; es básicamente igual que en C, C++ y Java.&lt;/li&gt;&lt;li&gt;La instrucción &lt;b&gt;while&lt;/b&gt; es básicamente igual que en C, C++ y Java.&lt;/li&gt;&lt;li&gt;La instrucción &lt;b&gt;do-while&lt;/b&gt; es básicamente igual que en C, C++ y Java.&lt;/li&gt;&lt;li&gt;La instrucción &lt;b&gt;foreach&lt;/b&gt; realiza un ciclo a través de los elementos de una colección (grupo de objetos). El formato de esta instrucción es: &lt;code&gt;foreach(tipo variable in coleccion) instruccion;&lt;/code&gt;. En este ciclo se recorre la colección y la variable recibe un respectivo elemento de dicha colección en cada iteración.&lt;/li&gt;&lt;li&gt;Al igual que en C y C++, la instrucción &lt;b&gt;break&lt;/b&gt; permite forzar la salida de un ciclo omitiendo el código restante en el cuerpo del ciclo.&lt;/li&gt;&lt;li&gt;Al igual que en C y C++, la instrucción &lt;b&gt;continue&lt;/b&gt; permite forzar la repetición temprana de un ciclo omitiendo el código restante en el cuerpo del ciclo.&lt;/li&gt;&lt;li&gt;La instrucción &lt;b&gt;return&lt;/b&gt; es básicamente igual que en C, C++. Se utiliza para devolver un valor y salir de un método.&lt;/li&gt;&lt;li&gt;La instrucción &lt;b&gt;goto&lt;/b&gt; se sigue utilizando en C# a pesar de toda la polémica que esto conlleva.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;Métodos:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Todo método debe de ser parte de una clase, no existen métodos globales.&lt;/li&gt;&lt;li&gt;De forma predeterminada, los parámetros se pasan por valor (se copia dicho valor).&lt;/li&gt;&lt;li&gt;El modificador &lt;b&gt;ref&lt;/b&gt; fuerza a pasar los parámetros por referencia en vez de pasarlos por valor.&lt;/li&gt;&lt;li&gt;El modificador &lt;b&gt;out&lt;/b&gt; es similar al modificador &lt;b&gt;ref&lt;/b&gt; con una excepción: sólo se puede utilizar para pasar un valor fuera de un método. El método debe de asignar un valor al parámetro antes de que el método finalice.&lt;/li&gt;&lt;li&gt;Cuando &lt;b&gt;ref&lt;/b&gt; y &lt;b&gt;out&lt;/b&gt; modifican un parámetro de referencia, la propia referencia se pasa por referencia.&lt;/li&gt;&lt;li&gt;El modificador &lt;b&gt;params&lt;/b&gt; sirve para definir un número variable de argumentos los cuales se implementan como una matriz. Ejemplo: &lt;code&gt;public int maxVal(params int[] nums){...}&lt;/code&gt;, esta función se podría llamar así: &lt;code&gt;maxVal(23,3,a,-12);&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Un método debe tener como máximo un único parámetro &lt;b&gt;params&lt;/b&gt; y éste debe de ser el último.&lt;/li&gt;&lt;li&gt;Un método puede devolver cualquier tipo de datos, incluyendo tipos de clase.&lt;/li&gt;&lt;li&gt;Ya que en C# las matrices se implementan como objetos, un método también puede devolver una matriz (algo que se diferencia de C++ en que las matrices no son válidas como tipos de valores devueltos).&lt;/li&gt;&lt;li&gt;C# implementa &lt;b&gt;sobrecarga de métodos&lt;/b&gt;, dos o más métodos pueden tener el mismo nombre siempre y cuando se diferencien por sus parámetros.&lt;/li&gt;&lt;li&gt;El método &lt;b&gt;Main&lt;/b&gt; es un método especial al cual se refiere el punto de partida del programa. Tiene la siguiente sintaxis: &lt;code&gt;public static int Main(string[] args){...}&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Clases y objetos:&lt;/span&gt;&lt;br /&gt;&lt;p&gt;Varios puntos a tener en cuenta en C# con respecto a clases y objetos son los siguientes:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Una variable de objeto de cierta clase no almacena los valores del objeto sino su referencia (al igual que Java).&lt;/li&gt;&lt;li&gt;El operador de asignación no copia los valores de un objeto, sino su referencia a él (al igual que Java).&lt;/li&gt;&lt;li&gt;Un constructor tiene el mismo nombre que su clase y es sintácticamente similar a un método.&lt;/li&gt;&lt;li&gt;Un constructor no devuelve ningún valor.&lt;/li&gt;&lt;li&gt;Al igual que los métodos, los constructores también pueden ser sobrecargados.&lt;/li&gt;&lt;li&gt;Si no se especifica un constructor en una clase, se usa uno por defecto que consiste en asignar a todas las variables el valor de &lt;b&gt;0&lt;/b&gt;, &lt;b&gt;null&lt;/b&gt; o &lt;b&gt;false&lt;/b&gt; según corresponda.&lt;/li&gt;&lt;li&gt;Para crear un nuevo objeto se utiliza la siguiente sintaxis: &lt;code&gt;variable = new nombre_clase();&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Un destructor se declara como un constructor, aunque va precedido por un signo de tilde ~.&lt;/li&gt;&lt;li&gt;Se emplea una desasignación de memoria de objetos no referenciados (recolección de basura), y cuando esto ocurre se ejecuta el destructor de dicha clase.&lt;/li&gt;&lt;li&gt;El destructor de una clase no se llama cuando un objeto sale del ámbito.&lt;/li&gt;&lt;li&gt;Todos los destructores se llamarán antes de que finalice un programa.&lt;/li&gt;&lt;li&gt;La palabra clave &lt;b&gt;this&lt;/b&gt; es un apuntador al mismo objeto en el cual se usa.&lt;/li&gt;&lt;li&gt;La palabra clave &lt;b&gt;static&lt;/b&gt; hace que un miembro pertenezca a una clase en vez de pertener a objetos de dicha clase. Se puede tener acceso a dicho miembro antes de que se cree cualquier objeto de su clase y sin referencias a un objeto.&lt;/li&gt;&lt;li&gt;Un método &lt;b&gt;static&lt;/b&gt; no tiene una referencia &lt;b&gt;this&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Un método &lt;b&gt;static&lt;/b&gt; puede llamar sólo a otros métodos &lt;b&gt;static&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Un método &lt;b&gt;static&lt;/b&gt; sólo debe tener acceso directamente a datos &lt;b&gt;static&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Un constructor &lt;b&gt;static&lt;/b&gt; se usa para inicializar atributos que se aplican a una clase en lugar de aplicarse a una instancia.&lt;/li&gt;&lt;li&gt;C# permite la sobrecarga de operadores con la palabra clave &lt;b&gt;operator&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Matrices:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;En C# las matrices se implementan como objetos.&lt;/li&gt;&lt;li&gt;Para crear una matriz se utiliza el siguiente formato: &lt;code&gt;tipo[] nombre_matriz = new tipo[tamaño];&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Se puede crear una matriz inicializada así: &lt;code&gt;tipo[] nombre_matriz = { val1 , val2 , val3 , ... , valN };&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Los índices de las matrices comienzan en 0.&lt;/li&gt;&lt;li&gt;Para crear una matriz &lt;b&gt;bidimensional&lt;/b&gt; se utiliza el siguiente formato: &lt;code&gt;tipo[,] nombre_matriz = new tipo[filas,columnas]&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Para referirse a un elemento de una matriz bidimensional no se usa la forma &lt;code&gt;matriz[fila][columna]&lt;/code&gt; (la cual usa C++), si no &lt;code&gt;matriz[fila,columna]&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Ya que C# implementa matrices como objetos, cada matriz tiene asociada una propiedad &lt;b&gt;Length&lt;/b&gt; que contiene el número de elementos que puede alojar cada matriz.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&lt;br /&gt;Cadenas de carácteres:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El tipo de dato cadena se llama &lt;b&gt;string&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Realmente la palabra clave &lt;b&gt;string&lt;/b&gt; es un alias de la clase &lt;b&gt;System.String&lt;/b&gt; de la plataforma .NET.&lt;/li&gt;&lt;li&gt;En C# las cadenas son objetos y no una matriz de caracteres, aun así, se puede obtener un carácter arbitrario de una cadena por medio de su índice (mas no modificarlo).&lt;/li&gt;&lt;li&gt;La forma más común de construir una cadena es por medio de una literal o constante: &lt;code&gt;string str = "Una cadena";&lt;/code&gt;&lt;/li&gt;&lt;li&gt;El operador &lt;b&gt;==&lt;/b&gt; determina si dos referencias hacen referencia al mismo objeto, pero al usar dicho operador con dos operandos tipo &lt;b&gt;string&lt;/b&gt; se prueba la igualdad del contenido de las cadenas y no su referencia. Sin embargo, con el resto de los operadores relacionales, como &lt;b&gt;&lt;&lt;/b&gt; o &lt;b&gt;&gt;=&lt;/b&gt; se comparan las referencias.&lt;/li&gt;&lt;li&gt;Se pueden concatenar (unir) dos cadenas mediante el operador &lt;b&gt;+&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Las cadenas son inmutables, una vez creadas no se pueden modificar, solo se pueden copiar total o parcialmente.&lt;/li&gt;&lt;li&gt;Las cadenas se pueden usar en las instrucciones &lt;b&gt;switch&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;  &lt;table style="width: 399px; height: 421px;" class="wikitable" border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th colspan="2"&gt;Métodos comunes de control de cadenas&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;th&gt;Método&lt;/th&gt; &lt;th&gt;Descripción&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;&lt;code&gt;static string Copy(string str)&lt;/code&gt;&lt;/b&gt;&lt;/td&gt; &lt;td&gt;Devuelve una copia de str.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;&lt;code&gt;int CompareTo(string str)&lt;/code&gt;&lt;/b&gt;&lt;/td&gt; &lt;td&gt;Devuelve menor que cero si la cadena que llama es menor que str, mayor que cero si la cadena que llama es mayor que str, y cero si las cadenas son iguales.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;&lt;code&gt;int IndexOf(string str)&lt;/code&gt;&lt;/b&gt;&lt;/td&gt; &lt;td&gt;Busca en la cadena que llama la subcadena especificada por str. &lt;p&gt;Devuelve el índice de la primera coincidencia, o -1 en caso de error.&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;&lt;code&gt;int LastIndexOf(string str)&lt;/code&gt;&lt;/b&gt;&lt;/td&gt; &lt;td&gt;Busca en la cadena que llama la subcadena especificada por str. Devuelve el índice de la última coincidencia, o -1 en caso de error.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;&lt;code&gt;string ToLower&lt;/code&gt;&lt;/b&gt;&lt;/td&gt; &lt;td&gt;Devuelve una versión en minúsculas de la cadena que llama.&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;&lt;code&gt;string ToUpper&lt;/code&gt;&lt;/b&gt;&lt;/td&gt; &lt;td&gt;Devuelve una versión en mayúsculas de la cadena que llama.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Compiladores:&lt;/span&gt;&lt;/span&gt;&lt;span class="mw-headline" id="Metas_del_dise.C3.B1o_del_lenguaje"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;En la actualidad existen los siguientes &lt;a href="http://es.wikipedia.org/wiki/Compilador" title="Compilador"&gt;compiladores&lt;/a&gt; para el lenguaje C#:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC&amp;amp;displaylang=en" class="external text" rel="nofollow"&gt;Microsoft.NET framework SDK&lt;/a&gt; incluye un compilador de C#, pero no un &lt;a href="http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado" title="Entorno de desarrollo integrado"&gt;IDE&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://es.wikipedia.org/wiki/Microsoft_Visual_Studio" title="Microsoft Visual Studio"&gt;Microsoft Visual Studio .NET&lt;/a&gt;, IDE por excelencia de este lenguaje, versión 2002, 2003, 2005, 2008 y 2010(beta).&lt;/li&gt;&lt;li&gt;&lt;a href="http://es.wikipedia.org/wiki/SharpDevelop" title="SharpDevelop"&gt;#develop&lt;/a&gt;, es un IDE &lt;a href="http://es.wikipedia.org/wiki/Software_Libre" title="Software Libre" class="mw-redirect"&gt;libre&lt;/a&gt; para C# bajo licencia &lt;a href="http://es.wikipedia.org/wiki/GNU_LGPL" title="GNU LGPL" class="mw-redirect"&gt;LGPL&lt;/a&gt;, muy similar a Microsoft Visual C#.&lt;/li&gt;&lt;li&gt;&lt;a href="http://es.wikipedia.org/wiki/Proyecto_Mono" title="Proyecto Mono"&gt;Mono&lt;/a&gt;, es una implementación &lt;a href="http://es.wikipedia.org/wiki/Licencia_p%C3%BAblica_general_de_GNU" title="Licencia pública general de GNU" class="mw-redirect"&gt;GPL&lt;/a&gt; de todo el entorno &lt;a href="http://es.wikipedia.org/wiki/.NET_de_Microsoft" title=".NET de Microsoft" class="mw-redirect"&gt;.NET&lt;/a&gt; desarrollado por &lt;a href="http://es.wikipedia.org/wiki/Novell" title="Novell"&gt;Novell&lt;/a&gt;. Como parte de esta implementación se incluye un compilador de C#.&lt;/li&gt;&lt;li&gt;&lt;a href="http://es.wikipedia.org/wiki/Delphi" title="Delphi"&gt;Delphi&lt;/a&gt; 2006, de &lt;a href="http://es.wikipedia.org/wiki/Borland" title="Borland"&gt;Borland&lt;/a&gt; Software Corporation.&lt;/li&gt;&lt;li&gt;&lt;a href="http://es.wikipedia.org/wiki/DotGNU" title="DotGNU"&gt;dotGNU&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/Portable.NET" title="Portable.NET"&gt;Portable.NET&lt;/a&gt;, de la &lt;a href="http://es.wikipedia.org/wiki/Free_Software_Foundation" title="Free Software Foundation"&gt;Free Software Foundation&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;Metas del diseño del lenguaje:&lt;/span&gt;&lt;br /&gt;&lt;p&gt;El estándar &lt;a href="http://es.wikipedia.org/wiki/ECMA" title="ECMA"&gt;ECMA&lt;/a&gt; lista las siguientes metas en el diseño para C#:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Lenguaje de programación orientado a objetos &lt;b&gt;simple, moderno y de propósito general&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Inclusión de principios de &lt;a href="http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software" title="Ingeniería de software"&gt;ingeniería de software&lt;/a&gt; tales como revisión estricta de los tipos de datos, revisión de límites de vectores, detección de intentos de usar variables no inicializadas, y recolección de basura automática.&lt;/li&gt;&lt;li&gt;Capacidad para desarrollar &lt;a href="http://es.wikipedia.org/wiki/Componentes_de_software" title="Componentes de software"&gt;componentes de software&lt;/a&gt; que se puedan usar en ambientes distribuidos.&lt;/li&gt;&lt;li&gt;&lt;a href="http://es.wikipedia.org/w/index.php?title=Aplicaciones_portables&amp;amp;action=edit&amp;amp;redlink=1" class="new" title="Aplicaciones portables (aún no redactado)"&gt;Portabilidad del código fuente&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fácil migración del programador al nuevo lenguaje, especialmente para programadores familiarizados con C y &lt;a href="http://es.wikipedia.org/wiki/C%2B%2B" title="C++"&gt;C++&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Soporte para &lt;a href="http://es.wikipedia.org/wiki/Internacionalizaci%C3%B3n_%28computaci%C3%B3n%29" title="Internacionalización (computación)" class="mw-redirect"&gt;internacionalización&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Adecuación para escribir aplicaciones de cualquier tamaño: desde las más grandes y sofisticadas como &lt;a href="http://es.wikipedia.org/wiki/Sistemas_operativos" title="Sistemas operativos" class="mw-redirect"&gt;sistemas operativos&lt;/a&gt; hasta las más pequeñas funciones.&lt;/li&gt;&lt;li&gt;Aplicaciones económicas en cuanto a memoria y procesado.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Enlaces externos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;En castellano:&lt;/span&gt;&lt;br /&gt;&lt;span class="mw-headline" id="En_Castellano"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/es-es/vcsharp/default.aspx" class="external text" rel="nofollow"&gt;Centro de desarrolladores de Visual C#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pedrov.phpnet.us/" class="external text" rel="nofollow"&gt;Programación con C#&lt;/a&gt; Libro digital sobre programación en .NET con C#&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gruposyahoo.com.ar/group/DesarrolloCSharp" class="external text" rel="nofollow"&gt;Desarrollo de Software en C#&lt;/a&gt; Comunidad virtual para el intercambio de información en castellano sobre desarrollo de software en C# para profesionales practicantes, docentes y estudiantes.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.devjoker.com/asp/indice_contenido.aspx?co_grupo=TUCS&amp;amp;as_categoria=1" class="external text" rel="nofollow"&gt;Devjoker&lt;/a&gt; - C# en español. Tutoriales y foros.&lt;/li&gt;&lt;li&gt;&lt;a href="http://geeks.ms/" class="external text" rel="nofollow"&gt;Geeks.ms&lt;/a&gt; Blogs sobre desarrolladores en plataforma.Net y C#&lt;/li&gt;&lt;li&gt;&lt;a href="http://es.csharp-online.net/" class="external text" rel="nofollow"&gt;C# Online.NET&lt;/a&gt; - su enciclopedia libre de C# y.NET en español.&lt;/li&gt;&lt;li&gt;Kit de desarrollo de software (SDK) de Microsoft.NET Framework 2.0 &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;amp;FamilyID=fe6f2099-b7b4-4f47-a244-c96d69c35dec" class="external text" rel="nofollow"&gt;(x86)&lt;/a&gt;, &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;amp;FamilyID=1AEF6FCE-6E06-4B66-AFE4-9AAD3C835D3D" class="external text" rel="nofollow"&gt;(x64)&lt;/a&gt; e &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;amp;FamilyID=F4DD601B-1B88-47A3-BDC1-79AFA79F6FB0" class="external text" rel="nofollow"&gt;(IA64)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mono-hispano.org/" class="external text" rel="nofollow"&gt;Mono para la comunidad de habla hispana&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.elbruno.com/" class="external text" rel="nofollow"&gt;ElBruno&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Esto fue sacado de la &lt;a href="http://www.wikipedia.org/"&gt;WIKIPEDIA&lt;/a&gt; donde el articulo es más grueso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4119807658464152340?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4119807658464152340/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/aprendiendo-c.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4119807658464152340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4119807658464152340'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/10/aprendiendo-c.html' title='Aprendiendo C#'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7_ZQdva14nc/SseFF9huTRI/AAAAAAAAAvk/SAtTV9tijO0/s72-c/Sin+titulo-1+copia.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-4016384892191109676</id><published>2009-09-22T11:26:00.000-07:00</published><updated>2009-09-22T14:17:51.560-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Php'/><category scheme='http://www.blogger.com/atom/ns#' term='Servidor Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>¿Qué es Joomla?</title><content type='html'>&lt;b&gt;&lt;br /&gt;Joomla!&lt;/b&gt; está calificada como C.M.S o &lt;i&gt;Content Management System&lt;/i&gt;, &lt;a href="http://es.wikipedia.org/wiki/Sistema_de_administraci%C3%B3n_de_contenidos" title="Sistema de administración de contenidos" class="mw-redirect"&gt;sistema de administración de contenidos&lt;/a&gt; y entre sus principales virtudes permite editar el contenido de un sitio web de manera sencilla. Es una aplicación de &lt;a href="http://es.wikipedia.org/wiki/C%C3%B3digo_abierto" title="Código abierto"&gt;código abierto&lt;/a&gt; construida mayoritariamente en &lt;a href="http://es.wikipedia.org/wiki/PHP" title="PHP"&gt;PHP&lt;/a&gt; bajo una licencia &lt;a href="http://es.wikipedia.org/wiki/Licencia_p%C3%BAblica_general_de_GNU" title="Licencia pública general de GNU" class="mw-redirect"&gt;GPL&lt;/a&gt;. Este administrador de contenidos puede trabajar en &lt;a href="http://es.wikipedia.org/wiki/Internet" title="Internet"&gt;Internet&lt;/a&gt; o &lt;a href="http://es.wikipedia.org/wiki/Intranet" title="Intranet"&gt;intranets&lt;/a&gt; y requiere de una &lt;a href="http://es.wikipedia.org/wiki/Base_de_datos" title="Base de datos"&gt;base de datos&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/MySQL" title="MySQL"&gt;MySQL&lt;/a&gt;, así como preferiblemente, de un &lt;a href="http://es.wikipedia.org/wiki/Servidor_HTTP_Apache" title="Servidor HTTP Apache"&gt;servidor HTTP Apache&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/SrkYZD-csJI/AAAAAAAAAvE/YDXRBokDgGk/s1600-h/logo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 219px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/SrkYZD-csJI/AAAAAAAAAvE/YDXRBokDgGk/s320/logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5384361648341168274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Características:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;En Joomla! se incluyen características como: mejorar el rendimiento web versiones imprimibles de páginas, flash con noticias, blogs, foros, polls (encuestas), calendarios, búsqueda en el sitio web, e internacionalización del lenguaje. Su nombre es una pronunciación fonética para anglófonos de la palabra swahili jumla que significa "todos juntos" o "como un todo" .Se escogió como una reflexión del compromiso del grupo de desarrolladores y la comunidad del proyecto. &lt;i&gt;(Favor de verificar incongruencia con el segundo párrafo de la sección Historia del proyecto, donde se afirma que proviene de la lengua árabe)&lt;/i&gt;&lt;/p&gt;   &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Versiones:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La primera versión de Joomla! (Joomla! 1.0.0) fue publicada el &lt;a href="http://es.wikipedia.org/wiki/16_de_septiembre" title="16 de septiembre"&gt;16 de septiembre&lt;/a&gt; de &lt;a href="http://es.wikipedia.org/wiki/2005" title="2005"&gt;2005&lt;/a&gt; y se trataba de una evolución (&lt;a href="http://es.wikipedia.org/wiki/Fork" title="Fork" class="mw-redirect"&gt;fork&lt;/a&gt;) mejorada de &lt;a href="http://es.wikipedia.org/wiki/Mambo_Open_Source" title="Mambo Open Source" class="mw-redirect"&gt;Mambo&lt;/a&gt; 4.5.2.3 combinada con modificaciones de seguridad y &lt;a href="http://es.wikipedia.org/wiki/Bug" title="Bug"&gt;anti-bugs&lt;/a&gt;. Actualmente los &lt;a href="http://es.wikipedia.org/wiki/Programador" title="Programador"&gt;programadores&lt;/a&gt; han publicado Joomla! 1.5 estable, con un código completamente reescrito y construido bajo PHP 5.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Desarrollo del proyecto:&lt;/span&gt; &lt;p&gt;Joomla corresponde al grupo de soluciones de código abierto, es un producto de software libre. Para el desarrollo de sus múltiples frentes, usa diferentes formas de comunicación como son: los encuentros por medio de IRC, foros, listas de correo, "wikis" y blogs. Este gestor de contenidos sigue las pautas marcadas por el bazar, con su objetivo principal de dar solución a las necesidades de todos aquellos que participan de una u otra forma en el proyecto.&lt;br /&gt;&lt;/p&gt;  &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Estructuras organizativas / asociativas o de decisión:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="floatright"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/Srk-ywvFsDI/AAAAAAAAAvM/6JZWRjoWLh8/s1600-h/Joomlastruc.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/Srk-ywvFsDI/AAAAAAAAAvM/6JZWRjoWLh8/s200/Joomlastruc.gif" alt="" id="BLOGGER_PHOTO_ID_5384403871294926898" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;La gestión de administración principal del proyecto esta delegada al grupo principal ("Core Team"). Todos los miembros de este grupo trabajan en conjunto como un solo grupo, comprometidos para guiar a Joomla! dentro del movimiento de código abierto. Este grupo esta compuesto por diferentes perfiles, con variadas experiencias y una serie diversa de disciplinas.&lt;/p&gt;  &lt;p&gt;Este grupo nace cuando se experimentó el surgimiento de Joomla en el 2005. El grupo principal es mucho más que una congregación de desarrolladores, su responsabilidad principal radica en la organización con respecto Joomla en su estructura funcional como organización y no únicamente en la programación del sistema de gestión de contenidos.&lt;/p&gt;  &lt;p&gt;El proyecto se constituye de varios grupos que se han creado para enriquecer el conocimiento que la comunidad Joomla proporciona. Cada uno de los grupos se centra en un aspecto especifico de Joomla! que es importante para la expansión y desarrollo, el grupo principal no puede estar en cada discusión de estos temas, por ello existe un líder y un cabecilla alterno en cada uno de los grupos que se encargan de comunicarse de forma directa con el Grupo Principal.&lt;/p&gt;  &lt;p&gt;Los grupos de trabajo suministran un canal de comunicación esencial entre la gran comunidad de Joomla! y el grupo principal de forma que traen inquietudes a la luz, mediación de cambios y extensión de información&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;  &lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Inustria relacionada:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;p&gt;Open Source Matters Inc (OSM) es una organización sin fines de lucro que se conformó bajo las leyes de los Estados Unidos y existe para soportar la parte legal y financiera del proyecto de código abierto Joomla. OSM se ha incorporado como una organización sin fines de lucro de Nueva York de forma que se garantice que el proyecto Joomla y futuros proyectos tengan una ventana para la participación de voluntarios, para habilitar la contribución de la propiedad intelectual y fondos de forma que se provee un vehículo legal para limitar la exposición de proyectos.&lt;/p&gt;  &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Estado actual:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;p&gt;De forma similar a otros proyectos, Joomla mantiene dos versiones de la aplicación: una estable y otra Beta o en desarrollo. La versión estable es la que se considera para usuarios y a medida que aparecen errores se corrigen, esta versión se publica sin nuevas funcionalidades. La versión Beta, incluye nuevas funcionalidades y mejoras a las fallas reportadas en versiones anteriores, de igual forma se tiene que en este tipo de versión se reflejan las directivas del proyecto para usuarios avanzados y desarrolladores.&lt;/p&gt;  &lt;p&gt;El 22 de enero de 2008 se ha lanzado la versión 1.5 estable de Joomla, que incorpora notables mejoras en el área de seguridad, administración y cumplimiento con estándares W3C. actualmente cuenta con una gran cantidad de componentes, módulos y plugins, aunque se pueden usar los de la version anterior (1.0.X). Unicamente hay que activar un plugin incluido llamado System - Legacy que mejora considerablemente (no por completo) la compatibilidad con los mambots para Joomla! 1.0.X.&lt;/p&gt;  &lt;p&gt;Hoy en día es el CMS más utilizado del mundo, el más seguro y con mayor crecimiento que cualquier otro.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Plataformas compatibles:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;p&gt;&lt;span style="color: rgb(0, 102, 0); font-style: italic;"&gt;En GNU/Linux:&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;Después de bajar el archivo de distribución en un directorio bajo el sitio del servidor web, ejecute la descompresión porque el archivo generalmente viene en formato zip. Este programa no necesita recompilarse porque se basa en php que es un lenguaje interpretado. Por ejemplo: si el root de su sitio web es /var/www/html es posible crear un directorio que se llame /var/www/html/joomla donde quedarán todos los guiones del programa.&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 102, 0); font-style: italic;"&gt;En Windows&lt;/span&gt;&lt;/span&gt;&lt;b style="color: rgb(0, 153, 0);"&gt;:&lt;/b&gt; De forma similar a GNU/Linux, es necesario descomprimir el archivo dentro de un directorio en la raíz del servidor web por ejemplo si apache está instalado en c:\apache, el archivo se debe crear en c:\apache\htdocs\joomla.&lt;/p&gt;  &lt;p&gt;Se asume que el usuario ha trabajado con el servidor Apache y el gestor de bases de datos MYSQL, por ello es necesario que antes de iniciar el proceso de instalación, tanto para Windows como para GNU/Linux se haya creado una base de datos en mysql con el correspondiente usuario y permisos; el siguiente paso a ejecutar es por medio del navegador, se debe entrar al directorio que se ha creado, siguiendo con nuestro ejemplo se debe ingresar al url, &lt;a href="http://su_sitio.com/joomla" class="external free" rel="nofollow"&gt;http://su_sitio.com/joomla&lt;/a&gt; de forma que se correrá un asistente que lo guiará hasta el final de la instalación.&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(0, 102, 0); font-style: italic;"&gt;En Mac OSX:&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; &lt;/span&gt;Se puede hacer de dos maneras. O bien activando el ordenador como servidor Apache mediante la función "compartir web" en Preferencias del Sistema, o instalando una aplicación denominada MAMP que a su vez instala MySQL, PHP 5 y Apache 2. De esta manera el contenido del archivo .zip de Joomla! debe ser colocado en la carpeta: Aplicaciones/MAMP/htdocs/ y luego iniciar la instalación.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Extensiones:&lt;/span&gt; &lt;p&gt;Una de sus mayores potencialidades que tiene este &lt;a href="http://es.wikipedia.org/wiki/CMS" title="CMS" class="mw-redirect"&gt;CMS&lt;/a&gt; es la gran cantidad de extensiones existentes programadas por su comunidad de usuarios que aumentan las posibilidades de Joomla con nuevas características y que se integran fácilmente en él.&lt;/p&gt;   &lt;p&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;Joomla en castellano:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Dentro del cúmulo de traducciones de Joomla! se encuentra la traducción correspondiente a &lt;a href="http://es.wikipedia.org/wiki/Idioma_espa%C3%B1ol" title="Idioma español"&gt;nuestro idioma&lt;/a&gt;. En versiones anteriores a Joomla! v1.5, las líneas de idioma se encontraban dispersas a lo largo de los archivos y directorios de esta &lt;a href="http://es.wikipedia.org/wiki/Aplicaci%C3%B3n_%28inform%C3%A1tica%29" title="Aplicación (informática)"&gt;aplicación&lt;/a&gt;, por lo que resultaba necesario reestructurar el &lt;a href="http://es.wikipedia.org/wiki/Paquete_de_software" title="Paquete de software"&gt;paquete&lt;/a&gt; completo, el cual está disponible para su libre descarga en el sitio de &lt;a href="http://www.joomlahispano.org/" class="external text" rel="nofollow"&gt;&lt;b&gt;Joomla! Hispano&lt;/b&gt;&lt;/a&gt;. A partir de la versión 1.5, se manejan las traducciones mediante paquetes especiales de forma que se logre una mayor modularidad. La traducción a nuestro idioma es una de las mejores y de las más completas que hay disponibles. Aún en fase Alfa se encuentra la versión 1.6 , se puede encontrar las primeras versiones traducidas a &lt;a href="http://es.wikipedia.org/wiki/Idioma_espa%C3%B1ol" title="Idioma español"&gt;nuestro idioma&lt;/a&gt; &lt;a href="http://www.joomla16.org/" class="external text" rel="nofollow"&gt;&lt;b&gt;Joomla 1.6&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;  &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Enlaces externos:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.joomla.org/" class="external text" rel="nofollow"&gt;Sitio oficial de Joomla!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://forum.joomla.org/" class="external text" rel="nofollow"&gt;Foro oficial de Joomla!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://joomlacode.org/" class="external text" rel="nofollow"&gt;Forge oficial de Joomla!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://extensions.joomla.org/" class="external text" rel="nofollow"&gt;Directorio de extensiones Joomla!&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Comunidades locales extra-oficiales:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.joomlaspanish.org/" class="external text" rel="nofollow"&gt;Joomla!Spanish&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://comunidadjoomla.org/" class="external text" rel="nofollow"&gt;Joomla! en Español&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;br /&gt;Esto fue sacado de la &lt;a href="http://www.wikipedia.org/"&gt;WIKIPEDIA&lt;/a&gt; donde el articulo es más grueso.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-4016384892191109676?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/4016384892191109676/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/09/que-es-joomla.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4016384892191109676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/4016384892191109676'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/09/que-es-joomla.html' title='¿Qué es Joomla?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7_ZQdva14nc/SrkYZD-csJI/AAAAAAAAAvE/YDXRBokDgGk/s72-c/logo.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-2430463649314794812</id><published>2009-09-19T11:54:00.000-07:00</published><updated>2009-09-19T14:57:10.111-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Php'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='App Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>¿Qué es App Engine?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/SrUpTvP6ZoI/AAAAAAAAAuc/mpeQo5XmWHQ/s1600-h/appengine_lowres.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 142px; height: 109px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/SrUpTvP6ZoI/AAAAAAAAAuc/mpeQo5XmWHQ/s400/appengine_lowres.gif" alt="" id="BLOGGER_PHOTO_ID_5383254348668757634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;App Engine&lt;/b&gt; es un servicio de alojamiento de páginas web que presta &lt;a href="http://es.wikipedia.org/wiki/Google" title="Google"&gt;Google&lt;/a&gt; de forma gratuita hasta determinadas cuotas, este servicio permite ejecutar aplicaciones sobre la infraestructura de Google. Si no se cuenta con un &lt;a href="http://es.wikipedia.org/wiki/Dominio" title="Dominio"&gt;dominio&lt;/a&gt; propio, Google proporciona uno con la siguiente estructura, midominio.appspot.com. También permite implementar un dominio propio a través de &lt;a href="http://es.wikipedia.org/wiki/Google_Apps" title="Google Apps"&gt;Google Apps&lt;/a&gt;. Por el momento las cuentas gratuitas tienen un límite de 500 &lt;a href="http://es.wikipedia.org/wiki/MB" title="MB" class="mw-redirect"&gt;MB&lt;/a&gt; de almacenamiento permanente y la suficiente cantidad de &lt;a href="http://es.wikipedia.org/wiki/Ancho_de_banda" title="Ancho de banda"&gt;ancho de banda&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/CPU" title="CPU" class="mw-redirect"&gt;CPU&lt;/a&gt; para casi 5 millones de visitas mensuales, y si la aplicación supera estas cuotas, se pueden comprar cuotas adicionales por un bajo costo. &lt;p&gt;Actualmente las aplicaciones Google App Engine se implementan mediante los &lt;a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n" title="Lenguaje de programación"&gt;lenguajes de programación&lt;/a&gt; &lt;a style="font-weight: bold;" href="http://code.google.com/intl/es/appengine/docs/python/gettingstarted/" title="Python"&gt;Python&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;y&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://code.google.com/intl/es/appengine/docs/java/gettingstarted/" title="Lenguaje de programación Java"&gt;Java&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/SrVKqB0QIII/AAAAAAAAAus/vo5vBJjjxQI/s1600-h/appengine-java-php.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 261px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/SrVKqB0QIII/AAAAAAAAAus/vo5vBJjjxQI/s400/appengine-java-php.jpg" alt="" id="BLOGGER_PHOTO_ID_5383291015493853314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;  Ir a &lt;a style="font-weight: bold; color: rgb(153, 0, 0);" href="http://code.google.com/intl/es-ES/appengine/"&gt;Google App Engine:&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;   &lt;span style="color: rgb(0, 0, 0);"&gt;Aquí podrás registrarte, &lt;a href="http://code.google.com/intl/es/appengine/downloads.html"&gt;descargar el SDK (Kit de desarrollo) de App Engine&lt;/a&gt;,     &lt;a href="http://code.google.com/intl/es-ES/appengine/docs/python/gettingstarted/"&gt;leer la guía de introduccción&lt;/a&gt; y ver la &lt;a href="http://appgallery.appspot.com/"&gt;galería de aplicaciones&lt;/a&gt;. &lt;/span&gt;      &lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=bfgO-LXGpTM"&gt;   Realizar una consulta y obtener información.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/intl/es-ES/appengine/articles/"&gt;Actualizar artículos recientes.&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;Entrar a &lt;a href="http://groups.google.com/group/google-appengine/feed/atom_v1_0_msgs.xml?pli=1"&gt;la comunidad&lt;/a&gt; y leer &lt;a href="http://googleappengine.blogspot.com/"&gt;el blog&lt;/a&gt;.&lt;/li&gt;  &lt;/ol&gt;&lt;br /&gt;En &lt;a href="http://aralbalkan.com/2115"&gt;http://aralbalkan.com/2115&lt;/a&gt; he leído literaklmente esto:  "&lt;span style="font-style: italic;"&gt;¿Sabía usted que ahora puede ejecutar PHP en Google App Engine? No, Google ha añadido oficialmente soporte para PHP aún, pero no sólo tiene que añadir soporte para Java y hay una aplicación de Java llamada PHP en Quercus. Ponga dos y dos juntos y, voilà, usted puede escribir aplicaciones PHP en Google App Engine. Muy dulce."&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Habrá que probar.Google es el fúturo más tangible.&lt;br /&gt;&lt;br /&gt;Saludos&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-2430463649314794812?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/2430463649314794812/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/09/que-es-app-engine.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2430463649314794812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/2430463649314794812'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/09/que-es-app-engine.html' title='¿Qué es App Engine?'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7_ZQdva14nc/SrUpTvP6ZoI/AAAAAAAAAuc/mpeQo5XmWHQ/s72-c/appengine_lowres.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-6518803249977174717</id><published>2009-07-02T09:52:00.000-07:00</published><updated>2009-07-07T11:02:24.097-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lenguajes programación'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Conociendo Python (1º parte)</title><content type='html'>&lt;p class="MsoNormal" style="text-align: left;"&gt;&lt;b style=""&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://anticanis.es/wp-content/uploads/2008/05/python.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://anticanis.es/wp-content/uploads/2008/05/python.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="text-align: left;"&gt;&lt;b style=""&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;&lt;br /&gt;Ficha de Python:&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7_ZQdva14nc/SlHgoqdHS4I/AAAAAAAAAs8/EhxzEuQ2b5k/s1600-h/Sin+t%C3%ADtulo-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 185px;" src="http://1.bp.blogspot.com/_7_ZQdva14nc/SlHgoqdHS4I/AAAAAAAAAs8/EhxzEuQ2b5k/s400/Sin+t%C3%ADtulo-1.png" alt="" id="BLOGGER_PHOTO_ID_5355308421116021634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para conocer más a fondo Python visite la &lt;a href="http://es.wikipedia.org/wiki/Python"&gt;wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&lt;br /&gt;Instalación:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Para programar &lt;span style="font-weight: bold;"&gt;Python&lt;/span&gt;, instalé  &lt;span style="font-weight: bold;"&gt;Python 2.6&lt;/span&gt; descargablé en el &lt;a href="http://www.python.org/download/"&gt;sitio oficial de la fundación Python (zona descargas). &lt;/a&gt;Y ahí, según tu Sistema Operativo descargas una versión u otra, según tus necesidades. Instalarlo es sencillo. Luego, para codificar necesitarás un editor de texto, guardado en extensión .py, y listo para ser ejecutado, clicando sobre él, si e Windows, si s Linux tu Sistema Operativo habría que darle antes derechos.&lt;br /&gt;La última versión estable es la 2.6 e instala &lt;span style="font-weight: bold;"&gt;IDLE (Python GUI) &lt;/span&gt;que es el Shell de Python (donde iteractivamente se pueden escribir las instruciones. Su uso nos da el resultado de bloques de código, coloreados para colmo de la claridad), el &lt;span style="font-weight: bold;"&gt;Python Command Line&lt;/span&gt;, y &lt;span style="font-weight: bold;"&gt;Module Docs &lt;/span&gt;(sencillamente de esta opción tengo que investigar, pero parece ser que es un módulo cgi de la Python Librery para programar y seguir documentación). Además del habitual desinstalador.&lt;br /&gt;Tras instalarlo si estamos en Windows, hay que  navegar hasta  &lt;span style="font-weight: bold;"&gt;Variables de entorno &lt;/span&gt;en&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Propiedades del Sistema:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt; Usamos la tecla de Windows y la de Pausa; pestaña opciones avanzadas; botón Variables de Entorno; Modificar&lt;span&gt;).&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7_ZQdva14nc/SlOJNY3alQI/AAAAAAAAAtE/c6w-CeRdLoM/s1600-h/Dibujo.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 224px;" src="http://1.bp.blogspot.com/_7_ZQdva14nc/SlOJNY3alQI/AAAAAAAAAtE/c6w-CeRdLoM/s320/Dibujo.bmp" alt="" id="BLOGGER_PHOTO_ID_5355775244979836162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;A continuación, añadimos una nueva ruta a la variable de entorno Path: En mi caso &lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;C:\Python26\  &lt;/span&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A la nueva ruta deberá precederle un &lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;; &lt;/span&gt;que significa que se añade otra ruta a las existentes de antemano. Otra nota, En mi caso es &lt;/span&gt;&lt;/span&gt;C:\Python26\ pero en el suyo es la carpeta donde e ha instalado Python. El 26 en mi caso es la versión.&lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;  &lt;/li&gt; &lt;/ul&gt;    &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7_ZQdva14nc/SlOLeHrLnYI/AAAAAAAAAtM/IhnXAFhBYs8/s1600-h/Sin+t%C3%ADtulo-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 126px;" src="http://1.bp.blogspot.com/_7_ZQdva14nc/SlOLeHrLnYI/AAAAAAAAAtM/IhnXAFhBYs8/s320/Sin+t%C3%ADtulo-1.png" alt="" id="BLOGGER_PHOTO_ID_5355777731446152578" border="0" /&gt;&lt;/a&gt;    Estas notas de instalación las he tomado prestadas de &lt;a href="http://pythondesdecero.blogspot.com/2009/07/instalando-python-en-el-sistema-windows.html"&gt;&lt;span style="text-decoration: underline;"&gt;Python desde cero&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Manual:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora ando con la lectura de un manual, &lt;a href="http://mundogeek.net/tutorial-python/"&gt;&lt;span style="font-weight: bold;"&gt;Python para todos&lt;/span&gt;&lt;/a&gt;, del que puedo decir que hace fácil el aprendizaje de este lenguaje de programación,  herramienta en la que está hecho Google.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.python.org/download/"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-6518803249977174717?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/6518803249977174717/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/07/conociendo-python.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6518803249977174717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/6518803249977174717'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/07/conociendo-python.html' title='Conociendo Python (1º parte)'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7_ZQdva14nc/SlHgoqdHS4I/AAAAAAAAAs8/EhxzEuQ2b5k/s72-c/Sin+t%C3%ADtulo-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2156290701393301637.post-5069177069547078240</id><published>2009-07-02T09:31:00.000-07:00</published><updated>2009-07-05T09:00:22.980-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplo'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Mis primeras líneas en Python</title><content type='html'>Para ser esta tarde la primera vez que hago código Python, no va nada mal la cosa.&lt;br /&gt;&lt;br /&gt;La primera sentencia  "Hola Mundo!!" fue facil de escribir y ejecutar.  Una sentencia tan simple como&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt; print "Hola mundo!!" &lt;/span&gt;que daba como resultado la impresión de la cadena encerrada entre las dobles comillas.&lt;br /&gt;&lt;br /&gt;Sin embargo el reto fue conseguir imprimir las dos últimas frases:&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;n1=4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;n2=2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;n3 =n1+n2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;print "el resultadodo es ", n3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;print n1, "+",n2,"=",n3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;porque no acertaba a, con exito, trabajar con enteros y cadenas de caracteres. Mas al final lo logré después de haber mirado en San Google (&lt;span style="font-style: italic;"&gt;invento &lt;/span&gt;desarrollado en Python&lt;span style="font-style: italic;"&gt;&lt;/span&gt;) y tras varias intentonas frustradas. Como ven hay hasta errores de ortografía pro me importa poco, lo importante es el triunfo,&lt;span style="font-style: italic;"&gt; jajajaj&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7_ZQdva14nc/SlDN-pYfxrI/AAAAAAAAAss/4asB08i073c/s1600-h/Sin+t%C3%ADtulo-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 376px; height: 182px;" src="http://4.bp.blogspot.com/_7_ZQdva14nc/SlDN-pYfxrI/AAAAAAAAAss/4asB08i073c/s400/Sin+t%C3%ADtulo-1.png" alt="" id="BLOGGER_PHOTO_ID_5355006433087702706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2156290701393301637-5069177069547078240?l=programandodesdespain.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programandodesdespain.blogspot.com/feeds/5069177069547078240/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://programandodesdespain.blogspot.com/2009/07/blog-post.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5069177069547078240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2156290701393301637/posts/default/5069177069547078240'/><link rel='alternate' type='text/html' href='http://programandodesdespain.blogspot.com/2009/07/blog-post.html' title='Mis primeras líneas en Python'/><author><name>Victor J. Garijo</name><uri>http://www.blogger.com/profile/14628272757865663923</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-mQ78XizSApw/Twm29PARzpI/AAAAAAAABKs/-y8dJcY8U4E/s220/ana%2B6agostoii.jpg'/></author><media:thu
