Falta menos de um mês para completar um ano que criei esta versão do Atarefado e escrevi quase todo este artigo e ainda não tinha publicado. Então, antes de apresentar minha arma contra a procrastinação, começo ponderando: Por que procrastinadores procrastinam?
Já contei sobre o Atarefado, ferramenta que criei para dar um pouco de ordem à insanidade caótica da minha mente e conseguir realizar as minhas tarefas. Também contei que recentemente adquiri um telefone celular com sistema operacional Android. Então, nada melhor que ter as tarefas sempre a mão. No entanto, Android é baseado em Java. E já contei também o que penso de diversas linguagens de programação, e Java não está entre as minhas preferências, mas Lua está. E porque criar uma versão específica para um sistema operacional, enquanto posso criar uma que pode rodar em qualquer sistema que possua um navegador?
Foi então que resolvi criar uma versão Web do Atarefado. Mas não abandonei a versão tradicional. Agora no código fonte há um código comum e os códigos desktop e webapp. Para a interface usei HTML5 com o framework Bootstrap. No servidor usei web usei Haserl e Lua. O Haserl funciona de forma semelhante ao PHP, porém usando ou shell script ou Lua. No Meu caso, a escolha é óbvia.
Estou criando uma ferramenta que carrega bibliotecas dinâmicas. No Windows o carregamento das bibliotecas dinâmicas (as dll) inclui o diretório atual (ou pasta corrente). No Linux não, o carregamento ocorre somente nos caminhos padrão do sistema. Há uma variável de ambiente que ajuda nisso, a LD_LIBRARY_PATH
. Porém seu uso pode ser inconveniente por algumas razões, vou citar três:
LD_LIBRARY_PATH
, o que afeta todo o sistema trazendo o risco de bibliotecas com código malicioso; LD_LIBRARY_PATH
, que se tiver uma lista extensa ou locais na rede pode levar a uma situação caótica; Graças a uma ideia idiota, que tive num momento idiota, achei a solução para os meus problemas (exceto os financeiros)... Ficou confuso? Vou explicar. Eu tenho um projeto chamado L-Bia que abandonei há alguns anos devido a umas dificuldades técnicas. Um dia desses, estava desperdiçando meu tempo lendo blogs de curiosidades (o momento idiota), quando me veio a ideia idiota: escrever, como item de curiosidade mesmo, sobre as linguagens de programação que aprendi. E pelo meio do artigo, citei meu projeto abandonado.
Foi então que me caiu de brinde a solução para os problemas que me levaram a abandonar o projeto. Estava programando na linguagem errada, eu odeio C. Era só reescrever em Pascal. O Free Pascal pode compilar para todas as plataformas relevantes, e é uma linguagem bem mais fácil de programar. Mas, do que mesmo estou falando? O que é L-Bia?
Estava lendo um desses blogs de curiosidades, abrindo aba após aba no navegador, esperando que em algum momento terminasse o ciclo vicioso, quando tive a ideia. Escrever um histórico sobre as linguagens de programação que já aprendi. Tenha em mente, que o que segue apresenta minha opinião pessoal sobre as linguagens, e minha opinião geralmente diverge do conceito de mercado em geral sobre linguagens de programação. E apesar que eu dou minhas recomendações a esta ou àquela linguagem, não estou discutindo aqui qual a melhor linguagem de programação. Vamos em ordem cronológica.
Muitas tarefas para fazer, pouco tempo para realizar. Situação comum, acha? Então some a preguiça e procrastinação. Já tentei muita coisa, Task Coach e w2do foram os melhores. Sempre combinados com o Dropbox. Mas como sempre acontece, alguma coisa com os programas prontos sempre me chateia. O Task Coach é em Python e consequentemente desnecessariamente grande. Mas o problema mesmo é que não funciona no computador do trabalho, onde preciso. O w2do também tem um problema semelhante, é em Perl. Outra coisa é que, apesar que gosto de usar a linha de comando, fazer isso no Windows é chato. Então, apresento-lhes:
Vou ser bastante sucinto, pois como pode notar não tenho tido tempo de escrever aqui no blog. Eu lido bem com fórmulas matemáticas, códigos de programação e esse tipo de coisa. Mas na hora de efetuar os cálculos mentalmente, a coisa complica. Uma simples soma ou subtração me deixa pensando por mais tempo que a maioria das pessoas. Meu atual emprego envolve trabalho como caixa, recebendo valores e dando troco. Receita de prejuízo. Para evitar prejuízo, elaborei este pequeno software.
Já falei aqui no blog que sempre gostei do MoneyLog, mas a coisa só ficou boa mesmo recentemente com a nova versão com suporte a widgets. Isso, é claro, porque agora eu poderia fazer as coisas do meu jeito (e para mim as coisas só são boas quando posso fazer alguma nerdice com elas). Já contei como fiz widgets para anotar valores e a soma desses valores. Mas não estava satisfeito, porque toda vez eu precisava editar dois arquivos: config.js
e o arquivo de lançamentos (no meu caso, moneylog.txt
).
Tarefas repetitivas tendem a serem enfadonhas e acabamos desistindo delas (quando isso é possível). Então, quanto mais simples, melhor. E foi o que fiz, agora tudo é feito no arquivo de lançamentos (o meu moneylog.txt
), e você só precisa editar o config.js
uma única vez. É claro que não vou simplesmente colocar o código aqui para você copiar e colar, mas também contar como essa ideia insana surgiu no meu emaranhado de neurônios (dizem que tenho).
Eu sempre tive algum método para controlar minhas finanças. O problema é que nem sempre os métodos eram satisfatórios e eu vivia trocando de um para outro. Já usei uma diversidade bem grande de programas. E alguns deles você passa mais tempo lendo o manual, configurando opções, definindo contas e olhando gráficos do que colocando suas finanças em dia. Coisa que acaba fazendo a gente desistir e perder o controle.
Já conhecia o MoneyLog do Aurelio há algum tempo, mas não se adequava muito bem. No MoneyLog você só vai colocando o que recebeu e o que gastou, não importa se pagou com dinheiro, cheque ou cartão. Quer dizer, não há o conceito de contas. Isso é bom, porque quanto menos complicado, mais fácil, e mais provável que você continue fazendo o controle. Mas isso também é mal, porque você não tem controle do seu saldo e acaba não sabendo se lançou todas as suas despesas ou esqueceu alguma.
Mas agora há uma solução.
Já faz um bom tempo que falei sobre o Premake, prometendo dar continuidade ao assunto. Em especial disse que iria falar sobre como compilar bibliotecas e arquivos não C. Pois bem, demorou, mas aqui vai. O principal motivo de ter demorado é que não usei muito a ferramenta ultimamente, não estive compilando muita coisa. E também porque não encontrei nenhuma forma prática de "compilar" arquivos não C. Por exemplo, documentação que use alguma ferramenta de conversão de formato.
Muita gente sabe que Lua é minha linguagem de programação favorita. Vivo no mundo da Lua, ou melhor, estou sempre falando de Lua. Mas há uma coisa que nunca havia reparado em Lua: não existe o comando continue como parte das estruturas de controle.
Vou explicar melhor. Eu tinha um programa com uma tabela contendo nomes de arquivos. Para cada nome na tabela eu abria o arquivo, verificava alguma coisa no conteúdo dele e fechava novamente. Por fim, passava para o próximo nome na tabela. Seria algo assim:
Por Steve Donovan - Tradução Breno Ramalho Lemes
Parte 1 | Parte 2
Mesmo scripts simples precisam dar ao usuário um retorno. Caso contrário, as pessoas ficam ansiosas e começam a se preocupar se os seus arquivos já foram salvos, por exemplo. No IUPLua isso é fácil e leva exatamente uma linha. Note que todos os scripts IUP devem ter pelo menos uma instrução require 'iuplua'
no início:
Por Steve Donovan - Tradução Breno Ramalho Lemes
Parte 1 | Parte 2
IupLua é um kit multi-plataforma para criar aplicações gráficas em Lua. Existem recursos poderosos para obter entrada do usuário que não exigem códigos complicados, por isso é particularmente bom para scripts de utilitários.Os atributos são um conceito importante no IUP. Você os define ou obtém simplesmente como campos de uma tabela. Em primeiro lugar, não há diferenciação entre maiúsculas e minúsculas, SIZE
funciona tanto quanto size
(mas tente ser coerente). Em segundo lugar, escrevendo para um atributo inexistente não lhe dará um erro, então faça com atenção. Em terceiro lugar, escrever para um atributo pode provocar uma ação, como por exemplo o atributo visible dos controles pode ser usado para escondê-lo. Pense neles como um tipo especial de chamada de função.
Compilação sem complicação com linguagem C, parece impossível, parece loucura, mas existe. Não se preocupe, se não entender é porque você não precisa disso. Se um dia precisar, vai se lembrar. Se entender, faça bom proveito - não é algo que se encontra facilmente.
Odeio programar em C, mas é necessário. Porém o pior é distribuir o código fonte de forma que seu público possa compilar. Compilar programas em C é um inferno, cada compilador tem um método diferente. Os mais comuns são os arquivos de projeto e os makefiles. Não há compatibilidade nenhuma entre compiladores e até um mesmo compilador pode ser incompatível entre versões ou sistemas operacionais diferentes. Você consegue compilar seu programa, mas as chances de que seu público consiga são reduzidas.
Continuando com minhas dicas aleatórias que ninguém sabe porque diabos estão misturadas nesse blog que não se sabe afinal qual o tema dele, vou retomar o assunto de como deixar os códigos dos scripts bem apresentável no blog.
Primeiro deixamos ele colorido, coisa que você pode acompanhar em Como mostrar código colorido no Blogger. Uma dica que eu tenho a acrescentar, é que dependendo do layout do seu blog o espaçamento entre linhas pode ser diferente do padrão, você pode querer acrescentar line-height: 100%;
ao seu estilo (confira um exemplo no final).
O público alvo deste blog - hã... eu não sabia que este blog tinha público mas... deixa pra lá, vamos continuar. Voltando, o público alvo inclui gente que não apenas copia e cola meus scripts, mas também aqueles que gostam de ler, estudar, aprender, modificar e fazer seja lá o que passa em suas cabeças insanas.
Deixando de enrolação, é feio pra burro ler código preto. Se considerar que alguém quer aprender alguma coisa com isto e não tem todo o tempo do mundo, então precisamos facilitar as coisas. Código colorido para facilidade de leitura. Também conhecido como Realce de sintaxe ou Syntax highlighting.
Theme by Breno Ramalho Lemes under Creative Commons Attribution, based on Jekyll Clean by Scott Emmons and icons by FatCow.