Você está na página 1de 48

Sumrio

04 :. Gerando Boletos Bancrios II


Edio 11 Nmero 11 Ano 03 2009 EDITORES Alexandre Tarifa Diego Nogare Emerson Facunte Sergio Gonalves REVISO Fernanda Sallai Giaccomo Sabino MONTAGEM / FORMATAO Milton Carvalhaes EDITORAO E DIAGRAMAO Adriano Almeida COLABORADORES Caio Azevedo Danilo Marion Munhz Diego Nogare Fabiano Belmonte Juliano Schimiguel Milton C. Filho Ricardo Quartier Seiti Yamashiro Tiago Tiguen Sinzato
Continuao do artigo de como gerar boletos bancrios usando o ASP.NET
Por: Seiti Yamashiro

12 :. .NET SAP connector 2.0


Aprenda como escrever nas tabelas do SAP com o .Net SAP Connector 2.0.
Por: Diego Nogare

18:. C# 4.0
Conhea as novas funcionalidades do C# 4.
Por: Fabiano Belmonte

23:. Tecnologia de Jogos Digitais


Introduo sobre tecnologias de jogos.
Por: Tiago Tiguen Sinzato /

Juliano Schimiguel

28 :. Introduo ao LINQ
Fale com Editor
muito importante para a equipe saber a sua opinio sobre a revista, caso tenha alguma critica, sugesto, ou elogio entre em contato. Caso tenha interesse em publicar um artigo na revista envie o ttulo e um resumo do tema em formato Word.
site@codificandomagazine.net Conhea melhor essa nova tecnologia de manipulao de dados.
Por:

Milton C.Filho

30:. Reporting Services 2005


Conhea esta poderosa plataforma de relatrios.

Por: Caio Azevedo

34:. Servidor no Contexto de Rede


Aprenda alguns conceitos de Rede. Produzido por:

Por: Danilo Marion Munhz / Juliano Schimiguel

www.codificando.net

42:. Report Sharp Shooter


Como escolher o gerador de Relatrios ?

Por: Ricardo Quartier

03:. Editorial

48:. .Close ( )

Edio 11 Nmero 11 Ano 03 2009

Editorial
Pessoal, como de costume estamos nos esforando para montar a revista com artigos tcnicos de alta qualidade e adequados s novidades/necessidades que surgem a cada dia no nosso universo. Nesta edio, a 11 publicada gratuitamente pelo grupo Codificando .Net, aborda artigos sobre LINQ, SQL Server, SAP, ASP .NET, entre outras tecnologias que so muito importantes hoje no mercado nacional. Os autores, so grandes conhecedores dos assuntos abordados, e conseguem passar de forma simples e direta os temas propostos. Um ponto super importante, que comeamos a plantar a algum tempo e que agora est dando timos frutos a idia de que os prprios membros da comunidade criem os materiais. Isso to bom pra todo mundo, que cada vez mais membros ativos esto realizando atividades e conquistando seus espaos em meio s comunidades no Brasil. Como sempre fiz, em todas as edies, deixo aqui o espao aberto para que vocs possam nos enviar materiais produzidos por vocs, que teremos o maior prazer em public-los. Muito obrigado pela confiana Grande Abrao, Diego Nogare site@codificandomagazine.net

EDITORIAL

e-magazine

Gerando Boletos Bancrios Parte II


Continuao do artigo de como gerar boletos bancrios usando o ASP.NET
Por: Seiti Yamashiro

Na Parte I vimos como emitir um boleto para impresso. O que falta popul-lo com dados que faam sentido. Vamos ento popul-lo com dados relevantes. Em primeiro lugar necessrio que voc tenha os dados armazenados em algum lugar, um banco de dados talvez. Mas vou presumir que seu cdigo j trate dos dados e me ater construo de duas partes fundamentais do boleto: a linha digitvel e o cdigo de barras. Note que, embora alguns dgitos da linha digitvel sigam um padro, cada banco pode possuir regras prprias para ger-la. Entre em contato com seu banco para ter essas informaes. Linha digitvel A linha digitvel, lembrando novamente que estou seguindo as instrues do Ita, possui 47 dgitos. Abaixo segue a construo da linha, lembrando que DAC significa dgito de autoconferncia, ou simplesmente dgito verificador.

AAABC.CCDDXDDDDD.DEFFFYFGGGG. GGHHHZKUUUUVVVVVVVVVV campo 1 10 dgitos campo 2 11 dgitos campo 3 11 dgitos 4 campo 5 14 dgitos Campo 1 (AAABC.CCDDX): AAA = cdigo do banco Ita = 341; B = cdigo da moeda Real = 9; CCC = cdigo da carteira de cobrana; DD = dois primeiros dgitos do Nosso Nmero; X = DAC mdulo 10 do campo 1; Campo 2 (DDDDD.DEFFFY): DDDDDD = restante do Nosso Nmero; E = DAC do grupo agncia/conta/ carteira/nosso nmero; FFF = trs primeiros nmeros da agncia; Y = DAC mdulo 10 do campo 2;
Ago / Set - 2009

Codificando.net e-magazine
|

www.codificando.net

Gerando Boletos Bancrios

e-magazine

Campo 3 (FGGGG.GGHHHZ): F = ltimo nmero da agncia; GGGGGG = conta corrente + DAC; HHH = zeros; Z = DAC mdulo 10 do campo 3; Campo 4 (K): K = DAC mdulo 11 do cdigo de barras (nico DAC que vai para o cdigo de barras); Campo 5 (UUUUVVVVVVVVVV): UUUU = fator de vencimento; VVVVVVVVVV = valor do boleto, sem ponto e vrgula, ou zeros, no caso do valor ser preenchido pelo prprio sacado. O fator de vencimento contm 4 dgitos e o nmero de dias desde 7 de outubro de 1997, servindo para indicar a data de vencimento do boleto (teremos o bug do milnio 21 de fevereiro de 2025?). Seu clculo bem simples, como podemos ver pelo mtodo abaixo:

os DAC: s o mdulo 10 e o mdulo 11. O clculo do DAC mdulo 10 realizado da seguinte forma. Tome o campo a ter calculado o DAC. Multiplique cada algarismo do campo pela sequncia de multiplicadores 2, 1, 2, 1, 2, 1, posicionados da direita para a esquerda. Some os resultados, que chamarei de N. Calcule o mdulo 10 de N mod10(N) ou N%10. O DAC ser 10 mod10(N). Caso o DAC seja 10, considere-o como 0. Segue abaixo um mtodo para calcular o DAC mdulo 10:
private int CalculaDacMod10 (string campo) { int soma = 0; int m; // caso exista um nmero par de algarismos, inicia a mult. por 1 if ((campo.Length % 2) == 0) m = 1; else m = 2; foreach (char c in campo) { soma += Convert.ToInt32(c) * m; m = 3 - m; //regra aplicada: (x+y) - x = y; (x+y) - y = x } int dac = 10 - (soma % 10); if (dac == 10) return 0; return dac; }

Codificando.net e-magazine

private int FatorVencimento (DateTime date) { DateTime zeroDay = new DateTime(1997, 10, 7); return (date - zeroDay).Days; }

DAC Analisando as regras anteriores, temos que a maior parte do trabalho consiste-se em concatenar strings e calcular DACs. Para criar nossa Linha Digitvel iremos dispor de dois algoritmos para calcular

O clculo do DAC mdulo 11 bem semelhante.Ele depois ser utilizado para compor o DAC do cdigo de barras. Tendo o trecho a ter o DAC calculado, tome seus algarismos e multiplique-os, iniciando-se da direita para a esquerda, pela sequncia numrica de 2 a 9 ( 2, 3, 4,

www.codificando.net

Ago / Set - 2009

Gerando Boletos Bancrios


5, 6, 7, 8, 9, 2, 3, 4 e assim por diante). Some o resultado obtendo nosso N. Calcule agora o mdulo 11 de N mod11(N) ou N%11. O DAC ser 11 mod11(N). Caso o clculo do DAC tenha dado 0, 10 ou 11, considere-o como 1. O mtodo abaixo faz o clculo do DAC mdulo 11:
private int CalculaDacMod11 (string campo) { int soma = 0; int m = 2; //Invertendo a string, para facilitar o trabalho com os multiplicadores char [] arr = campo.ToCharArray(); Array.Reverse(arr); string reversed = new String (arr); foreach(char c in reversed) { soma += Convert.ToInt32(c) * m; m = (m + 1 > 9 ? 2 : m + 1); } int dac = 11 - (soma % 11); if (dac == 0 || dac == 10 || dac == 11) return 1; return dac; }

e-magazine

treito 0; os espaos tambm possuem significado, por isso o intercalado

Este cdigo de barras serve apenas para representar nossa linha digitvel, transformado o que uma seqncia de nmeros em uma imagem. Existem muitos controles por a que fazem isto, mas no encontrei nenhum gratuito para Asp.NET. Neste exemplo vou utilizar o arcodenet.net. Ele pode ser testado e completamente funcional, a diferena que, enquanto voc no registr-lo, ele criar uma linha escrito barcodenet.net (ou algo assim) logo acima do cdigo de barras. Embora a linha digitvel possua 47 dgitos, o nmero que ser codificado em barras possui apenas 44. Por qu? Porque devemos nos livrar de trs dos quatro DACs que constam nela. Assim o cdigo de barra ter apenas um DAC. Outra diferena importante de que a ordem em que os campos se apresentam na linha digitvel no a mesma da apresentada pelo cdigo de barras. Segue como gerar ento os dgitos que compem o cdigo de barras: 3 dgitos do cdigo do Banco (341); 1 dgito com o cdigo da moeda (3); 1 dgito do DAC do Cdigo de Barras; 4 dgitos do fator de vencimento; 10 dgitos do valor do ttulo, desconsiderando qualquer sinal de pontuao; 3 dgitos da carteira; 9 dgitos do Nosso Nmero mais seu prprio DAC; 4 dgitos da agncia;

Codificando.net e-magazine

Cdigo de Barras O padro de cdigo de barras para os boletos no Brasil o denominado 2 de 5 intercalado, que pode ser resumido nas seguintes caractersticas: codifica apenas caracteres numricos (0-9); cada caractere representado por 5 barras, dentre os quais 2 so mais longas; codificao binria largo 1, es-

www.codificando.net

Ago / Set - 2009

Gerando Boletos Bancrios


6 dgitos da conta corrente, com seu prprio DAC; 3 dgitos no utilizados e composto por zeros (000).

e-magazine

Depois de gerar os dgitos que compem o cdigo de barras, questo de torn-lo em imagem utilizando o controle comentado anteriormente:
public byte[] CodigoBarras() { BarcodeNETWeb barcode = new BarcodeNETWeb(); barcode.BarcodeText = DigitosCodigoBarrasComDac(); barcode.BarcodeType = BARCODE_TYPE.INT2OF5; return barcode.GetBarcodeBitmap (FILE_FORMAT.PNG); }

Cdigo Segue ento a listagem do cdigo fonte utilizado neste trabalho. Claro que h muito o que melhorar nele, mas isto fica como exerccio. =) Note que modifiquei a classe Dados do post anterior.
public class LinhaDigitavel { public int Banco { get; private set; } public int Moeda { get {return 9; }} public string CarteiraCobranca { get; private set; } public string NossoNumero { get; private set; } public string Agencia { get; private set; } public string ContaCorrente { get; private set; } public DateTime Vencimento { get; private set; } public decimal Valor { get; private set; } public LinhaDigitavel( int banco,string carteira, string nossonumero, string agencia, string contacorrente,

DateTime vencimento, decimal valor) { this.Banco = banco; this.CarteiraCobranca = carteira; this.NossoNumero = nossonumero; this.Agencia = agencia; this.ContaCorrente = contacorrente; this.Vencimento = vencimento; this.Valor = valor; } public LinhaDigitavel(Dados dados) { this.Banco = dados.Banco; this.CarteiraCobranca = dados.Carteira; this.NossoNumero = dados.NossoNumero; this.Agencia = dados.Agencia; this.ContaCorrente = dados.ContaCorrente; this.Vencimento = dados.DataVencimento; this.Valor = dados.ValorDocumento; } public string FormatoParaImpressao() { return Campo1().Substring(0, 5) + "." + Campo1().Substring(5) + " " + Campo2().Substring(0, 5) + "." + Campo2().Substring(5) + " " + Campo3().Substring(0, 5) + "." + Campo3().Substring(5) + " " + Campo4() + " " + Campo5(); } public byte[] CodigoBarras() { BarcodeNETWeb barcode = new BarcodeNETWeb(); barcode.BarcodeText = DigitosCodigoBarrasComDac(); barcode.BarcodeType = BARCODE_TYPE.INT2OF5; return barcode.GetBarcodeBitmap (FILE_FORMAT.PNG); } private string Campo1() { string campo = this.Banco.ToString("000") + this.Moeda.ToString("0") + this.CarteiraCobranca.Trim() + this.NossoNumero.Split('-') [0].Substring(0, 2);

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

Gerando Boletos Bancrios


if (campo.Length != 9) throw new Exception("Entrada invlida"); return campo + CalculaDacMod10 (campo).ToString("0"); } private string Campo2() { string campo = this.NossoNumero.Split('-') [0].Substring(2, 6) + this.DacAgenciaContaCarteiraNoss Numero().ToString("0") + this.Agencia.Substring(0, 3); if (campo.Length != 10) throw new Exception("Entrada invlida"); return campo + CalculaDacMod10(campo).ToString ("0"); } private string Campo3() { string campo = this.Agencia.Substring(3, 1) + this.ContaCorrente.Split('-') [0] + this.ContaCorrente.Split('-') [1] //sinto falta de explode/ implode + "000"; if (campo.Length != 10) throw new Exception("Entrada invlida"); return campo + CalculaDacMod10(campo).ToString ("0"); } private string Campo4() { return DacCodigoBarras ().ToString("0"); } private string Campo5() { return this.FatorVencimento().ToString ("0000") + FormataValor(this.Valor); } private string FormataValor (decimal valor) { string[] value = this.Valor.ToString ("00000000.00", System.Globalization.CultureInfo.In variantCulture).Split('.'); return value[0] + value[1]; }

e-magazine

private int DacAgenciaContaCarteiraNossNumero() { string termo = this.Agencia + this.ContaCorrente.Split('-')[0] + this.CarteiraCobranca + this.NossoNumero.Split('-')[0]; if (termo.Length != 20) throw new Exception("Entrada invlida"); return CalculaDacMod10(termo); } private int DacCodigoBarras() { return CalculaDacMod11 (DigitosCodigoBarrasSemDac()); } private string DigitosCodigoBarrasSemDac() { string termo = this.Banco.ToString("000") + this.Moeda.ToString("0") + this.FatorVencimento().ToString ("0000") + this.Valor.ToString ("0000000000") + this.CarteiraCobranca + this.NossoNumero.Split('-')[0] + this.NossoNumero.Split('-')[1] + this.Agencia + this.ContaCorrente.Split('-')[0] + this.ContaCorrente.Split('-') [1] //sinto falta de explode/ implode + "000"; return termo; } private string DigitosCodigoBarrasComDac() { string termo = DigitosCodigoBarrasSemDac(); return termo.Substring(0, 4) + DacCodigoBarras().ToString("0") + termo.Substring(4); } private int FatorVencimento() { DateTime zeroDay = new DateTime(1997, 10, 7); return (this.Vencimento - zeroDay).Days; } /// /// DAC mdulo 10 /// Exemplo: /// Considerando-se a seguinte representao numrica do cdigo de barras: /// 34191.1012? 34567.88005? 71234.57000? 6 16670000012345 /// Temos:

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

Gerando Boletos Bancrios


/// a) Multiplicando a sequncia dos campos pelo mdulo 10: /// Campo 1 341911012 Campo 2 3456788005 Campo 3 7123457000 /// X 212121212 X 1212121212 X 1212121212 /// Observao: Os campos 4 e 5 no tem DAC /// b) Some, individualmente, os algarismos dos resultados do produtos: /// Campo 1 : 6 + 4 + 2 + 9 + 2 + 1 + 0 + 1 + 4 = 29 /// Campo 2 : 3 + 8 + 5 + 1 + 2 + 7 + 1 + 6 + 8 + 0 + 0 + 1 + 0 = 42 /// Campo 3 : 7 + 2 + 2 + 6 + 4 + 1 + 0 + 7 + 0 + 0 + 0 = 29 /// c) Divida o total encontrado por 10, a fim de determinar o resto da diviso: /// Campo 1 : 29 / 10 = 2, resto 9 /// Campo 2 : 42 / 10 = 4, resto 2 /// Campo 3 : 29 / 10 = 2, resto 9 /// d) Calculando o DAC: /// Campo 1 : DAC = 10 - 9 : DAC = 1 /// Campo 2 : DAC = 10 - 2 : DAC = 8 /// Campo 3 : DAC = 10 - 9 : DAC = 1 /// Portanto, a sequncia correta da linha digitvel ser: /// 34191.10121 34567.880058 71234.570001 6 16670000012345 /// /// /// private int CalculaDacMod10 (string campo) { int soma = 0; int m; // caso exista um nmero par de algarismos, inicia a mult. por 1 if ((campo.Length % 2) == 0) m = 1; else m = 2; foreach (char c in campo) { soma += Convert.ToInt32(c) * m; m = 3 - m; //regra aplicada: (x+y) - x = y; (x+y) - y = x } int dac = 10 - (soma % 10); if (dac == 10) return 0; return dac; }

e-magazine

/// /// Considerando o seguinte contedo do Cdigo de Barras: /// 3419? 1667000001234511012345678800571423 457000 /// onde: /// 341 = Cdigo do Banco /// 9 = Cdigo da Moeda /// ? = DAC do Cdigo de Barras /// 1667 Fator de Vencimento (01/05/2002) /// 0000012345 = Valor do Ttulo (123,45) /// 110123456788 = Carteira/Nosso Nmero/DAC (110/12345678-8) /// 0057123457 = Agncia/Conta Corrente/DAC (0057/12345-7) /// 000 = Posies Livres (zeros) /// Temos: /// a) Multiplica-se a sequncia do cdigo de barras pelo mdulo 11: /// 3419166700000123451101234567880057 123457000 /// X 4329876543298765432987654329876543 298765432 /// b) Soma-se o resultado dos produtos obtidos no item a acima: /// 12 + 12 + 2 + 81 + 8 + 42 + 36 + 35 + 0 + 0 + 0 + 0 + 0 + 7 + 12 +15 + 16 + 15 + 2 + /// 9 + 0 + 7 + 12 + 15 + 16 + 15 + 12 + 63 + 64 + 56 + 0 + 0 + 20 + 21 + 2 + 18 + 24 + /// 28 + 30 + 35 + 0 + 0 + 0 = 742 /// c) Determina-se o resto da Diviso: /// 742 / 11 = 67, resto 5 /// d) Calcula-se o DAC: /// DAC = 11 5 ento DAC = 6 /// Portanto, a sequncia correta do cdigo de barras ser: /// 3419616670000012345110123456788005 7123457000 /// ^---DAC /// /// /// private int CalculaDacMod11 (string campo) { int soma = 0; int m = 2; //Invertendo a string, para facilitar o trabalho com os multiplicadores char [] arr = campo.ToCharArray(); Array.Reverse(arr);

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

Gerando Boletos Bancrios


string reversed = new String (arr); foreach(char c in reversed) { soma += Convert.ToInt32(c) * m; m = (m + 1 > 9 ? 2 : m + 1); } int dac = 11 - (soma % 11); if (dac == 0 || dac == 10 || dac == 11) return 1; return dac; } } public class Dados { public DateTime DataDocumento { get; set; } public DateTime DataVencimento { get; set; } public DateTime DataProcessamento { get; set; } public string Cedente { get; set; } public string SacadoResumido { get; set; } public string SacadoCompleto { get; set; } public int Banco { get; set; } public string Agencia { get; set; } public string ContaCorrente { get; set; } public string CodigoCedente { get; set; } public int NumeroDocumento { get; set; } public string EspecieDocumento { get; set; } public string Aceite { get; set; } public string NossoNumero { get; set; } public string Carteira { get; set; } public string Instrucoes { get; set; } public int Quantidade { get; set; } public decimal Valor { get; set; } public decimal ValorDocumento { get; set; } public string CodigoBaixa { get; set; } public byte[] CodigoBarra { get { LinhaDigitavel linha = new LinhaDigitavel(this);

e-magazine
return linha.CodigoBarras();

} } public string LinhaDigitavel { get { LinhaDigitavel linha = new LinhaDigitavel(this); return linha.FormatoParaImpressao(); } } }

Um exemplo de uso do gerador de boletos:


protected void btnGeraBoleto_OnClick(object sender, EventArgs e) { Boleto boleto = new Boleto (Portal.Controles.Boleto.Banco.ITAU, Server); List dados = new List(); dados.Add( new Portal.Controles.Boleto.Dados() { Aceite = "N", Agencia = "1234", Banco = 341, Carteira = "109", Cedente = "Indstria ACME", CodigoBaixa = "109/12345678-9", CodigoCedente = "12345-6", ContaCorrente = "12345-6", DataDocumento = DateTime.Now, DataProcessamento = DateTime.Now, DataVencimento = new DateTime (2009, 4, 5), EspecieDocumento = "DM", Instrucoes = @"No receber aps o vencimento", NossoNumero = "12345678-9", NumeroDocumento = 0000000012, Quantidade = 0, SacadoCompleto = @"Padoca do Z - LTDA CNPJ 12.345.678/0001-23 Rua das Casas, 123 01234-123 Vl do Bairro Sao Paulo SP", SacadoResumido = "Padoca do Z LTDA", Valor = 0, ValorDocumento = 2637.00m }); boleto.Baixa(Response, dados);

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

10

Gerando Boletos Bancrios


}

e-magazine

Embora existam outras opes, como cartes de crdito e pagamento direto online, o boleto ainda utilizado devido familiaridade e facilidade de pagamento por parte do comprador. Por isso temos de saber ger-lo em nossos sistemas, mesmo que utilizemos solues prontas.

Vimos que gerar um boleto na plataforma .Net algo simples, composto por uma guia impressa, alguma lgica para a gerao da linha digitvel e uma ferramenta de terceiros para a criao do cdigo de barras. A parte mais difcil fica no sistema subjacente, no abordada, onde entra o retorno do pagamento do boleto e finalmente na remessa da mercadoria. Mas isto fica para uma prxima. Seiti Yamashiro
Graduando em Cincia da Computao, desenvolvedor web em C#/Asp.NET com banco de dados MS SQL Server. Nas hora vagas costuma programar em PHP e implantar sistemas livres em Linux, alm de alimentar um blog: http://seiti.eti.br

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

11

e-magazine

Escrevendo nas tabelas do SAP com o .NET SAP Connector 2.0 atravs de RFC
Aprenda como escrever nas tabelas do SAP com o .Net SAP Connector 2.0.
Por: Diego Nogare

No artigo anterior sobre SAP (lendo as tabelas do SAP com .NET SAP Connector 2.0 atravs de RFC, que pode ser acessado na 10 Edio da Revista Codificando .Net eMagazine), foi explicado sucintamente o que o SAP, e quais so as atividades/ recursos envolvidos para conseguir utilizar RFCs para se trabalhar com o SAP. Se sentir necessidade, pode consultar o artigo anterior, para esclarecer e alinhar as idias. Neste artigo, faremos o inverso do que foi feito anteriormente. Desta vez, ao invs de ler informao do SAP, iremos escrever informao no SAP. Para isso, ser desenvolvida uma aplicao Windows Forms em C# que far a escrita em uma RFC do SAP, com base em um DataTable (mas a origem da informao fica a seu critrio!). Vou partir diretamente para a aplicao, entendendo que j esteja tudo configurado, como explicado no artigo sobre ler tabelas do SAP. Aps a instalao do conector, um novo cone ser adicionado nos templates que podem fazer parte do projeto (Figura 1), este novo item o SAP Connector Proxy.

Este Proxy receber todos os itens das RFCs que sero conectadas atravs do .Net e montar automaticamente as classes de acessos com suas respectivas properties (mtodos Get e Set), entre outras coisas. Para utilizar este proxy, ser necessrio adicionar um novo item ao projeto, ento v at a Solution Explorer, clique com o boto direito do mouse e aponte para Add New Item, acompanhe este passo na Figura 1. A tela de Template dos itens a serem inseridos, pode ser acompanhado na Figura 2.

Codificando.net e-magazine
|

Figura 1. Adicionando novo item ao projeto

www.codificando.net

Ago / Set - 2009

12

Escrevendo as tabelas do SAP com o .NET SAP Connector 2.0

e-magazine

Figura 2. Adicionando o proxy ao Projeto.

rer, para se poder visualizar as RFCs que esto liberadas pra acesso. V at o Server Explorer, procure o item do SAP (que foi inserido aps a instalao do SAP .Net Connector 2.0), expanda a rvore do SAP e clique com o boto direito no item Application Servers, ento adicione os dados AppServerHost / Client / Password / SystemNumber e UserName. Acompanhe este passo na Figura 4.

Aps a adio, o item aparecer no Solution Explorer (neste exemplo, foi adicionado na prpria raiz do projeto, mas ele pode ser adicionado dentro de alguma outra pasta para melhorar a organizao), como mostra a Figura 3.

Figura 3. Proxy na Solution Explorer. Figura 4: Inserindo os dados de acesso no Server Explorer.

Codificando.net e-magazine

D dois cliques no Proxy adicionado, e uma tela sem nenhum controle ser aberta no painel principal do Visual Studio 2003. Esta tela que se abriu, servir de container para as RFCs gerarem automaticamente os cdigos das classes de acesso. Este processo ser explicado com mais detalhes adiante. Agora, para conseguir utilizar as RFCs (que foram criadas pelos ABAPs, lembra?!), necessrio adicionar os dados do servidor do SAP (que sero fornecidos pelo pessoal de BASIS, isso voc tambm lembra, n?!) no Server Explo-

Aps este passo, ser possvel expandir o Application Servers e visualizar o servidor que voc adicionou (ter o nome fornecido ao campo AppServerHost). Ao expandir este item, ser necessrio configurar o filtro das Functions para aparecer as RFCs (crie um novo filtro e coloque os dados para filtrar (* retorna todas)) que podero ser utilizadas na aplicao. Acompanhe as RFCs fornecidas na Figura 5.

Agora que as RFCs j esto listadas, s arrastar a RFC que ser acessada para
Ago / Set - 2009

www.codificando.net

13

Escrevendo as tabelas do SAP com o .NET SAP Connector 2.0

e-magazine

Figura 5: RFCs que podero ser utilizadas.

dentro do Proxy, na tela que j deve estar aberta no painel principal do Visual Studio. Caso isso ainda no esteja feito, d dois cliques no item do proxy na Solution Explorer. Quando arrastar a RFC para cima do proxy, os dados da classe desta RFC sero criados automaticamente, permitindo o acesso seus campos atravs de suas properties. Acompanhe na Figura 6, o proxy com uma RFC j arrastada. Agora que a RFC foi arrastada para o

Figura 7: As classes criadas automaticamente pelo proxy.

Est faltando pouco agora, o mais complicado j passou. Vamos ao cdigo do mtodo acessarSAP( ) criado, e chamado pelo mtodo LOAD do formulrio. Acompanhe a Listagem 1, onde os cdigos deste mtodo foram inseridos.
private void acessarSAP() { escrevendoSAP proxy = null; try { proxy = new escrevendoSAP (String de Conexo); proxy.Connection.Open();

Codificando.net e-magazine

Figura 6: RFC arrastada para o proxy.

proxy, as classes para acessar os dados do SAP foram criados automaticamente dentro do proxy, se for at a Solution Explorer e exibir os itens ocultos (Show All Files), expandindo o proxy possvel ver as classes criadas (classes exibidas na Figura 7).

ZCPRHEADRTable tabelaSAP = new ZCPRHEADRTable(); ZCPRHEADR linha = new ZCPRHEADR(); DataTable dt = new DataTable (); montarColunas(ref dt); foreach (DataRow dr in dt.Rows) { linha.Codca = dr ["codigo"].ToString();

linha.Locen = dr ["nome"].ToString(); linha.Numrg = dr ["telefone"].ToString(); tabelaSAP.Add (linha); proxy.Bay2_N2rfi_Rfc_Upda_Zcprh eadr(ref tabelaSAP);


} proxy.CommitWork();

www.codificando.net

Ago / Set - 2009

14

Escrevendo as tabelas do SAP com o .NET SAP Connector 2.0


} catch (Exception ex) { MessageBox.Show(ex.Message); } finally { proxy.Connection.Close(); proxy = null; } }

e-magazine

private void montarColunas(ref DataTable dt)


Listagem 1: Cdigo para utilizar o proxy e as classes criadas.

proxy, ser criada uma varivel do tipo Tabela da RFC (ZCPRHEADRTable tabelaSAP = new ZCPRHEADRTable();). Esta varivel criada ser passada por parmetro de referncia, para o mtodo com o nome da RFC (proxy.Bay2_N2rfi_Rfc_Upda_Zcprheadr (ref tabelaSAP);) que est dentro do proxy. Como o parmetro foi por referncia, a varivel criada passar a ter os dados lidos no DataTable e que sero escritos no SAP atravs da RFC. Este foreach criado para percorrer todos os itens do DataTable utilizado como exemplo, e preencher a tabela do SAP, veja que em todas as iteraes do foreach a varivel linha do SAP possui seus campos populados e a RFC de escrita no SAP chamada. A Figura 8 do SAP, aps receber o valor que inserimos dentro do DataTable no mtodo montarColunas. Repare que os campos com marcao em vermelho apontam para os campos que foram preenchidos dentro do foreach no cdigo da Listagem 1.

{ dt.Columns.Add("codigo"); dt.Columns.Add("nome"); dt.Columns.Add("telefone"); DataRow dr = dt.NewRow(); dr["codigo"] = "1"; dr["nome"] = "Diego"; dr["telefone"] = "12345678"; dt.Rows.Add(dr); } A aplicao utilizar o proxy criado, que
Listagem 2: Cdigo para criar um DataTable e popular com dados ficticios.

foi chamado de escrevendoSAP para criar uma conexo com outro servidor SAP (no precisa ser necessariamente o mesmo utilizado no Server Explorer, mas pode ser, sem problema). Os itens que precisam ser inseridos na String de Conexo, podem ser encontrados abaixo, na Listagem 3. Substitua estes itens em vermelho pelos dados fornecidos pelo pessoal de BASIS, como foi feito no Server Explorer. "ASHOST=AppServerHost SYSNR=SystemNumber CLIENT=Client USER=UserName PASSWD=Password" Aps a informao de conexo do
Listagem 3: Dados da String de Conexo

Codificando.net e-magazine

Figura 8: Resultado da informao inserida no SAP.

Aps esta anlise simples e direta, possvel fazer uma escrita em tabelas do SAP

www.codificando.net

Ago / Set - 2009

15

Escrevendo as tabelas do SAP com o .NET SAP Connector 2.0


atravs do Visual Studio 2003. Um prximo artigo explicar como trabalhar com um workaround para se trabalhar com Visual Studio 2005 e Visual Studio 2008. Diego Nogare
Graduado em Cincia da Computao, Ps-Graduado em Engenharia de Computao com nfase em Desenvolvimento Web com .NET. Colaborador do Portal Linha de Cdigo e da revista SQL Magazine, Lder do grupo de usurios Codificando .NET, Lder dos Microsoft Student Partners [MSP] de So Paulo e Microsoft Most Valuable Professional [MVP] em SQL Server, possui certificaes MCP e MCTS em SQL Server 2005, palestrante em eventos da Microsoft, Codificando .NET e INETA BR, mantm o site: www.diegonogare.net

e-magazine

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

16

e-magazine

C# 4.0
Conhea as novas funcionabilidades do C# 4.
Por: Fabiano Belmonte

O Visual Studio 2010 e .NET Framework 4,0 em breve estar em fase beta, e existem alguns novos recursos excelentes que todos ns podemos esperar animados com este novo lanamento. Juntamente com o Visual Studio 2010 e do. NET Framework 4,0 veremos a verso 4.0 da linguagem de programao C #. Neste artigo eu gostaria de olhar um pouco a trs de onde comeou a linguagem de programao C # e olhar para onde Anders Hejlsberg do C # e sua equipe querem chegar. Em 1998, o projeto C # comeou com o objetivo de criar uma simples, moderna e orientada a objeto, linguagem de programao que se tornou conhecido como o. NET. A Microsoft lanou o. NET e a linguagem de programao C #, em meados 2000 e desde ento, C # tornou-se uma das mais populares linguagens de programao em uso hoje. Foi lanado ento o C# 1.0 A verso 2.0 da linguagem evoluiu de mais, particularmente acho que e umas das maiores evolues em to pouco tempo de uma linguagem e passou a dar suporte aos genricos, mtodos annimos, iterators, tipos parciais e tipos anulveis. Ao conceber a verso 3.0 da linguagem a nfase foi para permitir a LINQ (Language Integrated Query), que exigia a adio das seguintes funcionalidades: Implictly Typed Local Variables.

Extension Methods. Lambda Expressions. Object and Collection Initializers. Annonymous types. Implicitly Typed Arrays. Query Expressions and Expression Trees.

No passado linguagens de programao foram projetadas com um determinado paradigma em mente, e como tal, temos linguagens que foram, como exemplo, destinadas a serem orientadas a objeto ou funcionais. Hoje, porm, as linguagens que a ser concebidas com vrios paradigmas em mente. Na verso 3.0 da linguagem de programao C # adquiriu vrias capacidades funcionais normalmente associados a programao para permitir Language Integrated Query (LINQ). Na verso 4.0 do C # continua a evoluir, embora desta vez, a equipe do C # foram inspiradas por linguagens dinmica como Perl, Python e Ruby. A realidade que existem vantagens e desvantagens para ambas as linguagens seja ela escrita estaticamente e dinamicamente. Outro paradigma alem do design e inovao concorrente que um pa-

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

18

C#4.0

e-magazine

radigma que tem certamente influenciaram o desenvolvimento do Visual Studio 2010 e do. NET Framework 4.0. Agora o que o C# traz de novo: Dynamically Typed Objects. Optional and Named Parameters. Improved COM Interoperability. Safe Co- and Contra-variance. Chega de papo e vamos olhar para algum exemplos em C # 4.0 utilizando essas inovaes lngua ... Em C # Hoje voc pode ter, o seguinte cdigo que uma instncia de uma clase escrita estaticamente . NET ento chama o mtodo Add em que a classe para obter a soma de dois inteiros:
Calculator calc = GetCalculator();

como a seguinte.
ScriptObect calc = GetCalculator(); object result = calc.InvokeMember ("Add", 10, 20);

int sum (result);

Convert.ToInt32

Com C # 4,0 teramos simplesmente escrever o seguinte cdigo: dynamic calc = GetCalculator(); int result = calc.Add(10, 20); No exemplo acima declaramos uma varivel calc, cujo tipo esttico dinmico. Sim, voc leu corretamente que ns escrevemos estaticamente nosso objeto a ser dinmico. Teremos ento dinmico usando mtodo invocao para chamar o mtodo Add e em seguida, dinmico converso para converter o resultado da dinmica de uma invocao digitado estaticamente inteiro. Voc est ainda encorajado a usar tipagem esttica sempre que possvel, porque os benefcios que oferecem lnguas escrita estaticamente ns. Usando C # 4,0, no entanto, deve ser menos doloroso nessas ocasies em que voc tem de interagir com objetos dinamicamente digitados. Outro grande benefcio do uso de C # 4.0 que a linguagem suporta agora facultativa e parmetros nomeados e por isso vamos agora dar uma olhada em como esta caracterstica ir mudar a maneira de conceber e escrever o seu cdigo. Um desenho padro voc ver como muitas vezes que um determinado mtodo est sobrecarregado, porque o mtodo deve ser chamado com um nmero varivel de par-

int

sum

calc.Add(10,

20);

Nosso cdigo fica ainda mais interessante se a classe Calculadora no escrita estaticamente, mas est escrito em COM, Ruby, Python, ou mesmo JavaScript. Mesmo se soubssemos que a classe uma calculadora. objeto NET, mas no sabemos qual o tipo especfico que , ento, teria de utilizar reflection para descobrir atributos e o tipo em tempo de execuo e, em seguida, dinamicamente invocar o mtodo Add.
object calc = GetCalculator(); Type type = calc.GetType(); object result = type.InvokeMember ("Add",BindingFlags.InvokeMethod, null,new object[] { 10, 20 });
int sum = Convert.ToInt32(result);

Codificando.net e-magazine

Se a calculadora classe foi escrito em JavaScript, ento nosso cdigo ficaria algo

www.codificando.net

Ago / Set - 2009

19

C#4.0

e-magazine

metros. Vamos assumir que temos o seguinte mtodo OpenTextFile juntamente com trs sobrecargas do mtodo com diferentes assinaturas. Sobrecargas do mtodo primrio em seguida chame o mtodo primrio de passar os valores padro no lugar desses parmetros para os quais um valor no foi especificado na chamada para o mtodo sobrecarregado.
public StreamReader OpenTextFile (string path, Encoding encoding, bool detectEncoding, int bufferSize) { } public StreamReader OpenTextFile (string path, Encoding encoding, bool detectEncoding) { } public StreamReader OpenTextFile (string path, Encoding encoding) { } public StreamReader OpenTextFile (string path) { }

mo tal, o mtodo pode ser chamado OpenTextFile omitindo um ou mais dos parmetros opcionais, enquanto especificando tambm outro parmetro pelo nome. OpenTextFile("foo.txt", bufferSize: 4098); Encoding.UTF8,

O nome dos argumentos deve ser fornecido somente estncia ltima embora desde quando eles podem ser fornecidas em qualquer ordem. Se voc alguma vez escrito qualquer cdigo que executa um certo grau de interoperabilidade COM voc provavelmente visto como o cdigo seguinte.
object filename = "test.docx";
object missing = System.Reflection.Missing.Value; doc.SaveAs(ref filename, ref missing, ref missing, ref missing,ref missing, ref missing, ref missing,ref missing, ref missing, ref missing,ref missing, ref missing, ref missing,ref missing, ref missing, ref missing);

No C # 4.0 O mtodo primrio pode ser refactored para usar parmetros opcionais como mostra o seguinte exemplo: public StreamReader OpenTextFile(string path,Encoding encoding = null,bool detectEncoding = false,int bufferSize = 1024) { } Perante esta declarao, agora possvel chamar o mtodo OpenTextFile omitindo um ou mais dos parmetros opcionais. OpenTextFile("foo.txt", Encoding.UTF8); Tambm possvel usar o C # 4,0 suporte para parmetros nomeados e, co-

Com os parmetros opcionais e nomeado linguagem C # 4,0 prev melhorias significativas na interoperabilidade COM e, portanto, o cdigo acima pode agora ser refactored tal que o convite apenas: doc.SaveAs("foo.txt"); Ao realizar a interoperabilidade COM voc perceber que voc capaz de omitir a ref modifer embora o uso do modificador ref ainda necessrio quando no exeram COM interoperabilidade. Com as verses anteriores das tecnologias era necessrio tambm um navio Primary Interop Assembly (PIA), juntamente com

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

20

C#4.0

e-magazine

o seu aplicativo gerenciado. Isso no necessrio quando se utiliza C # 4.0, porque o compilador ir injetar vez o interop tipos diretamente para as Assembly de seu aplicativo gerenciado e s vai injetar os tipos que voc est usando e no de todos os tipos encontrados no interior da PIA. O ltimo aperfeioamento lingstico que vamos explorar co-varincia e contra-varincia e vamos comear por explorar com a co-varincia. NET matrizes.
string[] names = new string[] {
"Anders Hejlsberg", "Mads Torgersen", "Scott Wiltamuth", "Peter Golde" }; Write(names);

tribuir um inteiro matriz de strings uma ArrayTypeMismatchException jogado.


objects[0] = 1024;

Em ambos os C # 2.0 e C # 3,0 invariantes so genricos e, portanto, um erro compilador iria resultar o seguinte cdigo:
List<string> names = new List<string>(); Write(names);

Quando o Escreve mtodo definido como: public void Write(IEnumerable<object> objects) { } Generics com C # 4,0 apoiar agora segura co-varincia e contra-varincia atravs do uso das palavras-chave dentro e fora contextuais. Vamos dar uma olhada em como isso muda a definio do <T> IEnumerable e IEnumerator <T> interfaces.

Desde verso 1.0 em um array o. NET Framework foi co-variante significando que uma matriz de strings, por exemplo, pode ser passada para um mtodo que espera um array de objetos. Como tal, a matriz acima pode ser transmitida para o seguinte Escreve mtodo que espera um array de objetos.
private void Write(object[] objects) {

Codificando.net e-magazine

public interface IEnumerable<out T> { IEnumerator<T> GetEnumerator (); } public interface IEnumerator<out T> { T Current { get; } bool MoveNext(); }

} Infelizmente, em matrizes. NET no so co-seguro variante como podemos ver na seguinte cdigo. Partindo do pressuposto de que os objetos varivel uma matriz de strings da seguinte ter xito.
objects[0] = "Hello World";

Embora se uma tentativa feita para a-

Voc perceber que o tipo de parmetro T da interface IEnumerable foi prefixado com o fora contextuais palavrachave. Dado que a interface IEnumera-

www.codificando.net

Ago / Set - 2009

21

C#4.0

e-magazine

ble somente leitura, no h capacidade especificada na interface para inserir novos elementos com a lista, ela segura para o tratamento de algo mais derivados como algo menos derivados. Com a palavra-chave fora contextuais estamos afirmando que contratualmente IEnumerable <out T> segurana covariante. Dado que IEnumerable <out T> segurana co-variante podemos agora escrever o seguinte cdigo:
IEnumerable<string> names = GetTeamNames(); IEnumerable<object> objects = names;

dentro e para fora contextuais tais como palavras-chave em tipos IComparer <in T>. O. NET Framework equipa est a atualizar os tipos, no mbito de ser coseguro e contra-variante. Eu mostrei aqui alguns recursos que voc pode achar til para explorar as capacidades da linguagem de programao C # 4,0 e gostaria de encoraj-lo a tambm fazer download e instalar a verso beta. Bons Cdigos... Fabiano Belmonte

Porque a interface IEnumerable <out T> utiliza a palavra-chave no contexto do compilador podem motivo que a atribuio acima seguro. Utilizando a palavra-chave no contexto podemos alcanar seguro contravarincia, ou seja, tratar algo menos derivados como algo mais derivados.
public interface IComparer<in T> { int Compare(T x, T y); }

Senior Architect da InfoMoney.com, especialista em aplicaes e-Business com larga experincia em B2B (Submarino.Com e Saraiva.Com). Trabalha h 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas reas: instituies financeiras (sistema SPB), e-Commerce, gerenciamento logstico entre outras. Trabalhando com Visual Studio desde suas primeiras verses, responsvel pela implementao de uma Metodologia de trabalho e melhoras significativas no resultados e na qualidade do time de Desenvolvimento de muitas empresas por onde passou como (Saraiva.Com) e ferramentas como TFS (Team Foundation Server). Foi palestrante em eventos como Codificando. NET 2008 e outros eventos sobre Tecnologia .NET.

Codificando.net e-magazine

Dado que IComparer <in T> segura contra-variante podemos agora escrever o seguinte cdigo:
IComparer<object> objectComparer = GetComparer(); IComparer<string> stringComparer = objectComparer;

Embora o actual build CTP do Visual Studio 2010 e do. NET Framework 4,0 tem suporte limitado para a varincia melhorias em C # 4,0 a prxima verso beta permite que voc use o novo para

www.codificando.net

Ago / Set - 2009

22

e-magazine

Tecnologias para o Desenvolvimento de Jogos Digitais


Introduo sobre tecnologias de jogos.
Por: Tiago Tiguen Sinzato / Juliano Schimiguel

Introduo Motor de jogo (tambm conhecido pelo termo em ingls, game engine, ou simplesmente engine) um programa de computador e/ou conjunto de bibliotecas, para simplificar e abstrair o desenvolvimento de jogos ou outras aplicaes com grficos em tempo real, para videogames e/ou computadores rodando sistemas operacionais. A funcionalidade tipicamente fornecida por um motor de jogo inclui: um motor grfico para renderizar grficos 2D e/ou 3D, um motor de fsica para simular a fsica ou simplesmente para fazer deteco de coliso, suporte a animao, sons, inteligncia artificial, networking, gerncia de memria, gerncia de arquivos, gerncia de linha de execuo, um grafo de cena e, suporte a uma linguagem de script. O processo de desenvolvimento de jogos freqentemente agilizado quando usado o mesmo motor de jogo para criar diferentes jogos. A maioria dos motores de jogo so distribudos em forma de API (Application Programming Interface ou Interface de Programao de Aplicativos), porm, alguns motores so

distribudos em conjunto de ferramentas, que agilizam e simplificam ainda mais o desenvolvimento do jogo, como por exemplo: IDEs, scripts pr-programados, e programas que empacotam e deixam pronto o jogo para distribuio. Esses motores completos so chamados de Middleware. Pelo fato de serem distribudos com outras ferramentas, eles suprem a necessidade da compra de outras ferramentas, reduzindo os custos. Como exemplo, pode-se citar: Blender, Gamebryo, Havok, RAD Game Tools, RenderWare e, Unreal Engine. Um motor de jogo pode ser dividido em duas principais categorias: motor grfico e motor de fsica. Motores grficos lidam com os grficos, sendo responsveis de processar dados abstrados de alto nvel e gerar dados de baixo nvel intendveis pelo hardware. Como exemplo, pode-se citar: Crystal Space, Irrlicht, OGRE e RealmForge. Motores de fsica lidam com a fsica, sendo resposveis por simular aes reais, atravs de variveis como gravidade, massa, frico, fora e flexibilidade. Como exemplo, pode-se citar: Bullet, COLLADA e ODE. Histria

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

23

Tecnologia para Desenvolvimento de Jogos Digitais

e-magazine

O termo game engine originou-se no meio da dcada de 1990, especialmente em conexo com jogos 3D, como tiro em primeira pessoa a exemplo dos jogos Doom e Quake que ao invs de construir o jogo do zero, outros desenvolvedores licenciaram os ncleos destes jogos, usando-os como base para seus prprios motores de jogo. Com o amadurecimento, os motores de jogo deixaram de se restringir ao desenvolvimento de jogos. Eles so usados em outras reas, como treinamento, uso mdico e simulaes militares. Como a maioria dos jogos 3D esto, cada vez mais, se limitando ao poder da GPU e PPU(Graphics Processing Unit ou Unidade de Processamento Grfico/Unidade de Processamento de Fsica), as perdas de desempenho das linguagens de programao de alto nvel, como C#, Java e Python, deixam der ser vlidas, enquanto os ganhos de produtividade oferecidos por essas linguagens trabalham em benefcio dos desenvolvedores de motores de jogo. Abstrao de hardware Motores de jogo fornecem abstrao de hardware, permitindo a um programador desenvolver jogos sem a necessidade de conhecer a arquitetura da plataforma-alvo, que pode ser um console ou um sistema operacional. Por esse motivo, muitos motores so desenvolvidos a partir de API existentes, como OpenGL, DirectX, OpenAL e SDL, ou at mesmo a partir de outro motor, que pode facilitar o seu desenvolvimento. A abstrao de hardware tambm essencial para o desenvolvimento de motores de jogo multiplataforma.

Motores de tiro em primeira pessoa Um bom e conhecido subconjunto de motores de jogo so os motores de tiro em primeira pessoa 3D. Enquanto jogos de estratgia em tempo real e simuladores de vo apostam na qualidade grfica, jogos deste gnero apostam na ao. O motor mais conhecido deste gnero o Doom. A classificao de bom motor do gnero exigente, pois o que considerado avanado em um ano, no ano seguinte pode ser considerado padro. comum serem criados novos motores com base em velhos motores, misturando novas funes, mas mantendo algumas antigas. Quando um motor mantm desenvolvimento focado nos grficos, o jogo pode perder no quesito ao. Um bom exemplo disso o jogo CellFactor: Revolution, que teve seu desenvolvimento parado; o jogo agora est disponvel para download completo e gratuito. Principais motores de jogos Motores tradicionais: 3D GameStudio C4 Engine - DX Studio - Esperient Creator Irrlicht - Ketsji(Blender) - NeoAxis Engine - Panda3D - RPG Toolkit Torque Game Engine - Truevision3D Unity - Unreal Engine Motores de fsica: Bullet - Havok ODE Motores grficos: Crystal Space - OGRE OpenSceneGraph Motores proprietrios: 3D GameStudio -

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

24

Tecnologia para Desenvolvimento de Jogos Digitais

e-magazine

C4 Engine - DX Studio - Esperient Creator - Havok - NeoAxis Engine - Torque Game Engine - Truevision3D - Unity Unreal Engine Motores cdigo aberto: Bullet - Crystal Space - Irrlicht - Ketsji (Blender) - ODE OGRE - OpenSceneGraph - Panda3D RPG Toolkit Desenvolvimento nas plataformas Atuais Cada plataforma possui seu kit de desenvolvimento proprietrio e pago, porm, alm do computador existem alternativas para desenvolver jogos para essas plataformas. Microsoft Xbox 360: Possui seu kit de desenvolvimento profissional, porm com alternativa grtis chamada Microsoft XNA Studio Express, podendo ser desenvolvidos jogos para PC e para Xbox. Sony Playstation 3: A plataforma da Sony uma das mais fechadas, que possui seu kit de desenvolvimento com custo alto. Porm a ultima novidade que sair um concorrente para a ferramenta da Microsoft, XNA chamada Phyre Engine que possibilitar usurios a criarem seus jogos utilizando toda a potncia do Playstation 3. Sony Playstation Portable: Tambm como o Playstation 3, o Portable da Sony tambm bem fechado e o desenvolvimento gratuito nessa plataforma feito de maneira ilegal atravs de ferramentas

criadas por usurios que utilizam falhas do console para rodar esse tipo de aplicativo. Nintendo Wii: A Nintendo tambm possui o seu kit de desenvolvimento profissional, e devido s duas maiores concorrentes estarem brigando pelo desenvolvimento gratuito comearam rumores de que o Wii tambm ter a sua ferramenta para usurios. Nintendo DS: Assim como o PSP, o console porttil da Nintendo no possui qualquer tipo de ferramenta para usurios desenvolverem jogos ou aplicativos sem utilizar o kit oficial.

Computador: A plataforma PC a mais aberta, e possui uma quantidade muito grande de opes para desenvolvimento no s de jogos amadores como profissionais de baixo ou nenhum custo. Celular: O desenvolvimento de jogos e aplicativos para celular cresceu muito devido a evoluo rpida desses dispositivos, hoje tambm possvel criar jogos em 3D para celulares. As duas plataformas mais utilizadas so a Symbian e o Java (JME), porm a Microsoft anunciou que ser disponibilizada na verso 3.0 do XNA a opo de desenvolvimento de jogos para plataforma Windows Mobile. 6. Ferramentas desenvolvimento para PC Para desenvolver jogos para PC, temos a opo de utilizar diretamente as APIs grficas (DirectX e OpenGL) porm teremos que redesenvolver muita coisa, gastando muito tempo. A opo mais vivel utilizar engines prontas e disponveis para cada parte do Game, essas engines variam de qualidade, linguagem, facilidade, preo e complexidade. Cabe a

Codificando.net e-magazine

www.codificando.net

Ago / Set - 2009

25

Tecnologia para Desenvolvimento de Jogos Digitais

e-magazine

ns test-las e encontrar a engine que mais se adqe as necessidades do Game. Segue uma lista de engines para cada parte: Engines grficas Irrlicht (http://irrlicht.sourceforge.net), muito boa engine grfica em C++, foco em 3D, intuitiva e fcil de usar; OGRE (http://www.ogre3d.org), engine grfica muito experiente em C++, foco em 3D, complexa e com bastante material; XNA (http://msdn.microsoft.com/xna/), engine grfica em C# da Microsoft, foco em 3D, que compila para ambiente PC e XBOX360, SDL (http://www.libsdl.org), engine grfica e sonora simples de usar, foco em 2D, nativa em C++; Allegro (http://alleg.sourceforge.net), engine grfica experiente e simples de usar, foco em 2D, nativa em C++; GLScene (http://www.glscene.org), engine grfica em OpenGL muito completa, foco em 3D, desenvolvida para Delphi; Game Maker (http:// www.yoyogames.com) O Game Maker escrito em Delphi, motivo pelo qual no tem verses para outros sistemas que no a Microsoft Windows. Engines fsicas ODE (http://www.ode.org), engine fsica totalmente open e free nativa em C++, simples e fcil de usar; Newton (http:// www.newtondynamics.com), engine de fsica muito completa e fcil de usar nativa em C++, uso profissional pago; Ageia (http://www.ageia.com), engine de fsica tambm muito completa e fcil de usar nativa em C++, recentemente

comprada pela Nvidia, uso profissional pago; Engines sonoras: Irrklang (http://www.ambiera.com/ irrklang/), engine de som criada em C++ para trabalhar especialmente com a Irrlicht; Fmod (http://www.fmod.org), engine muito experiente em C++; OpenAL (http://www.openal.org), engine muito experiente em C++; SDL (http://www.libsdl.org), engine grfica e sonora simples de usar, nativa em C++. Aps relacionar as engines que iremos utilizar, basta escolher a IDE C++ preferida para iniciar o desenvolvimento: Microsoft C++ Express Edition (http:// www.microsoft.com/express/vc/ ), grtis para o uso somente no Windows; Code::Blocks C++ (http:// www.codeblocks.org), grtis e presente no Windows e no Linux; Dev C++ (http://www.bloodshed.net/

Codificando.net e-magazine

devcpp.html), grtis e somente para Windows.

7. Ferramentas para desenvolvimento rpido de Games Uma alternativa rpida para quem no possui uma equipe ou tempo para desenvolvimento so ferramentas que possuem um pr-formato de game ou funcionalidades. Essas ferramentas renem vrias engines e disponibilizam um framework para o desenvolvimento rpido de um Game. Segue alguns exemplos:

www.codificando.net

Ago / Set - 2009

26

Tecnologia para Desenvolvimento de Jogos Digitais

e-magazine

Game Maker (http://yoyogames.com), ferramenta de desenvolvimento de jogos plataforma Windows; RPG Maker (http://tkool.jp/products/rpgxp/ eng/), ferramenta para desenvolvimento RPGs; Mugen (http://www.mgbr.net), ferramenta para desenvolvimento de jogos de luta; 3D Game Studio (http:// www.3dgamestudio.com), ferramenta para desenvolvimento de jogos 2D e 3D; True Vision 3D (http:// www.truevision3d.com), ferramenta para desenvolvimento de jogos 2D e 3D. 8. Ferramentas para desenvolvimento para Celular

Celular para portteis e com isso a indstria internacional de jogos est crescendo muito a cada dia, e desde 2003 ela j rende mais que a indstria de filmes. A previso para os prximos cinco anos que a rea cresa 20% ao ano. S no ano de 2007, foram movimentados 50 bilhes de dlares. O surgimento de novas tecnologias tem atuado como um grande catalisador para a convergncia digital ao tornar o desenvolvimento de aplicaes para sistemas embarcados to fceis e acessveis ao pblico quanto no caso dos PCs. Por outro lado, a abertura desse mercado, aliado ao sucesso vivenciado pelo entretenimento digital na indstria de PCs, um forte sinal do sucesso esperado da rea de jogos para PCs, consoles e Celulares. Referncias http://www.gamedev.com.br/ http://pt.wikipedia.org/wiki/Brasil Tiago Tiguein Sinzato
Aluno do Curso de Tecnologia em Anlise e Desenvolvimento de Sistemas Universidade Cruzeiro do Sul, Campus Anlia Franco So Paulo, SP.

Para desenvolver em JME, basta baixar o Eclipse IDE junto com o plugin EclipseME e o Java Wireless Toolkit da Sun Com esses aplicativos instalados, voc ir possuir uma estao completa de desenvolvimento e emulao de aplicativos e games em JME. A grande maioria dos dispositivos mveis de hoje possuem suporte a JME. http://www.eclipse.org/ http://www.eclipseme.org http://java.sun.com/products/sjwtoolkit/ Concluso Estamos na stima gerao de videogames, na ltima gerao temos: Sony Playstation 3, Microsoft Xbox 360 e Nintendo Wii em consoles, e: Playstation Portable (PSP), Nintendo DS e

Codificando.net e-magazine

Prof. Dr. Juliano Schimiguel


Professor do Curso de Tecnologia em Anlise e Desenvolvimento de Sistemas Universidade Cruzeiro do Sul, Campus Anlia Franco So Paulo.

www.codificando.net

Ago / Set - 2009

27

e-magazine

Introduo ao LINQ
Conhea melhor essa nova tecnologia de manipulao de dados.
Por: Milton C.Filho

Salve galera, Iniciaremos hoje uma srie de artigos sobre LINQ abordando seus princpios, mecanismos, utilizao e dicas de boas prticas. No artigo de hoje falarei o que o LINQ e suas principais utilizaes. Vamos comear ?!

querys SQL gerando assim todas as consultas e querys de manipulao (Insert, Update, Delete) . Tambm possibilita mapear toda a sua base de dados e transformar as tabelas em classes. Desta forma voc poder trabalhar na sua base de dados da mesma forma que trabalha com classes do .Net Framework ou classes prprias. -LINQ To XML Usado para manipular aquivos XML, podendo assim consultar, criar e inserir dados em arquivos XML de uma maneira prtica. -LINQ To Objects Usado para manipular colees de objetos do .Net Framework ou colees prprias, ou seja, voc pode manipular qualquer coleo de objetos desde que este objeto herde da Interface INumerable<T>. -LINQ To DataSet Usado para manipular DataSets podendo realizar consultas nas tabelas do DataSet. -LINQ To Entities. Usado para manipular dados de outras bases de dados podendo mapear toda a sua base de dados em classes do .Net
Ago / Set - 2009

O que LINQ? LINQ (Language Integrated Query) so recursos do framework 3.5 que proporciona para o desenvolvedor uma forma prtica de realizar consultas, desde consultas em base de dados at consultas em arquivos XML, colees de objetos etc. Sua sintaxe bem parecida com a do SQL e traz a vantagem de poder trabalhar dentro do Visual Studio com a linguagem de sua escolha, tornando assim o entendimento e o aprendizado bem mais fcil. O LINQ apresentado de cinco principais formas: LINQ To SQL Usado para manipular bases de dados SQL Server, de forma bem prtica e rpida converte as querys do LINQ em

Codificando.net e-magazine
|

www.codificando.net

28

Introduo ao LINQ

e-magazine

Framework e trabalhar com essas classes fazendo consultas, inseres, excluses, atualizaes de uma forma bem prtica. Nos prximos artigos aprenderemos mais alguns conceitos e veremos a utilizao do LINQ na prtica. Espero que tenham gostado e at o prximo. Milton C. Filho
Cursando o 6 semestre do curso de Sistemas de Informao na faculdade Barretos, formado em tcnico em informtica pelo Centro Paula Souza de Barretos, trabalha com desenvolvimento de sistemas web com o foco tecnologias Microsoft.

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

29

e-magazine

Explorando Microsoft Reporting Services 2005.


Conhea esta poderosa plataforma de relatrios.
Por: Caio Azevedo

Ol pessoal, iniciamos aqui uma srie de artigos onde faremos uma abordagem prtica e terica, dessa poderosa e pouco explorada que o Reporting Services. Nesse primeiro momento veremos a verso do SQL 2005, por ainda ser a ferramenta padro de banco de dados na maioria dos nossos clientes, mas em breve faremos uma explanao da verso 2008, bom divertimento.

XML criado pela Microsoft. E, uma vez que o ambiente do RS esta intimamente integrada plataforma .net framework, suas ferramentas de desenvolvimento so os Visual Studio 2005 e 2008, ainda que o prprio SQL Server 2005 tenha um shell do Visual Studio 2005 chamado Business Intelligence Development Studio (BIDS). Com o RS possvel criar solues de relatrios como parte de uma aplicao, os chamados Local Mode, que so similares ao modelo utilizado no Cristal Reports ou Microsoft Access, alm desse, temos o modelo de relatrios remoto que operam como uma aplicao web hospedados em um Web Application Server (IIS) e acessveis via protocolo HTTP. Finalmente temos atravs da ferramenta Report Builder, uma forma de disponibilizar para os usurios criar seus prprios relatrios, atendendo assim ambientes corporativos, desenvolvedores, arquitetos e usurios. Para qualquer soluo de relatrios que faz uso do ambiente do RS faz-se uso dos elementos apresentados na figura abaixo, sendo que a interao entre esses elementos varia conforme o modelo do relatrio, mas eles sempre estaro presentes, do processo de criao ao consuAgo / Set - 2009

Parte 1 Introduo ao reporting services O Microsoft SQL Reporting Services, RS, uma plataforma de relatrios completa. Parte integrante do framework de Business Intelligence baseada em servios, ferramentas, APIs para desenvolvimento, publicao e gerenciamento dos relatrios, o RS foi inicialmente apresentando como um add-on do SQL Server 2000 no inicio de 2000. Atualmente, sua verso mais recente, a do SQL 2008, mas aqui cobriremos aquela, parte integrante do SQL Server 2005, por ser a soluo de banco de dados mais comumente utilizada. Os relatrios do RS so baseados na linguagem RDL (Report Definition Language), que nada mais que um dialeto

Codificando.net e-magazine
|

www.codificando.net

30

Explorando Microsoft Reporting Services 2005

e-magazine

mo pelo usurio final.

So as estruturas em memria que criamos para armazenar temporariamente o resultado das consultas que sero visualizadas nos relatrios, essas consultas so implementadas na forma de stored procedures, views, instrues T-SQL alm de cubos OLAP. Db access engine So os diversos mecanismos possveis para acesso aos dados, corresponde s fontes de dados: de acesso ao SQL Server, Oracle, OLE DB, ODBC bem como Analysis Server Databases OLAP. Repositrios de dados

Figura 1.1 Correlao entre elementos do Reporting Services

Na figura 1.1, temos o diagrama da relao entre os principais elementos de uma soluo baseada em reporting services, relao que detalharemos a seguir: Relatrio Correspondem ao front-end dos dados devidamente formatados e que correspondem a uma representao grfica, funcional e operacional de um arquivo RDL, com caractersticas especificas conforme seu tipo. Os relatrios podem ser invocados por uma aplicao cliente, seja ele uma aplicao Windows, Web, por qualquer tecnologia que consuma WebService ou mesmo pelo ambiente do prprio report ing services. Aplicao cliente So as aplicaes capazes de implementar, gerenciar e visualizar os relatrios, sendo os principais, o Report Manager, o BIDS, Visual Studio,aplicaes .net Windows e web por meio do controle ReportViewer, alm do aplicativo Office-Model Report Builder. Estrutura de dados voltio

So as fontes de dados das quais se extrai as informaes para os relatrios criados e acessados via os DB Access Engines. O RS suporta alguns dos mais teis tipos de relatrios auxiliando os usurios na melhor distribuio das informaes, so eles: Tabular: utilizado para distribuio das informaes como uma tabela, com um numero de colunas previamente estabelecidos, similar aos dados do excel; Livre: as informaes so posicionadas arbitrariamente como for melhor conveniente para o usurio, por exemplo, relatrios do tipo, master-detail; Chart: aos dados so apresentados graficamente; Correlao: as informaes do relatrio so correlacionadas nos dois eixos cartesianos formando uma matriz, por exem-

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

31

Explorando Microsoft Reporting Services 2005

e-magazine

plo, um relatrio das condies de temperatura de um conjunto de cidades; DrillDown: relatrios que permitem sees expansveis, tais como relatrios de correlao, produtos x vendas, que permitem exibir subcategorias dos produtos;
Figura 1.5 relatrio interativo

Interativos: so relatrios que permitem uso das funcionalidades especiais, tais como documentMap, links, dentre outras, por exemplo relatrios similar ao modo de exibio de documento PDFs com o Adobe Reader com marcadores.

No menos teis so as funcionalidades nativas dos relatrios, tais como parametrizao das pesquisas para campos datas, selees mltiplas e texto livre; recurso de navegao entre pginas; zoom; pesquisa; exportao para diversos formatos (XML, CVS, TIFF, PDF, Excel); ordenao por colunas; formatao condicional, dentre outros.

Figura 1.2 relatrio tabular

Codificando.net e-magazine

Figura 1.6 funcionalidades Figura 1.3 relatrio de correlao

isso ai pessoal, at aqui s comeamos nossa explorao ao fantstico mundo do reporting service, na prxima edio veremos o primeiro dos modelos de relatrios, os ditos Local Mode abrao e at l e lembrem-se may the force be with you.
Figura 1.4 relatrio drilldown

www.codificando.net

Ago / Set - 2009

32

Explorando Microsoft Reporting Services 2005

e-magazine

Caio Azevedo
Graduado em Cincia da Computao, Engenharia Civil e louco por cincias exatas em especial fsica e matemtica. Coordenador da Clula Microsoft da Magna Sistema e Arquiteto Microsoft, palestrante, tecno-colunista, instrutor da treinando .net e membro da comunidade codificando.net. MCP, MCAD, MCSD, MCTS e MCPD. E fantico pela srie star wars may the force be with you. Blog: http://caioadotnet.blogspot.com/

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

33

e-magazine

Servidores no Contexto de Redes Plataforma Microsoft


Aprenda alguns conceitos de Rede.
Por: Danilo Marion Munhz / Juliano Schimiguel

1. Introduo Redes de computadores esto em todo lugar, como por exemplo: em grandes, mdias ou pequenas empresas, escolas, instituies e universidades entre outros lugares. Atualmente muito importante entender o que so redes, sua utilizao e seu funcionamento podendo assim se tornar um especialista em redes. O artigo aborda um tema muito importante dentro do campo da informtica, pois uma rede de computadores hoje o mtodo mais fcil e muito utilizado para acelerar o processo de transmisso e compartilhamento da informao. O objetivo do artigo demonstrar que a utilizao dela pode ser positiva, que uma rede baseada em servidor mais vantajosa, e o quanto a praticidade de uma Rede Microsoft, a princpio utilizando o Software MS Windows NT Server, e tambm os atuais SQL Server 2008, Windows Server 2008 Standard. Computadores conectados em rede podem trocar informaes de maneira fcil e rpida, pois a troca de informaes entre eles se torna mais eficiente. As informaes so direcionadas de um computador para outro atravs da rede por intermdio de um usurio. Este artigo trata

de mostrar como se faz e como funciona uma Rede Microsoft, tambm mostrando que as redes de computadores so um sistema sofisticado e complexo de ferramentas muito importantes. 2. Conceito de Redes LANs 2.1 Rede Ponto-a-Ponto As redes LANs (Local rea Network) como so chamadas as redes locais, caracterizam-se como sendo redes que permitem a interconexo de equipamentos de comunicao de dados numa pequena regio. Costuma-se considerar pequena regio distncias entre 100m e 25km. Os dois maiores tipos de LANs so: Rede Ponto-a-Ponto e Rede Baseada em Servidor. Uma rede ponto-a-ponto normalmente definida pela falta de um servidor dedicado que determine um controle central sobre a rede. No existem servidores em uma rede ponto-a-ponto; usurios simplesmente compartilham recursos, como impressoras, espao em disco. Essas redes so organizadas como Grupos de Trabalho (Workgroups). Um Workgroup possui um nvel de controle de segurana muito pequeno. No existe um controle

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

34

Servidores no Contexto de Redes Plataforma Microsoft

e-magazine

central para validar quais usurios podem ou no utilizar a rede e seus recursos. Quando estamos logados neste tipo de rede, temos acesso a todos os recursos compartilhados da rede que no exigem uma senha especfica para controlar qual usurio poder ou no utilizar determinado recurso. Para controlar o acesso individual ao recurso compartilhado, devemos especificar uma senha para cada recurso da rede, pois como j vimos anteriormente, no existe um controle central sobre a rede. Isto pode ser bastante inconveniente. Redes ponto-a-ponto no so otimizadas para compartilhar recursos. Geralmente, quando alguns usurios esto acessando um recurso em determinado equipamento da rede, o usurio daquele equipamento nota uma significante degradao da performance no equipamento. Este tipo de rede tambm tem muita limitao no nmero de licenas para que poucos usurios consigam acessar simultaneamente o mesmo recurso. Elas tm algumas vantagens, especialmente para pequenas empresas que no querem fazer um grande investimento em hardware e software servidor. Uma rede baseada em servidor normalmente definida pela presena de servidores na rede que provm segurana e administrao centralizada para a rede. Os servidores tm diversos papis na rede. Redes baseadas em servidores possuem clientes que utilizam os servios providos por estes, como armazenamento de arquivos e impresso. Clientes so computadores menos potentes que computadores servidores.

2.2 Rede Baseada em Servidor Uma rede baseada em servidor que utiliza o software MS Windows NT Server, pode ser organizada em domnios, que so vrios computadores clientes conectados a um servidor que controla a segurana na rede. A segurana do domnio e permisso de logon so controlados por servidores especiais chamados de Controladores de Domnio (Domain Controlers). Existe um Controlador de Domnio Mestre (Master Domain Controler) Chamado de PDC (Primary Domain Controler) ou (Controlador de Domnio Primrio) que pode ser assistido pelos Controladores de Domnio Secundrios, chamados de BDC (Backup Domain Controlers) ou (Controladores de Domnio Backup). Os usurios no podem acessar os recursos da rede enquanto no forem validados pelo PDC. Redes baseadas em servidores possuem grandes vantagens: Servidor dedicado otimizado; Armazenamento de arquivos centralizado, permitindo Backup de dados Importantes; Fcil gerenciamento para um grande nmero de usurios; Exigncia de senha para acesso aos recursos compartilhados da rede.

Codificando.net e-magazine

Redes baseadas em servidores no possuem muitas desvantagens, entretanto tambm importante conhec-las: Alto investimento para o hardware dedicado (Servidor); Alto investimento para o sistema operacional servidor e licenas para os cliAgo / Set - 2009

www.codificando.net

35

Servidores no Contexto de Redes Plataforma Microsoft

e-magazine

entes; Requer um Administrador de Redes dedicado.

As estaes de trabalho so os computadores clientes da rede e normalmente no compartilham recursos para a rede. Os clientes da rede rodam sistemas operacionais como MS-DOS, MS-Windows 95, MSWindows 98, MS Windows NT Workstation e s vezes podem ter o sistema operacional MS-Windows NT Server. Em uma rede local Microsoft, podemos ter clientes Macintosh e Novell, para utilizar ferramentas de: Desenvolvimento de Sistemas; Consulta a Banco de Dados; Apresentao e Anlise de Informaes.

Sistema de interrupo; Sistema de I/O assncrono; Dispositivos para facilitar e controlar comunicao; Software para controle de comunicao; Software para controle de banco de dados; Multiprogramao e esquema de prioridade; Compartilha recursos; Define os tipos de interconexo, sistema operacional, protocolos e at aplicativos a serem usados na rede; SGBD (Sistema Gerenciador de Banco de Dados; Servidor de Arquivos e Impresso; Servidor de Comunicao; E-mail.

Os servidores da rede so mquinas mais potentes que os clientes que compartilham recursos para a rede como: impressoras, discos entre outros. Em uma rede Microsoft o servidor ter o sistema operacional MS-Windows NT Server como PDC. Tambm podemos ter servidores Novell e Unix em uma rede Microsoft, sendo que para conversar com Novell a Microsoft prov um protocolo que possibilita a conexo com esses servidores. No servidor Unix necessrio ter o software SAMBA instalado e configurado corretamente para que mquinas com sistemas operacionais da Microsoft possam acess-lo. Abaixo temos as caractersticas necessrias para que o SAMBA funcione corretamente: Geralmente possui um sofisticado sistema operacional; Grande memria interna; Armazena grande quantidade de informaes;

2.3 Protocolos Os Protocolos so regras e procedimentos para comunicao. A utilizao das regras de comunicao aplica-se da mesma maneira no ambiente de computadores. Quando diversos computadores esto interligados em rede, as regras e procedimentos tcnicos que administram sua comunicao e interao so chamados de protocolos. Toda a operao tcnica de transmisso de dados atravs da rede precisa ser dividida em etapas sistemticas distintas. Em cada uma delas, ocorrem certas aes distintas que no podem ocorrer em nenhuma outra. Cada uma tem suas prprias regras e procedimentos, ou protocolo. Elas devem ser utilizadas em uma ordem consistente, que seja igual em todos os computadores da rede. No computador remetente, essas etapas devem
Ago / Set - 2009

Codificando.net e-magazine
|

www.codificando.net

36

Servidores no Contexto de Redes Plataforma Microsoft

e-magazine

ser realizadas de cima para baixo. Na mquina receptora, devem ser realizadas de baixo para cima. NetBEUI o padro e significa NetBIOS Extended User Interface. A sigla NetBIOS significa Network Basic Input/Output System. O protocolo NetBEUI implementa o protocolo de transporte NetBIOS Frame (NBF), que foi desenvolvido pela IBM para trabalhar em grupos de trabalho utilizando OS/2 e LAN Manager. O protocolo NetBEUI foi tambm desenvolvido para trabalhar em grupos de trabalho com at 200 computadores. Neste protocolo no pode ser roteado entre redes, isto , est limitado a pequenas redes locais. A verso 3.0 do NetBEUI uma atualizao da Microsoft do mesmo protocolo da IBM. Ele fornece ferramentas para que um programa estabelea uma sesso com outro programa atravs da rede. muito popular porque muitos programas aplicativos o suportam. Alm disso, o protocolo NetBEUI um protocolo simples, rpido e eficiente que fornecido com todos os produtos de rede da Microsoft. Est disponvel desde meados dos anos 80 e foi fornecido com o primeiro produto de rede Microsoft, o MSNET. As vantagens desse protocolo incluem seu pequeno tamanho de pilhas (importante para computadores baseados em MS-DOS), sua velocidade de transferncia de dados na mdia da rede, fcil implementao e sua compatibilidade com todas as redes baseadas em Microsoft. Em ambos os computadores envolvidos no processo de transmisso de dados, necessrio seguir cada etapa da mesma maneira,

assim os dados recebidos tero a mesma aparncia de quando enviados. Portanto, necessrio que os dois computadores envolvidos utilizem o mesmo protocolo, pois protocolos diferentes realizaro etapas diferentes no processo de envio e recebimento dos dados. 2.4 MS Windows NT O Windows NT Workstation 4.0, tem a mesma interface conhecida e funcional apresentada pelo Microsoft Windows 95. Mas por trs dele est o robusto sistema operacional de 32 bits e multitarefa que a Microsoft criou para usurios avanados. Essa verso fundamentou-se nos mesmos princpios de projeto das verses anteriores e conserva seus avanos mais importantes. O Windows NT Workstation continua sendo compatvel com muitos outros sistemas operacionais, sistemas de arquivos e redes. Ele roda em computadores com conjuntos de instrues complexas (Complex Instruction Set Code CISC) e computadores com conjuntos de instrues reduzidas (Reduced Instruction Set Code RISC). O Windows NT tambm suporta a computao de alto desempenho, fornecendo suporte de kernel ao multiprocessamento simtrico. Windows NT um sistema operacional 32-bits multitarefa, que faz parte da famlia de sistemas operacionais Microsoft. E Est disponvel em duas verses: Windows NT Workstation, Desenvolvido para trabalhar como membro de uma rede organizada em Grupo de Trabalho (Workgroup), como um cliente de um domnio WinAgo / Set - 2009

Codificando.net e-magazine
|

www.codificando.net

37

Servidores no Contexto de Redes Plataforma Microsoft

e-magazine

dows NT Server, como cliente de uma rede Novell NetWare, ou como uma estao de trabalho stand-alone. recomendado para usurios que precisam de um sistema operacional com um alto nvel de segurana; Windows NT Server, Muito idntico ao Windows NT Workstation, mas com alguns recursos que habilitam o Windows NT Server a trabalhar como um sistema operacional de rede (NOS Network Operating System).

Windows NT um sistema operacional seguro para microcomputadores de 32-bits com uma interface grfica. No uma reviso de outra verso do Windows como Windows 3.x ou Windows for Workgroup 3.x, mas um novo sistema operacional. A interface grfica do Windows NT 4.0 utiliza a mesma interface grfica do Windows 95. Diferentemente de muitos sistemas operacionais, Windows NT pode rodar em uma variedade de plataformas. Windows NT foi desenvolvido para rodar em plataformas Intel 80386 DX, 80486 e computadores baseados em processadores Pentium, bem como em computadores RISC (Reduced Instruction Set Computers). Windows NT suporta os seguintes processadores: IBM PowerPC; MIPS R4x00; DEC Alpha AXP; Intel 386 e superiores.

peracional multitarefa oferece os meios para um computador processar mais de uma tarefa de cada vez. Um verdadeiro sistema operacional multitarefa pode executar tantas tarefas quantos forem os processadores. Quando houver mais tarefas do que processadores, o computador precisar alocar os intervalos de tempo de modo que os processadores disponveis dediquem uma determinada parcela de tempo para cada tarefa, alternando entre as tarefas at que tudo esteja terminado. Este sistema faz com o computador parea estar trabalhando em diversas tarefas ao mesmo tempo. O Windows NT 4.0 suporta trs tipos de sistemas de arquivos: File Allocation Table (FAT): Sistema de Arquivos utilizado com o MSDOS; New Technology File System (NTFS): Sistema de Arquivos implementado pelo Windows NT; Virtual File Allocation Table (VFAT): Sistema de Arquivos implementado pelo Windows 95.

Codificando.net e-magazine

O Windows NT pode rodar os seguintes tipos de aplicaes: DOS 16-bits; Windows 3.x 16-bits (Win16); POSIX (Implementao UNIX); OS/2 1.x; New 32-bits (Win32).

O Windows NT pode rodar diferentes tipos de aplicaes simultaneamente. Enquanto o usurio est trabalhando em uma aplicao, outra aplicao pode estar rodando em segundo plano. Um sistema o-

O Windows NT suporta os seguintes protocolos de rede: TCP/IP; DLC;


Ago / Set - 2009

www.codificando.net

38

Servidores no Contexto de Redes Plataforma Microsoft

e-magazine

NetBEUI; AppleTalk; NWLink (Microsofts 32-bits Windows NT IPX/SPX).

Windows NT tem programas internos de monitorao e gerenciamento de rede, que oferecem estatsticas de utilizao e desempenho, alm de registros de evento. Como parte do gerenciamento da rede, importante estabelecer uma linha de base do comportamento tpico da rede. Isso feito ao longo do tempo e deve ser bem documentado. Se realmente surgirem problemas, a linha de base o primeiro recurso a que o administrador pode recorrer para comparao com padres de utilizao diria, gargalos em potencial, contagens de erro e estatsticas gerais de desempenho. Os Softwares de Redes Microsoft de Servidores disponveis no mercado atualmente so os: SQL Server 2008 e o Windows Server 2008 Standard.? 2.5 SQL Server 2008 O SQL Server 2008 baseia-se na viso da Plataforma de Dados da Microsoft, o que ajuda as organizaes no gerenciamento dos dados, em qualquer local e a qualquer momento. Ele permite que voc armazene seus dados a partir de documentos estruturados, semi-estruturados ou mesmo no estruturados, como imagens e msicas, diretamente dentro do banco de dados. O SQL Server 2008 fornece um vasto conjunto de servios integrados que permitem que voc faa muito mais com seus dados como consulta, pesquisa, sincronizao, relatrios e anlises. Os dados podem ser armazenados em grandes servidores de um data center e acessados a partir deles para desktops e dispositivos mveis, fornecendo controle sobre os dados, no importando o local em que esto armazenados.
Ago / Set - 2009

Entre algumas caractersticas do Windows NT Server, podemos citar: Windows NT Server permite estabelecer sesses ilimitadas com clientes, enquanto o Windows NT Workstation permite somente 10; Windows NT Server suporta at quatro processadores, enquanto o Windows NT Workstation pode suportar somente dois; Windows NT Server pode suportar 256 sesses simultneas atravs do RAS, enquanto que o Windows NT Workstation permite apenas uma; Windows NT Server pode importar e exportar replicaes de diretrios, enquanto o Windows NT Workstation pode somente importar.

O Windows NT Server oferece servios para Macintosh, validao de logon e tolerncia a falhas de disco, enquanto o Windows NT Workstation no oferece nada disso. O gerenciamento de rede inclui monitorao do comportamento da rede como parte de uma abordagem especfica resoluo de problemas. Se o planejamento, a monitorao e o gerenciamento forem efetuados de modo adequado, a necessidade de resoluo ser mnima. Ao planejar uma rede, o administrador deve implementar planos e procedimentos para evitar problemas antes que apaream. Estes planos incluem backups, padronizao, atualizaes regulares e documentao. Existem utilitrios disponveis para ajudar o administrador da rede nessas tarefas. O

Codificando.net e-magazine
|

www.codificando.net

39

Servidores no Contexto de Redes Plataforma Microsoft

e-magazine

O SQL Server 2008 permite que voc utilize seus dados em aplicativos personalizados desenvolvidos no Microsoft .NET e Visual Studio, na arquitetura SOA (serviceoriented architecture - arquitetura orientada a servios) e em processos de negcios por meio do Microsoft BizTalk Server, enquanto os profissionais da informao podem acessar os dados diretamente nas ferramentas que utilizam no dia-a-dia, como o Microsoft Office System 2007. O SQL Server 2008 fornece uma plataforma de dados confivel, produtiva e inteligente para todas as suas necessidades relacionadas aos dados. 2.6 Windows Server 2008 Standard O Windows Server 2008 o mais slido sistema operacional da famlia Windows Server j lanado. Com os recursos internos aprimorados para Web e virtualizao, o Windows Server 2008 foi projetado para aumentar a confiabilidade e flexibilidade da infra-estrutura de seus servidores, ajudar a reduzir custos e ganhar tempo. Poderosas ferramentas proporcionam maior controle sobre os servidores, bem como tarefas de gerenciamento e configurao simplificadas. Somado a isso, os recursos de segurana aprimorados agem na proteo do sistema operacional para assegurar a rede e os dados, proporcionando uma base slida e altamente confivel. 2.7 Softwares Servidores Microsoft Os Softwares Servidores Microsoft esto classificados em: Precursores: MS-DOS; OS/2.

Famlia DOS: 1.0; 2.0; 3.0; 95; 98; ME. Famlia NT Servidores: 3.1; 3.5; 3.51; 4.0; 200; Server 2003; Server 2008. Outros: Fundamentals for Legacy PCs; Home Server. Futuros: 7 (Seven); Azure. Cancelados: Neptune, Nashville, Cairo. Existem muitos recursos de suporte de rede que o administrador pode acessar para ajudar a resoluo de problemas, como por exemplo, Microsoft TechNet e BBS. Concluso Redes foram criadas pelo propsito de poder compartilhar informaes, e para que essa informao chegue mais rpido para o seu destino final, e tambm para interligar cada computador e de cada ponto diferente de uma sala at de um continente. No caso de servidores importante ressalvar que dentro de uma empresa, por exemplo, a informao na rede processada com uma maior eficincia e rapidez. Uma rede que funcione por si s ainda no foi inventada. preciso incluir novos usurios. preciso excluir usurios existentes. preciso instalar e compartilhar novos recursos, alm de dar as devidas permisses de acesso. Permisses de acesso so normas associadas ao recurso, geralmente um diretrio de arquivos ou uma impressora. As permisses regulamentam o acesso dos usurios ao recurso. Tudo isso significa que, depois que uma rede estiver instalada, ser indispensvel, a necessidade de gerenci-la.

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

40

Servidores no Contexto de Redes Plataforma Microsoft

e-magazine

Referncias Giungi, D.; Liesenberg, H.K.E.; Pires, F.; Almeida, R.Q. de; Ussami, M.C. (1998). Solues Microsoft para Redes Locais, UNICAMP Universidade Estadual de Campinas [on-line]. Disponvel em: http://www.apostilando.com/ download.php?cod=394&categoria=Redes. ltimo acesso: 14.06.2009. Microsoft, Servidores, Windows Server. Resumos das Edies do Microsoft Windows Server 2008 [on-line]. Disponvel em: http:// www.microsoft.com/brasil/servidores/sql/ overview.mspx. ltimo acesso: 14.06.2009 Microsoft, Servidores, SQL Server. Microsoft SQL Server, Viso Geral [on-line]. Disponvel em: http://www.microsoft.com/brasil/ servidores/windowsserver2008/editions/ overview.mspx. ltimo acesso: 14.06.2009 Microsoft, TechNet. TechCenter do Windows Server. Recursos do Windows Server 2008 [online]. Disponvel em: http:// technet.microsoft.com/pt-br/windowsserver/ default.aspx. ltimo acesso: 14.06.2009 Wikipdia, Windows Server 2008. Cronologia dos Softwares Servidores Microsoft [on-line]. Disponvel em: http://pt.wikipedia.org/wiki/ Windows_Server_2008. ltimo acesso: 14.06.2009 Danilo Marion Munhz
Aluno de Tecnologia em Anlise e Desenvolvimento de Sistemas FATEPA Faculdade de Tecnologia Unianchieta Centro Universitrio Anchieta.

Codificando.net e-magazine

Prof. Dr. Juliano Schimiguel


Professor do Curso de Tecnologia em Anlise e Desenvolvimento de Sistemas Universidade Cruzeiro do Sul, Campus Anlia Franco So Paulo.

www.codificando.net

Ago / Set - 2009

41

e-magazine

Report Sharp Shooter


Como escolher o gerador de Relatrios ?
Por: Ricardo Quartier

Para usar software de terceiros em nossos projetos temos a mesma sensao de tirar fotos das Cataratas do Iguau. primeira vista, as Cataratas tiram a nossa respirao e super promissor, mas voc tambm no consegue ver as pedras escondidas e tem que estar equipado para emergncias! O mesmo acontece com software. Voc no consegue ver o futuro e se preparar para ele! Mesmo quando parece que voc encontrou a ferramenta certa, voc nunca saber o que o seu cliente ir querer de voc amanh, e que tarefas voc ter que programar no futuro. Ento, agora a histria Alguns meses atrs, eu me deparei com a necessidade de desenvolver uma soluo de ERP de grande escala para a minha empresa com muitas caractersticas especficas. Eu no quero cans-los com toda a especificao da minha aplicao, eu apenas gostaria de dizer que requeria a gerao de centenas de relatrios diferentes e era impossvel de prever todas as particularidades que os relatrios que meus clientes poderiam necessitar ao longo do tempo. O desafio maior era como encontrar uma ferramenta de relatrios para meus aplicativos! Eu me perguntei: Que critrio eu devo usar para escolher a ferramenta certa

e que no v me fazer cair dos 80 metros das Cataratas do Iguau na gua fervida do suporte dirio e debugging quando meus clientes quisessem realizar uma ou outra tarefa? Quando voc comear a desenvolver algum sistema de relatrios, impossvel predizer de uma vez quais tipos de relatrios sero necessrios para o seu cliente pela sua aplicao. E eu nunca encontrei clientes que pudessem formular seus requerimentos suficientemente. Voc encontrou? Um sistema de relatrios usualmente estendido por novos relatrios atravs do tempo e voc precisa cuidar e dar manuteno constantemente. Todo desenvolvedor j se deparou com a situao de quando o cliente fala: Est bom, muito bom... mas eu quero que este texto fique aqui e no ali, eu quero que esta coluna mostre outra informao... E da por diante. Se a sua ferramenta de relatrios no puder resolver, estas questes voc vai se sentir caindo das muito faladas Cataratas do Igua... O que fazer? Escrever sua prpria ferramenta de relatrios? Com o cronograma disponvel, inaceitvel! A pior situao ainda quando voc enfrenta estes pro-

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

42

Report Sharp Shooter

e-magazine

blemas quando sua aplicao est quase pronta! Aps dias procurando, testando, pensando e brigando, eu encontrei algum critrio em como encontrar a soluo de relatrios correta e me precaver dos maiores riscos potenciais quando uma ferramenta de relatrios no prover a necessidade que eu precisar depois: Bom designe de modelos de relatrios. uma grande sorte quando uma ferramenta de relatrios tem um design que permite criar a maioria das ferramentas do dia a dia e rapidamente e intuitivamente relatrios com tarefas especficas. Mesmo se a funcionalidade da ferramenta de relatrios possa ser estendida, o design deve prover a funcionalidade para dar certeza a resolver todas as suas tarefas principais. Na outra mo, nenhuma ferramenta de relatrios prov toda a funcionalidade que voc precisa. Sendo assim, o prximo critrio principal : Arquitetura aberta a plug-ins. Arquitetura Open plug-in vital! Se voc encontrar alguma tarefa que impossvel de resolver com as caractersticas fornecidas, pelo menos, voc poder programar a funcionalidade requerida voc mesmo. Habilidade de manipular a fonte de dados no modelo de relatrio. Habilidade de manipular a fonte de dados diretamente em um modelo de rela-

trios muito conveniente; isto permite a voc qualquer novo dado que for calculado com base na fonte dos dados. Para fazer isso, voc precisa apenas fazer mudanas no modelo de relatrio. Habilidade de dinamicamente configurar parmetros em um modelo de relatrios dependendo da fonte de dados. Habilidade para dinamicamente configurar parmetros na base da fonte de dados permite flexibilidade na apresentao dos dados dependendo dos valores da fonte dos dados. Um modelo se torna verstil e isto o permite minimizar o nmero dos modelos de relatrios a serem desenvolvidos. Isto especialmente vital quando o desenvolvimento futuro pode ser requerido. Habilidade de se extrair qualquer dado com qualquer configurao em qualquer parte do documento final. Habilidade de se extrair qualquer dado em qualquer lugar do relatrio j renderizado permite a voc gerar o relatrio manualmente, inteiro ou em parte, caso a funcionalidade provida no permitir resolver uma ou outra questo. claro, que voc deve fugir de criar relatrios manualmente, mas isto reserva uma flexibilidade que deixar voc confidente para apresentar os dados de qualquer forma que voc possa precisar. Ento, uma vez que impossvel a ferramenta de relatrios ideal, voc precisa de um produto que, de um lado, proveja muitas caractersticas avanadas, mas de

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

43

Report Sharp Shooter

e-magazine

outro lado, que permita maior extenso quando e caso voc necessite. Sem falar o quanto muito melhor quando voc pode programar alguma nova funcionalidade voc mesmo, na base de uma ferramenta de relatrios do que ter que mudar para um novo componente em plena corrida! As ferramentas de relatrios que tem uma Arquitetura de plug-in e suporte para scripting so flexveis o suficiente para resolver as tarefas mais complexas. Arquitetura Open plug-in permite a programar a funcionalidade requerida e uso das novas caractersticas em um desenvolvimento futuro. Usando scripting, voc pode definir configuraes do modelo dinamicamente, cuidar da fonte de dados e at gerenciar o processo programaticamente, por exemplo, gerar partes separadas de um documento manualmente. Aps dias de procura e testes em muitas ferramentas disponveis no mercado de software de diferentes vendedores mundiais, eu encontrei um produto que funciona com quase todas as minhas expectativas e requerimentos, Report SharpShooter a ferramenta ideal para relatrios, ela realmente me surpreendeu com a flexibilidade que provida. Eu terminei minha soluo de ERP h cinco meses, ela funciona muito bem e os meus clientes esto bem satisfeitos. Como eu previ a diversidade de relatrios que eu tive que desenvolver funcionou como uma bola de neve, mas eu tenho que admitir que consegui cuidar de tudo e fico contente de compartilhar minha experi-

ncia com voc agora. Primeiro de tudo, o que eu gostei mais no Report Sharp-Shooter que ele tem a arquitetura open plug-in. Um documento e seus prprios elementos definem a lgica no apenas da sada e comportamento no design, mas o mais importante, eles definem a lgica da gerao do documento. Isto significa que voc pode facilmente estender a funcionalidade da ferramenta redefinindo a lgica dos elementos providos ou criados por voc mesmo. Por exemplo, o produto tem um elemento para sada do list footer. Na maioria dos relatrios, requerida a sada do footer no direita aps a list, mas na parte de baixo da pgina onde a lista acaba. Eu resolvi este assunto de forma muito simples: Eu criei um novo elemento redefinindo a lgica do j existente. Aqui, eu adicionei uma nova propriedade, GrowToBottom que decide quando a list footer deve ser colocada na parte de baixo da pgina. Ns redefinimos a lgica da gerao deste elemento no mtodo Render onde ns limitamos o espao livre na pgina gerada para deslocar os elementos que foram gerados pela classe base na parte inferior da pgina:
Public Class AdvancedFooter Inherits PerpetuumSoft.Reporting.DOM.Footer Private _growToBottom As Boolean = False <System.ComponentModel.Category ("Behavior")> _

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

44

Report Sharp Shooter

e-magazine

<System.ComponentModel.DefaultVal ue(False)> _ <PerpetuumSoft.Framework.Serializ ation.XSerializable()> _ <PerpetuumSoft.Reporting.DOM.Repo rtBindable()> _ Public Property GrowToBottom() As Boolean Get Return _growToBottom End Get Set(ByVal value As Boolean) _growToBottom = value End Set End Property Public Overrides Sub Render() If Me.GrowToBottom Then MyBase.Prepare() If (MyBase.Engine.FreeHeight > MyBase.Size.Height) Then Engine.UsedHeight = (Engine.UsedHeight + (MyBase.Engine.FreeHeight - MyBase.Size.Height)) End If End If MyBase.Render() End Sub End Class

que eu no preciso mais.


PerpetuumSoft.Reporting.DOM.ReportControl. ControlTypes.Remove(GetType (PerpetuumSoft.Reporting.DOM.Footer)) PerpetuumSoft.Reporting.DOM.ReportControl. ControlTypes.Add(GetType (CustomControl.AdvancedFooter))

O que me fez f deste produto o scripting que esta ferramenta de relatrios oferece de suporte. Voc pode usar qualquer linguagem de programao .NET (VB.NET ou C#) como uma linguagem de script. Ela permite realizar muitas tarefas economizando assim muito tempo, uma vez que a maioria das outras ferramentas de relatrios tem uma linguagem de scripting que deve ser aprendida do incio. Os scripts do Report Sharp-Shooter provm acesso completo a todos os elementos dos relatrios e voc pode manipullos programaticamente. Um modelo de relatrio e um relatrio mesmo representam o open object model. Scripts permitem buscar a Informao sobre o relatrio corrente e influenci-lo. Voc pode usar quaisquer caractersticas da sua aplicao ou bibliotecas de terceiros com os scripts! Existe a habilidade de atribuir a expresso a cada propriedade e o valor de cada propriedade ser calculado dinamicamente. Quando qualquer relatrio for gerado, um script especial ser executado e l

Como voc pode ver, muito fcil. Eu tambm gostaria de chamar a sua ateno para o comportamento do controle no design que pode ser definido por atributos padres tendo o mesmo destino como do Visual Studio, assim como os especiais. Por exemplo, o atributo ReportBindable notifica que possvel fazer uma conexo com esta propriedade. Isto significa que a nova propriedade GrowToBottom pode ser atribuda no somente como uma constante mas como um valor calculado. Um novo controle pode ser facilmente registrado no designer e preliminarmente, eu removo o velho controle, uma vez

Codificando.net e-magazine
|

www.codificando.net

Ago / Set - 2009

45

Report Sharp Shooter

e-magazine

voc poder fazer todas as configuraes requeridas. Sendo assim os scripts no Report SharpShooter trazem a possibilidade de no somente o ajuste das caractersticas providas, mas desenvolver novas tambm! Agora, eu gostaria de mostrar alguns exemplos para voc. Eu usei a linguagem VB. NET aqui. Eu vou demonstrar como programar uma funcionalidade com relativa facilidade, mas do outro lado, isto poderia ser praticamente impossvel de se fazer sem scripting. Para ser mais fcil de entender, eu tenho uma data usando a funo GetData (SourceName.FiledName) onde o SourceName o nome da fonte e o FieldName o nome do campo fonte. Ento, por exemplo, eu quero ajustar a aparncia dos dados dependendo dos seus valores. Para se fazer isso ns precisamos dinamicamente definir o estilo para um elemento que exibe um valor. Ento, ns definimos a seguinte expresso para a propriedade Style de um elemento de relatrio: iif(<Condition >, "Hightlight", "Normal") <Condition > - algum critrio na base da fonte dos dados. "Hightlight" e "Normal" aqui so nomes de estilos vindos de uma tabela de estilos que eu defini antes. Ento, por exemplo, eu quero destacar todos os produtos onde o preo for mai-

or que $ 20.00. iif(GetData("Products.UnitPrice") > 20, "Hightlight", "Normal")

Figura 1. Design do Report Sharp Shooter

Figura 2. Exemplo pronto selecionando pela cor !

Codificando.net e-magazine

E aqui est! Mais um exemplo. Eu quero numerar as pginas com algum grupo de dados. claro, tem uma varivel para numerao contnua, mas para este caso em particular, ns podemos tirar vantagem dos scripts. Para se fazer isso, eu defino uma varivel comum contendo uma nova pgina:
private GroupPageCount as integer Inicio a varivel antes da gerao: GroupPageCount = 0;

www.codificando.net

Ago / Set - 2009

46

Report Sharp Shooter

e-magazine

Reset da varivel no group footer: GroupPageCount = 0; Aumento o contador na hora de criar a pgina: GroupPageCount += 1

(Informaes do Report Sharp Shooter para Silverlight) http://www.perpetuumsoft.com/sf/en/ fls/suite/SuiteUserGuide/index.htm (documentao do Report Sharp Shooter e outras ferramentas)

Uso a seguinte expresso para mostrar o nmero da pgina: Pgina & PageCount. Concluso

Ricardo Quartier Espero que voc se divirta codificando! Eu espero tambm que voc nunca se sinta como se estivesse caindo das Cataratas do Iguau! Com um pouco mais de trabalho nossos relatrios podem ficar mais elaborados, o importante usar uma boa ferramenta para ajudar, coloquei alguns exemplos em Silverlight. Sim SILVERLIGHT, ele o nico que faz relatrios em Silverlight no mundo todo e claro j est traduzido para o nosso portugus, alis, como todos os produtos da Perpetuum Software. Um forte abrao a todos! Links:
Fez trabalhos em sistemas de cias areas e trabalhou com ERPs de audio-visual e hoje desenvolve sistemas na Dream & Magic Works. Trabalha com desenvolvimento de software em Visual Basic.Net, C#, Mono, f do Silverlight e hoje em dia o CEO da Perpetuum Software da Amrica Latina.

Codificando.net e-magazine

www.perpetuumsoftware.com.br (Perpetuum Software Desenvolvedora do Report Sharp Shooter) http://www.perpetuumsoft.com/Demo/ slviewer/default.aspx (demo da edio com Silverlight) http://www.perpetuumsoft.com/ Product.aspx?lang=pt&pid=46 (Informaes do Report Sharp Shooter) http://www.perpetuumsoft.com/ Product.aspx?lang=pt&pid=104

www.codificando.net

Ago / Set - 2009

47

e-magazine

Comunidade, comunidade e comunidade.


Por: Alexandre Tarifa
A alguns anos atrs tomei uma deciso... contribuir com comunidades de desenvolvimento... Porque cheguei a essa concluso? No tenho idia, achava sensacional pessoas contribuindo e ao mesmo tempo criando um posicionamento/relacionamento muito bom entre as pessoas... no necessariamente relacionamento para arrumar emprego, mesmo porque na nossa rea, dificilmente algum fica desempregado. Contribuir para comunidade uma mistura de ao social, hobby, marketing pessoal, motivao para estudo, experincia, amizade, etc etc etc. O Codificando .Net a alguns anos foca em desenvolvimento Microsoft e por muito tempo atuamos com revista, site, blog, eventos, pod cast, etc. Porm, se notarem, praticamente sempre so os mesmos colaboradores? Por qu? Panela? Grupinho? Mfia? Cartel? Nada disso! Ns praticamente imploramos para conseguir contedo, pblico, colaboradores, etc. e o retorno muito baixo... qual ser a razo disso?!?! No final do ano passado, o site do Codificando implementou a ferramenta NING e o site virou 100% aberto para contribuies e hoje temos alguns heris que entenderam que isso pode ser a maior ferramenta para desenvolvimento pessoal? A revista sempre est aberta para contribuies e sempre a equipe editorial sofre muito para conseguir o contedo e quase sempre os mesmos? Se voc no colabora ou nunca colaborou, te desafio a fazer isso... Ao menos uma vez! E veja, se no obter nenhum benefcio/prazer/ resultado/retorno nunca mais contribua... A certeza grande que voc no vai arrependerse! Claro, que o desafio no serve somente para o Codificando, contribua em qualquer lugar, seja site pessoal, You Tube, o que for!!! 100% dos casos que conheo de pessoas que se arriscaram, hoje esto cada vez mais fortes contribuindo! Lembre-se, isso no um trabalho de graa para a Microsoft ou para o Codificando e sim um investimento totalmente pessoal! Se voc for de So Paulo, participe do nosso Happy Hour, visite o site www.codificando.net e veja a data no quadro eventos!

www.codificando.net

Abril / /Maio-2009 Ago Set 2009

48