Interessant iPhone anvendelse

image Den mobile team her på Slalom har udviklet en virkelig cool iPad applikation, der kombinerer virtual reality augmentation med offline evne til at bestemme, hvad kan være bedste New York subway finder og routing app tilgængelig i dag.

Her er webstedet beskriver app i flere detaljer: http://www.nycstationfinder.com/.

Jeg har ikke nogen Apple produkter, så jeg ikke kan teste det ud selv, men det ser pretty cool. Jeg håber de port det til Android snart.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

MVP igen

Microsoft re-awarded mig med SharePoint MVP på juli 1st dette år og det er ikke mindre spændende, end det var første gang fire år siden.

Fællesskabets SharePoint er blot et fantastisk sted.  Jeg husker, da jeg blev først indført til SharePoint ved min gamle arbejdsgiver, Conchango.  Jeg var ikke glad for det Smil.  Jeg havde levet i et BizTalk-verden i et år eller to fører op til mit job der og før, arbejdede i en anden økarakter verden af personer og selskaber, der fremsatte en levende off af Fremskridt Software.  Sige "økarakter" fordi SharePoint verden er noget, men!

Jeg konstant glad og glade for at kunne være en del af denne bizarre online fællesskab af folk, der føler sig mærkeligt tvunget til blog uendelige, opgive deres lørdage til fri konferencer, Boomerang onlinefora, opbygge alle former for whacked ud gratis produkter at sætte op på CodePlex og et utal af andre Fællesskabets bestræbelser i alle former og størrelser. 

Jeg ved ikke, hvad det handler om dette produkt, der inspirerer sådanne frivillighed og nedsænkning, Men jeg håber det aldrig ændringer.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Lad lysende eksempler bly måde øget SharePoint vedtagelse

Min første "rene" BrightStarr blog post blev offentliggjort i dag.  Her er en teaser:

Der har været en masse af samtale på Internets af sene på emnet for SharePoint vedtagelse og især manglen heraf. Ingen ønsker at gå til alle besværet med at designe en farm og sikkerhed infrastruktur, deltager i workshops, sammensætte et Smart udseende, arbejder ud en rock solid oplysninger arkitektur, der kan modstå selskab re-orgs omskiftelser og endelig, en fanfare-fyldt implementeringen blot at opdage tre måneder post go-live, mindre end 50% selskabets medarbejdere bruger SharePoint og de fleste af dem bruger det til at erstatte de gamle netværksfilservere ("S:\ drev").

Ingen sølv punkttegn (eller enkelt blogindlæg) vil løse dette problem. Dog, der er mange ting du kan gøre for at mindske risikoen for en anemic SharePoint portal. En sådan teknik er "lysende eksempel mønster."

Jeg ville elske at vide om andre SharePoint vedtagelsen strategier, som du pleje dele.  Hvis du deler, venligst forlade som en kommentar på bloggen BrightStarr.

Læse det hele her: http://www.brightstarr.com/US/Pages/blog-view.aspx?BlogID=52

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

"Adgang nægtet” til Default.aspx på et SharePoint 2010 Underordnede websted

En af mine klienter gik live med deres SharePoint 2010 miljø i dag.  Vi opdagede, at en bestemt gruppe af brugere ikke kunne få adgang til deres standardstartsiden.  SharePoint reageret med "Adgang nægtet" og sædvanlige "Log på som en anden bruger" eller "Anmod om adgang" svar. 

Når vi brugte funktionen smarte "Kontroller adgang" bekræftet det, at slutbrugere, der virkelig har adgang.  Endnu, de kunne ikke hentes til siden.

Der fulgte en masse veje til forskellige blindgyder, indtil jeg besluttede at sammenligne webdele på siden brudt mod en lignende arbejde side.  Jeg gjorde det, ved at lægge siden i maintenance mode ved at tilføje"?indhold = 1 "til siden. Så, det lignede "http://Server/Subsite/Subsite/default.aspx?indhold = 1 ". 

Dette viste mig to web dele navngivet "Fejl" med en beskrivelse som "Fejl" på siden brudt.  Jeg tror ikke, at tage en skærmen fælles landbrugspolitik dengang.

Jeg fjernet dem og som løst problemet.

Jeg har set et spørgsmål som dette kommer op på foraene i fortiden, og jeg var yderst skeptiske over den plakat insisteren på at han havde sikkerhed rigtigt indstillet.  Jeg * ved * jeg havde sikkerhed sat op til højre Smil  Næste gang, I be mere åbne og mindre skeptiske.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

XSLT og jQuery prøver

Jeg har gjort en masse af XSLT og jQuery og tænkte jeg deler et par uddrag, som andre kan finde nyttige i fremtiden.

Eksempel 1: Udsende enkel JavaScript / jQuery i XSLT:

<XSL:skabelon match = "noget" XML:plads = "bevare">

  <!– Tomt ud forespørgselsfelt venlige filtre skjulte –>
  <script type = "tekst/javascript">
    $(dokument).klar til(funktion(){
      $("#QueryFriendlyFilters").Val("tom");
    });
  </script>

</XSL:skabelon>

Denne bit udsender nogle JavaScript, der venter på siden for at afslutte indlæsning (på grund af den $(dokument).klar til(…)) og derefter indstiller værdien af et skjult felt opkaldt QueryFriendlyFilters til konstantværdi "tom".

Eksempel 2: Brug <XSL:Hvis> at kontrollere "større end",  "mindre end", osv.

<XSL:skabelon match = "noget" XML:plads = "bevare">

  <div id = "fdcAllFilters">
 
    <XSL:Hvis test="@Count>0">
      <kalibreringsgas klasse = "fdcFilterLabel">Aktuelle filtre:</span>
    </XSL:Hvis>

    <!– flere ting sker her. –>

</XSL:skabelon>

Den ovennævnte snippet kontrollerer, hvis en attribut med navnet "Tæller" i elementet "noget" er større end nul.  XML bag dette ville være noget:”

<noget Count = "5" />

Eksempel 3: Iterere gennem alle elementer, indsætte jQuery opkald.

<!– Iterere gennem alle filtrene og vise den korrekte  links. –>
<XSL:for hver select = "UserFilter">

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

  <kalibreringsgas klasse = "fdcFilterLabel"><XSL:værdi-af select="@FilterValue"/></span>

  <script type = "tekst/javascript">

    $(dokument).klar til(funktion(){
        <XSL:tekst><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:tekst>\"<XSL:værdi-af select="@FilterValue"/>\"<XSL:tekst><![CDATA["));]]></XSL:tekst>
    });

  </script>

</XSL:for hver>

Den ovennævnte snippet er den mest komplekse og kan der lettere måder at gøre det.

XML bag dette ser nogenlunde sådan ud:

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

Denne snippet iterere gennem <UserFilter> noder. 

Det første udsender et anker mærke, når der klikkes på påberåber sig en JavaScript-funktion, der allerede er på siden, "mySubmitPage" og passerer værdien af en attribut den <UserFilter> node med navnet "ID". 

Det udsender derefter nogle jQuery, som venter på siden for at indlæse.  At jQuery opdaterer et skjult felt med navnet "QueryFriendlyFilters" ved at tilføje værdien af attributten FilterValue.  Bemærk alle crazy <XSL:tekst> og <![CDATA[ … ]]> Stuff.

Det er det, håbe, det hjælper!

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

PerformancePoint- og fejl 33494

En af mine klienter kaldes i dag når deres PerformancePoint-miljø (i SharePoint 2010) brød.  En af app serverne i farmen kører lav diskplads på.  Mens adressering,, klienten afinstalleret "for meget" og PP stuff alle stoppet funktion.  Forskellige webdele ville vise "der opstod en uventet fejl. Fejl 33494. Yderligere detaljer har været logget til din administrator":

image

Jeg kiggede op fejlen og fandt noget specifikke "Fejl 33494" men denne MSDN-foraene bogføring var nyttige: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Jeg fandt ADOMD.NET her som en komponent i SQL Server 2008 Feature Pack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Klik for at forstørre)

Jeg henter og installeret, og det fastsættes alt.

Jeg tror, dette er en smuk oddball slags fejl, Men hvis du ramt det, du mindst du har en indstilling.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Lists.asmx, GetListItems og mapper

Jeg gjorde nogle forskning for nogen i dag omkring tjenesten list.asmx web leveres som del af SharePoint 2010 (og tidligere).  Hun kunne få listeelementerne på rodmappen (herunder navnene på undermapper), men kunne ikke få elementer i undermapper.  Jeg gjorde nogle ser på internets, og det er et overraskende fælles spørgsmål.  Endnu, Jeg kunne ikke hentes et godt svar på den enkle spørgsmål, "Hvis jeg kender mappen, Hvordan får jeg elementerne i mappen?”  At være ærlig, Jeg forsøge ikke alt, hårdt, da jeg har villet figur denne ene ud på min egen i et stykke tid Smil.

At definere dette, Jeg har oprettet et websted med navnet "Blogging scenarier" og en brugerdefineret liste med navnet "Brugerdefineret liste med Sub mapper".  Jeg derefter oprettes mapper med navnet:

  • År 2005
  • År 2006
  • År 2007

Jeg har tilføjet et par elementer i mappen "År 2006".  Dette er, hvad det ligner:

image

Min ven ikke skriver C# kode, men snarere ved hjælp af Java, SOAP-konvolutten var så hvad hun virkelig nødvendig.  At få, Jeg skrev et bit af jQuery og derefter bruges spillemand for at få den faktiske http-samtale.

Her er den relevante jQuery (Jeg kopieres koden ned nedenfor, hvis du vil kopiere/indsætte):

image

De første nøgle er at medtage både en <queryOptions> og <QueryOptions> node.  Den anden nøgle er den <Mappe> noden er en URL-adresse, som klienten har adgang.

Der kan være andre måder at få dette, Men dette arbejdede godt for mig, når du bruger jQuery.

Her er SOAP-konvolutten for ovenstående:

<soapenv:Konvolut xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Organ>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <Listenavn>Brugerdefineret liste med Sub mapper</Listenavn>
      <viewFields>  
        <ViewFields>
          <FieldRef navn =' titel’ />
          <FieldRef navn ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Mappe>
http://demoserver1/Blogging Scenarier/lister/brugerdefineret liste med Sub mapper/år 2006</Mappe>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Organ>
</soapenv:Konvolut>

En masse eksempler og diskussion omkring dette ført mig til at tro at all I need var <QueryOptions> og angive et mappenavn.  For mig, Jeg har brug for begge ombryde det inde <queryOptions> samt angive en fuldt kvalificeret URL-adressen til den <Mappe> node.

Her er opsætningen jQuery AJAX:

$(dokument).klar til(funktion() {
       var soapEnv =
           "<soapenv:Konvolut xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Organ> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <Listenavn>Brugerdefineret liste med Sub mapper</Listenavn> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef navn =' titel’ /> \
                              <FieldRef navn ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Mappe>http://demoserver1/Blogging Scenarier/lister/brugerdefineret liste med Sub mapper/år 2006</Mappe> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Organ> \
           </soapenv:Konvolut>";

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

Lists.asmx, GetList og "værdi kan ikke være null”

Jeg opdagede i dag, GetList() metode i lists.asmx webtjenesten har kaldt meget omhyggeligt, eller det er tilbøjelige til at smide en mystisk "Værdi kan ikke være null" undtagelse (og antages kan du få forbi den endnu værre generiske fejlmeddelelse, "Undtagelse af typen ' Microsoft.SharePoint.SoapServer.SoapServerException’ der blev udløst.")  Specifikt, Jeg fandt, at du ikke kan give nogen form for præfiks på metoden GetList.  Den følgende jQuery snippet illustrerer punktet:

image

Hvis du gør det, Webtjenesten svarer med "Værdi kan ikke være null" som pr. dette spillemand-forudsat http-transcript:

<?XML version = "1.0" encoding = "utf-8"?>
  <SOAP:Konvolut
     xmlns:SOAP ="
http://schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <SOAP:Organ>
    <SOAP:Fejl>
      <faultcode>SOAP:Server</faultcode>
      <faultString>
        Undtagelse af typen ' Microsoft.SharePoint.SoapServer.SoapServerException’ der blev udløst.
      </faultString>
      <detaljer>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Værdi må ikke være null.
        </ErrorString>
      </detaljer>
    </SOAP:Fejl>
  </SOAP:Organ>
</SOAP:Konvolut>

Selvfølgelig, du ville sandsynligvis tilføje denne "s0" præfiks på dine egne, men nogle værktøjer er tilbøjelige til at gøre det. (ligesom Eclipse).

Dette er så meget desto mere forvirrende / frustrerende fordi andre metoder tolerere præfikser.  For eksempel, den GetListCollection metode huske ikke, hvis det er blevet præfikset, selv med nonsens præfikser ligesom "xyzzy":

image

Dette "værdi ikke kan være null" forekommer temmelig fælles med lists.asmx så forhåbentlig dette vil hjælpe en anden person ud i fremtiden.

</slutningen>

Abonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin