Acredito que sim! Há algumas semanas, publiquei uma coluna referente a um novo projeto que estava desenvolvendo nesta poderosa linguagem de programação, o qual faz o uso da biblioteca gráfica Tkinter para construir belas interfaces gráficas, para promover a usabilidade dos programas. O objetivo original seria utilizá-lo como “pretexto” para aperfeiçoar as habilidades de programação, além de curtir esta nova fase da minha vida profissional de “desenvolvedor de uma linguagem só”. Brincadeiras à parte, o “pôbrema” é que já estava ciente de que conforme o meu aprendizado fosse evoluindo, novas idéias iriam aparecer…
Há um tempo atrás, já havia idealizado uma solução de automatização que tiraria proveito da biblioteca Netmiko, que por sua vez facilita a automação de tarefas em dispositivos de rede, através do uso de conexões remotas via SSH e a execução de comandos nativos dos sistemas que rodam neles. A idéia seria explorar as tecnologias designadas para a descoberta de dispositivos de redes (baseadas nos protocolos CDP e LLDP), com o objetivo de obter informações (endereçamento IP) dos demais dispositivos na rede (utilizando funções aninhadas para isto). Posteriormente, poderemos extrair as informações relacionadas as configurações dos dispositivos, além de utilizar os recursos nativos do Python (dicionários) para realizar edições nos arquivos e automatizar as tarefas de configuração.
Em breve, terei os conhecimentos técnicos necessários para isto, pois além de já estar estudando há tempos sobre a automação de redes, já estou me preparando para realizar os laboratórios práticos para o treinamento da certificação Cisco DevNet (basta apenas aparecerem algumas semanas livres na minha agenda e assim, ter tempo para praticar). E para complementar os meus estudos, aproveitei a promoção da Amazon para adquirir o ebook “Python for DevOps”, escrito por Varghese Chacko. Dentre os assuntos abordados pela obra, está um capítulo dedicado a administração de sistemas GNU/Linux, através do uso de uma série de bibliotecas do Python, como é o caso de os, sys, subprocess, psutils e shutils, entre outras não mencionadas.
Nem é preciso dizer que, com base nestes conhecimentos, mais uma nova idéia de projeto pessoal surgiu. Com base nos recursos oferecidos pelo Python e suas respectivas bibliotecas, também pretendo elaborar uma simples aplicação que não só permita monitorar os recursos computacionais de uma estação de trabalho, mas também realizar tarefas administrativas essenciais para a sua manutenção, como gerenciar recurso e processos, inspecionar as propridades do sistema e seus dispositivos, ativar/desativar recursos e serviços, além de otimizar o sistema. Embora elas possam ser feitas sem maiores dificuldades pelos administradores, a idéia é centralizar as operações mais triviais em uma única interface gráfica, facilitando assim a vinda dos usuários que não possuem muita experiência.
Esta aplicação funcionaria de forma parecida com o “Gerenciador de Tarefas do Windows”, mas oferecendo recursos adicionais para a administração do sistema. Atualmente, o GNOME conta apenas com a ferramenta “Monitor do Sistema”, que apesar de oferecer as funcionalidades essenciais para esta empreitada, ela não conta com muitas das funções previamente citadas. Tal como os demais projetos já idealizados, o principal objetivo será de criar oportunidades de aprendizado e aperfeiçoamento pessoal, tirando proveito dos desafios e dificuldades técnicas que elas oferecem, para buscar as soluções adequadas para resolver os problemas.
Por fim, também pretendo criar uma nova aplicação para o gerenciamento pessoal de finanças. Embora já existam vários programas que fazem esta tarefa, em geral eles acabam se mostrando pouco flexíveis em relação a forma com que cada pessoa faz o seu controle financeiro e por isto, muitos acabam preferindo utilizar as planilhas eletrônicas. A idéia central é promover a construção da estrutura da tabela, dando-lhes a opção de cadastrar as categorias e seus respectivos gastos, além de realizar os cálculos básicos e exibir as estatísticas relacionadas. Não sei se isto será realmente possivel (ou complexo), mas ao menos desenvolverei este programa inicialmente para atender as minhas necessidades pessoais.
Conforme havia mencionado de início, o “problema” é que além de dispor de pouco tempo para executar tais projetos, ainda tenho que lidar com a possibilidade de que novas idéias (para a concepção de novos projetos) também irão surgir e como consequência disto, será provavel que algumas destas fiquem “engavetadas” ou até mesmo sejam deixadas de lado (ou ainda, sejam iniciadas mas não concluídas). Seja como for, ter muitas idéias será algo bom, pois certamente irei priorizar aquelas que sejam as mais interessantes sob diversos aspectos (desafio técnico, utilidade prática, visibilidade do perfil, retorno financeiro, etc). Antes sobrando, do que faltando!
O importante é aprender e de quebra, se divertir durante o processo… &;-D
Se tem algo que sinto vontade de realizar, mas ao mesmo tempo me limito ao acreditar que demandaria mais esforço, energia, e tempo que atualmente não tenho é um desenvolvimento de um projeto de software da concepção até a execução em alguma plataforma (O SO será Linux. XD) .
Mas é tanta opção de linguagem de programação, framework, biblioteca, e técnicas de projeto e desenvolvimento, que me sinto perdido até mesmo em como começar.
Não tem jeito: escolha uma linguagem de sua preferência e comece por ela! Já em relação a frameworks e bibliotecas, geralmente dou preferência para aquelas mais simples (frameworks) e integradas ao sistema (bibliotecas), com o objetivo de reduzir ao máximo, as complexidades para a criação de softwares. &;-D