Intéressant sur l'Application iPhone

image L'équipe mobile en Slalom a développé une application iPad vraiment cool qui allie augmentation de réalité virtuelle avec des capacités hors ligne pour fournir ce qui est peut-être le meilleur trouveur de métro de New York et le routage app disponible aujourd'hui.

Voici le site décrivant l'app en détail: http://www.nycstationfinder.com/.

Je n'ai aucun produit Apple donc je ne peux pas le tester par moi-même, mais c'est sympa. J'espère qu'ils port il au-dessus de Android bientôt.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Encore une fois MVP

Attribué de Microsoft nouveau moi avec MVP SharePoint 1er juillet cette année et c'est pas moins excitant que c'était la première fois il y a quatre ans.

La communauté SharePoint est juste un endroit incroyable.  Je me souviens quand j'ai été tout d'abord présenté à SharePoint par mon ancien employeur, Conchango.  Je n'étais pas heureux à ce sujet Sourire.  J'avais été vivant dans un monde de BizTalk pour un an ou deux menant à mon travail il et avant que, a travaillé dans un autre monde insulaire des personnes et des entreprises qui gagne sa vie en dehors de Progress Software.  Je dis « insulaire » parce que le monde de SharePoint n'est rien d'autre que!

Je suis continuellement heureux et excité de faire partie de cette communauté en ligne bizarre des gens qui se sentent étrangement obligé de blog sans cesse, abandonner leurs samedis gratuitement conférences, hanter les forums en ligne, construire toutes sortes de produits gratuits whacked hors de mettre en place sur CodePlex et une myriade d'autres efforts de la communauté de toutes les formes et de tailles. 

Je ne sais pas ce que c'est sur ce produit qui inspire ce bénévolat et immersion, mais j'espère il jamais les changements.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Laissez Shining exemples Lead the Way à l'Adoption accrue de SharePoint

Ma première entrée de blog BrightStarr « pure » a été publiée aujourd'hui.  Voici un teaser:

Il y a eu beaucoup de conversation sur les Internets de la fin sur le sujet de l'adoption de SharePoint et surtout l'absence de. Personne ne veut aller à tous la difficulté de concevoir une infrastructure agricole et la sécurité, participant à des ateliers, mettre sur pied un aspect chic, travailler sur une architecture de l'information solide rocher qui peut résister à des vicissitudes de l'entreprise re-associations et enfin, un déploiement remplis de fanfare vient de découvrir trois mois après go-live que moins de 50% de la société employés sont à l'aide de SharePoint et la plupart d'entre eux est l'utiliser pour remplacer les anciens serveurs de fichiers réseau (« le s:\ lecteur").

Pas de solution miracle (ou un seul billet de blog) va résoudre ce problème. Cependant, Il y a beaucoup de choses que vous pouvez faire pour réduire le risque d'un portail SharePoint anémique. Une telle technique est le "modèle d'exemple Shining."

J'aimerais connaître d'autres stratégies d'adoption de SharePoint que vous vous souciez de partager.  Si vous partagez, Veuillez laisser un commentaire sur le blog BrightStarr.

Lire tout cela ici: http://www.brightstarr.com/US/Pages/blog-view.aspx?BlogID=52

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

"Accès refusé” à Default.aspx sur un SharePoint 2010 Site de Sub

Un de mes clients est allé vivre avec leur SharePoint 2010 environnement aujourd'hui.  Nous avons découvert qu'un certain groupe d'utilisateurs n'a pas pu accéder à leur page d'accueil par défaut.  SharePoint a répondu avec « Accès refusé » et le habituel « signe en tant qu'un autre utilisateur » ou « demande d'accès » réponse. 

Lorsque nous avons utilisé la fonction « Vérifier l'accès » sympathiques, il a confirmé que les utilisateurs finaux aient réellement accès.  Encore, ils ne peuvent pas obtenir de la page.

J'ai suivi beaucoup de routes à diverses impasses jusqu'à ce que j'ai décidé de comparer les composants WebPart sur la page brisée contre une page de travail similaires.  Je le faisais en mettant la page en mode de maintenance en ajoutant"?contenu = 1 » à la page. Si, il ressemblait à "http://Server/subsite/subsite/default.aspx?contenu = 1 ". 

Cela m'a montré deux composants WebPart nommé « Erreur » avec une description comme « Erreur » sur la page brisée.  Je ne pensais pas prendre une casquette d'écran à la fois.

J'ai enlevé la leur et qui a résolu le problème.

J'ai vu une question comme ce come up sur les forums dans le passé, et j'étais très sceptique sur l'insistance de l'affiche qu'il avait mises en place correctement la sécurité.  Je * sais * j'ai eu le droit de la sécurité Sourire  La prochaine fois, Je vais être plus ouverte et moins sceptique.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Échantillons de XSLT et jQuery

J'ai fait beaucoup de XSLT et jQuery et pensée que serait partager quelques extraits que d'autres peuvent trouver utiles dans l'avenir.

Exemple 1: Émettent JavaScript simple / jQuery dans XSLT:

<XSL:match de modèle « quelque chose =" XML:espace = « sauvegarde »>

  <!– Vide dans le champ masqué de requête filtres amical –>
  <script type = « text/javascript »>
    $(document).prêt(fonction(){
      $(« #QueryFriendlyFilters »).Val(« vide »);
    });
  </script>

</XSL:modèle>

Que le bit émet quelques JavaScript qui attend pour la page à la fin de chargement (en raison de la $(document).prêt(…)) et puis définit la valeur d'un champ masqué nommé QueryFriendlyFilters dans la valeur littérale « vide ».

Exemple 2: Utilisation <XSL:Si> pour vérifier la « supérieur à »,  « moins de », etc..

<XSL:match de modèle « quelque chose =" XML:espace = « sauvegarde »>

  <div id = « fdcAllFilters »>
 
    <XSL:si test="@Count>0">
      <span class = « fdcFilterLabel »>Filtres actifs:</travée>
    </XSL:Si>

    <!– plus de choses se passe ici. –>

</XSL:modèle>

L'extrait de code ci-dessus vérifie si un attribut nommé « Comte » de l'élément « quelque chose » est supérieur à zéro.  Le code XML derrière ce serait quelque chose comme:”

<quelque chose de Count = « 5 » />

Exemple 3: Parcourir tous les éléments, disséminer les appels jQuery.

<!– Parcourir tous les filtres et afficher le bon  Liens. –>
<XSL:pour chaque select = « UserFilter »>

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

  <span class = « fdcFilterLabel »><XSL:valeur de select="@FilterValue"/></travée>

  <script type = « text/javascript »>

    $(document).prêt(fonction(){
        <XSL:texte><![CDATA[$(« #QueryFriendlyFilters »).Val( ($(« #QueryFriendlyFilters »).Val() + " ]]></XSL:texte>\"<XSL:valeur de select="@FilterValue"/>\"<XSL:texte><![CDATA["));]]></XSL:texte>
    });

  </script>

</XSL:pour chaque>

L'extrait de code ci-dessus est le plus complexe et il peut y avoir des moyens plus faciles de le faire.

Le XML derrière tout cela ressemble grossièrement à ce:

<UserFilter ID = « 123 » FilterValue = « xyzzy » />

Cet extrait est une itération à travers <UserFilter> nœuds. 

Elle émet d'abord une ancre qui balise lorsque l'utilisateur clique sur invoque une fonction JavaScript qui est déjà sur la page, « mySubmitPage » et passe la valeur d'un attribut le <UserFilter> nœud nommé « ID ». 

Il émet ensuite certains jQuery qui attend pour la page de chargement.  Que jQuery met à jour un champ masqué nommé « QueryFriendlyFilters » en ajoutant la valeur de l'attribut FilterValue.  Remarque tous le fou <XSL:texte> et <![CDATA[ … ]]> Stuff.

C'est tout, espérons que cela aide!

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

PerformancePoint et erreur 33494

Un de mes clients, appelés aujourd'hui lorsque leur environnement PerformancePoint (dans SharePoint 2010) est tombée en panne.  Un des serveurs de la batterie app a manquer d'espace disque.  Tout en tenant compte que, le client désinstallé « trop » et le stuff PP tous cessé de fonctionner.  Divers composants WebPart montrerait « une erreur inattendue est survenue. Erreur 33494. Des détails supplémentaires ont été exploitées pour votre administrateur »:

image

J'ai regardé l'erreur et n'ai pas trouvé tout spécifique à « Erreur 33494 » mais ce forums MSDN affichage a été utile: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

J'ai trouvé ADOMD.NET ici comme un composant de SQL Server 2008 Feature Pack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Cliquez ici pour agrandir)

J'ai télécharger et installé et il fixe tout.

Je pense que c'est un genre assez excentrique d'erreur, mais si vous frapper, vous avez au moins une option.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Lists.asmx, GetListItems et dossiers

J'ai fait quelques recherches pour quelqu'un d'aujourd'hui autour de list.asmx web service fourni dans le cadre du SharePoint 2010 (et plus tôt).  Elle a réussi à obtenir les éléments de liste dans le dossier racine (les noms des sous-dossiers), mais il n'a pas pu obtenir des éléments dans les sous-dossiers.  J'ai fait quelques recherche sur les internets, et c'est une question très commune.  Encore, Je ne pouvais pas obtenir une bonne réponse à la question simple, « Si je sais que le dossier, Comment puis-je obtenir les éléments dans le dossier?”  Pour être honnête, I Didn't try tout cela dur depuis que j'ai voulu celui-ci sur la figure sur mes propres pendant un certain temps Sourire.

Pour définir cette, J'ai créé un site nommé « Blogging scénarios » et une liste personnalisée nommée « Liste personnalisée avec Sub dossiers ».  Ensuite, j'ai créé des dossiers nommés:

  • Année 2005
  • Année 2006
  • Année 2007

J'ai ajouté quelques éléments dans le dossier « L'année 2006 ».  C'est à quoi il ressemble:

image

Mon ami n'est pas écrire du code c#, mais plutôt à l'aide de Java, Si l'enveloppe SOAP a été ce qu'elle a vraiment besoin.  Pour obtenir que, J'ai écrit un peu de jQuery et ensuite utilisé un violon pour obtenir la conversation réelle de HTTP.

Voici le jQuery pertinent (J'ai copié le code vers le bas ci-dessous si vous souhaitez copier/coller):

image

Ils première clé est d'inclure tous les deux un <queryOptions> et <QueryOptions> nœud.  La seconde clé est que les <Dossier> le noeud est une URL à laquelle le client a accès.

Il y a peut-être d'autres façons d'obtenir ce, mais cela a fonctionné ainsi pour moi lors de l'utilisation de jQuery.

Voici l'enveloppe SOAP de ce qui précède:

<soapenv:Enveloppe xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corps>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <nom de la liste>Liste personnalisée avec les sous répertoires</nom de la liste>
      <viewFields>  
        <ViewFields>
          <FieldRef nom =' titre’ />
          <FieldRef nom ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Dossier>
http://demoserver1/blog Liste de scénarios/listes/Custom avec Sub dossiers/année 2006</Dossier>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corps>
</soapenv:Enveloppe>

Beaucoup d'exemples et de discussion autour de ce m'a amené à croire que tout ce dont j'ai besoin est <QueryOptions> et spécifiez un nom de dossier.  Pour moi, J'ai à la fois placez-le à l'intérieur <queryOptions> ainsi que de spécifier une URL qualifiée complète pour la <Dossier> nœud.

Voici le programme d'installation de jQuery AJAX:

$(document).prêt(fonction() {
       var soapEnv =
           "<soapenv:Enveloppe xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corps> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <nom de la liste>Liste personnalisée avec les sous répertoires</nom de la liste> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef nom =' titre’ /> \
                              <FieldRef nom ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Dossier>http://demoserver1/Blogging Liste de scénarios/listes/Custom avec Sub dossiers/année 2006</Dossier> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corps> \
           </soapenv:Enveloppe>";

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Lists.asmx, GetList et « valeur ne peut pas être null”

J'ai découvert aujourd'hui que la GetList() méthode en lists.asmx service Web doit être appelée très soigneusement ou il est enclin à lancer un mystérieux « Valeur ne peut pas être null » exception (et qui est en supposant que vous aurez passé le message d'erreur générique encore pire, "Exception de type « Microsoft.SharePoint.SoapServer.SoapServerException’ a été lancée. »)  Spécifiquement, Je trouve que vous ne peut pas fournir toute sorte de préfixe sur la méthode GetList.  L'extrait suivant de jQuery illustre le point:

image

Si vous faites cela, le service web répond avec « Valeur ne peut être null » selon cette violon-fourni la transcription HTTP:

<?XML version = "1.0" Encoding = « utf-8 »?>
  <savon:Enveloppe
     xmlns:savon ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:xsd ="
http://www.w3.org/2001/XMLSchema">

  <savon:Corps>
    <savon:Faute>
      <FaultCode>savon:Serveur</FaultCode>
      <FaultString>
        Exception de type « Microsoft.SharePoint.SoapServer.SoapServerException’ a été levée.
      </FaultString>
      <détail>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Valeur ne peut pas être null.
        </ErrorString>
      </détail>
    </savon:Faute>
  </savon:Corps>
</savon:Enveloppe>

Bien sûr, vous ne serait pas probablement ajouter ce préfixe « s0 » sur votre propre, mais certains outils ont tendance à le faire (comme Eclipse).

C'est d'autant plus déroutant / frustrant parce que les autres méthodes de tolèrent les préfixes.  Par exemple, le GetListCollection méthode n'est pas l'esprit si elle est été préfixé, même avec les préfixes absurdes comme « xyzzy »:

image

Cette « valeur ne peut pas être null » semble assez commun avec lists.asmx donc j'espère que cela aidera quelqu'un sortir à l'avenir.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin