Olá,
Hoje venho rapidamente falar sobre um post que vi no blog do Camilo Lopes, já acompanho o seu blog a algum tempo, desde que ele fala muito sobre java, nos últimos tempos começo a falar sobre Agile, para quem não sabe são metodologias ágeis de desenvolvimento.
Em uma recente publicação ele comentou sobre a Certificação Scrum Master. Achei muito legal a experiência que ele dividiu em seu blog. Então hoje queria indicar essa leitura a todos:
Entendendo Certified Scrum Master CSM
http://blog.camilolopes.com.br/entendendo-certified-scrum-master-csm/comment-page-1/
Até a próxima.
20 de set. de 2011
10 de set. de 2011
Trabalhando com Gzipstream e Deflatestream no C#.NET
Trabalhando com Gzipstream e Deflatestream no C#.NET
Sumário
0 - Introdução
1 - O que é GZip?
2 - O que é Deflate?
3 - Exemplo Gzipstream e Deflatestream
4 - Conclusão
5 - Referências
0 - Introdução
Por meio pequeno artigo ou tutorial vou tentar ensinar como fazer para comprimir e descomprimir arquivos utilizando dois algoritmos que a linguagem C#.NET disponiliza para o desenvolvedor. Para desenvolver foi usado o Visual Studio 2008 C#.NET Express (disponilizado gratuitamente no site da Microsoft).
0 - Introdução
1 - O que é GZip?
2 - O que é Deflate?
3 - Exemplo Gzipstream e Deflatestream
4 - Conclusão
5 - Referências
0 - Introdução
Por meio pequeno artigo ou tutorial vou tentar ensinar como fazer para comprimir e descomprimir arquivos utilizando dois algoritmos que a linguagem C#.NET disponiliza para o desenvolvedor. Para desenvolver foi usado o Visual Studio 2008 C#.NET Express (disponilizado gratuitamente no site da Microsoft).
Primeiro vamos enteder o que é o Gzipstream e Deflatestream. Depois vamos botar a mão na massa e desenvolver um pequeno e simples exemplo para cada.
1 - O que é Gzip?
Gzip é um formato inclui um verificação de redundância cíclica valor para detectar corrupção de dados.Atualmente usa o método de compressão deflate mas pode ser facilmente estendido para usar outros métodos de compressão. O formato pode ser implementado rapidamente em uma forma não cobertos por patentes.[1]
2 - O que é Deflate?
Deflate definie um formato de compressão sem perda de dados, usando uma combinação do algoritmo LZ77 e codificação de Huffman, com eficiência comparável aos melhores métodos disponíveis atualmente de compressão de propósito geral.[2]
A funcionalidade de compactação em DeflateStream e GZipStream são expostas como um stream. Os dados são lidos em uma base byte-by-byte, por isso não é possível realizar várias passagens para determinar o melhor método para compressão de arquivos inteiros ou grandes blocos de dados. As classes DeflateStream[3] e GZipStream[4] são mais utilizados em fontes de dados sem compressão. Se os dados de origem já estiver compactada, usando essas classes podem realmente aumentar o tamanho do fluxo.
3 - Exemplo Gzipstream e Deflatestream
Agora vamos para parte prática. Sera mostrado um algoritmo explicando como comprimir e descomprimir em Gzipstream e depois o Deflatestream. Cada um terá um método, totalizando quatro:
- comprimirGzip;
- descomprimirGzip;
- comprimirDeflate;
- descomprimirDeflate;
Se você é iniciante na linguagem e ainda está aprendendo sobre a sua sintaxe é bom você dar uma lida nessa observação:
using - Você pode entende-lo como a liberação de recursos, logo que ele é chamando o dispose automaticamente. Para saber mais sobre o que é dispose clique aqui.
Todos os métodos recebem como parâmetro um arquivo FileInfo. Ex:
public voidcomprimirGzip(FileInfo fiArq) { //TODO O MÉTODO AQUI! }ou
public void comprimirGzip(FileInfo fi) { //TODO O MÉTODO AQUI! }
/ /* comprimirGzip */ / Cria uma stream, // nela fica contido o conteudo no arquivo. using (FileStream inFile = fiArq.OpenRead()) { // Pega o Nome inteiro do arquivo // Verifica se o nome do arquivo eh diferente de .gz // EX: arquivo.exe.gz fica arquivo.exe if ((File.GetAttributes(fiArq.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fiArq.Extension != ".gz") { // Cria um arquivo .gz // Recebera o conteudo do arquivo original // para depois ser comprimido. using (FileStream outFile = File.Create(fiArq.FullName + ".gz")) { // Compress cria o arquivo comprimido. using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress)) { // Copia o conteudo de Compress inFile.CopyTo(Compress); } } } } /* descomprimirGzip */ // Cria uma FileStream, // nela fica contido o conteudo no arquivo. using (FileStream inFile = fi.OpenRead()) { // Remove a extencao para pegar // somente o nome do arquivo string curFile = fi.FullName; string origName = curFile.Remove(curFile.Length - fi.Extension.Length); // Cria um FileStream semelhante ao metodo de comprimir using (FileStream outFile = File.Create(origName)) { using (GZipStream Decompress = new GZipStream(inFile, CompressionMode.Decompress)) { Decompress.CopyTo(outFile); } } }
Os outros dois métodos para Deflate não fogem dessa estrutura. Não há segredo!
/* comprimirDeflate */ using (FileStream inFile = fi.OpenRead()) { if ((File.GetAttributes(fi.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fi.Extension != ".cmp") { using (FileStream outFile = File.Create(fi.FullName + ".cmp")) { // A unica coisa que muda é o metodo de compressao! using (DeflateStream Compress = new DeflateStream(outFile, CompressionMode.Compress)) { inFile.CopyTo(Compress); } } } } /* descomprimirDeflate */ using (FileStream inFile = fi.OpenRead()) { string curFile = fi.FullName; string origName = curFile.Remove(curFile.Length - fi.Extension.Length); using (FileStream outFile = File.Create(origName)) { using (DeflateStream Decompress = new DeflateStream(inFile, CompressionMode.Decompress)) { Decompress.CopyTo(outFile); } } }
4 - Conclusão
Foi possível observar neste pequeno tutorial uma forma simples e básica de compressão que você pode usar no dia-a-dia para tarefas simples. O nível de dificuldade para implementar essa solução é básica, foi usada pouca lógica e bastante a classes e métodos que a GZipstream, Deflatestream e a linguagem e plataforma C#.NET fornecem ao desenvolvedor.
5 - Referências
[1] - RFC: 1952 - GZIP file format specification version 4.3. Disponível em: http://www.ietf.org/rfc/rfc1952.txt
[2] - RFC: 1951 - Deflate Compressed Data Format Specification version 1.3. Disponível em: http://www.ietf.org/rfc/rfc1951.txt
[3] - Classe DeflateStream. Disponível em: http://msdn.microsoft.com/pt-br/library/system.io.compression.deflatestream.aspx
[4] - Classe GzipStream Class. Disponível em: http://msdn.microsoft.com/pt-br/library/system.io.compression.gzipstream.aspx
Stay Safe, ISTS e Zine brasileira
Bom *insira algo aqui*,
Este tópico é um Update, depois de tanto tempo parado.
O Stay Safe PodCast está na 40° edição, eles querem mesmo passar o I Shot The Sheriff, só falta 38!
http://www.staysafepodcast.com.br/ Acompanhem!
Eu parei no 30° ;)
Recentemente o ISTS lançou a edição 78:
http://www.naopod.com.br/ Acompanhem!!
Outra novidade é o call for papers para uma zine brasileira chamada Cogumelo Binário. Para saber mais visite o link ou participe do grupo Exploit-Brasil.
http://groups.google.com/group/exploits-brasil/browse_thread/thread/d0f2f7a44e5c7750?hl=pt-BR_US%3Fhl%3Dpt-BR#
Conteúdo não falta!!
Este tópico é um Update, depois de tanto tempo parado.
O Stay Safe PodCast está na 40° edição, eles querem mesmo passar o I Shot The Sheriff, só falta 38!
http://www.staysafepodcast.com.br/ Acompanhem!
Eu parei no 30° ;)
Recentemente o ISTS lançou a edição 78:
http://www.naopod.com.br/ Acompanhem!!
Outra novidade é o call for papers para uma zine brasileira chamada Cogumelo Binário. Para saber mais visite o link ou participe do grupo Exploit-Brasil.
http://groups.google.com/group/exploits-brasil/browse_thread/thread/d0f2f7a44e5c7750?hl=pt-BR_US%3Fhl%3Dpt-BR#
Conteúdo não falta!!
2 de abr. de 2011
Um mundo que você não conhece
A coca-cola como sempre com seus comercias ultra criativos:
Fonte: http://anchisesbr.blogspot.com/2011/04/cidadania-os-bons-sao-maioria.html
Fonte: http://anchisesbr.blogspot.com/2011/04/cidadania-os-bons-sao-maioria.html
13 de mar. de 2011
A visão de um empreendedor no filme Gladiador
Recentemente li um texto que fala de aspectos do filme Gladiador, que hoje em nosso dia-a-dia é necessário em um profissional e é o que faz a diferença em uma empresa.
Abaixo está um video que encontrein na internet e diz tudo. Além do video tem um pequeno texto logo após, que também retrata os aspectos do filme.
Leia o texto:
Maximus Decimus Meridius - Um empreendedor medieval/
11 de mar. de 2011
Código malicioso é encontrado em ferramenta de segurança no Mercado Android Chines
Código malicioso é encontrado em ferramenta de segurança no mercado Android Chines. O aplicativo é chamado de "Android Market Security Tool" e foi reescrito por supostos hackers e segundo pesquisadores da Trend Micro, a versão do código malicioso traz um backdoor que rouba informações como o IMEI (International Mobile Equipment Identity), numero de telefone e um logs das rotinas - pela descrição é semelhante a um keylooger - todas as informações são enviadas para uma URL remota.
Pensou que para por aí?!
Os pesquisadores ainda revelaram que o aplicativo pode modificar os registos de chamadas, interceptar ou monitorar mensagens, fazer download vídeos e muito mais, que também poderia levar a uma conta telefônica muito alta para o usuário. É preciso apenas dar uma olhada nas permissões o aplicativo pede para ver que eles possam ser utilizadas em uma infinidade de maneiras.
Por fim, mas nao menos importante, segundo a matéria original o aplicativo só foi distribuido no mercado Chines. A dica é mesma que você usa para um desktop: Você comprou ou baixou um aplicativo gratuito, veja suas permissões, se você desconfia dele, não instalei, verifique no google se houve algo errado com ele, se ele é legítimo, é o básico.
Agora, meu comentário sobre esse fato é que falta políticas de segurança para o Android, vejo que hoje ele está crescendo em ritmo muito bom, junto com o IOs. Eles dois tem suas vantagens e desvantagens, mas ainda o IOs está um pouco a frente nesse quesito de venda/compra de aplicativos, por ele centralizar a negociação na Apple Store, onde seu aplicativo é testado, passar por vários testes para ser aprovado. Isso é bom? Desse ponto de vista sim. Falta isso no Android Market? Não sei dizer.
Bom ,vamos aguardar novas notícias e procurar entender melhor esse novo assunto.
Fiquem de olhos abertos!
Fiquem de olhos abertos!
Assinar:
Postagens (Atom)