Posts tagged Tutorial

Como ressuscitei meu Nokia 6600

Eu sou muito dependente do meu telefone. Eu sem minha agenda de compromissos do telefone perco todos compromissos e fico completamente desorientado. Ela é minha memória auxiliar.

Eu estava a um mês sem o meu 6600. Ele foi ficando cada vez mais instável até que parou de ligar. Quando eu ligava aparecia só a temível Tela Branca Da Morte, também conhecida como WSoD (White Screen of Death).

Já estava desiludido da vida porque eu mal aproveitei meu celular e ele já havia morrido.

Mas teve jeito. Há como formatar o Nokia 6600 em casa sem auxilio de nada além do celular. Eu não preciso nem dizer mas: eu não me responsabilizo por danos que esse procedimento possa causar a você, seu celular, seu cachorro, sua casa ou qualquer coisa.

Nokia 6600 formatando formating nokia 6600

Faça o seguinte:

  1. Desligue seu celular
  2. Ligue novamente pressionando a tecla verde, o asterisco e 3. Pressione essas três teclas ao mesmo tempo enquanto ele liga. Logo depois irá aparecer a mensagem “Formatting…” como na imagem acima, aí você pode soltar as teclas.
  3. Uma barra preta ira se preencher da esquerda para a direita. Espere a barra preencher toda a tela e reinicie o aparelho.

A formatação é um último recurso para quando você enfrenta a tela branca da morte ou quando o telefone está travando muito.

A formatação irá apagar todos os seus programas, contatos, agenda e pode apagar até as configurações feitas pela operadora, que serão que ser refeitas manualmente. A formatação é feita no drive C:, os dados do cartão MMC são mantidos mas os programas que estavam estavam instalados na memória do MMC passam a estar não mais instalados, mas os dados permanecem no MMC.

Depois de formatar o aparelho é recomendável que formate também o MMC.

Algumas pessoas relataram que após formatarem o aparelho foi pedido uma senha do cartão MMC. Comigo isso não aconteceu, mas se acontecer com você, procure o programa MMcPasswordfinder.

Há também outro jeito de formatar qualquer outro aparelho Nokia Symbian da série 60 (os S60).

  1. Digite o número *#7370#.
  2. Você será perguntado se você quer restaurar as configurações originais do aparelho. Reponda sim.
  3. A formatação deve durar uns 3 minutos e depois o telefone irá reiniciar.

Pronto, funcionou comigo. Acabou minha agonia e eu não tive que perder tempo nem pagar por um serviço que deveria sair por uns 100 reais.

LG PradaAproveite a grana que você economizou dê uma olhada nos celulares mais caros e nos mais baratos do Brasil.

Buscapé.

Nvidia Geforce4 MX 4000 no Ubuntu

Ninguém precisa dizer que essa é uma placa antiga. É a que eu tenho e eu gosto dela e resolve meus problemas.

Nvidia Geforce4 MX 4000

Eu achava que com o Ubuntu 7.04 eu teria drivers da Nvidia com um clique, mas isso não funcionou comigo (talvez porque essa placa agora esteja classificada como Legacy pela Nvidia).

Aqui um rápido passo a passo, que funcionou comigo e que funciona com qualquer outra placa da Nvidia.

More >

Persistência em Python, criando uma agenda simples

Prateleira ShelvePersistência, em programação, é guarda alguma informação para você pegar depois.

A solução mais comum para persistência de dados são os bancos de dados, que podem resolver esse problema de uma maneira sofisticada e eficiente.

Por outro lado, para usar um banco de dados você vai precisar:

  • Instalar um banco de dados
  • Aprender a linguagem de consulta do banco de dados, geralmente SQL.
  • Fazer a ligação do banco de dados com a linguagem que você está usando.

Tudo isso é chato e complicado, ainda mais se você quer fazer algo bem simples onde o desempenho não é um fator crítico. Você também poderia guardar suas informações num arquivo mas você teria que tratar vários aspectos de baixo nível.

Python tem algumas maneiras simples e fáceis de tratar persistência. Uma delas é o Shelve, que é um módulo padrão do Python.

Para brincar com ele abra seu terminal python digitando python no seu console:

>>> import shelve
>>> arq = shelve.open(‘asdf’)
>>> arq['site'] = ‘http://www.python.org’
>>> arq['pi'] = 3.1415
>>> arq['fibo'] = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
>>> print arq['pi']
3.1415
>>> print arq['fibo']
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
>>> del arq['site']

import shelve vai importa o módulo shelve. arq vai receber o arquivo asdf, que se não existir vai ser criado. Depois disso você pode usar arq como um dicionário comum, indexado por uma string chave. Para deletar alguem do arquivo simplesmente dê um del arq[chave].

Experimente fechar seu console e olhar como ficou o diretório onde você executou o terminal Python:

Gnome: olhando como ficou o diretório

Um arquivo asdf foi criado. Você não precisa se preocupar como esses dados estão guardados dentro desse arquivo, o shelve vai cuidar disso para você.

Agora se você abrir novamente o console dentro desse diretório:

>>> import shelve
>>> arq = shelve.open(‘asdf’)
>>> for chave in arq:
… print chave, arq[chave]

fibo [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
pi 3.1415

Tadã! Seus dados de volta.

Fica bem mais fácil fazer programas com persistência agora não é?

Livros Python Vá mais longe! Livros de Como Programar em Python pelos menores preços.

Buscapé.

More >

PIL: Python Imaging Library

python1.gifEscrevi um tutorial sobre a Python Imaging Library que pode ser muito útil.

Com ele você faz coisas em Python semelhantes as que você faria em PHP com a GD.

Clique aqui para ler o tutorial, está na seção de estudos.

Sobrecarga de operadores em Python

Sobrecarga de operadores é uma maneira muito elegante de implementar uma álgebra simples para suas classes. Por exemplo os números racionais. Um racional são dois inteiros na forma a/b. a é um inteiro e b é um inteiro diferente de zero.

Atualização em 29 de Maio de 2012: aparentemente no post inteiro e no código também o significado de divisor e dividendo estão trocados! Fiquem a vontade para postar nos comentários suas versões com o código correto.

Uma classe em Python que modela o comportamento dos racionais:

class Racional:
   def __init__(self, divisor, dividendo):
      self.divisor = divisor
      self.dividendo = dividendo

   def __str__(self):
      return str(self.divisor) + '/' + str(self.dividendo)

Programa 1 – Classe Racional com saída em string da forma a/b

Salvando esse código como Racional.py podemos chama-lo assim:

>>> from Racional import *
>>> a = Racional(1,2)
>>> print a
1/2

O que fizemos foi chamar o modulo Racional, instanciar um Racional com divisor 1 e dividendo 2 e depois mandamos imprimi-la. A string de saída foi “1/2″. Agora um código um pouco mais interessante:

class Racional:
   def __init__(self, divisor, dividendo):
      self.divisor = divisor
      self.dividendo = dividendo

   def __str__(self):
      return str(self.divisor) + '/' + str(self.dividendo)

   def __mul__(self, outro):
      divisor = self.divisor*outro.divisor
      dividendo = self.dividendo*outro.dividendo
      return Racional(divisor, dividendo)

Programa 2 – Classe Racional com sobrecarga do operador *

Um exemplo de uso do programa 2:

>>> from Racional import *
>>> a = Racional(1,2)
>>> b = Racional(3,4)
>>> c = a*b
>>> print c
3/8

O que nós fizemos foi instanciar dois racionais, a é 1/2 e b é 3/4. c é a multiplicação de a com b.
A operação de multiplicação de racionais foi feita da seguinte forma:

Figura com a multiplicação de dois racionais

Quando definimos o método __mul__() estamos fazendo a sobrecarga do operador *. O método __mul__ sempre vai exigir dois parâmetros, o self que é o próprio objeto que está à esquerda do operador e outro objeto que eu chamei de outro, ele vai estar à direita do operador *.

É importante notar que um método de sobrecarga pede para que você retorne uma nova instância da classe Racional. Essa nova instância é o objeto que representa a multiplicação dos dois objetos anteriores, no caso, a e b.

Talvez você ainda não tenha se dado conta da beleza desse pequeno código. Num código em C ou Pascal (ou até mesmo em C++ ou Java quando não bem escrito) o mesmo código provavelmente seria assim:

a = Racional(1,2)
b = Racional(3,4)
c = a.soma(b)

ou coisa pior como funções somaRacionais(). No nosso código toma a semântica do operador * ficou encapsulada dentro da classe. Isso é lindo. :-)

Vamos fazer mais uma sobrecarga, a do operador +:

class Racional:
   def __init__(self, divisor, dividendo):
      self.divisor = divisor
      self.dividendo = dividendo

   def __str__(self):
      return str(self.divisor) + '/' + str(self.dividendo)

   def __mul__(self, outro):
      divisor = self.divisor*outro.divisor
      dividendo = self.dividendo*outro.dividendo
      return Racional(divisor, dividendo)

   def __add__(self, outro):
      divisor = self.divisor * outro.dividendo + outro.divisor * self.dividendo
      dividendo = self.dividendo * outro.dividendo
      return Racional(divisor, dividendo)

Programa 3 – Agora com o operador +
Podemos usar esse código assim:

>>> from Racional import *
>>> a = Racional(1,2)
>>> b = Racional(3,4)
>>> c = a+b
>>> print c
10/8

O que fizemos foi instanciar os mesmos a e b de antes mas agora c foi criado somando a e b. A operação foi efetuada assim:

Soma de dois racionais

Para fazer a sobrecarga do + usamos o método __add__ que recebeu dois parâmetros, o objeto self (ele mesmo) e o objeto outro.

Pronto, acho que agora você já sabe como fazer sobre carga de operadores. Alguns métodos que você pode sobrecarregar:

  • __add__: Adição. A+B
  • __sub__: Sutração. A-B
  • __mul__: Multiplicação. A*B
  • __div__: Divisão. A/B
  • __mod__: Resto da divisão. A%B
  • __pos__: Identidade. +A
  • __neg__: Negativo. -A
  • __abs__: Absoluto. |A|

Existem muitos, muitos outros métodos que você pode sobrecarregar. Esses foram aí de cima são só alguns dos métodos numéricos.

Livros Python Promoção! Livros de Como Programar em Python pelos menores preços você encontra no Buscapé.