segunda-feira, 8 de novembro de 2010

Compilar código com paralelismo

Como compilar código com paralelismo em C, utilizando o compilador GCC e a biblioteca OpenMP.

Primeiro baixe a versão 4.3.1 do gcc com o MinGW. A versão do gcc que roda com o MinGW oficial atual é a 3.5.0. Somente a partir da versão 4.2.0, o gcc dá suporte a biblioteca OpenMP.

Link para a versão não oficial do MinGW com Gcc 4.3.1: http://downloads.sourceforge.net/tdm-gcc/tdm-mingw-1.808.3-f2.exe

Após baixar e instalar, vá até a pasta C:\MinGW\lib\gcc\mingw32\4.3.2 e procure pelo arquivo libgomp.spec, abra-o com o bloco de notas ou notepad++. Na última linha do arquivo acrescente o seguinte parâmetro: -lpthreadGCE2 (Esse parâmetro manda o compilador linkar a biblioteca libpthreadGCE2.a que tem as funções para o funcionamento do paralelismo). A última linha do arquivo deverá ficar assim:

*link_gomp: -lgomp %{static: -lpthread } -lpthreadGCE2

Agora clique com o botão direito em Meu Computador ou vá em Painel de controle -> Sistema, vá na aba "Avançado", depois clique no botão "Variáveis de ambiente" lá em baixo, em "Variáveis do Sistema" clique em PATH e clique em "Editar". Em "Valor da variável" coloque no final C:\MinGW\bin, depois do ;. Clique em "OK", "OK" e "OK".

Para informar onde seu código deve ser paralelizado é necessário informar ao compilador onde isso deve ser feito. Utiliza-se a diretiva #pragma. Então antes de iniciar a operação que quer paralelizar, coloque #pragma omp parallel, e logo abaixo, insira chaves para delimitar o blogo de código que será paralelizado.

Abaixo das chaves inseridas, antes do primeiro for, insira a diretiva #pragma omp for private(i, j, k), não coloque as chaves dessa vez. As letras i, j e k indicam que ele deverá paralelizar os laços de repetição que possuem essas variáveis de controle.

Exemplo de código:

#pragma omp parallel
{
#pragma omp for private(i, j, k)
for (i=0;i<ordem;i++) {
for (j=0;j<ordem;j++) {
result[i][j] = 0;
for (k=0;k<ordem;k++) {
result[i][j] += matriz1[i][k] * matriz2[k][i];
}
}
}
}



Por fim, Vá em Iniciar -> Executar.. e digite cmd. Navegue até a pasta que tem o seu código fonte (Para mudar de pasta no cmd utilize o comando cd \caminho\). Então é a hora de compilar:

código normal:
gcc codigoFonte.c -o arquivoDeSaida.exe
código paralelizado:
gcc codigoFonte.c -o arquivoDeSaida.exe -fopenmp

Essa é uma forma simples de paralelisar seu código utilizando o compilador GCC e a biblioteca OpenMP.

domingo, 7 de novembro de 2010

[dica] Camtasia Studio gravar Power Point

O software Camtasia apresenta um erro ao escolher a opção de gravar Power Point: "The Camtasia Studio PowerPoint Addins is not enabled. Do you wish to enable the addin and begin recording Powerpoint?"

Ao clicar em Sim (Yes) é exibido uma mensagem de erro: "An error was encountered while enabling the Camtasia Studio PowerPoint Addin.

Para habilitar o Plugin vá em: Tools -> Options -> PowerPoint -> Enable PowerPoint Add-in - OK

Se você usa o Windows 7 ou Vista terá outra mensagem de erro impedindo habilitar o plugin: "Administrator privileges are required to enable PowerPoint Add-in".

Esse erro ocorre porque você está tentando fazer alterações no Power Point, o que no Windows 7 e Vista só é permitido pelo Administrador. Porém, mesmo que você só tenha um usuário em seu computador e esteja logado com ele, o programa não é executado como Administrador.

Você precisa executar o Camtasia Studio como administrador e repetir os passos acima. Para fazer isso, clique com o botão direito do mouse e em "Executar como Administrador" (e enfatizando, repita os passos acima).

Logo, depois o plugin estará disponível no Power Point na aba "Suplementos".

sábado, 21 de novembro de 2009

Chave GPG - Windows

Após muito tempo, venho nesse artigo escrever sobre o uso do GnuPG no Sistema Operacional Windows. Os testes foram feitos apenas no Windows XP, não garanto o funcionamento em outras versões, mas acho que roda normalmente no Vista e no Seven.

Primeiro faça o Download do Gpg4win nesse site: http://www.gpg4win.org/
Esse é o link de download direto da última versão do programa no momento que escrevo: http://ftp.gpg4win.org/gpg4win-2.0.1.exe (35MB)

Depois de instalar (A parte mais importante da instalação é marcar a opção GPA para instalação, as outras não importam, são opcionais), abra o GPA (Gnu Privacy Assistant) no Menu Iniciar -> Programas -> Gpg4win -> GPA. Aqui nós temos várias opções, é nesse programa que se pode criar, editar e excluir, ou seja, gerenciar uma ou várias chave GPG.

Criando sua chave GPG com o Gnu Privacy Assistant - GPA

Clique no menu Keys -> New Key...;
Na janela que vai abrir você vai digitar o seu nome;
Na próxima, digite o seu e-mail;
Na próxima tela será perguntado se você quer criar um backup da chave que será criada (Eu optei por criar, mas fica a seu critério);
Na próxima tela o programa dirá que sua chave foi criada e mostrará uma janela para que você digite a Passphrase (A Passphrase é a frase secreta que você utilizará como senha para criptografar e descriptograr arquivos e textos) - Tente utilizar uma frase com números e caracteres especiais se possível, que seja fácil para você lembrar mas difícil para alguém deduzir.
Na próxima tela ele perguntará onde quer salvar o arquivo de backup. Escolha o local, o nome do arquivo e salve.

Pronto, sua chave irá aparecer listada no Key Manager. Agora podemos utilizá-la para encryptar arquivos e/ou assiná-los. Clique em "Files", na janela que abrir clique em "Open". Abra o arquivo desejado e você poderá assinar ou criptografá-lo.

A criptografia é feita com a chave pública, ou seja qualquer um pode criptografar com a sua chave pública, mas só o dono da chave pode descriptografar um documento que foi encryptado com a respectiva chave pública, utilizando a Passphrase.

Por enquanto é isso, o artigo ainda não está completo, mas se quiser ir fazendo algumas experiências, é interessante.

Logo mais vou explicar como utilizar GPG para a troca de e-mails com assinatura e criptografia, dessa forma é possível ter certeza de que quem enviou uma mensagem é realmente aquela pessoa que enviou, e ainda possibilitar que caso alguém venha a ter acesso a esse e-mail, não possa entender o seu conteúdo.

sábado, 17 de outubro de 2009

Criptografia - 1ª Parte - Monogâmica Monoalfabética

A criptografia é um assunto que desperta interesse em grande parte dos loucos da tecnologia, e também de todas as pessoas de uma forma geral. É claro que a profundidade no estudo é que vai determinar o grau de interesse de cada um. O importante é que a criptografia é algo realmente interessante (se repito tanto a palavra "interessante" deve ser mesmo) e resolvi falar sobre o assunto nesse artigo.

A criptografia hoje é vista principalmente como algo pertencente à tecnologia, mas surgiu a muitos anos atrás com o simples intuito de trocar mensagens entre duas pessoas, a fim de que, se alguém não autorizado por ventura tivesse acesso à mensagem, não pudesse entender o seu conteúdo. E esse é o objetivo da criptografia.

Com a evolução dos meios de comunicação, principalmente a internet, surgiram os criminosos virtuais que se preocupam em roubar informações, e o canal mais propício para isso é a internet. Porém os ambientes fora da rede mundial também correm riscos. Dados confidenciais armazenados em um computador sem nenhum tipo de cifragem dos dados, podem ser lidos e compreendidos por qualquer pessoa que tenha acesso à essa máquina.

Agora chega de "blá, blá, blá..." e vamos direto ao ponto. O uso da criptografia mais simples é o tipo monogrâmica monoalfabética. Nesse tipo de criptografia o algoritmo criptográfico analisa caracter por caracter (monogrâmica) e substitui cada caracter por outro caracter equivalente ao alfabeto cifrante.

O nosso alfabeto: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Poderíamos cifrar uma mensagem trocando cada letra da mensagem por sua correspondente no alfabeto três letras à frente, por exemplo, trocar o A por D, B por E, e assim por diante...

Por exemplo:
A mensagem: Essa e a primeira parte do artigo sobre criptografia
O resultado: Hvvd h d sulphlud sduwh gr duwljr vreuh fulswrjudild

Notem que os espaços não foram criptografados, mas é opcional. Também optei por não utilizar acento, nesse caso até seria interessante o uso. Mas estou disponibilizando o algoritmo utilizado para fazer essa "mágica" abaixo, em linguagem C, Javascript e PHP só para você testar e compreender melhor na prática como funciona.

Algoritmo completo em C:

/*Criptografia - 1ª parte - Monogâmica Monoalfabética*/
#include
#include
#include
char *cifrar(char *mensagem) {
int i;
char *result;
result = (char *) malloc(sizeof(char) * strlen(mensagem));
for (i=0;i<strlen(mensagem);i++) {
if (mensagem[i] != ' ' && mensagem[i] != '\0')
result[i] = mensagem[i]+3;
else
result[i] = mensagem[i];
}
return result;
}
int main() {
char mensagem[100];
printf("Informe a mensagem a ser cifrada (no maximo 100 caracteres): ");
gets(mensagem);
printf("\nEssa e a mensagem cifrada: \n%s",cifrar(mensagem));
exit(0);
}
Algoritmo em Javascript (Função):

function cifrar(mensagem) {
var result = "";
for (var i=0;i<mensagem.length;i++) {
if (mensagem.charAt(i) != ' ')
result += String.fromCharCode(mensagem.charCodeAt(i)+3);
else
result += mensagem.charAt(i);
}
return result;
}

Algoritmo em PHP:

function cifrar($mensagem) {
$mensagem = str_split($mensagem);
for ($i=0;$i<count($mensagem);$i++) {
if ($mensagem[$i] != ' ')
$result .= chr(ord($mensagem[$i])+3);
else
$result .= $mensagem[$i];
}
return $result;
}


Bom, por enquanto é isso, continuaremos no próximo episódio, não vou fazer como o artigo sobre GPG que está a quase dois anos com a promessa de que teria uma nova parte (por falar nisso, vou escrever sobre isso na semana que vem, é um assunto relacionado a criptografia).
Podem testar os algoritmos, se precisarem do código completo com html em php e javascript é só pedir, todos os códigos são livres :D

No mais, um site que tem muuuita coisa sobre criptografia: http://www.numaboa.com.br. É um pouco complicado de se ambientar lá, mas quando se acostumar vai se fartar de tanto conteúdo.

Até a próxima.

sábado, 2 de maio de 2009

FLISOL DF - 25 de Abril de 2009 - 3ª Edição

Estive presente na 3ª edição do FLISOL DF, estou aqui para expressar minha opinião sobre o evento.

Esse é o 5º evento sobre software livre que frequentei, um desses eventos foi a segunda edição do FLISOL DF no ano passado.

De cara, na chegada do evento percebi que estavam bem mais organizados que no ano anterior. Acabei chegando depois da abertura do evento, pois não consegui acordar cedo o suficiente para chegar às 09:00. No ano passado, houve atraso de uma hora, acabei confiando que iria acontecer novamente, mas quando cheguei lá corri para pegar a primeira palestra que eu tinha selecionado, pois já tinha começado.

A primeira palestra que escolhi foi "Joomla no mercado de trabalho - Um CMS de sucesso!" ministrada por Washington Ribeiro. Ao chegar no Laboratório TUX onde foi realizada a palestra, o local já estava lotado, tive que pegar uma cadeira para me sentar na sala, enfim, deu tudo certo. Gostei da palestra, muito interessante, mas abordou aspectos fundamentais sobre o Joomla, nada de tão específico nem prático. Houve também uma discussão sobre filosofia do Software Livre que foi divertida e educativa, até mesmo a mulher do palestrante que é professora de inglês e estava filmando a palestra entrou no papo, e se saiu bem.

Depois do fim da palestra ao meio dia, fui para casa almoçar, pois a minha casa é na rua da FAJESU.

Voltei novamente para o evento às 13:00 para tentar a palestra Proxy Squid ou Desenvolvendo aplicações PHP com Zend Framework. Havia uma fila de pessoas à espera dos palestrantes, enquanto isso descobri que a sala em que havia a palestra "Desenvolvendo aplicaçõe sPHP com Zend Framework" ficava no andar de cima. Fui até lá, no entanto a sala já estava lotada. Voltei para tentar a palestra Proxy Squid, no entanto o palestrante não veio mesmo, também o palestrante que iria ministrar "Zabbix: monitorando serviços e economizando milhões" não compareceu ao evento. Em instantes o Prof. Ronald veio avisar que havia tentando contactar os dois, sem sucesso, e que os participantes que estavam no aguardo podiam ir à outras salas para ver as outras palestras.

Bom, gostaria de fazer um comentário sobre os palestrantes que não vieram. Esse é um evento em que eles doam seu tempo para compartilhar conhecimento, então não recebem nada em termos financeiros para ministrar as palestras no evento. Se acontece algum imprevisto, não há problema em faltar ao evento, mas é de fundamental importância que isso seja avisado aos organizadores do evento, pois na falta da informação deixam o evento desorganizado, e a culpa muitas vezes cai sobre os organizadores, injustamente. De qualquer forma, pode ser que os palestrantes tenham tido algum problema que os impossibilitou de avisar.

Apesar disso, o evento foi muito bom, continuemos os comentários...

A palestra sobre Latex foi adiantada devido ao ocorrido, no entanto o palestrante preferiu aguardar um pouco até dar a hora de início da palestra por conta das pessoas que viriam no horário.

Ministrada pelo professor Alexandre Zaghetto, foi a melhor palestra que assisti no evento. Muito bem explicada e sobre um assunto muito interessante que eu não tinha tido contato ainda que é o Latex. Uma linguagem de marcação para a produção de documentos estilizados de acordo com algum padrão.

Ao final da palestra sobre Latex, assisti a palestra "Desenvolvendo aplicações Desktop com PHP-GTK". O palestrante não parecia estar bem à vontade (me lembrei muito de quando eu apresento trabalhos na Faculdade), um pouco nervoso. Muitas pessoas sairam da sala antes da palestra terminar. Me desculpem, caso alguém não pense assim, mas na minha opinião, sair antes da palestra terminar é falta de educação, e ainda incentiva o palestrante a desistir. Por mais que eu não estivesse muito satisfeito com a palestra eu fiquei até o fim. A palestra não foi longa, 30 minutos. Uma explicação básica sobre o funcionamento do PHP-GTK com exemplos.

Agora vem uma das melhores partes, fora a palestra sobre Latex. Ganhei uma camisa e uma bolsa de estudos da Training tecnologia (Infelizmente não vou poder fazer o curso devido ao valor que ainda é alto e me pegou em um mês atribulado financeiramente. Mas adoraria fazer pois é com Julio Neves)!! Nem acreditei quando vi meu nome lá escrito no sorteio (apesar de ser o 50º). É a primeira vez que ganhei alguma coisa sorteada em algum evento. Fiquei feliz!! hehe.

Finalizando, gostaria de parabenizar a organização do evento que nesse ano cumpriu seu papel e o evento foi super organizado. Parabéns de verdade! Ao mesmo tempo gostaria de pedir desculpas por não participar da organização, pois moro na rua da FAJESU, tão perto. Mas andei super oculpado esses dias, na realidade até hoje. Deveria ter escrito essa postagem no sábado do FLISOL, mas só consegui hoje. A correria está grande.

Gostaria de parabenizar todos os palestrantes que se disporam à ir ao evento compartilhar conhecimento, parabéns especial ao professor Alexandre que ministrou a palestra sobre Latex muito bem. E também parabéns à todas as pessoas envolvidas no evento direta ou indiretamente. O FLISOL DF foi muito bom, está a cada ano melhor, vamo que vamo!

Longa vida ao Software Livre!

domingo, 27 de abril de 2008

Resenha do filme Piratas da Informática

Recomendo para quem estuda e/ou trabalha na área de TI. O filme proporciona ao telespectador conhecer um pouco mais sobre a história da Microsoft, Apple e outras empresas do ramo.

Título: Piratas da Informática
Titulo Original.: Pirates of Silicon Valley
Pais/Ano: EUA / 1999
Direção: Martyn Burke

O longa conta a história da evolução dos computadores pessoais (PC's), em especial tratando dos fundadores da Micosoft e Apple, que tiveram função vital no desenrolar dessa evolução.

É traçado um panorama entre Bill Gates, Steve Jobs e seus parceiros. Enquanto Jobs gosta de tomar LSD e participar de passeatas educacionais, Gates é um mestre no jogo de pôker. Mas os dois têm algo em comum, são jovens que enxergam bem além do seu presente, e querem participar ativamente da evolução dos computadores.

Steve Jobs com seu amigo Steve Wozniak, fundam a Apple e criam o Apple I, um computador com monitor para concorrer com o Altair da IBM, um equipamento que apenas emitia luzes em resposta aos comandos. Foi nessa época que Bill Gates e seu amigo Paul Allen venderam para a IBM uma versão do BASIC, pois o Altair não era nada sem o software.

Um fato marcante que o filme relata é a criação da interface gráfica e do mouse, desenvolvidos por uma engenheira da Xerox, rejeitado pelos comandantes dessa empresa. Achavam que não havia explicação para uma pessoa “comum” ter computador em casa. Mas despertou o interesse de Steve Jobs que fez uma visita para conhecer o sistema. Baseado nessa idéia surgiu o MAC OS (Sistema operacional dos computadores Macintosh).

Outro episódio marcante no filme é quando Bill Gates é esnobado por Steve Jobs em uma feira de lançamento do Apple II. A rivalidade bastante retratada nessa história começa nesse momento.

Depois de já estar trabalhando para a IBM vendendo seu software, e ter fundado a Microsoft, juntamente com seu amigo Paul Allen, Gates fez uma visita à Apple com sua equipe, para falar com Jobs sobre negócios e visitar as instalações de sua empresa. Bill Gates convenceu Steve Jobs à contratá-lo para criar o software para o novo computador da Apple, o Macintosh.

A Apple forneceu três computadores Macintosh à Microsoft. Ao receber as máquinas, a empresa de Gates copiou a tecnologia e "criou" o Windows. Há uma discussão interessante no longa entre Jobs e Bill Gates sobre o Windows, ao final Gates “enrolou” Jobs e conseguiu “passar a perna” em quem o esnobou (na feira de lançamento do Apple II).

Steve Jobs foi demitido da Apple em 1985. Em 1997 retornou para a Apple para salvá-la, pois estava à beira da falência. Suas estratégias estavam sempre no design marcante e produtos criativos.
Bill Gates se tornou o homem mais rico do planeta (ainda era na época que escrevi essa resenha) e comanda hoje uma das maiores indústrias de software do planeta, a Microsoft.

Considerações

O filme relata a história de uma forma bem diversificada. E retrata os personagens de maneira a se tornar uma história engraçada. Por exemplo, é dado uma idéia de que Bill Gates é um jovem bobo. Até poderia ser, porém mais tarde quando começa à se relacionar com os chefes da IBM e com Steve Jobs, se mostra alguém esperto e malicioso.

Talvez até pelo método de abordagem bem divertido, a obra tende à parecer fictícia, tendenciando ao telespectador não confiar na história. O próprio Steve Wozniak já deu entrevistas em que fala sobre o filme, e a conclusão é de que boa parte da história do filme realmente foi verdade. Fica a dúvida também, se realmente Steve Jobs teve uma filha e deu o nome à ela de Lisa, assim como batizou com esse nome um dos computadores da Apple.

A obra foi muito bem planejada e executada, a forma divertida faz com que a atenção de quem assiste ao filme seja espontânea e capte de forma fixada o contexto histórico em que transformações ocorreram, além de traçar um panorama entre a vida de Bill Gates e Steve Jobs.

Chaves GPG - Utilização multi plataforma

Nos últimos tempos tenho procurado me integrar mais ao projeto Software Livre, foi quando navegando pela internet, encontrei um Encontro de Software Livre que iria ocorrer em Brasília - DF, onde moro. Decidi comparecer ao encontro, gostei muito, ótimos palestrantes, muito bom realmente. Uma das coisas que me chamaram a atenção foi o assunto GnuPG.

O que é o GnuPG?

É um sistema de criptografia assimétrica derivado do PGP (Pretty Good Privacy).
Sei que não expliquei muita coisa com isso, mas o assunto que pretendo abordar aqui é diferente, então quem quiser uma explicação mais detalhada, acesse http://www.eriberto.pro.br/wiki/index.php?title=Como_preparar-se_para_uma_festa_de_assinatura_de_chaves_GPG, que inclusive é o site do palestrante que falou sobre GPG, que é também professor no curso de Pós-Graduação do Instituto Superior de Fátima (Me interessei muito por esse curso, quando terminar minha graduação pretendo fazer ele, deve ser muito bom realmente, o Prof. João Eriberto entende muito do assunto e explica muito bem).

O que pretendo abordar nesse post?

Como disse acima, não quero entrar em detalhes teóricos sobre o GPG, isso tem aos montes na internet, então prefiro não reinventar a roda.
Acontece que depois dessa palestra tive dificuldades para criar a minha chave e usá-la tanto no windows e no linux, a criei com o linux Kurumin (ótima distribuição para inciantes), mas depois de quebrar a cabeça um pouco eu consegui. Não encontrei nenhum tutorial na internet falando sobre isso detalhadamente, então é essa a abordagem que farei nessa sessão, não escreverei tudo agora, isso é só o início, dividirei em mais duas partes, Windows e Linux.

No Linux muita gente já sabe como instalar, quem não souber, essa é a linha que instala o gpg na máquina:

apt-get install gnupg

No Kurumin deve ser usada a seguinte linha:

sudo apt-get install gnupg

Atenção: Se você criar a chave através do Kurumin rodando em CD, será necessário salvar o arquivo da chave em algum lugar, como em um cd ou pendrive, se criar através de um computador público, você pode criptografar e enviar por e-mail.

No Windows basta instalar um programa (gpg4win), disponível em http://www.gpg4win.org/. Esse programa pode ser usado para criar chaves, criptografar arquivos, e todas as outras funcionalidades do gpg.

Ok, essa foi a introdução da série GPG Multiplataforma, nas próximas partes abordarei em detalhes o uso da gpg no windows e linux, para ser usada no ThunderBird, Outlook, e também em webmails, como o G-mail, e também para criptografar arquivos e fazer algumas brincadeirinhas.

Até mais!