Murilo's profileShinji Living On The Edg...PhotosBlogListsMore Tools Help

Shinji Living On The Edge

Software Engineer

Publicações

Minhas publicações técnicas sobre desenvolvimento de software

Descbrindo o DWM
http://www.microsoft.com/brasil/msdn/Tecnologias/windowsvista/DescobrindoDWM.mspx
Utilizando o Desktop Window Manager na plataorma .Net

Conceitos e Tecnologias no Desenvolvimento de Jogos Eletrônicos
http://www.sharpgames.net/JogosDownloads/tabid/60/selectedmoduleid/416/ArticleId/1234/ren/r/Default.aspx
Minha monografia sobre o desenvolvimento de jogos

Video sobre compatibilidade de aplicações no Internet Explorer 8
http://mediadl.microsoft.com/mediadl/www/b/brasil/technet/ie8/ie8compat_1024b.wmv
O Video apresenta os conceitos de compatibilidade que o IE8 traz para os desenvolvedores e usuários
Para salvar o video clique com o botão direito do mouse e selecione "Salvar Destino Como..."
6/22/2009

Esta semana é a Semana do Windows 7

Pessoal preparamos uma semana especial de webcasts sobre o Windows 7 para demosntrar os novos recursos do novo Sistema Operacional.

Confiram a lista de WebCasts que vamos apresentar http://technet.microsoft.com/pt-br/events/dd875461.aspx

Divirtam-se!

Shinji

 

Visão Geral do Windows 7 - em qualquer ambiente

Descritivo: Conheça os recursos que tornam o Windows 7 o sistema operacional mais fácil, prático e agradável de usar - em qualquer ambiente, com qualquer dispositivo - da nova interface gráfica aos recursos de rede como HomeGroup.

Data:22/06/2009
Hora: 12:00hrs
Inscreva-se


Visão Geral do Windows 7 - no ambiente empresarial

Descritivo: Produtividade, Segurança, Gerenciamento. Com o Windows 7, sua empresa vai ganhar muito nestas 3 áreas. Acesso rápido e de qualquer lugar com DirectAccess e BranchCache, Dados sempre Seguros com BitLocker e BitLocker To Go, PowerShell 2.0 para o total controle do ambiente, são somente alguns dos recursos para tornar a TI de sua empresa mais dinâmica e seus usuários mais produtivos.

Data:22/06/2009
Hora: 17:00hrs
Inscreva-se


Visão Geral do Windows 7 - no ambiente de Desenvolvimento

Descritivo: Prepare-se para explorar os recursos do Windows 7 em suas aplicações!

Data:23/06/2009
Hora: 12:00hrs
Inscreva-se


Windows 7 - Compatibilidade de Aplicações

Descritivo: Por mais que um sistema operacional novo traga inovações extremamente bem-vindas, seu negócio precisa continuar operando sem interrupções. Venha saber como garantir que suas aplicações legadas continuem funcionando no Windows 7.

Data:23/06/2009
Hora: 17:00hrs
Inscreva-se


Soluções de Gerenciamento no Windows 7

Descritivo: Conheça as melhorias que permitem melhor gerenciamento em PCs com Windows 7 como AppLocker, PowerShell e ferramentas de diagnóstico e reparo

Data:24/06/2009
Hora: 12:00hrs
Inscreva-se


Recursos de Segurança do Windows 7

Descritivo: BitLocker, BitLocker To Go, Controle de Conta de Usuário – As Boas Práticas para a implementação destes recursos serão apresentadas neste Webcast.

Data:24/06/2009
Hora: 17:00hrs
Inscreva-se


Windows 7 - Produtividade em Qualquer Lugar

Descritivo: BranchCache, DirectAccess, Federated Search – As Boas Práticas para a implementação destes recursos serão apresentadas neste Webcast.

Data:25/06/2009
Hora: 12:00hrs
Inscreva-se


Visão Geral do Pacote de Otimização de Desktop Microsoft (MDOP)

Descritivo: Conheça os seis produtos que compõe o Microsoft Desktop Optimization Pack - Inventário de Software, Virtualização de Aplicativos, Virtualização de Desktops, Ferramentas de Diagnóstico e Reparo, Monitoramento de Erros em PCs, Gerenciamento de GPOs

Data:25/06/2009
Hora: 17:00hrs
Inscreva-se


Melhorias no processo de implementação do Windows 7

Descritivo: Uma mesa redonda de encerramento para discutir os assuntos abordados durante a semana. Conecte-se com os principais especialistas da Microsoft e do Mercado!

Data:26/06/2009
Hora: 12:00hrs
Inscreva-se


"Virtual Round Table" de Encerramento

Descritivo: Nessa sessão explorar as novas ferramentas e funcionalidades que tornar a implementação do Windows 7 mais fácil do que em versões anteriores. Começando pelo processo de imagem, entrega e migração.

Data:26/06/2009
Hora: 17:00hrs
Inscreva-se

6/5/2009

“Bing” tones

image

Pessoal estou deixando aqui para vocês o link dos Bing Tones, ring tones criados para usarmos nos nossos celulares que tem como tema o Bing ( www.bing.com ).
Gostei bastante! Coloquei pra ligações e mensagens SMS!

http://download.microsoft.com/download/3/3/6/33647556-6FF2-4A3E-BD59-E4899BBE97DD/BingTones.zip

Divirtam-se

[]s
Shinji

4/26/2009

Motivos porque eu gosto de São Paulo 3: No Jardim Europa é assim

IMAGE_008

Domingão em São Paulo o pessoal leva o carro pra lavar, passa no posto pra abastecer, isto na cidade inteira. A diferença deste bairro para os outros são os veículos do pessoal :D Não se esqueçam da Ferrari ao fundo.

Tá aí o registro que fiz ao passear com a minha motoca pelo bairro Jardim Europa hoje no almoço.

Sensacional! Preciso dizer mais alguma coisa??? eeheh

Divirtam-se!

4/7/2009

Detectando a versão de navegador corretamente


Pessoal, segue um exemplo de como identificar a versão do Internet Explorer adequadamente.

Este método já inclui as verificações pelo engine assumido pelo IE8 por meio de combinações de tags de compatibilidade e/ou doctypes:

var engine = null;

if (window.navigator.appName == "Microsoft Internet Explorer")
{
   // Este navegador é IE, mas qual???
   if (document.documentMode) // IE8 pois o objeto document tem a propriedade documentMode
      engine = document.documentMode;
   else // Entre IE5 e IE7
   {
      engine = 5; // Assumindo o IE5 até que alguém prove o contrário. IE5 e IE6 são muito parecidos então pode assumir o 5
      if (document.compatMode)
      {
         if (document.compatMode == "CSS1Compat")
            engine = 7; // IE 7
      }
   }
}

Divirtam-se!

4/6/2009

Palestra sobre Windows 7 no MCT Summit 2009

DSC00189

Sábado, dia 04-04-2009 tive o prazer de apresentar uma palestra sobre Windows 7 no MCT Summit nos auditórios da Microsoft.
Dividi o palco com o colega Filipe Palma, coordenador do programa de Beta do Windows 7 no Brasil.

Falamos sobre vários assuntos e eu fiquei com a parte voltada para os desenvolvedores: Internet Explorer 8, PowerShell V2 e Novas APIs presentes no Windows 7.

Vou compartilhar com vocês um pouco do conteúdo técnico:

Internet Explorer 8
Selectors API
Edit: Selectors API é definida pelo W3C e já suportada por outros navegadores, não é um recurso proprietário do IE8.
http://www.w3.org/TR/selectors-api/


Um exemplo de como a Selector API facilita o trabalho de recuperar informações em um documento utilizando JavaScript:
Como recuperar somente as células com as porcentagens para adicionar a um gráfico no seguinte trecho html:

<table id="score">
  <thead>
    <tr>
      <th>Test</th>
      <th>Result</th>
    </tr>
  </thead>
  <tfoot>
    <tr>
      <th>Average</th>
      <td>82%</td>
    </tr>
  </tfoot>
  <tbody>
    <tr>
      <td class="description">A</td>
      <td class="percent">87%</td>
    </tr>
    <tr>
      <td class="description">B</td>
      <td class="percent">78%</td>
    <tr>
      <td class="description">C</td>
     <td class="percent">81%</td>
    </tr>
  </tbody>
</table>

Com JavaScript tradicional:

var table = document.getElementById("score");
var groups = table.tBodies;
var rows = null;
var cells = [];

for (var i = 0; i < groups.length; i++) {
  rows = groups[i].rows;
  for (var j = 0; j < rows.length; j++) {
    cells.push(rows[j].cells[1]);
  }
}


Com Selectors API:

var cells = document.querySelectorAll("#score>tbody>tr>td.percent");



PowerShell V2
Scripts

Transferindo arquivos utilizando BITS via powershell

Import-Module FileTransfer
$file = "http://www.microsoft.com/windows/Framework/images/logo_windows_footer.gif"
New-FileTransfer -ServerFileName $file -ClientFileNamePrefix c:\temp -DisplayName BitsDemo

Highlight em processos com WorkingSet (memória) maior que 30MB

foreach($proc in Get-Process)
{
    if($proc.WS -gt 30MB)
    {
        Write-host  -Fore green $proc.Name ($proc.WS/1024/1024)
    }
    else
    {
        Write-host $proc.Name ($proc.WS/1024/1024)
    }
}

 

Windows 7 APIs:
Uma olhada rápida na API da Taksbar: Interface ITaskbarList3 e como setar o tipo de indicador de progresso:

Enum de tipos de indicador:enum TBPFLAG
    {   
    TBPF_NOPROGRESS    = 0,
    TBPF_INDETERMINATE    = 0x1,
    TBPF_NORMAL        = 0x2,
    TBPF_ERROR        = 0x4,
    TBPF_PAUSED        = 0x8
    }     TBPFLAG;

 

Método:

HRESULT SetProgressState( HWND hwnd,    
                    TBPFLAG tbpFlags );

O evento foi show! O público melhor ainda!! E que venha o próximo!

Abraços

3/24/2009

Galeria de complementos nacionais para o Internet Explorer 8

O IE8 ganhou novos tipos de complementos para auxiliar os usuários na navegação.
Agora os sites podem criar serviços para facilitar o acesso ao seu conteúdo diretamente do IE8, sem obrigar o usuário a entrar no site e procurar pelos recursos que deseja.

Além dos novos serviços estarem disponíveis em seus sites, existe também uma galeria que centraliza estes recursos para facilitar ainda mais a vida do usuário, é a galeria de complementos.

Além da galeria internacional, temos também uma galeria com serviços brasileiros. Encotramos provedores de serviços como Submarino, buscapé, apontador etc etc, tudo que usamos no dia-a-dia, agora dentro do IE8.

Visitem a galeria pelo link http://www.ieaddons.com/br/ ou então através do Internet Explorer:

1) Selecione um texto, acesse o menu de aceleradores e então siga a imagem abaixo para visitar a galeria

image

Aceleradores http://www.ieaddons.com/br/accelerators/
Os aceleradores permitem que o usuário selecione um texto no IE8 e através de um menu contextual, acesse algum conteúdo.. como buscar produtos no buscapé, traduzir uma palavra diretamente do IE, procurar o mapa de algum lugar etc… tudo isto sem abrir uma nova janela, o que é muito trabalhoso. Veja abaixo um exemplo de tradução de palavra de Inglês para Português, sem sair da página em que está navegando.

image

WebSlices http://www.ieaddons.com/br/webslices/
Simplificando é um RSS muito mais poderoso e agora visual. Você assina um conteúdo de uma página, como se assina um RSS, e ele fica disponível dentro do Internet Explorer. Um exemplo do álbum de fotos do IDG Now

image

Busca Visual http://www.ieaddons.com/br/searchproviders/
A busca visual permite efetuar buscas no seu site preferido, sem sair do IE8.
O submarino já tem uma busca visual, você pesquisa produtos no submarino direto do navegador:
image

Agora é só instalar e usar! E claro desenvolver os seus complementos também!!

Diversão garantida!

[]’s

3/23/2009

Internet Explorer 8 disponível para download!

IE8 
Pessoal já está disponível para download o Internet Explorer 8 versão final!
Confiram o download em português http://www.microsoft.com/brasil/windows/internet-explorer/default.aspx

Para downloads internacionais vejam em http://www.microsoft.com/windows/internet-explorer/worldwide-sites.aspx

Uma dica minha é utilizar muito aceleradores e webslices, para tornar sua navegação muito mais rápida e ter as informações de maneira muito mais fácil. Vejam a galeria nacional de recursos para o IE8 http://www.ieaddons.com/br/accelerators

Divirtam-se!

[]’s

2/16/2009

Windows 7 – Biblioteca para desenvolvimento integrado com a nova barra de tarefas

O Projeto Taskbar7 é uma biblioteca para facilitar o desenvolvimento de aplicações .Net e C++ que utilizam os recursos da nova Taskbar do Windows 7.

O projeto é uma cortesia do time de Windows Brasil para auxiliar os desenvolvedores da comunidade a utilizar os recursos da nova barra de tarefas do Windows 7. Em fase Alpha a biblioteca fornece acesso fácil aos recurso de indicador de progresso da barra.
Logo outros exemplos serão adicionados para acessar outras funcionalidades, como Overlay Icon e Jumplists.

A solução inclui um projeto de demonstração de utilização dos recursos que refletem direamente na barra de tarefas.

image

Para os desenvolvedores C++ existe um header com código nativo que pode ser utilizado sem complicações e uma implementação para .Net.

Mais detalhes e download do código-fonte visite o site do projeto no MSDN http://code.msdn.microsoft.com/Taskbar7

Qualquer comentário, dúvidas, etc, é só falar :D

Divirtam-se!

1/30/2009

Video sobre compatibilidade com IE8

image

Está disponível no site de Windows para Empresas a gravação de um Webcast que trata da compatibilidade de aplicações web com o Internet Explorer 8.

O Webcast apresenta os recursos de compatibilidade disponíveis no Internet Explorer 8 para usuários e desenvolvedores, além de dicas sobre algumas das principais mudanças no processamento de HTML/DOM e CSS.

Página de Videos do Windows para Empresas
http://www.microsoft.com/brasil/windows/empresas/videos.aspx

Este video foi gravado por mim, aproveitem o conteúdo!

[]’s

1/21/2009

Skills de um programador

Olá pessoal como vão? Faz tempo que não consigo parar para escrever um post no blog, muito código para fazer aqui na empresa :D
Em meio à tanto código tenho notado o quanto a atividade de programador de computadores é constituída por uma série de conceitos que absorvemos com o tempo e nos torna cada vez mais um bom programador.
Pensando nisso, resolvi fazer uma lista de conceitos que um bom programador deve conhecer para que ele consiga resolver os mais diversos problemas de maneira eficiente. Esta lista não está completa, aguardo sugestões para aumentá-la, eu mesmo vou adicionar assim que indentificar/lembrar de novos pontos importantes. Vou enumerar, mas neste caso a ordem dos fatores não altera o produto.

gates-centerfold

1 – Documentação
Conhecer a documentação da plataforma que utiliza é essencial para que o programador consiga resolver os problemas.
Se a plataforma fornece uma boa documentação e você sabe como utilizá-la adequadamente, provavelmente você não precisará de tantos livros para aprofundar seu conhecimento nas bibliotecas e recursos que você não domina.
Entender o modelo e sugerir melhorias na documentção pode ajudar em momentos cruciais onde o projeto está no limite do prazo e você tem problemas “desconhecidos” para resolver.

2 – Padrões de projeto/arquitetura/etc
Conhecer padrões de codificação e distribuição de componentes desenvolvidos por outras pessoas/empresas ajuda  a tomar decisões mais eficientes de como resolver os problemas. Como economizar determinado recurso, como resolver problemas críticos como sincronização etc, manter um equilíbrio entre flexibilidade, portabilidade e especificidade de um código.
Estas decisões influenciam diretamente no resultado final, e é bom ver como as pessoas resolvem as coisas por aí, pois muitas vezes alguém já se deparou com um problema semelhante e pode-se aprender com as decisões anteriormente tomadas.

3 – Regular Expressions
Validações de dados, busca e manipulação de texto sempre são muito úteis. Regular Expressions são uma forma muito interessante de resolver estes problemas. É um padrão e pode ser utilizado em qualquer plataforma. O que não vale é fazer algoritmos de validação de dados gigantes e utilizar como desculpa que não conhece Regular Expressions e vai demorar para aprender, é só se esforçar um pouco, você só tem a ganhar, pois elas trabalham MUITO por você.

4- Arquivos
Em algum momento você precisa manipular um arquivo. Seja gravar um arquivo de texto no disco, carregar uma figura em memória, ler um arquivo XML ou criar seu próprio formato de arquivo binário. Fazemos isto à todo momento e é um recurso que pode ser muito útil, mais do que pensamos.
vale a pena entender como sua plataforma trabalha com arquivos de texto e binários e extrair o potencial da persistência de dados.

5 – Banco de Dados/SQL
Se as Regular Expressions trabalham muito por você, os bancos de dados praticamente são seus pais. Podemos reclamar, muitos não gostar, mas todos usamos bancos de dados em algum momento. É importante conhecer o modelo de dados que eles utilizam para otimizar o acesso aos dados de maneira a não afetar o resltado final do programa, pois como os bancos podem ajudar, eles também podem ser grandes inimigos da performance quando não são bem utilizados.

6 – Rede
Diferentemente de alguns anos atrás hoje o mundo, inclusive o Brasil está amplamente conectado. O trabalho caminha junto com a conectividade e informações que chegam pela rede, porém fazer bom uso deste recurso fabuloso é trabalhoso. O programador deve ter em mente como a rede funciona e como ela pode ajudar a resolver os seus problemas. O conceito de cloud computing que está na moda é uma grande utilização da rede para resolver problemas. Como usar? O que da pra fazer? Pode afetar a resposta do meu software? (sim) Como otimizar para não interferir na experiência do usuário? Enviar e receber bytes? hmmm bastante coisa e é muito interessante!

7 – Processamento paralelo/threads
Cada vez mais temos hardware com suporte à processamento paralelo, mas fazmos uso dele? Até hoje, muito pouco. Como fazer um processamento paralelo? Como resolver as tarefas de maneira mais eficiente utilizando este recurso? Como funcionam as threads? Essencial ter um bom conhecimento sobre estes assuntos, tendo em vista que é tendência e que os softwares estão cada vez mais sofsticados, precisando efetuar mais tarefas e responder mais rápido ao usuário, que cada vez está mais exigente.

8 – Orientação à Objetos
A OO ajuda a organizar o sistema de uma maneira muito interessante além de uma série de recursos que proporcionam o reaproveitamento de código e uma elegância ao software. Hoje é essencial, tendo em vista que temos as linguagens mais populares tirando proveito total dos recursos de OO, e para tirar proveito das linguagens baseadas em OO é necessário um bom entendimento de como funciona e como pode ajudar ao desenvolver.

A lista já está grande, continuamos outro dia ;)
Gostaria da contribuição de vocês com outros ítens top of mind para um programador.

Divirtam-se!

[]’s

12/9/2008

Fazendo busca na web pela barra de endereços do IE8

Muitas novidades chegaram de uma vez só com a nova geração de navegadores, especialmente com o Internet Explorer 8, que traz uma avalanche de novos recursos tanto para desenvolvedores quanto para usuários.
Um dos recursos mais interessantes para o usuário (meu ponto de vista como usuário :D)  é a nova barra de endereços do Internet Explorer.
Quando você digita algo nela, ela já faz uma busca pelo histórico, favoritos e feeds e ainda dá uma sugestão de opção mais utilizada pelo usuário, realmente muito prática e organizada.

Vejam um exemplo:
 image

Para efetuar buscas com o seu provider de busca padrão é necessário utilziar a barra de buscas, logo à direita da barra de endereços, o que é diferente do Chrome onde a barra de endereços serve para as buscas também.
Porém, como já sabemos o IE8 tem muitos recursos e para a surpresa de muitos é possível efetuar buscas diretamente no seu provider de busca padrão utilizando a barra de endereços. ^___^

Para buscar um termo no seu provider de buscas padrão direto da barra é necessário digitar “? termo” na barra de endereços, vejam o exemplo abaixo:

image

E para aqueles que gostam de fazer comparações entre os navegadores, já temos a barra de busca integrada + busca visual dependendo do provider de buca, o que torna a barra do IE8 extremamente mais poderosa que de qualquer outro navegador ;), vejam o que acontece se eu mudo meu provider de busca para Amazon Visual Search:

image

Eu tenho resultados direto da amazon com foto e informações adicionais na minha barra de endereços, uma opção muito boa para quem está procurando por algum produto, imaginem um provider do submarino, americanas.com etc…

Recurso bem interessante, espero que torne suas buscas mais ágeis ainda com o IE8!

Divirtam-se

[]’s
Shinji

11/24/2008

Concurso de Mini Games feitos em XNA

image 
Pessoal, este é um concurso bem interessante para quem está estudando XNA! Um concurso de mini games com uma restrição de até 100 linhas de código!! Uma oportunidade perfeita pra testar a criatividade e habilidade com xna e c#!! E ainda dá pra fazer pensando no zune, imagine distribuir um mini game para zune e possivelmente xbox live community games?

Vamos concorrer? Já estou preparando a minha idéia!

Confiram as regras em
http://www.sharpgames.net/concursoROX/

Divirtam-se!

[]’s
Shinji

11/19/2008

Palestra Tech Ed 2008 – IE8 Para Desenvolvedores

Com um pouco de atraso estou escrevendo sobre a palestra no TechEd 2008.
Eu, Miguel Ferreira e Alfred Myers, realizamos a palestra Internet Explorer 8 para desenvolvedores. Foi uma honra dividir a apresentação com os feras e falar sobre o IE8 para os desenvolvedores no TechEd.

Falei sobre as melhorias e como o time de Internet Explorer contribuiu para a diminuição de ambiguidades e também mostre a nova API nativa para manipulação de objetos via script, a Selector API.

Sem muito tempo e palavras, confiram as fotos da apresentação.

Olha o SDET alí!
TechEd 2008 003 

Preparação
TechEd 2008 002

Conferir os slides nunca é demais ;)
TechEd 2008 009

Corre Shinji, só tem 15 minutos eheheh
TechEd 2008 018

CSS 2.1 o IE8 está aderente ao padrão
TechEd 2008 021

Tech Ed Brasil 2008!
TechEd 2008 028 

Grande abraço pessoal!

Shinji

10/19/2008

Palestra sobre XNA na Universidade Ibirapuera

Eu encerrei a semana mais agitada dos últimos anos da minha vida com uma palestra na sexta-feira na Universidade Ibirapuera.
Ainda estou sem as fotos, mas disponibilizo como prometido os slides da apresentação para os alunos olharem com mais calma tudo que eu falei sobre XNA.



Foi uma apresentação muito boa, o público também era ótimo, fui muito bem recebido! Valeu pessoal!

Divirtam-se

[]’s
Shinji

Technorati Tags: ,
10/13/2008

No TechEd me procurem no estande do IE8

internet_explorer_logo

Pessoal, esta semana rola o TechEd e participarei do evento falando de IE8  para o pessoal! No estande teremos demonstração de recursos, perguntas e brindes! Espero todos vocês lá!

Também espero todos na palestra de Internet Explorer 8!!!

[]’s
Shinji

9/24/2008

O que vem por aí para o XBOX 360!!

xbox-360-logo-grey

Editado!!! Pessoal, falei com o Galileu e ele disse que incluirá novidades sobre XNA no webcast, encontro vocês lá no webcast

Pessoal, o último sábado de cada mês é dia de Webcast! Agora no dia 27 de Setembro será dia do Saturday Night Game com o Galileu Vieira apresentando o que vem por aí no Xbox 360

Segue a descrição do evento:

Data: 27/09/2008
Hora: 21:00 h (Brasília)

Palestrante: Galileu Vieira.

Título: O que vem por aí para o XBOX 360

Resumo: Venham ver as novidades que vão ser lançadas para o Xbox 360 nos próximos meses. Novos jogos, novos acessórios e uma interface completamente refeita que dará uma nova vida ao seu Xbox 360. E temos uma surpresa para quem participar da sessão, além do sorteio do brinde é claro!

Clique aqui e inscreva-se.

Participe e concorra a Brindes no final dos Webcasts.
Promoção válida até Dezembro de 2008.

 

Eu já me inscrevi, espero vocês lá!

[]’s
Shinji

9/21/2008

GameFest Brasil 2008! Sucesso!

Pessoal, ontem aconteceu o GameFest Brasil 2008 e foi um evento excelente!
Parabéns ao pessoal da organização!

Fico imensamente feliz de ver que o SharpGames, comunidade que eu fundei junto com o Jalf hoje é a maior comunidade da américa latina de conteúdo sobre xna de língua não inglesa! E o resultado disto é o Brasil mostrando do que é capaz no mundo dos games!

Eu ministrei no track basico uma palestra sobre Storage com XNA que é um assunto simples, porém a idéia foi mostrar para o pessoal quantos conceitos da plataforma .Net foram necessários para realizar a tarefa e deixar a dica de recursos interessantes para que os jogos tenham um código mais fácil e eficiente. A demo foi baseada no jogo Lost Odyssey, para aqueles que se interessaram pelo jogo, aí vai um post meu com a trilha sonora para download(soundtrack fantático!)
Lost Odyssey Original Soundtrack

Como prometido aqui estão os arquivos da palestra:

Apresentação
Lembrem-se de dominar o .Net e C# para dominar o XNA com maestria!
http://cid-de5afe5b638592f4.skydrive.live.com/self.aspx/Palestras/GameFest%20Brasil%2020-09-2008/Xna%20Storage.ppt 

Demo
Demo com código comentado e melhorado
http://cid-de5afe5b638592f4.skydrive.live.com/self.aspx/Palestras/GameFest%20Brasil%2020-09-2008/Xtorage.zip

Trechos de código contidos na demo

Serialization
public static void Serialize(object obj, string fileName)
        {
            using(FileStream stream = File.Open(fileName, FileMode.OpenOrCreate))
            {
                XmlSerializer serializer = new XmlSerializer(obj.GetType());
                serializer.Serialize(stream, obj);
                stream.Close();
            }
        }

Binary Files
protected void OpenBinaryWriter()
        {
            this.binaryWriter = new BinaryWriter(File.Open(Path.Combine(this.storagePath , this.Name + ".bin"), FileMode.Create));
            this.isBinaryWriterOpened = true;
        }

protected void OpenBinaryReader()
        {
            this.binaryReader = new BinaryReader(File.Open(Path.Combine(this.storagePath , this.Name + ".bin"), FileMode.Open));
            this.isBinaryReaderOpened = true;
        }

Lost Odyssey
public Kaim(string storage)
           : base(storage,"Kaim", true)
       {
       }

E também algumas fotos!!

Identificação!!! Muito bom!
GameFest 037

Evento lotado!
GameFest 006

Keynote Ubisoft! Uma presença valiosa da Ubisoft de Bertrand Chaverot diretor do estudio brasileiro da Ubi
Ubisoft anuncia estúdio de desenvolvimento de Jogos no BrasilGameFest 007

Eis aqui um cara que já considero um grande amigo! Flavio Rodriguez!GameFest 013

Bertrand Chaverot, muito requisitado nos bastidores pelo pessoal das revistas!
GameFest 015 

Gravação do podcast nos bastidores! Ouvindo, vocês conseguem imaginar que é assim? :D Muito bom!GameFest 019

Palestra do Fabio Galuppo como sempre um conteúdo avançado muito bomGameFest 016

Brindes, muitos brindes!
Antes da minha palestra sortei de muuuuito brindes para o pessoal, comandado pela Carla Silva!GameFest 026

Conteúdo da minha palestra sobre Storage com XNA! Primeira estando na Microsoft e foi muito legal! Palco imenso com direito a transmissão ao vivo e tudo! Assim que possível disponibilizo o video!

GameFest 032

Palco fabuloso!
GameFest 033 

As demos!! Correram muito bem! ufs! ehehehGameFest 034

Gostei tanto do palco enorme que queria até dar um passeio por lá!GameFest 035

E pra encerrar o evento um bate-papo muito bom com o pessoal do evento, eu não estava me sentido bem então não participei da mesa... Falta a carla na foto e o Emerson Facunte soltando o verbo!GameFest 045

Grande evento pessoal, ano que vem com certeza traremos muito mais novidades para todos!
Qualquer dúvida ou sugestão podem comentar no blog que eu encaminho!

Vamos jogar um pouco então? Divirtam-se!

Shinji

9/16/2008

Trabalhando na Microsoft

Microsoft-002_light

Pessoal, a partir desta semana várias coisas mudaram em minha vida!
Primeiro eu deixei o programa Student Partners. Após quatro anos de experiências fantásticas como Student Ambassador, Estudante Embaixador ou Student Partner chegou a hora de abrir caminho para novos desafios e lugar para novos estudantes para que saiam pelo país divulgando o conhecimento e fazendo amigos!
Foram quatro anos maravilhosos, agradeço à todos que conheci e que participaram direta ou indiretamente de todas as atividades!

O programa foi muito importante para que eu atingisse um grande objetivo, estar do outro lado da mesa, trabalhar na Microsoft e desde segunda é o que acontece!
Atualmente sou Engenheiro de Software e Teste na Equipe de Windows na Microsoft Brasil e até o lançamento do IE8 vou trabalhar com o produto (adianto que está muito bom!!).

Além de uma grande realização profissional/pessoal acredito que será uma experiência fantástica (já está sendo)! O ambiente e as pessoas são fantásticas, imagine caminhar em meio a milhares de ítens relacionados à windows, office, XBOX etc etc? é show!
Na medida do possível vou contando como é lá, eu sempre quis saber eheheh ;)

Obrigado à todos novamente, pois se hoje estou aqui, podendo executar este trabalho é porque tenho vocês!
E vamos embora pois existe muito trabalho a fazer!!

Grande abraço!

Shinji

Despedida 7COMm

Caçapava 001 
Caravana para caçapava: Cesar e sua namorada, Candeloro e sua esposa, Diogo e Bruna, Natália e Robô, Emily e seu esposo, Marcelo e sua esposa e EU!

Sexta-feira, dia 12 foi o meu último dia de trabalho na 7COMm. Foi o final de um período relativamente curto (5 meses), porém intenso onde aprendi bastante com as pessoas que lá conheci e conviví.

Sábado foi dia de festa em caçapava e como eu não consegui ir no meu almoço de despedida na sexta, considero esta festa a minha despedida!

Valeu pessoal, tenho certeza que fiz vários amigos! Agora é hora de seguir em frente

[]'s
Shinji

8/30/2008

Lost Odyssey Original Soundtrack

Inexplicavel é a palavra que explica a maravilha que é a trilha sonora do jogo Lost Odyssey.
Encontrei para download no MegaUpload, recomendo à todos curtir e comprar o CD original.

Para quem não conhece, Lost Odyssey é um RPG baseado em turnos para Xbox 360. Ele é criado por Hinoburo Sakagushi, o criador de Final Fantasy. Porém é extremamente melhorado, com enredo fascinante, gráficos realmente next-gen etc etc, vale a pena.

A trilha sonora tem a assinatura do consagrado Nobuo Uematsu, que também dispensa comentários pela sua genialidade.

O jogo é bastante extenso, são 4 DVDs, estou atualmente com 45 horas de jogo! Poderia estar em 100 que estaria feliz! eheheh

Lost Odyssey no GameSpot
http://www.gamespot.com/xbox360/rpg/lostodyssey/index.html

928334_67393_front

 

Title:Lost Odyssey Original Soundtrack
Street Release: January 23, 2008
Tracks: Disc 1 (33 tracks) & Disc 2 (23 tracks)

DISC 1 Tracklist:
http://www.megaupload.com/?d=ISRR496P (103 MB)

svwc75145jq1

1 - Prologue
2 - Battlefield
3 - Fire Above the Battle
4 - Stopping Blow
5 - Immortal Life
6 - Wohl Highlands
7 - Battle Conditions
8 - Victory
9 - The Capital of Uhra
10 - Neverending Journey
11 - Epsylon Range
12 - Sad Tortan
13 - Gangara’s Plot
14 - An Enemy Appears!
15 - World of Ice
16 - March to War
17 - Crisis & Warning
18 - White Depot Ship
19 - Eclipse Of Time (Harp Version)
20 - Numara Palace
21 - The Capital of Numara
22 - Small Recollections
23 - Kelelon Forest
24 - A Mighty Enemy Appears!
25 - Parting Forever
26 - A Return, Indeed… (Piano Version)
27 - Flashback
28 - Invasion
29 - A Sign of Hope
30 - Theme of Pirates
31 - Yosolo
32 - Tosca Village
33 - House of the Witch

DISC 2 Tracklist:
http://www.megaupload.com/?d=BM6EZEE7 (100 MB)

cover_l

1 - A Return, Indeed… (Vocal Version)
2 - The Mysterious Machine of the Demons
3 - Escape!
4 - Saman, Town of Merchants
5 - The Capital of Gotsa
6 - Demons Invasion
7 - The Man Possessed by the Demons
8 - Decision
9 - Blizzard Field
10 - What You Are (Guitar Version)
11 - Battle with the Demons
12 - The Wanderer of Darkness
13 - Ruins of the East
14 - Dark Saint
15 - Large Cruise
16 - Interval of Dimensions
17 - Distorted Space
18 - Roar of the Departed Souls
19 - Theme of Seth
20 - Light of Blessing ~ A Letter
21 - What You Are (Vocal Version)
22 - Main Theme
23 - Eclipse Of Time (Vocal Version)

The cover + back are included

Divirtam-se

[]'s
Shinji

8/26/2008

Kernel Panic

Uma dos argumentos que eu mais usava na época da faculdade contra o pessoal cego pelo código fonte aberto era: "Quantas pessoas vocês conhecem que podem ler o código fonte de um sistema operacional, entendê-lo e alterar alguma coisa se necessário?".
Outro dia me disseram que eu estava mudado, justamente porque eu atualmente estou estudando Sistemas Operacionais e adivinhem, estou me enquadrando e me beneficiando de sistemas operacionais de código-fonte aberto para os estudos :D heheheh

Eu lembro também que na época da faculdade, de certa forma, eu ignorava alguns livros passados pelos professores, dentre eles o que estou atualmente lendo e gostando muito:

21364106_4

Sistemas Operacionais: Projeto e Implementação, livro de ALBERT S. WOODHULL   e ANDREW S. TANENBAUM  
http://www.submarino.com.br/books_productdetails.asp?Query=ProductPage&ProdTypeId=1&ProdId=21364106&ST=SR

O livro aborda a arquitetura dos sistemas operacionais e usa o Minix3 www.minix3.org  como base para os estudos. Um CD acompanha o livro e este traz o código fonte do sistema operaciona, e também a instalção e uma versão live, e realmente funciona muito bem!

Sinceramente? Eu deveria ter lido este livro no terceiro ano e aproveitado, mas acredito que não era o momento... mas agora é!

Pois bem, durante esta leitura ja encontrei muitos ítens interessantes e pretendo mostrar sempre pontos de implementação do SO aqui no blog... pra começar eu estava dando uma olhada hoje no fonte do arquivo utitlity.c e encontrei uma função muito interessante, a Kernel Panic!

Todo mundo já ouviu falar da Tela Azul do Windows certo? Em linhas gerais ela acontece quando uma exceção grave acontece no Sistema Operacional, a niver de Kernel mesmo, hoje este tipo de exceção diminuiu muito, porém já presenciei o driver da minha plata ATI estourando o Windows Vista :(

Para quem já trabalhou com Linux e afins já deve ter se deparado com o parente X da tela azul o Kernel Panic!
Que também trata de uma excepção crítica no nível do Kernel... para descontrair e matar um pouco a curiosidade vamos dar uma olhada na função panic do Minix, que é a saída para estas exceções críticas

/*===========================================================================*
*                panic                                        *
*===========================================================================*/
PUBLIC void panic(mess,nr)
_CONST char *mess;
int nr;
{
/* The system has run aground of a fatal kernel error. Terminate execution. */
  static int panicking = 0;
  if (panicking ++) return;        /* prevent recursive panics */

  if (mess != NULL) {
    kprintf("\nKernel panic: %s", mess);
    if (nr != NO_NUM) kprintf(" %d", nr);
    kprintf("\n",NO_NUM);
  }

  /* Abort MINIX. */
  prepare_shutdown(RBT_PANIC);
}

Basicamente esta função é invocada quando acontece o pânico no Kernel e ela simplesmente cuida para que não aconteça um pânico recursivo generalizado (ehehehe), exibe uma mensagem de Kernel Panic na tela e invoca o shutdown do sistema operacional!! WOW!

Essa foi pra começar com chave de ouro! eeheheh Vamos falar mais de sistemas operacionais estudando o fonte do Minix, porém o meu desejo mesmo era ver o código fonte do Windows e comparar as implementação, ver onde a Microsoft acerta mais que os Unix based acertam mais! É um mundo fabuloso!

Divirtam-se!!!!

[]'s
Shinji

8/25/2008

Migrando do TheSpoke para o Live Spaces com o IntoSpaces

Olá pessoal!
Acabei de fazer a migração completa dos meus quase 400 posts do thespoke http://thespoke.net/blogs/shinji para o meu spaces, para que possa tornar aqui o meu canto definitivo na web!

Para isto contei com a ferramenta IntoSpaces, desenvolvida pelo Juliano Nunes, que além de salvar os posts localmente ela já transfere seu conteúdo direto para o live spaces, não é fabuloso?

Acessem e migrem suas contas, o spaces está melhorando bastante e vale a pena

Confiram o post no blog do Juliano http://julianonetfox.spaces.live.com/blog/cns!7BF4AA45844A3B06!893.entry e no codeplex http://www.codeplex.com/intospaces

Excelente iniciativa! Um belo trabalho!

[]'s
Shinji

8/20/2008

C# 3.0: Join LINQ

Pessoal, no último post, comentei sobre utilizar linq para manipular coleções inclusive usando o operador join para unir resultados de N coleções em apenas um conjunto de dados.
Pois bem, atendendo à pedidos vou dar um exemplo simples de join no LINQ para que vocês possam visualizar como utilizamos mais este de muitos recursos que vem com o C# 3.

Evangelion
Antes de mostrar o exemplo eu vou falar um pouco dos elementos que utilizei nas coleções :D
Alguém já se perguntou o por quê de Shinji? Shinji é o personagem principal do Animê/Mangá chamado Neon Genesis Evangelion, o qual eu gosto muito (recomendo).

Toda a trama complexa gira em torno de crianças escolhidas para pilotar Evas (Robôs?) para defender a humanidade do fim do mundo.
As três crianças são: Shinji, Asuka (lê-se Aska) e Rei.

Os a princípio chamados de robôs, são os Evas, gigantes munidos de armas e a mais alta tecnologia que a humanidade conhece. Eles são conduzidos em sincronia com os pensamentos das crianças, ou seja, a crinaça pensa em andar e eles andam, eles tem o braço arrancado e a criança recebe o mesmo impulso no cérebro....

1383241388_75ea92447f
Shinji sentado, Askua na escada e Rei em pé
3evas
Eva 02, Eva 01 e Eva 00

 LINQ
Agora que vocês já sabe do que se tratam as nossas coleções, vamos ao exemplo:

Poderíamos utilizar tipos anônimos, mas neste caso é necessário criar duas classe:

    class Pilot
    {
        public string Name { get; set; }
    }

    class Eva
    {
        public string Number { get; set; }
        public Pilot Pilot { get; set; }
    }

Temos uma classe para representar o piloto, e uma para representar o eva, com uma propriedade para o piloto destinado a controlá-lo.
Já que temos as entidades, agora vamos popular duas coleções para que tenhamos dados para trabalhar esta equipe e salvar o mundo eheheh

Pilot[] pilots = {
                                   new Pilot{ Name = "Shinji" },
                                   new Pilot{ Name="Asuka" },
                                   new Pilot{ Name="Rei" }
                               };


            Eva[] evas = {
                                 new Eva{ Number="01", Pilot=pilots[0] },
                                 new Eva{ Number="02", Pilot=pilots[1] },
                                 new Eva{ Number="03", Pilot=pilots[1] },
                                 new Eva{ Number="04", Pilot=pilots[0] },
                                 new Eva{ Number="00", Pilot=pilots[2] }
                             };

Um array de pilotos e um array de Evas, sem muitos segredos aqui, além do novo recurso Object Inializer, onde passamos os valores das propriedades direto na inicialização do objeto, o que permite mais uma opção ao se inicializar um objeto .Net, dispensando às vezes a sobrecarga de construtores.

Vamos à nossa consulta, para unirmos informações vindas das duas coleções sem precisarmos criar uma terceira classe para isto.


var q = from pilot in pilots
                    join eva in evas on pilot equals eva.Pilot
                    select new { Pilot = pilot.Name, Eva = eva.Number };

Reunimos em uma nova entidade o nome do piloto e o respectivo eva de acordo com a referência que fizemos entre pilotos e evas na inicialização dos evas.

Para imprimirmos os resultados:

foreach (var item in q)
            {
                Console.WriteLine("\"{0}\" pilota o Eva {1}", item.Pilot, item.Eva); 
            }

Obtemos:
"Shinji" pilota o Eva 01
"Shinji" pilota o Eva 04
"Asuka" pilota o Eva 02
"Asuka" pilota o Eva 03
"Rei" pilota o Eva 00

Simples não? E claro é um exemplo extremamente simples.
Para ver mais muitos exemplos de expressões com LINQ para trabalhar os dados vejam os 101 exemplos:
http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

E para ver mais sobre joins, vejam o LINQ Query Expressions (C# Programming Guide)

Agora sim está completo, espero que tenham gostado e passem a usar muito C# 3.0 e assistir ao Evangelion :D

Divirtam-se

[]'s
Shinji

Technorati Tags: ,,
8/19/2008

C# 3.0: Por que var?

Hoje saindo do trabalho com um amigo do trampo passamos por uma banca e ele me questionou sobre o que era "LINQ" que estava escrito em uma revista de .Net, não lembro qual eheheh

Durante a conversa rápida chegamos ao polêmico "var".

Quando expliquei o papel do var no C# 3 ele logo disse algo como: "estamos voltando à tipagem fraca".

Aí surgiu a idéia deste post, pra falar um pouco do porquê do var.

Como sempre, podemos começar pela documentação da linguagem

var (C# Reference)
http://msdn.microsoft.com/en-us/library/bb383973.aspx

Na documentação a palavra chave var é definida como indicador de tipo implícito e tem um exemplo excelente para exibir a diferença entre a declaração de um membro de tipo implícito e tipo explicíto.

var i = 10; // implicitly typed
int i = 10; //explicitly typed

Quando utilizamos o var ao invés do tipo na declaração o compilador infere o tipo da atribuído à variavel, no exemplo ele assume que a variável está recebendo um inteiro e assim será em toda a sua vida, não adianta tentar atribuir uma string na próxima linha, que o compilador não permitirá, inclusive a compilação do visual studio já aponta erro, vejam:

image

Já temos a indicação que a variável q é do tipo int e ponto final.
Até aqui ainda fica a impressão no ar de que o var é uma forma de voltarmos ao variant do visual basic ou então a programação extremamente flexível do javascript onde podemos tudo, sem tipagem, o que é muito ruim.

Mas existem alguns recursos do C# + LINQ que só são possíveis com o mecanismo de flexibilidade que o var oferece.

Vamos começar pelos Anonymous Types:

Anonymous Types (C# Programming Guide)
http://msdn.microsoft.com/en-us/library/bb397696.aspx

Basicamente são tipos definidos de maneira dinâmica, sem necessitar de um tipo explicito previamente definido.
Exemplo:

image

Com esta construção armazenamos duas propriedades somente leitura em um tipo anônimo representado pela variável shinji.
Um detalhe importante sobre os anonymous types é que eles não são tipos genéricos e não causa boxing e unboxing de uma maneira oculta, eles são realmente objetos fortemente tipados, a diferença é que o compilador cria a implementação pra gente onde lhe é conveniente, dispensando o trabalho.
Vejam o que foi gerado com a compilação deste meu código, tanto o reflector quando o ILDASM entendem a classe AnonymousType0 como uma classe comum, claro com uma implementação mais complexa do que se fossemos escrever, mas é um recurso extremamente interessante.

 image


Interessante não? Uma solução muito legal que permite uma flexibilidade muito grande ao escrevermos aplicações, mas nenhum caso citado até agora justifica os esforços do pessoal da equipe do C#, porém com o LINQ conseguimos entender justamente o motivo e o valor de tudo isto para nosso código.

Vejamos um exemplo para recuperar a lista de processos correntes no sistema operacional utilizando var, anonymous types e linq em conjunto:

image

O que realmente aconteceu aqui? Resumimos a coleção de objetos System.Diagnostics.Process, recuperada pelo metodo GetProcess() para uma coleção de um objeto que contém apenas a processos que estão sendo executados em prioridade alta e com as informações que nos interessam na situação, ID e ProcessName.
Isto tudo sem termos que criar uma classe anteriormente pra isto.

Otimizamos assim a utilização de nossa coleção e é um recurso extremamente útil para unirmos em um objeto informações diferenciadas. Poderíamos nesta consulta estar trabalhando com duas coleções, utilizar um JOIN e obter um resultado disto tudo em apenas um objeto, o que facilita muito a nossa vida, sem a necessidade de mais interações no futuro.

É isto pessoal, percebem como o var é importante? Sem ele teríamos bem mais trabalho para realizar estas tarefas, então ele vale a pena, porém deve ser usado com cautela onde é necessário, para que não perdamos a legibilidade do nosso código sem tipos, o que seria algo ruim e um regresso.

Espero que tenham gostado e que ajude!

Divirtam-se!

[]'s
Shinji

Technorati Tags: ,,
8/16/2008

Programas Free para criação de ícones

Uma coisa importante que percebo no Windows Vista e nos softwares mais profissionais que conhecemos é a qualidade de seus ícones.
O feeling de sua aplicação deve ir além da interface Win32, o Wpf está vivo para isto!

Concordam que o ícone deve seguir o mesmo caminho? E a compatibilidade dos ícones com as várias versões de windows e quem sabe até um mac? :P

Existem dois editores que se propõem a fazer isto muito bem e sem cobrar nada

axiw-box-2 Axialis Iconworkshop Lite http://www.axialis.com/download/iwlite.html

Integra-se ao Visual Studio 2008 e suporta o formato PNG com compressão do Vista \o/ entre muitas outras features

IcoFX - <http://icofx.ro/>
Também com muitas features e suporte ao formato do vista

Aproveitem!
Encontrei estes editores no blog do Visual C http://blogs.msdn.com/vcblog/archive/2008/08/11/iconworkshop-lite-now-available-for-download.aspx

Divirtam-se e mostrem ao mundo os melhores ícones de todos!
Agora não existe mais desculpa que tem que comprar ferramentas decentes para edição de ícones eheheh ;)

[]'s
Shinji

 

Murilo Maciel Curti

Occupation
Location
Interests
Bachelor of Science - Software Engineer at Microsoft Brazil Windows International Team
Por onde eu ando na rede
This person's network is empty (or maybe they're keeping it private).