artigo

Supers Sobrecarga

Super-heróis bonecos

Uma das coisas mais complicadas em roteiros é lidar com sobrecargas de superpoderes, o fator overpower. Quando os personagens de um mundo são capazes de destruir estrelas, que desafio existe mais?

Uma boa história tem seus componentes balanceados no cenário e isso vale para todos os elementos. Desde o roteiro, que não pode ser nem irrelevante nem muito além das forças dos personagens (sabe aquelas aventuras forçadamente épicas que simplesmente não convencem?), até os próprios personagens.

Veja alguns supercaras conhecidos, como o próprio superman: ele tem superforça, supervelocidade, visão de raio-X, visão de calor, voa, tem uma formação rígida ética e intelectual. Chegou uma época em que alguém disse: "Epa! Esse cara tá fodão demais! Temos que dar um ponto fraco!" Foi aí que veio a velha ideia da criptonita.

O super é um personagem legal de explorar pois, embora não pareça a princípio, ele tem muitos pontos fracos além da pedra verde radiotiva. O principal é o seu senso de dever. Como ele age se o vilão coloca inocentes em risco, ou pessoas que ele conhece em risco?

Tá, vamos deixar o super de lado um pouco e vamos ver o Batman, o cara sem poderes mas com treinamentos assombrosos nas áreas marciais e de investigação, contando com um arsenal de protótipos equiparável ao do Homem de Ferro (apesar de não tão colorido). O Batman é uma história ainda mais interessante, em essência, que a do super por uma razão simples: é uma história pisicológica, pessoal.

Sim, é como se o Bruce não houvesse superado a perda dos pais e, por isso, tem que enfrentar seus medos, que são transpostos para o mundo exterior na forma de seus arqui-inimigos. Ponto fraco? Acho que seria psicológico, mas a mente sagaz de Bruce dificulta que alguém consiga explorá-lo por tempo suficiente.

E temos o alienígena Ajax, o patrulheiro cósmico Lanterna Verde, o Flash e por aí vai. Cada um com sua própria cota de superpoderes, com seus próprios pontos fracos, mas com sua determinação e força de vontade para vencerem sozinhos os mais diversos vilões que aparecem, o que sempre termina acontecendo mesmo.

Agora pergunto: o que acontece se juntarmos todos num grupo? Se cada um já era forte o suficiente para lidar com seus próprios problemas, que problemas precisarão existir para que esse grupo enorme seja necessário? Isso é um problema.

A Liga da Justiça é criticada muitas vezes por coisas como o emburrecimento inexplicável de Clark Kent para que o Batman tenha seu grau de importância no time. Sem contar que o grupo é tão grande que fica impossível usar todos os heróis de uma vez, obrigando os roteiristas a saltar o foco entre alguns personagens secundários. Não gosto disso.

Os Vingadores parecem resolver melhor os problemas de um grupo superpoderoso. Os desafios no desenho recente, por exemplo, terminam levando a Asgard e aos alienígenas clássicos da Marvel. Mas peraí! Quando o devorador de mundos chega, onde estão os X-Men e os outros infinitos mutantes?

Vejam, não estou falando de grupos de heróis, mas de grupos juntados. Os próprios X-Men funcionam bem, assim como o Quarteto Fantástico na sua época. Alguns heróis criados para agir sozinhos terminam precisando mesmo de ajuda em diversos momentos, mas a maioria não. O caminho que o leva a llutar sozinho o ensina a superar seus inimigos sem ter que contar com mais ninguém. E afinal, se você tem o Super-Homem, o Thor ou o Visão, que tipo de desafio o obrigará a procurar arqueiros e animais?

P. S.: Foto do post: Super-heroes y tú quien eres, de edcarsi

Special: 

God of War - HQ

God of War HQ

Kratos é o Dante da Sony. Simples assim. Movido frequentemente por ira, o capitão espartano que se tornou o deus da Guerra tem o mesmo grau overpower do protagonista de Devil May Cry. Apesar de ser um personagem divertido de controlar, seu carisma está muito longe do de Dante.

A história de Kratos é, de um modo geral, até interessante, bem como o uso de elementos da mitologia grega. A franquia já rendeu três títulos: dois para Playstation 2 e um para Playstation 3. Certamente outros títulos virão, para a alegria dos fãs. Mas vamos falar da HQ, lançada pela DC, que vem ao Brasil, claro, pela Panini.

Para quem gosta da série, o visual é bom. Não é exatamente reealista, mas é quase isso, com uma grande camada de efeitos visuais sobre os desenhos realisticamente estáveis. É bem adequado para a série. O roteiro também é interessante, exceto por um porém. Duas coisas que me desagradam quando usam mitologia em história: maniqueísmo forçado em universos mitológicos onde não havia necessariamente essa polaridade; infantilização dos deuses. Vai ver por isso evito usar deuses de mitologias em minhas histórias, criando minhas próprias mitologias.

God of War, apesar de ser apresentada como uma franquia mais adulta, por conta da violência e dos dramas vividos por seu protagonista, em certos pontos mostra não ser tão adulta assim.

Tá, isso é uma impressão minha. De qualquer forma a HQ é interessante. Se você gosta da série ou não se incomoda tanto com certas alteraçõees na mitologia, poderá adorar o material.

Special: 

Cultura do Medo, de Barry Glassner

Por que tememos cada vez mais o que deveríamos temer cada vez menos: crime, drogas, minorias, mães adolescentes, crianças assassinas, micróbios mutantes, acidentes de avião, fúria no trânsito e muito mais. Este é o estranho e enorme subtítulo do livro Cultura do Medo, de Barry Glassner, em tradução de Laura Knapp, lançado pela editora Francis.

O subtítulo já anuncia bem o que vamos encontrar. Como a mídia, governos e grandes empresas terminam, como se diz, “botando pilha” em assuntos não tão relevantes quanto outros. Como exemplo vejamos o caso do massacre em Columbine, em 1999. Na época surgiram vários questionamentos na imprensa estadunidense prevendo uma “epidemia” de crianças assassinas. O psicólogo Peter Langman escreveu depois, em seu livro Why Kids Kill: Inside the Minds of School Shooters: “Não eram rapazes comuns que foram importunados até retaliarem. Não eram rapazes comuns que jogavam jogos de videogame demais. Não eram rapazes comuns que queriam apenas ser famosos. Eles simplesmente não eram rapazes comuns. Eram rapazes com problemas psicológicos sérios”. A incapacidade da mídia de perceber este caso como uma tragédia pontual assusta. Em casos assim, questiona-se tudo: da solidão aos videogames, do desejo de fama à falta de acompanhamento dos pais. Assim, um caso isolado vira epidemia e a imprensa nem questiona a venda de armas como um “facilitador” desse tipo de crime.

No decorrer do livro vamos vendo como as estatísticas, estudos e depoimentos de pseudoespecialistas são utilizados para dar combustível a esse tipo de distorções, que elevam casos assustadores e excêntricos ao status de epidemia, ignorando completamente riscos e epidemias reais.

Não é só no Brasil que a imprensa distorce muito as coisas (embora aqui, em especial, tenham atingido um certo talento e controle). Exemplo claro: por que o SUS é sempre representado como algo ruim na imprensa? Já li e vi depoimentos de amigos Brasil afora falando de experiências pessoais com o sistema e sei do sistema daqui. Por que a imprensa brasileira se apressa em condenar instituições públicas e não fala em investimento? Já parou pra pensar nisso?

Quanto ao livro, bem, mesmo a realidade de lá sendo um pouco diferente da realidade daqui, venho notando uma tendência de imitação, que intelectuais e líderes daqui costumam tentar reproduzir o que houve por lá, com diferença de uns anos. Desta forma, o livro é também interessante para nós. Gostei da leitura e recomendo.

Special: 

Como autopublicar um Livro

Este post é uma tradução livre do artigo How to Self Publish a Book, escrito com contribuição de diversos autores no wikiHow. Além da tradução, algumas passagens e exemplos foram adaptados à nossa realidade brasileira (ou ao menos eu tentei fazer isso. Qualquer coisa questionamento ou sugestão, comente).


A autopublicação de livros é popular por várias razões. Não importa qual sua motivação para isso, o mercado está crescendo e se tornando mais barato e acessível do que nunca. Agora é um grande momento para autopublicação.

Há muitos concursos para os quais tanto faz se o livro foi autopublicado ou lançado pela via tradicional, tornando isso uma questão pessoal. Este artigo só guiará você pelo caminho da autopublicação.

Passos

Autopublicação é um tema amplo. Há muitas formas de autopublicar: gráficas da vaidade, selos de subsídios, microeditoras, POD (impressão sob demanda, em inglês), também conhecida como impressão curto prazo, e autopublicação "verdadeira".

Gráficas da Vaidade devem ser evitadas, eles se vendem como editoras tradicionais ou de subsídio, mas cobram altas taxas e fazem muito pouco ou nenhuma publicidade/distribuição para você. Eles não fazem seleção para a maior parte, e tomam o que vem no caminho.

Selos de subsídio não são tão seletivos quanto selos tradicionais, mas funcionam de uma maneira similar na forma como eles rejeitam manuscritos. Porém, eles cobram do autor para encadernação e publicação; lado bom é que eles contribuem com publicidade e distribuição, e publicam sob seus nomes. Autores tendem a ter controle limitado sobre projeto e essas coisas, enquanto o selo recebe a maior parte do lucro.

Microeditoras de pequenos mercados ou nichos tendem - devido ao risco de falta de recurso e baixa escala econômica - a publicar eletronicamente.

POD, ou Impressão por Demanda (Prinnt on Demand), sao serviços como Clube de Autores, Bookess e Perse (ou, em inglês, Lulu e Blurb). Eles tendem a ser usados para livros de curto prazo. São úteis para pequenas quantidades de exemplares e são úteis para amostras e livros de tiragem única (um só exemplar). O preço normalmente é um tanto alto e não funciona legal para impressão em grandes quantidades. Muitos são baseados online, assim alguns oferecem números ISBN por um custo adicional, e alguns também podem expor seus livros em sites como o Amazon. Não é geralmente uma forma aconselhável de autopublicação, exceto para impressão a curto prazo. Em boa parte do tempo, editoras POD agem como Selos de Subsídios ou Gráficas da Vaidade.

Por fim, há a autopublicação "verdadeira", na qual os escritores encontram e lidam pessoalmente com a publicidade, distribuição, projeto e armazenamento, e cobrem todo o custo. Um escritor pode contratar um designer para que faça a capa  ou simplesmente fazê-la ele próprio; como resultado disso tudo, todos os lucros obtidos vão diretamente para o escritor. Os passos para a autopublicação são listados abaixo.

Através de uma Gráfica Local

  1. Esteja preparado. Autopublicação requer um bocado de iniciativa e gerenciamento. Lembre-se de que sua gana de levar o livro ao público é que vão te ajudar a lidar com as frustrações que encontrará pelo caminho. Dito isto, a autopublicação pode ser um negócio lucrativo e excitante.
  2. Elenque as razões que o levam a querer autopublicar o seu livro, e faça estimativa do quanto vai custar. Determine se o motivo que o leva a querer publicar é forte o bastante para compensar o custo, e a menos que o seja, desista.
  3. Assegure-se de que o livro está completo, bem editado e revisado. Você pode dar um manuscrito para alguns amigos de confiança para que eles o avaliem e lhe deem um feedback, e falem com você sobre os fatos, ou motivações para os personagens, ou outros detalhes sobre o seu livro. Faça as mudanças que achar necessárias e considere-o pronto!
  4. Crie um bom título. Se você já não fez isso, crie um título que chame as pessoas pra ele. O título do seu livro pode influenciar as pessoas a comprá-lo, ou não. Por exemplo, "O Consumo de Excrementos de Apídeos e  Produtos Láteos com Bactérias Controladamente Injetadas" não soa tão.atraente quanto "O Prazer de Gorgonzola, Queijo e Mel".
  5. Deixe o projeto visual com um designer de capa profissional. A menos que você seja um artista e possa fazer isso por conta própria, contrate um profissional. Eles serão rápidos, e ajudarão seu livro a ter uma boa aparência - o que é muito importante quando ele estiver em uma estante de uma livraria! Se você estiver levando isso a sério mesmo, torne a apresentação do livro o melhor possível.
  6. Tenha um número ISBN. Você precisará disso se quiser que o seu livro possa ser listado no banco de dados das livrarias. Você pode comprar um ISBN diretamente do ISBN (www.isbn.org), mas cuidado, eles só vendem ISBNs em blocos de pelo menos 10, não por unidade. Há revendedores aqui e ali, uma lista deles você encontra em http://www.isbn.org/standards/home/Pubresellers.asp. ISBN cobram cerca de 100 dólares por ISBN.
  7. Procure uma gráfica. Dê uma volta por aí e colete cotações. Preços vão variar dependendo da qualidade do papel, a forma de prender as folhas, e cores. Quanto mais cópias você imprimir, mais baixo será seu preço por livro. Considere uma tiragem de 500 a 2.000 cópias.

Através de um Website

  1. Publicação online. Publicadores online como o Lulu deixarão você publicar seu livro gratuitamente, tanto para impressão quanto no formato de ebook. A impressão é "por demanda" e você só paga quando imprime uma cópia.
  2. Configure uma conta do programa. Você precisa fazer isso para poder fazer upload do livro e gerenciar os detalhes envolvidos.
  3. Digitalize seu livro. Se você escreveu seu livro a mão, agora é hora de levá-lo ao formato digital. Com um programa de edição e processamento de textos como o Microsoft Word ou LibreOffice/OpenOffice Writer, use seu tempo para transcrever cuidadosamente seus escritos. Quando você terminar, a edição e revisão se tornarão trabalhos muito mais fáceis para você. Alguns sites de autopublicação também oferecem serviços como consultoria online, de modo que você possa fazer um livro online usando modelos de livros e imagens do próprio site.
  4. Crie um bom título. Não importa como você publicará, o título é superimportante. Ele vai atrair potenciais leitores, ou então espantá-los. O que seria de "Harry Potter" se o livro se chamasse "Hogwarts" (antes que nós soubéssemos o que era Hogwart)?
  5. Edite o seu livro. Assegure-se de que o livro está completo, bem editado e com uma boa revisão. Você pode dar o manuscrito a alguns amigos de confiança para que eles leiam e avaliem, e então falem com você sobre fatos, ou motivação dos personagens, ou outras nuances do seu livro. Faça as mudanças que considerar necessárias e está feito!
  6. Faça o upload do seu livro finalizado. Depois disso, você terá que projetar sua capa (a menos que prefira uma capa preconstruída da empresa) e escolher o preço final para o consumidor e o tipo de livro (encadernação, escolha do formato, capa dura...) Uma vez terminada a categorização pedida pelo site, escolha a opção de concluir e o seu livro já está pronto para ser impresso. Você é agora um autor publicado!

Dicas

  • Faça um protótipo do seu livro antes de imprimí-lo. Se você não gostar de como o seu livro se apresenta, pode fazer as mudanças antes de gastar muito dinheiro em uma tiragem maior.
  • Certifique-se de que seu livro foi cuidadosamente revisado. Você não desejará que seu livro receba críticas ruins devido a erros de digitação ou um leiaute pobre. Vale a pena contratar um editor profissional para ler seu livro.
  • Adicione uma descrição precisa ao seu livro. Desta forma, ele atrairá mais clientes. Use descrições concisas para atrair seu interesse.
  • Publicidade é realmente a chave. Há uma abundância de livros maravilhosos no mundo que vendem 351 cópias porque eles não foram promovidos de maneira apropriada. E há muitos horríveis que vendem 43.000 cópias por terem sido devidamente promovidos.
  • Pesquisas mostram que consumidores de livros olham três coisas: a capa frontal, as orelhas e o índice. Gaste alggum dinheiro para que esses trêslugares cantem. Se necessário, contrate um artista gráfico, mas pense nisso como uma seção "cozinha e banho" . O dinheiro gasto nessas áreas renderá considerável retorno.
  • Liste seus livros no Amazon.com. Dê-se bastante tempo para escrever "comentários do editor" e certifique-se de que é preciso, gramaticalmente impecável e bem escrito. É isso que os compradores potenciais usarão para se decidir por comprar ou não seu livro.
  • Envie duas cópias do livro para a Amazon.com (seguindo as instruções em seu site) de modo que o livro possa ser escaneado e tornado disponível no serviço de "buscas dentro do livro".
  • Escreva revisões cuidadosamente formuladas, interessantes e inteligentes sobre seu livro no amazon.com, e crie uma assinatura ou tagline como "Rosemary Thornton, author, The Houses That Sears Built." Uma tagline gera bastante publicidade gratuita para o seu mercado alvo!
  • Envie cópias gratuiutas para alguém que possa ter interesse no assunto e lhe peça para escrever um review no amazon.com. Livros sem reviews no amazon.com tem muito, muita perda no ranking de vendas. Uma vez que potenciais compradores não poderão folhear seu livro, eles terão que contar com a opinião de outras pessoas.
  • Faça um site e crie um link para a livraria Amazon. Venda seus livros através do seu site.
  • Você também pode pensar em usar serviços que ofereçam atendimento POD. Mas tenha em mente que POD (impressão por demanda) só funciona bem para escritores que encaram a escrita como um hobby, não como uma carreira rentável. Imprimir 1.000 cópias de um livro custa em média deUS $ 3.500 a US$ 5.000 ou menos que US$ 5,00 por livro. O custo para fazer a mesma coisa usando um POD será três vezes maior. Amazon (e muitos outros vendedores de livros) te repassarão 50% do preço da capa. É difícil fazer dinheiro vendendo um livro de US$ 15,00 a US$ 10,00 (considerando que o preço de capa seja US$ 19,90).
  • Não crie um grande estoque de livros, especialmente se você puder evitar isso ou se a demanda é incerta. Um grande estoque extra significa que você pagará muito e terá boas chances de não ganhar muito com isso.
  • Exponha agressivamente seu livro através de press releasees, artigos em blogs, websites e quaisquer outras formas em que você possa pensar porque a publicidade é a atividade central que garantirá que pessoas conheçam e comprem o seu livro.
  • Leve o seu livro a feiras como a BookExpo America e a London Book Fair, que lhe darão acesso à indústria de publicação tradicional - vários empresas se oferecem para terceirizar esse tipo de publicidade de livro por uma taxa.

Alertas

  • Não escreva um livro com o mesmo título de algum outro. Dê-lhe um nome único e faça buscas antes de publicá-lo. Ter o mesmo nome que outro livro pode confundir os consumidores e, em alguns casos, gerar problemas legais.
  • Navegue no isbndb.com em busca do título que pretende usar. Procure também no Google para garantir que ninguém utilizou esse título antes.
  • Para melhores resultados, o assunto (ou a categoria) do seu livro deve fazer parte do título, ou pelo menos do subtítulo. Desta forma leitores o encontrarão em catálogos e bancos de dados mesmo que não conheçam o nome do autor ou do livro.

P. S.: Foto usada no post: 315, por aeri.

Special: 

Criando QR Codes com Python

Se você não tem nada a ver com programação, nem tem interesse no assunto, simplesmente ignore este artigo.


Mike Driscoll tem um blog dedicado a Python chamado The Mouse vs. the Python e eventualmente há excelentes artigos por lá.

Esta é uma tradução livre do artigo Creating QR Codes with Python e modifiquei sutilmente algumas coisas, incluindo os exemplos.

QR Code, para quem não sabe, é um estilo de código de barras bidimensional, podendo conter um fragmento de texto, o endereço de um site, um email ou mesmo uma ficha de informações pessoais básicas (reunindo tudo isso). Veja mais sobre esses códigos na Wikipedia.


QR Porco

Outro dia eu pensei que seria divertido criar em wxPython um pequeno programa que gerasse códigos QR e os mostrasse na tela. Eu queria fazer tudo com Python, assim eu procurei e encontrei 3 candidatos:

Testei o python-qrcode e o pyqrnative uma vez já que ambos funcionam tanto no Windows quanto no Mac e no Linux. Eles também não requerem nada a não ser o Python Imaging Library. O projeto pyqrcode requer vários outros pré-requisitos e não funciona em Windows, assim eu nem quis mexer nele. Terminei pegando algum código antigo baseado na minha aplicação Photo Viewer e o modificando levemente para torná-lo um visualizador de QR Code. Se isso te interessa, então continue lendo!

Começando

Como eu disse no início, você precisará da Python Imaging Library. Usaremos o wxPython para fazer a parte gráfica, assim você precisará deles também. E você vai ter que usar o python-qrcode ou o pyqrnative. A principal diferença que achei é que o python-qrcode é muito mais rápido na geração de imagens e gera o tipo que provavelmente você vai ver por aí. Por alguma razão, pyqrnative leva mais tempo pra executar e gera QR codes de aspecto muito mais denso. Deve haver opções para esses projetos que nos permitam gerar diferentes tipos de códigos, mas a documentação para ambos é abismal. Terminei usando o código e a IDE Wingware para navegar pelo código mais do que qualquer outra coisa.

Gerando QR Codes

De qualquer forma, uma vez que você tenha os pré-requisitos, você pode executar o seguinte código e ver o que o Python pode fazer:

# coding: utf-8
import os
import wx
 
try:
    import qrcode
except ImportError:
    qrcode = None
 
try:
    import PyQRNative
except ImportError:
    PyQRNative = None
 
########################################################################
class QRPanel(wx.Panel):
    """"""
 
    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)
        self.photo_max_size = 240
        sp = wx.StandardPaths.Get()
        self.defaultLocation = sp.GetDocumentsDir()
 
        img = wx.EmptyImage(240,240)
        self.imageCtrl = wx.StaticBitmap(self, wx.ID_ANY,
                                         wx.BitmapFromImage(img))
 
        qrDataLbl = wx.StaticText(self, label="Texto a transformar no QR Code:")
        self.qrDataTxt = wx.TextCtrl(self, value="http://www.mousevspython.com", size=(200,-1))
        instructions = "Nome do arquivo do QR Code"
        instructLbl = wx.StaticText(self, label=instructions)
        self.qrPhotoTxt = wx.TextCtrl(self, size=(200,-1))
        browseBtn = wx.Button(self, label='Change Save Location')
        browseBtn.Bind(wx.EVT_BUTTON, self.onBrowse)
        defLbl = "Default save location: " + self.defaultLocation
        self.defaultLocationLbl = wx.StaticText(self, label=defLbl)

        qrcodeBtn = wx.Button(self, label="Criar QR com qrcode")
        qrcodeBtn.Bind(wx.EVT_BUTTON, self.onUseQrcode)
        pyQRNativeBtn = wx.Button(self, label="Criar QR com PyQRNative")
        pyQRNativeBtn.Bind(wx.EVT_BUTTON, self.onUsePyQR)
 
        # Create sizer
        self.mainSizer = wx.BoxSizer(wx.VERTICAL)
        qrDataSizer = wx.BoxSizer(wx.HORIZONTAL)
        locationSizer = wx.BoxSizer(wx.HORIZONTAL)
        qrBtnSizer = wx.BoxSizer(wx.VERTICAL)

        qrDataSizer.Add(qrDataLbl, 0, wx.ALL, 5)
        qrDataSizer.Add(self.qrDataTxt, 1, wx.ALL|wx.EXPAND, 5)
        self.mainSizer.Add(wx.StaticLine(self, wx.ID_ANY),
                           0, wx.ALL|wx.EXPAND, 5)
        self.mainSizer.Add(qrDataSizer, 0, wx.EXPAND)
        self.mainSizer.Add(self.imageCtrl, 0, wx.ALL, 5)
        locationSizer.Add(instructLbl, 0, wx.ALL, 5)
        locationSizer.Add(self.qrPhotoTxt, 0, wx.ALL, 5)
        locationSizer.Add(browseBtn, 0, wx.ALL, 5)
        self.mainSizer.Add(locationSizer, 0, wx.ALL, 5)
        self.mainSizer.Add(self.defaultLocationLbl, 0, wx.ALL, 5)
 
        qrBtnSizer.Add(qrcodeBtn, 0, wx.ALL, 5)
        qrBtnSizer.Add(pyQRNativeBtn, 0, wx.ALL, 5)
        self.mainSizer.Add(qrBtnSizer, 0, wx.ALL|wx.CENTER, 10)
 
        self.SetSizer(self.mainSizer)
        self.Layout()

    #----------------------------------------------------------------------
    def onBrowse(self, event):
        """"""
        dlg = wx.DirDialog(self, "Escolher  um diretório:",
                           style=wx.DD_DEFAULT_STYLE)
        if dlg.ShowModal() == wx.ID_OK:
            path = dlg.GetPath()
            self.defaultLocation = path
            self.defaultLocationLbl.SetLabel("Local de salvamento: %s" % path)
        dlg.Destroy()
 
    #----------------------------------------------------------------------
    def onUseQrcode(self, event):
        """

https://github.com/lincolnloop/python-qrcode

        """

        qr = qrcode.QRCode(version=1, box_size=10, border=4)
        qr.add_data(self.qrDataTxt.GetValue())
        qr.make(fit=True)
        x = qr.make_image()
 
        qr_file = os.path.join(self.defaultLocation, self.qrPhotoTxt.GetValue() + ".jpg")
        img_file = open(qr_file, 'wb')
        x.save(img_file, 'JPEG')
        img_file.close()
        self.showQRCode(qr_file)
 
    #----------------------------------------------------------------------
    def onUsePyQR(self, event):
        """

http://code.google.com/p/pyqrnative/

        """

        qr = PyQRNative.QRCode(20, PyQRNative.QRErrorCorrectLevel.L)
        qr.addData(self.qrDataTxt.GetValue())
        qr.make()
        im = qr.makeImage()
 
        qr_file = os.path.join(self.defaultLocation, self.qrPhotoTxt.GetValue() + ".jpg")
        img_file = open(qr_file, 'wb')
        im.save(img_file, 'JPEG')
        img_file.close()
        self.showQRCode(qr_file)
 
    #----------------------------------------------------------------------
    def showQRCode(self, filepath):

        """"""
        img = wx.Image(filepath, wx.BITMAP_TYPE_ANY)
        # redimensionar imagem, preservando proporção
        W = img.GetWidth()
        H = img.GetHeight()
        if W > H:
            NewW = self.photo_max_size
            NewH = self.photo_max_size * H / W
        else:
            NewH = self.photo_max_size
            NewW = self.photo_max_size * W / H
        img = img.Scale(NewW,NewH)
 
        self.imageCtrl.SetBitmap(wx.BitmapFromImage(img))
        self.Refresh()
 
 
########################################################################
class QRFrame(wx.Frame):
    """"""
 
    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, title="Visualizador de QR Code", size=(550,500))
        panel = QRPanel(self)
 
if __name__ == "__main__":
    app = wx.App(False)
    frame = QRFrame()
    frame.Show()
    app.MainLoop()

O código para modificar e exibir imagens é tratado no artigo anterior que eu escrevi (e com link acima), assim as únicas partes com que você provavelmente terá que se preocupar são dois métodos para gerar códigos QR: onUseQrcode e onUsePyQR. Eu apenas peguei alguns exemplos de seus respectivos sites e os modifiquei para criar as imagens de códigos QR. Eles são muito simples, mas não são bem documentados, de modo que eu não posso realmente lhe dizer o que está acontecendo neles. Infelizmente, no momento em que escrevia este texto, o código desses projetos carece seriamente de comentários, com apenas alguns aqui e ali. Ainda assim, eu estava apto a gerar códigos QR decentes. O código a seguir foi feito usando python-qrcode.

Tela do código em execução, modo qrcode

Como vovcê podever, é um código padrão bastante simples. O próximo foi criado com PyQRNative e tem um aspecto muito mais denso:

Imagem do código em execução, modo PyQRNative

Tentei escanear ambas as imagens com o aplicativo leitor de códigos debarra do meu celular com android e ambos os códigos QR foram corretamente lidos por ele. Assim, se você precisa gerar códigos QR para o seu projeto, tenho esperanças de que ao menos um dos dois atenda às suas necessidades!

ATUALIZAÇÃO 21/05/2012

Um dos meus leitores (Mike Farmer) me contactou recentemente sobre seus experimentos com PyQRNative e me disse que "o primeiro parâmetro é o tamanho do container e o segundo é a correção de redundância/erro". Eu meio que adivinho o que o primeiro parâmetro quer dizer, mas realmente não entendi isso de correção de erro. Felizmente, Sr. Farmer me explicou isso: Se a correção de erros é menor, manchas e marcas não serão toleradas na leitura. Se aumentar o nível de erro, obviamente o código qr será aumentado, mas o que foi feito foi a duplicação dos dados dentro da etiqueta. Assim, se a etiqueta for manchada ou rasgada, ainda poderá sr possível ler e recuperar os dados restantes. Deste modo, se sua aplicação estiver criando etiquetas que podem ser danificadas, é sábio aumentar a correção de erros. Você também pode fazer coisas legais com isso, como sobrepor imagens ou textos na tag, aumentando a correção de erros, fazendo com que os dados redundantes tolerem o "dano". De qualquer forma, se você mudar o primeiro número, você pode expandir o tamanho do da imagem do código QR. Por que você faria isso? Bem, quanto mais informações você precisar guardar na imagem, maior ela precisará ser. Sr. Farmer veio com um código de testes divertido que nos ajuda a descobrir qual o tamanho mínimo que um código QR deve ter. Estou reproduzindo o código a seguir:

import PyQRNative
 
def makeQR(data_string,path,level=1):
    quality={1: PyQRNative.QRErrorCorrectLevel.L,
             2: PyQRNative.QRErrorCorrectLevel.M,
             3: PyQRNative.QRErrorCorrectLevel.Q,
             4: PyQRNative.QRErrorCorrectLevel.H}
    size=3
    while 1:
        try:
            q = PyQRNative.QRCode(size,quality[level])
            q.addData(data_string)
            q.make()
            im=q.makeImage()
            im.save(path,format="png")
            break
        except TypeError:
            size+=1

P. S.: foto usada no post: QRCode Piggy Bank, de B3OK.

Special: 

Ouya: um Videogame Indie do Futuro

Ouya, console e joystick

O mundo está mudando. O que era físico está cada vez mais partindo para "as nuvens". No mundo dos games não é diferente. Até a Nintendo, que antes abominava a ideia, já está trabalhando com DLCs (Downloadable Content) e vendendo via loja virtual os mesmos jogos que podem ser comprados em mídia nas lojas.

Há uma ideia por aí de que no futuro os jogos rodarão em mainframes e nossos videogames, em nossas casas, serão meros "terminais". Nós interagiremos com o console, que mandará os "pulsos do joystick" até os servidores remotos para que o video do jogo seja atualizado na tela. É uma ideia interessante, porém perigosa, como tudo que vai para as nuvens. Qualquer instabilidade na conexão com a internet impediria a jogatina. No fim das contas, essa mudança pode se mostrar inevitável com o tempo, mas há outra mudança mais sutil e interessante para os gamers, que já acontece há anos e às vezes passa despercebida. O modelo "Free to Play".

A ideia já vem sendo utilizada há alguns anos em jogos de redes sociais e em MMORPGs. O princípio é que qualquer um poderá jogar gratuitamente. Você só paga se realmente gostar e quiser um algo mais. Alguns jogos cobram por certos itens especiais a serem usados dentro do jogo, outros pela ativação de novos recursos ou acréscimo de novas fases, outros ainda tornam gratuita apenas uma versão demo, cobrando pela versão completa.

É em torno desse modelo e fundamentado no bem-sucedido Android, que surge um novo projeto de videogame para disputar pela nossa atenção: o Ouya.

Apesar de funcionar com Android, o Ouya  não pretende trabalhar com meros portes de jogos mobile. Ele planeja ir muito mais longe, trazendo jogos ricos em recursos visuais, de alta qualidade. Veja os dados técnicos previstos:

  • Processador Tegra3 quadcore
  • 1GB RAM
  • 8GB de memória interna
  • Conexão HDMI para TV, com suporte a até 1080p HD
  • WiFi 802.11 b/g/n
  • Bluetooth LE 4.0
  • USB 2.0 (uma)
  • Joystick wireless com controles padrão (dois direcionais analógicos, um digita, oito botões de ação e um botão de sistema), uma área sensível a toque
  • Android 4.0
  • Ethernet

É um projeto que realmente promete, mas está um pouco longe de se concretizar. Quer dizer, não muito. Os criadores do Ouya criaram uma campanha no site de financiamento social Kickstarter, objetivando conseguir US$ 950.000,00 em doações. Acontece que o valor foi atingido em questão de horas e eles já ultrapassam a marca dos US$ 5.000.000,00 (isso mesmo: cinco milhões de dólares!).

Como é comum em financiamento social, os patrocinadores recebem recompensa por ajudar. No caso do Ouya, a recompensa pode ser desde a reserva de um nome de login exclusivo até um console Ouya personalizado. As doações ainda podem ser feitas por mais uns dias (até o dia 9 de agosto (ou seria dia 8?) e você ainda pode ajudar (e garantir seu console)!

Ainda não está convencido? Dá uma olhada no video de apresentação do projeto:

Vizzed - Retrogames

Você gosta de games clássicos? Games de Nintendo, Super Nintendo, Nintendo 64, Master System, Mega Drive? E portáteis clássicos tipo Game Boy e Game Gear? O Vizzed tem um serviço que permite jogar via emulação diretamente a partir do site deles. Eles oferecem emuladores para todos esses consoles e alguns outros.

Parte dos emuladores exige a instalação de plugins, mas outros - como o NES e o Game Boy - podem ser jogados bastando que você tenha Java instalado.

Testei alguns jogos para NES usando Java e não vi opção para salvar (talvez eu simplesmente não tenha encontrado ou talvez essa opção exista apenas nos plugins, ainda não sei). No geral, é uma boa.

Uma coisa interessante sobre o serviço é que, mesmo a biblioteca de jogos sendo altamente extensa (mais de 23 mil jogos), a franquia Pokemon domina em absoluto. Veja a lista dos destaques da página inicial:

Com esse lance de nuvens, agora você pode jogar retrogames nas nuvens também!

Special: 

Scuttle - A Alternativa ao Delicious

Scuttle

A febre é ir pras nuvens já há alguns anos, mas as nuvens podem ser perigosas. Podem se dissolver de uma hora para outra, sem contar que perdemos toda a nossa privacidade. Por isso, prefiro ter meus arquivos perto de mim ou, pelo menos, em uma nuvem pessoal. Na web, mas em um serviço contratado por mim onde supostamente só eu tenho acesso às informações e sobre o qual eu possa ter controle de backups pra recuperação em caso de problemas.

Existem softwares livres para vários serviços que podemos utilizar em um servidor. De ferramentas de blog a gerenciadores de redes sociais. Hoje vamos falar do software livre que adotei ao deixar o Delicious: um gerenciador de marcadores.

Para quem não conhece, Delicious é um serviço do que eles chamam de bookmarking social. Nele, nós registramos links e podemos compartilhá-los com amigos ou acompanhar os links registrados por nossos amigos. Se você quiser ser independente de navegador e computador, você precisa de um gerenciador de marcadores online.

Você pode dizer: "Tá, dá pra usar o Twitter ou o Facebook para isso!". Claro, pode usar sim, mas vá procurar seus links daqui a um ano! Ou melhor, tente resgatar, por exemplo, todos os links que eram blogs ou que eram relacionados a literatura... Não, faz muito mais sentido manter os links em um sistema desses.

Ensaiei a saída do Delicious várias vezes, mas nunca encontrava um gerenciador de marcadores que me atendesse, até que conheci o Scuttle, um software livre em PHP + MySQL com várias qualidades:

  • Multiusuário
  • Tags
  • Suporte a Português
  • Botões práticos para cadastrar marcadores (como os do Delicious)
  • Importação de arquivo de marcadores (do Internet Explorer, Firefox ou Netscape)
  • Importação de marcadores do Delicious

Claro que tem seus defeitos e o fato de seu desenvolvimento está aparentemente estagnado desde 2010 não ajuda. Mas independente disso tem me atendido muito bem!

Quem quiser testar pode usar o Links do Bardo WS, ou até mesmo usá-lo em produção (apesar de eu não me responsabilizar por problemas eventuais - que certamente me vitimariam também). Pode criar sua conta lá, os spammers mesmo já acharam o caminho. :-S

Special: 

Porque Cultura Livre pode ser Boa para o Mercado de Jogos

Este post é uma tradução livre do artigo Why Free Culture could be Good for the Games Business, publicado em abril de 2012 no blog Free Gamer.


Hoje eu gostaria de falar sobre como a cultura livre pode ser (talvez contra-intuitivamente) boa para o negócio de jogos comerciais. Estou usando Dungeons & Dragons (e seu recente fork de sucesso Pathfinder) como um exemplo concreto daquilo que estou falando, mas não há razões para que isso não se aplique a jogos de computador também.

Tenho sido um geek do Dungeons & Dragons por 20 anos, desde que eu foi apresentado a ele no primeiro ano do ensino médio. De volta aos dias ginasiais, D&D estava na segunda edição e a Internet estava em sua infância. Dungeons & Dragons era a posse de um monstro encrenqueiro chamado TSR, que era famosa por enviar reclamações legais de uso de copyright toda vez que alguém colocava na web algum conteúdo de D&D criado por fãs. Isso era particularmente irônico, uma vez que a ideia por trás do Dungeons & Dragons era que eles davam livros de regras e nos chamava a criar nosso próprio conteúdo derivado deles.

No final de 1990, por diversas razões (que sem dúvida incluem o fraco tratamento dedicado a seus consumidores), a TSR estava com problemas financeiros e foi vendida à Wizards of the Coast. Como qualquer seguidor das companhias de jogos sabe, é sempre um pouco assustador quando outra companhia adquire a companhia de que você gosta. É comum que termine se mostrando algo ruim, porque a companhia que adquire a outra é invariavelmente maior e geralmente cuida menos da qualidade atual dos produtos e se preocupa mais com renda (pense em todos os estúdios que a EA comprou e depois arruinou). Neste caso em particular, nosa preocupação foi infundada; a compra da TSR pela WOTC terminou resultando em uma enorme mudança cultural para o D&D...

O lançamento da Open Game License, uma licença com copyleft para conteúdo de RPGs de mesa, foi simplesmente a melhor coisa que poderia ter acontecido ao Dungeons & Dragons. Pouco depois de comprar a TSR, a Wizards of the Coast liberou a terceira edição do D&D sob essa licença, que abriu o D&D não apenas para a expansão feita por fãs, mas para qualquer desenvolvimento comercial. De fato, depois da OGL, a reclamação que eu ouvia com maior frequência relacionada ao D&D era que a popularidade de conteúdo licenciado sob a OGL tornou o Sistema D20 (que era o sistema em cima do qual a terceira edição do D&D foi feita) tornava muito difícil competir com ele. A terceira edição introduziu a ideia de um Documento de Referência do Sistema, que era um corpo de conteúdo em texto livre e incluia as informações básicas necessárias para jogar o jogo. A terceira edição tinha seus problemas, mas era fácil de jogar, aprender e (principalmente) criar,  resultando em uma enorme riqueza de conteúdo, tanto comercial quanto feito pelos próprios jogadores.

Infelizmente, os dias de Wizards of the Coast estavam perto de terminar, quando fossem comprados pela gigante dos brinquedos e jogos Hasbro, em 1999. Eu não tenho informações sobre a companhia, mas visto de fora certamente a cultura da WOTC foi mudada para pior, em pouco tempo, com demissões quase anuais, geralmente perto do Natal. Depois que a Hasbro adquiriu a Wizards, eles lançaram Dungeons & Dragons 3.5, que era em essência a versão 3.0 expandida, com alguns ajustes de equilíbrio, que funcionavam como uma errata de $100.. A edição 3.5 foi, no geral, bem- sucedida, mas não havia como negar o sentimento geral de desapontamento. Ela poderia ter sido muito mais do que era, e as diferenças não eram substanciais a ponto de justificar o preço elevado.

Vou divagar um pouco sobre os RPGs de mesa em geral. Uma coisa que parece acontecer no mundo da mesa é a seguinte: uma nova edição do jogo será lançada, então o conteúdo adicional começa a ser lançado para a nova edição, até que eventualmente os acréscimos se tornem tão numerosos que seja impossível para alguém mapear todos eles. Eventualmente, os jogadores se sentirão supridos em suas necessidades pelo conteúdo existente, e não sentirão mais necessidade de outros conteúdos. Neste ponto, a companhia volta, analisa as limitações do seu sistema e então criam um novo, reiniciando o processo.

D&D 3.5 atingiu esse nível de saturação quando WOTC/Hasbro lançou a quart edição. De longe (na minha opinião), a mudança mais dolorosa entre 3.5 e 4.0 foi o estraçalhamento da Open Game License e a criação da Game System License. A quarta edição tem seu próprio documento de referência do sistema, mas é patética (alerta de PDF) em comparação com a da terceira edição, e não inclui qualquer conteúdo útil. A quarta edição também inclui várias mudanças no sistema sob o capuz, que não são assunto para este post. Não pretendo começar uma flamewar sobre qual sistema de regras é melhor (isso vem sendo feito por aí até a morte). É certamente verdade que muitas pessoas que estavam felizes com a terceira edição sentiram que a quarta edição se afastou demais das regras e do estilo de jogo que eles usavam, e consequentemente continuaram jogando a versão 3.5.

Neste ponto, qualquer bom capitalista lhe dirá que se há clientes não servidos que querem ser servidos então convém, para melhor resultado financeiro, serví-los. Uma empresa fundada em 2002 chamada Paizo Publishing, que vinha lançando complementos de sucesso para 3.0/5.0 (entre outras coisas) decidiu pegar o conteúdo para D&D 3.5 licenciado sob a OGL e foi assim que o Pathfinder nasceu. Pathfinder, que se parece com seu predecessor, tem um Documento de Referência do Sistema completo, que é particularmente notável, sendo mais completo inclusive que o DRS do 3.x. (Você pode encontrar a versão oficial aqui e uma altamente utilizável aqui. Elas fornecem informação mais que suficiente para jogar um jogo completo, incluindo todas as expansões, gratuitamente).

A liberação do Pathfinder, baseada no D&D 3.5, fez mais do que reequilibrar o jogo - ele também adicionou uma série de conteúdo para tornar o jogo mais divertido de jogar, de modo geral. Como consequência, Pathfinder cortou a receita da WOTC, trazendo os clientes que poderiam terminar comprando o D&D 4. (Cá pra nós, eu me sinto mais decepcionado com a atualização do 3.0 pro 3.5 agora que eu sei como ela deveria ter sido, comparando o que a Paizo fez no Pathfinder com a atualização da WOTC/Hasbro, eu sinto quanto isso foi uma jogada visando apenas mais lucro).

Agora que estabelecia as informações de fundo, finalmente chego ao que queria falar: se você se precipitar nesse assunto, pode assumir que, uma vez que o conteúdo OGL fez claramente a WOTC/Hasbro perder dinheiro, é comercialmente uma má ideia. E aos olhos dela, provavelmente é. O que a maioria das pessoas não considera, entretanto, é que a liberação de um sistema aberto permitiu a alguém mais dar seu próprio passo e transformar o que seria uma linha de produtos estagnada em um sucesso comercial. Qualquer conversa de publicadores comerciais de que cultura livre é má para os negócios é essencialmente desinformada e carente da visão da cultura livre - o que eles querem dizer é que cultura livre é má para companhias que não estão prontas para reconhecer o que seus clientes querem.

Para companhias como a Paizo, a cultura livre criou uma oportunidade para sucesso comercial, e eles conseguiram gerar renda de seus produtos sem removê-lo do "commons". E, se a Paizo sofrer alguma mudança infeliz de gestão e decidir não lançar mais produtos sob OGL, outra entidade comercial poderá dar continuidade e fazer dinheiro dando aos consumidores o que eles querem.

A lição a ser aprendida é esta: da próxima vez que você ouvir alguém sugerindo que a cultura livre é de alguma forma contra-negócios ou má para a economia, diga para eles que só é má para modelos de negócio estagnados, que sentem a necessidade de competir, mantendo o mercado fechado, ao invés de fornecer o conteúdo que seus clientes querem. E não absolutamente qualquer razão para que isso não possa se aplicar também a videogames.

Peace out,

Bart Kelsey
OpenGameArt.org

Special: 

Páginas

Subscribe to RSS - artigo

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll: cannot open shared object file: No such file or directory in Unknown on line 0