Planeta Debian Brasil

19/01/2012

João Eriberto Mota Filho

Encontrando sites similares

Uma pequena dica que poderá ser útil para muitos é a respeito do Similar Site Search.

O site http://www.similarsitesearch.com é um motor de buscas que procura por sites similares, a partir de uma URL ou domínio.

Apenas como exemplo, ao utilizar uol.com.br na busca, os 5 primeiros resultados foram (apenas o título):

1. Terra – Notícias, vídeos, esportes, economia, diversão, música,…
2. iG – Notícias, Vídeos, Famosos, Esportes, Bate Papo, Infográficos
3. Band.com.br – O portal de notícias do Grupo Bandeirantes
4. clicRBS – Notícias, esporte, jogos, vídeos, blogs e muito mais do…
5. R7.com – Notícias, entretenimento, esportes e vídeos

Já para buscape.com.br, foi mostrado:

1. Zura! – Buscar. Comparar. Comprar.
2. Twenga : A maior seleção de produtos e lojas online
3. Shopping UOL – Ache o menor preço de Celulares, Notebooks, Netbook…
4. Bondfaro – As Melhores Marcas e As Melhores Lojas Você Encontra Aqui
5. Americanas.com – Celulares, Notebooks, TVs, Tablets e Ar Condiciona…

Além do título do site, também são mostrados dados como URL, grau de similaridade, popularidade e idioma. Ainda, as pessoas podem votar em cada resultado. Note que caso ocorram votações, os resultados poderão ser diferentes dos mostrados neste post.

Agora o mais curioso: caso o site pesquisado não esteja indexado, o Similar Site Search o faz em cerca de 5 minutos. Então, ao retornar depois desse tempo, você já terá resultados.

Divirta-se!

por Eriberto em 19/01/2012 19:56

09/01/2012

Antonio Terceiro

Life after exec()

From the “not necessarily big news, but still useful” department.

The situation: for Very Good Reasons™1, you want to replace your current process by calling exec(), but you still want to have the chance to do something after the process you exec()ed finishes.

This is a simple technique I just came up with: just before replacing the current process by calling exec(), you fork() a process in the background that will wait for the current process id to disappear from the process list, and then does whatever you want to do.

A simple proof-of-concept I wrote is composed of two bash programs: wrapper and real.

real is really simple: it just waits a few seconds and then prints its process id to the console:
#!/bin/bash

sleep 5
echo $BASHPID
wrapper is the program that handles the situation we want to exercise: it replaces itself with real, but still has the chance to do something after real finishes. In this case, wrapper notifies the user that real finished.
#!/bin/bash

echo $BASHPID
real_program_pid=$BASHPID
(
  while ps -p "$real_program_pid" >/dev/null; do
    sleep 0.1s
  done
  notify-send 'real program finished'
) &
exec ./real

One nice property that wrapper explores is that when exec() starts real, it really replaces wrapper, and therefore has the same process id (in this case accessible by bash in the $BASHPID variable). Because of this, the background process that wrapper starts just before the exec() call already knows which process it has to watch for.

The actual code for waiting is not optimal, though. I cannot use waitpid() (the wait builtin in bash), since real is not a child process of wrapper. I went with a brute force approach here, and I am pretty sure there is a cheaper way to wait for a random PID without a busy loop (but that wasn’t the point here).

1 update: I am aware of the classic fork()/exec() pattern. My Very Good Reasons™ include the fact that I can’t control the flow: I am writing a plugin for a program that calls its plugins in sequence, and after that, calls exec(), but my plugin is interested in doing some work after exec() finishes.

09/01/2012 12:43

03/01/2012

Fernando Ike

OpenJDK e JNLP

   Com a nova política da Oracle para distribuição do Java Hotspot nas distribuições linux, forçou a remoção dos pacotes java dos mesmo. As “distros” que  mais tiveram “impacto” foram o Debian e o Ubuntu.  E se você ficou órfão  e não pode mais  usar o Internet Banking ou alguma aplicação JNLP, tem um jeito de resolver. :)

Resolvendo do jeito Debian-Way,  basta instalar (Estou usando a versão instável/SID e AMD64/64 bits) os pacotes icedtea-netxicedtea-pluginicedte6a-plugin.

Algumas coisas irão parar de funcionar, Internet Banking do Santander não funciona em nenhum browser, o Banco do Brasil funciona no iceweasel/firefox.

Se precisar alterar as configurações (proxy, certificados) pode executar o comando itweb-settings.

Java Web Start with Openjdk

por Fernando Ike em 03/01/2012 11:08

02/01/2012

João Eriberto Mota Filho

Filesystem Hierarchy Standard (FHS)

A Filesystem Hierarchy Standard (FHS) é uma norma que tenta padronizar os diretórios existentes nos Unix e derivados, como o GNU/Linux. Exemplo: qual a diferença entre /sbin e /usr/sbin? Ou entre /tmp e /var/tmp?

Há cerca de uma semana, o seu site original, localizado em http://www.pathname.com/fhs, parou de responder. Como essa é uma norma muito valiosa para muitos usuários, programadores, professores etc, coloquei uma cópia de emergência da versão 2.3 aqui. Então, caso você esteja precisando da FHS com urgência, tente primeiro o endereço oficial. Caso o mesmo não esteja respondendo, vá para o meu link.

Espero que isto ajude a alguém além de mim.

Ah, você nunca leu a FHS? Então aproveite e leia agora. Tenho a certeza de que não irá arrepender-se.

[]s

por Eriberto em 02/01/2012 21:22

Fernando Ike

2012: tudo novo ou fim do mundo

   

 

    Tempo! Ele é uma estranha invenção humana… mas isso fica para um outro post (quem sabe). :P

    Bom, já estamos em 2012 em todos os lugares deste planeta, diz a lenda popular baseada nos mitos Maia que será o fim do mundo ou um nova época para humanidade. Mas enquanto isso não acontece, uma pequena revisão do ano de 2011…

    Vim para Brasília em 2007 (Culpa do Christiano Anderson :) ) para um dos projetos mais legais até então. Era migração de arquitetural de sistemas e serviços para software de base em Software Livre. Desde então, fui ficando, ficando até 2012…

    Sempre que apareceu a oportunidade eu recusei assumir uma função administrativa (Gerência de equipe), mas nos últimos dois anos cumpri a função coordenando equipes de suporte, infraestrutura e desenvolvimento. Foi uma experiência rica, frustante, gratificante e inesquecível.

    Em 2011 brinquei de andar de kart, voltei a "estar" um corredor de rua (5Km em 25minutos, quem sabe esse ano ir para os 10K), nasceu o meu filhote (Yago). No profissional ajudei a aplicar Scrum para equipes de Infraestrutura e Suporte, aprendi um pouco de programação em linguagens funcionais (especificamente Erlang, Scala e passadela em Haskell). Há, ainda brinquei um pouco com Chef e OpenStack.

    Aprendi uns truques bons, perdi alguns bons amigos, ganhei alguns novos mas o principal é aprender lidar melhor com esses bichos esquisitos que chamamos de humanos. Particularmente prefiro minha terra natal (Aldera).

   Continuo odiando Brasília mas aprendi conviver nessa cidade de gente tão esquisita. Acho que 2012 estarei em outro lugar  do planeta, talvez num outro planeta. :)

   Sem muitos planos para 2012, se for uma evolução de 2011 e manter contribuição no Debian e PostgreSQL (estudando um pouco o código do Redis) já está muito bom. ;)

por Fernando Ike em 02/01/2012 00:49

28/12/2011

Gustavo Noronha Silva

The Blocks C extension and GIO asynchronous calls

So, I intended to be completely away from my computer during my vacations, but hey. I have been interested in this new extension Apple added to the C language a little while ago which introduces the equivalent of closures to C. Today I spent a few minutes looking into it and writing a few tests with the help of clang.

Here’s something I came up with, to use a block as the callback for a GIO asynchronous call:

#include <Block.h>
#include <gio/gio.h>

typedef void (^Block)();

static void async_result_cb(GObject* source,
                            GAsyncResult* res,
                            gpointer data)
{
    Block block = (Block)data;
    block(res);
}

int main(int argc, char** argv)
{
    g_type_init();

    if (argc != 2) {
        g_error("Blah.");
        return 1;
    }

    GMainLoop* loop = g_main_loop_new(NULL, TRUE);
    GFile* file = g_file_new_for_path(argv[1]);

    g_file_query_info_async(file,
                            G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
                            G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT,
                            NULL, async_result_cb, (gpointer) ^ (GAsyncResult* res) {
        GError* error = NULL;
        GFileInfo* info = g_file_query_info_finish(file, res, &error);

        if (error) {
            g_error("Failed: %s", error->message);
            g_error_free(error);
            return;
        }

        g_message("Content Type: %s",
                  g_file_info_get_attribute_string(info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE));

        g_object_unref(info);
        g_main_loop_quit(loop);
    });

    g_main_loop_run(loop);
    g_object_unref(file);

    return 0;
}

Pretty neat, don’t you think? To build you need to use clang and have the blocks runtime installed (libblocksruntime-dev in Debian). Here’s the command I use:

$ clang -fblocks -o gio gio.c -lBlocksRuntime `pkg-config --cflags --libs gio-2.0`

por kov em 28/12/2011 02:53

22/12/2011

Gustavo Noronha Silva

AIClass and vacations

One of my side projects for these last months was to enroll on the online Introduction to AI class, with Peter Norvig and Sebastian Thrun, professors at Stanford. Through it I also learned about the Kahn Academy. I must say that getting to know these efforts made me feel similar to when I found Free Software: it’s hard to believe that such great things exist!

I learned some really cool stuff, and was also introduced to the amazing work of Sebastian Thrun with self-driving cars, it was an awesome experience! Last weekend I took the final exam, and today I got the certificate of accomplishment. It was delivered as a signed PDF which can be checked with a certificate they provided, pretty neat. I’m very happy, and motivated to enroll on more such courses in the future =). Now it’s time to cool down, though. My vacations start today, and on the weekend I’ll travel to the sunny Fortaleza, in northeastern Brazil, to enjoy some nice beaches and get some tan. See you next year!

Statement of Accomplishment - AIClass 2011

Statement of Accomplishment - AIClass 2011

por kov em 22/12/2011 17:02

20/12/2011

Fernando Ike

Debian, Sysctl e postgresql

    Na maioria dos casos de uma instalação do PostgreSQL é modificado o sysctl para usar melhor (tuning) os recursos disponíveis num servidor. O Debian tem um diretório chamado /etc/sysctl.d para configurações personalizadas em pacotes específicos como o pacote do PostgreSQL.

    Para fazer a modificação (tuning) do sysctl no modo Debian (Debian-like), o arquivo para fazer modificação é /etc/sysctl.d/30-postgresql-shm.conf.

    Efetivar a modificação sem reiniciar o servidor, é:

sysctl -p /etc/sysctl.d/30-postgresql-shm.conf

por Fernando Ike em 20/12/2011 00:54

07/12/2011

Gustavo Noronha Silva

WebKitGTK+ hackfest \o/

It’s been a couple days since I returned from this year’s WebKitGTK+ hackfest in A Coruña, Spain. The weather was very nice, not too cold and not too rainy, we had great food, great drinks and I got to meet new people, and hang out with old friends, which is always great!

Hackfest black board, photo by Mario

I think this was a very productive hackfest, and as usual a very well organized one! Thanks to the GNOME Foundation for the travel sponsorship, to our friends at Igalia for doing an awesome job at making it happen, and to Collabora for sponsoring it and granting me the time to go there! We got a lot done, and although, as usual, our goals list had many items not crossed, we did cross a few very important ones. I took part in discussions about the new WebKit2 APIs, got to know the new design for GNOME’s Web application, which looks great, discussed about Accelerated Compositing along with Joone, Alex, Nayan and Martin Robinson, hacked libsoup a bit to port the multipart/x-mixed-replace patch I wrote to the awesome gio-based infrastructure Dan Winship is building, and some random misc.

The biggest chunk of time, though, ended up being devoted to a very uninteresting (to outsiders, at least), but very important task: making it possible to more easily reproduce our test results. TL;DR? We made our bots’ and development builds use jhbuild to automatically install dependencies; if you’re using tarballs, don’t worry, your usual autogen/configure/make/make install have not been touched. Now to the more verbose version!

The need

Our three build slaves reporting a few failures

For a couple years now we have supported an increasingly complex and very demanding automated testing infrastructure. We have three buildbot slaves, one provided by Collabora (which I maintain), and two provided by Igalia (maintained by their WebKitGTK+ folks). Those bots build as many check ins as possible with 3 different configurations: 32 bits release, 64 bits release, and 64 bits debug.

In addition to those, we have another bot called the EWS, or Early Warning System. There are two of those at this moment: one VM provided by Collabora and my desktop, provided by myself. These bots build every patch uploaded to the bugzilla, and report build failures or passes (you can see the green bubbles). They are very important to our development process because if the patch causes a build failure for our port people can often know that before landing, and try fixes by uploading them to bugzilla instead of doing additional commits. And people are usually very receptive to waiting for EWS output and acting on it, except when they take way too long. You can have an idea of what the life of an EWS bot looks like by looking at the recent status for the WebKitGTK+ bots.

Maintaining all of those bots is at times a rather daunting task. The tests require a very specific set of packages, fonts, themes and icons to always report the same size for objects in a render. Upgrades, for instance, had to be synchronized, and usually involve generating new baselines for a large number of tests. You can see in these instructions, for instance, how strict the environment requirements are – yes, we need specific versions of fonts, because they often cause layouts to change in size! At one point we had tests fail after a compiler upgrade, which made rounding act a bit different!

So stability was a very important aspect of maintaining these bots. All of them have the same version of Debian, and most of the packages are pinned to the same version. On the other hand, and in direct contradition to the stability requirement, we often require bleeding edge versions of some libraries we rely on, such as libsoup. Since we started pushing WebKitGTK+ to be libsoup-only, its own progress has been pretty much driven by WebKitGTK+’s requirements, and Dan Winship has made it possible to make our soup backend much, much simpler and way more featureful. That meant, though, requiring very recent versions of soup.

To top it off, for anyone not running Debian testing and tracking the exact same versions of packages as the bots it was virtually impossible to get the tests to pass, which made it very difficult for even ourselves to make sure all patches were still passing before committing something. Wow, what a mess.

The explosion^Wsolution

So a few weeks back Martin Robinson came up with a proposed solution, which, as he says, is the “nuclear bomb” solution. We would have a jhbuild environment which would build and install all of the dependencies necessary for reproducing the test expectations the bots have. So over the first three days of the hackfest Martin and myself hacked away in building scripts, buildmaster integration, a jhbuild configuration, a jhbuild modules file, setting up tarballs, and wiring it all in a way that makes it convenient for the contributors to get along with. You’ll notice that our buildslaves now have a step just before compiling called “updated gtk dependencies” (gtk is the name we use for our port in the context of WebKit), which runs jhbuild to install any new dependencies or version bumps we added. You can also see that those instructions I mentioned above became a tad simpler.

It took us way more time than we thought for the dust to settle, but it eventually began to. The great thing of doing it during the hackfest was that we could find and fix issues with weird configurations on the spot! Oh, you build with AR_FLAGS=cruT and something doesn’t like it? OK, we fix it so that the jhbuild modules are not affected by that variable. Oh, turns out we missed a dependency, no problem, we add it to the modules file or install them on the bots, and then document the dependency. I set up a very clean chroot which we could use for trying out changes so as to not disrupt the tree too much for the other hackfest participants, and I think overall we did good.

The aftermath

By the time we were done our colleagues who ran other distributions such as Fedora were already being able to get a substantial improvements to the number of tests passing, and so did we! Also, the ability to seamlessly upgrade all the bots with a simple commit made it possible for us to very easily land a change that required a very recent (as in unreleased) version of soup which made our networking backend way simpler. All that red looks great, doesn’t it? And we aren’t done yet, we’ll certainly be making more tweaks to this infrastructure to make it more transparent and more helpful to the users (contributors and other people interested in running the tests).

If you’ve been hit by the instability we caused, sorry about that, poke mrobinson or myself in the #webkitgtk+ IRC channel on FreeNode, and we’ll help you out or fix any issues. If you haven’t, we hope you enjoy all the goodness that a reproducible testing suite has to offer! That’s it for now, folks, I’ll have more to report on follow-up work started at the hackfest soon enough, hopefully =).

por kov em 07/12/2011 23:34

Fernando Ike

#desconferência de linguagens funcionais em Brasília

 

Por muitos e muitos anos de uma passado recente deste universo, as linguagens de programação orientadas à objetos era o que tinha mais avançado (senso comum) neste planeta. Após anos de império a aliança rebelde que aparentemente estava debilitada e escondida em locais de pouca população para não chamar atenção, foi-se que Scala, Erlang, Haskell (dentre muitas outras) iniciaram a divulgar que existe outras opções além do Império Orientado à Objeto e o ex-Império estruturado.

Assim, a tríade (Scala, Erlang, Haskell) convoca para o próximo sábado uma desconferência sobre linguagens funcionais. O local (cuidado com a divulgação com os soldados do Império) será no quadrante SUL da #cidadeimaginaria , coodernada SRTVS Qd. 701 Cj. L Ed. Assis Chateaubriand Torre I sala 703 a partir das 10 horas do ano 70 DR (Dennis Ritchie).

Você que não conhece linguagem funcional e está praticamente dominado pelo Império, venha participar da Aliança Rebelde.

Lembre-se que a reunião é da aliança rebelde, portanto, não tem inscrição. Divulgue a desconferência mas cuidado quando estiver em alguma Dobra Espacial para não ter a nave reconhecia por algum agente do Império.

   Ok, tirando a parte da bobagem que vocês leram até agora…

Vai acontecer uma desconferência sobre linguagens funcionais no sábado (10/12/2011) a partir das 10 horas em Brasília o local é Edifício Assis Chateaubriand na SRTVS Qd. 701 Cj. L, sala 704. O local é pequeno mas aconchegante para conversamos sobre Scala, Erlang, Haskell e outras linguagens.

Se você não sabe o que é uma linguagem de programação funcional, segue descrição da Wikipedia: “…é um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em contraste da programação imperativa, que enfatiza mudanças no estado do programa.” 

Como é uma desconferência, não tem uma programação definida além de uma rápida apresentação de Scala (ainda precisamos de voluntários para outras linguagens). O restante do tempo está aberto para hack’s, dojos, etc. :)

Ah, o local tem tomadas, internet, cadeiras e mesa.

O mapa está abaixo do local. :)


Exibir mapa ampliado

por Fernando Ike em 07/12/2011 02:13

29/11/2011

Gustavo Noronha Silva

Accelerated Compositing in webkit-clutter

For a while now my fellow Collaboran Joone Hur has been working on implementing the Accelerated Compositing infrastructure available in WebKit in webkit-clutter, so that we can use Clutter’s powers for compositing separate layers and perform animations. This work is being done by Collabora and is sponsored by BOSCH, whom I’d like to thank! What does all this mean, you ask? Let me tell me a bit about it.

The way animations usually work in WebKit is by repainting parts of the page every few milliseconds. What that means in technical terms is that an area of the page gets invalidated, and since the whole page is one big image, all of the pieces that are in that part of the page have to be repainted: the background, any divs, images, text that are at that part of the page.

What the accelerated compositing code paths allow is the creation of separate pieces to represent some of the layers, allowing the composition to happen on the GPU, removing the need to perform lots of cairo paint operations per second in many cases. So if we have a semi-transparent video moving around the page, we can have that video be a separate texture that is layered on top of the page, made transparent and animated by the GPU. In webkit-clutter’s case this is done by having separate actors for each of the layers.

I have been looking at this code on and off, and recently joined Joone in the implementation of some of the pieces. The accelerated compositing infrastructure was originally built by Apple and is, for that reason, works in a way that is very similar to Core Animation. The code is still a bit over the place as we work on figuring out how to best translate the concepts into clutter concepts and there are several bugs, but some cool demos are already possible! Bellow you have one of the CSS3 demos that were made by Apple to demo this new functionality running on our MxLauncher test browser.

You can also see that the non-Accelerated version is unable to represent the 3D space correctly. Also, can you guess which of the two MxLauncher instances is spending less CPU? ;) In this second video I show the debug borders being painted around the actors that were created to represent layers.

The code, should you like to peek or test is available in the ac2 branch of our webkit-clutter repository: http://gitorious.org/webkit-clutter/webkit-clutter/commits/ac2

We still have plenty of work to do, so expect to hear more about it. During our annual hackfest in A Coruña we plan to discuss how this work could be integrated also in the WebKitGTK+ port, perhaps by taking advantage of clutter-gtk, which would benefit both ports, by sharing code and maintenance, and providing this great functionality to Epiphany users. Stay tuned!

por kov em 29/11/2011 17:55

21/11/2011

João Eriberto Mota Filho

Firefox 7 ou 8 (Iceweasel) no Debian Squeeze

De uns dias para cá, alguns usuários do Debian Squeeze (Debian 6.0.3) devem ter notado que, ao utilizarem o Firefox (Iceweasel), receberam mensagens solicitando que a versão do mesmo fosse atualizada. Um exemplo clássico é o GMail, que alterou a sua interface e não convive bem com o Iceweasel 3.5, como pode ser visto na figura a seguir.

Obs: Para quem não sabe, em curtas palavras, sem contar muita história, Iceweasel é o nome do Firefox no Debian.

Uma solução para ter um Firefox mais moderno é instalar a versão existente no Debian Testing (Wheezy). Atualmente, o Debian Testing conta com o Iceweasel 7 (o Unstable já conta com a versão 8, que estará disponível em breve no Testing). Mas não basta instalar esse Firefox e não atualizá-lo. Também creio que as pessoas que usam o Debian Stable (Squeeze) não queiram fazer um upgrade total para o Testing. A solução é controlar tudo pelo arquivo /etc/apt/preferences.

Inicialmente, edite o arquivo /etc/apt/sources.list e adicione como últimas linhas:

deb http://ftp.us.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main

Para forçar o sistema a reconhecer os novos repositórios, execute:

# apt-get update

Depois, edite (ou crie) o arquivo /etc/apt/preferences e coloque como conteúdo:

Package: *
Pin: release a=stable
Pin-Priority: 600

A configuração anterior previne que o Wheezy, por ser mais novo, seja utilizado por default para para instalações de pacotes ou atualizações. Cada repositório possui um peso que, por padrão, é 500. Assim, se os repositórios do Stable e do Testing tiverem o mesmo peso, os pacotes do Testing sempre serão instalados, uma vez que são mais novos. Colocando um peso de 600 para o Stable, teremos que especificar o Testing, no comando apt-get, com a chave -t, sempre que quisermos utilizá-lo. Ainda, nas linhas anteriores, caso você deseje citar a release pelo seu codinonome (lenny, squeeze, wheezy), utilize n= em vez de a=. Exemplo: n=squeeze.

É chegada a hora da instalação. Se você emitir um apt-get comum, nada ocorrerá. Exemplo:

# apt-get install iceweasel

Mas, citando a release, instalará o pacote desejado:

# apt-get install -t testing iceweasel

ou

# apt-get intall -t wheezy iceweasel

É normal a instalação de outros pacotes que são requeridos para o correto funcionamento do Iceweasel na versão existente no Testing. Ainda, o Iceweasel não possui pacotes recomendados, que são elementos extras que são instalados por default. Mas, se houvesse, seria possível evitar a instalação dos recomendados com –no-install-recommends. Exemplo:

# apt-get install -t testing --no-install-recommends iceweasel

Feliz novo Firefox!

por Eriberto em 21/11/2011 20:19

11/11/2011

Fernando Ike

10/11/2011

João Eriberto Mota Filho

Redes de computadores: controle de tráfego para evitar saturação do link

Com certeza quase todo administrador de rede tem uma dor de cabeça constante: reclamações sobre o link Internet estar lento. Isso ocorre porque a maioria das redes não possuem controle de tráfego.

O controle de tráfego é essencial, pois propicia condições justas para que todos naveguem com boa velocidade. Mas o que causa a saturação do link? Um exemplo clássico é o Emule. Imagine que você possua um link de 10 Mb/s na sua empresa e 20 computadores. De repente, um computador começa a baixar um filme via Emule. Ele buscará partes do filme em várias fontes. Com isso, baixará uma pedaço aqui, outro ali etc. Tudo ao mesmo tempo. Assim, por causa de uma única máquina, foram-se os seus 10 Mb/s. Aumentar o tamanho do link é sinônimo de deixar o “bandido ladrão de link” baixar mais filmes ao mesmo tempo. De nada resolve. A solução é controle de tráfego.

Como acabo de falar sobre Delay Pool no Squid lá no meu Wiki, resolvi escrever este artigo para agrupar tudo o que tenho sobre controle de tráfego.

HTB e Iptables

O HTB é uma disciplina de controle que permite criar diversos canais, conhecidos como classes, por onde passarão os diversos tipos de tráfego. São como tubos. Podemos dizer que em um tubo passará somente o que for HTTP, em outro o que for FTP e email e assim por diante. Um dos tubos será o default. Tudo que não for especificado de alguma forma cairá no tubo default. Ainda, podemos dizer qual classe (tubo) tem prioridade. Assim, em um momento de disputa, um tráfego HTTP terá prioridade, por exemplo. Resultado: rede dez vezes mais rápida com o mesmo link.

O Iptables entende HTB. Então, o HTB criará as classes e o Iptables colocará cada tipo de tráfego na classe correta.

As referências são as seguintes:

Delay pool no Squid

O delay pool permite, dentre outras tarefas, controlar a velocidade de download na rede por usuário. Essa é uma medida complementar obrigatória ao HTB. O Squid consegue gerenciar sozinho praticamente tudo, podendo, inclusive, utilizar expressões regulares.

Implementar um controle por usuário via HTB seria extremamente complicado e trabalhoso. Disso vem a importância de agregar o Squid ao HTB.

A referência é a seguinte:

Curiosidade

Apesar de muitos se referirem às atividades citadas como “controle de banda”, o nome correto é “controle de tráfego”. Banda é a capacidade de transmissão que um meio tem. Essa capacidade é medida em hertz. Controle de tráfego é dizer quais pacotes têm prioridade, a velocidade que os mesmos poderão trafegar etc.

Conclusão

Controle de tráfego é essencial em uma rede. Sem ele, as redes de computadores só funcionam pela graça de Deus.

por Eriberto em 10/11/2011 22:04

Fernando Ike

Parabéns! Excelente PGBR 2011

   

 

Participei de um excelente evento, provavelmente melhor evento PostgreSQL realizado no Brasil. Palestras de excelente nível técnico, boa organização de stand, coffe break, happy hour, etc. Tudo andou muito bem, os dois Kahuna (Telles e Flávio) estão de parabéns!!!

   Não pude ficar até o fim pois tinha um outro evento importante (Rubyconf era nos mesmo dias e gostaria de ir mas não era esse evento). :P

      

     

    Sobre Pearl Jam fica para outro post…

    Voltando, o evento foi extraordinário porém alguma coisa mudou e não foi o evento. Acho que eu mudei, não tenho a mesma pegada (empolgação) por coisas ligadas à Infraestrutura.

    Antes que digam que sou o maior defensor do mundo NoSQL, não sou defensor de uma tecnologia. A minha questão, talvez, esteja ligada aos desafios em desenvolvimento de sistemas (principalmente programação paralela e/ou funcional) e arquitetura distribuídas. Meu tempo de pegar um carro e passar horas/dias mexendo nele para conseguir o melhor desempenho possível já passou.

    Nada contra para quem continua fazendo, o mundo precisa muito de profissionais assim. Talvez parte da minha "frustração" seja pelo debate que teve na mesa redonda "O mercado de serviços em PostgreSQL no Brasil", esperava um pouco mais dos "empresários".

   Acho que a questão é que infraestrutura é commodity, como banco de dados é parte da infraestrutura e será cada vez um nicho segmentado. 

   Vamos ver daqui três meses se eu fiquei pirado na batatinha ou não. :)

 

 

PS. Alias, minha apresentação não teve pergunta. Então, foi um sucesso total ou fracasso retumbante. Comenta aí…

por Fernando Ike em 10/11/2011 20:35

Algumas bobagens de PostgreSQL num evento NoSQL

   Já tem alguns dias mas falei algumas bobagens sobre  PostgreSQL e a nuvem num evento de NoSQL, aliás foi um evento muito bacana. Tá aí embaixo…

 

View more presentations from Fernando Ike.

por Fernando Ike em 10/11/2011 19:38

Palestra sobre linguagem Scala

   

    Amanhã terá uma apresentação sobre programação funcional na linguagem Scala no auditório Interlegis em Brasília. Vou estar lá para ver. :)

    Segue descrição da chamada.

 

=========================================================

Você quer conhecer a linguagem que sites como Twitter, Facebook, The Guardian, LinkedIn e Foursquare estão usando para desenvolver aplicações de alto desempenho, disponibilidade e escalabilidade?

Venha conhecer outro paradigma de programação.

Convidamos para a apresentação que João Rafael Moraes Nicola, servidor do Prodasen, fará:



•         na próxima sexta-feira, dia 11/11



•         às 10h30min



•         no Auditório do Interlegis-SF, via N2



Amplie conhecimentos e possibilidades! Não é necessário fazer inscrição, compareça!





Assessoria de  Comunicação do Prodasen

contato: conversandotecnologia@senado.gov.br

por Fernando Ike em 10/11/2011 10:19

03/11/2011

Eduardo Marcel Macan

A new Coding Dojo Kata: Poker Dice

I was invited to give an introductory class on python to the students of UENP and had the idea of organizing a coding dojo there. I wanted to find a kata that wouldn’t be trivial but wouldn’t be too hard for someone who had just had their first contact with python either.

At first I thought the Poker Hands Kata was a good choice. Dealing with a “virtual card deck”, shuffling, it had a good potential as an Object Oriented Programming exercise, but I still wanted something slightly simpler. Having to deal with the different card suits seemed to add unnecessary complexity for a beginner’s exercise.

That was when I came across “poker dice“, a variation of Poker that is played with dice instead of a standard card deck. It made it much simpler since we didn’t have to deal with suits or mixed letters and numbers when computing the ranking of a hand. We could then pay more attention to the data structures involved and the mechanisms python provides us when dealing with those structures, no unnecessary complexity is imposed by the rules of the game itself.

I think this Kata is of great value for both experienced and novice programmers. Of course you’re not restricted to python although I had a specific goal to achieve with the exercise, given the contents of my class.

So here is the kata: the goal was to just “compare hands”, but implementing the full rules of the game is not that hard

If you use it in your own Coding Dojo, please leave a comment to let me know it was useful

Implement dice, “hands” and comparison between two poker dice “hands” in python

Description

Poker Dice is a simple, straight-forward and fun dice game.

Players

2 or more players, best with 2 to 5 players.

Equipment

Five standard six-sided dice.

Goal

To roll the best Poker hand.

Gameplay

Each player has three rolls. On the first roll, she rolls all five dice. She may then set aside any number of dice (including zero) and re-roll the remainder. After the second roll, she may once again set aside any number of dice and re-roll the remainder.

Once dice are set aside, they may not be re-rolled. A player is not required to make a second or third roll.

Hand Ranks

The possible hands are ranked as follows:

  • Five of a kind, e.g. 4-4-4-4-4
  • Four of a kind, e.g. 2-2-2-2-6
  • Full house, e.g. 6-6-6-1-1
  • Three of a kind, e.g. 5-5-5-2-1
  • Two pairs, e.g. 3-3-2-2-4
  • One pair, e.g. 4-4-5-3-1
  • High card, e.g. 6-5-4-3-2

Straights do not count in this game.

If two players claim the same hand, ties are broken in the same manner as in Poker.

Winning

The player with the best Poker hand wins.


por Eduardo Maçan em 03/11/2011 01:01

01/11/2011

João Eriberto Mota Filho

DNS para todos! (DNS público do Google e do OpenDNS)

Uma dicazinha rápida…

Há poucos instantes o site Linha Defensiva publicou, via Twiter (siga-os clicando aqui), sobre o envenenamento de servidores DNS da GVT. Com isso, os usuários estariam caindo em páginas falsas, que geralmente pedem usuários, senhas etc, com o intuito de roubar dados.

A solução dada foi utilizar os DNS públicos do Google e do OpenDNS. São eles:

Google: 8.8.8.8 e 8.8.4.4 (site: http://code.google.com/intl/pt-BR/speed/public-dns)

OpenDNS: 208.67.222.222 e 208.67.220.220 (site: http://www.opendns.com)

Para quem não sabe, qualquer DNS Internet pode ser utilizado por qualquer pessoa a ela conectada para encontrar as máquinas desejadas. Não precisa ser o DNS do seu provedor, como muitos pensam.

[]s

por Eriberto em 01/11/2011 18:32

29/10/2011

Fernando Ike

2º encontro do NoSQLBrasil e reflexões

 

    Tenho que agradecer o Alexandre Porcelli pela a oportunidade de participar com um lighting talk. O evento foi excelente, apresentações muito boas e técnicas (exceto a minha. :P ).

    Algumas palestras como da Microsoft e da Oracle fizeram-me refletir sobre algumas coisas do mercado de TI. Basicamente no mundo da Operação ou Sustentação:

 

- Big Data e Storages
   Com cada vez mais equipamentos conectados a Internet ou sistemas corporativos, está cada vez mais complexo gerenciar sistemas e infraestrutura. Tem-se informação demais e a necessidade de extrair tendências, relações, histórico, etc. Qualquer sistema a ser pensando (principalmente que envolva a internet) pode ter volume de transação ou acesso muito acima do que tinha-se planejado. 

    Os dados para armazenar, principalmente informação histórica ou legado crescerá exponencialmente. Storage do jeito tradicional, com a preocupação de Raid Group, Raid Type e etc. terá a importância menor. Pensarão em Provisionamento Dinâmico, Virtualização de Storages e robôs de Fitotecas.  

    Também ficará cada vez mais usado a "Tierização" ou seja, conforme o uso de um determinado dado tem acesso recorrente, o Storage automaticamente movimenta este de discos mais lentos para mais rápidos. 

    Nunca pensei em afirmar isso com grande convicção mas cada vez mais o uso de NFS (arquitetura Network Attach Storage) ou outro sistema de arquivo distribuído será cada vez maior pois conectar tantos equipamentos com "fibra ótica"  (SAN)  tem um custo operacional de crescimento do que uso de sistema de arquivo distribuído quando é necessário pensar em escalabilidade rapidamente.

    Só para deixar claro que transações OLTP ainda confio em Storages SAN mas confesso que a arquitetura Scale Out para armazenamento tem chamado minha atenção ultimamente, principalmente para uso de dado não estruturado como bancos de dados NoSQL, Áudio, Vïdeo, etc.

- NoSQL e Big Data

   Então, basicamente em qualquer sistema pode ocorrer o problema do sucesso além do esperado. Aí é cache, cache, cache onde puder ter para dar conta e ou abrir mão de alguma coisa de uma aplicação tradicional CRUD ou banco de dados relacional.

- Pradonização de produto não, processo:

  Isso é um pouco ainda difícil de aceitar mas é um fato. Se você é responsável por uma operação de infraestrutura ou serviço, perceberá que não adianta adotar um tipo de virtualização, um banco de dados, um tipo de sistema operacional, etc. Cada vez mais tem-se que encontrar soluções rápidas e adequadas para sustentar o negócio.

  O mais importante é o controle dos processo da operação de infraestrutura. Mesmo porque a operação não está, necessariamente na sede da empresa, está na nuvem.

- Virtualização é um commodite:

  Não sei se ambientes pequenos isso acontece/acontecerá mas em muitas situações tem hypevisor (Xen, KVM, VMware, Hyper-V, etc.) diferentes com ferramentas para gerenciar.  Felizmente existe algumas soluções interessantes para esse tipo de gerenciamento como Openebula e OpenStack.

-  Soluções poliglotas:

  Então fã de uma linguagem de programação, pode continuar encantado com ela mas a oferta é tanta de soluções que muitas delas estão desenvolvidas em uma linguagem diferente que você gosta. Terá que aprender como adequá-las para suas necessidades (Perl, Python, Ruby, Java, Scala, etc… ). Um aparte: Gostei muito do Elastic Search.

- DBA, é o fim

  Não é o fim do DBA mas tornara cada vez mais um nicho especifíco. Muito da responsabilidade do DBA com o Big Data está com o desenvolvedor ou arquiteto da aplicação. Principalmente com os bancos de dados NoSQL.

- Sysadmin/Sysops/Devops/FuckOps

  De certa maneira também o sysadmin tem suas funções alteradas, os conhecimentos de ferramentas de configuração (Chef, Puppet, Cfengine, etc…) e administração de servidores na "nuvem" é cada vez mais frequente. Ah, se você é um sysadmin que não tem caguete de programação é melhor rever seus conceitos senão também sua área de atuação ficará mais limitada.

- Enfim, ganhamos e não sabemos:

   Os grandes, aparentemente perderam o bonde da virtualização de servidores, estão brigando numa "camada" acima. A tal de Sky Computing, tanto que a Microsoft com o Azure, IBM com Smart Cloud, Oracle com a Public Cloud, Google com App Engine. E eu achando que Daas com PostgreSQL era o bacana. :)

 

Obs. Tá meio troll esse post. Se tiver afim de aprofundar algum assunto, comenta aí que depois comentou ou posto algo menos genérico. ;)

por Fernando Ike em 29/10/2011 13:59

27/10/2011

Fernando Ike

Agenda Novembro

    Salve meus caros!!!

 

 

 

    Para nem vocês e eu esquecermos, minha agenda de palestras:

 

- NoSQLBR V2: PostgreSQL nas Nuvens (já apresentei. Falta um post sobre… )

- PGBR2011: Escalabilidade, as modas e o No(SQL)

- Linuxcon Brasil: Desmitificando gargalos de performance (Prefiro o título como: Lendas Urbanas de Performance)

por Fernando Ike em 27/10/2011 02:27

26/10/2011

João Eriberto Mota Filho

Sempre tem um mané com wireless sem senha. Basta usar!

Wireless sem senha: quem é o mané?Uma realidade…

Bem, creio que para muita gente não seja novidade que diversas pessoas deixam seus roteadores wireless com a configuração com a qual vieram de fábrica, ou seja, sem senha ou segurança nenhuma. Isso permite que, por exemplo, paremos o nosso carro ao lado de um prédio e comecemos a navegar na Internet. Quem é que nunca fez isso?

Quem é o mané?

Agora pense… Imagine que uma pessoa mal intencionada disponibilize um acesso wireless sem senha para a Internet e que você e um monte de outros seres humanos passem a utilizá-lo. Imagine também que essa pessoa grave todo o tráfego que passa pelo roteador wireless usando um computador acoplado ao mesmo e um tcpdump, por exemplo. Ainda, vislumbre a possibilidade desse tráfego conter as suas senhas que não estejam protegidas por sistemas com criptografia, além de dados pessoais… Tudo isso, a partir de agora, estará nas mãos de alguém que você nunca viu e nem verá… E o pior: no caso da maioria dos usuários, a senha de e-mail é a mesma da conta bancária etc.

Depois de todo esse raciocínio, responda: quem é o mané nessa história???

Bem, há tempos estou para escrever este post simples. Mas como citei esse fato em uma palestra hoje, fiquei inspirado. :-)

Só para fechar, há a possibilidade de utilizar uma VPN para garantir que os seus dados irão trafegar com segurança. Mas, quem é que sempre tem um gateway VPN prontinho para ser utilizado???

por Eriberto em 26/10/2011 01:15

22/10/2011

João Eriberto Mota Filho

Bibliografia para forense, redes, segurança, Linux e programação shell

Quando dou palestras ou minicursos, como foi o caso nesta semana em um estágio no Exército, sempre me perguntam sobre bibliografias recomendadas.

Bem, há uma bibliografia no item Lato Sensu existente no meu site. Basta consultar o curso de Perícia Digital da Universidade Católica de Brasília. No entanto, resolvi detalhar toda essa bibliografia aqui. Cabe apenas ressaltar que se você deseja atingir um bom nível de conhecimento em qualquer área da informática, terá que ler bibliografias em inglês. Se não sabe, aprenda! Crianças e mendigos nos EUA falam inglês; por que você, um técnico em informática que deseja alcançar altos níveis de conhecimento, não conseguiria??? Aprender inglês seria mais difícil do que programar computadores? Pense nisso…

A bibliografia

ALTHEIDE, Core; CARVEY, Harlan. Digital Forensics with Open Source Tools. Editora Syngress, 2011

Este livro aborda, de forma relativamente abrangente, a perícia computacional em GNU/Linux, MS Windows e Mac OS. Também fala sobre a estrutura e peculiaridades dos filesystems e dos tipos de arquivos mais conhecidos e utilizados. Como o próprio título do livro diz, há um esforço na utilização de ferramentas open source. Mas o livro, nos seus apêndices, aborda também algumas ferramentas não open source. É um livro ideal para quem está iniciando e precisa de uma visão geral e um pouco aprofundada sobre o assunto forense computacional.

CARRIER, Brian. Filesystem Forensic Analysis. Editora Addison-Wesley, 2005

Um livro sobre a arquitetura e perícia de filesystems. O autor é o criador da famosa suíte de forense computacional The Sleuth Kit (TSK).

GORALSKI, Walter. The Illustrated Network. Editora Morgan Kaufmann, 2008

Este livro ensina redes de computadores utilizando, em muitas das vezes, demonstrações com tráfegos capturados via tcpdump. Walter Goralski é discípulo de Richard Stevens (veja o livro dele abaixo). Se você deseja aprender sobre redes de computadores, esqueça outros autores. Goralski e Stevens são os únicos que vão lhe ensinar de forma prática e didática.

Apenas citando, também estou escrevendo um livro sobre redes utilizando o mesmo método. Atualmente, já ministro aulas de redes dessa forma e posso dizer que os meus alunos ficam satisfeitos e dizem ser fácil aprender. Tcpdump é essencial para ensinar redes.

JARGAS, Aurélio Marinho. Canivete Suíço do Shell (Bash)

Disponível em http://aurelio.net/shell/canivete. Acesso em 21 out. 2011.

Este site foi escrito por um dos brasileiros que mais dominam os assuntos programação shell e expressões regulares. É um manual resumido sobre vários aspectos interessantes sobre os citados assuntos. É de uso obrigatório para todos que desejam lidar com forense, redes e sistemas de firewall.

JARGAS, Aurélio Marinho. Expressões Regulares, 3ª edição. Editora Novatec, 2009

Um livreto essencial para aprender expressões regulares. Esse é um conhecimento básico para lidar com forense, redes e sistemas de firewall. Segundo o autor, expressão regular:

É uma composição de símbolos, caracteres com funções especiais, chamados “metacaracteres” que, agrupados entre si e com caracteres literais, formam uma
seqüência, uma expressão. Essa expressão é testada em textos e retorna sucesso caso esse texto obedeça exatamente a todas as suas condições. Diz−se que o
texto “casou” com a expressão. A ERs servem para se dizer algo abrangente de forma específica. Definido o padrão de busca, tem−se uma lista (finita ou não) de possibilidades de casamento. Em um exemplo rápido, [rgp]ato pode casar “rato”, “gato” e “pato”.

Fonte: http://aurelio.net/regex/apostila-conhecendo-regex.pdf, acesso em 21 out. 2011.

MOTA FILHO, João Eriberto. Análise e controle de tráfego em redes TCP/IP. Editora Novatec. (livro em processo de planejamento)

Este é um livro que estou escrevendo. Segue o mesmo estilo de Stevens, assim como o livro do Goralsky. Todas as explicações são baseadas em demonstrações com tcpdump ou outros comandos. Já escrevi uma parte dele e devo conseguir lançá-lo por volta de meados de 2013. Por enquanto, a 3ª edição do Descobrindo o Linux é prioridade.

MOTA FILHO, João Eriberto. Descobrindo o Linux, 3ª edição. Editora Novatec. (livro em processo de edição)

Esta é a 3ª edição do meu livro sobre sistema operacional. Ele contém o suficiente para ensinar o básico sobre a arquitetura de sistemas operacionais e sobre Linux. Com certeza estará editado em maio de 2012, uma vez que estarei em férias em março do mesmo ano e terei tempo para terminá-lo. Serão mais de 700 páginas nessa edição, totalmente revisada, atualizada e ampliada.

MOTA FILHO, João Eriberto. Palestras

Disponível em http://eriberto.pro.br/palestras. Acesso em 21 out. 2011.

Este é o site que concentra todas as minhas palestras. As mesmas sempre são atualizadas quando são apresentadas em algum evento.

MOTA FILHO, João Eriberto. Perícia Forense Computacional

Disponível em http://eriberto.pro.br/forense. Acesso em 21 out. 2011.

Este é o site que concentra vários elementos para o estudo do assunto perícia forense computacional. Possui, dentre outras coisas, guias e casos específicos sobre forense.

NAKAMURA, Emilio Tissato; GEUS, Paulo Lício de. Segurança de redes em ambientes cooperativos. Editora Novatec, 2007

Excepcional livro sobre segurança em redes de computadores. De leitura fácil, ampla e envolvente, aborda questões ligadas à segurança, incluindo o funcionamento e o uso de criptografia. Também fala sobre a arquitetura de sistemas de firewall.

NEVES, Julio Cezar. Programação Shell Linux, 8ª edição. Editora Brasport, 2010

Excelente livro sobre programação shell script. Conhecimento essencial para quem deseja lidar com redes, forense e sistemas de firewall.

STEVENS, Richard Wallace. TCP/IP Illustrated Volume 1. Editora Addison-Wesley, 1994

Esse é o livro essencial para quem deseja aprender redes de computadores. Stevens faleceu em 1999. Já falei sobre ele anteriormente. Esqueça Tanenbaum e outros. É aqui que se aprende redes.

Onde encontrar os livros internacionais?

Os livros em inglês aqui citados podem ser ser adquiridos na Amazon.com. Alguns estão disponíveis no Brasil na Livraria Cultura ou em outras.

por Eriberto em 22/10/2011 01:08

10/10/2011

João Eriberto Mota Filho

Programação shell: a influência do ambiente Bash nos comandos emitidos pelo usuário

Bem, este é mais um daqueles posts que estou há muito tempo para escrever. Trata-se de algo simples mas que muitos desconhecem (inclusive quem já programa em shell).

Muitas vezes queremos criar um script e, mesmo parecendo simples, algo dá errado. Quer ver? Faça um teste. Reinicie o seu computador (para limpar o conteúdo de /tmp) e digite:

# cd /tmp
# ls /etc | grep lo*

Depois, execute o mesmo comando dentro de /etc. Para isso, faça assim:

# cd /etc
# ls /etc | grep lo*

Bem, você deve ter notando uma grotesca diferença. Mas o que será que ocorreu? É a influência do Bash.

O Bash está entre a linha emitida pelo usuário e a execução pelo comando em si. Isso pode ser entendido com a figura a seguir.

Repare que todas as ordens do usuário passam pelo Bash. Com isso, há uma interpretação intermediária. Por exemplo: considere um arquivo, chamado lista.txt, com o seguinte conteúdo:

alho
cebola
(alface)
tomate

Digamos que você queira ver somente as linhas que contenham um parênteses. A solução imediata seria:

$ grep  (  lista.txt

No entanto, o seguinte erro surgiria:

bash: erro de sintaxe próximo do `token' não esperado `lista.txt'

Observe com atenção: o erro foi reportado pelo Bash e não pelo comando grep. Então, a ordem do usuário nem chegou no grep! Isso ocorreu porque, para o Bash, o parênteses tem um formato de uso especial e que faz sentido para ele. Uma solução é fazer o Bash tratar o parênteses como um caractere comum e não como um caractere especial de operação. Uma contrabarra resolve o problema. Veja:

$ grep  \(  lista.txt
(alface)

A contrabarra serve para determinar que o próximo caractere não tenha interpretação especial. Ou seja: trata-se de um caractere simples. Quando adicionamos a contrabarra, o Bash pensa: devo tratar o parênteses como um caractere qualquer, sem sentido especial para mim. Então, vem a mágica: ele retira a contrabarra e passa somente o parênteses para o grep. Veja:

 

Agora vamos a um caso mais interessante. Imagine que uma linha termine com um ponto. Veja:

alho
cebola
alface.
tomate

Digamos que queiramos ver somente a linha que contém um ponto. A primeira ideia:

$ grep . lista.txt

O resultado seria:

alho
cebola
alface.
tomate

Isso ocorreu porque para o grep, que usa expressões regulares, o ponto representa “qualquer caractere” e casa com todas as linhas, pois todas têm, pelo menos, um caractere. Assim, surge a ideia de proteger o ponto com uma contrabarra. Vamos testar:

$ grep \. lista.txt
alho
cebola
alface.
tomate

Novamente não deu certo. Mas porquê? Simples! Para o shell, contrabarra quer dizer: não interprete o próximo caractere como algo especial (que seria um metacaractere). Então, ele retira a contrabarra e repassa o restante para o grep. Veja:

A solução é adicionar outra contrabarra, que irá proteger a segunda. Veja:

 

Na nova situação, o shell viu a primeira contrabarra e pensou: “devo tratar o próximo caractere, que é uma contrabarra, como um caractere comum”. Como isso, a contrabarra, protegendo o caractere ponto, chega ao grep.

Para terminar, o que ocorreu no comando que abriu este post? Simples:

# cd /tmp
# ls /etc | grep lo*

Estando no /tmp, foi dado o comando ls com grep. Ao passar pelo shell, o mesmo interpreta “lo*” como sendo qualquer arquivo iniciado com lo. Como não há nenhum, ele repassa “lo*” para o grep e pronto. No entanto, em:

# cd /etc
# ls /etc | grep lo*

há uma série de arquivos iniciados com lo. Então, o shell substitui o “lo*” pelos nomes desses arquivos e envia para o grep e a confusão está feita. Isso pode ser visto com o comando bash -x, que nos fornece um ambiente interativo que mostra como o bash está raciocinado. Veja:

# bash -x
# cd /tmp
# ls /etc | grep lo*
+ ls /etc
+ grep 'lo*'
alternatives
bash_completion.d
bindresvport.blacklist
[...]

Agora, indo para o /etc:

# cd /etc
# ls /etc | grep lo*
+ ls /etc
+ grep locale.alias locale.gen localtime logcheck login.defs logrotate.conf logrotate.d

Entendeu?

O comando anterior daria certo da seguinte forma:

# ls /etc | grep lo\*
+ ls /etc
+ grep 'lo*'
alternatives
bash_completion.d
bindresvport.blacklist
blkid.tab

Quem programa em shell sabe que tudo que é colocado entre apóstrofos também fica protegido. Então, também valeria:

# ls /etc | grep lo’*’

ou

# ls /etc | grep 'lo*'

Apenas para terminar, para sair do ambiente interativo do shell, digite quit.

Enjoy!

por Eriberto em 10/10/2011 19:20

02/10/2011

Fernando Ike

TODO: Minha agenda p/ PGBR 2011

       

  O temário da PGBR 2011 fez uma excelente escolha de temas. É muito difícil escolher qual assistir, de qualquer forma fiz uma seleção de palestras que tentarei assisti. (sem ordem de prioridade e com alguns comentários)

PostSemantic: Integrando dados legados através de semântica

     Está na moda ontologia e Web semântica. Um dos caminhos que para integração de sistemas "autônomos" é uso do SPARQL. Minha apresentação para PGBR tem isso na agenda mas sem a profundidade que o Rodrigo deva abordar. Um projeto interessante de uso do SPARQL e RDF é DBpedia.

- Meu ambiente cresceu e eu não planejei. E agora? 

     Sempre pensei em apresentar uma palestra dessa. Até rascunhei mas  fiquei adiando, adiando termirnar  e (finalmente) alguém mais qualificado (Flávio Gurgel) do que eu falará de um assunto tão bacana e que poucos dão atenção (só depois de ver o tamanho da fatura por não ter planejado direito…). :D :D

- PostgreSQL Performance Pitfalls

     Greg Smith é um dos desenvolvedores do PostreSQL e falará um "pouco" sobre performance. Escreveu um livro recomendadíssimo sobre o tema.

- Viva a Revolução Geoespacial

    Para quem acha que Geoespaciais é o Google Maps, Foursquare ou informações de uma galáxia, não perca a palestra do Bueno. Aliás, ele (ao menos para mim) é um dos pioneiros do Postgis no Brasil.  Se quiser de autógrafos dele, fale comigo no evento. :D

- Escalabilidade horizontal com PostgreSQL 9.0 e Pgpool II

    Escalabilidade horizontal, Grids e sistemas distribuídos são alguns dos meus temas preferidos. Alguns serviços da "nuvem" de PostgreSQL usam bastante os recursos que serão apresentados pelo Matheus.

- MVCC Unmasked

    Bruce Momjian falará uma das funcionalidades de um banco de dados mais fantásticas de um banco dedados, seja SQL ou não: MVCC.

- PostgreSQL at the center of your dataverse

    Implamentação da especificação ISO SQL/MED, talvez o Dave Page fale que é possível buscar informações online do telescópio Hubble. :) :) :)

- PostgreSQL: heavyweight locks, lwlocks, deadlocks, spinlocks, pg_locks, row locks … isálvese quien pueda!

    Locks, locks, deadlocks. O terror de qualquer pessoa que tem envolvimento com banco de dados. Álvaro Herrera falará de um pouco sobre magia negra chamada locks (bloqueios). 

- PostgreSQL and Postgres-XC in NTT Group

    A NTT é uma empresa de telecomunicações do Japão, vai ser interessante ver o que eles estão fazendo com PostgreSQL para manter seus serviços. Ah, os japoneses são os que mais usam telefone no mundo, imagina quanto um banco de dados é exigido???

- Fazendo uma manada de elefantes passar por baixo da porta 

  Provavelmente a palestra mais esperada da PGBR 2011. Dicas importantes de sobre hardware, sistemas de arquivos, etc.  Recomendado para qualquer um que é ou será responsável por banco de dados, principalmente para sistemas OLTP (Online Transaction Processing) e também, porque é o brasileiro que trabalha com PostgreSQL sensação de 2011. Também conhecido como Telles Demolidor (Homem sem medo). 


PS. Autógrafos do Telles, basta agendar comigo. :)

PS2. Hey, essa é a minha lista de intenção. As outras que não listei aqui serão apresentadas por pessoas de alta qualificação. Qual a sua lista?

por Fernando Ike em 02/10/2011 00:09

01/10/2011

Eduardo Marcel Macan

Apresentação Pythonbr7: google apps

Esta apresentação está disponível em HTML5 (tal qual foi apresentada na PythonBR.

A apresentação em HTML5 é bem melhor visualmente e funcionalmente do que a versão PDF disponível no slideshare, embutida abaixo.

E aqui estão Os fontes usados na apresentação e programas exemplo.


por Eduardo Maçan em 01/10/2011 15:40

Fernando Ike

Qual é a música?

    httpv://www.youtube.com/watch?v=QUwZ6FK5h0k&feature=related

    Caso não reconheça, pode abrir o vídeo no youtube ou marcar o espaço em branco na linha abaixo:

Metallica – Fade to Back

     httpv://www.youtube.com/watch?v=Xxz630u7YlQ&feature=related

     Caso não reconheça, pode abrir o vídeo no youtube ou marcar o espaço em branco na linha abaixo:

Radiohead – Nude

     Não reconheceu nenhum ainda? Agora é barbada. :P

httpv://www.youtube.com/watch?v=dmoDLyiQYKw&feature=related

    Colinha p/ quem não advinhou. Marque a linha abaixo.

Fantasma da Ópera

por Fernando Ike em 01/10/2011 15:17

A arte em arduino e floppy disk

   

   Hey você que usa conexão de internet de 10 Mbits, Bluray disk e outras coisas modernosas. Sabe o que instalar um programa com mais de 20 disquetes? Pois é, alguns nerds com mais de dez anos de nerdices computacionais já usou. :P

    E não é que a turma que brinca com arduino fez algumas brincadeiras interessantes com os disquetes de 1/4. :D

httpv://www.youtube.com/watch?v=2z53N1EETMk&feature=related

 

httpv://www.youtube.com/watch?v=fVGOiSjVwJ0&feature=related

 

 

PS. Deu uma vontade de jogar Atari

por Fernando Ike em 01/10/2011 13:38

29/09/2011

Fernando Ike

Celebridades do PostgreSQL entrevistado

   

   Telles é atualmente a celebridade brasileira do PostgreSQL em 2011.  Por que?

   Simples, ele tem email de grife e foi entrevistado pelo pessoal do DatabaseCast para falar de PostgreSQL.  E não ache que é pouca coisa, porque iá apresentar uma das palestras mais quentes da PGBR 2011 que o título "Fazendo um manada de elefantes passar por baixo da porta".

   Basicamente a palestra dele é sobre o uso do PostgreSQL em ambientes de altíssima concorrência, coisa para gente de conhecimento super elevado. Não perca. :D DD

   

 

P.S. Deixando a badalação de lado. Boa entrevista do Telles, recomendo a audição.

 

por Fernando Ike em 29/09/2011 02:22

12/09/2011

Antonio Terceiro

Laptop fun, or "WTF, HP?"

A couple of weeks ago my old laptop decided to rest forever, and I was forced to impose some economic pressure onto the consumption of the planet resources by acquiring a new one. Fortunately this happened while I am still here in Canada, where it is reasonably cheaper to get a decent laptop than it is in Brazil. Although I did not have the budget I wanted for buying a really kick ass laptop, I was able to buy a decent one, an HP Pavilion G6 1B74CA.

I went on 4 different shops with a USB stick loaded with Debian Live to check whether all the hardware would work ok. I always asked one of the salesman before rebooting the laptops, but it was funny to see the reactions of the different employees who came by to check what I was doing: some of them barely noticed that GNOME was not Windows XYZ, and and some asked whether I was hacking the laptops.

Unfortunately, I wasn’t able to find a single laptop in which the wireless worked out of the box with the Squeeze kernel, which sucks. I searched over the internet a lot, and it seems that even the vendors recommended by the FSF do not provide laptops with wireless cards that work without non-free blobs.

Other issue I had was with the Intel graphics. After the kernel enables the modesetting, the backlight goes to the minimum and it looks like you have no video. There are a couple of workarounds in the internet, and the one in which you add “acpi_osi=Linux acpi_backlight=vendor” to the kernel parameters makes the laptop turn on by itself in the morning. This is probably caused by broken ACPI handling in the BIOS, who almost always is written by people on crack.

The other issues I had were related to the keyboard. First, the BIOS came by default with “Access keys mode” enabled, which means that by default pressing F2-F12 actually activated the “multimedia keys” instead of the real function keys. It was disapointing to hit F12 and have my wireless turned off. After disabling this in the BIOS setup, it was OK.

Well, not quite: for some reason, Fn+F4 did not generate the expected keycodes. After some research on the internet, I found a interesting Ubuntu bug . It seems that the “latest and greatest” version of Windows starts its video setup application via the Meta+P shortcut (“Meta” is the actual name of what Windows people call “the Windows key”). Guess what the morons writing the HP BIOS did … yes, they made the keys Fn+F4 (where F4 has “video setup” as its “multimedia key”) generate the keycodes for Meta+P!

It would be a lot easier for everyone in the world if the people at Microsoft just make their stuff listen to both Meta+P and the “video setup” keycode, which is generated by every laptop out there, to activate the Windows screen setup thing. This way the very smart dudes writing BIOS at HP wouldn’t need to make Fn+F4 generate the keycodes for Meta+P and break every single desktop that is not procuced at Redmond.

12/09/2011 22:56

30/08/2011

Fernando Ike

PGBR2011 – Chamada de trabalhos


PGBR 2011 - Conferência Brasileira PostgreSQL

   

    O telles fez a melhor chamada de trabalhos que alguém poderia escrever, portanto nem vou tentar fazer melhor. Vai lá e lê!!!

    Enviei duas propostas:

Escalabilidade, As Modas e (No)SQL

Escalabilidade e a miserabilidade do fracasso

 

por Fernando Ike em 30/08/2011 00:17

29/08/2011

Fernando Ike

Android é o novo DOS/Windows…

    Calma, calma…

    Tenho comentado que o Android é o novo DOS/Windows dos anos 10 (201X). A comparação é com os anos 80/90 do século passado, quando o existia algumas "versões" do DOS.

    Algumas coincidências:

- Versões modificadas:

   O Android tem versões levemente modificadas pelas operadoras de telefonia e/ou fabricantes de celular.  Um ecossistema com tantas versões modificadas força um trabalho extra para um desenvolvedor da aplicação para adequá-la.  Ainda existe celular novo com a versão 2.0 enquanto o upstream está na 2.3.4/5.

  O Windows tinha versões para idiomas diferentes. Se tentasse copiar uma "DLL" de um Windows para outro que tinha idioma diferente, sem dúvida que iria piorar a situação e corromper outra coisa.

-  Um montão de hardware diferente

   O Android funciona em celular "popular" à tablets. Lembra um pouco a arquitetura "PC" com sua grande ou enorme modificações.

- Versões inacabadas:

   Quem usou a 3.0 do Android comenta que está imatura ainda, lembra uma certa versão na transição do DOS/Windows para XP.

- Vulnerável:

   Este post do Meio-Bit mostra algumas estatísticas de que o Android é mais vulnerável que outras plataformas para celular. Por muitos anos, qual foi/é a plataforma desktop com maior número de vulnerabilidade  conhecidas? :X

   Ok, ainda é bizarro para mim ter um antivírus (Endpoint ou qualquer outro nome buzzword…) p/ celular Linux.  A sensação que de que a tecnologia tem ciclos cíclicos (Isso existe?) parece mais em voga do que nunca, vide o NoSQL (slomesquita que diz: "Eu programava NoSQL(Mumps) quando vcs usavam fraldas…").

 

 

Obs: Claro que uma comparação rasa e se aprofundar as diferenças mostrarão que as comparações acima são minimamente tolas ou infantis. Alguns mais experientes fazem uma analogia parecida da Nuvem com os Mainframes (Amazon AWS e Mainframes cobram por processamento…). :P

Obs. 2:  Só para registrar, uso Android mas ficaria feliz com um Freerunner.

Obs. 3: Esta nota merece trollagem. :P

por Fernando Ike em 29/08/2011 23:08

22/08/2011

Eduardo Marcel Macan

Desafio nerd: Que nave é essa?

Essa quero ver, desafio para todos os fãs de ficção científica: “De que filme é essa nave espacial?”…

A propósito, essa musiquinha eu fiz em 10 minutos só pra ter algum barulho no vídeo. Não tem nada a ver com o clipe.


por Eduardo Maçan em 22/08/2011 17:42

14/08/2011

Antonio Terceiro

Handling upstream patches with git-export-debian-patches

These days I briefly discussed with a fellow Debian developer about how to maintain upstream patches in Debian packages with Git, what brought me to rethink a little about my current practices. What I usually do is pretty much like point 4 in Raphael's post "4 tips to maintain a “3.0 (quilt)” Debian source package in a VCS":  I make commits in the Debian packaging branch, or in a separate branch that is merged into the Debian packaging branch. Then I add the single-debian-patch option to debian/source/options so that a single Debian patch is generated, and include a patch header that points people interested in the individual changes to the public Git repository where they were originally done.

My reasoning for doing so was the following: most upstream developers will hardly care enough to come check the patches applied against their source in Debian, so it's not so important to have a clean source package with separated and explained patches. But then there is the people who will actually care about the patches: other distribution developers. Not imposing a specific VCS on them to review the patches applied in Debian is a nice thing to do.

Then I wrote a script called git-export-debian-patches (downloadmanpage), which was partly inspired by David Bremner's script. It exports all commits in the Debian packaging branch that do not touch files under debian/ and were not applied upstream to debian/patches. The script also creates an appropriate debian/patches/series files. The script is even smart enough to detect patches that were later reverted in the Debian branch and exclude them (and the commit that reverted them) from the patch list.

The advantage I see over gbp-pq is that I don't need to rebase (and thus lose history) to have a clean set of patches. The advantage over the gitpkg quilt-patches-deb-export-hook hook is that I don't need to explicitly say which ranges I want: every change that is merged in master, was not applied upstream and was not reverted gets listed as a patch. To be honest I don't have any experience with either gbp-pq or gitpkg and these advantages were based on what I read, so please leave a (nice ;-)) comment if I said something stupid.

I am looking forward to receive feedback about the tool, specially about potential corner cases in which it would break. For now I have tested it in a package with simple changes agains upstream source, and it seems fine.

14/08/2011 01:03

12/08/2011

Eduardo Marcel Macan

Poder Nerd (Info Exame: 05/2011)

Em Maio deste ano participei da matéria sobre “Cultura Nerd” da capa da Info Exame. Foi uma das coisas mais divertidas que fiz até hoje. Lembro de quando o Victor Caputto (@victorcaputto) me ligou e disse: “Escuta, alugamos uma roupa de stormtrooper e queríamos saber se você toparia posar com ela pra foto da matéria…”, enquanto meu cérebro ponderava “que mico homérico” eu já tinha dito “Claro! Quando e onde?” e aí era tarde demais pra voltar atrás :)

Segue um link para a matéria completa no site da revista info com o Rafinha Bastos como protagonista. A parte que fala de mim (página 50) segue citada abaixo:

Nerd assumido, daqueles que vestem camiseta do Debian, uma das versões mais populares do sistema operacional Linux, o engenheiro Eduardo Maçan, 36 anos, sonhava em dar expediente em uma empresa do Vale do Silício. Criado numa fazenda em Santa Mariana, cidade de 12 mil habitantes no interior do Paraná, Maçan gastava boa parte do tempo livre assistindo televisão. Foi quando conheceu a ficção científica e a tecnologia. “Fiquei apaixonado por robôs, lasers e espaço”, afirma Maçan. Formado em engenharia da computação pela Universidade Estadual de Campinas, no interior de São Paulo, mudou-se para a capital e hoje é gerente de pesquisa e desenvolvimento do serviço de mapas Apontador. A nerdice de Maçan, no entanto, não está restrita ao trabalho e à tecnologia. Ele é fã de Guerra nas Estrelas, coleciona réplicas de veículos de séries famosas, como Super Máquina, e tem guardado seu primeiro computador, um MSX. “Por que tentar ser como alguém que tem uma personalidade diferente da minha?”, diz Maçan. “Eu sempre digo para o meu filho ‘seu pai é nerd’.”

E eu ganhei meu próprio infográfico

E eu ganhei meu próprio infográfico

E essa luz do estúdio fez com que meus ralos cabelos desaparecessem por completo! :P A única incorreção que acabou passando na reportagem foi o fato do apontador não ser um serviço de “mapas”, esse é o maplink. O Apontador é um site de busca local. No mais, impecável :)


por Eduardo Maçan em 12/08/2011 20:39

07/08/2011

Antonio Terceiro

Playing with JPEG quality and file size

This is probably no news at all for graphics/image processing experts, but its something I've just learnt myself  and I thought it would be fun to share.

I am writing a static HTML photo algum generator and was a little suspicious of the size of the generated JPEG images. I thought "well, these JPEGs should not be that large ..."

I did some quick research and found out that ImageMagick uses JPEG quality 92 by default and was curious how file size would vary as I changed the output quality.

Then I took an image and produced thumbnails for it with the "JPEG quality" parameter ranging from 1 to 100 to check 1) how the file size varies with quality and 2) how much quality actually makes any difference when viewing the images.

To generate the thumbnails with varying quality, I did the following:

$ for i in $(seq -f %03g 1 100); do convert -scale 640x480 -quality $i /path/to/original.jpg $i.jpg; echo $i; done

Then I generated a data file by calculating the size of each file with du and piping the results through sed and awk:

$ du -b [0-9]*.jpg | sed 's/.jpg//' | awk '{ print $2 " " $1 }'

The generated data file looks this, with JPEG quality in first column and file size in bytes in the second column:

001 20380
002 20383
003 20634
004 21106
[...]

Regarding to file size, it seems like between 1 and 50, file size grows sublinearly with quality. Beyond that, the curve reaches an inflection point and grows in a way that looks, if not exponentially, at least polynomially.Jpeg-file-size-by-quality

The above plot was produced in a R session that looked like this:

$ R

R version 2.13.1 (2011-07-08)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: i486-pc-linux-gnu (32-bit)

R é um software livre e vem sem GARANTIA ALGUMA.
Você pode redistribuí-lo sob certas circunstâncias.
Digite 'license()' ou 'licence()' para detalhes de distribuição.

R é um projeto colaborativo com muitos contribuidores.
Digite 'contributors()' para obter mais informações e
'citation()' para saber como citar o R ou pacotes do R em publicações.

Digite 'demo()' para demonstrações, 'help()' para o sistema on-line de ajuda,
ou 'help.start()' para abrir o sistema de ajuda em HTML no seu navegador.
Digite 'q()' para sair do R.

> png()
> data <- read.table('points.dat')
> quality <- data[[1]]
> quality
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
 [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
 [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
 [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
 [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
 [91]  91  92  93  94  95  96  97  98  99 100
> filesize <- data[[2]]
> filesize
  [1]  20380  20383  20634  21106  21551  22012  22469  22878  23323  23715
 [11]  24103  24494  24952  25327  25725  26127  26507  26886  27216  27550
 [21]  27917  28288  28627  28945  29271  29583  29919  30280  30516  30813
 [31]  31099  31367  31679  31873  32232  32538  32704  33072  33324  33443
 [41]  33860  34055  34253  34633  34804  35074  35216  35491  35871  35935
 [51]  36030  36443  36743  36898  37120  37382  37726  38077  38307  38581
 [61]  39002  39270  39700  39962  40388  40762  41086  41629  42062  42544
 [71]  43048  43392  44062  44824  45023  45682  46532  47347  47833  48701
 [81]  49612  50423  51694  52637  53635  55243  56340  58304  59709  62162
 [91]  64207  66273  70073  74617  79917  86745  94950 105680 128158 145937
> plot(quality, filesize, xlab = 'JPEG Quality', ylab = 'File size')
> 
Save workspace image? [y/n/c]: y

Looking at the actual generated thumbnails, somewhere after quality > 60 I stopped noticing the difference between increasing quality factors. Settling with a default quality of 75 seems to be good enough: the resulting static HTML album generated from a folder with 82 pictures dropped from 12MB with the default ImageMagick quality factor to 6MB with quality 75, with very little perceivable image quality loss.

07/08/2011 02:39

03/08/2011

Thadeu Penna

Embutindo vídeos no LaTeX Beamer

Eu uso o pacote Beamer LaTeX para as minhas gloriosas Apresentações. A principal vantagem é poder utilizar o que já escrevemos para os artigos, etc. Dá até para montar o poster para apresentações orais, usando o beamerposter (veja este (5.5Mb) como exemplo). Um problema com o Beamer era a inclusão de vídeos que gerassem um pdf que fucionasse em qualquer plataforma (que é a proposta original do TeX/LaTeX). Eu usava o movie para chamar um programa que tocasse o vídeo. O problema é que se a pessoa que tivesse o pdf para a apresentação não tivesse o programa, o vídeo não aparecia. O código abaixo, por exemplo, funciona no evince, mas lançando um tocador de vídeo externo e funciona no Acrobat para windows, mas não no Linux:

\documentclass[12pt,landscape]{article}
\usepackage{movie15}
\usepackage{hyperref}
\begin{document}
\begin{figure}[h!]
\includemovie[
  poster=figura.jpg,
  text={\Large\bf Clique para iniciar \hspace*{400pt}}
]{400pt}{400pt}{vídeo.swf}
\end{figure}
\end{document}
Se você vai usar Windows e levar seu computador com a sua apresentação, pode parar por aqui, se preferir.

Uma saída intermediária é usar o animate. Este pacote permite mostrar sequências de imagens como se fosse uma animação. Para isto você deve ter os arquivos das figuras nomeadas em sequência (você pode usar o mplayer ou o ffmpeg para retirar os frames dos vídeos). Um exemplo está neste pdf (5.Mb) da minha apresentação no I Workshop de Física do Sul Fluminense. Veja as sinapses piscando na terceira página. Os trechos relevantes do arquivo são estes:

\documentclass[hyperref={pdfpagelabels=false},xcolor=dvipsnames]{beamer}
% dica extra para colocar a apresentação em widescreen.
\usepackage[orientation=landscape,size=custom,width=16,height=9,scale=0.5,debug]{beamerposter} 
% o animate é que faz todo o serviço
\usepackage{animate} 
...
\begin{document}
...
\animategraphics[loop,autoplay,width=\textwidth]{6}{neurons-}{0}{3}
...
\end{document}
No caso, o primeiro argumento em colchetes é o framerate (6 por segundo) mas não funciona muito bem com framerates altos e fullscreen (pode ficar lento em um netbook, por exemplo). Usei quatro figuras neurons-0 até neurons-3.jpg. Fica legal para pequenas animações mas é impraticável para vídeos.

A saída mais legal que achei é o flashmovie. O pacote tem uns probleminhas com o Beamer mas que é totalmente contornável (veja a linha \pdfminorversion no exemplo abaixo). Ele aceita flv, swf e mp4. O modo swf é direto mas você não tem controle sobre o filme (pausa, avançar, etc.). Seria assim

\pdfminorversion=7 
\documentclass{beamer}
\usepackage{flashmovie}
\begin{document}
  \begin{frame}
    \begin{center}
       \flashmovie[width=10cm]{saturn5.swf} 
    \end{center}
  \end{frame}
\end{document}
Se quiser testar, use o arquivo de vídeo da NASA saturn5.swf (1.3Mb). Para ter os controles, pode-se usar
  \flashmovie[width=5cm,engine=flv-player,auto=0]{saturn5.swf}
O pacote tem o player que deve ser colocado no mesmo diretório onde você vai compilar. O player e o vídeo são embutidos no pdf. Se quiser ver como ficou, baixe o pdf aqui. Como eu determinei que as dimensões do vídeo ficassem menores que o original, o pdf é menor que o arquivo mp4 original! É possível ainda usar o jw-player ao invés do flv-player. Segundo o autor, este método costuma travar o Acrobat se você tentar um reload (eu confirmei isto). Ah, a nota triste é que você só pode usar o Acrobat 9 (e mais recentes) para isto. O flashmovie não funciona com o evince. Eu também não consegui centralizar o vídeo como flv-player.

Para converter os filmes para swf , eu usei o ffmpeg

ffmpeg -i saturn5.avi -an saturn5.swf
Agora não há mais razão para não usar o beamer.

Read or add comments to this article

por tjpp em 03/08/2011 18:40

28/07/2011

João Eriberto Mota Filho

HLBR: Call for new Developers

HLBR is a Network-Based Intrusion Prevention System (IPS). It gathers frames from link layer and inspects the payload contents in search for attack and misuse patterns. Its official site is http://hlbr.sf.net.

Nowadays, HLBR Project has demands for fixing bugs and developing new features. Thus, we are looking for new developers to join the team. The basic requirements for joining HLBR’s developers team is C language and TCP/IP knowledge. If you are interest, please contact eriberto at eriberto.pro.br (project leader) AND pedroarthur.jedi at gmail.com (development leader), and use “HLBR – reply to call” as subject of your mail message.

Thanks in advance!

——–

In Brazilian Portuguese:

HLBR: chamada de novos desenvolvedores

O HLBR é um Sistema de Detecção de Intrusão (IPS) baseado em rede. Ele captura frames a partir da camada de enlace e inspeciona o conteúdo do payload, buscando por ataques e padrões indevidos. O site oficial é http://hlbr.sf.net.

Atualmente, o Projeto HLBR necessita corrigir bugs e desenvolver novas funcionalidades. Assim, precisamos de dois novos desenvolvedores na equipe. O requisito básico para integrar a equipe de desenvolvedores é conhecimentos sobre a linguagem C e redes TCP/IP. Se você estiver interessado, por favor contacte eriberto at eriberto.pro.br (líder de projeto) E pedroarthur.jedi at gmail.com (líder de desenvolvimento), usando “HLBR – reply to call” como assunto da mensagem de email.

Agradecemos antecipadamente!

por Eriberto em 28/07/2011 14:52

25/07/2011

João Eriberto Mota Filho

Scaneando documentos diretamente para pendrive na impressora Sharp MX-2600n (e similares)

O problema

No meu trabalho há uma impressora Sharp MX-2600n, que faz um pouco de tudo. Ela tem uma entrada USB frontal. Eu tinha uma enorme certeza de que seria possível utilizar o seu scanner e gravar o resultado dentro de um pendrive. Assim, depois de uns 20 minutinhos, cheguei ao sucesso.

O objetivo deste post é ensinar como repetir esse feito de forma simples.

Os procedimentos

  • Inicialmente, coloque o documento a ser scaneado na impressora. Caso ele seja muito pequeno, coloque uma folha A4 por cima para forçar uma autodetecção de formato de papel.
  • Insira o pendrive na impressora (parte frontal).
  • Selecione a opção ENVIAR IMAGEM no painel. Veja a figura a seguir:

  • Na tela seguinte, selecione Digi. Mem. USB e, depois, clique em Nome Arquivo.
  • Digite o nome do arquivo que será gerado e salvo no pendrive e pressione OK. Você retornará à tela Digi. Mem. USB.
  • Se for o caso, ajuste as configurações. Exemplo: você pode alterar o formato de arquivo de PDF para TIFF.
  • Pressione o botão de impressão colorida com a letra I ao centro, visto na figura a seguir:

  • Siga os procedimentos existentes na tela.
  • Remova o pendrive.

por Eriberto em 25/07/2011 20:27

23/07/2011

Eduardo Marcel Macan

Apresentação MongoSP: Geospatial Indexes

O primeiro evento de Mongo na América Latina foi excelente! Com participação do criador da técnica de GeoHashing, Gustavo Niemeyer e de dois caras da 10Gen, responsáveis pela implementação dos índices geográficos do MongoDB. Mesmo após dar tantas palestras por aí, eu fiquei nervoso pacas por causa disso :)

Seguem slides:


por Eduardo Maçan em 23/07/2011 13:09

Antonio Terceiro

Hello, Planet Debian

Hello, world! So, now this blog is being syndicated on Planet Debian, and I decided to write something to introduce myself.

I was born in Salvador, Bahia, Brazil. I am married to Josy, a wonderful person; we do not have any kids yet, but anyone can notice we both discretely drooling when close to small children.

I have a passion for building things, and making things work. Programming happens to be the better building toy that someone already invented.

I became am official Debian Developer a little more than one week ago, but I have been working in the project for some time already. In the very beginning I was involved with the Perl group, but now almost all my work is in the Ruby team.

I am a PhD student at Federal University of Bahia under supervision of professor Christina Chavez. My research involves three topics I am just fascinated about: Free ("and Open Source") Software, Software Design and Empirical Software Engineering. I am investigating whether it is possible to explain the variation in Structural Complexity by analyzing developer attributes. I want to answer questions such as "do developers with more experience in a project produce more complex code?", or "do developers that focus on a single part of the project produce more complex code than developers who work on the entire project?".

As part of my PhD research I have been working on analizo, a multi-language source code analysis and visualization toolkit. I plan to write specifically about it in a later opportunity.

My other job is running my own company, Colivre, together with several other great people. Colivre is a cooperative, which basically means that everyone who works there is also an owner of the company. We provide web solutions, in special social networking environments, social media websites and the like. Working on (and with) free software is our premise at Colivre, and most of our work involves either Noosfero or Foswiki.

Right now I am taking some time off from Colivre to be able to concentrate on (and finish!) my PhD. Until late September I live at the beautiful Vancouver, BC, Canada, where I am currenly a visiting reasearcher at the Software Practices Lab at UBC under supervision of professor Gail Murphy.

So that's it, I hope to post interesting stuff here and to get your feedback whenever you find it's worth. I also maintain a microblog at identi.ca, where you'll find shorter (and more frequent) updates.

23/07/2011 02:58

17/07/2011

Gustavo Noronha Silva

A incrível estória do plano que nasceu morto – Parte 1

Das coisas engraçadas que eu ouvi enquanto assistia o streaming do segundo encontro dos blogueiros progressistas nenhuma superou a resposta do Paulo Bernardo quando questionado sobre por que não se colocava banda larga sob regime público. O Ministro argumentou que o Estado não tinha dinheiro para fazer tudo sozinho, então que precisaria da ajuda das empresas privadas.

Ou o Ministro achou que o questionador não sabia do que estava falando ou não sabia ele mesmo. A diferença entre regime público e regime privado não tem nada a ver com quem faz o investimento ou presta o serviço, mas tem muito a ver com a forma que esse serviço é prestado, que metas são estabelecidas e que recursos podem ser utilizados. Diz a Lei Geral de Telecomunicações:

Art. 63. Quanto ao regime jurídico de sua prestação, os serviços de telecomunicações classificam-se em públicos e privados.

Parágrafo único. Serviço de telecomunicações em regime público é o prestado mediante concessão ou permissão, com atribuição a sua prestadora de obrigações de universalização e de continuidade.

Art. 64. Comportarão prestação no regime público as modalidades de serviço de telecomunicações de interesse coletivo, cuja existência, universalização e continuidade a própria União comprometa-se a assegurar.

Parágrafo único. Incluem-se neste caso as diversas modalidades do serviço telefônico fixo comutado, de qualquer âmbito, destinado ao uso do público em geral.

http://www.planalto.gov.br/CCIVIL_03/leis/L9472.htm

Ou seja, se o serviço está em regime público o Estado está comprometido com assegurar sua universalização e a empresa é concessionária do serviço e tem que se pautar pela regulação do Estado no setor. Não só isso, mas poderá dispor dos recursos do FUST, como já bem lembrou João Brant. Hoje somente a telefonia fixa está em regime público, portanto só as empresas que prestam serviços de telefonia são consideradas concessionárias de serviço público, mas a prestação de serviço de banda larga não.

Então quando o participante perguntou ao Ministro: “por que não colocar banda larga em regime público?” ele não estava querendo saber por que o Estado não atuava como (único?) empresário do setor, mas sim se o governo teria bolas pra chamar pra si os deveres e a queda de braço que transformar a banda larga em serviço público concedido trariam. A própria LGT fala o que é preciso pra isso:

Art. 18. Cabe ao Poder Executivo, observadas as disposições desta Lei, por meio de decreto:

I – instituir ou eliminar a prestação de modalidade de serviço no regime público, concomitantemente ou não com sua prestação no regime privado;

http://www.planalto.gov.br/CCIVIL_03/leis/L9472.htm

Pelo visto o governo não tem bolas pra isso, não. Aí com certeza vai vir alguém e falar de algum impedimentozinho como “a iniciativa tem que partir da ANATEL”. Todos os conselheiros da ANATEL hoje foram indicados por Lula. Além disso, se julgarem necessárias mudanças na lei, ora, façam! Não teve muita dificuldade em mudar o Plano Geral de Outorgas para permitir a fusão da Oi com a BrT, teve?

Se você é petista daqueles que gritaram ForaFHC e adoram colocar nele a etiqueta de neoliberal é um bom momento para se deliciar com as ironias de a ação do governo petista estar se mostrando menos alinhada com um Estado regulador e garantidor da universalização, mesmo que uma lei aprovada por FHC dê a ele os mecanismos para isso.

por kov em 17/07/2011 19:09

20/06/2011

Thadeu Penna

Drauzio Varela e "medicina natural"

“Invejo os homens que consertam o carro que dirigem. Quebrou na estrada, eles pegam as ferramentas, abrem o capô e reparam o defeito. Para resolver uma emergência dessas é necessário conhecer mecânica, entender como as peças foram engendradas e saber repará-las. Nessa hora, quem acreditaria em medidas alternativas para ativar a energia vital do motor com gotinhas pingadas no tanque de gasolina de duas em duas horas? Alguém faria o carro andar apenas com a força do pensamento positivo?

O organismo humano é a estrutura mais complexa que conhecemos -alguns o consideram mais complexo do que o próprio Universo. Estudar os mecanismos responsáveis pela circulação e oxigenação do sangue, pela digestão dos nutrientes, ter uma ideia de como ocorrem as principais reações metabólicas e aprender que nosso corpo é uma máquina que se aperfeiçoa com o movimento é a melhor forma de evitar que ele nos deixe no meio da estrada.

Num mundo cada vez mais dominado pela tecnologia, o ensino de ciências deve começar na pré-escola. Aprendendo desde cedo, as crianças incorporarão o pensamento científico à rotina de suas vidas e descobrirão belezas e mistérios inacessíveis aos que desconhecem os princípios segundo os quais a natureza se organizou.

Eu achei fantástico esta declaração. Estou desenvolvendo um projeto para ensino de Ciências em uma escola pública do interior do estado. Prometo logo postar os primeiros resultados. Já comprei um telescópio. Eu me senti recompensado quando uma aluna viu a Lua, Saturno e Acrux e dançou “Estrela, eu vi você!!”.

Read or add comments to this article

por tjpp em 20/06/2011 17:31

18/06/2011

Gustavo Franco

Eye-Fi Pro X2 no Debian

Algum leitor tem um sdcard Eye-Fi Pro X2? Dei uma bela pesquisada e não encontrei nada melhor que o iii para fazer a configuração inicial no Debian. Nada na nossa vasta seleção de pacotes também. Se o iii funcionar vou criar um pacote. :)

por Gustavo Franco (noreply@blogger.com) em 18/06/2011 17:42

13/06/2011

João Eriberto Mota Filho

HP Mini 110-3150br (XR155LA) com Debian Squeeze amd64


Linux On Laptops

Há muito não publico nada nos meus blogs. Estou por conta da 3ª edição do meu livro Descobrindo o Linux (detalhes aqui). Mas esta semana recebi o meu netbook HP Mini 110-3150br, comprado via Internet. O seu site oficial na HP pode ser acessado por aqui.

A sua descrição básica é a seguinte: processador Intel Atom N455 de 1.66 GHz com 512 KB de cache L2. Memória RAM Samsung DDR2 de 2GB por 667 MHz. HD Seagate de 320 GB por 5.400 RPM. Webcam de 1.3 megapixels. Tela LED 10″. Modem 3G HP hs2320 de 480 Mb/s.  Ethernet Realtek 8169 10/100, WiFi Broadcom 4313 b/g/n e bluetooth Broadcom 2070. Leitor de cartões SD/MMC. Bateria de 6 células. Windows 7 Starter. Office 2010 Starter.

Clique em uma das opções a seguir para obter descrições de hardware:

  • Comando lscpu. Clique aqui.
  • Resumo do comando lspci. Clique aqui.
  • Resumo do comando lsusb. Clique aqui.
  • Resumo do comando hwinfo. Clique aqui.
  • Resumo do comando lshw. Clique aqui.
  • Relatório completo do comando lspci. Clique aqui.
  • Relatório completo do comando lsusb. Clique aqui.
  • Relatório completo do comando hwinfo. Clique aqui.
  • Relatório completo do comando lshw. Clique aqui.

Prós e contras

Na minha opinião, apesar de estar operando o aparelho há apenas uma semana, o netbook 3150br possui muitos mais prós do que contras.

Prós:

  • Leve e pequeno.
  • Teclado com teclas relativamente grandes e nos lugares certos.
  • Diversas indicações visuais com micro LEDs.
  • Design muito bonito.
  • Boa velocidade.
  • Interface WiFi 802.11 b/g/n.
  • Bateria de longa duração.
  • Webcam bem clara e nítida.
  • Não esquenta.
  • Possui modem 3G. Basta inserir um cartão SIM. Testei com wvdial e TIM pré. Perfeito.
  • O controle de brilho de tela e todas as funcionalidades de economia de energia funcionam bem via Linux.
  • Vem com Windows 7 Starter e Office 10 Starter.
  • A maioria das teclas de função, como brilho de tela e ajuste de volume funcionam perfeitamente no Linux.
  • Tampa inferior com remoção fácil, via trava, sem parafusos. Com isso, acessamos facilmente HD, memória, cooler, bateria do CMOS e licença do Windows, que fica protegida. Veja a figura a seguir.

Parte inferior do netbook HP Mini 110-3150br sem a tampa (remoção por trava). Clique para ampliar.

Contras:

  • Interface ethernet não é gigabit.
  • Funções, como brilho de tela e controle do alto falante são as atividades principais das teclas superiores. Assim, F1, F2 … F12, viraram funções que só podem ser acessadas se pressionadas em conjunto com a tecla Fn. Isso dificulta vida de quem usa Linux.
  • Não possui as teclas Home, End, PgUp e PgDn.
  • A porta ethernet possui uma tampa meio chata de ser aberta e atrapalha a colocação do conector RJ-45. Como uso muito cabo de rede em salas de aula, tive que arrancar tal tampa (puxando) para não me incomodar.

Problemas e soluções na instalação do Debian Squeeze

A maioria dos recursos, incluindo a webcam, funcionaram perfeitamente logo após a instalação. No entanto, alguns problemas surgiram e configurações especiais tiveram que ser feitas. Mas nada muito complicado.

Criação dos discos de recuperação

Utilizei um DVD externo para gerar os discos de recuperação do computador (basicamente o Windows 7). Isso é a primeira coisa a se fazer. Funcionou perfeitamente. No entanto, em um modelo anterior, o 3120br (tive a oportunidade de manusear rapidamente), somente a porta USB do lado esquerdo do netbook permitiu a correta geração dos DVDs. Fica a dica caso alguém precise. Talvez uma atualização de BIOS resolva o problema do 3120br.

Touchpad

O clique via toque na área de contato do touchpad não funcionou logo após a instalação. Isso é normal em notebooks. Assim, para fazer a configuração, inicialmente, saia totalmente do ambiente gráfico. Se estiver usando KDM, por exemplo, execute em um terminal shell (como root):

# /etc/init.d/kdm stop

A seguir, como root, crie um arquivo de configuração do X.Org com o comando:

# X -configure

O arquivo será criado em /root com o nome xorg.conf.new. Copie esse arquivo para /etc/X11, alterando o nome para xorg.conf. Utilize o comando:

# cp /root/xorg.conf.new /etc/X11/xorg.conf

A seguir, edite o arquivo /etc/X11/xorg.conf. Haverá um trecho assim:

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/input/mice"
        Option      "ZAxisMapping" "4 5 6 7"
EndSection

Altere para:

Section "InputDevice"
        Identifier "Mouse0"
        Driver "synaptics"
        Option "EmulateTwoFingerMinZ" "0"
        Option "TapButton1" "1"
        Option "TapButton2" "3"
        Option "VertEdgeScroll" "on"
        Option "VertScrollDelta" "250"
EndSection

Com isso, o touchpad funcionará normalmente. A não ser que você utilize Gnome. Nesse caso, a configuração deverá ser feita dentro do próprio Gnome.

Wireless

O adaptador wireless é um Broadcom 4313. Então, para funcionar, necessita de firmware específico. Assim, adicione a seção nonfree nos seus repositórios no arquivo /etc/apt/sources.list. Exemplo:

deb http://ftp.us.debian.org/debian/ squeeze main non-free
deb http://security.debian.org/ squeeze/updates main non-free
deb http://ftp.us.debian.org/debian/ squeeze-updates main non-free

Atualize a lista de pacotes:

# apt-get update

Por fim, instale o firmware:

# apt-get install firmware-brcm80211

Com isso, o adaptador wireless funcionará normalmente. Particularmente, uso o NetworkManager no KDE para gerenciar as conexões wireless.

Não use, em hipótese alguma, a tecla de função referente à ativação/desativação do wireless. Ela não é compatível com o firmware e provocará um travamento do sistema.

Som

A parte de configuração do som foi um pouco estranha. Tudo parecia normal e não havia erros. Comandos como o play (# apt-get install sox) mostravam o andamento da execução de um MP3 mas o som não saía. Até o kmix funcionava corretamente. Removi o pulseaudio e instalei o alsa-base. Nada ainda. Então, resolvi instalar um kernel mais novo a partir do backports. Eis a surpresa: surgiu um controle de volume do alto-falante que estava no mínimo. Ou seja: há um controle da placa de som e um outro do alto-falante (estranho isso).  Assim, adicione o repositório backports no arquivo /etc/apt/sources.list, inserindo a seguinte linha no final do mesmo:

deb http://backports.debian.org/debian-backports squeeze-backports main

Atualize a lista de pacotes:

# apt-get update

Verifique o kernel mais atualizado com o comando # apt-cache search ^linux-image. No meu caso o melhor resultado foi linux-image-2.6.38-bpo.2-amd64. Assim sendo, instale o kernel que você encontrou. Exemplo:

# apt-get install -t squeeze-backports linux-image-2.6.38-bpo.2-amd64

A partir de agora haverá o controle de volume do alto-falante. Você pode utilizar o alsamix para regular o volume, caso esteja utilizando o ALSA, como eu. Se quiser utilizar o kmix, vá até o menu Configurações > Configurar canais e arraste todos os canais disponíveis para o quadro canais visíveis.

No fim, fiz um teste com o pulseaudio e também funcionou. Mas se desejar adotar o ALSA como eu, faça:

# apt-get purge pulseaudio
# apt-get --purge autoremove
# apt-get install alsa-base

Teclas PgUp e PgDw

As teclas Home, End, PgUp e PgDw não existem nos HP minis. Algumas aplicações aceitam os conjuntos “Shift Space” e “Fn Space” para PgUp e PgDw, respectivamente. Não encontrei solução simples para Home e End. Talvez um remapeamento de teclado seja uma solução para fazer algo do tipo “Alt seta esquerda” = Home. Mas vou pensar nisso depois. Uma medida paliativa é deslizar o dedo verticalmente no canto direito da área de toque do touchpad. Isso provocará um deslizamento rápido das páginas de vídeo.

Modem 3G

O modem 3G foi reconhecido sem problemas pelo Linux. Gosto de usar o wvdial, em linha de comando, apesar de poder fazer discagens pelo NetworkManager. Prefiro a TIM. Assim, comprei um chip pré-pago por R$ 10,00 no plano Infinity pré. Com isso, pagarei apenas R$ 0,50 por dia de uso da Internet. Ótimo para mim que uso a Internet, via 3G no netbook, esporadicamente (somente em aeroportos etc). Como uma recarga de R$ 17,00, devo conseguir passar uns 6 meses com Internet. Na maior parte do tempo usarei wireless ou cabo de rede. O cartão SIM é colocado dentro do compartimento da bateria. Veja a figura a seguir.

Cartão SIM inserido em local específico dentro do compartimento da bateria.

Para configurar o modem 3G com wvdial, execute os comandos:

# apt-get install wvdial
# wvdialconf

O último comando criará o arquivo de configuração /etc/wvdial.conf. Dentro desse arquivo você deverá inserir os dados da sua operadora (que poderão ser obtidos junto à mesma via telefone, site na Internet ou Google). No caso da TIM, insira como últimas linhas:

Phone = *99#
Username = ''
Password = ''

Note que nas duas últimas linhas foram utilizados caracteres “apóstrofo” seguidos, sem espaços entre os mesmos. A seguir, teste a sua conexão com o comando # wvdial. Deverá aparecer algo similar a isto:

--> Starting pppd at Mon Jun 13 10:14:33 2011
--> Pid of pppd: 1698
--> Using interface ppp0
--> pppd: [0b][7f]
--> pppd: [0b][7f]
--> pppd: [0b][7f]
--> pppd: [0b][7f]
--> pppd: [0b][7f]
--> pppd: [0b][7f]
--> local  IP address 186.252.55.114
--> pppd: [0b][7f]
--> remote IP address 10.64.64.64
--> pppd: [0b][7f]
--> primary   DNS address 189.40.224.5
--> pppd: [0b][7f]
--> secondary DNS address 189.40.226.80
--> pppd: [0b][7f]

Bluetooth

Por ser usuário de KDE, instalei o bluedevil para gerenciar o bluetooth e o pacote de firmwares para bluetooth. Se quiser fazer o mesmo, execute o comando:

# apt-get install bluedevil bluez-firmware

A seguir, no menu do KDE, procure em Internet por bluedevil. Execute-o. Surgirá um ícone relativo ao mesmo no systray. Agora, basta parear o netbook com outros aparelhos que possuam bluetooth.

Mas por que comprei esse HP?

Bem, esta é uma história longa e triste. Em fevereiro de 2010 caí na besteira de comprar um netbook Philco PHN-10108 que estava na promoção nas Lojas Americanas. Eu queria mesmo era um netbook Sony Vaio, que custava cerca de R$ 2.000,00. O Philco saiu por R$ 1.299,00. No entanto, logo nos primeiros dias já notei alguns problemas. Os principais: a bateria descarregava de 10 a 15% ao dia, mesmo com o netbook desligado e a memória apresentava constantes maus contatos, me obrigando a ir, constantemente, à assistência técnica para limpá-la e reencaixá-la. Foi feita a troca da placa-mãe e da bateria mas nada adiantou. Pude perceber que os aparelhos da atual Philco-Britânia não passam de montagens de peças e placas genéricas chinesas. Bem, entrei no Procon pedindo o dinheiro de volta. Nada. Estou até hoje na justiça. Acho que conseguirei algo em breve, pois o processo está no fim. Nisso, o aparelho ficou comigo mas fora de uso, pois não me atende. Assim, em agosto de 2010 comprei o tão sonhado Sony Vaio VPC120AB, a R$ 1899,00. Em fevereiro deste ano (2011) o teclado dele enlouqueceu. Foi para a assistência técnica. Mais de 2 meses depois ainda não havia solução. Pedi o dinheiro de volta via Procon. Desta vez foi rápido. A Sony não faz objeções. Comecei uma pesquisa de mercado, via Busca Pé e outros, para a compra de um novo aparelho. Poderia ser Sony mesmo. Qual foi a minha surpresa quando notei que os netbooks Sony Vaio estavam sumindo do mercado? Impressionante isso. Estava tudo explicado. Parece que algo não estava dando certo.

Nas minhas pesquisas procurei pelas melhores marcas: Sony, HP, Lenovo (IBM), Dell e Toshiba. NADA de segunda linha, tipo Asus e Acer (desculpe mas, mesmo funcionando bem, isso é o resto nos USA). LG e Samsung, até onde sei, também não são boas marcas para esse tipo de aparelho. Conclusão: pouquíssimos modelos Sony, Lenovo e Dell (vejam que estou falando de netbook e não notebook). Nada de Toshiba. Alguns netbooks bem estranhos, feios. Uma vasta variedade de HP. Isso me atraiu. Já tive notebook HP e gostei. Comprei o 3150br por causa do HD de 320 GB, da bateria de 6 células e do modem 3G. Até agora não me arrependo. E ele não esquenta quase nada. Os notebooks HP esquentavam muito. Comprei com garantia estendida, num total de 3 anos. Ainda aproveitei uma promoção das Casas Bahia via Internet. Saiu tudo (com entrega) por cerca de R$ 1.150,00.

Bem, boa sorte para mim agora!

Detalhes gerais sobre notebooks e netbooks

Ligo ou não na energia elétrica com bateria?

O bom netbook (notebook), quando ligado na tomada, não usa a bateria. Se a bateria não estiver com carga plena, será carregada e, a seguir, a energia para ela enviada será cortada. Neste momento, por exemplo, estou com o netbook ligado na tomada há mais de 3 horas. Quando liguei, a bateria estava totalmente carregada. Colocando a mão na bateria, a mesma está gelada. Isso é sinal de que a mesma não está sendo utilizada (que é o correto em um projeto eletro-eletrônico de notebook/netbook). Assim sendo, nestas condições, usar a energia elétrica (tomada) é sinônimo de evitar desgaste prematuro da bateria, pois a mesma suporta um número limitado de recargas. Ou seja: o HP Mini, mesmo com a bateria conectada, deve, sempre que possível, ser utilizado na energia elétrica. E bateria de Litium não vicia! (mas desgasta se for muito utilizada)

A forma correta de abrir a tela do netbook (ou notebook)

Você sabia que existe uma forma correta de abrir a tela do note? Sabia que se não o fizer corretamente, poderá, com o tempo, rachar a tela ou arrebentar as dobradiças? Então veja como proceder, lendo o final deste artigo: http://bit.ly/dv2120br_lenny.

Conclusão

Bem, apesar de só ter passado uma semana, estou satisfeito com a compra. Uma máquina bonita, rápida e leve. Preço acessível. Creio que este será o meu netbook por um longo tempo.

Caso surjam novidades, farei adendos a este post. Enjoy!

por Eriberto em 13/06/2011 18:51

09/06/2011

Gustavo Noronha Silva

PNBL: o governo devia começar por fazer o dever de casa

Originalmente publicado no Trezentos

O papel do Estado

O Brasil tem um fenômeno interessante. Nós tendemos a transformar qualquer discussão a respeito de uma política ou prática específica em discussão genérica a respeito de conceitos mais gerais, filosóficos, acadêmicos. Uma discussão a respeito de como avançar na disponibilidade, preço e qualidade da Internet no país acaba se tornando uma discussão a respeito do papel do Estado e não faltam teorias conspiratórias e pré-concepções a respeito dos modelos que podem ser adotados. Normalmente os problemas mais mundanos e reais, como o governo sendo simplesmente incompetente para cumprir qualquer que seja a escolha ficam de fora. Para evitar essa discussão cito a lei 9.472, de 1997, que organiza os serviços de telecomunicação e cria a ANATEL e que usarei como ponto de partida da minha argumentação:

Art. 2° O Poder Público tem o dever de:

I – garantir, a toda a população, o acesso às telecomunicações, a tarifas e preços razoáveis, em condições adequadas;

II – estimular a expansão do uso de redes e serviços de telecomunicações pelos serviços de interesse público em benefício da população brasileira;

III – adotar medidas que promovam a competição e a diversidade dos serviços, incrementem sua oferta e propiciem padrões de qualidade compatíveis com a exigência dos usuários;

IV – fortalecer o papel regulador do Estado;

V – criar oportunidades de investimento e estimular o desenvolvimento tecnológico e industrial, em ambiente competitivo;

VI – criar condições para que o desenvolvimento do setor seja harmônico com as metas de desenvolvimento social do País.

O arcabouço jurídico das telecomunicações no Brasil

É do interesse do país que haja Internet de alta velocidade a preço baixo e disponível para todos os brasileiros. O Estado brasileiro decidiu, na década de 1990, que o sistema de telecomunicações do país, até então um monopólio estatal, deveria ser concedido à iniciativa privada para acelerar investimentos e aumentar o alcance do serviço. Sem entrar no mérito da concessão, que mereceria uma discussão separada, vieram com ela algumas mudanças institucionais: a criação de uma agência reguladora, a ANATEL, pela lei 9.472, já citada acima, a criação, no ano 2000, de um fundo para universalização, o FUST, Fundo de Universalização dos Serviços de Telecomunicação, pela lei 9.998 e do FUNTTEL, Fundo para o Desenvolvimento Tecnológico das Telecomunicações, pela lei 10.052, também de 2000.

A ANATEL ficou responsável por fazer a fiscalização das empresas, garantindo que elas cumprissem suas metas de universalização, por regulamentar o setor e por cuidar dos leilões de concessões a novos serviços de telecomunicações que aparecessem conforme a tecnologia se desenvolvesse. Os fundos foram criados para garantir que existiria financiamento privado para que as empresas atendessem os setores menos lucrativos e comercialmente interessantes. Financiamento privado porque o dinheiro que alimenta os fundos vem da receita bruta das concessionárias de telefonia.

A lei 9.998 estabelece que os recursos do FUST deveriam ser usados em “consonância com plano geral de metas para universalização de serviço de telecomunicações ou suas ampliações [...]“. Pela sua descrição o FUST soa como uma boa solução para investimentos em banda larga, mas há quem diga (erroneamente, na minha opinião) que há problemas legais que impediriam esse uso. Esse tema já foi bem discutido no Trezentos pelo colega João Brant, portanto não vou aprofundar muito.

Um primeiro passo em direção a uma melhor Internet para os brasileiros

O Plano Nacional de Banda Larga é uma iniciativa do Governo Federal que pretende levar, com uma rede operada por uma estatal, financiada inicialmente com recursos do tesouro nacional, Internet barata para lugares em que a iniciativa privada não chega. Há também, claramente, a intenção de criar competição no mercado para fazer com que as operadoras privadas baixem seus preços. Eu particularmente acho a ideia interessante, mas acredito que antes de tentar vôos mais longos como esse o Governo precisava começar por fazer a lição de casa com o que já existe.

O descaso com a fiscalização, com os bens públicos e com o FUST

Apesar de o dever do Poder Público ser, como diz a lei 9.472, fortalecer o papel regulador do Estado, o que se viu nos últimos anos foi omissão e descaso com o setor de telecomunicações (e com alguns outros, diga-se). A ANATEL, que devia fiscalizar o setor está há anos e anos com grande parte do seu orçamento contingenciado, impedindo que a agência exerça seu papel. Além de falta de orçamento há também descaso com os bens públicos. As concessionárias tem em sua posse diversos bens chamados “reversíveis”, que devem voltar ao Estado ao final da concessão, que se dará em 2025. É dever da ANATEL acompanhar e aprovar qualquer tipo de transação com esses bens, mas as empresas tem feito o que bem entendem e a ANATEL sequer tem uma lista dos bens considerados reversíveis. Finalmente a ANATEL reconheceu o problema e avisou que vai aplicar multa. A pergunta que fica é: a multa vai ser paga mesmo?

Digo isso porque além de fazer o que bem entendem com os bens públicos, as concessionárias também não tem se dado ao trabalho de pagar as multas que lhes são aplicadas. Esse não é um problema exclusivo do setor de comunicações, diga-se de passagem: segundo estudo do TCU que infelizmente só começou em 2008, de todas as multas aplicadas de 2008 a 2010, só 4,7% foram recolhidas. Era de se esperar que as entidades tivessem entrado na justiça para obrigar as empresas a pagarem, não é? Mas não. Incluindo as cobranças que estão na justiça chegamos a míseros 5,6%.

Com a palavra o TCU:

A reduzida arrecadação de multas afeta de forma significativa a credibilidade do poder sancionador do Estado, exigindo que providências sejam adotadas para que as cobranças administrativa e judicial sejam realizadas de forma mais tempestiva e eficaz.

Em outras palavras, não há incentivo para as empresas agirem de forma responsável e cumprirem suas obrigações, já que mesmo que sejam multadas não precisam pagar e está tudo bem, não haverá sanções. Não é de assustar que bueiros continuem explodindo na cidade do Rio de Janeiro e que metas de universalização estipuladas não sejam cumpridas pelas teles, não é? Metas de universalização que, diga-se de passagem, a ANATEL não parece muito empenhada em defender quando cria novos planos, retirando das metas pontos já estabelecidos anteriormente em troca de benefícios duvidosos para os interesses do país

A falta de concorrência

Existe uma tendência a acreditar que falta de concorrência faz com que os serviços fiquem piores e mais caros. Faz sentido: se você faz questão de ter internet e só tem uma escolha você vai ter que aceitar o que tem. Nas grandes cidades brasileiras hoje há certamente mais de uma opção disponível, mas ainda assim se acredita que a falta de concorrência é um fator importante no geral.

O governo não ajudou muito também nesse quesito. Em 2008 a Brasil Telecom andava mal das pernas e começou um papo de fusão com a Oi. Havia diversas soluções possíveis, inclusive a pulverização das ações dos sócios que não queriam mais participar. Naquele momento, no entanto, uma fusão era uma alternativa que não existia, por ser vedada pelo Plano Geral de Outorgas. O governo federal dizia não comentar o assunto por ser um assunto “privado”, mas não escondia a insatisfação com a pulverização e já começava a falar na importância de ter uma “grande tele nacional”. Pois bem. Acertadas as tratativas entre os acionistas da Oi e da BrT, o governo não demorou em alterar o Plano Geral de Outorgas, permitindo que a fusão acontecesse. A fusão também foi permitida pelo CADE e pela ANATEL e foi financiada com empréstimo subsidiado do BNDES. Belo jeito de incentivar a concorrência, não acha?

Não demorou muito tempo também para o conto da carochinha que era a história da “grande tele nacional” caísse por terra, com o próprio governo brasileiro intermediando a aquisição de um pedaço da Oi pela Portugal Telecom. Me parece que fica claro que o governo é muito bonzinho com aqueles grandes capitalistas que são amigos do rei – isso não é novidade nenhuma, na verdade: o Estado brasileiro é amigo dos grandes historicamente. Triste né? Isso porque eu nem falei ainda de como a Oi ajudou o filho do Lula (um dos que ganhou passaportes especiais e não devolveu até hoje) a enriquecer investindo rios de dinheiro na recém-criada empresa de jogos. O Brasil é realmente o país das oportunidades!

A pura e simples incompetência

Eu costumo brincar que se nós vivessemos no Brasil anunciado nós estaríamos muito bem. Pena que nós vivemos no Brasil real, aquele que acontece de fato, à revelia dos anúncios e promessas de candidatos e governos. Eu não acredito em nada que o governo anuncie, eu espero pra ver. Por quê? Porque algo que é anunciado acontecer de fato é praticamente a excessão. Quando acontece, demora muito mais do que o anunciado. Pra ficar só no PNBL, no meio de 2010 o governo anunciava aos quatro cantos que até o final do ano teria 100 cidades já atendidas pelo PNBL.

Pra quem conhece a lerdeza e a incompetência do governo mesmo para fazer o básico já era bem óbvio na época do anúncio que não passava de um embuste, talvez com a intenção de dar sustância à campanha da candidata da situação, ou talvez fosse só otimismo injustificado mesmo. Eu prefiro não ver malícia no que pode ser visto como pura incompetência, de qualquer forma tenho certeza de que muita gente acreditou no anúncio. Em dezembro a Telebrás fez novo anúncio, como se nada tivesse acontecido, falando que em abril de 2011 seria alcançada a meta das 100 cidades. Eu não sei vocês, mas a mim me parece que já é junho. Foi só em maio que a Telebrás, a Petrobrás e a Eletrobrás conseguiram chegar a um acordo com relação ao uso das fibras das últimas pela primeira. Isso porque são todas estatais, teoricamente controladas pelo poder público. Como se tinha tanto otimismo com o tempo não sei, mas não custa dar a impressão de que o governo é ágil aos mais desavisados, né?

Conclusão

Eu acredito que um Plano Nacional de Banda Larga é de extrema importância para o Brasil. As comunicações são um mercado complexo, oligopolizado, que precisa de investimentos vultuosos e exige interferência do governo para corrigir falhas de mercado e garantir os interesses dos cidadãos brasileiros e do país. Acreditar que o plano vai dar certo são outros quinhentos. Eu gostaria de ver o governo pelo menos cumprir o básico daquilo que já está na lei, que já é interesse do povo brasileiro ao invés de continuar sendo bonzinho com os grandes empresários amigos.

Um primeiro passo para a universalização da banda larga é o governo federal fazer o dever de casa.

por kov em 09/06/2011 00:10

01/06/2011

Éverton M. Arruda Jr. (notrev)

A byte of Python 3 – Livro traduzido para pt-BR

Há algum tempo, o Rodrigo Amaral[0] enviou um e-mail para a lista de discussões brasileira da linguagem Python[1] chamando pessoas para ajudar na tradução de um livro sobre a linguagem[2]. O título do livro é: A byte of Python[3], que havia sido atualizado para a versão 3 do Python.

Algumas pessoas trabalharam na tradução e ela está concluída! Agradecimentos a essas pessoas:

  • Alvaro Netto
  • Daniel Bagatini
  • Daniel Gonçalves
  • David Kwast
  • Emanuel R Woiski
  • Estêvão Valadão
  • Éverton Arruda (eu :) )
  • Lucas Castro

Para saber mais sobre o A Byte of Python, veja o post do Rodrigo Amaral[4]

Links:
[0] http://rodrigoamaral.net/
[1] http://br.groups.yahoo.com/group/python-brasil/
[2] http://swaroopch.com/notes/Python_pt-br:Indice
[3] http://swaroopch.com/notes/Python
[4] http://rodrigoamaral.net/a-byte-of-python/

por Éverton Arruda em 01/06/2011 15:14

13/05/2011

Gustavo Noronha Silva

My experience with GNOME 3 so far

You know, GNOME Shell and I are not really strangers to each other for a long time now. I have been using it almost daily as my main desktop since late 2009, when I started shipping it to Debian experimental. That means that I had ample opportunity to both get used to it and witness the huge improvements it had with every new release.

My general feeling towards GNOME 3 is this: ♥. Yes, I love it! I love the new themes, I love the window borders, I love the top panel, the overview, the dynamic workspaces, I love the Me menu, I love the clock and the calendar, the system indicators with the beautiful symbolic icons, being able to search for applications in such a nice way, the window animations, the multi-screen support, the new nautilus, the dash, looking glass. It’s hard for me to even express how thankful I am and how much admiration I have for the awesome folks who helped bring this to life. Thanks so much!

My GNOME3 desktop

My GNOME 3 desktop

After all this time, there are only two things I can say I dislike about GNOME3, apart from some minor wishlists: the alt-tab behaviour and the message tray. Let me expand on those.

Message Tray

Of the very few things I dislike, there is only 1 I hate and cannot see myself living with: the accordion animation in the message tray. No, really, it’s such a terrible, terrible idea. Every single time I try to use that thing I overshoot while moving the mouse to the left, then overshoot again moving the mouse to the right because the frigging icon has moved. It’s no good knowing that I can click in the text or in the empty area to its right, it feels wrong. It’s terrible that my actual target is moving at all. Every single time I use it is a small frustration for me – it’s as if the message tray was playing games with me, laughing at me for not having good enough mouse pointer driving skills – even more than the infamous sub-menus used to. And I had to go through that penance whenever I wanted to find the person I was chating with to resume the conversation.

I wrote an extension that disables the accordion animation by simply not showing the title at all when you hover the icon, and I patched GNOME Shell’s CSS to make the icons a bit bigger, so that it’s easier for me to hit them with the mouse. It’s clearly not ideal, and you still have to click the various “people” icons to figure out which of your friends who were lazy enough to not add a picture to their IM profiles is that one, but it’s still much better than chasing the (smaller) ones around to figure that out. Perhaps we should have the icons be bigger and always have the title bellow them? I don’t know, I trust the awesome designers who designed the awesomess that’s everywhere else will come up with a great idea.

My Message Tray

My message tray with bigger icons and no accordion animation.

Alt Tab

The number 1 feature of workspaces for me has always been locality – being able to not see all of the other applications and windows that are open elsewhere. This lowers the amount of noise when I’m trying to find something. The overview is very nice in this matter – only windows in the current workspace are shown, and even when you have an extra screen, the windows in there appear in that screen.

The alt-tab behaviour, on the other hand, of showing all windows and apps, even with the separator, bothers me. It’s really useful to have when you want to go to a specific window no matter where it is (I usually use the dash for that, though), but it adds noise when you want to go to a specific window _in this_ workspace, which is the most common use case for my usage. So I copied the alt-tab code over to an extension and modified it so that only windows in the current workspace would be considered.

In addition to that, with the windows in the extra screen always being there no matter what workspace you’re in (which I think is an awesome idea), they are effectively in all workspaces, so they add constant noise even with my extension. It’s also weird to have to look at the main screen to switch to a window in the extra screen. There’s a huge discontinuity. What I would prefer is having alt-tab to follow the mouse regarding screens – only show windows in the extra screen if you hit alt-tab in there, making sure the selector thing appears in there as well.

por kov em 13/05/2011 23:56

11/05/2011

Fernando Ike

Falando bobagens sobre Debian Squeeze

   No último FLISOL-DF 2010 falei umas bobagens sobre o Debian Squeeze. Se alguém quiser conferir e corrigir nos comentários, agradeço. :D

 

 

 

por Fernando Ike em 11/05/2011 02:16

09/05/2011

Gustavo Noronha Silva

“Porque eu aprendi na faculdade que alocar memória é caro”

Mais um exemplo interessante a respeito daquilo que falei num post anterior. Recentemente uma pessoa que começou a trabalhar em um projeto em que eu trabalho há algum tempo me pediu que opinasse a respeito de um patch dele. O patch original dele havia sido revisado por um colega de projeto e além de umas bobagenzinhas de estilo havia uma única preocupação: “por quê você quer fazer essa mudança?” A mudança era bastante simples: evitava que uma variável fosse liberada e realocada em alguns casos específicos.

Nesse projeto uma das coisas que as pessoas menos gostam é de otimizações cegas. Se você faz uma mudança, essa mudança tem chances de introduzir bugs e de aumentar a complexidade do código. Se você vai incorrer nesse risco, é melhor saber que está de fato fazendo alguma diferença. Por isso, otimizações em geral só são bem-vindas se forem acompanhadas de um teste de desempenho que mostra melhoria. Se não melhora nada, pra que mudar? É claro que há excessões à regra e algumas mudanças acabam simplificando o código e são bem-vindas mesmo se o único resultado for não piorar o desempenho.

Quando eu falei que não é legal fazer otimizações cegas ele me disse: “Cega ou não, estou fazendo a mudança porque aprendi na faculdade que alocações são caras, principalmente porque causam chamadas de sistema e por isso devem ser evitadas”. Opa. Alocações de memória de fato envolvem o kernel, mas será que todas as alocações de memória causam chamadas de sistema e a consequente (e cara) troca de contexto para modo kernel?

Fácil testar isso. Se for verdade que cada alocação gera uma chamada de sistema o seguinte programa vai exibir 100 milhões de chamadas de sistema quando o executarmos através do strace:


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
    int i;
    char* data;

    printf("START\n");
    for (i = 0; i < 100000000; i++)
        data = malloc(10);
    printf("END\n");

    return 0;
}

Vejamos:

[...]
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbe62175000
write(1, "START\n", 6START
)                  = 6
brk(0)                                  = 0x1b83000
brk(0x1ba4000)                          = 0x1ba4000
write(1, "END\n", 4END
)                    = 4
exit_group(0)                           = ?

Mas hein? Duas chamadas de sistema entre os dois writes? Pois é. Acontece que o pessoal que escreveu a malloc() já sabe que pedir memória pro kernel é caro e fizeram a libc pré-alocar uma quantidade maior de memória de uma vez e ir entregando pedaços dessa memória conforme a aplicação pede. Isso significa que alocação de memória não é cara? Não. É razoavelmente cara mesmo que não haja troca de contexto, afinal de contas a libc precisa fazer um tanto de trabalho pra saber quanto tem alocado e saber qual o tamanho de cada pedaço de memória que foi alocado para poder liberar depois com free(). Se ao invés de fazer malloc 100 milhões de vezes eu fizer uma só e fizer 100 milhões de memset() o programinha fica 10 vezes mais rápido.

Isso significa que nós devemos evitar qualquer alocação que seja possível evitar? Depende. Pra começo de conversa esse é um teste extremo, não uma carga de trabalho real. Testes são sempre melhores em cargas reais (ou mais parecidas com algo real). Mas principalmente, se for pra piorar muito a legibilidade do código, torná-lo mais complexo, manter memória comprometida por mais tempo que o necessário, é importante que haja um ganho em desempenho para contrabalancear. E esse ganho tem que ser medido, não imaginado =).

por kov em 09/05/2011 23:39

06/05/2011

Gustavo Noronha Silva

Scale Fail

Hoje foi publicado no site Linux Weekly News um artigo de Josh Berkus chamado Scale Fail (part 1) é preciso ser assinante da LWN ou esperar uma semana para que o artigo seja tornado público, mas enquanto isso você pode assistir a uma apresentação que o Josh Berkus fez aqui. O assunto não só é interessante como tem muito a ver com o tema de que eu tratei no meu último post =). O Josh Berkus é um dos principais desenvolvedores do PostgreSQL e também fez uma palestra muito interessante na Linux Foundation Collaboration Summit do ano passado sobre como evitar que seu projeto gere uma comunidade. Recomendo fortemente. Se interessar, também recomendo a palestra seguinte, do Chris DiBona do Android.

por kov em 06/05/2011 22:25

04/05/2011

Gustavo Noronha Silva

Mesa redonda

Anos atrás trabalhei num ambiente em que todos os usuários praticamente conheciam o hostname do servidor de arquivos. Usuários saberem hostnames de servidores de arquivos quase nunca é um bom sinal. Todos reclamavam constantemente do tal servidor, falando sempre de como era lento o acesso aos arquivos. Assim que entrei me informaram das medidas que já haviam sido tomadas: sempre que a reclamação ficava muito grande o administrador de rede colocava uma placa de rede de 100Mbps nova no servidor, mas isso parecia pouco resolver.

Alguns anos mais tarde trabalhei em outro lugar em que havia uma aplicação web acessada por um número bastante grande de usuários de todo o Brasil. Havia um grande porém. Apesar de eu fazer parte da equipe de infraestrutura, todo o ambiente de produção dessa instituição ficava sob a responsabilidade de uma outra empresa. A tal aplicação começou a exibir graves problemas de desempenho e como havia prazos relacionados ao preenchimento de dados na aplicação, cada dia que passava sem que muitos usuários conseguissem fazer qualquer coisa no sistema gerava um aumento considerável na preocupação dos gestores.

Ao contrário do administrador do primeiro lugar a solução da equipe responsável pela TI dessa segunda instituição era menos mão-na-massa: fazíamos reuniões em torno de uma mesa em que eram debatidas as diversas possibilidades e sugeridas possíveis soluções. Alguns achavam que o problema era que a aplicação era lenta, outros que o servidor web estava mal configurado, outros que era falta de banda. Houve quem sugerisse que se substituísse a aplicação web por uma aplicação que rodasse na máquina dos usuários, com acesso direto ao banco de dados, o que supostamente reduziria o uso de banda.

O que há de errado em ambas as histórias? Ninguém nunca havia pensado em coletar dados, medir, saber o que havia de errado para depois atacar o problema. Eles preferiam fazer o pior tipo de tratamento de problemas de desempenho: imaginar qual seria o problema e chutar soluções que pudessem saná-los.

No primeiro caso, logo depois que entramos eu e um colega, a primeira coisa que esse colega fez foi instalar um monitoramento razoavelmente completo de indicadores de desempenho de todo o ambiente de rede com o cacti. Não demorou muito para que nós descobríssemos que o problema do nosso querido servidor de arquivos estava longe de ser banda. A carga de transferência de dados nunca passava dos 30Mbps, o que é muito menos que os 100Mbps que uma única placa de rede comum à época conseguiria de desempenho nominal. Adicionar placas de rede não adiantava absolutamente nada. Nem me lembro exatamente qual era o problema, provavelmente uma soma de fatores que incluíam uma configuração pra lá de absurda do Samba e uma configuração de raid que não fazia sentido, mas isso não vem ao caso. O importante dessa história é que o remédio que estava sendo dado para nosso paciente não ajudava em nada a melhorar a doença que ele tinha ;) .

O segundo caso é um pouco mais triste: depois de algumas semanas tentando brigar com a estrutura burocrática para nos permitir acessar os servidores e saber o que estava acontecendo chegamos a um indicador bastante interessante: a carga média de 1 minuto do servidor de banco de dados estava em torno de 70. A máquina se não me engano tinha somente um processador. A carga média no Linux indica o número de processos que estão na fila para usar o processador ou bloqueados por espera de I/O, em médias de 1, 5 e 15 minutos. Como nós já havíamos investigado (e até tomado o controle) dos servidores de aplicação, nossa investigação sobre qual era o gargalo naquele momento parecia ter chegado a uma conclusão: o banco de dados e/ou o que a aplicação pedia dele precisava de amor e carinho. Acontece que não adiantou nada nós termos descoberto isso: continuamos por mais algumas semanas com todo mundo correndo em círculos como galinhas sem cabeça e sem ninguém com conhecimentos adequados chegar perto de analizar o banco de dados e as consultas feitas, até que finalmente alguém mais de cima decidiu mandar todos os nossos chefes embora e fazer uma intervenção.

Depois de algumas semanas batendo cabeça do mesmo jeito, com mais reuniões inúteis em torno de mesas (mas dessa vez com outros personagens) finalmente conseguimos que alguém com poder de agir nos escutasse e consertasse o banco de dados, embora nossa demanda por melhorias na aplicação (que nossas pesquisas paralelas e sem nenhuma ajuda do DBA indicaram colocar mais peso no banco do que o necessário) tenham caído em ouvidos surdos. As mudanças feitas no banco (otimização de queries, criação de índices e views materializadas, essencialmente, pelo que minha leiguice captou) acabaram dando gás para que o sistema sobrevivesse mais algum tempo sem uma intervenção mais estrutural, que acabamos fazendo quando finalmente assumimos o controle do servidor de banco de dados também, mas essa já é uma história pra outro post de blog.

Problemas de desempenho e otimizações são aquele tipo de coisa em que a pior coisa que você pode fazer é sentar em volta de uma mesa e tentar tirar qual o problema do ar. Agir com soluções de senso comum também só dá certo se você for sortudo. Esse assunto me interessa e por isso estou pensando em fazer alguns posts falando de problemas de desempenho e otimizações prematuras que demonstram que nem sempre o que é intuitivo é a realidade e que mesmo que você tenha uma hipótese bastante plausível é melhor investigar antes de torná-la uma crença. Alguém tem histórias interessantes pra compartilhar? =)

Nota: essa é uma obra de ficção baseada em fatos reais; algumas simplificações foram feitas sem prejuízo do caso em geral

por kov em 04/05/2011 23:40

24/04/2011

Fernando Ike

Cidadão de Código Aberto

AAJU001132

    Desde uma conversar do meio do ano passado com o Fábio Petrillo sobre modo de desenvolvimento (produção), Software Livre/Código Aberto e o que como indivíduo para onde ir, tem modificado um pouco a forma de pensar sobre como a filosofia de Software Livre/Código Aberto é muito mais abragente que nosso dia a dia (tecnológico) nos faz pensar.

    O Creative Commons é uma demonstração de como a filosofia ou ideologia de Software Livre/Código Aberto abrange um pouco mais do que código, compiladores e servidores.

    A cerveja livre (freebeer) também uma outra evidência do Software Livre, mas digamos que ainda não é algo que altere significativamente o modo de produção coletivo, exceto pela embriaguez.. :P

    Estava assistindo algumas apresentações do TED sobre astronomia e abri uma apresentação despretenciosamente, era de um polonês radicado nos EUA de nome Marcin Jakubowski, falando sobre agricultura e Open Source Ecology (algo como Ecologia do Código Aberto). 

    Open Source Ecology? Que??? Como??? Onde???

 

    Pois é, depois do primeiro minuto assistindo o vídeo, reli com a atenção o título da palestra no TED (Open-sourced blueprints for civilization) e deu um estalo: Hã, Isso parece com Open Source Bridge!

    

    Jakubowski apresenta no TED a motivação de "abandonar" a área científica e virar fazendeiro com todas as dificuldades de trabalhar como um agricultor "tradicional". A dificuldade financeira o fez criar engenhosamente máquinas  e equipamentos para agricultura a custo muito mais baixo do que se comprasse no mercado. Ele compartilhou como criar as máquinas, os custos, etc…

  

    Para mim, ele é um Open Source Citzens! Provavelmente deve haver outros projetos e exemplos mais antigos mas o do Jakubowsku é primeiro (que leio) que altera a forma de produção (entenda-se produção não cultural, mas agrícula ou industrial) mais aberta e colaborativa. Paralelamente em Portland, EUA, acontece o Open Source Bridge que é "uma conferência para desenvolvedores que trabalham tecnologias de código aberto e pessoas interessadas em aprender o caminho do código aberto"

   No Brasil, Portal do Software Público é uma boa iniciativa mas é restrito ao mundo abstrato (TIC). Se existe iniciativas como Open Source Ecology ou Open Source Bridge no Brasil, confesso que desconheço ainda. Mas entendo que para existir iniciativas assim é preciso que os nerds/geeks trabalhem em outras áreas de conhecimento além do padrão (TIC), ou que as pessoas de outras áreas os provoquem e crie uma sinergia para um trabalho em uma completamente diferente e desafiador.

  Ah, estava esquecendo de um trabalho que aconteceu e acontece algum tempo: criação de cisternas em regiões de agricultura familiar. Se não estou enganado, a popularização de cisternas em regiões  de agricultura familiar (especialmente no nordeste) começou  como um projeto universitário. Isso seria o mais próximo de Open Source Citzens.

  Outro dia, postei sobre grupo de usuários e voluntariado, ser um Cidadão de Código Aberto é ter a motivação para compartilhar, fazer e colaborar em qualquer campo do conhecimento. Talvez para muito de nós, o domínio da tecnologia informacional já esteja completo ou não represente algum desafio, porém a ainda muito por fazer neste mundão.

  Se tiver mais alguns doidos, acho que é possível realizar um Open Source Bridge. Ou você que lê agora, pode se antecipar e começar a organizar. ;)

por Fernando Ike em 24/04/2011 19:37

20/04/2011

Fernando Ike

Grupo de usuário tem prazo de validade?

  

   Grupo de usuários de tecnologia, principalmente que são software livre/código aberto são bastante diversificados, pulverizados e voláteis. O Telles postou na lista que organiza o grupo de usuários brasileiro do PostgreSQL uma pequena provocação com o título "A comunidade brochou?".

    Ele assumiu como Big Kahuna a organização do Conferência PostgreSQL em 2011. (já disse que a ele que gosta muito de emoção. ;) )

    A grande questão em seu post é a motivação das pessoas no grupo de usuários. Para ajudar, eu postei umas bobagens como resposta, segue-a com uma ligeira adaptação:

  Que tal fazer algo menos penoso que as pessoas que são voluntárias se divertam?

  Fazer evento para o público grande, gerar repercussão, etc. é legal, mas fazer por voluntário e fazer exigindo a mesma qualidade de evento "corporativo" é transformar uma ação voluntária em uma ação desmotivante e tediosa.

  A questão principal em voluntários em qualquer projeto de software livre é o prazer em ser voluntário e a reconhecimento pelo que fez. Ao deixar um desses pontos de lado, principalmente o primeiro, a desmotivação em fazer é maior que a necessidade de acontecer.

voluntario1

  Particularmente, gosto de um item do Contrato Social do Debian:

"4- Nossas prioridades são nossos usuários e o software livre"

   Qual a prioridade (prazer como voluntário) de cada um com o PostgreSQL?

    Exemplos disso são meus pacotes no Debian e o patch que entrou no PostgreSQL, são atividades voluntárias que me satisfazem. Apesar de não ter mais tanto tempo, ainda faço alguma coisinha em projetos de Software Livre, isso é a minha maior motivação como um voluntário e entusiasta.

   No Catedral e Bazar  tem uma citação que reflete em como um voluntário de um projeto fica por período maior.

"18. Para resolver um problema interessante, comece achando um  problema que é interessante para você…"

   A grande questão é a motivação (algo interessante a dedicar-se) para fazer. Se não existir motivação pessoal e motivação/prioriodade/diretriz/etc… do grupo de usuário que guie as pessoas fazer ações voluntárias que sejam interessantes. Senão, serão atividades momentâneas do voluntário, dificilmente se repetirão.

voluntario2

   A ação prioritária deste grupo de usuários é realizar uma conferência todo anual?

   Uma analogia tosca é os multirões de doação de brinquedos no natal e no dia das crianças. A motivação é a entrega dos brinquedos, todo o restante (campanha p/ doar os brinquedos, triagem, etc).

   De um grupo de usuários pode ser qualquer coisa, como por exemplo, as festas de mapeamento de ruas e locais do pessoal do OpenStreetMap. O comprometimento do voluntário depende muito da motivação dele, pouco ou sem motivação não se tem ação para que mantenha a motivação de ser voluntário.

   No Catedral e Bazar analisa como o fluxo de mensagens de email na lista de discussão do fetchmail é ascendente até que a maior parte das funcionalidades que os usuários solicitaram foram contemplada. Depois, iníciou um declínio do fluxo de mensagens na lista de discussão pois as necessidades dos usuários interagirem com os desenvolvedores diminuiram e hoje em dia, poucas pessoas usam fetchmail (alguém que lê usa ainda?).

   Num passado não tão distante, existiam poucas alternativas de banco de dados com licenças abertas, hoje a concorrência é muito grande ao PostgreSQL. Desde os tradicionais MySQL, Firebird, SQLite aos em moda atualmente (NOSQL): Cassandra, Lucene, CouchDB, MongoDB e etc. O aumento de opção  de banco de dados não é ruim, é bom a diversificação de opções porém gera um reflexo aparente (não mensurei) de interesse menor ao PostgreSQL. Menos interessados,  menos voluntários, menos participantes nas listas, etc.

   Talvez devesse haver uma adaptação da visão do grupo de usuários ao cenário de banco de dados atual? Na minha opinião, sim! :)

   Bom, depois do monte de bobagem escrita acima tenho que ao menos propor algo. Uma idéia simples é reunir mensalmente em cada cidade que tem usuários de PostgreSQL num evento informal para trocar idéia, bater papo. Atividade de pouca complexidade para organizar que a maioria gosta de fazer e que pode render alguns pgday's ou voluntários para a Conferência PostgreSQL 2011. :)

  

por Fernando Ike em 20/04/2011 18:17

18/04/2011

Andre Luis Lopes

andrelop

Será que chove hoje ? OK, agora que temos o iniciador de conversa universal devidamente utilizado, podemos começar a discutir sobre o tema principal desse post, o qual, não por acaso, também tem muito a ver com “o tempo”.

Obviamente não me tornei meteorologista nem pretendo vir a me tornar um, mas vou me valer das metáforas já existentes para facilitar a leitura e o entendimento da mensagem que quero passar. O recado na verdade já é antigo e já tivemos muito tempo para digerí-lo e aceitá-lo.

Sim, pessoal, vamos falar sobre “Cloud Computing”. Sei que Deus mata um gatinho a cada vez que alguém cita esse termo, mas eu não sou admirador de gatos e, por isso, não me esforço para salvar a vida dos pobres filhotes de criaturas satânicas.

Sinceramente, resisti bastante e sempre tive a mesma impressão que a maioria de vocês tem sobre esse assunto. Desconfiei e sempre fiz a mesma pergunta que todos já fizeram e ainda continuam fazendo :  Quando o pior acontecer (porque nós, pessimistas, sabemos que é uma questão de quando, não de se vai acontecer), como ficam meus dados ?

Quando o sol aparecer, o tempo limpar e a nuvem for embora, levando meus dados com ela, o que eu faço ? Sinceramente, hoje em dia é extremamente difícil não ter ao menos parte de sua vida digital armazenada em algum servidor perdido por aí. Você provavelmente  não tem a mínima idéia de onde, fisicamente, esse servidor se encontra.

Essa é a nuvem. Você já está vendido, não adianta querer evitar, já aconteceu. Simplesmente aceite, resistir é inútil. Para você, como usuário final, nada muda muito. Você continuará trabalhando normalmente. Há alguns anos, até fazia sentido dizer que, no futuro, com o uso “da nuvem”, aconteceria uma mudança de paradigma, nossas aplicações de uso diário passariam a ser aplicações rodando “na nuvem” e você só precisaria de um navegador para realizar seu trabalho.

Hoje em dia, nem é necessário dizer isso porque já é o que acontece na prática, todos os dias. Todos usamos no mínimo uma aplicação indispensável baseada na nuvem.  Geralmente, muitas aplicações e, em alguns casos, como o meu, muitas ou mesmo todas. GMail, Google Reader, Google Docs, Twitter, Facebook, etc, etc. Tudo rodando na nuvem.

Observando com o olhar do usuário, realmente nada muda. Já estamos acostumados a usar o navegador como interface principal para nossas aplicações. As aplicações Web atuais não deixam nada a desejar em comparação a aplicações desktop. As novas versões dos navegadores estão seguindo o princípio de não atrapalhar, deixando cada vez mais a interface extremamente limpa e sem distrações, exatamente para que todo o espaço em tela disponível seja usado pelo que interessa, as aplicações Web.

Mas isso tudo é chover no molhado (ai, ai, quando vou parar de tentar fazer referência ao tempo ?). Isso tudo já sabemos, nada de novo até aí. O que me dei conta é que, observando agora não mais como usuário dessas tecnologias, mas sim como profissional da área de TI, preciso realmente passar a focar meus estudos em tecnologias que fazem sentido, e não mais em tecnologias que estão fadadas a serem rapidamente esquecidas ou abandonadas.

Trabalho com suporte/administração de sistemas. Percebi que, em um futuro que espero não ser tão distante assim (tudo leva a crer que seja esse o caso), não necessariamente vou precisar continuar “perdendo meu tempo” me atualizando sobre hardware ou qualquer outra tecnologia relacionada ao aspecto físico dos equipamentos que utilizo em meu dia-a-dia.

Aliás, não pretendo e não quero mais lidar com equipamentos. Simplesmente não será mais necessário e não fará mais sentido gastar tempo, item extremamente precioso, estudando sobre aspectos físicos sendo que tudo aponta para a nuvem, onde toda o aspecto físico é gerenciado pelo fornecedor “da nuvem”. Não somente nossas aplicações “simples”, como e-mail, feeds RSS (notícias) e afins estarão na nuvem, mas também todo e qualquer tipo de aplicação.

Já é, hoje, extremamente “barato”, se comparando a alternativa de comprar e implementar toda a infraestrutura necessária para isso, hospedar sua aplicação na nuvem. Você paga o que você usa, não desperdiça, não perde tempo, pode expandir conforme a demanda e, de uma forma geral, tem toda uma infraestrutura física adicional sempre disponível a poucos cliques ou teclas sempre que precisar.

Porque você precisaria comprar e administrar infraestrutura física frequentemente se você precisa emitir um relatório mais pesado somente no final do mês ? Alugue um espaço modesto na nuvem, rode o mês todo gastando menos e compre mais processamento somente por algumas horas, para emitir aquele relatório mais exigente no final do mês.

Simples, rápido e fácil. As tecnologias de virtualização avançaram bastante e hoje em dia é muito difícil você ficar a ver navios, com sua produção parada, hospedando sua aplicação na nuvem. Sua aplicação pode ser migrada para outro servidor físico rapidamente em caso de problemas no servidor onde a mesma está hospedada e isso geralmente pode ser feito “a quente”, ou seja, durante o uso da aplicação, sem tempo de parada e sem que isso seja perceptível aos usuários.

De fato, isso ocorre frequentemente em ambiente “de nuvem” e você nem mesmo sabe que isso aconteceu. E, todos sabemos, quando os usuários usam o que precisam para fazer seu trabalho e não notam os problemas, estamos fazendo um bom trabalho, certo ?

Certo. Sejamos portanto um pouco usuários “da nuvem” e simplesmente utilizemos a infraestrutura adaptável fornecida por essa tecnologia como usuários. Se não notamos os problemas, provavelmente é devido ao fato de que a tecnologia avançou o bastante para impedir que os problemas sejam perceptíveis aos olhos dos usuários (nós, no caso).

Pouco me importa onde, fisicamente, a infraestrutura que hospeda minhas aplicações está localizada. Contanto que minha infraestrutura lógica (servidores virtuais e aplicações) esteja disponível e acessível remotamente, isso é  o que me importa.

Agora tente comprar o que é necessário (não só software, mas também toda a infraestrutura física) para fazer isso você mesmo internamente e depois me diga se o que os fornecedores de “espaço na nuvem” atuais oferecem não é uma pechincha. Vide Amazon, por exemplo.

A mensagem é : se você trabalha com infraestrutura, adapte-se. Se quer continuar a trabalhar com infraestrutura, passe a focar na infraestrutura lógica. Servidores virtuais, aplicações, bancos de dados, tecnologias para Web em geral. Se quiser ter uma vantagem em relação aos demais profissionais de infraestrutura (lógica), aprenda a programar e aprenda a lidar com ferramentas/frameworks para desenvolvimento Web, como Rails (para Ruby), DJango (para Python) e males necessários como Tomcat/JBoss.

Não perca seu tempo estudando a fundo sobre processadores, discos, memória ou nada que envolva tecnologia física. Obviamente que você precisa conhecer sobre isso, mas não dedique tanto tempo assim a isso. Prefira o aspecto lógico ao aspecto físico.

Afinal, o físico sempre se deteriora e o lógico sempre permanece. Como as lembranças, por exemplo, mesmo com o tempo :-)


por andrelop em 18/04/2011 22:10

08/04/2011

Gustavo Noronha Silva

Festa de lançamento do GNOME 3.0 nesse sábado em BH!

Os detalhes estão aqui! O encontro é no restaurante Takê a partir das 19h. Vou levar meu notebook pra apresentar o novo shell e mostrar as extensões que eu escrevi pra os curiosos que não conseguiram ainda testar com os live CDs =D Apareçam!

por kov em 08/04/2011 14:01

06/04/2011

Fernanda Weiden

Crisis

We usually tend to find life difficult, until some bad thing happen and makes things truly difficult.

A few weeks ago, I was in one more of my usual business trips to the US, when I learned that my mom was at the hospital for a heart surgery. She is actually pretty lucky to be alive. She had a test made which monitored her heart for 24 hours and the doctors learned that her heart stopped 24 times in that timeframe. Tell me about scary.

Well, I took the first flight I could from the US to Porto Alegre, to stay with her. I had a feeling that if I was there, she wouldn't be allowed to leave me. Or leave us.

She is fine now, and a happy owner of a pacemaker. She looks healthier than before. It is amazing how being healthy is always stamped on your forehead, but we just don't give a shit about it. We don't read the signs from our own body.

Anyway, in the middle of that crisis, which has passed but still affects daily life for all of us, I had the chance, for the first time in a few years, of spending 15 consecutive days with my family. I call that quality time. We were united again, we felt like a team again. Well, at least most of us did, I am sure.

I think I can say that two weeks ago I had one of the largest crisis in my life. I am so glad I had so many people I love and who loves me around, and that they also took care of me when I had to take care of others. That's how it is in the end. One helps the other and everybody gets stronger that way.

Now I am back to Zurich, to work, and trying to get my daily routine back to normal. It is hard, but I will get there.

por nanda (noreply@blogger.com) em 06/04/2011 23:32

João Eriberto Mota Filho

29/03/2011

Éverton M. Arruda Jr. (notrev)

Iceweasel 4 on Debian Squeeze/Wheezy

For those of you who don’t know what Iceweasel is, it’s written in Debian’s Wiki[0]:

Iceweasel is a fork Mozilla Firefox[1] with the following purpose :
1. backporting of security fixes to declared Debian stable version.
2. no inclusion of trademarked Mozilla artwork (because of #1 above)
Beyond that, they will be basically identical. (quoting Roberto C. Sanchez post in debian-devel mailing list)

Iceweasel’s (and Firefox’s) latest version, 4.0, was recently released[2], on Mach 22nd, and i’ve just upgraded Iceweasel 3.6 to Iceweasel 4.0 on my Debian Wheezy.

If you’d like to upgrade yours, follow the steps bellow.

1. Add Mozilla’s repository to sources.list
Edit the /etc/apt/sources.list file and add the repository’s address:

1
deb http://mozilla.debian.net/ squeeze-backports iceweasel-4.0

Even though it’s Squeeze’s repository, it worked fine on my Wheezy.
You can type the following command to add it:

1
# echo "deb http://mozilla.debian.net/ squeeze-backports iceweasel-4.0" >> /etc/apt/sources.list

2. Update packages list

1
# aptitude update

3. Install Iceweasel 4
You can check the version of iceweasel with the command bellow:

1
# aptitude show iceweasel

Install it with the following command:

1
# aptitude install iceweasel

Wait for it to finish and happy surfing!

Links/Sources:
[0] http://wiki.debian.org/Iceweasel
[1] http://mozilla.com/firefox
[2] http://blog.mozilla.com/blog/2011/03/22/mozilla-launches-firefox-4-and-delivers-a-fast-sleek-and-customizable-browsing-experience-to-more-than-400-million-users-worldwide-2/
[3] http://mozilla.debian.net/

por Éverton Arruda em 29/03/2011 12:55

12/03/2011

Fernando Ike

Pesquisa para palestrantes gringos da PGBR 2011

   E os trabalhos para organizar a PGBR 2011 estão a todo vapor. A organização está fazendo uma votação para ver quais os palestrantes internacionais que a comunidade brasileira de PostgreSQL gostaria que estivessem para a próxima PGBR.

   A pesquisa está aqui.

   A referência da chamada para votação pode ser lida na na lista de usuários PostgreSQL Brasil.

  

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • FriendFeed
  • Identi.ca
  • LinkedIn
  • Netvibes
  • Twitter
  • email
  • Live
  • PDF
  • Ping.fm
  • Rec6
  • Yahoo! Buzz

por Fernando Ike em 12/03/2011 12:39