Pages

Showing posts with label ;-). Show all posts
Showing posts with label ;-). Show all posts

Monday, May 11, 2009

Introdução ao GNU/Linux

Em abril desse ano, eu apresentei o curso de extensão `Introdução ao GNU/Linux'' no Programa de Engenharia Química (COPPE/UFRJ).

Com o objetivo de prover uma referência por escrito e atualizada sobre o GNU/Linux, eu comecei a escrever um documento que ganhei volume e corpo de um livro. Livro esse que eu tenho o prazer de anunciar como um projeto livre.

O livro Introdução ao GNU/Linux está disponível para download em PDF, e código fonte

Ele foi escrito para um público que nunca teve contato com o sistema operacional GNU/Linux, mas não para quem nunca teve contato com computadores.

Sobre o Livro "Introdução ao GNU/Linux"

O GNU/Linux é um sistema operacional, que por definição é um programa responsável por conectar o usuário ao hardware, capaz de unificar o núcleo criado por Linus Torvalds em 1991 e diversas ferramentas criadas por terceiros.

Esse livro introduz ao leitor detalhes sobre (i) a arquitetura do GNU/Linux, partindo de um breve histórico até sua estrutura atual, (ii) os principais softwares para uso em computadores pessoais, como gerenciadores de arquivos, editores de texto, navegadores de internet, entre outros, (iii) os principais utilitários para uso de terminal, como man, ls, rm, cat, ssh, scp, entre outros e (iv) completando com um guia de sobrevivência na administração de um sistema GNU/Linux, apresentando os utilitários de configuração de rede, impressora, instalação de programas, além de outros pontos associados a utilização do GNU/Linux em computadores pessoais.

Sobre a licença do livro

O uso deste documento é regido pela licença GNU Free Documentation License, Versão 1.3 ou qualquer outra publicada posteriormente, da Free Software Foundation. Uma cópia dessa licença pode ser lida no anexo D do livro ou na página http://www.gnu.org/copyleft/fdl.html.

Infelizmente o Google Codes não permite que seja selecionado a licença GNU Free Documentation License, Version 1.3 ou superior como licença padrão do projeto, por isso, na barra ao lateral do site do projeto está escrito "GNU General Public License v3" e isso não é verdade. Por serem licenças complementares e compatíveis, eu não me preocupei. Caso alguém saiba de algo que eu não saiba, favor, informar.

A GNU Free Documentation License permite que você copie, modifique e/ou redistribua o documento inteiro ou parte do documento sobre os seus termos e respeitando as seções invariantes (no caso desse documento, são apenas as licenças em si).

A única exigência da GNU FDL é que os autores originais devem ser referenciados (não abre-se mão do direito autoral, algo que eu não poderia fazer nunca no Brasil) e de que a parte do conteúdo utilizado em outros trabalhos proveniente desse projeto (uma figura ou capítulo, por exemplo) também deve ser distribuído pela GNU FDL.

Como colaborar com projeto ?


Para ajudar no desenvolvimento do livro, una-se a lista de discussão:http://groups.google.com/group/introducaoaognulinux
Com isso você será adicionado como usuário do projeto do livro o que permitirá que faça as alterações.


[update] Depois de 2 anos sem atividades, eu cancelei a lista. [/update]

Você pode fazer as modificações e enviar para um dos autores (preferencialmente a mim mesmo).

Outra forma simples de colaborar é divulgando o material.

O que ainda resta a ser feito ?

Há uma lista de coisas a fazer e uma lista dos erros esperados.

Também tenho o objetivo de manter o livro atualizado. Idéia simples, fazer não é tão simples.

Novas versão em PDF devem ser lançadas periodicamente, conforme a atualização do documento.

Novas idéias são bem vindas.

Monday, January 07, 2008

Configurando o Adblock

Quem ainda não ouviu falar do Adblock ? É uma daquelas extensões amadas e odiadas por muitos, pois ao mesmo tempo que permite ao usuário bloquear propagandas indesejadas, recebe críticas daqueles que possuem sua propaganda bloqueada. Não quero entrar no mérito da questão sobre a legitimidade da extensão. Aqui eu faço apenas a pergunta: você sabe configurar essa extensão ?

As dicas que serão passadas aqui servem tanto para o Adblock, quanto para o Adblock Plus. Particularmente eu usei o Adblock por muito tempo até descobrir que o Adblock Plus é mais claro nas suas opções e migrei.

A primeira coisa que se deve entender é que a extensão vem sem nenhum filtro. Instalar ela apenas não serve para nada. É preciso fazer alguma coisa. E se o que você quer é algo fácil, simples e que não requer nenhuma intervenção sua, você quer é outra extensão: Adblock Filterset.G Updater

O Adblock Filterset.G Updater é uma extensão complementar ao Adblock. Sozinho ela é inútil. O que ela faz é baixar regularmente filtros pré-configurados para bloquear diversas propagandas reconhecidamente intrusivas. Você pode saber mais sobre essas propagandas no fórum oficial da lista.

Isso resolve quase todos os seus problemas. Digo "quase" porque ainda é necessário entender algumas coisas. A a lista é composta de negações e permissões, ou seja, ela bloqueará todo adsense, mas por questões de compatibilidade com o sites, não bloqueará o adsense utilizado no Gmail. O motivo dela fazer essas excessões a regra é que nesses casos o layout da página ficaria alterado. Entenda que quando ela remove um elemento da página duas ações são possíveis. A primeira é preencher o local com um belo nada e a segunda é rearranjar a página para eliminar o espaço vazio deixado pela propaganda. Alguns sites não funcionam bem com isso. Então existem algumas regras de excessão. Legal, né ? Infelizmente isso não ajuda em nada alguns sites nacionais, ou melhor, sites que não são conhecidos do público que ajuda a compor o filtro.

Então aí vem a segunda parte necessária na configuração. Entender as excessões e, portanto, entender a criação manual de regras.

Clique com o botão direito no ícone da barra de status para o adblock ou na seta que compõem o ícone do Adblock Plus na barra de ferramentas e escolha preferências. Você pode olhar algumas imagens nessa página. Perceberá que não importa a extensão escolhida ou mesmo a versão, em todas haverá um botão ou uma campo fazendo referência a um novo filtro. A versão atual é ligeiramente diferente, mas no fundo sempre tem um "Add Filter" (no Adblock Plus) ou uma composição de "Add" ao lado de um campo de "New Filter" (no Adblock). A diferença é que no primeiro você clica para para receber o campo onde escreverá a regra e no segundo você escreve a regra e depois manda adicionar. Nos dois casos o botão direito sob a regra criada permitirá ver opções que vão do simples remover a muitas coisas inclusive remover.

Você pode aproveitar que está com o Filterset.G instalado e percorrer as regras já existentes para conhecer como criar as suas no futuro, perceberá que elas vão de frases simples, a complexas expressões regulares. Se estiver utilizando o Adblock Plus verá um sessão dedicada as regras de excessão, uma dedicada as regras de bloqueio do Filterset.G e outra para as suas próprias regras, isso permite que você veja e gerencie tudo com mais facilidade. No Adblock tradicional fica tudo misturado e é exatamente nesse ponto que eu sempre impliquei com o Adblock, ele não organiza a lista, mas tudo bem, funciona do mesmo jeito, mas, por exemplo, não perceberá que toda regra de excessão começa com dois arrobas, e pode não se lembrar de quais foram as regras que você criou no futuro.

Mas voltando as excessões: onde você se exime de usar o Adblock ? Eu não sei. Não tenho um banco de dados para isso, o que eu tenho são duas circunstâncias, a primeira é que algumas páginas do portais do uol e do globo.com ficam deformadas devido ao Adblock estar ativo. O que eu faço. No caso do globo.com, que é mais crítico (é praticamente impossível navegar em certos sites do portal) eu adicionei o portal inteiro. Isso deve ser feito manualmente criando um regra do tipo: @@*globo.com*

Para o caso o uol, que é mais restrito a algumas partes do portal (em especial uma parte da de esportes) eu adicionei apenas: @@*esporte.uol.com*

É interessante perceber que ambas as extensões possuem com no seu menu de acesso meios de definir regras de excessão de uso da extensão a uma página ou site de forma gráfica. São duas opções de fácil acesso no menu principal da extensão, mas ambas não funcionam muito bem em portais, onde a url base se modifica. Para ser mais preciso: se entrar na página principal do uol e desabilitar a extensão para todo o domínio, o que ele faz é criar um regra tipo: @@www.uol.com.br*. Isso significa que o endereço esporte.uol.com.br não faz parte da excessão.

Como você sabe que uma página não funciona bem com o adblock ? Ou alguém de disse ou você experimentou. É comum ouvir pessoas reclamando que certos sites não funcionam direito depois que instalou o adblock. Se esse é o caso, ao invés de desabilitar ou desinstalar a extensão você pode simplesmente criar uma excessão.

E quanto a regras de bloqueios ? Além das que acompanham o Filterset.G eu tenho várias, dadas as particularidades regionais ou mesmo por serem serviços que eu não quero e não propagandas. Vou citar algumas das principais. Favor não vamos entrar em discussão por conta do meu gosto, certo ? Digo isso porque algumas podem ser tidas loucura minha pelos fãs dos serviços.

Bloquear serviços do Bloblogs.
http://embed.blogsblogs.com.br/embed/*
http://blogblogs.com.br/images/gadgets/*

Bloquear o Jacotei
http://www.jacotei.com.br/mod.php?module=*
http://www.jacotei.com.br/lib/jacotei/banners/*
http://vitrine.jacotei.com.br/*
http://images.jacotei.com.br/afiliado/*

Bloquear o Mercado Livre
http://www.mercadolivre.com/org-img/MLB/pms/*
http://pmssrv.mercadolivre.com.br/jm/PmsSrv?tool*

Bloquear javascript do Technorati
http://embed.technorati.com/embed/*.js

Bloquear um gadget do Flick comum em blogs.
http://www.flickr.com/apps/badge/badge_iframe.gne?*

Bloquear alguns serviços do Feedburner oferece para o feeds
Você não imagina como a página do Google Reader ficou rápida com essa regras
Uma das regras bloquea a propaganda no feed e as outras duas elementos específicos, mas eu não me recordo qual é qual.

NOTA: Onde aparece um traço deveria aparecer um til.
http://feeds.feedburner.com/~r/*/~4/*
http://feeds.feedburner.com/~a/*?*
http://feeds.feedburner.com/~f/*?i=*

Eu não quero dar exemplos pessoais diretos, posso dizer que alguns blogs fornecem serviços como o do feedburner mas com outro domínio, tipo as regras abaixo

NOTA: Onde aparece um traço deveria aparecer um til.
http://feeds.umoutrodominio.com/~f/*?i=*
http://feeds.umoutrodominio.com/~a/*?*
http://feeds.umoutrodominio.com/~r/*/~4/*

Espero que todo mundo entenda que minhas escolhas são minhas. Porque bloquear alguns gadgets que parecem ter sido criados para servir a mim, o usuário. Não tenho que gostar de um serviço só porque tem gente que gosta dele ? Um pouco de respeito com minha privacidade seria muito bom, exemplo, um dos serviço que o blogblogs oferece deixava meu rastro, por que não dizer, identidade, para qualquer um que quisesse ver e bastava que o dono do blog tivesse o tal gadget instalado. E o que faz alguém pensar que eu quero deixar um outro usuário qualquer descobrir que eu visitei esse ou aquele blog ? Note a ênfase do eu. Por fim, velocidade de conexão e de processamento da página. Faça um teste. Bloquei os serviços do feedburner oferece e vá ler os seus feeds; depois conta a diferença. Você pode até não querer desabilitar alguns serviços, mas isso não quer dizer que eles não consumam muitos recursos.

Mas como eu consegui descobrir essas regras ? Do jeito difícil. Navegando. Eu entro em um site que me interessa, nesse site eu uso uma função das extensões do Adblock para listar os elementos bloqueáveis. Começo com os marcados como "iframes", vou para os "embed" e depois vou analiso os scripts. Se ainda estiver carregada, bloqueio imagens específicas, mas esse deve ser o último recurso, ou pode começar a ter problemas com o site.

Não adianta você simplesmente bloquear o que estive ali. Pode até ser que resolva, mas algumas vezes as urls possuem partes que são modificadas com uma nova visita então é recomendado modificar a linha para tornar tudo mais genérico possível, substituindo partes que lembre logins, códigos ou identificadores por asterístico.

Muitas vezes é preciso regular a mão ao criar uma regra, por exemplo, imagina se eu criasse uma regra tipo '*feeds*', isso engloba tudo que eu criei para eliminar serviços de feeds, mas é uma regra tão geral que elimina boa parte da internet que eu quero ver. Como saber se não errou ? Novamente: navegando. Criar os filtros é um exercício lento. Deve ter paciência para observar o que te incomoda e ir adicionando quando for necessário. Não tenha pressa, não adicione duas regras ao mesmo tempo.

Em alguns casos pode ser necessário analisar o código fonte da página para descobrir qual é a regra que deve ser criada e para complicar a regra exigiria uma expressão regular. Isso seria, sem dúvida alguma, o máximo de complicação, no qual eu não entrarei em detalhes dadas as infinitas possibilidades.

Espero não ter criado inimigos com minhas idéias...

Thursday, June 07, 2007

Como criar um bloco de destaques no Blogger

Depois de ler o artigo do Bruno, "Como criar um bloco de destaques no Wordpress", eu fiquei imaginando em como fazer a mesma coisa com o Blogger.

Não existem muitas formas (que eu conheça, pelo menos) de fazer isso no Blogger, a que eu consegui imaginar usa o recurso de categorias associado com os feeds individuais de cada categoria.

Primeiro vamos entender uma coisa sobre os feeds do RSS no Blogger.
É possível ter um feed RSS para cada categoria criada, que segue o padrão abaixo considerando a categoria "exemplo":

http://jfmitre.blogspot.com/feeds/posts/default/-/exemplo

Assim, somente os artigos que tiverem a label 'exemplo' estarão disponíveis para o assinante desse feed.

Seguindo os passos:
  1. Selecione uma palavra chave para sua categoria de destaques, exemplo: "destaque"
  2. Abra o editor de templates do Blogger, e nele adicione um novo elemento a página no local que você quer que apareça os destaques.
  3. Na lista que segue, selecione o item "Feed".
  4. Preencha com o feed particular da categoria selecionada anteriormente para essa função: http://jfmitre.blogspot.com/feeds/posts/default/-/categoria seria o caso do nosso exemplo. Clique em continue.
  5. Nessa última tela selecione suas preferências para o destaque, a princípio ele selecionou o título do seu blog para o campo "Título", mude para algo como "Destaques:" Preencha as demais preferências de acordo com sua vontade.
  6. Salve, se não estive salvo.
Só para constar:
  • Nesse blog eu estou utilizando a categoria ";-)" (eu queria só um pontinho, mas não deu certo) [update]Para usar o ;-) como uma categoria é preciso correlacionar com link do feed com o código %3B-%29. Variações dessas "palavras inválidas" para urls podem ser facilmente descobertas clicando no link correspondente a mesma nas categorias do blog. Ao fazer isso, a barra de endereços vai interpretar o código para você. Aí é só copiar. [/update]
  • O feed link só vai sair dali quando ultrapassar o número de artigos que você selecionou na configuração. Se quiser manter um mesmo artigo mais velho, você precisará de editar o número de destaques ou remover algum destaque da lista. Para os meus interesses, 5 está de bom tamanho.

Tuesday, May 02, 2006

Convertendo arquivos UTF-8 em ISO-8859-1

[update]
Esse tópico recebeu uma versão atualizada. Embora esse aqui continue correto e completamente funcional. A versão atualizada contém mais informações e agrega o conteúdo gerado pelos comentários desse tópico até a data de publicação daquele tópico.
[/update]

Recentemente tive alguns problemas com codificação de alguns arquivos e do próprio sistema (algumas coisas ainda não resolvidas, mas isso é outro assunto!).

O fato é que tive que fazer uma pesquisa sobre como converter um tipo de arquivo em outro. O que me impressionou não foi a dificuldade de achar uma solução, mas a complexidade de algumas soluções que eu encontrei. Pensei que certamente tal complexidade não seria necessária e estava certo !

Encontrei uma dica no rodapé do site das FunçõesZZ ensinando justamente como converter o arquivo das FunçõesZZ, que é escrito em ISO-8859-1, em UTF-8.

O comando é muito simples: iconv
Faz parte da libc6, ou seja, todo mundo têm instalado, e possuí sintaxe simples.

iconv -f codificacao_de_origem -t codificacao_de_saida arquivo

Assim para converter UTF-8 para ISO-8859-1 temos:

iconv -f utf-8 -t iso-8859-1 arquivo

Para o contrário utilizamos:

iconv -f iso-8859-1 -t utf-8 arquivo

É necessário redirecionar a saida de arquivo para algum lugar, algo como:

iconv -f utf-8 -t iso-8859-1 arquivo > novo_arquivo

Sendo assim, eu acrescentei ao meu ~/.bashrc* as seguintes linhas

alias iso2utf='iconv -f iso-8859-1 -t utf-8'
alias utf2iso='iconv -f utf-8 -t iso-8859-1'

Agora quando eu quiser converter um tipo de arquivo em outro, eu só preciso usar o iso2utf ou o utf2iso

Agora, por que tanta desinformação sobre assunto ? É tão fácil converter um tipo em outro, é tão simples !

[update]
O Marcelo Oliveira escreveu um belo script para fazer a conversão em lote e o colocou aqui, nos comentários.
O script apresenta o cuidado de não modificar seus arquivos originais, produzindo uma cópia dos mesmos em outros diretórios. Modificar o comportamento do script para converter arquivo iso-8859 para utf-8 é trivial (pelo menos para quem leu o tópico até aqui). Um detalhe importante é que o script não suporta caminhos ou nomes que contenham espaços (Posso estar enganado, mas o Marcelo deve ter utilizado esse script em um diretório de dados para internet onde espaços não são comuns e arquivos de imagem são.).
Marcelo, eu e a galera agradecemos a iniciativa e a colaboração!
[/update]