Linguagens de Programação na Indústria

Um artigo da eWeek relaciona algumas linguagens e os motivos pelos quais deve-se aprender cada uma delas.

Um dado interessante do artigo é o número de vagas de trabalho disponíveis no mercado, para cada skill de linguagem, extraidas de dice.com.

Coloquei em ordem crescente de número de vagas:

  1. Ruby e Ruby on Rails :: Job availabilities: 210 and 54, respectively
  2. Python :: Job availabilities: 811
  3. AJAX :: Job availabilities: 1,106
  4. PHP :: Job availabilities: 1,152
  5. VB.Net :: Job availabilities: 2,090
  6. JavaScript :: Job availabilities: 4,406
  7. Perl :: Job availabilities: 4,810
  8. C# :: Job availabilities: 5,111
  9. C :: Job availabilities: 6,164, including all derivatives
  10. Java :: Job availabilities: 14,408

Note que os números nada tem a ver com a qualidade, funcionalidade ou facilidade inerente da linguagem de programação/tecnologia. Mas os números parecem dar uma pista da presença, maturidade e ecossistema de cada uma delas no mercado.

É o que um amigo meu diz: “Tu tem que ir de megafone para a avenida Paulista as 12:30 e perguntar quem é que manja de tal tecnologia ou produto. Esse é um bom indicador de seu ecossistema.”

A Mais Importante Notícia do Ano

Open Source JavaA Sun abriu o código fonte de sua implementação do Java.

Teria muitas coisas positivas para falar sobre isso, mas o Kov já disse boa parte, e o Simon Phipps também.

Faltava no mundo Open Source uma linguagem/tecnologia de desenvolvimento universal, madura, altamente padronizada com portabilidade em mente, e com ecossistema vigoroso em toda a indústria. Java tem todos estes atributos.

Essa carência, somado ao fato de Java não ser instalado automaticamente quando se instalava qualquer Linux (por questões de lincenciamento), fervilhava o idealismo da comunidade Open Source fazendo os programadores lançarem mão de outras linguagens/tecnologias que ou tem portabilidade questionável (como C, C++, por causa de suas bibliotecas), ou que ainda não se estabeleceram com maturidade, performance e ecossistema industrial (como PHP, Perl, Python, Ruby), ou ambos (como C#, Mono). O resultado na indústria é uma descentralização de skill de desenvolvimento de software de negócio.

Java entrando no cenário Open Source muda tudo isso. Será benéfico para o ecossistema de Computação Aberta, e principalmente para o de Linux como plataforma de negócio.

Minha previsão agora, é que as JVMs da IBM, Bea etc serão também abertas em breve para logo depois se fundir numa JVM/JDK única de alta performance, portável, modular, facilmente instalável, e de bem estabelecido ecossistema.

É a maior notícia do ano para TI. Talvez da década.

Google Maps Plugin for WordPress

This software will let you easily render Google Maps anywhere on your blog as a web service. It also includes code for easy integration with WordPress blogs, but what the code does best can actually be used with any other blog system or plain web page.

This plugin will let you easily create from simple maps with one marker and a text balloon, to complex multimarker maps with hypertext balloons as this page.

Installation on WordPress Blogs

Install it as any other plugin (unziping plugin files under [WORDPRESS_ROOT]/wp-content/plugins directory and activate it in WP Plugins admin tool). Then go to the Google Maps API key signup page, get an API key for your website, and install it in the plugin’s admin page under Options.

Google Maps WP admin page

Creating Simple Maps

This is the easy part.

  1. Go to Google Maps, find the spot you want to show, select Map, Satelite or Hybrid view buttons, double-click on the most important point on the map to centralized it, and define the zoom factor you want.
  2. On the left-top corner of the map, click on the “Link to this page” link, and copy your browser’s location to the clipboard. You can do the same for complex maps created on the My Maps section of Google Maps website.

    Link selection

  3. While creating the post, select the text that will be displayed on the map marker, and create a link with it.

    Select text for the map's mrker

  4. Paste the map URL on the Link URL field, and on Title write “googlemap“.

    Link creation dialog

  5. Continue editing your post and publish.

You are done. This example will render a map like this (don’t forget to click on the marker to see the balloon):

TuxThis will be a map’s marker text with an image.

Passing Parameters

You may have noticed that on the Title field above we used other commands. In fact you can use the following switches, separated by “;” to control the way the map will appear in your site.

googlemap
Instructs the plugin to transform this link into a Google Map area. If not used, the plugin will not work on the link and you’ll get a plain link to the Google Maps site.
nocontrol or nocontrols
Renders a map without the zoom and scale controls
nomarker or nomarkers
Renders a map without the marker with the information balloon.
w:SIZE_IN_PIXELS and h:SIZE_IN_PIXELS
Defines the size of the map area in pixels.
w:PERCENT% and h:PERCENT%
Defines the size of the map area relative to full width and height.

Since other plugins may use the title attribute, you can also put these commands in the rel attribute and activate this functionality in the plugin configuration dialog.

Some examples for the Title (or rel) field:

googlemap
Renders a map with controls, marker an default sizes, as specified in the plugin’s admin page, under WP Options.
googlemap;nocontrols;w:300;h:200
Renders a 300×200 map with marker but no zoom controls.
googlemap;nomarker;nocontrols;w:100;h:100
Renders a small 100×100 map without marker and zoom controls.
googlemap;nomarker;nocontrols;w:100%;h:300
Renders a maps that fills the full width available with a 300 pixels height, without markers and zoom controls.

Creating Complex Maps

This procedure requires some HTML knowledge, but will let you create maps with multiple markers, and results as good as on this post.

The proccess consists of creating a definition list (<dl> XHTML element) of a center point and markers with their text balloons.

Learn by example. Pay attention to the following complex map, and select all its markers to see the text inside their balloons:

Center of map
map
Center of São Paulo
map
Flea market
map
Traditional market
balloonless marker
map
Japanese town

It was generated by this (X)HTML code:

<dl title="googlemap;w:100%;h:400">
	<dt><a href="http://maps.google.com/?z=15&ll=-23.550887,-46.631985&om=1">Center of map</a></dt>

	<dt><a href="http://maps.google.com/?ll=-23.550592,-46.633122">map</a></dt>
	<dd><strong>Center of São Paulo</strong></dd>

	<dt><a href="http://maps.google.com/?ll=-23.547563,-46.631041">map</a></dt>
	<dd>Flea market</dd>

	<dt><a href="http://maps.google.com/?ll=-23.54535,-46.627693" title="marker">map</a></dt>
	<dd>Traditional market</dd>

	<dt><a href="http://maps.google.com/?ll=-23.54715,-46.637263">balloonless marker</a></dt>

	<dt><a href="http://maps.google.com/?ll=-23.555195,-46.635547" title="marker">map</a></dt>
	<dd>Japanese town</dd>
</dl>

So the structure must folow these rules:

  1. Create a definition list (<dl>) and put map-related commands and parameters on title= attribute as specified above.
  2. First definition term (<dt>, first green line) must contain only a link to Google Maps site, to define its center and other map parameters. The text for the link is ignored when a map is generated, so use a text like “Center of Map” so people accessing your posts outside your blog (for exemple, through feed readers) will have a clue what is this link for.
  3. The rest is a pair of terms and definitions (<dt> and <dd>) with the marker position (as a Google Maps URL) and the text on the balloon respectivelly.
  4. You can create a balloonless markers specifying only a <dt> without a <dd>.
  5. Whatever you put inside the <dd> block will appear inside the balloon. Put links, images, lists, tables, etc.

Using Google My Maps or KML and GeoRSS maps

You can use Google My Maps service to create and manage colorfull markers, paths, regions and the text inside the balloon, and simply use the “Link To This Page” link to embed the map in your page as described above.

The plugin will use the KML-exported version of your map to create the balloons, markers, regions and paths. Simply exaplained, KML is XML dialect that contains all meta information of your maps: markers positions and images, line colors, balloon texts, etc. You can create KMLs with tools like Google Earth, Goole Maps or even using a plain text editor. GeoRSS format is also supported but can’t be used for paths, regions and markers colors, only plain geographical positions.

The good news is that you can embed KML-maps from any source, and not only from Google My Maps. You can upload a KML file to your web server and pass it to the plugin to render it. Here is an example on how to do it in a more advanced way:

<dl title="googlemap;w:100%;h:400" id="my-wonderful-map-with-kml">

	<dt><a href="http://maps.google.com/?z=7&ll=-23.550887,-46.631985&om=1">Center of map</a></dt>

	<dt><a title="kml" href="http://my.server.com/spots-on-the-farm.kml">markers</a></dt>

	<dt><a title="kml" href="http://my.server.com/spots-on-the-beach.kml">more markers</a></dt>

</dl>

This example will render a map centralized on geo position -23.550887 -46.631985 and overlay it with two KML specifications: spots-on-the-farm.kml and spots-on-the-beach.kml. Note the required title=”kml” parameter that indicates to the plugin that this is KML or GeoRSS overlay and not a plain marker position.

Positioning and Style Possibilities

To have better control over the map positioning and overall look, you can manually edit the HTML code while posting, including style and class attributes. Find the <a> or <dl> tag for your link and use this examples to get some clues:

  • <a style=”float:left; width:300px; height:300px;” title=”googlemap”
    Renders a 300×300 map floating on left of the paragraph. See example.
  • <a class=”photo” style=”float:right;” title=”googlemap”
    Renders a map with default dimensions floating on the right of the paragraph, with style class photo, that in my theme defines some margins and borders.
  • <dl style=”visibility: hidden;” title=”googlemap”
    Using style=”visibility: hidden” will make the browser hide the map definititon text while loading the page. Seconds later, when the plugin renders the maps on your page, the hidden blocks will finaly appear as maps.

The HTML attributes id=, style= and class= you specify will be inherited by the generated map.

In addition, a CSS class called map will be added to all maps, and to all balloons a CSS class named balloon will be assigned. This way you can define your own style for these elements.

Troubleshooting

Some common problems people have, and solutions.

  • Map does not appears or appears on a different geo locationMake sure the Google Maps URL you are pasting is correct and complete. A correct URL must have the following parameters: ll= required to define latitude and longitude for center of the map or a marker, om= option to show or not the overview map on bottom-right, z= required to define the initial zoom factor, t= option to define if map is plain, satellite or hybrid, msid= required if you are pasting My Maps from Goole Maps website.
  • Problems with &You should not have problems with & chars being modified by the WordPress editor. If so, it means you are working with complex maps. Yes, WordPress WYSIWYG editor sucks a little bit. So if you are working with complex maps, you should switch to the plain text editor. You can’t just open the post editor in WYSIWYG and select the plain text editor after that. The mess was already done. You will have to edit your profile under Users->Your Profile and deselect the “Use the visual editor when writing” options when you edit that post. Once it is saved you can reselect it again.
  • Grey area instead of markers, or simply don’t have markersGoogle Maps API uses a lot of CSS style to render its maps on your page. This problem is caused by a conflict between CSS needed by Google Maps and your page or theme defined style. Use Firefox’ DOM inspector to drill down into your document structure until you find the markers XHTML nodes. Then switch to CSS Style Rules mode on the inspector, then select a rule that was defined by your theme, on the top-right box, then delete “background-” related properties on the bottom-right box, one by one, until the marker appears. This will indicate you which property you have to delete from your theme’s or own style.css file.
  • Problems displaying the map on IE7

I still don’t know what is the problem here. I rarely use Windows nor IE, so I can’t reproduce it. This is probably caused by the same CSS conflict above. If you can correctly see the map on this page with IE7, indicates that the problem is specific to your page and related stylesheets. You must debug your CSS styles.

No WordPress ?

If you use other blogging systems, or just want a simple way to create maps on your pages you can still take advantage of this plugin.

Download the plugin, unzip, install its content somewhere on your server accessible from the web. Then edit the HTML source of the pages you want to render maps, find the <head> block, and include the following code inside of it:

<!-- Google Maps Plugin (begin) -->
<!-- http://avi.alkalay.net/2006/11/google-maps-plugin-for-wordpress.html -->

<!-- Google Maps API -->
<script src="http://maps.google.com/maps?file=api&v=2.x&key=MY_API_KEY" type="text/javascript">
</script>

<!-- Google Maps Plugin logic -->
<script src="http://my.site.com/path/to/plugin/googlemapsPlugin.js" type="text/javascript"></script>

<!-- Google Maps Plugin initialization -->
<script type="text/javascript">
	//<![CDATA[

	MapPluginInit(
		/* Default maps width  */          500,
		/* Default maps height */          300,
		/* Use rel instad of title? */     false);
	//]]>
</script>

<!-- Google Maps Plugin (end) -->

Change the red parts to fit your needs. Every page containing the above block will be able to render simple and complex maps as described.

About

This plugin was inspired on Macdiggs Google Maps plugin, but was completely redesigned, rewritten, has much more functionality, made more user friendly, has cleaner code and is more standards oriented. The former Macdiggs’ plugin will not receive updates anymore so this is the plugin you should be using.

Instalando Java e Eclipse em Linux

permalink Porque Java com Linux ?

Nos primórdios das tecnologias, todas elas nasciam proprietárias porque seus criadores queriam explora-las ao máximo, por serem todas novidades.

Depois da popularização do PC, e mais ainda, da Internet, fabricantes começaram a se reunir ao redor de Padrões Abertos para criar uma rede de valor onde todos — fabricantes e usuários — acabam ganhando.

Os Pilares do e-businessExistem hoje inúmeros Padrões Abertos, mas os que se destacam são os seguintes:

  • HTML
    É a representação universal de interfaces com usuários. Hoje qualquer usuário de computador sabe usar um browser e navegar através de um hipertexto. HTML, ou melhor ainda, hoje, DHTML ou AJAX, é o padrão aberto para aplicações interagirem com usuários.
  • XML
    Antes de XML, não havia um padrão aberto amplamente aceito que permitisse qualquer aplicação falar com qualquer outra aplicação, mesmo de fabricantes diferentes. XML se tornou a base dos Web Services e Arquitetura Orientada a Serviços, que traz o benefício da integração de processos, com parceiros, clientes e fornecedores.
  • Java Enterprise Edition
    Java é a tecnologia escolhida por toda a indústria para transformar processos de negócio em software. É o Padrão Aberto para se escrever aplicações. Antes de Java, desenvolvedores usam diversas linguagens, sem uma metodologia universal de programação e sem nenhum padrão de bibliotecas de alto nível. JEE (Java Enterprise Edition) é um padrão de biblioteca com métodos universais para aplicações de negócio.
  • Linux
    É o sistema operacional escalável e multiplataforma para rodar tudo isso. É o componente aberto que faltava para ligar a lógica de negócio com padrões abertos de HW.

Essas quatro tecnologias juntas provém tudo que um desenvolvedor precisa para criar suas aplicações de negócio.

permalink Java comparado a C/C++, PHP, Perl e Python

Cabe ao desenvolvedor escolher a linguagem/tecnologia certa para a aplicação certa. Não só os aspectos tecnológicos devem ser levados em conta, mas também aceitação no mercado, aderência a padrões, reputação, política de atualização da tecnológica, prontidão para uma aplicação de negócios, etc.

  • C é uma linguagem criada para desenvolver sistemas operacionais, ou algoritmos de baixo nível, quase no nível da máquina, e é nesse nível que essa linguagem se sai melhor. C++ surgiu a alguns anos trazendo orientação a objetos, mas ambas linguagens falharam em padronizar suas semânticas e, principalmente, bibliotecas multiplataforma abertas, e de uso genérico. A não ser que você esteja escrevendo sistemas operacionais, ou bibliotecas de acesso a hardware, uma linguagem mais prática que C ou C++ deve ser escolhida para desenvolver sua aplicação de negócio.
  • PHP é uma linguagem/tecnologia desenhada para criar páginas web dinâmicas. Seus programas são geralmente mesclados com código HTML e equivale a JSP e ASP. É muito usada e provou seu valor, porém tem pouca penetração no mundo corporativo e de aplicações de negócio (de fabricantes de SW), e por isso pouco suporte da indústria para que a tecnologia evolua como um padrão. Então, por ser um investimento de risco, dificilmente uma grande empresa vai escolher PHP como tecnologia estratégica para a confecção de suas aplicações críticas, mesmo porque PHP é mais madura somente para aplicações web.
  • Perl é abreviação de Practical Extract and Reporting Language, que sugere ter sido criada para manipular texto. A linguagem e suas bibliotecas cresceram para muito além disso, e há hoje quem a use para fazer grandes sistemas. Porém isso é considerado um exagero de uso, pois os programas são interpretados em tempo de execução, o que acarreta performance limitada, e é de fato desenhada para automatizar tarefas de sistema operacional. Python, apesar de ser mais moderna e poder ser compilada, não foge muito deste escopo também. Além disso, ambas ainda não conseguiram uma aceitação comercial madura, e, não representando um investimento seguro a longo prazo, ainda não tem sido escolhidas como estratégicas para a fábrica de SW de uma empresa, ou para um sistema complexo e de missão crítica.

Em contrapartida, a tecnologia Java tem as seguintes características:

  • Atingiu um nível de maturidade e aceitação de toda a industrial que o torna um investimento seguro quando da escolha de uma plataforma de desenvolvimento de aplicações de negócio.
  • Evolui de acordo com as decisões de um comitê independente chamado Java Community Process, onde empresas e indivíduos votam igualmente para a aceitação de uma novidade. São integrantes ativos do JCP empresas como IBM, Apache Software Foundation, Dolby Laboratories, JBoss, SAP, Oracle, Nokia, Sony, etc. Lista completa em http://jcp.org/en/participation/members.
  • Toda a indústria respeita as decisões do JCP, evitando o surgimento de derivados (forks) de comportamento diferente.
  • É um grande polo tecnológico, tendo somente .NET como seu polo oposto e concorrente (e ainda imaturo de certa forma).

permalink Instalando Java Em Linux

Há muitas formas de instalar a JVM em Linux, mas há somente uma forma correta: usando RPM através do repositório JPackage.

permalink Sobre Repositórios de RPMs

A instalação de um pacote RPM pode falhar se outro pacote precisa ser instalado antes. Isso é conhecido como o inferno das dependências.

Para resolver este problema a comunidade criou ferramentas de instalação de pacotes como o Yum e o APT, que, junto com os metadados oferecidos por um repositório de RPMs, liquidam este problema calculando tudo que é necessário fazer para instalar certo pacote, atualizando automaticamente pacotes já instalados, ou instalando novos, tudo para satisfazer as dependências do pacote que o usuário deseja instalar.

Um repositório é um site na web que contem vários RPMs e metadados de interdependências sobre esses pacotes, que são usados por ferramentas como yum e apt-get.


permalink
O projeto JPackage e seu Repositório de RPMs

jpackage logoO JPackage é um repositório de RPMs de alta qualidade de softwares relacionados a Java. É uma comunidade de pessoas que empacotam em RPM as JVMs mais conhecidas do mercado, bem como softwares Java populares como Tomcat, Eclipse, Jakarta, etc.

A primeira pergunta que surge depois que dizemos isso é: “Mas as JVMs da Sun, IBM, etc já não são disponibilizadas em RPM ?�? Sim, mas cada fornecedor empacota como bem entende, sem seguir nenhum padrão de diretórios ou do sistema operacional. E essa despadronização faz a tecnologia como um todo ser mais difícil de usar.

O Projeto JPackage resolveu isso definindo uma organização de diretórios que permite multiplas JVMs, e lugares padronizados para arquivos JAR, WAR, EAR, etc. O JPackage inovou simplesmente aplicando os conceitos do Filesystem Hierarchy Standard — um padrão aberto dos mais importantes para Linux — aos softwares Java.

O resultado é tão bom, que a Red Hat, SUSE, Mandriva e outros adotaram o padrão JPackage de empacotamento e diretórios para tudo que se refere a Java em suas distribuições (RHEL, Fedora, SLES, SLED, OpenSUSE, NLD, Mandriva, etc).

permalink Problemas do JPackage

O JPackage tem uma diretriz de fornecer em seu repositório somente RPMs de softwares livres. Por isso, softwares que não tem licenças livres estão lá somente como RPMs-fonte, que não são tão simples de se instalar, mas mesmo assim promovem a organização e a qualidade do JPackage. Entre esses softwares estão a própria JVM, que vamos demonstrar sua instalação agora.

permalink Inicializando o JPackage em seu sistema

Antes de instalar qualquer RPM oferecido pelo JPackage, você precisa configurar as ferramentas que acessam e instalam os pacotes automaticamente no seu sistema.

Nos nossos exemplos, vamos usar o Fedora Linux com YUM. Pode-se optar pelo apt-get ao invés do YUM, ou de outra distribuição Linux ao invés do Fedora. No caso do Red Hat Enterprise Linux ou CentOS, o processo é idêntico.

permalink Tenha o YUM ou apt-get no seu sistema

No caso do Fedora 4, RHEL 4 ou CentOS 4, já temos o YUM instalado no sistema, e só teremos que configura-lo.

No caso de outro Linux, você pode testar se estas ferramentas estão instaladas simplesmente executando o comando yum ou apt-get.

Se você finalmente concluiu que não as tem, encontre-as aqui:

Nos nossos exemplos, vamos usar o Yum.

permalink Configure o YUM para usar o repositório JPackage

Basta instalar um arquivo de configuração no diretório /etc/yum.repos.d/ desta maneira:

bash# cd /etc/yum.repos.d/
bash# wget http://www.jpackage.org/jpackage.repo

Edite o arquivo jpacakge.repo que você acabou de baixar habilitando e desabilitando os canais de RPMs específicos para seu sistema. Por exemplo, no nosso Fedora Core, garantimos que os canais jpackage-generic e jpackage-fc contém a linha “enabled=1�?.

permalink Instale o primeiro pacote

O pacote jpackage-utils deve estar instalado para começar usar o repositório. Nas últimas versões das distribuições populares, ele já está instalado. Nesse caso é boa idéia atualiza-lo.

Para fazer isso:

bash# yum install jpackage-utils   # No caso de não estar instalado ainda.
bash# yum update jpackage-utils    # Para atualiza-lo.

permalink Instalando a Máquina Virtual Java (JVM)

Esta é uma das partes mais difíceis porque por questões de licensa o Projeto JPackage não tem permissão para prover o RPM pronto para ser instalado de softwares que tem licensa restrita. É o caso de todas as JVMs comerciais. O JPackage provê o pacote fonte que a partir dele pode-se construir fácil, porém manualmente, o RPM instalável. E vamos demonstrar isso aqui.

permalink JVM da IBM

Seguimos estes passos:

  1. http://www.jpackage.org
  2. Procuramos e baixamos o nosrc.rpm da JVM da IBM. A última vez que olhamos estava em http://mirrors.dotsr…./java-1.5.0-ibm-1.5.0.2.3-3jpp.nosrc.rpm
  3. Consultamos o pacote para descobrir de onde se baixa a JVM da IBM com o comando rpm:
    bash# rpm -qpi java*nosrc.rpm
    Name        : java-1.5.0-ibm               Relocations: (not relocatable)
    Version     : 1.5.0.2.3                         Vendor: JPackage Project
    Release     : 3jpp                          Build Date: Tue 15 Aug 2006
    Install Date: (not installed)               Build Host: tortoise.toronto.redhat.com
    Group       : Development/Interpreters      Source RPM: (none)
    Size        : 395165271                        License: IBM Binary Code License
    Signature   : (none)
    Packager    : Thomas Fitzsimmons
    URL         : http://ibm.com/developerworks/java/jdk/linux/download.html
    Summary     : IBM Java Runtime Environment
    Description :
    This package contains the IBM Java Runtime Environment.

    e descobrimos que devemos procurar na URL marcada.

  4. Fomos para http://ibm.com/developerworks/java/jdk/linux/download.html, nos registramos, escolhemos baixar a SDK 1.5 (que é a versão do RPM) em formato tar-gzip (tgz). Tivemos que baixar também a biblioteca javacomm do mesmo lugar. No fim copiamos tudo para o diretório de fontes para RPMs assim:
    bash# cd /diretorio/onde/baixei/SDK
    bash# cp ibm-java2-sdk-50-linux-i386.tgz /usr/src/redhat/SOURCES
    bash# cp ibm-java2-javacomm-50-linux-i386.tgz /usr/src/redhat/SOURCES

    No SUSE, copie para /usr/src/rpm/SOURCES.

  5. Construimos os pacotes finais com este simples comando:
    bash# cd /diretorio/onde/baixei/nosrc.rpm
    bash# rpmbuild –rebuild java*nosrc.rpm

    e vimos uma série de coisas acontecendo: é a construção do pacote.

  6. Quando terminou, encontramos todos os pacotes gerados em /usr/src/redhat/RPMS/i386. Instalamos todos assim:
    bash# cd /usr/src/redhat/RPMS/i386
    bash# rpm -Uvh java*ibm*rpm

    e a JVM da IBM está instalada.

O padrão JPackage definiu que a JVM deve ser a soma de uma série de sub-pacotes, todos com nome padronizado, e os que geramos neste exemplo são:

java-1.5.0-ibm-1.5.0.2.3-3jpp.i386.rpm A JRE mínima. É o pacote básico que você deve instalar.
java-1.5.0-ibm-alsa-1.5.0.2.3-3jpp.i386.rpm Suporte a arquitetura de audio ALSA do Linux.
java-1.5.0-ibm-plugin-1.5.0.2.3-3jpp.i386.rpm Java Plugin para os browsers Mozilla e Firefox. Não obrigatório.
java-1.5.0-ibm-devel-1.5.0.2.3-3jpp.i386.rpm O compilador Java e a SDK. Instale-o se você vai programar em Java.
java-1.5.0-ibm-src-1.5.0.2.3-3jpp.i386.rpm Fontes de programas em Java, para estudo e teste.
java-1.5.0-ibm-jdbc-1.5.0.2.3-3jpp.i386.rpm Driver JDBC genérico para o unixODBC genérico. Não é necessário se você vai usar o driver JDBC de seu banco de dados.
java-1.5.0-ibm-demo-1.5.0.2.3-3jpp.i386.rpm Alguns programas demo. Não é obrigatório.
java-1.5.0-ibm-javacomm-1.5.0.2.3-3jpp.i386.rpm Java Communications API para Linux.

No JPackage há modelos de empacotamento (src.rpm) das JVMs da IBM, Sun, BEA e Blackdown. Para instalar qualquer uma delas, você terá que construir o RPM como demonstramos aqui.

A diferença entre elas está no nome do RPM (“ibm�?, “sun�?, “blackdown�?), e você pode ter instalado em seu sistema JVMs de vários fornecedores simultaneamente. Os RPMs de todos os fornecedores, segundo o padrão JPackage, obedecem esta mesma convenção de nomes de sub-pacotes.

permalink Instale Outros Softwares Java que Não Tem Fonte

Será necessário instalar outros RPMs sem fonte para usar corretamente outros pacotes populares do JPackage. Tentanto instalar o tomcat, verificamos que ele necessita do JTA, que é uma API de transações.

Então repetimos os conceitos do passo anterior:

  1. Começamos em http://jpackage.org
  2. Procuramos e baixamos o nosrc.rpm da JTA. A última vez que olhamos estava em http://mirrors.dotsrc.org/jpackage/1.6/generic/non-free/SRPMS/jta-1.0.1-0.b.4jpp.nosrc.rpm
  3. Consultamos o pacote (ou as infos sobre o pacote em jpackage.org) para descobrir de onde se baixa a JTA, com comando rpm, e descobrimos que precisamos procurar em http://java.sun.com/products/jta/.
  4. Desta vez, tivemos que baixar dois ZIPs: o de classes e o de documentação. E copiamos ambos para o diretórios de fontes de RPM
    bash# cd /diretorio/onde/baixei/JTA
    bash# cp jta*-classes.zip jta*-doc.zip /usr/src/redhat/SOURCES
  5. Construimos os pacotes finais e instalamos os RPMs gerados:
    bash# cd /diretorio/onde/baixei/nosrc.rpm
    bash# rpmbuild –rebuild jta*nosrc.rpm
    bash# cd /usr/src/redhat/RPMS/noarch
    bash# rpm -Uvh jta*rpm

    E a JTA está instalada.

permalink Instalando outros Softwares Java pelo JPackage

Neste ponto, você já tem o repositório JPackage configurado no seu sistema, e a JVM de sua escolha instalada conforme ditam os padrões FHS de diretórios do Linux.

Agora é muito fácil instalar qualquer outra aplicação, biblioteca ou JAR disponível no JPackage, representado pelo nome do pacote na lista a esquerda em http://www.jpackage.org.

Para instalar ou atualizar um pacote, bastam os seguintes comandos respectivamente:

bash# yum install [nome do pacote]    # Para   instalar.
bash# yum update [nome do pacote]     # Para atualizar.

O YUM, usando os metadados do repositório, vai resolver todas as dependências, baixar tudo que for necessário, e instalar os pacotes.

permalink Exemplo: Instalando o Apache Tomcat

O Apache Tomcat é um servlet container, que se integra ao webserver e permite a criação e execução de aplicações web feitas em Java (servlets).

Para instalar o Tomcat, segundo nosso exemplo anterior, basta:

bash# yum install tomcat5

Após resolver todas as dependências, o YUM determinou que para instalar o Tomcat, seria necessário instalar também vários módulos do Jakarta, Axis, módulos de XML, etc. E tudo foi automaticamente baixado e instalado num mesmo passo.

permalink Instalando o Eclipse

O Eclipse foi a princípio uma poderosa ferramenta de desenvolvimento de aplicações, ou IDE.

Desde a versão 3, ele foi reestruturado para ser um “servidor de aplicações�? de desktop. Ou seja, se tornou o que chamamos de Rich Client Platform — ou RCP — que é uma base genérica que provê a infraestrutura padronizada que qualquer aplicação de desktop precisa. O IDE então passou a ser uma aplicação, um plugin, do RCP. O IDE Java está no JPackage com o nome de eclipse-jdt, e para instala-lo, basta:

bash# yum install eclipse-jdt

Como sempre, todos os outros módulos necessário para estes componentes serão automaticamente selecionados e instalados.

O ícone do Eclipse deve aparecer no menu inicial, pronto para ser usado.

Soleil Theme for WordPress

Soleil screenshot

The Soleil theme for WordPress was based on the original creation and colors by designer Carrie Petri for other blog systems. I just mixed the PHP code and some technical ideas thowards what a blog system should be.

Althought it looks really good, Soleil is way more than eye candy. It is unique due to this main features:

  1. Localized on demand
    The blog generic control strings will appear in visitor’s language that he set on his browser. Also, all blog-specific strings as category names, post titles and personal links may have hooks for personal localizations. See bellow how to activate this feature.
  2. Widgetized sidebar
    Soleil provides all its sidebar content as widgets. If you use the WordPress Widget Plugin, you’ll be able to visually rearrange the sidebar and also visually use more widgets from a vast network of developers.
  3. Very friendly to feed readers
    Every aspect of a Soleil blog provides clear and intuitive links and icons to its feed version. Categories archive pages, comments, list of categories on the sidebar, etc. Browse my blog to see what I’m talking about.

All artwork was completely redrawed in CAD systems and in OpenOffice.org Draw to improve images quality. The vector files are included.

Other benefits of this theme are:

  1. Shiny and vibrant colors, thanks to Carrie.
  2. Certified to work on Firefox 2, IE 6 and Konqueror. This gives a clue it will look good in any other browser.
  3. Efficient, yet well balanced use of the entire screen.
  4. Intuitive icons for reply, trackback, blog, post and category feeds, etc.
  5. Clear visual separtion between each post, each comment, etc.
  6. Shows number of comments in evidence.
  7. Direct links to post and comment editing (for administrator only).
  8. Includes a style for printing that hides parts of the page irrelevant to this media.
  9. Provide list of links with icons to popular feed readers.

Download the theme archive, unzip it in your [WORDPRESS_ROOT]/wp-content/themes directory, and select it in the Presentation tab of your WordPress admin interface. Organize the sidebar widgets (if you use the recomended Widgets Plugin) on the admin interface, Presentation -> Sidebar Widgets.

Soleil Predefined Style Classes

Soleil provides some CSS classes that I heavily use in my posts:

photo
To be used on image tags. Add margins, padding and a slim border. Use it like this:

<img class="photo" style="float right" …
command
From the docbook series and for technical writers, renders a computer command in evidence. Use it like this:

<span class="command">ls -al</span>
programlisting and screen
From the docbook series and for technical writers, renders a box with special fixed size font as a computer output or programlisting. Adds scrollbars if content is too wide, to not breake your layout. Usage:

<pre class="programlisting"> 
	// sourcecode of a program 
	code { 
		Some code 
	} 
</pre>

or

<pre class="screen"> 
	bash$ ls -al 
</pre>
filename
From the docbook series and for technical writers, renders a filename in evidence. Use it like this:

<span class="filename">/bin/kdb</span>
xmlbutton
An XML button maker, the one very popular on blogs etc. To get a button like My XML button, use as:

<a class="xmlbutton" href="http://someplace">My XML button</a>
articleinfo
Creates a nice may-be-floating box for you to show some information about the post. The box will appear in evidence but outside the stream of the text. See an example on this post. Usage:

<div class="articleinfo" style="float: right">Some info about this article.<div>

You should also use <h4> as the header for subtitles inside posts.

Displaying Links Correctly on Sidebar

Many blogs that use Soleil have their links looking bad on their sidebar. To fix this, you should go to your blog admin interface, select Links->Link Categories and edit each link category’s properties in a way that each item will be wrapped into an HTML <li> tag.

For example, my blog categories have Before Link: <li> and After Link: </li>

Soleil Localization and Internationalization

Soleil’s default language is english, and is currently localized to portuguese.
To localize Soleil to you language, go to soleil/languages and copy the theme-pt.po (portuguese language) file to theme-YOURLANGUAGECODE.po and edit it to fit your language needs. The file format is very intuitive and it contains all generic messages the theme uses.

You can also localize your blog specific strings as your category names, blog name, blog description, and even some posts titles. For this you have to edit personal-YOURLANGUAGECODE.po in the same way.

To compile a .po file, on Linux do this:

bash$ msgfmt -c -v -o theme-YOURLANGUAGE.mo theme-YOURLANGUAGE.po 
bash$ msgfmt -c -v -o personal-YOURLANGUAGE.mo personal-YOURLANGUAGE.po

The .mo files must be located under soleil/languages/ while the .po don’t have to be under your blog installation, live them in your PC only.

To activate on demand localization based on visitor’s prefered language, ensure your wp-config.php file contains this:

define ('WPLANG', substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));

Enjoy.

Unbreakable Linux: Mais uma Distribuição Enterprise

A Oracle anunciou a distribuição Unbreakable Linux na semana passada. Ela será tecnicamente idêntica ao Red Hat Enterprise Linux (RHEL), com excessão da logotipagem e trademarks da Red Hat, incluindo — conforme anunciado — um suporte de preço inferior ao da Red Hat.

Unbrekble LinuxO mercado ainda não entendeu o que este passo significa, e muitos interpretaram (e celebraram) como um suporte mais amplo ao RHEL por parte da Oracle. Na verdade a Red Hat se pronunciou em seu Unfakeable Linux.

Por que copiar o Red Hat Enterprise Linux? Porque é uma distribuição muito popular e porque desde sempre foi desenhada para ser genérica, ou seja, é muito fácil tirar a logotipagem da Red Hat e colocar o seu próprio nome. O resultado é uma distribuição idêntica (bit a bit) ao Red Hat Enterprise Linux (com exceção dos logotipos), e que se comporta exatamente da mesma forma que o RHEL se comportaria ao interagir com diversos hardwares e softwares: a compatibilidade do hardware e software catalog da Red Hat é tecnicamente herdada, mas não leva o carimbo formal de certificação da Red Hat.

Essa idéia não é nova e outras iniciativas já faziam isso antes: WhiteBox, CentOS, Scientific Linux. Isso é possível graças a tecnologia Open Source chamada RPM que “documenta” numa linguagem de máquina todo o processo de compilação, integração e instalação dos softwares, a ponto de ser facilmente reproduzivel em qualquer ambiente. Já havia explicado este processo antes a partir deste slide, nesta apresentação.

Como o software é idêntico, os bugs também são herdados, e é ai que começa o problema. As iniciativas sem suporte (CentOS etc) declaravam em alto e bom som que não fornecem suporte, e por isso não tem nenhum vínculo de responsabilidade com seus usuários. Elas podem se dar ao luxo de esperar a Red Hat lançar uma atualização para só depois se atualizarem.

No caso de um contrato de suporte comercial da Oracle, ela terá um cliente impaciente do outro lado da linha que quer ter seu problema técnico resolvido. O luxo da espera não existe mais, e a Oracle terá que resolver os bugs por si só.

Na pior das hipóteses, ao longo do tempo é possível que o Unbreakable comece a divergir tecnicamente do RHEL, mesmo tendo a Oracle um desejo latente de sempre se sincronizar com o RHEL — conforme anunciado. E teremos uma terceira distribuição Enterprise forte. Foi assim que nasceram algumas distribuições, como Conectiva e Mandrake, que no começo eram basicamente uma cópia traduzida do Red Hat (não enterprise) Linux. Mas hoje o ecossistema de Linux é bem diferente do da época em que essas distribuições surgiram.

Arrisco também um palpite favorecendo uma hipótese bem melhor, onde o Unbreakable e o RHEL continuarão idênticos e sincronizados, cooperando entre sí como verdadeiros projetos Open Source. E ao longo do tempo o RHEL realizará a façanha inédita de consolidar um sabor universal de Linux corporativo. Coisa que o Linux Standard Base está longe de conseguir.

Só o tempo dirá, e é essa constante incerteza a maior inimiga de uma adoção em massa de Linux no mundo corporativo.

Cabe aqui uma salva de palmas para a Oracle que teve a coragem de inovar comercialmente sobre algo que já era tecnicamente e legalmente possível.

Migro meu Blog para o WordPress ?

Hoje sou um relativamente feliz usuário do Blogger, do Google. Mas me faltam coisas como categorizar posts, mais controle sobre os posts e comentários, etc.

Muita gente usa o WordPress, e queria saber: migro p/ o WordPress ou não ?

Vocês usam o WordPress no WordPress.com mesmo (com configurações limitadas), ou baixaram o software de WordPress.org e insatlaram no site de vcs ?

Não vi forma alguma de usar o serviço do WordPress.com e ter o blog no meu domínio. É isso mesmo ?

Tentei fazer testes de importação dos posts e comentários do Blogger, e não consegui: deu pau com mensagens estranhas. Confere ?

Onde há um diretório de templates PHP supimpas para escolher ?

Obrigado pelas dicas !

Desenvolvedores versus Programadores

Achei ótimo este ensaio comparando programadores e desenvolvedores. Está dividido nas seguintes partes:

  • Desenvolvedores são de Marte, Programadores são de Venus
  • Desenvolvedores tem algum conhecimento do escopo e do negócio
  • Desenvolvedores se preocupam com manutenções de mais
  • Desenvolvedores sabem que métodos de trabalho são mais importantes que cortadas técnicas
  • Programadores acham que a solução para todos os problemas é programar
  • Desenvolvedores procuram repetição, programadores gostam de heroísmos singulares
  • Programadores gostam de complexidade, desenvolvedores favorecem simplicidade
  • Desenvolvedores se preocupam com os usuários
  • Desenvolvedores gostam de satisfazer uma necessidade, programadores gostam de terminar
  • Desenvolvedores trabalham, programadores brincam

Quando eu faço pelestras, insisto em enaltecer a importância dos desenvolve/programadores, e como o autor, vou trocando de termo para não soar repetitivo. Vou prestar mais atenção de agora em diante.

Você, leitor, é um programador ou um desenvolvedor ?

Diga-se de passagem, vou começar a acompanhar esse blog Hacknot. Quase anônimo, ele tem uma aura de mistério atraente, e é muito bem escrito.

Suporte a EXT2 (e 3) no Windows

Assim que rebootar no Windows, vou testar este módulo de microkernel para acessar nativamente partições EXT2 (e EXT3).

Ele diz suportar tudo, menos:

  • Controles de acesso. OK, EXT2/3 usa uma nomenclatura UNIX, e posso viver sem isso enquanto estou no Windows.
  • Acesso a arquivos especiais tipo socket, named pipe e devices. OK, isso não faz o menor sentido em Windows mesmo.
  • Nomes de arquivos em UTF-8. Mas parece que suporta se o Windows estiver em modo UTF-8.
  • Impossivel defragmentar com ferramentas Windows. Vivo sem isso.
  • Bootar Windows instalado num EXT2/3. Quem faria isso ?
  • Acesso a volumes LVM. Isto é o que mais me faria falta.

Todas as outras tentativas que fiz no passado, faziam o Windows travar miseravelmente. Vamos ver o que isso faz.

Censo Populacional de Linux na br-linux.org

Acabei de votar no censo de Linux do br-linux.org

Meus votos:

  • Ferramenta de Administração do sistema: rpm
  • Ferramenta de Segurança : ssh e iptables
  • Servidor de Banco de Dados: DB2
  • Visualizador de Vídeo: mplayer
  • Programa de Audio (MP3 e similares): amarok
  • Editor de textos: kate
  • Navegador web: Firefox
  • Programa de mensagens instantâneas: kopete
  • Cliente de e-mail: GMail
  • Agregador RSS: Google Reader
  • Aplicação P2P: Azureus (BitTorrent)
  • Ambiente Gráfico: KDE
  • Ferramenta de Desenvolvimento: KDeveloper e Eclipse
  • Linguagem de programação: C, C++, Java e Shell
  • Editor de imagens: Kuickshow e Gimp
  • Suíte Office: OpenOffice.org
  • Distribuição Live CD: Knoppix
  • Distribuição nacional:
  • Distribuição para desktop: CentOS ou SLED
  • Distribuição para servidor: Red Hat Enterprise Linux
  • Site nacional, excetuando o BR-Linux: vivaolinux.com.br
  • Site internacional: ibm.com/developerworks
  • Personalidade da comunidade livre nacional: EU !
  • Personalidade da comunidade livre internacional: Bob Sutor
  • Ponto alto do software livre em 2006: A Iniciativa Elektra
  • Ponto baixo do software livre em 2006: Iceweasel – o ridículo nome que a comunidade Debian decidiu dar ao Firefox, só no Debian
  • Fórum web ou lista de e-mail:
  • Livro sobre software livre: O do Cezar Taurion sobre Software Livre
  • Grupo de usuários ou organização livre nacional:
  • Evento da comunidade:
  • Empresa atuante na comunidade livre nacional: 4Linux
  • Revista que acompanha a comunidade livre: Linux Magazine

Aspirina para a Febre Ubuntu

Nunca usei o Ubuntu, mas todo mundo diz que ele é facinho facinho de usar.

Legal. Fico feliz por ele.

Mas encontrei com um cara recentemente, bem famoso na comunidade Linux, que tem uma visão bem madura das coisas e bem antenado na história do Debian e Ubuntu. Contou que a empresa Ubuntu é do fundador da Thawte — que foi vendida a preço de ouro para a Verisign. Ai ele pegou esse monte de dinheiro e foi se divertir montando a Canonical (empresa que desenvolve o Ubuntu).

Ele apontou enormes pontos de interrogação na estratégia do Ubuntu. Tipo, como eles mandam CDs de graça pra todo mundo ao redor do mundo? Como eles dão suporte de graça bastando ligar para eles? Afinal, como eles ganham dinheiro? Etc.

Resumo da ópera, o modelo de negócio do Ubuntu como empresa é muito duvidoso, se é que tem lá um modelo de negócios.

Então para se divertir, em casa, etc, usar o Ubuntu é legal, e eu incentivo muito. Mas para usa-lo numa empresa, de uma forma responsável, de jeito nenhum por enquanto.

Eu ainda sou da linha que técnicos devem usar em casa, para aprender, uma das 2 grandes distribuições: Red Hat ou SUSE. Não quer comprar a subscrição? Não precisa. Use gratuitamente o Fedora ou CentOS para usar o sabor Red Hat, ou OpenSUSE para saborear SUSE.

Nova certificação LPI 3

Parece que a certificação LPI-3 está em vias de sair, e o Brasil vai ser agraciado como o piloto, com o Maddog aplicando as primeiras provas.

Minha sensação é que a LPI tomou um rumo meio diferente do previsto. Antes de sua confecção, a LPI-3 foi idealizada como uma certificação para arquitetos, que testaria também a capacidade de argumentar a favor de uma solução Linux, mais generalista que as anteriores — que são mais preocupadas em inquerir nossa memória sobre parâmetros obscuros de comandos obscuros, ao invés de testar a capacidade do administrador em achar saidas para situações difíceis, consultando manuais ou bons sites na Internet —, mas agora focou mais ainda para administradores de Samba e LDAP, o que é bem restrito.

Eu sou certificado LPI-2 e me considero um bom administrador Linux, mas minha carreira nunca se voltou para Samba, o que faz minhas palavras parecerem meio tendenciosas, porque se eu tentar a LPI-3 provavelmente não passo.

Na minha modesta opinião, ou a evolução da LPI tinha que começar a criar, nesse sentido de especialização, áreas de competência (uma para Samba, outra para clusters, outra para gerência de thin clients ou muitos desktops, outra para… enfim), ou manter aquela linha generalista que eu achava mais interessante.

Boa sorte aos certificantes !

PVFS, GFS e IBM GPFS

Descobri hoje o PVFS (parallel virtual filesystem). Parece ser a única coisa arquitetonicamente semelhante ao GPFS da IBM.

A característica que acho a mais atraente nesses filesystems é que pode-se monta-los com um cluster de computadores simples, desta forma:

  • Cada um deles doa parte de seu storage interno para a célula do filesystem, por exemplo, uma partição
  • Os servidores (que podem ser clientes também) são membros da célula
  • Um servidor (ou serviço) de metadata define políticas para distribuir os arquivos fisicamente pelos computadores
  • Um nó que precisa acessar com mais freqüência um certo arquivo, terá ele (ou um cache dele) em seu storage local

Isso garante paralelismo, porque todos os membros acessam um único filesystem lógico que na verdade é uma núvem espalhada por todos os nós. E garante performance, porque coloca o dado (ou arquivo, ou parte dele, ou um cache) mais perto de quem mais precisa dele no momento.

Em contrapartida, o GFS da Red Hat é centrado no storage físico (geralmente externo), ou seja, não implementa esse conceito de nuvem espalhada pelos membros do cluster. Ele está mais preocupado em administrar o acesso físico simultâneo ao storage.

Dando uma rápida olhada, o PVFS me pareceu precisar ainda de uma polida. Seus comandos são feios, e configuração não muito intuitiva e não bem integrada ao sistema operacional, mas é Open Source. O GPFS por outro lado é um produto maduro, já usado nos maiores clusters computacionais do mundo mas é pago.

Acompanho esse mundo de filesystems desde a época do AFS (bela arquitetura mas muito complexo), passando pelo DFS (mais complexo ainda), Coda (vapourware), Inter-mezzo (vapourware), até os de hoje. Eles tem potenciais muito interessantes em aplicações de grandes escritórios distribuidos e de clusters de alta performance. Aqui na IBM, internamente temos algumas células AFS, mas gradativamente estamos migrando para uma nova arquitetura batizada de GSA (Global Storage Architecture), baseada em GPFS, mas acessível por Samba, NFS, etc.

Debian versus Mindshare Vigoroso para Linux

Eu só posso concordar com o que o Thiago Vinhas escreveu em seu artigo.

Não estou muito próximo do projeto Debian, mas meu feeling sobre ele é que ele está se auto-canibalizando. Antropofagia pura.

Se o único objetivo dos membros do projeto é se divertir criando um sistema operacional, seu produto só acabará sendo usado para diversão, em casa ou em laboratórios. Não inspira confiabilidade e “flor-que-se-cheire” a longo prazo. Sem isso, empresas (com dinheiro no bolso) nem chegam perto dele.

Escondendo marcas já consagradas como o Firefox e Thunderbird só para exagerar essa liberdade que as pessoas não entendem – mas que elas já tem – ajuda a destruir uma marca e mindshare coeso que Linux como um todo pode criar. Ai eles é quem perderão a liberdade de trabalhar com o que gostam: Linux.

O foco do projeto Debian parece ser única e exclusivamente a religião.
E eu acredito que o melhor balanço está no equilíbrio entre religião e razão – coisa que distribuições que se propuseram a trabalhar com as pressões do mercado, como Red Hat e Novell, fazem muito melhor.

E lembrem-se: leis mercadológicas só dão espaço para duas opções. Um é pouco, três é demais.

Longa vida a quem sabe balancear as coisas.

Converting YouTube to MPEG or iPod

In the end of this proccess you’ll have an .mpg file on your local disk, generated from an Internet-only YouTube URL.

First make sure you have ffmpeg (video encoding and decoding tools) and lame (MP3 audio encoding and decoding tools) softwares and dependencies installed on your system. You will also require the youtube-dl scripts that downloads the actual YouTube video.

In a Red Hat or Fedora system you can install it from Dag or Livna RPM repositories, with a simple yum command:

bash# yum install ffmpeg lame youtube-dl

Then you get to the YouTube video page you want to download. In this example we’ll use the Heist video, the first Linux ad from IBM, that has http://www.youtube.com/watch?v=DO9ZWDaLLxA as its URL.

I’ll use youtube-dl this way:

bash$ youtube-dl -t http://www.youtube.com/watch?v=DO9ZWDaLLxA

And I saw it connecting to YouTube several times and downloading the video. In the end, I found a big file named the_heist-RRZyz1vXkPE.flv in the current firectory, which is the video file.

Now lets convert it into MPEG with ffmpeg:

bash$ ffmpeg -i the_heist-RRZyz1vXkPE.flv -acodec copy -sameq heist.mpg

-acodec copy will cause ffmpeg to copy the audio from input to output file, while -sameq causes the output video quality to be the same as the source, but output file will be very big. For YouTube videos, you can use -b 320000 instead of -sameq to get smaller file sizes.

I saw ffmpeg taking some time to convert, and in the end I got the heist.mpg file which I was able to confortablly play in any MPEG aware video player, as mplayer.

If you want to convert the video file into MP4, which is the format supported by iPod Video players, you just change the extension:

bash$ ffmpeg -i the_heist-RRZyz1vXkPE.flv -acodec copy -b 320000 heist.mp4

Ffmpeg will take care to use the maximum screen size available from the source (the .flv file) so the converted file will be as hi-fi as YouTube let be (not too high really).

Enjoy your video.

Evento Linux e Rational em Florianópolis e Curitiba

Desta vez estaremos levando o já consagrado evento IBM developerWorks Live ! para Florianópolis e Curitiba.

É a chance de técnicos aprenderem com técnicos dos laboratórios IBM, Red Hat e 4Linux, casos reais e usos avançados de tecnologias como Linux, Eclipse, Samba, Xen, Clusters de Alta Disponibilidade, e outras ferramentas Open Source e Rational para desenvolvimento e gerência de projetos.

Confira a agenda, datas e locais abaixo, e venha ver nossas apresentações !

Florianópolis, Santa Catarina, 16 e 17 de outubro
O evento IBM acontecerá dentro do Simpósio Brasileiro de Engenharia de Software e de Banco de Dados, no Hotel Majestic na Av. Beira Mar Norte. Como estaremos atrelados ao SBES/SBBD, será um evento pago. Mais informações aqui, e agenda IBM aqui.

Agenda do dia 16 de outubro – Linux

09h00

Possibilidades de Linux com Desktops e Servidores (Avi Alkalay – IBM)

09h45

Virtualização em Linux com Xen (Rodrigo Missiagia – Red Hat)

10h30

Break

11h00

OpenLDAP, PAM e Gerência de identidade com Linux (Francisco Saito – 4Linux)

12h00

Pausa para Almoço

11h45

Linux na IBM (Avi Alkalay – IBM)

12h30

Pausa para Almoço

14h30

Alta Disponibilidade com Linux (Rodrigo Missiagia – Red Hat)

15h15

Migrando a Infraestrutura para Samba com Linux: estudo de caso da CEAGESP (Francisco Saito – 4Linux)

16h00

Break

Agenda do dia 17 de outubro – Padrões Abertos e Ferramentas de Desenvolvimento Open Source

09h00

Introdução – Padrões Abertos, Open Source, Apache Derby/IBM Clouscape (Eric Long and Jeff – IBM)

10h30

Break

11h00

Apache Geronimo/IBM WebSphere Application Server Community Edition, Desenvolvendo Aplicações com Ferramentas Open Source, Além do Open Source/Standards – Próximos Passos (Eric Long and Jeff – IBM)

12h30

Pausa para Almoço

14h30

Overview – Desafios em Distribuição de Softwares, Process and Portfolio Management – Rational Portfolio Manager and Method Composer (Cheryl and Kevin – IBM)

16h00

Break

16h30

Análise e Requerimentos – Rational Req Pro, Qualidade de Software – Rational ClearQuest e Testes Funcionais, Gerência de Mudança e Configuração – Rational ClearCase, Rational ClearQuest, Rational Build Forge, Call to action/Resources (Cheryl and Kevin – IBM)

Curitiba, Paraná, 19 e 20 de outubro
O evento acontecerá na PUC-Paraná, Rua Imaculada Conceicao, 115 – Prado Velho, Auditorio Maria Montessori. Evento gratuito. Inscrição aqui ou pelo telefone 0800-707-4837 opção 1, ou ainda mandando um e-mail para pwisv@br.ibm.com.

Agenda do dia 19 de outubro – Padrões Abertos e Ferramentas de Desenvolvimento Open Source

08h30 Registro

09h00

Introdução – Padrões Abertos, Open Source, Apache Derby/IBM Clouscape (Eric Long and Jeff – IBM)

10h45

Break

11h00

Apache Geronimo/IBM WebSphere Application Server Community Edition, Desenvolvendo Aplicações com Ferramentas Open Source, Além do Open Source/Standards – Próximos Passos (Eric Long and Jeff – IBM)

13h00

Pausa para Almoço

14h00

Overview – Desafios em Distribuição de Softwares, Process and Portfolio Management – Rational Portfolio Manager and Method Composer (Cheryl and Kevin – IBM)

15h45

Break

16h00

Análise e Requerimentos – Rational Req Pro, Qualidade de Software – Rational ClearQuest e Testes Funcionais, Gerência de Mudança e Configuração – Rational ClearCase, Rational ClearQuest, Rational Build Forge, Call to action/Resources (Cheryl and Kevin – IBM)

Agenda do dia 20 de outubro – Linux

08h30 Registro

09h00

Possibilidades de Linux com Desktops e Servidores (Avi Alkalay – IBM)

10h00

Break

10h30

Virtualização em Linux com Xen (Rodrigo Missiagia – Red Hat)

11h15

OpenLDAP, PAM e Gerência de identidade com Linux (Francisco Saito – 4Linux)

12h00

Pausa para Almoço

13h30

Linux na IBM (Avi Alkalay – IBM)

14h15

Alta Disponibilidade com Linux (Rodrigo Missiagia – Red Hat)

15h00

Break

15h30

Migrando a Infraestrutura para Samba com Linux: estudo de caso da CEAGESP (Francisco Saito – 4Linux)


Esperamos você lá !
Qualquer dúvida, por favor escreva um comentário neste blog, ou mande-me um e-mail.

Samba to use Elektra for configurations

Read here before it goes broad in Slashdot.

Gerald (Jerry) Carter, Samba’s core developer and architect, initiated a Google SoC project to elektrify Samba. The project was successfully completed by Mingwang with Jerry’s mentorship. “Longer term, we (Samba) have to come to an agreement about (…) How (and to what degree) do we support legacy systems that want to continue to the the smb.conf text file. This is a pretty big shift for us. And although everyone agrees that we must have programmatic access to out configuration data from within Samba, we have to chart the course to get from where we are today to where we want to be 6 months down the road.” – said Jerry on the Elektra list while also showed a kdbedit screenshot of an elektrified Samba.

Open Source Geeks Should Read This

The title of that article is Why we won’t be talking about Open Source in the future, by an analyst called Clay Ryder, and I think is provides an insightfull and pragmatic perspective of how Open Source should be looked at by the business world. It perfectly feets what I use to say and present in events.

Here are some quotes:

While there are religious devotees who believe that the most important role of Open Source is to bankrupt Microsoft, there are many who are not on the Redmond attack squad, however, that talk about Open Source as if it remains somehow discrete, or fundamentally different than other software.

…the reality is that from a bits and bytes perspective, open source software is no different than any other. It is code that runs on the machine and hopefully solves a problem and delivers value to the end user. The development model and the pricing model vary, as do issues related to intellectual property and ownership, but at the end of the day it is just software.

Open Source software is making the same demands on the marketplace – these technologies are priceless, therefore stop trying to make money them, but instead invest those same dollars in adding value on top of the priceless technology. As a result, freely distributable, standards based, basic technology will be a given, let’s learn innovate on top of it, where the real value, and may I add, margins, will be found.

This kind of article may appeal to clients who are skeptics about Linux fanatics.

System Rescue Without a Password

So you lost your Linux root password.

No panic. There is a way to reset it:

  1. Turn the computer on and pay attention.
  2. When the bootloader (GRUB or LiLo) screen appears, select the partition you want to fix the password.
  3. Do not boot it yet. Go into edit mode for this partition.
  4. In the end of the kernel boot parameters line, include this init=/bin/bash.
  5. Then boot the partition.
  6. You will see a very fast boot. And right after the pure kernel initialization you’ll receive a root command line. If you try to change a password at this time (with the passwd command), you’ll get a message that means you don’t have write permissions on the filesystem.
  7. So you’ll have to put your system in a read-write state whit this commands:
    bash# mount /proc
    bash# mount -o remount,rw /
  8. All set. Now use the passwd command to change the root password.
  9. Now type the following: sync; sync; exit. Then reset the system.

Note: If the computer has a BIOS or Bootloader password that you don’t know, you won’t be able to use this technique.

The idea here is to change the default program that is executed to setup all the OS environment, right after the kernel initialization. By default it is /sbin/init, and what we did above is to change it to /bin/bash — a regular shell prompt, a command line.

My IT Presentations

Here are some presentations that I created and use to deliver in IBM events.
Most charts include speaker notes. They are all in Use OpenOffice.org Open Document Format (ODF).
I rarely use the full presentations, I select the best charts according to the audience.

I am also founder of the Elektra Initiative, and produced an Elektra Presentation that members of the community use to deliver in Linux events.

See also the articles I have written.

Software como indicador de desenvolvimento socioeconômico

Jorge Sukarie Neto, presidente da ABES, nos enviou um estudo encomendado ao IDC, sobre o mercado brasileiro de software.

Cruzei alguns dados do estudo com a população dos respectivos paises, e deu isso:

Brasil
Australia
Canada
Italia
França
População
186.405.000
20.155.000
32.268.000
58.093.000
60.496.000
Volume de SW (US$ bi)
7,23
16,2
17,9
16,9
36,8
Volume per capita (mi)
38,78
803,77
554,73
290,91 608,3

Ou seja, mesmo com uma população quase dez vezes maior que a desses países (que não são tão expressívos assim), o Brasil consome e produz software dezenas de vezes menos que eles.

Parece-me que software é um tipo de indicador de desenvolvimento social.

Das duas uma: ou o Brasil está realmente bem atrás, ou pirateia-se muito por aqui. Ou das duas, as duas são afirmações corretas.

ODF e OpenXML: ecossistema, sorte e poder

A sorte está lançada entre ODF e OpenXML.

O que vale mais?

Um padrão universal e em franco crescimento de aceitação, mas ainda pouco usado, resultado do melhor capital intelectual aberto que a Internet é capaz de fabricar, ou um formato fechado de documentos, com política de royalties, e amarrado ao produto mais usado desse segmento?

Por outro lado, se meus CDs tocam em qualquer CD player, porque MEUS documentos vão funcionar somente em UMA suite de escritório? CD (e sua independêndia do CD player) está para música, assim como ODF (e sua independência de suite de escritório) está para documentos.

Quando tivermos o resultado dessa interessantíssima briga, os mais emotivos dirão que foi sorte de um e azar do outro. Mas não tem nada a ver com isso, e sim com poder de construir ecossistemas de cada um desses polos.

Ecossistema é tudo.

Mas paixão e vontade de realizar vem em segundo lugar. E essas forças movem montanhas. E ecossistemas.

Inline Blogger.com Comment Form

  • WARNING: This script is not being supported anymore since I moved to a much better blogging system with WordPress.

If you don’t want your blog visitors to be redirected to blogger.com website just to write a comment for your post, you are in the right place.

This page will show you how to include a comment form directly into your post page, just as you can see in this very page, bellow. After installing this solution in your blogger.com blog you’ll feel an instant increase in the number of comments people write for you, because a comment form right in the face of your visitor is way more intuitive and inviting tsule with nowadays blogger.com interfaces, and stepped out from a hack status into a clean, functional and well documented solution.

PLEASE, write a comment here, including a link to your blog so people can know who else is using this solution.

PLEASE, do not make test in this post. PLEASE, leave it for real comments or support questions. PLEASE, use this post to test the form.

Installing

  1. Download this script and make it available somewhere on your website, for example from the URL http://my.website.com/resources/bloggerCommentForm.js (this is the URL we’ll use in our examples).
  2. Edit your blogger.com template and look for the end of the HTML header marked by the </head> tag.
  3. Right before the header ending include the following piece of code in a way that everything will look like:
    <ItemPage>
    <script type="text/javascript" xsrc="http://my.website.com/resources/bloggerCommentForm.js"  >
    </script>
    
    <script type="text/javascript">
    // Lets configure the comment form a little bit
    
    // Include some style
    commentFormStyle();
    
    </script>
    </ItemPage>  </head>
  4. Now you’ll have to place a call to a JavaScript method that will render the form. Scroll down and look for the section on your template that renders the comment. It starts with a <div id=”comments”> tag. This code should be included right after it:
    <a name="postcomment"></a><h4>Write a Comment</h4>
    
    <script type="text/javascript">
    commentForm('<$BlogItemCommentCreate$>');
    </script>
  5. Save your template and republish your blog.
  6. Visit one of your posts page, see if the form appears, and try posting some different comments as different users.

Configuring the Form

You can configure the form, specialy for internationalization, in a very clean way without having to change the code. For example, look how it looks in a brazilian portuguese blog post.

  1. For that, edit your template again and look for the script initialization part you just included in the <head> section.
  2. You can define some JavaScript variables that will define the form language and other parametrizations. Copy and paste these defaults to start translating:
    <script type="text/javascript">
    
    // Lets configure the comment form a little bit
    
    // Include some style
    commentFormStyle();
    
    // General parameters
    var labelWidth = 80;
    var bloggerFormActionURL="http://www.blogger.com/login-comment.do"
    var confirmBeforePost = true;
    
    // Language defaults
    var bloggerUserLabel = "Blogger.com user";
    var otherUserLabel = "Other";
    var customUserLabel = "Name or nickname: ";
    var urlLabel = "URL: ";
    var anonLabel = "Anonymous";
    var rememberLabel = "Remember Me";
    var postedByText = "Posted by";
    var commentButtonText = "Post Comment";
    var previewButtonText = "Preview";
    var previewWindowTitle = "Comment Preview";
    var confirmText = "Post this comment?";
    var boldButtonText = "B";
    var italicsButtonText = "I";
    var linkButtonText = "Link";
    var linkPrompt = "Link Text:";
    var urlPrompt = "Link URL:";
    var quoteButtonText = "Quote";
    var quotePrompt = "Use your mouse to select the text"+
    " in the comment you want to quote.n"+
    "Then press the quote button.";
    </script>

Additionally, you may want to change the target links in your template to make them point visitors to the comment form in the post page. For example, I have the following piece of code in my template that renders each post footer:

<p class="post-footer">
<em><$BlogItemDateTime$></em> |
<a xhref="<$BlogItemPermalinkUrl$>"
title="permanent link">permalink</a>
<BlogItemCommentsEnabled>
<a class="comment-link"
xhref="<$BlogItemPermalinkUrl$>#postcomment"><$BlogItemCommentCount$>
comments</a>
</BlogItemCommentsEnabled>
<BlogItemBacklinksEnabled>
<a class="comment-link"
xhref="<$BlogItemPermalinkUrl$>#links"  >links to this post</a>
</BlogItemBacklinksEnabled>
<$BlogItemControl$>
</p>

This script is free and licensed under the LGPL.
Enjoy.

High Availability Linux Clusters

Here is a light document, in the form of a presentation, to help IT architects or sales people to understand High Availability Clusters with Linux:

  • How it works
  • Components needed to build HA clusters
  • Replication
  • SCSI and Fiber Channel considerations
  • Reference architectures
  • Clustering of popular products
  • Sizing guides
  • etc

Start here and follow the links to browse it, download PDF or the original Use OpenOffice.org (ODF) file.

There are also excelent presentations and tutorials in the Linux-HA Project website.

Baixando Música da Internet

É muito controverso se é ilegal ou não baixar música da Internet. A lei e licença de uso do fonograma (faixa de um CD) ou não é clara ou ninguém nunca explicou isso direito.

Permalink desta parte Entenda o Contexto Primeiro

Outro dia conversei com um músico profissional que fazia faculdade de produção musical, e ficaram claros alguns aspectos:

  1. As grandes gravadoras prestam um serviço para a sociedade desta forma: encontrando talentos, patrocinando a produção e gravação do fonograma, produzindo um encarte bonito, divulgando o produto na TV, rádio, revistas, outdoors e novelas, e depois operando a logística de distribuição física do CD, além de em paralelo investir na própria evolução da tecnologia do CD, tudo isso para você poder ouvir música de alta qualidade técnica, e fácil de encontrar na loja perto da sua casa. Então nada mais justo que as gravadoras serem remuneradas por todo esse trabalho.
  2. Por isso, em geral a gravadora é dona do fonograma, e não o músico ou compositor. Isso significa que é ela quem decide quando, quanto e como vai publicar as canções (publicar significa prensar CDs e por nas lojas). O músico não pode pegar o fonograma, gravar um CD e sair vendendo, a não ser que ele compre os direitos sobre o fonograma, que são em geral muito caros.
  3. As gravadoras não estão defendendo os direitos dos artistas, mas seus próprios interesses. De fato, muitos artistas não gostam que as gravadoras digam que estão defendendo os direitos deles.
  4. Nesse processo todo, os músicos ganham os direitos autorais (que segundo alguns músicos que conheço, é pouco), que recebem de uma instituição independente, que por sua vez vem da gravadora e de outras fontes. Essa regra não vale para estrelas que tem poder (e agentes) para negociar contratos melhores com uma gravadora.
  5. O músico quer que sua arte seja conhecida e ouvida o máximo possivel.
  6. Músicos profissionais ganham mais dinheiro em shows e performances ao vivo, e menos em venda de CDs das gravadoras, que levam a sua obra.
  7. Pessoas só vão prestigiar os músicos num show (e pagar ingresso) se sua obra for boa e conhecida.
  8. Muitos bons artistas não tem penetração no mercado, dinheiro ou disposição para gravar um CD independente. Esses são os chamados “alternativos”.
  9. Excelentes músicos e lindos fonogramas podem ser pouco conhecidos ao ponto de ser comercialmente inviável dar-lhes espaço numa concorrida prateleira de loja de discos. Por isso é dificil encontrar gravações antigas ou as chamadas “alternativas” nas lojas: ou as pessoas já mudaram de gosto, ou há pouquíssimos compradores. A situação é pior para as gravações que são ao mesmo tempo antigas e alternativas.
  10. Eu estimo o custo de 1 CD — incluindo o plástico, encarte, trabalho artístico, pagamento do direito autoral, veiculação etc — em menos de R$5.
  11. Ouvi dizer que a lei proibe a redistribuição de fonogramas em meio físico (gravar um CD ou fita e sair vendendo ou comprando).
  12. A Internet não é considerada um meio físico. Por isso, nesse raciocínio, não é proibido usar a Internet como meio de distribuição de música, pelo menos para fonogramas produzidos/gravados/publicados antes da era Internet, o que inclui tudo antes de mais ou menos 1997. Depois disso, fonogramas começaram a ser produzidos com uma licença (os termos legais que definem o que é permitido ou não fazer com o fonograma) revisada que incluia a Internet — junto com CDs piratas, fitas caseiras, etc — como um meio ilícito de distribuir música direta e livremente.

Seja como for, baixar música da Internet leva tempo, vem sem o encarte — que conté muita arte gráfica e informações valiosas e é controverso se é ilegal ou não. Por outro lado, já foram vistos artistas e suas discografias completas disponíveis ao ponto de parecer irracional não baixar.

Você decide se vai seguir o que a mídia diz defendendo seus interesses — e não a dos artistas —, ou se vai prestigiar um músico e sentir tudo o que seu potencial criativo pode fazer com suas emoções.

Permalink desta parte Como Baixar: Método Fácil

Há diversos blogs em que amantes da música publicam albuns completos para serem facilmente baixados através de serviços como RapidShare, 4Shared, Badongo, etc. São geralmente albuns antigos, raros, que não se acha em lojas. Coisa de colecionador.

Os albuns vem geralmente comprimidos no formato RAR, que é um tipo de ZIP, e é necessário o software da Rar Labs para descompacta-los.

Segue uma lista de alguns blogs:

Na barra lateral desses blogs há sempre uma lista de links para outros blogs similares, então este método é de difícil procura, mas de fácil download. O método de BitTorrent abaixo é de procura mais fácil, mas de download mais complexo.

Permalink desta parte Como Baixar: Método Mais Eficiente, com BitTorrent

Abri espaço neste blog para um conhecido relatar como se faz. Este método usa a tecnologia Bit Torrent e estes são passos para usa-la com sucesso:

  1. Baixe e instale algum cliente Bit Torrent como o BitComet (só para Windows) ou o Azureus (Mac, Linux, Java, Windows). Estes softwares são seguros, não instalam spyware nem virus, e seu uso é totalmente legal.
  2. Use o site www.isohunt.com para procurar músicas por nome, artista, etc. Ele pode ser usado também para procurar outros tipos de arquivos. Você pode também procurar na Internet por outros sites the provem “torrents”.
  3. Procure por, por exemplo, “Mozart” ou “Bach“, etc (clique nesses links para ver um resultado de busca do exemplo).
  4. Você vai encontrar coleções completas de artistas, etc e arquivos muito muito grandes, que as vezes demoram dias para baixar. Os primeiros resultados que ele mostrar são os downloads mais ativos, e por isso mais rápidos para baixar.
  5. Selecione o ítem que você quiser, ele vai se expandir, e então clique no link chamado “Download Torrent” para começar a baixar.
  6. Isso vai disparar o programa de Bit Torrent (BitComet ou Azureus acima), que vai te perguntar onde você quer gravar o download. Escolha um diretório que você vai lembrar depois.
  7. Antes de dar OK, você pode ver a lista (enorme, se for coleção completa) de arquivos que serão trazidos, e pode selecionar para baixar só os arquivos que te interessam, ou tudo.
  8. Monitore a atividade do download e garanta que você está baixando em boa velocidade. Se estiver constantemente muito lento (pode haver períodos de maior lentidão), é melhor cancelar e procurar outro download.
  9. Mesmo baixando muito rápido, um download grande pode demorar dias para se completar.
  10. Depois de terminar o download, se você usa Linux, use o Musicman para organizar seus MP3.

Seja responsável e boa sorte !

Software Livre sem excesso de filosofia

Saiu hoje no Estadão uma matéria quase sarcástica sobre Richard Stallman, criador do conceito de Software Livre, lá nos idos dos anos 70.

Sem suas idéias visionárias, sua postura radical, e sua seriedade jurídica, coisas como Linux não existiriam, e Padrões Abertos seria um conceito ligeiramente diferente do que é hoje. Richard Stallman é um cara que mudou o mundo, e suas idéias sobre Software Livre passaram a ter um dimensão maior a ponto de abraçar toda a criação artística, ciência e cultura humana via o Creative Commons (veja este video, e depois este para entender tudo), descendente direto do Software Livre. Tudo em prol de uma cultura livre.

Mas os anos passam, o mundo gira, e parece que ele se afogou num mar de idealismo: para ele, se o usuário não consegue ler e alterar o código fonte do software, ele é prisioneiro desse software. Talvez ele esqueceu que poucas pessoas sabem ler código fonte de um programa de computador, e dessas, a maioria — eu incluso — não tem o menor interesse em lê-lo, muito menos alterá-lo. Estamos mesmo é interessados na liberdade que um software nos dá para vivermos melhor a nossa vida.

Um software que não provê exatamente a funcionalidade que o usuário quer não precisa necessariamente ser mudado por ele. Ou será trocado, ou a pessoa irá de adaptar, porque afinal computador é burro e só sabe fazer aquilo, e ser humano é inteligente.

Software Livre virou moda, mas isso não significa que tudo quanto é SL é bom e resolve os problemas das pessoas e das empresas. Estas por sinal tem se sofisticado cada vez mais a ponto de precisarem de soluções de software mais complexas e mais inovadoras. E essas coisas são geralmente mais encontradas no software de código fonte fechado.

Então quando Software Livre e quando software comercial ?

A resposta é buscar um bom balanço entre ambos com esta fórmula:

  1. Divida a TI de uma empresa em camadas que vão da mais infraestrutural (storage, servidores, SOs – como Linux) até o mais alinhado aos processos de negócio (aplicações de negócio e internas, ERPs, CRMs etc).
  2. Quanto mais infraestrutural, mais afinidade terá com SL, e quanto mais alinhado ao negócio, mais afinidade terá com o de código fonte fechado.

A pirâmide de TI

A explicação do porquê dessa divisão é longa e está na minha apresentação.

Linux, sendo só um SO, tem enorme afinidade com a infraestrutura, e por isso é uma opção excelente para essa camada.

Entre esses dois polos fica o tal do Middleware, que começa a ter boas opções no mundo livre, concorrendo de frente com produtos da IBM. A regra geral é ir sempre de Middleware comercial porque tem suporte e nível de serviço, que provê paz de espírito. A excessão fica para aplicações departamentais não-críticas nos casos onde o cliente sabe muito bem o que está fazendo com um middleware SL.

O que realmente importa para uma empresa que se preocupa com seu TI é usar produtos, software, hardware que seguem Padrões Abertos – não importando se o código é aberto ou não -, porque só isso é capaz de dar acesso a um mercado competitivo, que provê flexibilidade e poder de escolha – que implica em preços mais baixos.

Developers for Increased Openness Ecosystem

I’m proud to say that Rogério Oliveira, IBM Brazil General Manager, said a phrase that I keep saying inside IBM for at least 4 years.

If we build relationships with our customer’s development teams, we’ll be able to detect opportunities at least 6 months earlier than when talking only to customer’s IT infrastructure teams

Rogerio Oliveira, IBM Brasil General Manager

Development teams role in the IT environment of some customer is to be the closest point to the line of business a technology provider like IBM can and should effectively reach.

The Best Linux Distribution

Check this presentation to business and technical people about Linux Distributions. There is an article outlining the same topics that can work as a transcript for this presentation.

The topics included are:

  • What makes a Linux distributions to be what it is
  • The ingredients for success and for market failure
  • Core technologies inside a distribution
  • Important points to consider when choosing “the best distribution”
  • What “support” is, its importance, and what customers should really look for when considering comercial support for a Linux distribution
  • High level comparation between Red Hat Enterprise Linux and SUSE Linux Enterprise Server in flavor, standards adherence and stability
  • Highlights on other non-comercial distributions as Fedora, OpenSUSE, Debian, Slackware etc, and the weak-ecosystem ones as Mandriva, Ubuntu, etc
  • Colorful details about how Linux distributions work with and package Open Source software
  • The new generation of “semi”-comercial distributions

Availability:

Check also an interview I gave in a Linux World event right after presenting this:

Segurança em Software de Código Aberto

  • — Quem acha que software de código fechado é mais seguro? – perguntou o palestrante.

Uns poucos gatos pingados levantaram a mão.

  • — E quem acha que software de código aberto é mais seguro?

Outros poucos ouvintes acreditavam que essa última era a afirmação verdadeira.

Mas a esmagadora maioria ficou passiva, sem saber o que responder.

Senhoras e senhores, estamos diante de um dos maiores dilemas da TI pós-Internet. É assunto para horas de discussão na mesa do bar, que tem grande chance de dar em nada, se for tratado de forma religiosa. Mas vamos tentar ser frios, relembrar algumas histórias e não nos perder em crenças infundadas.

 

Tudo gira em torno de segurança por ser (código) público versus segurança por ser fechado. A comunidade de programadores de código aberto tem a cultura do mérito e respeito, então é natural que seus membros tomem mais cuidado ao programar. Além disso, é comum o trabalho de um ser revisado e auditado pelo outro. Outra vantagem é a velocidade com que correções são escritas. Foi o caso de um problema descoberto na implementação TCP/IP de qualquer sistemas operacional, em 1996. A correção para Linux foi publicada em 20 minutos, enquanto que para outros sistemas demorou 2 dias úteis. Há dezenas de casos semelhantes.

Mas aqui vale um ponto de atenção: o sistema operacional Linux é um caso muito especial de software de código aberto, simplesmente porque ele é muito usado e tem um ecossistema enorme de programadores e empresas interessadas em sua estabilidade e progresso. Em outras palavras, ele tem uma infinidade de observadores, e isso não é verdade para qualquer software livre. Ou seja, só quando um software aberto usufrui de muitos usuários e desenvolvedores é que terá pessoas cavando e corrigindo problemas rapidamente em seus fontes.

O modelo de código fonte aberto de desenvolvimento de software não é uma garantia de segurança. Contudo, softwares livres populares como o Linux, Apache, Samba e muitos outros tem tido seus códigos examinados por vários especialistas de segurança.

Por outro lado, software de código fechado tem a garantia de que ninguém pode vasculhar falhas em suas entranhas. Ironicamente também garante que se o fabricante decidir implanatar um backdoor, ninguém poderá encontra-lo. E foi exatamente o que aconteceu quando a Borland liberou o código do Interbase: eles esqueceram de remover um trecho do código que abria um backdoor de administração. Foi descoberto e removido assim que outros começaram a olhar seu código fonte, e motivo de vergonha para a Borland.

Outro aspecto é que certas coisas são muito difíceis de desenvolver corretamente quando somente poucas pessoas tem acesso ao código fonte. É o caso de boa criptografia e de protocolos de comunicação seguros. Só uma densa auditoria multicultural e independente pode analisar a fundo cada detalhe do código.

No âmbito de ferramentas de segurança, o mundo livre dispõe de uma lista sem fim de coisas como OpenSSL, OpenSSH, PAM, PKI, OpenLDAP, Tripwire, Kerberos, SELinux, etc, todos possuidores de um forte ecossistema de usuários e desenvolvedores.

 

O pensamento saudável para essa questão é que software aberto e fechado tem vantagens e desvantagens que muitas vezes se completam. Nenhum modelo é garantia de segurança, mas ter o código aberto dá pelo menos a chance de um certo software poder ser auditado. Além de que uma falha detectada pode ser corrigida por qualquer pessoa a qualquer hora, e não ser tratada como “característica do software” que o fabricante não acha que deve corrigir.

A fórmula do sucesso, para balancear custos e benefícios, tende a usar software livre nos elementos mais infraestruturais do data center, enquanto que software fechado vai melhor nas camadas relacionadas a lógica de negócio, sempre abusando do uso de padrões abertos para garantir a interoperabilidade. Um exemplo prático desse bom balanceamento é rodar seu ERP corporativo (de código fonte fechado) sobre um sistema operacional de código fonte aberto, mas que tenha suporte comercial no mercado, como Linux.

Tudo que você precisa saber sobre Criptografia

…e tinha medo de perguntar

A palavra “criptografia” vem do grego e significa “escrita escondida”. Bem, ainda não temos a tecnologia dos filmes de fantasia onde um pergaminho aparentemente em branco revela um mapa do tesouro quando exposto ao luar, mas a criptografia simula isso transformando a informação em algo ilegível ou aparentemente sem valor. Muito fácil: se eu rabiscar bem um cheque de R$100.000,00 ele também perde seu valor por ficar ilegível.

O difícil é o inverso: tornar legível o ilegível, e é aí que está a magia da criptografia.

O primeiro lugar onde alguém antenado pensaria em usar criptografia é na guerra, para comunicar estratégia de movimentação a tropas distantes, espionagem, etc. Se o inimigo intercepta essa comunicação, principalmente sem o primeiro saber, ganha a guerra. Por isso quem primeiro estudou técnicas de criptografia foram os militares, governos e instituições de pesquisas secretas. Focavam em duas coisas: como criptografar melhor e como descriptografar as mensagens do inimigo (criptoanálise).

Na nossa Era da Informação e Internet, criptografia tem um papel central porque viabiliza comunicação segura. Mais até: não teríamos uma Era da Informação se criptografia não fosse de uso dominado por qualquer cidadão, simplesmente porque o mundo comercial não entraria nessa onda de trocar informação (e fazer negócios) por redes abertas se não houvesse um meio de garantir confidencialidade.

Trata-se de um tema muito vasto, fascinante, com muitos desdobramentos tecnológicos. Então vamos somente nos focar em entender aqui o vocabulário desse mundo.

Criptografia de Chave-Simétrica

Criptografia digital já era usada secretamente desde 1949 por militares e governos. Em meados da década de 1970 a IBM inventou o padrão DES (Data Encription Standard) de criptografia, que passou a ser largamente utilizado até os dias de hoje. A partir daí tudo mudou.

Como exemplo de seu funcionamento, se a Paula quer enviar uma mensagem secreta para Tatiana, ela deve fazer isso:

Mensagem + ChaveSimétrica = MensagemCriptografada

Então MensagemCriptografada é enviada para Tatiana por uma rede aberta, que para lê-la terá que fazer o seguinte:

MensagemCriptografada + ChaveSimétrica = Mensagem

Uma analogia a essas equações seria como se ambas trocassem caixas que abrem e fecham com uma chave (a chave simétrica), que contém cartas secretas. Para a Tatiana abrir a caixa da Paula, terá que usar uma cópia da chave que a última usou para fecha-la.

O que representamos pela soma (+) é na verdade o algoritmo de cifragem (ou o mecanismo da fechadura) que criptografa e descriptografa a mensagem. Hoje em dia, esses algoritmos tem geralmente seu código fonte aberto, e isso ajudou-os a se tornarem mais seguros ainda, pois foram limpos e revisados ao longo dos anos por muitas pessoas ao redor do mundo.

A Chave Simétrica é uma seqüencia de bits e é ela que define o nível de segurança da comunicação. Ela deve ser sempre secreta. Chama-se simétrica porque todos os interessados em se comunicar devem ter uma cópia da mesma chave.

O DES com chave de 56 bits pode ser quebrado (MensagemCriptografada pode ser lida sem se conhecer a chave), e outros cifradores de chave simétrica (symmetric-key, ou private-key) mais modernos surgiram, como 3DES, AES, IDEA, etc.

O maior problema da criptografia de chave simétrica é como o remetente envia a chave secreta ao destinatário através de uma rede aberta (e teoricamente insegura). Se um intruso descobri-la, poderá ler todas as mensagens trocadas. Mais ainda, comprometerá a comunicação entre todo o conjunto de pessoas que confiavam nessa chave.

Criptografia de Chave Pública

Esses problemas foram eliminados em 1976 quando Whitfield Diffie e Martin Hellman trouxeram a tona os conceitos da criptografia de chave pública também conhecida por criptografia por par de chaves ou de chave assimétrica. Trata-se de uma revolução no campo das comunicações, tão radical quanto é o motor a combustão para o campo de transportes. Eles descobriram fórmulas matemáticas que permitem que cada usuário tenha um par de chaves de criptografia matematicamente relacionadas, uma privada e outra pública, sendo a última, como o próprio nome diz, publicamente disponível para qualquer pessoa. Essas fórmulas tem a impressionante característica de o que for criptografado com uma chave, só pode ser descriptografado com seu par. Então, no nosso exemplo, Paula agora enviaria uma mensagem para Tatiana da seguinte maneira:

Mensagem + ChavePública(Tatiana) = MensagemCriptografada

E Tatiana leria a mensagem assim:

MensagemCriptografada + ChavePrivada(Tatiana) = Mensagem

E Tatiana responderia para Paula da mesma forma:

Resposta + ChavePública(Paula) = RespostaCriptografada

Ou seja, uma mensagem criptografada com a chave pública de uma, só pode ser descriptografada com a chave privada da mesma, então a primeira pode ser livremente disponibilizada na Internet. E se a chave privada da Paula for roubada, somente as mensagens para a Paula estariam comprometidas.

O cifrador de chave pública tido como mais confiável é o RSA (iniciais de Rivest, Shamir e Adleman, seus criadores).

Criptografia assimétrica permitiu ainda outras inovações revolucionárias: se Tatiana quer publicar um documento e garantir sua autenticidade, pode fazer:

Documento + ChavePrivada(Tatiana) = DocumentoCriptografado

Se um leitor conseguir descriptografar este documento com a chave pública da Tatiana significa que ele foi criptografado com a chave privada da Tatiana, que somente ela tem a posse, o que significa que somente a Tatiana poderia te-lo publicado. Nasce assim a assinatura digital.

Infraestrutura para Chaves Públicas

O PGP (Pretty Good Privacy) foi o primeiro sistema de segurança que ofereceu criptografia de chave pública e assinatura digital de qualidade para as massas. Ficou tão popular que virou o padrão OpenPGP e posteriormente recebeu várias implementações livres. É largamente usado até hoje, principalmente em troca de e-mails. Sua popularização exigiu que houvesse uma forma para as pessoas encontrarem as chaves públicas de outras pessoas, que muitas vezes nem eram conhecidas pelas primeiras. No começo dos tempos do PGP, haviam sites onde as pessoas publicavam suas chaves públicas para as outras encontrarem. Talvez esta foi a forma mais rudimentar de PKI ou Public Key Infrastructure. PKI é um conjunto de ferramentas que uma comunidade usa justamente para a classificação, busca e integridade de suas chaves públicas. É um conjunto de idéias e não um padrão nem um produto. Conceitos de PKI estão hoje totalmente integrados em produtos de colaboração como o Lotus Notes da IBM, e seu uso é transparente ao usuário.

Certificados Digitais

Como Tatiana pode ter certeza que a chave pública de Paula que ela tem em mãos, e que está prestes a usar para enviar uma mensagem segura, é realmente de Paula? Outra pessoa, agindo de má fé, pode ter criado uma chave aleatória e publicado-a como sendo da Paula. Podemos colocar isso de outra forma: como posso ter certeza que estou acessando realmente o site de meu banco e não um site impostor que quer roubar minha senha, e meu dinheiro? Não gostaria de confiar em meus olhos só porque o site realmente se parece com o de meu banco. Haveria alguma forma mais confiável para garantir isso ?

Em 1996, a Netscape, fabricante do famoso browser, atacou este problema juntando o que havia de melhor em criptografia de chave pública, PKI (através do padrão X.509), mais parcerias com entidades confiáveis, e inventou o protocolo SSL (Secure Socket Layer ou TLS, seu sucessor), e foi graças a este passo que a Internet tomou um rumo de plataforma comercialmente viável para negócios, e mudou o mundo.

Para eu mandar minha senha com segurança ao site do banco, e poder movimentar minha conta, o site precisa primeiro me enviar sua chave pública, que vem assinada digitalmente por uma outra instituição de grande credibilidade. Em linhas gerais, os fabricantes de browsers (Mozilla, Microsoft, etc) instalam em seus produtos, na fábrica, os certificados digitais dessas entidades, que são usadas para verificar a autenticidade da chave pública e identidade do site do banco. Este, por sua vez, teve que passar por um processo burocrático junto a essa entidade certificadora, provando ser quem diz ser, para obter o certificado.

O SSL descomplicou essa malha de credibilidade, reduzindo o número de instituições em quem podemos confiar, distribuindo essa confiança por todos os sites que adquirirem um certificado SSL.

Na prática, funciona assim:

  1. Acesso pela primeira vez o site de uma empresa que parece ser idônea.
  2. Ele pede o número de meu cartão de crédito.
  3. Se meu browser não reclamou da segurança desse site, posso confiar nele porque…
  4. …o site usa um certificado emitido por uma entidade que eu confio.

Pode-se verificar os certificados que o fabricante do browser instalou, acessando suas configurações de segurança. Você vai encontrar lá entidades como VeriSign, Thawte, Equifax, GeoTrust, Visa, entre outros.

Segurança Real da Criptografia

Quanto maior for a chave de criptografia (número de bits) mais difícil é atacar um sistema criptográfico. Outros fatores influenciam na segurança, como a cultura em torno de manter bem guardadas as chaves privadas, qualidade dos algoritmos do cifrador, etc. Este último aspecto é muito importante, e tem se estabilizado num bom nível alto, porque esses algoritmos tem sido produzidos num modelo de software livre, o que permite várias boas mentes audita-los e corrigir falhas ou métodos matemáticos ruins.

A segurança real de qualquer esquema de criptografia não foi comprovada. Significa que, teoricamente, qualquer um que tiver muito recurso computacional disponível pode usa-lo para quebrar uma mensagem criptografada. Teoricamente. Porque estaríamos falando de centenas de computadores interconectados trabalhando para esse fim. Na prática, hoje isso é intangível, e basta usar bons produtos de criptografia (de preferência os baseados em software livre), com boas práticas de administração, e teremos criptografia realmente segura a nossa disposição.

Quer segurança? Organize-se!

Sobre Segurança em TI

Você sabia que segurança é, por anos consecutivos, apontado como um dos temas que mais gera interesse no mercado de TI? E é claro que fornecedores adoram abordá-lo na mídia, em eventos etc., porque é larga a fauna de produtos a oferecer. Funciona mais ou menos como a “indústria do medo” da área de segurança pessoal e carros blindados.

Se uma brecha de segurança é maliciosamente explorada numa empresa, o responsável será severamente punido pelo seu superior. E um fator psicológico que ameniza isso parece ser adquirir vários produtos de segurança para lançar-lhes a culpa, no caso de uma desgraça.

O fato é: quanto mais produtos de segurança uma empresa adquire, mais… terá produtos de segurança para gerenciar. Não necessariamente estará mais segura. Aliás, eleva-se a chance de ela estar insegura de fato devido ao aumento de complexidade em seu ambiente operacional.

Então o que é segurança? Uma definição que gosto é: segurança em TI se interessa por tudo que abrange a correta privacidade, disponibilidade e qualidade da informação. Essa definição tem derivações óbvias: “estamos inseguros se alguém de fora pode ver as informações internas de nossa empresa”; “estamos inseguros se nossos dados desaparecem”; e “estamos inseguros se alguém modifica maliciosamente nossas informações”.

O que muita gente ignora é que a informação pode ter sido exposta, desaparecida ou deteriorada por fatores internos como disco lotado, má configuração de algum software que nada tem a ver com segurança, ou até uma aplicação desenvolvida internamente, talvez por um programador inexperiente, que consumiu todo o poder de processamento de um servidor, deixando seu serviço — e por conseqüência a informação — indisponível.

Segurança não é firewall. Não são senhas. Nem serviço que se adquire como uma caixa preta. Nem criptografia. Tudo isso nada vale se estiver em mãos inexperientes ou inconseqüentes. Segurança corporativa em TI deve ser uma consciência perene em todos os envolvidos no fluxo da informação, ou seja, todos os funcionários de uma empresa. É um processo. E sendo assim, deve ser invocada desde a confecção de uma aplicação por um programador interno, até seu uso na mesa do usuário final. O primeiro mais que o último.

O primeiro passo é adotar uma metodologia, até uma criada internamente. O segundo é aplicá-la na área de desenvolvimento de aplicações, porque é na mesa do programador que a TI nasce, e se for concebida com segurança em mente, facilita no resto do ciclo de vida da aplicação (disponibilização e produção). Uma boa prática é não reinventar a roda toda vez que um programa novo precisa ser escrito. Use algum framework maduro de mercado, como Java Enterprise Edition, pois eles resolvem estes problemas em níveis que o programador corporativo não precisa chegar.

Costumo dizer também que segurança é sinônimo de organização. É possivel conceber segurança num data center desorganizado? E será que fizemos um bom trabalho se pararmos para organizar nosso data center sem pensar em segurança? Não há organização sem segurança, e vice-versa.

É comum também encontrar empresas em que este tema tem tamanha importância, sem hesitar em dizer que a níveis neuróticos às vezes, que fazer negócios passa a ser proibitivo, porque “é inseguro” fazer conexões aqui e ali. Reflexo popular disso é não permitir o uso das práticas ferramentas de mensagem instantânea ou sites de redes de amizades, como o orkut.com, porque claro, não queremos que um funcionário perca seu tempo falando com amigos pessoais. Mas muitas vezes ele está deixando de se relacionar com um cliente, parceiro, etc. Então é bom ou ruim permitir este tipo de abertura? A experiência tem mostrado que no balanço geral o resultado é positivo quando se permite a comunicação entre as pessoas.

O paradoxo é que empresas só fazem negócios quando seus funcionários se comunicam com o mundo de fora e o impulso natural da segurança é restringir isso. Portanto, nem tanto ao céu, nem tanto à terra, segurança em TI deve ser gerida de forma responsável, consciente, de mente aberta, e principalmente inovadora.

Apresentação IBM Linux

Aqui você vai encontrar minha apresentação sobre Linux e padrões abertos da IBM.

O conteúdo engloba:

  • Como medir maturidade de Software Livre
  • Diferença entre Linux e Software Livre
  • Padrões Abertos
  • De que forma Linux e Padrões Abertos ajudam empresas a reduzir custos
  • O caminho certo para começar a usar Linux numa empresa
  • Posicionando Linux e outros padrões para soluções de desktop
  • Arquiteturas de desktop, como PC Multiusuário, Workplace, etc
  • Arquiteturas não-convencionais com Linux: clusters, para-virtualização com Xen, SELinux, etc
  • Linux na estratégia On Demand da IBM
  • Linux no mercado, números, TCO
  • Comprometimento da IBM com Linux

Há muito conteúdo nesta apresentação, então costumo usar somente partes de acordo com o público.

Esta apresentação usa fontes que não estão por default numa instalação Linux. Se você vai usa-la em Linux, baixe e instale o pacote de fontes webcore-fonts.

Quando apresento, costumo mostrar também algumas animações flash e filmes para quebrar o gelo. Clique com o botão direito e salve o link:

Por que Linux é Melhor que Windows ?

A resposta quase automática e superficial para esta pergunta seria: Ora, porque Linux é livre e aberto, desenvolvido pela comunidade !

Linux tem demonstrado desenvoltura excepcional em ambientes corporativos, trazendo reais benefícios financeiros diretos, e também indiretos através de melhoria da operação de TI das empresas.

Deixando de lado o altruísmo de ser aberto e a moda do software livre, vamos analisar por que isso acontece.

 

Primeiro é importante lembrar que existe diferença entre software livre e Linux. O primeiro é qualquer tipo de software que tenha seu fonte aberto, e que tenha uma licença de uso que respeite certos padrões. Linux é um pequeno conjunto de alguns desses softwares que atingiram uma maturidade tal que podem ser usados até em ambientes críticos, com a tranqüilidade exigida pelo mundo corporativo. Linux não é sinônimo de software livre, nem tão pouco representa todos os softwares livres do mundo.

Linux é desenvolvido com base em padrões abertos. A evolução desse padrões são regidos por organizações independentes, como o W3C, OASIS, JCP etc, que visam o bem comum. Nenhuma entidade com interesses comerciais detém poder sobre eles. Os Padrões Abertos são um patrimônio da humanidade, e por isso podem ser usados livremente por qualquer pessoa ou organização.

Na prática isso se reverte em um consenso automático de como produtos e softwares falam entre sí e interoperam. Mais ainda, dá ao usuário a escolha de trocar facilmente produtos por outros que respeitam os mesmos padrões. Não que o usuário faça isso todo dia, nem todo ano. Mas o simples fato de ter escolha lhe dá um enorme poder de negociação com seus fornecedores. E isso faz os fornecedores reduzirem seus custos e melhorar a qualidade de seus produtos.

Concentrar-se numa camada de padrões tecnológicos abertos, promove ainda uma flexibilidade que permite fazer novas combinações criativas. Exemplo consagrado disso é Linux rodando em zSeries (mainframe), que permite aplicações baseadas em padrões abertos serem consolidadas numa plataforma em que não há desperdícios como tempo ocioso, mais fácil de ser gerenciada, e em que o custo total é menor. Isso é válido também para outras plataformas, pois a flexibilidade do Linux o faz presente em todo tipo de hardware: desde um simples relógio de pulso, até o zSeries.

Há também estudos sobre ganhos indiretos do uso de Linux e Padrões Abertos, mostrando que as empresas que os adotaram, começaram a descobrir uma nova gama de possibilidades que não estavam na prancheta do projeto inicial.

 

Há ainda a teoria de que Linux exige serviços mais caros. A mão de obra para Linux é conhecida como mais avançada, com mentes mais aguçadas, e que com pouco é capaz de fazer mais. Enquanto não se experimenta na prática essa força de profissionais, não é possível entendê-la na teoria. Sem dúvida existem também profissionais que deixam a desejar, como em qualquer especialidade, mas em geral são mentes que tem uma compreensão técnica das coisas que vai além do mero cotidiano de clicar botões na tela. Tudo é uma questão de o quanto se paga pelo tanto que se recebe.

O esforço da comunidade, aliado a intransigência de provedores de tecnologias proprietárias, fez surgir opções de softwares livres que interagem com softwares proprietários. Caso do OpenOffice.org, suite de escritório avançada que lê e grava documentos também nos formatos proprietários das outras suites.

Seja como for, o mercado de TI é grande o suficiente para conter todas as coisas. E o verdadeiro valor que produtos e tecnologias tem para seus usuários deve ser medido mais pelo benefício que lhes traz de fato, do que por relatórios de mercado ou teorias financeiras, que servem meramente para nortear. Dentro deste cenário, não podemos dizer que Linux é melhor. Mas é evidente que o mercado tem aceitado-o como uma ótima alternativa.

Uma coisa é fato: se Linux entra numa empresa, não sai mais.

Pense Aberto, Seja Livre

Linux vem ganhando cada vez mais espaço no mercado corporativo, mas ainda há dúvidas sobre até onde os sistemas abertos podem ser usados.

Ainda é comum encontrar grupos que defendem a idéia de Open Source para utilização sem qualquer restrição e que lutam por esta proposta com toda a força, mas nem sempre com um bom embasamento. Há ainda os CIOs que entendem que, deixando de lado tudo o que o movimento representa, Linux é somente um sistema operacional.

Começa a ficar claro que quanto mais específica é a funcionalidade de um software, mais restrito é o número de pessoas e empresas que trabalham nele. É a antítese do Open Source. Pense por um lado numa aplicação que atende somente a algum setor industrial. E por outro, algo de uso genérico como um sistema operacional, que no sentido mais primitivo do conceito, gerencia recursos de hardware, participa da rede, é seguro e confiavel (como Linux). Por ser de uso absolutamente essencial, este último possui sólida infra-estrutura de suporte. Já o primeiro, por ser de nicho, terá suporte muito bem pago, e protegerá seu capital intelectual com mecanismos legais. Antes, sistema operacional era uma necessidade de nicho, hoje é um commodity. Linux é um commodity.

Correlação entre Closed e Open Source

A segunda maior preocupação das empresas no campo de TI — a primeira sempre é redução de custos — é automatizar ao máximo sua cadeia de processos, ou seja, reunir seus processos de negócio como as pessoas os entendem e transformá-los em um “programa de computador”. E quando uma empresa faz isso de uma forma centralizada ela andou 80% do caminho em direção aos Web Services. Então, como executar esta operação de forma universal, libertando a empresa das amarras de um monopólio, com suporte profissional condizente com o negócio, com liberdade para a escolha da plataforma? Compra-se um ERP? Desenvolve-o internamente? A resposta a estas questões é: Não importa, se você estiver usando Padrões Abertos, que é o ponto de equilíbrio entre o closed e o Open Source. O resto se torna uma planilha de custos que definirá qual é a configuração mais barata.

Os grandes pilares do e-business

Pela primeira vez na história da computação, temos um conjunto de ferramentas abertas e universais que podem nos atender para qualquer necessidade: Linux como plataforma, XML e WebServices para comunicação e integração de aplicações, HTML e HTTP para interação com usuários, e o mais importante, Java Enterprise (ou J2EE), para o âmbito das aplicações de negócios. Os quatro são padrões abertos, sem dono, mas com suporte total de toda a indústria (com excessão de uma só empresa). Os quatro são um patrimonio da humanidade.

Arquitetura de um servidor de aplicações J2EE

J2EE, é um framework universal que provê uma série de serviços para aplicações de negócio: acesso a bancos de dados, ambiente transacional, segurança, separação da camada de apresentação, persistência de sessão, mensageria, componentização, serviços de nome, páginas web ativas (JSP), processamento XML, e por aí vai, sem parar de crescer. Isso permite que um processo de negócio seja convertido em software usando padrões, com a garantia de que rodará em qualquer lugar onde houver um servidor de aplicações J2EE, que tem vários fornecedores, Open Source ou comerciais. A implementação da IBM, por exemplo, é o WebSphere Application Server.

A especificação J2EE é desenvolvida por uma comunidade aberta que tem como membros a IBM, Sun, Oracle, SAP, Apache Software Foundation, Laboratórios Dolby, num total de mais de 600 entidades, que contribuem abertamente com o que cada um tem de melhor. Ela evolui seguindo o Java Community Process, que define o que entra ou não na especificação.

Usando sempre tecnologias abertas, uma empresa tem o conforto de aproveitar do mercado o que for mais importante para ela, levando em consideração nível de suporte, disponibilidade de skills etc. Foi isso o que a Internet mudou. Não tem nada a ver com a forma como compramos eletrônicos ou roupas, pois continuaremos indo às lojas. A Internet abriu o mundo permitindo a livre conversa entre as pessoas. Nem Linux nem padrões abertos existiriam sem a Internet. Bem vindo ao mundo livre, aberto e de todos.