sexta-feira, 4 de dezembro de 2009

Preciso voltar…

Olá meus caros!

Estou com vários “projetos” de posts na agulha, entre eles:

  • Série de posts sobre Business Intelligence usando tecnologia Microsoft;
  • Série de posts sobre arquitetura MVP (Model View Presenter);

O grande problema é que, neste momento, outros projetos (pessoais) tomaram conta do meu tempo. Estou fazendo parte de alguns projetos musicais (sim, eu tenho vida pessoal…) para o natal, e os ensaios estão uma loucura.

Mas garanto que eu voltarei. Eu preciso.

Ps.: Aproveitando, meu twitter: http://twitter.com/arnascimento

sexta-feira, 9 de outubro de 2009

Ótimo Blog de Sharepoint


Olá amigos, tudo em paz?

Acessem o blog sharepoint-br do meu amigo Diego Humel, com informações precisas sobre Sharepoint e afins, tudo em português.
Bom para quem já conhece ou para quem quer conhecer, inclusive com posts sobre a evolução do Sharepoint e aplicações deste.

[]'s

quinta-feira, 1 de outubro de 2009

C# - Yield return

Olá, amigos! Hoje falarei sobre uma funcionalidade interessante do C#.

Existem algumas funcionalidades simples que poupam um trabalhão mas nem sempre são usadas. Como uma dessas funcionalidades, podemos considerar o iterador "yield".

Esta funcionalidade está disponível desde a versão 2.0 do C# mas acaba passando despercebida pela maioria dos desenvolvedores.
Basicamente, o operador "yield" é usado para iterar através de objetos retornados por um método. Ele cria um mecanismo de estado via IL para que seja possível criar métodos que conservem o seu estado sem ser necessário manter o estado via código.

Como exemplo simples, vamos usar um exemplo simples que retorna os itens pares em uma coleção:

public IEnumerable RetornaPares(int[] numeros)
{
    List<int> pares = new List<int>();
    foreach (int n in numeros)
    {
        if (n % 2 == 0)
            pares.Add(n);
    }
    return pares;
}

Normalmente usamos um list para armazenar os itens a serem retornados.
Usando yield return ficaria assim:

public IEnumerable PegarPares(int[] numeros)
{
    foreach (int n in numeros)
    {
        if (n % 2 == 0)
            yield return n;
    }
}

Veja que o yield faz o trabalho para você e retorna o resultado correto, porém iterando pelos itens sem a intervenção do desenvolvedor, não sendo necessário criar nenhuma lista para o armazenamento.

Até a próxima!

Referências:

http://www.c-sharpcorner.com/UploadFile/rmcochran/yieldreturn04022006113850AM/yieldreturn.aspx

http://www.magodigital.info/post/Operador-Yield-do-C.aspx

sexta-feira, 20 de março de 2009

Problema na instalação do SQL 2005

Amigos,
Enfrentei um problema muito estranho na instalação do SQL 2005 na minha máquina em casa. A mensagem era mais ou menos a seguinte:

SQL Server Setup Failed to compile the Managed Object Format (MOF) file
C:\Program Files\Microsoft SQL Server\90\Shared\sqlmgmproviderxpsp2up.mof.
To proceed, see "Troubleshooting an Installation of SQL Server 2005" or "How
to: View SQL Server 2005 Setup Log Files" in SQL Server 2005 Setup Help
documentation.

Era um problema no WMI (Windows Management Instrumentation) e foi necessário fazer algumas correções.
Esses dois links me ajudaram a resolver:

http://www.mydatabasesupport.com/forums/sqlserver-faq/242406-error-when-installing-sql-2005-a.html

http://windowsxp.mvps.org/repairwmi.htm

Solução comprovada.

Abraço!

quinta-feira, 5 de março de 2009

Retornando Listas do Sharepoint

A integração entre as ferramentas Microsoft pode e deve ser sempre utilizada ao favor dos desenvolvedores e usuários.

A ferramenta WSS, ou Windows Sharepoint Services oferece uma gama variada de serviços para compartilhamento de informações e um ambiente completo de colaboração.

Neste post vamos criar um webapplication simples para retornar as listas de um determinado site do Sharepoint:

  1. Criar um projeto WebApplication;
  2. Fazer referência ao web service na Solution Explorer, clicando com o botão direito sobre o item Web References, Add Web Reference;
    1. Inserir a URL da sua aplicação SharePoint no campo URL e clicar em GO;
    2. Definir um nome da sua referência no campo Web Reference Name e clicar em Add Reference;
  3. Inserir um asp:ListBox ao formulário default1.aspx que foi gerado pelo BIDS;
  4. Inserir um asp:Button;
  5. Duplo click sobre o botão Button1;
    1. Vai surgir a página de edição de código;
    2. Copiar o seguinte código:

/*Declara e inicializa uma variável para listas do web service*/

suporteint.Lists myservice = new suporteint.Lists();


/*Autentica o usuário corrente, passando suas credenciais default para o Web service do System Credential Cache */

myservice.Credentials = System.Net.CredentialCache.DefaultCredentials;


/* definir a propriedade URL do serviço para o seu subsite. A não definição desta propriedade retornará as listas no Web Site Raiz.*/

myservice.Url = "http://<seu site>/_vti_bin/Lists.asmx";


/*Declare um objeto XmlNode e inicialize-o com o XML response do método GetListCollection. */

System.Xml.XmlNode node = myservice.GetListCollection();


/*Varra através do resultado XML e defina o valor do atributo "título" para cada lista. */

foreach (System.Xml.XmlNode xmlnode in node)

{

ListBox1.Items.Add(xmlnode.Attributes["Title"].Value);

ListBox1.Rows++;

}

  1. Clique start no menu debug para executar a aplicação;
  2. Clique no botão "Button1" para retornar a relação de listas do seu site sharepoint informado.

Compensa estudar os WebServices e métodos disponibilizados para acesso a listas e dados do Sharepoint.

Referência: http://msdn.microsoft.com/en-us/library/ms450301.aspx


sexta-feira, 16 de janeiro de 2009

Erro SSIS: product level is insufficient

Eu havia desenvolvido um pacote SSIS, testado exaustivamente no ambiente de desenvolvimento e, depois disso, instalamos o pacote no ambiente de testes do cliente.
Quando fui executar o pacote, diretamente no SSIS obtive um erro absolutamente inesperado:

Product level is insufficient for [nome do objeto]

- O pacote estava sendo executado a partir do SSMS apontando para outro servidor, onde havia sido instalado o pacote.
- Este servidor onde estava sendo executado o SSMS não possui o serviço do SSIS instalado, e este serviço está instalado somente no servidor "B", onde foi instalado o pacote.

Pesquisando na web, aprendi algumas coisas interessantes sobre o comportamento e execução dos pacotes SSIS:
1) Quando se executa um pacote SSIS, ele é executado no servidor "A", ou seja, o que chama a execução, e utiliza todos os recursos desde CPU, inclusive os serviços. Logo, é necessário que o serviço do SSIS esteja instalado no servidor que faz a chamada ao pacote;
2) Uma forma de resolver esta questão, para o caso de não poder instalar o serviço do SSIS na máquina que vai chamar o pacote é agendar um SQL Job que faça a chamada ao pacote;

Fiz os testes em ambas as situações e tudo ocorreu ok!

Fontes:
http://blogs.msdn.com/michen/archive/2006/11/11/ssis-product-level-is-insufficient.aspx
http://blogs.msdn.com/michen/archive/2006/08/11/package-exec-location.aspx

Ps.: Depois disso tive um outro problema, que fica para outro post...