Expediente editorial
Editores Flávia Jobstraibizer fjobs@linuxmagazine.com.br Laura Loenert Lopes llopes@linuxmagazine.com.br Editora de Arte Larissa Lima Zanini llima@linuxmagazine.com.br Colaboradores Alexander Spier, Alexandre Borges, Augusto Campos, Cezar Taurion, Charly Kühnast, Jon ‘maddog’ Hall, Gilberto Magalhães, Hannes A. Czerulla, Karsten Günther, Klaus Knopper, Kurt Seifried, Mirko Dölle, Oliver Frommel, Thorsten Leemhuis, Tim Schürmann, Zack Brown. Tradução Laura Loenert Lopes, Sebastião Luiz da Silva Guerra, Emerson Satomi Revisão Ana Carolina Hunger. Editores internacionais Uli Bantle, Andreas Bohle, Jens-Christoph Brendel, Hans-Georg Eßer, Markus Feilner, Oliver Frommel, Marcel Hilzinger, Mathias Huber, Anika Kehrer, Kristian Kißling, Jan Kleinert, Daniel Kottmair, Thomas Leichtenstern, Jörg Luther, Nils Magnus. Anúncios: Rafael Peregrino da Silva (Brasil) anuncios@linuxmagazine.com.br Tel.: +55 (0)11 3675-2600 Penny Wilby (Reino Unido e Irlanda) pwilby@linux-magazine.com Amy Phalen (América do Norte) aphalen@linuxpromagazine.com Hubert Wiest (Outros países) hwiest@linuxnewmedia.de Diretor de operações Claudio Bazzoli cbazzoli@linuxmagazine.com.br Na Internet: www.linuxmagazine.com.br – Brasil www.linux-magazin.de – Alemanha www.linux-magazine.com – Portal Mundial www.linuxmagazine.com.au – Austrália www.linux-magazine.es – Espanha www.linux-magazine.pl – Polônia www.linux-magazine.co.uk – Reino Unido www.linuxpromagazine.com – América do Norte Apesar de todos os cuidados possíveis terem sido tomados durante a produção desta revista, a editora não é responsável por eventuais imprecisões nela contidas ou por consequências que advenham de seu uso. A utilização de qualquer material da revista ocorre por conta e risco do leitor. Nenhum material pode ser reproduzido em qualquer meio, em parte ou no todo, sem permissão expressa da editora. Assume-se que qualquer correspondência recebida, tal como cartas, emails, faxes, fotografias, artigos e desenhos, sejam fornecidos para publicação ou licenciamento a terceiros de forma mundial não-exclusiva pela Linux New Media do Brasil, a menos que explicitamente indicado. Linux é uma marca registrada de Linus Torvalds. Linux Magazine é publicada mensalmente por: Linux New Media do Brasil Editora Ltda. Rua São Bento, 500 Conj. 802 – Sé 01010-001 – São Paulo – SP – Brasil Tel.: +55 (0)11 3675-2600 Direitos Autorais e Marcas Registradas © 2004 - 2012: Linux New Media do Brasil Editora Ltda. Impressão e Acabamento: Log & Print Gráfica e Logística S.A. Atendimento Assinante www.linuxnewmedia.com.br/atendimento São Paulo: +55 (0)11 3675-2600 Rio de Janeiro: +55 (0)21 3512 0888 Belo Horizonte: +55 (0)31 3516 1280 ISSN 1806-9428
Impresso no Brasil
Linux Magazine #97 | Dezembro de 2012
EDITORIAL
Show do milhão (de €)
Diretor Geral Rafael Peregrino da Silva rperegrino@linuxmagazine.com.br
Atendendo a uma solicitação da bancada dos eleitores livres (Freie Wähler) de sua câmara municipal, a cidade de Munique divulgou que a migração para Linux realizada no âmbito do projeto LiMux poupou a bagatela de (mais de) 10 milhões de euros aos cofres do município desde sua implantação (cerca de R$ 28 milhões, no fechamento desta edição da Linux Magazine). Isso para uma solução que compreende nada menos que as 11.700 estações de trabalho dos funcionários da administração pública daquela cidade alemã, agora equipadas com uma distribuição Linux desenvolvida especificamente para essa finalidade, com os aplicativos de costume (pacote de aplicativos para escritório, navegador, leitor de e-mails etc.) e outros mimos especiais (como os criados pelo projeto WollMux, que incrementam a versão do OpenOffice utilizada pelos funcionários da administração pública da cidade), além de outros 15.000 desktops que ainda usam um sistema operacional proprietário (legado), mas foram equipados com o pacote de aplicativos para escritório de código aberto. A comparação foi realizada usando como base a instalação de sistemas operacionais e do pacote de aplicativos para escritório proprietários da Microsoft, mais especificamente o Windows 7 e o MS Office 2010. Não iremos entrar em mais detalhes sobre o relatório publicado pela cidade de Munique neste espaço, já que os números publicados no parágrafo acima são contundentes o suficiente. Nossa intenção nessas breves linhas é muito mais discorrer sobre as possibilidades de economia em geral que pode ser obtida no âmbito de um projeto como o mencionado acima, tanto em empresas quanto na administração pública. Todo profissional de tecnologia já sabe que o Linux e as soluções de código aberto se tornaram o padrão “de facto” do lado do servidor e em dispositivos móveis. O último rincão a ser dominado é o PC propriamente dito. Em alguns segmentos, como o de soluções para frente de caixa de estabelecimentos comerciais, por exemplo, atualmente só me surpreendo quando vejo qualquer outro sistema que NÃO seja o do pinguim. C&A, Casas Bahia, Lojas Renner, Pão de Açúcar, Carrefour, Walmart, Ponto Frio, Ri Happy, Droga Raia etc., e até a vendinha de doces aqui no centro de São Paulo (que usa um sistema Arius Loja, para Linux), todos já embarcaram na onda da tecnologia de código aberto para economizar e tornar seus sistemas mais estáveis, usando soluções mais competitivas. O Banco do Brasil vai muito bem, obrigado, com seus mais de 200.000 desktops Linux em agências em todas as cidades do país e uma economia estimada de cerca de 100 milhões de reais obtida até o final de 2011. A Apple já mostrou ao usuário comum que um PC não precisa de Windows para funcionar. Agora que a Microsoft lançou o Windows 8 com uma interface diferente, o Linux no desktop tem nova oportunidade para mostrar a que veio. Além da cara nova, o sistema da Microsoft é mais caro que o antecessor e vai demandar aprendizado (e treinamento, dependendo do caso). Que tal aproveitar o momento e dar chance para o novo? O porteiro aqui do prédio da editora migrou e não poderia estar mais feliz... ■ Rafael Peregrino da Silva Diretor de Redação 3
ÍNDICE
CAPA A era dos portáteis
33
Vivemos uma era onde toda a nossa vida cabe na palma de nossas mãos, em dispositivos cada vez menores. O que o futuro nos reserva? Super ultrabooks
34
Testamos alguns dos mais populares e robustos ultrabooks presentes no mercado brasileiro, para todos os gostos (e bolsos). Faça a escolha certa! Pinguim para viagem
40
O Linux pode ser instalado em qualquer ultrabook ou notebook – mas alguns processadores destinados a dispositivos móveis têm seu desempenho prejudicado pelo sistema de código aberto. Muitos desses problemas podem ser evitados desde o começo, caso os que procuram por laptops para executar Linux não se deixem enganar pelas primeiras promoções que vêem pela frente. Populares e acessíveis
46
Nem todo mundo precisa de um telefone top de linha com processador quad-core e uma gigantesca tela. É perfeitamente possível navegar na Internet, jogar e usar inúmeros aplicativos em smartphones mais simples. O melhor smartphone do mundo
54
Eleito em 2012 como um dos melhores smartphones do mundo, o substituto do Galaxy SII surpreende por sua aparente simplicidade e seus inúmeros recursos inovadores.
4
www.linuxmagazine.com.br
Linux Magazine 97 | ÍNDICE
ANDROID
COLUNAS Klaus Knopper
08
Charly Kühnast
10
Augusto Campos
12
Alexandre Borges
14
Kurt Seifried
16
Zack Brown
20
Central multimidia para Android
63
NOTÍCIAS Geral
22 As caixas de som para dispositivos móveis da Philips possuem um bom hardware e conexão flexível para uma variedade de dispositivos que executam Android.
➧ Rootkit infecta servidores Linux ➧ CyanogenMod 10 oferece atualizações “pelo ar” ➧ Lançado o ROSA Enterprise Linux Server 2012 ➧ Linguagem de programação Go completa 3 anos
ANÁLISE
CORPORATE
Utilitário de disco hdparm Notícias
58
24
➧ Pioneiro do antivírus, John McAfee é procurado por assassinato ➧ HP investe em Linux e torna-se membro da Linux Foundation ➧ Linux Foundation luta por assinatura do Microsoft Secure Boot ➧ Steven Sinofsky, líder do Windows, deixa a Microsoft Entrevista com Dov Bigio
26
Coluna: Jon “maddog” Hall
28
Coluna: Cezar Taurion
30
Coluna: Gilberto Magalhães
32 Usamos o hdparm para ajustar o disco rígido ou drive de DVD, mas com esta ferramenta também podemos definir e obter parâmetros diversos, e até mesmo apagar SSDs de forma segura.
TUTORIAL Mapeamento rápido
66
PROGRAMAÇÃO Sem exageros
74
Precisa de uma ferramenta para fazer pequenas modificações no OpenStreetMap? O Potlatch 2 é uma escolha eficiente como editor rápido e é fácil de usar. Operação fita de video
71
Projetada para a programação de sistema, a linguagem Go, criada pelo Google, faz o trabalho sem grandes sofisticações. Uma boa opção para quem é alérgico a exageros.
SERVIÇOS
Evite perder preciosas lembranças e aprenda a digitalizar gravações antigas de video, armazenando-as de forma digital.
Linux Magazine #97 | Dezembro de 2012
Editorial Emails Linux.local Preview
03 06 78 82
5
Coluna do Augusto
COLUNA
Linus Torvalds e matrioskas Qual a relevância de questionarmos a opinião alheia?
M
atrioskas são aquelas bonequinhas tipicamente russas, que vêm uma dentro da outra, dentro da outra, dentro da outra. E às vezes as discussões sobre a relevância de determinados assuntos lembram bastante um conjunto de matrioskas. Linus Torvalds, como sabemos, é uma pessoa de opiniões fortes e que não escolhe as palavras – e gestos, como ficou evidente em uma recente manifestação pública dele sobre a qualidade do suporte da Nvidia ao Linux – na hora de manifestá-las. Um dos temas que ele costuma comentar com alguma frequência é o estado dos ambientes gráficos disponíveis para Linux, sem poupar as críticas que nascem exatamente de onde uma crítica feita por um usuário devem nascer: da comparação entre a sua experiência de uso e as suas expectativas. Linus costuma ter bastante críticas a fazer ao KDE e ao GNOME, entre os quais ele se alterna, às vezes com um estágio em outro ambiente no meio do caminho. Nos últimos 2 meses ele veio a público (em uma palestra gravada em vídeo, e em sua página em um serviço online) dizer que estava usando ou experimentando ambos, e em uma das ocasiões desfiou o costumeiro rosário de críticas. Não é preciso ter uma licença especial para criticar: todo usuário pode fazê-lo, e muitas vezes a crítica, quando bem colocada, ajuda a produzir avanço. Mas a posição que Linus ocupa frequentemente faz suas críticas ganharem destaque maior do que o seu conteúdo objetivo poderia merecer, especialmente quando se baseiam (corretamente, aliás) no que o usuário em questão prefere, e não em algum critério externo, padrão ou outro aspecto publicamente reconhecido. Faz parte do jogo e, francamente, embora quase sempre me interesse saber o que Torvalds pensa sobre qualquer software, custo a acreditar que alguém no mundo use a opinião torvaldiana como critério de escolha de ambientes gráficos.
12
Mas ao longo da última rodada de críticas, tivemos um fator a mais: Aaron Seigo, líder de um dos projetos de ambiente gráfico mencionados, escreveu um longo artigo sobre a importância de por um fim aos “cultos de personalidade no software livre”, referindo-se à relevância atribuída ao que Linus acha ou deixa de achar sobre qualquer software, e sobre estar enjoado da ineficiência e auto-destrutividade que percebe no software livre devido a divisões internas. Particularmente acredito que Aaron Seigo (também uma personalidade do software livre) tem tanto direito de criticar a relevância dada às opiniões de Linus Torvalds, quanto o próprio Linus tem de expor as suas posições sobre os softwares que usa. São opiniões, e cabe a cada um decidir se as ouve ou não. Mas ao ler a peça, não pude deixar de dar um passo para fora do círculo e me perguntar: e qual seria a relevância de uma pessoa como o Seigo questionar a relevância atribuída ao que Linus Torvalds diz? É o terceiro nível da Matroska, como se vê. E agora você, caro leitor, tem em mãos o poder de dar mais um passo para fora do círculo e acrescentar o quarto nível, questionando qual a relevância do Augusto questionar a relevância do Seigo questionar a relevância do Torvalds gostar ou não de determinado software. E a resposta, para todos, é: a relevância é dada por quem lê, e às vezes é amplificada até mesmo pelas críticas feitas ao longo do processo. Exatamente como deveria ser!Augusto Campos. *Augusto César Campos* é administrador de TI e, desde 1996, mantém o site BR-linux.org, que cobre a cena do Software Livre no Brasil e no mundo. ■ Augusto César Campos é administrador de TI e, desde 1996, mantém o site BR-linux.org, que cobre a cena do Software Livre no Brasil e no mundo.
www.linuxmagazine.com.br
kwarup.com
Agora você tem muito mais liberdade para escolher o visual da Webstore. Se você é desenvolvedor, agora pode editar o CSS da Webstore Locaweb e oferecer lojas muito mais personalizadas para seus clientes.
Locaweb.com.br/Webstore
Coluna do Alexandre Borges
COLUNA
NMAP quinta parte Avance em seus conhecimentos sobre a poderosa ferramenta NMAP.
N
as últimas colunas examinamos as opções mais conhecidas de escaneamento usando a ferramenta NMA e agora exploraremos outras alternativas interessantes que podem, em determinadas situações e ambientes, nos auxiliar para o reconhecimento de um potencial alvo de ataque. De início, a primeira e mais óbvia opção é a do escaneamento do tipo TCP connect. Caso o leitor execute o comando como root, deve especificar os flags -sT como no exemplo abaixo: # nmap -sT 192.168.1.1
Infelizmente este modo de escaneamento apresenta dois problemas graves: primeiro, estabelece uma conexão com o alvo realizando completamente o three-handshake e somente envia um pacote com o flag de reset (RST) depois da conexão, tornando assim muito simples a tarefa de detecção da operação por um IDS. Segundo (e pior) esta maneira de usar o NMAP é muito lenta e, com um grande número de máquinas, pode tornar a operação inviável. Então, quando o TCP scan deve
Listagem 1: Resultado do comando nmap 01 Starting Nmap 5.21 ( http://nmap.org ) at 2012-11-12 04:11 BRST 02 Nmap scan report for 192.168.1.1 03 Host is up, received arp-response (0.0079s latency). 04 Not shown: 195 closed ports 05 Reason: 195 port-unreaches 06 PORT STATE SERVICE REASON 07 53/udp open|filtered domain no-response 08 67/udp open|filtered dhcps no-response 09 137/udp open|filtered netbios-ns no-response 10 1900/udp open|filtered upnp no-response 11 5355/udp open|filtered unknown no-response 12 MAC Address: 1C:7E:E5:FE:99:B0 (Unknown) 13 Nmap done: 1 IP address (1 host up) scanned in 212.71 seconds
14
ser usado? De maneira resumida, ou quando o usuário executa o NMAP como usuário regular (sem privilégios) pois neste caso a opção -sT é padrão ou ainda tenho visto em alguns escaneamento de máquinas usando IPv6. Outra alternativa que o leitor pode usar é realizar um escaneamento com o protocolo UDP pois, afinal, existem muitos serviços (como DNS e SNMP) que são executados sobre este protocolo. O comando mais simples para usar este método é: # nmap -sU 192.168.1.1
Como pode-se perceber, não há dificuldade na execução do comando, entretanto há uma série de detalhes que devem ser examinados antes de prosseguirmos: ➧ O processo de escaneamento é lento com UDP ➧ O header UDP enviado é vazio, ou seja, isto pode alertar um IDS ou ainda ser descartado por ser considerado inválido por muitos aplicativos ➧ O status das respostas são: ➧ Qualquer resposta (o que pode ser raro em serviços UDP) significa porta aberta ➧ Nenhuma resposta: aberto ou filtrado (firewall) ➧ Resposta com pacote ICMP tipo 3/code3 (port unreachable): porta fechada ➧ Qualquer outro pacote ICMP do tipo 3: porta filtrada (firewall) O leitor já pode perceber que a análise tende a ficar bastante complicada pois parece que, quase sempre, as portas estão inacessíveis quando trabalhando com o escaneamento UDP. Inobstante isso, é impressionante como muitas portas apresentam o status open/filtered justamente pelo fato que mencionei acima: como em muitas ocasiões, o pacote UDP com cabeçalho vazio é considerado inválido, nada é respondido e esta ausência de resposta nos retorna um status open/filtered. Talvez uma saída para tentar distinguir o status open do status filtered seja acres-
www.linuxmagazine.com.br
centar a opção -A ou ainda -V, todavia já alerto que isto nem sempre funciona como o esperado e, pior, deixa o processo muito mais lento:
# nmap -sUV -F --host-timeout 600000 192.168.1.1-5
Ou ainda uma combinação das últimas sugestões:
# nmap -sUA 192.168.1.1 # nmap -sUV 192.168.1.1
# nmap -sUV -F --version-intensity 0 --host-timeout 600000 192.168.1.1-5
Só que os problemas ainda não terminaram pois, como afirmei antes, o escaneamento com UDP é lento. E por quê? Como explicitado, com serviços UDP há uma grande chance de não recebermos resposta quando usamos o NMAP e isto sempre levará o mesmo a fazer retransmissões pois ele acredita que o pacote se perdeu e o reenvia novamente, atrasando muito o escaneamento. A própria opção -A ou -V sugerida no último exemplo representa um transtorno que pode ser atenuado com:
Neste exemplo, para o escopo de máquinas partindo de 192.168.1.1 e indo até 192.168.1.5, o tempo limite de escaneamento em cada uma é de 10 minutos e estamos interessados em apenas buscar o status das 100 portas mais comuns. Se o leitor quiser as 300 portas mais comuns, aí ele poderá fazer:
# nmap -sUV --version-intensity 0 192.168.1.1
A opção --version-intensity 0 força o NMAP a fazer uso apenas dos métodos mais certeiros na tentativa de avaliar a versão dos serviços na máquina alvo. Outro alívio à lentidão pode ser fornecido explicitando a opção -F, que apenas realiza o escaneamento das 100 portas mais importantes; outra opção ainda é dizer ao NMAP por quanto tempo estamos dispostos a esperar o escaneamento de cada máquina com a opção --host-timeout (tempo dado em milisegundos). Vejamos:
Linux Magazine #XX | Mês de 200X
# nmap -sUV --top-ports 300 192.168.1
Para concluir, como grande parte do dilema até aqui é saber exatamente qual tipo de resposta recebemos da máquina alvo e, com isto, tentar aferir qual o real status de suas portas, existe uma opção muito interessante no NMAP que pode ser usada em qualquer escaneamento, que é a --reason; como o nome diz, ela traz para cada porta o motivo do status: # nmap -sU --reason --port-ports 200 192.168.1.1 Alexandre Borges (alex_sun@terra.com.br) é instrutor independente e ministra regularmente treinamentos de tecnologia Oracle (áreas de Solaris, LDAP, Cluster, Containers/OracleVM, MySQL, e Hardware), Symantec (Netbackup, Veritas Cluster,Backup Exec, Storage Foundation e SEP) e EC-Council (CEH e CHFI), além de estar sempre envolvido com assuntos relacionados ao kernel Linux.
15
Matéria | SEÇÃO
Ultrabooks e Smartphones
SEÇÃO
A era dos portáteis Vivemos uma era onde toda a nossa vida cabe na palma de nossas mãos, em dispositivos cada vez menores. O que o futuro nos reserva? por Flávia Jobstraibizer
A
tualmente nossa vida cabe na palma de nossas mãos, em dispositivos cada vez menores e que nos auxiliam em quase todas as tarefas do dia a dia. Não é de se estranhar que a nova geração Z (indivíduos nascidos a partir dos anos 2001 até os dias de hoje) tenham tido pouco contato com papel em espécie. São adolescentes e crianças que já conhecem fotografias em formato digital, lêem e-books e usam tablets, já tem e-mail e perfis em redes sociais e levam seus celulares para a escola. Estas novas gerações e as que estão por vir, serão as gerações que revolucionarão o mercado digital e da computação, assim que como as gerações que as antecederam e as atuais gerações que dedicam suas vidas à inovações e descobertas para o futuro. Mais avançados ainda estão se tornando os dispositivos que utilizamos atualmente. Cada vez menores, mais leves, mais finos e mais bonitos, smartphones e ultrabooks atualmente servem para tudo: trabalhar, har, jogar jogos, navegar na Internet, conectar-nos com om o mundo, fazer ligações, ler livros, tirar e armazenar nar fotografias e videos e muitos outros usos. Raras sãoo as pessoas que possuem um telefone celular que não tire fotos ou não reproduza músicas. Mais raras ainda são as pessoas que possuem um notebook ou ultrabook ok e que não os utilize para assistir videos provenientess de sites de streaming online ou mesmo reproduzir uma seleção de filmes durante uma viagem. Nesta edição da Linux Magazine, trouxemos os mais modernos equipamentos do mercado e os campeões nos
quesitos usabilidade, recursos e, claro, preços acessíveis. Você vai conhecer alguns dos dispositivos mais famosoos do mercado, como o novíssimo smartphone Samsung Galaxy S III e os motivos pelos quais este aparelho faz tanto sucesso. Trazemos ainda um comparativo entre os smartphones mais vendidos do mercado e suas relações custo-benefício para auxiliá-lo na melhor escolha. No quesito ultrabooks, testamos alguns dos modelos mais populares do mercado brasileiro e os elencamos por ordem de preço, pois além de possuir os recursos de que você precisa, o equipamento precisa caber no seu bolso. Fizemos ainda uma análise dos ultrabooks e notebooks disponíveis no mercado e seu funcionamento com Linux. Saiba como evitar dores de cabeça no momento da compra do seu equipamento e como solucionar pequenos problemas de incompatibilidade. Esta edição está imperdível e esperamos que você faça bom uso das informações a seguir! Boa leitura! ■
Matérias de capa Super ultrabooks
34
Pinguim para viagem
40
Populares e acessíveis
46
O melhor smartphone do mundo
54
Linux Magazine #XX | Mês de 200X
33
ANÁLISE | Utilitário de disco hdparm
Utilitário hdparm
ANÁLISE
Utilitário de disco hdparm Usamos o hdparm para ajustar o disco rígido ou drive de DVD, mas com esta ferramenta também podemos definir e obter parâmetros diversos, e até mesmo apagar discos SSD de forma segura. por Tim Schürmann
E
m 2005, o canadense Mark Lord desenvolveu o pequeno utilitário hdparm [1] para testar drivers Linux para discos rígidos IDE. Desde então, o programa tornou-se uma ferramenta valiosa para o diagnóstico e ajuste de discos rígidos. Por exemplo, ele testa a velocidade de discos rígidos e discos de estado sólido, coloca os dispositivos em suspensão e ativa ou desativa o modo de economia de energia. Com equipamentos modernos, o hdparm pode ativar o modo acústico e limpar unidades de estado sólido (solid-state drive ou SSDs). Antes das primeiras
experiências com o hdparm, é importante ler sobre questões relacionadas à segurança no quadro 1.
Necessidade de comunicação Todas as distribuições razoavelmente novas já incluem o hdparm na instalação básica. Só é preciso abrir um terminal e digitar o comando: hdparm -I /dev/sda | more
como administrador (figura 1). A ferramenta fornecerá todos os dados disponíveis sobre a unidade escolhida
Quadro 1: Atenção! O hdparm manipula uma unidade diretamente, é por isto que sua utilização pode facilmente conduzir a uma perda de dados e, no pior dos casos, a um defeito no dispositivo. Além disso, a documentação do programa pontua que muitos de seus recursos são experimentais ou perigosos. Portanto, antes de trabalhar com o programa, o usuário deve sempre realizar um backup completo do disco. Além disso, só deverá usar recursos cujas ações compreenda perfeitamente. O editor e o autor deste artigo não aceitam qualquer responsabilidade por danos ou perda de dados.
58
– neste caso, o primeiro disco rígido sda. A opção | more garante que a grande quantidade de informação não seja mostrada na tela do terminal sem que possa ser lida. O hdparm aceita qualquer dispositivo de armazenamento em massa que esteja conectado a uma interface (E)IDE, SATA ou SAS, incluindo drives, DVD e SSDs. Adaptadores USB-IDE muitas vezes causam problemas por não transmitirem comandos ATA (completos) ou ATAPI para a unidade. A informação que o hdparm proporciona é dependente do dispositivo. A designação e o número da versão do firmware são sempre listados no topo logo abaixo de Model Number (número do modelo) e Firmware Revision (revisão de firmware). Proprietários de um SSD em sua maioria podem descobrir rapidamente se estão executando a versão atual do firmware. Em novos discos rígidos, o usuário deve verificar se o Native Command
www.linuxmagazine.com.br
Utilitário de disco hdparm | ANÁLISE
Queuing (NCQ) (enfileiramento de comandos internos) pode ser encontrado em Commands/features. Esta tecnologia torna possível ao disco rígido classificar as consultas a partir do sistema de tal forma que as cabeças tomam o caminho mais curto possível. Os SSDs, por outro lado, distribuem o acesso de escrita de forma mais eficiente em blocos de armazenamento. Idealmente, isto conduz a um aumento da velocidade. Se o NCQ está desativado, verifique a BIOS para descobrir se a unidade está funcionando em modo AHCI, que também é necessário para outras funções como gerenciamento de energia.
Velocímetro Para determinar o quão rápida uma unidade entrega os dados, utilize o comando: hdparm -t /dev/sda
Depois de alguns segundos, a taxa de transferência de dados é exibida (em MBps, ou megabytes por segundo). O pequeno programa lê diretamente da unidade por um tempo, independentemente do sistema de arquivos. A velocidade medida é portanto um pouco mais rápida do que na prática. Para receber um resultado não viciado, nenhum outro programa deve ser executado durante a medição, e a memória principal suficiente deve estar livre. Repita a medição pelo menos três vezes e em seguida calcule o valor médio. Para um modelo atual, o resultado deve atingir pelo menos 80 MBps (figura 2). O kernel Linux coloca os dados obtidos do disco rígido em um buffer. Para determinar a velocidade da unidade sem adornos, utilize o comando: hdparm -t --direct /dev/sda
O hdparm lê os dados diretamente do disco. Os valores medidos assim serão um pouco mais lentos do que sem --direct, mas pelo menos
Linux Magazine #97 | Dezembro de 2012
Figura 1 O hdparm lista as propriedades de hardware de um disco rígido de seis anos de idade com capacidade de 320GB.
é possível ver a taxa de transmissão pura do disco (figura 3). O hdparm sempre lê os dados a partir do início do dispositivo de armazenamento. Os discos rígidos, no entanto, tendem a entregar dados das áreas exteriores de discos magnéticos um pouco mais lentamente; portanto, o hdparm permite definir um offset (a partir da versão 9.29 do software): hdparm -t --direct --offset 500 /dev/sda
Onde 500 indica o número de gigabytes que iremos pular. Em um disco rígido de 1TB, o comando acima deve, portanto, fornecer dados a partir do meio do disco. Como mostra a figura 3, a velocidade de leitura cai de forma acentuada nas áreas exteriores de um disco rígido. Todos os testes de velocidade introduzidos aqui só fornecem uma primeira impressão de possíveis problemas de desempenho. No entanto, para uma referência completa, o usuário
também precisará determinar, por exemplo, a velocidade de gravação.
Mais e mais rápido Algumas propriedades da unidade podem ser alteradas enquanto o dispositivo estiver em funcionamento; por exemplo, a maioria das unidades permite que o usuário ligue ou desligue a gestão de energia. Desta forma, recursos do hdparm que mudam e ativam em um disco rígido podem ser chamadas com: hdparm -I /dev/sda
e são encontradas em Commands/ features (figura 1). Todos os recursos encontrados lá e marcados com asterisco estão atualmente ativos, e o hdparm pode usar o resto, ou pelo menos ativá-los. A fim de acelerar a transmissão de dados, um disco rígido normalmente lê vários setores ao mesmo tempo. Quantos é capaz de entregar ao mesmo tempo é revelado pelo comando:
59
ANÁLISE | Utilitário de disco hdparm
hdparm -I /dev/sda
e está listado após R/W multiple sector transfer: Max =. Este valor deve ser também encontrado na mesma linha depois de Current =. Se este não for o caso, podemos aumentar o valor com: hdparm -m16 /dev/sda
Isto instrui o disco rígido a sempre entregar 16 setores ao mesmo tempo. Curiosamente, alguns discos rígidos executam mais lentamente com valores mais elevados: a página de manual do hdparm menciona principalmente os discos Caviar mais antigos, da Western Digital. Em tais casos, devemos reduzir o número de setores novamente ou até mesmo desativar o recurso por completo, o que é feito com:
80,48 Mbps.
À toda velocidade Muitos discos rígidos modernos permitem abrandar o movimento da cabeça, embora isso aumente o tempo de acesso, o que também irá reduzir o nível de ruído. Para saber se o seu disco rígido oferece este “modo acústico”, utilize o comando:
hdparm -m0 /dev/sda
hdparm -M /dev/sda
Além disso, unidades modernas podem obter alguns setores com antecedência (“read ahead”). Para definir quantos, utilize a opção -a (figura 4, no topo) – por exemplo:
Se um número aparecer após o sinal de igual, como mostrado na parte de baixo da figura 4, o disco pode ser colocado em um modo silencioso com:
hdparm -a256 /dev/sda
hdparm -M 128 /dev/sda
Aqui, a unidade lerá de forma antecipada os 256 setores mais propensos a serem solicitados em seguida. Valores mais elevados acima de tudo aceleram a leitura de arquivos grandes – ao custo, no entanto, de que a leitura dos menores demore mais tempo. A configuração atual é mostrada com:
Para alcançar a velocidade máxima, use o valor máximo:
hdparm -a /dev/sda
Muitas unidades também possuem um recurso adicional de leitura antecipado embutido. Portanto, como regra geral, podemos deixar a configuração no valor padrão. O quão rápidas as consultas do sistema operacional chegam à controladora do disco rígido podem ser vistas com: hdparm -c /dev/sda
O valor deve ser de 32 bits; é possível forçar este valor com a opção -c3.
60
Figura 2 Este disco rígido SATA alcançou uma velocidade média de leitura de
hdparm -M 254 /dev/sda
Valores entre 128 e 254 são permitidos, resultando em uma compensação entre o nível de ruído e a velocidade. Aliás, o kernel Linux também deve fornecer suporte ao gerenciamento acústico, o que deve ser o caso de todas as principais distribuições atuais. Algumas unidades de CD e DVD acabam por ser mais parecidas com turbinas: a rotação de alta velocidade pode dificultar o aproveitamento de áudio/vídeo. O comando: hdparm -E 4 /dev/sr0
provê um alívio nessa parte. O parâmetro 4 determina a velocidade e /dev/sr0 especifica a unidade de DVD.
Este exemplo diminui a velocidade de leitura da unidade nove vezes.
Cache de reescrita Com o cache de reescrita, o disco rígido primeiro armazena os dados a serem escritos em um buffer. Deste modo, ele pode aceitar os dados muito mais rapidamente, o que no fim leva a uma maior velocidade de gravação. O comando: hdparm -W /dev/sda
mostra se o cache de reescrita está ativo com um 1 depois do sinal de igual; caso contrário, podemos ativar o recurso com a opção -W1. Se o hdparm não permitir esta alteração, precisaremos ter certeza de que o cache de reescrita foi ativado na BIOS. No entanto, este recurso não é recomendado para todas as situações: no caso de falta de energia, os dados no buffer seriam perdidos de forma permanente. Se um programa sensível à perda de dados – como um banco de dados – está em execução no sistema, devemos desligar o cache de rescrita com a opção -W0. A documentação do banco de dados PostgreSQL explicitamente recomenda que isto seja feito.
Cheio de energia Se um disco rígido ou SSD não tem nada a fazer em um certo período de tempo, ele entra automaticamente no modo de suspensão. Este recurso de economia de energia pode ser
www.linuxmagazine.com.br
Utilitário de disco hdparm | ANÁLISE
influenciado com o parâmetro -B. Dessa forma, utilizar hdparm -B255 /dev/sda
iria desativar o gerenciamento de energia; no entanto, nem todas as unidades permitem isso. No lugar de 255, os valores entre 1 e 254 são permitidos. Um valor mais alto significa que mais energia é utilizada, mas também promete maior desempenho ou velocidade. Valores entre 1 e 128 permitem que a unidade seja deligada, enquanto os valores de 129-254 impedem que isto aconteça. Mais energia pode ser economizada com um valor 1; a mais elevada taxa de transmissão de dados (desempenho de I/O) é obtida com 254. Podemos verificar o valor atual com: hdparm -B /dev/sda
O efeito específico que os diferentes valores terão depende do próprio disco. No entanto, devemos ter em mente que muitos desligamentos não são bons para discos rígidos de desktops: cada vez que ele desliga, a unidade deve estacionar as cabeças, o que aumenta o desgaste. Consequentemente, não devemos despertar o disco rígido a cada dois segundos – o que sempre leva mais do que isso para ser feito. Podemos definir quantos segundos de ociosidade o disco rígido deve esperar antes de dormir com a opção:
por outro. O valor escolhido no exemplo, 128, encontra-se entre 1 e 240, para o qual a unidade utiliza um fator de cinco. Consequentemente, seria desligado após 640 segundos de ociosidade. De 241 para acima, o fator de multiplicação aumenta constantemente. Em 251, o período de espera é aumentado para 5,5 horas. Em 253, o valor é predefinido pelo fabricante, usualmente entre 8 e 12 horas. O valor 254 é deixado de fora; em 255, a unidade vai esperar 21 minutos e 15 segundos. Um valor 0 irá desativar o modo de suspensão completamente. Para enviar o disco rígido para suspensão imediatamente, digite: hdparm -y /dev/sda
Com um Y, a unidade entrará em um estado ainda mais profundo de suspensão. Dependendo da unidade, ela só poderia acordar de uma suspensão profunda após a reinicialização de todo o sistema.
Limpeza Os SSDs controlam a localização dos dados alocados neles de forma independente do sistema operacional. Isso pode levar à uma situação curiosa em que um arquivo foi apagado, mas o SSD ainda tem a sua antiga localização marcada como ocupada. Para remediar tais conflitos, novas versões do hdparm incluem o script wiper.sh. Digitar:
hdparm -S 128 /dev/sda
wiper.sh /dev/sda
No entanto, este valor não é só em segundos, mas um número entre 1 e 253. O disco rígido multiplica esse valor
determina quais blocos estão sendo usados e quais não estão e reporta isso ao SSD. No entanto, este script deve ser
utilizado com cautela: a documentação adverte explicitamente que os dados podem ser perdidos e desaconselha a utilização com o sistema de arquivos Btrfs. Unidades com ext2/3/4, Reiser3, e XFS devem ser montadas em modo somente leitura antes de usar o comando wiper. Seria melhor desmontar a unidade completamente ou iniciar o wiper.sh a partir de um sistema Live. Qualquer que seja o caso, o usuário deve fazer um backup do SSD de antemão e usar o script apenas em caso de emergência. Aliás, pelo fato de o wiper ser tão perigoso, algumas distribuições nem mesmo o incluem.
Exclusão segura Para conseguir maiores taxas de transferência e propagar o uso por igual nos chips de armazenamento, os SSDs também reservam algumas áreas de armazenamento (nivelamento de desgaste), de modo que simplesmente formatar um SSD raramente irá apagar todo o disco. Por isso a maioria dos SSDs oferecem um recurso chamado secure erase (exclusão segura), que faz com que a unidade esvazie todas as células de armazenamento. Isto é especialmente útil se o usuário decidir se desfazer de um SSD usado. A exclusão segura tem duas armadilhas: o hdparm só pode iniciar uma exclusão segura quando a BIOS também permite isso. Além disso, o método é considerado experimental. A documentação adverte explicitamente sobre o uso do procedimento porque, na pior das hipóteses, a exclusão segura poderia tornar o SSD inutilizável por completo. Se quiser usar o recurso de exclusão de qualquer maneira, primeiro solicite a informação de identificação com: hdparm -I /dev/sdb
Figura 3 Sem o buffer, a taxa de transmissão cai drasticamente. No meio do disco rígido de 320GB, mais perdas de velocidade são observadas.
Linux Magazine #97 | Dezembro de 2012
Em Security, a linha supported: enhanced erase deverá aparecer em algum lugar; caso contrário, o SSD não suportará a exclusão segura. Em seguida, ative o recurso de seguran-
61
ANÁLISE | Utilitário de disco hdparm
Sistemas baseados em Debian, por outro lado, leem o arquivo de configuração /etc/hdparm.conf na inicialização do sistema. Nele há uma seção para cada disco rígido com o seguinte formato: /dev/sda { ... }
Figura 4 Aqui, a leitura antecipada está definida para 256, e o gerenciamento acústico está atualmente desativado.
ça da unidade, (temporariamente) definindo uma senha como 123456: hdparm --user-master u --security-set-pass 123456 /dev/sdb
Quando solicitarmos as informações de identificação novamente, encontraremos a opção enabled em Security. Para apagar o SSD, digite: hdparm --user-master u --security-erase 123456 /dev/sdb
No processo, o hdparm também remove a senha. Todo o processo leva alguns minutos, dependendo do tamanho do SSD; durante o mesmo, nenhuma informação é fornecida. Depois, quando solicitarmos a informação de identificação, a área em Security deve voltar a parecer como era antes da definição da senha.
Relíquias No caso de discos rígidos mais velhos com um conector IDE (também chamado de PATA – Parallel ATA), devemos observar a linha using_dma na saída de identificação. Com a ajuda da tecnologia de acesso direto à memória (Direct Memory Access ou DMA), o próprio disco rígido deposita dados diretamente na memória principal. Se o flag respectivo é 0 (desligado), ele vai abrandar a transferência de dados. Ao longo dos anos, padrões cada vez mais rápidos de DMA foram introduzidos; o mais rápido pode ser ativado com o comando:
62
hdparm -d1 /dev/hda
No entanto, em alguns sistemas muito antigos, o modo DMA pode causar problemas. Depois de ativá-lo, devemos copiar alguns arquivos de teste grandes para a unidade. Se surgirem problemas ou a unidade falhar, desative o modo DMA novamente com: hdparm -d0 /dev/hda
Aliás, unidades modernas SATA sempre usam DMA. Enquanto o disco rígido está transferindo os dados solicitados, o resto do sistema pode concluir outras tarefas – mas apenas se um on aparecer depois de unmaskirq na saída de informações de identificação. Podemos forçar este modo com a opção -u1.
Valores duradouros Depois de reiniciar o sistema, todas as alterações feitas com o hdparm são perdidas. Para ativá-las permanentemente, os respectivos comandos do hdparm devem ser colocados em scripts de inicialização. Como isto é feito depende da distribuição que está em execução, mas normalmente a inclusão deve ser feita no arquivo /etc/rc.local.
Sistemas Linux modernos atribuem nomes de dispositivos aleatoriamente (sda, sdb). Para atribuir as configurações do hdparm permanentemente para uma unidade específica, use o UUID específico: /dev/ disk/ by-id/ ata-SAMSUNG_ HD103SJ_S246J1RZB00034 { … }
As configurações aparecem entre as chaves. Cada parâmetro tem o seu próprio nome. O gerenciamento acústico é definido, por exemplo, para o valor 128 com: acoustic_management = 128
Qual nome pertence a qual parâmetro do hdparm é revelado pelos comentários no início do arquivo.
Conclusão O hdparm também inclui muitos outros parâmetros que podem ser bastante perigosos. Por exemplo, muitos SSDs podem ser protegidos com uma senha, o que pode levar a perda de dados em algumas situações. Não é uma coincidência que a página do manual (man hdparm) possua uma advertência sobre esses perigos. Aliás, o hdparm é apenas uma ferramenta útil entre muitas; por exemplo, o smartmontools também é utilizado para determinar o estado de saúde de um disco rígido [2]. ■
Mais informações
Gostou do artigo? o?
[1] hdparm: http://hdparm. sourceforge.net
Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br ne.com.b
[2] smartmontools: http:// sourceforge.net/apps/ trac/smartmontools/wiki
Este artigo no nosso o site: site http://lnm.com.br/article/7952 ticle 52
www.linuxmagazine.com.br
TUTORIAL | OpenStreetMap com Potlatch 2
OpenStreetMap com Potlatch 2
TUTORIAL
Mapeamento rápido Precisa de uma ferramenta para fazer pequenas modificações no OpenStreetMap? O Potlatch 2 é uma escolha eficiente como editor rápido e é fácil de usar. por Karsten Günther
O
Potlatch 2 (ou simplesmente “P2”) é um pequeno editor para o OpenStreetMap. Quando vemos uma área no OpenStreetMap [1] e observamos que certos percursos ou pontos de interesse (POIs) estão em falta, não precisamos necessariamente executar um editor da liga principal como o Merkaator [2] ou o JOSM [3]. Ao invés disso, podemos fazer alterações diretamente no mapa através do recurso Edit (figura 1). O que o usuário precisa para alterar os mapas é obter uma conta no OpenStreetMap. Isto é feito rapidamente e não requer nada além de um endereço de email. Depois que iniciar o editor [4], surgirá uma breve introdução (figura 2). Diversas variantes do editor Potlatch 2 estão disponíveis, como por exemplo o “riding and hiking map” (mapa de equitação e caminhada) [5], graças a uma variante personalizada. Um recurso útil deste editor são os planos de fundo automáticos (figura 3), o que pode ajudá-lo a encontrar os locais corretos no mapa.
momento com o botão esquerdo do mouse. Neste caso, certifique-se de não clicar em quaisquer objetos ou percursos. Esta função logo nos mostra os limites do editor: como uma solução baseada em servidor, ele realmente precisa de uma boa conexão de Internet. Além disso, um processo em execução em outra janela/aba do navegador pode prejudicar o processamento. Podemos usar o scroll do mouse para ajustar a resolução, ou utilizar os dois botões no canto superior esquerdo no mapa. Se acidentalmente ativarmos um objeto ou criarmos um novo ponto, basta pressionar a tecla [Esc] para cancelar a ação. Alterações aciden-
tais também podem ser desfeitas usando tecla [Z] (o atalho [Ctrl]+[Z] também funciona) ou o botão Undo (desfazer). Não há nenhum atalho para Redo (refazer) atualmente, mas pelo menos existe um botão. Quando clicamos em um percurso ou objeto, este objeto é ativado; aí então é permitido movê-lo ou editá-lo (figura 4). Esta ação funciona para percursos, bem como objetos criados a partir deles, e para os objetos POI inseridos, descritos detalhadamente abaixo. Percursos existentes podem ser complementados com novos pontos rapidamente. Para fazer isso, clique no
Edição Quando executado, o editor mostra a área exibida anteriormente no mapa. Podemos mudar esta área a qualquer
66
Figura 1 O OpenStreetMap oferece aos usuários uma oportunidade direta de fazer mudanças ou inclusões, a começar pelo editor Potlatch 2.
www.linuxmagazine.com.br
OpenStreetMap com Potlatch 2 | TUTORIAL
Categoria
Significado
Compra
Lojas e armazéns
Comida e Bebida
Restaurantes, lanchonetes, quiosques etc.
Serviço
Abrigos, hospitais, cabines telefônicas, creches, etc.
Turismo
Locais para turistas, como museus, sítios arqueológicos etc.
Acomodação
Hotéis, pousadas, acomodações para pernoite e café da manhã, parques de campings
Transporte
Estações ferroviárias, aeroportos, postos de gasolina, estacionamento
Água
Açudes, ancoradouros, portos
Barreiras
Portões, postes, elevadores, cabines de pedágio
Energia
Geração de energia, usinas
Construções
Edifícios de tipos diferentes, postos de correios, jardins de infância
Uso do solo
Cemitérios, também campos, florestas etc. (não foram adequadamente suportados até agora)
Locais (no sentido de locais de moradia)
Cidades, vilas, aldeias etc.
Esporte e Lazer
Instalações desportivas, centros esportivos, parques
Feito pelo homem
Monumentos feitos pelo homem, tais como torres de rádio, silos, faróis
Tabela 1 Categorias no OSM Standard Editor.
percurso a qualquer momento. Então, mantenha a tecla [Shift] pressionada para criar um waypoint (ponto de passagem) adicional para cada clique do mouse. Podemos ampliar percursos de forma semelhante: depois de ativar o ponto final no percurso, simples cliques do mouse adicionam novos pontos. Apertar [Esc], [Enter] ou [Return] finaliza esta ação. Para criar uma nova ramificação fora de um percurso, pressione [Shift] e clique em um ponto de passagem que pertença a um caminho existente. Isto funciona para todos os objetos do tipo “caminho” – isto é, para rios, florestas (ou suas margens), lagos, e assim por diante. Selecionar vários objetos também é possível. Para fazer isso, pressione e segure a tecla [Ctrl] e clique em todos os objetos desejados. O Potlatch 2 habilita, então, os objetos. Provavelmente a ação mais importante do Potlatch 2 é a habilidade de adicionar novos objetos POI. Um exemplo poderia ser de turbinas de vento que foram recentemente colocadas em um parque eólico ou – algo que é útil para os ciclistas e os que fazem caminhadas – abrigos meteorológicos. Em cada caso, primeiro selecione uma resolução adequada para edi-
Linux Magazine #97 | Dezembro de 2012
Atalhos de Teclado
Função
Visualização d
(dim) Ofuscar a transparência das imagens de plano de fundo
t
(toggle) Alternar entre entrada de tag avançada e tag simples
/ ou #
Ativar formas sobrepostas, uma após a outra
Pg Up/ Pg Dn
Zoom
Setas
Mover a visualização do mapa
Edição p
(parallel) Criar formas através de clonagem
r
(repeat) Aplicar tags do último objeto no objeto atual
v
(inverse) Inverter o caminho selecionado
w
(way) Habilitar caminho
x
(split) Ramificar caminho
y
(simplify) Simplificar automaticamente o caminho
+
(add) tag Dia
-
(remove) Exclui o ponto de passagem atual
z
(undo) Desfaz uma ação
Delete/ Backspace
Remove o ponto de passagem atual
Shift+Delete/ Backspace
Remove o ponto de passagem atual
Geral c
Fechar o conjunto de alterações
s
Salva
Esc/ Enter
Cancela uma ação
Espaço
Ajusta o plano de fundo
h
Mostra o histórico para o objeto atual
Tabela 2 Atalhos de teclado.
67
TUTORIAL | OpenStreetMap com Potlatch 2
ção. Clicar em um espaço vazio no mapa diz ao Potlatch 2 para exibir os
objetos POI disponíveis na margem esquerda do mapa (figura 5).
Figura 2 Primeiro passos com o Potlatch 2. Uma boa conexão de Internet e um servidor do OSM que não esteja muito sobrecarregado são pré-requisitos.
Figura 3 O Potlatch 2 exibe planos de fundo com fotografia aérea (infelizmente, muitas vezes desatualizada) do Bing. Eles são úteis como um guia para a edição ou a inclusão de mais objetos.
Figura 4 Clicar em um objeto em um mapa o “habilita” para movimentação e permite que sejam especificadas novas tags ou alteradas as existentes.
68
Em seguida, podemos “pegar” o objeto com o mouse e arrastá-lo para o mapa para integrar o objeto. Alternativamente, podemos usar o mouse para arrastar um objeto existente para a posição correta. Objetos e percursos no OpenStreetMap (OSM) usam “tags” com informação explicativa adicional. Estas tags são divididas em “tags chave” (tipos de objetos) e outras tags para fazer distinções mais finas. As tags chave suportadas pelo Potlatch 2 estão listadas online [6]. Depois de posicionar o objeto POI, o Potlatch 2 muda automaticamente para o modo tag. Se o usuário inserir uma turbina eólica – use Plant (Station) em Power – o editor altera o modo para pedir que seja especificado qual tipo de planta será adicionada. O Potlatch 2 suporta duas interfaces nesta parte: o modo básico é mostrado na figura 6. Inicialmente, esta é a escolha certa. Podemos selecionar Wind em Energy source. Todas as outras tags são de menor importância e podem ser adicionadas conforme a necessidade – ou para se divertir – com a tecla [+]. A wiki [7] mostra quais tags fazem sentido para turbinas eólicas. A abordagem é semelhante para a adição de um abrigo meteorológico. Abrigos de qualquer tipo são marcados como Shelter e estão localizados no grupo Amenity. Abrigos projetados como proteção meteorológica devem ser marcados como Weather Shelter [8]. Este procedimento também é utilizado para estradas e percursos. Descrever objetos POI e percursos tão precisamente quanto for possível com as tags pode ser de grande benefício para usuários do mapa. Por exemplo, pode ser importante para os ciclistas saber se um percurso é ou não pavimentado – ou eventualmente reservado para o uso de pedestres. Podemos também usar a wiki do OSM [9] para encontrar tags apropriadas. Nem todas as informações digitadas aqui e nem todos os objetos
www.linuxmagazine.com.br
OpenStreetMap com Potlatch 2 | TUTORIAL
POI inseridos na carta irão realmente para o OpenStreetMap padrão. Muitas vezes, os objetos só serão mostrados em mapas personalizados, como mapas de equitação e caminhada.
Regras da estrada Para manter o OpenStreetMap consistente, existem algumas regras para edição que devemos seguir. Estruturas lineares, como estradas, percursos e contornos de superfícies devem ser criadas como formas, ao contrário de objetos. Com um simples clique do mouse, podemos iniciar um novo caminho em qualquer área livre do mapa. Cada clique adicional do mouse acrescenta um ponto de passagem; um clique duplo termina a linha. Se o usuário notar caminhos no mapa que não existem fisicamente, é recomendado removê-los. Selecione o caminho clicando sobre ele e exclua-o pressionando o atalho de teclado [Shift] + [Del]. A tecla [X] permite ramificar uma forma depois de ter habilitado o ponto de ramificação. Para criar percursos paralelos facilmente, aperte [P] para duplicar o caminho selecionado. Adicionar tags pode ser muito difícil para os novatos. Mas usar o editor para mapas de equitação e caminhada (figura 7) vai facilitar as coisas – caso o leitor consiga ler em alemão – especialmente para pequenos percursos que são difíceis de distinguir. Esta ferramenta oferece boas predefinições que simplificam o processo de adicionar tags. Todas as mudanças feitas com o editor são armazenadas em um “conjunto de alterações”. Esses conjuntos são enviados para o servidor do OpenStreetMap quando salvarmos o projeto ou sairmos do editor. Em ambos os casos, o Potlatch 2 oferece a opção de adicionar uma breve descrição das mudanças – algo como um título para o conjunto de alterações – de preferência em inglês (figura 8). Isto só faz com que seja mais fácil para os editores humanos corrigirem erros, mas não é algo obrigatório.
Linux Magazine #97 | Dezembro de 2012
Figura 5 O Potlatch 2 exibe os objetos POI disponíveis na margem esquerda da janela. Eles são classificados por categorias e organizados em subgrupos (tabela 1). O botão Show all (mostrar todos) diz ao Potlatch 2 para exibir todos os objetos existentes em uma categoria.
Figura 6 Objetos POI podem ser classificados com mais precisão usando tags.
Figura 7 Os mapas de equitação e caminhada usam uma versão especial de Potlatch 2, o que torna mais fácil marcar formas pequenas. Infelizmente, ele só está disponível em alemão.
O Potlatch 2 oferece ainda mais: o menu History (histórico) leva a um
registro diário, que mostra as últimas alterações no mapa. É possível en-
69
TUTORIAL | OpenStreetMap com Potlatch 2
contrar aqui muitas mudanças feitas por processamento automático. O menu Export (exportar) oferece a opção de usar uma parte do mapa que está sendo visualizada de um modo diferente (figura 9). Podemos armazenar os dados do mapa em um formato de dados XML e continuar a editar com programas externos. Também é possível armazenar o próprio mapa como um arquivo gráfico com uma escala ajustável, ou gerar o código para uma página HTML embutida mostrando parte do mapa. Os quatro menus no canto superior direito permitem personalizar o mapa para atender às necessidades do usuário: Background (planos de fundo) especifica se o Potlatch 2 deve exibir um fundo e, se sim, como fazê-lo. Na maioria dos
casos, a configuração padrão de imagens aéreas do Bing é uma boa escolha. As opções de Dim (ofuscar) e Sharpen (aumentar a nitidez) gerenciam os detalhes do plano de fundo. A última opção melhora substancialmente a visualização. O menu Options (opções) inclui um item de menu para alterar a aparência do mapa. Normalmente, não precisamos da caixa de ferramentas, e muitas vezes faz sentido escondê-la da visualização. O editor também tem uma série de atalhos de teclado (tabela 2) para várias funções.
Conclusão O Potlatch 2 é o editor do OpenStreetMap ideal para iniciantes. É fácil de usar e oferece apenas o que este público-alvo precisa. Para usuários mais experientes,
no entanto, as limitações podem superar os benefícios. Além de precisar do Flash Player, ele também requer uma conexão de Internet rápida. De qualquer forma, o programa é adequado apenas para pequenos projetos. Exibir a imagem do mapa pode ser uma desvantagem – apenas uma pequena parte ficaria visível, enquanto o resto estaria ocultado por botões. Longos tempos de carregamento quando é feita movimentação e opções de escala limitada tornam a edição de áreas maiores quase impossível. Mas, para adicionar POIs rapidamente, o Potlatch 2 é incomparável, pois não requer instalação, sendo executável no próprio navegador. ■
Mais informações [1] Site do Potlatch 2: http:// wiki.openstreetmap. org/wiki/Potlatch_2/ [2] Site do Merkaator: http:// merkaartor.be/ [3] JOSM: http://josm. openstreetmap.de/ [4] Wiki do editor: http:// wiki.openstreetmap. org/wiki/Potlatch_2/ [5] Mapa de equitação e caminhada (em alemão): http://www. wanderreitkarte.de/
Figura 8 O usuário pode adicionar um breve resumo das suas alterações ao salvar o conjunto delas.
[6] Tags chave: http://wiki. openstreetmap.org/ wiki/Map_Features/ [7] Tags para turbinas de vento: https://wiki. openstreetmap.org/wiki/ Tag:generator:source%3Dwind [8] Tags para abrigos: https:// wiki.openstreetmap.org/ wiki/Key:shelter_type [9] Wiki do OSM: http://wiki. openstreetmap.org/wiki/
Gostou do artigo? igo?
Figura 9 O recurso de exportação possibilita usar diferentes partes do mapa de formas distintas.
70
Queremos ouvir sua opinião. o nião. m Fale conosco em cartas@linuxmagazine.com.br ne.com Este artigo no nosso sso site: s e: r/artic 777 http://lnm.com.br/article/7773
www.linuxmagazine.com.br
Conversão de VHS para DVD | TUTORIAL
Conversão de VHS para DVD
TUTORIAL
Operação fita de video Evite perder preciosas lembranças e aprenda a digitalizar gravações antigas de video, armazenando-as de forma digital. por Mirko Dölle
F
itas de video não foram feitas para durar para sempre. Dependendo do tipo de fita e da forma de armazenamento, já é possível perceber os danos nos videos de família com mais de dez anos. Hora de digitalizar os tesouros antigos e, assim, mantê-los protegidos contra a inevitável degradação. Serviços como esse são oferecidos por lojas especializadas, porém o preço para a realização da tarefa costuma ser relativamente alto, dependendo do tempo de gravação e do estado de conservação da fita. Para a digitalização dos videos antigos será necessário possuir um videocassete ou uma câmera de video antiga (que suporte o tamanho da fita a ser convertida) ou um equipamento de captura de video ou ainda um receptor DVB equipado com uma entrada de vídeo analógica adicional. Equipamentos de captura de video USB baratos já existem a partir R$150,00 na Internet, mas receptores DVB com entradas de sinal analógico saem por volta de R$500,00. Testamos no Linux 14 dispositivos atualmente disponíveis comercialmente. Observamos especialmente os dispositivos sem marca e nos quais o suporte ao Linux é raramente informado. Além disso, os chipsets montados mudam com frequencia, de modo que ninguém pode
Linux Magazine #97 | Dezembro de 2012
saber o nome do modelo, tornando difícil a busca por relatórios de uso atualizados na Internet. Como diz o ditado popular, é bem capaz de você comprar gato por lebre. No caso dos produtos de marca, as mudanças dos requisitos técnicos durante a produção raramente acontecem, mas caso exista alguma, normalmente o fabricante designa o produto de forma ligeiramente diferente. Para quem acha muito o esforço de comprar o equipamento de captura, testar em casa e, se não funcionar, retornar o equipamento, é melhor comprar logo um dispositivo de alguma marca conhecida. O Linux cria para cada equipamento de captura de video um dispositivo /dev/videoX, que pode ser acessado pelo VLC Player, por exemplo. Para isso, inicie o VLC e selecione a opção Abrir dispositivo de gravação no menu Mídia. O modo de gravação correto para quase todos os equipamentos de captura é Video para Linux 2. Como Dispositivo de Video, digite o nome do equipamento de captura, normalmente /dev/video0. Com o dispositivo de audio a história é um pouco mais complicada: neste caso o VLC espera pela típca notação Alsa, algo do tipo hw:2,0 para a primeira saída da placa 2. O comando arecord -l lista o número
da placa que foi atribuída à entrada de audio do seu equipamento de captura de video: como podemos ver na figura 1, o Linux conectou a TerraTec Grabby como placa de audio 2 – sendo assim, a especificação correta do equipamento no VLC seria, neste exemplo, hw:2,0. Se a entrada de audio do seu equipamento de captura não funcionar, simplesmente conecte o cabo de audio na placa de som e digite seu nome de dispositivo no VLC. Como nosso teste mostra, o suporte ao Linux pelos equipamentos de captura e receptores DVB com entradas de video analógico é bastante misto: mesmo os modelos disponíveis há tempos no mercado são por vezes apenas parcialmente ou não suportados. As causas de problemas mais frequentes são a falta de arquivos de firmware e versões do núcleo do sistema desatualizados. Todos os receptores DVB e equipamentos de captura USB atualmente disponíveis exigem arquivos de firmware especiais, que precisam ser carregados na inicialização do microprocessador no dispositivo para que ele possa sempre trabalhar corretamente. No Windows, isso é feito durante a instalação dos controladores de dispositivo, que também contém o firmware. No Linux, o núcleo assume essa tarefa – dependendo da distribuição
71
TUTORIAL | Conversão de VHS para DVD
a oferta de arquivos de firmware varia bastante. Particularmente o Debian tem poucos disponíveis, já que o projeto só recebe firmwares livres na distribuição. Por outro lado, no Ubuntu é possível instalar o pacote linux-firmware, que disponibiliza uma grande variedade deles. Uma vez que ambos usam pacotes .deb, usuários do Debian podem simplesmente baixar o pacote a partir de um repositório do Ubuntu e instalar no Debian. Também no OpenSuse a instalação de arquivos de firmware é bem transparente, portanto mesmo nesta distribuição você deveria recorrer ao pacote do Ubuntu. Como o OpenSuse usa o formato de pacote .rpm, é possível simplesmente instalar o pacote dev. Será preciso descompactá-lo primeiro com o comando ar x linux-firmware. deb – os arquivos de firmware poderão então ser encontrados no arquivo data. tar.gz e deverão ser copiados para o diretório /lib/firmware. Entretanto a coleção de firmwares do Ubuntu também está longe de ser completa. A primeira pista para um pacote de firmware que está faltando é quando não há nenhum dispositivo de video em /dev/video0 ou quando recursos individuais não funcionam, como, por exemplo, a entrada de audio. Então, é necessário verificar os arquivos de relatório de erros em /var/log/ syslog ou /var/log/messages e procurar pelo termo firmware. Mensagens como Could not load firmware file, firmware seems to be missing ou re-quest_firmware unable to locate são sinais claros de que um arquivo de firmware está
mesmo faltando. O nome do arquivo indisponível normalmente aparecerá imediatamente antes ou depois da mensagem de erro, como abaixo: drxk: could not load firmware file dvb-usb-Hauppauge-hvr930c-drxk.fw.
Procure pelo nome do arquivo do firmware em um mecanismo de busca e você vai encontrar quase sempre de forma rápida uma fonte para baixá-lo. As vezes será preciso extrair o firmware, no entanto, do controlador do Windows. Você pode achar instruções apropriadas para praticamente todas as placas receptoras padrão DVB e muitos outros dispositivos de video no Wiki LinuxTV [1]. Algumas vezes, a razão para que o dispositivo não funcione não é exatamente o firmware, mas a falta de controladores atualizados ou insuficientes no núcleo do sistema. Para dispositivos USB, isso pode ser detectado de forma muito simples: primeiro digite em um terminal, como usuário root, o comando tail -f /var/log/syslog, e então se conecte ao dispositivo. O núcleo deverá sinalizar um novo dispositivo USB e deve começar a inicialização do controlador – o que normalmente gera dúzias de novas mensagens de log. Se, ao invés disso, surgirem apenas algumas linhas simplesmente anunciando um novo dispositivo USB, é bem provável que esse equipamento específico ainda não seja suportado pelo núcleo em execução. Isto acontece porque, entre outros motivos, o
Figura 1 O programa arecord mostra uma lista com todos os dispositivo de audio e seus respectivos números de placa. Com ele é possível determinar o nome do dispositivo a ser usado com o VLC.
72
projeto LinuxTV dos desenvolvedores do Video-4-Linux sempre ficam para trás na lista de prioridades do desenvolvimento do núcleo principal. Portanto, pode valer a pena baixar os controladores mais recentes do LinuxTV direto do Git e compilar você mesmo. Isso não é muito difícil graças aos guias existentes, mas requer que o computador esteja com pelo menos algum ambiente de desenvolvimento instalado – no Debian e no Ubuntu você precisa instalar pelo menos os pacotes build-essentials e git-core, junto com todas as dependências e, posteriormente, todos os pacotes de desenvolvimento restantes como usuário root pelo comando apt-get build-dep linux. Finalmente, descarregue os códigos-fonte para seu computador, compile-os e instale-os com as seguintes linhas de comando: git clone git://linuxtv.org/ media_build.git cd media_build && ./build make install; make load
A última chamada do comando make garante que o módulo controla-
dor que acabamos de compilar seja carregado. Isso nem sempre funciona, como quando uma versão desatualizada do mesmo controlador já esteja em execução. Para ter certeza de que tudo estará em funcionamento, o melhor é reiniciar o computador. Também é recomendado que você faça uma cópia de segurança dos módulos controladores originais do núcleo do sistema antes de sua troca. Para isso, simplesmente crie uma cópia do diretório inteiro de módulos do núcleo em curso no âmbito /lib/modules – desta forma você poderá mais tarde reaver os controladores antigos e reinstalá-los caso um dos módulos experimentais do LinuxTV contenham um erro e seu trabalho fique paralisado devido a um dispositivo ainda não suportado.
Interno ou externo? A principal vantagem dos equipamentos de captura de video USB é que eles estão a alguns centímetros do campo de
www.linuxmagazine.com.br
Conversão de VHS para DVD | TUTORIAL
interferência do PC e, por isso, não há emissões de radiação de alta frequencia de outros componentes do sistema na parte receptora analógica do equipamento de captura. Um cabo USB curto entre o equipamento de captura e a câmera de video ou o videocassete também garantem que haverá pouca interferência por radiação no ambiente, o que pode afetar a qualidade final da imagem. Pela mesma razão, você também não deve necessariamente colocar o telefone próximo aos cabos de video enquanto estiver gravando. A não ser que você precise necessariamente de receptores DVB para o seu computador pessoal e que digitalize videos apenas ocasionalmente, recomenda-se a compra de um equipamento de captura USB. Se sua fonte de video possuir uma saída S-Video, você deveria sem sombra de dúvida dar preferência a ela, pois a imagem é muito melhor do que o sinal de video composto do conector RCA. O sinal de audio é enviado, em todos os casos, por conectores RCA através do equipamento de captura de video ou por um plugue P2 através da placa de som. Depois de conectar o videocassete e o computador com um cabo, você precisa endereçar o equipamento de captura de video à entrada de video utilizada. Depois de reiniciar o sistema, todos os equipamentos usam por padrão a primeira entrada, que normalmente é o sintonizador de TV analógico ou entrada composta. Uma lista das entradas de video disponíveis pode ser fornecida pelo comando v4l2-ctl -n. Para mudar o equipamento de captura (figura 2) para a entrada 1, digite o seguinte comando: v4l2-ctl --set-input 1
Restam agora apenas alguns cliques até o ato de digitalizar os videos com o VLC: escolha a opção Controle Avançado a partir do menu Visualizar, a fim de que o VLC mostre seus botões com recursos adicionais, incluindo o
Linux Magazine #97 | Dezembro de 2012
Figura 2 A mudança da fonte de video no dispositivo de captura pode ser feita através da linha de comando. É possível conferir as entradas de video disponíveis com o comando v4l2-ctl.
recurso de gravação. A clicar nele, o VLC mostrará o fluxo de dados para o disco de armazenamento. É possível escolher uma pasta de gravação personalizada nas configurações do VLC, caso necessário. O padrão é a pasta de videos dentro da pasta pessoal do usuário. O VLC salva, para cada gravação, um arquivo AVI separado nomeado de vlc-record seguido da data, hora e fonte de gravação. Os videos salvos não são comprimidos e por isso usam cerca de 20 MB de dados para cada segundo de video. Para cortar, editar ou converter os videos, os melhores programas são o AviDemux, o Kdenlive e o PiTiVi. Para compilar vários videos em um DVD, recomenda-se o programa DeVeDe. É importante que, antes de digitalizar todos os videos seja verificado se há possíveis problemas de audio, como um zumbido no filme, e que você precisará resolver antes de continuar. Este zumbido pode ser causado por diferentes potências de massa entre os vários dispositivos, por serem ligados a circuitos diferentes na casa ou operados em pontos muito distantes, mas ligados por um cabo a partir de um para o outro. Na prática, é geralmente suficiente colocar o videocassete ou a câmera no mesmo filtro de linha do PC. Além dis-
so você deve também remover todos os cabos do dispositivo de captura de video ligados a outros equipamentos, que também podem estar causando o zumbido. No entanto, algumas vezes os próprios transformadores de lâmpadas halógenas são a causa; ao desligá-los, o zumbido desaparece e você pode começar a reproduzir os videos em seu computador. Ao digitalizar suas antigas fitas de video você afasta o perigo iminente de perda, mas os DVDs e discos rígidos também não armazenam os dados para sempre. É preciso fazer cópias desse material de tempos em tempos para garantir sua longevidade. Ainda assim, é muito mais fácil manter seus filmes de forma permanente após digitalizá-los, afinal agora você pode criar quantas cópias quiser sem qualquer perda de qualidade. ■
Mais informações [1] Wiki LinuxTV: http:// linuxtv.org/wiki/
Gostou do artigo? igo? Queremos ouvir sua opinião. o nião. m Fale conosco em cartas@linuxmagazine.com.br ne.com Este artigo no nosso sso site: s e: r/artic 796 http://lnm.com.br/article/7962
73
PROGRAMAÇÃO | Linguagem Go
PROGRAMAÇÃO
Linguagem Go
Sem exageros Projetada para a programação de sistema, a linguagem Go, criada pelo Google, faz o trabalho sem grandes sofisticações. Uma boa opção para quem é alérgico a exageros. por Oliver Frommel
A
linguagem Go não faz falsas promessas. Talvez seja exatamente o que a torna tão interessante a longo prazo. Em 2007, Robert Griesemer, Ken Thompson e Rob Pike inventaram o Go por estarem descontentes com as linguagens de programação de sistemas existentes. Eles não cederam a qualquer das tendências atuais como programação online assíncrona ou computação em nuvem; ao invés disso, aprenderam com a experiência de 30 anos com o C e criaram uma linguagem de programação capaz de se tornar sua sucessora. Como o C, o Go [1] mostra a sua força na programação do sistema, embora a linguagem possa ser implementada para praticamente qualquer finalidade. Os inventores da linguagem são funcionários do Google, e o Go fez o seu caminho até o Google App Engine assim como o Java e o Python; no entanto, o suporte ao Go está atualmente em fase experimental [2].
74
Promessa futura No início de 2008, Thompson completou seu primeiro compilador experimental, que gera o código C. Ian Taylor começou um pouco mais tarde, trabalhando em uma interface Go para o compilador GCC. Perto do fim daquele ano, Russ Cox juntou-se ao projeto Go e o trabalho caminhou um pouco mais rápido. Em novembro de 2009, a equipe finalmente apresentou a primeira versão pública do compilador Go. Em março de 2012, a versão 1.0 e a especificação foram liberados, prometendo compatibilidade com as futuras versões do Go [3]. Portanto, a linguagem agora é adequada para projetos de software genuíno e não apenas experiências. Os objetivos declarados do projeto Go são: compilação eficiente, execução rápida e programação simples. As linguagens existentes não conseguem combinar os três, dizem os inventores do Go, que se propõe a combinar a programação
simples oferecida por linguagens cada vez mais populares como Python e Ruby com a eficiência e confiabilidade de outras mais “veteranas” como C, C++ e Java. Ao fazer isso, a compilação não vai demorar tanto tempo como em projetos Java, por exemplo. Além disso, a linguagem Go visa lidar com dependências entre bibliotecas externas de uma forma superior. A simplicidade é uma das principais características do Go; seus inventores a criaram sem muitas construções. Em primeiro lugar, o Go tem como premissa uma sintaxe consistente e inequívoca. O mesmo não pode ser dito de linguagens como Perl, Ruby ou Scala, que usam uma variedade de construções sintáticas ou métodos para um único e mesmo propósito. O Go é orientado em C mas omite muitos elementos que, de forma redundante, cumprem a mesma finalidade. Por exemplo, o Go utiliza apenas a variante Postfix
www.linuxmagazine.com.br
Linguagem Go | PROGRAMAÇÃO
Figura 1 Um tour no site oferece aos usuários uma boa primeira impressão da linguagem Go.
do operador de incremento ++, que fica atrás da variável. Ao mesmo tempo, esta é apenas uma indicação e não uma expressão que pode ser usada imediatamente abaixo. Embora isto leve a um pouco mais de tipagem, garante semânticas claras e menos confusão. Programas Go são feitos de modo ainda mais claro por meio de empréstimos de linguagens estruturadas como Pascal, Modula e Oberon. Em parte, a sintaxe Go foi feita em Newsqueak e limbo. Esta última é a linguagem de programação do sistema operacional Inferno que, por sua vez, é uma ramificação do sistema Plan9, no qual Thompson e Pike trabalharam anteriormente.
Claramente formatada Por exemplo, o Go trabalha sem ponto e vírgula para completar instruções (figura 1). Embora vírgulas sejam parte da especificação da linguagem, o analisador as adiciona de forma independente, da forma como a especificação do JavaScript faz. Para que isto funcione, os programadores precisam manter o estilo de abertura de chaves especificado, a qual afirma
Linux Magazine #97 | Dezembro de 2012
que a abertura de chaves em um bloco aparece sempre no final de uma linha e não no início da linha seguinte. A ferramenta gofmt fornece com os pacotes a verificação desta formatação, eliminando a necessidade de o programador fazê-la e garantindo que o código Go tenha a mesma aparência em todos os projetos. As variáveis são declaradas com a palavra-chave var, seguida do nome da variável e do tipo, isto é, na ordem contrária do C, C++, ou Java: var x float64
Os nomes de variáveis podem começar com qualquer caractere considerado como uma letra no padrão Unicode. O operador := permite definir e inicializar variáveis de uma só vez. A palavra-chave var pode ser omitida aqui, como na maioria das especificações de tipo: i := 1 pi := 3.142
Os desenvolvedores Go também optaram por uma radical limpeza quando se trata de loops – se olharmos mais de perto, normalmente todos os whiles, do untils, foreachs, e assim por diante podem ser reformulados.
O Go tem apenas um ciclo: o bom e velho loop for.
Tipos A partir da crescente popularidade de linguagens como Python e JavaScript, os desenvolvedores deduziram que um sistema de tipos simples tende a promover a popularidade de uma linguagem de programação. Como Robert Griesemer coloca: “os sistemas de tipo desajeitado conduzem as pessoas para linguagens com tipagem dinâmica” [4]. No entanto, eles não estavam preparados para sacrificar a confiabilidade que as linguagens fortemente tipadas oferecem. O compromisso clássico no Go é que tipagem forte seja implementada com a inferência do tipo – isto é, qualquer variável tem um tipo fixo, mas o programador não precisa especificá-lo se o compilador naturalmente entender o tipo. Ao mesmo tempo, o Go não tem uma hierarquia de tipo rigorosa. Na visão dos desenvolvedores, isso torna a implementação de compiladores e ferramentas mais complicado e leva a discussões intermináveis sobre a configuração concreta da hierarquia. Em vez disso, o Go oferece tipos
75
PROGRAMAÇÃO | Linguagem Go
importantes, como arrays e mapas (hashes) no núcleo da linguagem. Ponteiros também existem, mas são mais parecidos com aqueles em Pascal (isto é, sem a aritmética típica do ponteiro da linguagem C). Tipos genéricos que se tornaram populares no C++, Java, e Python não são suportados no Go, mesmo que os desenvolvedores admitam que possam ser úteis, e sua implementação não está inequivocamente descartada em algum momento no futuro distante. No entanto, o Go suporta programação orientada a objetos; a abstração para isto são interfaces, mas a interface em Go difere de suas contrapartes em Java ou Objective C. Uma interface especifica um conjunto de métodos que implementam “objetos” para cumprir uma determinada função, sem pertencer a uma classe comum. Além disso, o Go não tem exceções porque elas causam mudanças incontroláveis no fluxo do programa. Como alternativa, a linguagem oferece valores de retorno múltiplos para funções, que podem usar um mecanismo curinga para capturar valores de erro. A linha 2 da listagem 1 mostra uma chamada para os.Create(), que ao mesmo tempo retorna o identificador de arquivo e um código de erro.
Ferramentas O interessado em programar na linguagem Go normalmente só precisa instalar o compilador; as distribuições mais recentes do Linux já o possuem em seus sistemas de gerenciamento de pacotes. Para instalar no Ubuntu 12.04, digite: apt-get install golang
Outros sistemas operacionais, incluindo Windows e Mac OS X, têm distribuições binárias do pacote Go. Após a instalação, seu disco rígido irá conter (dependendo da
76
Figura 2 Alguns dos pacotes Go.
arquitetura do processador) os comandos 6a, 6c, 6g e 6l - ou os seus homólogos com os dígitos 5 ou 8. As seis ferramentas são para processadores AMD64, a série 5 são para processadores 368, e a série 8 são para processadores ARM. Os nomes estranhos são herdados do Plan9, que utiliza esses dígitos para identificar as arquiteturas de processadores. Convenientemente, na prática, não temos que nos preocupar com esses detalhes e podemos simplesmente utilizar o frontend go. Também vale a pena mencionar que objetos gerados pelo compilador com a extensão .6 contêm referências a todos os módulos utilizados, que o vinculador segue depois.
Isto evita o problema de ter de encontrar as bibliotecas adequadas, além dos arquivos de cabeçalho, e especificá-los durante o processo de vinculação, como é o caso do C e do C++. Se um programa Go é construído, o compilador pode também vinculá-lo. Isto significa que os problemas de vinculador bem conhecidos são coisa do passado. O Go também lida com a tarefa de makefiles. Se o usuário tiver instalado o Go corretamente, deve ser capaz de executar o comando go no console: $ go version go version go1
Listagem 1: Tratamento de erros 01 02 03 04 05 06 07 08 09 10 11
for try := 0; try < 2; try++ { file, err = os.Create(filename) if err == nil { return } if e, ok := err.(*os.PathError); ok && e.Err == syscall.ENOSPC { deleteTempFiles() // Recover some space. continue } return }
www.linuxmagazine.com.br
Linguagem Go | PROGRAMAÇÃO
Se a instalação do Go não foi adicionada automaticamente ao PATH para arquivos executáveis, devemos apontar a variável de ambiente GOROOT para o diretório pai e em seguida adicionar $GOROOT/bin ao PATH. Pelo fato de programas Go compilarem muito rapidamente, eles são bem adaptados para chamar scripts, com certas limitações – isto é, como uma espécie de “faça-você-mesmo”, compilação no tempo exato. A ferramenta Gorun oferece suporte a este processo [5].
Avançado Apesar de remover muitas características encontradas em outras linguagens, o Go acrescenta características modernas desejadas pelos programadores, tais como fechamentos, que no Go são funções anônimas que salvam o ambiente. A linguagem atinge o objetivo declarado de programação simples para sistemas multicore – o Go foi desenvolvido na era pré-nuvem, quando processadores multicore eram o considerados o “Santo Graal” – com uma abstração chamada goroutines, que segue o modelo de processos de comunicação sequenciais (communicating sequential processes, ou CSP) para facilitar a programação sujeita a erros com threads [6]. Para ler mais, confira o documento online “Go Efetivo”, que mostra algumas soluções “idiomáticas” [7]. Uma variedade de livros sobre Go foram publicados, e mais ajuda está disponível na lista de discussão golang-nuts (a lista golang-dev é destinada a desenvolvedores do
compilador). Por fim, uma dica para a pesquisa online para recursos Go: em vez de digitar “go” como o termo a ser pesquisado, use sempre “golang”. Localmente, poderemos ler toda a documentação no navegador se iniciarmos o servidor de documentação, digitando godoc -http=:8000
O Go vem com uma variedade de bibliotecas (figura 2); é possível encontrar a lista completa em vários sites [8][9][10]. Os maiores projetos implementados em Go incluem o servidor online Falcore [11] e o software StatHat [12].
Conclusão A linguagem Go é madura e, graças à compatibilidade futura prometida pelos desenvolvedores, é adequada para projetos de software profissionais. Além disso, os tem-
pos curtos de compilação são úteis para grandes projetos. A redução no escopo da linguagem a torna relativamente fácil de aprender e mantém código de terceiros fácil de ler, o que acabará por beneficiar a manutenção de qualquer parte do software. O preço para essa redução ao essencial é a ausência de recursos como classes baseadas na orientação a objetos, que muitos programadores estão acostumados a ter. O Go oferece vários recursos que permitem desenvolvimento orientado a objeto, mas requer alguma acomodação de novos conceitos. O Go está previsto para ser implementado em um número crescente de projetos, especialmente na área de programação de sistema, mas suporte no Google App Engine também pode torná-la interessante para uso em programação online. ■
Mais informações [1] Go: http://golang.org/ [2] Go no Google App Engine: https://developers. google.com/appengine/docs/go/ [3] Post sobre o lançamento da primeira versão do Go: http:// blog.golang.org/2012/03/go-version-1-is-released.html [4] Robert Pike no GoogleTechTalks: http://www. youtube.com/watch?v=rKnDgT73v8s [5] Gorun: http://wiki.ubuntu.com/gorun/ [6] CSP: http://www.usingcsp.com/cspbook.pdf [7] Go Effective: http://golang.org/doc/effective_go.html [8] Bibliotecas escritas em Go puro: http://golang.cat-v.org/pure-go-libs/ [9] Biblioteca bindings para Go: http://go-lang. cat-v.org/library-bindings/
Gostou do artigo? o?
[10] Projetos externos Go: http://godashboard.appspot.com/
Queremos ouvir sua a opinião. Fale conosco em cartas@linuxmagazine.com.br zine.com.
[11] Falcore: http://ngenuity.ngmoco.com/2012/01/ introducing-falcore-and-timber.html
Este artigo no nosso so site: sit http://lnm.com.br/article/7949 articl 949
[12] Construindo StatHat com Go: http://blog.golang. org/2011/12/building-stathat-with-go.html
Linux Magazine #97 | Dezembro de 2012
77
Calendário de eventos
SERVIÇOS
Evento Campus Party 2013
/sys/dev
Web Expo Forum
Gartner Data Center Summit
BITS 2013
Data 28 de janeiro a 3 de fevereiro
2 e 3 de março
3 e 4 de abril
9 e 10 de abril
14 a 16 de maio
Índice de anunciantes Local São Paulo, SP
São Paulo, SP
São Paulo, SP
São Paulo, SP
Porto Alegre, RS
Informações http://www.campus-party. com.br/2013/index.html
http://www.linuxnewmedia. com.br/sysdev/
http://www.webexpoforum. com.br/
http://www.gartner.com/ technology/summits/ la/data-center/
http://www.bitsouthamerica. com.br/
Empresa
Pág.
IBM
02
Senac
07
Central Server
11
Locaweb
13
Impacta
15
Plusserver
18, 19
TeHospedo
31
UOL Host
45
Vectory
57
c’t
80
WatchGuard
83
Locaweb
84
Já chegou ao Brasil a maior revista da Europa pa de informática e tecnologia ogia
computação e tecnologia Adquira o seu exemplar pelo site
www.lnm.com.br/shoppingg 80
www.linuxmagazine.com.br
Conheça a coleção Academy da Linux New Media Os livros da Coleção Academy são roteiros práticos e objetivos, com didática adequada tanto ao profissional quanto ao estudante da área de TI.
Luciano Antonio Siqueira
Infraestrutura de Redes Passo a passo da montagem de uma rede de computadores, desde o cabeamento e roteadores até a configuração das máquinas clientes.
Configuração e manutenção de serviços essenciais como DNS, compartilhamento de arquivos e acesso remoto.
Paulo Henrique Alkmin da Costa
Luciano Antonio Siqueira
Samba:
Máquinas virtuais com VirtualBox
com Windows e Linux Como permitir a comunicação de diferentes sistemas operacionais em rede: Windows, Linux, Mac OS X etc. Definição de compartilhamentos de arquivos, impressoras – incluindo a instalação automática de drivers – e utilização do Samba como controlador de domínio (PDC) também para clientes Windows Vista e Windows 7.
O conteúdo e o formato dos livros foram desenvolvidos a partir da experiência prática e educacional de seus autores, com foco principal no desenvolvimento de competências, através de conceitos, exemplos detalhados e dicas de quem realmente entende do assunto. O material é indicado tanto para autodidatas que desejam se aperfeiçoar quanto para utilização em escolas. O professor irá se sentir confortável para desenvolver as atividades a partir do livro, que procura atender tanto à expectativa do aprendiz quanto à demanda profissional do mercado de TI.
Disponível no site www.LinuxMagazine.com.br
Administração de infraestrutura de máquinas virtuais com Sun VirtualBox®. Como trabalhar com sistemas operacionais – Windows, Linux etc – na mesma máquina e simultaneamente.
Criação de diferentes modalidades de conexões virtuais, exportação/importação de máquinas virtuais e criação de pontos de recuperação (snapshots).
PREVIEW
Linux Magazine #98 Windows 8 A Microsoft está lançando uma nova versão do Windows e nós estamos lançando uma nova edição da Linux Magazine, que ajudará o administrador de redes e sistemas a interoperar entre o novo sistema operacional da Microsoft e o Linux. Aprenda a trabalhar com Windows 8 e Samba em redes mistas, criar um ambiente dual boot com Linux e Windows 8 e saiba ainda como utilizar sistemas de arquivos Linux com esta nova versão do Windows. ■
Admin Magazine #09 OpenStack Capaz de gerenciar os componentes de múltiplas instâncias virtualizadas, o OpenStack é um dos queridinhos dos profissionais de infraestrutura e virtualização da atualidade. É livre, não possui restrições quanto à quantidade de instâncias e é uma plataforma robusta, extremamente útil nestes tempos onde o advento da computação em nuvem já é uma realidade. Na próxima edição da Admin Magazine você vai conhecer tudo o que essa incrível ferramenta pode fazer por você! Não perca!
82
www.linuxmagazine.com.br