Mostrando postagens com marcador piu. Mostrar todas as postagens
Mostrando postagens com marcador piu. Mostrar todas as postagens

sexta-feira, 11 de setembro de 2015

Dica rápida: configurar retools para usar redis em local fora do padrão

Sabe aquela besteirinha que te faz perder um tempão? Esta é uma delas.
O pacote retools fornece diversas ferramentas baseadas no Redis como filas de mensagens e cache. Que são as funcionalidades que tenho usado. Porém, ele procura pelo redis em seu local padrão: localhost:6379.
Isso me fez perder um tempão ao tentar montar um ambiente de testes em

Docker: não importava as alterações nas configurações, continuava o mesmo erro. Até ver no log que o erro era no retools e não no framework, perdi um bocado de tempo.
Ele ter uma configuração simples por padrão é uma boa, mas pode levar a erros bobos como este. Para resolver, é só fazer isto:

import redis
from retools import global_connection


global_connection.redis = redis.Redis(host='myhost', port=6379)


Para mais detalhes dos parâmetros, é só clicar aqui e ir direto para a documentação do Redis-py. ;)

Por hoje é só isso.



terça-feira, 25 de agosto de 2015

Dica rápida: Acessar repositórios do git na rede local no Docker


Bem, antes de começar a postagem. Estou um tanto atrasado com postagens aqui, estou escrevendo uma postagem longa, mas vou demorar um pouco pra terminar. Então, vou jogar pequenas dicas aqui conforme os problemas que eu for encontrando no serviço. Assim resolvo meus problemas e o de mais alguém que estiver na mesma situação.

O problema

Ao tentar usar o git clone para baixar um repositório na rede interna dentro de um container docker recebi este belo erro:
ssh: Could not resolve hostname git.internal: Name or service not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

quarta-feira, 13 de maio de 2015

O retorno da salsicha

"Que a salsicha esteja com você"
Olá a todos! O nome da postagem é só por ter lembrado do filme mesmo.

Pra quem achava que o blog tinha morrido - e tinha mesmo - vou tentar ressuscitá-lo postando todos os rascunhos de postagens que deixei por fazer/terminar. São mais de 100 postagens, fora um volume grande de dados que deixei guardado no meu computador e nos meus favoritos. Algumas, como a que vou postar logo depois desta aqui, por serem coisas que fiz faz mais de dois anos, podem faltar explicações por não me lembrar mais como fiz tudo. Mas, serve como um norte né?


quarta-feira, 27 de março de 2013

Django - Processadores de contexto

Sempre que vamos processar um template por meio de uma view precisamos especificar diversas variáveis em todas as views. Por exemplo, é uma boa prática especificar as urls completas nos templates ao invés de só o caminho relativo. Para isso, precisaríamos recuperar o endereço base do seu site em todas as views manualmente. Ou então, dados processados relativos ao usuário atual. Teríamos que, na melhor das hipóteses, chamar um mesmo método em todas as views. Não seria muito mais fácil especificar isso uma vez só e o django carregar isso como valores "globais" em suas views? Pois bem, é exatamente isso que os processadores de contexto fazem.

Os processadores de contexto te permitem especificar diversas variáveis que são definidas automaticamente em todos os contextos automaticamente - sem precisar ficar as especificando em cada chamada ao método render_to_response(). Mesmo que os valores armazenados por essas variáveis necessitem ser processados para serem gerados, ou recuperados de um banco de dados.


terça-feira, 26 de março de 2013

Django admin: inlines obrigatórios

Um problema recorrente nos projetos em que trabalhei com Django foi tornar inlines obrigatórios no admin. Fiz diversas gambiarras, conforme a situação,  para tentar resolver isso, mas nunca havia encontrado uma forma satisfatória de resolver esse problema, até agora. Pois sabemos como os usuários são: você avisa que se não fizer de tal modo vai dar problema. O que acontece? Eles ignoram, isso causa um monte de problema e, claro, no final nós desenvolvedores somos os culpados. Enfim.

Depois de bastante tempo de procura, acabei caindo nesta discussão sobre o assunto que me levou a um snippet, um fragmento de código, que resolve o problema. O código a seguir foi obtido aqui. Ele altera o comportamento padrão da classe BaseInlineFormSet que é usada pelo admin para montar seus formulários, fazendo com que obrigue o usuário a salvar ao menos um inline.

segunda-feira, 25 de março de 2013

Dica rápida: Como obter o IP a partir de uma URL

Qualquer coisa online tem um endereço IP associado, seja um computador extra poderoso ou uma calculadora, eles terão endereços associados para poderem se comunicar. Assim como cada um de nós tem um nome, um rg, um cpf, etc para nos identificar unicamente no mundo.

Bem, para que não tenhamos que lembrar esses endereços para navegar na internet foram criados os servidores DNS. Estes servidores fazem a tradução de uma url como http://www.legauss.blogspot.com.br para o IP 74.125.234.235. O primeiro é muito mais simples para nós, mas os computadores não o entendem. Só entendem o segundo.

quarta-feira, 13 de março de 2013

Dica rápida: Como remover entidades HTML no MySQL?

Trabalhando com uma migração me deparei com o problema de ter de substituir entidades HTML por seus respectivos caracteres. Melhor ainda se fossem removidos acentos e caracteres especiais, pois esse valor é usado para gerar links permanentes.

domingo, 10 de março de 2013

Como gerar sitemaps a partir dos modelos do Django

Antes de qualquer coisa, o que é um sitemap?

É um formato de arquivo XML, definido aqui, que possui links para as páginas do seu site. Seu objetivo é facilitar o trabalho dos crawlers (bots de sistemas de busca que varrem os sites para indexação de conteúdo). Um dos critérios principais que todo crawler usa é não dar muita relevância para páginas muito profundas do seu site, ou melhor, páginas em que o usuário deve clicar em muitos links para chegar. Para essas páginas o sitemap é especialmente importante, pois ele ajuda a dar uma relevância muito maior a essas páginas, que poderiam ser consideradas pouco significantes para o crawler.

Sitemaps também facilitam muito o trabalho dos crawlers, os quais vão poder indexar um volume grande de páginas de seu site rapidamente, pois não vão precisar ficar varrendo página por página em busca de links. Porém, para sites muito grandes é aconselhável fazer múltiplos sitemaps, divididos em seções, para que não haja muitos links em uma página.

sexta-feira, 15 de fevereiro de 2013

Aumente o número de acessos a seu site - Sistemas de busca

Vamos explicar o básico para que seu site ganhe bastante com o uso de sistema de buscas. Como sabemos, os sistemas de buscas aumentam a visibilidade do seu site ao indexá-lo e exibir nos resultados de buscas. Porém, eles utilizam diversos critérios para definir quais sites são mais relevantes para a busca, ou seja, quanto mais relevante seu site, maiores as chances de aparecer na primeira página de resultados das buscas.

Quais são os critérios usados para definir essa relevância? Eles variam muito de um sistema para outro, mas sempre funcionam em torno de um conjunto de pontos chaves. Que, vamos resumir todos dentro de visibilidade. Um conceito importantíssimo, pois um site com grande visibilidade, da forma que abordamos aqui, será muito visitado por si só através da famosa propaganda boca a boca.

terça-feira, 29 de janeiro de 2013

Sites com vários idiomas em Django - Rosetta

Já faz algum tempo que entrei em contato com um pacote chamado Rosetta. Mas não mexi com ele. Fiz tudo que precisava no sistema e ficou esquecido lá. Só agora que fui trabalhar com ele de novo. E o achei que interessante.
Como o nome sugere, o Rosetta serve para tradução em vários idiomas. Como ele faz a tradução? Ele gerencia os arquivos de tradução do django. O que deixa tudo muito mais organizado e fácil de traduzir, pois tudo que você vai precisar fazer é preencher os campos para tradução no admin do Rosetta. Bem mais simples que lidar diretamente com os arquivos de idioma do Django, não é mesmo?

Antes de usarmos o Rosetta, precisamos gerar os arquivos de tradução do Django. Isso pode ser feito automaticamente. Primeiro, temos que configurar algumas coisas no settings.py. Pra começar temos que ativar o módulo i18n, que é o módulo de internacionalização do Django. Pelo que notei até na versão 1.4 do Django já vem ativado, caso não, ative-o no seu settings.py:
USE_I18N = True

sábado, 10 de novembro de 2012

Algoritmos tontos - Só pra distrair um pouco

Este é um post só para distrair um pouco. Esses dias estava vendo umas bobeiras (pra variar), cai em no mais famoso solucionador de problemas universal e resolvi dar uma olhada para ver se encontrava outros no gênero. Achei o original o melhor deles, mas os outros também são legais. ;)


Nota: na verdade, não são algoritmos, são diagramas de fluxo, fluxogramas ou, para os que gostam de estrangeirismo, FlowCharts. Eles servem para elaborar a lógica e organizar o funcionamento de um programa antes de começarmos a programação de fato.

sexta-feira, 9 de novembro de 2012

Django - Como ocultar condicionalmente inlines no admin?

Esta semana precisei fazer uma coisa no admin do Django que fazia tempo que tentava e não conseguia: ocultar os inlines condicionalmente. Ou melhor, queria só exibi-los para objetos existentes e ocultá-los para um objeto sendo criado. Ou qualquer outra condição que surgisse, até então, só exceções e decepções.
Sempre soube que é possível de ocultar os campos, mas e os benditos inlines? Todas as soluções que encontrei até hoje não resolviam isso. Ajudavam bastante, ou eram tão complicadas, que eram inviáveis de serem colocadas em prática. O que me salvou foi esta dica aqui que me deu as orientações de que precisava.

quarta-feira, 7 de novembro de 2012

Como converter Xoops-SmartSection para WordPress

Segundo a Wikipedia, o Xoops é um CMS feito em PHP cuja maior característica é a facilidade de instalação, operação, além do fato de existir uma infinidade de módulos que possibilitam agregar mais funções ao portal que se deseja criar. É uma ferramenta poderosa, flexível e fácil de usar na criação e administração dos mais variados tipos de sites. Pode ser usado para criar desde pequenas páginas até portais médios ou grandes. Todas as ações são efetuadas através de uma interface web simples e funcional, deixando aos administradores, praticamente só a tarefa de gerenciar o conteúdo do site. Ou seja, é uma ferramenta muita usada por quem quer ter um site bonito com CMS e não quer, ou não sabe, programar.

Um de seus módulos, que é o que vamos tratar de um probleminha aqui é o SmartSection. O SmartSection fornece todas aquelas funcionalidades de organização por categorias, subcategorias e notificações que o Wordpress e muitos blogs tem por aí.

Bem, o Wordpress é muito famoso. Mesmo achando desnecessário falar a respeito dele, vamos lá. Também da Wikipedia. O WordPress é um aplicativo de sistema de gerenciamento de conteúdo para web, escrito em PHP com banco de dados MySQL, voltado principalmente para a criação de blogs via web. Essa é uma das ferramentas mais famosas na criação de blogs disputando diretamente com o serviço do Google chamado Blogger. No entanto, o WordPress é adotado por aqueles que queiram um blog mais profissional e com maiores recursos diferenciais.


Bem, agora que já expusemos os elementos envolvidos vamos ao problema: converter os "posts" do SmartSection para o WordPress. A organização do banco de dados de ambos é muito diferente, mas depois de apanhar um pouco, foi possível.

terça-feira, 28 de agosto de 2012

Django: miudagens úteis

Sabe aquelas miudagens que temos que fazer com frequência, mas não tanta frequência assim? Claro que tempo o suficiente para não lembrarmos direito como fazer, ter que pesquisar quase tudo de novo, perder aquele baita tempo pra chegar num "Nossa! Não lembrava que era tão simples."?

Bem, é esse tipo de miudagem que vou listar neste post. Para montá-lo fui adicionando a ele todas as miudagens de que precisei várias nos últimos tempos e acabei tendo de pesquisar de novo para relembrar como fazer. Tem mais algumas que adicionei por serem coisas miúdas, mas difíceis de encontrar a solução por aí.

terça-feira, 21 de agosto de 2012

O editor de textos Vim - Básico


O Vim é um editor de texto extremamente poderoso e muito utilizado. Para quem não o conhece, sua aparência não promete grande coisa. Mas as aparências enganam. Ele possui uma infinidade de funções e é extremamente eficiente uma vez que você aprenda a usá-lo. Chega a ser comparado com IDEs poderosas como Eclipse e NetBeans.

O maior problema do vim é aprender a usá-lo. O início do aprendizado sobre o uso do vim é penoso. Pois tudo depende de linhas de comando. Não há balõezinhos com mensagens de ajuda, nem menus, nem nada disso. Por isso, vamos disponibilizar aqui mais um material para tentar fazer com que o aprender a usá-lo se torne algo mais fácil.

O grande foco do Vim é ser extremamente eficiente e acelerar a velocidade de trabalho do desenvolvedor/editor que o usa. Por isso, ele toma em conta todos os menores detalhes possíveis para que você não tenha que tirar suas mãos do lugar. Algo que, para quem está acostumado com usar o mouse para quase tudo, é quase inconcebível. Na época da faculdade eu via um sujeito ou outro praticando vim/vi e pensava comigo: "Tontos masoquistas!". Hoje vejo que tinham razão. O Vim é difícil, mas vale a pena.

segunda-feira, 20 de agosto de 2012

LXDE - Como realizar screenshots

O LXDE, vulgo "Lightweight X11 Desktop Environment", é um ambiente de área de trabalho extremamente rápido, ágil e poupador de energia. Ele é mantido por uma comunidade internacional de desenvolvedores e vem com uma bonita interface com o usuário, suporte a múltiplos idiomas, atalhos de teclado padrões e características adicionais, como um gerenciador de arquivos com navegação em abas.
O LXDE exige menos da CPU e consome menos memória RAM. Ele é desenhado especialmente para computadores em nuvem com especificações de hardware limitadas, como netbooks, dispositivos móveis (ex.: MIDs) ou computadores antigos. O LXDE pode ser instalado em distribuições como Ubuntu ou Debian. 
O código-fonte do LXDE está licenciado parcialmente sob os termos da Licença Pública Geral (GPL) e parcialmente sob a LGPL.

Porém, por ser um X11 feito para ser leve, ele não vem com algumas ferramentas úteis como screenshots. Convenhamos que screenshots não é algo que sempre utilizamos. Especialmente se estamos instalando o LXDE numa máquina antiga só para ressucitá-la. Por isso precisamos instalar nós mesmos uma solução para isso. A wiki do LXDE em inglês mostra duas soluções que vou passar aqui.

quinta-feira, 9 de agosto de 2012

Steam no Linux

O Steam é uma central de distribuição digital de jogos com milhões de usuários ativos no mundo todo. Lançado em 2003, ganhou popularidade e infraestrutura ao longo dos anos, e hoje recebe mais de dois milhões de acessos diários. Com ele, você tem à mão um serviço sem restrições para compra/aquisição de jogos, bastando ter um cartão de crédito internacional para usufruir de seus benefícios.

Um dos maiores atrativos do Steam é o barateamento de jogos. Um jogo que em uma loja você pagaria, por exemplo, R$100,00, no Steam é possível comprá-lo, em alguns casos, por menos de um quinto do preço da loja. Ou seja, menos de R$20,00 e com a vantagem do jogo ficar armazenado na nuvem do Steam: você pode baixá-lo e instalá-lo em qualquer máquina usando o seu login do Steam.

O Steam realiza muitas promoções que reduzem ainda mais o preço dos jogos. Além disso, também há os pacotes em que você compra o jogo e pode enviar algumas cópias de presente para seus amigos. Sem contar os brindes, como ao comprar um jogo ganhar outro.

Outra grande utilidade dele são os demos. Você pode baixar e testar o jogo em versão demo antes de comprá-lo. O que não é muito frequente em lojas.

Bem, o único problema é que o Steam foi feito para Windows e roda também em Mac. Porém, não há uma versão dele para o Linux, ainda.

quarta-feira, 8 de agosto de 2012

Programas alternativos

Muitas vezes queremos usar um programa mas ele não funciona em nosso computador. Motivos para isso não faltam. Pode ser por não ter uma versão do programa para o seu sistema operacional, por seu computador não ter os requisitos mínimos para usá-lo, as funcionalidades que você precisa podem só estar disponíveis na versão paga, etc. Há muitos motivos, e onde encontramos uma lista de programas alternativos para a mesma funcionalidade?



sábado, 4 de agosto de 2012

Linux: Painel de controle

Algo um tanto quanto problemático no Linux, em especial para usuários acostumados com sistemas operacionais como o Windows, é seu painel de administração. Não só cada X tem o seu, como a cada versão o painel apresenta diversas mudanças. Muitas vezes drásticas. O que obriga o usuário a ter que reaprender a usar a mesma coisa. O que, convenhamos, faz muita gente ficar longe do Linux. Eu mesmo, quando estava começando a me adaptar com o uso do Linux (ano passado) tive sérios problemas quanto a isso. Mas, aprendi sobre uma ferramenta e algumas boas práticas que me ajudaram com a transição.

A ferramenta em questão se chama webmin.

quinta-feira, 2 de agosto de 2012

Megaupload vai voltar?

O Megaupload era um dos maiores sistemas de armazenamento de arquivos online e gratuito. Apesar de termos que ficar esperando aquele contador maldito from hell liberar o link do download na opção gratuita. Graças a ACTA, o dono do site Kim Dotcom foi preso em Janeiro no começo do ano. Quase bateu com meu aniversário, olha que maravilha? Eu estava baixando uma série de desenhos de 20 anos atrás que só encontrei no megaupload, amei ver a imagem do FBI quando fui tentar continuar o download. Enfim.