Entries Tagged 'News' ↓

Como utilizar mutex para evitar race-conditions em pThreads?

Apenas uma dica rápida, outro dia me peguei programando em pThreads e, como qualquer coisa um pouco mais complexa, cai no famoso “race-condition”, quando uma thread tenta utilizar dados ao mesmo tempo em que outra thread tenta (por exemplo) criar os dados.
Existem várias formas de se resolver isso, porém acredito que a mais simples é a utilização de mutex (atenção, isso é exclusivo do SO, no nosso caso sistemas baseados em UNIX como Linux ou FreeBSD). A idéia do mutex é:

  1. Cria uma variável do tipo pthread_mutex_t
  2. Inicializa
  3. Dentro da thread, efetue um lock na área crítica da memória
  4. Trabalhe na memória
  5. Efetue um unlock da área crítica.

Vamos ao exemplo mais simples possível: Continue reading →

Facebook resolve vender fotos do Instagram, sem pagar os usuários (atualizado).

Normalmente não gosto de colocar esse tipo de notícia, porém essa me chamou a atenção. De acordo com essa notícia no Slashdot, a partir do dia 16/01/2013, o Facebook irá possibilitar a venda de fotos tiradas pelo Instagram (para propagando por exemplo), sem que o usuário receba um centavo disso.
Ok, eles tem esse direito, basta ler a EULA do serviço do Instagram, porém será que isso não é algo extremo de mais? E outra, isso vale apenas para o Instagram ou também para o Facebook? Será que o Facebook pode começar a vender os posts das pessoas?
Moral da história, sempre lenha entre as linhas de qualquer contrato, e tenha muito cuidado com privacidade no mundo digital. Continue reading →

Gerando números aleatórios em CUDA, utilizando CURAND.

Como muitos sabem, uma das minhas maiores paixões justamente a programação paralela. Faz um certo tempo (desde o mestrado), que não programo para paralelismo, nem em algoritmos genéticos, nem autômatos celulares, etc. Obviamente isso muito me fazia falta e, resolvi fazer um upgrade na máquina, trocando a velha boa de guerra GeForce 8500 GT, por uma GTX 580 (pequeno upgrade ;) ).

Para relembrar como se programa em CUDA, resolvi utilizar a versão 5.0, recém lançada, e entender como funciona a biblioteca CURAND para a geração de números aleatórios em GPU (extremamente importante ao utilizarmos AG). Os resultados que obtive foram, extremamente satisfatórios, veja dois exemplos de execução:

  • Geração de 787.021.824 números aleatórios utilizando uma distribuição binomial

*********INFO********
*min:0
*max:100
*qtd:787021824
*output:binomial.csv
*distribution: BINOMIAL
*Verify? NO
********************
[*] Initializing host memory…OK (0.00000 ms)
[*] Initializing GPU memory…OK (1.76182 ms)
[*] Creating random numbers…OK (3018.16577 ms)
[*] Accumulatting…OK (1090.85291 ms)
[*] Writing accumulatted values to ‘binomial.csv’…OK
[*] Cleaning up memory…OK

Geração de 787.021.824 números aleatórios utilizando uma distribuição uniforme:

[*] Initializing host memory…OK (0.00000 ms)
[*] Initializing GPU memory…OK (1.76829 ms)
[*] Creating random numbers…OK (36.34749 ms)
[*] Accumulatting…OK (707.11194 ms)
[*] Writing accumulatted values to ‘/home/zarnick/tmp/uniform.csv’…OK
[*] Cleaning up memory…OK

Essa velocidade, convence?

Continue reading →

Habemus Youtube

Não é nenhuma novidade que a Apple cancelou o contrato com a Google (em partes, ainda bem, uma vez que os apps da Google estavam esquecidos no mundo iOS), no meio disso tudo, no iOS 6 não temos mais Google Maps por padrão (agora é a versão da Apple) e, recentemente, o YouTube também saiu dos pequenos dispositivos. Pois bem, ontem a Google lançou o app oficial (again) do YouTube, apenas para o iPhone por enquanto, mas uma versão do iPad está para vir.

Pessoalmente ainda não fiz o download (falta de tempo para analisar direito), mas para quem quiser, você pode fazer o download diretamente da App Store.

Vetores dinâmicos em C, depois do C99

Então, eu programao em C, programo a tanto tempo que até não me lembro quando comecei. E, como bom programador de C, eu tenho alguns vícios e algumas coisas que sempre levei por verdade.
Vícios:

  • Sempre estruturar um bloco na ordem: declarações->código, nunca colocar uma declaração depois de iniciar um código.
  • Sempre tomar cuidado com o tamanho do que vai na Stack.

E por verdade, sempre levei que o seguinte código não funciona:

#include <stdio.h>
int main(int argc, char *argv[]){
  int qtd;
  scanf("%d",&qtd);
  int vet[qtd];
  int i;
  for(i=0;i<qtd;i++) vet[i]=i;
  return 0;
}

Pois bem, esse código quebrava tudo que eu tomava por verdade, estou declarando uma variável depois de inicializar um código e, estou tentando alocar um vetor de tamanho desconhecido em tempo de compilação, na memória stack, não deveria funcionar certo? Continue reading →

Atualizando para o Mountain Lion, os detalhes que me deixaram fulo

Já faz um tempo que atualizei meu Mac 13″ para o Mountain Lion e, no geral, estou gostando muito. Porém alguns detalhes me deixaram doido para arrumar e deixar como estava, hoje acredito que arrumei o último detalhe de todos eles.
Se for ver bem, nem é tanta coisa assim:

  • Instalação
  • X11
  • MacFUSE
  • macports
  • Como utilizar direito o Notification Center com o Mail
  • Drag n’ drop no trackpad

Mais para frente eu faço um review completo, mas por enquanto vamos ao que aconteceu e como resolvi:

Continue reading →

Morre Dennis Ritchie, aos 70 anos

Dennis Ritchie, um dos pioneiros e cientistas mais visionários, morreu aos 70 anos de uma doença ainda desconhecida. Acredito que não é necessário falar o quanto ele foi importante, sem ele não teríamos C, UNIX, o Mac OSX, iOS, Windows, Linux, UNIX, enfim, praticamente nada.
Parece que ultimamente estamos perdendo cada vez mais pessoas importantes, o que me faz pensar, quem vai substituir essas pessoas?

Um pouco de reflexão

Segurança de senhas

Utilizando os pacotes do CentOS no RHEL

Pelo motivo que seja, volta e meia é necessário “esquecer” os pacotes da RedHat e utilizar os pacotes comunitários (CentOS). Recentemente me deparei com esse caso, a busca não foi das mais simples (o processo é fácil, mas a busca pelo processo correto não), encontrei no blog do LinuxDaemon um passo a passo que, com alguns arrumes ficou perfeito.
A idéia é simples, retire tudo que diga que é um RHEL e troque por tudo que diz que é um CentOS, bom, nem tudo precisa (ou deve) ser retirado ;) Continue reading →

Slackbuilds

Voltando a vida e voltando à antiga escola, mandei o Ubuntu praquele lugar (não que eu não tenha gostado, mas apenas não atendia mais minhas necessidades), e voltei ao bom e velho Slackware. Para quem não conhece o Slackware é a distribuição mais antiga de Linux, que ainda é mantida. Isso significa fazer as coisas na unha, na raça certo? Bem, mais ou menos. Continue reading →