Resenha de livro: Vi and Vim, de Arnold Robbins.

Neste post, apresento uma das obras que me ajudou muito a entender melhor o funcionamento do editor de textos Vim e a elevar o meu nível como usuário do programa.
Como advertência inicial, trata-se de um livro em inglês. Caso você prefira evitar livros neste idioma, sugiro ler meus outros posts sobre o editor Vim.

Eu já tinha um background sobre o aplicativo e seu uso, antes de começar a ler o livro.
Se este também for o seu caso, pode fazer que nem eu, ler superficialmente (ou simplesmente “pular”) as partes sobre as quais já tem domínio e ir direto ao que te interessa.

Algumas obras são escritas com o propósito de ensinar, como tutoriais. Outras, são mais úteis como referência e sua leitura integral pode ser até desnecessária — uma vez que você pode ganhar mais tempo apenas consultando, quando houver dúvidas sobre algum item.

Na minha avaliação, a obra serve aos 2 propósitos.

Eu sou aquele tipo de nerd ou geek que lê os manuais de tudo o que compra, desde o guia de uso do liquidificador aos manuais completos do carro.

Quanto menos você souber sobre o Vim, mais vai aprender lendo o livro de ponta a ponta — aplicando os exemplos, os macetes, as dicas etc.
Depois o livro pode ir para uma estante. Mas não o deixe muito longe do seu alcance.



Assinada por Arnold Robbins, Elbert Hannah e Linda Lamb, a obra ainda terá muito a oferecer após a leitura, como referência.

Durante a leitura, não me preocupei em absorver 100% dos conceitos, mas em me divertir aprendendo.
É impossível aprender a usar o Vim (bem como muitos outros editores de texto bem mais populares) “do dia para a noite”. É um processo que vai tomar algum tempo e requerer bastante prática.

Portanto, se for lida com tranquilidade, o leitor pode se entreter bastante.

O conteúdo

A obra faz um apanhado do vi, desde o tempo do seu surgimento, no ambiente de programação do UNIX e segue em frente para incluir as versões mais atuais do editor, como Gvim (versão gráfica do editor).
Veja um resumo do que ela cobre:

  • Opções de linha de comando (CLI).
  • Comandos e opções do vi.
  • Atalhos do modo de inserção.
  • Substituição de texto e expressões regulares.
  • Comandos e opções do ex.
  • Inicialização e recuperação de arquivos.
  • Tags avançadas.
  • Recursos de conexão e navegação na Internet.

O livro termina com um extenso índice remissivo para ajudar a chegar mais rápido ao assunto que você deseja consultar.

Problemas do livro

Pode-se dizer que o livro é um tanto extenso e que não precisaria cobrir tantas versões do Vim.
Mas, se é melhor pecar pelo excesso, acredito ser possível perdoar isso.
Além do mais, é muito fácil se esquivar do que não te interessa aprender no momento e seguir a leitura mais adiante.

Conclusão

Se você não se importa ou não tem medo de ler em inglês, o livro pode ser bastante útil — uma vez que há bem poucas alternativas sobre o assunto em português.
Se o seu nível de leitura em inglês for razoável, não acho que vai haver problemas em entender e aprender o que os autores têm para passar.
A linguagem é clara e o texto é bem escrito.
Além disso, muita coisa pode ser aprendida empiricamente, seguindo os exemplos, caso não consiga entender algo especificamente.

Onde comprar

O livro pode ser adquirido em livrarias físicas ou online brasileiras.
É mais certo encontrar em livrarias internacionais.
O site da Amazon, no Brasil, tem a versão digital (para Kindle), neste link: https://amzn.to/2qDq5bI (recomendado).
Eu adquiri a minha cópia física na Barnes and Noble, contudo. Neste caso, arquei com uma demora de quase 4 meses na entrega. Eu não faria isto de novo…

É possível fazer análise de big data com MySQL?

Sim. Na realidade, o MySQL já é usado na análise de big data (ou megadados) — tanto quanto o PostgreSQL.
No caso do MySQL, as estruturas InnoDB organizadas em índices oferecem vantagens para as atividades de análise de megadados — boa estrutura name-value-pair (ou par-valor-nome), que é mais útil para análise do que os índices secundários.
Para fazer análises de big data, você passa por processo semelhante ao que passaria usando o Hadoop, por exemplo:

  • organizar preliminarmente os dados
  • criar estruturas otimizadas especificametne para a sua análise
  • criar a estrutura de busca

Com um grande “parque de máquinas”, é desejável paralelizar o processo e usar scripts de análise que o façam localmente, em cada instância — com um subprocesso de agregação dos resultados ao final.
Se for usar o Hadoop de forma mais tradicional sobre dados desestruturados, use o MySQL para armazenar os resultados agregados pelo Hadoop.

Soluções de análise de big data com o MySQL

De maneira geral, há 2 maneiras de realizar a análise de megadados no MySQL:

  • O MySQL pode ser usado em conjunto com um sistema mais tradicional para lidar com big data — como o Hadoop.
    Grandes quantidades de dados podem ser armazenados em HDFS e processados com o Hadoop — com o resultado armazenado no MySQL, para a análise.

    O HDFS (Hadoop Distributed File System) é um sistema de arquivos distribuído, que armazena dados em commodity machines oferecendo grande largura de banda para fluxo de dados em um cluster.

    Por exemplo, a métrica crua pode ser armazenada em HDFS, mas os dados agregados e sumarizados são enviados ao MySQL, onde são analisados.

  • O MySQL pode ser usado como um grande armazém de dados.
    Tipicamente, ele ficará fragmentado para suportar tal volume de dados.
    Neste caso, os mecanismos de armazenamento mais adequados são o InnoDB ou o TokuDB. Alternativamente, os mecanismos InfoBright ou InfiniDB também podem ser empregados.

Sendo o banco de dados de código aberto líder na web em aplicações baseadas na nuvem (cloud based applications), o MySQL se integra às plataformas de big data.
O uso de soluções MySQL com Hadoop é o que ajuda a resolver problemas envolvendo big data.
Referências sobre o Hadoop: http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html.

Quais as grandes alterações feitas pelo Android no Linux?

O GNU/Linux de que estamos falando é o mesmo usado em 99% dos 500 computadores mais poderosos do mundo. A questão é qual a diferença entre este e aquele instalado nos nossos smartphones ou smartwatches?

Naturalmente, no curso do seu desenvolvimento, desenvolvedores do Google fizeram algumas mudanças ao kernel Linux. A quantidade de mudanças não chega a ser extremamente grande — aproximadamente 250 patches, com mais ou menos 3 Mb de diferenças em 25 mil linhas de código.

logo android and linux
As mudanças incluem uma variedade de adições ao código, algumas grandes outras pequenas.
As alterações vão da adição de todo um sistema de arquivos para mídias SSD (YAFFS2) a pequenas mudanças no sentido de aumentar a segurança no Linux (paranoid networking).

O interessante no design do Android é o quão pouco modificamos o kernel. (Robert Love, desenvolvedor do Google)

Muitos sistemas embarcados fazem mudanças drásticas no kernel Linux e quase não alteram o user-space.
No caso do Android, foi feito o mínimo de mudanças no kernel — e profundas alterações no user-space ou espaço do usuário — com o objetivo de torná-lo visualmente distante do desktop.

Um sistema operacional moderno divide a memória virtual entre o espaço do kernel e o espaço do usuário — com o intuito de proteger os dados e a funcionalidade do sistema contra falhas.
O primeiro espaço é reservado estritamente para executar as operações do kernel, suas extensões e a maioria dos seus drivers.
Do outro lado, o espaço do usuário é onde os aplicativos e alguns dos drivers rodam.
Comumente chamado “userland”, o espaço do usuário se refere a todo código executado fora cerne do sistema operacional.

Em uma lista (bem concisa) as principais alterações introduzidas no kernel GNU/Linux são as seguintes:

  • ashmem ou Android Shared Memory — um sistema de compartilhamento de memória baseado em arquivo (file-based).
  • Binder, um sistema de comunicação inter-processos (IPC) e sistema de chamada de procedimento remoto.
  • logger, um mecanismo de logging de alta velocidade, implantado no núcleo e otimizado para escrita.
  • Paranoid networking um mecanismo criado para restringir fluxo de dados na rede a determinados processos.
  • pmem — um driver para mapeamento de largas quantidades de memória física no espaço do usuário.
  • Viking Killer — em substituição ao OOM Killer. Implementa á lógica do Android de “matar os processos recentes e menos usados” em condições de memória escassa.
  • wakelocks — uma solução única do Android para gestão de energia, no qual o estado padrão do dispositivo é o modo sleep. O sistema requer uma ação explícita (através de um wakelock) para sair deste estado.
  • Os alarm timers dão suporte ao gestor de alarmes do sistema para avisar ao kernel sobre os agendamentos para “acordar o sistema”, usando um wakelock.

Além destas implementações, citam-se todos os drivers, os recursos para a arquitetura ARM e outras associadas ao código de baixo nível, necessárias para garantir o suporte do Android a ampla variedade de aparelhos.
Conte ainda os drivers acrescentados para o funcionamento do GPS, bluetooth etc em plataformas móveis.

Referência: http://elinux.org/Android_Kernel_Features#List_of_kernel_features_unique_to_Android
O Android Mainlining Project trabalha para incluir as mudanças do Android no kernel GNU/Linux.

Conheça o visualizador de imagens para Linux Geeqie

O Geeqie é um programa para apresentar/visualizar imagens. O projeto nasceu em Março de 2008, após 3 anos de inatividade do GQview, cujo código foi aproveitado pelos desenvolvedores. Por isto, aqueles que já usavam o programa anterior (o GQview), se sentirão em casa aqui.

Sua tela inicial se divide em um navegador, onde você escolhe os arquivos que deseja visualizar, as pastas que quer abrir e uma janela, à direita, onde as imagens selecionadas são exibidas.

Profissionais ou aficionados por fotografia podem gostar muito da velocidade e eficiência com que ele trata imagens RAW (formato que contém todos os dados da imagem tal como foi captada pelo sensor da câmera. Normalmente, estes arquivos não são comprimidos).

Entre os recursos que eu achei interessantes está a janelinha de confirmação de exclusão de um arquivo, em que o Geeqie exibe uma prévia da imagem a ser removida.
Pode evitar acidentes.
confirmação

Usuários do Ubuntu, podem instalá-lo facilmente através da Central de Programas, que pode ser acessada do Menu de Aplicativos (Alt + F1). Pros(as) aventureiros(as), sempre tem a linha de comando:

sudo apt install geeqie