<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results for 'app:weblogs' matching tags 'Configuracion', 'Tecnicas', and 'C#'</title><link>http://msmvps.com/search/SearchResults.aspx?q=app:weblogs&amp;tag=Configuracion,Tecnicas,C%23&amp;orTags=0&amp;o=DateDescending</link><description>Search results for 'app:weblogs' matching tags 'Configuracion', 'Tecnicas', and 'C#'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Cuantos ingenieros se necesitan para cambiar una bombilla o crear sitios SharePoint</title><link>http://msmvps.com/blogs/haarongonzalez/archive/2011/03/31/cuantos-ingenieros-se-necesitan-para-cambiar-una-bombilla-o-crear-sitios-sharepoint.aspx</link><pubDate>Thu, 31 Mar 2011 05:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1790986</guid><dc:creator>haaron</dc:creator><description>&lt;p&gt;No es curioso, es un hecho que en el ambiente laboral relacionado con tecnolog&amp;iacute;as de informaci&amp;oacute;n y seguramente en muchos otros, nos encontramos con diversas personalidades, temperamentos y arquetipos colaborando d&amp;iacute;a con d&amp;iacute;a para resolver alg&amp;uacute;n problema t&amp;eacute;cnico o de negocio. Las personas tenemos toda una historia distinta, adem&amp;aacute;s de cualidades que en parte de forma consiente o inconsciente constituye la forma muy particular de ver y reaccionar ante vida, en algunos casos estas cualidades son las adecuadas para ciertos escenarios pero que en definitiva en otros no lo son. &lt;/p&gt;
&lt;p&gt;Entonces la pregunta es, &amp;iquest;c&amp;oacute;mo aprovechar lo que cada quien aporta para generar valor empresarial?, esa es una pregunta que especialistas en Management, Leadership y Coaching podr&amp;iacute;an responder sin ning&amp;uacute;n problema. Sin embargo, desde mi &amp;oacute;ptica por lo menos &lt;strong&gt;compartir constantemente una visi&amp;oacute;n compartida con lineamientos claros&lt;/strong&gt; es esencial para organizar y aprovechar lo que cada persona con su historia histeria y experiencia aporta.&lt;/p&gt;
&lt;p&gt;En esta historia, el requerimiento es crear un conjunto finito de sitios con las siguientes caracter&amp;iacute;sticas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cada sitio se basa en la plantilla de sitio de &lt;b&gt;Trabajo en Equipo&lt;/b&gt; &lt;/li&gt;
&lt;li&gt;Cada sitio no deber&amp;aacute; tener &lt;b&gt;herencia de permisos&lt;/b&gt; &lt;/li&gt;
&lt;li&gt;Cada sitio deber&amp;aacute; contar con 4 grupos &amp;ldquo;Owners, Visitors, Members, Permissions&amp;rdquo; bajo la nomenclatura &amp;ldquo;&lt;b&gt;Sitio + Nombre de grupo&lt;/b&gt;&amp;rdquo; &lt;/li&gt;
&lt;li&gt;Cada sitio cuenta con usuarios espec&amp;iacute;ficos para cada grupo. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que piensan los miembros del equipo de TI:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Miembro 1 - Vamos a lucirnos con la soluci&amp;oacute;n&lt;b&gt;, hagamos un WSP con feature receiver&lt;/b&gt; a nivel sitio web para que cuando le den activar en las caracter&amp;iacute;sticas del sitio, program&amp;aacute;ticamente los construya y configure. &lt;/li&gt;
&lt;li&gt;Miembro 2 &amp;ndash; &amp;iquest;Hay urgencia por parte del cliente como para dedicar tiempo a construir y probar un WSP?, &amp;iquest;se va a reutilizar la jerarqu&amp;iacute;a en alg&amp;uacute;n otro sitio en el futuro?, &amp;iquest;conviene dejar archivos en el 12 hive y un ensamblado en el GAC con full trust assembly?, &amp;iquest;vamos a implementar en DEV, QA, UAT y PROD el WSP? Yo digo que &lt;b&gt;construyamos los sitios manualmente&lt;/b&gt; usando el UI de SharePoint. &lt;/li&gt;
&lt;li&gt;Miembro 3 &amp;ndash; &lt;b&gt;Usemos scripts&lt;/b&gt; en un archivos *.bat que ejecute el comando stsadm.exe para crear los sitios y grupos, pasamos par&amp;aacute;metros e nivel comando y creamos un solo archivo que cuente con todas las instrucciones necesarias. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Despu&amp;eacute;s los miembros dan inicio a los argumentos t&amp;eacute;cnico-personales para defender su postura a capa y espada, &lt;span style="text-decoration:line-through;"&gt;como si fueran program managers de microsoft&lt;/span&gt;, correos electr&amp;oacute;nicos empiezan a fluir con preguntas que toman minutos leer y escribir de regreso para ser enviados de nuevo. El tiempo pasa, el tema sube de nivel, siguen estancados, el usuario pregunta por sus sitios y en eso Miembro 2 lo toma personal, sube de nivel su contestaci&amp;oacute;n y claudica ante su postura. Miembro 1 ratifica la postura de Miembro 2 con el af&amp;aacute;n de no afectar al equipo y Miembro 3 procede a ejecutar la postura del Miembro 2. &lt;b&gt;Tiempo total transcurrido 2.5 horas.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Si lo analizamos, todos pierden. El esp&amp;iacute;ritu del equipo se deteriora, definitivamente se ve mal y el usuario de plano esperando. Realmente cualquier postura es aceptable y totalmente factible, cada una con sus peculiaridades, estimaciones, esfuerzos y consecuencias. &lt;/p&gt;
&lt;p&gt;Dicho esto, tengo 2 preguntas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;iquest;C&amp;oacute;mo podr&amp;iacute;amos contextualizar las cosas para asegurar que antes de dar inicio a una soluci&amp;oacute;n construida por ingenieros, todos est&amp;eacute;n viendo hacia el mismo lugar? Esa es una respuesta que probablemente podamos encontrar aqu&amp;iacute; &lt;a href="http://www.crecenegocios.com/los-objetivos-de-una-empresa/"&gt;http://www.crecenegocios.com/los-objetivos-de-una-empresa/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&amp;iquest;Qu&amp;eacute; estrategia t&amp;eacute;cnica conviene utilizar para un escenario donde el resultado se requiere de inmediato? &lt;b&gt;A veces me pregunto si mi trabajo es preguntar&lt;/b&gt;, sin embargo haciendo un intento de posible respuesta, dejo algunos cuestionamientos respecto al escenario planteado y claro, su implementaci&amp;oacute;n. &lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;Construyendo sitios de forma manual&lt;/h1&gt;
&lt;h2&gt;Pros&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;R&amp;aacute;pida ejecuci&amp;oacute;n usando UI de SharePoint &lt;/li&gt;
&lt;li&gt;Cero dependencia a c&amp;oacute;digo, ensamblado o XMLs, todo queda en la base de datos usando los site definitions y templates propietarios de SharePoint que si est&amp;aacute;n considerados para ser migrados y respaldados &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;No es repetible &lt;/li&gt;
&lt;li&gt;Requiere de intervenci&amp;oacute;n manual para replicar en cada ambiente y por lo tanto hay margen de error &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Implementaci&amp;oacute;n&lt;/h2&gt;
&lt;p&gt;Ubicados en el sitio en cuesti&amp;oacute;n accedemos a &lt;strong&gt;Acciones de sitio&lt;/strong&gt;, &lt;strong&gt;Configuraci&amp;oacute;n del sitio, Toda la configuraci&amp;oacute;n del sitio&lt;/strong&gt; y al de final las galer&amp;iacute;as elegimos &lt;strong&gt;crear sitios o &amp;aacute;rea de trabajo&lt;/strong&gt;. Especificamos el nombre, url y los siguientes puntos:&lt;/p&gt;
&lt;table width="400" cellpadding="2" cellspacing="2" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;&lt;strong&gt;Crear sitio&lt;/strong&gt;&lt;/td&gt;
&lt;td width="200" valign="top"&gt;&lt;strong&gt;Configurar grupos&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7573.image_5F00_3C44BF6E.png"&gt;&lt;img height="484" width="300" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/2806.image_5F00_thumb_5F00_2FA6EC85.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="200" valign="top"&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/5554.image_5F00_7B629D71.png"&gt;&lt;img height="484" width="435" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/7827.image_5F00_thumb_5F00_1ECF1C0A.png" alt="image" border="0" title="image" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;Construyendo sitios program&amp;aacute;ticamente&lt;/h1&gt;
&lt;h2&gt;Pros&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Total portabilidad a m&amp;uacute;ltiples ambientes y sitios con m&amp;iacute;nimo esfuerzo de implementaci&amp;oacute;n &lt;/li&gt;
&lt;li&gt;Aprovisionamiento y des aprovisionamiento flexible de la funcionalidad y dependencias &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Crea una dependencia a un WSP, ensamblado en GAC y archivos en 12 hive &lt;/li&gt;
&lt;li&gt;Requiere de construcci&amp;oacute;n, pruebas, empaquetamiento y puesta en marcha en cada ambiente &lt;/li&gt;
&lt;li&gt;Pasa a control de versiones y gesti&amp;oacute;n &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Implementaci&amp;oacute;n&lt;/h2&gt;
&lt;p&gt;En este caso vemos que utilizamos una colecci&amp;oacute;n especial de tipo diccionario para almacenar la URL y Nombre del sitio que deseamos crear. Existen varias formas de hacer lo mismo, en este caso recorremos la colecci&amp;oacute;n de plantillas SharePoint para poder elegir la que usaremos &amp;ldquo;Team Sites&amp;rdquo;. Recorremos la colecci&amp;oacute;n de nuestro diccionario y utilizamos la colecci&amp;oacute;n Webs para agregar un nuevo site pasando los argumento recolectados, lo mas importante destacar en este punto es que el ultimo argumento false indica que no se mantiene la herencia y a continuaci&amp;oacute;n ya dentro del sitio rompemos la herencia, posteriormente recorremos el arreglo que tiene el nombre de los grupos que estaremos construyendo program&amp;aacute;ticamente, ese c&amp;oacute;digo se los debo y si alguien quiere compartirlo adelante.&lt;/p&gt;
&lt;pre class="csharpcode"&gt;           &lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;span class="kwrd"&gt;uint&lt;/span&gt;        lcid_english = 1033;
            &lt;span class="kwrd"&gt;string&lt;/span&gt;      siteUrl = &lt;span class="str"&gt;&amp;quot;http://portal.litwareinc.com&amp;quot;&lt;/span&gt;;
            &lt;span class="kwrd"&gt;string&lt;/span&gt;[]    groupTypeNames = {&lt;span class="str"&gt;&amp;quot;Owners&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;Members&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;Permissions&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;Visitors&amp;quot;&lt;/span&gt;};

            Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; targetSites = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;();
            targetSites.Add(&lt;span class="str"&gt;&amp;quot;demo1&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Sitio de demostracion 1&amp;quot;&lt;/span&gt;);
            targetSites.Add(&lt;span class="str"&gt;&amp;quot;demo2&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Sitio de demostracion 2&amp;quot;&lt;/span&gt;);
            targetSites.Add(&lt;span class="str"&gt;&amp;quot;demo3&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Sitio de demostracion 3&amp;quot;&lt;/span&gt;);
                    
                &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPSite site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(siteUrl))
                {
                    SPWebTemplate siteTemplate = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
                    SPWebTemplateCollection templateCollection = site.GetWebTemplates(lcid_english);
                    
                    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (SPWebTemplate template &lt;span class="kwrd"&gt;in&lt;/span&gt; templateCollection)
                    {
                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (template.Title.Equals(&lt;span class="str"&gt;&amp;quot;Team Site&amp;quot;&lt;/span&gt;))
                        {
                            siteTemplate = template; 
                            &lt;span class="kwrd"&gt;break&lt;/span&gt;;
                        }
                    }

                    &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb())
                    {
                        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; siteInfo &lt;span class="kwrd"&gt;in&lt;/span&gt; targetSites)
                        {
                            &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb newWeb = web.Webs.Add(&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;siteInfo.Key, &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;siteInfo.Value, &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty, &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;lcid_english, siteTemplate, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;))
                            {
                                newWeb.BreakRoleInheritance(&lt;span class="kwrd"&gt;false&lt;/span&gt;);
                                newWeb.Update();

                                &lt;span class="kwrd"&gt;foreach&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt; groupTypeName &lt;span class="kwrd"&gt;in&lt;/span&gt; groupTypeNames)
                                {
                                    &lt;span class="kwrd"&gt;string&lt;/span&gt; groupType = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;&amp;quot;{0} {1}&amp;quot;&lt;/span&gt;,siteInfo.Value,groupTypeName);
                                    
                                    &lt;span class="rem"&gt;// aqui deberas crear el grupo y asignar los permisos         &lt;/span&gt;
                                }                                                                  
                            }                            
                        }
                    }                
                }&lt;/span&gt; &lt;/pre&gt;
&lt;p&gt;

&lt;/p&gt;
&lt;h1&gt;Construyendo sitios con comandos stsadm.exe&lt;/h1&gt;
&lt;h2&gt;Pros&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Reutilizaci&amp;oacute;n moderada e intervenci&amp;oacute;n manual para especificar sites, groups que se aprovisionaran por los comandos &lt;/li&gt;
&lt;li&gt;F&amp;aacute;cil de corregir y reaccionar ante cualquier error &lt;/li&gt;
&lt;li&gt;La forma recomendada por Microsoft &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cons &lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Crea una dependencia al script que ejecuta los comandos de staadm.exe para la estructura solicitada &lt;/li&gt;
&lt;li&gt;Pasa a control de versiones y gesti&amp;oacute;n &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Implementaci&amp;oacute;n&lt;/h2&gt;
&lt;p&gt;En esta alternativa utilizamos las sentencias del comando stsadm.exe ubicado en c:\program files\common files\microsoft shared\web server extensions\12\bin especificando mediante &amp;ndash;o la opci&amp;oacute;n que deseamos y mediante los par&amp;aacute;metros especificamos lo que requerimos. Espec&amp;iacute;ficamente &amp;ndash;unique describe que no queremos heredar los permisos. Subrayo en rojo la parte donde especificamos el URL del sitio que estaremos creando. En este caso estamos creando un sitio llamado Sitio 1 y posteriormente creando cuatro grupos en donde los grupos Visitors y Members tienen como due&amp;ntilde;o al grupo Permissions.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o createweb &amp;ndash;url &amp;quot;el url del sitio donde crearemos/&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;url del nuevo sitio&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;-lcid 1033 -sitetemplate STS#0&amp;nbsp; -title &amp;quot;Sitio 1&amp;quot; -description &amp;quot;&amp;quot; &amp;ndash;unique&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o creategroup -url &amp;quot;el url del sitio donde aplicaremos&amp;quot;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt; -name &amp;quot;Sitio 1 Permissions&amp;quot; -description &amp;quot;Permissions of the site&amp;quot; -ownerlogin &amp;quot;administrator@litwareinc.com&amp;quot; -type &amp;quot;Owner&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o creategroup -url &amp;quot;el url del sitio donde aplicaremos&amp;quot;&lt;/span&gt;&lt;a href="http://portal.litwareinc.com/2/&amp;quot;"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt; -name &amp;quot;Sitio 1 Owners&amp;quot; -description &amp;quot;Owners of the site&amp;quot; -ownerlogin &amp;quot;administrator@litwareinc.com&amp;quot; -type &amp;quot;Owner&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o creategroup -url &amp;quot;el url del sitio donde aplicaremos&amp;quot;&lt;/span&gt;&lt;a href="http://portal.litwareinc.com/2/&amp;quot;"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt; -name &amp;quot;Sitio 1 Visitors&amp;quot; -description &amp;quot;Visitors of the site&amp;quot; -ownerlogin &amp;quot;Sitio 1 Permissions&amp;quot; -type &amp;quot;Visitor&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;stsadm.exe -o creategroup -url &amp;quot;el url del sitio donde aplicaremos&amp;quot;&lt;/span&gt;&lt;a href="http://portal.litwareinc.com/2/&amp;quot;"&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:Courier New;font-size:xx-small;"&gt; -name &amp;quot;Sitio 1 Members&amp;quot; -description &amp;quot;Members of the site&amp;quot; -ownerlogin &amp;quot;Sitio 1 Permissions&amp;quot; -type &amp;quot;Member&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Personalmente en ocasiones he llegado a pensar, &amp;iquest;qu&amp;eacute; es mas complejo?, la tecnolog&amp;iacute;a o la psicolog&amp;iacute;a, en fin.&lt;/p&gt;
&lt;p&gt;&amp;iquest;Cu&amp;aacute;l es la mejor alternativa? Depende &lt;img src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/haarongonzalez.metablogapi/8400.wlEmoticon_2D00_smile_5F00_2F86A0EB.png" alt="Sonrisa" class="wlEmoticon wlEmoticon-smile" style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" /&gt;&lt;/p&gt;</description></item></channel></rss>