Interessante applicazione iPhone

image La squadra mobile qui a Slalom ha sviluppato un'applicazione iPad davvero cool che combina additiva di realtà virtuale w / capacità non in linea per fornire ciò che potrebbe essere la migliore cercatore della metropolitana di New York e instradamento app disponibile oggi.

Ecco il sito che descrive l'applicazione più in dettaglio: http://www.nycstationfinder.com/.

Non ho alcun prodotto Apple così io non posso provare fuori io stesso, ma sembra piuttosto fresco. Sto sperando che portarlo sopra su Android presto.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Ancora una volta MVP

Ri-Microsoft assegnato me con SharePoint MVP il 1 ° luglio di quest'anno ed è non meno emozionante di quanto fosse la prima volta quattro anni fa.

La comunità di SharePoint è solo un posto incredibile.  Mi ricordo quando è stato introdotto in primo luogo per SharePoint dal mio vecchio datore di lavoro, Conchango.  Non ero felice a questo proposito sorriso, sorridere.  Avevo vissuto in un mondo di BizTalk per un anno o due che porta al mio lavoro c'e prima che, ha lavorato in un altro mondo insulare di persone e aziende che ha fatto una vita fuori di Progress Software.  Dico "insulare" perché il mondo di SharePoint è tutt'altro che!

Io sono continuamente contento e felice di essere parte di questa bizzarra comunità on-line di persone che si sentono stranamente costretto a blog all'infinito, rinunciare al loro sabato gratis conferenze, infestano forum online, costruire tutti i tipi di prodotti gratuiti whacked fuori a mettere in su in CodePlex e una miriade di altri gli sforzi della comunità di tutte le forme e dimensioni. 

Non so cosa sia su questo prodotto che ispira tali volontariato e ad immersione, ma mi auguro mai le modifiche.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Lasciate brillanti esempi piombo il modo per adozione crescente di SharePoint

Mio primo post di blog BrightStarr "puro" è stato pubblicato oggi.  Ecco un teaser:

C'è stato un sacco di conversazione su Internets di ritardo sul tema dell'adozione di SharePoint e soprattutto la mancanza della stessa. Nessuno vuole andare a tutti i problemi di progettazione di un'infrastruttura di fattoria e sicurezza, partecipazione a seminari, mettendo insieme un aspetto sgargianti, lavoro fuori un'architettura di informazioni solida roccia che può sopportare le vicissitudini della società re-org e, infine,, un pieno di fanfara rollout solo per scoprire tre mesi post attivazione che meno di 50% i dipendenti della società utilizzano SharePoint e la maggior parte di loro lo utilizzano per sostituire i vecchi file server di rete ("la s:\ in auto").

Nessun proiettile d'argento (o unico blog post) sta per risolvere quel problema. Tuttavia, ci sono molte cose che potete fare per ridurre il rischio di un anemico SharePoint portal. Una di queste tecniche è il "modello di esempio Shining."

Piacerebbe conoscere altre strategie di adozione di SharePoint che si cura di condividere.  Se Condividi, si prega di lasciare come un commento sul blog BrightStarr.

Leggi tutto qui: http://www.brightstarr.com/US/Pages/blog-view.aspx?BlogID=52

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

"Accesso negato” per default. aspx su un SharePoint 2010 Sito sub

Uno dei miei clienti è andato in diretta con loro SharePoint 2010 ambiente di oggi.  Abbiamo scoperto che un certo gruppo di utenti non poteva accedere loro home page predefinita.  SharePoint ha risposto con il solito "segno in con un altro utente" e di "Accesso negato" o "richiesta di accesso" risposta. 

Quando abbiamo usato la funzione "Check Access" nifty è confermato che gli utenti finali davvero ha avuto accesso.  Ancora, non riusciva a pagina.

Ho seguito un sacco di strade alle varie morti estremità fino a quando ho deciso di confrontare le web part nella pagina rotta contro una pagina di lavoro simili.  L'ho fatto mettendo la pagina in modalità di manutenzione con l'aggiunta di"?contenuto = 1 "alla pagina. Così, sembrava come "http://server/subsite/subsite/default.aspx?contenuto = 1 ". 

Questo mi ha mostrato due web parti denominati "Errore" con una descrizione come "Errore" nella pagina rotta.  Non ho pensato di prendere un berretto di schermo al momento.

Ho tolto loro, e che ha risolto il problema.

Ho visto una domanda come questa venire fino sul forum in passato e sono stato estremamente scettico su insistenza del manifesto che aveva sicurezza impostato correttamente.  Ho * conoscere * ho avuto protezione impostata fino a destra sorriso, sorridere  La prossima volta, Sarò più aperta e meno scettico.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Campioni di XSLT e jQuery

Ho fatto un sacco di XSLT e jQuery e ho pensato di che condividere alcuni frammenti che altri possono trovare utili in futuro.

Esempio 1: Emettono semplice JavaScript / jQuery in XSLT:

<xsl:partita modello = "qualcosa" XML:Space = "preserve">

  <!– Vuoto il campo nascosto filtri amichevole di query –>
  <tipo di script = "text/javascript">
    $(documento).pronto(funzione(){
      $("#QueryFriendlyFilters").Val("vuoto");
    });
  </script di>

</xsl:modello>

Quel ' emette alcuni JavaScript che attende la pagina alla fine del caricamento (causa della $(documento).pronto(…)) e quindi imposta il valore di un campo nascosto denominato QueryFriendlyFilters per il valore letterale "Svuota".

Esempio 2: Uso <xsl:Se> per controllare "maggiore di",  "meno di", ecc.

<xsl:partita modello = "qualcosa" XML:Space = "preserve">

  <div id = "fdcAllFilters">
 
    <xsl:Se test="@Count>0">
      <span class = "fdcFilterLabel">Filtri correnti:</arco>
    </xsl:Se>

    <!– più roba succede qui. –>

</xsl:modello>

Questo frammento di codice consente di verificare se un attributo denominato "Contare" dell'elemento "qualcosa" è maggiore di zero.  il XML dietro questo sarebbe qualcosa come:”

<qualcosa Count = "5" />

Esempio 3: Scorrere tutti gli elementi, inframmezzando chiamate jQuery.

<!– Scorrere tutti i filtri e visualizzare la corretta  link. –>
<xsl:for each selezionare = "Benutzerfilter">

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

  <span class = "fdcFilterLabel"><xsl:valore di select="@FilterValue"/></arco>

  <tipo di script = "text/javascript">

    $(documento).pronto(funzione(){
        <xsl:Testo><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></xsl:Testo>\"<xsl:valore di select="@FilterValue"/>\"<xsl:Testo><![CDATA["));]]></xsl:Testo>
    });

  </script di>

</xsl:for each>

Questo frammento di codice è il più complesso e ci possono essere più facili modi per farlo.

il XML dietro questo assomiglia all'incirca a questo:

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

Scorrimento di questo frammento <UserFilter> nodi. 

In primo luogo emette un ancoraggio etichetta che quando si fa clic richiama una funzione JavaScript che è già nella pagina, "mySubmitPage" e passa il valore di un attributo <UserFilter> nodo denominato "ID". 

Emette poi qualche jQuery che attende la pagina caricare.  Quel jQuery aggiorna un campo nascosto di nome "QueryFriendlyFilters", aggiungendo il valore dell'attributo FilterValue.  Nota tutti il pazzo <xsl:Testo> e <![CDATA[ … ]]> roba.

Questo è tutto, speranza che aiuta!

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

PerformancePoint e l'errore 33494

Uno dei miei clienti chiamati oggi quando loro ambiente PerformancePoint (in SharePoint 2010) si ruppe.  Uno dei server della farm app era insufficiente spazio su disco.  Affrontando che, il client disinstallato "troppo" e la roba PP tutti smesso di funzionare.  Varie parti web avrebbero mostrato "inatteso errore. Errore 33494. Ulteriori dettagli sono stati registrati per l'amministratore":

image

Guardato l'errore e non ha trovato nulla specifico per "Errore 33494" ma questo forum MSDN distacco è stato utile: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Ho trovato ADOMD.NET qui come componente di SQL Server 2008 Feature Pack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Clicca per ingrandire)

Ho scaricare e installato che e tutto e ' fissato.

Penso che questo è un tipo abbastanza stravaganti di errore, ma se si ha colpito, voi almeno voi avere un'opzione.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Lists.asmx, GetListItems e le cartelle

Stavo facendo qualche ricerca per qualcuno oggi intorno al servizio di web list.asmx fornito come parte di SharePoint 2010 (e precedenti).  Lei era in grado di ottenere gli elementi dell'elenco alla cartella principale (anche i nomi delle sotto-cartelle), ma non poteva ottenere elementi in sotto-cartelle.  Ho fatto alcuni guardando in giro su internets ed è una domanda sorprendentemente comune.  Ancora, Non ho potuto ottenere una buona risposta alla domanda semplice, "se conosco la cartella, come ottenere gli elementi nella cartella?”  Ad essere onesti, Non provato duramente tutto ciò che dal momento che ho voluto capire questo una fuori il mio per un po ' sorriso, sorridere.

Per configurare questo, Ho creato un sito denominato "Blogging scenari" e un elenco personalizzato denominato "Elenco personalizzato con Sub cartelle".  Ho poi creato cartelle denominate:

  • Anno 2005
  • Anno 2006
  • Anno 2007

Ho aggiunto alcuni articoli nella cartella "Anno 2006".  Questo è quello che sembra:

image

Il mio amico non è scrittura di codice c#, ma piuttosto utilizzando Java, così la SOAP envelope era cosa aveva bisogno.  Per ottenere che, Ho scritto un po ' di jQuery e quindi utilizzato violinista per ottenere la conversazione reale HTTP.

Ecco le pertinenti jQuery (Ho copiato il codice giù sotto se volete copiare/incollare):

image

Essi prima chiave consiste nell'includere sia un <queryOptions> e <QueryOptions> nodo.  La seconda chiave è che il <Cartella> il nodo è un URL a cui il cliente ha accesso.

Ci possono essere altri modi per arrivare a questo, ma questo ha funzionato bene per me quando si utilizza jQuery.

Ecco la SOAP envelope sopra:

<soapenv:Busta xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Elenco personalizzato con sottocartelle</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef Name =' titolo’ />
          <FieldRef Name ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Cartella>
http://demoserver1/Blogging Elenco di scenari/liste/Custom con Sub cartelle/anno 2006</Cartella>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corpo>
</soapenv:Busta>

Un sacco di esempi e la discussione intorno a questo mi ha portato a credere che tutto quello che serve è stato <QueryOptions> e specificare un nome di cartella.  Per me, Io ho bisogno di entrambi avvolgerla all'interno <queryOptions> così come specificare un URL completo per il <Cartella> nodo.

Qui è l'installazione di AJAX jQuery:

$(documento).pronto(funzione() {
       var soapEnv =
           "<soapenv:Busta xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Elenco personalizzato con sottocartelle</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef Name =' titolo’ /> \
                              <FieldRef Name ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Cartella>http://demoserver1/Blogging Elenco di scenari/liste/Custom con Sub cartelle/anno 2006</Cartella> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corpo> \
           </soapenv:Busta>";

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Lists.asmx, GetList e "valore non può essere null”

Ho scoperto oggi che la GetList() Metodo in lists.asmx servizio Web deve essere chiamato con molta attenzione, o è incline a generare un misterioso "Valore non può essere null" eccezione (e che sta assumendo che si può andare oltre il messaggio di errore generico anche peggio, "Eccezione di tipo ' SoapServerException’ è stato gettato.")  In particolare, Ho trovato che è non può fornire qualsiasi tipo di prefisso del metodo GetList.  Il seguente frammento di jQuery illustra il punto:

image

Se lo fai, il servizio web risponde con "Valore non può essere null" come per questo violinista-fornito di trascrizione HTTP:

<?XML version = "1.0" Encoding = "utf-8"?>
  <sapone:Busta
     xmlns:sapone ="
http://schemas.xmlsoap.org/soap/envelope/"    
     xmlns:xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <sapone:Corpo>
    <sapone:Colpa>
      <FaultCode>sapone:Server</FaultCode>
      <FaultString>
        Eccezione di tipo ' SoapServerException’ è stato gettato.
      </FaultString>
      <dettaglio>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Valore non può essere null.
        </ErrorString>
      </dettaglio>
    </sapone:Colpa>
  </sapone:Corpo>
</sapone:Busta>

Naturalmente, è probabilmente non sarebbe aggiungere tale prefisso "s0" sul proprio, ma alcuni strumenti sono inclini a farlo (come eclissi).

Questo è ancora più confuso / frustrante perché altri metodi tollerano i prefissi.  Per esempio, il GetListCollection Metodo non mente se esso è stato preceduto da, anche con i prefissi di sciocchezze come "xyzzy":

image

Questo "valore non può essere null" sembra piuttosto comune con lists.asmx quindi speriamo questo aiuterà qualcuno fuori in futuro.

</fine>

Iscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin