Por trás da palavra Hacker

Setembro 25th, 2008

Para aqueles que dizem: “Um Hacker invadiu e roubou isso, ou aquilo!”…

O que na verdade é um Hacker ? Vemos em noticiários e etc a cada dia mais e mais essa palavra, mas será que é realmente aquilo que a maioria acha ??

Segundo a wikipédia:
“(…)Os Hackers utilizam toda a sua inteligência para melhorar softwares de forma legal(…)” - Por favor terminem de ler.

Segundo esta tradução do texto How To Become A Hacker de Eric Steven Raymond:
“(…) Hackers construíram a Internet. Hackers fizeram do sistema operacional Unix o que ele é hoje. Hackers fazem a World Wide Web funcionar. Se você é parte desta cultura, se você contribuiu a ela e outras pessoas o chamam de Hacker, você é um Hacker.
A mentalidade Hacker não é confinada a somente software. Há pessoas que aplicam a atitude Hacker em outras coisas, como eletrônica ou música — na verdade, você pode encontrá-la nos níveis mais altos de qualquer ciência ou arte. Alguns alegam que a natureza Hacker é realmente independente da mídia particular em que o Hacker trabalha(…)”.

Como vocês podem ver, o que na maioria das vezes escutamos é besteira de quem sequer sabe o que está falando. Pode-se facilmente notar que Hacker é aquele cuja vontade de aprender, de descobrir a verdade é imensa ou seja, Hacker é aquele que descobre e ajuda outros a descobrirem. Hackers resolvem problemas e constroem coisas, acreditam na liberdade e na ajuda mútua voluntária.

Por trás disso, a uma grande comunidade e filosofia, cujo entendimento é para poucos. Veja o que Eric Raymond tem a dizer.

Após ler o que Eric coloca, talvez sinta algo diferente quando escutar certas coisas que alguns indivíduos falam por aí. Um exemplo é alguém chegar para você e dizer:
“Ah, você é daqueles anti-sociais que ficam estudando computação para passar a perna nos outros.”
Ou talvez:
“Depois me ensina a enviar vírus para computadores de outras pessoas.”
Ou então passar pela House of Hacker, em seguida entrar em uma comunidade brasileira e ler: “E aí pessoal, o que vamos invadir hoje, uma rede wireless?”

Ou seja, ignorantes que falam pelos cotovelos. Se você conhece algum ignorante, explique para este a diferença do Hacker para o moleque.

O que posso dizer é: “O mundo está cheio de problemas fascinantes esperando para serem resolvidos”.

Até mais.

Tim Web em Acer Aspire 5720-6497 utilizando o Ubuntu 8.04

Agosto 22nd, 2008

Fiquei bem curioso a respeito da tecnologia 3G e sua usabilidade. Após uma certa reluta, acabei adquirindo o Minimodem Onda MSA501HS da Tim.
Para quem está costumado com alguns megas de banda, aconselho visitar o site da operadora e consultar os planos e localidades, pois a frequência ainda não chega a tanto, o que é óbvio. Porém para quem no máximo faz um streamer no youtube e consulta um pouco de documentação, está muito bom.
Após pesquisar um pouco, encontrei tutoriais que falharam, e alguns que me ajudaram a configurar e entender o funcionamento da conexão. O grande lance(e o que estava me deixando cansado) era fazer com que o Ubuntu reconhecesse o minimodem como modem e não como um disco. E como fazer isso ?? Através do udev. Ao iniciar o sistema o udev procura no /sys que dispositivos foram encontrados pelo Kernel e os adiciona /dev. O daemon continua rodando para adicionar novos dispositivos assim que estes aparecerem. O diretório das regras onde adicionamos arquivos de texto para dizer o que queremos fazer com cada dispositivo que é adicionado ao sistema é o /etc/udev/rules.d. Para saber mais, acompanhe aqui.
Voltando ao Minimodem, antes de plugá-lo ao seu computador, baixe o módulo usb_modeswitch e seu arquivo de configuração, colocando-os em seus respectivos diretórios. Instale também o wvdial.
Assim que fizer isso, crie esta regra em etc/udev/rules.d e salve-a como 10-onda-msa501hs.rules

ACTION!=”add”, GOTO=”ONDA_End”
# Is this the ZeroCD device?
SUBSYSTEM==”usb”, SYSFS{idProduct}==”2000″,
SYSFS{idVendor}==”19d2″, GOTO=”ONDA_ZeroCD”
# Is this the actual modem?
SUBSYSTEM==”usb”, SYSFS{idProduct}==”0001″,
SYSFS{idVendor}==”19d2″, GOTO=”ONDA_Modem”
LABEL=”ONDA_ZeroCD”
# This is the ZeroCD part of the card, change
# the usb_modeswitch kernel module to the
# right vendor e product
RUN+=”/usr/sbin/usb_modeswitch -d 1 -v 0×19d2 -p 0×2000 -V 0×19d2 -P 0×0001″
LABEL=”ONDA_Modem”
# This is the Modem part of the card, let’s
# load usbserial with the correct vendor
# and product ID’s so we get our usb serial devices
RUN+=”/sbin/modprobe usbserial vendor=0×19d2 product=0×0001″,
MODE=”660″, GROUP=”tty”
LABEL=”ONDA_End”

Agora plugue o minimodem esperando alguns segundos. Acompanhe esse movimento pelo:
sudo tail -f /var/log/messages (assim que plugar o modem), onde você terá algo parecido com:

Aug 22 21:13:33 Ermac kernel: [ 2120.239704] usb 3-1: new full speed USB device using uhci_hcd and address 6
Aug 22 21:13:33 Ermac kernel: [ 2120.247767] usb 3-1: configuration #1 chosen from 1 choice
Aug 22 21:13:33 Ermac kernel: [ 2120.249655] scsi7 : SCSI emulation for USB Mass Storage devices
Aug 22 21:14:02 Ermac kernel: [ 2122.529425] usb 3-1: USB disconnect, address 6
Aug 22 21:14:08 Ermac kernel: [ 2122.666821] usb 3-1: new full speed USB device using uhci_hcd and address 7
Aug 22 21:14:08 Ermac kernel: [ 2122.672047] usb 3-1: configuration #1 chosen from 1 choice
Aug 22 21:14:08 Ermac kernel: [ 2122.673853] usbserial_generic 3-1:1.0: generic converter detected
Aug 22 21:14:08 Ermac kernel: [ 2122.673988] usb 3-1: generic converter now attached to ttyUSB0
Aug 22 21:14:08 Ermac kernel: [ 2122.703560] usbserial_generic 3-1:1.1: generic converter detected
Aug 22 21:14:08 Ermac kernel: [ 2122.703657] usb 3-1: generic converter now attached to ttyUSB1
Aug 22 21:14:08 Ermac kernel: [ 2122.705896] usbserial_generic 3-1:1.2: generic converter detected
Aug 22 21:14:08 Ermac kernel: [ 2122.705958] usb 3-1: generic converter now attached to ttyUSB2

Para verificar se o driver foi configurado corretamente digite:
ls -l /dev/ttyUSB* e você terá:

crw-rw—- 1 root dialout 188, 0 2008-08-22 21:15 /dev/ttyUSB0
crw-rw—- 1 root dialout 188, 1 2008-08-22 21:14 /dev/ttyUSB1

crw-rw—- 1 root dialout 188, 2 2008-08-22 21:14 /dev/ttyUSB2

Feito isso(…eu sei, mas só assim nós aprendemos…), configure o discador editando o arquivo /etc/wvdial.conf:

[Dialer tim]
Init2 = ATZ
Init3 = AT+CGDCONT=1,”ip”,”tim.br”
Stupid Mode = 1
ISDN = 0
Phone = *99***1#
Ask Password = 0
Modem = /dev/ttyUSB0
Username = tim
Dial Command = ATD
Password = tim
Baud = 460800

Agora sim, vá ao terminal e faça a ligação (Certificando que o PIN do chip esteja desativado. De fábrica já vem assim).

gustavo@Ermac:~$ sudo wvdial tim
–> WvDial: Internet dialer version 1.60
–> Cannot get information for serial port.
–> Initializing modem.
–> Sending: ATZ
ATZ
OK
–> Sending: ATZ
ATZ
OK
–> Sending: AT+CGDCONT=1,”ip”,”tim.br”
AT+CGDCONT=1,”ip”,”tim.br”
OK
–> Modem initialized.
–> Sending: ATD*99***1#
–> Waiting for carrier.
ATD*99***1#
CONNECT

E pronto, você está conectado à rede 3G.

CRÉDITOS:
http://tiagomadeira.net/udev-e-suas-regras-maravilhosas
http://www.fre.eti.br/livio/2008/04/timweb-no-linux-onda-msa501hs.html

Modelando UML através do ArgoUML

Agosto 11th, 2008

Ultimamente venho dando uma “olhada” em UML para aprender a construir diagramas. Depois de um pouco de leitura, estava praticando com o Dia cujo é uma ótima ferramenta para modelar, possibilitando a construção de vários diagramas, porém nem todos disponíveis para a UML, onde esta possui 13 (UML 2). Como leitura e prática é a melhor forma de aprendizado, pesquisei sobre outras ferramentas CASE(Computer-Aided Software Engineering – Engenharia de Software Auxiliada por Computador), que são softwares que de alguma maneira colaboram para a execução de uma ou mais atividades realizadas durante o processo de Engenharia de Software. Hoje, a maioria das Ferramentas CASE suportam UML. Dentre as principais, encontrei duas livres: ArgoUML e Umbrello Uml.
Como a Umbrello utiliza a Qt e eu sou usuário Gnome, haveria um certo confronto, logo estou utilizando a Argo.
O projeto ArgoUML constitui-se em um projeto acadêmico, sob a licença BSD. No entanto, o projeto exige que quaisquer que utilizarem seus códigos como base para uma nova ferramenta com o intuito de algo proprietário, disponibilizem uma edição para a comunidade gratuitamente.
Ainda sim o ArgoUML não oferece suporte a todos os diagramas UML, alcançando 7 destes e não é tão completo como por exemplo a Rational Rose ou a VP-UML – ferramentas bem conhecidas pelo mercado de desenvolvimento - entretanto é uma ferramenta livre, não precisando de nenhum crack, ou uso determinado por certo tempo, e para uso acadêmico atende àqueles que estão aprendendo como é o meu caso e é bem superior ao Dia para modelar UML (não estou discriminando o Dia, pois o utilizo). Para quem se interessar, visite o site do projeto.

Começando em Ruby

Julho 21st, 2008

Com o término da faculdade, venho tendo mais tempo para aprofundar bastante leitura e prática em programação - foco em minha carreira profissional.
Após algumas pesquisas, pude notar que os programadores adotam uma linguagem padrão e uma linguagem “preferida”. A linguagem padrão que estou conhecendo além do que foi passado na faculdade é C (falta aprender algumas coisas ainda). No começo do ano, por indicação do Gabriel comecei a estudar Python, mas por algum motivo faltava algo. Pesquisei e “encontrei a pedra preciosa(…)” Ruby !
Utilizando algumas palavras do livro do Eustáquio Rangel ( Taq ) - uma das referências brasileira no assunto, e do Yukihiro Matsumoto ( Matz ) - Criador de Ruby, digo:
“Ruby é uma linguagem de script interpretada para programação orientada a objetos de um modo rápido e fácil. Ela tem muitos recursos para processar arquivos de texto, para fazer tarefas de gerenciamento de sistema, engenharia, programação comercial e etc. É simples, direto ao ponto, extensível, e portável.”
Matz admite que se inspirou em linguagens como Perl, Python e Smalltalk, porém queria uma linguagem mais orientada a objetos, que por exemplo Python.

Um exemplo seria:
5.times {puts “Ruby é fantástica”}
5.class -> Fixnum ; ou seja, 5 é uma instância da classe Fixnum. Em muitas linguagens, números e outros tipos de dados não são objetos. Em Ruby é atribuído métodos e variáveis de instância a todos os seus tipos de dados, provando sua quase totalidade em orientação a objetos.

A comunidade Ruby vem crescendo mundialmente, e agora que se tem o framework Rails (Logo logo, posto sobre o assunto) para programar aplicações web, a linguagem vem ganhando mais seguidores a cada dia. Desde que foi tornada pública em 1995, Ruby arrastou consigo programadores devotos em todo o mundo. Em 2006, Ruby atingiu aceitação massiva, com a formação de grupos de utilizadores em todas as principais cidades mundiais e com as conferências sobre Ruby com lotação esgotada.
Ah, é totalmente livre, o que significa não apenas a título de gratuidade, mas também a liberdade de usar, copiar, modificar, e distribuir.

Algumas características sobre Ruby;
Sobre a licença.

Para instalar, digite no terminal(Presumo que você esteja usando GNU/LINUX):
sudo aptitude install ruby rdoc ri ruby-gnome2 rubygems ,sendo rubygems um gerenciador de pacotes onde você pode baixar alguns módulos bem úteis para seus programas, ri para consulta através da documentação e ruby-gnome2 para desenvolver aplicações GTK.

Ficou curioso(a), pesquise mais no site oficial
Mais fontes:
* Comunidade Ruby brasileira;
* Documentação sobre a linguagem;
* Repositório de Módulos/Trechos de códigos de Ruby para download;
* Pratique Ruby pelo seu web browser;
* Ruby-GTK;
* Ruby-OpenGL.

Tutoriais:
* Apostila do Taq;
* Tutorial de Gustavo ( kov );
* Tutorial Chris Pine.

3 programinhas para download para inicializar em Ruby.

Até a próxima, Rubyanos !

Monitorando o hardware com o módulo lm-sensors

Março 24th, 2008

Há alguns dias estava eu preocupado com a temperarura do processador do meu computador. Acabei descobrindo que não preciso preocupar tanto assim(com o CeleronM), pois este não tem o costume de elevar sua temperatura às alturas :P.
Porém em minha pesquisa encontrei coisas bem legais que podem nos ajudar a estar monitorando o comportamento do nosso hardware e sistema.
Hoje em dia as placas mãe vêm com sensores que medem temperatura e etc de nosso hardware. Essas informações são normalmente usadas pela placa com uma forma de sistema de segurança que visa proteger tanto o processador como a própria placa no caso de falhas. No caso do GNU/Linux essas informações são direcionadas ào /proc. Mas aí a pergunta: Eu tenho que ficar ‘dando’ um cat /proc[informação que procuro] toda hora que quiser saber certas informações ?
Bem existem módulos à parte que nos permite ter estas informações de uma só vez e até com melhor visibilidade. São os lm-sensors, mbmom e hddtemp. Por facilidade instalei o lm-sensors.
aptitude update
aptitude install lm-sensors

Beleza, tudo instalado, mas ainda precisaria ir à linha de comando, arquivo de configuração(/etc/sensors.conf) digitar certos comandos e ficar analisando informações pelo prompt. Pô, se procuro facilidade, então ‘vamo fazer direito’ !
Mais um pouco de pesquisa e novamente encontrei alguns front-end para o lm-sensors: gkrellm, ksensors e alguns outros. Estou usando a distro Ubuntu e optei pelo gkrellm.
aptitude install gkrellm
Agora sim, o que eu queria.
No menu Aplicações –> Ferramentas do sistema –>Gkrellm habilito o gkrellm a me mostrar graficamente as informações do sistema e F1 permite-me configurar o que desejo visualizar.

img1.jpg

Posso ver temperatura, cpu, rede(ethernet, wireless e modem), memória(ram e swap), bateria(se for notebook), quantidade de processos e usuarios, ou seja o que eu queria sem mais nem menos.