Codificando Magazine 11a edicao [view full mode]

p.  1

Embed or link this publication

Description

Popular Pages


p. 1



[close]

p. 2

sumário 04 gerando boletos bancários ii edição 11 número 11 ano 03 2009 editores alexandre tarifa diego nogare emerson facunte sergio gonçalves revisÃo fernanda sallai giaccomo sabino montagem formataÇÃo milton carvalhaes editoraÇÃo e diagramaÇÃo adriano almeida colaboradores caio azevedo danilo marion munhóz diego nogare fabiano belmonte juliano schimiguel milton c filho ricardo quartier seiti yamashiro tiago tiguen sinzato continuação do artigo de como gerar boletos bancários 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 conheça as novas funcionalidades do c 4 por fabiano belmonte 23 tecnologia de jogos digitais introdução sobre tecnologias de jogos por tiago tiguen sinzato juliano schimiguel 28 introdução ao linq fale com editor É muito importante para a equipe saber a sua opinião sobre a revista caso tenha alguma critica sugestão ou elogio entre em contato caso tenha interesse em publicar um artigo na revista envie o título e um resumo do tema em formato word site@codificandomagazine.net conheça melhor essa nova tecnologia de manipulação de dados por milton c.filho 30 reporting services 2005 conheça esta poderosa plataforma de relatórios por caio azevedo 34 servidor no contexto de rede aprenda alguns conceitos de rede produzido por por danilo marion munhóz juliano schimiguel www.codificando.net 42 report sharp shooter como escolher o gerador de relatórios por ricardo quartier 03 editorial 48 .close

[close]

p. 3

edição 11 número 11 ano 03 2009 editorial pessoal como de costume estamos nos esforçando para montar a revista com artigos técnicos de alta qualidade e adequados às novidades/necessidades que surgem a cada dia no nosso universo nesta edição a 11ª publicada gratuitamente pelo grupo codificando .net aborda artigos sobre linq sql server sap asp .net entre outras tecnologias que são muito importantes hoje no mercado nacional os autores são grandes conhecedores dos assuntos abordados e conseguem passar de forma simples e direta os temas propostos um ponto super importante que começamos a plantar a algum tempo e que agora está dando ótimos frutos é a idéia de que os próprios membros da comunidade criem os materiais isso é tão bom pra todo mundo que cada vez mais membros ativos estão realizando atividades e conquistando seus espaços em meio às comunidades no brasil como sempre fiz em todas as edições deixo aqui o espaço aberto para que vocês possam nos enviar materiais produzidos por vocês que teremos o maior prazer em publicá-los muito obrigado pela confiança grande abraço diego nogare site@codificandomagazine.net editorial

[close]

p. 4

e-magazine gerando boletos bancários parte ii continuação do artigo de como gerar boletos bancários usando o asp.net por seiti yamashiro na parte i vimos como emitir um boleto para impressão o que falta é populá-lo com dados que façam sentido vamos então populá-lo com dados relevantes em primeiro lugar é necessário que você tenha os dados armazenados em algum lugar um banco de dados talvez mas vou presumir que seu código já trate dos dados e me ater à construção de duas partes fundamentais do boleto a linha digitável e o código de barras note que embora alguns dígitos da linha digitável sigam um padrão cada banco pode possuir regras próprias para gerá-la entre em contato com seu banco para ter essas informações linha digitável a linha digitável lembrando novamente que estou seguindo as instruções do itaú possui 47 dígitos abaixo segue a construção da linha lembrando que dac significa dígito de autoconferência ou simplesmente dígito verificador aaabc.ccddxddddd.defffyfgggg gghhhzkuuuuvvvvvvvvvv campo 1 10 dígitos campo 2 11 dígitos campo 3 11 dígitos 4 campo 5 14 dígitos campo 1 aaabc.ccddx · aaa código do banco ­ itaú 341 · b código da moeda ­ real 9 · ccc código da carteira de cobrança · dd dois primeiros dígitos do nosso número · x dac módulo 10 do campo 1 campo 2 ddddd.defffy · dddddd restante do nosso número · e dac do grupo agência/conta carteira/nosso número · fff três primeiros números da agência · y dac módulo 10 do campo 2 ago set 2009 codificando.net e-magazine www.codificando.net 4

[close]

p. 5

gerando boletos bancários e-magazine campo 3 fgggg.gghhhz · f último número da agência · gggggg conta corrente dac · hhh zeros · z dac módulo 10 do campo 3 campo 4 k · k dac módulo 11 do código de barras único dac que vai para o código de barras campo 5 uuuuvvvvvvvvvv · uuuu fator de vencimento · vvvvvvvvvv valor do boleto sem ponto e vírgula ou zeros no caso do valor ser preenchido pelo próprio sacado o fator de vencimento contém 4 dígitos e é o número de dias desde 7 de outubro de 1997 servindo para indicar a data de vencimento do boleto teremos o bug do milênio 21 de fevereiro de 2025 seu cálculo é bem simples como podemos ver pelo método abaixo os dac s o módulo 10 e o módulo 11 o cálculo do dac módulo 10 é realizado da seguinte forma tome o campo a ter calculado o dac multiplique cada algarismo do campo pela sequência de multiplicadores 2 1 2 1 2 1 posicionados da direita para a esquerda some os resultados que chamarei de n calcule o módulo 10 de n ­ mod10n ou n%10 o dac será 10 ­ mod10n caso o dac seja 10 considere-o como 0 segue abaixo um método para calcular o dac módulo 10 private int calculadacmod10 string campo int soma 0 int m caso exista um número 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.toint32c 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 datetime1997 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 digitável iremos dispor de dois algoritmos para calcular o cálculo do dac módulo 11 é bem semelhante.ele depois será utilizado para compor o dac do código de barras tendo o trecho a ter o dac calculado tome seus algarismos e multiplique-os iniciando-se da direita para a esquerda pela sequência numérica de 2 a 9 2 3 4 www.codificando.net ago set 2009 5

[close]

p. 6

gerando boletos bancários 5 6 7 8 9 2 3 4 e assim por diante some o resultado obtendo nosso n calcule agora o módulo 11 de n ­ mod11n ou n%11 o dac será 11 ­ mod11n caso o cálculo do dac tenha dado 0 10 ou 11 considere-o como 1 o método abaixo faz o cálculo do dac módulo 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.reversearr string reversed new string arr foreachchar c in reversed soma convert.toint32c 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 espaços também possuem significado por isso o intercalado este código de barras serve apenas para representar nossa linha digitável transformado o que é uma seqüência de números em uma imagem existem muitos controles por aí que fazem isto mas não encontrei nenhum gratuito para asp.net neste exemplo vou utilizar o arcodenet.net ele pode ser testado e é completamente funcional a diferença é que enquanto você não registrá-lo ele criará uma linha escrito barcodenet.net ou algo assim logo acima do código de barras embora a linha digitável possua 47 dígitos o número que será codificado em barras possui apenas 44 por quê porque devemos nos livrar de três dos quatro dacs que constam nela assim o código de barra terá apenas um dac outra diferença importante é de que a ordem em que os campos se apresentam na linha digitável não é a mesma da apresentada pelo código de barras segue como gerar então os dígitos que compõem o código de barras · · · · · · · · 3 dígitos do código do banco 341 1 dígito com o código da moeda 3 1 dígito do dac do código de barras 4 dígitos do fator de vencimento 10 dígitos do valor do título desconsiderando qualquer sinal de pontuação 3 dígitos da carteira 9 dígitos do nosso número mais seu próprio dac 4 dígitos da agência codificando.net e-magazine código de barras o padrão de código de barras para os boletos no brasil é o denominado 2 de 5 intercalado que pode ser resumido nas seguintes características · · codifica apenas caracteres numéricos 0-9 cada caractere é representado por 5 barras dentre os quais 2 são mais longas codificação binária ­ largo é 1 es · www.codificando.net ago set 2009 6

[close]

p. 7

gerando boletos bancários · · 6 dígitos da conta corrente com seu próprio dac 3 dígitos não utilizados e composto por zeros 000 e-magazine depois de gerar os dígitos que compõem o código de barras é questão 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 código segue então a listagem do código fonte utilizado neste trabalho claro que há muito o que melhorar nele mas isto fica como exercício 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 linhadigitaveldados 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 substring0 5 campo1 substring5 campo2 substring0 5 campo2 substring5 campo3 substring0 5 campo3 substring5 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 substring0 2 codificando.net e-magazine www.codificando.net ago set 2009 7

[close]

p. 8

gerando boletos bancários if campo.length 9 throw new exception entrada inválida return campo calculadacmod10 campo tostring 0 private string campo2 string campo this.nossonumero.split [0 substring2 6 this.dacagenciacontacarteiranoss numero tostring 0 this.agencia.substring0 3 if campo.length 10 throw new exception entrada inválida return campo calculadacmod10campo tostring 0 private string campo3 string campo this.agencia.substring3 1 this.contacorrente.split [0 this.contacorrente.split [1 sinto falta de explode implode 000 if campo.length 10 throw new exception entrada inválida return campo calculadacmod10campo tostring 0 private string campo4 return daccodigobarras tostring 0 private string campo5 return this.fatorvencimento tostring 0000 formatavalorthis.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 inválida return calculadacmod10termo 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.substring0 4 daccodigobarras tostring 0 termo.substring4 private int fatorvencimento datetime zeroday new datetime1997 10 7 return this.vencimento zeroday days dac módulo 10 exemplo considerando-se a seguinte representação numérica do código de barras 34191.1012 34567.88005 71234.57000 6 16670000012345 temos codificando.net e-magazine www.codificando.net ago set 2009 8

[close]

p. 9

gerando boletos bancários a multiplicando a sequência dos campos pelo módulo 10 campo 1 341911012 campo 2 3456788005 campo 3 7123457000 x 212121212 x 1212121212 x 1212121212 observação os campos 4 e 5 não 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 divisão 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 sequência correta da linha digitável será 34191.10121 34567.880058 71234.570001 6 16670000012345 private int calculadacmod10 string campo int soma 0 int m caso exista um número 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.toint32c 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 conteúdo do código de barras 3419 1667000001234511012345678800571423 457000 onde 341 código do banco 9 código da moeda dac do código de barras 1667 fator de vencimento 01/05/2002 0000012345 valor do título 123,45 110123456788 carteira/nosso número/dac 110/12345678-8 0057123457 agência/conta corrente/dac 0057/12345-7 000 posições livres zeros temos a multiplica-se a sequência do código de barras pelo módulo 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 divisão 742 11 67 resto 5 d calcula-se o dac dac 11 ­ 5 então dac 6 portanto a sequência correta do código 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.reversearr codificando.net e-magazine www.codificando.net ago set 2009 9

[close]

p. 10

gerando boletos bancários string reversed new string arr foreachchar c in reversed soma convert.toint32c 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 linhadigitavelthis e-magazine return linha.codigobarras public string linhadigitavel get linhadigitavel linha new linhadigitavelthis return linha.formatoparaimpressao um exemplo de uso do gerador de boletos protected void btngeraboleto_onclickobject 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 indústria 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 não receber após 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.baixaresponse dados codificando.net e-magazine www.codificando.net ago set 2009 10

[close]

p. 11

gerando boletos bancários e-magazine embora existam outras opções como cartões de crédito 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 soluções prontas vimos que gerar um boleto na plataforma .net é algo simples composto por uma guia impressa alguma lógica para a geração da linha digitável e uma ferramenta de terceiros para a criação do código de barras a parte mais difícil fica no sistema subjacente não abordada onde entra o retorno do pagamento do boleto e finalmente na remessa da mercadoria mas isto fica para uma próxima seiti yamashiro graduando em ciência da computação 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 além de alimentar um blog http seiti.eti.br codificando.net e-magazine www.codificando.net ago set 2009 11

[close]

p. 12

e-magazine escrevendo nas tabelas do sap com o .net sap connector 2.0 através 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 através de rfc que pode ser acessado na 10ª edição da revista codificando .net emagazine foi explicado sucintamente o que é o sap e quais são 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 idéias neste artigo faremos o inverso do que foi feito anteriormente desta vez ao invés de ler informação do sap iremos escrever informação no sap para isso será desenvolvida uma aplicação windows forms em c que fará a escrita em uma rfc do sap com base em um datatable mas a origem da informação fica a seu critério vou partir diretamente para a aplicação entendendo que já esteja tudo configurado como explicado no artigo sobre ler tabelas do sap após a instalação 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 serão conectadas através do .net e montará automaticamente as classes de acessos com suas respectivas properties métodos get e set entre outras coisas para utilizar este proxy será necessário adicionar um novo item ao projeto então vá até a solution explorer clique com o botão 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

[close]

p. 13

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 estão liberadas pra acesso vá até o server explorer procure o item do sap que foi inserido após a instalação do sap .net connector 2.0 expanda a árvore do sap e clique com o botão direito no item application servers então adicione os dados appserverhost client password systemnumber e username acompanhe este passo na figura 4 após a adição o item aparecerá no solution explorer neste exemplo foi adicionado na própria raiz do projeto mas ele pode ser adicionado dentro de alguma outra pasta para melhorar a organização 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 códigos das classes de acesso este processo será explicado com mais detalhes adiante agora para conseguir utilizar as rfcs que foram criadas pelos abaps lembra é necessário adicionar os dados do servidor do sap que serão fornecidos pelo pessoal de basis isso você também lembra né no server explo após este passo será possível expandir o application servers e visualizar o servidor que você adicionou terá o nome fornecido ao campo appserverhost ao expandir este item será necessário configurar o filtro das functions para aparecer as rfcs crie um novo filtro e coloque os dados para filtrar retorna todas que poderão ser utilizadas na aplicação acompanhe as rfcs fornecidas na figura 5 agora que as rfcs já estão listadas é só arrastar a rfc que será acessada para ago set 2009 www.codificando.net 13

[close]

p. 14

escrevendo as tabelas do sap com o .net sap connector 2.0 e-magazine figura 5 rfcs que poderão ser utilizadas dentro do proxy na tela que já deve estar aberta no painel principal do visual studio caso isso ainda não 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 serão criados automaticamente permitindo o acesso à seus campos através 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 código do método acessarsap criado e chamado pelo método load do formulário acompanhe a listagem 1 onde os códigos deste método foram inseridos private void acessarsap escrevendosap proxy null try proxy new escrevendosap string de conexão 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 é possível ver as classes criadas classes exibidas na figura 7 zcprheadrtable tabelasap new zcprheadrtable zcprheadr linha new zcprheadr datatable dt new datatable montarcolunasref 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 eadrref tabelasap proxy.commitwork www.codificando.net ago set 2009 14

[close]

p. 15

escrevendo as tabelas do sap com o .net sap connector 2.0 catch exception ex messagebox.showex.message finally proxy.connection.close proxy null e-magazine private void montarcolunasref datatable dt listagem 1 código para utilizar o proxy e as classes criadas proxy será criada uma variável do tipo tabela da rfc zcprheadrtable tabelasap new zcprheadrtable esta variável criada será passada por parâmetro de referência para o método com o nome da rfc proxy.bay2_n2rfi_rfc_upda_zcprheadr ref tabelasap que está dentro do proxy como o parâmetro foi por referência a variável criada passará a ter os dados lidos no datatable e que serão escritos no sap através 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 iterações do foreach a variável linha do sap possui seus campos populados e a rfc de escrita no sap é chamada a figura 8 é do sap após receber o valor que inserimos dentro do datatable no método montarcolunas repare que os campos com marcação em vermelho apontam para os campos que foram preenchidos dentro do foreach no código 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.adddr a aplicação utilizará o proxy criado que listagem 2 código para criar um datatable e popular com dados ficticios foi chamado de escrevendosap para criar uma conexão com outro servidor sap não precisa ser necessariamente o mesmo utilizado no server explorer mas pode ser sem problema os itens que precisam ser inseridos na string de conexão 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 após a informação de conexão do listagem 3 dados da string de conexão codificando.net e-magazine figura 8 resultado da informação inserida no sap após esta análise simples e direta é possível fazer uma escrita em tabelas do sap www.codificando.net ago set 2009 15

[close]

p. 16

escrevendo as tabelas do sap com o .net sap connector 2.0 através do visual studio 2003 um próximo artigo explicará como trabalhar com um workaround para se trabalhar com visual studio 2005 e visual studio 2008 diego nogare graduado em ciência da computação pós-graduado em engenharia de computação com ênfase em desenvolvimento web com .net colaborador do portal linha de código e da revista sql magazine líder do grupo de usuários codificando .net líder dos microsoft student partners [msp de são paulo e microsoft most valuable professional [mvp em sql server possui certificações mcp e mcts em sql server 2005 é palestrante em eventos da microsoft codificando .net e ineta br mantém o site www.diegonogare.net e-magazine codificando.net e-magazine www.codificando.net ago set 2009 16

[close]

p. 17



[close]

p. 18

e-magazine c 4.0 conheça 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 nós podemos esperar animados com este novo lançamento juntamente com o visual studio 2010 e do net framework 4,0 veremos a versão 4.0 da linguagem de programação c neste artigo eu gostaria de olhar um pouco a trás de onde começou a linguagem de programação c e olhar para onde anders hejlsberg do c e sua equipe querem chegar em 1998 o projeto c começou com o objetivo de criar uma simples moderna e orientada a objeto linguagem de programação que se tornou conhecido como o net a microsoft lançou o net e a linguagem de programação c em meados 2000 e desde então c tornou-se uma das mais populares linguagens de programação em uso hoje foi lançado então o c 1.0 a versão 2.0 da linguagem evoluiu de mais particularmente acho que e umas das maiores evoluções em tão pouco tempo de uma linguagem e passou a dar suporte aos genéricos métodos anônimos iterators tipos parciais e tipos anuláveis ao conceber a versão 3.0 da linguagem a ênfase foi para permitir a linq language integrated query que exigia a adição 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 programação 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 porém as linguagens que a ser concebidas com vários paradigmas em mente na versão 3.0 da linguagem de programação c adquiriu várias capacidades funcionais normalmente associados a programação para permitir language integrated query linq na versão 4.0 do c continua a evoluir embora desta vez a equipe do c foram inspiradas por linguagens dinâmica 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 inovação é concorrente que é um pa codificando.net e-magazine www.codificando.net ago set 2009 18

[close]

p. 19

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 inovações língua em c hoje você pode ter o seguinte código que é uma instância de uma clase escrita estaticamente net então chama o método 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 teríamos simplesmente escrever o seguinte código dynamic calc getcalculator int result calc.add10 20 no exemplo acima declaramos uma variável calc cujo tipo estático é dinâmico sim você leu corretamente que nós escrevemos estaticamente nosso objeto a ser dinâmico teremos então dinâmico usando método invocação para chamar o método add e em seguida dinâmico conversão para converter o resultado da dinâmica de uma invocação digitado estaticamente inteiro você está ainda encorajado a usar tipagem estática sempre que possível porque os benefícios que oferecem línguas escrita estaticamente nós usando c 4,0 no entanto deve ser menos doloroso nessas ocasiões em que você tem de interagir com objetos dinamicamente digitados outro grande benefício do uso de c 4.0 é que a linguagem suporta agora facultativa e parâmetros nomeados e por isso vamos agora dar uma olhada em como esta característica irá mudar a maneira de conceber e escrever o seu código um desenho padrão você ver como muitas vezes que um determinado método está sobrecarregado porque o método deve ser chamado com um número variável de parâ int sum calc.add10 20 nosso código fica ainda mais interessante se a classe calculadora não é escrita estaticamente mas está escrito em com ruby python ou mesmo javascript mesmo se soubéssemos que a classe é uma calculadora objeto net mas não sabemos qual o tipo específico que é então teria de utilizar reflection para descobrir atributos e o tipo em tempo de execução e em seguida dinamicamente invocar o método add object calc getcalculator type type calc.gettype object result type.invokemember add bindingflags.invokemethod null,new object 10 20 int sum convert.toint32result codificando.net e-magazine se a calculadora classe foi escrito em javascript então nosso código ficaria algo www.codificando.net ago set 2009 19

[close]

p. 20

c#4.0 e-magazine metros vamos assumir que temos o seguinte método opentextfile juntamente com três sobrecargas do método com diferentes assinaturas sobrecargas do método primário em seguida chame o método primário de passar os valores padrão no lugar desses parâmetros para os quais um valor não foi especificado na chamada para o método 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 método pode ser chamado opentextfile omitindo um ou mais dos parâmetros opcionais enquanto especificando também outro parâmetro pelo nome opentextfile foo.txt buffersize 4098 encoding.utf8 o nome dos argumentos deve ser fornecido somente estância última embora desde quando eles podem ser fornecidas em qualquer ordem se você alguma vez escrito qualquer código que executa um certo grau de interoperabilidade com você provavelmente visto como o código seguinte object filename test.docx object missing system.reflection.missing.value doc.saveasref 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 método primário pode ser refactored para usar parâmetros opcionais como mostra o seguinte exemplo public streamreader opentextfilestring path,encoding encoding null,bool detectencoding false,int buffersize 1024 perante esta declaração é agora possível chamar o método opentextfile omitindo um ou mais dos parâmetros opcionais opentextfile foo.txt encoding.utf8 também é possível usar o c 4,0 suporte para parâmetros nomeados e co com os parâmetros opcionais e nomeado linguagem c 4,0 prevê melhorias significativas na interoperabilidade com e portanto o código 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 é necessário quando não exerçam com interoperabilidade com as versões anteriores das tecnologias era necessário também um navio primary interop assembly pia juntamente com codificando.net e-magazine www.codificando.net ago set 2009 20

[close]

p. 21

c#4.0 e-magazine o seu aplicativo gerenciado isso não é necessário 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 não de todos os tipos encontrados no interior da pia o último aperfeiçoamento lingüístico que vamos explorar é co-variância e contra-variância e vamos começar por explorar com a co-variância net matrizes string names new string anders hejlsberg mads torgersen scott wiltamuth peter golde writenames tribuir um inteiro à matriz de strings uma arraytypemismatchexception é jogado objects[0 1024 em ambos os c 2.0 e c 3,0 invariantes são genéricos e portanto um erro compilador iria resultar o seguinte código list

[close]

p. 22

c#4.0 e-magazine ble é somente leitura não 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

[close]

p. 23

e-magazine tecnologias para o desenvolvimento de jogos digitais introdução sobre tecnologias de jogos por tiago tiguen sinzato juliano schimiguel introdução motor de jogo também conhecido pelo termo em inglês game engine ou simplesmente engine é um programa de computador e/ou conjunto de bibliotecas para simplificar e abstrair o desenvolvimento de jogos ou outras aplicações com gráficos em tempo real para videogames e/ou computadores rodando sistemas operacionais a funcionalidade tipicamente fornecida por um motor de jogo inclui um motor gráfico para renderizar gráficos 2d e/ou 3d um motor de física para simular a física ou simplesmente para fazer detecção de colisão suporte a animação sons inteligência artificial networking gerência de memória gerência de arquivos gerência de linha de execução um grafo de cena e suporte a uma linguagem de script o processo de desenvolvimento de jogos é freqüentemente agilizado quando usado o mesmo motor de jogo para criar diferentes jogos a maioria dos motores de jogo são distribuídos em forma de api application programming interface ou interface de programação de aplicativos porém alguns motores são distribuídos 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 distribuição esses motores completos são chamados de middleware pelo fato de serem distribuídos 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 gráfico e motor de física motores gráficos lidam com os gráficos sendo responsáveis de processar dados abstraídos de alto nível e gerar dados de baixo nível intendíveis pelo hardware como exemplo pode-se citar crystal space irrlicht ogre e realmforge motores de física lidam com a física sendo resposáveis por simular ações reais através de variáveis como gravidade massa fricção força e flexibilidade como exemplo pode-se citar bullet collada e ode história codificando.net e-magazine www.codificando.net ago set 2009 23

[close]

p. 24

tecnologia para desenvolvimento de jogos digitais e-magazine o termo game engine originou-se no meio da década de 1990 especialmente em conexão com jogos 3d como tiro em primeira pessoa a exemplo dos jogos doom e quake que ao invés de construir o jogo do zero outros desenvolvedores licenciaram os núcleos destes jogos usando-os como base para seus próprios motores de jogo com o amadurecimento os motores de jogo deixaram de se restringir ao desenvolvimento de jogos eles são usados em outras áreas como treinamento uso médico e simulações militares como a maioria dos jogos 3d estão cada vez mais se limitando ao poder da gpu e ppugraphics processing unit ou unidade de processamento gráfico/unidade de processamento de física as perdas de desempenho das linguagens de programação de alto nível como c java e python deixam der ser válidas enquanto os ganhos de produtividade oferecidos por essas linguagens trabalham em benefício dos desenvolvedores de motores de jogo abstração de hardware motores de jogo fornecem abstração 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 são 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 abstração de hardware também é essencial para o desenvolvimento de motores de jogo multiplataforma motores de tiro em primeira pessoa um bom e conhecido subconjunto de motores de jogo são os motores de tiro em primeira pessoa 3d enquanto jogos de estratégia em tempo real e simuladores de vôo apostam na qualidade gráfica jogos deste gênero apostam na ação o motor mais conhecido deste gênero é o doom a classificação de bom motor do gênero é exigente pois o que é considerado avançado em um ano no ano seguinte pode ser considerado padrão É comum serem criados novos motores com base em velhos motores misturando novas funções mas mantendo algumas antigas quando um motor mantém desenvolvimento focado nos gráficos o jogo pode perder no quesito ação um bom exemplo disso é o jogo cellfactor revolution que teve seu desenvolvimento parado o jogo agora está disponível para download completo e gratuito principais motores de jogos motores tradicionais 3d gamestudio c4 engine dx studio esperient creator ­ irrlicht ketsjiblender neoaxis engine panda3d rpg toolkit torque game engine truevision3d unity unreal engine motores de física bullet havok ­ ode motores gráficos crystal space ogre ­ openscenegraph motores proprietários 3d gamestudio codificando.net e-magazine www.codificando.net ago set 2009 24

[close]

p. 25

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 código aberto bullet crystal space irrlicht ketsji blender ode ogre openscenegraph panda3d rpg toolkit desenvolvimento nas plataformas atuais cada plataforma possui seu kit de desenvolvimento proprietário e pago porém além do computador existem alternativas para desenvolver jogos para essas plataformas · microsoft xbox 360 possui seu kit de desenvolvimento profissional porém com alternativa grátis 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 porém a ultima novidade é que sairá um concorrente para a ferramenta da microsoft xna chamada phyre engine que possibilitará usuários a criarem seus jogos utilizando toda a potência do playstation 3 sony playstation portable também como o playstation 3 o portable da sony também é bem fechado e o desenvolvimento gratuito nessa plataforma é feito de maneira ilegal através de ferramentas · criadas por usuários que utilizam falhas do console para rodar esse tipo de aplicativo nintendo wii a nintendo também possui o seu kit de desenvolvimento profissional e devido às duas maiores concorrentes estarem brigando pelo desenvolvimento gratuito começaram rumores de que o wii também terá a sua ferramenta para usuários nintendo ds assim como o psp o console portátil da nintendo não possui qualquer tipo de ferramenta para usuários desenvolverem jogos ou aplicativos sem utilizar o kit oficial · computador a plataforma pc é a mais aberta e possui uma quantidade muito grande de opções para desenvolvimento não só de jogos amadores como profissionais de baixo ou nenhum custo celular o desenvolvimento de jogos e aplicativos para celular cresceu muito devido a evolução rápida desses dispositivos hoje também é possível criar jogos em 3d para celulares as duas plataformas mais utilizadas são a symbian e o java jme porém a microsoft anunciou que será disponibilizada na versão 3.0 do xna a opção de desenvolvimento de jogos para plataforma windows mobile 6 ferramentas desenvolvimento para pc para desenvolver jogos para pc temos a opção de utilizar diretamente as apis gráficas directx e opengl porém teremos que redesenvolver muita coisa gastando muito tempo a opção mais viável é utilizar engines prontas e disponíveis para cada parte do game essas engines variam de qualidade linguagem facilidade preço e complexidade cabe a codificando.net e-magazine · www.codificando.net ago set 2009 25

[close]

Comments

no comments yet