Posts filed under 'Sem-categoria'

13° Encontro de WebDesigner (EWD)

Eu vou….
Bem, conversando com uma amigo meu, fiquei um pouco desestimulado a ir, pois ele disse que o pessoal é 100% Internet Explorer lá… Votz, pessoal deve ser acostumado com hack em css, hehe.

Ai vai as palestras do dia:

Recife - 19 de julho de 2008 - Sábado
# 09:00 - Credenciamento e visita aos estandes
# 10:00 - Abertura
# 10:15 - Palestra 1: Flashback! - Ronaldo Gazel
# 11:30 - Intervalo e visita aos estandes
# 12:00 - Palestra 2: Virtual (15 minutos) - Apresentação em vídeo sobre o Joomla! - Ricardo Accioly - NOIX
# 12:15 - Palestra 3: Saindo da superfície: soluções estratégicas - Irving Suna
# 13:00 - Intervalo para almoço
# 14:30 - Palestra 4: O mundo é plano, a cauda é longa…. e você ainda é o mesmo? - Chico Baldini - W3Haus
# 15:00 - Palestra 5: Comunicação Interativa - Raphael Vasconcelos - AgênciaClick
# 16:00 - Intervalo e visita aos estandes
# 16:30 - Mesa-redonda interativa
# 18:00 - Encerramento

para quem quiser saber mais, visite o site http://www.arteccom.com.br/encontro/.
Eu estarei lá com a camisa do “Projeto RN Software Livre”, aquela pretinha com o caju :D os leitores do forum que foram e quiserem bater um papo já sabem :D


Add comment Julho 6, 2008

É HOJE, BAIXE O FIREFOX 3 E AJUDE A BATER O RECORD

FireFox
Eu já fiz a minha parte… Baixei no trabalho, em casa e na faculdade!!!!
Ajude você também!

Basta apenas baixar a nova versão do FireFox por esse link: http://br.mozdev.org/
Ou por qualquer outro :D


Add comment Junho 17, 2008

Salvando configurações do Compiz

Essa foi uma dica Onilton Marciel para a lista do Ubuntu-BR. Eu precisava configurar o compiz toda vida depois de desabilita-lo. Solução:

Alt+F2

digite* ccsm* e aperte enter

Vá em *Preferências*

Clique em *Exportar*,* *

Escolha um nome e salve.

Para restaurar é só fazer a mesma coisa, mas apertando *Importar* e
escolhendo o arquivo salvo.


Add comment Junho 11, 2008

Firefox Download Day 2008

Firefox Download Day 2008

Estabeleça um Recorde Mundial no Guinness e Ganhe uma Web melhor

Vamos ajudar a Mozilla a bater esse record!!!

Parece um bom negócio, não acha? Tudo o que você precisa fazer é baixar o Firefox 3 durante o Download Day - é fácil assim. Não estamos pedindo que você engula uma espada ou equilibre 30 colheres no rosto ao mesmo tempo - apesar de que isso seria incrível. Participe :
http://www.spreadfirefox.com/pt-BR/worldrecord/


Add comment Junho 5, 2008

Formulário Básico em 8 minutos

Vídeo muito interessante retirado do site Tablelss.

“Na verdade ele foi escrito em 7 minutos e 51 segundos e foram escritos apenas o XHTML e CSS. Infelizmente está sem áudio.

O formulário, depois do link, é o “objeto” mais utilizado pelos usuários para interagir com o site. É questão de vida e morte para muitos profissionais. Se não for bem escrito, pode virar um inferno. Com as tags certas, você consegue fazer uma estrutura enxuta e fácil de customizar. Siga a regra áurea do desenvolvimento web: Keep It Simple Stupid.”


Add comment Junho 2, 2008

Python não é Java

Achei esse texto supor interessante…
Vale a pena dar uma olhada, principalmente quem programa em java e está pensando em migrar pra Python.

(Esse texto é uma tradução de Python is not Java, de Phillip J. Eby. O texto não está licenciado sob a Creative Commons, pois está sujeito a restrições.)

Recentemente, dei uma olhada no código de uma aplicação GUI baseada em wxPython, com aproximadamente 45,5KLOC, sem contar as bibliotecas utilizadas (e.g. Twisted). O código foi escrito por programadores Java relativamente novos em Python e sofre de alguns problemas de performance (como 30 segundos de tempo de inicialização). Examinando o código, notei que eles fizeram um monte de coisas que fazem sentido em Java, mas que são terrivelmente inadequadas em Python. Não porque “Python é mais lento que Java”, mas porque há maneiras mais fáceis de alcançar os mesmos objetivos em Python que sequer existem em Java.

Enfim, o triste é que essas pobres pessoas trabalharam muito, muito mais do que precisavam, para produzir muito mais código do que necessitavam escrever, que então tem o desempenho muito mais lento que o equivalente idiomático em Python teria. Alguns exemplos:

  • Um método estático em Java não se traduz para um método de classe em Python. Sim, claro, ele resulta mais ou menos no mesmo efeito, mas o objetivo do método de classe é, de fato, fazer coisas que normalmente sequer são possíveis em Java (como herdar um construtor não-padrão). A tradução idiomática de um método estático de Java normalmente é uma função em um módulo, não um método de classe ou método estático. (E campos estáticos finais devem ser traduzidos para constantes em um módulo).

    Não é tanto uma questão de performance: um programador Python que tenha de trabalhar num código com idiotismos de Java como esse provavelmente vai se irritar ao digitar Foo.Foo.someMethod quando deveria ser apenas Foo.someFunction. Entretanto, note que chamar um método de classe envolve uma alocação adicional de memória que chamar um método estático ou uma função não envolve.

    Ah, e todos aquelas cadeias de atributos Foo.Bar.Baz não são de graça, também. Em Java, aqueles “nomes pontuados” são resolvidos pelo compilador, então não importa quantos deles você tem em tempo de execução. Em Python, as resoluções ocorrem em tempo de execução, logo cada ponto conta. (Lembre-se que em Python “Plano é melhor que aninhado”, embora isso esteja mais relacionado com “Legibilidade faz diferença” e “Simples é melhor que complexo” que com performance).

  • Precisa de um comando switch? A tradução para Python é uma tabela hash, não um monte de comandos if-then. Precisa de um monte de if-thens que não podem ser um comando switch em Java porque envolvem strings? Também é uma tabela hash. A implementação de dicionários de CPython usa uma das implementações de hash mais altamente otimizadas no universo conhecido. Nenhum código que você mesmo escreva irá funcionar melhor, a não ser que você seja um filho geneticamente aperfeiçoado do Guido, do Tim Peters e do Raymond Hettinger.

  • XML não é a resposta. XML não é nem mesmo a questão. Para parafrasear Jaime Zawinski sobre expressões regulares: “Algumas pessoas, quando confrontadas com um problema, pensam ‘Já sei, vou usar XML’. Agora elas têm dois problemas”.

  • É uma situação diferente daquela em Java, porque, comparado com código em Java, XML é ágil e flexível. Comparado com código em Python, XML é uma âncora de navio, uma bola e uma corrente. Em Python, XML é algo que você usa para interoperabilidade, não em sua funcionalidade central, porque você simplesmente não precisa dele para isso. Em Java, XML pode ser sua salvação por permitir que você implemente linguagens de domínio específico e aumentar a flexibilidade da sua aplicação “sem codificar”.

    Em Java, evitar codificar é uma vantagem porque codificar significa recompilar. Entretanto, em Python, freqüentemente, código é mais fácil de escrever que XML. E Python pode processar código muito, muito mais rapidamente do que seu código pode processar XML. (Não apenas isso, mas você tem de escrever código para processar XML, enquanto o próprio Python está escrito para você).

    Se você é um programador Java, não confie em seus instintos sobre quando você deve usar XML como parte de sua aplicação central em Python. Se você não está implementando um padrão XML existente por razões de interoperabilidade, criando algum tipo de formato de importação e exportação ou criando algum tipo de editor de XML ou ferramenta de processamento de XML, então “Apenas Não Faça Isto”. De maneira alguma. Jamais. Nem mesmo apenas essa vez. Nem sequer pense sobre isso. Largue esse schema e mãos ao alto, agora! Se sua aplicação ou plataforma será utilizada por programadores Python, eles irão agradecer a você por não adicionar o fardo de utilizar XML em suas cargas de trabalho.

  • (A única exceção a isso é se seu público-alvo precisa mesmo, mesmo, de XML por alguma razão estranha. Por exemplo, eles se recusam a aprender Python e apenas irão pagá-lo se você usar XML, ou se você planeja dar-lhes uma GUI legal para editar o XML, e a GUI em questão é algo que alguma outra pessoa escreveu para editar XML e você pode usá-la de graça. Há também outras razões arquiteturais muito raras para utilizar XML. Acredite-me, elas não se aplicam à sua aplicação. Em caso de dúvida, explique seu caso de uso de XML para um desenvolvedor Python experiente. Ou, se você tem pele grossa e não se importa em ser motivo de risadas, tente explicar para um programador Lisp por que sua aplicação precisa de XML!).
  • Getters e setters são maus. Maus, eu disse maus! Objetos em Python não são Java beans. Não escreva getters e setters. É para isso que existe o built-in property. E não ache que isso significa que você deva escrever getters e setters, e então empacotá-los com property. Isso significa: até que você prove que você precisa de algo mais que um simples atributo de classe, você não não deve escrever getters e setters. Eles são um desperdício de tempo de CPU, mas, mais importante, eles são um desperdício do tempo do programador. Não somente para pessoas escrevendo código e testes, mas para pessoas que tenham de lê-los e entendê-los também.

    Em Java, você tem de usar getters e setters porque usar campos públicos não te dá a oportunidade de voltar atrás e mudar de idéia para usar getters e setters. Logo, em Java você pode tirar essa tarefa do caminho de uma vez. Em Python, isso seria tolice porque você pode começar com um atributo normal e mudar de idéia a qualquer momento, sem afetar quaisquer clientes da classe. Portanto, não escreva getters e setters.

  • Duplicação de código é, com muita freqüência, um mal necessário em Java, onde você tem de freqüentemente escrever o mesmo método várias e várias vezes com variações menores (usualmente devido a restrições da tipagem estática). Não é necessário nem desejável fazer isso em Python (exceto em certos casos raros de escrita inline de funções de desempenho crítico). Se você se percebe escrevendo a mesma função várias e várias vezes com variações menores, é hora de aprender sobre sobre fechamentos (closures). Eles não são tão assustadores assim.

  • Eis o que você vai fazer. Você escreve uma função que contém outra função. A função interna é um modelo para as funções que você está escrevendo várias e várias vezes, mas com variáveis para todas as coisas que mudam de uma função para outra. A função externa recebe parâmetros que possuem os mesmos nomes das variáveis, e retorna a função interna.

  • Então, em cada lugar onde você estaria escrevendo ainda outra função, simplesmente chame a função externa e atribua o valor retornado ao nome que você quer dar à função “duplicada”. Agora, se você precisa mudar a maneira como o padrão trabalha, você apenas tem de mudar isso em um lugar: no modelo.

Na aplicação/plataforma que examinei, apenas uma aplicação bastante trivial dessa técnica poderia ter cortado fora centenas de linhas de peso morto em código. De fato, dado que esse boilerplate em particular tem de ser usado por programadores desenvolvendo plugins para a plataforma, isso irá economizar muito, muito mais centenas de linhas de código de desenvolvedores terceiros enquanto simplifica o que esses desenvolvedores têm de aprender.

Essa é apenas a ponta do iceberg da migração de mentalidade Java->Python, e é mais ou menos tudo em que eu posso entrar agora sem me aprofundar em pontos específicos a aplicações. Essencialmente, se você já usa Java há algum tempo e é novo em Python, não acredite em seus instintos. Seus instintos estão sintonizados para Java, não Python. Dê um passo atrás e, acima de tudo, pare de escrever tanto código.

Para fazer isso, torne-se mais exigente com o Python. Finja que o Python é uma varinha mágica que irá miraculosamente fazer o que quer que você queira sem você precisar levantar um dedo. Pergunte “Como Python já resolve meu problema?” e “Que característica da linguagem Python mais lembra meu problema?”. Você vai ficar absolutamente espantado sobre quão freqüentemente acontece de aquela coisa que você precisa já estar lá de alguma forma. De fato, esse fenômeno é tão comum, mesmo entre programadores Python experientes, que a comunidade Python tem um nome para isso. Eles chamam isso de “máquina do tempo do Guido”, porque às vezes parece que essa é a única maneira dele ter podido saber o que nós precisávamos antes de nós mesmos sabermos.

Enfim, se você não se sente como se estivesse no mínimo dez vezes mais produtivo com Python que com Java, há boas chances de que você está se esquecendo de usar a máquina do tempo! (E se você sente falta de sua IDE para Java, considere a possibilidade de que isso ocorre porque seus programas em Python são muito mais complexos do que precisariam ser.)


1 comment Maio 26, 2008

Semana da Mobilidade, acabou…..

Oĺá pessoal, hoje se encerra A Semana da mobilidade, evento realizado no CEFET-RN.

O evento foi MUITO bom!!! Deu pra aprender bastante sobre o Python para S60…

Essa é a foto de nossa turma:

E para finalizar tivemos que fazer um jogo em 2h, valendo uma camiseta e uma pen-drive, gravei os vídeos de nossa agonia…

Em duplas começamos a fazer os jogos baseados nos clássicos “Space Invader” ou “Facas”.
Tudo começou tranqüilo, começamos a pensar no jogo e a desenvolver os movimentos básicos, eu desenhei o carrinho na mão no paint, até que saiu bonitinho não foi? hehehe

Por volta das 21h ainda não terminamos a jogabilidade, a bolo só aparecia quando era precionado a tecla UP e mesmo assim ela não subia sozinha…. Momentos de desespero, vcs podem presenciar aqui nesse vídeo:

E as horas se passam…. Em quanto isso Oliveira e Kalisson já estavam com seu jogo todo feito e até em 3D (huhuhuhu), Givanaldo com seu Tux se livrando das espadas, Italo roubando para n ser morto pelos monstros e Elomar e Rafael com uma lógica que sei lá de onde tiraram fizeram um Pac Man sem labirinto…

No ULTIMO segundo (sério mesmo) eu coloquei a colisão com o monstro para que a bola quando bater nele o jogo se encerre…. Olha ai Thiago, a colisão não era em x1 e sim em bola_x!!!!!auhahuahuahuauhauh

O Nosso produto final ficou assim:

Quero agradecer a equipe do INdT e as pessoas que participaram do curso, para mim foi muito importante, pois tive a oportunidade de conhecer novas pessoas e adquerir mais conhecimento.

O todo o material do curso (Slides e etc) está disponível no site do grupo:
http://groups.google.com/group/semana_da_mobilidade_pys60/files


1 comment Maio 16, 2008

Charge sobre IDE de desenvolvimento

Chargezinha besta sobre uma discussão sobre IDE para desenvolvimento na lista do Django-Brasil.


Add comment Maio 4, 2008

Resenha do FLISOL, Meu primeiro Mini-Curso com Django

Opa pessoal, blz?

FLISOL no dia 26/04, apesar de muitos imprevistos foi muito bom!!!

O primeiro foi logo na noite anterior, quando vamos começar a instalar o Django nas máquinas, cadê a senha de root?! Adorilson saiu procurando o administrador do laboratório… Nada dele voltar…

Hora vai, hora vem, eram quase 21h e a gente lá!Decidimos por instalar a versão 0.96.1, que era só no .tar, lá vai eu, Evandro e outro menino (que esqueci o nome, desculpa xD) baixando em todas as 25 máquinas do laboratório para instalar….
Mais mesmo assim tinha que da um sudo e cadê o danado da senha, onde estava Adorilson ???????
Já pelas 21h ele chegou com a senha, ficou decidido que seria mesmo a versão 0.96.1 que seria vista no mini curso, mais tinha um probleminha eu já tinha preparado todo o slide uma semana antes… Mais mesmo assim blz, amanhã é outro dia…

No sábado de manhã cedo por volta das 8h chego lá e começo a refazer os slides para o mini curso…
Era eu e o Moreno doido por um ponto de rede, quando abriu o laboratório, pegue carreira !!!!

Previsto para começar as 9h, tudo dentro do horário vem a triste notícia que Afonso nos deu, “O DISJUNTOR PEGOU FOGO!!!”, fogo? como assim… No dia anterior passou a noite chovendo e entrou aguá dentro, quando foram ligar deu um curto!

Correria de todos para arrumar uma sala que atende-se mais de 100 pessas… SE APERTA NO LABORATÓRIO! Surge a idéia… E cadeira para tanta gente?! Corre atrás!
Quando finalmente tudo parece tranquilo, e eu paro para fazer a palestra e vou me conectando a internet, cadê link??? era eu e o Moreno doido, por que ele fez o grande feito de dar um remove no python, resultado, saiu removendo tudo que tinha python no sistema, e o Gnome não tem nadinha baseado no python né :D

Já se ia umas 10h e eu sem começar a modificar… Lá vai eu e Thales correndo pra UnP para tentar baixar o Django 0.96.1 que eu só tinha na minha maquina a versão de produção… Rapidamente voltamos para concluir os trabalhos (ainda tinha uma porrada de cd pra gravar)….

Então as 11h começo realmente a fazer os slides da palestra… O Django pegue da erro , finalmente a net voltou, e eu consegui instalar. A cada página do slide terminado era uma felicidade compartilhada por todos que estavam na sala :D

Finalmente as 14h opa… com uma hora de atraso hehehe, tentei começar o mini curso, mais o computador não queria passar vídeo para o projetor, lá vem Afonso com outro, eu já começando a ficar aperriado, nada dando certo… Ai entra o salvador Leo, que tem a brilhante idéia de reiniciar o note com o vídeo ligado e então finalmente começamos!

(Esse foi o slide utilizado na palestra, nem deu tempo para testar o código xD)

(Pequena retificação, o Django foi criado em 2003 e não em 2005 como tem no slide, mais só foi liberado em 2005 para comunidade)

Confira também as fotos

(Eu, Leo e Afonso tentando colocar o vídeo no projetor)

Não pude acompanhar tudo, então deve ter tido muito mais resenhas….
Nem acompanhei as palestras, conversando com Karlisson um dia antes ele não sabia nem o que ia falar lá, assim como muitos, mais tudo deu muito certo!!!

Espero outro eventos assim, esse foi o meu primeiro e espero ajudar nos próximos!
Parabéns a todos!!! E como Afonso disse quando eu estava aperriado, “FIQUE PEIXE!!!”


Add comment Abril 29, 2008

Explorando o Admin do Django – Parte I

Esse tutorial vai sair na próxima PZPZine :D
Estou adiantando para vocês…

O Admin é um plugin do Django onde você pode administrar o seu sistema por inteiro, ela é muito interessante para ser usada, principalmente por que já gerar CRUDs customizáveis, que esse tutorial vai abordar o básico.
Uma nota muito importante está em desenvolvimento uma nova classe Admin o NewForms Admin[1] que se propõe a deixá-lo mais customizável, pois o Admin atual você não pode mexer muito nele(adicionar links e etc), na página do amigo Marinho[2] existe um tutorial de instalação bem explicado…

1 – Começando

(more…)


2 comments Abril 11, 2008

Previous Posts


Calendário

Agosto 2008
D S T Q Q S S
« Jul    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Eventos

Últimos posts

Categorias

APOIO

RSS Job4Dev

Links

Flickr Photos

Soldadinho Fêmia

Soldadinho Macho

More Photos