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

Gráfica RECOR – Santa Cruz do Sul

Site da Gráfica RECOR disponibilizado em www.graficarecor.com.br, inclui cadeado https para criptografia – nos próximos dias o Google Chrome vai avisar que páginas http simples não são seguras.

A página da Gráfica RECOR no Facebook é mais uma forma de comunicação com os clientes – https://www.facebook.com/GraficaRECOR.

O site desenvolvido pela TiNX está em fase Beta, possui as principais formas de contato com a empresa, integração com as redes sociais e chat online, além de disponibilizar acompanhamento via Google Analytics.

Empresa de Santa Cruz do Sul, a Gráfica RECOR atende centenas de clientes no vale do Rio Pardo e Taquari, oferecendo impressos de qualidade, com rapidez e preço justo.

Você sabia?

Você sabia que as impressões a Laser desgrudam e impressões a jato de tinta borram com a umidade?

Por isso GRÁFICAS DE VERDADE utilizam a impressão off-set usando até 4 cores separadamente (Ciano, Magenta, Amarelo e Preto, ou simplesmente CMYK) .

Já pensou se o cartão de visitas que você vai dar ao seu cliente colar na carteira dele ou borrar no primeiro contato com a umidade? Aaah, você não quer uma impressão negativa dessas, quer?

Ligue pra Gráfica RECOR: (51) 3715-8570.

Portal da Transparência Municipal – RS

Ainda em fase de desenvolvimento, mas já disponível ao público, o Portal de Transparência Municipal do RS agrupa as consultas dos portais da transparência da esfera municipal (Prefeitura, Câmara de Vereadores, Institutos e outros órgãos) em um só local.

Para realizar pesquisas de empenhos, para verificar o faturamento do CNPJ nos municípios, o portal é uma excelente ferramenta.

A consulta de empenhos nos portais da transparência do Governo Federal e Governo Estadual é bem simples, e agora com a disponibilização deste novo portal, ficará muito mais fácil verificar os valores empenhados em licitações de todos os órgãos públicos.

https://transparencia.tinx.com.br/

Acesse o portal, confira na página inicial os relatórios de exemplo que disponibilizamos.

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.

Abri a calculadora do Windows – modo Programador – para ver 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. 😂

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

Mais curiosidades no Linkedin – https://www.linkedin.com/feed/update/urn:li:activity:6872362816112869377/

Sites confiáveis: como adicionar?

Quando você abre uma planilha do Excel ou documento do Word que foi baixado da internet, os programas da Microsoft bloqueiam a edição como forma de prevenir possíveis códigos maliciosos.

Este arquivo foi originado de um local da Internet e pode não ser seguro. Habilitar Edição
Modo de Exibição Protegido

Central de Confiabilidade

Existem pelo menos duas formas de contornar isso: a primeira, e menos recomendada, é acessar o menu Central de Confiabilidade e desativar o Modo de Exibição Protegido para arquivos originados da internet.

Central de Confiabilidade

Isso permitirá a abertura de qualquer arquivo. Por isso assegure-se de baixar os arquivos de fontes conhecidas e confiáveis.

Sites Confiáveis

A segunda opção é muito recomendada para quando você baixa os arquivos sempre do mesmo site. Basta você adicionar o endereço do site aos Sites confiáveis do Windows, através das configurações da janela Opções de Internet.

Por exemplo, sua empresa utiliza um backend que gera relatórios em Excel, e cada vez que você gera o relatório, precisa autorizar a edição. Este é um candidato perfeito para esta opção que vou descrever a seguir.

Abra as Opções de Internet.

Opções da Internet

Na aba Segurança, clique em Sites Confiáveis, e depois no botão Sites.

Adicione o endereço dos sites confiáveis. Você pode obrigar a utilização do prefixo HTTPS, mas também pode desmarcar esta opção se o seu site não possui segurança SSL.

O endereço do site pode ser preciso, ou utilizar “coringas” com o símbolo * (asterisco). Exemplos:

  • https://www.tinx.com.br
  • https://*.tinx.com.br             (aceitará https://qualquer-host.tinx.com.br)
  • *.tinx.com.br       (aceitará qualquer host, e também HTTP e HTTPS)
Sites confiáveis

Com essa alteração suas planilhas vão abrir diretamente dos sites confiáveis!

Google Photos: armazenamento ilimitado para suas fotos

Envie as fotos do smartphone pra nuvem, e não fique sem espaço para os eventos de final de ano!

Natal, piscina, praia, ano novo… centenas de fotos e vídeos, e rapidamente você recebe uma mensagem:

“Armazenamento quase cheio”

Pra evitar isso a sugestão é utilizar o Google Photos, que é o novo serviço de fotos que substitui o antigo Picasa, e que funciona no Android, iOS e no computador.

O melhor de tudo: o espaço do Google Photos é ilimitado. 

O aplicativo para Google Backup Photos para Windows às vezes custa a enviar todas as fotos, mas observamos aqui que se você rodar ele como administrador ele funciona perfeitamente – #ficaDica.

O programa de backup detecta cartões de memória de câmeras digitais e pergunta se deseja enviar as fotos pra sua conta.

As fotos do smartphone são enviadas automaticamente. Você pode definir se também quer enviar os vídeos, e quando quer enviar tudo isso: somente no WiFi, e somente quando estiver conectado ao carregador, por exemplo.

Com as fotos devidamente enviadas pra nuvem, você pode escolher algumas delas e criar álbuns, compartilhar com amigos e familiares, e até mesmo criar álbuns em que outras pessoas podem colaborar enviando fotos delas.

Você também pode usar o poder de pesquisa do Google, dentro das sua conta, para encontrar fotos específicas por data, pessoas, assuntos:

Por que demora tanto para enviar?

Enviar as suas fotos pode demorar muito tempo, na verdade, vários dias. Isso acontece porque em links de internet residenciais a velocidade de envio é só uma fração da velocidade de download.

É comum em um link de  10mbits de download, ter somente 1mbit de upload. Por isso demora tanto para enviar, e por isso também que a internet fica muito lenta enquanto você envia as fotos! Mas vale muito a pena.

No computador você acessa suas fotos neste link:

https://photos.google.com/

Mais informações sobre os aplicativos disponíveis neste link:

https://photos.google.com/apps?hl=pt-BR

SQL: Ordenação avançada por comparação

Alerta Nerd: a seguir informações técnicas para desenvolvedores!

Usando a lógica booleana nas consultas SQL podemos ordenar consultas de banco de dados de uma forma bastante criativa.

Uso normal do Order By

Normalmente usamos a cláusula ORDER BY para tarefas comuns, por exemplo, podemos fazer a listagem de cidades ordenadas pelo nome:

Colocando o registro mais útil no início

No entanto, as vezes é mais interessante colocar alguns resultados especiais no topo da listagem, para facilitar o acesso dos usuários do sistema.

Por exemplo, num sistema para compra de passagens intermunicipais, você poderia colocar a capital do estado e as cidades próximas em primeiro, e depois as demais cidades em ordem alfabética.

Abaixo uma forma de fazer isso, utilizando uma só consulta:

São duas 2 condições de ordenação, a primeira inclui a cidades que desejamos em primeiro lugar. Como pode ver, foi usado o comparativo diferente <>, isso se explica pela lógica booleana. VERDADEIRO = 1, FALSO = 0.

Para maior clareza, podemos usar o símbolo de igual e inverter a ordenação da primeira cláusula, com o operador DESC (ordem decrescente):

Múltiplos registros no início

Caso precisarmos incluir mais cidades, podemos ampliar a primeira cláusula. Não precisamos, todavia, comparar os nomes, se tivermos os IDs também é possível simplificar a busca com o comparativo IN:

Note que mesmo os 4 primeiros resultados são ordenados também por nome (ordem alfabética), pois é o segundo critério do comparativo.

Em que cidades estão a maioria dos meus clientes?

Outros usos mais complexos podem ser feitos. Por exemplo, se o seu vendedor precisar criar um cadastro novo, que tal mostrar as cidades com mais clientes em primeiro lugar, e depois as demais cidades?

Para conseguir isso precisamos contabilizar os clientes com um LEFT JOIN, pois podem existir cidades sem qualquer cliente.

Order By simples pelo número de clientes

Abaixo um exemplo de como faríamos para simplesmente ordenar as cidades pela quantidade de clientes:

O problema neste tipo de consulta é que para encontrar uma cidade que não tenha tantos clientes será mais difícil, pois os dados mais abaixo não tem ordenação lógica.

Por exemplo, uma cidade com apenas 3 clientes está em algum lugar no meio da lista, e o vendedor terá que ler os itens um por um até encontrar o item desejado.

Comparando quantidades de registros

Vamos arrumar isso ordenando as cidades com mais de 100 clientes em primeiro, e as demais alfabeticamente, utilizando ORDER BY + COMPARAÇÃO:

No resultado da consulta podemos distinguir duas listas: a primeira com as cidades principais, e a segunda com as demais cidades.

A ordenação secundária se dá por ordem alfabética.

Considerações finais

Este é um recurso que pode ser bem útil, principalmente para ajudar na experiência dos usuários do sistema.

Ele evita ter que fazer 2 consultas separadas ou mesmo utilizar 2 selects com UNION, e isso traz um ponto positivo que é a simplificação da consulta no que diz respeito à sua manutenção de código.

É preciso verificar se este tipo de consulta pode causar algum impacto na performance das suas consultas.

Este comportamento do Order By + Comparação não funciona em todos os tipos de bancos de dados, mas já pude realizar testes no MySQL e no SQLite do Android com sucesso.

Outros bancos de dados podem oferecer formas alternativas, por exemplo, fiz o seguinte teste no Firebird 2.1, utilizando a função IIF(), e gerando um tipo de consulta que a gente vê com mais frequencia por aí! 😉

Explicando: Order By 1 significa ordenar pela primeira coluna, que no caso é o resultado da função IIF().

BB: Retirar senha de atendimento pelo celular

O Banco do Brasil disponibilizou através do seu aplicativo para smartphones a opção de retirar uma senha de atendimento presencial sem precisar estar na agência.

Imagine a situação: você combinou de encontrar os amigos na cafeteria durante o horário de almoço, mas terá que sair logo, pois precisará passar no banco.

A solução: basta “pegar” uma senha direto pelo app do banco.

Como eu descobri isso? Eu descobri do pior jeito: na fila do banco. Por essa razão achei legal compartilhar!

Veja se o seu banco também tem este recurso e compartilhe aqui!

Dica: não confie muito na previsão de atendimento, no meu caso, por sorte, fui atendido bem antes do tempo previsto! 😉

AudioSwitch – aplicativo para Windows

Este programinha open source permite alternar rapidamente o dispositivo de som, por exemplo da caixa de som para o fone de ouvido, e vice-versa. 🎧 / 🔊

É bastante customizável, funciona para dispositivos de output, como caixa de som, fone com fio, fone Bluetooth, e também para dispositivos de input tais como microfone, audio-in, muito legal pra quem faz vídeo tocando instrumento, por exemplo.

Através da criação de atalhos de teclado, por exemplo, [CTRL] + [MUDO], dá pra alterar entre os dispositivos rapidamente.

Caso seu teclado não tenha as teclas multimídia, você pode usar outra combinação.

Dica: “Don’t forget to save!”
Caso alterar as configurações, sempre clique em “Save Settings”! 😉

Download: https://github.com/sirWest/AudioSwitch/releases