Campanha Contra Protocolo de Intenções de Governos com a Micro$oft
Protocolo Assinado pelo Governador da Bahia na Íntegra , Reação do PSL-Ba em face ao protocolo

Acabei o mestrado!

(29 Aug 2009 - 13:34)

A primeira coisa a dizer é: FOI SENSACIONAL

A apresentação da minha dissertação aconteceu no dia 27/08/2009 e tudo ocorreu muito bem. Yuri Ki me ajudou a filmar toda apresentação e já publiquei no vimeo.com. Os slides também estão disponíveis: http://www.tecgraf.puc-rio.br/~amadeu/mestrado-slides.pdf.

O tema é "Implantação de Componentes de Software Distribuídos Multi-Linguagem e Multi-Plataforma". Temos 3 contribuições principais:

  • Levantamento de critérios de avaliação para classificar as outras tecnologias de componentes que existem. O foco dessa classificação é entender os processos de implantação de cada tecnologia. Não encontramos nenhum survey nos periódicos, portanto parece-nos ser de grande valia para outros trabalhos nessa área.
  • Reuso de uma solução para empacotamento para gerir as dependências estáticas entre os componentes e artefatos nativos da plataforma ou linguagem. Tipicamente, as tecnologias de componentes não possuem um suporte adequado para instalar as dependências a artefatos externos ao modelo de componentes. Escolhemos o LuaRocks e o adaptamos para as nossas necessidades multi-linguagem. Assim, definimos que cada componente precisa ter um pacote referente que agrupa seus artefatos, portanto, usando o LuaRocks é possível dizer que um componente X depende de outros pacotes como dependências externas à modelagem de componentes ( = dependências estáticas segundo Szyperski ).
  • Proposta de serviços que facilitam a implantação por níveis graduais de detalhamento sobre o mapeamento físico necessário. Nossos serviços ajudam programadores iniciantes a não precisarem lidar diretamente com a infra-estrutura de execução. Assumimos uma fase de planejamento e uma API padrão (em linguagem imperativa) que implementa todas operações da implantação (como deploy, activate, deactivate, undeploy - e outras que serão implementadas no futuro como suspend e resume).

Só tenho a agradecer a todos amigos que me apoiaram ao longo dessa turbulência que é um mestrado. Em especial, Yuri Ki (minha namorada), Tássia Camões e André Lage que sempre foram "pentelhados" nos piores momentos. Aos outros amigos da Bahia (atualmente espalhados pelo mundo) também meus sinceros cumprimentos pelas mensagens de carinho e compreensão. Ao pessoal do TecGRAF por todo suporte prático ao desenvolvimento desse trabalho. A meu orientador Renato Fontoura de Gusmão Cerqueira pela sua incontável paciência com esse cara desesperado que eu sou.

Só tenho a dizer: acabou.

Meu mestrado, parte 2: solução para empacotamento

(14 Jul 2008 - 13:26)

Entendendo esse post

Esse também faz parte da série de posts sobre minhas investigações no mestrado na PUC-Rio. Esse trata em detalhe as alternativas que pesquisei como solução de empacotamento multi-plataforma e multi-linguagem para ajudar um sistema de componentes de software distribuídos a instalar pacotes de componentes com suporte à dependências externas e além ao modelo de componentes (também conhecidas na área de componentes como dependências estáticas). A decisão no mestrado foi reusar e modificar o LuaRocks para fornecer suporte multi-linguagem, foi uma ótima decisão, viabilizou toda a outra parte do trabalho que se referia à implantação de componentes propriamente dita e digamos mais academicamente importante (afinal academicamente sistema de pacotes é algo digamos POUQUíSSIMO COMENTADO!).

Falar como os sistemas de pacotes podem ajudar a sanear as instalações é trivial para um linux-user, mas não para um academic-guy que só quer saber de quantas referências há para "sistemas de pacotes" ! Nesses casos a comunidade das redes de software livre dão uma lição e tanta no academic way of life. wink Deixemos a política nas entrelinhas ... o foco aqui é mostrar com quantos paus se faz um mestrado!

Requisitos

  1. permitir instalação por usuário ou projetos (área compartilhada mas não global)
  2. possuir resolvedor de dependências externas
  3. permitir remoção mediante verificação de dependências = se remover X do qual Y,Z dependem então remove também Y,Z
  4. possibilitar reuso da instalação já existente = se a biblioteca X já está instalada a resolução de dependência de qualquer Y deve reconhecer que X já está instalada
  5. (idealmente) permitir sobrecarga e resolução de conflitos entre dependências que provém as mesmas interfaces/serviços
  6. possuir API de alto nível para automatizar a instalação (pré e pós install), remoção (pré e pós remove), resolução de dependências e reconfiguração (restart de serviços)
  7. permitir extensão da abstração de dependências para descrever dependências entre componentes SCS
  8. suportar multiplataforma, no sentido de ter compatibilidade com o gerenciamento em plataformas não-UNIX
  9. suportar multilinguagem, no sentido de gerenciar pacotes nas linguagens Lua, C++ e Java
  10. permitir uso de repositórios de pacotes

Levantamento de características

Projetos muito Interessantes

haskell

  1. Cabal ( http://www.haskell.org/cabal ): Cabal is a system for building and packaging Haskell libraries and programs It defines a common interface for package authors and distributors to easily build their applications in a portable way. Cabal is part of a larger infrastructure for distributing, organizing, and cataloging Haskell libraries and programs. Specifically, the Cabal describes what a Haskell package is, how these packages interact with the language, and what Haskell implementations must to do to support packages. The Cabal also specifies some infrastructure (code) that makes it easy for tool authors to build and distribute conforming packages. The Cabal is only one contribution to the larger goal. In particular, the Cabal says nothing about more global issues such as how authors decide where in the module name space their library should live; how users can find a package they want; how orphan packages find new owners; and so on.
  2. Discussão sobre sistemas de build e packaging: http://www.nabble.com/Version-control-systems-td18827479i80.html
    1. Geoffrey Clemm, Odin Build Tool : http://portal.acm.org/citation.cfm?id=77607&dl=GUIDE&dl=ACM
    2. Walter F. Tichy, Smart Recompilation : http://portal.acm.org/citation.cfm?id=5959&dl=ACM&coll=portal

debian

  1. question building: dpkg-buildpackage e outros utilitários obrigam (?!) o uso de crosscompiling uma vez que pode ser difícil ter o dpkg-dev instalado em vários tipos de hosts
  2. question install: depende de arquivos em diretórios globais, mas pode usar diretórios por usuário = isso causa conflito com a instalação global
  3. porte do dpkg para MS Windows : http://osdir.com/ml/linux.debian.ports.windows/2007-12/msg00001.html
    1. usar mingw mesmo para compilar o dpkg ou ao menos a libapt
  4. porte da infra-estrutura debian para Interix (SFU/SUA) - veja abaixo na seção sobre compatibilidade com Windows
    1. question em que ponto exatamente se encontra o resolvedor de dependências? É possível reusar o parser do control e o resolvedor de dependências?
  5. implementar um módulo Lua frontend para dpkg semelhante a dpkg-ruby + libdpkg-ruby1.8 (depende de dpkg instalado)
    1. question É possível tornar o parser do control e o resolvedor de dependências um módulo Lua?
  6. motivação cross-compiling: ter bibliotecas nativas para o windows usando o mingw para poder ser usadas junto com MSVC e ser redistribuídas com softwares windows nativos
    1. http://mingw-cross.sourceforge.net/
    2. http://gnuwin32.sourceforge.net/summary.html
  7. discussões sobre cross-compiling com mingw:
    1. http://lists.debian.org/debian-mentors/2006/03/msg00115.html
    2. http://lists.debian.org/debian-mentors/2006/03/msg00216.html
    3. http://wiki.njh.eu/Cross_Compiling_for_Win32
    4. https://dev.njh6.de/svn/njh/any2deb/
    5. CFLAGS="-mms-bitfields -march=i386" CC=i586-mingw32msvc-gcc LD=i586-mingw32msvc-ld
  8. discussao pessoal:
    1. dpkg-cross: renomeia nomes de pacotes no control, bem como os diretorios com nomes=nome_pacote. Exemplo: libtool.deb -- dpkg-cross --> libtool-w32-i586-cross.deb
    2. dpkg-buildpackage com modificação para mingw
      1. gera pacotes em nova arquitetura (w32-i586)
      2. gera pacotes prefixado em /usr/$(DEB_HOST_GNU_TYPE)
      3. dado que gera binários para w32-i586 então no porte do dpkg no windows precisa reconhecer esta arquitetura
      4. uma alternativa para não precisar fazer porte do dpkg no windows e ter um ambiente cygwin que instala e gerencia os pacotes nativos windows
      5. outra alternativa é fazer instalação remota (no filesystem windows) via compartilhamento samba e possivelmente precisando do schroot/chroot

nix

  1. suporte a MS Windows via Cygwin
  2. http://en.wikipedia.org/wiki/User:Gwern/Nix_Package_Manager , http://nixos.org/patchelf.html , http://nixos.org/nixpkgs.html
  3. hash de pacotes baseado nos arquivos fonte antes do building do pacote
  4. question usa repositórios?
    1. sim, faz download a partir do nome do pacote (parecido com apt-get install)
  5. question segurança no compartilhamento entre usuários?
  6. question interopera com pacotes já instalados (.deb, .rpm)?
  7. http://nixos.org/releases/nix/nix-0.11/manual

zeroinstall

  1. sem suporte a MS Windows porque usa python.os.fork() e não há implementação disso para windows!
    1. provavelmente SFU/SUA/Cygwin resolvem este problema.
    2. fazer um wrapper para spawn para portabilidade : http://effbot.org/librarybook/os.htm
    3. http://www.python.org/doc/faq/windows/
    4. refatorar o zeroinstall para remover a necessidade do fork
  2. detalhes do empacotamento : http://0install.net/injector-packagers.html
  3. hash de pacotes baseado na árvore de diretório gerada pelo building do pacote
  4. question usa repositórios?
    1. descentralizado e não depende de repositórios
    2. question impede uso de repositórios?
  5. question segurança no compartilhamento entre usuários?
    1. http://0install.net/sharing.html
  6. question interopera com pacotes já instalados (.deb, .rpm)?
    1. conversor de .deb para 0install : http://0install.net/deb2zero.html
    2. http://0install.net/injector-using.html
  7. question como remover um pacote?
    1. Currently, they can't. You (the admin) can delete directories from /var/cache/0install.net/implementations to save space (preferably not while they're being used ;-). Ideally, we should track which users have requested which programs and remove them automatically when no-one wants them anymore. (ver "questions" no link sharing)

ipkg

  1. TODO olhar o site e o código para ver possíveis problemas de portabilidade : http://handhelds.org/moin/moin.cgi/Ipkg

luarocks

  1. question só coisas Lua ou não, se não então qual o nível de building possível
    1. permite uso dos backends: make, cmake, comando_qualquer (scons,installshield) ou module (módulos Lua)
    2. embora não seja concebido para instalar outros binários é possível que instale uma vez que permite uso de Makefile
    3. DONE para ser compatível com autotools seria preciso definir um novo backend baseado no make atual
      1. Implementado um build.autotools e build.tecmake ainda preliminares, mas que são úteis para compilar pacotes como openssl, openldap, sasl
    4. question suportar a instalação de pacotes de várias linguagens
      1. Natural é atribuir nomes parametrizados pela linguagem (like debian-policy to liblangXYZ) de suporte: lua, java, cpp
        1. Útil para os pacotes dos Componentes SCS uma vez que eles é que dependem de estar numa mesma linguagem, no caso das suas dependências externas a exemplo do openssl:
          1. BusAccessControl_lua.all.rock dependsOn lualdap_lua.rock dependsOn openldap.rock
          2. BusOiLConnector_cpp.x86.rock dependsOn liboilall_cpp.rock dependsOn lua
          3. MyComponent_lua.all.rock dependsOn openldap AND sasl2 AND lua
          4. PingPong.rockspec, PingPong_lua.all.rock dependsOn oil_lua AND scs_lua.all.rock
      2. Outra opção é estender as informações de plataforma para incluir linguagem para que o tratamento do perplatform_overrides cuide de instalar archs={*lua.x86*,*java.all*,*cpp.solaris*}
    5. question suportar a carga em cada contêiner
      1. O instalador precisa informar qual a variável de ambiente apropriada para cada linguagem afim de montar o LUA_PATH, CLASSPATH ou LD_LIBRARY_PATH de forma que o método de loading da linguagem encontre o pacote com versão especificada, bem como suas dependências.
        1. LUA : luarocks no ato do require já busca do manifest.repository os contextos (formando package.path e package.cpath) e assim realiza a carga
        2. JAVA : ClassLoader precisa receber um classpath montado com os contextos da resolução de dependências,
        3. C/C++ : o contêiner para realizar a carga dinâmica (dlopen) precisa montar o contexto na variável LD_LIBRARY_PATH
        4. reuso do luarocks.deps pela comunicação contêiner <-> exnode:installer :
          self.ComponentLoader:setContext( installer:getContext(componentId,self.mylang) )
  2. question premake http://premake.sourceforge.net/writing_scripts

luadist

  1. http://luadist.sourceforge.net - LuaDist? is a cross-platform distribution of the Lua programming language that includes networked module management and deployment of source based or binary modules. Unlike projects like LuaRocks? the main focus of LuaDist? is full automatization and standalone deployment including the management of external libraries on the Linux(UNIX), Windows and Mac platforms. Uses the CMake approach to build and parse automatic dependencies.
  2. Muito interessante, mas:
    1. Permite instalação simultânea de múltiplas versões dos pacotes? Justificativa: precisamos manter instalado múltiplas versões dos pacotes Lua bem como das bibliotecas de sistema (podemos precisar da OpenLDAP? tanto na sua versão 2.1.x quanto 2.4.x).
    2. Permite outras formas de compilação além do CMake? Justificativa: muitas bibliotecas de sistemas podem precisar ser compiladas e provavelmente usa-se ferramentas de compilação diferentes (autotools, make personalizados, scripts personalizados, etc).
    3. Possui noção de árvores de instalação que permitem a gerência via arquivo de manifesto (como no LuaRocks?)? Justificativa: os arquivos de manifesto do luarocks permitem a adoção de várias árvores de instalação simultâneas (para várias plataformas, por exemplo), assim ao usar o comando do luarocks pode-se usar o parâmetro --to=/home/user/install-linux-x86_64/, por exemplo.
    4. É fácil manter um repositório ou mesmo usar a própria árvore de instalação como repositório? Justificativa: o LuaRocks? apresenta uma funcionalidade interessante que simplifica a gerência do repositório uma vez que basta ter na mesma árvore os pacotes src.rock ou .rock.

clickonce (MS Visual Studio)

  1. ClickOnce Deployment: projetos C++ - http://msdn.microsoft.com/en-us/library/ms235287(VS.80).aspx , projetos C#/J# - http://msdn.microsoft.com/en-us/library/t71a733d(VS.80).aspx

Alternativas para compilação

Hamster

  1. Can be used as a generic 'make replacement' for almost any project. It even contains a 'Try' method that has automake-like functionality (detecting whether some compilation would fail or succeed at build time). Support: gmake, scons, nmake. http://kotisivu.dnainternet.net/askok/hamster/
  2. ALERT! Interessante observação dos autores (parece-me que substitui/expande bem o Tecmake): For professional work I warmly recommend SCons, a Python-based build tool that knows how to rebuild when only build parameters have changed (makefiles don't do that). Even with makefiles, Hamster takes care of header dependencies automatically (no need to list your headers, or do 'make dep'). Hamster's API derives from that of SCons, and even the original name of the project was SCons/Lua.

Scons

  1. http://www.scons.org , http://www.qandr.org/quentin/writings/debscons.html

Compatibilidade MS Windows

  1. SFU --- evolução ---> SUA (SFU deve ser mantido até 2009!)
  2. question Diferenças entre Cygwin e ServicesForUnix (SFU)
    1. http://osnews.com/thread?16317
  3. question Impacto de desempenho do SFU (usar benchmarks do shootout.alioth.debian.org)
  4. Introduction to Microsoft Windows Services for UNIX 3.5 : http://technet.microsoft.com/en-us/library/bb463212.aspx
  5. Interopsystems open source tools : http://www.interopsystems.com/community/default.aspx
  6. Windows Services for UNIX : http://technet.microsoft.com/en-us/interopmigration/bb380242.aspx
  7. SFU Warehouse : http://www.interopsystems.com/community/warehouse.aspx
  8. SFU Installation : http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=896C9688-601B-44F1-81A4-02878FF11778&displaylang=en
  9. Gerenciador de pacotes Interix (SFU) : http://www.interopsystems.com/community/pkg_install.htm
  10. UNIX Interoperability integrated on Windows Server >= 2003 : http://blogs.msdn.com/sfu/archive/2007/04/12/services-for-unix-vs-windows-server-2003-r2-unix-interoperability.aspx
  11. Blog do gerente de projeto do SUA/SFU : http://blogs.msdn.com/shan/default.aspx
  12. Projeto do porte de Debian para Interix (SFU/SUA) : http://www.debian-interix.net
    1. Bug para criação da lista oficial do porte do Debian para Interix : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=441094
    2. Problemas com a conta root <-> Administrator : http://gridengine.info/articles/2007/02/06/notes-about-grid-engine-on-windows
  13. Outras opções:
    1. Usar mingw (site novo, versão nova - gcc4) por ser mais simples e menos dependente das tecnologias microsoft: http://www.mingw.org , http://gnuwin32.sourceforge.net/packages/libgw32c.htm

Outros links

Compilação openldap,openssl via mingw no MS Windows

  1. instala msys
  2. instala regex
  3. instala zlib
  4. instala perl5
  5. baixa openssl do cvs
    1. ln -s /mingw/include /usr/include
    2. ln -s /mingw/lib /usr/lib
    3. ./config --prefix=/mingw --openssl-dir=/mingw/openssl/ shared
    4. editar util/mklink.pl e definir symlinks_exists como FALSE para usar copia (pois symlink é dummy no MSYS)
    5. make
      1. faltando definicoes: CERT_SYSTEM_STORE_CURRENT_USER , CERT_STORE_READONLY_FLAG , CRYPT_KEY_PROV_INFO , CERT_STORE_PROV_SYSTEM_A (... a maioria deveria estar em wincrypt.h)
    6. versão 0.9.8h tem versão instalável: http://www.slproweb.com/products/Win32OpenSSL.html
  6. baixa openldap 2.4.11

Meu mestrado, parte 1: pesquisa e temas

(08 May 2008 - 05:36)

Entendendo esse Post

Essa blogada estava como rascunho há bastante tempo, digamos 1 ano de 2 meses para ser exato! Nesse post eu organizei minhas pesquisas e temas que definiram meu mestrado em computação pela PUC-Rio. Acho interessante compartilhar esse conteúdo porque na academia pouco de faz de concreto para divulgar amplamente "como as coisas funcionam". Muitos projetos de pesquisa se limitam a manter privados seus meios, percalços e detalhes no entorno da produção científica. Aqui eu tento listar todas as possibilidades que estiveram e ainda fazem parte do contexto do meu trabalho de mestrado.

Portanto, espero que esse conteúdo seja útil a outros que tenham interesses de pesquisa em áreas semelhantes à minha.

  • UPDATED A dissertação do mestrado está saindo.. assim que finalizá-la, colocarei aqui no Blog !

Deployment de Aplicações Distribuídas: Reuso das Soluções de Empacotamento e Construção de um Framework

Estudos realizados

Deployment de Software

Processo de deployment em open-source: Cross-compiling para Debian: Alternativas aos pacotes Debian:

Deployment em Sistemas Distribuídos

Artigos:

Outros: Alto nível: Deployment: Outros links: Outras bibliografias:
  • [Emmerich,02] Emmerich, W., Distributed Component Technologies and their Software Engineering Implications, Proc. of the 24th International Conference on Software Engineering, Orlando, Florida, pp. 537-546, 2002.
  • [Jasminka,04] Jasminka Matevska-Meyer, Wilhelm Hasselbring, and Ralf H. Reussne. Software Architecture Description supporting Component Deployment and System Runtime Reconfiguration. Software Engineering Group, Department of Computing Science, University of Oldenburg, Germany.

Paralelização de Componentes no SCS

Artigos:

Dicas de LaTeX

Coisas Win32

Rede social da Economia Solidária

(21 Mar 2009 - 22:02)

A Cooperativa de Tecnologias Livres - http://www.colivre.coop.br - vêm desenvolvendo vários sistemas para o FBES (Fórum Brasileiro de Economia Solidária) e nesse contexto surgiu o sistema Noosfero - http://www.noosfero.com.br.

Em particular, existe uma rede social para Economia Solidária que está sendo construída e está sendo testada no seguinte portal:

http://ecosol.noosfero.com.br/

Eu faço um convite:

  • Alguém aí usa/usou/conhece o Orkut??
  • Sabemos das várias facetas boas e ruins do Orkut certo??
  • Então.. porquê não participar de um "orkut para economia solidária"???

O portal http://ecosol.noosfero.com.br é muito mais que um orkut !!!!!!!!!! É um portal criado para potencializar as trocas sociais, as interações sociais e divulgar pessoas que gostam/fazem a Economia Solidária acontecer !!!!!!!!!!!!!

Vão lá.. entrem, criem suas contas e interajam, criem grupos, postem no blog do próprio portal, comentem sobre os grupos já existentes e MAIS DO QUE NUNCA divulguem uma forma mais consciente de CULTURA DIGITAL!!! wink

SE UNAM NESSA FORÇA !!

Como as coisas funcionam?

(21 Mar 2009 - 20:47)

Realmente, não gosto muito dessa coisa de ficar postando só para deixar links.

A amplitude da Internet por vezes nos faz esquecer do realmente gostamos e do que gostaríamos de saber. É informação que talvez nem num mar venha a caber, é frustrante lembrar disso.

Meio utópico? Sim, meio. Mas muita gente vem pesquisando sobre isso em áreas das artes às humanidades (Ana, amiga da Yuri me lembrou que preciso refletir mais sobre isso!):

  1. Precisamos mesmo de tanta informação?
  2. Por quê?
  3. Pra quem?
  4. O que fazer com isso?
  5. Por quê tão rápido?

Eu semprei adorei carros, sem quis saber como muita coisa funciona. E ainda quero. Já conhecia muitos sites para isso como http://howstuffworks.com. Hoje, sem querer, quando um amigo mecânico (de oficina) e matemático (sim, o cara é um mutcho loko) me explicava sobre o funcionamento dos motores, câmbio e diferencial de carros, nos deparamos com uma versão em português do http://howstuffworks.com mantido na UOL, trata-se do http://hsw.uol.com.br.

O artigo que li e me fez lembrar de olhar mais vezes o http://howstuffworks.com foi http://carros.hsw.uol.com.br/diferencial.htm.

Resumindo metacognitivamente, veja só como as coisas funcionam!, não é? Gostar, querer, poder acessar, estar disponível, compartilhar.. verbos intensamente requisitados diariamente que juntos por vezes simplesmente não funcionam! wink

Yuri Ki voando literalmente

(22 Jan 2009 - 17:46)


Salto duplo de Ki no Yahoo! Vídeo

Editores simples mas com recursos úteis

(22 Apr 2008 - 19:52)

O dia-a-dia aqui com usuários windows às vezes me incomoda, volta e meia me deparo com alguns caras falando "você é louco de usar o VI, o Micro$merda Visual Studio é sensacional", entre outros que são fans de eclipse ("o software que te apresenta um botão que salva sua vida"). Como sou totalmente contra software proprietário e não gosto muito de IDEs avançadas adoro buscar alternativas:

Não é vim, mas serve e muito:

  • geany - muito muito bom com auto-completação (não full) e listagem de símbolos até para Lua - http://geany.uvena.de/Main/HomePage
    • Editor de texto bem parecido com o gedit
    • Permite trocar os temas de highlight livremente (o padrão são temas "white" e tem extensões para temas "dark")
    • Permite editar TODAS as teclas de atalho, impressionante a flexibilidade que isso provê
    • Ultra leve e portável (roda em windows)
    • Mais rápido ao restaurar sessão
    • Disponibiliza terminal em painel e atalhos F7 para compilar, F5 para rodar (em nova janela de terminal ou não)
    • Tem uma noção simples para Projeto que agrupa um conjunto de arquivos e tem sessão própria
    • Em sua versão nova (0.15) tem um plugin muito bom para diff que se integra ao MELD (visualizador de diff de 3-vias, capaz de gerir controles de versões - add, up, merge)
    • Muito personalizável inclusive permite adicionar ações de contexto livremente
    • Completion não full que só busca nos arquivos abertos, mas tem tudo para vir a ter um completion de verdade
    • GeanyLua : http://www.milliwatt-software.com/jmg/notes/geany.html
  • https://sourceforge.net/projects/textflow/
  • cream - um mod gráfico para o vim - mas a auto-completação é pobre e bem pesadinho (comparado ao gvim)
  • http://www.stambouliote.de/projects/gedit_plugins.html
  • http://grigio.org/pimp_my_gedit_was_textmate_linux
  • pobre e funciona como TAB do terminal: http://elias.hiex.at/gedit-plugins/

Catálogo de screenshot para o Debian

(24 Nov 2008 - 12:01)

http://screenshots.debian.net/

Uma idéia simples mas fundamental, principalmente para quem adora conhecer novos softwares com interfaces diferentes, descobrir recursos convidativos. Uma forma organizada de identificar os softwares no Debian. Agora imagine o synaptic baixando esses screenshots e apresentando-os a você ?! Seria sensacional ... espero que esse website seja o primeiro passo. smile

Vamos divulgar. Eu mesmo só encontrei graças ao Blog do Thadeu Penna.

Como traduzir HTML para TWiki usando XSLT

(06 Oct 2008 - 15:05)

Para aqueles que usam TWiki mas seu servidor não tem os editores visuais como o TinyMCE ou mesmo se você não quer poluir um tópico TWiki com código HTML, há uma alternativa que é converter HTML para a marcação TWiki. Há bibliotecas Perl para isso, mas um método alternativo e rápido é usar a conversão baseada em XSLT.

É preciso instalar:

  1. aptitude install xsltproc
  2. baixar o template em http://elmuerte.com/html2twiki/
  3. rodar:
    $ xsltproc html2twiki.xslt /caminho/arquivo.html

Agora é só copiar e colar no seu tópico TWiki. Observe que os estilos CSS são apresentados fora das tags <style>, assim será preciso algum ajuste. Esse XSLT que achei não suporta tabelas, mas já é bem útil, seria uma boa integrar isso no Tomboy.

Compiladores JIT e Firefox3.1 interpretando JavaScript mais rápido

(26 Aug 2008 - 00:15)

Conforme publicado pelo Stephen Shankland, o Firefox3.1 vai incorporar uma nova tecnologia para interpretação de JavaScript baseada na tecnologia de otimização de código por Trace Trees. Ao ler o post do Stephen fiquei empolgado, uma vez que a minha pequena experiência com o LuaJIT me mostrou que no OiL o ganho de desempenho chegou a cerca de 50% em certas aplicações (no caso um sistema de eventos CORBA, conforme gráfico de desempenho do LuaJIT versus o gráfico do Lua 5.1.3).

Alguns links valem a pena ser lidos:

  1. Post original do Stephen
  2. Proposta do aperfeiçoamento no Firefox
  3. Artigo acadêmico sobre Trace Trees - Incremental Dynamic Code Generation with Trace Trees

Ativação do GLX do driver nvidia proprietário

(11 Jul 2008 - 20:31)

Faz 1 ano que tenho a mesma instalação do meu Debian Lenny que é atualizada diariamente (1 ano = desde que comprei o notebook). Nesse tempo passei por diferente probleminhas no uso do módulo proprietário da Nvidia, entre eles o mais chato era que não funcionava a hibernação. Superado esse problema (superado pelo tempo = atualizações diárias), há cerca de 1 mês estou sem usar qualquer recurso GLX diretamente, pois sempre que tento rodar algo que depende do GLX o servidor X dá crash.

Esse impedimento não me deixava usar aplicações OpenGL ou mesmo o Compiz Fusion ou ainda aplicações como rdesktop :0.

Olhando o /var/log/Xorg.0.log:

(II) Loading extension NV-GLX
(II) NVIDIA(0): NVIDIA 3D Acceleration Architecture Initialized
(II) NVIDIA(0): Using the NVIDIA 2D acceleration architecture

Mas aí também tinha:

(EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
(EE) NVIDIA(0):     log file that the GLX module has been loaded in your X
(EE) NVIDIA(0):     server, and that the module is the NVIDIA GLX module.  If
(EE) NVIDIA(0):     you continue to encounter problems, Please try
(EE) NVIDIA(0):     reinstalling the NVIDIA driver.

Daí eu pensei parece que está carregando dois drivers de GLX e realmente estava !!

# ls /usr/lib/xorg/modules/extensions/ -l
-rw-r--r-- 1 root root 529621 Jun 25 22:26 libglx.so             <-- normal
-rwxr-xr-x 1 root root 1034808 Jun 16 22:54 libglx.so.100.14.19  <-- NVIDIA

Ou seja, têm dois arquivos e daí tenta-se carregar os dois, na prática se o módulo proprietário da Nvidia substituiria (via um dpkg-divert) o libglx.so, mas como foi uma instalação manual, obviamente, isso não foi feito!!

Resolvi movendo o antigo e criando um link para o libglx.so.100.14.19 da nvidia. wink (o certo seria gerar um pacote debian com o driver proprietário da Nvidia)

E assim tudo funcionou bem. smile

Songbird: player de mídia e navegador

(03 Jun 2008 - 03:02)

Eu não conhecia o Songbird e adorei o conceito: http://getsongbird.com

Valeu Vinnie pela dica !! O Songbird é bem legal para reproduzir, buscar conteúdo relacionado já na web, organizar suas músicas e mesmo baixar músicas diretamente do site e já ir gerenciando na sua audioteca. Sensacional !! Só não tem pacote debian oficial por enquanto .. wink

Songbird: Play music. Play the Web

Tela do Songbird

Hibernate + Nvidia

(13 May 2008 - 17:02)

Um post ultra-rápido... Atualmente meu Debian Lenny amd64 não conseguia hibernar corretamente, travando ao tentar. Parei 1 minuto para fazer um trace do que o GNOME chamava por baixo dos panos. Percebi que ele delega ao HAL a responsabilidade para chamar os softwares baixo nível de suspensão.

Olhando os scripts de ações do HAL (/usr/lib/hal/scripts) é possível ver que ele faz alguns checks sobre o que a máquina suporta (grep /sys/power/disk) e depois, se existir, chama o s2disk contido no pacote uswsusp. Em meu caso lembrei que entre as milhares de tentativas de fazer funcionar no passado eu tinha instalado manualmente este pacote. Naquela época eu já tinha experimentado tais travamentos por incompatibilidade no descarregamento do módulo da placa gráfica da NVidia (digo o proprietário). Por isso mesmo eu vinha usando a hibernação via um script simples mas totalmente funcional em meu caso (echo disk > /sys/power/state).

Assim vi que o script do HAL quando não acha o pacote uswsusp ele tenta exatamente o modo kernel de suspensão fazendo exatamente:

 # echo "disk" > /sys/power/state

Por fim, meu problema se resumiu então a desinstalar o pacote uswsusp e agora já posso hibernar com minhas milhares de janelas rodando compiz, player de música, mensageiro, evolution sem problemas. Viva ! Recomendo que na sua partição de swap haja espaço suficiente, senão a compressão do snapshot da memória pode ser maior que a swap e daí não funcionará a hibernação. No mínimo mantenha tamanho da swap igual ao tamanho da sua memória, talvez por precaução deixar uns 10 ou 20% de margem à mais (visto que não sei o que é feito com os dados já armazenados na swap provenientes da execução normal dos programas, imagino que eles devam entrar no snapshot também).

Notebooks HP: o inferno

(21 Apr 2008 - 23:28)

Mais uma vez, tenho mais um motivo para odiar a HP, não pelo seus notebooks já que em particular o meu HP Pavilion DV6308NR? é muito bom. Mas sim pela sua falta de assistência técnica worldwide (independente da sua localização). Tenho um modelo de notebook fabricado nos EUA e assim não consigo suporte no Brasil nem a pau.

Já passei uma frustação tremenda tentando comprar a garantia estendida e agora foi a vez da placa wireless parar de funcionar para meu desespero.

O sintoma

A placa wireless Broadcom 4311 não mostra mais o LED azul e só fica no laranja. Para piorar o lspci não mostra mais a placa em sua listagem, e no windows o device manager não lista também o hardware (nem como oculto).

O problema

Aparentemente o problema é mesmo físico conforme os relatos:

Tentando resolver

Encontrei finalmente no site da HP:

Hmmm parece bom, mas na verdade recai no problema de enviar de volta aos EUA (merda!).

Entrei no chat da HP (para ser enrolado mais uma vez):

Harper: Hello Amadeu.
Harper: Welcome to HP Consumer Chat Support for Pavilion NoteBooks My name is Harper. Nice to have you with us on Chat Support.How may I assist you today?
Amadeu Barbosa: Hi I have a problem with my hp pavilion dv6308nr notebook.. The wireless card is not detected anymore neither is listed on device manager.
Amadeu Barbosa: Seems a hardware problem, but my warranty has expired (is a refurbished notebook)
Amadeu Barbosa: BUT I found this:http://h10025.www1.hp.com/ewfrf/wc/genericDocument?docname=c01087277&dlc=en&lc=en&cc=us
Amadeu Barbosa: and my model is listed.
Harper: Could I have a few moments of your time to study the problem closely?
Amadeu Barbosa: yeah
Harper: From your information I understand that on your notebook wireless led is glowing in Orange and on your notebook you are not able to connect to internet or network through wirelesslya, am I correct?
Amadeu Barbosa: yeah
Harper: Thank you for the confirmation.
Harper: Have you tried any troubleshooting steps to isolate the issue?
Amadeu Barbosa: always orange and it isn't listed on device manager (windows) or lspci on unix.
Amadeu Barbosa: yes, I remove the battery, enter in safer mode (windows), boot the linux on the basic mode and load kernel driver by hand, I tried the 30s push power button without power supply
Amadeu Barbosa: don't work
Harper: All right, Thank you for the information.
Harper: In this scenario we need to reset the BIOS ,then check the issue if the issue persists we have to update the BIOS and install the Wireless drivers on your notebook. After resetting the BIOS and updating the BIOS , installing the Wireless driver if the issue persists get back to us we would be glad to arrange free mailin repair if your notebook covered under Enchancement program.
Amadeu Barbosa: ok I going to try... another information please: I live in Brazil for now but my model is a US model, but there's brazilian models listed too in that site..
Amadeu Barbosa: so, Could I get support for this hardware issue in Brazil?
Amadeu Barbosa: I mean.. send the note/or_wireless to hp brazil and get back fixed?
Harper: Amadeu, as your notebook model is US , so we have to arrange a mail in service in US(you need to send the notebook to US to arrange a mail in serivice.
Amadeu Barbosa: the notebook whole? or just the wireless card?
Harper: Complete notebook.
Amadeu Barbosa: uoh.. terrible
Harper: I understand , why you feel in that way.
Amadeu Barbosa: and how to update bios properly?
Harper: I will provide all truobleshooting steps perform those steps offline.
Harper: Here are the steps to reset the BIOS

1. Turn on the computer.
2. At the HP Logo Press the F10 key.
3. When the BIOS boots up, press F9 to set up defaults.
4. Make sure the 'Yes' is highlighted and hit enter.
5. Press F10 to save the changes.
6. Make sure the 'Yes' is highlighted and hit enter.
7. The computer should then shut down and reboot. This will reset the BIOS to its default settings.
Amadeu Barbosa: hmm I already did these steps previously.
Harper: Okay, to provide the Correct version of BIOS I need the following information.
Harper: The Serial Number (eg: CNS34915MC) and Product Number (eg:DS542U#ABA) of your Notebook.
(...)
Harper: Thank you for the information.
Harper: Can I have a couple of minutes of your time to provide BIOS update the Wireless driver link/
Amadeu Barbosa: ok
Harper: Thank you for waiting, I appreciate your patience.
Harper: Here is the BIOS update link:

ftp://ftp.hp.com/pub/softpaq/sp38001-38500/sp38061.exe

Here is the Wireless driver.

ftp://ftp.hp.com/pub/softpaq/sp37501-38000/sp37746.exe
Harper: Note : Copy the URL and paste in the address box of the browser, then press Enter Key.
Amadeu Barbosa: ok
Harper: Amadeau, am I clear with the information?
Amadeu Barbosa: yes
Amadeu Barbosa: ops sorry wrong typos
Harper: Amadeu, after installing the BIOS update and wireless driver if the issue persists get back to us any one from our department would be gald to assist you further.
Harper: No probelm, Amadeu.
Amadeu Barbosa: ok

Minha provável solução?

Alguém tem uma placa wireless aí pra vender? E lembrem-se EVITEM comprar produtos HP CASO: (1) queiram morar fora do país sem trocar de notebook; (2) o produto seja importado como o meu; (3) queiram se irritar com um suporte ineficiente.

Sugestão?? Comprem produtos como os da Apple que têm garantia em qualquer lugar do mundo. Afinal se não for assim pra quê serve essa tal globalização? Só para nos estorquir de forma globalizada?

Outras informações

Alguns registros em fóruns brasileiros indicam que deve ser devido a super-aquecimento do chipset NVIDIA que em meu caso já vi alcançando 80 graus celsius. Nesse sentido a atualização de BIOS (para F.3D no meu caso) da HP realmente ajuda, pois agora a GPU tá em 60 graus e o resto na casa dos 40 (antes girava em torno de 60). Isso vai ajudar a prevenir o problema para quem ainda não o enfrentou.

A parte chata é que "a grande solução que é trazida no upgrade da BIOS" é deixar o cooler ligado continuamente, logo o barulho pode incomodar os mais preciosistas com o silêncio absoluto (mas nem é tanta zuada assim, bem menor que de uma saída de ar condicionado central como tenho aqui na sala onde trabalho/estudo).

novidades no compiz-fusion

(16 Apr 2008 - 04:03)

Simplesmente as tecnologias livres lhe permitem isso:

É um vídeo sensacional demonstrando os novos plugins no compiz-fusion, boa parte ainda no git como a área de trabalho em cilindro 3D, e o atlantis que faz seu pc ter uma vida marinha ativa. wink Do usuário técnico ao leigo todos vão amar isso !

Outros vídeos legais demonstrando o compiz-fusion:

Putz.. tem um vídeo massa explicando as funcionalidades do kiba-dock e mostrando como é melhor que o avant-window-navigator, eu já uso o awn super satisfeito mas agora é hora de testar o kiba-dock eheh: http://www.youtube.com/watch?v=n8QpEwXuZ5U

tau: framework para profiling em aplicações paralelas

(17 Mar 2008 - 13:02)

Definitivamente, o apt-cache search anda me dando bons resultados, dessa vez ainda com o mesmo search por profiling do post passado achei o TAU : Tunning and Analysis Toolkit que pode fazer profiling e tracking nas linguagens Fortran, C, C++, Java e Python. É útil para monitorar o funcionamento de aplicações multi-thread (pthread) mas há suporte para aplicações paralelas feitas em MPI ou PVM. Permite a instrumentação de código pode ser via uma ferramenta automática de instrumentação baseada em PDT, dinamicamente usando sua DyninstAPI, em tempo de execução da máquina virtual Java (por exemplo) ou ainda usando a API de instrumentação mais comum. Ufaa.. parece bem interessante ! Aí vão mais alguns links:

sac: ferramentas de controle de login

(17 Mar 2008 - 12:41)

Um post bem rápido.. enquanto eu procurava ferramentas de profiling via um apt-cache search me deparei com o SAC : login accounting, que é um ferramenta útil para tornar em formato mais legível as informações do wtmp. É uma ferramenta de administração útil para locais como cafés, bares e ponto de acesso público de internet (casa brasil, tabuleiros digitais, telecentros, etc). Um exemplo:

amadeu@sarang:~$ sac -p -a
italo                  1.25    4 logins      0.31 hrs/login
yuri                   2.80    6 logins      0.47 hrs/login
root                  14.78   26 logins      0.57 hrs/login
amadeu               671.28  298 logins      2.25 hrs/login

Outro exemplo do tempo em horas para o usuário amadeu (parece que ele soma o tempo de múltiplos terminais abertos):

amadeu@sarang:~$ sac -d -u amadeu --longdate
Sat Mar  1 2008  total       0.00
Sun Mar  2 2008  total       9.13
Mon Mar  3 2008  total      42.42
Tue Mar  4 2008  total      60.67
Wed Mar  5 2008  total      23.98
Thr Mar  6 2008  total      31.13
Fri Mar  7 2008  total      37.05
Sat Mar  8 2008  total      62.77
Sun Mar  9 2008  total      13.04
Mon Mar 10 2008  total      52.69
Tue Mar 11 2008  total      69.18
Wed Mar 12 2008  total      71.88
Thr Mar 13 2008  total      81.29
Fri Mar 14 2008  total      69.11
Sat Mar 15 2008  total      39.06
Sun Mar 16 2008  total       6.24
Mon Mar 17 2008  total       2.60

Enfim.. fica a dica para quem precisar usar. cool!

Perâmbulos mestrando-paranóicos de terça a noite

(27 Feb 2008 - 02:42)

Nada de caminhar (infelizmente) afinal temos um mestrado a dar conta, então fui "perambulando" pela rede em busca de um frontend para o collectd e tentando saber o quanto ele é realmente mais leve que o Ganglia. Esse foi o trace que ainda não resolve meu problema mas me faz lembrar que tenho que ficar de olho em outros horizontes wink (eita AndreLage se eu tivesse aí rpz.. já era..):

É... voltei ao brasil desse jeito... mais exatamente ao rio de janeiro, rua aguiar número 20 wink e minha persistente busca para "fazer direito o que precisa ser feito rápido" e lembrar de "promessas que ainda podem (e devem) ser cumpridas".

Gráficos arrumados em PDF e como coletar dados

(23 Feb 2008 - 01:13)

Curiosamente hoje eu conversava com um colega sobre a utilidade de se agrupar vários gráficos gerados por ferramentas como gnuplot em uma única página e quando cheguei em casa explorando o http://planet.debian.org vi um post interessante para isso do Vincent Fourmond:

Mais interessante ainda foi ver que tem um conjunto de ferramentas feitas em Ruby para cientistas !! eheheh !! O projeto é o SciYAG e o programa de plotting é o Ctioga: http://sciyag.rubyforge.org/ctioga/

Opa.. ainda antes de fechar este post acabei encontrando outra ferramenta interessante o collectd: http://collectd.org/. Serve para coletar periodicamente estatísticas de utilização da máquina (se propõe a não comprometer o desempenho e é feito em C) e salva no formato RRD que pode ser lido por ferramentas como o RRDtool. Também nesse sentido de monitorar desempenho, principalmente se você estiver em um ambiente de cluster ou grade, sugiro usar o Ganglia. Um exemplo? http://cluster.dcc.ufba.br, esse aqui eu mesmo configurei. wink

Blogs do TWiki.SoftwareLivre agora com posts de rascunhos

(16 Feb 2008 - 04:26)

Promovi mais um item da lista de desejos para a lista de funcionalidades implementadas para permitir aos usuários mais tranquilidade no momento de postar seus comentários em seus blogs:

  1. Inseri no BlogManaging um formulário opcional para que ao invés de fazer um post o usuário possa criar um novo rascunho de post
  2. Isso vai criar tópicos com baseado no nome BlogDraftPostWikiName%GMTIME{$year$mo$day$hours$minutes$seconds}%
  3. Por esta forma seus rascunhos não serão imediatamente incluídos na lista de posts válidos e não vai ser gerado feed RSS
  4. Após editar com calma seu rascunho e revisar, você poderá facilmente usar o link publicar ao lado dos links editar, anexar e mais para renomear automaticamente seu rascunho para um nome de post válido e assim entrar passar a gerar feed RSS
  5. Também criamos uma lista de rascunhos que já é inserida por padrão para evitar que o usuário pense que "perdeu" um rascunho que ele vinha editando
  6. Aproveitei e coloquei umas figurinhas no editar, anexar e mais wink

Experimente e se não gostar sugira mudanças. wink