Sábado, 19 de Julho de 2008

Deus está nos detalhes

"An unexpected error occured processing your request. Check the logs
for details and correct the problem" ou em português "Erro inesperado ao processar sua solicitação. Verifique os logs para obter detalhes e corrija o problema". Estes erros do SharePoint são mesmo sensacionais em sua precisão e detalhamento.




Encontrei este erro no leitor de RSS nativo do SharePoint.



Parece obvio que, em se tratando de um RSS externo, o problema esteja na conexão do SharePoint com a internet. Ou esta conexão não existe por alguma restrição de rede ou precisa ser configurada para ser feita através de um proxy. Este caso era para ser configurado em um proxy.
A primeira ação é configurar a tag "Proxy" no web.config da aplicação da seguinte forma:

sussystemdefault: true ou false. Aqui é possível indicar se o SharePoint vai usar o proxy padrão da conexão de rede da máquina. sugiro deixar este falor como "false" para configurar de forma explicita a conexão com o proxy, evitando assim parada por alteração na configuração da maquina.

proxyadress: Endereço do servidor de proxy com o protocolo (http). Exemplo "http://meuproxy". Perdi bastante tempo nisto por falta do protocolo no valor do parametro.

bypassonlocal: dispensa comentarios. No meu caso foi "true".

Exemplo de tag configurada:

Quinta-feira, 27 de Março de 2008

Desenvolver WebParts remotamente

Um problema muito comum quando se desenvolve WebParts para MOSS e WSS é a necessidade de ter um ou outro instalado localmente a fim de fazer o deploy automatizado e debug da aplicação, além de utilizar corretamente as referencias Microsoft. Além de exigir um hardware mais robusto, estas instalações implicam em licença extra. Seja de MOSS, seja de Windows Server 2003 para WSS.

Diante disto, segue um roteiro que pode auxiliar o desenvolvimento, deploy e debug remotos, utilizando VS2005 e Windows XP sem WSS ou MOSS:

Procedimento para desenvolvimento local em WinXP
- Criar a chave [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0]. Criar o registro “Sharepoint” com o valor “Installed” (aqui temos uma pequena "gambiarra" a fim de possibilitar a instalação do VSeWSS);
- Instalar o VSeWSS (Extension para o VS2005 com os templates padrão de MOSS e WSS);
- Copiar as DLLs do SharePoint para dentro da pasta BIN do projeto e refazer as referências dentro do projeto;

Procedimento para deploy remoto
- Fazer o deploy da WebPart no servidor manualmente na primeira vez;
- Retirar a DLL do GAC do servidor;
- Configurar o Output Path do projeto para a pasta BIN da aplicação no servidor, através de compartilhamento de rede.



Procedimento para debug remoto
- Habilitar o Remote Debugger no servidor
- Adicionar processo ao Debug do VS na máquina do desenvolvedor
- Configurar o Qualifier com o endereço “DOMINIO\Usuario@Servidor”
- Na opção “Attach to”, selecionar “Managed” e “Native”
- Selecionar o processo w3wp.exe da aplicação que deseja fazer debug (PID correto).



Procedimento para descobrir o processo w3wp.exe correto
- Na linha de comando do servidor, ir até a pasta Windows\system32
- Executar o comando “cscript iisapp.vbs”.
- Será apresentada na tela a lista das aplicações web com os PID e aplicação / porta.


Pessoal, espero que esta informação lhes seja tão util quanto foi pra mim. Duvidas, comentem... Abraço

Segunda-feira, 17 de Março de 2008

Quando o ForeFront é o inimigo


Todo mundo que trabalha com SharePoint conhece ou já ouviu falar do ForeFront (http://www.microsoft.com/forefront/), antivírus que, entre outras coisas, se integra ao SharePoint varrendo todos os arquivos em busca de vírus. Este sistema da Microsoft utiliza diversas engines de busca que são atualizadas automaticamente.
Tudo isto funciona bem: o ForeFront analisa os arquivos que são enviados antes de armazená-los e analisa também os arquivos que já estão na tabela AllDocs do banco de dados de conteúdo do Sharepoint. Esta segunda ação é feita periodicamente.
O problema é quando esta verificação não funciona corretamente. A tabela AllDocs do banco de dados Content do SharePoint apresenta os campos abaixo (para maior informação sobre os campos da tabela AllDocs, acesso o endereço http://msdn2.microsoft.com/en-us/library/ms998690.aspx):
VirusVendorID – ID do antivírus.
VirusStatus – Campo inteiro que mostra qual o status atual do arquivo. Este campo é manipulado pelo ForeFront para marcar quais arquivos estão sendo verificados, quais arquivos estão infectados e quais arquivos estão limpos de vírus. O estado saudável para este campo é NULL que indica que o arquivo está livre de vírus e pronto para ser acessado pelo SharePoint.
VirusInfo – Campo de texto que armazena as informações sobre a verificação de vírus do arquivo. O estado natural para este campo também é NULL.
O problema está justamente nas verificações que não são finalizadas. Alguma indisponibilidade do serviço pode fazer, por exemplo, com que o ForeFront não atualize o campo VirusStatus para NULL e mantenha o valor “0”, que identifica arquivos que estão sendo verificados. Este status deixa o arquivo indisponível para uso do SharePoint e, conseqüentemente, resulta em problemas no site. Em geral, o erro é de permissão de acesso ou o erro HRESULT: 0x80041051.
Abaixo um exemplo de status que causa indisponibilidade do sistema:




Neste caso, o que causou o problema foi um estouro de limite de tempo de verificação, ocasionando indisponibilidade da Default.aspx, entre outros arquivos.

Corrigindo o problema
Como medida de emergência, desative o ForeFront e execute o script abaixo:
UPDATE AllDocs
SET VirusStatus = NULL,
VirusInfo = NULL
WHERE VirusStatus>0 AND VirusStatus IS NOT NULL
Em seguida, é necessário identificar o que está originando o problema no ForeFront para poder novamente ativá-lo.

Dog Food

Pessoal,

Apenas por curiosidade: como já é conhecido, a Microsoft usa o TFS para controlar o código diversos de seus de produtos. Esta prática de "provar do próprio veneneno" é conhecida como "Dog Food" (comida de cachorro, em tradução livre). Ha pouco tomei conhecimento de alguns números da base TFS da Microsoft. São eles:

-> Projetos no Team Foundation Server: 1.355 (taxa de crescimento de >100 novos projetos/mês)

-> Usuários Ativos: 8.452 (grupos que já usam TFS: MSIT, DevDiv, SQL, Office, Windows, MSCOM e Windows Live/MSN)

-> Work Items: 1.254.266

->Arquivos de Código-Fonte: 27.311.195 (isso mesmo, mais de 27 milhões de arquivos-fonte!)

Os números foram divuldagos por Joe Schwetz, Group Manager do time de TFS.

Chegou o Power Tools 2008 (até que enfim)


Visual Studio Team System 2008 Team Foundation Server Power Tools. Nome comprido para uma ferramenta com um monte de funcionalidades. Mais conhecido simplesmente por Power Tools, a versão das ferramentas adicionais para o novo Team Fundation Server estava sendo esperada ansiosamente.

Em resumo, o Power Tools do TFS é um conjunto de ferramentas que estende as funcionalidades do TFS e "tapa alguns buracos". Esta nova versão, além de trazer as funcionalidades já disponíveis no Porwer Tools 2005, traz algumas novidades:

Busca no Source control: permite, através do menu "Team Explorer", localizar arquivos e pastas no Source Control.

Quick Label: Interface que facilita a criação de labels a partir de uma seleção de arquivos e pastas.

Notificação de Builds: acompanhamento do status das builds através do Windows task bar.

Comandos adicionais no TFPT.EXE: tweakui, para administração das configurações de conexão à servidores TFS, destroyWI, para excluir permanentemente um work item e destroyWITD, para excluir permanentemente um Work Item Type Definition.

Além destas novas funcionalidades, o Power Tools 2008, conta com as antigas funcionalidades do Power Tools 2005:

Team Foundation Server Power Tool Commands: diversos itens de administração disponíveis por linha de comando.

Process Template Editor: Editor amigável para templates de processos. Sem este editor, os templates precisam ser editados diretamente nos XMLs que compõem o template

Check-in Police Pack: conjunto de polices extras para serem aplicadas ao check-in do source control.

Team Foundation Server Best Practices Analyzer: Ferramenta para analisar, entre outras coisas, para verificar se o TFS está devidamente configurado, se os recursos de hardware são suficientes...

Work Item Templates: Ajuda a gerenciar os Work Item Templates e automatizar a criação de WITD (Work Item Type Definition).

O restante, ainda estamos testando :D

Abraço!!

iFilter para PDF em 64-bit

Os iFilters contém informações utilizadas pelo indexadores de busca da Microsoft para saber como manipular e interpretar os diferentes tipos de arquivos disponíveis. Este serviço de indexação é utilizado por diversos sistemas da Microsoft. Por padrão, os indexadores Microsoft (Enterprise Search, Desktop Search) já tem instruções para indexar arquivos Office, HTML, Arquivos Texto, XML, entre outros.

Alguns tipos de arquivos, porém, não são reconhecidos de imediato. Para resolver este problema, é possível instalar iFilters personalizados.
Um problema bastante comum é necessitar indexar arquivos PDF. Até pouco tempo atrás, quando fosse necessário indexar este tipo de arquivo, havia a restrição de se trabalhar com a plataforma de 32-bit, já que o único iFilter disponibilizado pela Adobe trabalhava apenas nesta plataforma.

A Foxit, no entanto, disponibilizou um iFilter para PDF adaptado para a plataforma 64-bit (http://www.foxitsoftware.com/pdf/ifilter/). Vale lembrar que este produto não tem suporte da Adobe. A facilidade é paga e pode ser adquirida diretamente no site do fabricante.

Não mexa no que está funcionando


Semana passada, passei um aperto em um cliente durante uma POC (Proof of Concept) depois de um gesto simples e aparentemente fora que qualquer suspeita.
Depois de ter o Sharepoint instalado com configuração expansível para Farms, o serviço de indexação configurado e indexando informações de mais de 13 sites diferentes, estava me preparando para ir embora às 20h30min de uma véspera de feriado quando observei que o servidor estava com pouco espaço disponível na unidade "C". Apenas por "capricho", resolvi executar uma limpeza de disco do Windows. Aquele que já vem instalado com o Windows nas ferramentas do sistema. Optei por ele justamente para não ter problemas que poderiam ocorrem fazendo uma limpeza manual.
Após a limpeza um último teste antes de ir embora, apenas para ir com a consciência tranqüila... de tranqüilo, nem a consciência. Pronto! Nada mais funcionava. Nem busca, nem indexação, nada!
Depois de apanhar um pouco, desespero, a certeza de ter perdido o feriado prolongado, resolvi fazer o básico: consultar o log da aplicação.
O assistente para limpeza de disco havia acabado de apagar arquivos temporários usados pelo serviço de indexação. Por algum motivo, a ferramenta de limpeza não sabia que aqueles arquivos eram importantes. Nem o serviço de indexação do Sharepoint se preocupou em bloquear tais arquivos com extensão ".tmp".
Para solucionar o problema, bastou parar o serviço de indexação através da ferramenta de administração do Sharepoint e iniciá-lo novamente.
Resumo: Não execute a ferramenta de limpeza de disco do Windows em um servidor com serviço de indexação do Sharepoint em execução. Ou o bom e velho "não mexa no que está funcionando.
;)

Reduzindo custos com pesquisas usando MOSS 2007


Em maio de 2006 o IDC (www.idc.com) já apontava em seu estudo intitulado “The Hidden Cost of Information Work” o elevado custo que a busca por informações representa para as organizações. Segundo este estudo, um único funcionário gasta em média mais de 9 horas semanais em busca de informações específicas, figurando esta atividade em quarto lugar no ranking das que mais tomam tempo das pessoas nas organizações. Além disto, outras atividades relacionadas à busca por informações também são elencadas pela pesquisa: Consolidação dos múltiplos formatos de um mesmo documento, buscas infrutíferas, recriação de conteúdo não encontrado, publicação do mesmo documento em diferentes plataformas, controle de versões, entre outras. Somando a isto o crescimento exponencial na quantidade de informação produzida ano a ano, não é difícil imaginar que os custos com a busca por informações tende a aumentar.

Tudo isto, torna os requisitos de pesquisa em soluções de gerenciamento de conteúdo tão importantes quanto outros requisitos, sejam eles funcionais ou não. Entretanto, diversos são os problemas que tornam um sistema de pesquisa ineficiente para atenuar os problemas provenientes do excesso de informação.

Pesquisas restritas
Aplicativos capazes de realizar pesquisas apenas em seus próprios dados, pressupõem que os usuários ao menos saibam em que ponto devam iniciar suas pesquisas. Ou seja, o usuário precisa ao menos ter o conhecimento do sistema onde a informação está armazenada para, a partir daí, realizar a sua busca.

Indexação restrita
Ainda que um sistema de busca tenha acesso aos diversos sistemas envolvidos, também é necessário assegurar que todos os dados pertinentes estejam indexados e, desta forma, disponíveis às soluções de pesquisa. O usuário deve ser capaz de pesquisar e encontrar a informação necessária independentemente do local ou formato desta informação.

Classificação insatisfatória dos resultados da pesquisa
Os resultados mais relevantes para uma pesquisa devem estar disponíveis logo nos primeiros ítens apresentados pelo resultado da pesquisa. É necessário um sistema que classifique os conteúdos de forma eficaz para garantir uma boa experiência de busca ao usuário.

Pesquisa Web x Pesquisa Corporativa
A experiência do usuário com as pesquisas disponíveis na internet exige que os projetos de solução de pesquisa corporativa apresentem, no mínimo, os recursos já disponíveis por estes sistemas de busca. Além disto, existem fatores extras que devem ser considerados quando se trata de pesquisas corporativas:
Desempenho da pesquisa – quando se trata de ambiente corporativo, é importantíssimo considerar o tempo despedido para obter as informações necessárias.
Segurança e privacidade dos dados – Em ambientes corporativos, é necessário que a informação esteja acessível apenas para o publico correto. A confidencialidade da informação é um requisito importante nestes ambientes.
Escalabilidade – Os recursos de pesquisa devem estar aptos a acompanhar o crescimento da organização.

Flexibilidade – O resultado da pesquisa deve estar disponível de forma flexível para a manipulação.
Métricas – Constantes avaliações são necessárias para o aprimoramento do sistema de pesquisa. Desta forma é possível alcançar maior eficácia nos resultados apresentados.

Como Sharepoint Enterprise Search pode auxiliar
O Sharepoint Enterprise Search apresenta diversos mecanismos para implementar soluções eficazes de buscas corporativas.
Pesquisas em diversas fontes de dados
Além de pesquisar seus próprios dados e documentos gerenciados, o Microsoft Sharepoint é capaz de indexar informações em outros sistemas utilizando diversos protocolos:

HTTP – indexação de sites externos.

Exchange – indexação de pastas públicas do Exchange.

Arquivos compartilhados – indexação de arquivos localizados em compartilhamentos de rede.

Lotus Notes – Indexação de dados armazenados em sistemas Lotus Notes.

BDC (Business Data Catalog) – Indexação de sistemas mapeados no SharePoint como catálogos de dados relacionais externos.

Além disto, é possível desenvolver protocolos personalizados para comunicação com o Sharepoint.

Indexação abrangente
O Enterprise Search utiliza protocolos chamados de iFilters para manipular e indexar os diversos tipos de arquivos disponíveis para consulta. Para garantir flexibilidade na abrangência de indexação, além de disponibilizar iFilters padrão, é possível instalar novos iFilters para manipulação de arquivos proprietários e disponibilizados pelos seus fabricantes. Além disto, é possível desenvolver iFilters customizados. Por padrão, o Enterprise Search é capaz de indexar bases de dados relacionais, documentos Microsoft Office e arquivos HTML. A Adobe disponibiliza iFilter para indexação de arquivos do tipo PDF para a plataforma 32 bits.
Aprimorando o resultado de pesquisas

O Enterprise Search dispõe de métodos eficientes para a classificação dos resultados de uma pesquisa, baseados nas propriedades dos documentos e hierarquia do site. Em geral, não é necessário alterar tais métodos, mas é possível customizar a forma como estes resultados são classificados. Além disto, o Enterprise Search dispõe de ferramentas para aprimorar esta classificação e disponibilizar resultados satisfatórios:


Best Bets – Capacidade de cadastrar os melhores resultados para determinados critérios de busca.

Dicionário de sinônimos – É possível personalizar o dicionário de sinônimos, atribuindo significado aos termos pesquisados e melhorando a qualidade dos resultados.

Níveis prioritários – Capacidade de indicar os níveis hierárquicos que contêm as informações mais relevantes para as buscas realizadas.

Sugestão de ortografia – O Sharepoint é capaz de sugerir outra grafia para palavras digitadas incorretamente, baseada no corretor ortográfico da ferramenta.

Configuração de hierarquia baseada no tipo de arquivo – Capacidade de indicar os arquivos mais relevantes para os resultados das pesquisas.
Robustez e Escalabilidade

Através da configuração de clusters e farms é possível projetar soluções de alto desempenho para organizações de todos os portes. A arquitetura baseada em papéis definidos na solução de pesquisa permite distribuir as diversas tarefas envolvidas no serviço de pesquisa em diferentes servidores, permitindo flexibilidade e escalabilidade.

Acessibilidade dos resultados
A informação disponibilizada de diversos formatos se adapta aos usos freqüentes necessários dentro de uma organização.

Feeds RSS – O usuário pode acompanhar a atualização dos resultados de suas pesquisas através de qualquer leitor de RSS, como o próprio Outlook.
Alertas por e-mail – É possível se cadastrar para receber atualizações no resultado de pesquisas por e-mail.

Exportação dos dados – O Sharepoint dispõe de ferramentas para a exportação dos resultados das pesquisas para documentos Microsoft Office.
Ferramentas para customização

É possível customizar as buscas do Enterprise Search para se adaptar a sistemas externos de diversas formas.

Chamadas HTTP – Através de parâmetros padrão, é possível fazer chamadas HTTP do tipo GET à ferramenta de busca do Sharepoint a partir de sistemas externos ou webparts customizadas.

Customização da interface de busca – É possível customizar as interfaces de consulta e resultados de busca através de editores de arquivos XSL.

Extensão do sistema de busca – A estrutura de objetos do mecanismo de busca está disponível para a construção de webparts customizadas que estendam as ferramentas de busca padrão.

Busca de talentos
Em um ambiente organizacional, pode ser importante encontrar as pessoas através de capacidades e perfis. O Sharepoint permite customizar o cadastro de usuário criando novas propriedades, importando informações de usuários de diversas fontes (inclusive servidores de domínio) de forma sistemática, além de disponibilizar dados referentes à capacidade e atividades desenvolvidas dentro da organização.

Conclusão
O SharePoint Enterprise Search se apresenta como uma solução eficiente para sistemas de busca complexos e escaláveis a fim de prover soluções em ambientes complexos de gerenciamento de informações.

Coffee-break sem culpa

Pessoal, para quem ainda não conhece, eu apresento uma feature sensacional do site Microsoft TechNet: Os “Virtual Labs”!
Os Virtual Labs são módulos para execução dos “Labs” dos cursos oficiais Microsoft. Quem já fez algum destes cursos, sabe do que estou falando: são aqueles exercícios que metade da turma nem começa porque vai pro coffee-break ou sai mais cedo e a outra metade da turma começa e não termina porque o tempo excede o previsto. Agora temos uma segunda chance para fazer os tais Labs e, o melhor de tudo, gratuitamente.
A estrutura é simples: são laboratórios controlados por tempo, categorizados por produto ou por assunto (por exemplo, “Exchange Server”). Tudo é feito via browser, instalando um activeX. Todos os exercícios dispostos no curso oficial estão ali, disponíveis em uma barra de tarefas à direita. Acima, um menu identificador do laboratório, tempo disponível e outras informações. No miolo central, uma máquina virtual com o ambiente necessário para o teste já todo configurado.
Além de executar os exercícios, esta ferramenta é útil para execução de testes sem necessidade de instalação do produto ou downloads intermináveis. Utilizem sem dó ;)
Link: http://technet.microsoft.com/pt-br/bb467605.aspx





Exemplo: Um Virtual Lab de “Search Administration and Customization in Microsoft Office Sharepoint Server 2007”