Interesante aplicación para iPhone

image El equipo móvil en Slalom ha desarrollado una aplicación iPad genial que combina aumento de realidad virtual con capacidad sin conexión para proporcionar lo que puede ser el mejor buscador de metro de Nueva York y enrutamiento app disponible hoy.

Aquí es el sitio de la app en más detalle: http://www.nycstationfinder.com/.

No tengo ningún producto de Apple por lo que no puedo probarlo a mí, pero parece bastante cool. Estoy esperando de que puerto lo más Android pronto.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Nuevo MVP

Microsoft asignó me con SharePoint MVP el 1 de julio de este año y es no menos emocionante de lo que era la primera vez hace cuatro años.

La comunidad de SharePoint es sólo un lugar asombroso.  Recuerdo cuando me primero presentaron a SharePoint por mi antiguo empleador, Conchango.  No fui feliz acerca de él Sonreír.  Había estado viviendo en un mundo de BizTalk para un año o dos previos a mi trabajo allí y antes de, trabajó en otro mundo insular de personas y empresas que hicieron una vida fuera de Software de progreso.  Digo "insular" porque el mundo de SharePoint es cualquier cosa menos!

Continuamente estoy contento y emocionado de ser parte de esta extraña comunidad online de personas que se sienten extrañamente obligadas a blog sin cesar, renunciar a sus sábados gratis conferencias, persiguen a foros en línea, construir todo tipo de productos libres whacked fuera a aguantar en CodePlex y un sinfín de otros esfuerzos de la comunidad de todos los tamaños y formas. 

No sé de qué se trata este producto que inspira tales voluntariado e inmersión, pero espero nunca los cambios.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Deja brillantes ejemplos Lead the Way a mayor adopción de SharePoint

Mi primera entrada de blog "pura" de BrightStarr fue publicada hoy.  Aquí es un reclamo:

Ha habido mucha conversación sobre los Internets últimamente sobre el tema de la adopción de SharePoint y especialmente la falta de ella. Nadie quiere ir a todos los problemas del diseño de una infraestructura agrícola y la seguridad, participar en talleres, armar una apariencia snazzy, elaboración de una arquitectura de información sólida de roca que puede soportar las vicisitudes de la empresa re-orgs y finalmente, un despliegue lleno de fanfarria para descubrir tres meses post go-live que menos 50% de la empresa empleados utilizan SharePoint y la mayoría de ellos está utilizando para reemplazar a los antiguos servidores de archivos de red ("el s:\ unidad").

Ninguna bala de plata (o una sola entrada de blog) se va a resolver ese problema. Sin embargo, Hay muchas cosas que puede hacer para reducir el riesgo de un anémico SharePoint portal. Una tal técnica es el "patrón de ejemplo luminoso."

Me encantaría saber acerca de otras estrategias de adopción de SharePoint que te importa compartir.  Si comparte, por favor dejar como un comentario en el blog de BrightStarr.

Leer todo aquí: http://www.brightstarr.com/US/Pages/blog-view.aspx?BlogID=52

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

"Acceso denegado” a Default.aspx en un SharePoint 2010 Subsitio

Uno de mis clientes salió en vivo con su SharePoint 2010 entorno de hoy.  Hemos descubierto que un determinado grupo de usuarios no podía acceder a su página de inicio predeterminada.  SharePoint respondió con "Acceso denegado" y el habitual "signo como otro usuario" o "solicitar acceso" respuesta. 

Cuando utilizamos la función de "Comprobar el acceso" ingeniosa confirmó que, realmente, los usuarios finales tuvieron acceso.  Todavía, no pudo obtener la página.

He seguido un montón de carreteras a varios callejones sin salida hasta que me decidí a comparar los elementos web de la página roto contra una página de trabajo similares.  Lo hice por poner la página en modo de mantenimiento, agregando"?contenido = 1 "a la página. Por lo tanto, parecía "http://Server/subsite/subsite/default.aspx?contenido = 1 ". 

Esto me mostró dos componentes denominados "Error" de web con una descripción como "Error" en la página rota.  No pensaba tomar un tope de pantalla en el momento.

Les quité y que resolvió el problema.

He visto una pregunta como esta llegan hasta en los foros en el pasado y estaba muy escéptico acerca de la insistencia del póster que tenía seguridad correctamente configurado.  Me * saber * tuve seguridad configurar derecho Sonreír  Próxima vez, Voy a ser más abiertos y menos escéptico.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Muestras de XSLT y jQuery

Vengo haciendo mucho de XSLT y jQuery y pensamiento que comparto algunos fragmentos que otros pueden resultar útiles en el futuro.

Ejemplo 1: Emiten simple JavaScript / jQuery en XSLT:

<XSL:Partido de plantilla = "algo" XML:Space = "preserve">

  <!– En blanco el campo oculto de filtros amigable de consulta –>
  <tipo de secuencia de comandos = "text/javascript">
    $(documento).listo(función(){
      $("#QueryFriendlyFilters").Val("vacía");
    });
  </secuencia de comandos>

</XSL:plantilla>

Que bit emite algunos JavaScript que espera de la página finalizar la carga (debido a la $(documento).listo(…)) y, a continuación, establece el valor de un campo oculto llamado QueryFriendlyFilters el valor literal "vacía".

Ejemplo 2: Uso <XSL:Si> para comprobar la "mayor que",  "menor que", etc..

<XSL:Partido de plantilla = "algo" XML:Space = "preserve">

  <div id = "fdcAllFilters">
 
    <XSL:Si test="@Count>0">
      <span class = "fdcFilterLabel">Filtros actuales:</abarcan>
    </XSL:Si>

    <!– más cosas sucede aquí. –>

</XSL:plantilla>

El fragmento de código anterior comprueba si un atributo denominado "Contar" del elemento "algo" es mayor que cero.  El XML detrás de todo esto sería algo así como:”

<algo Count = "5" />

Ejemplo 3: Recorrer en iteración todos los elementos, intercalando llamadas jQuery.

<!– Recorrer en iteración todos los filtros y mostrar la correcta  enlaces. –>
<XSL:for each select = "UserFilter">

  <una clase = "FilterHref" href = "javascript:mySubmitPage('RemoveUserFilter','{@ ID}’)">[X]</un>

  <span class = "fdcFilterLabel"><XSL:valor de select="@FilterValue"/></abarcan>

  <tipo de secuencia de comandos = "text/javascript">

    $(documento).listo(función(){
        <XSL:texto><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:texto>\"<XSL:valor de select="@FilterValue"/>\"<XSL:texto><![CDATA["));]]></XSL:texto>
    });

  </secuencia de comandos>

</XSL:para cada>

El fragmento de código anterior es el más complejo y puede haber formas más fácil de hacerlo.

El XML detrás de todo esto más o menos este aspecto:

<UserFilter ID = "123" FilterValue = "xyzzy" />

Este fragmento es iterar a través de <UserFilter> nodos. 

Primero emite un ancla de etiqueta que cuando hace clic en invoca una función de JavaScript que ya está en la página, "mySubmitPage" y pasa el valor de un atributo la <UserFilter> nodo denominado "ID". 

A continuación, emite algunos jQuery que espera para que cargar la página.  Que jQuery actualiza un campo oculto denominado "QueryFriendlyFilters" agregando el valor del atributo FilterValue.  Nota todos los locos <XSL:texto> y <![CDATA[ … ]]> cosas.

Eso es todo, esperanza de ayuda!

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

PerformancePoint y Error 33494

Uno de mis clientes llamados hoy cuando su entorno de PerformancePoint (en SharePoint 2010) se rompieron.  Uno de los servidores de app en la granja se está agotando el espacio en disco.  Mientras que abordar, el cliente había desinstalado "demasiado" y las cosas PP todos dejó de funcionar.  Varios elementos web mostraría "producido un error inesperado. Error 33494. Detalles adicionales han sido registrados por el administrador":

image

Me buscaron el error y no encuentro nada específico de "Error 33494" pero este foros MSDN contabilización fue útil: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Encontré ADOMD.NET aquí como un componente de SQL Server 2008 Feature Pack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Haga clic para ampliar)

Descargo e instalado y que todo arreglado.

Creo que este es un tipo bastante chiflado de error, pero si lo consigues, por lo menos tienes una opción.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Lists.asmx, GetListItems y carpetas

Estaba haciendo algunas investigaciones para alguien hoy alrededor del servicio web de list.asmx proporcionado como parte de SharePoint 2010 (y anteriores).  Ella fue capaz de obtener los elementos de lista en la carpeta raíz (incluidos los nombres de las subcarpetas), pero no se pudo obtener elementos en las subcarpetas.  Hice algunos mirando alrededor de la internets y es una cuestión sorprendentemente común.  Todavía, No podía obtener una buena respuesta a la pregunta simple, "si sé la carpeta, Cómo obtener los elementos de la carpeta?”  Para ser honesto, No intente duro todo lo que ya he quería figura esta uno fuera de mi propia durante un tiempo Sonreír.

Para configurar esto, He creado un sitio llamado "Blogging escenarios" y una lista personalizada denominada "Lista personalizada con las subcarpetas".  A continuación, crear carpetas con el nombre:

  • Año 2005
  • Año 2006
  • Año 2007

He añadido algunos elementos a la carpeta "Año 2006".  Esto es lo que parece:

image

Mi amigo no escribir código C# sino más bien mediante Java, por lo que la envoltura SOAP era lo que necesitaba realmente.  Para conseguir, Escribí un poco de jQuery y entonces utilizarse violinista para obtener la conversación real de HTTP.

Aquí es el jQuery pertinente (He copiado el código abajo a continuación si desea copiar y pegar):

image

Su primera clave es incluir tanto un <queryOptions> y <QueryOptions> nodo.  La segunda clave es que el <Carpeta> el nodo es una dirección URL a la que el cliente tiene acceso.

Puede haber otras formas de obtener esto, pero esto funcionó bien para mí cuando usando jQuery.

Aquí es la envoltura SOAP para la anterior:

<soapenv:Xmlns envolvente:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Cuerpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Lista personalizada con las subcarpetas</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef nombre =' título’ />
          <FieldRef nombre ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Carpeta>
http://demoserver1/blogs Lista personalizada de listas de escenarios con Sub carpetas/año 2006</Carpeta>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Cuerpo>
</soapenv:Envolvente>

Un montón de ejemplos y debate en torno a esto me llevó a creer que todo lo que necesito <QueryOptions> y especifique un nombre de carpeta.  Para mí, Yo necesito a ambos envolverlo dentro <queryOptions> así como especificar una dirección URL completa de la <Carpeta> nodo.

Aquí está el programa de instalación de AJAX jQuery:

$(documento).listo(función() {
       var soapEnv =
           "<soapenv:Xmlns envolvente:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Cuerpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Lista personalizada con las subcarpetas</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nombre =' título’ /> \
                              <FieldRef nombre ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Carpeta>http://demoserver1/Blogging Lista personalizada de listas de escenarios con Sub carpetas/año 2006</Carpeta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Cuerpo> \
           </soapenv:Envolvente>";

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Patrones de flujo de trabajo SPD, Consejos y trucos

Hoy di mi presentación en el Festival de SharePoint en Denver. Aquí está la misma presentación de PowerPoint: http://www.mstechblogs.com/paul/wp-content/uploads/2011/05/SharePointFest.pptx

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Lists.asmx, GetList y "valor no puede ser nulo”

Hoy he descubierto que la GetList() método en lists.asmx servicio Web tiene que ser llamado muy cuidadosamente o es propenso a tirar un misterioso "Valor no puede ser nulo" excepción (y que está suponiendo que puede superar el peor mensaje de error genérico, "Excepción de tipo ' Microsoft.SharePoint.SoapServer.SoapServerException’ fue arrojado.")  Específicamente, Me encontré con que no puede ofrecer ningún tipo de prefijo en el método GetList.  El siguiente fragmento de código de jQuery ilustra el punto:

image

Si haces, el servicio web responde con "Valor no puede ser nulo" por esto violinista-proporciona la transcripción HTTP:

<?XML version = "1.0" Encoding = "utf-8"?>
  <jabón:Envolvente
     xmlns:jabón ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:XSi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <jabón:Cuerpo>
    <jabón:Fallas>
      <faultcode>jabón:Servidor</faultcode>
      <FaultString>
        Excepción de tipo ' Microsoft.SharePoint.SoapServer.SoapServerException’ fue arrojado.
      </FaultString>
      <detalle>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Valor no puede ser nulo.
        </ErrorString>
      </detalle>
    </jabón:Fallas>
  </jabón:Cuerpo>
</jabón:Envolvente>

Claro, probablemente no agregar ese prefijo "s0" sobre su propia, pero algunas herramientas son propensas a hacerlo (como Eclipse).

Esto es aún más confuso / frustrante porque otros métodos toleran prefijos.  Por ejemplo, el GetListCollection método no importa si se es prefijo, incluso con prefijos de tonterías como "xyzzy":

image

Este "valor no puede ser nulo" parece bastante común con lists.asmx así que esperemos que esto nos ayudará a alguien fuera en el futuro.

</final>

Suscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin