<?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-5892139894341550791</id><updated>2011-12-11T17:56:32.046+01:00</updated><category term='spjobdefinition'/><category term='Bug'/><category term='Ajax'/><category term='c#'/><category term='spalert'/><category term='leermas'/><category term='arraylist'/><category term='sharepoint'/><category term='perfil de usuario'/><category term='job'/><category term='incremental import'/><category term='SPAlert.Filter'/><category term='.net'/><category term='codigo fuente'/><category term='spalert.frecuency'/><category term='syntaxhighlighter'/><category term='UpdatePanel'/><category term='DCE'/><category term='SP2'/><category term='vignette'/><category term='vb.net'/><category term='windowsXPMode'/><category term='formacion'/><category term='recortar entradas'/><category term='moss2007'/><category term='publicar'/><category term='everis'/><category term='SP1'/><category term='leer más'/><category term='cetificacion gratutita'/><category term='2007'/><category term='resaltar'/><category term='blog'/><category term='listas tipadas'/><category term='fernando gil solé'/><category term='alerta'/><category term='online'/><category term='curso'/><category term='Joomla'/><category term='colecciones genericas'/><category term='syntax high lighter'/><category term='tarea programada'/><category term='envio alertas'/><category term='generic type'/><category term='Gestor de Contenidos'/><category term='CMS'/><category term='drupal'/><category term='source code'/><category term='microsoft'/><category term='windows7'/><category term='readmore'/><category term='DropDownList'/><category term='user profile'/><category term='profile'/><title type='text'>Fernando Gil Solé</title><subtitle type='html'>Blog de tecnología y de las cosas curiosas que se aprenden en el día a día.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fgilsole.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-7391631714467425259</id><published>2011-12-02T08:24:00.001+01:00</published><updated>2011-12-11T17:56:32.054+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fernando gil solé'/><title type='text'>¿Abusamos del correo electrónico?</title><content type='html'>&lt;div align="justify"&gt;
No hay día que no reciba menos de 100 correos en mi cuenta corporativa, pero, ¿realmente todos ellos son necesarios?¿son todos importante? Yo creo que "no y no". Pero vamos a ver las cifras de mi buzón de ayer para tener algo tangible:&lt;/div&gt;
&lt;ul&gt;
&lt;li class="puntos"&gt;Ayer recibí &lt;b&gt;131&lt;/b&gt; correos.&lt;/li&gt;
&lt;li class="puntos"&gt;En 34 de ellos aparecía en el TO, y sólo 6 estaban destinado a mí únicamente.&lt;/li&gt;
&lt;li class="puntos"&gt;En los 97 restantes aparecía en el CC.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span class="fullpost"&gt;
&lt;div align="justify"&gt;
Más del 70% de los correos no iban dirigidos directamente a mi y sólo conteste a 17 de ellos. Esto quiere decir que los 114 (131-17) correos que no contesté eran sólo informativos o no eran relevantes.&lt;/div&gt; 
&lt;br /&gt;
&lt;div align="justify"&gt;
Si suponemos que dedicamos 2 minutos a cada correo, dediqué aproximadamente 228 minutos, casi 4 horas, a leer correos "informativos o poco relevantes".&lt;/div&gt;
&lt;br /&gt;
&lt;div align="justify"&gt;
Si pensamos en una jornada de 8 horas (todavía tengo la esperanza de encontrar a un consultor que lo cumpla) dedicamos ¡¡¡más de media jornada de trabajo a correos no necesarios!!!. No me extraña que tengamos que quedarnos más horas para en la oficina para hacer más trabajo. Somo muy poco productivos por culpa del correo electrónico.&lt;/div&gt;
&lt;br /&gt;
&lt;div align="justify"&gt;
Cada vez son más las empresas que se lanzan iniciativas en este sentido. Hay empresas que prohíben los correos los viernes, otras que han lanzado campañas para regular el uso del campo CC, pero lo que más me ha impactado es la intención de ATOS ORIGIN de prohibir el uso del correo electrónico. A priori, esta iniciativa es algo inverosímil en los tiempos que corren, pero después de ver el &lt;a href="http://www.elconfidencial.com/tecnologia/blogs/techfacts/2011/12/02/prohibido-enviar-emails-1495/" target="_blank"&gt;artículo de José Mendiola&lt;/a&gt; y las opciones que proponen no me descuadra tanto. Eso si, nos va a costar adaptarnos una larga temporada.&lt;/div&gt;
&lt;br /&gt;
Referencias:&lt;br /&gt;

&lt;ul&gt;
&lt;li class="puntos"&gt;&lt;a href="http://www.elconfidencial.com/tecnologia/blogs/techfacts/2011/12/02/prohibido-enviar-emails-1495/" target="_blank"&gt;artículo de José Mendiola&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-7391631714467425259?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2011/12/abusamos-del-correo-electronico.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/7391631714467425259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/7391631714467425259'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2011/12/abusamos-del-correo-electronico.html' title='¿Abusamos del correo electrónico?'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-8466745398746751431</id><published>2009-12-07T11:09:00.000+01:00</published><updated>2009-12-07T11:14:05.778+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows7'/><category scheme='http://www.blogger.com/atom/ns#' term='formacion'/><category scheme='http://www.blogger.com/atom/ns#' term='fernando gil solé'/><category scheme='http://www.blogger.com/atom/ns#' term='windowsXPMode'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Instalando Windows XP Mode en Windows7</title><content type='html'>&lt;p align="justify"&gt;Para aumentar la compatibilidad de Windows7 con software anterior a este nuevo sistema operativo, Microsoft ha publicado de forma gratuita una máquina virtual que permite aumentar la compatibilidad ejecutando el software sobre una maquina virtual de Windows XP. &lt;/p&gt;  &lt;p align="justify"&gt;Internamente, el código del programa se ejecuta sobre la máquina virtual de Windows XP, pero todo el interfaz gráfico se visualiza directamente sobre Windows7, pareciendo que no hay nada virtualizado. &lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p align="justify"&gt;Seguir los siguientes pasos descargar e instalar “Windows XP Mode”:&lt;/p&gt;    &lt;p align="left"&gt;1º Acceder mediante nuestro navegador habitual a la dirección de descarga: &lt;a href="http://www.microsoft.com/windows/virtual-pc/download.aspx"&gt;http://www.microsoft.com/windows/virtual-pc/download.aspx&lt;/a&gt;&lt;/p&gt;    &lt;p align="justify"&gt;2º Seleccionar la versión de Windows7 que tenemos instalada (starter, ultimate, professional, …)&lt;/p&gt;    &lt;p align="justify"&gt;3º Seleccionar el idioma de la máquina. Es probable que para vuestro idioma también exista la versión N (“Spanish” y “Spanish N”). La versión N es una versión que no incluye el reproductor de Windows media. Yo he elegido la versión completa.&lt;/p&gt;    &lt;p align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_QP6gi8n-9Dw/SxzVYi7okiI/AAAAAAAABe0/Zi3im-saUXA/s1600-h/clip_image00211.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/_QP6gi8n-9Dw/SxzVZQFdnLI/AAAAAAAABe4/Fwny_dJ8QWE/clip_image002_thumb8.jpg?imgmax=800" width="439" height="205" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p align="justify"&gt;4º Descargar la máquina virtual, pulsando sobre el botón “Windows XP Mode”. Este fichero ocupa 464.50Mb, por lo que tomará su tiempo.&lt;/p&gt;    &lt;p align="justify"&gt;5º La máquina virtual descargada necesita de un software para ser virtualizada. Pulsar sobre el botón “Windows&amp;#160; Virtual PC”, para descargar el software (9,1Mb).&lt;/p&gt;    &lt;p align="justify"&gt;6º Instalar primero el último componente descargado, “Virtual PC”. Es necesario reiniciar el ordenador tras la instalación.&lt;/p&gt;    &lt;p align="justify"&gt;7º Instalar ahora la máquina virtual. &lt;/p&gt;    &lt;p align="justify"&gt;8º Cuando el instalador nos solicite una contraseña, introduciremos una contraseña para el usuario de la máquina virtual. Recomiendo que dejemos marcado el check de “Recordar credenciales” para no tener que introducirlo continuamente.&lt;/p&gt;    &lt;p align="justify"&gt;9º A continuación nos preguntará si deseamos tener las actualizaciones automáticas activas. Yo soy partidario de tenerlas activas, pero aquí cada uno es libre de elegir. No afecta al funcionamiento final.&lt;/p&gt;    &lt;p align="justify"&gt;10º Ya tenemos nuestra maquina virtual instalada! El instalador termina dejan iniciada máquina virtual con un Windows Xp recién instalado!&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_QP6gi8n-9Dw/SxzVafUBr2I/AAAAAAAABe8/9JM5B-L1PM8/s1600-h/image3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_QP6gi8n-9Dw/SxzVbFXb34I/AAAAAAAABfA/rUDKncedFTI/image_thumb1.png?imgmax=800" width="430" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p align="justify"&gt;Ahora sólo debemos instalar las aplicaciones antiguas en la máquina virtual, y automáticamente nos aparecerá un acceso directo en el menú de inicio de Windows7.&lt;/p&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-8466745398746751431?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/12/instalando-windows-xp-mode-en-windows7.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/8466745398746751431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/8466745398746751431'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/12/instalando-windows-xp-mode-en-windows7.html' title='Instalando Windows XP Mode en Windows7'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_QP6gi8n-9Dw/SxzVZQFdnLI/AAAAAAAABe4/Fwny_dJ8QWE/s72-c/clip_image002_thumb8.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-6554328286242149742</id><published>2009-08-28T08:34:00.006+02:00</published><updated>2009-08-28T08:42:02.256+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arraylist'/><category scheme='http://www.blogger.com/atom/ns#' term='listas tipadas'/><category scheme='http://www.blogger.com/atom/ns#' term='colecciones genericas'/><category scheme='http://www.blogger.com/atom/ns#' term='generic type'/><title type='text'>Colecciones genéricas o no genéricas.</title><content type='html'>&lt;p align="justify"&gt;Cuando comencé a desarrollar sobre .net 2.0 descubrí que esta nueva arquitectura ofrecía la posibilidad de tener colecciones de datos tipadas. Me sorprendió mucho esta nueva funcionalidad, ya que en mi opinión, iba en contra de todo lo que debería ser la programación orientada a objetos. Una colección debía guardar objetos, sin necesidad de especificar el tipo. Esa era para mí una de las grandes virtudes de la POO (Programación Orientada a Objetos).&lt;/p&gt;&lt;span class="fullpost"&gt;&lt;p align="justify"&gt;Tras el paso del tiempo, me he dado cuenta de lo equivocado que estaba. Una colección de datos es siempre el 99,9% de las veces de objetos del mismo tipo. No tiene ningún sentido que todo se convierta al tipo Object para guardarlo y para poder usarlo tengamos que reconvertirlo al tipo original. Creo que evitar hacer dos conversiones de tipos por cada elemento de una colección es más que un motivo de peso para cambiar nuestra forma de desarrollar.&lt;/p&gt;&lt;p align="justify"&gt;No obstante, una colección genérica es genérica porque permite almacenar cualquier tipo de datos, tanto los predefinidos, como un tipo creado por nosotros mismos en una clase. Con esto y con una pequeña vuelta de tuerca, se resuelve el 0,01% de los casos de restantes. Ya no tenemos excusas para no usarlos.&lt;/p&gt;&lt;p align="justify"&gt; De forma esquemática, estas son las ventajas de usar colecciones genéricas:&lt;/p&gt; &lt;ul&gt;    &lt;li class="puntos"&gt;Evitar hacer una conversión de tipos (mi tipo --&gt; object) cada vez que agregamos un objeto a una colección, y evitar hacer una conversión (object --&gt; mi tipo) cada vez que queremos usar un elemento de la colección.&lt;/li&gt;
&lt;li class="puntos"&gt;Versatilidad que ofrece una colección personalizada al tipo del usuario, ya sea predefinida o sea una clase definida por el desarrollador.&lt;/li&gt;
&lt;li class="puntos"&gt;La conversión de tipos se realiza en tiempo de compilación, ahorrando tiempo y errores durante el desarrollo.&lt;/li&gt;
&lt;/ul&gt;

&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-6554328286242149742?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/08/colecciones-genericas-o-no-genericas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/6554328286242149742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/6554328286242149742'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/08/colecciones-genericas-o-no-genericas.html' title='Colecciones genéricas o no genéricas.'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-2061190281720300974</id><published>2009-05-25T23:53:00.002+02:00</published><updated>2009-05-25T23:54:10.540+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vignette'/><category scheme='http://www.blogger.com/atom/ns#' term='moss2007'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='Joomla'/><category scheme='http://www.blogger.com/atom/ns#' term='Gestor de Contenidos'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><title type='text'>¿Qué sistema de gestión de contenidos me conviene?</title><content type='html'>&lt;p align="justify"&gt;Un Sistema de Gestión de Contenidos (en ingles, Content Management System – C.M.S) es una aplicación informática usada para crear, editar, gestionar y publicar contenido digital en diversos formatos.&lt;/p&gt;  &lt;p align="justify"&gt;Existen infinidad de gestores: Microsoft Office SharePoint 2007, Vignette, Joomla!, Drupal… ¡y así hasta 100! Unos son de pago, otros gratuitos, unos en .Net, otros en Java, unos funcionan sobre Windows, otros sobre Unix, y unos pocos sobre Solaris.&lt;/p&gt;  &lt;p align="justify"&gt;¿Cuál me conviene a mí? ¿Qué me ofrece un gestor que no me ofrezca otro? Para todas las dudas que nos puedan surgir, existe un portal que compara casi cualquier gestor de contenido del mercado a nuestra elección. Compara desde el precio, el servidor de aplicaciones, hasta si poseen o no corrector ortográfico.&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p align="justify"&gt;La dirección es &lt;a href="http://www.cmsmatrix.org/" target="_blank"&gt;http://www.cmsmatrix.org/&lt;/a&gt; .&lt;/p&gt;    &lt;p align="justify"&gt;Gracias a Raúl G. por enviarme el enlace.&lt;/p&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-2061190281720300974?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/05/que-sistema-de-gestion-de-contenidos-me.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/2061190281720300974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/2061190281720300974'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/05/que-sistema-de-gestion-de-contenidos-me.html' title='¿Qué sistema de gestión de contenidos me conviene?'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-5687916550002708156</id><published>2009-05-05T23:03:00.001+02:00</published><updated>2009-05-05T23:03:59.324+02:00</updated><title type='text'>Varias versiones de Internet Explorer en la misma instalación de Windows.</title><content type='html'>&lt;p align="justify"&gt;Cuando nos enfrentamos al desarrollo web nos damos cuenta de la gran diferencia de existen entre unos navegadores y otros. Pero lo peor de todo es enfrentarse a las diferentes versiones de un mismo producto como Internet Explorer, ya que hasta ahora implicaba tener las diferentes versiones en diversas máquinas virtuales haciéndose muy pesado para los desarrolladores.&lt;/p&gt;  &lt;p align="justify"&gt;Hace poco he descubierto esta herramienta: &lt;a href="http://finalbuilds.edskes.net/iecollection.htm" target="_blank"&gt;Internet Explorer Collection&lt;/a&gt;, que te instala las versiones de IE desde la 1.0 hasta la 8.0 de forma independiente, y lo mejor de todo es que es compatible con Windows Vista y con Windows 7. &lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p align="justify"&gt;A continuación os adjunto una imagen que detalla todas las versiones disponibles y una tabla que detalla la compatibilidad de versiones de IE con nuestra versión de Windows.&lt;/p&gt;    &lt;p align="justify"&gt;&lt;img title="" alt="Internet Explorer Collection Setup" src="http://codecpack.nl/img/iecollection_setup_02_components.png" width="437" height="392" /&gt;&lt;/p&gt;    &lt;p align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_QP6gi8n-9Dw/SgCpuH9xysI/AAAAAAAABa4/JMMLEvX9crk/s1600-h/image3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_QP6gi8n-9Dw/SgCpvt_WyPI/AAAAAAAABa8/Juulx3-JAlw/image_thumb1.png?imgmax=800" width="449" height="209" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;Enlaces relacionados:&lt;/p&gt;    &lt;ul&gt;     &lt;li class="puntos"&gt;&lt;a title="http://finalbuilds.edskes.net/iecollection.htm" href="http://finalbuilds.edskes.net/iecollection.htm"&gt;http://finalbuilds.edskes.net/iecollection.htm&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-5687916550002708156?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/05/varias-versiones-de-internet-explorer.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/5687916550002708156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/5687916550002708156'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/05/varias-versiones-de-internet-explorer.html' title='Varias versiones de Internet Explorer en la misma instalación de Windows.'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_QP6gi8n-9Dw/SgCpvt_WyPI/AAAAAAAABa8/Juulx3-JAlw/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-3719952524956396369</id><published>2009-04-27T14:43:00.001+02:00</published><updated>2009-04-27T14:43:28.310+02:00</updated><title type='text'>Añadir y eliminar programáticamente propiedades del perfil del usuario de SharePoint 2007</title><content type='html'>&lt;p align="justify"&gt;Continuando con el artículo anterior (&lt;a href="http://fgilsole.blogspot.com/2009/04/leer-y-escribir-programaticamente-en.html" target="_blank"&gt;enlace&lt;/a&gt;), vamos a terminar de manejar de forma programática las propiedades del perfil del usuario de SharePoint 2007.&lt;/p&gt;  &lt;p align="justify"&gt;En esta ocasión vamos a ver como crear estas propiedades y como eliminarlas. Es importante saber que las propiedades del perfil son comunes para todos los usuarios, por lo que cuando creamos una propiedad, la creamos para todos los perfiles,&amp;#160; y cuando la eliminamos, lo hacemos también para todos, perdiendo el contenido de dicha propiedad para todos ellos.&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p align="justify"&gt;Para crear una propiedad del perfil, emplearemos el siguiente código:&lt;/p&gt;    &lt;pre class="brush: csharp;"&gt;public bool CrearPropiedadPerfil(string sitio, string nombre, string nombreMostrar, string tipo, int longitud, bool esEditable)
{
    bool exito = false;

    try
    {
        ServerContext context = ServerContext.GetContext(SPContext.Current.Site);
        UserProfileManager profileManager = new UserProfileManager(context);

        //Recuperamos todas las propiedades.
        Microsoft.Office.Server.UserProfiles.PropertyCollection pc = profileManager.Properties;

        //Creamos una propiedad
        Property propiedad = pc.Create(false);
        propiedad.Name = nombre;
        propiedad.DisplayName = nombreMostrar;
        propiedad.Type = tipo;
        propiedad.Length = longitud;
        propiedad.IsUserEditable = esEditable;
        pc.Add(propiedad);

        exito = true;
    }
    catch (Exception ex)
    {
        //Se produce error en la creación
        //Se controla la excepcion de forma adecuada.
        exito = false;
    }
    return exito;
}&lt;/pre&gt;

  &lt;p&gt;De forma análoga, para eliminar la propiedad emplearemos el siguiente código:&lt;/p&gt;

  &lt;pre class="brush: csharp;"&gt;public bool BorrarPropiedadPerfil(string nombre)
{
    bool exito = false;

    try
    {              
        ServerContext context = ServerContext.GetContext(SPContext.Current.Site);
        UserProfileManager profileManager = new UserProfileManager(context);
                    
        Microsoft.Office.Server.UserProfiles.PropertyCollection pc = profileManager.Properties;

        //Borramos la propiedad. Si no existe se produce una excepcion.
        pc.RemoveByName(nombre, false);

        exito = true;
    }
    catch (Exception ex)
    {
        exito = false;
    }
    return exito;
}&lt;/pre&gt;

  &lt;p&gt;Otros artículos relacionados:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li class="puntos"&gt;&lt;a href="http://fgilsole.blogspot.com/2009/04/leer-y-escribir-programaticamente-en.html" target="_blank"&gt;Leer y escribir programáticamente en las propiedades del perfil del usuario de SharePoint 2007&lt;/a&gt; &lt;/li&gt;
  &lt;/ul&gt;
&lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-3719952524956396369?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/04/anadir-y-eliminar-programaticamente.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/3719952524956396369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/3719952524956396369'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/04/anadir-y-eliminar-programaticamente.html' title='Añadir y eliminar programáticamente propiedades del perfil del usuario de SharePoint 2007'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-6600481947568962004</id><published>2009-04-23T19:12:00.004+02:00</published><updated>2009-04-27T14:48:15.497+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user profile'/><category scheme='http://www.blogger.com/atom/ns#' term='moss2007'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='profile'/><category scheme='http://www.blogger.com/atom/ns#' term='perfil de usuario'/><title type='text'>Leer y escribir programáticamente en las propiedades del perfil del usuario de SharePoint 2007</title><content type='html'>&lt;p align="justify"&gt;Existen muchas situaciones a lo largo de un desarrollo a medida en SharePoint que es necesario acceder programáticamente a los valores de las propiedades del perfil del usuario. En esta entrada vamos a ver como podemos leer y escribir valores en dichas propiedades.&lt;/p&gt;  &lt;p align="justify"&gt;El motivo por el cual se recomienda el uso de estas propiedades es, entre otras, lo eficiente que es su uso. El acceso es muy rápido, y el coste computacional es muy bajo comparado con el resto de propiedades.&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p align="justify"&gt;Para poder acceder al perfil emplearemos la clase UserProfileManager, que nos proporciona la posibilidad de realizar acciones sobre los perfiles, como la creación, la recuperación o el borrado. Una vez recuperado un perfil en concreto, accederemos a la propiedad como si de una colección se tratase. El código es el siguiente:&lt;/p&gt;    &lt;pre class="brush: c#"&gt;        public string LeerPropiedadPerfil(string loginUsuario, string propiedad)
        {
            string contenidoPropiedad = string.Empty;
            try
            {
                //Leer de la propiedad
                ServerContext context = ServerContext.GetContext(SPContext.Current.Site);
                UserProfileManager profileManager = new UserProfileManager(context);                   
                UserProfile up = profileManager.GetUserProfile(loginUsuario);
                contenidoPropiedad = up[propiedad].Value.ToString();
            }
            catch (NullReferenceException ex)
            {
                //Existe la propiedad pero esta vacia. Esto provoca una excepcion que capturamos y controlamos
                contenidoPropiedad = string.Empty;
            }
            catch (Exception ex)
            {
                //se ha producido un error en la lectura
  //Controlamos el error de una forma adecuada.
            }
            
            return contenidoPropiedad;
        }&lt;/pre&gt;  &lt;p align="justify"&gt;Para escribir en el perfil seguiremos un procedimiento análogo al de la lectura. El código es el siguiente:&lt;/p&gt;  &lt;pre class="brush: c#"&gt;        public bool EscribirEnPropiedadPerfil(string nombrePropiedad, 
            string contenidoPropiedad, string loginUsuario)
        {
            bool exito = false;

            try
            {
                //Escribir en la propiedad
                ServerContext context = ServerContext.GetContext(SPContext.Current.Site);
                UserProfileManager profileManager = new UserProfileManager(context);
                UserProfile up = profileManager.GetUserProfile(loginUsuario);

                up[nombrePropiedad].Value = contenidoPropiedad;
                up.Commit();

                exito = true;
            }
            catch (Exception ex)
            {
                //se ha producido un error de escritura
                exito= false;
                //Controlamos el error de una forma adecuada.
            }
        
            return exito
        }&lt;/pre&gt;
  &lt;p&gt;Otros artículos relacionados:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li class="puntos"&gt;&lt;a href="http://fgilsole.blogspot.com/2009/04/anadir-y-eliminar-programaticamente.html" target="_blank"&gt;Añadir y eliminar programáticamente en las propiedades del perfil del usuario de SharePoint 2007&lt;/a&gt; &lt;/li&gt;
  &lt;/ul&gt;
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-6600481947568962004?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/04/leer-y-escribir-programaticamente-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/6600481947568962004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/6600481947568962004'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/04/leer-y-escribir-programaticamente-en.html' title='Leer y escribir programáticamente en las propiedades del perfil del usuario de SharePoint 2007'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-4513907795433343740</id><published>2009-04-13T13:48:00.003+02:00</published><updated>2009-04-19T13:13:18.737+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moss2007'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='profile'/><category scheme='http://www.blogger.com/atom/ns#' term='perfil de usuario'/><category scheme='http://www.blogger.com/atom/ns#' term='incremental import'/><title type='text'>Perfiles de usuario en MOSS 2007</title><content type='html'>&lt;p align="justify"&gt;El trabajo con perfiles de usuario en MOSS 2007 es una técnica muy empleada por su eficiencia y comodidad para el desarrollador, pero que no es una cosa fácil de entender a priori.&lt;/p&gt;  &lt;p align="justify"&gt;¿Para qué sirve la importación incremental? ¿Cuando se copia el perfil a cada sitio? ¿Se mantienen replicados el perfil del sitio y el perfil del SharedService en uso? Estas son sólo algunas de las preguntas que un desarrollador se hace cuando se enfrenta a los perfiles de usuario.&lt;/p&gt; &lt;span class="fullpost"&gt;   &lt;p align="justify"&gt;A continuación se muestra un gráfico que contiene todas las relaciones entre los diferentes actores que participan desde la importación de perfiles hasta sus actualizaciones.&lt;/p&gt;    &lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QP6gi8n-9Dw/SeMj8jepzEI/AAAAAAAABas/PcoJSogfsRc/s1600-h/mossuserprofiles.jpg" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324138707704990786" style="display: block; float: none; margin: 0px auto 10px; width: 320px; cursor: hand; height: 241px" alt="" src="http://1.bp.blogspot.com/_QP6gi8n-9Dw/SeMj8jepzEI/AAAAAAAABas/PcoJSogfsRc/s320/mossuserprofiles.jpg" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p align="justify"&gt;Vamos a iniciar la interpretación suponiendo un directorio activo, con todos los datos de los usuarios. Para poder emplear esta información en nuestra aplicación web de moss2007 será necesario importar toda esta información. En la primera importación se realizará una importación completa de los perfiles, que luego se irá manteniendo con importaciones incrementales. Desde este momento ya podemos acceder a todos los datos del perfil del usuario que quedan almacenados en la base de datos del SSP (Shared Service Provider). Esta información puede ser modificada por cada usuario (y sólo la suya) desde la página de “Mi Sitio”.&lt;/p&gt;    &lt;p align="justify"&gt;Esto hubiera sido sencillo, si no fuera porque MOSS2007 guarda otra copia parcial de los perfiles de usuario en la base de datos de la contenido nuestra aplicación web. Esta copia parcial se copia del directorio activo cuando el usuario acceder por primera vez a la aplicación web, y se mantiene sincronizada mediante una tarea programada (job). Los propietarios del sitio (con Control Total) puede modificar los valores desde la&amp;#160; página userdisp.aspx, que se puede alcanzar desde “Acciones del Sitio –&amp;gt; Configuración de Sitio –&amp;gt; Personas y Grupos” y seleccionando el nombre del usuario a modificar. Este es el sitio de donde se saca la información del perfil más básica, que por ejemplo es el nombre del usuario que se muestra en el menú donde el usuario puede cerrar o cambiar de sesión.&lt;/p&gt;    &lt;p align="justify"&gt;La imagen empleada pertenece a &lt;a href="http://www.winsmarts.com/" target="_blank"&gt;Sahil Malik&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-4513907795433343740?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/04/perfiles-de-usuario-en-moss-2007.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/4513907795433343740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/4513907795433343740'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/04/perfiles-de-usuario-en-moss-2007.html' title='Perfiles de usuario en MOSS 2007'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QP6gi8n-9Dw/SeMj8jepzEI/AAAAAAAABas/PcoJSogfsRc/s72-c/mossuserprofiles.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-8500854131759701816</id><published>2009-04-02T15:00:00.001+02:00</published><updated>2009-04-02T15:00:41.153+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SPAlert.Filter'/><category scheme='http://www.blogger.com/atom/ns#' term='spalert'/><category scheme='http://www.blogger.com/atom/ns#' term='SP2'/><category scheme='http://www.blogger.com/atom/ns#' term='Bug'/><category scheme='http://www.blogger.com/atom/ns#' term='2007'/><category scheme='http://www.blogger.com/atom/ns#' term='alerta'/><title type='text'>SPAlert.Filter tiene un límite de 512 caracteres</title><content type='html'>&lt;p align="justify"&gt;Las alertas de SharePoint 2007 pueden ser filtradas mediante el uso de CAML. El único inconveniente es que existe un límite de 512 caracteres. Si sobrepasamos este límite, la query en formato CAML se transforma en unos 10 caracteres chinos, y todas las alertas son rechazadas por el sistema.&lt;/p&gt;  &lt;p align="justify"&gt;La única solución que tenemos a día de hoy es no sobrepasar ese límite o emplear un manejador de alertas y aplicar nosotros el filtro, lo cual no es muy recomendable.&lt;/p&gt;  &lt;p align="justify"&gt;Esperemos que todo esto esté solucionado en un ServicePack2 de SharePoint2007.&lt;/p&gt;  &lt;p align="justify"&gt;Enlace relacionado:&lt;/p&gt;  &lt;ul&gt;   &lt;li class="puntos"&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/bb802961.aspx" href="http://msdn.microsoft.com/en-us/library/bb802961.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb802961.aspx&lt;/a&gt; &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/5892139894341550791-8500854131759701816?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/04/spalertfilter-tiene-un-limite-de-512.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/8500854131759701816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/8500854131759701816'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/04/spalertfilter-tiene-un-limite-de-512.html' title='SPAlert.Filter tiene un límite de 512 caracteres'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-4874389464391406822</id><published>2009-03-21T18:01:00.010+01:00</published><updated>2009-04-23T15:30:28.335+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moss2007'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='tarea programada'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='spjobdefinition'/><title type='text'>Crear una tarea programada (JOB) en SharePoint 2007</title><content type='html'>&lt;div style="TEXT-ALIGN: justify"&gt;Una tarea programada, o un job, es una subrutina que se ejecuta de forma automática y repetitiva en nuestro servidor de aplicaciones. Esta funcionalidad es muy útil para tareas de mantenimiento, para procesos de actualización o para operaciones para cachear contenido.&lt;/div&gt;
&lt;span class="fullpost"&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;En este artículo vamos a ver el ejemplo de un job que se ejecuta cada minuto, centrándonos en su creación, despliegue y configuración, y no en las tareas que realiza.&lt;/div&gt;
&lt;BR&gt;
&lt;b&gt;Paso 1: Definición del Job&lt;/b&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Para definir un job crearemos una clase que herede de SPJobDefinition, que defina los tres constructores básicos, y que implemente el método Execute. A continuación tenemos un ejemplo que muestra con mayor detalle todo lo que tenemos que implementar.&lt;/div&gt;
&lt;pre class="brush: c#"&gt;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using System.Text;
using Microsoft.SharePoint.Utilities;

namespace Mantenimiento
{
    public class JobLimpiaLogs : SPJobDefinition
    {
        public JobLimpiaLogs()
            : base()
        {
        }

        public JobLimpiaLogs(string jobName, SPService service, SPServer server, SPJobLockType targetType)
            : base(jobName, service, server, targetType)
        {
        }

        public JobLimpiaLogs(string jobName, SPWebApplication webApplication)
            : base(jobName, webApplication, null, SPJobLockType.ContentDatabase)
        {
            this.Title = "MI_NOMBRE_DEL_JOB";
        }

        public override void Execute(Guid targetInstanceId)
        {
            SPWebApplication webApplication = this.Parent as SPWebApplication;
            SPSiteCollection todosSitios = webApplication.ContentDatabases[targetInstanceId].Sites;

            foreach (SPSite sitio in todosSitios)
            {
                using (SPWeb web = sitio.OpenWeb())
                {
                    //CODIGO A EJECUTAR
                }
            }
        }
    }
}&lt;/pre&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Quiero destacar el argumento recibido por el método Execute, &lt;i&gt;targetInstanceId&lt;/i&gt;. Este Guid identifica la instancia de la base de datos de contenido de la aplicación web actual. Con este identificador podremos recuperar todos los sitios de nuestra aplicación web para poder ejecutar las operaciones pertinentes sobre cada uno.&lt;/div&gt;
&lt;BR&gt;
¿Cómo reutilizar este ejemplo?
&lt;ul&gt;&lt;li class="puntos"&gt;Renombrar el nombre de la clase y los constructores&lt;/li&gt;&lt;li class="puntos"&gt;Asignar un nombre adecuado al job.&lt;/li&gt;&lt;li class="puntos"&gt;Programar la función deseada.&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Paso 2: Despliegue del Job&lt;/b&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Una vez tengamos nuestro job programado, deberemos desplegarlo. Esta tarea no es del todo trivial. De todas las formas posibles, yo recomiendo desplegar empleando una característica. El código sería el siguiente:&lt;/div&gt;
&lt;pre class="brush: c#"&gt;
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System.Web.Configuration;
using Microsoft.SharePoint.Administration;


namespace Mantenimiento
{
    public class Caracteristica : SPFeatureReceiver
    {
        #region Captura de los eventos de la caracteristica

        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            SPSite site = properties.Feature.Parent as SPSite;
            bool existe = false;

            Guid sitioID = site.ID;

            //Se programa el JOB

            SPMinuteSchedule schedule = new SPMinuteSchedule();
            schedule.BeginSecond = 0;
            schedule.EndSecond = 59;
            schedule.Interval = 1;

            // Se comprueba si ya existe.
            foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
            {
                if (job.Name == "MI_NOMBRE_DEL_JOB")
                {
                    job.Delete();
                }
            }

            JobLimpiaLogs job = new JobLimpiaLogs("MI_NOMBRE_DEL_JOB", site.WebApplication);
            job.Schedule = schedule;
            job.Update();

        }

        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {

            SPSite site = properties.Feature.Parent as SPSite;

            foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
            {
                if (job.Name == "MI_NOMBRE_DEL_JOB")
                    job.Delete();   
            }
        }
        
        public override void FeatureInstalled(SPFeatureReceiverProperties properties)
        {
        }
        
        public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
        {
        }
    }
}
&lt;/pre&gt;
&lt;BR&gt;¿Cómo reutilizar este ejemplo?
&lt;ul&gt;&lt;li class="puntos"&gt;Asignar el nombre del job.&lt;/li&gt;&lt;li class="puntos"&gt;Asigna el intervalo del tiempo.&lt;/li&gt;&lt;li class="puntos"&gt;Con todo esto, habremos terminado con la programación del job.&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Paso 3: Reiniciar los servicios.&lt;/b&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Antes de proceder a activar la característica es necesario ejecutar el comando IISRESET.EXE, que reinicia los servicios de Internet Information Server, y también será necesario reiniciar el servicio “Windows SharePoint Services Timer”.&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-4874389464391406822?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/03/crear-una-tarea-programada-job-en.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/4874389464391406822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/4874389464391406822'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/03/crear-una-tarea-programada-job-en.html' title='Crear una tarea programada (JOB) en SharePoint 2007'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-2270337659239696811</id><published>2009-02-21T17:39:00.016+01:00</published><updated>2009-04-23T15:27:10.058+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb.net'/><category scheme='http://www.blogger.com/atom/ns#' term='online'/><category scheme='http://www.blogger.com/atom/ns#' term='formacion'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='curso'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Cursos de formación online de Microsoft</title><content type='html'>&lt;div style="TEXT-ALIGN: justify"&gt;Microsoft acaba de renovar los cursos online de formación gratuita que ofrece en su página de msdn. Ha incluido WPF, Silverlight, Visual Básic 2008 y alguno más. Todos estos cursos se pueden encontrar en la página:&lt;/div&gt; 
&lt;a href="http://www.microsoft.com/spanish/msdn/spain/cursosonline.mspx" TARGET=_BLANK&gt;http://www.microsoft.com/spanish/msdn/spain/cursosonline.mspx&lt;/a&gt;
&lt;BR&gt;&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;También ha adaptado el famoso ejemplo del videoclub de Visual Studio 2005 a Visual Studio 2008 empleando las siguientes tecnologías:&lt;/div&gt;&lt;ul&gt;&lt;li class="puntos"&gt;LINQ: acceso a datos y la creación de entidades.&lt;/li&gt;&lt;li class="puntos"&gt;Windows Communication Foundation: exposición de los servicios.&lt;/li&gt;&lt;li class="puntos"&gt;ASP.NET 3.5, AJAX, Silverlight: creación del sitio web del videoclub.&lt;/li&gt;&lt;li class="puntos"&gt;Windows Forms 3.5: herramienta de administración para gerentes de tienda.&lt;/li&gt;&lt;li class="puntos"&gt;Windows Presentation Foundation: cajero automático en tiendas.&lt;/li&gt;&lt;/ul&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Podéis acceder a este ejemplo en la página:&lt;/div&gt; &lt;a href="http://www.desarrollaconmsdn.com/msdn/" TARGET=_BLANK&gt;http://www.desarrollaconmsdn.com/msdn/&lt;/a&gt;

&lt;span class="fullpost"&gt;
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-2270337659239696811?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/02/cursos-de-formacion-online-de-microsoft.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/2270337659239696811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/2270337659239696811'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/02/cursos-de-formacion-online-de-microsoft.html' title='Cursos de formación online de Microsoft'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-7202603299591373323</id><published>2009-02-09T17:44:00.008+01:00</published><updated>2009-04-23T15:25:34.810+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moss2007'/><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='UpdatePanel'/><category scheme='http://www.blogger.com/atom/ns#' term='DropDownList'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Bug'/><category scheme='http://www.blogger.com/atom/ns#' term='SP1'/><category scheme='http://www.blogger.com/atom/ns#' term='2007'/><title type='text'>Usar un DropDownList para actualizar un UpdatePanel con SharePoint 2007 SP1</title><content type='html'>&lt;div style="TEXT-ALIGN: justify"&gt;Existen una gran cantidad de sitios en internet en los que podemos ver como actualizar parcialmente nuestro contenido de una página usando un UpdatePanel. Esta entrada se centra sólo en el uso del control DropDownList y SharePoint 2007 con el SP1 instalado, debido a que es un bug detectado. Este bug sólo aplica con el SP1 instalado.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Es muy probable que en un Service Pack posterior, este error se subsane, por lo que debemos aplicar esta “mejora” de forma que nos sea fácil deshacer en caso de ya no ser necesaria.&lt;/div&gt;
&lt;BR&gt;
&lt;span class="fullpost"&gt;Para ello, deberemos hacer una llamada en nuestro Page_Load():
&lt;BR&gt;
&lt;pre class="brush: c#"&gt;
void Page_Load(Object Sender, EventArgs e)
{
   …
   AplicarParcheDDLSP1();
   …
}
&lt;/pre&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Y añadimos el siguiente método al final de la clase. Es muy importante documentar correctamente estas líneas, ya que es posible que en un futuro se deban quitar, y no siempre se encargan de mantener el código los mismos que lo crearon.&lt;/div&gt;
&lt;BR&gt;
&lt;pre class="brush: c#"&gt;
private void AplicarParcheDDLSP1()
{
   if (this.Page.Form != null)
   {
     if (this.Page.Form.Attributes["onsubmit"] == "return _spFormOnSubmitWrapper();")
        this.Page.Form.Attributes["onsubmit"] = "_spFormOnSubmitWrapper();";
   }
   ScriptManager.RegisterStartupScript(
       this,
       this.GetType(),
       "UpdatePanelFixup",
       "_spOriginalFormAction =   document.forms[0].action;_spSuppressFormOnSubmitWrapper=true;",
        true);
}
&lt;/pre&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Ahora simplemente capturamos el evento “SelectedIndexChanged” con el UpdatePanel y veremos como ahora si el resultado es el esperado.&lt;/div&gt;
&lt;BR&gt;
Referencias:
&lt;ul&gt;&lt;li class="puntos"&gt;&lt;a href="http://bloggingabout.net/blogs/rick/archive/2008/03/21/dropdownlist-selectedindexchanged-doesn-t-trigger-updatepanel-in-sharepoint-2007-sp1.aspx"&gt;Rick van den Bosch - Blog&lt;/a&gt;&lt;/li&gt;&lt;li class="puntos"&gt;&lt;a href="http://msmvps.com/blogs/brianmadsen/archive/2008/02/08/using-dropdownlist-with-an-updatepanel-in-moss-2007.aspx"&gt;Brian H. Madsen&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-7202603299591373323?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/02/usar-un-dropdownlist-para-actualizar-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/7202603299591373323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/7202603299591373323'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/02/usar-un-dropdownlist-para-actualizar-un.html' title='Usar un DropDownList para actualizar un UpdatePanel con SharePoint 2007 SP1'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-6871675676568568560</id><published>2009-02-01T13:30:00.010+01:00</published><updated>2009-04-23T15:23:26.568+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moss2007'/><category scheme='http://www.blogger.com/atom/ns#' term='envio alertas'/><category scheme='http://www.blogger.com/atom/ns#' term='spalert'/><category scheme='http://www.blogger.com/atom/ns#' term='spalert.frecuency'/><category scheme='http://www.blogger.com/atom/ns#' term='alerta'/><title type='text'>Programar alertas en MOSS2007</title><content type='html'>&lt;div style="TEXT-ALIGN: justify"&gt;Hace unos días hablamos de la creación de alertas MOSS2007 programáticamente (&lt;a href="http://fgilsole.blogspot.com/2009/01/alertas-sobre-un-sitio-o-una-coleccin.html"&gt;Enlace&lt;/a&gt;). En este artículo, vamos a ver cómo programarlas en el tiempo.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;A través del interfaz de MOSS, se pueden programar alertas, pero desde mi punto de vista no se ofrece al usuario la precisión necesaria. Una alerta de frecuencia diaria, puede ser programada mediante el interfaz de MOSS cada hora en punto, mientras que si lo hacemos programáticamente lo podemos hacer con una precisión al minuto.&lt;/div&gt;
&lt;BR&gt;
MOSS2007 nos permite asignar tres tipos de frecuencia de envío de las alertas:
&lt;ul&gt;&lt;li class="puntos"&gt;Inmediatamente.&lt;/li&gt;&lt;li class="puntos"&gt;Diariamente, a una hora especificada.&lt;/li&gt;&lt;li class="puntos"&gt;Semanalmente, a una hora y día de la semana especificado.&lt;/li&gt;&lt;/ul&gt;
&lt;span class="fullpost"&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Una alerta de frecuencia inmediata es la más fácil de configurar. Tan sólo es necesario asignar la propiedad “Frecuency” del objeto SPAlert al valor de la colección SPAlertFrecuency.Immediate.&lt;/div&gt;
&lt;pre class="brush: c#"&gt;
SPAlert alerta = web.Alerts.Add();
...
//Configuramos la alerta
alerta.AlertFrequency = SPAlertFrequency.Immediate;
...
//Se guardan los cambios y no se notifica al usuario
alerta.Update(false);
&lt;/pre&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;El envió de la alerta se realizará cuando el job que se encarga de procesar las alertas se active. Este job esta programado en MOSS2007 cada 5 minutos. En el peor de los casos, la alerta se enviará 5 minutos después de haberse producido. Se puede reducir el intervalo de tiempo, pero no es recomendable por cuestiones de rendimiento.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;En la configuración de una alerta de frecuencia de envió diaria, es necesario que asignemos el atributo “AlertTime” de la alerta en cuestión. Este atributo es de tipo DateTime, por lo que podemos configurarlo con una precisión incluso de segundos, aunque sería algo inútil debido a la programación del job.&lt;/div&gt;
&lt;BR&gt;
&lt;pre class="brush: c#"&gt;
SPAlert alerta = web.Alerts.Add();
//Configuramos la alerta
alerta.AlertFrequency = SPAlertFrequency.Daily;
int hora = 17;
int minutos = 35;
alerta.AlertTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hora, minutos,0);
...
//Se guardan los cambios y no se notifica al usuario
alerta.Update(false);
&lt;/pre&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Por último tenemos las alertas de frecuencia de envío semanal. Estas alertas se configuran igual que las de frecuencia diaria, a excepción de que el día de envío será el día de la semana que queremos que se repita. Veamos un ejemplo, suponiendo que hoy es jueves, y queremos que se envíe todos los martes.&lt;/div&gt;
&lt;BR&gt;
&lt;pre class="brush:c#"&gt;
SPAlert alerta = web.Alerts.Add();
...
//Configuramos la alerta
alerta.AlertFrequency = SPAlertFrequency.Weekly;
int hora = 17;
int minutos = 35;
alerta.AlertTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hora, minutos,0);
alerta.AlertTime = alerta.AlertTime.AddDays(5);
...
//Se guardan los cambios y no se notifica al usuario
alerta.Update(false);
&lt;/pre&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;La clave de esta frecuencia de envió es asignar como “AlertTime” el momento en el que se quiere recibir la primera alerta, y MOSS2007 se encarga de repetirlo cada 7 días. Para ello, añadimos tantos días como falten para llegar al día de la semana que queremos que se envíe la primera alerta.&lt;/div&gt;
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-6871675676568568560?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/02/programar-alertas-en-moss2007.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/6871675676568568560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/6871675676568568560'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/02/programar-alertas-en-moss2007.html' title='Programar alertas en MOSS2007'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-6586601012880284219</id><published>2009-01-30T00:06:00.019+01:00</published><updated>2009-04-23T15:01:36.535+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='publicar'/><category scheme='http://www.blogger.com/atom/ns#' term='resaltar'/><category scheme='http://www.blogger.com/atom/ns#' term='codigo fuente'/><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><category scheme='http://www.blogger.com/atom/ns#' term='syntaxhighlighter'/><category scheme='http://www.blogger.com/atom/ns#' term='syntax high lighter'/><title type='text'>Como insertar código fuente en un blog o en una web.</title><content type='html'>&lt;div style="TEXT-ALIGN: justify"&gt;En un blog como este, muchas veces es necesario insertar pequeños fragmentos de código. Esta tarea no es nada fácil, ya que conseguir la tabulación correcta, el resaltado de sintaxis, o permitir que el código se copie de forma cómoda, son cualidades que los blogs no suelen facilitar.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Existen varias formas de insertar código, pero yo he elegido “google syntax highlighter", por su resultado muy vistoso, por las posibilidades que ofrece al lector y por su sencilla implementación en nuestras nuevas plantillas de blogger.&lt;/div&gt;
&lt;BR&gt;
&lt;pre class="brush: c#"&gt;
public bool InsertarCodigoEnBlog()
{
    return true;
}
&lt;/pre&gt;&lt;span class="fullpost"&gt;
&lt;BR&gt;
Para adaptar nuestras plantillas para usar “google syntax highlighter”:
&lt;BR&gt;&lt;BR&gt;
1. Accedemos a nuestro escritorio de blogger mediante la dirección http://draft.blogger.com/
&lt;BR&gt;&lt;BR&gt;
2. Pulsamos sobre “diseño” del blog que queremos modificar
&lt;BR&gt;&lt;BR&gt;
3. En la barra superior, pulsamos sobre “Edición de HTML
&lt;BR&gt;&lt;BR&gt;
4. Buscamos la etiqueta &amp;lt;/head&amp;gt; y justo encima insertamos las siguientes líneas:
&lt;BR&gt;
&lt;pre class="brush: html"&gt;
&amp;lt;link href='http://syntaxhighlighter.googlecode.com/svn/trunk/Styles/SyntaxHighlighter.css' rel='stylesheet' type='text/css'/&amp;gt;
&amp;lt;script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shCore.js'/&amp;gt;
&amp;lt;script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCSharp.js'/&amp;gt;
&amp;lt;script language='javascript' src='http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js'/&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/pre&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;
5. Si nos fijamos en las dos últimas líneas, vemos que se importan los scripts para resaltar c# y xml, que son los lenguajes que yo he querido importar, pero se pueden poner tantos como se quieran. Los disponibles van desde el c# y vb.net, hasta Python y Delphi:&lt;/div&gt;
&lt;BR&gt;
&lt;ul&gt;&lt;li class="puntos"&gt;shBrushBash.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushCSharp.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushCpp.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushCss.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushDelphi.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushGroovy.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushJScript.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushJava.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushPhp.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushPython.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushRuby.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushScala.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushSql.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushVb.js &lt;/li&gt;&lt;li class="puntos"&gt;shBrushXml.js &lt;/li&gt;&lt;li class="puntos"&gt;Más en http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/&lt;/li&gt;&lt;/ul&gt;
&lt;BR&gt;
6. Buscamos la etiqueta &amp;lt;/body&amp;gt; y justo encima insertamos las siguientes líneas:
&lt;BR&gt;
&lt;pre class="brush: html"&gt;
&amp;lt;script language='javascript'&amp;gt;
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/pre&gt;
&lt;BR&gt;
7. Guardamos la plantilla.
&lt;BR&gt;&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Ya tenemos todo configurado para poder publicar código fuente. Ahora sólo es necesario que insertemos el código fuente entre las siguientes etiquetas:&lt;/div&gt;
&lt;BR&gt;
&lt;pre class="brush: c#"&gt;
&amp;lt;pre name="code" class="c#"&amp;gt;

CODIGO FUENTE

&amp;lt;/pre&amp;gt;
&lt;/pre&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;El atributo “class” es donde se especifica el lenguaje que deseamos resaltar. Los estilos disponibles dependen de los ficheros que hayamos elegido en los pasos 4 y 5. Deberemos sustituir el valor del atributo “class” por el correspondiente:&lt;/div&gt;
&lt;BR&gt;
&lt;div class="separator" style="CLEAR: both; TEXT-ALIGN: center"&gt;&lt;a style="MARGIN-LEFT: 1em; MARGIN-RIGHT: 1em" href="http://1.bp.blogspot.com/_QP6gi8n-9Dw/SYIy9LesGAI/AAAAAAAABYk/WQIP8sd6yyo/s1600-h/img1.jpg" imageanchor="1"&gt;&lt;img src="http://1.bp.blogspot.com/_QP6gi8n-9Dw/SYIy9LesGAI/AAAAAAAABYk/WQIP8sd6yyo/s320/img1.jpg" border="0" wi="true" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;BR&gt;
Tabla obtenida de: http://code.google.com/p/syntaxhighlighter/wiki/Languages
&lt;BR&gt;&lt;BR&gt;
Con esto ya podremos mostrar nuestro código fuente de una forma usable, eficiente y elegante.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-6586601012880284219?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/01/como-insertar-codigo-fuente-en-un-blog.html#comment-form' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/6586601012880284219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/6586601012880284219'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/01/como-insertar-codigo-fuente-en-un-blog.html' title='Como insertar código fuente en un blog o en una web.'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QP6gi8n-9Dw/SYIy9LesGAI/AAAAAAAABYk/WQIP8sd6yyo/s72-c/img1.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-7101648708645431356</id><published>2009-01-29T16:01:00.037+01:00</published><updated>2009-04-23T15:21:34.898+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='recortar entradas'/><category scheme='http://www.blogger.com/atom/ns#' term='readmore'/><category scheme='http://www.blogger.com/atom/ns#' term='leermas'/><category scheme='http://www.blogger.com/atom/ns#' term='leer más'/><title type='text'>Recortar entradas en blogger con plantillas 2008 con el enlace “Leer Más”.</title><content type='html'>&lt;div style="text-align: justify;"&gt;Para mantener un blog limpio y usable he decido que en este blog se muestren las entradas recortadas en la página principal. Tras una pequeña introducción, se muestra un enlace “Leer más…” que nos llevará a una página con la entrada completa.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="text-align: justify;"&gt;Esta adaptación la he realizado sobre las últimas plantillas a día de hoy (Enero de 2009). Remarco esto porque hay muchos post en internet, pero no todos ellos funcionan, debido a que son para plantillas clásicas.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="text-align: justify;"&gt;Otra cosa muy interesante de esta adaptación es que no permite seleccionar de forma manual donde insertar el enlace, y no depende ni del número de líneas ni del número de caracteres.&lt;/div&gt;
&lt;BR&gt;
&lt;span class="fullpost"&gt;
Pasos para recortar las entradas:
&lt;BR&gt;&lt;BR&gt;
1. Accedemos a nuestro escritorio de blogger mediante la dirección "draft.blogger.com"
&lt;BR&gt;&lt;BR&gt;
2. Pulsamos sobre “diseño” del blog que queremos modificar.
&lt;BR&gt;&lt;BR&gt;
3. En la barra superior, pulsamos sobre “Edición de HTML”.
&lt;BR&gt;&lt;BR&gt;
4. Activamos la casilla de “Extender plantilla de artilugios”.
&lt;BR&gt;&lt;BR&gt;
5. Buscamos el siguiente código:
&lt;BR&gt;
&lt;pre class="brush: c#"&gt;
&amp;lt;div class='post-header-line-1'/&amp;gt;
&amp;lt;div class='post-body entry-content'&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;data:post.body/&amp;gt;&amp;lt;/p&amp;gt;
&lt;/pre&gt;
&lt;BR&gt;
6. Y reemplazamos estas tres líneas por:
&lt;pre class="brush: c#"&gt;
&amp;lt;div class='post-header-line-1'/&amp;gt;
    &amp;lt;div class='post-body entry-content'&amp;gt;
     &amp;lt;b:if cond='data:blog.pageType == &amp;quot;item&amp;quot;'&amp;gt;
       &amp;lt;style&amp;gt;.fullpost{display:inline;}&amp;lt;/style&amp;gt;
       &amp;lt;p&amp;gt;&amp;lt;data:post.body/&amp;gt;&amp;lt;/p&amp;gt;
     &amp;lt;b:else/&amp;gt;
       &amp;lt;style&amp;gt;.fullpost{display:none;}&amp;lt;/style&amp;gt;
       &amp;lt;data:post.body/&amp;gt;
       &amp;lt;a expr:href='data:post.url'&amp;gt;Leer más...&amp;lt;/a&amp;gt;
     &amp;lt;/b:if&amp;gt;
&lt;/pre&gt;
&lt;BR&gt;
7. Guardamos la plantilla.
&lt;BR&gt;&lt;BR&gt;
&lt;div style="text-align: justify;"&gt;
Para simplificar la inserción, vamos a modificar la plantilla de entrada, para que nos inserte automáticamente los estilos cuando insertemos una nueva entrada.&lt;/div&gt;
&lt;BR&gt;
1. Pulsamos sobre la pestaña de “Configuración”.
&lt;BR&gt;&lt;BR&gt;
2. Pulsamos sobre la subpestaña de “Formato”.
&lt;BR&gt;&lt;BR&gt;
3. Bajamos hasta el final de la página, e insertamos sobre el cuadro de texto de “Plantilla de entrada” el siguiente contenido:
&lt;pre class="brush: c#"&gt;
&amp;lt;span class="fullpost"&amp;gt;

&amp;lt;/span&amp;gt;
&lt;/pre&gt;
&lt;BR&gt;
4. Guardamos la configuración.
&lt;BR&gt;&lt;BR&gt;
&lt;div style="text-align: justify;"&gt;
Ya hemos terminado de configurar nuestra plantilla. Ahora, cada vez que insertemos una entrada, el sistema nos mostrará automáticamente la estructura necesaria para recortar nuestras entradas. Todo lo que esté por encima de la etiqueta de &amp;lt;span class="fullpost"&amp;gt;, se mostrará en la página principal y en el detalle de la entrada, mientras todo lo que este entre la etiqueta &amp;lt;span class="fullpost"&amp;gt; y la etiqueta &amp;lt;/span&amp;gt; sólo se mostrará dentro del detalle de la entrada.&lt;/div&gt;
&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-7101648708645431356?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/01/recortar-entradas-en-blogger-con.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/7101648708645431356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/7101648708645431356'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/01/recortar-entradas-en-blogger-con.html' title='Recortar entradas en blogger con plantillas 2008 con el enlace “Leer Más”.'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-1676987264621735507</id><published>2009-01-26T19:32:00.036+01:00</published><updated>2009-04-23T15:09:09.401+02:00</updated><title type='text'>Alertas sobre un sitio o una colección de sitios en MOSS2007.</title><content type='html'>&lt;div align="justify"&gt;El sistema de alertas que ofrece MOSS2007 es muy potente y versátil. No obstante, me he enfrentado a una situación que no he podido resolver directamente con MOSS. Las alertas de MOSS sólo son aplicables a listas o elementos de listas, siendo este, desde mi punto de vista, una gran limitación.&lt;/div&gt;
&lt;BR&gt;
&lt;div align="justify"&gt;Me veo en la obligación de hacer una alerta a nivel de un sitio. Esto no se soporta por MOSS2007 de forma nativa, pero con un poco de diseño, podremos solventar este escollo. ¿Qué entendemos por una alerta a nivel de sitio? Pues una alerta que avise cuando cualquier tipo de contenido sea añadido, modificado, borrado, o todos ellos, en el sitio web. Por lo tanto la idea es replicar en cada lista o biblioteca la misma alerta. Es tan sencillo como recorrer las listas del sitio en cuestión y replicar la alerta. Veamos un ejemplo para verlo más claro:&lt;/div&gt;
&lt;span class="fullpost"&gt;
&lt;pre class="brush: c#"&gt;
public bool CrearAlertaSitio(Guid idWeb)
{
   bool resultado = false;

   try
   {
      SPWeb web;

      EliminarAlertaSitio(idWeb);

      //Abrimos el sitio
      if (SPContext.Current.Web.ID.Equals(idWeb))
      {
         web = SPContext.Current.Web;
      }
      else
      {
         web = SPContext.Current.Web.Webs[idWeb];
      }

      //Configuramos la alerta.
      SPListCollection todasListas = web.Lists;

      foreach (SPList lista in todasListas)
      {
         //Omitimos las listas que no se indexan.
         if (!lista.NoCrawl)
         {
            SPAlert alerta = web.Alerts.Add();

            //Configuramos la alerta
            alerta.AlertFrequency = SPAlertFrequency.Immediate;
            alerta.AlertType = SPAlertType.List;
            alerta.EventType = SPEventType.All;
            alerta.List = lista;
            alerta.Status = SPAlertStatus.On;
            alerta.Title = "Mi alerta personalizada a nivel de sitio.";
            alerta.User = web.CurrentUser;

            //Se guardan los cambios y no se notifica al usuario.
            alerta.Update(false);
         }
      }
      resultado = true;
   }
   catch (Exception ex)
   {
      //Controlamos la excepcion.
   }

   return resultado;
}
&lt;/pre&gt;
&lt;BR&gt;
&lt;div align="justify"&gt;
¿Y si queremos eliminar una la alerta? Pues aplicamos el mismo sistema. Recorremos todas las listas del sitio web, y eliminamos la alerta. Veamos un ejemplo:
&lt;/div&gt;
&lt;BR&gt;
&lt;pre class="brush: c#"&gt;
public bool EliminarAlertaSitio(Guid idWeb)
{
   bool resultado = false;
   SPWeb web;
   try
   {
      //Abrimos el sitio
      if (SPContext.Current.Web.ID.Equals(idWeb))
      {
         web = SPContext.Current.Web;
      }
      else
      {
         web = SPContext.Current.Web.Webs[idWeb];
      }

      //Recuperamos las alertas la alerta.
      SPAlertCollection todasAlertas = web.Alerts;

      List&amp;lt;Guid&amp;gt; alertasBorrar = new List&amp;lt;Guid&amp;gt;();

      foreach (SPAlert alerta in todasAlertas)
      {
         if (alerta.UserId.Equals(web.CurrentUser.ID) &amp;amp;&amp;amp; alerta.AlertType.Equals(SPAlertType.List))
         {
            alertasBorrar.Add(alerta.ID);
         }
      }

      foreach (Guid idAlerta in alertasBorrar)
      {
         web.Alerts.Delete(idAlerta);
      }

      resultado = true;
   }
   catch (Exception ex)
   {
      //Controlamos la excepcion
   }

   return resultado;
}
&lt;/pre&gt;
&lt;BR&gt;
&lt;div align="justify"&gt;¿Y si queremos aplicarlo a una colección de sitios, y a sus sitios? Pues simplemente tendremos que iterar para cada sitio.
&lt;/div&gt;
&lt;BR&gt;
&lt;pre class="brush: c#"&gt;
public bool CrearAlertaCS(Guid idWeb)
{
   SPWebCollection todasWeb = SPContext.Current.Web.Webs;

   //Creamos la alerta para el sitio actual -- la colección de sitios
   CrearAlertaSitio(idWeb);

   foreach (SPWeb idSitio in todasWeb)
   {
      CrearAlertaSitio(idSitio);
   }
}
&lt;/pre&gt;
&lt;BR&gt;
Y hasta aquí con las alertas a nivel de sitio y colección de sitios.

&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-1676987264621735507?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/01/alertas-sobre-un-sitio-o-una-coleccin.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/1676987264621735507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/1676987264621735507'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/01/alertas-sobre-un-sitio-o-una-coleccin.html' title='Alertas sobre un sitio o una colección de sitios en MOSS2007.'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-1161044020207462893</id><published>2009-01-25T17:46:00.002+01:00</published><updated>2009-04-23T15:13:05.004+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb.net'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='DCE'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='cetificacion gratutita'/><title type='text'>Desarrollador 5 estrellas</title><content type='html'>&lt;div style="TEXT-ALIGN: justify"&gt;Si eres desarrollador o estudiante y alguna vez has pensado en cómo destacar un poco más o cómo hacer que te reconozcan tus conocimientos, ser un "Desarrollador 5 Estrellas" (DCE) es una gran oportunidad.
&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Este sistema de Microsoft se basa en un curso dividido en 5 estrellas, que nos permitirá de forma cómoda y gradual aprender nuevas cosas y validar nuestros conocimientos como desarrolladores.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Los contenidos del curso son variados, empezando desde .Net básico, pasando por c# o vb.net, y terminado con las librerías compact framework para programación en dispositivos móviles.&lt;/div&gt;
&lt;BR&gt;
&lt;span class="fullpost"&gt;&lt;div style="TEXT-ALIGN: justify"&gt;Los que estabais esperando el pero, deciros que no lo he encontrado, ya que el coste de esta capacitación es totalmente gratuito. &lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Debido al gran éxito de este sistema, Microsoft ya ha puesto a nuestra disposición otras dos estrellas más, la Gold y la Platinum.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Los que estéis interesados en esta capacitación, podéis obtener más información y registraros en esta URL:&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;&lt;a href="http://www.mslatam.com/latam/msdn/comunidad/dce2005/"&gt;http://www.mslatam.com/latam/msdn/comunidad/dce2005/&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-1161044020207462893?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/01/desarrollador-5-estrellas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/1161044020207462893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/1161044020207462893'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/01/desarrollador-5-estrellas.html' title='Desarrollador 5 estrellas'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5892139894341550791.post-2328052530252250090</id><published>2009-01-25T12:41:00.006+01:00</published><updated>2009-04-23T15:11:28.614+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fernando gil solé'/><category scheme='http://www.blogger.com/atom/ns#' term='everis'/><title type='text'>Apertura</title><content type='html'>&lt;div style="TEXT-ALIGN: justify"&gt;Saludos a todos,&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Con este post quiero dar comienzo a este blog, basado en temas referentes a la tecnología y experiencias que he obtenido con el día a día en el trabajo.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;Los que querais saber un poco de mi, deciros a grandes rasgos, que soy ingeniero informático por la UC3M, y que actualmente trabajo en everis.&lt;/div&gt;
&lt;BR&gt;
&lt;div style="TEXT-ALIGN: justify"&gt;¡¡No dudéis en comentar o en poneros en contacto conmigo para cualquier pregunta o comentario!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5892139894341550791-2328052530252250090?l=fgilsole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://fgilsole.blogspot.com/2009/01/apertura.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/2328052530252250090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5892139894341550791/posts/default/2328052530252250090'/><link rel='alternate' type='text/html' href='http://fgilsole.blogspot.com/2009/01/apertura.html' title='Apertura'/><author><name>Fernando Gil Solé</name><uri>http://www.blogger.com/profile/04733261135482244151</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_QP6gi8n-9Dw/SYH0hnaM6FI/AAAAAAAABYI/bS_m_6l937k/S220/fer.png'/></author><thr:total>0</thr:total></entry></feed>
