DBDesigner e Ubuntu: Resolvendo problemas…

Um post super rápido:

Eu precisava de uma aplicação gráfica para trabalhar com um banco MySQL bastante grande. Não queria fazer as coisas na mão.

Qual foi a minha primeira opção? DBDesigner óbvio. Um exelente editor, com uma GUI de altíssima qualidade.

Creio que todos os que já usaram o DBDesigner no linux passaram por vários problemas durante a instalação. E mesmo depois de instalado, passaram por outros milhares de problemas.

Os dois problemas que mais me incomodaram foram: Não conseguir conectar em um banco MySQL e as fontes estavam horríveis. Como não estava com muita paciência para ficar copiando arquivo, instalando uma série de bibliotecas e testando, resolvi seguir a sugestão do 21croissants: Instalar via Wine!

E o detalhe: Funcionou perfeitamente, criou ícone no desktop, tudo perfeitinho.

Antes que chova críticas, essa é uma solução rápida e não definitiva. Serve apenas para resolver rapidamente um certo problema para o qual não disponho de muito tempo para resolver da forma convencional.

Segue algumas SS:

DBDesigner rodando via wine

DBDesigner via Wine

Como é possível ver, as fontes ficaram bem definidas, e o libmysql funcionou sem problemas!

DBDesigner rodando nativamente

DBDesigner nativo

Infelizmente hove um problema com as fontes, e mesmo trocando a fonte e o tamanho ainda não fica OK. Sem contar o fato que se leva um tempão para deixar o MySQL funcionando corretamente.

O que fazer durante a atualização do seu DNS?

Olá pessoas,

Hoje venho escrever sobre uma idéia que tive para solucionar um certo problema.

A algum tempo atrás necessitei trocar um site de um servidor para o outro, mas como este site servia algumas aplicações críticas (é, talvez nem tão críticas), o mesmo não poderia sair em nenhum momento do ar. Ou seja, deveria estar rodando perfeitamente tanto em um host quanto em outro.

Mas, como testar um sistema em um novo servidor? Substituindo as informações de DNS. Mas, no melhor dos casos demora uma hora. E se der errado? Substitui de volta? São pelo menos 3 horas de um sistema off-line. Acho que não é uma solução interessante para aplicações críticas né?

Solução inteligente.

Adicionar nova entrada no /etc/hosts. Simples assim.
Desta forma, você poderá testar sua aplicação no seu novo servidor, e todos os seus clientes continuarão acessando no antigo! Assim, quando você tiver certeza de que tudo está funcionando, você substitui oficialmente o DNS no seu registro de domínios. Legal né?

Passo a Passo

1) Primeiro pegue as informações de DNS de seu novo host.
Um exemplo seria o dreamhost: ns1.dreamhost.com

2) Com o comando ping, descubra qual o IP do servidor DNS

$ ping ns1.dreamhost.com
PING ns1.dreamhost.com (66.33.206.206) 56(84) bytes of data.
64 bytes from ns1.dreamhost.com (66.33.206.206): icmp_seq=1 ttl=44 time=233 ms

— ns1.dreamhost.com ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 233.172/233.172/233.172/0.000 ms

O Ip do servidor aqui é: 66.33.206.206

3) Abra o arquivo /etc/hosts (como root é claro), e adicione a linha

66.33.206.206 seu_site.com.br www.seu_site.com.br

4) Agora, no seu browser acesse o seu_site.com.br, e perceba que você estará acessando no novo servidor, e não mais no oficial.
Agora você pode testar a sua aplicação online, corretamente, sem colocar em risco a continuidade do seu serviço oficial. =)

Qualquer dúvida estamos ae!

Acho que esta solução não funciona para quem usa servidores proxy’s

[]’s
Danilo Cesar

Search Engine Optimization ou SPAM nos meus Feeds?

Ae pessoal,

Estive estudando sobre estratégias de SEO nos últimos dias, e vendo o que eu poderia mudar para deixar meu blog mais bem colocado nos ranks do google. Mudei algumas coisas, coloquei uns meta-tags a mais. Bom, enfim, tentei arrumar meu blog para que o google indexe-o melhor.

Lendo alguns artigos na internet, percebi que a melhor maneira para seu site ser bem indexado é que outros sites linkem pra ele. Qual a maneira ética de fazer isto? Muito estudo afim de produzir artigos de boa qualidade para que seja comentado em outros sites.

Pois bem, percebi que existe uma estratégia “mais fácil“.

Nos feeds e planetas que assino, percebi hoje que existe uma enorme quantidade de POST’s referenciando uma certa promoção da VISIE. Basicamente você faz um comentário no seu site, linkando para a promoção (Concorra a dois cursos de natal se você fizer um trackback), e automaticamente você está concorrendo aos dois cursos.

Bom, não tenho nenhum interesse em fazer os cursos da VISIE, mas a idéia é muito boa. O SEO que pensou nisto deve ganhar um aumento. Eles vão deixar de ganhar uns 200 reais (2 cursos), mas vão ganhar uns 200 links para o site deles, ganhando muitos pontos de referência no google rank, coisa que dinheiro nenhum paga (não com facilidade). Parabéns estrategistas da VISIE!

Agora vejamos o outro lado

Mas a que preço os bloggers fazem isto? Os leitores não tem nada com isto. Não estão interessados se você está dentro da tal promoção!
Hoje eu me senti recebendo SPAM através de meus Feeds! Recebi propaganda que não pedi. Mas tudo bem, A VISIE ganhou uns referers a mais. E você, spammer, provavelmente não ganhe nada. Mas de qualquer forma foi bom, fiz uma limpeza dos feeds que assino.

Mas, como diz o Cardoso: “seu blog pode ser rentável”, mas agora VALE TUDO para lucrar com ele, nem que seja preciso fazer propaganda para TENTAR ganhar uns cursinhos online, ou dizer algumas mentirinhas.

Acho que é só isso. Chega da minha indignação! Agora vou continuar estudando aqui para escrever alguma coisa útil.
Seguindo a mesma ideologia, agora vou lançar a campanha:
“Concorra a um pacote de Freegels por cada trackback a este post”


UPDATE:

Encontrei nas palavras da Daniele Silva a definição exata do que eu penso:

No entanto, pra mim, pagerank significa relevância, e ponto.
Se o seu site tem um bom conteúdo outras pessoas vão falar dele, e seu pagerank aumenta. É assim que deve funcionar. Antiético pra mim é tentar forçar o aumento sem relevância.

Antigamente, nos buscadores, quem pagava mais aparecia na frente, com o tempo ficou claro que era absurdo pq as pessoas buscam informação, e nem sempre quem paga mais tem muito a oferecer.

Hoje em dia, uma parte importante do bom posicionamento vem de um bom pagerank, tentar forçar o aumento sem oferecer conteúdo de qualidade é o mesmo que voltar aos tempos dos pagantes…

E também reforço o comentário que fiz para o Marcos.

Veja Marcos, entenda como quiser. Mas com certeza não foi inveja.
Eu tenho um blog e escrevo nele porque gosto. Quem quiser ler lê, quem não quiser não lê. Simples assim. Quero sim que meu site esteja na frente nas pesquisas do google, mas quero que isso aconteça pela qualidade do meu conteúdo, não por estar pagando à outros usuários faze-lo.

A Daniele deu um exemplo exelente. Sites como o Reviewme que tiveram a mesma idéia foram punidos pelo Rank por iniciativas desonestas como estas.

Logo minha consciência está limpa. Não imaginei que o post fosse fazer tanto barulho, mas que bom que fez, pois percebi (pelo fecha tag do Elcio) que várias outras pessoas concordam comigo.

E se eu me dei bem? Talvez. Mas não me interessa este tipo de publicidade. Como eu disse, quero ser conhecido pela qualidade do meu conteúdo técnico.
Mas Obrigado pelo seu comentário

Logo Ubuntu-br

Ae gente…

Este é um post rapidinho….
Para aqueles que estão usando a logo que eu criei: Eu tinha atualizado ela a algum tempo atrás e esqueci de colocar no wiki artwork do Ubuntu.

Pois bem, como eu andei vendo que o povo está usando, atualizei a imagem lá. Acho que ficou muito melhor…

Sugestões são bem vindas
logo

Logo sob a lincença Creative Commons Attribution-ShareAlike 2.5 license.

Esta imagem era para logo de um blog sobre ubuntu que seria construido com meus amigos Alan Fischer e Arthur Furlan. Só que ele que ainda não saiu…

Smartphones: aonde podemos parar?

Tive o prazer de ter em minhas mãos um Nokia 6681 a alguns dias atrás, e tive uma idéia:

Imagine uma touchscreen. Agora imagine uma touchscreen sem uma touch-screen =).
Imagine poder “simular” uma touchscreen no ar usando apenas a camera do seu celular.

Pode ser um brinquedo muito interessante não?

Pensando nisso fiz um pequeno aplicativo em Python (pyS60) que localiza um objeto e segue-o. Como se fosse um mouse pointer seguindo uma caneta.

Este aplicativo na verdade é apenas uma prova de conceito demonstrando que pode ser feito. Quando tivermos celulares melhores, algo como 1GHz (O 6681 possui um processador de 220Mhz), e cameras próprias para este tipo de aplicação, talvez tenhamos softwares e smartphones com este conceito em funcionamento.
Seria muito bacana ver soluções assim aplicadas em desktops 3D.

Segue um vídeo de demonstração do aplicativo. Como disse, é apenas uma prova de conceito. Python ainda não é uma linguagem muito rápida quando estamos em celulares. Mas é muito mais fácil programar e testar do que se fosse feito em native symbian, e ainda por cima posso programar em linux =).

Leitores de RSS podem ver o vídeo aqui

Código fonte

  1. ##############################################
  2. # Produzido por Danilo Cesar [http://www.danilocesar.com]
  3. # Inspirado por:  http://www.bigbold.com/snippets/posts/show/636
  4. # Agradecimento a Enrico Batista
  5. ##############################################
  6. from appuifw import *
  7. from graphics import Image
  8. import camera, e32
  9. #import miso    # don’t dim the light
  10.  
  11. app.body = c = Canvas()
  12.  
  13. running = 1
  14. def quit():
  15.     global running
  16.     running = 0
  17.  
  18. app.exit_key_handler=quit
  19. app.title = u“O controle”
  20. app.screen = ‘full’   # or ‘normal’, ‘large’
  21.  
  22. def getdata(im, bpp=24):
  23.     import struct, zlib
  24.     im.save(‘D:\\pixels.png’, bpp=bpp, compression=‘no’)
  25.     f = open(‘D:\\pixels.png’, ‘rb’)
  26.     f.seek(8 +8+13+4)
  27.     chunk = []
  28.     while 1:
  29.         n = struct.unpack(‘>L’, f.read(4))[0]
  30.         if n==0: break  # ‘IEND’ chunk
  31.         f.read(4) # ‘IDAT’
  32.         chunk.append(f.read(n))
  33.         f.read(4)   # CRC
  34.     f.close()
  35.     return zlib.decompress(.join(chunk))  # ‘\x00′ prefix each line
  36.  
  37.  
  38. X = 80
  39. Y = 60
  40. while running:
  41.     if X < 0: X = 0
  42.     if Y< 0: Y = 0
  43.     if X > 160 - 30: X = 160 - 30
  44.     if Y > 120 - 30: Y = 120-30
  45.     im = camera.take_photo(‘RGB’, (160,120))
  46.     im.rectangle([(X,Y),(X+30,Y+30)], 0xff0000)   # red outline
  47.     # check hot spot whether active
  48.     box = Image.new((30,30), ‘L’)  # gray scale
  49.     box.blit(im, (X,Y,X+30,Y+30))
  50.     data = getdata(box, 8)
  51.  
  52.     # check black
  53.     for i in range(len(data)):
  54.         if ord(data[i]) < 30 and ord(data[i]) > 0:
  55.             X += i%31 - 15
  56.             Y += int(i/31) - 15
  57.             break
  58.         # Posso passar de 3 em 3 pixels. O código fica mais rápido e a perda
  59.         # de precisão é insignificante
  60.         i = i + 2
  61.  
  62.     c.blit(im, (0,0), (8,12))   # show camera
  63.  
  64.     #miso.reset_inactivity_time()
  65.  

Facilidade para aplicações gráficas com J2ME

Como já tinha comentado em alguns posts antigos meus, desenvolver aplicações JAVA para dispositivos móveis pode ser uma brincadeira muito bacana. Mas, se alguém tentou faze-lo, também deve ter percebido que desenvolver aplicativos gráficos com várias telas é uma tarefa extremamente chata.Neste post vou comentar o que achei do Netbeans e do add-on Netbeans Mobility Pack.

Não sou nenhum especialista em JAVA, e não entro em discuções Eclipse x Netbeans, mas me agradou muito a facilidade com que se é possível criar aplicações gráficas J2ME com o mobility pack.

Instalação
Primeiramente deve-se ter o Netbeans instalado. O Download pode ser feito aqui.
Após isto deve-se obter o mobility pack, que pode ser pego aqui

Com um sistema muito simples, é possível ligar telas entre si, programar botões… Basta clicar e arrastar!
Vale a pena para quem quer programar em JAVA para dispositivos móveis.

Segue algumas screen shots.

Criação para GUI's

Criação de GUI’s

Ligações de várias telas

Modelando telas

Tela do Programa

Interface do projeto

Novo Projeto
Opções para novo projeto