O PSL-PI tem por objetivo incentivar o uso e a produção de software livre no Piauí como política de combate à exclusão digital. Acreditamos que a distribuição de conhecimentos proporcionada pelo Open Source/Software Livre tornará nossa sociedade mais justa e próspera, exatamente por dar a todos as mesmas condições de conhecimento e desenvolvimento.
Software Livre é uma grande oportunidade de construirmos uma sociedade produtora de ciência, independente e efetivamente competitiva. Estamos reconstruindo as bases da nossa sociedade, não mais calcados nos braços do Estado, mas sim, amparados pela iniciativa própria, pela auto-determinação. Nós somos capazes de nos auto-governar. Somos capazes de construir uma sociedade efetivamente Livre. Esta é a essência do PSL-PI.
O PSL-PI é formado pela articulação de indivíduos que atuam em instituições publicas e privadas, grupos de usuários e desenvolvedores de software livre, empresas, governos ou ONGs, e demais setores da sociedade. O importante é a consciência e disposição para propagar o uso de software livre e a cultura colaborativa nas diferentes esferas da sociedade.
Regis Pires: Comparação de performance
23 de Outubro de 2010, 0:00 - sem comentários aindaFiz uma comparação de performance bem simples e muito distante de ser um benchmark confiável entre algumas linguagens/versões usando o fibonacci de 35.
Foi somente uma experiência e o resultado em minha máquina foi esse:
Java(TM) SE Runtime Environment (build 1.6.0_20-b02) – fib.java – fib.class
java fib 35
Tempo: 0.13666238
Resultado: 9227465
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) – fib.c – fib
./fib 35
Tempo: 0.276678
Resultado: 9227465
JRuby 1.5.3 (ruby 1.8.7 patchlevel 249) (2010-09-28 7ca06d7) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_20) [amd64-java] – fib.rb
jruby fib.rb 35
Tempo: 4.371
Resultado: 9227465
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio – fib.lua
lua5.1 fib.lua 35
Tempo: 5.36
Resultado: 9227465
Ruby 1.9.1p378 (2010-01-10 revision 26273) [x86_64-linux] – fib.rb
ruby1.9.1 fib.rb 35
Tempo: 6.889875915
Resultado: 9227465
Python 2.6.5 – fib.py
python fib.py 35
Tempo: 0:00:11.448263
Resultado: 9227465
Python 3.1.2 – fib.py
python3.1 fib.py 35
Tempo: 0:00:12.620807
Resultado: 9227465
Ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux] – fib.rb
ruby fib.rb 35
Tempo: 34.993339
Resultado: 9227465
A implementação em Lua foi feita pela amiga Mônica Regina da Silva. E, por sinal, Lua se saiu muito bem nos testes.
Abaixo as implementações para quem tiver interesse em testar:
fib fib.c fib.class fib.java fib.lua fib.py fib.rb
Não cheguei a testar no Ruby 1.9.2, mas li que sua performance está ainda melhor que o Ruby 1.9.1.
PSL-PI: Grade de Programação do IV Encontro Nordestino de Software Livre
23 de Outubro de 2010, 0:00 - sem comentários aindaEstá publicada a programação do IV Encontro Nordestino de Software Livre e IV Encontro Potiguar de Software Livre, que será realizado nos dias 05 e 06 de novembro de 2010, em Natal-RN. Também é possível a visualização de todos os palestrantes convidados em página específica.
A organização do evento informa, que esta é uma grade preliminar e que está sujeita a alterações. Logo, esta pede a compreensão dos participantes e palestrantes em caso de futuras alterações.
Agradecemos a todos que submeteram suas palestras e esperamos encontrá-los todos os inscritos em Natal.
Programação - http://rn.softwarelivre.org/documentos/papers/pub/programacao
Só para constar, do Piauí teremos uma palestra sobre uso de software livre aplicados à pesquisa científica em ciência da computação, física e engenharias, e a Aracele ministrará uma palestra sobre tradução do KDE e internacionalização do software. Também vale lembrar que a Aracele é a pessoa que está organizando o III Fórum KDE Brasil – Edição Nordeste, o primeiro a acontecer nessa região.
Marvin Lemos: Introdução a Redes de Sensores Sem Fio
22 de Outubro de 2010, 0:00 - sem comentários aindaEste é um blog dedicado ao Arduino, mas o meu primeiro post será dedico ao meu tema de mestrado: Redes de Sensores sem Fio. Nos próximos posts, mostraremos como montar uma rede de sensores utilizando a plataforma livre Arduino.Introdução
p { margin-bottom: 0.08in; }
As Redes de Sensores sem Fio (RSSF), ao longo dos últimos anos, tem despertado crescente interesse por parte da comunidade científica devido à sua grande aplicabilidade nas mais diversas áreas, como, por exemplo, monitoramento ambiental, saúde, agricultura de precisão, etc. Dentro do contexto de ambientes inteligentes, as redes de sensores desempenham papel de destaque permitindo que diversos dispositivos possam coletar e processar informações de várias fontes e, ao mesmo tempo, possam controlar processos físicos e interagir com seres humanos de forma tranquila e transparente (Calm and Disappearing technologies) [1].
p { margin-bottom: 0.08in; }
Tipicamente formada por centenas de pequenos dispositivos operados por baterias, essas redes utilizam comunicação sem fio de baixo alcance, além de possuírem severas restrições de vários outros recursos como, por exemplo, energia, largura de banda, capacidade de processamento e armazenamento. Muitas vezes esses mesmos nós são espalhados em uma região de difícil acesso, tornando complicado, ou mesmo impossível, a reposição de um nó danificado ou de uma bateria esgotada.
p { margin-bottom: 0.08in; }
Componentes de uma RSSF
Dentre os principais componentes de um RSSF, podemos citar: o sensor, o observador e o fenômeno (Figura 1). A seguir, definimos cada um deles:
• Sensor: dispositivo que realiza a monitoração física de uma determinada área gerando informações de medidas, produzindo uma resposta relevante em relação as mudanças da área monitorada. A Figura 2 ilustra dois modelos de nós sensores disponíveis.
• Observador: usuário final interessado em obter as informações disseminadas pela rede de sensores em relação a um fenômeno. Ele pode indicar interesses (ou consultas) para a rede e receber respostas destas consultas. Além disso, podem existir, simultaneamente, múltiplos observadores numa rede de sensores.
• Fenômeno: entidade de interesse do observador, que está sendo monitorada e cuja informação será analisada e filtrada pela rede de sensores. Além disso, múltiplos fenômenos podem ser observados concorrentemente numa rede.
p { margin-bottom: 0.08in; }
Numa rede de sensores típica, os sensores individuais coletam e disseminam informação, quando necessário, para outros sensores e eventualmente para o observador. Esse tipo de rede não exige a definição de uma infraestrutura. Assim, o posicionamento dos nós na rede pode ser aleatório, pois os próprios nós são capazes de se auto organizar. Os sensores realizam o monitoramento de eventos, enviando os dados coletados, ou recebidos de outro nó, para um dos nós vizinhos. Esta comunicação entre os nós é realizada até que um nó especial, denominado (sink) ("sorvedouro" ou estação base) receba as informações. O sink serve de interface entre a rede e o observador. Este nó é capaz de se comunicar com observador através de um link de comunicação, como, por exemplo, a Internet ou de uma conexão por satélite. Esta arquitetura baseada em múltiplos saltos é chamada de multihop. O modelo de comunicação multihop é particularmente atrativo para as RSSF uma vez que os nós sensores podem atuar ao mesmo tempo como sensor e retransmissor, sem necessidade de uma infra-estrutura definida. Dependendo de uma aplicação particular, a probabilidade de haver um nó intermediário no lugar certo e na hora certa é alta [2].
p { margin-bottom: 0.08in; }
Aplicações
A aplicação mais comum das redes sensores é na medição de condições ambientais, como temperatura, pressão, umidade e condições do clima ou do solo, mas elas também são bastante utilizados em outras áreas, tais como: aplicações domésticas, médicas, militares e redes veiculares.
Dentro do contexto dos Ambientes Inteligentes, as RSSF desempenham um papel importante. Em tais ambientes, diferentes dispositivos (sensores e atuadores) irão capturar e processar diversos tipos de informações do meio com o objetivo de controlar processos físicos ou mesmo interagir com seres humanos [2]. A incorporação desses dispositivos ao ambiente deve ocorrer de uma forma não intrusiva, ou seja, imperceptível aos olhos humanos, quase “invisível”, ou, conforme definido em [3], de maneira ubíqua. É nesse ponto onde entram as redes de sensores. Através de sua comunicação sem-fio, os nós sensores poderiam captar as informações de interesse do ambiente onde estão inseridos e transmitir essas informações para processadores embutidos em equipamentos domésticos (ar-condicionados, aparelhos de tv’s, smatphones, etc) de modo que uma aplicação possa executar operações baseadas nessas leituras. A seguir, ilustramos algumas aplicações típicas.
1. Controle Ambiental e Mapeamento da Biodiversidade
Através das redes de sensores é possível, por exemplo, monitorar o habitat natural de algum animal de uma maneira não intrusiva. Além disso, é possível o monitoramento de poluentes químicos em um ambiente, como depósitos de lixo.
2. Recuperação de Desastres
As redes de sensores podem desempenhar um papel importante nas aplicações de recuperação de desastres. Pode-se, por exemplo, utilizá-las na detecção de incêndios em florestas, através do constante monitoramento da temperatura do ambiente.
3. Agricultura de Precisão
Na agricultura, as RSSF podem ser utilizadas para aumentar a precisão da irrigação e fertilização, através de sensores de umidade e composição do solo depositados nos campos de plantio. Monitoramento de animais também é possível. Depositando sensores nos corpos de animais como vacas ou porcos, é possível verificar quando a quantidade de animais doentes atinge um determinado limite.
4. Saúde
Administração automática de medicamentos, monitoramento de pacientes pós-operatórios e idosos são apenas alguns exemplos onde as redes de sensores podem ser aplicadas na área de saúde.
5. Edifícios Inteligentes
É bastante comum, em edifícios, o desperdício de energia pelo uso indevido de ventilação, umidade, ar-condicionado. Assim, um controle preciso de vários parâmetros físicos através de uma rede de sensores pode aumentar, consideravelmente, a qualidade de vida dos ocupantes bem como reduzir o consumo de energia.
Além disso, os nós sensores podem ser utilizados para monitorar o nível de stress de edifícios ou construções em zonas com atividades sísmica.
6. Redes Veiculares
Condutores de veículos se beneficiarão bastante do uso de redes de sensores situadas nas laterais de estradas e integradas aos sistemas de transporte inteligentes. Os veículos “top de linha” já vêm sendo equipados com sensores, que auxiliam em tarefas como manobras de estacionamento e de manutenção do motor. Dirigir será cada vez mais seguro, menos cansativo e um pouco mais prazeroso. Em breve, haverá cooperação entre veículos, bem como de veículos com infraestruturas de estradas, possibilitando diversas aplicações, até mesmo de condução autonômica, eliminando a intervenção constante do motorista.
Referências
p { margin-bottom: 0.08in; }
[1] Leal, L. B., da Silva Araújo, H., Almeida, L. H. P., de Sousa Lemos, M. V., and Filho, R. H. (2008). Uma abordagem cross-layer para controle e gerenciamento em rssf. In AISC ’08: Proceedings of the sixth Australasian conference on Information security, pages 93–105.
p { margin-bottom: 0.08in; }[2] Karl, H. and Willig, A. (2005). Protocols and Architectures for Wireless Sensor Networks. John Wiley & Sons.
[3] Weiser, M. The Computer for 21st Century. Scientific American, 43(3): 66-75,1991
p { margin-bottom: 0.08in; }
Regis Pires: Mini-curso de Introdução a Linguagem Ruby
22 de Outubro de 2010, 0:00 - sem comentários aindaOntem pude ministrar um mini-curso de introdução à linguagem Ruby para os amigos do mestrado da UFC.
Parabéns à turma pela presença e pela excelente participação durante todo o curso!!!
Os slides do nosso curso estão disponíveis no Slide Share:
A versão ultra atualizada dos slides poderá ser sempre baixada em:
http://dl.dropbox.com/u/1477113/material_didatico/ruby/curso_ruby.odp
A documentação oficial e online do Ruby pode ser consultada em: http://ruby-doc.org/
Já a documentação offline em HTML (RDoc) do Ruby pode ser baixada em:
http://ruby-doc.org/download/ruby-1.8.6-core-rdocs.tgz
Site oficial do Ruby: http://www.ruby-lang.org/pt/
Ruby 1.9.2:
Instalador para Windows: http://rubyforge.org/frs/download.php/72170/rubyinstaller-1.9.2-p0.exe
Documentação completa em formato CHM: http://rubyforge.org/frs/download.php/72161/ruby-1.9.2-p0-doc-chm.7z
Sobre o Ruby 1.9.2:
“O Ruby 1.9.2 é uma versão moderna de Ruby. Dentre as principais características, ele finalmente fecha o gap de performance em comparação a outras linguagens de script como Python e Perl, sendo bem mais competitivo.”
Fonte: http://akitaonrails.com/2010/08/25/semana-de-ruby
Ver também: http://under-linux.org/lancado-ruby-1-9-2-1566/
No Ubuntu 10.04 (Lucid), é possível instalar o pacote ruby1.9.1.
Para usar a versão 1.9.2, podemos compilar a partir do fonte:
ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz
Ver: http://torqueo.net/installing-ruby-192-and-rails-3-stable-on-ubuntu/
Na versão 10.10 (Maverick) do Ubuntu (lançada em 10/10/10), ao instalar o pacote ruby1.9.1, estaremos na verdade usando a versão 1.9.2:
Package: ruby1.9.1 (1.9.2.0-1) [universe]
Interpreter of object-oriented scripting language Ruby 1.9.2
This package provides version 1.9.2 series of Ruby, which is binary-compatible with the 1.9.1 branch.
Na próxima versão do Easy Rails (http://rubyforge.org/projects/easy-rails/ e http://github.com/regispires/easy-rails), pretendo usar o Ruby 1.9.2 e Rails 3. E realmente gostaria que mais pessoas se integrassem à nossa equipe de desenvolvimento.
Performance do Ruby 1.9 (http://programmingzen.com/2008/12/10/reflections-on-the-ruby-shootout/):
Mais informações sobre Ruby em:
http://regispires.wordpress.com/tag/ruby/
Marvin Lemos: Dica Linux: Montando um arquivo iso
19 de Outubro de 2010, 0:00 - sem comentários aindaTalvez muita gente não saiba, mas o Linux permite a montagem de arquivos ISO’s. Dessa forma, todos os arquivos compreendidos dentro de uma determinada imagem serão acessíveis a partir de um diretório do sistema. No exemplo abaixo, vamos montar uma imagem do Ubuntu 10.10 dentro de um diretório chamado /mnt/iso. Supondo que o arquivo chama-se ubuntu-10.04-desktop-i386.iso:
[root@skyship ~]# mount -o loop -t iso9660 ubuntu-10.04-desktop-i386.iso /mnt/iso
Para verificar se a montagem deu certo:
[root@skyship ~]# ls /mnt/iso autorun.inf dists isolinux pics preseed ubuntu casper install md5sum.txt pool README.diskdefines wubi.exe