Windows 10 – Technical Preview
Olá SharePointers,
Para quem não está muito antenado com as novidades, hoje (01/10) foi liberado para o público em geral os testes do Windows 10 – Technical Preview. Para quem quiser fazer o download, está disponível aqui: http://windows.microsoft.com/pt-br/windows/preview-download
ATENÇÃO: Para quem quiser instalar, lembre-se de fazer um backup e pontos de restauração para voltar a máquina ao estado original.
Como um “Early Adopter”, instalei em minha máquina…. Confiram o resultado:
A tela de instalação é semelhante à do Windows 8.1
Achei bem interessante à interligação com o OneDrive. Tudo nativo, sem instalar nenhum utilitário.
Esse é o seu desktop, logo após a instalação:
Menu Iniciar
Janelas sem bordas, menu iniciar expandido:
Suporte à multiplos desktops
E o mais importante…… kkkk CTRL+C e CTRL+V dentro do command e do powershell 😀
O que acharam?
MVP Showcast – 2014
Olá SharePointers,
Anualmente acontece uma série de Webcasts realizados por MVPs brasileiros que abordam assuntos diversos de suas especialidades. São 3 trilhas, infra-estrutura, desenvolvimento e produtividade.
O conteúdo das palestras são bem interessantes, vale a pena conferir. O site do evento é: https://mvpshowcast.azurewebsites.net.
Eu participarei desse evento fazendo um webcast junto com o Carlos Citrangulo falando sobre produtividade com o SharePoint 2013. Inscrevam-se: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032594716&Culture=pt-BR&community=0
Abraços!
SharePoint 2013: Shredded storage
Olá SharePointers,
Hoje vou falar um pouco sobre Shredded storage e como o SharePoint se comporta utilizando esse recurso.
Antes de mais nada, vamos ao significado do verbo “Shred” que significa cortar, despedaçar, retalhar. Trazendo para o mundo do SharePoint, Shredded storage é uma grande melhoria na gestão de objetos binários (os “BLOBs” – que basicamente são arquivos como Planilhas do Excel, Documentos do Word, Vídeos, etc.).
Quem trabalha com o SharePoint desde as versões anteriores (pode ser a 2010 :D) sabe que versionamento, por exemplo, era um grande problema quando o ponto de vista era armazenamento. A cada alteração no documento, o SharePoint realizava uma cópia completa do arquivo e armazenava isso no banco de dados.
Agora, imaginem o seguinte cenário: Supondo que em arquivo de 10MB seja alterado 5 vezes por dia, logo, consumirá 50MB de espaço por dia.
É importante ressaltar que os softwares client da Microsoft (leia: o Pacote Office – Word, Excel, PowerPoint, etc.) já possuiam a tecnologia para que quando um arquivo aberto do SharePoint fosse salvo, somente o diferencial era enviado pela rede (over-the-wire, de volta ao SharePoint) e o SharePoint fazia o trabalho de fazer um “Merge” do arquivo original com o diferencial e salvar esse arquivo inteiro novamente.
O que mudou?
Com o SharePoint 2013 e a criação do Shredded storage (que utiliza o Cobalt –Sincronização de arquivos via SOAP – HTTP), esse BLOB que antes era armazenado em 1 linha do banco de dados SQL Server, agora é dividido em várias linhas. Quando um usuário faz a alteração em algum arquivo, o SharePoint é capaz de identificar qual registro foi alterado e alterar somente esse pedaço – bem reduzido – do arquivo, reduzindo o overhead de utilização de disco, estimada em 2x.
Isso funciona somente com arquivos do Office?
Não. A grande sacada é que funciona com qualquer tipo de arquivo. Não precisa ser do Office e nem muito menos a versão mais atual do Office. Qualquer arquivo se beneficiará dessa tecnologia.
Como ficou o armazenamento do BLOB?
Até a versão 2010, os documentos eram armazenados da seguinte forma: os metadados (propriedades do arquivo e do formato) e o stream contendo a representação binária do arquivo.
Com o SharePoint 2013, isso mudou! Temos uma tabela adicional no banco de dados de conteúdo (DocStreams) para armazenar cada pedaço do BLOB do arquivo e, ainda, temos um cache para otimizar a leitura do arquivo.
Para mais detalhes sobre o assunto, consultem as referências abaixo:
http://www.microsoft.com/en-us/download/details.aspx?id=39719
Office 365 + Salesforce
Olá SharePointers,
Para quem ainda não sabe, a Microsoft investe cada vez mais em integração de forma a consolidar a sua plataforma de nuvem como sólida e líder de mercado.
A plataforma Office 365 (SharePoint, Exchange, Lync e outros produtos – http://office.microsoft.com/en-001/business/what-is-office-365-for-business-FX102997580.aspx) assume um papel interessante no mercado e sua oferta e funcionalidades fazem com que o produto seja cada vez mais lúder de mercado.
Magic Quadrant for Social Software in the Workplace
Além disso, vimos “recentemente” a aquisição e integração do Yammer com essa plataforma, adicionando recursos ainda mais intereressantes para o usuário final.
Não bastasse isso, foi anunciado há algum tempo uma integração forte com o Salesforce, vejam o anúncio aqui: http://www.microsoft.com/en-us/news/press/2014/may14/05-29mayannouncementpr.aspx.
Essa notícia não é propriamente nova, mas como muitos desconhecem achei que valia a pena escrever um post e comentar sobre o assunto.
O que vocês acham disso?
Abraços 🙂
SharePoint Apps: Como utilizar o People Picker?
Olá SharePointers,
Hoje vou falar sobre como utilizar o People Picker quando estamos desenvolvendo uma app para SharePoint.
O primeiro passo, é carregar os scripts que serão utilizados (ver imagem abaixo) e colocar a div quer será utilizada para criação do controle dinamicamente.
Após a criação dos controles acima, basta colocar o código abaixo em um arquivo .js e adicioná-lo a página como referência que o People Picker funcionará perfeitamente.
// Run your custom code when the DOM is ready. $(document).ready(function () { // Specify the unique ID of the DOM element where the // picker will render. initializePeoplePicker('peoplePickerDiv'); }); // Render and initialize the client-side People Picker. function initializePeoplePicker(peoplePickerElementId) { // Create a schema to store picker properties, and set the properties. var schema = {}; schema['PrincipalAccountType'] = 'User,DL,SecGroup,SPGroup'; schema['SearchPrincipalSource'] = 15; schema['ResolvePrincipalSource'] = 15; schema['AllowMultipleValues'] = true; schema['MaximumEntitySuggestions'] = 50; schema['Width'] = '280px'; // Render and initialize the picker. // Pass the ID of the DOM element that contains the picker, an array of initial // PickerEntity objects to set the picker value, and a schema that defines // picker properties. this.SPClientPeoplePicker_InitStandaloneControlWrapper(peoplePickerElementId, null, schema); } // Query the picker for user information. function getUserInfo() { // Get the people picker object from the page. var peoplePicker = this.SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv_TopSpan; // Get information about all users. var users = peoplePicker.GetAllUserInfo(); var userInfo = ''; for (var i = 0; i < users.length; i++) { var user = users[i]; for (var userProperty in user) { userInfo += userProperty + ': ' + user[userProperty] + '<br>'; } } $('#resolvedUsers').html(userInfo); // Get user keys. var keys = peoplePicker.GetAllUserKeys(); $('#userKeys').html(keys); // Get the first user's ID by using the login name. getUserId(users[0].Key); } // Get the user ID. function getUserId(loginName) { var context = new SP.ClientContext.get_current(); this.user = context.get_web().ensureUser(loginName); context.load(this.user); context.executeQueryAsync( Function.createDelegate(null, ensureUserSuccess), Function.createDelegate(null, onFail) ); } function ensureUserSuccess() { $('#userId').html(this.user.get_id()); } function onFail(sender, args) { alert('Query failed. Error: ' + args.get_message()); }
Bem simples, não acharam?
Abraços! 😀
Referência
Troubleshooting SharePoint/Office365: Sideloading of apps is not enabled on this site

Para resolver esse erro, basta rodar o script que está disponível nesse link: http://1drv.ms/1qDs0oy
Referência:
Abraços! 😀
Troubleshooting: Failed to call GetTypes on assembly Microsoft.Office.TranslationServices
Olá SharePointers,
Hoje peguei um cenário “diferente”.
Após aplicar o Cumulative Update de Março/2013 no SharePoint 2013 RTM, todas as vezes que tentava rodar o Configuration Wizard aparecia o erro abaixo:
Failed to initial the upgrade sequence.
An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown. Additional exception information: Exception of type ‘Microsoft.SharePoint.Upgrade.SPUpgradeException’ was thrown.
Fui no REGEDIT e alterei o valor da chave SetupType para CLEAN_INSTALL. O caminho da chave é: "HKLM\Software\Microsoft\Shared Tools\Web Server Extensions\14.0\WSS".
Após esse processo, rodei novamente o erro abaixo apareceu:
Após verificar o Cumulative Update, identifiquei que o que foi utilizado era para SharePoint Foundation e não SharePoint Server, o que fez com que algumas dlls não estivessem mais disponíveis.
Abraços 😀
Microsoft Curah
Olá SharePointers,
Hoje quero falar sobre uma ferramenta muito útil, o Curah.
O Curah tem o objetivo de ajudar as pessoas encontrarem informações úteis de forma simples. Basicamente, é uma coletânea de links, com informações relevantes, registrados por experts de uma certa área de atuação (Ex: SharePoint, Segurança, System Center e por aí vai).
Juntem-se a nós e começem a fazer suas publicações. É simples, veja o passo-a-passo abaixo:
- Cadastre-se no site http://curah.microsoft.com usando sua conta Microsoft (LiveID). O processo é muito rápido e leva apenas 1 minuto.
- Coloque os seus links favoritos e adicione seus comentários sobre eles. Explique o motivo do link ser importante.
Eu já comecei a preencher os meus links. Comecei com o conteúdo de um artigo que escrevi falando sobre algumas ferramentas úteis para desenvolvedores: http://curah.microsoft.com/74533/ferramentas-para-desenvolvedores-sharepoint.
Participem 😀
SharePoint e Javascript – Amor ou ódio?
Olá SharePointers,
Javascript e suas bibliotecas assumem um papel cada vez mais relevante na vida de um desenvolvedor moderno. É comum encontrar pessoas que digam que atualmente é uma das “linguagens” mais importantes para um desenvolvedor de SharePoint. Sei que esse ponto é controverso, mas esse é um tema que está cada vez mais presente no nosso dia-a-dia.
Notamos que a Microsoft fez um grande esforço para “mudar” um pouco a nossa cabeça e colocou no SharePoint 2013 o conceito de Apps, que, de uma forma bem simplista, é HTML e JavaScript.
Para quem ainda não está familiarizado, David Mann (SharePoint MVP – EUA) fez um curso muito interessante no Pluralsight: http://pluralsight.com/training/Courses/TableOfContents/developing-sharepoint-2013-javascript.
O SharePoint contém uma quantidade enorme de funções prontas que podem ser reutilizadas para nos ajudar durante o desenvolvimento de alguma solução. Algumas delas não estão documentadas no MSDN.
Para ajudar no desenvolvimento, existem alguns plugins para o Visual Studio. Dentre eles, recomendo esse aqui: http://visualstudiogallery.msdn.microsoft.com/288a2b0f-1357-47b4-8215-1134c36bdf30
Voltando ao código, vou citar algumas funções que podem ajudar bastante no desenvolvimento e não estão documentadas em lugar nenhum:
- url = SP.Utilities.UrlBuilder.replaceOrAddQueryString(url, key, value): Esse método recebe uma URL e modifica ou inclui um parâmetro na QueryStrig. O Retoro é a URL modificada.
- url = SP.Utilities.UrlBuilder.removeQueryString(url, key): Esse método remove um parâmetro da query string (e seu valor) de uma URL.
- url = SP.Utilities.UrlBuilder.urlCombine(url1, url2): Combina duas URLs e garante que não tenha nenhuma “/” redundante.
O ideal, antes de sair desenvolvendo, é pensar se o que precisamos fazer não existe no SharePoint. E, se existir, tentar entender como ele realiza tal operação e fazermos do mesmo jeito.
Referências Adicionais
http://msdn.microsoft.com/en-us/library/office/ee549589(v=office.14).aspx
http://chuvash.eu/2012/01/24/parameterize-an-javascript-object-and-create-url/
http://www.wictorwilen.se/Post/Working-with-URLs-in-SharePoint-2010-JavaScripts.aspx
Abraços!
SharePoint: Alterações no banco de dados
Olá SharePointers,
É muito comum ouvirmos falar que qualquer alteração nos bancos de dados do SharePoint resultam em perda da garantia do produto.
Mas, já pararam para pensar o que realmente acontece? Quais mudanças implicam na perda da garantia? O que deve ser feito em caso de alguém descobrir essas alterações?
Vamos lá:
Primeiro, vamos identificar o que não é suportado:
Caso seja descoberto alguma dessas modificações (durante uma call com o suporte da Microsoft) você deverá fazer uma das ações abaixo:
- Fazer um restore do banco de dados para a última versão que não contém essas modificações
- Roll back em todas as modificações do banco de dados
Embora todas essas modificações se refiram a alterações, operações de leitura também são proibidas.
Qualquer operação de leitura programaticamente ou manual pode causar locks dentro do SQL Server e, com isso, resultar em queda de performance. Sendo assim, qualquer leitura ao banco de dados que não seja utilizando um artefato providenciado pelo time de desenvolvimento do SharePoint ou pelo time de suporte é considerado “não suportado” e são barreiras para que o time de suporte continue te atendendo.
Para quem quiser ler mais sobre o assunto, acesse esse link: http://support.microsoft.com/kb/841057/en-us
Abraços 😀