Campos DATA de bancos MySQL no PDI

Dependendo da versão das bibliotecas de acesso a um banco MySQL, o Pentaho pode retornar erro ao ler colunas do tipo DATE, especialmente no que se refere à interpretação do fuso horário.

A mensagem que normalmente aparece é

HOUR_OF_DAY: 0 -> 1

Definindo o fuso horário nas opções de carga dos aplicativos do PDI resolve esse problema. Por exemplo, colocando a definição “-Duser.timezone=GMT-3” dentro do spoon.bat na linha set OPT=…

Executando jobs e transformações do Pentaho no prompt de comando

Não necessariamente somos obrigados a configurar um PDI Server para agendar a execução dos trabalhos e transformações em um servidor.

É possível executar um comando no servidor que dispara a rotina desejada.

Para executar transformações (ktr) usamos o seguinte comando:

sh pan.sh -rep: -file=<arquivo>.ktr

Para executar trabalhos (kjb) usamos o seguinte comando:

sh kitchen.sh -rep: -file=<arquivo>.kjb

Instalando o PDI 9.3 no Windows 10/11

Passos:

Opcionalmente, para fixar o atalho no menu iniciar, crie uma pasta (ex: Extras) em %appdata%/Microsoft/Windows/Start Menu/Programs/ e mova o arquivo do atalho para essa pasta. Na sequencia, abra o menu iniciar e procure pelo nome do atalho, a opção de fixar em iniciar estará disponível.

Scroll natural do mouse no Windows 10/11

Se você também alterna o uso entre desktops Linux/Mac/Windows já percebeu que o único sistema que inverte a ordem do scroll no mouse é o Windows.

Graças a esse comando abaixo, executado no power shell em modo administrador, você pode alterar esse comportamento.

$mode = Read-host "How do you like your mouse scroll (0 or 1)?"; Get-PnpDevice -Class Mouse -PresentOnly -Status OK | ForEach-Object { "$($_.Name): $($_.DeviceID)"; Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Enum\$($_.DeviceID)\Device Parameters" -Name FlipFlopWheel -Value $mode; "+--- Value of FlipFlopWheel is set to " + (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Enum\$($_.DeviceID)\Device Parameters").FlipFlopWheel + "`n" }

Não esqueça de reiniciar seu Windows após a execução desse comando.

Fonte: https://gist.github.com/gagarine/d313ee6510009b3f3973c6e0929b1e1c

Alternando entre versões do PHP no MacOS

Você pode se deparar com a necessidade de executar um código baseado em uma versão específica do PHP no MacOS. Para tal podemos recorrer ao Docker ou a uma máquina virtual. Mas se você simplesmente quer usar o PHP direto no próprio sistema operacional, essa dica pode te ajudar.

A instalação das versões suportadas do PHP pode ser feita pelo brew e a troca das versões pode ser feita da seguinte maneira dentro do prompt de comando:

brew unlink php@8.2
brew link php@7.4

Para versões não mais suportadas do PHP, podemos utilizar o repositório shivammathur/php:

brew tap shivammathur/php
brew install shivammathur/php/php@7.3

Happy coding!

Oracle Cloud Free Tier

A Oracle oferece uma faixa gratuita de máquinas virtuais com recursos limitados que podem ajudar muito para pequenos projetos ou serviços temporários de avaliação.

https://www.oracle.com/cloud

Basta fazer um cadastro com fornecimento de um cartão de crédito (caso você ultrapasse a faixa gratuita, será debitado) para ter acesso ao painel de configuração.

Em Compute -> Instances podemos criar as máquinas virtuais. Atente para o selo “Always Free” ao lado de cada opção que fizer.

Juntamente com as instâncias, as redes (net e sub-net) são criadas.

Podemos escolher uma imagem de SO e uma plataforma de hardware. Essa combinação pode ou não ser gratuita de acordo com os recursos selecionados.

Nas configuração da rede criada, as configurações de portas do firewall deverão ser habilitadas bem como dentro do SO instalado.

Lembrando que a imagem Ubuntu fornecida é modificada pela Oracle e precisa da configuração do iptables para abrir portas. Exemplo:

sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save

Migrando um site WordPress

Existem várias formas de migrar um site em WordPress entre servidores diferentes.

Aqui seguem alguns passos sobre uma forma de executar esse processo.

  1. Certifique-se de que o sistema de recuperação de senha está funcionando no site origem. Após a migração a conta do administrador pode sofrer alteração de senha e você pode ficar com dificuldade em logar novamente no servidor destino.
  2. Instalar o plugin UpdraftPlus WordPress Backup na origem. Esse plugin também poderá ser usado para backup com armazenamento nos serviços de nuvem.
  3. Faça um backup dentro desse plugin em Backup/Restauração.
  4. Em Backups Existentes, baixe o arquivo de cada recurso para sua máquina local (Banco de dados, Plugins, Temas, etc).
  5. No servidor destino, crie um site padrão WordPress que vai receber o backup. Atenção para o detalhe da senha do administrador que será alterada após a restauração do backup para o valor usado no site de origem.
  6. Altere o registro DNS para apontar para o IP do servidor destino.
  7. Ative a versão ssl do site com o comando:
    certbot –apache –redirect -d site.com -m user@mail.com –agree-tos
  8. Acesse o site destino e instale o plugin UpdraftPlus WordPress Backup.
  9. Enviar os arquivos de backup para o servidor e executar a restauração.
  10. Deletar as pasta antigas (delete old folders).
  11. Verifique se os links estão funcionando. Caso necessário, altere os links permanentes para o formato padrão.

GIT – Push to Production

Uma das formas de publicar um branch local para um servidor de produção é usar o recurso de hooks nativo do git.

Vamos aqui listar os passos para configurar esse recurso e conseguir enviar as alteração para o servidor usando apenas um único comando na máquina local.

No lado de produção vamos acessar o servidor e criar uma pasta para abrigar os arquivos do projeto. Eu prefiro utilizar o nome do branch que está associado ao ambiente de produção (nesse caso será o main) mas você pode usar qualquer nome, inclusivo o nome do seu projeto.

ssh user@server
mkdir pasta-do-branch

Em seguida, vamos criar um ambiente git vazio para abrigar os comando de hook necessários.

git init --bare ~/projeto.git

Na pasta hooks desse ambiente criado (entre na pasta nome-do-projeto.git) vamos criar o arquivo post-receive e inserir o código nele por esse abaixo.

#!/bin/bash
TARGET="/pasta-do-branch"
GIT_DIR="/projeto.git"
BRANCH="main"

while read oldrev newrev ref
do
  if [ "$ref" = "refs/heads/$BRANCH" ];
  then
    echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
    git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
  fi
done

Esse arquivo, post-receive, deve ser marcado como executável.

chmod +x post-receive

Na máquina local vamos adicionar o branch remoto.

git remote add branch user@server:/path/project.git

Dessa forma, de agora em diante, para publicar o código do branch basta executar o comando abaixo.

git push projeto main

Para se aprofundar nos detalhes desse recurso, consulte a página desse link:
https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

Utilitários Open Source no macOS

Segue minha lista de aplicativos utilitários essenciais no macOS.

AltTab

Alterne entre aplicativos abertos com uma experiência próxima à do Windows.

Rectangle

Coloque as janelas dos aplicativos em áreas específicas do seu display com atalhos de teclado.

App Eraser

Exclua arquivos que poderiam ficar sobrando ao se desinstalar um aplicativo.

Easy Move+Resize

Mova ou redimensione janela de aplicativo clicando em qualquer lugar da mesma junto com uma combinação de teclas para ativar a função.

Keka

Compactador/Descompactador mais completo e com capacidade de integração ao Finder.

Maccy

Histórico da área de transferência.

Hidden Bar

Esconda ícones de aplicativos em segundo plano da barra superior.

CotEditor

Editor de texto com recursos avançados.

Docker MySQL 5.7 Crash de Memória

Essa imagem específica do MySQL (tag 5.7) pode fechar inesperadamente após a inicialização caso, por exemplo, ocorra uma alteração no tamanho da memória ou swap do host.

Para resolver essa questão, o exemplo abaixo indica o caminho.

docker run -e MYSQL_ROOT_PASSWORD=password \
  --name mysql57 --ulimit nofile=262144:262144 \
  -d -p 3306:3306 -v mysql57-volume:/var/lib/mysql \
  mysql:5.7 --sql-mode=""