quarta-feira, 10 de maio de 2023

Resetar permissões no Windows

Para redefinir as permissões NTFS no Windows 10 ou 11, faça o seguinte:


1- Abra um prompt de comando com permissão de administrador



2- Execute o seguinte comando para redefinir as permissões: 

a) para um arquivo

icacls "caminho completo para seu arquivo" /reset

b) para uma pasta:
icacls "caminho completo para a pasta" /reset

c) para uma pasta, seus arquivos e subpastas:
icacls "caminho completo para a pasta" /reset /t /c /l


Substitua os caminhos de exemplo pelos valores reais correspondentes ao seu sistema.



terça-feira, 24 de janeiro de 2023

Alterar o tamanho do arquivo de swap no Ubuntu

Swap é um área de armazenamento no seu disco rígido que pode ser usado como RAM adicional. 

Esta área pode ser uma partição especial ou um arquivo no sistema de arquivos.

Se você quiser alterar o tamanho do seu arquivo de troca (ou swap) basta seguir os seguintes passos:

  1. Desligue todos os processos de troca em execução usando:
    swapoff -a

  2. Redimensionar o arquivo utilizando (mude 64G para o tamanho em gigabytes que você deseja):
    swap fallocate -l 64G /swapfile

    Note que estamos utilizado o arquivo swapfile na raiz do sistema de arquivos.

  3. Trocar as permissões do arquivo:
    chmod 600 /swapfile

  4. Tornar o arquivo utilizável como swap:
    mkswap /swapfile

  5. Ative o arquivo de troca:
    swapon /swapfile

Todas as operações acima devem ser realizadas como "root" ou você precisar acrescentar o comando sudo antes de executar cada uma das linhas.

Alguns comandos podem demorar um pouco para serem executados, basta aguardar que os comandos terminem.

Pronto!


Para verificar o tamanho da troca, execute o seguinte comando e você verá o tamanho da troca:

free -m -h

O resultado é algo similar ao mostrado abaixo:

lab@lab-XPS-15-7590:~$ free -h -m
              total        used        free      shared  buff/cache   available
Mem:           15Gi       575Mi        14Gi        35Mi       369Mi        14Gi
Swap:          63Gi       1,1Gi        62Gi


sábado, 25 de setembro de 2021

Como evitar que o apt faça update de pacotes de kernel

A ideia é que em alguns casos eu gostaria de fazer atualizações de kernel manualmente, em vez de ter atualizações automaticas via apt contudo deixando as demais atualizações de sistema funcionando automaticamente. Por exemplo, em um servidor, que tem um kernel específico.

Neste post vamos colocar duas opções que podem ser feitas por meio da CLI, imaginando que não temos acesso a nenhum GUI.

A primeira opção consiste em acrescentar os pacotes que desejamos excluir da atualização ao arquivo de configuração 50unattended-upgrades. Edite portanto /etc/apt/apt.conf.d/50unattended-upgrades. Abra o arquivo e localize a seção onde é definida a lista negra (blacklist). Edite a seção para incluir os pacotes desejados. Note que você pode adicionar até mesmo uma expressão regex para fazer o match.

// List of packages to not update (regexp are supported)
Unattended-Upgrade::Package-Blacklist {
        "linux-generic";
        "linux-image-generic";
        "linux-headers-generic";
};

Note que no nosso caso não precisamos de colocar regex. Os pacotes indicados acima são metapacotes que representam todas as versões.


A segunda opção (mais fácil) é utilizar o comando:

sudo apt-mark hold linux-image-generic linux-headers-generic

Isso conterá a atualização dos meta pacotes pelo apt. Desta forma a atualição não baixará os pacotes de kernel que surjam no repositório.

sexta-feira, 17 de setembro de 2021

Instalar X server no WSL do Windows 10

Existem duas formas básicas de instalação.

A primeira é a instalação do client X11. Isto permite que você consiga acessar as aplicações X de outros computadores. A segunda é a instalação do servidor X11, que permite que você rode localmente no seu computador, aplicações X windows, como por exemplo o GIMP.

Instalação do cliente X

Para fazer isso, instale o pacote xauth, então instale os aplicativos que você precisa. O apt buscará e instalará os outros pacotes conforme necessário para satisfazer as dependências.

sudo apt install xauth


Instalação do servidor X 

Para instalar um X11 mínimo no Ubuntu dentro do WSL2 do Windows 10, entre no terminal do seu ubuntu do WSL2 e digite o seguinte:

sudo apt install xorg openbox

O apt irá instalar todos os aplicativos e suas dependências.

Finalmente

Edite o arquivo ~/.bashrc e acrescente (se não tiver):

export DISPLAY=:0.0

Você precisará sair e entrar novamente no terminal para esta alteração ficar ativa. 


No Windows você precisar instalar um XServer para que as aplicações do linux sejam renderizadas no Windows. Minha sugestão é instalar o XMing Server que pode ser baixado aqui. O XMing precisá estar rodando para as aplicações X do ubuntu rodarem.


quinta-feira, 9 de setembro de 2021

UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail.

Normalmente quando estamos criando um gráfico com o matplotlib utilizamos o seguinte comando para configurar a figura:

fig, ax = plt.subplots()

Porém se você tentar rodar um programa com este código em Flask, ele vai dar a mensagem do título ao executar. O interessante é que às vezes apesar de ser um aviso, a imagem não é nem gerada.

Para contornar este problema, basta chamar diretamente a função de criação de figuras do matplotlib, isto é, substituir a linha acima pelas duas linhas abaixo:

fig = matplotlib.figure.Figure(figsize=(16, 9))

ax = fig.gca()

Pronto. Sem mais warnings!


sexta-feira, 20 de agosto de 2021

Como posicionar uma janela no linux via linha de comando

Você pode usar a ferramenta chamada xdotool para controlar o tamanho e a localização da janela. Esta ferramenta tem outras funções que permite interagir com a tela como se você tivesse um mouse e um teclado. Desta forma você pode usando a ferramenta clicar, arrastar ou teclar via linha de comando. Não trataremos destas outras funções aqui.

Vamos ver então como mover ou redimensionar uma janela.

Por exemplo, vamos considerar que queremos mover e redimensionar o transmission-gtk.

1 - Achar o ID da janela que você mover:

$ xdotool search --onlyvisible --name transmission
12582915

Note que você deve colocar o nome da janela (transmission) não o nome do programa (transmission-gtk). Ao executar o comando, ele retorna o ID da janela.


2- Movendo a janela:

xdotool windowmove $ID_JANELA $X $Y

Por exemplo para mover a janela para o topo à esquerda (posição 0,0) usamos o seguinte comando:

$ xdotool windowmove 12582915 0 0

3- Para modificar o tamanho da janela use o seguinte comando
xdotool windowsize $ID_JANELA $NOVA_LARGURA $NOVA_ALTURA

Por exemplo,

$ xdotool windowsize 12582915 600 600


Para checar o tamanho da janela, use

$ xdotool getwindowgeometry 12582915
Window 12582915
  Position: 0,0 (screen: 0)
  Geometry: 600x600

quarta-feira, 11 de agosto de 2021

Resolvendo o problema com git push quando retorna "this exceeds ... file size limit of xxx MB"

Acabei de acrescentar no commit de um de meus repositórios do GitHub um arquivo json.

Contudo ao tentar subit (git push) o commit, recebi de repente um erro:

remote: error: GH001: Large files detected. You may want to try Git Large File Storage — https://git-lfs.github.com.
remote: error: Trace: b5116d865251981c96d4b32cdf7ef464
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File json/big.json is 2000 MB; this exceeds GitHub’s file size limit of 1GB


Isto acontece porque o GitHub tem um limite para o repositório e também para o tamanho individual dos arquivos. O problema é que não dá para simplesmente remover (git rm) o arquivo porque ele é rastreado dentro dos commits anteriores. O método que permite resolver o problema consiste em remover este arquivo completamente do meu repositório.

O comando que permite que você faça isso é:

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch json/big.json'

Note que você tem que indicar explicitamente o nome do arquivo a remover. Este comando deve ser realizado na raiz do seu repositório local. Por exemplo, você não pode executá-lo dentro do diretório json, onde o arquivo big.json está.

Após a execução deste comando (para todo os arquivos que apresentam problema), você pode dar um git push para atualizar o Github.

Desabilitar ModemManager no Ubuntu

 ModemManager provides a unified, high-level interface to control all kinds of modems: 4G/5G modems (LTE/NR) 3G modems NB-IoT / Cat-M1 modul...