|
|
6/22/2009 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 4/26/2009
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 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
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 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
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.
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
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:
Agora é só instalar e usar! E claro desenvolver os seus complementos também!!
Diversão garantida!
[]’s 2/16/2009 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.
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
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 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.
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 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: 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:
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:
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 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 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í!
Preparação
Conferir os slides nunca é demais ;)
Corre Shinji, só tem 15 minutos eheheh
CSS 2.1 o IE8 está aderente ao padrão
Tech Ed Brasil 2008!
Grande abraço pessoal!
Shinji 10/19/2008 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 10/13/2008  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 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 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!
Evento lotado!
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 Brasil
Eis aqui um cara que já considero um grande amigo! Flavio Rodriguez! Bertrand Chaverot, muito requisitado nos bastidores pelo pessoal das revistas!
Gravação do podcast nos bastidores! Ouvindo, vocês conseguem imaginar que é assim? :D Muito bom! Palestra do Fabio Galuppo como sempre um conteúdo avançado muito bom Brindes, muitos brindes! Antes da minha palestra sortei de muuuuito brindes para o pessoal, comandado pela Carla Silva! 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! Palco fabuloso!
As demos!! Correram muito bem! ufs! eheheh
Gostei tanto do palco enorme que queria até dar um passeio por lá! 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!
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 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 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 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
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)  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)
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 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: 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 Technorati Tags: Windows, Minix, Linux, Unix, Sistemas Operacionais, Operating Systems, Open Source, Livros, Books, Exception, Kernel8/20/2008 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....  Shinji sentado, Askua na escada e Rei em pé |  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
8/19/2008 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:
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:
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. 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:
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 8/16/2008 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
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
|
|
|
|