Choosing a Linux Distribution

It is important to begin by saying that all Linux distributions, including commercial — Red Hat Enterprise Linux, SUSE, Xandros, etc — as well as non-commercial — Debian, Slackware, Gentoo, etc — are all good and are technically able to fulfill most real world needs. To choose amongst them is more related to personal taste of the people who already knows it than to functionality. But a company must think about other aspects — not only taste — to guarantee making the right strategic choice for long term benefits.

Support and Certification

All Linux distributors package, in one way or another, mostly the same set of Open Source softwares (the Kernel, Apache, Samba, libraries, Gnome, KDE, etc). But only the so called enterprise distributions include support services together with their product.

For a user, support really means:

  1. A partner available now and in the long term to transfer operational risks.
    This is the most important point. Companies don’t want to take risks — specially the Open Source risks — for themselves.
  2. Fast access to quality updates.
    Companies in general have limited resources to compile, test and apply OSS updates.
  3. Access to a large set of certified hardware (IHV) and software (ISV) vendors, and availability of pre-tested complex solutions.
    A critical part of any IT project is the support and certification connections between its components (hardware, storage, middleware, etc). The most important and valued function provided by a distributor, even more so than the embedded technology in the OS, is its ability to build ecosystems of certified Independent Hardware and Software Vendors.

Price for a License Versus Subscription Business Models

Companies that sell commercial software (as Microsoft, IBM, Oracle, etc) allow somebody to use their products only after buying the rights to. This “buyable rights” are refered to as a commercial license.

The software provided in any Linux distribution is free of charge. The developers of these softwares have licensed their work under the GPL, BSD, Mozilla Public, IBM Public or some other Open Source licenses, which grants anyone the rights to use and redistribute the software without having to pay any money.

It is a misnomer to say that you are “buying� some Linux distribution (or a license for it to be used). You can’t buy it. It is already yours, in practical terms. It is like saying a user is buying the content of some web site. There is nothing material to acquire. On the other hand this user can subscribe to a service that provides hot line support, access to updates and access to an ecosystem of interoperable certified products and solutions – the support points outlined above.

So enterprise Linux distributors (such as Red Hat, Novell, Xandros) sell these services, and not the software, because the last is free of charge.

Choosing the Best Distribution

There are two responsible and effective ways to use a Linux distribution as part of a company’s IT operations:

  1. Acquire a global commercial Linux subscription such as Red Hat Enterprise Linux or Novell SUSE Linux Enterprise Server.
    A subscription ties together the Open Source software and its global scale support, providing a stable environment for a certified ISV and IHV flourishing ecosystem.
  2. Use free distributors such as as Debian or Slackware and buy support services from an independent local company.
    Free distributions may introduce more risk due to non-global support operations, in addition to a loose integration between software and support, which leads to a weak ISVs and IHVs ecosystem.

In terms of technical flexibility and vendor choice — points that influence cost —, both options are equal. All the benefits of the second option are present in the first, while second lacks the ecosystem aspects.

Thus the conclusion is that it is more reasonable to directly acquire a product that directly ties the support to the software, than manually integrate them at the regional level.

RHEL versus SLES comparison

Companies should look at the following points, in this order, when choosing a Linux distribution to run their business applications:

  1. Which distribution vendor do I have closer commercial relationship?
  2. Who has best pricing model for the value provided?
  3. Which distribution does my technical staff have more experience with?
  4. Which distribution is supported and certified by my providers of hardware and software?
  5. If you are unsure, be responsible and use an enterprise distribution.

There are two enterprise Linux distributors that have a strong ecosystem and penetration in the market: Red Hat Enterprise Linux and Novell SUSE Linux Enterprise. They have differences that every year continue to converging and diverge. See the table for a comparison.

Other Enterprise Distributions

There are several Linux distributions with business models similar to the one adopted by Red Hat and Novell. Most well known are Ubuntu (technically based on Debian), Mandriva (Conectiva and Mandrake fusion), Xandros (also based on Debian.) They are focused on building a product that can scale globally in such a way that support services can be delivered automatically or as a self-service.

There is an intrinsic market law that seeks equilibrium by providing two options in which to choose. One option may be good (there is actually no option when only one path is available), two mature options is better, and three or more options are too much for the market to handle. It appears that the market has already defined its two mature options: Novell and Red Hat.

Even if these other enterprise distributors have better products, they’ll have to spend a considerable amount of energy developing an ecosystem of ISVs and IHVs. More than that, ISVs and IHVs will have to take a break in their operations to listen to what these new distributors have to offer.

Ecosystem is everything. A product with a good ecosystem can easily become much better than an excellent product without an ecosystem. This is probably the most important aspect a company should consider when choosing a Linux distribution.

One cannot say that a certain distribution is better than all others. When searching for a distribution one should be pragmatic in striking a balance between the distribution’s functions and how well it meets the goals of the company or specific project.

Aquecimento Global

SAIBAM, que a Terra não será mais a mesma dentro de 20 ou 30 anos.


Aumento da variação de temperaturaA Natureza não consegue rearranjar seus ecossistemas tão rápido quanto o homem tem feito a temperatura do planeta subir, através da crescente emissão de CO2 (dióxido de carbono), marca de nossa era industrial. Então, antes da maioria de nós deixar esta vida, veremos secas fustigantes, enchentes avassaladoras e extinções irreversíveis. Já começou. Espécies, geleiras e continentes inteiros sumirão do mapa.

O mais terrível não é a mudança na paisagem global, mas os impactos sócio-econômicos. Imaginem as hordas de milhões de pessoas — 6 casas decimais de desabrigados — migrando para as montanhas porque seus paises e cidades viraram parte dos oceanos Índico, Pacífico e Atlântico. Ou teremos séculos de guerras por água e m2, ou aprenderemos a viver em paz e compartilhar os recursos.

Este assunto era um rumor remoto para mim, mas é impossível não se sensibilizar com o documentário Uma Verdade Inconveniente, ainda em exibição em algumas salas de São Paulo. Os fatos relatados alí não me saem da cabeça, e é filme obrigatório para todas as pessoas.

Faça Sua Parte Para Evitar o Aquecimento Global

Mais na Web

Lembre-se: o planeta não é nosso; ele nos foi emprestado pelos nossos filhos (provérbio africano).

Receita de Kiopolo

BeringelasIsto é uma engenharia reversa bem sucedida de uma entrada típica da culinária judaica-sefaradita ou búlgara. Pode ser encontrada em São Paulo no Shoshi Delishop, no Bom Retiro (R. Correia de Melo quase esquina com a Três Rios).

Ingredientes

  • Beringelas: 4
  • Pimentão vermelho: 1
  • Alho amassado: um pouco menos de 1/2 cabeça
  • Azeite extra virgem
  • Suco de limão: 1 se for fraco, 1/2 se for forte
  • Sementes de kümmel, opcional
  • Adoçante ou açucar a gosto
  • Sal a gosto

Modo de Preparo

  1. Coloque as beringelas e o pimentão diretamente sobre o fogo das bocas do fogão sem nenhuma proteção. Isso vai dar um sabor especial ao prato.
  2. Vire de vez em quando com um pegador longo de metal, pegando a beringela sempre pelas extremidades. Toda a pele deve ficar queimada e carbonizada, praticamente se descolando da polpa, e o fruto deve se abrir em alguns pontos revelando estar mole e molhado.
  3. Espere esfriar até uma temperatura que não queime as mãos.
  4. Segure a beringela pelo cabo e remova gentilmente a pele queimada, e por último o cabo.
  5. Faça a mesma coisa com o pimentão, removendo a pele e sementes. Mais detalhes na receita de matbukha.
  6. Coloque a beringela longitudinalmente numa tábua, uma de cada vez, e com uma faca grande massere-a na transversal quebrando suas fibras. Depois pique mais até o ponto de ficar uma massa. E vá juntando todas elas num recipiente final.
  7. Pique o pimentão em pedaços bem pequenos e finos e junte no recipiente final. Ele serve mais para dar um tom vermelho esporádico à salada.
  8. Junto o alho amassado.
  9. Regue com azeite extra virgem. Regue com o limão ou vinagre. Por incrível que pareça, o azedo do vinagre desaparece e ele potencializa o sabor assado da beringela.
  10. Adicione um pouco de kümmel. Atenção para ele não dominar a salada. Ele deve funcionar como uma surpresa em algumas poucas mordidas.
  11. Misture tudo e vá experimentando, regulando o sal, vinagre e adoçante/açucar. É importante ter um sabor levemente adocicado.

Sirva frio, com pão sírio ou outro tipo de pão, como entrada ou petisco.

Kiopolo é delicioso e quem experimenta quer a receita. Eu sempre preparo esta receita quando faço matbukha, porque o trabalho é o mesmo.

outras versões desta receita na Internet.

Padrões Abertos e Linux no Desktop

Hoje a indústria usa o sistema operacional de desktop de praticamente um único fornecedor, cria aplicações gráficas 100% dependentes dele, e usa uma suite de escritório que também só funciona sobre esse mesmo sistema operacional. Ainda por cima, os documentos de formato proprietário com que o mercado usa só podem ser gerados e consumidos por essa mesma suite.

Se nossos CDs de música tocam em qualquer CD player, por que nossas aplicações, páginas da web, documentos, etc não podem ser usados em qualquer sistema operacional, plataforma de hardware, etc ?

A demora para isso acontecer reflete quão dependente dessas tecnologias proprietárias é o mercado. Isso é caro principalmente porque não há com quem negociar alternativas, e por isso essas tecnologias terão o preço que seu fornecedor quiser.

A IBM ainda está analisando o direcionamento futuro dos nossos desktops internos para funcionários. Não foi decidido entre Linux ou Vista, nem Darwin, nem BSD, nem nenhum outro sistema operacional.

Temos iniciativas internas fortíssimas para que os produtos e serviços de nossa Intranet sigam Padrões Abertos. Dessa forma, um funcionário pode escolher o sistema operacional que melhor se adequar ao seu trabalho.

Não usamos uma tecnologia proprietária de impressão remota, e sim o serviço que usa Padrões Abertos para imprimir na rede.

Não usamos uma aplicação proprietária de VPN, mas o serviço de VPN que usa Padrões Abertos.

Não temos um serviço de diretórios de uma implementação proprietária, e sim um diretório corporativo baseado no Padrão Aberto LDAP.

Não usamos documentos de formatos proprietários, que só podem ser gerados e consumidos por uma única suite de escritório, mas reforçamos o uso do novo Open Document Format, baseado em XML, introduzido pelo OpenOffice.org, que pode ser aberto em qualquer suite de escritório.

E por aí vai….

A última fronteira é a convergência gradativa dos produtos de workgroup baseados em Lotus Notes com o novo Workplace Client Technology, que implementa Padrões Abertos, e que é baseado no Eclipse (como dezenas de outros produtos da IBM).

E digo mais: as tecnologias proprietárias que usamos internamente nos nossos desktops, tivemos que adotá-las porque quando surgiu a necessidade de resolver o problema de negócio que elas resolvem, simplesmente não haviam opções que implementassem Padrões Abertos. Conforme surgem Padrões para aquele determinado problema, isso entra em pauta e a migração é estudada seriamente. Logicamente analizando custos, funcionalidades, viabilidade, etc, porque essa é a forma racional de se fazer mudanças.

Padrões Abertos. Padrões Abertos. Padrões Abertos. Essas são as palavras do momento.

Para o mundo comercial, isso é mais importante do que ter acesso ao código fonte de um software. E é algo que deve estar sempre presente na pauta de TI do CIO.

Pregamos que companhias que inovam reutilizando Padrões Abertos levam vantagem porque seus recursos são liberados para trabalhos que agregam maior valor, e porque as oportunidades do mercado se expandem à medida que os Padrões Abertos proliferam.

É o que dizemos aos nossos clientes. É o que acreditamos. E é o que fazemos.

Fiocruz no World Community Grid

World Community GridO World Community Grid é um projeto fantástico onde pessoas como você e eu doam o poder computacional ocioso de nossos PCs para ajudar a encontrar a cura do cancer e outras doenças, descobrir detalhes de proteinas humanas, fazer pesquisa genética, enfim, mastigar dados a fim de melhorar o mundo.

WCG rodando o algoritmo da Fundação Oswaldo CruzEu rodo ele no meu laptop a anos e até ontem eu estava “ajudando” a curar a AIDS. Hoje fiquei impressionado porque tudo mudou. Nossa brasileiríssima Fundação Oswaldo Cruz está usando o WCG para “achar similaridades entre proteinas de todas as seqüências de genomas dos organismos do mundo. Essas relações entre proteinas vão ajudar a inferir suas prováveis funções e estruturas, levando a novas descobertas em medicina e biologia“. Uau !

O screensaver do WCG que se instala nos PCs é um programa genérico, apto a receber um bloco de dados mais um pedaço de software capaz de processa-lo. Ele faz tudo isso sincronizado com o grid do WCG, enviando os resultados e recebendo um novo bloco para processar. O resultado é um belo e útil screensaver.

Veja esta interativa e divertida animação explicando o funcionamento de um grid computacional.

Instale o screensaver em seu computador. Está disponível p/ Linux, Windows e Mac. É muito bom saber que de alguma forma podemos ajudar essas tão importantes pesquisas.

Receita de Matbukha

PimentõesProvei matbukha (ou matbucha ou matbuha) pela primeira vez em um restaurante libanês em Abu-Gosh, uma vila árabe perto de Jerusalém.

Fiquei impressionado, e depois comprei nos supermercados de Israel matbukha pronta várias vezes. Bem, aqui não há essas coisas para vender, então achei a receita na Internet, que minha mãe traduziu para mim. Fiz e ficou muito bom.

Ingredientes

  • 2 latas de tomates pelados
  • 4 pimentões vermelhos
  • 1 pimentão verde (para variar a cor)
  • 1/2 cabeça de alho amassado
  • 1 colher de sopa de páprica doce
  • Pimenta ardida a gosto
  • 1/2 xícara de café de azeite de oliva virgem
  • Sal e açucar ou adoçante a gosto

Modo de Preparo

  1. Coloque os pimentões diretamente sobre o fogo das bocas do fogão sem nenhuma proteção e vire de vez em quando até toda a pele ficar preta e carbonizada. O fogão vai ficar sujo, mas é essa assagem que vai dar um sabor especial ao prato.
  2. Deixe-os esfriar até uma temperatura que não queime as mãos.
  3. Limpe os pimentões removendo facilmente a pele carbonizada. Muitas pessoas evitam pimentões porque os consideram de dificil digestão. Bem, é esta pele carbonizada, de pura celulose indigesta, a vilã da estória. Depois de remove-la, o pimentão é só delícia.
  4. Abra-os e remova cirurgicamente o miolo com as sementes.
  5. Lave-os cuidadosamente removendo o resto de pele e semente que ficaram grudados.
  6. O resultado parece um bife fino e grande, que deve ser cortado em pedaços quadrados de 1 ou 2cm2.
  7. Triture muito pouco os tomates pelados. Devem sobrar pedaços relativamente grandes.
  8. Junte os tomates, pimentões, alho amassado e pimenta ardida numa panela.
  9. Ferva em fogo baixo por uns 20 minutos, mexendo sempre.
  10. Pitada de açucar ou adoçante (isso é muito importante) e sal.
  11. Misture a páprica ao azeite numa xícara e junte à panela.
  12. Cozinhe devagar, com panela destampada e fogo baixo até a água evaporar e engrossar.
  13. Esfrie e espere algumas horas antes de servir, para o sabor apurar.

Matbukha se come fria, como entrada com pão sírio ou outro pão, e é deliciosa.

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.”

Colaboração e Teamwork

Growth CycleFui a um seminário sobre liderança, colaboração e teamwork.

Tirando os cliches inevitáveis, uma coisa eu gostei que foi dita: colaborar de forma eficiente e benéfica é ainda um desafio, mesmo nesta nossa era de tecnologia avançada. Bem, reconhecer o problema é o primeiro passo para resolve-lo.

Altos executivos da IBM foram questionados certa vez sobre os pontos que levam a um bom ambiente de teamwork e colaboração, que depois foram validados com a NASA (se não me falha a memória) e com a American Society for Quality (se não me falha a memória). O resultado foi este:

  1. Procurar oportunidades de colaboração no seu dia-a-dia.
  2. Considerar as conseqüências e impactos nos outros antes de agir.
  3. Estar aberto para diversidade e pontos de vistas distintos.
  4. Comunicar de formar aberta e honesta.
  5. Construir confiança e respeito mútuo.
  6. Buscar alternativas que tragam ganhos para ambas as partes.
  7. Encorajar inovação e idéias criativas.
  8. Buscar a melhor solução para o seu time na resolução de problemas.

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.

Campanha de Natal

Criançada felizNatal em Embu GuaçuTenho orgulho de minha amiga Helena Bonilha, promotora de justiça de Embu Guaçu (periferia de São Paulo). Trabalhando pelo social, ela organiza todo ano uma campanha em favor das crianças e adolescentes abrigados nos cinco orfanatos da cidade.

Criançada felizQualquer pessoa pode contribuir com um “kit” contendo uma peça de roupa, um par de calçados e um brinquedo. Para participar basta entrar em contato com ela — helenabtl@yahoo.com ou 11-9997-7896 — para pegar os dados da criança a ser contemplada (número do sapato, tamanho da roupa, etc). Quando o kit estiver pronto, basta avisa-la que ela arranja uma forma de mandar buscar o kit.

Criançada felizEla mesma faz a entrega (trata-se de uma doação anônima) no dia em que o orfanato marcar a festa de Natal. Mesmo assim ela avisa as datas da festa para o doador poder comparecer se quiser, e ver os sorrisos de alegria.

Depois ela sempre manda fotos como estas, que foram tiradas em outros anos.

Vale a pena. Faz bem ao coração e à alma.

Curtindo a Vida em São Paulo

Um colega que está se mudando para São Paulo me pediu umas dicas de lugares para levar sua namorada. Mandei esta lista para ele:

  1. Insalata (Al. Campinas, perto da Estados Unidos)
    É bonito, descoladinho e tem todos os tipos de comida, com destaque a ótimas saladas.
  2. Sargento (Al. Pamplona)
    Vai lá só para comer a saladona, que é ótima e sustenta. Peça a pequena.
    Ou então aproveite as massas que estão entre as melhores de SP.
  3. Nello’s (R. Antonio Bicudo entre R. Pinheiros e Artur de Azevedo)
    Barato, tradicional e ótimo. Peça a panzanella de entrada, e depois castigue uma massa. Eu adoro.
  4. Piratininga Bar (R. Wizard, na Vila Madalena)
    É aquele bar que te falei para marcar gol. É bonito, tem piano e sax ao vivo, e uns petiscos sem vergonha. Tem que chegar cedo pq é pequeno, e tenta ficar na parte superior, perto do piano. Tem o Pira Grill ao lado que é mais para comer, e é menos romântico.
  5. Acrópoles (fica em alguma rua do Bom Retiro)
    É um restaurente grego supertradicional e simples. É interessante pq nos finais de semana o Bom Retiro é um bairro morto, com todas as lojas fechadas mas as pessoas bombam na frente do restaurante (mas sempre tem lugar). Um bom programa é ir na Pinacoteca de manhã e depois almoçar lá, que é perto. Pode-se também ir comprar roupa feminina no bairro (vc vai ter que ter paciência) de sábado (até as 12:00, pq depois tudo morre) e depois castigar o grego.
  6. Restaurante do Museu da Casa Brasileira (Av. Faria Lima quase com a Av. Cidade Jardim)
    Este lugar é lindo. O negócio é ir lá domingo umas 10:00 da manhã, assistir o concerto de jazz de graça, dar uma volta no museu (que é pequeno) e ficar para o almoço. Tem um jardim bonito e o restaurente fica de frente para ele. Vale mais pelo programa do que pela comida.
  7. Jardim Aurélia (Rua Tabapuã, 838, no Itaim)
    É um restaurante grande que comprou todas as casas de uma vilinha, então as mesas ficam meio a céu aberto. Self-service de tudo, e a noite vira uma pizzaria razoável.
  8. Sorveteria Ofelê (Al. Lorena com Bela Cintra)
    Dá uma passeada nos Jardins, e toma um sorvete nessa melhor sorveteria de São Paulo.
  9. Senzala (Pça Pan Americana)
    Retaurante tem-de-tudo, com algumas mesas a céu aberto, e vista p/ a praça. Eu gosto do sanduiche de atum, que é bem servido e bom.
  10. Speranza (Av. 13 de Maio quase esquina com a Brigadeiro Luiz Antonio, embaixo do viaduto)
    A melhor pizzaria de São Paulo. Tem que pedir a pizza de marguerita que é inacreditável.
  11. Maha Mantra (Fradique Coutinho perto do Galinheiro)
    O melhor restaurante vegetariano do mundo. É muito barato e é boa opção também para os carnívoros.
  12. Deli Paris (R. Harmonia com Wizard, na Vila Madalena, perto do Piratininga)
    Boulangerie francesa com café da manhã self-service bom, barato e descolado. Dá para almoçar lá tb, tipo quiche com salada etc.

Para os vegetarianos, tenho esta lista de todos os restaurantes VGs de São Paulo.

Picnic em Vinhedo

Local do Parque da Represa em VinhedoFez um dia de sol no último feriado e decidimos fazer um picnic num belo lago que descobrimos numa outra viagem, em Vinhedo.

Enchemos o isopor com frutas e água e caimos na estrada. É um parque municipal chamado Represa II que tem pedalinho e barco de passeio, e a vista do outro lado da água é um morro de selva preservada.

Caminhando para o leste há um lago menor, pouco visitado e foi muito agradável sentar lá e ver a revoada de pássaros.

Havia uma casa abandonada depois do lago e decidimos ir ver, atravessando uma picada no meio do mato. Parecia ser uma velha casa de fazenda, com curral etc, mas caindo aos pedaços.

MacacosEncontrei no chão umas gordas vagens de jatobá que não exitei em abrir para comer. É uma fruta intrigante: sua polpa é verde, envolve os caroços e é totalmente seco ao ponto de parecer um pó, que quando colocado na boca forma uma massa que gruda. É como comer farinha, só que de sabor perfumado e doce.

Na volta para o lago principal havia um bosque onde macacos do tamanho de esquilos eram alimentados pelos biscoitos e picolés das crianças. Ofereci jatobá, mas nem deram bola.

Foi um passeio muito agradável que se pode encaixar numa tarde, incluindo a ida e volta para São Paulo.

Gaia Gourmet Vegetariano

Finalmente consegui almoçar no Gaia, marcando um almoço informal com o pessoal do trabalho.

A marioria dos restaurantes vegetarianos são self-service-coma-a-vontade com buffet de saladas e quentes, bem normal. O Gaia não. Lá as porções vem naqueles pratos bem montados e bonitos dos restaurantes mais elegantes.

E não é só visual. É tudo muito saboroso, muito bem temperado.

Eu por exemplo pedi um panqueca de ricota com risoto de quinua e abóbora, de sabores inusitados. Alguns pediram a outra opção: fusili al dente marinado com vegetais. Olhei a massa que não parecia prometer muito, mas que me disseram que estava ótima. Não resisti e provei também, e me surpreendi.

O Gaia Gourmet Vegetariano é um presente para São Paulo. Levaria lá até aqueles amigos gourmets mais carnívoros. E além de tudo, não é caro: R$15 por pessoa.

Entrou na lista dos meus restaurantes preferidos.

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.

Cantá

Cantá seja lá cumu fô
Si a dô fô mais grandi qui o peito
Cantá bem mais forte qui a dô

Cantá pru mor da aligria
Tomém pru mor da triteza,
Cantano é qui a natureza
Insina os ome a cantá

Cantá sintino sodade
Qui dexa as marca di verga
Di arguém qui os óio num vê
I o coração inda inxerga

Cantá coieno as coieta
Ou qui nem bigorna no maio
Qui canto bão de iscuitá
É o som na minhã di trabaio

Cantá cumu quem dinuncia
A pió injustiça da vida:
A fomi i as panela vazia
Nus lá qui num tem mais cumida

Cantá nossa vida i a roça
Nas quar germina as semente,
As qui dão fruto na terra
I as qui dão fruto na gente

Cantá as caboca cum jeito,
Cum viola i catiguria
Si elas cantá nu seu peito
Num tem cantá qui alivia

Cantá pru mor dispertá
U amor qui bati i consola
Pontiano dentro da gente
Um coração di viola

Cantá cum muitos amigos
Qui a vida canta mio
É im bando qui os passarim
Cantano disperta o só

Cantá, cantá sempri mais:
Di tardi, di noiti i di dia
Cantá, cantá qui a paiz
Carece de mais cantoria

Cantá seja lá cumu fô
Si a dô fô mais grandi qui o peito,
Cantá bem mais forti qui a dô

Autoria de Gildes Bezerra.

Escrito como uma resposta a um cartão de fim-de-ano de Rolando Boldrin. Mais detalhes pelo próprio autor.

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.

Mágica dos Decimais

Multiplique 37 por múltiplos de 3:
3 x 37 = 111
6 x 37 = 222
9 x 37 = 333
12 x 37 = 444
15 x 37 = 555
18 x 37 = 666
21 x 37 = 777
24 x 37 = 888
27 x 37 = 999

Trapézio:
1 x 9 + 2 = 11
12 x 9 + 3 = 111
123 x 9 + 4 = 1111
1234 x 9 + 5 = 11111
12345 x 9 + 6 = 111111
123456 x 9 + 7 = 1111111
1234567 x 9 + 8 = 11111111
12345678 x 9 + 9 = 111111111

Outro Trapézio:
1 x 8 + 1 = 9
12 x 8 + 2 = 98
123 x 8 + 3 = 987
1234 x 8 + 4 = 9876
12345 x 8 + 5 = 98765
123456 x 8 + 6 = 987654
1234567 x 8 + 7 = 9876543
12345678 x 8 + 8 = 98765432
123456789 x 8 + 9 = 987654321

E mais outro:
0 x 9 + 8 = 8
9 x 9 + 7 = 88
98 x 9 + 6 = 888
987 x 9 + 5 = 8888
9876 x 9 + 4 = 88888
98765 x 9 + 3 = 888888
987654 x 9 + 2 = 8888888
9876543 x 9 + 1 = 88888888
98765432 x 9 + 0 = 888888888
987654321 x 9 - 1 = 8888888888
9876543210 x 9 - 2 = 88888888888

Conta bonita:
111.111.111 x 111.111.111 = 12.345.678.987.654.321