Mostrando postagens com marcador Linux. Mostrar todas as postagens
Mostrando postagens com marcador Linux. Mostrar todas as postagens

terça-feira, 30 de outubro de 2007

Tchelinux 2007 - Chamada de trabalhos

Seja bem-vindo à chamada de trabalhos do 2º Seminário do Software Livre Tchelinux que irá acontecer dia 1º de Dezembro de 2007 na UFRGS em Porto Alegre, RS. Antes de enviar sua proposta de palestra, recomendamos que leia atenciosamente o regulamento abaixo:

Sobre o Temário:

A equipe de avaliação de propostas irá selecionar 10 palestras técnicas sobre Software Livre dentro dos seguintes temas:

Sistemas Operacionais
Desktop baseado em Software Livre
Aplicativos Gráficos
Jogos e Multimídia
Linguagens de programação
Ferramentas para desenvolvimento
Banco de dados
Administração de Sistemas
Redes e Segurança da Informação

Sobre as Apresentações:

- Cada palestrante terá 75 minutos para apresentar seu trabalho
- Os recursos disponíveis serão projetor multimídia e micro-computador rodando Ubuntu Gutsy
- O palestrante deverá permitir que os slides de sua palestra seja publicada no site do grupo
- Não haverá nenhuma remuneração ou reembolso de despesas para palestrantes

http://www.tchelinux.org/papers/

Participem!

sábado, 11 de agosto de 2007

Linux para Leigos

Vamos analisar a condição de leigo.

Eu já vi centenas de leigos que, ao sentar no computador, baixavam músicas, videos e jogos com os mais diversos programas, conectavam no irc, msn, icq, colocavam luzinhas e bichinhos animados para acompanhar o cursor do mouse, trocavam as fontes e os temas, procuravam os mais bizarros jogos, encontravam videos extremamente incomuns (sem youtube), etc. Para o que não presta, os leigos tem uma criatividade impressionante!

Quando falamos em um sistema pra leigos não precisamos pensar que as usuarios tem preguiça mental. Eles até podem ter, mas aí cabe aos projetistas desafiar e exercitar essa criatividade do mal e tranformar em criatividade do bem. Qualquer pessoa que senta na frente de um browser vai acabar nas paginas mais escabrosas mesmo que não sabia o que é 'google'. Vai me dizer que, nesse caso, a linha de comando é ameaçadora ou difícil?

Das duas, uma: ou pensamos em uma camada de software para permitir que um usuario abstraia o sistema operacional e as configurações (normalmente se faz isso em sistemas "embarcados") e use todos os recursos multimídia e de troca de informação com a facilidade de um pensamento OU pensamos em sistemas mais inteligentes, com documentação adequada e, com a ajuda da comunidade, divulgamos as informações e conceitos corretos. O Linux só é seguro porque o usuario comum, que vai fazer besteira, não tem a senha de root.

Não podemos fazer sistemas operacionais à prova de gente sem noção ou que sejam capazes de oferecer tanta intuitividade sem sacrificar a segurança, por exemplo.

Puxa, não tem nada mais fácil que usar a linha de comando (ok, sou suspeito pra falar). As pessoas não usam [o shell] pois não tem como acessar o orkut, ver vídeo do youtube, etc, de um jeito bonitinho. Alem de tudo, tá em inglês, ECA. Hoje em dia existem shells para pessoas iniciantes que ajudam, colorem o texto e sugerem mudanças praticas, como o fish.

É assim que fazemos um sistema pra leigos -- temos que desafia-los a usar a criatividade que normalmente é usada pra criatividade do MAL e mostrar que um PC com linux não é um playstation. Quer usar um browser de verdade e usar o orkut e o youtube? PO! não tem nada mais facil que instalar um ubuntu da vida e clicar no icone do firefox!

Não vamos tomar atitudes de forma a não desafiar intelectualmente os usuários. Eles merecem todo o nosso respeito. Agora quem quer que o usuário não pense que faça uma camada de software que abstraia o Sistema Operacional. Existe mercado para ambas as coisas.

Entretanto acho mais humano que a gente exercite os cérebros atrofiados dos empurradores de mouse. Há 20 anos as pessoas usavam computadores com 32 kb de RAM e carregavam os jogos de uma fita K7 e ninguem morreu por isso -- pelo contrário desenvolveram skills hoje necessárias em muitos cargos importantes e empresas como algumas multinacionais procuram desesperadamente.

sexta-feira, 10 de agosto de 2007

Torvalds - A Microsoft simplesmente não me interessa


Será que Linus Torvalds e a comunidade do software livre podem vencer esta guerra contra as legiões de Bill Gates?

Linus Torvalds - Não vejo isso como uma “batalha”. Faço o que faço porque gosto e acho que vale à pena, e não estou nessa por causa de nenhuma cruzada anti-Microsoft. Usei alguns produtos da Microsoft ao longo dos anos, mas nunca nutri uma forte antipatia contra eles. A Microsoft simplesmente não me interessa. E o movimento de código aberto não é um movimento anti-Microsoft, apesar de haver certos grupos que talvez participem devido aos seus sentimentos anti-Microsoft.

O código aberto é um modelo sobre como fazer coisas, e eu acredito que este é um jeito muito melhor de fazer as coisas. O código livre vai tomar conta do mercado não por causa de nenhuma “batalha”, mas simplesmente porque jeitos melhores de fazer as coisas eventualmente tomam o lugar de métodos inferiores.

Por acaso a “ciência” é uma batalha contra a “ignorância”? Não, a ciência simplesmente é. E ela funciona tão bem que assume o lugar de velhas noções ignorantes. Não precisamos nos preocupar com gatos pretos cruzando a nossa frente, passar por baixo de escadas ou espelhos quebrados, pois hoje sabemos como o mundo funciona, e nos demos conta de que gatos pretos não são mais um sinal de perigo.

Fonte: idgnow

Sem mais palavras...

quinta-feira, 12 de julho de 2007

Introdução aos Device Drivers no Linux

Vamos fazer um /dev/hello_word ?

Aprenda a fazer um neste fascinante artigo -- nunca se sabe quando será util!

quarta-feira, 11 de julho de 2007

Paz, Amor & Linux

Hacker é como Punk, Ateu ou Geek -- um rótulo.

Uma hora a mídia fala q ser Hacker é ruim. Outra hora fala q não são Hackers, são os Crackers que são a ameaça. Acho que falta um pouco de romantismo na nossa vida...

Proponho uma revolução no mundo digital através do amor. Vamos deixar comentarios no codigo fonte repleto de belas mensagens, poemas e juras de amor eterno. Vamos visitar o apartamento frio e escuro dos nossos amigos mais anti-sociais e levar bolos, café e carinho. Vamos fazer divertidas obras de arte como borboletas e caras-de-gatos com os DVDs do windows vista e distribuir para os nossos amigos.

Bigodinho e chifres nas fotos do Bill Gates e Steve Ballmer nunca mais! Vamos colocar coraçõezinhos e flores coloridas e passar muita energia positiva. Sejamos francos e sinceros. Vamos usar de adjetivos angelicais e fala suave para que amor sempre venha a tona.

Assim, o codigo fonte sera alvo do nosso tórrido amor. Interfaces apaixonadas e Algoritmos envolventes serão o nosso legado.

E assim o amor triunfa. Nada de esmurrar o teclado. No lugar do café: flores. No lugar do ódio: Linux.

Sugestões de Leitura

Ja ouviu falar na tal Web 2.0? Veja os slides da apresentação do Philip Calçado.

Quer dominar o Vi/Vim? Veja este pequeno guia.

Se inglês não é problema, vc pode aprender Java, C++ ou Programação Avançada em Linux usando livros gratuitos e de ótima qualidade.

No site da InfoQ vc ainda pode baixar livros de SOA, Scrum & XP, Domain Driven e Dicas de Visual Studio .NET.

E, se vc se interessa por Gerência de Projetos, vai gostar desse artigo.

Boa leitura!

sexta-feira, 6 de julho de 2007

Youtube Downloader 2.0

A versão 1.0 foi até pro Dicas-L. Graças a esta exposição percebi que o script é muito útil para quem não tem um plug-in flash (que preste) no browser. É o caso do pessoal que usa Beos, por exemplo.

Reduzi o número de linhas, usei a expansão de variáveis do bash para algumas substituições simples e agora vc pode informar o nome do arquivo que vc quer salvar, senão será usado aquele nada pratico id. A extensão é flv que pode ser visualizado pelo mplayer ou convertido pra mpeg.

$ ./script.sh endereço_do_video nome_do_video

Eis o código
#!/bin/bash
# youtube downloader
test -n "${1}" || { echo -e "Missing url or id!\nUsage: ${0} <url | id> [filename]" ; exit 1; }

set - ${1/*=} ${2:-${1/*=}} "http://www.youtube.com/watch?v=${1/*=}" 'video_id=.+&t=[^\"&]+'

wget -O "${2%.flv}.flv" "${3%/*}/get_video?$(wget -qO - "${3}" | grep -oE "${4}" | sed '1q')"


Tentei usar o curl e não consegui. Quem quiser tentar, faça um curl -I na url final e veja os cabeçalhos -- não sei como ir para o 'Location'. O wget faz isso numa boa, mas seria interessante ter a opção com o curl.

O que seria mais interessante? Baixar uma lista de videos? Baixar os X primeiros videos que aparecem em uma dada pesquisa?

terça-feira, 3 de julho de 2007

Linux Ubuntu

Houve um tempo que usar linux era coisa de louco. Era difícil de instalar, as interfaces gráficas eram pobres, poucos programas... era o sistema ideial para programadores e nerds. Quem precisa de Word quando tem o Vi e o LaTeX? Quem precisa de Excel quando tem AWK? Ora... é uma questão de escolha, simples assim.

O que era um projeto de nerds virou um modelo de negócios. Surgiram boas distribuições, inovações como o Linux Mandrake (nunca a instalação de um sistema foi tão fácil e bonita), o StarOffice, o WindowMaker, KDE...

Pois bem, eis que surgiu o Ubuntu Linux. Criado pelo programador E turista espacial Mark Shuttleworth, o Ubuntu é um sistema inteligente, projetado para ser utilizado com simplicidade por qualquer pessoa. O resultado foi uma distribuição extremamente popular, bonita e intuitiva.

Fica ai a dica: façam um test-drive com um LiveCD do Ubuntu (vcs podem pedir CDs de graça no site oficial -- eles entregam no brasil).

A seguir uma breve entrevista do Mark Shuttleworth:

segunda-feira, 2 de julho de 2007

Parâmetros em Shell Script

Meu primeiro artigo, resultado de uma boa noite de insônia.

Direto do CentOSBR: Parâmetros no Shell.

Estou enrolando outros textos tem tempo: vamos ver se agora eu continuo.

O melhor de dois mundos: C e Fortran

C é uma ótima linguagem de programação, simples e clara.
Fortran, para problemas matemáticos, é imbativel!

Que tal usar o melhor dos dois mundos com este tutorial?

Vejamos o exemplo abaixo:

Arquivo testC.cpp

#include 

using namespace std;

extern"C" {
void fortfunc_(int *ii, float *ff);
}

main()
{

int ii=5;
float ff=5.5;

fortfunc_(&ii, &ff);

return 0;
}


Arquivo testF.f
      subroutine fortfunc(ii,ff)
integer ii
real*4 ff

write(6,100) ii, ff
100 format('ii=',i2,' ff=',f6.3)

return
end


Compilando

$ f77 -c testF.f
$ g++ -c testC.cpp
$ g++ -o test testF.o testC.o -lg2c


Executando

$ ./test
ii= 5 ff= 5.500


Aceito sugestões, agora que não tenho muita coisa para fazer em Fortran.

Mono: C# no Linux

Considere este simples código:

using System;

class MainClass {

public static void Main() {
Console.WriteLine("Eu sou um programa feito em C#");
Console.ReadLine();
}
}


Tcharam: um hello world que, no mundo MS, seria compilado no Visual Studio após alguns segundos de espera. Para plataformas abertas, podemos usar o Mono:

$ uname
Linux
$ mcs Example.cs # Mono Compiler Suite
$ mono Example.exe # Mono's ECMA-CLI native code generator
Eu sou um programa feito em C#
[enter]
$


Independente de Ideologias, C# é uma linguagem interessante e seu uso está cada vez mais comum. Para quem não quer ficar fora do mercado de trabalho, o mono pode ser uma ótima oportunidade para praticar. O site java2s possui um tutorial interessante para os curiosos.

Youtube Downloader

Cerca de um ano atras eu pesquisei uma forma de fazer o download automatico de videos do youtube informando o id ou a url inteira. Ele é bem didático, basta ser um pouco nerd e conhecer um pouco de expressões regulares (alias o livro do Aurelio está em promoção).

Minha inspiração para postar este script veio desta notícia, onde Warren Harding baixou um vídeo usando o Lynx e usou o Mplayer para exibir o vídeo no modo ASCII. O resultado é insano, porém divertido.

#!/bin/bash
# youtube downloader
# usage: script
# YouTube URL: http://www.youtube.com/watch?v=[video_id]

[ -z "${1}" ] && { echo 'Error! Missing url or video_id!' ; exit 1 ; }

URL="http://www.youtube.com"

# download link: http://youtube.com/get_video?video_id=[video_id]&t=[t_id]&...

DOWNLOAD=`wget -qO - "${URL}/watch?v=${1/*=}" | grep -oE 'video_id=.*&t=[^\"&]*' | head -1`

wget -O "${1/*=}.flv" "${URL}/get_video?${DOWNLOAD}"


Eu poderia ter feito tudo em uma unica linha usando xargs, porém ficaria um pouco poluído para publicar neste humilde blog, mas fica aí a dica.

segunda-feira, 25 de junho de 2007

Classificação do Brasileiro via Shell Script

Querendo saber a classificação do seu time no campeonato brasileiro de 2007.

O bom e velho lynx + grep resolve.

$ URL=http://esportes.terra.com.br/futebol/brasileiro2007/classificacao/
$ lynx --dump ${URL} | grep '%'

Colocação Time PG J V E D GP GC SG %
1º Botafogo 17 7 5 2 0 18 7 11 81%
2º Paraná 14 7 4 2 1 14 9 5 67%
3º São Paulo 13 7 4 1 2 7 2 5 62%
4º Goiás 12 7 4 0 3 13 9 4 57%
Fluminense 12 7 3 3 1 11 6 5 57%
Corinthians 12 6 3 3 0 7 2 5 67%
7º Atlético-PR 11 7 3 2 2 12 10 2 52%
Atlético-MG 11 7 3 2 2 11 9 2 52%
Vasco 11 7 3 2 2 11 10 1 52%
10º Cruzeiro 10 7 3 1 3 16 15 1 48%
Figueirense 10 7 3 1 3 13 14 -1 48%
12º Grêmio 9 7 3 0 4 5 12 -7 43%
13º Palmeiras 8 7 2 2 3 9 12 -3 38%
14º Juventude 7 7 2 1 4 9 11 -2 33%
Internacional 7 7 2 1 4 8 12 -4 33%
Santos 7 7 2 1 4 7 11 -4 33%
17º Flamengo 6 6 1 3 2 11 15 -4 33%
18º Sport 5 7 1 2 4 9 13 -4 24%
Náutico 5 7 1 2 4 9 15 -6 24%
20º América-RN 4 7 1 1 5 6 12 -6 19%

quinta-feira, 21 de junho de 2007

The Linux Documentation Project

Muitos guias, tutoriais e Howtos aqui.

O 'Advanced Bash-Scripting Guide' do Mendel Cooper merece destaque especial -- um livro excelente, assim como o 'Bash Guide for Beginners' do Machtelt Garrels e o 'Linux From Scratch' Gerard Beekmans.

Pesquisando um pouco conseguimos ate encontrar o Linux Portuguese-HOWTO escrito em 1997 pelo CaSantos.

Boa leitura!

terça-feira, 19 de junho de 2007

Canivete Multifunções do Shell

O Aurelio (verde) levou algum tempo juntando excelentes dicas sobre shell script que podem ser vistas aqui: o famoso Canivete Suiço do Shell.

Facil de consultar, é extremamente útil para qualquer administrador ou usuário experiente de algum sabor de *nix (ou mesmo no Windows, via Cygwin).

segunda-feira, 18 de junho de 2007

O Desenvolvimento da Linguagem C

Um texto cativante e histórico (por Dennis M. Ritchie):

http://cm.bell-labs.com/cm/cs/who/dmr/chistPT.html

a Linguagem C e o Sistema Operacional Unix foram revolucionários, trazendo conceitos usados até hoje. Qualquer um que queira se aventurar no mundo da informática, seja como hobbie ou profissão, tem que conhece-los ao menos um pouco.

sexta-feira, 15 de junho de 2007

Closures em Shell

Uma das coisas mais impressionantes (pelo menos para mim) da linguagem Ruby são os Closures:

$ ruby -e 'r=0...3 ; r.each { puts "oi"}
oi
oi
oi


em um objeto do tipo Range eu tenho um método chamado each que recebe um bloco de código como argumento. Este bloco pode até ser parametrizado, por exemplo:

$ ruby -e 'r=0...3 ; r.each { |i| puts 2*i}'
0
2
4


O que o metodo each faz é passar este bloco de código para 'dentro de si' e aplica-o em cada elemento do objeto 'range'. Pode ser para imprimir o resultado ou efetuar uma operação matemática, até mesmo substituindo um laço for simples. A verdade é que os Closures são bem mais do que isso e permitem fazer scripts bem interessantes.

Sera que poderiamos ter o mesmo em BashScript ? Bem... vou simular aqui

$ each(){ 
local F="${@}"
while read i ; do
set - $i
eval "${F}"
done
}

$ seq 3 | each '{ echo "encontrei $1" ; }'
encontrei 1
encontrei 2
encontrei 3


Simples heim? Eu crio uma variavel local dentro de uma função e 'executo-a' para cada resultado via comando eval. Se este tipo de construção for util para alguem, fica aí a dica!

quarta-feira, 13 de junho de 2007

Avaliando Espaço em Disco

Um problema comum de qualquer administrador é o espaço em disco. As politicas de quotas geralmente resolvem boa parte destes problemas, é claro, mas nem sempre são suficientes.

O caso: pensando de forma genérica, diversas pessoas criam diretórios de trabalho dentro do bom e velho/local e, com o passar do tempo, esta partição pode lotar e comprometer o trabalho de todos. Politicas de uso racional do espaço em disco podem ser aplicadas mas as vezes a coisa pode sair do controle -- nesse caso o prejuizo pode ser grande.

Os diretorios possuem o seguinte formato:

/local/diretorio/algum_nome_identificador.vws


Vamos recorrer ao bom e velho Shell-Script para investigar se existe algum problema em andamento!

$ df /local
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb1 35001508 11330452 21893064 35% /local


Vejam só: apenas 35% da partição está sendo ocupada e isso não representa risco neste momento. Se estivesse acima de 80% alguma medida perventiva deveria ser tomada. Como podemos fazer este teste? Existem varias formas, vou usar o poder das expressões regulares para isso!

$ seq -f"%g%%" 10 5 100 | grep -E '(100|[89][0-9])%'

80%
85%
90%
95%
100%


A expressão usada no grep casa com valores de porcentagem acima de 80% (inclusive), logo podemos usar em um teste simples

 if df /local | grep -qE '(100|[89][0-9])%' ; then
echo '/local [quase] lotado!'
else
echo '/local seguro (menos de 80%)'
fi


Simples, não? Poderia ter usado os operadores && e || mas não queria sacrificar a legibilidade do código.

Agora vem a parte divertida: e se o /local estiver ficando cheio, vamos fazer o que?

Quando vc não tem a responsabilidade de apagar arquivos desnecessários, o maximo que vc pode fazer é avisar os responsáveis. Elaborar um relatório com os 'problemas' encontrados e enviar por email usando shell script é simples.

Vamos usar o du para calcular o espaço gasto em cada diretório e o sort para ordenar do maior para o menor tamanho total.

$ du -bs /local/diretorio/* 2>&- | sort -nr 
3765643919 /local/diretorio/nonono001.vws
2290883178 /local/diretorio/nonono002.vws
2067295469 /local/diretorio/nonono003.vws
932165874 /local/diretorio/nonono004.vws
...
267271 /local/viewstore1/nonono999.vws


Facil heim ? Se vc se dá ao trabalho de ler as man pages do du e do sort, basta fazer algumas experiências até obter o resultado que mais lhe agrada. Por exemplo, uma atitude interessante seria listar os X maiores diretórios e enviar por email para o administrador.

$ du -bs /local/diretorio/* 2>&- | sort -nr | head -10 > /tmp/arquivo.log 
$ mailx -S "Lista dos 10 maiores diretorios" "administrador@server" < /tmp/arquivo.log


Talvez vc pergunte o motivo pelo qual eu utilizo um arquivo temporário: caso o envio do email dê algum problema, é possivel recuperar a lista.

Um script para rodar na cron e enviar o email de forma automatizada teria este formato:

#!/bin/bash
# Autor: Tiago Peczenyj - 13/jun/2007
# Script parametrizado para avaliar tamanho de alguns diretorios

X=10
DIR=/local/diretorio
EMAIL=administrador@server
SUBJECT="Lista dos ${X} maiores diretorios em $(date +"%Y%m%d" )"
if df ${DIR} | grep -qE '(100|[89][0-9])%' ; then
du -bs ${DIR}/* 2>&- | sort -nr | head -${X} > /tmp/arquivo.log
mailx -S "${SUBJECT}" ${EMAIL} < /tmp/arquivo.log
fi


O script parece simples, entretanto algo simples como informar o usuario dono de cada diretório é muito mais complexo. A minha solução foi esta:

paste -d '\t' <(du -bs /local/viewstore1/* 2>&-) \
<(ls -l /local/viewstore1 | awk '/^d/{print $3}') | awk '{
OFS="\t" ; print $1,$3,$2
}'| sort -nr