O Projeto Software Livre Bahia (PSL-BA) é um movimento aberto que busca, através da força cooperativa, disseminar na esfera estadual os ideais de liberdade difundidos pela Fundação Software Livre (FSF), possibilitando assim a democratização do acesso a informação, através dos recursos oferecidos pelo Software Livre. Esta busca tem seus alicerces fundados na colaboração de todos, formando um movimento sinérgico que converge na efetivação dos ideais de Liberdade, Igualdade, Cooperação e Fraternidade.
O Projeto Software Live Bahia é formado pela articulação de indivíduos que atuam em instituições publicas e privadas, empresas, governos ou ONGs, e demais setores da sociedade. Além disso o projeto não é subordinado a qualquer entidade ou grupo social, e não estabelece nenhuma hierarquia formal na sua estrutura interna.
Ressuscitando seu celular após falha em mudança de flash
30 de Março de 2015, 15:16 - sem comentários aindaComo sou muito curioso e meu instinto hacker as vezes fala mais alto, comecei a futucar cada vez mais profundamente meu celular e testar algumas loucuras nele.
Em uma dessas tentativas, mesmo após ter feito backup, meu celular ficava com tela toda preta e nem aparecia a logo da empresa fornecedora no meu celular Pensei logo: “Pronto, perdi meu celular. Ganhei um peso de papel bem caro”.
Eu modifiquei o boot.img dele por uma imagem possivelmente defeituosa, mas eu jurava que ainda assim eu conseguiria acessar o recovery e ao menos restaurar o backup. Me enganei!
Acessando o fórum XDA Developers eu pude encontrar MUITA documentação do que poderia ser feito para resolver e tentei de tudo, mas nada parecia funcionar e meu nervosismo pela minha falha tornou minha busca no fórum bem mais complicada.
Felizmente eu consegui recolocar a flash de fábrica de volta no meu celular, eu segui os passos abaixo.
Firmware
Baixe o firmware relacionado ao seu celular, o meu é Xperia M e você pode pegar ele aqui aqui, mas caso o seu seja outro, basta procurar. A extensão dele é “ftf” e o meu firmware tinha 710 MB de tamanho.
Flasthtools
Primeiro precisamos baixar ele! Apenas baixe e coloque em uma pasta a sua escolha.
Ele vai reclamar que precisa da biblioteca libusb. Que pode ser obtida aqui. Depois de baixar vamos compilar e instalar com os comandos abaixo:
# tar xjvf libusbx-1.0.18.tar.bz2
# cd libusbx-1.0.18
# ./configure
# make
# make install
# ldconfig
O Flashtools precisa das bibliotecas no /usr/lib, mas a instalação da lib coloca ela no /usr/local/lib. Você pode mover para o local desejado, eu preferi criar link simbólico:
# ln -s /usr/local/lib/libusb-1.0.so /usr/lib/libusbx-1.0.so
# ln -s /usr/local/lib/libusb-1.0.so.0.1.0 /usr/lib/libusbx-1.0.so.0.1.0
Coloque o firmaware obtido no passo anterior na pasta firmawares do Flashtools.
Pronto! Agora inicie o seu flashtools como root. Ele abrirá uma tela pedindo pra mover a pasta firmwares de onde você baixou para /root/.flashTool/firmwares. Pode mover, isso mesmo mover, pois caso ele perceba que ainda existe a pasta firmawares no local hoje você executa o flashtools ele não abrirá o software corretamente.
Ele vai abrir uma tela mais ou menos assim:
Clique no ícone do raio e selecione a opção “flashmode”:
Na próxima tela selecione o firmware desejado:
Caso queira mudar mais alguma coisa, fique a vontade, eu não precisei mudar nada Basta clicar no botão “Flash”.
Agora aparecerá uma tela como essa, solicitando que seu celular entre em flashmode:
No caso do meu celular, eu arranquei a bateira, recoloquei ela, coloquei o cabo USB e pressionei o botão de volume para baixo até que o software flashtool reconhece ele
Depois ele começou o envio da flash. Bastou e esperar e meu celular estava prontinho para eu recomeçar tudo de novo
Muito obrigado a Nicklas Van Dam, que me ajudou MUITO lá no fórum XDA
Embarque na viagem das cooperativas do ano
29 de Março de 2015, 0:00 - sem comentários aindaEm Novembro de 2014 a Colivre, cooperativa de tecnologias livres, empresa na qual sou sócio ganhou o prêmio de cooperativa do ano 2014 na categoria de Inovação e Tecnologia, este prêmio nos deu o direito a uma viagem de integração entre as cooperativas vencedoras, nesta viagem a Colivre foi representada por mim e Daniela Feitosa, neste post faço um breve relato desta viagem.
No dia 24 de Março chegamos a Brasília, lá visitamos a OCB, fomos recepcionados por Fernanda Belisário e Gabriela Prado, elas nos deram boas-vindas e convidaram para assistir a uma palestra de Martha Gabriel sobre estratégia de marketing, Marta falou da importância de cuidar da sua marca, pegadas digitais, sombra e diversos outros conceitos de marketing.
No mesmo dia, à noite, houve o lançamento da Agenda Institucional do Cooperativismo 2015 com a presença de representantes da Ocergs-Sescoop/RS, sistema OCB, senadores, deputados, presidentes e superintendentes de unidades estaduais. A agenda apresenta as principais demandas do sistema cooperativo Brasileiro aos poderes Legislativo, Executivo e Judiciário para o ano de 2015.
No dia 25, já em Porto Alegre, visitamos a Escoop - Faculdade de Tecnologia do Cooperativismo, lá ouvimos uma bela apresentação do senhor presidente do Sistema Ocergs-Sescoop/RS, Vergilio Perius, explicou sobre o sistema cooperativista, explanou sobre o surgimento das cooperativas no Brasil e nos ensinou bastante sobre os 7 princípios do cooperativismo, dando destaque especial a importância da intercooperação.
Em seguida o coordenador Derli Schmidt detalhou o funcionamento e a missão da escola, mostrando os cursos disponíveis e a metodologia de ensino altamente preocupada com a qualidade do ensino, com um viés acadêmico, preocupada em produzir conhecimento inédito e de qualidade sobre cooperativismo no Brasil. Nossa visita foi noticiada no site da Ocergs/RS.
No dia seguinte, 26 de Março, visitamos a Sicredi Pioneira, fomos recebidos pelo senhor Mário José Konzen, vice-presidente da cooperativa, ele nos falou sobre o início do sistema Sicredi e a força do movimento cooperativista na cidade de Nova Petrópolis/RS, a “Capital Nacional do Cooperativismo”. Citou detalhes do programa “A união faz a vida”, uma iniciativa do Sicredi com o objetivo de promover práticas de educação focadas nos princípios da cooperação e cidadania.
Em seguida, Mário Konza, nos convidou a conhecer a Cooebompa, uma cooperativa escolar formada por alunos da Escola Bom Pastor, uma iniciativa interessantíssima que deixou todos os representantes das cooperativas campeâs com os olhos brilhando de emoção. Tivemos a oportunidade de assistir a Assembléia Geral Ordinária e ver um show de organização e determinação! O professor e coordernador do projeto, Everaldo Marini, faz um belo trabalho e merece todo o apoio possível para continuar com o projeto.
Da lá seguimos ao Memorial Padre Amstad, o senhor Mário nos falou da vida desde padre, criador do sistema de crédito cooperativo no Brasil.
Na sequência visitamos a Cooperativa Piá, uma cooperativa agropecuária de leite e frutas, o presidente, Gilberto Kny, relatou a história da cooperativa e destacou a preocupação com os seus associados, em sua maioria pequenos produtores. A nossa comitiva experimentou alguns dos produtos da Piá, como iogurte e leite achocolatado, todos acharam uma delícia, infelizmente não pude experimentar já que não consumo leite ou derivados. A Piá bem que poderia produzir algo à base de soja ou alguma alternativa ao leite.
Saindo da Cooperativa Piá fomos conhecer um dos produtores associados, conhecemos a fazenda “Sítio do Leite”, eles produzem leite e dizem que fazer parte da cooperativa facilita a vida pois não precisam se preocupar com a venda já que a Piá garante a compra de toda a produção.
Dia seguinte, 27 de Março, último dia de viagem, visitamos o CAS, Centro Admistrativo Sicredi, vimos o funcionamento da cooperativa, seus princípios e valores, conhecemos a Biblioteca do sistema e o Datacenter. O Datacenter ocupa um andar inteiro do prédio e tem uma infraestrutura impressionante, mantida inteiramente pela equipe do Sicredi.
Ainda no Sicredi, seguimos para um almoço em grupo e partimos para o aeroporto de volta para casa chegando ao fim desta viagem ao mundo cooperativista na presença de ótimas pessoas, dedicadas a criar um mundo melhor, mais humano, mais justo, mais cooperativo.
Deixo um agradecimento especial ao sistema OCB pela ótima organização do evento e pelo convite, Belmira Oliveira, Fernanda Belisário, Gabriela Prado, Igor Vianna, Patricia Resende e Sheila Malta Santos.
Muito obrigado!
Agradeço também a todos os membros da nossa comitiva, representantes das cooperativas campeâs, foram momentos de muito aprendizado:
- Leonel Fernandes e Celio Humberto da Coopatos
- Amauri Weber e Michael Bueno da Sicredi Vale do Piquiri
- Shirley Rodrigues e Ana Paula Ramos da Querubim Saúde
- Édio Signor e Daniel Cremonese da Coopercarga
- Irinaldo Barreto e Márcio Antônio da Coopertransc
Um agradecimento especial a Sheila Malta Santos (OCB) pela imagem utilizada no título deste post, este desenhado foi criado por ela durante o vôo de ida ao evento.
Valeu Sheila, ficou muito bom!
Embarque na viajem das cooperativas do ano
29 de Março de 2015, 0:00 - sem comentários aindaEm Novembro de 2014 a Colivre, cooperativa de tecnologias livres, empresa na qual sou sócio ganhou o prêmio de cooperativa do ano 2014 na categoria de Inovação e Tecnologia, este prêmio nos deu o direito a uma viajem de integração entre as cooperativas vencedoras, nesta viajem a Colivre foi representada por mim e Daniela Feitosa, neste post faço um breve relato desta viajem.
No dia 24 de Março chegamos a Brasília, lá visitamos a OCB, fomos recepcionados por Fernanda Belisário e Gabriela Prado, elas nos deram boas-vindas e convidaram para assistir a uma palestra de Martha Gabriel sobre estratégia de marketing, Marta falou da importância de cuidar da sua marca, pegadas digitais, sombra e diversos outros conceitos de marketing.
No mesmo dia, à noite, houve o lançamento da Agenda Institucional do Cooperativismo 2015 com a presença de representantes da Ocergs-Sescoop/RS, sistema OCB, senadores, deputados, presidentes e superintendentes de unidades estaduais. A agenda apresenta as principais demandas do sistema cooperativo Brasileiro aos poderes Legislativo, Executivo e Judiciário para o ano de 2015.
No dia 25, já em Porto Alegre, visitamos a Escoop - Faculdade de Tecnologia do Cooperativismo, lá ouvimos uma bela apresentação do senhor presidente do Sistema Ocergs-Sescoop/RS, Vergilio Perius, explicou sobre o sistema cooperativista, explanou sobre o surgimento das cooperativas no Brasil e nos ensinou bastante sobre os 7 princípios do cooperativismo, dando destaque especial a importância da intercooperação.
Em seguida o coordenador Derli Schmidt detalhou o funcionamento e a missão da escola, mostrando os cursos disponíveis e a metodologia de ensino altamente preocupada com a qualidade do ensino, com um viés acadêmico, preocupada em produzir conhecimento inédito e de qualidade sobre cooperativismo no Brasil. Nossa visita foi noticiada no site da Ocergs/RS.
No dia seguinte, 26 de Março, visitamos a Sicredi Pioneira, fomos recebidos pelo senhor Mário José Konzen, vice-presidente da cooperativa, ele nos falou sobre o início do sistema Sicredi e a força do movimento cooperativista na cidade de Nova Petrópolis/RS, a “Capital Nacional do Cooperativismo”. Citou detalhes do programa “A união faz a vida”, uma iniciativa do Sicredi com o objetivo de promover práticas de educação focadas nos princípios da cooperação e cidadania.
Em seguida, Mário Konza, nos convidou a conhecer a Cooebompa, uma cooperativa escolar formada por alunos da Escola Bom Pastor, uma iniciativa interessantíssima que deixou todos os representantes das cooperativas campeâs com os olhos brilhando de emoção. Tivemos a oportunidade de assistir a Assembléia Geral Ordinária e ver um show de organização e determinação! O professor e coordernador do projeto, Everaldo Marini, faz um belo trabalho e merece todo o apoio possível para continuar com o projeto.
Da lá seguimos ao Memorial Padre Amstad, o senhor Mário nos falou da vida desde padre, criador do sistema de crédito cooperativo no Brasil.
Na sequência visitamos a Cooperativa Piá, uma cooperativa agropecuária de leite e frutas, o presidente, Gilberto Kny, relatou a história da cooperativa e destacou a preocupação com os seus associados, em sua maioria pequenos produtores. A nossa comitiva experimentou alguns dos produtos da Piá, como iogurte e leite achocolatado, todos acharam uma delícia, infelizmente não pude experimentar já que não consumo leite ou derivados. A Piá bem que poderia produzir algo à base de soja ou alguma alternativa ao leite.
Saindo da Cooperativa Piá fomos conhecer um dos produtores associados, conhecemos a fazenda “Sítio do Leite”, eles produzem leite e dizem que fazer parte da cooperativa facilita a vida pois não precisam se preocupar com a venda já que a Piá garante a compra de toda a produção.
Dia seguinte, 27 de Março, último dia de viajem, visitamos o CAS, Centro Admistrativo Sicredi, vimos o funcionamento da cooperativa, seus princípios e valores, conhecemos a Biblioteca do sistema e o Datacenter. O Datacenter ocupa um andar inteiro do prédio e tem uma infraestrutura impressionante, mantida inteiramente pela equipe do Sicredi.
Ainda no Sicredi, seguimos para um almoço em grupo e partimos para o aeroporto de volta para casa chegando ao fim desta viajem ao mundo cooperativista na presença de ótimas pessoas, dedicadas a criar um mundo melhor, mais humano, mais justo, mais cooperativo.
Deixo um agradecimento especial ao sistema OCB pela ótima organização do evento e pelo convite, Belmira Oliveira, Fernanda Belisário, Gabriela Prado, Igor Vianna, Patricia Resende e Sheila Malta Santos.
Muito obrigado!
Agradeço também a todos os membros da nossa comitiva, representantes das cooperativas campeâs, foram momentos de muito aprendizado:
- Leonel Fernandes e Celio Humberto da Coopatos
- Amauri Weber e Michael Bueno da Sicredi Vale do Piquiri
- Shirley Rodrigues e Ana Paula Ramos da Querubim Saúde
- Édio Signor e Daniel Cremonese da Coopercarga
- Irinaldo Barreto e Márcio Antônio da Coopertransc
Um agradecimento especial a Sheila Malta Santos (OCB) pela imagem utilizada no título deste post, este desenhado foi criado por ela durante o vôo de ida ao evento.
Valeu Sheila, ficou muito bom!
O porquê de escolhermos o Puppet
28 de Março de 2015, 5:54 - sem comentários aindaNa organização que trabalho foi colocada a demanda de implantar um ferramenta de gerência de configuração, pois nosso ambiente sofre de uma grande carência em documentar suas mudanças, proporcionar uma documentação atualizada, isso sem falar na velocidade de atendimento de novas demandas ser prejudicada pela necessidade de atividade repetitiva/operacional majoritariamente manual.
Depois de uma longa etapa de analise preliminar iniciamos a comparação entre três soluções que poderia atender nossas expectativas: Chef, Puppet e Salt.
Dentre vários critérios analisados, levantamos cinco pontos que julgamos ser os mais relevantes para nossa realidade:
- Complexidade de instalação
- Curva de aprendizado
- Orquestrador
- Dashboard
- Quem utiliza
Com base nisso, instalamos cada solução, testamos o que ela poderia fazer para nos ajudar e refletirmos com base nos pontos já informados acima. Segue abaixo o resultado da nossa análise.
Complexidade de instalação
Puppet
A instalação dos pacotes puppetmaster(servidor) e puppet(clientes) na sua versão open-source não revelou-se muito complicada. Sua documentação oficial orienta inicialmente instalar o pacote puppetlabs-release com a versão referente ao sistema operacional. A única ressalva com relação à essa etapa é a escolha do pacote para o servidor, pois o puppetmaster é recomendável somente para ambiente menores, com pouca carga, pois seu servidor web embutido (webrick) suporta poucos nós clientes para um ambiente mais escalável deve-se optar pelo puppetmaster-passenger.
Apesar de orquestrador ser um critério analisado mais adiante, a complexidade de sua instalação está dentro do escopo desse critério. Embora a documentação oficial não faça nenhuma recomendação explicita ao uso do MCollective como orquestrador na versão Opensource, na Enterprise ela já vem embutida, somando isso ao fato dele já possuir plugins nativos para o Puppet pesou na escolha dessa ferramenta para a tarefa de orquestração.
Na versão Opensource do Puppet, o orquestrador não é configurado por padrão, houve um esforço maior na sua instalação e configuração. Há dependência da instalação e configuração de um Midleware, sistema de mensageira (Apache ActiveMQ).
Tivemos dificuldade com relação a falta de orientação para cenários mais complexos, por exemplo, com relação a questão de segurança na comunicação do midleware.
Salt
Basta instalar os pacotes salt-master(servidor) e salt-minion(clientes), fazer uma simples configuração para que os nós clientes reconheçam o master, posteriormente o master autenticar chaves publicas dos clientes e o ambiente já estará pronto para ser utilizado.
O orquestrador faz parte da solução Salt, sendo assim, a facilidade na instalação apresentada até então abrange também o orquestrador.
Chef
Sua instalação, com a exceção do cliente (chef-client), foi dificultada por alguns fatores.
- Na topologia cliente-servidor, o chef se diferencia das demais em virtude dele ser composto por 3 itens: Server; Workstation e Nodes, que apesar da documentação oficial explicar a função de cada um deles, a mesma não dá uma orientação sobre sua instalação.
- Com relação ao pacote para servidor (chef-server), no site oficial é disponibilizado apenas para Ubuntu e RHEL, e eles não demonstram nenhum interesse manter uma versão para o Debian no lado do servidor.
Conclusão desse critério
Adotando a topologia cliente-servidor, visto que todas os softwares analisados permitem também a opção standalone, ou seja, em modo autônomo, o Salt demonstrou-se a mais simples, o Chef mais complexa, ficando o puppet com complexidade intermediária. A opção pelo modelo cliente-servidor foi feita em virtude da gerência centralizada e a possibilidade do acompanhamento das modificações nos agentes através de um painel (dashboard), item que será melhor detalhado mais adiante.
Curva de aprendizado
Antes de iniciarmos a discussão desse critério, faz-se necessário a contextualização de alguns aspectos sobre gerenciamento ou automação de configurações, referentes aos três softwares examinados.
Em todos eles, as configurações são codificadas estaticamente através de arquivos chamados: Manifest no Puppet, Formulas no Salt e Cookbooks no Chef. Nessa parte não houve muita dificuldade de compreensão, não necessitando de um conhecimento muito avançado à nível de programação ou de linguagem específica, apesar de que, no Chef os Cookbooks podem ser escritos também em Ruby puro.
O interessante é que em todos eles utilizam algum conceito de linguagens de Orientação à Objetos como por exemplo, suporte a funcionalidade de heranças.
Outro detalhe não menos importantes e bem intuitivo, consiste em que todos eles possuem utilitários responsáveis pela obtenção de informação dos agentes: Facter no Puppet, Grains no Salt e Ohai no Chef, com os quais descrevem as propriedades dos sistemas operacionais, permitindo filtros na definição de estados das configurações assim como na orquestração.
Nesse critério, houve um empate técnico, pois todas são semelhantes no que diz respeito às definições de gerenciamento ou automatização de configurações, com perspectiva bastante compreensíveis.
Orquestrador
Segundo o Guto Carvalho (slide 5 da palestra Orquestração com MCollective): “Orquestrar significa invocar ações de forma paralela ou não, em tempo real, em diversos servidores de um datacenter, fazendo isto de forma automatizada, eficiente e controlada”. Orquestração não é gerenciamento de configuração e sim um tipo diferente de automatização em que ambos se complementam. Diferencia-se da seguinte forma, enquanto que na gerência de configurações, os estados desejados de um sistema é modelado, na orquestração, as ações são executadas remotamente sob demanda.
Nesse critério somente o Puppet e o Salt serão discutidos, visto que o Chef não possui orquestrador integrado como no Salt, nem mesmo tem em sua documentação alguma menção à nenhum utilitário externo desse tipo, como o Puppet tem o MCollective como exemplo, no seu caso, o uso da ferramenta como o knife com ssh, a qual está mais para execução remota, seria o que mais se aproximaria de orquestração.
Puppet
O MCollective, orquestrador adotado pelo mesmo, é uma ferramenta bem simples de utilizar, com bastantes plugins disponíveis, inclusive para o próprio Puppet. Ele disponibiliza diversas funcionalidades, como instalação de pacotes, gerência de serviços, shell (interpretador de comandos) e etc, além de ser extensível através de protocolo RPC. A complexidade de sua instalação, pelo fato do mesmo ser um outro software(pacote), com configuração própria e necessidade de instalar um pacote agent e client para cada plugin disponível, somando-se a depência de um midlleware, no caso o ActiveMQ, que também demanda uma instalação separada.
Salt
No Salt, da mesma forma que o MCollective, seu orquestrador, disponibiliza uma infinidade de módulos, oferecendo funcionalidades como: instalação de pacotes, gerência de serviços, shell (interpretador de comandos) e etc. além de ser extensível. O fato de já vir integrado e configurado, inclusive com seu middleware (ZeroMQ) cuja a leveza de sua biblioteca serve como framework de concorrência, sem falar no fato da comunicação ser nativamente segura entre o master.
Conclusão desse critério
o Salt levou uma grande vantagem nesse item, por essa funcionalidade já vir integrada e utilizar técnicas que permitem escalabilidade e velocidade na execução remota de suas tarefas, com uma linguagem bastante homogênea em virtude de sua agregação, ao contrário do MCollective no Puppet, ficando em segundo lugar como opção nesse item.
Dashboard
Após toda contextualização sobre automatização ou gerenciamento de configurações e orquestração, esse item é de fundamental importância para o nosso ambiente. O envio de relatórios, classificação externa e acompanhamento do ciclo de vida dos ativos em tempo real, ou seja, toda a visibilidade do que acontece no nosso ambiente após aplicação de alguma nova configuração. Tudo isso é esperado em um Dashboard.
Nesse quesito apenas uma ferramenta externa atendeu nossas expectativas. O Foreman é a ferramenta ideal para nosso ambiente, pois consiste em um gerenciamento do ciclo de vida desde provisionamento, configuração para orquestração e monitoramento. Tem interação nativa com o Puppet e sua interface web oferece várias informações com gráficos e formatos bastantes intuitivos, assim como muito mais recursos que os prórpios painéis oferecidos pelos próprios projetos das três ferramentas observadas.
A documentação do Foreman mencionar suporte também para o Salt e Chef, mas com limitação de certos recursos, isso sem falar na interação nativa que ele tem apenas com o Puppet, a qual contribuiu para promovê-lo como opção mais vantajosa em comparação às outras duas ferramentas nesse item.
Quem usa
Observamos quais as organizações/empresas que usam todas as três soluções e chegamos a conclusão que o Puppet tem um conjunto de usuários mais próximos da nossa organização, além de ter um número de “grandes players” bem superior as outras.
Conclusão final
Com base em tudo que foi explanado até então, principalmente no que tange a quem usa a ferramenta e existência de um ótimo suporte ao Dashboard que atende nossas expectativas, fica evidente que a solução que mais atende nossa necessidade é de fato o Puppet, mesmo o Salt tendo demonstrado ser uma alternativa bem mais simples.
Fonte
Esse texto foi construído com base no relatório final apresentado pelo bolsista Péricles Júnior, que trabalha na Coordenação de Redes e Infraestrutura de Superintendência de Tecnologia da Informação da Universidade Federal da Bahia.
O porquê escolhemos o puppet
28 de Março de 2015, 2:54 - sem comentários aindaNa organização que trabalho foi colocada a demanda de implantar um ferramenta de gerência de configuração, pois nosso ambiente sofre de uma grande carência em documentar suas mudanças, proporcionar uma documentação atualizada, isso sem falar na velocidade de atendimento de novas demandas ser prejudicada pela necessidade de atividade repetitiva/operacional majoritariamente manual.
Depois de uma longa etapa de analise preliminar iniciamos a comparação entre três soluções que poderia atender nossas expectativas: Chef, Puppet e Salt.
Dentre vários critérios analisados, levantamos cinco pontos que julgamos ser os mais relevantes para nossa realidade:
- Complexidade de instalação
- Curva de aprendizado
- Orquestrador
- Dashboard
- Quem utiliza
Com base nisso, instalamos cada solução, testamos o que ela poderia fazer para nos ajudar e refletirmos com base nos pontos já informados acima. Segue abaixo o resultado da nossa análise.
Complexidade de instalação
Puppet
A instalação dos pacotes puppetmaster(servidor) e puppet(clientes) na sua versão open-source, não revelou-se muito complicada. Sua documentação oficial, orienta inicialmente instalar o pacote puppetlabs-release, com a versão referente ao sistema operacional. A única ressalva com relação à essa etapa, é a escolha do pacote para o servidor, pois o puppetmaster é recomendável somente para ambiente menores, com pouca carga, pois seu servidor web embutido (webrick) suporta poucos nós clientes, para um ambiente mais escalável deve-se optar pelo puppetmaster-passenger.
Apesar de orquestrador ser um critério analisado mais adiante, a complexidade de sua instalação está dentro do escopo desse critério. Embora a documentação oficial não faça nenhuma recomendação explicita ao uso do MCollective como orquestrador na versão Opensource, na Enterprise ela já vem embutida, somando isso ao fato dele já possuir plugins nativos para o Puppet, pesou na escolha dessa ferramenta para a tarefa de orquestração.
Na versão Opensource do Puppet, o orquestrador não é configurado por padrão, houve um esforço maior na sua instalação e configuração. Há dependência da instalação e configuração de um Midleware, sistema de mensageira (Apache ActiveMQ).
Tivemos dificuldade com relação a falta de orientação para cenários mais complexos, por exemplo, com relação a questão de segurança na comunicação do midleware.
Salt
Basta instalar os pacotes salt-master(servidor) e salt-minion(clientes), fazer uma simples configuração para que os nós clientes reconheçam o master, posteriormente o master autenticar chaves publicas dos clientes e o ambiente já estará pronto para ser utilizado.
O orquestrador faz parte da solução Salt, sendo assim a facilidade na instalação apresentada até então abrange também o orquestrador.
Chef
Sua instalação, com a exceção do cliente (chef-client), foi dificultada por alguns fatores.
- Na topologia cliente-servidor, o chef se diferencia das demais em virtude dele ser composto por 3 itens: Server; Workstation e Nodes, que apesar da documentação oficial explicar a função de cada um deles, a mesma não dá uma orientação sobre sua instalação.
- Com relação ao pacote para servidor (chef-server), no site oficial é disponibilizado apenas para Ubuntu e RHEL, e eles não demonstram nenhum interesse manter uma versão para o Debian no lado do servidor.
Conclusão desse critério
Adotando a topologia cliente-servidor, visto que todas os softwares analisados permitem também a opção standalone, ou seja, em modo autônomo, o Salt demonstrou-se a mais simples, o Chef mais complexa, ficando o puppet com complexidade intermediária. A opção pelo modelo cliente-servidor foi feita em virtude da gerência centralizada e a possibilidade do acompanhamento das modificações nos agentes através de um painel (dashboard), item que será melhor detalhado mais adiante.
Curva de aprendizado
Antes de iniciarmos a discussão desse critério, faz-se necessário a contextualização de alguns aspectos sobre gerenciamento ou automação de configurações, referentes aos três softwares examinados.
Em todos eles, as configurações são codificadas estaticamente através de arquivos chamados: Manifest no Puppet, Formulas no Salt e Cookbooks no Chef. Nessa parte não houve muita dificuldade de compreensão, não necessitando de um conhecimento muito avançado à nível de programação ou de linguagem específica, apesar de que, no Chef os Cookbooks podem ser escritos também em Ruby puro.
O interessante é que em todos eles utilizam algum conceito de linguagens de Orientação à Objetos como por exemplo, suporte a funcionalidade de heranças.
Outro detalhe não menos importantes e bem intuitivo, consiste em que todos eles possuem utilitários responsáveis pela obtenção de informação dos agentes: Facter no Puppet, Grains no Salt e Ohai no Chef, com os quais descrevem as propriedades dos sistemas operacionais, permitindo filtros na definição de estados das configurações assim como na orquestração.
Nesse critério, houve um empate técnico, pois todas são semelhantes no que diz respeito às definições de gerenciamento ou automatização de configurações, com perspectiva bastante compreensíveis.
Orquestrador
Segundo o Guto Carvalho (slide 5 da palestra Orquestração com MCollective): “Orquestrar significa invocar ações de forma paralela ou não, em tempo real, em diversos servidores de um datacenter, fazendo isto de forma automatizada, eficiente e controlada”. Orquestração não é gerenciamento de configuração e sim um tipo diferente de automatização em que ambos se complementam. Diferencia-se da seguinte forma, enquanto que na gerência de configurações, os estados desejados de um sistema é modelado, na orquestração, as ações são executadas remotamente sob demanda.
Nesse critério somente o Puppet e o Salt serão discutidos, visto que o Chef não possui orquestrador integrado como no Salt, nem mesmo tem em sua documentação alguma menção à nenhum utilitário externo desse tipo, como o Puppet tem o MCollective como exemplo, no seu caso, o uso da ferramenta como o knife com ssh, a qual está mais para execução remota, seria o que mais se aproximaria de orquestração.
Puppet
O MCollective, orquestrador adotado pelo mesmo, é uma ferramenta bem simples de utilizar, com bastantes plugins disponíveis, inclusive para o próprio Puppet. Ele disponibiliza diversas funcionalidades, como instalação de pacotes, gerência de serviços, shell (interpretador de comandos) e etc, além de ser extensível através de protocolo RPC. A complexidade de sua instalação, pelo fato do mesmo ser um outro software(pacote), com configuração própria e necessidade de instalar um pacote agent e client para cada plugin disponível, somando-se a depência de um midlleware, no caso o ActiveMQ, que também demanda uma instalação separada.
Salt
No Salt, da mesma forma que o MCollective, seu orquestrador, disponibiliza uma infinidade de módulos, oferecendo funcionalidades como: instalação de pacotes, gerência de serviços, shell (interpretador de comandos) e etc. além de ser extensível. O fato de já vir integrado e configurado, inclusive com seu middleware (ZeroMQ) cuja a leveza de sua biblioteca serve como framework de concorrência, sem falar no fato da comunicação ser nativamente segura entre o master.
Conclusão desse critério
o Salt levou uma grande vantagem nesse item, por essa funcionalidade já vir integrada e utilizar técnicas que permitem escalabilidade e velocidade na execução remota de suas tarefas, com uma linguagem bastante homogênea em virtude de sua agregação, ao contrário do MCollective no Puppet, ficando em segundo lugar como opção nesse item.
Dashboard
Após toda contextualização sobre automatização ou gerenciamento de configurações e orquestração, esse item é de fundamental importância para o nosso ambiente. O envio de relatórios, classificação externa e acompanhamento do ciclo de vida dos ativos em tempo real, ou seja, toda a visibilidade do que acontece no nosso ambiente após aplicação de alguma nova configuração. Tudo isso é esperado em um Dashboard.
Nesse quesito apenas uma ferramenta externa atendeu nossas expectativas. O Foreman é a ferramenta ideal para nosso ambiente, pois consiste em um gerenciamento do ciclo de vida desde provisionamento, configuração para orquestração e monitoramento. Tem interação nativa com o Puppet e sua interface web oferece várias informações com gráficos e formatos bastantes intuitivos, assim como muito mais recursos que os prórpios painéis oferecidos pelos próprios projetos das três ferramentas observadas.
A documentação do Foreman mencionar suporte também para o Salt e Chef, mas com limitação de certos recursos, isso sem falar na interação nativa que ele tem apenas com o Puppet, a qual contribuiu para promovê-lo como opção mais vantajosa em comparação às outras duas ferramentas nesse item.
Quem usa
Observamos quais as organizações/empresas que usam todas as três soluções e chegamos a conclusão que o Puppet tem um conjunto de usuários mais próximos da nossa organização, além de ter um número de “grandes players” bem superior as outras.
Conclusão final
Com base em tudo que foi explanado até então, principalmente no que tange a quem usa a ferramenta e existência de um ótimo suporte ao Dashboard que atende nossas expectativas, fica evidente que a solução que mais atende nossa necessidade é de fato o Puppet, mesmo o Salt tendo demonstrado ser uma alternativa bem mais simples.
Fonte
Esse texto foi construído com base no relatório final apresentado pelo bolsista Péricles Júnior, que trabalha na Coordenação de Redes e Infraestrutura de Superintendência de Tecnologia da Informação da Universidade Federal da Bahia.
Criando imagens Docker (Dockerfile)
27 de Março de 2015, 8:09 - sem comentários aindaNo artigo anterior sobre Docker, eu falei sobre como modificar uma imagem docker usando COMMIT, mas propositalmente não comentei que essa não é a melhor prática Evitei tocar nesse assunto para não frustrar o aprendizado, pois é necessário aprender como funciona o COMMIT, com DIFF e afins.
A melhor forma de modificar uma imagem Docker é recriando ela, ou seja, modificando seu Dockerfile, ou criando um Dockerfile com a imagem escolhida como base e nesse artigo falaremos sobre tudo isso.
Dockerfile
Dockerfile é um arquivo, que contém um conjunto de instruções necessárias para se criar uma imagem Docker, ou seja, com posse do Dockerfile de uma determinada imagem, basta modificar o que deseja e recriar a imagem “do zero”, isso pode demorar um pouco mais, mas essa imagem será muito mais “enxuta” e você terá controle total do seu estado, o que seria bem mais difícil no modelo de efetuar commit de um container.
Caso não tenha o Dockerfile, você pode usar uma imagem a sua escolha como base e então criar a sua imagem como uma camada acima.
Sintaxes básicas
FROM : É a imagem base. Normalmente é usada com nome de distribuição (Debian, Ubuntu e afins), pois não precisaremos criar toda estrutura, certo?
MAINTAINER : É onde se especifica o autor da imagem.
RUN : São as instruções que serão executadas para criação da imagem em questão.
ENTRYPOINT : Especifica o que o que será executado ao iniciar o container. Ele age como precedente a sintaxe CMD, ou seja, caso o ENTRYPOINT seja “top”, o CMD pode ser “-b” que nesse caso ele executaria o top em modo batch. Uma vez que o ENTRYPOINT não seja especificado, e um CMD seja usado, o ENTRYPOINT padrão é “/bin/sh -c
“.
EXPOSE : Usado para informar qual porta o container docker irá “escutar”. Docker use essa informação para interconexão entre containers, ao utilizar links. EXPOSE não define qual porta será exposta para o hospedeiro ou tornar possível o acesso externo para portas do container em questão. Para expor essas portas utilize em tempo de inicialização da imagem a flag -p ou -P.
Para explicação mais exaustiva das sintaxes já explanadas e outras novas, acesse essa documentação.
Exemplo
Crie uma pasta com o comando abaixo:
# mkdir nginx
Entre nessa pasta:
# cd nginx
E então crie um arquivo chamado “Dockerfile” com o seguinte conteúdo:
FROM debian
MAINTAINER Rafael Gomes <gomex@riseup.net>
RUN apt-get update
RUN apt-get install -y nginx
ENTRYPOINT ["/usr/sbin/nginx"]
EXPOSE 80
Com esse Dockerfile, temos:
- Uma imagem com base na imagem do Debian, ou seja, não precisamos nos preocupar com o sistema básico.
- O autor dessa imagem sou eu
- Primeiro eu atualizo a base do apt-get e então instalo o nginx.
- Ao iniciar essa imagem ela executará o nginx automaticamente.
- A porta exposta para possível interconexão entre containers é a porta 80.
Nesse link tem um ótimo documento explicando as boas práticas na criação de um Dockerfile.
Criando a imagem
Com o Dockerfile preenchido, execute o comando abaixo para criar sua imagem:
# docker build -t gomex/nginx .
No lugar de “gomex” coloque o seu usuário da nuvem pública do docker e no lugar de “nginx” o nome da sua imagem.
Ao terminar, pode efetuar o push para a nuvem pública e assim proporcionar a distribuição da sua imagem:
# docker push gomex/nginx
Pronto! Agora já tem sua imagem prontinha, totalmente “enxuta” e disponível para que outra pessoa possa baixar e utilizar.
Por hoje é só pessoal, logo teremos mais artigos sobre Docker. Fiquem atentos.
Modificando e distribuindo “máquinas” Docker
26 de Março de 2015, 3:44 - sem comentários aindaComo relatei nesse artigo, um dos objetivos do Docker é sua facilidade para distribuição de imagens/”máquinas”, mantendo a sua portabilidade e simplicidade
Nesse texto, vou demonstrar como podemos modificar as imagens, que muitos chamam de máquina, e então distribuir via nuvem pública do Docker.
Iniciando a máquina
Para modificar uma imagem, precisamos que ela seja iniciada e então teremos a camada que chamados de container. Que é onde as mudanças são aplicadas. Para iniciar a “máquina” usa-se o comando abaixo:
# docker run -d -p 80:80 nginx
Agora vamos obter o número de identificação do container com o comando abaixo:
# docker ps
Modifique a máquina
Execute as modificações que deseja nessa “máquina”. Com o comando abaixo é possível acessar o shell da máquina recém iniciada.
# docker exec -it <id do container> bash
Verifique o que mudou
Para verificar quais arquivos de fato foram modificados nesse container. Execute o comando abaixo:
# docker diff <id do container>
Aplique a mudança
Agora que tem certeza sobre a mudança que será feita. Vamos criar uma nova imagem com base no estado desse container com o comando abaixo:
# docker commit <id do container> gomex/nginx-modificado
Atente que o termo “gomex” é meu usuário previamente registrado na nuvem pública do Docker. E tudo que vem depois da “/” é o nome da imagem que desejo criar. Com o comando abaixo será possível conferir que a máquina informada foi criada:
# docker images
Compartilhe
Agora vamos disponibilizar essa imagem para que outras pessoas possam baixar e usufruir da sua colaboração. Para isso usa-se o comando abaixo:
# docker push gomex/nginx-modificado
Acesse a nuvem pública do Docker e verá que sua imagem estará disponível para quem quiser baixar.
Pronto! Por hoje é só Aguardem novas postagens sobre o Docker.
Modificando e distribuindo “máquinas” Docker
26 de Março de 2015, 0:44 - sem comentários aindaComo relatei nesse artigo, um dos objetivos do Docker é sua facilidade para distribuição de imagens/”máquinas”, mantendo a sua portabilidade e simplicidade
Nesse texto, vou demonstrar como podemos modificar as imagens, que muitos chamam de máquina, e então distribuir via nuvem pública do Docker.
Iniciando a máquina
Para modificar uma imagem, precisamos que ela seja iniciada e então teremos a camada que chamados de container. Que é onde as mudanças são aplicadas. Para iniciar a “máquina” usa-se o comando abaixo:
# docker run -d -p 80:80 nginx
Agora vamos obter o número de identificação do container com o comando abaixo:
# docker ps
Modifique a máquina
Execute as modificações que deseja nessa “máquina”. Com o comando abaixo é possível acessar o shell da máquina recém iniciada.
# docker exec -it <id do container> bash
Verifique o que mudou
Para verificar quais arquivos de fato foram modificados nesse container. Execute o comando abaixo:
# docker diff <id do container>
Aplique a mudança
Agora que tem certeza sobre a mudança que será feita. Vamos criar uma nova imagem com base no estado desse container com o comando abaixo:
# docker commit <id do container> gomex/nginx-modificado
Atente que o termo “gomex” é meu usuário previamente registrado na nuvem pública do Docker. E tudo que vem depois da “/” é o nome da imagem que desejo criar. Com o comando abaixo será possível conferir que a máquina informada foi criada:
# docker images
Compartilhe
Agora vamos disponibilizar essa imagem para que outras pessoas possam baixar e usufruir da sua colaboração. Para isso usa-se o comando abaixo:
# docker push gomex/nginx-modificado
Acesse a nuvem pública do Docker e verá que sua imagem estará disponível para quem quiser baixar.
Pronto! Por hoje é só Aguardem novas postagens sobre o Docker.
Docker, infraestrutura simples e rápida
24 de Março de 2015, 3:24 - sem comentários aindaO que é Docker
Uma plataforma aberta para desenvolvedores e administradores de sistemas, usada para construir, executar e distribuir máquinas.
Tudo isso é possível por conta da Docker Engine, que é um forma de empacotamento portável, simples e pequena de infraestrutura, que constitui facilmente várias máquinas executando no mesmo kernel, porem isoladas logicamente, usando as tecnologias LXC, AUFS e BTRFS.
Continuando sobre o conceito da plataforma Docker, eles disponibiliza também um serviço de Nuvem para armazenar e compartilhar imagens prontas, criadas tanto pela comunidade responsável pelo Docker, como por qualquer outra pessoa interessada, e o melhor, sem custo!
Cada pessoa registrada no serviço tem a possibilidade de criar um número ilimitado de máquinas públicas (todos podem ver e baixar) e apenas uma máquinas privada na conta gratuita.
Imagens e Containers
Uma máquina docker pode ser composta de várias camadas. E essas camadas se dividem em dois tipos; Imagens e Containers.
- Imagens: Uma vez as máquinas em execução essas camadas são montadas como somente leitura. Elas podem ser compartilhadas por várias máquinas, ou seja, uma vez modificadas afetam todas as máquinas que usam essas imagens.
- Containers: Essas camadas são montadas como leitura e escrita. É onde de fato estão as modificações da máquina em execução. Toda modificação realizada em uma imagem é feita a partir de um container.
Instalando o Docker
Se você usar Debian Jessie ou superior, não terá problemas. Basta executar o comando abaixo:
# aptitude install docker.io
Caso não utilize GNU/Linux, pode usar o boot2docker.
Conhecendo alguns comandos básicos
Infelizmente o docker ainda não tem uma interface web ou gráfica desktop suportada de forma estável pela sua comunidade oficial, sendo assim falaremos aqui apenas de comandos no shell.
Segue abaixo os comandos mais básicos do docker:
: Baixar imagem
docker pull [nome da imagem]
docker images
: Listar imagens
docker run [nome da imagem]
: Iniciar a imagem
docker ps
: Listar containers
docker exec [id do container] [comando]
: Executa comandos no container
Mais comandos, podem encontrar nesse link.
Instalando uma máquina e executando em 2 minutos
Dois comandos, e o tempo gasto será apenas de download:
# docker pull nginx
# docker run -d -p 80:80 nginx
Pronto! Sua máquina estará funcionando.
O parâmetro -d, informa que a máquina será executada em background e o parâmetro -p informa que toda requisição da porta 80 no ip do hospedeiro, será redirecionado para a porta 80 da máquina que acabou de ser iniciada.
Sem persistência
Lembrando que as mudanças são apenas aplicadas no container, toda vez que desligar a máquina, na verdade você estará desmontando essa camada, e ao iniciar a máquina a partir de uma imagem será criado um novo container, ou seja, terás uma máquina “novinha em folha”.
É possível reiniciar um container que foi “desligado”. Usando o comando abaixo:
# docker start <id do container>
Obs: Lembrando que todos os dados de memória RAM serão perdidos, apenas os dados em disco serão armazenados e reutilizados na próxima execução.
Por hoje é só, aguardem novos artigos sobre Docker, pois falaremos sobre modificação de imagens, mapeamento de disco, criação de máquinas “do zero” e outras coisas interessantes sobre o docker.
Fonte : https://docs.docker.com/reference/
rrg: visualize the require hierarchy in Ruby projects
20 de Março de 2015, 18:55 - sem comentários aindaYesterday I was hacking on some Ruby code and getting a weird error which I thought was caused by mutually recursive require statements (i.e. A requires B, and B requires A). Later I realized that this is not an issue in Ruby, since the intepreter keeps track of what has already been required and will not enter a loop. But during the investigation I came up with something that turned out to be useful.
rrg will read the source code of a Ruby project and generate a graph based on the require statements in the code; nodes represent the source files and an arrow from A to B means that A contains a `require ‘B’` statement.
From the README
:
Just run
rrg
at the root of your project.rrg
will parse the code insidelib/
, and generate a graph description in the Graphviz format. You can pipe the output to Graphviz directly, or store it in a file and process it to generate an image.
If you call
rrgv
instead, it will automatically process the graph with Graphviz, generate a PNG image, and open it.
Let’s see some examples. First the classical “analysing itself” example, the require graph for rrg
itself:
Not very interesting, since all of the logic is currently in the main binary and not on library code. But 1) when I do the refactorings I want to, there will be more library code and 2) while writing this I implemented also parsing scripts in bin/
.
Now chake which is a slightly larger project:
An even larger (but still not that big) project, gem2deb:
Note that these visualizations may not be accurate representations of the actual source code. In Ruby, nothing stops one from implementing class A::B
in lib/x/y.rb
, but most reasonable code will make sure that filenames and the classes namespaces actually match.
If you are working on a sane codebase, though, visualizing graphs like this helps understand the general structure of the code and perceive possible improvements. The gem2deb
graph gave me some ideas already and I didn’t even paid much attention to it yet.
MuseScore 2.0 is great, try it!
14 de Março de 2015, 14:44 - sem comentários aindaA bit of context: two years ago I joined an undergraduate program in electroacoustic music composition at the Université de Montréal. Fortunately the faculty has decided to use mostly free software in the classes. They recently moved from Max/MSP to Pure Data to teach algorithmic composition. OpenMusic has been used for computer assisted composition classes. On acoustics classes, Sonic Visualiser is the recommended tool. For everything related to audio processing and sound synthesis we mainly use Python pyo library and Cecilia, both developed by the professor himself. Other many free softwares are used for building digital musical instruments in the courses: Arduino, SuperCollider, OpenCV, openFrameworks etc.
So far I touched two proprietary softwares for my classes. First it was Reaper, a sequencer which has been recently adopted in replacement of Pro Tools in some grades. Reaper has a less unfair distribution model compared to Pro Tools and despite being a closed piece of software it somewhat looks like a community-oriented project, being developed by a small team of free software enthusiasts. Being an amazing, complete and still lightweight DAW I hope it goes free some day in the future (I've read about this possibility somewhere in a forum that I can't find now). Anyway, after some months playing with Reaper I went back to Ardour. Because it's free, not because it's better (Reapper still seems unbeatable here).
The other was Finale, an alternative to MuseScore for music notation. I used it for three compositions mainly due to its playback capabilities. As a middle-aged music student I don't have the internal ear enough developed to listen orchestral textures, articulations and other details provided by expensive VST stuff. However, I found editing with Finale a pain in the ass. It's so bugged that I thought I were using a sort of alpha version. Basic editing is much more logical and elegant with MuseScore. After all, these first experiences with Finale didn't convince me that such realistic playbacks are adding any value to my music. I suspect that moving back to soundfonts or even composing with no playback at all will probably force me to exercice more critical/analytical listening whenever I need to understand the effects of a specific instrumental gesture and instrument combinations. So, I'm back to MuseScore. Not only because it's free, but also because it's better (at least for my current needs).
MuseScore has allowed me to easily edit music scores in a free operating system, using a small and not so powerful laptop. Unable to donate money to this amazing project I've been happily giving some time to it, by testing new releases, reporting issues, translating to portuguese and making available unofficial Debian packages while the current maintainer prepares the official one, which seems to be coming very soon. If you're a Finale/Sibelius user and don't strictly need that universe of orchestral VSTs samples for your music work, please give MuseScore a try. Have a quick look at its online handbook and in a few minutes you will be able to experience the real pleasure of music scoring using a computer. You can try different soundfonts, including the so nice Sonatina Symphonic Orchestra.
Below is a screenshot of MuseScore 2.0, which will be released very soon. You can download the RC version for your system in the MuseScore website.
MuseScore 2.0
Freeing myself from flickr
11 de Março de 2015, 3:03 - sem comentários aindaA flickr standard account gives you a free as in facebook service (I really wanted to reuse it!!!). I don't know about the pro account, but I don't believe it will give you much respect. Anyway, I realized that my photo albums in flickr are still online. And I'm currently unable to access my photos locally. I needed to download all them, then I decided to give flickrbackup a try. I started coding it a few years ago because at that time there was no free tools available for that. And then I abandoned it, too bad I feel. But for my surprise it worked without issues! And that's all I needed in my Debian box:
$ apt-get install flickrbackup
$ mkdir myflickr
$ flickrbackup -o myflickr/
(this will open a default browser for authentication and will automatically get the API key, then I just need an ENTER to start getting all my albums)
I'm not sure whether there're other free tools (as in freedom) for that, but before paying for a license or trusting an online service for downloading your sets please give flickrbackup a chance :)
I'll probably set a piwigo instance in a vps. But I fear php. So, suggestions on web galleries are very welcome.
Freeing myself from flickr
11 de Março de 2015, 3:03 - sem comentários aindaA flickr standard account gives you a free as in facebook service (I really wanted to reuse it!!!). I don't know about the pro account, but I don't believe it will give you much respect. Anyway, I realized that my photo albums in flickr are still online. And I'm currently unable to access my photos locally. I needed to download all them, then I decided to give flickrbackup a try. I started coding it a few years ago because at that time there was no free tools available for that. And then I abandoned it, too bad I feel. But for my surprise it worked without issues! And that's all I needed in my Debian box:
$ apt-get install flickrbackup
$ mkdir myflickr
$ flickrbackup -o myflickr/
(this will open a default browser for authentication and will automatically get the API key, then I just need an ENTER to start getting all my albums)
I'm not sure whether there're other free tools (as in freedom) for that, but before paying for a license or trusting an online service for downloading your sets please give flickrbackup a chance :)
I'll probably set a piwigo instance in a vps. But I fear php. So, suggestions on web galleries are very welcome.
Não faça hoje o que pode deixar para amanhã
4 de Março de 2015, 0:00 - sem comentários aindaNeste post irei falar sobre gestão pessoal de tempo usando a técnica Do It Tomorrow (DIT), uma proposta de Mark Forster publicada em seu livro de mesmo nome traduzido para o português como Deixe para amanhã, o título deste post é uma provocação ao conselho pupular “Não deixe pra amanhã o que você pode fazer hoje”, que vai totalmente de encontro à proposto feita pelo autor em seu livro.
Desde 2009 venho utilizando a técnica DIT proposta no livro de Mark Forster, é uma técnica muito simples e eficiente, tomei conhecimento dela através do post 3 alternativas para o GTD — 7 Hábitos, Deixe para amanhã e Zen To Done de autoria de Rafael Perrone em seu blog fazendoAcontecer.net.
Neste post Rafael Perrone cita algumas alternativas ao Getting Things Done (GTD), uma técnica para organização pessoal de tempo bastante popular e também muito eficiente, ela propõe uma série de ferramentas diferentes, como lista de coisas a fazer, lista de algum dia/talvez, lista de próximas ações, e algumas outras, possui também um workflow bem elaborado para que funcione bem, isso tudo faz o GTD ter uma curva de aprendizado relativamente grande e exige um esforço mínimo de aprendizado antes de começar a ser efetiva, e foi exatamente isto que me desmotivou à utilizá-la e me fez ir em busca de alternativas.
Assim, em 2009, cheguei ao DIT, uma técnica extremamente simples, com praticamente zero esforço de aprendizado inicial, e desde então tenho utilizado ela para gerenciar todas as minhas atividades.
Por que eu estava à procura de técnicas para gerenciamento de tempo?
Desde 2006 eu venho trabalhando como autônomo, gerenciando meu próprio tempo, sem patrão, sem relógio de ponto, sem fiscalização, e sem todas essas artimanhas que as empresas criam para tentar fazer seus funcionários serem eficientes. Eu precisava de algo que me tornasse de fato eficiente, algo que fizesse eu usar o tempo da melhor forma possível, caso contrário os cronogramas iriam furar, as atividades iriam ficar para depois, a procrastinação iria rolar solta, e isso iria inviabilizar minha vida como autônomo.
Ao usar DIT consegui a eficiencia que procurava, mas é importante destacar que nenhum método ou técnica irá fazer milagres, o importante é ter disciplina e se esforçar para pôr algo em prática, qualquer método que funcione vale à pena, eu escolhi o DIT pela simplicidade, apesar de simples é preciso ter disciplina, e isto será necessário para qualquer outro método. Ler sobre o assunto ajuda bastante, e o livro de Mark Forster me ajudou muito neste sentido.
Mas, como funciona esse método afinal?
O autor do DIT basicamente propõe uma modificação em algo já conhecido por todos nós, a famosa lista de coisas a fazer, é aquela listinha que fazemos num pedaço de papel com tudo que precisamos fazer. Ela se parece mais ou menos com a imagem ao lado.
É uma listinha imensa, que nunca chega ao fim…
Acredito que todos nós já fizemos uma lista semelhante a esta ao menos uma vez na vida, Mark Forster sugere que transformemos esta lista de coisas a fazer em uma lista de coisas que serão feitas, a lista de coisas a fazer tende a crescer eternamente e nunca conseguimos terminá-la, isto causa a sensação de que o trabalho nunca é concluído, e esta sensação não ajuda a melhorar ou mesmo a manter a nossa auto-estima.
A lista de coisas que serão feitas deve ser elaborada diariamente, e não deve ser alterada ao decorrer do dia, idealmente deve ser feita com antecedência, ou ao menos antes de começar o trabalho. Não se deve adicionar itens de última hora, ou seja, aquela lista de terça-feira que planejei na segunda, não deve ser alterada durante o decorrer do dia. Ela é uma lista fechada, uma vez planejada, nada mais entra, se surgir algo novo, planeje para o dia seguinte, ou para a semana seguinte, isto vai depender da natureza da atividade e do seu planejamento pessoal.
O objetivo é sempre começar o dia com uma lista de atividades previamente planejada, ao final do dia ela deve estar concluída, uma lista por dia, nada de transferir a lista de hoje para amanhã, isto não vai funcionar! O que costumo fazer é usar uma agenda de papel, e a cada dia na data correspondente eu anoto minhas atividades.
Eu indico fortemente o uso da agenda de papel, com ela você pode anotar seus compromissos, reuniões, etc, e também sua lista de atividades, uma coisa está ligada à outra, se num certo dia você tem anotado uma reunião que dura a metade do dia, saberá que não poderá planejar tantas atividades nesta data, ter estas informações num mesmo lugar facilita a gestão.
Veja por exemplo minha lista de atividades (coisas a serem feitas) do dia 05 de Fevereiro de 2015.
Nesta lista eu marco um X ao finalizar a atividade, o objetivo de cada dia é marcar todas as atividades como finalizadas, neste dia em particular eu consegui finalizar todas elas (ufa!), o autor Mark Forster fala em seu livro dos benefícios emocionais relacionados à isto, quando conseguimos completar o dia, uma sensação de trabalho concluído, um sentimento de missão cumprida, bem diferente do que seria causado por aquela enorme lista de coisas a fazer que nunca termina.
Nem sempre é possível finalizar todas as atividades planejadas, quando isto ocorre marco um N na atividade e planejo ela imediatamente para outro dia, assim, mesmo que não complete o planejamento diário, não perco a atividade de vista. É importante notar que isto deve ser evitado ao máximo, se perceber que está sendo constante replanejar atividades, procure descobrir o motivo, talvez você esteja colocando muitas atividades no dia, ou talvez você esteja procrastinando, se for a segunda opção, cuidado, isto é um problema sério!
Bem, é nisso que a proposta Do It Tomorrow (DIT) se resume, uma simples lista de coisas a serem feitas (de fato) por dia, o mais importante é ter disciplina e praticar até ganhar o hábito de sempre planejar o seu dia de trabalho, e lógico, ter responsabilidade com o seu próprio planejamento e buscar cumpri-lo sempre.
O autor Mark Forster dá uma série de dicas para conseguir chegar lá, sugiro que você leia o livro dele, mas faça isso hoje, não deixe para amanhã! rs