quarta-feira, 19 de maio de 2010

Sistema operacional Linux, Distro Linux, Distribuições, mas que raios é isso tudo?

Para um usuário acostumado com windows, a vida é fácil, você escolhe entre Seven, Vista ou XP e pronto!
No caso dos sistemas operacionais baseados em linux a situação é diferente, cada um é como se fosse filho de um mesmo pai e com mães completamente diferentes. Você não pode julgar os sistemas linux apenas com uma Distribuição Linux.
Como isso funciona, o kernel linux (núcleo do sistema) desenvolvido originariamente por Linus Torvalds , é distribuído gratuitamente e de forma livre, dessa forma, qualquer pessoa que queira pode alterar e adaptar o mesmo a seu gosto, apesar de toda a filosofia "livre" em torno dele (livre não quer dizer gratuito) o linux é mantido por empresas que lucram e muito com ele, como isso ocorre?

O seu Roteador, o seu modem, seu celular ou qualquer outro dispositivo eletrônico que necessite de algum sistema controlador, provavelmente funciona com uma versão do kernel linux, por isso, muitas empresas investem no desenvolvimento do mesmo, pois desse modo, eles tem um sistema comprovadamente robusto e funcional com pouco investimento. Na realidade não nada de muito ideológico nisso...
A segunda parte da importância do kernel linux é com relação aos servidores, como o linux pode ser adaptado a qualquer arquitetura de hardware, temos versões para rodarem em servidores e sistemas específicos como o do LHC e demais supercomputadores. Como os processos envolvidos são muito críticos e específicos é necessário um sistema operacional desenhado e preparado para a tarefa específica. Esses clientes em geral tem muito dinheiro, mas como o que está em jogo muitas vezes envolve propriedades intelectuais importantíssimas é melhor que o controle total e absoluto de hardware e software estejam nas mãos deles.
Por fim, temos o linux em smartphones, tablets e dispositivos móveis diversos  onde ele vem ganhando muitos adeptos e em sistemas em desktop, os sistemas em desktops possuem infindáveis distribuições, que são versões de sistemas operacionais diferentes baseados no mesmo kernel e aplicativos, mas não se engane, Fedora é diferente de Ubuntu que é diferente do Archlinux. Cada um desses que eu citei são sistemas operacionais diferentes, cada um com sua característica e peculiaridade.
Cada sistema linux diferente pode ser tão diferente um do outro como o Céu e a Terra, imagine com relação ao Windows, tem até um artigo bem interessante: O Linux não é o Windows.
Tem muita gente que questiona o linux e talz, mas na realidade o linux nunca foi e não é um concorrente do Windows, a começar pela finalidade e depois pela maneira que é distribuído, o concorrente do windows mais próximo é o MacOSX, mesmo assim, por rodar em hardware específico podemos dizer que ele é de nicho assim como o linux, na realidade o windows não possui nenhum concorrente, essa é a verdade nua e crua, se ele fosse vendido em caixinhas e tivesse propaganda  e a finalidade de substituir o windows ele poderia até ser um concorrente mas não é o que ocorre, até mesmo no ramo de servidor ele em si não é um concorrente, o real concorrente do IIS é o Apache, que roda no próprio windows também.
Portanto, quando falar de "linux" entenda apenas como o kernel do sistema, porque um sistema operacional usável, baseado em kernel linux é Ubuntu, Fedora, Mandriva etc... Espero ter esclarecido as dúvidas de quem ainda não sabia, qualquer coisa, comentem.

Performance do Ubuntu 10,04 VS Windows Vs MacOSX

Antigamente podíamos sem dúvidas dizer: "A performance do Linux é Superior ao Windows", a realidade não é bem assim.

Com a nova versão do Windows 7 temos um cenário bastante interessante onde os dois sistemas operacionais (Ubuntu 10.04 e Windows 7 ) possuem performances bastante similares, com o Windows ganhando em alguma coisa e o Ubuntu Linux em outras.
Na época do XP (Vista não Conta) o mesmo era e é extremamente antigo e simplesmente não se aproveita do que o hardware tinha a oferecer, como resultado, mesmo tendo drivers inferiores, o linux ganhava em performance por ser mais otimizado em hardware mais recente, o exemplo disso é o SMP (Symmetric Multi-Processing), coisa que no XP ainda engatinha e há muito tempo tem um suporte decente em linux, o mesmo ocorre com a arquitetura de 64bits onde há tempos o linux suporta perfeitamente.
Com as melhorias inseridas no Windows 7, podemos ver os resultados interessantes do Ubuntu 10.04 VS Windows 7 onde os resultados são similares quando os drivers são semelhantemente otimizados. O interessante disso é que: O Ubuntu Linux 10.04 e o Windows 7 possuem performance semelhantes, Se as empresas resolvessem lançar jogos baseados em OpenGL o Ubuntu Linux teria uma performance Similar ao Windows e , em alguns casos , Superior e em outros inferior.

Vale lembrar que os testes foram realizados usando o Ubuntu 10.04 e que existem diversos sistemas operacionais baseados no kernel linux que podem ter uma performance diferente.

Sistema operacional baseado em linux? mas o que é isso? linux é linux não?
Não exatamente, vou explicar no próximo post.

quarta-feira, 12 de maio de 2010

Visualização de Impressão Utilizando o QPrintPreviewDialog e PyQt4

Dessa vez foi um pouco complicado hehe, eu estava garimpando a internet procurando um exemplo de como utilizar o QPrintPreviewDialog, sem sucesso, depois de muito procurar fiz uma pergunta ao amigo do site sobre Python e Qt e ele gentilmente me respondeu, o resultado pode ser visto aqui:



#!/usr/bin/python
# -*- coding: utf-8 -*-
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtCore
from PyQt4.QtWebKit import QWebView

class ProgramaImpressor(QDialog):
    def __init__(self,parent=None):
        super(ProgramaImpressor,self).__init__(parent)
        rotuloNome=QLabel("Nome: ")
        rotuloEndereco=QLabel(u"Endereço: ")
        rotuloOutros=QLabel("Diversos: ")
        self.impressor=QPrinter()
        self.txtnome=QLineEdit()
        self.txtendereco=QLineEdit()
        self.txtdiversos=QTextEdit()
        self.btnimprimir=QPushButton("&Imprimir")
        layoutHorizontal=QHBoxLayout()
        layoutHorizontal2=QHBoxLayout()
        layoutHorizontal3=QHBoxLayout()
        layoutVertical=QVBoxLayout()
        layoutHorizontal.addWidget(rotuloNome)
        layoutHorizontal.addWidget(self.txtnome)
        layoutHorizontal2.addWidget(rotuloEndereco)
        layoutHorizontal2.addWidget(self.txtendereco)
        layoutHorizontal3.addWidget(rotuloOutros)
        layoutHorizontal3.addWidget(self.txtdiversos)
        layoutVertical.addLayout(layoutHorizontal)
        layoutVertical.addLayout(layoutHorizontal2)
        layoutVertical.addLayout(layoutHorizontal3)
        layoutVertical.addWidget(self.btnimprimir)
        self.setLayout(layoutVertical)
        self.dialogo=QPrintPreviewDialog()
        self.html=u""
        self.documento=QWebView()
        self.connect(self.dialogo, SIGNAL("paintRequested (QPrinter *)"),self.documento.print_)
        self.connect(self.documento,SIGNAL("loadFinished (bool)"),self.previaImpressao)
        self.connect(self.btnimprimir, SIGNAL("clicked()"),self.imprimir)
  
    def previaImpressao(self,arg):
        self.dialogo.exec_()  
  
    def imprimir(self,html=None):
  
        html=u"<font align=center><H1>Relatório de Teste de Impressão</H1></font>\
        <br>\
        <p>O nome digitado Foi: <font color=blue>%s</font></p>\
        <p>O endereço da pessoa é: <font color=blue>%s</font></p>\
        <p>Os demais comentários São:\
        <br>%s</p>"%(self.txtnome.text(),self.txtendereco.text(),self.txtdiversos.toHtml())
        self.documento.setHtml(html)
        #self.documento.show()
      
      
      
if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    JanelaPrincipal = ProgramaImpressor()
    JanelaPrincipal.show()
    app.exec_()