Desktop Comfort: um estudo com utilidade prática

Uma excelente forma de consolidar os conhecimentos é aplicá-los em algo prático e útil.

Foi assim que surgiu a primeira versão de um “framework simples” em PHP, que acabou sendo utilizado por muito tempo em vários sites e por agências para seus clientes. Isso lá por 2005.

Agora, com o trabalho em Home Office, dei uma atenção pro meu setup – mesa, cadeira, suporte para monitores, e também aproveitei para transformar antigos scripts feitos “de qualquer jeito”, em um software chamado Desktop Comfort, utilizando esta filosofia de expandir o conhecimento, construindo algo com utilidade prática.

Desktop Comfort

desktopcomfort.com

O Desktop Comfort é um programa feito em Delphi, mas com uma interface moderna que lembra as configurações do Windows 10. Este foi um dos primeiros conhecimentos aplicados. Veja os 3 principais recursos:

  • Agendar a troca do Wallpaper para horários específicos;
  • Ativar automaticamente o modo escuro do Windows 10 no pôr-do-sol;
  • Reduzir o brilho dos monitores automaticamente no pôr-do-sol.

A troca do wallpaper para horários específicos tem a inspiração nos Dynamic Wallpapers do MacOS, como Mojave e Catalina. Além disso, uma das motivações é que agora, em Home Office, precisamos realizar conferências e apresentações, então programei para que no horário comercial seja exibido um Wallpaper de trabalho, condizente com o ambiente profissional.

Já através da configuração da cidade é possível obter a latitude e longitude, e então calcular o horário do nascer e do pôr-do-sol. Este cálculo foi mais uma parte dos estudos, pois o script anterior para a mudança de brilho e dark mode eram com horários fixos. É bem bacana o resultado obtido.

Site responsivo, PHP, MVC

Como parte do estudo e do ecossistema do aplicativo, desenvolvi também um site para o produto: responsivo, visualmente bonito e combinando com o programa. Mais uma vez com framework simples em PHP, porém bem mais moderno e com arquitetura MVC.

Let’s Encrypt!

Para o site foi utilizado o certificado SSL gratuito da Let’s Encrypt, desta forma promovendo a segurança e privacidade dos usuários através de HTTPS.

MyBB Forum

Como parte adicional, experimentei um novo sistema de Fórum (MyBB) que não tinha utilizado antes e, para tornar tudo mais fiel ao ciclo de desenvolvimento de software, vários amigos contribuíram com feedbacks através do fórum e por e-mail.

GitKraken: GIT, Boards, Kanban

Todas as etapas e atividades do desenvolvimento foram registradas através do software GitKraken, com o uso das “Boards”, no formato Kanban (mais uma parte do estudo).

Gitea: estilo Github

Para o controle de versão foi utilizado o GIT, com o apoio do software Gitea (https://gitea.io/) – que é um serviço leve para projetos GIT escrito em linguagem GO, e que cumpriu muito bem o seu papel de repositório de código, mesmo hospedado em servidor virtual na nuvem com 2 núcleos e 2GB RAM; recomendo para pequenos e médios projetos/equipes.

  • múltiplos usuários, múltiplos projetos, múltiplas organizações;
  • cadastro de issues; pull requests; wiki do projeto
  • fork e mirror de repositórios

O projeto foi dividido em três repositórios do GIT:  web, app e setup.

Deploy: setup e CodeSigning

Também como parte dos estudos, realizei melhorias nos scripts para geração do instalador, utilizando o NSIS (Nullsoft Scriptable Install System), acrescentando rotina automatizada para assinatura do binário da aplicação, assim como a assinatura do binário do instalador, evitando as mensagens indesejadas que o Windows exibe em executáveis não-assinados. É também uma segurança adicional para os antivírus, e o Windows Defender mantém uma reputação positiva do desenvolvedor para cada software assinado.

Usuários de diversos países

O programa foi distribuído inicialmente para os amigos que toparam participar do estudo. Mas depois que foi publicado no site – e por ter sido disponibilizado em Inglês, a maioria dos usuários atuais são de fora do Brasil (segundo o Google Analytics, mais uma parte do estudo).

Versão Beta

O software encontra-se estável, utilizo-o diariamente sem ter notado qualquer problema, e não tenho recebido feedbacks com problemas. Mas sei que existem algumas coisas para melhorar, e até mesmo novos recursos para serem criados.

Integração com Teclado RGB – em breve

Um dos recursos sugeridos pelos usuários foi a integração com teclados RGB. A ideia é aumentar ou diminuir o brilho deles conforme o horário, e já dei uma olhada nas APIs de alguns fabricantes importantes, como a Redragon , Logitech e HyperX.

Teclado da Microsoft

Por falar em teclado, o nome escolhido Desktop Comfort é, também, o nome de uma linha de teclados que a Microsoft desenvolveu muitos anos atrás, espero que ela não se incomode com o nome do software.   🙂

Artigo disponível no LinkedIN: https://www.linkedin.com/pulse/desktop-comfort-um-estudo-com-utilidade-pr%25C3%25A1tica-william-knak

Precisei fazer crack do meu próprio programa

Esta semana recebi uma ligação bem curiosa: era um antigo cliente pra quem fiz um programa em 1999.

Ele me disse que um dos campos parou de funcionar. O campo ano só aceitava valores até 2016; não podia digitar 2017.

No mesmo dia tinha um compromisso ao lado do escritório dele, aproveitei para visitá-lo. Ele me explicou que desde o ano 2000 mantém um computador com Windows 98 exclusivamente para rodar o programinha. Disse que já precisou trocar o HD várias vezes, mas que sempre mantém uma cópia de segurança.

Copiei os programas e os arquivos de dados.

– “Não esquece o BDE“, ele me lembrou. Realmente bem útil.

De volta ao escritório, criei uma máquina virtual com Windows XP. Copiei tudo pra lá. Rodou legal – aliás, tenho que me lembrar de sugerir essa ideia do VirtualBox pra ele.

Como você já deve suspeitar, já não tenho mais os fontes em Delphi.

Só viemos a conhecer os softwares de controle de versão (CVS, SVN) lá em 2004. Até então a gente fazia backups em HDs e CDs, mas não os encontrei mais.

Em 1999 a internet era discada e lenta: mandar uma versão nova para o cliente era demorado. Mas se você usasse o AsPack (compactador / obfuscador), seus arquivos .EXE ficariam bem menores.

Aqui iniciou o passo mais difícil: descompactar o meu próprio .EXE.

Baixei inúmeras ferramentas que prometiam descompactar o AsPack – rodei todas no ambiente virtualizado para proteger o PC principal de possíveis malwares. Mas AQUELA versão do AsPack que utilizei nunca era compatível.

Nas minhas buscas pela internet, surgiu a opção do OllyDbg, para fazer um dump de um processo em execução. Com a ajuda do seguinte vídeo consegui reproduzir os passos, e finalmente extraí o que seria o .EXE original.

Testei o .EXE extraído e funcionou perfeitamente. Agora eu podia voltar ao problema original: corrigir algum if do campo ano para permitir que fosse digitado um valor maior que 2016.

Baixei a versão portable do editor hexadecimal HxD – https://mh-nexus.de/en/hxd/.

Ao abrir o executável descompactado, procurei por “2016” e não achei nada; claro: não deve ser uma String, e sim um número.

“Puxei” na calculadora do Windows – modo Programador – como é 2016 em hexadecimal: 07 E0, mas também não encontrei nada.

Então notei que o editor HxD permite procurar não apenas Strings, mas Inteiros também!

Voilá!

Ele localizou três ocorrências de E0 07  (que é quase igual ao 07 E0, só que invertido, por causa da ordem dos bits mais significativos. (DOOUH!!!)

Troquei E0 por E9; salvei o arquivo como App_2025.exe e testei. Tudo funcionando!

Já estamos em tratativas para modernizar o software, utilizando uma abordagem mais moderna: hospedado na nuvem, mas sem pressa: tem bastante tempo até 2025!