Ser Livre!

Inovações, Tecnologia

Com a popularização, incentivos dos governos e aumento da utilização de softwares livres, faz com surja algumas alternativas tecnológicas suficientemente capazes de superar soluções proprietárias. O principal fato que ostenta a afirmação anterior é que a diferença entre software livre e proprietário é que o proprietário é desenvolvido por empresas, obviamente estas empresas cobram a licença de uso de seus softwares produzidos, já o software livre é desenvolvido pela própria comunidade e possui a licença de seus softwares sem nenhum custo(geralmente). Bom… mas o que isto tem haver em superar soluções proprietárias? Esta colocação apresenta duas facetas: a do lado proprietário o argumento de defesa é que como existem empresas por trás de tais sistemas, apresentam um compromisso em fazer com que os mesmos funcionem por terem que atender as necessidades de seus clientes, pelo lado livre é que como é desenvolvido pela comunidade, assim podendo envolver mais pessoas no processo de desenvolvimento de tais tecnologia e assim produzir algo melhor.

Claro que neste contexto surgem comunidades que não vingam(o que acontece muito), assim como existem empresas que acabam falindo(o que também acontece muito). O ponto que desejo chegar é quando estas comunidades dão certo! Então você tem pessoas pelo mundo todo ajudando a desenvolver o software desejado, como é o caso do Firefox, distribuições Linux, OpenOffice, entre outros… Nos últimos anos estas comunidades cresceram… cresceram muito ao ponto de disponibilizarem correções e melhorias quase que diariamente para estes sistemas. Estas mesmas comunidades poderão crescer ainda mais, isto só dependerá de nós usuários.

Em grandes empresas, hoje a utilização de softwares livres é sinônimo de corte de custos, para nós profissionais de tecnologia é sinônimo de oportunidades, pois a utilização de softwares livres pode implicar em adaptá-los as necessidades dessas empresas e ai que entramos para fazer com que estes recursos funcionem. Seus códigos são abertos, aquilo que não gostamos ou queremos melhorar fica completamente a nosso critério, dependendo exclusivamente do nosso conhecimento para  concretizá-los. A utilização de software livre em massa gera um ciclo que beneficia a todos, pois com software livre você não gasta seu tempo e dinheiro com a ferramenta em si, mas sim em pessoas mais capacitadas tecnicamente, fazendo com elas melhorem seus processos e com que elas busquem e se aprimorem ainda mais constantemente.

Então vamos ao ponto X deste artigo, que é uma questão que para muitos ainda é difícil ou até mesmo enigmática, a questão é: Como ser livre? Como não depender do nosso digníssimo Windows? Como fazer com que eu consiga fazer tudo que eu faço usando Windows em outra plataforma?

Estas questões serão resolvidas logo adiante, porém antes de começar, gostaria de deixar bem claro que não tenho algo contra windows, até porque utilizo alguns softwares presos a esta plataforma, o fato é que depois que consegui fazer com que tudo aquilo que necessito rodar em plataformas livres, sou um usuário mais feliz, satisfeito e tranqüilo em utilizar meu sistema sem ter receios em pegar vírus ou ter problemas com estabilidade dos meus processos.

Já experimentei utilizar várias distribuições Linux, entre elas Suse, Ubuntu e outras baseadas em Debian, Conectiva, etc… Das distribuições que surgiram e a que mais vingou foi a Red Hat, que definitivamente despontou em soluções para servidores. Infelizmente a distribuição cresceu tanto que empresas começaram a utilizá-lo cada vez mais e assim necessitaram de um suporte ainda maior, logo se tornou um negócio altamente lucrativo, fazendo com a Red Hat cobrasse por sua licença, mas não a licença de uso do software, mas sim um pacote de suporte pesado integrado a utilização do mesmo, diferentemente da Microssoft, este é realmente um suporte eficiente, pois se o sistema operacional não possuir tais recursos que desejares e a distribuição não tiver como sanar, poderá solicitar para que a Red Hat desenvolva para você. Dai então surgiu o Red Hat Enterprise(pago) e a última versão livre é o Red Hat 9. Paralelo a versão enterprise existe um projeto completamente livre que baseia-se em Red Hat que é o Fedora. Também não tenho nada contra as outras distribuições mas quando migrei das minhas outras tentativas para algo baseado em Red Hat foi como sair de um Fusca e entrar em uma Ferrari. A Oracle, IBM, DELL entre outros recomendam Red Hat para disponibilizarem seus serviços, profissionais com certificações Red Hat são mais requisitados no mercado, então… Por que não investir na utilização de distribuições baseadas nesta plataforma?

Trabalhei em uma empresa aérea que suas estações eram inteiramente SUSE e após conseguirmos convencer o nosso gerente de TI que o Fedora era uma alternativa melhor, nossos problemas com suporte quase que diminuíram em 100%.

Alguns leigos afirmarem que o Fedora é mais lento que distribuições baseadas em Debian(ubuntu&cia), bom… isso em partes é verdade, pois se colocássemos todas as questões de segurança envolvida no Fedora nestas outras distribuições, certamente elas cairiam por terra para alcançar a mesma agilidade dos processos, na informática geralmente mais segurança é inversamente proporcional a mais performance, devido ao fato de mais instruções de conferência ou mais filtros a serem executados, consumindo assim mais recursos de hardware. O Fedora pode ficar tão leve quanto estas outras distribuições e de maneira segura se cortarmos alguns serviços e aplicativos que não necessitamos. Atualmente uma licença de windows vista custa em torno de R$ 650,00, então pegue metade deste valor e invista em hardware… mais memória ou processamento para sua máquina, além de ter um SO melhor, ainda terá mais desempenho.

Vamos seguindo o baile voltamos a questão X… Onde conseguir o Fedora? Apenas faça o download GRATUITAMENTE no seguinte link: http://fedoraproject.org/pt_BR/get-fedora

Usuário -> Como instalar o fedora?

https://fedoraproject.org/wiki/Tours/Fedora10/Screenshots

Ou se preferir assista o vídeo abaixo:

Usuário -> Como instalar programas?

Abra o terminal (tela de comando), digite: su – (informe sua senha de root)

Depois digite o seguinte: yum install NOMEDOPROGRAMA

Este comando faz com que o fedora busque nos repositórios, baixe e instale automaticamente o programa que deseja.

Usuário -> Como obter os devidos repositórios para que tudo funcione no fedora 10?

Bueno… conforme visto no site Viva o linux temos a colocação abaixo:

A partir da versão 10 do Fedora os repositórios Livna, Atrpms e outros estão sendo fundidos numa espécie de repositório chamado RPMFUSION. Para usá-los basta você instalar o rpmfunsion no seu Fedora 10.

Simplesmente execute o seguinte comando(pode copiar e colar no seu terminal): rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm && rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

Usuário -> Quais programas eu posso assistir vídeos, escutar música, MSN, gravar cd/DVD, ouvir MP3, etc???

Existe um faq que se seguí-lo a risca terá tudo o que necessita em seus pcs: http://fedora.wiki.br/wiki/FAQ_do_Fedora_10

Como alternativa ao office da microssoft, exite o openoffice, o que a pouco tempo atrás era eternamente mais lento e com menos recursos, mas nas últimas versões e tenho usado, ele está excelente, produzi até meu trabalho final de graduação usando ele e não tive problema algum, bem pelo contrário, me acertei mais com essa versão 3.0 do OpenOffice do que o office 2007.

Mas se mesmo assim deseja usar office 2007 no Linux não tem problema.

Usuário -> Mas como assim? Não tem problema? Isso é possível?

Sim, isto é completamente possível! Não só o office 2007 como vários programas windows altamente requisitados como photoshop, dreamweaver, flash, etc… rodam de maneira emulada no Linux

Usuário -> Mas roda bem?

Sim, roda bem e em muitos casos de maneira estável… Alguns mais rápido do que no próprio windows.

Usuário -> Então como fazê-los rodar?

Uso dois sistemas em conjunto, o primeiro é o próprio emulador de programas windows padrão do Linux, o famoso Wine.

Instale em seu fedora tudo o que existe do wine: yum install *wine*

Como isso você já poderá instalar muitos programas windows, como dreamweaver 8, flash 8, fireworks, etc…

Clicando com o botão direito nos instaladores windows você terá a seguinte opção: Abrir com “Carregador de Aplicativos Wine”, clicando nesta opção o aplicativo será executado como se fosse no windows.

Infelizmente nem tudo que reluz é ouro… existem aplicativos que necessitam de mais dependências do próprio windows para rodar, como é o caso do office 2007 e outros. Para contornar este problema existe um gerenciador de emulação mais avançado chamado crossover que nos possibilita instalar tais aplicativos, o mesmo executa o download destas dependências e instala os programas que desejamos, com ele fazemos até mesmo o próprio IECA rodar no Linux. Você pode baixá-lo via torrent pelo link: http://thepiratebay.org/torrent/4342284/Crossover_Pro_7.0.2_Linux

Diferente das outras distribuições o Fedora 10 possui um boot gráfico animado muito legal, para habilitá-lo a dica é adicionar o parâmetro “vga=0×318″ no final da linha “kernel /vmlinuz…” no arquivo presente em /boot/grub/menu.lst

Tempos atrás também diziam que a interface gráfica do Linux era muito lenta e que isso fazia com que a plataforma fosse inadequada para uso doméstico. Concordo que ainda hoje Linux exige mais conhecimento para que possa ser utilizado, até porque ainda as pessoas nascem  no mundo da informática mexendo com windows, mas se seu começo e um certo período de uso maior for com Linux, certamente a questão de usabilidade poderia ser sanada. Quanto a interface mais lenta isso já deixou de ser uma verdade faz tempo, hoje existem dois grandes tipos gerenciadores de interface no Linux o Gnome e o KDE(existem vários outros mas estes são os principais). Inicialmente comecei com KDE, por aparentemente ser mais amigável, mas depois no departamento de TI da JMT nos indagamos… Por que o Fedora usa por padrão o Gnome? Dai começamos a usar Gnome e sentimos maior agilidade nas janelas e execução da própria a interface, com uso a longo prazo chegamos a conclusão definitiva que o Gnome além de ser mais rápido e poderoso, também pode ser mais atraente, podendo mudar bordas de janelas, engines da interface, temas, icones, etc… Para isso existe o site Gnome look onde você pode baixar tudo gratuitamente ao que agradar o seu gosto.

Mas isso não bastou para que o Linux literalmente desse um “xeque-mate” em termos de interface, a comunidade de desenvolvedores trabalharam arduamente em cima de recursos desktop em 3d, começando a explodir com o famoso Beryl e hoje seu sucessor Compiz Fusion. Estes gerenciadores de interfaces chutaram o balde de vez, se você tem um placa aceleradora 3d acima de 128 mega ou superior, melhor ainda se tiver um desses modelos recentes da GeForce, meu amigo, você poderá fazer “chover pra cima” em sua máquina, fazer algo que no windows não existe como com tais quantidades de efeitos em conjunto. Uma pequena demonstração abaixo do compiz fusion rodando no fedora 10:

Para quem deve imaginar isto é pesado, está redondamente enganado . Vejam isto rodando em um P3 de 800 mhz, 128 de ram e 32 mb de vídeo.

Se por uma casualidade você for um empresário lendo este assunto e desejares implantar tais tecnologias em sua empresa pode contatar o departamento de TI da Citruz comunicação.

Espero que este artigo sirva de ajuda ou esclarecimento a alguém, um abraço a todos!

8.663 comentários

Engenharia de software na prática

Tecnologia

Existem várias formas de modelar sistemas, baseando-se em testes, construindo DFDs(diagramas de fluxo de dados) ou simplesmente colocando em um rascunho aquilo que prospectamos em um software. Em grandes projetos, projetos importantes ou simplesmente em rotinas vitais de sistemas, analitas necessitam usar técnicas da engenharia de software para minimizar os fatores de risco que compõem as chances falhas daquilo que desejam implementar. Softwares houses estão ou buscam estar completamente a par deste assunto para alcançar níveis de qualidade em seus processos de desenvolvimento. Inclusive existem certificações que avaliam a qualidade com que um software é produzido como ISO, CMMI, MPSBR, etc…

Grandes corporações gastam milhões em seus processos de desenvolvimento para obter melhor qualidade ou alcançar níveis de certificações mais altos para comprovar a excelência de seus projetos. IBM Brasil, Politec e mais uma meia dúzia no Brasil apresentam o nível 5 do CMMI por exemplo… Gastaram milhões e passaram por inúmeras auditorias de entidades certificadoras para poder mostrar e comprovar ao mundo que realizam as possíveis especificações de se desenvolver tecnologia com qualidade.

Obviamente não irei abordar aqui tudo que é necessário para para atingir tais níveis, até porque livros decentemente detalhados sobre este assunto geralmente conseguem ser resumidos em no mínimo 500 páginas.

Embora exista uma gigantesca organização por traz deste assunto na prática a maioria das empresas ou desenvolvedores não se utilizam de tais técnicas. Trabalhei mais de dois anos atuando no desenvolvimento, implementação, gerenciamento e prestando suporte a sistemas aéreos, gestão de turismo, gestão financeira e TEF(Transferência eletrônica de fundos). Tive a oportunidade de ter contato com diferenciados fornecedores de sistemas e aparatos tecnológicos, onde na maioria dos casos baseavam-se seus desenvolvimentos ou correções no boca-a-boca, ou de um e-mail contendo as descrições dos problemas ou no máximo um fluxo de interfaces contendo os print screens das telas de como deveriam ser adaptados os processos a realidade da empresa. Não existia uma linguagem unificada para trocarmos idéias, obviamente este processo de solicitação é falho e com probabilidades maiores de retrabalho. Estudei na faculdade e no mestrado tais técnicas de engenharia de software, vi que outros cursos de níveis superiores tinham diversas cadeiras sobre o assunto, mas ao trabalhar com empresas, e muitas empresas grandes de desenvolvimento, fiquei decepcionado e vi que realidade era outra, na prática os artifícios de engenharia de software eram pouquíssimos utilizados e o sentimento de que o trabalho ainda não estava completo e eficaz era unanimemente eminente por ambas as partes. Até mesmo empresas com certificações não mantinha uma comunicação com o departamento de tecnologia usando diagramações para resolvermos problemas ou realizar melhorias, também não sei como tais empresas conseguiam certificações do tipo MPS.BR nível F, o que me faz acreditar que talvez o critério de avaliação de tal certificação talvez seja “furado”. Mas enfim… engenharia de software é um assunto sério e decisivo para o sucesso de um sistema que está na mente ou em simples rascunhos, e este blá blá que escrevi anteriormente é para situar os leitores da importância e motiva-los ao que vou demonstrar agora.

Uma prévia de como projetar sistemas de maneira clara, detalhada, objetiva e uma das mais difundidas é a utilização de técnicas baseadas em UML (Unified Modeling Language), e é sobre parte desta técnica que vou brevemente descrever. Uma descrição sobre o UML pode ser visto neste link: http://pt.wikipedia.org/wiki/UML ou na página oficial: http://www.uml.org/

Softwares são compostos basicamente de 3 instruções: leitura, processamento e escrita. Tais instruções podem ser mapeadas objetivamente por dois diagramas bastante difundidos na UML (ER e diagrama de classes), obviamente que se empregarmos os demais descritos na UML poderemos garantir ainda mais o mapeamento daquilo que prospectamos no sistema, cada diagrama possui sua função, tem diagrama até mesmo para analisar ações do usuário perante o sistema(diagrama de casos de uso). Enfim, para planejar sistemas sem gastar um longo tempo para modelar, estes dois são suficientes para modelar a estrutura da base de dados e programação do sistema.

Diagrama de entidade e relacionamento .

Existem várias ferramentas que auxiliam na construção de tais diagramas uma bastante conhecida é o DBDesigner4 disponível em: http://www.fabforce.net/dbdesigner4/downloads.php.

Atualmente ele possui um sucessor mysql workbench disponível em: http://dev.mysql.com/downloads/workbench/5.1.html

Ambas rodam tanto em ambiente windows quanto linux.

Vídeo aula: http://www.youtube.com/watch?v=Hz3Cz6XYUhU (a parte do xampp é bobagem)

Tais ferramentas proporcionam você projetar sua base de dados, e a partir desta projeção a ferramenta gera um script contendo todo sql necessário para a geração da base de dados, com todas suas tabelas, relacionamentos, views, trigge, etc… Possui também a funcionalidade de se conectar a uma base existe e executar a engenharia reversa.

Diagrama de classes

Para modelagem da parte lógica do sistema fora a base dedados, indico duas que é o JUDE e o ArgoUML.

Ambas as ferramentas também são multiplataformas, permite construir diagramas da UML, principalmente o diagrama de classes e exportar estes diagramas para montar a estrutura de código planejada.

O JUDE a partir do diagrama de classes gera automaticamente as classes em JAVA.

O ArgoUML apresentado pelo meu amigo André tem a capacidade de gerar códigos em PHP4, JAVA, Csharp, PHP 5, etc …

Mesmo que for trabalhar de forma estruturada ou mista, colocar e organizar suas idéias nestas ferramentas antes de sair programando certamente irá poupar muito tempo de decisões, ajustes futuros e realmente viabilizar aquilo que deseja implementar.

Muitos desenvolvedores acham que isso é perder tempo ou alguns simplesmente possuem preguiça de realizar tal processo antes da codificação. Certamente tais profissionais só darão valor para isso após estarem em um emaranhado, perdendo produtividade no seu desenvolvimento e com dificuldade em mapear falhas de projeto.

Deixo aberto para questionamento e trocarmos idéias. Quem conhece ferramentas diferenciadas, mais eficazes, ou se simplesmente viu ou ouviu algo neste âmbito, por favor deixe aqui sua contribuição. Vamos tentar estabelecer aqui um ponto de discussão para amadurecermos ainda mais este assunto.

Um abraço a todos!

6.420 comentários

Internet Explorer, a desgraça da web!

Tecnologia

Quem nunca teve que finalizar esta tarefa? Quem nunca esperou um tempo a mais para carregar página? Quem nunca abriu a página e viu que tinha algo estranho ou mal posicionado? Quem nunca abriu uma página e necessitou habilitar/desabilitar ou instalar activex? Enfim, quem nunca abriu uma página com “pau”?

Se alguém conseguiu essa façanha existem apenas duas alternativas, ou não usa internet ou teve a sorte, a megasena, telesena, sortudinha, totobola de não usar o adorável browser da Microsoft, o Internet Explorer (I.E).

Bom… Por que essa ironia?

Gastaríamos os dedos escrevendo os motivos disso, mas lá vão alguns para deixá-lo a par da fatídica situação.

1-> Existem tags, principalmente css que só ele implementa fora dos padrões da W3C (entidade que define padrões para a criação e a interpretação dos conteúdos para a Web) . Isso faz com que as páginas tenham formas de visualização de uma maneira única nele. Muitos devem achar isso uma vantagem, mas vai fazer algo que queria que todo mundo possa ver da mesma forma… Isso é um problemão, forçando os desenvolvedores “gambiarrar” seus códigos.

2-> Posicionamento de elementos HTML próprio. Sim! Os desenvolvedores ao fazerem um layout, geralmente por terem mais conhecimento, usam inicialmente coisas mais decentes como Firefox, Opera , Safari, chrome, etc… e nos primeiros testes geralmente as páginas apresentam uma proximidade de funcionamento homogêneo nestes browsers, quando abrem no IE, principalmente no IE6 é quase impossível a página não ser exibida como um “farol desregulado”. Isso e mais outros milhões de motivos fazem com que este browser receba o título da comunidade desenvolvedora de IEca, sim… IEca! Porque inevitável a página não ficar uma bosta e muitas vezes perdermos horas e horas adequando.

3-> Uniplataforma, não roda em outros sistemas operacionais, apenas emulando. Isto é uma desvantagem grande já que na atualidade sistemas UNIX estão cada vez mais crescendo e sendo utilizados.

4 -> Falta de criatividade e esforço dos desenvolvedores da Microsoft (filhos da p.), sim isso tem que admitir! As abas foram inventadas pelos desenvolvedores do Firefox, e facilitam muito no reaproveitamento de memória, processo e até mesmo compactação da interface(genial não?). Tudo bem que os demais browsers incorporassem a idéia porque são simplesmente LIVRES, mas o que espera-se por algo pago? É que no mínimo seja melhor! Então ficamos aguardando o IEca 7… O que teria de novo? O que poderia ter para superar o Firefox? Naaaaaaaadaaaaaaaaaaaaaaa!!!!! Pior que isso, copiou na “cara-dura” e meteu abas no meio da fuça!

Um pequeno demonstrativo entre seu principal concorrente pode ser visto no seguinte link: http://h2odeskmod.wordpress.com/2007/10/21/veja-as-vantagens-do-firefox-encima-do-ieca/

5-> E prometo que vou parar por aqui! A tela abaixo diz o sentimento de todos para com esse browser.

Ieca!

Ieca!

Enfim, como desenvolvedor e usuário peço a todos de joelhos, implorando, suplicando e rastejando. Por favor, parem de usar esta merda!

Desenvolvedores da Microsoft tirem este browser de suas distribuições, façam um acordo com a Google para incorporar o Chrome, ou com a Mozilla Foundation para incorporar o Firefox, ou com o Papa para benzer todas as máquinas com Windows!

Para baixar outros browser:

Firefox: http://br.mozdev.org/firefox/download.html

Chrome: http://www.google.com/chrome

Opera: http://www.opera.com/download/

Atenciosamente, Luiz Fogliato Junior

8.798 comentários