Skip navigation

Post rápido só para ajudar alguém que tiver esse problema quando começar a estudar C++!

Estudando C++, me deparei com um “problema”, que na verdade fui descobrir que é uma exigência da Linguagem C++ Moderna, como meu professor da Universidade, Vilmar Pedro Votre diz, que é a utilização do “namespace”.

Esse é um link muito legal e simples, que mostra o jeito certo de utilizar o namespace em C++:
- http://cplusplus.syntaxerrors.info/index.php?title=%E2%80%98cout%E2%80%99_was_not_declared_in_this_scope

Alguns links legais pra dar uma idéia do é um namespace e por que utilizado:
- http://en.wikipedia.org/wiki/Namespace_%28computer_science%29
- http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Namespaces#Namespaces
- http://forums.devshed.com/showpost.php?p=193617&postcount=2
- http://geosoft.no/development/cppstyle.html

Muita gente tem dito que o esquema de “fast release” da mozilla não é bom, e que esta prejudicando muito as empresas na hora de gerenciar as homologações do Firefox internamente, ou até mesmo os usuários com os problemas com os plugins de bancos, depois que o firefox é atualizado.

Muitas pessoas também se esqueceram que o esquema de releases longos não tem funcionado mais para a internet. Até por que, a cada dia, temos mais e mais implementações de frameworks novos, linguagens, etc, e com isso, nós desenvolvedores queremos utilizar essas novidades em larga escala, e por conta dos browsers desatualizados, isso não é muito recomendado.

Parece que a maioria se esqueceu também do trabalho que foi – e ainda é, só que agora com o Internet Explorer 7 – matar o Internet Explorer 6.

Anos e anos de atualizações de segurança deixaram a internet muito “amarrada”, e isso com certeza não foi nada bom!

De um tempo pra cá, o Google Chrome veio com a proposta de releases mais rápidos, e com isso, a Mozilla também optou por mudar seu esquema de releases!

Por outro lado, isso pode causar um pseudo “caos” nas empresas, com as tão temidas homologações de software. Mas muitos se esquecem de que o Firefox continua sendo aberto, ao ponto de você, administrador de redes, poder controlar as atualizações do browser dentro da sua empresa. O que muitos não sabem, e pelo que tenho visto, não estão muito preocupados em saber, é que a mozilla têm, já faz algum tempo, uma lista voltada para discussões sobre os produtos da mozilla em ambientes corporativos.[1]

Nessa lista, pessoas do mundo inteiro compatilham problemas e soluções para utilizar e controlar melhor o firefox dentro de redes empresariais.

Existe também, a muito tempo, um documento da Mozilla – que esta acessível para todos – mostrando como construir o seu próprio servidor de gerenciamento de atualização para o Firefox e para o Thunderbird.[2]

Para os usuários, que sempre tem problemas com aquele plugin de algum banco, que para de funcionar depois de cada atualização – lembrando que isso é causado pelos próprios bancos que não atualizam os plugins e não pela mozilla – podem resolver esse problema instalando duas versões do Firefox. A mais atual e uma versão na qual o plugin do banco funciona, mesma maquina, e utilizá-los ao mesmo tempo sem problemas. Para isso, bastando apenas utilizar um perfil diferente para cada versão do firefox instalada na maquina.[3]

Enfim, não há por que criticar o sistema de releases, se você nem mesmo tentou se informar sobre quais soluções a mozilla já tem para ajudar nos possíveis problemas que as atualizações podem causar!

Só mais uma dica, aproveitem e contribuam ajudando na atualização do Firefox das pessoas que não sabem da importância que isso tem :)

[1] – enterprise@mozilla.org
[2] – https://developer.mozilla.org/en/Setting_up_an_update_server#Creating_a_simple_Firefox.2FThunderbird_update_server_with_Apache_and_PHP
[3] – http://br.mozdev.org/firefox/gerenciador-de-perfis
[3a] – http://br.mozdev.org/firefox/beta

Antes de baixar o GHDL (comando para brincar com o VHDL), você deve instalar o gtkwave, e suas dependências!

$ brew install gtkwave

No meu caso, tive alguns problemas com a permissão da basta da glib, então, criei a pasta “na mão” e dei permissão de escrita para todos nessa pasta.

Outro detalhe também, alguns links simbólicos não foram criados pelo brew, então, tive que criá-los também! Mas fique tranquilo, o homebrew te mostra como fazer isso durante a instalação do gtkwave.

Depois baixar o gtkwave e suas dependências, basta baixar arquivo .dmg no site do GHDL e pronto!
- http://ghdl.free.fr/site/pmwiki.php?n=Main.Download

Com o Ubiquity já instalado no seu Firefox, acesse o link abaixo e clique no botão que aparece na direita do seu Firefox:
- http://www.spencerwaterbed.com/soft/ubiquity/bing.html

obs.: Esse comando é feito pelo desenvolvedor da comunidade ubiquity, chamado kman

Se você tiver alguma duvida de como instalar um comando no Ubiquity, basta acessar o link que explica como fazer! Fique tranquilo, é bem fácil:
- https://wiki.mozilla.org/Labs/Ubiquity/Ubiquity_0.1_User_Tutorial#Teaching_Ubiquity_New_Commands

Depois de instalar, digite na barra de URL o seguinte comando “about:ubiquity?cmdlist”, em seguida, procure na lista o comando chamado “translate”, e desabilite!

Pronto, agora o seu tradutor padrão é o Bing Translator!

- Agora, se você esta se perguntando por que de estar recomendando o comando do Bing, é bem simples, a nova API do Google não permite muitos acessos gratuitos ao Google Translator, tendo que pagar para um uso mais “ilimitado”!

Após a palestra sobre desenvolvimento de extensões no evento PythonBrasil[7] (http://wwwww.pythonbrasil.org.br) em São Paulo, o pessoal já começou a por a mão na massa, nada como um evento lotado de programadores para encontrar gente que programe em qualquer canto.

Várias pessoas procuraram os membros da comunidade brasileira durante o evento, e ao final dos três dias tivemos 4 extensões que foram enviadas aqui (http://htmlpad.org/desenvolvendo-extensoes-firefox/), elas são:

Anti Upside-Down-Ternet


Baseado neste (http://www.ex-parrot.com/pete/upside-down-ternet.html) documento, que explica como fazer seu vizinho, ao usar sua rede wi-fi pra usar a internet, enxergar todas as imagens de ponta cabeça. Porém, Rodolpho Eckhardt, desenvolveu a extensão que conta o outro lado da história. Se você usa a internet do seu vizinho, que é mal ao ponte de inverter suas imagens, use essa extensão, que inverte novamente as imagens para você, basta clicar com o botão direito e ativar!
Autor: Rodolpho Eckhardt (@rodolphoeck)
Link para descrição (http://bit.ly/audtdoc-pythonbrasil)
Link para instalação (http://bit.ly/audt-pythonbrasil)

give-me-a-commit-message

Essa é para programadores, sabe quando vai fazer seu ‘commit’ e precisa de uma mensagem para ele? Então o site whatthecommit.com foi feito pra você, ele exibe uma mensagem nova cada vez que você abre ele, porém com essa extensão não precisa mais acessar a página, basta clicar no botão na barra de add-ons e uma notificação apararecerá na sua tela, e pronto, a mensagem já foi para a sua área de transferência, basta colar onde preferir.
Autor: Armando Biagioni Neto (Mozilla Jetpack Ambassador) (@netoarmando)
Link para instalação (https://github.com/downloads/netoarmando/give-me-a-commit-message/give-me-a-commit-message.xpi) Link para código-fonte (https://github.com/netoarmando/give-me-a-commit-message)

True Pythonista

Pelo que pude perceber, Henr”Ikke” Pereira é o troll da comunidade Python, ele mantem um site, o ruby-br.com.br, dedicado a tratar sobre Python, o site tem logotipo da “outra linguagem”, mas só se fala em Python no site. Assim, para continuar ele criou este add-on que cria um atalho para seu site na barra de add-ons.
Autor: Henr”Ikke” Pereira (@ikkebr)
Link para instalação (http://editado.com.br/dw/truepythonista.xpi)
Link para o código-fonte (http://editado.com.br/dw/truepythonista.zip)

Facebook – Botão Foda-se

Não quer curtir no Facebook? Vinicius Cainelli fez a extensão que adiciona mais uma opção dentro do Facebook. Autor: Vinicius Cainelli (@vrcainelli) Link para descrição (https://docs.google.com/document/d/1NP5g5tS2bZs_V7wFHMpLUl4xosBBgr_seC7mqdIAoic/edit?hl=pt_BR) Link para instalação (https://docs.google.com/leaf?id=0B1izP4oIrfeSMjA0NjBlZTQtYTlhYy00MGFjLThlYWItYjMwYWNkNDYyODNj&hl=pt_BR)

Foi muito bacana participar do evento e encontrar um pessoal que estava empolgado. Lembro que faltou uma extensão, um sujeito, não lembro quem, estava portanto sua extensão de Chrome para o Firefox

Post escrito pelo meu amigo @netoarmando.

Abaixo fotos tiradas durante o evento (clique na foto para ver a galeria):

Começou hoje o evento Python Brasil [7], em São Paulo!

Tivemos a palestra Mozilla (sobre Desenvolvendo Extensões com Mozilla Firefox) com Armando Neto, membro da Comunidade Mozilla Brasil.

A palestra mostrou um pouco de como é a filosofia e a estrutura de uma extensão feita com o novo SDK da Mozilla, o Addons SDK!

Para quem não teve oportunidade de comparecer no evento, pode acessar o endereço abaixo e navegar por todo o material utilizado na palestra.

- http://htmlpad.org/desenvolvendo-extensoes-firefox/

Lembrando também que, durante o evento, teremos uma competição chamada “Turbine seu Firefox”.

Abaixo, estão alguns dados sobre a competição:

Início: 29 de Setembro – o início oficial será anunciado durante o Mozilla Open Space
Término: 1 de Outubro – 8h00

Regras

Elegibilidade: para participar da competição o desenvolvedor deve estar devidamente cadastrado na PythonBrasil [7].

- Para entrar na competição bastará colocar o link do repositório contendo seu projeto na etherpad: http://htmlpad.org/desenvolvendo-extensoes-firefox/edit no rodapé, ou ainda pelo twitter com a hashtag #turbineFF.

- As extensões desenvolvidas devem utilizar o Addon SDK e ser compatível com a versão 6 e 7 do navegador Mozilla Firefox.
Todo o código produzido deverá ser disponibilizado sob uma das diversas licenças aprovada pelas OSI http://www.opensource.org/licenses/alphabetical ).

- A competição terá seu início no dia 29 de Outubro e término às 8h00 do dia 1o de Setembro. O início exato será anunciado durante o Mozilla OpenSpaces que acontecerá na PythonBrasil 7.

- Todo código deverá ser escrito após o início e antes do término da competição. A reutilização de código livre, previamente desenvolvido, é autorizada.

- O código da extensão deverá ser enviado para o email neto.armando (at) gmail até o término da competição.
As extensões desenvolvidas serão julgados por uma comissão organizada pela comunidade Mozilla Brasil e serão avaliadas em 3 categorias:

- Extensão mais útil;

- Extensão mais engraçada;

- Extensão mais criativa.

Para você que esta no evento, participe e veja como é fácil construir sua extensão para o Firefox! :)

Já faz algum tempo que queria postar algo sobre o Mozilla Ubiquity, acho que agora vai! :)

Pra entender o Ubiquity, vamos ver, antes de tudo, qual é o conceito no qual ele se baseia!

Mashups

Mashup, relacionado ao desenvolvimento para web, é um site ou aplicação web que utiliza e manipula o conteúdo de várias fontes em um único local! Basicamente, um agregador de vários serviços da web!

Se você quiser mais informações sobre Mashups, pode acessar o link da Wikipedia! Acredito que ele vai tirar a maioria das suas duvidas! :)

- Mashup (web application hybrid) [Wikipedia]

Mozilla Ubiquity

O Ubiquity é um addon da Mozilla que facilita o acesso à vários serviços da web (olha os mashups ai!), utilizando interface de linguagem natural para “chamar” os serviços, através da interface do Ubiquity.

Funciona mais ou menos assim!

Você aciona a tecla de atalho do Ubiquity, digita o serviço que deseja utiliza, por exemplo “Google”, e ele já vai saber que você quer fazer uma busca no Google! Logo em seguida o que deseja procurar no google! Ficaria assim, “Google Mozilla”, com isso, ele buscara no google por mozilla, e apresentar o conteúdo na mesma tela que você digitou o que queria busca, o resultado (no caso, os 4 primeiros link encontrados) que o google retornou sobre o assunto!

Serviços como o GMail, Google Maps, Google Translator, Wikipedia, Twitter (sim, você consegue twittar através dele), e tantos outros podem ser acessados facilmente/diretamente pelo linha de “comandos” do Ubiquity.

Se você ainda esta com duvida sobre como ele funciona, assista o video do Aza Raskin, (desenvolvedore do core do Ubiquity) e veja como tudo acontece:

Ubiquity for Firefox from Aza Raskin on Vimeo.

Se você gostou da ferramenta e quer saber mais sobre ela, segue o link dela no Mozilla Labs:

- Mozilla Ubiquity [Mozilla Labs]
- Mozilla Ubiquity – More Information [Wiki Mozilla]

Desenvolvendo um comando para o Ubiquity

Mozilla Ubiquity, make a commandBasicamente, o Ubiquity é escrito utilizando Python e Javascript, então, não é coisa de outro mundo! :)

Já os comandos que são as coisas que dão sentido ao Ubiquity, são feitas utilizando Javascript! Sim, só isso!

O mais legal é que, você mesmo pode criar um comando seu! Basta escrever no seu Firefox, na barra de URL (ou barra de endereços, como preferir)

about:ubiquity

Fazendo isso, o Firefox abrirá a tela de gerenciamento do Ubiquity, onde você vai encontrar a opção “Hack Ubiquity”, e é ela que você vai poder brincar com os comandos que irá criar, antes de intalar diretamente no seu Firefox.

Para começar a criar um comando do Ubiquity, há um how to no wiki da Mozilla, com informações claras de como você deve começar!

- Ubiquity Author Tutorial [Wiki Mozilla]

Comandos criados pela Comunidade Ubiquity

Depois de aprender a fazer um comando, você pode coloca-lo em uma lista onde há vários outros comandos criados pelos desenvolvedores da comunidade.

- Commands in The Wild [Wiki Mozilla]

Se você quiser dar uma olhada no código de um comando já pronto, pode acessar os que estão no meu github :)

- ubiquity-commands [Clauber Github]

Mais informações

Atualmente, o Ubiquity não tem mais suporte oficial da Mozilla, por tanto, ele é desenvolvido pelos membros da comunidade! Apesar de tudo, a Mozilla não cortou/acabou com o projeto, tanto que o addon ainda esta disponível para download no AMO (http://addons.mozilla.org) e toda a documentação esta nos servidores da Mozilla, mas por uma questão de direcionamento, eles optaram por deixar a comunidade no comando do Addon.

Para instalar esse addon incrível no seu Firefox, você deve baixar o nosso XPI (pacote de instalação de addons) de desenvolvimento, que pode ser encontrado no link abaixo:

- https://bitbucket.org/satyr/ubiquity/downloads/tip.xpi [satyr Bitbucket]

Se você tiver alguma sugestão ou reclamação para fazer sobre o Ubiquity, pode usar o Get Satisfaction para isso:

- Get Satisfaction – Mozilla Ubiquity

Agora se você encontrar algum bug ou quiser ajudar na correção de algum bug já existente, pode fazer isso acessando o link do Bugzilla:

- Bugzilla – Mozilla Ubiquity [Bugzilla]

Bom divertimento! :)

Depois de baixar o código fonte (Codificando o Firefox – Repositórios e Código Fonte), a primeira coisa que eu quero fazer é compilar e executar, ver como, e quanto tempo, tudo isso levar pra acontecer!

Lendo o documento do MDN chamado “Contributing to the Mozilla codebase“, vi um passo a passo interessante para começar a “preparar a casa” e compilar o Firefox.

Preparando o ambiente

A primeira coisa que tive que fazer foi instalar o Xcode da Apple, já que estou fazendo isso no Mac OS X.

Se você tem um mac, e tem os dvd’s que vem junto com o computador, você não precisa baixar o Xcode, pois ele já vem nesse dvd! Então, basta instalar!

Com o Xcode instalado, instalei o gerenciador de pacotes pra Mac OS X chamado Homebrew! Através dele, vou instalar as libs que necessito na preparação do ambiente de compilação!

Após instalar o Homebrew, executei o comando abaixo pra instalar as libs libidl e a yasm!

$ sudo brew install libidl yasm

Fique tranquilo, pois isso pode levar algum tempo pra terminar, e vai depender de quais dependencias o homebrew vai precisará instalar no seu computador!

Outra ferramenta que precisei instalar foi o autoconf, mas como os desenvolvedores do Homebrew não estão mais disponibilizando a “fórmula” para isso (como é chamado o arquivo ruby com as instruções de instalação de um pacote para o homebrew), tive que escrever o arquivo “na mão”!

Utilizei as instruções de configuração de ambiente do Jon Buckley na hora de gerar a “fórmula” do autoconf para o homebrew!

Tive que criar também um arquivo com algumas opções de compilação no meu diretório /home chamado .mozconfig! Para isso, rodei o comando abaixo:

$ touch ~/.mozconfig

Com o arquivo criado no seu direitório /home, abra esse arquivo com o seu editor preferido (no meu caso o Vim ;-) ) e cole o conteúdo abaixo:

. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff-dbg
mk_add_options MOZ_MAKE_FLAGS="-s -j4"
ac_add_options --enable-debug
ac_add_options --disable-optimize

Pronto, o seu ambiente esta configurado e pronto para a primeira compilação do Firefox!

Compilando

Para compilar, abra o seu terminal, navege até a pasta onde você baixou o código fonte do Firefox! Dentro da pasta (no meu caso, a pasta onde esta o código do Firefox é /Users/clauberstipkovic/Documents/Projects/mozilla/firefox/src) e digite o comando abaixo:

$ make -f client.mk build

Agora basta esperar o fim da compilação!

Se tudo ocorrer bem, e você não tiver nenhum erro durante a compilação (particularmente não tive nenhum problema), basta executar o comando abaixo para rodar o Firefox que você acabou de compilar:

$ open obj-ff-dbg/dist/NightlyDebug.app

Ai esta, o seu Firefox compilado e executado diretamente na sua maquina! :)

Observações

O tempo de compilação do Firefox na minha maquina foi de ~ 20 minutos! Tempo que achei razoável, pois estava com alguns aplicativos abertos, ou seja, o processador e a memória não estavam inteiramente dedicados para a compilação, e observando que o meu processador é um Intel Core i5 de 2.3 GHz.

Não recomendo que você inicie a compilação quando estiver fazendo algo que necessite do processamento da máquina, pois isso pode prejudicar o desempenho do que você esta fazendo no momento, além da compilação!

Lembrando que essa foi um compilação básica, sem nenhuma configuração diferenciada! ;)

Segue aqui alguns links que me ajudaram durante os ajustes no ambiente e na compilação:

Depois de muito tempo como contribuidor da Mozilla (com evangelista e coder de add-ons), resolvi, enfim, criar coragem e me aventurar de vez nos códigos do Firefox.

Com isso, pensei que poderia ser legal compartilhar um pouco dos problemas e dificuldades que vou enfrentar no decorrer do processo e de quebra, poder melhorar ainda mais alguns dos documentos que estão nos sites da Mozilla!

Algo importante a comentar é que, a maioria das informações utilizadas aqui são do MDN (Mozilla Developer Network), que estão disponíveis para consulta/estudo sempre que você precisar!

Bom, vamos começar! :)

Estrutura do repositório do Firefox

Primeiro, é importante saber qual é a estrutura dos principais repositórios do firefox atualmente:

  • mozilla-central (repositório corrente)
  • mozilla-aurora (repositório onde o trabalho feito no mozilla-central é estabilizado)
  • mozilla-beta (repositório que serve para corrigir quaisquer problemas que possam surgir durante o uso do mozilla-aurora)
  • mozilla-release (repositório com os códigos lançados oficialmente em cada versão do Firefox)
  • comm-central (repositório de outros produtos da Mozilla como Thunderbird/SeaMonkey/Calendar)

No meu caso, vou utilizar o repositório “mozilla-central”, pois acredito que seja o mais apropriado para o objetivo dessa empreitada :)

Para quem já quiser ver os últimos commits feitos nesse repositório, basta acessar o endereço abaixo:

Se você quiser se aprofundar mais nos detalhes dos repositórios da Mozilla, eu recomendo muito a leitura desse link:

Baixando o código fonte

Atualmente, a maioria dos produtos que tem relação com a Mozilla, tem seus códigos organizados/gerenciados pelo Mercurial!

Para esse projeto, estou utilizando somente dois sistemas operacionais como referencia, que são o Mac OS X e Ubuntu Linux. Apesar de ter como referencia os dois sistemas citados, vou utilizar mais o Mac OS X, pois é o sistema onde eu trabalho mais com os projetos da Mozilla.

Como o Mercurial é escrito utilizando a linguagem de programação Python, e que o interpretador dessa linguagem esta presente por padrão no Mac OS X e no Linux, posso ir direto para a instalação do Mercurial!

Caso você não utilize algum dos sistemas operacionais citados acima, e utiliza Windows, leia os links abaixo para pode instalar o interpretador do Python!

Agora, se você já tem o interpretador do Python instalado no seu computador, vamos para o próximo passo!

Para instalar o Mercurial, eu utilizei um “gerenciador de pacotes” do Python, que se chama easy_install.

Por padrão, o easy_install não é um aplicativo que já venha instalado nos pacotes do Python, por tanto, se você rodar o comando abaixo, de instalação do Mercurial, e não funcionar, você provavelmente não tem ele instalado ainda, então, basta acessar o link de instalação do easy_install, e seguir os passos! :)

Voltando ao Mac OS X e Linux, basta executar o comando abaixo para instalar o Mercurial:

$ sudo easy_install -U mercurial

Sugiro que, após instalar o Mercurial, você configure alguns dos seus dados nele, como a Mozilla sugere no link abaixo!

E finalmente, você pode escolher uma pasta/lugar no seu computador e baixar os códigos do Firefox executando o comando abaixo:

$ hg clone http://hg.mozilla.org/mozilla-central/ src

Dependendo da velocidade da sua conexão de internet, isso pode demorar um pouco, por tanto, não faça isso com pressa ;)

Para esse post, não tive nenhum problema que os link abaixo não pudessem esclarecer as duvidas:

Se alguém que estiver lendo este post, e tiver alguma duvida, por favor, escreva nos comentários, ou se você preferir, você ainda pode utilizar alguns canais direto com a comunidade brasileira e com a Mozilla, que são:

Por e-mail

  • dev-extensions-br@lists.mozilla.org
  • mozbr@googlegroups.com

Por IRC

obs.: Quero deixar registrado aqui o meu “Muito obrigado” aos meus amigos Paulo Martins(@m4rtinsp), Michael Kuhinica (@taverneiro), Fernando Pazin (@fpazin) e Felipe Gomes (@felipc) pela ajuda nesse primeiro post! :)

Estou fazendo os videos da série “Minuto Firefox”, onde mostro algumas dicas de coisas legais para o Firefox, ou até mesmo, como utilizar o navegador!

Espero que gostem! Ah, e sugestões de temas são bem vindas!

O próximo video da série será sobre o Chromeless! :)