Arquivo Histórico de Thiago Vespa
Este site foi preservado para fins históricos e de referência. Alguns conteúdos podem estar desatualizados e recursos interativos foram desativados. Visite o site atual.
Linux – Thiago Galbiatti Vespa https://thiagovespa.com.br/blog Precisando é só avisar! Mon, 27 Oct 2025 01:32:05 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.8.5 https://thiagovespa.com.br/blog/wp-content/uploads/2023/05/cropped-eu3-32x32.png Linux – Thiago Galbiatti Vespa https://thiagovespa.com.br/blog 32 32 virtualenv: Ambientes Virtuais para Python https://thiagovespa.com.br/blog/2020/05/25/virtualenv-ambientes-virtuais-para-python/ https://thiagovespa.com.br/blog/2020/05/25/virtualenv-ambientes-virtuais-para-python/#comments Mon, 25 May 2020 14:56:19 +0000 https://thiagovespa.com.br/blog/?p=4428 Continue lendo virtualenv: Ambientes Virtuais para Python→]]> Para isolar bibliotecas e configurações, o python tem um utilitário que cria ambientes virtuais. A grande vantagem da criação desses ambientes é que você pode ter versões diferentes de bibliotecas e uma dependência não afetar a outra. Assim ao instalar uma biblioteca ela não será mais feita de forma global, mas somente para esse ambiente virtual.

O jeito mais simples de fazer isso é utilizando o pip:

[sourcecode language=”bash”]sudo pip install virtualenv[/sourcecode]

Entretanto, em algumas distribuições como o Gentoo, isso normalmente oferece um risco, pois você estará instalando uma biblioteca interna que pode ocasionar conflitos com as bibliotecas de sistema. No meu caso, o Gentoo oferece já um pacote de sistema que faça isso. Se você utiliza essa distro que eu, ao invés de utilizar o comando anterior, utilize esse:

[sourcecode language=”bash”]sudo emerge -av dev-python/virtualenv[/sourcecode]

Verifique se a instalação foi bem sucedida:

[sourcecode language=”bash”]virtualenv –version[/sourcecode]

Para criar um ambiente virtual novo é bem simples. Acesse um diretório onde vai ser criado o ambiente e digite o seguinte comando substituindo nome_do_ve pelo nome do ambiente desejado:

[sourcecode language=”bash”]virtualenv nome_do_ve[/sourcecode]

Você deverá ter uma saída como essa:

Using base prefix ‘/usr’
New python3.7 executable in /development/testes/nome_do_ve/bin/python3.7
Not overwriting existing python3.7 script /development/testes/nome_do_ve/bin/python3.7 (you must use /development/testes/nome_do_ve/bin/python3.7)
Installing setuptools, pip, wheel…
done.

Para utilizar o ambiente é só ativá-lo:

[sourcecode language=”bash”]source nome_do_ve/bin/activate[/sourcecode]

Com isso, você pode instalar as dependências que você precisa e trabalhar com o python, após terminar é só desativar:

[sourcecode language=”bash”]source nome_do_ve/bin/activate[/sourcecode]

Para sair do ambiente é só digitar: deactivate. Para apagar o ambiente é só remover a pasta.

]]>
https://thiagovespa.com.br/blog/2020/05/25/virtualenv-ambientes-virtuais-para-python/feed/ 2
Instalação do Elasticsearch no Ubuntu 18.04 https://thiagovespa.com.br/blog/2020/03/09/instalacao-do-elasticsearch-no-ubuntu-18-04/ https://thiagovespa.com.br/blog/2020/03/09/instalacao-do-elasticsearch-no-ubuntu-18-04/#respond Mon, 09 Mar 2020 21:53:02 +0000 http://thiagovespa.com.br/blog/?p=4424 Continue lendo Instalação do Elasticsearch no Ubuntu 18.04→]]> O Elasticsearch é um motor de busca distribuído feito em Java e de código aberto. Ele é baseado no Apache Lucene, que é uma excelente API para indexação e busca.

Para instalar o Elasticsearch no Ubuntu, a melhor forma é utilizando o repositório oficial. Como pré-requisito, é necessário instalar o Java 8 ou superior (instale o de sua preferência) e o repositório apt via https:

sudo apt install apt-transport-https openjdk-8-jdk

Importe a chave do repositorio:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

O resultado deverá ser OK. Adicione o repositório do Elasticsearch da versão 7. Se quiser você pode alterar para uma versão anterior:

sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

Atualize o apt e instale normalmente o pacote elasticsearch:

sudo apt update && apt install elasticsearch

Você pode habilitar como serviço:

sudo systemctl enable elasticsearch.service

Ou iniciar de acordo com a demanda:

sudo systemctl start elasticsearch.service

Veja se está funcionando:

curl localhost:9200

Pronto!

]]>
https://thiagovespa.com.br/blog/2020/03/09/instalacao-do-elasticsearch-no-ubuntu-18-04/feed/ 0
Iniciando com Qt https://thiagovespa.com.br/blog/2019/03/21/iniciando-com-qt/ https://thiagovespa.com.br/blog/2019/03/21/iniciando-com-qt/#respond Thu, 21 Mar 2019 10:50:38 +0000 http://thiagovespa.com.br/blog/?p=4367 Continue lendo Iniciando com Qt→]]> O Qt (sua pronúncia é como “cute” em inglês) é um framework para interfaces gráficas feita em C++. Esse framework tem o foco de ser multiplataforma e é largamente utilizado no KDE.

Para iniciar o desenvolvimento é necessário fazer o download da plataforma. No site há algumas opções, como a versão comercial, opensource, download online e offline, além das versões para cada sistema operacional. Para prosseguir nesse artigo, vamos utilizar a versão online com a versão 64 bits do linux.

Após o download, transforme o arquivo em executável e execute-o:

[sourcecode language=”bash”]chmod +x qt-unified-linux-x64-3.0.6-online.run ./qt-unified-linux-x64-3.0.6-online.run[/sourcecode]

Irá abrir uma tela de boas vindas:

Prossiga com as instruções, crie uma conta Qt, especifique o diretório de instalação. Na etapa de seleção de componentes, você poderá especificar a versão do qt a ser utilizada, se vai utilizar a IDE de desenvolvimento (Qt Creator) e se possui necessidade de se trabalhar com gráficos 3D (Qt 3D Studio), além de poder selecionar componentes individuais:

Prossiga com a instalação. Ao final dela você poderá ter acesso ao QT Creator, que está disponível no caminho de instalação que você forneceu:

Agora é só se aventurar. Se você quiser também trabalhar com outras arquiteturas é necessário configurar a plataforma e um debugguer.

Para o debugger eu estou utilizando o gdb, se você já tiver instalado, o QtCreator pode identificá-lo automaticamente. Em Tools, Options, Kits, na aba Debbugers, você poderá ver essa informação:

Na aba Kits você pode configurar outras plataformas, como o Android.

]]>
https://thiagovespa.com.br/blog/2019/03/21/iniciando-com-qt/feed/ 0
Resolução de libcurl-gnutls.so.4: cannot open shared object file no Linux https://thiagovespa.com.br/blog/2018/09/18/resolucao-de-libcurl-gnutls-so-4-cannot-open-shared-object-file-no-linux/ https://thiagovespa.com.br/blog/2018/09/18/resolucao-de-libcurl-gnutls-so-4-cannot-open-shared-object-file-no-linux/#comments Tue, 18 Sep 2018 13:51:32 +0000 http://thiagovespa.com.br/blog/?p=4351 Continue lendo Resolução de libcurl-gnutls.so.4: cannot open shared object file no Linux→]]> Alguns projetos precisam da referência a libcurl-gnutls, entretanto essa lib pode não estar disponível na sua distribuição (no meu caso Gentoo). Para resolver esse problema:

[code language=”bash”]libcurl-gnutls.so.4: cannot open shared object file: No such file or directory
Error: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory[/code]

Crie um link simbólico da libcurl referenciando a lib necessária:
[code language=”bash”]ln -s /usr/lib/libcurl.so.4 /usr/lib/libcurl-gnutls.so.4[/code]

Com isso a lib é encontrada e o problema resolvido.

]]>
https://thiagovespa.com.br/blog/2018/09/18/resolucao-de-libcurl-gnutls-so-4-cannot-open-shared-object-file-no-linux/feed/ 1
Como recuperar a data e hora que um arquivo foi movido https://thiagovespa.com.br/blog/2018/09/18/como-recuperar-a-data-e-hora-que-um-arquivo-foi-movido/ https://thiagovespa.com.br/blog/2018/09/18/como-recuperar-a-data-e-hora-que-um-arquivo-foi-movido/#respond Tue, 18 Sep 2018 13:24:56 +0000 http://thiagovespa.com.br/blog/?p=4342 Continue lendo Como recuperar a data e hora que um arquivo foi movido→]]> Sistemas baseados em Unix possuem alguns atributos que não estão disponíveis de forma intuitiva na linguagem Java, nem há documentação a respeito. Entretanto, em algumas situações se faz necessária a utilização dessa informação. Por exemplo, quando movemos um arquivo de local, o único atributo que possui a data de alteração é o “change time” que pode ser consultado pelo comando stat.

[code language=”bash”]> stat 412412312.txt
File: 412412312.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 17563908 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 1000/ thiago) Gid: ( 1000/ thiago)
Access: 2018-09-14 14:57:44.899000835 -0300
Modify: 2018-09-14 14:57:44.899000835 -0300
Change: 2018-09-14 14:58:39.583004882 -0300
Birth: -[/code]

Com isso sabemos que esses atributos estão disponíveis no arquivo. Para recuperar todos esses atributos do contexto Unix, no Java, pode-se utilizar o seguinte comando:

[code language=”java”] Path path = Paths.get(filePath);
Map f = Files.readAttributes(path, "unix:*");
System.out.println(f);[/code]

Onde filePath é o caminho onde está o arquivo/diretório. Ou, se deseja recuperar apenas um atributo, como o Change Time (ctime), pode-se realizar da seguinte forma:

[code language=”java”] System.out.println(Files.getAttribute(path,"unix:ctime"));
[/code]

Para mais informações de como trabalhar com atributos, pode-se encontrar aqui.

]]>
https://thiagovespa.com.br/blog/2018/09/18/como-recuperar-a-data-e-hora-que-um-arquivo-foi-movido/feed/ 0
Aumentar o tamanho da partição /tmp no Linux em tempo de execução https://thiagovespa.com.br/blog/2018/04/12/aumentar-o-tamanho-da-particao-tmp-no-linux-em-tempo-de-execucao/ https://thiagovespa.com.br/blog/2018/04/12/aumentar-o-tamanho-da-particao-tmp-no-linux-em-tempo-de-execucao/#comments Thu, 12 Apr 2018 19:42:04 +0000 http://thiagovespa.com.br/blog/?p=4309 Continue lendo Aumentar o tamanho da partição /tmp no Linux em tempo de execução→]]> Em algumas instalações ou mesmo quando se trabalha com alguns softwares que manipulam arquivos grandes, você pode ficar sem espaço na partição “/tmp”. Muitas vezes remover arquivos dela não resolve e você necessita de um tamanho maior. Para resolver isso de maneira rápida e prática basta digitar o seguinte comando:

[sourcecode language=”bash”]mount -o remount,size=8G /tmp/[/sourcecode]

A opção -o é utilizado para passar opções de montagem da partição. Nesse caso, utilizamos o “remount” para realizar a remontagem da partição e o size para especificar o novo tamanho, que nesse exemplo é de 8GB.

]]>
https://thiagovespa.com.br/blog/2018/04/12/aumentar-o-tamanho-da-particao-tmp-no-linux-em-tempo-de-execucao/feed/ 2
Lero-lero por linha de comando https://thiagovespa.com.br/blog/2016/01/14/lero-lero-por-linha-de-comando/ https://thiagovespa.com.br/blog/2016/01/14/lero-lero-por-linha-de-comando/#comments Thu, 14 Jan 2016 12:34:00 +0000 http://www.thiagovespa.com.br/blog/?p=4215 Continue lendo Lero-lero por linha de comando→]]> Para quem precisa de um gerador de lero-lero por linha de comando. Criei um que recupera do site: Gerador Lero-lero e imprime o conteúdo que está dentro do blockquote que tem a frase do lero-lero.

O comando é o seguinte:

Dentro da variável frase estará o lero-lero a ser utilizado. Um echo $frase; irá mostrar o conteúdo. Bom proveito!
Atualização: Não funciona mais, pois eles tiraram a geração server side e fizeram via React.JS.

]]>
https://thiagovespa.com.br/blog/2016/01/14/lero-lero-por-linha-de-comando/feed/ 1
Túnel SSH https://thiagovespa.com.br/blog/2015/09/21/tunel-ssh/ https://thiagovespa.com.br/blog/2015/09/21/tunel-ssh/#comments Mon, 21 Sep 2015 22:47:40 +0000 http://www.thiagovespa.com.br/blog/?p=4173 Continue lendo Túnel SSH→]]> Por motivo de segurança, em algumas situações você não tem acesso direto ao servidor alvo.  Contudo, liberam acesso SSH à uma outra máquina que acessa esse servidor e você precisa utilizar aplicativos à partir da sua máquina, mas acessando o servidor alvo. Como resolver esse problema de maneira transparente? Para isso, existe o túnel SSH.

Esse túnel pode ser contemplado pelo seguinte comando:

[sourcecode language=”bash”]ssh -f USUARIO@SERVIDORCOMACESSO -L PORTAACESSAR:SERVIDORACESSAR:PORTAORIGINAL -N[/sourcecode]

O parâmetro mais importante é o -L que é responsável por mapear qual porta você irá acessar pela sua máquina (PORTAACESSAR), de qual servidor (SERVIDORACESSAR), e qual porta desse servidor você irá acessar (PORTAORIGINAL).

Por exemplo, se eu quero acessar o servidor de AD que está disponível no servidor 192.168.18.6 e na porta 389 à partir da minha máquina na porta 2000, sendo que só tenho acesso ao servidor 192.168.18.1, executo o seguinte comando:

[sourcecode language=”bash”]ssh -f [email protected] -L 2000:192.168.18.6:2000 -N[/sourcecode]

Com isso, tenho acesso ao servidor de AD da máquina 192.168.18.6 pela porta 2000 da máquina 192.168.18.1, que seria a única máquina que eu deveria ter acesso.

O parâmetro -f especifica que o SSH deve rodar em background após informar a senha. O -N especifica que nenhum comando remoto será executado, ou seja, só irá fazer o port forward utilizado no nosso túnel.

Agora é só aproveitar esse recurso que é muito útil quando temos acesso limitados à servidores ou necessitamos fazer port forwading.

]]>
https://thiagovespa.com.br/blog/2015/09/21/tunel-ssh/feed/ 2
Extrair arquivos estáticos https://thiagovespa.com.br/blog/2014/07/18/extrair-arquivos-estaticos/ https://thiagovespa.com.br/blog/2014/07/18/extrair-arquivos-estaticos/#comments Fri, 18 Jul 2014 16:24:46 +0000 http://www.thiagovespa.com.br/blog/?p=4098 Continue lendo Extrair arquivos estáticos→]]> Para melhor o desempenho de aplicações é interessante colocarmos um servidor de conteúdo estático, como o Apache, para trabalhar com os conteúdos que não precisam ser dinâmicos, como imagens, folhas de estilos, javascripts e afins.

No Java normalmente esse conteúdo, quando empacotado fica dentro de arquivo WAR interno a um arquivo EAR. Para extrair esse conteúdo estático e disponibilizá-lo no apache, criei um pequeno script que automatiza essa tarefa:

[sourcecode language=”bash”]unzip <NOMEDOPACOTE>.ear -d tmp/ > /dev/null && unzip tmp/*.war `unzip -l tmp/*.war | grep  ‘.js$\|.jpg$\|.jpeg$\|.png$\|.gif$\|.htm$\|.html$\|.css$’ | awk ‘{print $4}’` -d static && rm -rf tmp[/sourcecode]

Se você utiliza somente o WAR sem o EAR, basta utilizar o seguinte script:

[sourcecode language=”bash”]unzip <NOMEDOPACOTE>.war `unzip -l tmp/*.war | grep  ‘.js$\|.jpg$\|.jpeg$\|.png$\|.gif$\|.htm$\|.html$\|.css$’ | awk ‘{print $4}’` -d static[/sourcecode]

Esse script irá criar uma pasta static com todo o conteúdo a ser mapeado no Apache. Com isso, o seu servidor de aplicações ficará mais leve, com menos requisições e o trabalho de disponibilizar os conteúdos estáticos fica a cargo do Apache, que realiza essa atividade com muita eficiência.

]]>
https://thiagovespa.com.br/blog/2014/07/18/extrair-arquivos-estaticos/feed/ 3
The Developers Conference 2014 https://thiagovespa.com.br/blog/2014/07/17/the-developers-conference-2014/ https://thiagovespa.com.br/blog/2014/07/17/the-developers-conference-2014/#comments Thu, 17 Jul 2014 22:26:08 +0000 http://www.thiagovespa.com.br/blog/?p=4086 Continue lendo The Developers Conference 2014→]]> Agora no começo de agosto terá um evento muito bacana no qual participo da coordenação: o The Developers Conference 2014. Esse evento eu já participo há alguns anos, muito bem organizado e com bastante conteúdo. Hoje mesmo fui com uma camiseta do evento de 2011 no trabalho.

TDC2011O TDC 2014 – São Paulo será realizado de 5 a 9 de agosto e terá 36 trilhas (TV Digital, Android, Startups, Java, Arquitetura, etc) no Anhembi Morumbi e,  como novidade, vários workshops na sede da Globalcode, inclusive de Raspberry PI e IoT com o Vinicius Senger.

A trilha de TV digital está bem bacana e está sendo coordenada por um grande amigo meu, o Carlos do Java Noroeste e por mim. Vamos ter palestras com aplicativos da Record, TQTVD, TV Aparecida, especialistas renomados na área de TV digital no Brasil e pela comunidade de desenvolvedores.

Para participar é só fazer a inscrição no site. Simultaneamente, vai ter um outro evento legal que é o TDC4Kids para crianças programarem com Scratch, Minecraft e IoT. Para ter uma ideia do porte do evento, essa é a lista de alguns patrocinadores: Amazon, Oracle, Stackoverflow, SAP, PayPal, Google, StackOverflow, JetBrains e Liferay.

A gente se fala lá!

TDC - Comunidade

]]>
https://thiagovespa.com.br/blog/2014/07/17/the-developers-conference-2014/feed/ 1