Welcome to Blogs de SharePoint Sign in | Join | Help

Todo desarrollador de SharePoint debe tener un ambiente virtual, sin excepción. Y como tal, desde tiempo memorable he sido fan de Virtual PC. A pesar de que VMware tiene excelentes productos, que he tenido que usar por diversas razones, siempre considere a Virtual PC 2007 mi producto favorito. A pesar de sus problemas  (para accederla por red desde el host necesitas crear un Loopback Adapter, el clipboard de repente dejaba de funcionar) o que VMware fuera considerado como mejor producto por muchos.

Cuando me entere que Windows 7 incluía una ya necesaria actualización de Virtual PC no pude menos que emocionarme, mas con el hecho de que era requerido un procesador con soporte para virtualización. Y claro en cuanto instale Windows 7 cambie todas mis virtuales al nuevo Virtual PC.

El romance duro muy poco, sincera

mente el nuevo software no me daba muchas cosas nuevas. Al contrario, parece empeñado en hacerme la vida imposible. Desde la integración de los componentes (el clipboard dejo de funcionar desde hace meses), continuamente decide no conectarse a internet a pesar de estar bien configurado y con ip correcta, hasta la estabilidad y rapidez de la virtual ha dejado mucho que desear. Y para colmo ahora tengo una laptop con 8GB de RAM y un procesador i7 y que me doy cuenta que Virtual PC no soporta mas de 3712 MB asignados y solo usa 1 procesador.

Con la llegada de SharePoint 2010 con la etiqueta de x64 only obligo a todos los que seguíamos fieles a Virtual PC a buscar nuevos horizontes. Y por recomendación de un compañero decidí probar Virtual Box. Soporte de 64 bits, soporte de múltiples procesadores (aunque en la primera versión que yo utilice no funcionaba muy bien) y me permite asignar mas de 3712 MB de memoria.

Después de jugar varios días con SharePoint 2010, y con la nueva versión de Virtual Box (3.2.4) en la que funciona muy bien el uso de múltiples procesadores, he decidido migrar mi proyecto actual de MOSS2007 a Virtual Box. Creo que es la mejor opción, aunque el día a día me dirá si fue la decisión correcta, así que esperen un futuro post.

Comparación:

Características

Windows Virtual PC

Oracle Virtual Box

Hardware Virtualization Support

Si

Si

Cliente x64

No

Si

Múltiples Procesadores

No

Si

Limite de RAM

3712

Memoria del host (con 8GB recomienda 5274 MB para no afectar el rendimiento)

Yo en estos momentos tengo un MOSS2007 a 64 bits, con 4 procesadores y 4608 MB de RAM, y esta de maravilla - por fin le estoy sacando algo de jugo al i7 que trae esta laptop.

Conclusión: Los nuevos requerimientos de SharePoint 2010 nos obligan a cambiar, mas hardware, distinto software... y los ambientes de MOSS2007 se pueden beneficiar de ello, no se queden en VPC2007 / Windows VPC

 

P.D. Mientras escribía este post vi la goliza de Portugal a Corea del norte, el único partido que ha valido la pena el levantarse tan temprano :)

Mi ultimo post en este blog fue hace mas de 2 años. Han pasado muchas cosas desde aquel entonces, pero lo importante es que el gusto por compartir y continuar aprendiendo sigue intacto.

Y después de haber quedado sin ningún blog en que escribir, (ya que la empresa donde trabajaba decidió eliminar mi blog - extraño varios de los posts que estaban ahí), ya están funcionando nuevamente los blogs de la comunidad de SharePoint y por lo tanto estoy nuevamente motivado para volver a escribir y mas ahora que tenemos a SharePoint 2010 que esta poca madre y ya estoy impaciente por empezarlo a instalar y a usar y a programar en el.

Mi objetivo este año es escribir muchos posts, sobre muchos temas, y espero cumplirlo. Por lo pronto les dejo mi twitter @ppablodiaz escribo pocas cosas tecnicas pero estare poniendo links a todos los posts que haga.

Y no me quiero despedir sin agradecer a Luis du solier (@ldusolier) por su apoyo y por su paciencia para reparar este blog, vas a ver que valio la pena tener que meterte hasta la base de datos a recuperar mi cuenta :)

Etiquetas de Technorati:
0 Comments
Filed under:

Al habilitar el blob cache en un sitio de publicación, después de cierto tiempo (pueden ser días, o incluso semanas) empieza a registrarse un par de errores en el Application Log:

Event Type:    Error
Event Source:    Office SharePoint Server
Event Category:    Publishing Cache
Event ID:    5538
Date:        5/6/2008
Time:        4:34:51 PM
User:        N/A
Computer:    PRONOSTIC04
Description:
An error occured in the blob cache.  The exception message was 'Access to the path 'C:\blobCache\1998969947\21eb88ef-e87f-4f3c-80d6-67b818822736.bin' is denied.'.

 

Event Type:    Error
Event Source:    Office SharePoint Server
Event Category:    Office Server General
Event ID:    7888
Date:        5/6/2008
Time:        4:34:51 PM
User:        N/A
Computer:    PRONOSTIC04
Description:
A runtime exception was detected. Details follow.
Message: Access to the path 'C:\blobCache\1998969947\21eb88ef-e87f-4f3c-80d6-67b818822736.bin' is denied.

Techinal Details:
System.UnauthorizedAccessException: Access to the path 'C:\blobCache\1998969947\21eb88ef-e87f-4f3c-80d6-67b818822736.bin' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at Microsoft.SharePoint.Publishing.BlobCache.WriteIndex(Boolean tokensOnly)
   at Microsoft.SharePoint.Publishing.BlobCache.<>c__DisplayClasse.<CheckSiteChanges>b__a()
   at Microsoft.Office.Server.Diagnostics.FirstChanceHandler.ExceptionFilter(Boolean fRethrowException, TryBlock tryBlock, FilterBlock filter, CatchBlock catchBlock, FinallyBlock finallyBlock)

 

Jussi Paolo tiene un post donde resuelve el problema http://howtocode.blogspot.com/2007/11/moss-blogcache-not-working.html, el dar permisos a la cuenta IIS_WPG hizo desaparecer el error!! Bueno, además desactive el blobcache, borre las carpetas, y lo volvi a activar.

 

Si en algunos dias o la proxima semana vuelve a aparecer el error, veran otro post al respecto... esperemos que no :D

Y así es, después de que uno de mis propósitos de año nuevo era escribir mas a menudo en mi blog, heme aquí 4 meses después escribiendo...

Un punto positivo, es que por fin habilite el CKS:EBE en mi blog en sharepoint, me encanta el tema default (de Heather Waterman) pero espero en poco tiempo crear algo mas personal.

Por cierto, batalle un poco para echar a andar el EBE en este sitio existente, durante la semana pasada mi blog no mostraba ningún post... en los foros del CKS hay una discusión en la que viene la solución al problema.

En mi caso fue porque había modificado la columna de Categorías en la lista de los posts, para que aceptara múltiples categorías. Simplemente desactive el feature de CKS:EBE,  fui a la columna y le quite ese checkbox, y aunque perdí la configuración de las categorías de mis posts, ya se muestran correctamente.

Con el tiempo actualizare las categorías de los posts anteriores, pero me concentrare mas en escribir nuevas cosas, que estos 4 meses no han sido en vano ya que he estado aprendiendo mucho sobre MOSS, WF e InfoPath.

 

Saludos, y escriban sus comentarios!!

Una vez mas nuestro querido amigo InfoPath Services ha hecho de las suyas... con un par de errores que a continuación describo:

Tengo una forma (inofensiva a primera vista) que funciona a la perfección en InfoPath cliente. Esta forma utiliza el Contact Selector, y obtiene información de algunas listas de SharePoint y un WebService. Cuando se habilita para ser mostrada con InfoPath Forms Services, y la abro por medio del browser, todo funciona bien hasta que busco una persona en el Contact Selector, despues de un par de segundos aparece un mensaje de error:

There has been an error while processing the form.

Como este error no da mucha información sobre lo que paso realmente, hay que ir a los logs de SharePoint, donde pude identificar estas lineas:

Exception Message: Unexpected end of file while parsing Name has occurred.

DataObject constructor failure System.Xml.XmlException: There is an unclosed literal string.

Investigando un poco, encontré que es un error relativamente común relacionado con data connections sin utilizar en las formas... lo malo de todo esto es que no es mi caso. Entonces, no me quedo mas remedio que empezar nuevamente, paso a paso, volver a construir la forma y validar que funcionara en web, hasta encontrar el elemento que el xml de mi forma.

Los culpables de todo esto fueron una "ñ" y una "í", en los nombres de un par de listas que consulto en SharePoint. Por lo visto, a InfoPath Services no le gustan los caracteres especiales en los nombres de los Data Connections, si te conectas a listas de SharePoint como el nombre lo obtiene automáticamente del titulo de la lista, y no lo puedes modificar desde InfoPath.

Una ves que cambie el nombre de mi lista (sin acentos ni caracteres raros), y conecté mi forma de nuevo, todo funciono correctamente :D

 

Bendito español...

Asi es, si esperaban un nombre rimbombante y sin sentido para la versión release del actual silverlight 1.1 alpha, pues simplemente va a ser un cambio de versión. En lo personal me parece correcto, esa gente de marketing de microsoft ya habia hecho muchas travesuras con sus cambios de nombre (recuerdan WinFX - .net 3.0 y ahora el freak .net 3.5 ?? ).

Bueno Silverlight 2.0 estara disponible justo en las fechas del próximo evento MIX, y por lo que platica Tim Sneath en su blog con toda la funcionalidad que le van a incluir, si justifica el que ya no sea considerado una version 1.x

 

P.D. ultimamente habia evitado publicar noticias, con lo de "Ya esta listo Visual Studio 2008 RTM" parecia que cada blog debia de postearlo, y pues como que pierde interes... Pero como ni Rocky ni Chris han escrito la noticia, pues aqui esta :D

En mi experiencia (no solo de SharePoint, sino en general de este mundo de la informática) a la gente de Infraestructura le fascina limitar el espacio en disco. Antes porque no habia mucho. Ahora, porque les encanta hacer batallar a los desarrolladores/implementadores de sistemas :D

Bueno ya en serio, un ambiente de producción normalmente tiene limitado los espacios en C (porque solo debe ser para el OS), dejando otra unidad de disco donde poner los datos y la información. Pero en el mundo de SharePoint y otros productos Microsoft, aunque el instalador te pone la opcion de cambiar la ruta de instalación, siempre y repito SIEMPRE instala algo en C, SharePoint, segun he visto es poco (menos de 200 megas) pero algo va.

Cuando trabajas en este tipo de ambientes tan restringidos, es muy recomendable mover los logs de SharePoint a la unidad de datos. Estos pueden crecer mucho y ocupar bastante espacio, y despues tener problemas de espacio en disco y alentar todo el servidor...

 

Y precisamente eso me acaba de pasar hoy, llegar a las 8:00 AM y ver que tengo archivos de log de 600 MB es realmente escalofriante.... y mas aun cuando solo existia errores como este:

"The previous instance of the timer job 'X', id='{guid}' for service '{guid}' is still running, so teh currentinstance will be skipped. Consider increasing the interval between jobs'.

y com este, habia millonesimos mas con todo tipo de jobs y guids (imaginen un notepad de 600 megas, solo de este error). Y era muy sospechoso porque el dia anterior se reinicio el servidor y windows aprovecho para instalar los updates...

 

Bueno como esto no se podia quedar asi (practicamente me habia acabado mis 7.89 gigas que me dieron en C :P) encontre este kb de microsoft en el que explica que esto se debe a un security update 931212 (MS07-040)... bueno perfecto debe decir como resolver el problema y listo.... pero no, en lugar de resolver el problema el articulo te dice que cambies la configuracion del log para que no se registren los errores y simplemente captures errores de nivel mas alto...

 

Hey, me encanta SharePoint y siempre lo defiendo, pero eso no va a hacer que deje de quejarme cuando no arreglan los errores y simplemente los tapan... cuantos recursos de hardware no se gastaran en generar y arrojar esas excepciones, cuando seguramente pueden ser evitados...

 

Y asi empezo mi Halloween. Aunque la verdad en el DF todas las noches te da miedo salir :P

1 Comments
Filed under: ,

Utilizando el control File Attachment en InfoPath 2007, pues resulta que este no funciona cuando abres la forma en el browser, al menos no cuando es una tarea de un workflow... Curiosamente no me habia dado cuenta al estar haciendo todas mis pruebas desde Outlook 2007 (como me gusta contestar los workflows desde Outlook), y desde ahi funciona muy bien.

Encontre la solución en el blog de Cris White: http://chrissyblanco.blogspot.com/2006/07/workflow-that-uploads-document-via.html, y cuando ves que todo se resuelve con una linea de codigo, bueno hasta el ejercito de programadores y testers de Microsoft se les escapan estos tipos de errores...

Me pregunto si ya lo sabran... ¿acaso actualizaran este archivo en el SP1? Cuando lo pueda instalar escribire al respecto :D

 

Saludos!!

Si, es noticia vieja, pero mas vale tarde que nunca.... me acaban de llegar los DVDs del TechEd y recorde la excelente presentación de Dustin Miller (la mejor presentación del TechEd, al menos de las que pude asistir); la mejor noticia de todo es que esta disponible en su blog, para que todos la vean.

Lo cual se los recomiendo ampliamente, Dustin explica todo el poder del SharePoint Designer, para todos aquellos que todavia no estan convencidos sobre el "nuevo FrontPage" esta presentación quiza los haga cambiar de opinion.

yo lo vi, yo estuve ahi!! y participe en la ola :D

Para que septiembre no se vaya en blanco, aqui les comparto algo que nos anduvo dando algunos dolores de cabeza...

Infopath tiene un control ActiveX llamado "Contact Selector", el cual permite capturar usuarios en las formas de infopath, esto se vuelve muy util principalmente cuando usas Infopath + Workflows en SharePoint... no voy a describir los pasos de como hacerlo ya que existe un muy buen articulo de la gente de InfoPath con todo lo que ocupan para ello.

Un error, que por lo visto no es muy común porque no encontre nada en google al respecto, es que cuando buscas una persona con el control, te sale un mensaje que dice Search failed. La primera cosa que deben revisar, es que se aseguren de haber incluido el archivo Context.xml como secondary data source en su forma, y de que lo hicieron sin errores de ortografia, recuerden que es case sensitive por lo que context.xml no es lo mismo que Context.xml.

Una ultima cosa, en algunas ocasiones me sucedio que aun con todo configurado correctamente el contact selector seguia sin funcionar.... aun cerrando y abriendo infopath parecia no funcionar. Tuve que quitar el control y volverlo a agregar, y como que reconocio el datasource y volvio a funcionar.... esto sucedio un par de veces, pero no he logrado reproducirlo consistentemente... al fin gajes del oficio...

 

cheers!!

2 Comments
Filed under:

Dicen que mas vale tarde que nunca, pero despues de un par de dias de vacaciones hay que volver a agarrar ritmo en los posts :D

Ya tiene algunos dias publicado el nuevo podcast de la comunidad de Sharepoint México, la tercera emision en donde continua la charla sobre muchos temas relacionados a SharePoint, y estoy muy orgulloso en decir que tuve la oportunidad de participar en este 3er podcast, invitado por Luis du Solier, en donde platico sobre mi experiencia en el TechEd, y mi participacion en el proyecto CKS.

Por lo tanto, fieles lectores (si, les hablo a ustedes 2 :P) los invito a que escuchen este podcast, y si no han escuchado los anteriores tambien los invito a que lo hagan, y subscribanse para que esten al pendiente porque,  ¡esto apenas esta arrancando!

Cheers!!

Crossposted from http://blogs.timovil.com/pedropablo/Lists/Posts/Post.aspx?ID=23

Existen algunos tipos de columna (Lookup, People, Hyperlink/picture) que al momento de accederlos desde código, regresan una cadena con este formato "1;#Opcion1"

En SharePoint 2003 tenias que crear tu propia funcion que convierte ese formato en el objeto a buscar, ahora en SharePoint 2007 nos dan como opciones las variables SPFieldLookupValue y SPFieldUserValue para poder obtener el valor esperado de ellas:

SPList lista = web.Lists("MiLista"); SPFieldUserValue usuario = new SPFieldUserValue(web, lista["Usuario"]); Console.WriteLine(usuario.Email); SPList lista = web.Lists("MiLista"); SPFieldLookupValue usuario = new SPFieldLookupValue(lista["Usuario"]); Console.WriteLine(usuario.LookupValue);

Lo mismo sirven para cambiar el valor de una de estas columnas, no tienen que armar la cadena sino construir el objeto pasandole el id y el valor (y adicionalmente el SPWeb, para el SPFieldUserValue).

Por ultimo, tambien existen las colecciones de estos objetos (SPFieldUserValueCollection, y SPFieldLookupValueCollection) para poder obtener y manipular la información cuando las columnas de sharepoint soportan multiples personas, asi como los multichoice y esos tipos de columnas que la verdad se volvia muuuy latoso de manejar como cadena...

 

Espero que esto les salve varias lineas de código, o que ya puedan desechar esas funciones hecahs para sus programas con WSS v2 :)

 

Cheers!!

Crossposted from http://blogs.timovil.com/pedropablo

Si, asi es, por lo visto es epoca de liberaciones, porque ademas del Beta 2 de visual studio,  desde el viernes pasado fue liberada la version RC1 de Silverlight, junto con otro conjunto de herramientas... pueden checarlo en este post de Tim Sneath.

Ok, esta historia tiene una parte mala: esta version RC1 tiene cambios contra la version Beta liberada durante el Mix (0.9)... si alguien ha estado trabajando con silverlight, seguramente recuerdan que el cambio entre la version CTP y la version Beta fue bastante radical, no porque hubiera incontables cambios sino porque muchas funciones comunes (al menos en mi caso) cambiaron y se tuvo que corregir muchas lineas para que funcionaran con la nueva version.

Para que empiecen a revisar su codigo, y corregir lo necesario para que funcione con la nueva versión, pueden revisar el blog de Joe Stegman donde escribe los "breaking changes" entre la version anterior y el RC1. En mi caso el cambio si me afecta pero no mucho :D, o no tanto como el cambio de CTP a Beta

 

Cheers!!

1012 Comments
Filed under:

Acabo de ver 2 aplicaciones hechas con Windows Presentation Foundation (WPF) que son muy interesantes:

Jing: Si quieren sacar una foto o video de su pantalla, de una manera sencilla y facil, esta es la unica herramienta que van a ocupar :) es sencilla, facil de usar, tiene una gran interfaz.

  • Pros: graba los videos como swf, el cual ya tiene un reproductor integrado. Es un proyecto en desarrollo por TechSmith, los creadores de Camtasia. Excelente para crear screencast
  • Contras: solo puede grabar los videos como swf

 

Familiy.Show: Una aplicación que permite crear un arbol genealógico, con una muy buena interfaz para moverte por el arbol, puedes hacer busquedas y mas cosas.

  • Pros: Excelente interfaz, facil de usar, exporta a formatos "estandar" de este tipo de aplicaciones. Además, el codigo fuente esta en codeplex.
  • Contras: es un demo para Microsoft, por lo que no habra ningun soporte ni mejora.

 

Son 2 ejemplos de aplicaciones con una interfaz sencilla y muy util... pueden obtener alguna idea de como integrar WPF a sus aplicaciones y hacerlas mas interesantes y mejorar la usabilidad de las mismas :D

¿Han escuchado sobre PowerShell (antes "Monad")? Es un nuevo command line que tiene su propio lenguaje y como 130 de cmdlets (instrucciones) con el que puedes hacer cosas muuy interesantes para administrar y automatizar procesos, que antes hacias con windows scripting; en mi post sobre el TechEd les dije que iba a ser algo muy interesante por investigar.

Aunque esta muy orientado a IT Admins, nosotros desarrolladores mortales podemos aprovechar algunas de las ventajas que nos da esta herramienta... una de las características de PowerShell es que esta orientado a objetos, y te permite instanciar objetos COM y objetos de .NET...

¿Ahora donde entra SharePoint en todo esto? Bueno les pongo algunos problemas

  • Quiero obtener todas las listas de un sitio, su fecha de creación y modificación y quien las hizo.
  • Quiero ocultar una lista, que no se vea en el View all site content
  • Quiero hacer que una columna de mi lista no este disponible en la edición del elemento, que solo pueda ser capturado cuando sea un nuevo elemento.

Ninguna de estas acciones puede ser accedida por medio de la interfaz web. ¿Como lo resolverian? probablemente creando algun programita en .NET que haga las modificaciones... o podrian ser muuy cool y usar powershell para todo esto :D

¿Vamos a resolver el primer punto, que pasos hay que seguir?

Antes que nada hay que tener instalado PowerShell. Lo pueden bajar aqui.

Al abrir PowerShell podran observar que es una linea de comandos, tal como les dije al principio. PowerShell trae precargadas algunas librerias para poder hacer cosas, y SharePoint NO es una de ellas, por lo que hay que cargarla:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

Como pueden ver esto es algo propio de .NET 2.0, no de PowerShell. Por medio de reflexion, cargamos un assembly. por cierto como no deberiamos hacer Partial Bind en ningun desarrollo, tampoco aqui deberiamos hacerlo por lo que lo correcto seria utilizar la funcion Load

[System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")

 

Ya que tenemos disponible la dll, podemos instanciar objetos de SharePoint:

$spsite = New-Object Microsoft.SharePoint.SPSite("http://mysharepoint")

En PowerShell podemos crear variables (las variables tienen que empezar con el caracter $)  y crear objetos con el cmdlet New-Object.

Si no recordamos los comandos, existe el cmdlet get-member que nos regresa los metodos y propiedades del objeto en cuestion:

$spsite | get-member

Para que solo nos muestre propiedades o metodos hay qeu agregar el parametro -membertype method o -membertype property. Entonces ya tenemos un objeto SPSite en la variable $spsite, asi que podemos acceder a nuestro sitio web:

$web = $spsite.OpenWeb()

Y con nuestro sitio web podemos obtener las listas existentes:

$web.Lists

Por desgracia nos regresa absolutamente TODAS las propiedades de nuestra lista... y hay un par que tienen mucho XAML por lo que es muy poco practico para revisarlas. Aqui entra la magia de PowerShell y su cmdlet "select"

$web.Lists | select title, created, author

Esto nos regresa todas las listas, pero solo las propiedades de titulo, la fecha de creacion y el creador (author). Podemos concatenar otros cmdlet como sort o where para obtener un mejor reporte de nuestras listas:

$web.Lists | select title, created, author, hidden | where {!$_Hidden} | sort created

algo importante aqui es la variable "$_",  es una variable especial que utilizas para hacer referencia al objeto del contexto en el que estas. Esta ultima instrucción se podria leer como "dame las propiedades title, created, author y hidden, donde hidden sea falso y ordeando por la fecha de creacion". Cool, no?

Por ultimo, como quiero poder ver esa información fuera de powershell, le agrego al final el cmdlet para convertir el texto a HTML y lo exporto a un archivo

$web.Lists | select title, created, author, hidden | where {!$_Hidden} | sort created | convertto-html > c:\ejemplo.html

con el operador ">" puedo mandar lo que me arroje powershell a un archivo fisico!!

 

Bueno, es un pequeño ejemplo de algo muy sencillo que se puede hacer en powershell. Existen muchos mas cmdlets y muchas otras opciones, y aunque el ejemplo fue con dlls de SharePoint pueden hacer esto con cualquier dll de .NET... y puedes generar scripts para automatizar procesos etc. etc. etc.

 

Saludos!!

 Crossposted desde http://blogs.timovil.com/pedropablo/Lists/Posts/Post.aspx?ID=17

More Posts Next page »