https://gustavokalau.com.br/
quinta-feira, 6 de fevereiro de 2025
quarta-feira, 15 de janeiro de 2025
O comando join
O comando join
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 12 de janeiro de 2025
Fonte: https://www.dicas-l.com.br/
O comando join no Linux é uma ferramenta poderosa para combinar linhas de dois arquivos com base em um campo comum. É particularmente útil quando você precisa mesclar dados de diferentes fontes.
A sintaxe básica do comando é:
$ join [OPÇÕES] ARQUIVO1 ARQUIVO2
O join funciona comparando os campos especificados em ambos os arquivos e, quando encontra uma correspondência, combina as linhas dos dois arquivos. Por padrão, ele usa o primeiro campo de cada arquivo como chave de junção.
É importante notar que, para o join funcionar corretamente, os arquivos devem estar ordenados pelo campo de junção. Vamos explorar alguns exemplos práticos para entender melhor como o join funciona.
Imagine que temos dois arquivos: funcionarios.txt e salarios.txt.
O arquivo funcionarios.txt contém:
1 João
2 Maria
3 Pedro
E o arquivo salarios.txt contém:
1 3500
2 4000
3 3800
Para juntar estes arquivos, usamos o comando:
$ join funcionarios.txt salarios.txt
O resultado será:
1 João 3500
2 Maria 4000
3 Pedro 3800
Agora, vamos considerar um cenário onde o campo de junção não é o primeiro. Temos um arquivo departamentos.txt:
RH 1 João
TI 2 Maria
MKT 3 Pedro
Para juntar este arquivo com salarios.txt, usamos:
$ join -1 2 -2 1 departamentos.txt salarios.txt
O resultado será:
1 RH João 3500
2 TI Maria 4000
3 MKT Pedro 3800
O join também permite incluir linhas que não têm correspondência. Imagine que temos um arquivo funcionarios_extra.txt:
1 João
2 Maria
3 Pedro
4 Ana
Para incluir todos os funcionários, mesmo os sem salário, usamos:
$ join -a 1 funcionarios_extra.txt salarios.txt
O resultado será:
1 Joãoo 3500
2 Maria 4000
3 Pedro 3800
4 Ana
Podemos também formatar a saída do join. Por exemplo:
$ join -o 1.2,2.2,1.1 funcionarios.txt salarios.txt
Isso resultará em:
João 3500 1
Maria 4000 2
Pedro 3800 3
O join também pode ignorar diferenças de maiúsculas e minúsculas. Se tivermos um arquivo nomes.txt:
1 JOÃO
2 MARIA
3 PEDRO
Podemos usar:
$ join -i nomes.txt salarios.txt
E o resultado será:
1 JOÃO 3500
2 MARIA 4000
3 PEDRO 3800
Algumas dicas adicionais: se os arquivos não estiverem ordenados, você pode usar o comando sort antes do join.
Por exemplo:
$ join <(sort funcionarios.txt) <(sort salarios.txt)
Para juntar múltiplos arquivos, você pode usar o join em cascata:
$ join funcionarios.txt salarios.txt | join - departamentos.txt
E se seus arquivos usarem um delimitador diferente, como vírgulas em arquivos CSV, você pode especificar isso com a opção -t:
$ join -t, funcionarios.csv salarios.csv
O comando join é uma ferramenta versátil para combinar dados de diferentes arquivos no Linux. Com prática, você pode usá-lo para realizar operações complexas de mesclagem de dados diretamente no terminal. Lembre-se sempre de verificar se os arquivos estão ordenados corretamente pelo campo de junção antes de usar o join, para garantir resultados precisos e evitar problemas comuns.
quinta-feira, 20 de maio de 2021
Redução do tamanho de vídeos para postagem em redes sociais
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 29 de junho de 2020
A maioria das redes sociais impõem limites ao tamanho de vídeos publicados. O Whatsapp, por exemplo, impõe um limite de 64MB aos arquivos enviados.
Como então converter os vídeos para que se adequem às normas das diferentes redes?
A solução é recorrer mais uma vez ao poderoso ffmpeg.
Entender todas as opções deste programa é tarefa para uma vida inteira, mas para reduzir o tamanho de um vídeo, sem perda de qualidade, a sintaxe do ffmpeg é muito simples:
terça-feira, 26 de março de 2019
O "Jamming"
domingo, 3 de fevereiro de 2019
Automatização de tarefas com crontab e cron
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 19 de janeiro de 2018
Sem sombra de dúvida, um complemento fundamental para shell scripts, é a possibilidade de agendamento de tarefas. Com este recurso, propiciado pelos aplicativos cron e crontab, a tarefa de administração de sistemas fica grandemente facilitada. Eu mantenho cinco portais (Dicas-L, Contando Histórias, Aprendendo Inglês, Inglês Instrumental e o portal do Instituto de Desenvolvimento do Potencial Humano). Todas as tarefas de manutenção destes portais são feitas por meio de shell scripts, com execução automatizada por meio do cron. O envio das mensagens, a publicação das páginas, o backup do banco de dados, a cópia de segurança de todo o portal para outro servidor, a verificação da taxa de ocupação de espaço em disco, alertas em caso de uso excessivo de CPU e muito mais. Em suma, automatizei tudo que pude, caso contrário seria impossível cuidar de tantos portais.
A automatização de tarefas em sistemas GNU/Linux é feita por meio de dois programas: crontab e cron. Além destes programas, temos também, para cada usuário, um arquivo chamado crontab, que é o local onde são gravadas as diretivas que serão seguidas pelo cron. O arquivo crontab é editado pelo comando crontab. Os arquivos crontab dos usuários são gravados no diretório /var/spool/cron/crontabs.
O formato do arquivo crontab
Uma linha do arquivo crontab possui o seguinte formato:
0 6 * * * comandoOs cinco primeiros campos determinam a periodicidade de execução do comando. Abaixo segue uma explicação do significado de cada um destes campos:
| Campo | Significado | Valores |
|---|---|---|
| 1 | Minutos | 0 a 59 |
| 2 | Hora | 0 a 23 |
| 3 | Dia do mês | 1 a 31 |
| 4 | Mês | 1 a 12 |
| 5 | Dia da semana | 0 a 7, sendo que os números 0 e 7 indicam o domingo |
| 6 | Comando a ser executado | qualquer comando válido do sistema |
0 20 * * 1-5 comandoO comando será executado de segunda a sexta (1-5), exatamente às 20h.
10 10 1 * * comandoO comando será executado às 10h10, do dia 1º de todos os meses.
0,10,20,30,40,50, * 31 12 * comando
No dia 31 de dezembro, o comando será executado a cada dez minutos, o dia inteiro. Sempre que um campo for preenchido com o asterisco, significa que aquele campo assumirá todos os valores possíveis.
Podemos abreviar esta notação, em vez de especificar cada um dos minutos, podemos fazer da seguinte forma:
*/10 * 31 12 * comando
Os dias da semana podem também ser indicados por sua abreviação: sun, mon, tue, wed, thu, fri, sat.
Prosseguindo ...
* * * * * comando
Esta linha da crontab fará com que o comando seja executado todos os minutos, de todos os dias, de todos os meses. É apenas um exemplo, não faça isto, a não ser que tenha uma razão muito boa para tal.
Isto é o básico, mas o aplicativo cron oferece mais alguns recursos muito úteis. A tabela abaixo relaciona mais alguns parâmetros que podemos usar na crontab com seu significado:
| Parâmetro | Descrição | Equivale a |
|---|---|---|
@reboot | ocorre ao iniciar o computador | — |
@yearly | ocorre 1 vez ao ano | 0 0 1 1 * |
@annually | o mesmo que @yearly | 0 0 1 1 * |
@monthly | ocorre 1 vez ao mês | 0 0 1 * * |
@weekly | ocorre 1 vez na semana | 0 0 * * 0 |
@daily | Executa uma vez ao dia | 0 0 * * * |
@midnight | mesmo que @daily | 0 0 * * * |
@hourly | ocorre 1 vez a cada hora | 0 * * * * |
A diretiva @reboot é particularmente útil, pois em cada sistema nós temos tarefas que precisam ser executadas quando da inicialização da máquina e este parâmetro é um atalho muito conveniente para representar estas atividades.
Para utilizar estes parâmetros, bastam dois campos: o parâmetro em si e o nome do comando. Por exemplo, para executar o backup do banco de dados diariamente, acrescente a seguinte linha ao arquivo crontab:
@daily /usr/local/bin/db_backup.sh
O script db_backup.sh deve ser criado pelo administrador com as diretivas apropriadas para o backup do banco de dados.
Importante, se o seu computador não estiver no ar quando do horário da execução do comando, o cron não fará um novo agendamento, esta situação precisa ser tratada manualmente. A única exceção é a diretiva @reboot, que faz com que o comando especificado seja executado quanto a máquina for ligada.
Edição da crontab
$ crontab -e
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
Todas as linhas iniciadas por # são comentários, e você pode removê-las quando quiser, sem problema algum.
O arquivo crontab será aberto utilizando o editor de sua preferência. Você pode definir esta preferência através da variável de ambiente EDITOR:export EDITOR=vi
Se você não conhece o vi, pode usar o nano, que é um editor mais amigável, embora com muito menos recursos.
Caso deseje apenas listar o conteúdo do arquivo crontab, digite:
$ crontab -lO usuário root pode editar diretamente a crontab dos usuários do sistema que administra. Para isto basta executar o comando:
# crontab -u [nome do usuário] -e
IMPORTANTE: não é só colocar o comando na crontab e esquecer da vida, precisamos gerar alertas ou verificar a saída gerada pelo arquivo para ver se tudo deu certo.
Por padrão, o cron envia para o usuário um email com o resultado do comando. Através da análise destas mensagens, podemos decidir o que fazer.
Caso queiramos que o email seja enviado para um outro usuário, podemos definir, no arquivo crontab, a variável MAILTO:
MAILTO="admin@mydomain.com"E se eu errar na edição da crontab, corro o risco de perder alguma coisa? Fique tranquilo, sempre que você gravar a crontab, se houver algum erro de sintaxe, o sistema te avisa, não grava as alterações e te pergunta se você quer refazer a edição:
$ crontab -e
crontab: installing new crontab
"/tmp/crontab.KA6PeR/crontab":24: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit? (y/n)
Não se esqueça, sempre coloque o caminho completo do comando, visto que a variável PATH da execução do comando via cron é diferente daquela do seu ambiente.
quinta-feira, 2 de agosto de 2018
Correios e Telégrafos - Alguém ainda acredita?
Por Rubens Queiroz de Almeida
Data de Publicação: 20 de Março de 2011
Por alguns anos eu venho tendo uma experiência bastante peculiar com o serviço dos Correios em minha cidade. Neste mês, vejam só o que ocorreu:
| Documento | Data de Vencimento | Data de Entrega pelos Correios | |
|---|---|---|---|
| Telefônica | 14/03/2011 | 18/03/2011 | |
| Embratel | 10/03/2011 | 18/03/2011 | |
| Submarino | 15/03/2011 | 18/03/2011 | |
| Sem Parar | 10/03/2011 | 18/03/2011 | |
| Comunicado Bancário | 04/03/2011 | 18/03/2011 | |
| Oi Celular | 16/03/2011 | 18/03/2011 | |
Isto é o que ocorreu este mês (março de 2011), mas isto ocorre praticamente todos os meses. Paguei muita multa por conta disto. Vejam só, todas as correspondências foram entregues no dia 18 de março. Parece que juntaram tudo para entregar em um único dia. Estão otimizando o processo. Mas já é um progresso, antes nem entregavam. Outro fato interessante, o carteiro enfiava dentro da minha caixa postal a correspondência da rua inteira. Eu então, como bom cidadão que sou, fazia a entrega nas demais casas. Ao que parece, isto não aconteceu só comigo. Um amigo de Brasília relatou o mesmo fato. Reclamei com a ouvidoria dos Correios e felizmente esta prática foi interrompida.
Pode ser que isto seja apenas um problema localizado, talvez apenas comigo, ou apenas na minha rua. Mas uma correspondência que recebi do Submarino no dia 11 de março, me faz suspeitar que este problema seja generalizado:

Vejam só a mensagem: se a fatura não chegou, não se preocupe, é só emitir uma outra no site da empresa.
E tem mais, vamos ao mundo real. Alguns meses atrás, tive que ir na agência pegar uma encomenda. A fila estava grande e chegou o fim do expediente às 17h. Ainda havia umas 8 ou dez pessoas aguardando sua vez. Saiu então dos fundos da agência um "solícito" funcionário que começou a perguntar a cada um de nós o que estava aguardando. Eu, que era um dos últimos, só vi as pessoas saindo uma a uma, sem serem atendidas. Na minha vez, o funcionário perguntou o que eu ia fazer. Disse que ia pegar uma encomenda. Ele me perguntou se eu tinha o aviso dos correios. Eu disse que não, pois esperava poder pegar a encomenda fornecendo meu endereço e um documento. Ele me disse então que isto era impossível, que para pegar a encomenda só se eu tivesse o aviso. Fui então, junto com os demais, embora. Voltei no outro dia, com o aviso dos Correios. Ao chegar a minha vez, perguntei ao atendente se era possível pegar a encomenda fornecendo um documento e o meu endereço. A resposta foi: "É claro, com os seus dados pessoais conseguimos localizar perfeitamente qualquer encomenda dentro da agência". É um caso típico de exploração da humildade e desconhecimento da maioria da população para desrespeitar nossos direitos. Todos, inclusive eu, foram para casa sem falar nada.
E tem mais, se você tem uma correspondência importante, que você precisa garantir a entrega ao destinatário, qual a sua opção? Sedex, claro. Neste mes, para enviar um envelope com duas folhas, de Campinas para Brasília, paguei aproximadamente R$ 35,00. Era isto ou conviver com a incerteza quanto ao destino do meu documento. Pelo ocorrido com as correspondências da minha vizinhança, realmente é de dar medo. E no final das contas, acabamos mesmo desembolsando o valor estratosférico do SEDEX para garantir aquilo que deveria ser obrigatório para toda e qualquer correspondência: a certeza de chegar ao destino.
No dia 3 de outubro de 2008, após um total desapontamento com o serviço Claro 3G, eu escrevi o artigo Conexão Banda Larga Claro 3g, em que relatei minhas experiências e também como usei a busca no Google, com algumas palavras mágicas, para fazer uma avaliação da qualidade do serviço. Para o serviço Claro 3g, o total de resultados obtidos foi 121.000. Um outro provedor de serviços notório, a Telefônica, retornou 154.800 resultados. Vamos agora ver como o serviço dos Correios se sai em uma enquete similar:
Argumento de busca
| Resultados | ||
|---|---|---|
| correios merda | 48.700 | |
| correios bosta | 164.000 | |
| correios porcaria | 25.300 | |
| correios lixo | 323.000 | |
| TOTAL | 561.000 | |
Os Correios ganham de longe, 3,5 mais reclamações do que a Telefônica e 4,6 vezes mais que o serviço Claro 3G.
É claro que, sempre que possível, coloco as minhas contas no débito automático, para evitar o serviço porco dos Correios. Sempre que possível, peço também para que não me enviem correspondência, pois sinto que é dinheiro jogado fora e um desperdício imprimir faturas que não me servem para nada. Mas reconheço que isto não é o correto. Devemos reclamar para termos um serviço que é um direito de todos nós. Se o Facebook, Twitter, etc, estão derrubando as ditaduras do Oriente Médio e da África do Norte, podemos tentar melhorar o serviço de uma empresa tão importante para todos nós, como os Correios. Nasci em 1960 e durante grande parte da minha vida eu sempre ouvi as pessoas se referirem a esta empresa com respeito e admiração. Da mesma forma, havia um respeito pelos funcionários dos Correios e pelos carteiros. É doloroso ver como as coisas mudaram.
Espero que algo seja feito.
sexta-feira, 20 de julho de 2018
Senhas da rede wifi de mais de 130 aeroportos no mundo
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 20 de julho de 2018
Para quem vai viajar, vale a pena verificar o endereço http://bit.ly/airportwifimap
Esta página contém a relação de mais de 130 aeroportos no mundo e instruções sobre como acessar suas redes wifi.
A tela abaixo contém as informações do aeroporto de Guarulhos:

Referências
sábado, 12 de maio de 2018
Compactação de arquivos com xz
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 10 de maio de 2018
Estou muitos anos atrasado com esta dica, fiquei conhecendo hoje o método de compressão XZ.
Antes de falar mais sobre ele, vamos a um teste rápido:
Antes de falar mais sobre ele, vamos a um teste rápido:
$ gzip planilha.csv $ ls -lh planilha.csv.gz -rw-r--r-- 1 queiroz queiroz 24K Mai 7 14:44 planilha.csv.gz $ xz planilha.csv $ ls -lh planilha.csv.xz -rw-r--r-- 1 queiroz queiroz 20K Mai 7 14:44 planilha.csv.xz
O comando tar para compactar arquivos utilizando este protocolo é também bastante simples:
tar Jcvf arquivo.tar.xz arquivo(s)
tar Jxvf arquivo.tar.xz
A diretiva J indica ao comando tar o tipo de compactação que será utilizado.
A diretiva J indica ao comando tar o tipo de compactação que será utilizado.
O pacote pxz utiliza a compressão LZMA em diferentes partes de um arquivo em múltiplos núcleos de processamento (cores) do seu processador. Desta forma a tarefa de compressão é dividida, cada corerecebe um pedaço do arquivo para trabalhar e o processamento é feito em paralelo. O objetivo final do pacote é utilizar todos os recursos computacionais disponíveis para obter a melhor taxa de compressão possível no menor tempo.
O programa xz faz parte do pacote xz-util
s e o programa pxz faz parte do pacote pxz. Para instalar os dois pacotes em sistemas Debian GNU/Linux e derivados, digite:sudo apt-get install xz-utils pxz
sábado, 9 de dezembro de 2017
Linux, você sabe o que é isso?
Por Pedro Cipoli

Quando se fala em Linux muitas pessoas pensam na imagem de um programador executando dezenas de comandos complicados em uma tela preta semelhante ao finado DOS. Isso seria verdade até alguns anos atrás, mas o sistema evoluiu tanto em seu visual, com suporte a aplicações 3D e ambientes de trabalho cheios de efeitos e uma enorme facilidade de uso, que variações como o Ubuntu e o Linux Mint conquistam cada vez mais usuários que querem fugir das (caras) licenças do Microsoft Windows.
Para explicar um pouco mais desse sistema e suas variações, o Canaltech preparou um artigo bem completo, acompanhe:
Centenas de distribuições para escolher
Quando dizemos GNU/Linux, não estamos falando de um sistema em particular, mas de centenas de variações, cada uma com suas características próprias. O mesmo acontece com o Windows: temos instalado em nossas máquinas o Windows 7 ou o Windows XP, e ambos se referem ao sistema operacional da Microsoft, porém ambos possuem suas diferenças e peculiaridades.
Enquanto o Microsoft Windows atual conta com menos de 20 versões, o GNU/Linux possui nada menos que mil variações, também conhecidas como distros, cada uma com seu conjunto de softwares e configurações para baixar, instalar e testar, até você escolher a que atenderá melhor as suas necessidades. Mas não se preocupe, você não precisará testar todas elas. Abaixo temos uma breve descrição de oito principais distribuições para você observar algumas diferenças:
Ubuntu

Linux Mint

Debian

Open SUSE

Fedora

Gentoo

Dreamlinux

Scientific Linux

Vários ambientes de trabalho
Cada distribuição possui suas configurações particulares e ambiente de trabalho padrão, o que não significa que você não pode mudá-las depois de instalá-las. Diferentemente do Windows ou do Mac OS, você pode ter vários ambientes instalados e selecioná-los quando for mais conveniente, não precisando ficar preso ao padrão da distribuição.
No GNU/Linux podemos definir tanto o sistema que queremos usar quanto o ambiente de trabalho, então você pode escolher entre o Ubuntu Gnome e Ubuntu KDE, Debian Gnome, KDE ou LXDE e assim por diante. Entre os vários ambientes disponíveis, listamos três dos mais utilizados:
Gnome


KDE

LXDE

Extraia todo o poder de seu hardware
Um dos grandes motivos de vários usuários gostarem tanto do GNU/Linux é a velocidade. O sistema é muito mais rápido que o Windows (para o mesmo hardware), o que é ótimo tanto para aqueles que possuem um computador com mais de idade quanto para os aficcionados por desempenho extremo. Não é à toa que os maiores supercomputadores do mundo preferem o pinguim como sistema operacional oficial.
Uma das preocupações comuns dos usuários é: "Será que aquele meu dispositivo vai funcionar no Linux?". A resposta é sim. A grande maioria dos drivers de placas wireless, impressoras e outros dispositivos já são configurados automaticamente na instalação, e você pode escolher tanto os fornecidos pelo GNU/Linux quanto os oficiais desenvolvidos pelo fabricante. Por exemplo, as grandes empresas fabricantes de placas de vídeo já disponibilizam versões oficiais de seus drivers para download. Em computadores portáteis, como notebooks e netbooks, o reconhecimento automático de placas de rede sem fio já economiza bastante trabalho se comparado a uma instalação do Windows.
Existem algumas distribuições que rodam até em computadores produzidos há mais de 10 anos, como é o caso do Joli OS, utilizando recursos de computação em nuvem para realizar a maior parte do processamento e ressuscitando aquele computador que você parou de usar há muito tempo por ele simplesmente "não rodar" aqueles novos aplicativos que você queria usar.
Segurança
No Windows estamos acostumados a ter que baixar um programa antivírus e atualizá-lo frequentemente, para não corrermos o risco de termos nossos dados pessoais e bancários roubados. O GNU/Linux possui um sistema de permissões bastante maduro, o que diminui (ou elimina) essa necessidade, mas mesmo assim traz mecanismos de segurança pré-instalados para deixar você sempre tranquilo.
Por ser originalmente desenvolvido para trabalhar em rede, a segurança sempre foi um dos pontos cruciais de seu sucesso nessa área, assim como o acesso a áreas protegidas do sistema, que requerem a senha do administrador para salvar as alterações, resultando em menos bugs causados acidentalmente pelo usuário.
Compatibilidade com programas Windows
Mesmo que o Linux seja um sistema operacional completamente diferente do Windows, isso não significa que você precisa abandonar os programas que mais utiliza. Através do Wine, programa de emulação de software, você pode instalar programas desenvolvidos para Windows dentro do Linux, como o Microsoft Office, Photoshop e até mesmo o Internet Explorer mais recente!
Além disso, existem excelentes programas que possuem versões para os dois sistemas, como o LibreOffice (suíte de escritório), Gimp (editor de imagens), VLC Media Player(reprodutor de vídeos), Audacity (editor de áudio semelhante ao Sound Forge) e o VirtualBox.
E o melhor: tudo de graça!
Dizem que tudo que é bom custa caro, mas o GNU/Linux está ai para provar o contrário. Você pode baixar, instalar e testar quantas distribuições desejar e quantas vezes quiser, pois não é necessário comprar uma licença para utilizar o Linux, já que ele é completamente desenvolvido sobre as diretrizes da licença GNU GPL (GNU General Public License, ou Licença Pública Geral GNU), que garante que ele vai ser sempre gratuito e de código aberto.
Não importa se você deseja utilizá-lo em casa, no escritório ou em algum servidor, a licença não restringe o uso comercial do GNU/Linux. Você pode inclusive fazer modificações em seu código e distribuí-lo para quem quiser, desde que mantenha a mesma licença e permita que outros também façam modificações em seu código.

E você, já usou ou usa Linux? O que acha do sistema?
Este artigo faz parte de nossa biblioteca de conteúdo "Tudo o que você precisa saber sobre o Linux". Não deixe de acessar e conferir todo o conteúdo publicado sobre o Pinguim.
sexta-feira, 1 de dezembro de 2017
Unicamp - Estão abertas as inscrições para o curso de aperfeiçoamento em mineração de dados complexos
Por Zanoni Dias
Data de Publicação: 23 de Novembro de 2017
Estão abertas as inscrições para o Curso de Aperfeiçoamento em Mineração de Dados Complexos, a ser realizado no Instituto de Computação da Unicamp em 2018.
O curso explorará os principais métodos de Análise de Dados, Recuperação de Informação, Mineração de Dados, Visualização de Informação, tratamento de grandes volumes de dados (Big Data), além das mais modernas técnicas de Inteligência Artificial e Aprendizado de Máquina (inclusive Deep Learning).
Mais informações
Por favor, ajudem a divulgar o curso repassando esta mensagem para os seus contatos, e também compartilhando nossos posts nas redes sociais:
sexta-feira, 1 de setembro de 2017
Android não é Linux
Colaboração: Anahuac de Paula Gil
Data de Publicação: 30 de agosto de 2017
Linux é um kernel. O nome do sistema operacional é Android.
Sei que essa discussão é repetitiva e, provavelmente você já ouviu, leu ou até mesmo participou de alguma discussão sobre esse assunto. Mas pense um pouco: se é repetitivo é porque não há consenso. Então me dê uma chance de contar essa história.
O Google criou um sistema operacional livre chamado Android. No início eles não tinham um kernel livre, então usavam um proprietário enquanto se concentraram em todo o resto: sistema de arquivos, shell, editor de texto, compiladores, interface gráfica e muito mais.
Um dia alguém sugeriu o uso do kernel Linux, que permitia ser adaptado para a plataforma de hardware que o Google usava, estava licenciado por GPL e tinha um ótimo desempenho. Os testes foram um sucesso tão grande que eles logo decidiram rebatizar o sistema operacional de Android/Linux. Agradeceram demais ao Linus Torvalds e o mundo todo ficou sabendo.
A medida que o Android/Linux foi se tornando popular a fama de Linus também. Diversos ativistas e usuários entusiasmados começaram a chamar o SO apenas de Linux, porque era mais fácil e bonito. O Google fez campanhas educativas, tentou explicar que não seria correto eliminar o nome Android, afinal de contas eles tinham criado o sistema operacional. Não adiantou nada: os usuários mais fanáticos decidiram. acusaram o Google de interferir na liberdade de escolha do nome e Linus fez um depoimento emocionado onde disse: "As pessoas devem ter a liberdade de chamar o sistema operacional como bem quiserem. Eu chamo de Linux e acho que é absurdo e ridículo que queiram forçar as pessoas a chamá-lo de Android/Linux."
A Linux Foundation decidiu incorporar softwares não livres ao kernel linux para torná-lo mais compatível com os dispositivos disponíveis. Assim o Linux seria ainda mais popular. Deu certo: o Linux agora é o sistema operacional mais usado no mundo, pois está presente em mas de 86% de todos os smartphones do mundo.
É claro que o Google tentou reagir várias vezes, mas falhou. Foi acusado de xiita, de radical e de anti capitalista. Entretanto o argumento mais emblemático é que o se fosse para chamar o sistema operacional de Android/Linux, então seria muito mais justo chamá-lo de Android/Chrome/Maps/Waze/Hangout/Linux.
O que tinha começado como um projeto de software livre chamado Android, conquistou o planeta conhecido como Linux e contém tanto software privativos que nem é mais software livre.
É claro que o kernel é uma parte vital de um sistema operacional, mas a interface gráfica, o sistema de arquivos, o navegador e o editor de textos também são. O sistema operacional é a soma de todos seus componentes e não apenas o de um ou dois mais importantes.
O mercado gosta de determinados nomes e os usa para identificar objetos, definir conceitos e até mesmo para estigmatizar pessoas. Hacker como sinônimo de criminoso cibernético e Gilette para lâmina de barbear, são alguns exemplos. Seja por pressão financeira, campanhas de marketing ou interesses sócio-políticos, sempre há uma razão por trás disso.
Os criadores originais do Android estão convencidos que remover o nome Android é uma estratégia para remover a importância da liberdade do software da cena. Dizendo apenas Linux e mostrando apenas o pinguim, não se passa o recado da liberdade do software para o mercado.
...
É claro que você não chama o Android de Linux. É claro que você deve achar essa história um absurdo.
Então saiba que quase tudo que descrevi acima é verdade. E você ajuda a perpetuar o absurdo sempre que se refere a qualquer sistema operacional como Linux.
O nome do sistema operacional livre ou não - Ubuntu, Trisquel, Fedora, Parabola, openSuse, Ututo, Debian - é GNU. Ele foi criado em 1983 por Richard Stallman, que incorporou o kernel Linux em 1992.
Se você acha que as liberdades do software são fundamentais e quer ajudar o Movimento Software Livre de verdade, nunca mais diga que o sistema operacional é linux ou que uma distribuição é linux. É tão absurdo quanto chamar o Android de linux.
Lembre-se: o nome do sistema operacional é GNU.
Saudações Livres!
Me encontre no grupo #ultraGNU do https://riot.im
segunda-feira, 15 de maio de 2017
Raspberry p3 sem audio HDMI slackware-arm
Após "gugglar" por dias, parecia que nenhuma das opções resolvia o problema, até que achei um post que finalmente passou a informação correta =)
Em /boot/config.txt, colar as seguintes linhas.
dtparam=audio=on
hdmi_drive=2
sábado, 22 de abril de 2017
Congelar o HD para recuperar os dados - Mito ou Realidade
Fonte www.dicas-l.com.br
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 29 de agosto de 2012
Uma história que circula há muitos anos na Internet é que, congelando o seu disco rígido defeituoso, você consegue dar uma nova vida a ele por alguns minutos, o que lhe permitirá recuperar os dados, parcial ou totalmente.
Ao que tudo indica, a técnica funciona mesmo. O Augusto Campos, do Br-Linux.org relatou um caso de sucesso em um artigo que escreveu para a revista Linux Magazine. Não consegui localizar o artigo original, mas que ele existe, existe.
Recentemente li mais um artigo a respeito, chamado Freeze your hard drive to recover data: Myth or reality?.
Reproduzo a seguir, em tradução livre, o conteúdo deste artigo.
Freeze your hard drive to recover data: Myth or reality?
Cerca de 2 semanas atrás, escrevi um artigo, que foi bastante popular, sobre a recuperação do disco rígido (recebi cerca de 20.000 visitas). O artigo abordou algumas soluções para ajudar na recuperação de um disco rígido defeituoso. Enquanto estava pesquisando para escrever este artigo, descobri algumas histórias de pessoas que colocavam o seu disco no freezer para dar-lhe uma vida adicional por um tempo suficiente para recuperar seus dados. Acho que, ao fazer isto, alguns componentes de metal do disco rígido se contraem, colocando de volta no lugar peças defeituosas, viabilizando que tudo volte a funcionar por mais alguns minutos.
O que vocês acham? Mito ou realidade? Parece que um monte de gente concorda que esta solução realmente funciona, então eu decidi testá-la com um disco rígido antigo Maxtor que havia pifado algumas semanas atrás. O HD não contém dados importantes, de modo que perder o disco realmente não seria um problema.
Antes de colocá-lo no congelador, a unidade estava fazendo um barulho estranho (cliques) e o computador exibia esta mensagem:
Primary hard drive 0 not found, strike F1 to retry boot, F2 to run the setup utility
Em seguida, coloquei-o no freezer e esperei por uma hora.
Bem, pelo menos o disco rígido girou por cerca de 2 minutos antes de pifar novamente. Talvez isso não seja o suficiente para me deixar recuperar os dados, mas funcionou por algum tempo. :)
Observação: Um dia depois, coloquei o disco rígido de volta no congelador por 24 horas. Desta vez, o disco funcionou por mais 20 minutos.
Se você não quer correr o risco de perder dados e se você tem medo de tentar fazer isso, é melhor usar os serviços de especialistas.
Fonte do original em inglês: Freeze your hard drive to recover data: Myth or reality?
terça-feira, 21 de fevereiro de 2017
Escrevendo scripts de backup
Colaboração: Carlos E. Morimoto
Durante a década de 70, vários utilitários foram desenvolvidos para fazer backup de arquivos armazenados em servidores Unix. Os computadores da época eram muito limitados, por isso os utilitários precisavam ser simples e eficientes, e deveriam existir meios de agendar os backups para horários de pouco uso das máquinas.
Sugiram então utilitários como o tar e o gzip e mais tarde ferramentas como o rsync. Estes utilitários eram tão eficientes que continuaram sendo usados ao longo do tempo. Por incrível que possa parecer, são usados sem grandes modificações até os dias hoje.
Naturalmente, existem muitos utilitários amigáveis de backup, como o Amanda (para servidores) e o Konserve (um utilitários mais simples, voltado para usuários domésticos). Mas, internamente, eles continuam utilizando como base o o dump, tar, gzip e outros trigenários.
Mais incrível ainda, é que estes utilitários possuem uma penetração relativamente pequena. A maior parte dos backups ainda são feitos através de scripts personalizados, escritos pelo próprio administrador. E, novamente, estes scripts utilizam o tar, gzip, rsync e outros.
É justamente sobre estes scripts personalizados que vou falar aqui. Vamos começar com alguns exemplos simples:
Para compactar o conteúdo de uma pasta, usamos o tar combinado com o gzip ou bzip2. O tar agrupa os arquivos e o gzip os compacta. Os arquivos compactados com o gzip usam por padrão a extensão "tar.gz", enquanto os compactados com o bzip2 usam a extensão "tar.bz2". O bzip2 é mais eficiente, chega a obter 10% ou mais de compressão adicional, mas em compensação é bem mais pesado: demora cerca de 3 vezes mais para compactar os mesmos arquivos. Você escolhe entre um e outro de acordo com a tarefa.
O comando para compactar uma parta é similar ao "tar -zxvf" que usamos para descompactar arquivos. Para compactar a pasta "arquivos/", criando o arquivo "arquivos.tar.gz", o comando seria:
$ tar -zcvf arquivos.tar.gz arquivos/
$ tar -jcvf arquivos.tar.bz2 arquivos/
Estes comandos seriam ideais para fazer um backup completo, de uma ou várias pastas do sistema, gerando um arquivo compactado que poderia ser armazenado num HD externo, gravado num DVD ou mesmo transferido via rede para outro servidor.
Imagine agora um outro cenário, onde você precisa fazer backup dos arquivos de uma pasta de trabalho diariamente. Os arquivos gerados não são muito grandes e você tem muito espaço disponível, mas é necessário que os backups diários feitos em arquivos separados e sejam guardados por um certo período, de forma que seja possível recuperar um arquivo qualquer a partir da data.
Ao invés de ficar renomeando os arquivos, você poderia usar um pequeno script para que os arquivos fossem gerados já com a data e hora incluída no nome do arquivo:
DATA=`date +%Y-%m-%d-%H.%M`
cd /mnt/backup
tar -zcvf trabalho-"$DATA".tar.gz /mnt/hda6/trabalho/
A primeira linha do script cria uma variável "DATA", contendo o resultado do comando " date +%Y-%m-%d-%H.%M". O comando date retorna a data e hora atual, como em "Sex Set 16 12:36:06 BRST 2005". A saída padrão dele não é muito adequada para usar em nomes de arquivos, por isso usamos as opções para alterar o formato de saída, de forma que o resultado seja "2005-09-16-12.37" (ano, mês, dia, hora, minuto, segundo). Usamos este valor no nome do arquivo com o backup, de forma que cada vez que você chame o script, seja gerado um arquivo com a data e hora em que foi gerado, sem a possibilidade de dois arquivos saírem com o mesmo nome.
O próximo passo é fazer com que este script de backup seja executado diariamente de forma automática, o que pode ser feito usando o cron.
Em primeiro lugar, salve os comandos num arquivo de texto, que vamos chamar de "backup.sh" e transforme-o num executável usando o comando "chmod +x backup.sh".
Para que ele seja executado automaticamente todos os dias, copie-o para dentro da pasta "/etc/cron.daily" e certifique-se que o serviço "cron" esteja ativo:
# cp -a backup-sh /etc/cron.daily # /etc/init.d/cron start
25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
O "25 6" indica o minuto e a hora. Se quiser que o script seja executado às 11 da noite, por exemplo, mude para "00 23".
Neste exemplo usei a pasta "/mnt/backup" para salvar os arquivos. Esta pasta pode ser o ponto de montagem de um HD externo ou de um compartilhamento de rede por exemplo. O seu script pode conter os comandos necessários para montar e desmontar a pasta automaticamente.
Imagine, por exemplo, que o backup é sempre feito na primeira partição de um HD externo, ligado na porta USB, que é sempre detectada pelo sistema como "/dev/sda1". O script deve ser capaz de montar a partição, gravar o arquivo de backup e depois desmontá-la. Se por acaso o HD não estiver plugado, o script deve abortar o procedimento. Para isso precisamos verificar se o HD realmente foi montado depois de executar o comando "mount /dev/sda1 /mnt/sda1". Existem muitas formas de fazer isso, uma simples é simplesmente filtrar a saída do comando "mount" (que mostra todos os dispositivos montados) usando o grep para ver se o "/mnt/sda1" aparece na lista. Se não estiver, o script termina, caso esteja ele continua, executando os comandos de backup:
mount /dev/sda1 /mnt/sda1
montado=`mount | grep /mnt/sda1`
if [ -z "$montado" ]; then
exit 1
else
DATA=`date +%Y-%m-%d-%H.%M`
cd /mnt/backup
tar -zcvf trabalho-"$DATA".tar.gz /mnt/hda6/trabalho/
umount /mnt/sda1
fi
A partir daí, sempre que você deixar o HD externo plugado no final do expediente, o backup é feito e estará pronto no outro dia. Se esquecer de plugar o HD num dia, o script percebe e não faz nada.
Se preferir que o script grave o backup num DVD, ao invés de simplesmente salvar numa pasta, você pode usar o "growisofs" para gravá-lo no DVD. Neste caso, vamos gerar o arquivo numa pasta temporária e deletá-lo depois da gravação:
DATA=`date +%Y-%m-%d-%H.%M` rm -rf /tmp/backup; mkdir /tmp/backup; cd /tmp/backup tar -zcvf trabalho-"$DATA".tar.gz /mnt/hda6/trabalho/ growisofs -speed=2 -Z /dev/dvd -R -J /tmp/backup/trabalho-"$DATA".tar.gz rm -rf /tmp/backup
O "-speed=2" permite que você especifique a velocidade de gravação do DVD, o "-Z" cria uma nova seção no DVD, é possível usar o mesmo disco para gravar vários backups (se o espaço permitir) usando a opção "-M" a partir da segunda gravação, que adiciona novas seções no DVD, até que o espaço se acabe.
O "/dev/dvd" indica o dispositivo do drive de DVD. A maioria das distribuições cria o link /dev/dvd apontando para o dispositivo correto, mas, em caso de problemas, você pode indicar diretamente o dispositivo correto, como, por exemplo, "/dev/hdc". As opções "-R -J" adicionam suporte às extensões RockRidge e Joilet.
Se o cron for configurado para executar o script todos os dias, você só precisará se preocupar em deixar o DVD no drive antes de sair.
Outro grande aliado na hora de programar backups é o rsync. Ele permite sincronizar o conteúdo de duas pastas, transferindo apenas as modificações. Ele não trabalha apenas comparando arquivo por arquivo, mas também comparando o conteúdo de cada um. Se apenas uma pequena parte do arquivo foi alterada, o rsync transferirá apenas ela, sem copiar novamente todo o arquivo.
Ele é uma forma simples de fazer backups incrementais, de grandes quantidades de arquivos, ou mesmo partições inteiras, mantendo uma única cópia atualizada de tudo num HD externo ou num servidor remoto. Este backup incremental pode ser atualizado todo dia e complementado por um backup completo (para o caso de um desastre acontecer), feito uma vez por semana ou uma vez por mês.
Para instalar o rsync, procure pelo pacote "rsync" no gerenciador de pacotes. No Debian instale com um "apt-get install rsync" e no Mandriva com um "urpmi rsync".
Para fazer um backup local, basta informar a pasta de origem e a pasta de destino, para onde os arquivos serão copiados:
$ rsync -av /mnt/hda6/trabalho /mnt/backup/
A opção "-a" (archive) faz com que todas as permissões e atributos dos arquivos sejam mantidos, da mesma forma que ao criar os arquivos com o tar e o "v" (verbose) mostra o progresso na tela.
A cópia inicial vai demorar um pouco, mais do que demoraria uma cópia simples dos arquivos. Mas, a partir da segunda vez a operação será muito mais rápida.
Note que neste comando estamos copiando a pasta "trabalho" recursivamente para dentro da "/mnt/backup", de forma que seja criada a pasta "/mnt/backup/trabalho". Adicionando uma barra, como em "/mnt/hda6/trabalho/", o rsync copiaria o conteúdo interno da pasta diretamente para dentro da "/mnt/backup".
Se algum desastre acontecer e você precisar recuperar os dados, basta inverter a ordem das pastas no comando, como em:
$ rsync -av /mnt/backup/trabalho /mnt/hda6/trabalho/
O rsync pode ser também usado remotamente. Originalmente ele não utiliza nenhum tipo de criptografia, o que faz com que ele não seja muito adequado para backups via Internet. Mas, este problema pode ser resolvido com a ajuda do SSH, que pode ser utilizado como meio de transporte. Não é a toa que o SSH é chamado de canivete suíço, ele realmente faz de tudo.
Neste caso o comando ficaria um pouco mais complexo:
$ rsync -av --rsh="ssh -C -l tux" /mnt/hda6/trabalho \ tux@192.168.0.1:/mnt/backup/
Veja que foi adicionado um parâmetro adicional, o --rsh="ssh -C -l tux", que orienta o rsync a utilizar o SSH como meio de transporte. O "-C" orienta o SSH a comprimir todos os dados (economizando banda da rede) e a se conectar ao servidor remoto usando o login tux (-l tux). Naturalmente, para que o comando funcione é preciso que o servidor esteja com o SSH habilitado, e você tenha um login de acesso.
Em seguida vem a pasta local com os arquivos, o endereço IP (ou domínio) do servidor e a pasta (do servidor) para onde vão os arquivos.
Para recuperar o backup, basta novamente inverter a ordem do comando, como em:
$ rsync -av --rsh="ssh -C -l tux" tux@192.168.0.1:/mnt/backup/ \ mnt/hda6/trabalho
Originalmente, você vai precisar fornecer a senha de acesso ao servidor cada vez que executar o comando. Ao usar o comando dentro do script de backup, você pode gerar uma chave de autenticação, tornando o login automático. Esta opção é menos segura, pois caso alguém consiga copiar a chave (o arquivo .ssh/id_rsa dentro no home do usuário), poderá ganhar acesso ao servidor.
De qualquer forma, para usar este recurso, rode o comando "ssh-keygen -t rsa" (que gera a chave de autenticação) usando o login do usuário que executará o script de backup, deixando a passprase em branco. Em seguida, copie-o para o servidor, usando o comando:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tux@192.168.0.1
