Juliano's profileJuliano Nunes | Buscando...PhotosBlogListsMore Tools Help

Blog


    7/26/2008

    SharePoint – STSADM causando o erro "Failed to compare two elements in the array"

    Esta semana eu tive um problema durante a migração de servidores SharePoint em que estou trabalhando. Primeiro eu fiz o backup do banco de dados e restaurei no servidor de destino, mas não funcionou bem. A coleção de sites principal não funcionava, gerando sempre o erro "404 Page not found".

    Então eu escolhi a opção de usar o import/export em cada coleção de site da aplicação web, e surpresa....outro erro. Mas desta vez eu recebi a mensagem "Failed to compare two elements in the array" durante a exportação da coleção de sites principal.

    Esta é uma das estranhas mensagens de erro do SharePoint, mas depois de uma visita ao Live Search e chega a resposta! Steven Van De Craen um MVP SharePoint sugere que o problema é causado devido ao registro inválido de Features, e então ele disponibilizou uma ferramenta para enumerar todas Features do site e exibir quais são inválidas, permitindo a remoção delas da aplicação.

     

    Detalhes: http://www.moss2007.be/blogs/vandest/archive/2008/04/28/stsadm-o-export-fatalerror-failed-to-compare-two-elements-in-the-array.aspx

    7/15/2008

    C# - A palavra-chave yield

    Este é um recurso bastante interessante que vi em um dos feeds que assino, segue o texto e a referência:
     
     The yield keyword in C# is pretty powerful and expressive, but it doesn’t seem to be very widely known about. In this post we’ll take a quick look at what yield does and then I’ll post a follow-up that looks at what the compiler generates for you. Let’s start by looking at a simple (and contrived) example:
    private static readonly string[] StringValues = new string[] { "The", "quick", "brown", "fox",
                                "jumped", "over", "the", "lazy", "dog" };
    static IEnumerable<string> TestIterator()
    {
        foreach(string value in StringValues)
        {
             yield return value;
        }
    }
    The return type for the TestIterator method is IEnumerable<string>, but you can see that we don’t have a return statement in the implementation. Instead, we’re using the yield return statement to return each item that we want the caller to operate on. The compiler automatically generates a class that implements IEnumerable<string> for us. We can call this function using the following code:
    foreach(string value in TestIterator())
    {
        Console.WriteLine("In foreach:{0}", value);
    }
    This code will iterate over the IEnumerable<string> instance that is returned from the TestIterator method. In this example we’ve simply iterated over an existing collection, so we’re not providing much functionality! A more interesting example would be for a binary tree such as:
    class BinaryTree<T>
    {
        public T Item { get; set; }
        public BinaryTree<T> Left { get; set; }
        public BinaryTree<T> Right { get; set; }
    }
    In this case, the yield keyword makes it a breeze to add IEnumerable support. First, we add IEnumerable<T> to the implemented interfaces and then we just need the code below to provide the implementation:
    public IEnumerator<T> GetEnumerator()
    {
        yield return Item;
        if (Left != null)
        {
            foreach (T t in Left)
            {
                yield return t;
            }
        }
        if (Right != null)
        {
            foreach (T t in Right)
            {
                yield return t;
            }
        }
    }
    This code returns the item for the current node and then recurses into the items from the left and right hand of the tree – how easy is that? This is one of the big advantages of the yield keyword: it allows you to write readable and concise code to produce an iterator.
    Stay tuned for part 2, when we’ll take a look at the code that the compiler generates for us...

    Referência: http://blogs.msdn.com/stuartleeks/archive/2008/07/14/a-closer-look-at-yield.aspx

    7/14/2008

    PenDrives Sandisk com tecnologia U3 agora suportam Windows Vista

    Essa é uma ótima notícia para as pessoas que possuem um PenDrive da Sandisk que utiliza a tecnologia U3. Em sua última atualização, o sistema U3 passa a suportar o Windows Vista.

    Antes do Windows Vista SP1 a unidade de CD que o U3 carrega nem era detectada corretamente. Após o SP1, esta unidade passou a ser detectada como um disco de áudio e ainda não carregava o menu U3, o que não adiantava nem um pouco.

    Mas agora, na atualização do driver do sistema U3, o mesmo passou a funcionar perfeitamente no Windows Vista.

     

    Para quem não conhece o sistema U3, trata-se de uma tecnologia desenvolvida pela Sandisk que permite a instalação de softwares diretamente no PenDrive (anti-vírus, compactadores, entre muitos outros) e ainda permite a proteção do PenDrive por senha.

    Há um bom tempo atrás postei sobre a parceria Microsoft – Sandisk, não sei se esta atualização já é fruto da parceria, mas acho que vem coisa boa por aí.

     

    Um abraço e tenham uma ótima semana.

    7/10/2008

    SharePoint: Dados sobre browsers suportados e possíveis "workarounds"

    Este é um whitepaper que indica quais funcionalidades podem sofrer problemas com alguns browsers e até algumas formas de contornar estes problemas.

    O documento cobre Internet Explorer, Firefox, Netscape e Safari.

    Segue o link: http://technet.microsoft.com/en-us/library/cc706882(TechNet.10).aspx 

    Documento de grande utilidade.

    7/8/2008

    Brasil é campeão na categoria Games da Imagine Cup 2008!!

    Acaba de sair os resultados no blog oficial da Imagine Cup 2008.

    O Brasil ficou em primeiríssimo lugar na categoria Games com a equipe Mother Gaia

    Aqui vai a lista completa: 

    Software Design
    • First place: Australia — Team SOAK
    Team Members: David Burela, Dimaz Pramudya, Ed Hooper, Long Zheng
    • Second place: Slovakia — Team Housekeepers 
    Team Members: Marián Hönsch, Michal Kompan, Jakub Šimko, Dušan Zeleník
    • Third place: Hungary — Team DigitalMania 
    Team Members: Ákos Kapui, Laszló Zöld, Bálint Orosz, Gergely Orosz

    Embedded Development
    • First place: Singapore — Team Trail Blazers 
    Team Members: Pinto James Dominic, Shi Ben Yong, Hu Shuhan, Denver Lim
    • Second place: TIE 
    Ireland — Team AcidRain 
    Team Members: Brian Byrne, Aodhan Coffey, Karl O’Dwyer
    China — Team Wings
    Team Members: Shibiao Xu, Junjie Li, Zhongjie Wang, Lei Yan
    • Third place: Poland — Team Aero@PUT
    Team Members: Piotr Kryger, Mikołaj Małaczyński, Jakub Pawłowski, Piotr Slęzak

    Game Development
    First place: Brazil — Team Mother Gaia Studio 
    Team Members: Guilherme Campos, Helena Van Kampen, Rafael F. Costa, Túlio Sória 

    • Second place: Belgium — Team Drunk Puppy Productions
    Team Members: Kenny Deriemaeker, Filip Van Bouwel, Timothy Vanherberghen, Jeroen van Raevels
    • Third place: Korea — Team GOMZ 
    Team Members: Kim Dong Hoon, Kim Ki Hwan, Park Min Kyu 

    “Project Hoshimi” (Programming Battle)
    • First place: Russia — Team Red Devils
    Team Members: Ilya Grebnov, Sergei Grebnov
    • Second place: China — Team Zephyr 
    Team Members: Peng Guo, Jiaze Huang
    • Third place: Ukraine — Team Dream Team 
    Team Members: Pavlo Liapota, Margaryta Skrypachova

    IT Challenge
    • First place: France — Jean-Benoit Paux
    • Second place: Romania — Cosmin-Viorel Ilie
    • Third place: China — Yan Liu

    Algorithm 
    • First place: Ukraine — Roman Koshlyak
    • Second place: Hungary — Szilveszter Szebeni
    • Third place: Japan — Naohiro Takahashi

    Photography
    • First place: United States — Team Provisio
    Team Members: Jennifer Hui, Melissa Hui
    • Second place: Austria — Team Austria
    Team Members: Rosa Maria Binder, Benedikt Wurth
    • Third place: Croatia — Team Voodoo Delirum
    Team Members: Duje Nebojša Pandžić, Martin Štokić

    Short Film 
    • First place: Korea — Team NEIP
    Team Members: Il Jin Joung, Seong Ran An, Yeun Jun Choo, Sung Wook Lee
    • Second place: Mexico — Team Lava Lamp
    Team Members: Grace Montoya, Aldo Murillo
    • Third place: Canada — Robotree 
    Team Members: Drake Birmann, Ryan Morrison, Media Ridha, Dan Tran

    Interface Design
    • First place: United States — Team IU EcoVis
    Team Member: David Roedl, William Odom
    • Second place: Canada — TeamGreeNet 
    Team Members: Jin Fan, Kevin Muise
    • Third place: France — Team Edelweiss
    Team Members: Johanna Rowe, Steven Muhr

    http://imaginecupfinalsinparis.spaces.live.com/blog/cns!3881675633140DB4!604.entry 

    Agora é oficial, novo site da ImagineCup 2009 no ar

    Hoje é a grande final da ImagineCup, todos nós torcendo pelas equipes brasileiras e nos mantendo antenados através de nosso blogger official, o MSP Glebe Jr. E como era de se esperar, agora mais do que nunca é oficial. A ImagineCup 2009 terá suas finais no Egito e o tema será sim as 8 metas do milênio sugeridas pelas Nações Unidas.

    Agora, vocês lembram do post em que eu indiquei o site para votar nos designs para a competição? Eles foram todos utilizados. Cada acesso ao site é carregado um novo visual. :D

    ImagineCup 2009

    O novo site da Imagine Cup 2009 pode ser acessado no mesmo endereço http://www.imaginecup.com.

    Mais informações sobre as 8 metas do milênio em http://www.un.org/millenniumgoals/

    Get ready!

    And step up to the challenge!!!!

    7/7/2008

    Projetos OpenSource Microsoft

     Lendo as notícias hoje de manha, vi uma matéria entitulada "Veja 10 mudanças que Ballmer deveria fazer" (adivinhem o site?!). Até aí tudo bem, mas quando comecei a ler a notícia me deparei com o seguinte item "Criar projeto open source...".

    Dessa vez eu não vou nem escrever muito, só vou citar 4 itens:

    - Releasing the Source Code for the .NET Framework Libraries - http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx

    - Microsoft Research Singularity Project - http://research.microsoft.com/os/Singularity/

    - Port25 (inglês) - http://port25.technet.com/ e Porta 25 (português) - http://porta25.technetbrasil.com.br/

    - CodePlex - http://www.codeplex.com

    Acho que os autores deveriam se envergonhar de publicar matérias incompletas.

    Descobrindo a topologia ideal para implantação do SharePoint

    Apesar de não trabalhar com infra-estrutura, estou tendo que atuar um pouco nesta área com o SharePoint. Estes dias tive a tarefa de levantar a topologia ideal para que fosse implantada uma extranet/intranet baseada em SharePoint.

    Então iniciei a pesquisa sobre como calcular quanto de espaço em disco precisarei, quantos servidores, largura de banda dos links, memória, se vai precisar de load-balance, cluster, etc. Essa é uma tarefa difícil até mesmo pra quem já trabalha com infra-estrutura, afinal é uma medição para chegar no valor mais aproximado, por tanto, não é um cálculo exato.

    A dificuldade está mais no levantamento de informações do log do IIS (Microsoft Internet Information Services) para analisar o tráfego atual, levantar a lista de usuários por filial e qual o percentual de usuários conectados simultaneamente durante 1 hora, daí é só colocar nas fórmulas que alguns sites e blogs indicam.

    Então comecei a pesquisa e cheguei às seguintes informações que podem lhes auxiliar.

    O SQL Server e o Reporting Services são grandes aliados na análise de logs, mas não esquecendo é claro do Microsoft Log Parser. Então, o primeiro passo é baixar o pacote de relatórios para SQL Server 2005 Reporting Services e anexar (attach) o banco IISLOG que vem no Report Pack. O SQL Server 2005 Report Pack Microsoft Internet Information Services (IIS) pode ser baixado de http://www.microsoft.com/downloads/details.aspx?familyid=d81722ce-408c-4fb6-a429-2a7ecd62f674&displaylang=en.

    Feito isso, o próximo passo é instalar o IIS Resource Kit que já vem com o Log Parser e outras ferrramentas (você pode baixar o Log Parser separado). O IISResKit pode ser copiado de http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A-4C73-B628-ADE629C89499&displaylang=en (IIS 6.0).

    Agora você deve abrir o Log Parser e executar o seguinte comando:

    LogParser "SELECT date, time, strcat(strcat(strcat(TO_STRING(TO_TIMESTAMP(date, time), 'hh'),':00-'), TO_STRING(TO_TIMESTAMP(date, time), 'hh')),':59') AS Hour, TO_Int(TO_String(date,'MM')) as Month, TO_Int(TO_String(date,'yyyy')) as year,c-ip, cs-username, s-sitename, s-computername, s-ip, s-port, cs-method, cs-uri-stem, cs-uri-query, sc-status, sc-substatus, sc-win32-status, sc-bytes, cs-bytes, time-taken, cs-version, cs-host, cs(User-Agent), cs(Cookie), cs(Referer) FROM C:\IISLog\mylogfile.log TO GlobalIISLog" -i:IISW3C -o:SQL -server:(local) -database:IISLog -createtable:ON

    Obs: se der algum erro na execução do comando desta forma, remova os espaços entre os campos da cláusula SELECT. Outra coisa, onde está "C:\IISLog\mylogfile.log" você deve alterar pelo caminho onde estão os logs do site que deseja buscar as informações.

    Executando este comando o Log Parser irá selecionar os dados dos arquivos de log informados e gravá-los no banco de dados que você anexou.

     

    Agora é só usar o SQL Server 2005 Business Intelligence Development Studio (BIDS) ou acessar o gerenciador de relatórios através do http://servername/reports para fazer o upload dos relatórios. A propósito, os relatórios e o banco de dados IISLOG ficam no caminho C:\Program Files\Microsoft SQL Server Report Packs\Microsoft SQL Server Report Pack for Internet Information Services.

    Você terá que criar uma nova fonte de dados no Reporting Services e alterar em cada relatório para que eles apontem para esta nova fonte de dados. Neste caso é mais prático utilizar o BIDS.

    Feito isso, agora é só acessar os relatórios e levantar as informações importantes. Então você escolhe a fórmula que confiar mais :D. Digo isso porque existem N fórmulas publicadas na internet, mas a própria Microsoft sugere algumas. Seguem os links:

     

    Enfim, há N alternativas, mas se você quer planejar sua topologia da melhor forma e mais organizada, você pode utilizar uma ferramenta que tem uma idéia simples, mas que é muito organizada e bem detalhista.

    Trata-se do Microsoft System Center Capacity Planner (http://www.microsoft.com/systemcenter/en/us/capacity-planner.aspx), uma ferramenta gratuita, expansível e que ajuda na pré e pós-implantação que ainda permite realizar simulações com as configurações realizadas. O SCCP já vem com um modelo para elaborar planos de capacidade para Exchange 2007, mas você pode baixar o modelo para Office SharePoint Server 2007 e Windows SharePoint Services 3.0 em http://technet.microsoft.com/en-us/library/bb961988(TechNet.10).aspx.

    Há vídeos demonstrando a utilização do Microsoft System Center Capacity Planner em http://technet.microsoft.com/en-us/sccp/bb898336.aspx.

     

    Bom, a minha intenção é que este post seja só um aperitivo, em breve deverei postar exemplos de utilização do SCCP para planejamento de topologias SharePoint.

     

    Um abraço.

    7/2/2008

    Internet Explorer 8 - Mais recursos de segurança e facilidades para administradores de rede

    Além do já conhecido Phishing Filter que acompanha o IE7, a nova versão (Internet Explorer 8) a partir do beta 2 terá o XSS Filter que irá impedir que aconteçam ataques de script através de sites de terceiros (cross-site scripting).

    Outra novidade quando ao XSS Filter, é um novo método do objeto window no JavaScript, o toStaticHTML. Isso irá garantir que mesmo que você receba algum script embutido no valor de um campo, ele será tratado como texto plano.

    document.attachEvent('onmessage',function(e) {  
      if (e.domain == 'weather.example.com') { 
      spnWeather.innerHTML = window.toStaticHTML(e.data); 
      } 
    }

    Executando:

    window.toStaticHTML("This is some <b>HTML</b> with embedded script following... <script>alert('bang!');</script>!");

    irá retornar:

    This is some <b>HTML</b> with embedded script following... !

    Outra mudança foi no controle HTML de upload de arquivos (HTML File Upload Control), que para maior segurança não aceita que o caminho do arquivo seja digitado, ou seja, a textbox que exibe o caminho e nome do arquivo agora é somente leitura (read-only). E o IE8 virá com a opção para enviar o caminho completo do arquivo durante o upload desabilitada por padrão, para a zona de Internet.

    Há outros recursos que já estão no IE8 deste o primeiro beta, mas alguns merecem destaque. Um deles é o destaque do domínio na barra de endereços (domain highlighting) que exibe o real domínio do site com maior destaque, para facilitar a verificação de tentativas de Phishing.

    Não poderia esquecer de mencionar também o SmartScreen® Filter como destaque, que vai mais além do que analisar tentativas de Phishing. Ele é um substituto de valor para o Phishing Filter já que possui interface aprimorada, melhor performance, novas técnicas de heurística, suporte a anti-malware e suporte a políticas (group policies). E é nessa última opção que entram os administradores de rede, pois terão maior controle sobre a permissão do usuário de ignorar o aviso de site inseguro e continuar a navegação.

    O IE 8 será sim um lançamento de peso. Há muitos novos recursos, muito mais preocupação com dois dos principais pilares da internet (segurança, padrões da web) e acredito que poderemos contar com itens como: performance, produtividade e qualidade.

    Aguardemos o próximo beta.

    Fonte: http://blogs.msdn.com/ie/default.aspx