Interessante iPhone toepassing

image De mobiele team hier bij Slalom heeft een echt cool iPad applicatie die de vergroting van het virtuele werkelijkheid w / off line vermogen combineert bepalen wat de beste New York Metro finder en routering app vandaag beschikbaar kunnen zijn ontwikkeld.

Hier is de site met een beschrijving van de app in meer detail: http://www.nycstationfinder.com/.

Ik heb geen Apple producten, dus ik kan niet het uit mezelf testen, maar het ziet er vrij koel. Ik hoop dat zij haven het over aan Android binnenkort.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

MVP opnieuw

Microsoft re-awarded me met SharePoint MVP op 1 juli dit jaar en het is niet minder spannend dan het was de eerste maal vier jaar geleden.

De SharePoint-Gemeenschap is gewoon een geweldige plek.  Ik herinner me toen ik werd eerst geïntroduceerd aan SharePoint door mijn oude werkgever, Conchango.  Ik was niet gelukkig over het Glimlach.  Ik had geleefd in een BizTalk-wereld voor een jaar of twee aanloop naar mijn werk er en daarvoor, gewerkt in een andere insulaire wereld van mensen en bedrijven die een levende off van Progress Software.  Ik zeg "insulaire" omdat de SharePoint-wereld allesbehalve is!

Ik ben voortdurend blij en verheugd om deel uit van dit bizarre online gemeenschap van mensen die het gevoel gedwongen vreemd eindeloos te blog, geven hun zaterdag gratis conferenties, achtervolgen online forums, bouwen alle soorten geschift uit gratis producten op CodePlex opgemaakt en een groot aantal andere communautaire inspanningen van alle soorten en maten. 

Ik weet niet wat het is over deze product dat dergelijke vrijwilligerswerk en onderdompeling inspireert, maar ik hoop dat het nooit wijzigingen.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Laat schijnt voorbeelden leiden de weg naar verhoogde goedkeuring van SharePoint

Mijn eerste "zuivere" BrightStarr blog entry is vandaag gepubliceerd.  Hier is een teaser:

Is er een heleboel gesprek op de Internets laat op het onderwerp van SharePoint aanneming en vooral het gebrek daaraan. Niemand wil gaan naar alle de moeite van het ontwerpen van een boerderij en veiligheid infrastructuur, deelnemen aan workshops, samenstellen van een hippe look en feel, uit een rots-solide informatie-architectuur die bestand is tegen de wisselvalligheden van het bedrijf re-orgs te werken en ten slotte, een fanfare gevulde uitrol enkel om te ontdekken van drie maanden post go-live die minder dan 50% van het bedrijf zijn medewerkers met behulp van SharePoint en de meesten van hen worden gebruikt ter vervanging van het oude bestand netwerkservers ("de s:\ Station").

Geen zilveren kogel (of één blogpost) gaat dat probleem op te lossen. Echter, Er zijn veel dingen die je doen kunt om het risico van een bloedarm SharePoint portal. Een dergelijke techniek is de "Shining voorbeeld patroon."

Ik zou graag willen weten over andere SharePoint aanneming strategieën die u zorg te delen.  Als u deelt, laat als een commentaar op de blog BrightStarr.

Lees het hele ding hier: http://www.brightstarr.com/US/Pages/blog-view.aspx?BlogID=52

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

'Toegang geweigerd” naar Default.aspx op een SharePoint 2010 Sub Site

Een van mijn cliënten ging wonen met hun SharePoint 2010 milieu vandaag.  We hebben ontdekt dat een bepaalde groep van gebruikers kon niet toegang hebben tot hun standaard-startpagina.  SharePoint reageerde met "Toegang geweigerd" en de gebruikelijke 'Aanmelden als een andere gebruiker"of"verzoek toegang"antwoord. 

Wanneer we de handige "controleren" toegangsfunctie gebruikt bevestigd het dat de eindgebruikers echt beschikken.  Nog, ze konden niet worden naar de pagina.

Ik volgde een heleboel wegen naar verschillende dode uiteinden totdat ik besloot te vergelijken van de webonderdelen op de gebroken pagina tegen een soortgelijke werken pagina.  Ik deed dat door de invoering van de pagina in de onderhoudsmodus door toe te voegen"?inhoud = 1 "naar de pagina. Dus, het leek wel 'http://Server/subsite/subsite/default.aspx?inhoud = 1 ". 

Dit liet me twee web delen met de naam "Fout" met een beschrijving als "Fout" op de gebroken pagina.  Ik denk niet dat een scherm GLB nemen op het moment.

Ik heb verwijderd hen en dat het probleem opgelost.

Ik heb een vraag als deze kom omhoog op de forums in het verleden en ik was uiterst sceptisch over van de affiche aandringen dat hij had beveiliging correct ingesteld.  Ik * weten * ik had veiligheid ingesteld recht Glimlach  Volgende keer, Ik zal meer open en minder sceptisch.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

XSLT- en jQuery monsters

Ik heb gedaan een heleboel van XSLT- en jQuery en dacht dat ik zou delen een paar fragmenten die anderen in de toekomst nuttig kunnen vinden.

Voorbeeld 1: Eenvoudige JavaScript uitstoten / jQuery in XSLT:

<XSL:sjabloon match = "iets" XML:ruimte = "behouden">

  <!– Uit de query vriendelijke filters verborgen veld leeg –>
  <script type = "text/javascript">
    $(document).klaar(functie(){
      $("#QueryFriendlyFilters").Val("lege");
    });
  </script>

</XSL:sjabloon>

Dat beetje stoot sommige JavaScript die op de pagina wacht te laden voltooien (vanwege de $(document).klaar(…)) en vervolgens sets de waarde van een verborgen veld genaamd QueryFriendlyFilters aan de letterlijke waarde "leeg".

Voorbeeld 2: Gebruik <XSL:Als> om te controleren 'groter dan',  "minder dan", etc.

<XSL:sjabloon match = "iets" XML:ruimte = "behouden">

  <div id = "fdcAllFilters">
 
    <XSL:Als test="@Count>0">
      <klasse omspannen = "fdcFilterLabel">Huidige filters:</span>
    </XSL:Als>

    <!– meer dingen gebeurt hier. –>

</XSL:sjabloon>

Het bovenstaande fragment wordt gecontroleerd als een kenmerk met de naam "Count" van het "iets" element groter dan nul is.  De XML achter dit zou iets willen:”

<iets Count = "5" />

Voorbeeld 3: Alle elementen doorlopen, interspersing jQuery oproepen.

<!– Alle filters doorlopen en weer de juiste  koppelingen. –>
<XSL:for-each select = "UserFilter">

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

  <klasse omspannen = "fdcFilterLabel"><XSL:waarde-van select="@FilterValue"/></span>

  <script type = "text/javascript">

    $(document).klaar(functie(){
        <XSL:tekst><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:tekst>\"<XSL:waarde-van select="@FilterValue"/>\"<XSL:tekst><![CDATA["));]]></XSL:tekst>
    });

  </script>

</XSL:for-each>

Het bovenstaande fragment is de meest complexe en kunnen er eenvoudiger manieren om het te doen.

De XML achter dit ziet er ongeveer als volgt:

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

Dit fragment is sequentieel doorzoeken <UserFilter> knooppunten. 

Het eerste stoot een anker tag die, wanneer geklikt roept een JavaScript-functie die is al op de pagina, "mySubmitPage" en geeft de waarde van een kenmerk op de <UserFilter> knooppunt met de naam "ID". 

Het straalt dan sommige jQuery die op de pagina wacht te laden.  Een verborgen veld met de naam "QueryFriendlyFilters" door de waarde van het kenmerk FilterValue bijgewerkt dat jQuery.  Opmerking alle de gekke <XSL:tekst> en <![CDATA[ … ]]> spullen.

Dat is het, hoop dat het helpt!

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

PerformancePoint en fout 33494

Een van mijn cliënten belde vandaag wanneer hun PerformancePoint omgeving (in SharePoint 2010) brak.  Een van de app servers in de farm was weinig schijfruimte.  Terwijl het aanpakken van die, de client desinstalleerde "te veel", en de PP van alle spullen gestopt werking.  Verschillende webonderdelen zou tonen "een onverwachte fout opgetreden. Fout 33494. Extra details zijn voor uw beheerder geregistreerd":

image

Ik keek op de fout en niet vinden iets specifiek voor 'Fout 33494' maar dit MSDN-forum posting was nuttig: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Ik vond ADOMD.Hier NET als een component in de SQL-Server 2008 Featurepack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Klik om te vergroten)

Ik gedownload en geïnstalleerd die en het vaste alles.

Ik denk dat dit is een mooie excentrieke soort fout, maar als u het raken, u hebt u ten minste een optie.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Lists.asmx, GetListItems en mappen

Ik deed wat onderzoek voor iemand vandaag rond de list.asmx webservice geleverd als onderdeel van SharePoint 2010 (en eerder).  Ze kon krijgen de lijstitems op de root-map (met inbegrip van de namen van de submappen), maar kon niet items in submappen.  Ik deed wat rondkijken op de internets en het is een verrassend gemeenschappelijke vraag.  Nog, Ik kon niet krijgen een goed antwoord op de eenvoudige vraag, "als ik weet dat de map, Hoe krijg ik de items in de map?”  Om eerlijk te zijn, Ik heb niet proberen zo hard aangezien ik figuur dit één uit op mijn eigen voor een tijdje wilde Glimlach.

Dit instellen, Ik heb een site met de naam "Bloggen scenario's" en een aangepaste lijst genaamd "Aangepaste lijst met Sub Folders".  Ik vervolgens mappen met deze naam gemaakt:

  • Jaar 2005
  • Jaar 2006
  • Jaar 2007

Ik een paar items toegevoegd aan de map "Year 2006".  Dit is wat het als kijkt:

image

Mijn vriend is niet C# code te schrijven maar eerder met behulp van Java, dus de SOAP-envelop wat ze echt nodig was.  Om dat te krijgen, Ik schreef een beetje van jQuery en vervolgens fiddler gebruikt om de werkelijke HTTP gesprek.

Hier is het relevante jQuery (Ik heb de code gekopieerd naar beneden hieronder als u wilt kopiëren en plakken):

image

Zij eerste sleutel is om zowel een <queryOptions> en <QueryOptions> knooppunt.  De tweede sleutel is dat de <Map> knooppunt is een URL waarnaar de client toegang heeft.

Kunnen er andere manieren om dit te krijgen, maar dit werkte goed voor mij toen met behulp van jQuery.

Hier is de SOAP-envelop voor de bovenstaande:

<soapenv:Envelop xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Lichaam>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Aangepaste lijst met submappen</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef naam =' titel’ />
          <FieldRef naam ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Map>
http://demoserver1/bloggen Scenario's / lijsten/aangepaste lijst met Sub mappen/jaar 2006</Map>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Lichaam>
</soapenv:Envelop>

Een heleboel voorbeelden en discussie rond dit leidde me om te geloven dat alles wat ik nodig was <QueryOptions> en geef een mapnaam.  Voor mij, Ik nodig beide wikkel het binnen <queryOptions> zo goed als een volledig gekwalificeerde URL opgeven voor de <Map> knooppunt.

Hier is de setup jQuery AJAX:

$(document).klaar(functie() {
       var soapEnv =
           "<soapenv:Envelop xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Lichaam> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Aangepaste lijst met submappen</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef naam =' titel’ /> \
                              <FieldRef naam ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Map>http://demoserver1/Blogging Scenario's / lijsten/aangepaste lijst met Sub mappen/jaar 2006</Map> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Lichaam> \
           </soapenv:Envelop>";

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

Lists.asmx, GetList en "waarde kan niet null”

Ik ontdekte vandaag dat de GetList() methode in lists.asmx web-service moet zeer zorgvuldig worden genoemd of het is gevoelig voor het gooien van een mysterieuze "Waarde null kan niet" uitzondering (en dat de veronderstelling dat kunt u voorbij het nog erger algemene foutbericht, "Uitzondering van het type ' Microsoft.SharePoint.SoapServer.SoapServerException’ werd gegooid.")  Specifiek, Ik vond dat u niet elke vorm van voorvoegsel te op de GetList-methode verstrekken.  De volgende jQuery fragment illustreert het punt:

image

Als u dat doen, de webservice reageert met "Waarde kan niet null" als per dit Fiddler-geboden HTTP transcript:

<?XML version = "1.0" encoding = "utf-8"?>
  <zeep:Envelop
     xmlns:zeep ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:XSi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <zeep:Lichaam>
    <zeep:Schuld>
      <FaultCode>zeep:Server</FaultCode>
      <FaultString>
        Uitzondering van het type ' Microsoft.SharePoint.SoapServer.SoapServerException’ werd gegooid.
      </FaultString>
      <detail>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Waarde kan niet null.
        </ErrorString>
      </detail>
    </zeep:Schuld>
  </zeep:Lichaam>
</zeep:Envelop>

Natuurlijk, u niet zou waarschijnlijk toevoegen dat "s0" voorvoegsel op uw eigen, maar sommige tools zijn geneigd om het te doen (zoals Eclipse).

Dit is des te meer verwarrend / frustrerend omdat andere methoden voorvoegsels tolereren.  Bijvoorbeeld, de GetListCollection methode erg niet als het wordt zijn voorafgegaan, zelfs met onzin voorvoegsels zoals "xyzzy":

image

Dit "waarde null kan niet" lijkt vrij algemeen met lists.asmx dus hopelijk dit iemand uit in de toekomst helpen zal.

</einde>

Abonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin