Pesquisar este blog

sexta-feira, 14 de dezembro de 2007

Direto da Espanha!!

Rrsrsrs, a informação, pq minha pessoa, não sai do Ceará nem querendo! ^^
Seguinte, falando com um amigo meu, ele me confidenciou um fato muito importate. Vamos ver se vocês concordam comigo. Pergunto: Como se chama a "Espanhola" na Espanha? Espanhola minha gente, naum tow me referindo à pessoa rsrsrs. De qualquer forma, diz aí, como se chama? Lá eles chamam de "cubana"! rsrsrs, interessante não? Gostaria de saber as raízes desse apelido diferente. Mas, se vocês pensarem bem, cuba é conhecido por fazer charuto e ter bom médico. Ignorando a parte medicinal da coisa, vamos para os charutos. Lá, os charutos são feitos de forma artezanal, onde os trabalhadores, no nosso caso, as mulheres, ficam com o fumo nas pernas, sabe. É lá que o bichin é enrolado. Rrsrsrs, nunca chega até a área mais fofinha das fêmeas. Elas ficam com o fumo entre as pernas! Rrsrsrs; Aí faz vc pensar...o apelido então naum se justifica. Bla bla bla. De qualquer forma, essa informação em muito enriqueceu o meu dia.

Como não poderia deixar de faltar, Momento Carlito!
Momento Carlito : Dê dinheiro mas não dê confiânça.

Pq num é todo mundo que sabe usar confiança direito ; )

Então, vamos ao que interessa! Seguinte, hoje tenho um truque super legal com o Django, o framework WEB do Chuck Norris! Minha pessoa, enquanto codificando um aplicativo que precisava de um fórum, me deparei com a tarefa de implementar um contador de mensagens, tópicos, etc. Algo como: Criou um tópico, aumenta o contador do Fórum. Pois é, ao invés de fazer essa "árdua", quase brutal tarefa, na view, resolvi fazer via signals. Para quem não sabe o que é o sistema de signals do django, saiba que é como se fosse um disparador de eventos. Quando vc executa uma ação no modelo, um evento é disparado. Aí, se vc atrelar um conjunto de ações ao trigger do evento, vc pode fazer algumas mágicas bem legais. Ok, chega de lenga lenga. É hora do EXEEEEEMPLOOOOO!!!!


from django.db.models import signals
from django.dispatch import dispatcher
#importando o dispatcher e o signals

# use esta assinatura de método para ser feliz!
# instance é o objeto que chamou o evento
# sender é a classe do infeliz
# signal é o sinal enviado
# o resto é o de sempre
def topico_post_save(sender, instance, signal, *args, **kwargs):
if kwargs['created']:
# checa se o objeto esta sendo criado
instance.algo.contador += 1
instance.algo.save()
# ligando a ação ao evento
# primeiro argumento é o método
# o segundo é o evento a ser escutad
# o terceiro é a classe que manda o evento
dispatcher.connect(topico_post_save, signal=signals.post_save, sender=CLASSE)


Pronto, sempre que vc criar uma CLASSE, o contador de 'algo' vai ser atualizado. Bonitin, neh?

Ah sim, para quem não conhece, Chuck Norris

segunda-feira, 10 de dezembro de 2007

Design Patterns com Django ^^, e outras dicas

Olá! Hoje é um dia especial.
- "Especial por quê?" - diz o Joãozinho!
- Pirralho lazarento, especial porque a figura de minha pessoa vai falar um pouquinho sobre decisões de design que eu uso em meus aplicativos, assim como um ou dois truques legais, que eu també uso.
De qualquer forma, melhor começar com o pé direito, não é mesmo? Então vamos lá a um momento angelical (depois eu explico o por que do nome disso ^^).

Momento Angelical
Frase do Dia: Quem não escuta conselho, escuta "coitado!".
E assim falou a nossa filósofa cafúcia ^^.

Profundo não? Uma verdadeira tigela de mingal! Rrsrsrs, mas tem um fundo de verdade nisso aí. De qualquer forma, não sei já falei de Django para as vossas ilustres pessoas. Se já falei, "aleluia!" estou produtivo. Se não, se pergunte, caso você seja um desenvolvedor, se pergunte no âmago de seu ser por quê diabos vc não sabe do que estou falando! Um absurdo, criatura! Django é o framework WEB escrito em python mais quente do momento(quem falar em Plone/Zope, leva pedrada pela falta de cortesia). Leva padrões de desenvolvimento como DRY, KISS, MVT(C?), Ajax, Json, ORM, OO, e um monte de siglas de gente grande bem a sério. Esse post é PARA QUEM JÁ CONHECE DJANGO!!!.

Oh My God, they killed Kenny! You bastards! rsrsrs Pois é, esse é um post para público específico e especificado. Depois coloco um tuto aqui, mas esse depois não é agora.
De qualquer forma, eu vou falar de uma solução legal que pode ser acoplada no seu aplicativo django, e uma sugestão de organização de projeto. Algo que eu faço aqui e me agrada.

A solução facila criar decoradores que aceitam argumentos de uma forma fácil. A grande ironia da coisa é que se usa um decorador para fazê-lo. Vou logo avisando que essa solução não é minha e eu não lembro de onde peguei. De qualquer forma, se alguém achar o link e quiser postar aqui, está bem vindo.

A solução consiste em se criar este pequeno decorador:

decorator_with_args = lambda decorator: lambda *args, **kwargs: lambda func: decorator(func, *args, **kwargs)

Eu acho uma solução legal. Veja, na pior das hipóteses, funciona a contento! Eis aqui um exemplo de utilização:


@decorator_with_args
def notify_admin(view,message):
def some_func(request, *args, **kwargs):
pass #... envia a mensagem ou coisa do genero
return some_func


Esse decorador tem me evitado muito ninjutsu pythoniano.

Quanto a solução de design, estou meio sonolento, e por isso, vou ser bem direto. Ela consiste em criar um aplicativo controle, um aplicativo accounts e um package _lib para todo projeto que você fizer(dependendo das suas necessidades). O primeiro consiste em ser um aplicativo para "coisas". Você coloca views que não se encaixam em outros aplicativos nele. Inclusive, views que, por serem bem específicas, não merecem um aplicativo só para elas. Colocar templateTags e filters nesse aplicativo facilita as coisas, assim como o UserProfile(profile do usuário) e UserData(dados extras do usuário, como endereço, etc. Tenha-o linkado no Profile), que também "devem" ficar nele. O accounts é basicamente o que ele diz que é, serve para o usuário bulir na sua conta. Eu tenho criado gosto por ter um app desses nos meus projetos. Ele facilita bastante as coisas. Um negócio que fica legal também é criar um sistema de mensagens entre usuários nesse app. Dá para linkar tudo no mesmo canto; bastante prático.
Por ultimo, o _lib. Nele eu coloco bibliotecas/funções/classes que devam ser compartilhadas entre todos os aplicativos. Definir errorLists customizados nele, por exemplo, fica bem legal.

Rsrsrs, é, cansei...ops, Acabei! :D! Espero que este post tenha ficado interessante, ou não >: D. Rrsrsr, intelegível, pronto! Espero que tenha ficado intelegível! ^^ Abraço a todos.

quinta-feira, 6 de dezembro de 2007

Kmisetas Baratinhas ^^

Seguinte, vc já teve uma idéia de criar uma camisa com aquela imagem super legal que vc viu em tal canto, desenhou, ou fotografou, e nunca teve como colocar sua idéia em prática? Sim, eu sei, acontece muito! É difícil criar uma camisa personalizada quando o seu camiseteiro cobra 12 reais, mas pede pra vc comprar, tipo, 10 camisas de uma vez. Aí o que vc faz? Desiste da idéia? Desiste da sua camiseta de curso personalizada? Never! ^^

Achei esse site aqui, super legal. Nele, vc pode criar uma camisa da cor que vc quiser, com a imagem que vc quiser, e por um preço super em conta.



Clique no link acima para poder criar sua camisa personalizada com a sua foto ou imagem, por menos de 20 reais. ^^

Realmente muito interessante. Não se empolgou? Pois entra no site e tenta criar uma camisa. Você vai ver como é legal. Para presente, é uma mão na roda.

De qualquer forma, está aí a dica pouco informatíva mas extremamente útil de como se criar uma camisa personalizada, baratinha.

Abraço!

domingo, 2 de dezembro de 2007

Eu sempre soube que fazia bem pra saúde!

Eu sempre soube que fazia bem pra saúde, mas agora é científico!
Olha a fonte: Olhar para seios diariamente prolonga a vida dos homens
Pois é, depois de descobertas com pouco valor recreativo, como curas para essa e aquela doença, nada como uma pesquisa séria e voluptuosa como esta para melhorar o dia de um cidadão. Rsrsrsr, garotas, agora vocês já sabem, se algum rapaz resolver lhes encarar as partes macias, saiba que ele está apenas limpando as artérias, ok?! ^^

Notícias importantes à parte, alguém aí tem acompanhado as charges do charges.com? Rsrsrsrs, eles estão com um bloco muito bom, o "Capitão Entrevista", onde o capitão Nascimento entrevista(interroga) algumas figuras ilustres, como o Hulk, o MarceloD2 e Osama Bin Laden. Rrsrsrs, eu sei o q vc deve estar pensando "Isso vai dar merda!" rsrsrs, mas, que nada. O carisma(?) do capitão continua lá; todas as charges estão muito engraçadas e talz. Recomendo.

E, falando em capitão nascimento, não posso deixar de falar do grande sucesso de bilheteria, e obra cinematográfica da mais alta qualidade, o filme Tropa de Elite. Pow, quem não assistiu esse filme? Seja por vias alternativas ou no cinema, esse filme fez muito sucesso.
Um negócio que não me impressionou sobre a pirataria de tropa de elite é que, ao que tudo indica, a pirataria não teve impacto negativo no filme. Muitas pessoas que assistiram no dvd pirata, também foram ao cinema conferir a obra. Se duvidar, foi o projeto de marketing cinematográfico brasileiro mais barato e bem sucedido até hoje.
Na verdade, na verdade, eu gostaria de utilizar esse texto para um gancho sobre a tipificação da cópia não autorizada de obras de arte, mas como não tow com uma cabeça boa no momento, vou deixar para depois. De qualquer forma, pensem aí : "Por quê copiar uma obra de arte é um crime, se, o autor da obra não perde a obra, que, no caso, continua sob sua posse, nem é impedido de comercializar sua obra, já que ele ainda a tem."