By Zarnick in Stuffs, Tips, Tutorials
Para quem não sabe o que é LaTeX, LaTeX é uma extensão do TeX, que foi criado por Donald Knuth e é um programa de typeset. Diferentemente de um processador de texto, Knuth fez o TeX para auxiliar na criação de documentos técnicos, principalmente na parte de fórmulas matemáticas. Usado extensivamente em qualquer documento científico que se preze (leia teses, papers, livros, etc), LaTeX permite que você cuide do texto e não da formatação, facilitando (e muito) o trabalho de artigos científicos.
Navegando por ai encontrei um ótimo tutorial do TUG India, vale a pena estudar e entender essa maravilhosa ferramenta.
Tags: Dicas, Latex, papers, Tutorials
By Zarnick in Stuffs
Ola a todos, estou migrando para um servidor privado no Dreamhost (Private Server), e até estar finalizado pode ser que ocorram erros 503 por um certo tempo. Caso isso ocorra, por favor me avisem, pois ainda estou ajustando a quantidade mínima de RAM para utilizar o servidor.
Obrigado.
Tags: Informativo, servidor, stuff
By Zarnick in ANSI C, C++, C/C++, News, Programação
Bom, todos nós sabemos que rand() nos retorna uma distribuição uniforme de números aleatórios, na realidade praticamente todos os geradores de números aleatórios nos retorna uma distribuição uniforme, o problema é como utilizamos. Procurando sobre isso, encontrei esse artigo que explica o motivo do “erro” de utilização e como corrigir o mesmo.
Enquanto ele não resolve o problema para geração de números aleatórios em paralelo (minha mais nova paixão), ele dá boas dicas de como solucionar isso, e provavelmente como solucionar também em paralelismo (já que o problema está na utilização e não no algorítmo).
Vale a pena dar uma lida, esse é um assunto muito importante para todos, principalmente para quem ainda gera os números dessa forma:
srand(time(NULL));
int num = rand()%max;
Tags: C++, Dicas, OpenSource, Programação, stuff
By Zarnick in News, OpenSource, Stuffs
Apesar de eu estar dando um enfoque um pouco mais para programação do que para novidades, essa é importante. De acordo com essa notícia do Slahsdot, a Apache Foundation anunciou o release da versão 1.3.42 do servidor HTTP Apache e falou que será a última release do mesmo, exceto para updates de segurança. Agora vamos todos para o Apache 2, querendo ou não
Tags: Apache, Linux, Noticias, OpenSource, Stuffs
By Zarnick in ANSI C, OpenSource, Programação, Stuffs
Quem já programou em clusters (ou até mesmo utilizando paralelismo) sabe das enormes vantagens que o paralelismo pode trazer. O que poucas pessoas sabem é que você pode ter tudo isso na sua casa, programando em sua placa de vídeo nVidia utilizando CUDA, uma arquitetura de programação paralela genérica, disponibilizada Free pela nVidia.
Diferente de várias formas de programação paralela, as placas da nVidia utilizam muito mais transistores para para processamento de dados no lugar de memória, dessa forma temos o chamado SIMT(Single Instruction Multiple Threads), não vou explicar exatamente como o CUDA faz ou até mesmo como programar para CUDA agora (mais tarde sem dúvida vou colocar algum código bem explicado, mas o tempo está cada vez mais escasso). Basta falar que em uma GeForce 8500GT temos 16 cores separados em 2 processadores, e uma GTX280 conta com 280 cores, o que a nVidia fez que é extremamente elegante, foi separar o número de threads possíves pela quantidade de memória a ser processada, e não pela quantidade de processadores, dessa forma você tem uma escalabilidade praticamente perfeita.
Explicando um pouco melhor isso, para rodar algo em uma GPU utilizando CUDA você precisa criar um Grid de execução, cada Grid possui um conjunto de Blocks (blocos de threads) e cada Block possui um número n de threads que é ditado pela quantidade de dados a ser processado. Mais interessante ainda é que cada bloco de thread possui um espaço de memória do tipo shared (compartilhada) que é extremamente rápida, porém apenas as threads daquele bloco podem acessar esse espaço de memória. Além disso existe a memória do tipo global, que fica toda na GPU e qualquer thread (ou bloco) pode acessar, e outros tipos (constant, register, local e texture).
Bom, esse não é nem o básico sobre CUDA, é apenas um texto para dar um gostinho de quero mais. Um pequeno teste que fiz foi portar o algoritmo de ordenação Bitonic Sort para CUDA (código retirado dessa thread do Forum da nVidia), e comparar a versão sem paralelismo com a versão do CUDA, pois bem, o programa faz isso:
- Cria um array de 2^25 números = 33.554.432
- Copia a memória para a GPU (apnas na versão CUDA)
- Popula o array com o indíce invertido (array[0]=33554432, …, array[33554432]=0)
- Ordena utilizando o algoritmo Bitonic Sort
- Copia de GPU para a memória local de volta (apenas na versão CUDA)
- Valida os dados
na versão simples (sem paralelismo) tudo isso demorou em média 4 minutos e meio para executar, na versão CUDA demorou 0.3 segundos em uma GeForce 8500GT. Isso convence do poder do CUDA?
Para saber mais:
CUDA Zone: Site oficial com uma extensa documentação sobre o CUDA
Dr.Dobbs: Tutorial fantástico sobre CUDA
Tags: CUDA, introdução, paralelismo, Programação
By Zarnick in News
Esse vídeo é para todos que acreditam que bebida e direção combinam, dessa vez, tente pensar duas vezes antes ok?
By Zarnick in News, Segurança
E começou a festa, foi encontrado o primeiro exploit para o Windows 7 e Windows Server 2008 R2, ele ataca o protocolo SMBv1 e SMBv2, causando o travamento da máquina e necessitando um Reboot manual. Até agora a Microsoft falou para bloquear as portas TCP 139 e 445, não se sabe quando eles vão arrumar isso.
Importante, Windows Vista, Windows Server 2008, Windows XP, Windows Server 2003 and Windows 2000 não são afetados pelo exploit.
Fonte: Computerworld
Tags: exploits, Segurança, SMB, Windows 7, Windows Server 2008 R2
By Zarnick in News, Segurança
Bom, foi encontrada uma falha de vulnerabilidade no Flash que não será sanada tão cedo de acordo com a Adobe. De acordo com Mike Bailey do site ForegroundSecurity, a vulnerabilidade é muito parecida com a forma como o Javascript valida os conteúdos, coisa que o Flash faz parecido, mas não tanto. Pelo que pude entender, é justamente esse não tanto que causa isso, você consegue subir um conteúdo inválido, ele é executado e pronto, você tem o seu exploit.
A forma de corrigir isso? Colocar mais restrições e validações nos arquivos que possam ser enviados, isso quem tem que fazer é o administrador do site, e como temos muitos administradores por ai que não sabem esses detalhes de programação, ou que não se importam, tenham muito cuidado.
Tags: exploits, flash, Novidades, Segurança
By Zarnick in Reviews, Stuffs, gadgets
Bom, sei que estou chegando tarde ao mundo dos novos consoles, porém consegui apenas agora o Nintendo Wii e gostaria de deixar meus comentários sobre o mesmo.
Leia abaixo e deixe seu comentário sobres essas críticas/comentários.
Tags: HBC, Nintendo, Review, Wii
Recent Comments