Arquivo da categoria: Programação

Compressão no divã, digo, DivANS

A equipe do Dropbox publicou recentemente em seu blog esse post sobre um novo algoritmo de compressão em que vêm trabalhando. O post é bem interessante, e compara o DivANS com várias das tecnologias já existentes. Em algumas simulações, há bons ganhos na compressão. E para uma empresa que lida com quantidades absurdas de informação, 1% de ganho é muito significativo. Talvez ainda seja necessário melhorar a velocidade (não adianta melhorar o espaço, mas demorar o dobro do tempo para conseguir ler/escrever o arquivo...), mas sabemos que é assim que várias iniciativas de sucesso começam. E como acelerar a melhoria do algoritmo? Disponibilizando para a galera em Open Source, claro. Eis que fizeram isso mesmo, e a ferramenta está disponível em https://github.com/dropbox/divans para quem quiser testar, estudar, melhorar. O algoritmo se baseia numa compressão em (pelo menos) 3 fases. Ao invés de uma geração direta para o arquivo final, o algoritmo gera uma "IR" (representação intermediária), numa segunda fase a IR serve de entrada para ser otimizada, e por fim a IR é convertida para um formato que possa ser eficientemente escrita para o arquivo final através das técnicas de compressão. O mais interessante é que, na prática, cada fase é 'meio independente' e pode ser mesmo melhorada de forma separada das outras - contanto que a IR seja criada de forma padronizada. Nos testes demonstrados pelo Dropbox, usaram algoritmos padrões já conhecidos. O LZ foi usado para gerar a IR. A otimização da IR foi feita com o método ANS (Asymmetrical Numeral Systems) - que tem boa performance de compactação, e é bem rápida (bom, isso explica o nome DivANS: "dividedANS") Por fim, uma coisa bem interessante: a equipe criou o sistema usando a linguagem Rust - linguagem de boa velocidade, como o C,  que não precisa de "garbage collector" e programas em Rust podem ser embutidos em outros que utilizem a interface de função do C - ou seja, fica muito fácil o reuso de rotinas e programas. Fica fácil embutir o codec em páginas com WASM! Sim, WEBASSEMBLY! (Ainda não tivemos tempo de comentar sobre o WebAssembly por aqui, mas o que tenho lido tem me animado. Acho que está na hora de estudar um pouco mais do assunto e postar novidades por aqui. Alguém aí interessado?)

06/11/2015

Olá,  gente, tudo bem por aí? Esse é mais um daqueles posts para "tirar as teias de aranha" do blog... 🙂

Recebi essa semana (depois de muito tempo, hein?) um email de um visitante aqui do site, um estudante universitário agradecendo pelos Tutoriais de ASM que traduzi e estão aqui no site há quase 20 anos. Fico muito feliz com esse tipo de feedback, ainda mais depois de tanto tempo que comecei e disponibilizei esse trabalho, e par auma linguagem de programação tão antiga, e tão distante do "mundo web" de hoje em dia. É muito legal ver a galera ainda estudando esse assunto... nem que seja só pra passar de período na faculdade (ou, sei que existem, para fazerem hackings, cracks, etc...). O que vale é que, se tem quem estude, tem uma turma inteira estudando com ele (aliás, até hoje, a maioria dos cliques aqui no site vêm através de pesquisas à programação ASM). Se pelo menos uns poucos dessa turma seguirem em frente, o conhecimento não vai se perder e ainda pode continuar gerando frutos, evoluir, etc. Sim, porque o que temos aqui nos tutoriais, é bem "básico". E muita gente acha que ASM é só isso aí, e a linguagem "morreu". Mas isso não é verdade.

Fazendo uma pesquisa muito básica, aqui mesmo no meu site, você encontrará esse link (atualizei hoje, o antigo estava quebrado...), apontando para o Win32ASM, que tem vasto material para programação ASM em 32bits no Windows. As possibilidades se expandem enormemente. Mas isso não para por aí. Experimente entrar no Google e escrever "ASM 64" e encontre coisas interessantes como essa página da Intel, documentando as extensões 64 bits à linguagem. É um material muito interessante, que vale a pena ser lido pelos programadores. Ambos os links desse parágrafo contêm material que posso vir a traduzir, se houver interesse - e eu conseguir tempo, que é o mais difícil, e que me atrapalhou até hoje a traduzir o AoA.

Eu gostaria de ter mais contato da galera aí fora sobre esse assunto... 🙂

Tutorial 9 de ASM

Bem, galera, demorou, mas consegui. Depois de quase uns 6 anos no nosso novo endereço, finalmente migrei a versão online dos tutoriais de Assembly do Adam Hyde para o formato "página do wordpress", que deve facilitar muito a leitura de vocês que caem todos os dias aqui. Mais uma vez, agradeço a todos que me visitam diariamente atrás desses tutoriais. Acho que agora vou investir mais tempo, novamente, em traduções de mais materiais para programação. Talvez retomar aquele projeto de tradução do AoA, se é que já não existe o mesmo traduzido aí pela rede (pelo que vi, não). Ou, finalmente, liberar versão online dos tutoriais de VGA do Denthor/Asphyxia.

Enfim, divirta-se com o último tutorial do Adam Hyde, no formato atualizado.

Tutorial de ASM – parte 2 – refeito (e consertos…)

Para meus queridos leitores, mais umas boas notícias.

Para começar, saiu a nova versão do Tutorial 2 de Assembly do Adam Hyde. Já podem acessá-lo aqui, ou através da navegação no menu ao lado (entre em Programação e vá em frente).

Outra novidade é um "conserto" que só descobri por acaso, não sei porque ninguem ainda havia reclamado, mas, enfim, todos os downloads do meu site estavam indisponíveis só por causa dos nomes do arquivo (afinal, "zip" não é o mesmo que "ZIP"). Enfim, assim, as versões para download dos tutoriais e vários outros, do setor de programação, agora devem estar de volta ao ar - podem se divertir!