Aplicativo iPhone interessante

image A equipe móvel aqui no Slalom desenvolveu uma aplicação iPad realmente fresco que combina o aumento de realidade virtual com capacidade off-line para fornecer o que pode ser o melhor localizador de metrô de Nova York e roteamento app disponível hoje.

Aqui está o site descrevendo o app mais detalhadamente: http://www.nycstationfinder.com/.

Eu não tenho quaisquer produtos Apple, então não posso testá-lo fora eu mesmo, mas parece muito legal. Eu estou esperando que eles transportá-lo sobre para Android em breve.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

MVP novamente

Microsoft re-awarded me com SharePoint MVP em 1º de Julho deste ano e é não menos emocionante do que era a primeira vez há quatro anos.

A Comunidade de SharePoint é apenas um lugar incrível.  Eu me lembro quando eu foi pela primeira vez para SharePoint pelo meu antigo empregador, Conchango.  Eu não estava feliz com isso Sorriso.  Eu estava vivendo em um mundo de BizTalk para um ano ou dois conduzem ao meu trabalho lá e antes que, trabalhou em outro mundo insular de pessoas e empresas que deram uma vida fora de Progress Software.  Eu digo "insular", porque o mundo do SharePoint é nada, mas!

Estou continuamente feliz e animado para fazer parte desta comunidade on-line bizarro de pessoas que se sentem estranhamente compelidas a blog infinitamente, desistir de seus sábados gratuitamente conferências, assombrar fóruns on-line, Construa todos os tipos de produtos gratuitos whacked fora de colocar-se no CodePlex e uma miríade de outros esforços de Comunidade de todas as formas e tamanhos. 

Eu não sei o que é sobre este produto que inspira tal voluntariado e a imersão, mas eu espero que ele nunca alterações.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Deixe brilhando exemplos Lead the Way a crescente adoção de SharePoint

Minha primeira entrada no blog BrightStarr "pura" foi publicada hoje.  Aqui está um teaser:

Tem havido muita conversa sobre as Internets da tarde sobre o tema da adopção de SharePoint e especialmente a falta dela. Ninguém quer ir para todos os problemas de criação de uma infra-estrutura de segurança e fazenda, participar de oficinas, reunindo uma aparência snazzy, trabalhar fora uma arquitetura de informações sólidas de rocha que pode suportar as vicissitudes da empresa re-orgs e finalmente, um lançamento cheio de fanfarra apenas para descobrir três meses post ativação que menos de 50% da empresa os funcionários estão usando o SharePoint e a maioria deles está usando para substituir os antigos servidores de arquivos de rede ("o s:\ unidade").

Bala de prata (ou único blog post) vai resolver esse problema. No entanto, Há muitas coisas que você pode fazer para reduzir o risco de um portal SharePoint anêmico. Uma tal técnica é o "Shining exemplo padrão."

Gostaria muito de saber sobre outras estratégias de adoção do SharePoint que você gostaria de compartilhar.  Se você compartilhar, por favor, deixe um comentário no blog BrightStarr.

Leia tudo aqui: http://www.brightstarr.com/US/Pages/blog-view.aspx?BlogID=52

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

"Acesso negado” para Default. aspx em um SharePoint 2010 Subsite

Um dos meus clientes passou ao vivo com seu SharePoint 2010 ambiente hoje.  Descobrimos que um determinado grupo de usuários não poderia acessar sua home page padrão.  SharePoint respondeu com "Acesso negado" e o habitual "logon como outro usuário" ou "solicitação de acesso" resposta. 

Quando usamos a função "Verificar acesso" bacana confirmou que os usuários finais realmente teve acesso.  Ainda, eles não poderiam obter a página.

Eu segui um monte de estradas para diversos impasses até que eu decidi comparar as web parts na página quebrada contra uma página de trabalho semelhantes.  Eu fiz isso colocando a página no modo de manutenção, adicionando"?conteúdo = 1 "para a página. Assim, parecia que "http://Server/subsite/subsite/Default.aspx?conteúdo = 1 ". 

Isso me mostrou duas web parts denominados "Erro" com uma descrição como "Erro" na página quebrada.  Eu não acho que ter uma tampa de tela no momento.

Eu removi-los e que o problema foi resolvido.

Eu vi uma pergunta como essa vêm até em fóruns no passado e eu era muito cético sobre a insistência do poster que ele tinha segurança definida corretamente.  Eu * sei * eu tinha segurança configurar direito Sorriso  Próxima vez, Eu vou ser mais aberta e menos cético.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Amostras de XSLT e jQuery

Eu tenho feito muita de XSLT e jQuery e pensei que iria partilhar alguns trechos que outros podem ser úteis no futuro.

Exemplo 1: Emit simples do JavaScript / jQuery em XSLT:

<XSL:jogo de modelo = "algo" XML:Space = "preserve">

  <!– Espaço em branco fora da consulta amigável filtra campo oculto –>
  <script type = "text/javascript">
    $(documento).pronto(função(){
      $("#QueryFriendlyFilters").Val("vazio");
    });
  </script>

</XSL:modelo>

Esse bit emite algum JavaScript que aguarda concluir Carregando a página (devido a $(documento).pronto(…)) e, em seguida, define o valor de um campo oculto chamado QueryFriendlyFilters para o valor literal "vazio".

Exemplo 2: Utilização <XSL:se> para verificar a "maior que",  "menor que", etc.

<XSL:jogo de modelo = "algo" XML:Space = "preserve">

  <div id = "fdcAllFilters">
 
    <XSL:se test="@Count>0">
      <span class = "fdcFilterLabel">Filtros atuais:</extensão>
    </XSL:se>

    <!– mais coisas acontece aqui. –>

</XSL:modelo>

O trecho acima verifica se um atributo chamado "Contar" do elemento "algo" é maior que zero.  O XML por trás disto seria algo como:”

<algo Count = "5" />

Exemplo 3: Percorrer todos os elementos, intercalando chamadas de jQuery.

<!– Iterar em todos os filtros e exibir o correto  ligações. –>
<XSL:for-each selecione = "UserFilter">

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

  <span class = "fdcFilterLabel"><XSL:valor de select="@FilterValue"/></extensão>

  <script type = "text/javascript">

    $(documento).pronto(função(){
        <XSL:texto><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:texto>\"<XSL:valor de select="@FilterValue"/>\"<XSL:texto><![CDATA["));]]></XSL:texto>
    });

  </script>

</XSL:for-each>

O trecho acima é a mais complexa e pode haver maneiras mais fácil de fazê-lo.

O XML por trás disso fica mais ou menos assim:

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

Este trecho é iterar através de <UserFilter> nós. 

Ele primeiro emite uma âncora tag que quando clicado chama uma função JavaScript que já está na página, "mySubmitPage" e passa o valor de um atributo o <UserFilter> nó chamado "ID". 

Ele, em seguida, emite algum jQuery que aguarda carregar a página.  Esse jQuery atualiza um campo oculto chamado "QueryFriendlyFilters", adicionando o valor do atributo FilterValue.  Observe o louco <XSL:texto> and <![CDATA[ … ]]> coisas.

É isso, esperança que aquilo ajuda!

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

PerformancePoint e erro 33494

Um dos meus clientes chamados hoje quando seu ambiente do PerformancePoint (no SharePoint 2010) quebrou.  Um dos servidores de aplicativos do farm foi ficando sem espaço em disco.  Embora abordando que, o cliente foi desinstalado "too much" e o material PP todos parou de funcionar.  Várias web parts mostraria "Ocorreu um erro inesperado. Erro 33494. Detalhes adicionais foram registrados em log para o administrador":

image

Eu olhei para o erro e não encontrei nada específico para "Erro 33494" mas este fóruns MSDN postagem foi útil: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Achei ADOMD.NET aqui como um componente do SQL Server 2008 Pacote de recursos: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(Clique para ampliar)

Eu carregar e instalado que e aquilo afixado tudo.

Eu acho que este é um tipo muito excêntrico de erro, mas se você batê-lo, você pelo menos você tem uma opção.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Lists. asmx, GetListItems e pastas

Eu estava fazendo uma pesquisa para alguém hoje em torno de serviço da web list.asmx fornecido como parte do SharePoint 2010 (e versões anteriores).  Ela foi capaz de obter os itens da lista na pasta raiz (incluindo os nomes das subpastas), mas não poderia obter itens de subpastas.  Eu fiz alguns olhando em volta na Internet e é uma questão surpreendentemente comum.  Ainda, Eu não poderia obter uma boa resposta para a pergunta simples, "se eu sei que a pasta, Como faço para obter os itens na pasta?”  Para ser honesto, Eu não tentei tudo o que dura desde que eu tenho quis figura esta um fora em meu próprio por um tempo Sorriso.

Para configurá-lo, Eu criei um site chamado "Blogging cenários" e uma lista personalizada denominada "Lista com Sub pastas personalizadas".  Em seguida, criei pastas com o nome:

  • Ano 2005
  • Ano 2006
  • Ano 2007

Eu adicionei alguns itens para a pasta "Ano 2006".  Isso é o que parece:

image

Meu amigo não é escrever código c# mas sim usando Java, assim que o envelope SOAP foi o que ela realmente precisava.  Para obter que, Eu escrevi um pouco de jQuery e então usado fiddler para começar a conversa de HTTP real.

Aqui está o jQuery pertinente (Eu copiei o código para baixo abaixo se você quiser copiar/colar):

image

Eles primeiro chave deve incluir ambos um <queryOptions> and <QueryOptions> nó.  A segunda chave é que o <Pasta> nó é uma URL para que o cliente tem acesso.

Pode haver outras maneiras de obter esta, mas isso funcionou bem para mim quando usando jQuery.

Aqui está o envelope SOAP para o acima:

<soapenv:Envelope xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’>                
  <soapenv:Corpo>
    <GetListItems xmlns =’
http://schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Lista personalizada com Sub pastas</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef FieldRef nome =' título’ />
          <FieldRef FieldRef nome ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Pasta>
http://demoserver1/Blogs Lista de cenários/listas/Custom com Sub pastas/ano 2006</Pasta>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Corpo>
</soapenv:Envelope>

Um monte de exemplos e discussão em torno deste levou-me a crer que era tudo que eu preciso <QueryOptions> e especifique um nome de pasta.  Para mim, Eu preciso tanto para envolvê-lo dentro <queryOptions> assim como especificar um URL totalmente qualificado para o <Pasta> nó.

Aqui está o programa de configuração do AJAX jQuery:

$(documento).pronto(função() {
       var soapEnv =
           "<soapenv:Envelope xmlns:soapenv =’http://schemas.xmlsoap.org/soap/envelope/’> \
               <soapenv:Corpo> \
                    <GetListItems xmlns =’http://schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Lista personalizada com Sub pastas</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef FieldRef nome =' título’ /> \
                              <FieldRef FieldRef nome ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Pasta>http://demoserver1/Blogging Lista de cenários/listas/Custom com Sub pastas/ano 2006</Pasta> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Corpo> \
           </soapenv:Envelope>";

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Padrões de fluxo de trabalho do SPD, Dicas e truques

Eu dei minha apresentação hoje no SharePoint Fest em Denver. Aqui é a própria apresentação PowerPoint: http://www.mstechblogs.com/paul/wp-content/uploads/2011/05/SharePointFest.pptx

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Lists. asmx, GetList e "valor não pode ser nulo”

Descobri hoje que o GetList() Método em lists. asmx serviço da Web tem de ser chamado com muito cuidado ou é propenso ao lançar uma misteriosa exceção "Valor não pode ser nulo" (e que está assumindo que você pode passar a mensagem de erro genérico ainda pior, "Exceção do tipo ' Microsoft.SharePoint.SoapServer.SoapServerException’ foi lançada.")  Especificamente, Achei que você não pode fornecer qualquer tipo de prefixo sobre o método GetList.  O seguinte trecho de jQuery ilustra o ponto:

image

Se você fizer isso, o serviço web responde com "Valor não pode ser nulo" como por isso Fiddler-desde transcrição HTTP:

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

  <sabão:Corpo>
    <sabão:Falhas>
      <FaultCode>sabão:Servidor</FaultCode>
      <FaultString>
        Exceção do tipo ' Microsoft.SharePoint.SoapServer.SoapServerException’ foi lançada.
      </FaultString>
      <Detalhes>
        <ErrorString xmlns ="
http://schemas.Microsoft.com/SharePoint/SOAP/">
Valor não pode ser nulo.
        </ErrorString>
      </Detalhes>
    </sabão:Falhas>
  </sabão:Corpo>
</sabão:Envelope>

É claro, Você provavelmente não iria adicionar o prefixo "s0" em seu próprio país, mas algumas ferramentas são propensas a fazê-lo (como o Eclipse).

Isto é tanto mais confuso / frustrante porque outros métodos toleram prefixos.  Por exemplo, o GetListCollection Método não se importa se for prefixado, mesmo com prefixos de disparates como "xyzzy":

image

Este "valor não pode ser nulo" parece bastante comum com lists. asmx tão esperançosamente isto ajudará alguém fora no futuro.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin