Torto arado é um mergulho sensível no mundo de servidão e violência que sufoca os herdeiros da escravidão. É sobre as permanências, sobre o peso e a tradição violenta que rege o Brasil rural. Um mundo que resiste, que se transforma à luz das rápidas transformações do século XX mas também conserva. Um mundo que se pudéssemos omitir inovações como energia elétrica e motos, poderia, numa primeira mirada, ser difícil de distinguir o século.
É um mergulho ficcional, deve-se dizer, mas extremamente realista. É sobre o controle sofregamente mantido por uma classe proprietária sobre uma população despossuída e marginalizada. Impossível não lembrar de sua contrapartida urbana (e verídica): o diário de Carolina Maria de Jesus de (Quarto de despejo: diário de uma favelada).
É também um livro sobre raízes e cultura popular dos herdeiros da escravidão. Evoca o orgulho tanto daqueles que eram os reservatórios dessas tradições — como Zeca Chapéu Grande — como daqueles que mesclavam sua experiência e sabedorias tradicionais com os ventos da esquerda que varriam o Brasil no final da Ditadura e início da Nova República — como Bibiana e Severo.
O realismo do livro “choca-se” com o mágico da cultura popular dos herdeiros da escravidão. Não no sentido de negá-lo, mas, sim, pelo contrário, de incorporá-lo. É um livro de realismo mágico. Aqui, o sobrenatural é tido como real. Os encantados do Jarê, tidos como reais pelos personagens, ganham sua existência inconteste na terceira parte do livro, na qual o narrador passa a ser um dos encantados: Santa Rita Pescadeira.
A narração, a propósito, é um destaque a parte. A história é sobre o drama de uma família negra no meio rural, é sobre gerações, é sobre cada uma das famílias que vivem o mesmo destino na Fazenda Água Negra e incontáveis outras. Para tanto, o romance é divido em três partes, cada um portando uma voz. Na primeira, quem narra os eventos é a irmã Bibiana, a segunda é narrada pela irmã Belonísia, e, por último, temos o retrato fantástico de Santa Rita Pescadeira.
Chama a atenção o recurso do autor para enfocar as permanências. Itamar Vieira Junior optou por evitar dar claramente o período em que ocorre a história do livro. A ideia é que o leitor tenha que perscrutar, sondar, tentar montar um quadro. Sem esse esforço, temos a impressão que a história ocorreu em um momento indefinido na história do Brasil. Tamanha as permanências.
Falando de um ponto de vista mais “pessoal”, é uma trama e uma narrativa que prendem imediatamente. O sentido de uma história que atravessa gerações mas ainda assim tem a impressão íntima de cada uma das vozes que a narra é surpreendente. O autor apresenta de cara o segredo que atravessa o livro: a faca de Donana e sua história (e maldição) que corta gerações de sua família. A faca atravessa a história da própria Donana, de Carmelita (sua filha), e das netas Bibiana e Belonísia (e, consequentemente, dos pais Zeca e Salu). O segredo, contudo, resiste a se encerrar. Se mantendo opaco ao leitor e aos personagens. Ao final, os personagens marcados pelo objeto, guardam para si sua parte dessa trama e apenas o leitor a compreende no todo.
]]>O planeta vermelho está no momento mais próximo da Terra em dois anos. Vejamos:
O “pertinho” se traduz em 63 milhões de quilômetros.
Eu pensava que dificilmente um telescópio pequeno conseguiria algum detalhe do planeta além de uma bolota avermelhada.
Felizmente, estava enganado.
Vejamos o que o precário registro pode nos mostrar:
No momento, o hemisfério sul marciano está visível para nós, terráqueos. E é assim que podemos ver a calota polar do sul, uma manchinha branca. Por que tão pequena? Porque agora está rolando um baita verão no hemisfério sul de Marte e ela reduz muito de tamanho nessa estação do ano.
O polo norte não é visível e num telescópio assim pequeno mal podemos ver os sinais das nuvens brancas que cobrem esse polo (uns meros e suaves pixels brancos). Esse manto de nuvens se dissipará quando chegar a primavera no polo norte (fevereiro de 2021).
Entre os dois polos, meu pequeno telescópio consegue diferenciar as áreas marcadas por rochas expostas (escuras) daquelas marcadas por vastas extensões de areias do deserto (claras).
Pode parecer pouco, mas acho incrível que de maneira amadora, no fundo de um quintal, consigamos enxergar com alguns detalhes um planeta tão longe (e menor que a Terra). Podemos mesmo ver as consequências do verão para o polo sul.
Se algum dia, o ser humano botar os pés em outro planeta … será em Marte. Em dizer que tem gente que acredita que a Terra é plana e desconfia da astronomia …
Ah, compare esse registro com o que eu fiz em 15 de julho de 2018.
Naquela ocasião, uma tempestade de areia histórica varreu o planeta, apagou os detalhes da geografia e ainda matou o rover Opportunity (da Nasa).
]]>Utilizaremos as ferramentas do projeto lm_sensors.
No Fedora 30:
1 | # dnf install -y lm_sensors |
Para verificar a temperatura da CPU (e mais algumas informações de outros sensores disponíveis na máquina):
1 | $ sensors |
Para monitorar em tempo real utilizamos o utilitário watch:
1 | $ watch sensors |
O padrão do watch é invocar o comando (em nosso caso, sensors) a cada 2 segundos. Para definir 1 segundo, utilizamos: watch -n 1 sensors
.
Até mais!
A solução para isso é gerar um novo PDF utilizando alguma tecnologia de reconhecimento óptico de caracteres (OCR: Optical Character Recognition).
A ferramenta atualmente mais fácil no GNU/Linux é o pdfsandwich (e é software livre!).
O mesmo é uma ferramenta voltada apenas para gerar PDFs com OCR a partir de outros PDFs.
Tecnicamente, o pdfsandwich na verdade é um script que depende de outras ferramentas que realmente interagem com o PDF.
O Fedora atualmente não disponibiliza o pdfsandwich nos repositórios oficiais (mas o Debian sim!). A solução é ulilizarmos um repositório pessoal do COPR:
1 | $ sudo dnf copr enable merlinm/pdfsandwich |
O tesseract é a ferramenta que o pdfsandwich utiliza para aplicar o OCR. O mesmo deve ser instalado automaticamente como dependência do pdfsandwich. Entretanto, devemos instalar dicionários adicionais para aumentar a eficiência do OCR. Instalemos pois, os dicionários para espanhol e português (inglês vem por padrão):
1 | dnf install tesseract tesseract-langpack-por tesseract-langpack-spa |
Ps: Embora o tesseract seja uma dependência do pdfsandwich, resolvi colocar seu pacote de forma redundante.
Simplesmente informe o document.pdf
desejado e será gerado um document_ocr.pdf
novo com OCR:
1 | $ pdfsandwich document.pdf |
Para aumentar a eficiência do OCR, convém informar a língua. Assim o tesseract utilizará o dicionário da língua em vez de tentar adivinhar apenas letras. O comando informando a língua portuguesa para o arquivo seria:
1 | $ pdfsandwich -lang por document.pdf |
Podemos inclusive informar múltiplas línguas para um mesmo documento. Vejamos o caso de um documento contendo inglês, português e espanhol:
1 | $ pdfsandwich -lang eng+por+spa multilingual_document.pdf |
Para listar os dicionários do tesseract que o pdfsandwich enxerga:
1 | $ pdfsandwich -list_langs |
document_ocr.pdf
) fique muito maior que o original (document.pdf
), execute novamente o pdfsandwich (sobre o document_ocr.pdf
).O livro de Benedict Anderson busca compreender as redes intercontinentais em que estavam inseridos as lutas anticoloniais que sacudiam o império espanhol em finais do século XIX. Com esse objetivo, são enfocados dois jovens nacionalistas filipinos, o novelista José Rizal e o folclorista e periodista polemista Isabel de los Reyes. Por meio desses filipinos, que atuaram politicamente tanto na Europa quanto em sua terra natal, são desnudadas as conexões artísticas, culturais e sociopolíticas que conectavam os lutadores anticoloniais filipinos e cubanos com anarquistas, marxistas e republicanos radicais europeus além de republicanos japoneses e rebeldes nacionalistas chineses.
No caminho são analisadas, desde a periferia do império espanhol, o interesse de Isabelo pelo folclore como “ciência” do século XIX e a articulação dessa com os nacionalismos em voga, seu longo e fraterno contato com acadêmicos europeus e, em circunstâncias mais sombrias, com o anarquismo em solo espanhol devido à prisão originada nas Filipinas. Já a produção literária de Rizal é contraposta com a literatura anticolonial europeia e a produção do autor (que acabaria por inspirar jovens nacionalistas filipinos) é analisada à luz das influências que o mesmo sofreu de autores europeus bem como de sua criação nas Filipinas sob controle das ordens religiosas e o cenário político da época.
Cenário político que é composto por Anderson em três mundos que cortam a vivência desses filipinos na década de 1880: o sistema-mundo interestatal de 1860-1890 dominado por Bismarck; a esquerda planetária pós Comuna de Paris até fins do século XIX, hegemonizada pelo anarquismo (marcado pela influência niilista), e por fim, o decadente mundo imperial espanhol marcado por guerra civis e instabilidade na metrópole, pela perda das colônias americanas e pelas lutas anticoloniais lideradas por Cuba.
Essa história global interconectada tem como ápice o capítulo final, sugestivamente chamado de Montjuïc – a atroz prisão em que os inimigos do regime espanhol eram presos, torturados e executados. É nela que podemos encontrar presos cubanos, filipinos e europeus, indivíduos cujas lutas já lhes haviam aproximado nas cosmopolitas cenas políticas de capitais europeias como Paris e Londres e que agora compartilhavam infortúnios comuns. Anderson, inclusive, dedica certa atenção às fascinantes vidas de diversos desses indivíduos, incluindo artistas, terroristas, anarquistas, etc. (e que frequentemente podiam ser definidos por mais de um desses adjetivos). Sinal dos frutos dessas conexões é que Isabelo, após sair da prisão, e impedido de criar seus jornais e partido nacionalista nas Filipinas ocupadas pelos Estados Unidos, resolve organizar os trabalhadores filipinos com base na experiência anarquista espanhola que havia conhecido e admirado de seus colegas de prisão.
Cabe dizer, por fim, que embora seja um livro de historiador acadêmico, sua leitura é prazerosa, sendo quase um “romance histórico”. O único “contra” de sua abordagem é que o autor, priorizando a narrativa, não realiza reflexões pontuais sistematizando as conexões e conclusões levantadas, isso exige que o próprio leitor se atente para perceber seus insights teóricos e conclusões de maior fôlego, podendo passar batido por esses enquanto vamos deslindando as diversas e interessantes vidas que passam pela caneta do autor.
]]>Saturno é um gigante gasoso, o segundo maior planeta do sistema solar (perdendo apenas para Júpiter) e o sexto a partir do Sol (estando entre Júpiter e Urano).
Embora Saturno não seja tão menor que Júpiter (Saturno tem 120.000 km de diâmetro e Júpiter tem 142.800km), vemos ele muito menor no céu. Isso se dá por causa da distância, Saturno está 2 vezes mais longe do Sol que Júpiter (enquanto Júpiter está a aproximadamente 5 UA do Sol, Saturno está a 10 UA). Ps: UA significa Unidade Astronômica e representa a distância média entre o Sol e a Terra.
Sem falar nas luas de Saturno, que dado a grande distância, mal são visíveis com pequenos telescópios. Enquanto podemos enxergar as 4 luas (conhecidas como galileanas) de Júpiter utilizando binóculos, Saturno exige um pequeno telescópio para ver mesmo a maior e mais brilhante de suas luas: Titã.
Esse é o registro efetuado às 23h06m de 01/07/2018 de Saturno e sua lua Titã:
Para conseguir capturar a lua Titã utilizamos um tempo de exposição que sacrificou detalhes de Saturno. O que torna Titã tão especial é que, além de ser a segunda maior lua do sistema solar, é a única com atmosfera densa e o único corpo celeste, além da Terra, com rios e lagos na superfície (porém em vez de água temos hidrocarbonetos). Ps: No verbete da Wikipedia podemos ver os lagos e mesmo a superfície de Titã.
Dado a essa distância absurda e ao fato das bandas de nuvens que compõem a atmosfera de Saturno não possuírem contraste visual tão grande quanto Júpiter, a superfície do planeta não apresenta uma game de detalhes tão visíveis quanto Júpiter. Em compensação, Saturno exibe seus brilhantes anéis de forma que nenhum outro planeta do sistema solar possa competir.
No registro abaixo, efetuado aproximadamente às 22:30 de 01/07/2018, podemos ver Saturno e seus anéis:
[ATUALIZAÇÃO: Consegui um registro superior após 2 semanas. O mesmo foi efetuado às 21:22 de 15/07/2018]
Embora seja um simples registro amador, podemos ver alguns detalhes interessantes:
Cabe dizer que esses registros foram realizados próximos da oposição de Saturno (e com um pequeno telescópio - abertura de 90mm). Esse é o momento mais adequado para observar Saturno pois é quando estamos mais próximos (e ocorre o alinhamento “Sol - Terra - Saturno”). Nesse momento, 01/07/2018, Saturno estava a “apenas” 1 bilhão 354 milhões de quilômetros de nós e as posições do Sol, Terra e Saturno estavam assim:
Se você chegou até aqui, não deixe de ver as fotos incríveis de Saturno tomadas pelas sondas que visitaram o planeta. O verbete da Wikipedia é um bom lugar para começar.
]]>Acima vemos Vesta num registro tomado pela sonda espacial Dawn. Como podemos ver, Vesta é um pedregulho de forma irregular. A foto foi realizada em 24/11/2011 a uma distância de 5.200 quilômetros (a Terra está a mais de 170 milhões de quilômetros de distância do asteroide). Apesar da distância da Terra, ocasionalmente o asteroide é visível até mesmo a olho nu em locais com céu bem escuro.
Vesta está localizado no cinturão de asteroides entre Marte e Júpiter e é o segundo objeto mais massivo do cinturão (superado apenas pelo planeta anão Ceres).
O asteroide possui 530 quilômetros de diâmetro, uma temperatura que oscila entre -188 à -18 graus Celsius e leva aproximadamente 3,63 anos para dar uma volta no Sol. Quando está mais próximo do Sol (periélio), ele está a uma distância 2,15 vezes a distância da Terra ao Sol e quando está mais longe do Sol (afélio), a uma distância de 2,57 vezes a distância da Terra ao Sol.
O momento mais apropriado para tentar registrar Vesta é na chamada “oposição”.
A oposição é quando Vesta se encontra mais próximo da Terra (e a Terra está entre o Sol e Vesta). Nesse momento Vesta pode estar até uma distância de 1,14UA (aproximadamente, a mesma distância entre a Terra e o Sol).
Em 2018, esse momento, a “oposição”, ocorreu em 19/06/2018. E aproveitei para fazer um registro com máquina fotográfica.
Naquela noite, as posições da Terra, do Sol e de Vesta eram essas:
Segue o registro efetuado:
Não dá de entender muita coisa né?
Bom, segue uma imagem com os objetos mais proeminentes marcados. Em roxo vemos destacados o planeta Saturno (o objeto mais brilhante) e o asteroide Vesta (fraquinho).
Pode parecer sem graça, mas acho incrível que, sem telescópio, consigamos registrar um pedregulho de 530 quilômetros a uma distância de 170 milhões de quilômetros (1,14UA). É a primeira vez que registro um objeto que não seja uma estrela, um planeta ou um satélite (como a Lua).
Quem nunca foi salvo por um PDF para estudar na universidade?
Quem costuma estudar por PDFs deve estar acostumado a encontrar PDFs de toda qualidade. Desde aqueles que são nada mais que fotos grosseiras e desfocadas de um xerox de 2 páginas lado-a-lado até aqueles que cada página está visível e bem enquadrada (para ler num e-reader) e podemos selecionar/copiar/colar o texto com o mouse.
Veremos aqui como fazer PDFs desse último tipo. E no GNU/Linux, tudo software livre!
O aplicativo utilizado será o software livre gscan2pdf.
Caso tenhas escaneado 2 páginas de cada vez (lado-a-lado) ou, simplesmente, que deseje recortar a página para um tamanho menor … podemos usar a ferramenta “Cortar”. No primeiro caso, é importante recortar para que o OCR analise o conteúdo de texto de cada página sem misturar as páginas. E em ambos os casos, é vantajoso recortar para que o conteúdo caiba em pequenos dispositivos (como leitores de ebook).
Há duas situações em que recortar as páginas é extremamente útil.
A primeira é quando o material escaneado é composto por folhas contendo duas páginas.
A segunda é quando a página possui grandes margens que tornam a leitura inadequada em e-readers.
Para ambos os casos, podemos seguir os passos abaixo:
[OPCIONAL] Caso exista mais de uma página por folha escaneada:
Vá na lista de folhas (coluna da esquerda) e com um “Ctrl + C”/“Ctrl + V” duplique as folhas.
Isso porque a página recortada substitui a folha escaneada … e se temos mais de uma página por folha, necessitaremos de tantas cópias de folha quanto páginas ela contenha.
Vá em “Visualizar” → “Selecionar” e faça um molde de corte que acomode de forma “justa” a página.
[DICA] Escolha uma página de texto padrão para usar seu futuro corte como molde para todas as páginas.
(Normalmente, páginas de capa, sumário, etc., não são bons moldes. Páginas de texto de meio de capítulo são boas pois usam todo o espaço possível e, portanto, não corremos risco de fazer um molde de corte menor que o necessário.)
Vá em “Ferramentas” → “Cortar”:
1. “Seleção de páginas” → “Selecionado”.
1. Pressione “Aplicar”. Pronto!
{% asset_img sample.jpg "Cortar folha" %}- Caso o corte seja exatamente o mesmo em diversas folhas:basta selecionar todas as folhas desejadas antes de utilizar a ferramenta "Cortar".- Caso o corte algo seja diferente em cada página: Pelo menos, cortamos a primeira de nossas páginas e temos um molde! Para as próximas páginas: 1. Clique na próxima página da lista. 1. Acomode o molde de corte na área desejada. 1. Repita o passo de ir em "Ferramentas" → "Cortar", "Aplicar".
Salvando
Vá em “Arquivo” → “Salvar”:
Secção atualizada (agora temos um software livre e muito mais fácil e prático)
A ferramenta é o software livre pdfsandwich. Utilize o passo-a-passo aqui.
Obs: O gscan2pdf também faz todas as funções listadas abaixo mas ele é pesado com grandes PDFs e tem algumas incompatibilidades, por isso cito ferramentas alternativas como um bônus.
Caso seu texto esteja com as páginas fora de ordem:
Basta abrir o PDF e ir arrastando as páginas para a ordem desejada.
Faremos isso através do PDF Mod.
Abra o último PDF (relativo às páginas) no PDF Mod e vá adicionando os PDFs em ordem decrescente. Para adicionar um PDF: “Arquivo” → “Inserir de…”.
Seguir a ordem decrescente é necessário porque cada novo PDF inserido tem suas páginas colocadas no início do PDF final.
Pronto, temos todas as páginas reunidas e prontas para serem salvas num único PDF.
Obs: Já ensinamos como recortar páginas acima com o gscan2pdf.
Ensinaremos aqui a fazer o mesmo com uma ferramenta alternativa chamada PDF-Shuffler (também é software livre).
A maior motivação para usar essa ferramenta é que ela é muito mais rápida para abrir PDFs com grande quantidades de páginas (casos em que o gscan2pdf demora muito e pode até travar).
O crop é prático especialmente quando todas as páginas tem as mesmas regiões em branco. Pode-se aplicar um mesmo crop a todas as páginas desejadas. É prática para xerox contendo 2 páginas por folha (primeiro aplicamos um crop de “50% à direita” para pegarmos a página da esquerda, depois um crop de “50% à esquerda” para pegarmos a página da direita).
Como fazer:
Edit
→ Crop
.Obs: Os metadados serão apagados ao salvar. Teremos de usar uma ferramenta como o PDF Mod para adicionar novamente os metadados.
Podemos utilizar o software livre PDF Mod para definir os metadados. Com ele podemos editar os metadados: Título, Autor, Palavras-chave, Assunto.
Isso é muito útil quanto temos um PDF com metadados incorretos e que por isso dificultam seu uso em e-readers.
Para isso, basta:
Arquivo
→ Propriedades
.(Outra alternativa mais flexível e poderosa que o PDF Mod é o utilitário de linha de comando exiftool, mas isso fica para outro post.
Ah, um exemplo rápido: $ exiftool -Title="As estrelas descem à Terra" -Author="Theodor W Adorno" -Subject="Sociology" -Keywords="Sociology, Astrology" Livro_do_Adorno.pdf
)
Com o passo-a-passo acima temos os meios para gerar bons PDFs sem gastar nenhum tostão.
Eles são adequados para ler em e-readers e para marcarmos o texto com anotações e destaques.
Ora disponível, ora indisponível, no menu do gerenciador de arquivos.
Já havia me resignado a simplesmente sempre usar o Shift
+ Delete
e excluir permanentemente.
Até hoje.
Em uma rápida pesquisa, descobri o motivo.
O GNU/Linux necessita de um diretório para a “Lixeira” em cada partição em que queremos utilizar essa funcionalidade.
(Sim, ele não joga tudo na Lixeira dentro do diretório “Home” de seu usuário. Há uma Lixeira para os arquivos de cada partição - e é única para cada usuário.)
Se ele não puder criar ou encontrar esse diretório, apenas teremos a opção de “excluir permanentemente” no gerenciador de arquivos.
Então … basta criar um diretório para a “Lixeira do usuário” na partição em que queremos utilizar essa funcionalidade?
Sim!
Funciona da seguinte maneira:
No diretório raiz da partição deve existir um diretório para a “Lixeira do usuário” com o seguinte nome: .Trash-<uid>
. Sendo o uid
o id do usuário. Exemplo: Usuário joao
tem o uid
1000
, então criaremos o diretório .Trash-1000
na raiz da partição.
Vejamos um passo a passo para o usuário joao
na partição montada em /mnt/sdc1
:
0. Descubra o uid
(user id) e o gid
(group id) do usuário joao
:
1 | $ id joao |
joao
(uid
= 1000
):1 | # mkdir /mnt/sdc1/.Trash-1000 |
joao
(uid
= 1000
, gid
= 1000
):1 | # chown 1000:1000 /mnt/sdc1/.Trash-1000 |
Já sabemos que em outras partições, a Lixeira é encontrada na raiz da partição utilizando o formato .Trash-<uid>
. Mas e no diretório Home do usuário, onde está a Lixeira?
De acordo com as convenções da especificação do Freedesktop.org, a Lixeira está em $XDG_DATA_HOME/Trash
, sendo que o padrão da variável $XDG_DATA_HOME
é $HOME/.local/share
.
Ou seja, no caso do usuário joao
é: /home/joao/.local/share/Trash
.
Quem nunca deletou via linha de comando, sem querer, um arquivo essencial?
Para evitarmos acidentes podemos utilizar também a Lixeira via linha de comando ao apagarmos arquivos e diretórios. Assim, temos uma chance de desfazer a lambança em caso de erro.
Primeiro devemos instalar o trash-cli
, um conjunto de utilitários de linha de comando para Lixeira. No caso do Fedora:
1 | # dnf install trash-cli |
Agora vejamos, alguns dos comandos mais importantes:
Para enviar arquivos para a Lixeira basta substituir o rm
por trash
:
1 | $ trash arquivo-a-ser-enviado-para-Lixeira |
Para retirar arquivos da Lixeira:
1 | $ trash-restore /diretorio/com/arquivos/colocados/na/Lixeira |
Será oferecido a lista de arquivos colocados na Lixeira desse diretório para restauração.
Para listar os arquivos da Lixeira:
(apenas lista o conteúdo da Lixeira no diretório Home do usuário)
1 | $ trash-list |
Para limpar a Lixeira (<dias>
é opcional. Define que devem ser excluídos apenas arquivos mais velhos que tantos dias):
(apenas limpa o conteúdo da Lixeira no diretório Home do usuário)
1 | trash-empty <dias> |
trash-cli
.Exemplos disso, são áudios em portais web como os audiobooks da ******. Nesse caso, podemos escutar o áudio dos audiobooks via navegador de internet mas não podemos baixar os referidos audiobooks.
A solução está em interceptar o áudio que está sendo reproduzido via servidor de som “PulseAudio” e gravar seu conteúdo utilizando o editor de áudio “Audacity“. Tudo software livre.
Necessitaremos de um sistema GNU/Linux utilizando “PulseAudio” com os softwares “PulseAudio Volume Control (pavucontrol)” e “Audacity” instalados.
O Fedora 2x (e diversas outras distros) preenchem todos os requisitos.
sudo dnf install audacity
sudo dnf install pavucontrol
Não vou repetir o que já está documentado (como dito acima, isso aqui é mais uma dica). Basta seguir o passo a passo em Tutorial - Recording Computer Playback on Linux - Audacity Development Manual (seção “PulseAudio”). Caso esteja fora do ar, segue o PDF salvo em 03/2018.
]]>É a constelação de Órion (o caçador). Vejamos uma composição de fotos que realizei com máquina fotográfica comum em Florianópolis:
Olhos não acostumados com a constelação poderão passar batido mesmo pelas famosas 3 Marias que a compõem. Vamos então acrescentar algumas anotações:
Agora sim! Repare na parte mais famosa dela, as 3 Marias (Alnitak, Alnilam, Mintaka) que formam o cinturão do caçador.
As estrelas brilhantes Rigel e Betelgeuse (uma gigante vermelha) também são bonitos destaques.
Um pouco offtopic, mas é legal lembrar que por meio das 3 Marias podemos localizar a constelação de Touro e do Cão Maior (pq elas formam uma linha com as estrelas mais brilhantes dessas constelações - Aldebaran de Touro e Sirius de Cão Maior).
Mas o verdadeiro destaque está reservado para quem tem um pequeno binóculos ou telescópio!
É a Nebulosa de Órion, fica perto das 3 Marias, e é nada menos que um berçário de estrelas (o mais próximo da Terra)!
Na registro acima (ou com bom olho nú) ela parece uma estrela meio indefinida (anotada com um círculo em rosa) …
Mas quando aproximamos um bom punhado de vezes … vemos seus segredos:
Repare na nuvem de gás e poeira interestelar que a constitui! É em locais assim que nascem as estrelas (estima-se que tenha mais de 1000 estrelas jovens e mais de 700 em várias fases de formação)!
Reparem na foto acima, que no centro da nuvem de gás, temos um conglomerado de estrelas … ele se chama Trapézio!
Para não ficar dúbio, segue a mesma imagem porém com os elementos da nebulosa anotados:
Com meu limitado equipamento podemos ver 4 estrelas do conglomerado estelar Trapézio (as estrelas A, B, C, D). Cada uma dessas estrelas estão dentro de um diâmetro de 1.5 anos luz uma da outra e são responsáveis por boa parte da iluminação que nos permite ver a nebulosa ao redor (a nuvem de gás e poeira interestelar … SIM, é essa “fumacinha”)! Parte significativa das estrelas existentes dentro do Trapézio estão entrando na fase de criação de seus sistemas planetários (alô, nova Terra! alô, nova Marte, Júpiter, Saturno, etc.).
Logo acima do Trapézio, temos o sistema estelar múltiplo θ2 Orionis, que possui três estrelas visíveis nessa foto (θ2 Orionis A, θ2 Orionis B, θ2 Orionis C)!
Encerro informando que essas fotos foram batidas em Florianópolis com equipamento amador (Telescópio Skywatcher Maksutov 90mm com tripé EQ1 + Câmera DSLR). O registro da constelação de Órion foi feito no sul da ilha em 06/02/2016 e o registro detalhado da Nebulosa de Órion foi realizado em 31/01/2018.
Por fim, fiquem com a primeira foto batida da Nebulosa de Órion (em 1880):
… e um link para a imagem produzida pelo Hubble mostrando toda a glória da Nebulosa de Órion.
Abraços.
]]>Mas antes de mais nada, uma introdução do que é Júpiter:
Júpiter é o maior planeta do Sistema Solar, tanto em diâmetro quanto em massa e é o quinto mais próximo do Sol. Possui menos de um milésimo da massa solar, contudo tem 2,5 vezes a massa de todos os outros planetas em conjunto. É um planeta gasoso junto com Saturno, Urano e Neptuno. (…), isto é, não é composto primariamente de matéria sólida. (ref)
Júpiter é tão grande que seu diâmetro é 11,2 vezes maior que o da Terra. Ou seja, poderíamos colocar 11,2 Terras lado a lado para preencher a cintura de Júpiter. Outra forma de compreender seu tamanho é considerar que podemos colocar mais de mil Terras (1321,3 Terras, para ser exato) dentro de Júpiter.
Apesar da grandeza, Júpiter está bem longe da Terra. No momento de maior proximidade, está a 628 milhões de quilômetros de nós, e no de maior afastamento está a 928 milhões de quilômetros. Isso corresponde, respectivamente, à 4,2 e 6,2 vezes a distância da Terra ao Sol.
O planeta gigante, normalmente, é o quarto objeto mais brilhante no céu, perdendo apenas para o Sol, a Lua e a vizinha Vênus. Inclusive, às vezes pode ser visto durante o dia!
Aqui está uma foto de Júpiter às 5:50 da manhã de 27/02/2016 (usando uma câmera Canon EOS Rebel T3):
Para ilustrar a diferença de brilho entre Vênus e Júpiter (algo que não é estático), coloco aqui uma foto de ambos que foi batida com celular às 18 horas de 29 de junho de 2015. Os dois planetas estão no centro da foto, com Vênus no centro e logo acima, um pouco à direita, e menos brilhante, Júpiter.
Nesse momento, Júpiter e Vênus estavam, como vistas da Terra, “próximas” … mas na verdade estavam bem distantes uma da outra. Isso ocorre por causa do alinhamento dos 2 planetas como visto da Terra. Veja a posição dos 3 planetas no dia da foto:
Após capturar algumas fotos de Júpiter com máquina fotográfica sem zoom, comecei a tentar capturar fotos usando uma câmera DSLR (Canon EOS Rebel T3) “plugada” num telescópio Skywatcher Maksutov 90mm. O “zoom” da combinação de ambas é grosseiramente algo como 47x.
O resultado é incrível :D. Júpiter não é mais um pontinho brilhante no céu. Podemos ver ele como um disco bem como suas quatro maiores luas.
Segue uma foto de 17/02/2016:
Segue a mesma foto recortada e com legenda:
Júpiter possui 67 luas conhecidas. Mas com telescópios pequenos podemos ver apenas as 4 maiores. São as chamadas luas galileanas porque quem as descobriu foi Galileu em 1609/10. A descoberta delas orbitando Júpiter foi um duro golpe ao geocentrismo porque ficou comprovado que nem tudo girava ao redor da Terra.
Na foto vemos as luas Io (com mais de 400 vulcões, único lugar no sistema solar com vulcanismo ativo conhecido além da Terra), Europa (que possui um oceano logo abaixo da crosta de gelo e pode conter vida) e Calisto. A outra lua galileana, Ganímedes (maior lua do sistema solar, maior que Mercúrio), não estava visível porque estava passando bem na frente de Júpiter (fenômeno conhecido como “trânsito”, no caso, trânsito de Ganímedes).
Bem, se realmente são luas e não estrelas … elas orbitam ao redor de Júpiter, correto? Correto.
Então, se esperarmos alguns dias … elas devem estar em outra posição, correto? Correto.
Aqui vem outra foto de Júpiter, com o mesmo equipamento, 10 dias depois da primeira:
Segue a mesma foto recortada e com legenda:
Após 10 dias, (17/02 -> 27/02), podemos confirmar o baile das luas ao redor de Júpiter em 2 atos :D
As luas estão em posições diferentes em suas órbitas ao redor do gigantesco Júpiter.
E se no dia 17 a lua Ganímedes não saiu na foto porque estava bem na frente de Júpiter, agora, dia 27, é a vez da lua Io não estar visível porque estava detrás de Júpiter (fenômeno conhecido como “ocultação”, no caso, ocultação de Io).
Isso tudo é muito interessante, mas como qualquer pessoa, eu queria ver Júpiter com mais detalhes :D
Foi aí que entrou na parada a câmera planetária ZW Optical ASI120MC. O pequeno telescópio Skywatcher Maksutov 90mm possui uma ampliação útil de aproximadamente 200x. A combinação câmera ASI120MC + Maksutov 90mm dá uma aproximação um pouco acima desse valor: ~208x.
O método para gerar a imagem é diferente de um simples click. Ao invés de 1 simples foto (frame), geramos uma imagem a partir da combinação de centenas de frames. E por meio de programas de computador, os frames são combinados e tratados para melhorar a nitidez e gerar uma única imagem com bem mais qualidade. (Foram usados os softwares FireCapture, SharpCap, AutoStakkert! 2 e Registax 6.)
Sem mais conversas, essa é a foto de Júpiter feita em 15/04/2016 (+- entre 00:00 e 01:30AM):
Legal né? Finalmente os detalhes da “superfície” do planeta se revelam para nós :D.
Tenham em mente que nessa foto, Júpiter esta à “apenas” 694 milhões de quilômetros de nós.
Na foto é possível ver Júpiter e 2 luas galileanas (Ganímedes e Europa) como 2 pontinhos, um em cada lado da cintura do planeta.
Eu falei que o planeta é gasoso, né? Pois bem, essas manchas que percorrem Júpiter de lado a lado com padrões claros e escuros são nuvens que cobrem esse gigantesco planeta gasoso.
Então, na foto vemos apenas as nuvens no topo do planeta. Essas são feitas de materiais residuais como gelo de amônia e gelo de água. Mas a maior parte do planeta é composta de hidrogênio e hélio (como o Sol).
Essas nuvens formam bandas claras e escuras que se alternam. As claras são chamadas de “faixas” e as escuras de “cinturões”.
O dia em Júpiter dura apenas 9 horas e 55 minutos. O planeta gira tão rápido que a rotação incha o equador e achata os polos. Na foto, podemos ver que o planeta não é bem esférico, mas possui uma forma oblata.
Dado que Júpiter gira tão rápido, podemos perceber com o intervalo de horas a rotação do planeta ao acompanharmos alguns elementos do planeta se “movendo” no disco do planeta.
E nada é mais visível que a “Grande Mancha Vermelha”. Essa mancha é uma enorme tempestade que dura pelo menos desde o século XIX e possui um diâmetro que abarca 2 ou 3 planetas Terra!
A Grande Mancha está situada no cinturão equatorial sul, logo abaixo do equador.
Pois bem, meu novo objetivo era registrar uma imagem da “Grande Mancha Vermelha”. E isso ocorreu em 12 de junho:
Perceba a Grande Mancha Vermelha no centro do planeta, um pouco acima da linha do Equador (o Sul é para cima). Na foto também estão visíveis (muito ruim de ver) as luas Io (no lado direito), Europa (no lado esquerdo) e Ganímedes (mais à esquerda de Europa). Nessa imagem, Júpiter estava a 820 milhões de quilômetros (ou seja, afastou-se bastante desde a foto de 15 de abril).
Bom, era isso. Se ficou interessado … a sonda Juno chegará em Júpiter em 04/07/2016 após uma viagem de quase 5 anos (foi lançada em agosto de 2011). Entre um de seus objetivos está descobrir se Júpiter possui um núcleo sólido. A sonda irá orbitar o planeta por 20 meses e certamente teremos fotos bem melhores que as minhas :D Fique antenado nas fotos incríveis que surgirão a partir do próximos mês na internet.
Update: Em 09/07/2019 consegui registros melhores. Júpiter distava 657 milhões de quilômetros da Terra.
Na animação abaixo estão contidas 6 registros que abarcam um período de 11 minutos. Mesmo com a curta duração já é possível registrar os efeitos da rotação de Júpiter.
]]>Ah, o setup considera minha realidade de trabalho (ES6, JSX). Se você ainda usa ES5 … não sabe a diferença … melhorou muito :D
Há varios linters por aí, como os famosos JSlint, JSHint, JSCS, ESLint.
O mais recente desses 4 linters populares é o ESLint e o mesmo tem chamado a atenção por causa de seus recursos.
O ESLint possui features interessantes como:
Devido a essas características, optamos pelo ESLint. Ver mais aqui.
Para deixá-lo ainda mais versátil utilizamos conjutamente com:
"no-unused-vars"
não detectar o uso de vars na sintaxe JSX)Vejamos o setup do mesmo tanto no âmbito do sistema operacional (global) quanto de um determinado projeto (local):
$ sudo npm install --global eslint
$ npm install --global babel-eslint@next
$ sudo npm install --global eslint-plugin-react
$ eslint --init
(será criado no dir atual)~/
~/
de acordo com suas preferências (ver site oficial por documentação ou exemplo comentado abaixo).Notas:
eslint --init
permite escolher). Optei por JS por permitir comentários e etc (com o devido highlight de IDEs).eslint
, esse será utilizado ao invés do arquivo em ~/
.$ sudo npm uninstall --global eslint babel-eslint eslint-plugin-react
$ rm ~/.eslintrc*
O linter pode ser facilmente utilizado através da invocação de linhas como:
$ eslint file1.js file2.js
$ eslint lib/**
Para mais info ver a documentação oficial.
Se quisermos utilizar o eslint apenas num projeto, podemos instalar ele localmente no projeto. Entre as vantagens, está o fato de podermos usar uma determinada versão com uma certa configuração e plugins específicos e de levarmos essa configuração (no package.json
) junto com o projeto (que já estará corretamente configurado para uso por terceiros).
$ cd ./projeto
$ npm install --save-dev eslint
$ npm install --save-dev babel-eslint@next
$ npm install --save-dev eslint-plugin-react
$ cd ./projeto
$ eslint --init
(será criado no dir atual)Notas:
~/
(se houver).$ npm uninstall --save-dev eslint babel-eslint eslint-plugin-react
$ rm ./projeto/.eslintrc*
A única diferença para a utilização do eslint instalado globalmente é que devemos apontar para seu executável dentro de seu dir em node_modules
. Exemplo: ./node_modules/eslint/bin/eslint.js index.js
~/
~/
, com rules que sejam interessantes independente das particularidades de um determinado projeto."off"
ou 0
), emitindo aviso ("warn"
ou 1
) ou emitindo erro ("error"
ou 2
). Exemplo: "indent": [2, 4]
(ou "indent": ["error", 4]
) emite error quando identação for != de 4 espaços.1 | 7:9 error Expected '===' and instead saw '==' eqeqeq |
==
quando era esperado ===
. A regra que emitiu esse erro foi eqeqeq
.Arquivo de configuração funcional comentado (.eslintrc.js
)
1 | module.exports = { |
Para utilizar o ESLint em conjunto com o editor Atom, o pacote mais famoso é o linter-eslint.
Basta instalar o pacote linter-eslint
desde o Atom.
O linter-eslint
depende do pacote linter
e irá instalar esse automaticamente caso necessário.
Caso você utilize o Nuclide sobre o Atom, o mesmo utiliza uma solução alternativa ao pacote linter
, chamada nuclide-diagnostics. Qualquer pacote (incluindo o linter-eslint
) que funcione com o linter
funciona com o nuclide-diagnostics
, de modo que apenas um dos dois deve estar habilitado. Caso os dois estejam habilitados ao mesmo tempo, veremos uma UI duplicada para exibir dados do linter durante a utilização.
O linter-eslint
, por padrão, tentará utilizar uma versão do eslint
local ao seu projeto (vimos como instalar localmente acima). A versão local é buscada em projeto/node_modules/eslint
. Se a versão local não for encontrada, será utilizada uma que vem com o pacote. Caso desejado, podemos via configuração espeficicar para o linter-eslint
utilizar um eslint
instalado globalmente.
Para utilizar plugins do ESLint, basta que estes estejam instalados localmente no seu projeto conjuntamente com o ESLint (também visto acima). A outra opção é instalar tanto o ESLint quanto seus plugins globalmente (também visto acima) e habilitar nas configurações do pacote linter-eslint
(via interface) a opção Use Global Eslint
para utilizar o eslint
instalado globalmente.
A localização do arquivo de configuração do ESLint utilizado pelo linter-eslint
segue as mesmas regras utilizadas normalmente pelo eslint
(ver acima).
Obs: Versões utilizadas na confecção do post:
O post segue o formato “receita-de-bolo” e é destinado ao “eu-do-futuro-que-esqueceu-isso”. Mas pode ser útil para terceiros que sabem o que é um static type checker e conheçam JavaScript :D.
O suporte ao Flow dentro do Atom é mais completo utilizando o pacote Nuclide que é desenvolvido também pelo Facebook e visa oferecer um ótimo suporte às tecnologias da empresa (como React, react-native, flow, …). Portanto, instalaremos tanto o Flow quanto o Nuclide.
Nota: Atualmente o Flow não funciona em Windows. Apenas GNU/Linux e Mac. O Nuclide funciona apenas parcialmente em Windows.
unzip ./path/flow-linux64-v0.22.1.zip
. Pronto! Será criado o dir flow
com o binário flow
dentro./usr/local/bin
ou de alguma outra forma inserir o binário no $PATH
do user ou sistema.nuclide
via interface do Atom.linter
(caso esteja instalado), deixando o Nuclide utilizar sua solução própria (nuclide-diagnostics) e que é compatível com todos os plugins que dependem do linter
.Nota: A instalação do nuclide
pode ser objeto de alguns cuidados posteriores para uma experiência mais completa: http://nuclide.io/docs/editor/setup/
Para utilizarmos o flow necessitamos que o projeto atenda dois requisitos:
.flowconfig
). O mesmo pode ser criado sem conteúdo ($ touch ./projeto/.flowconfig
) ou através do comando “$ flow init
“ que criará no dir em que for invocado um arquivo com as seções básicas de configuração do flow vazias.
Ao ser invocado, o flow irá buscar pelo .flowconfig
no dir em que for invocado, caso não encontre, tentará nos dirs pais.
2. Somente serão checados os arquivos JavaScript que possuam o comentário “// @flow
“ no topo do arquivo. Isso permite utilizarmos o flow de forma incremental em projetos.
Para utilizar o flow via prompt, basta invocarmos no dir do projeto: $ flow
. Se desejarmos um arquivo em específico: $ flow arquivo.js
. Mais informações na documentação oficial.
Para utilizar o flow via Atom, tendo o projeto atendido as 2 necessidades elencadas acima, basta ter instalado o Nuclide.
Saber configurar o .flowconfig
é essencial para que o flow funcione de forma rápida e sem jogar uma avalanche de alertas caso suas dependências também sejam passíveis de análise pela ferramenta.
Em meu caso, ao desenvolver utilizando o react-native houve sérios problemas de performance pois o .flowconfig
oferecido varria todas as dependências do projeto. A solução foi ignorar os arquivos existentes em projeto/node_modules
e adicionar interfaces para que o flow não reclamasse dos módulos importados de node_modules
em meu código (e que o mesmo não estava apto a encontrar pois eu forçava que fossem ignorados).
A configuração do .flowconfig
foi feita da seguinte forma:
ignore
foi adicionado o dir node_modules
:1 | [ignore] |
libs
foi apontado o dir contendo as declarações de interfaces para módulos que o flow não irá encontrar (pq são códigos de terceiros localizados em node_modules
que optamos por ignorar):1 | [libs] |
No dir projeto/flow-interfaces
adicionamos o arquivo react-native.js
com interface para o módulo react-native
. O arquivo ficou assim:
1 | declare module "react-native" { |
Essa é só uma passada superficial pelo .flowconfig
, mais informações sobre o mesmo na documentação oficial e, mais especificamente, como lidar com código de terceiros aqui.
Ps: Atenção que se o .flowconfig
possuir a sessão [version]
, a versão do flow deve ser atendida, caso contrário o mesmo não será executado.
Obs: Versões utilizadas na confecção do post:
O screenFetch é um pequeno bash script (software livre, GPLv3) que serve para printar no terminal um belo logo da tua distro junto com informações do sistema. Veja abaixo o output no Fedora que atualmente utilizo:
É um daqueles scripts que todo mundo conhece, menos tu, e achei interessante divulgar para algum desavisado :D
Para instalar no Debian/Ubuntu:
1 | # apt-get install screenfetch |
Para instalar no Fedora:
1 | # dnf install screenfetch |
Para executá-lo:
1 | $ screenfetch |
Manual do screenFetch:
1 | $ man screenfetch |
Cenário:
Aviso 1: Como TRIM essencialmente torna claro quais blocos no drive estão em uso e quais não, TRIM é desabilitado por default na camada LUKS. Habilitar TRIM irá vazar um pouco de informação (quantos bytes são usados por sua partição encriptada) e não deveria ser usado em cenário histéricos (a CIA atrás de você).
Aviso 2: O TRIM deve ser aplicado em todas as camadas intermediárias entre o SSD e o filesystem (em nosso caso: dm-crypt, lvm, filesystem).
Em /etc/default/grub
, adicione p/ as linhas GRUB_CMDLINE_LINUX_DEFAULT
e GRUB_CMDLINE_LINUX
:
1
cryptdevice=/dev/sdaX:vg_name:discard
Substitua /dev/sdaX
pela partição contendo seu volume LUKS e vg_name
pelo nome de seu LVM volume group (comando vgscan
informa os LVM volume group existentes).
Ex:
1
2GRUB_CMDLINE_LINUX_DEFAULT="quiet cryptdevice=UUID=989595eb-5327-4c09-adc3-63c4a0c16541:dread-note-vg:discard"
GRUB_CMDLINE_LINUX="cryptdevice=UUID=989595eb-5327-4c09-adc3-63c4a0c16541:dread-note-vg:discard"
Camada dm-crypt:
Atualize o grub:
1 | # update-grub |
Camada dm-crypt:
Atualize o arquivo /etc/crypttab
adicionando ,discard
p/ o quarto campo de cada partição encriptada.
Ex:
1 | sda5_crypt UUID=989595eb-5327-4c09-adc3-63c4a0c16541 none luks,discard |
Camada LVM:
Em /etc/lvm/lvm.conf
habilite o TRIM substituindo 0
por 1
na linha:
1 | issue_discards = 1 |
Camada LVM || dm-crypt:
Atualize seu initramfs (necessário para mudanças no LVM e/ou dm-crypt):
1 | # mkinitramfs -o /boot/initrd.img-`uname -r`. |
Camada Filesystem:
É o suficiente executar fstrim
semanalmente. Portanto não adicione a opção em /etc/fstab
, mas crie o seguinte script para ser executado semanalmente (arquivo /etc/cron.weekly/fstrim
):
1 |
|
O arquivo /etc/cron.weekly/fstrim
deve possuir permissão de execução:
1 | # chmod +x /etc/cron.weekly/fstrim |
Os pontos de montagem (/
, /boot
, /data
) devem ser ajustados à sua realidade. Você receberá um e-mail semanal da quantidade de espaço “trimada“ (trim == aparar/cortar), se preferir não receber … basta remover o argumento -v
do fstrim
.
Para testar se o script está ok, execute os scripts do diretório /etc/cron.weekly
e veja se ele é executado: # run-parts /etc/cron.weekly -v
. O parâmetro -v
informa o script sendo executado. Exemplo:
1
2
3
4
5
6root@dread-note:~# run-parts /etc/cron.weekly -v
run-parts: executing /etc/cron.weekly/0anacron
run-parts: executing /etc/cron.weekly/fstrim
/: 81,7 GiB (87722549248 bytes) descartado
/boot: 200,9 MiB (210626560 bytes) descartado
run-parts: executing /etc/cron.weekly/man-db
Por meio do log /var/log/syslog
podemos verificar a execução dos jobs semanais (procure pela palavra weekly
no log). Exemplo:
1
2
3
4Feb 17 10:43:23 dread-note anacron[884]: Job `cron.weekly' started
Feb 17 10:43:23 dread-note anacron[2559]: Updated timestamp for job `cron.weekly' to 2015-02-17
Feb 17 10:43:24 dread-note anacron[884]: Job `cron.weekly' terminated
Feb 17 10:43:24 dread-note anacron[884]: Normal exit (3 jobs run)
- **Obs**: Em 09/03/2015 existia um bug em que o cron.weekly podia não ser executado, em certas circunstâncias, pelo anacron no Debian Jessie - que era *testing* - ([#744753 - anacron: Anacron not triggered when system resumes under systemd - Debian Bug report logs](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=744753)). Não sei se está corrigido atualmente no Jessie como *stable*. Mas sempre podemos invocar manualmente ... ou utilizar outros esquemas para rodar de tempos em tempos.
Para verificar se funcionou, reinicie e teste:
Ao executar # dmsetup table
haverá allow_discards
no final da linha correspondente ao seu block device c/ LUKS.
Exemplo: sdaX_crypt: 0 929880064 crypt aes-xts-plain64 0...0 0 8:X 4096 1 allow_discards
Ao executar # fstrim -v /
, não haverá a reclamação fstrim: /: não há suporte a operação de descarte
, e o fstrim concluirá seu trabalho com sucesso: /: 83,2 GiB (89379041280 bytes) descartado
.
Substitua os passos 2, 5 e 6 acima por esses:
# grub2-mkconfig -o /boot/grub2/grub.cfg
.# dracut -f
.# systemctl enable fstrim.timer
para automaticamente executar o TRIM semanalmente em todas as unidades montadas que suportam TRIM.Ps: Para visualizar os logs do service fstrim.timer
, execute: journalctl -u fstrim.timer
/etc/fstab
a opção discard
. Fonte: Swap Space os SSDs - Solid State Drives - ArchWiki. Exemplo: /dev/mapper/dread--note--vg-swap_1 none swap sw,discard 0 0
fstrim
, segundo a descrição do manual ($ man fstrim
), discard unused blocks on a mounted filesystem. Por padrão, serão descartados (trim == aparar/cortar) todos os blocos que não estão em uso pelo filesystem.
A opção por executar o fstrim
semanalmente é porque executar fstrim
frequentemente ou mesmo utilizar mount -o discard
(ou no /etc/fstab
) pode afetar negativamente a performance (e inclusive a vida útil no caso de SSDs de baixa qualidade).
Leia obrigatoriamente uma explicação suscinta e didática sobre o tema em How to properly activate TRIM for your SSD on Linux: fstrim, lvm and dm-crypt | synaptic fault.
Por meio dele não ficamos mais amarrados à versões antigas da distribuição GNU/Linux utilizada, nem precisamos ficar baixando e compilando na mão.
Para trocar de uma versão para outra basta um comando …
Vejamos um passo-a-passo básico e rápido para a versão 0.28.0
do NVM:
build-essential
e libssl-dev
.1 | $ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.28.0/install.sh | bash |
The script clones the nvm repository to
/.nvm and adds the source line to your profile (/.bash_profile, ~/.zshrc or ~/.profile).
Para baixar, compilar e instalar uma versão específica do node.js:
1 | $ nvm install 0.10 |
Para definir a versão default do usuário:
1 | $ nvm use 0.10 |
Para listar as versões instaladas:
1 | $ nvm ls |
Para listar as versões disponíves para instalar:
1 | $ nvm ls-remote |
Para desinstalar uma versão específica:
1 | $ nvm uninstall 0.10 |
Obs: Ao invés da versão (ex: 0.10
) podemos usar aliases como stable
e unstable
:
1 | $ nvm install stable |
Para usar a versão do nodejs original de sua distribuição, acesse-a com o alias system
:
1 | $ nvm install system |
Bônus: Para baixar, compilar e instalar uma versão específica e, de quebra, obter todos os pacotes npm instalados de uma versão anteriormente instalada:
1 | $ nvm install stable --reinstall-packages-from=system |
Veremos aqui como acessar remotamente o rasp mesmo com IP dinâmico, utilizando-se do serviço gratuito no-ip.com.
(Ah, um pouco de conhecimento prévio de GNU/Linux e redes é essencial - ou talvez uma busca complementar no Google).
Primeiramente, deve-se criar uma conta em no-ip.com e adicionar o redirecionamento de um domínio para seu ip dinâmico.
Logado no site do no-ip.com, clique em Hosts/Redirects e Add A Host. Agora configure o domínio a ser utilizado para o ip dinâmico:
Com relação à instalação e configuração do cliente No-IP no Raspberry:
Instale os pacotes para compilar e etc.:
1 | $ sudo apt-get install build-essential |
Crie um diretório para armazenar o source do cliente:
1 | $ mkdir ~/localSrc |
Navegue para o novo diretório:
1 | $ cd ~/localSrc |
Baixe o software do No-IP:
1 | $ wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz |
Extraia o código-fonte do software do tar.gz:
1 | $ tar zxvf noip-duc-linux.tar.gz |
Entre no dir do código-fonte do software (no momento é a v. 2.1.9-1):
1 | $ cd noip-2.1.9-1/ |
Compile o código-fonte do software:
1 | $ make |
Instale:
1 | $ sudo make install |
O instalador pedirá:
y
)N
(a não ser que saiba o que está fazendo)$ sudo /usr/local/bin/noip2
/usr/local/bin/noip2
acima da linha exit 0
de /etc/rc.local
./etc/rc.local
ficará +- assim: 1 | #OUTRAS LINHAS |
sudo nano /etc/rc.local
1 | sudo /usr/local/bin/noip2 -S |
Como a face da Lua voltada para a gente é sempre a mesma … esse é o mapa da face visível da Lua :D
Tem:
Obs: modifiquei o constraste e brilho para ficar mais fácil de ver o relevo lunar.
Dados da foto:
Segue referências para cada elemento apontado no mapa:
Take a Moon Walk Tonight - Sky & Telescope: Incrível guia sobre a Lua
GMM: Evolution of the Moon (id 10930): Vídeo incrível da Nasa abordando a evolução da Lua. http://svs.gsfc.nasa.gov/vis/a010000/a010900/a010930/evol_and_tour_youtube_1080.mov
Observando a Lua: Excelente guia para observar a Lua.
Classes no ES6 são apenas um açucar sintático sobre o padrão de OO baseado em protótipos do JavaScript de sempre e não um novo modelo de OO para a linguagem.
De qualquer maneira, essa nova forma é muito mais simples de usar e portanto encoraja o uso de OO. Vejamos a aparência de uma classe ES6:
1 | class Point { |
As classes no ES6, entretanto, não suportam ainda alguns features importantes. Vejamos rapidamente seus recursos e omissões.
Classes ES6 suportam:
static
define um método para a classe. Métodos estáticos são chamados diretamente pela classe (não pelas instâncias) e são normalmente usados para criar funções utilitárias relativas à instâncias da classe.extends
.super
pode ser usada para invocar métodos da classe pai.Classes ES6 não suportam:
foo = "bar";
ou foo : "bar";
dentro da definição da classe. Propriedades das instâncias, portanto, são normalmente definidas no constructor enquanto propriedades da classe são atribuídas após a definição da classe (var classe = class { }; classe.propDaClasse = "string"
).A ausência de inicializadores de propriedade está sendo debatida atualmente na comunidade JS e as próximas versões do ES devem suprir essa carência.
Outras características de classes que considero importantes:
this
obedecerá o comportamento normal de fn()s JavaScript e dependerá da forma como a função for invocada. Se quisermos que as funções que representam os métodos de instância sempre tenham a instância como this
, podemos fazer:1 | class Counter { |
1 | typeof Point |
new
, não é possível fazer isso invocando a classe:1 | Point() |
this
.