sexta-feira, 7 de dezembro de 2007

Ubuntu Server Edition JeOS - Ubuntu para virtualização de servidores

A Canonical Ltda, responsável pelo Ubuntu Linux, lançou uma versão especifica para virtualização de servidores: a Ubuntu Server Edition JeOS.
A JeOs, é uma variação do seu SO versão server, configurado especificamente para servidores virtuais.
Feito especificamente para virtualização, otimizado para VMWare ESX, VMWare Server, ocupa menos espaço em disco e é mais eficiente nestes ambientes, do que versões não otimizadas para virtualização.

Pode ser baixada no site: http://cdimage.ubuntu.com/jeos/

Dica Delphi: Ordenando StringGrid clicando no título - crescente e decrescente

Essa dica é pra galera que programa em Delphi. Quem já se arriscou em usar o StringGrid. Ele não tem recurso nativo para ordenar os campos, clicando no título da coluna. Alias, clicando em seu titulo, nem realiza o movimento de 'clicado', como em outros componentes, tais como o DBGrid, por exemplo.
Por isto, com o auxilio de algumas soluções na internet, montei algumas funções, que ao clicar no título da coluna, ele ordena em ordem crescente; clicando novamente, em decrescente, além de simular o efeito de 'clicado'! Essa solução foi inspirada em soluções de Cristiano Kliemann (http://www.cristianok.hpg.com.br) e no site http://www.clubdelphi.com/foros/showthread.php?t=21456.

  • Na seção type:

type
TSGSortCompareProc = function(SG: TStringGrid; Col, Row1, Row2: Integer): Integer;

  • Crie as seguintes funções:

procedure SGQuickSort(SG: TStringGrid; L, R: Integer;
SCompare: TSGSortCompareProc; Col: Integer);
var
I, J, C, M: Integer;
begin
repeat
I := L;
J := R;
M := (L + R) shr 1;
repeat
while SCompare(SG, Col, I, M) < 0 do
Inc(I);
while SCompare(SG, Col, J, M) > 0 do
Dec(J);
if I <= J then
begin
for C := 0 to SG.ColCount - 1 do
SG.Cols[C].Exchange(I, J);
if I = M then
M := J
else
if J = M then M := I;
Inc(I);
Dec(J);
end;
until I > J;
if L < J then
SGQuickSort(SG, L, J, SCompare, Col);
L := I;
until I >= R;
end;



function ComparaString(SG: TStringGrid; Col, Row1, Row2: Integer): Integer;
begin
Result := AnsiCompareText(SG.Cells[Col, Row1], SG.Cells[Col, Row2]);
end;

function ComparaStringInvertido(SG: TStringGrid; Col, Row1, Row2: Integer): Integer;
begin
Result := AnsiCompareText(SG.Cells[Col, Row2], SG.Cells[Col, Row1]);
end;

function ComparaNumeros(SG: TStringGrid; Col, Row1, Row2: Integer): Integer;
var a,b : real;
begin
try a := StrToFloat(SG.Cells[col,row1]); except a := 0; end;
try b := StrToFloat(SG.Cells[col,row2]); except b := 0; end;
Result := Round( (a - b)*100000 );
end;

function ComparaNumerosInvertido(SG: TStringGrid; Col, Row1, Row2: Integer): Integer;
var a,b : real;
begin
try a := StrToFloat(SG.Cells[col,row1]); except a := 0; end;
try b := StrToFloat(SG.Cells[col,row2]); except b := 0; end;
Result := Round( (b - a)*100000 );
end;

function ComparaData(SG: TStringGrid; Col, Row1, Row2: Integer): Integer;
var a, b: TDate;
begin
try a:=StrToDate(SG.Cells[Col,Row1]); except a := Date(); end;
try b:=StrToDate(SG.Cells[Col,Row2]); except b := Date(); end;
Result := round(a - b ) ;
end;

function ComparaDataInvertido(SG: TStringGrid; Col, Row1, Row2: Integer): Integer;
var a, b: TDate;
begin
try a:=StrToDate(SG.Cells[Col,Row1]); except a := Date(); end;
try b:=StrToDate(SG.Cells[Col,Row2]); except b := Date(); end;
Result := round(b - a ) ;

end;

procedure StrGridSort(SG: TStringGrid; Col: Integer; tipo: integer; decrescente: boolean; total: boolean);
var linhas: integer;
begin
if total then
linhas := SG.RowCount - 2
else
linhas := SG.RowCount - 1;
if (tipo=1) then //caso for numerico
begin
if decrescente then //Comeca pela linha 2 porque a Linha 1 é usada para definir o tipo
SGQuickSort(SG, 2, linhas, @ComparaNumerosInvertido, Col)
else
SGQuickSort(SG, 2, linhas, @ComparaNumeros, Col);
end
else if (tipo=2) then//caso for string
begin
if decrescente then
SGQuickSort(SG, 2, linhas, @ComparaStringInvertido, Col)
else
SGQuickSort(SG, 2, linhas, @ComparaString, Col);
end
else //caso for data
if decrescente then
SGQuickSort(SG, 2, linhas, @ComparaDataInvertido, Col)
else
SGQuickSort(SG, 2, linhas, @ComparaData, Col);
end;

  • PARA UTILIZAR AS FUNÇÕES:
Declare as seguintes variaveis na seção private do form:
_cod, GiRow, GiCol, coluna : integer;
GCelda : TRect;

Para ordenar a StringGrid, utiliza-se a seguinte procedure:

StrGridSort(SG: TStringGrid; Col: Integer; tipo: integer; decrescente: boolean; total: boolean);

Onde:
SG: O Nome da StringGrid
Col: A coluna que irá ser utilizada como refetencia
tipo: 1: Conteúdo numérico; 2: String; 3: Data
decrescente: True: ordena em ordem decrescente. False: Ordem Crescente
Total: True: Não ordena a ultima linha. False: Ordena a ultima linha

Ao criar a StringGrid, a linha 1 é utilizada para definir o tipo do campo.
Por exemplo, ao criar uma StringGrid com 3 campos: Codigo(numerico), Nome(String),Data_Emissao(Data),
usa-se o seguinte codigo:

grid.Cells[0,1] := 'N';
grid.Cells[1,1] := 'S';
grid.Cells[2,1] := 'D';
grid.RowHeights[1]:=0;

  • No Evento OnMouseDown do StringGrid:

procedure StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Var
Valor :String;
tipo : integer;
LGcCoord: TGridCoord; //Define as coordenadas do mouse na grid
begin

LGcCoord := TCustomGrid(StringGrid1).MouseCoord(x,y);
GiCol := LGcCoord.X;
GiRow := LGcCoord.Y;
if (GiRow = 0) And (Button = mbleft) And (GiCol <> -1) then
Begin
with StringGrid1 do
Begin
GCelda := CellRect(GiCol,0);
Valor := Cells[GiCol, 0];
Canvas.Font := Font;
Canvas.Brush.Color := clInactiveCaptionText;
Canvas.FillRect(GCelda);
Canvas.TextRect(GCelda, GCelda.Left + 2, GCelda.Top + 2, Valor);
DrawEdge(Canvas.Handle, GCelda, 10, 2 or 4 or 8);
DrawEdge(Canvas.Handle, GCelda, 2 or 4, 1);
End;

if (StringGrid1.Cells[GiCol,1]='N') then
tipo := 1
else
if (Grid.Cells[GiCol,1]='S') then
tipo := 2
else
tipo := 3;

if ( (GiCol > 0) and (GiRow < (Grid.RowCount-1)) ) then begin if (GiCol=coluna) then begin StrGridSort(StringGrid1,GiCol,tipo, true, false); coluna := -1; end else begin StrGridSort(StringGrid1,GiCol,tipo, false,false); coluna := GiCol; end; end; end; end;
  • No evento OnMouseUp:
procedure StringGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Var Valor :String; begin if (GiRow = 0) And (Button = mbleft) And (GiCol <> -1) then
Begin
with StringGrid1 do
Begin
Valor := Cells[Gicol, 0];
Canvas.Font := Font;
Canvas.Brush.Color := clInactiveCaptionText;
Canvas.FillRect(GCelda);
Canvas.TextRect(GCelda, GCelda.Left + 2, GCelda.Top + 2, Valor);
DrawEdge(Canvas.Handle, GCelda, 4, 4 or 8);
DrawEdge(Canvas.Handle, GCelda, 4, 1 or 2);
GCelda := StringGrid1.CellRect(1, 1);
End;
End;

end;

sexta-feira, 30 de novembro de 2007

Ponha um tubarão em sua vida

Os japoneses sempre adoraram peixe fresco. Porém, as águas perto do Japão não produzem muitos peixes há décadas. Assim, para alimentar a sua população, os japoneses aumentaram o tamanho dos navios pesqueiros e começaram a pescar mais longe do que nunca. Quanto mais longe os pescadores iam, mais tempo levava para o peixe chegar. Se a viagem de volta levasse mais do que alguns dias, o peixe já não era mais fresco. E os japoneses não gostaram do gosto destes peixes.
Para resolver este problema, as empresas de pesca instalaram congeladores em seus barcos. Eles pescavam e congelavam os peixes em alto-mar. Os congeladores permitiram que os pesqueiros fossem mais longe e ficassem em alto mar por muito mais tempo. Os japoneses conseguiram notar a diferença entre peixe fresco e peixe congelado e, é claro, eles não gostaram do peixe congelado.
Então, as empresas de pesca instalaram tanques de peixe nos navios pesqueiros. Eles podiam pescar e enfiar esses peixes nos tanques, como 'sardinhas'. Depois de certo tempo, pela falta de espaço, eles paravam de se debater e não se moviam mais.
Eles chegavam vivos, porém cansados e abatidos. Infelizmente, os japoneses ainda podiam
notar a diferença do gosto. Por não se mexerem por dias, os peixes perdiam o gosto de frescor. Os consumidores japoneses preferiam o gosto de peixe fresco e não o gosto de peixe apático.
Como os japoneses resolveram este problema? Como eles conseguiram trazer ao Japão peixes com gosto de puro frescor?Antes da resposta, leia o que vem abaixo: Quando as pessoas atingem seus objetivos - tais como: quando encontram uma namorada maravilhosa, quando começam com sucesso numa empresa nova, quando pagam todas as suas dívidas, ou o que quer que seja, elas podem perder as suas paixões. Elas podem começar a pensar que não precisam mais trabalhar tanto, então, relaxam.
Elas passam pelo mesmo problema dos ganhadores de loteria, que gastam todo seu dinheiro,
o mesmo problema de herdeiros, que nunca crescem, e de donas-de-casa, entediadas, que ficam dependentes de remédios de tarja preta.
Para esses problemas, inclusive no caso dos peixes dos japoneses, a solução é bem simples. L. Ron Hubbard observou, no começo dos anos 50: 'O homem progride, estranhamente, somente perante a um ambiente desafiador'. Quanto mais inteligente, persistente e competitivo você é, mais você gosta de um bom problema.
Se seus desafios estão de um tamanho correto e você consegue, passo a passo, conquistar esses desafios, você fica muito feliz. Você pensa em seus desafios e se sente com mais energia.Você fica excitado e com vontade de tentar novas soluções.
Você se diverte. Você fica vivo! Para conservar o gosto de peixe fresco, as empresas de pesca japonesas ainda colocam os peixes dentro de tanques, nos seus barcos.Mas, eles também adicionam um pequeno tubarão em cada tanque. O tubarão come alguns peixes, mas a maioria dos peixes chega 'muito vivo'. E fresco no desembarque. Tudo porque os peixes são desafiados, lá nos tanques.
Portanto, como norma de vida, ao invés de evitar desafios, pule dentro deles. Massacre-os. Curta o jogo. Se seus desafios são muito grandes e numerosos, não desista, se reorganize! Busque mais determinação, mais conhecimento e mais ajuda.
Se você alcançou seus objetivos, coloque objetivos maiores. Uma vez que suas necessidades pessoais ou familiares forem atingidas, vá ao encontro dos objetivos do seu grupo, da sociedade e, até mesmo, da humanidade. Crie seu sucesso pessoal e não se acomode nele. Você tem recursos, habilidades e destrezas para fazer a diferença.

'Ponha um tubarão no seu tanque e veja quão longe você realmente pode chegar'.

Sucesso!

(autor desconhecido)

segunda-feira, 26 de novembro de 2007

Chávez e o Império

Chávez e o Império

por Carlos Azevedo

O rei de Espanha mandou o presidente da Venezuela calar-se. A euforia tomou conta de todas as direitas, mas também deixou confusa muita gente boa. O que Chávez havia dito durante a Conferência da Comunidade dos Países Íbero-americanos? Que o ex primeiro-ministro espanhol, Aznar, é um fascista. O atual primeiro ministro da Espanha, Zapatero tomou a palavra para dizer que, embora tendo grandes divergências políticas com Aznar, achava que ele devia
ser tratado com respeito. Zapatero não podia fazer diferente, tinha que se manifestar, porque sabia que seria cobrado na Espanha se houvesse se mantido em silêncio diante da crítica pública de Chávez. O que fez Chávez enquanto Zapatero falava? Mesmo tendo o som cortado, continuou a falar paralelamente, interrompendo Zapatero, insistindo em seus argumentos contra Aznar, lembrando que este havia apoiado o golpe de Estado que derrubou Chávez do poder por dois dias em 2002 (por ordem de Aznar o embaixador da Espanha foi o primeiro a reconhecer o governo golpista)... Chávez estava cheio de razão, mas, como muitas vezes, foi impulsivo, deselegante, infringindo a etiqueta da diplomacia etc. Nesse momento, impaciente, o rei Juan Carlos exclamou: “por que não se cala?” A imprensa das classes dominantes do Brasil exultou e
aproveitou para achincalhar Chávez mais uma vez. Por que tanta animosidade contra Chávez? Vejamos: quando Chávez foi eleito presidente da República pela primeira vez, em 1998, a Venezuela estava em falência política, suas classes dominantes, mergulhadas em profunda
corrupção, desmoralizadas, não conseguiam mais governar. A maior riqueza do país, o petróleo, entregue às multinacionais de petróleo americanas, era partilhada por estas com as elites tradicionais e a alta classe média, ambas americanizadas, vivendo mais nos Estados Unidos que em seu país, seus filhos indo em massa estudar na Flórida, falando mais inglês que espanhol,
acostumados todos a ver a Venezuela como uma fazenda de onde extraiam sua boa vida.
A Venezuela é o terceiro maior produtor de petróleo do mundo e exporta a maior parte da produção para os Estados Unidos. Chávez começou por questionar a dominação americana sobre o petróleo. Procurou fortalecer a capacidade de negociação da PDVSA (a empresa estatal venezuelana) com as multis. Além disso, constatando que as políticas das grandes potências haviam levado à redução brutal do preço internacional do petróleo (chegou a menos de
20 dólares o barril de 60 litros, isto é, petróleo estava mais barato que água mineral), assumiu a presidência da OPEP (Organização dos Países Exportadores de Petróleo) e desenvolveu uma política de valorização do preço do óleo. Isso causou ódio e remordimento nos Estados Unidos e nos outros países ricos. Chávez também tratou de retirar das classes dominantes locais parte dos
benefícios que recebiam do petróleo para poder investir na melhoria de condição de vida da população trabalhadora, especialmente em educação, saúde, alimentação, habitação. Isso enfureceu os velhos setores dominantes venezuelanos. Também o governo direitista espanhol, então comandado por Aznar, se incomodava. Porque a Espanha, ainda que há muito derrubada de sua condição de potência colonialista na América Latina, mantém grandes investimentos e
desenvolve grande influência política por aqui, na condição de país sub-imperialista.
Os americanos, auxiliados pelo governo de Aznar, conspiraram com as classes dominantes locais pela derrubada de Chávez em 2002. Deram o golpe, mas não levaram, impedidos por um levante popular associado a uma tomada de posição de parte das forças armadas em favor legalidade. Chávez reassumiu tendo muito mais clareza de quem eram e como atuavam os inimigos do povo venezuelano.
Aprofundou sua política de nacionalização do petróleo e de destinar os benefícios dessa riqueza para os mais pobres. Sabendo o tamanho da ameaça, tratou também de fortalecer as forças armadas venezuelanas, comprando armas para melhorar a qualidade da defesa do país, vizinho de uma super-armada e pró-americana Colômbia e de várias bases militares dos Estados Unidos. Como diz o velho ditado, “bobo é quem pensa que o inimigo dorme”.
Chávez também mudou as leis do país, promoveu a elaboração de uma nova Constituição, reformou a Justiça e o Parlamento, reforçando a participação popular.
Por tudo isso, Chávez é acusado de ditatorial. O interessante é que todas as mudanças promovidas por Chávez foram feitas à partir de eleições, plebiscitos e consultas à população. Desde 1998 realizaram-se dez eleições e plebiscitos no país. Nenhum governo em tempos atuais consultou tão freqüentemente a população como o venezuelano. Eleições cuja lisura não foi
contestada por observadores internacionais. Chávez ganhou todas e por larga margem. A oposição golpista, decidida a desmoralizar o regime político do país, esteve ausente de uma eleição. Comandou a abstenção, mas o povo votou em massa em Chávez e em seus candidatos ao Congresso. Resultado, com esse ato estúpido, apolítico, a oposição ficou sem representação nos poderes da República. E depois, saiu acusando Chávez de ditatorial.
Certamente Chávez tem lá seus defeitos. Mas para se adotar uma posição madura sobre ele e seu governo, para ver com clareza no meio desse tiroteio é preciso levar em conta o principal. Registro três aspectos:
1)Trata-se de um governo antiimperialista, construindo a independência de seu país e, por isso, um poderoso aliado de todos os povos latino-americanos na luta contra as políticas imperiais que nos empobrecem e mantêm dependentes. O Brasil e todos os outros países do continente têm sido beneficiados pelas posições e políticas do governo de Chávez.
2) Também é preciso ver que ele vem promovendo políticas de melhoria das condições de vida da população trabalhadora e mais pobre da Venezuela e estimulando seu desenvolvimento econômico.
3) Todas as grandes decisões de governo têm sido respaldadas em eleições legítimas.
Atualmente, a irritação oligárquica contra Chávez alcança um novo ápice. Isso porque seu governo está propondo uma nova reforma constitucional.
Uma das propostas é ampliar a possibilidade de reeleição do presidente da República. O povo venezuelano vai votar livremente e dizer se apóia ou não essa proposta. Se apoiar, Chávez poderá se reelegr outras vezes. E o povo venezuelano irá conferir no futuro se tomou uma decisão acertada ou não. É seu direito, é sua responsabilidade. Isso é democracia, é ou não é?
Ou democracia é comprar deputados e fazer passar uma emenda à Constituição no Congresso para permitir a reeleição do presidente, sem consultar a população, como fez FHC mudando a regra do jogo para ganhar um novo mandato em 1998? Isso é democracia ou é golpe? É golpe. Mas para a imprensa oligárquica FHC é o democrata impoluto. E Chávez é que é ditador?
Poupem-nos de tanta hipocrisia!

Carlos Azevedo é jornalista

sexta-feira, 19 de outubro de 2007

Nova versão do Linux Ubuntu!


A Canonical, companhia responsável pela distribuição Linux Ubuntu, que tem se tornado uma das mais utilizadas, liberou a versão 7.10 para servidores e para desktop.

Esta nova versão traz atualizações de segurança, busca integrada no desktop e maior suporte a diferentes tipos de hardware, como placas de vídeo, monitores, HDs, etc.

A versão também traz modificações na interface, que segundo a Canonical, deixam a distribuição mais intuitiva para novos usuários.

Agora é só baixar e utilizar um excelente sistema operacional!

Empreendorismo: Sucesso não é sinônimo de sorte!

Quem não sonha em ser dono do seu próprio negócio? Não ter que cumprir ordens de ninguém... trabalhar quando quiser...escolher seu próprio salário!

Pois é....quantas pessoas vão nesse pensamento e acabam morrendo na praia!

Não tem jeito...quem quiser ser ‘dono do seu próprio negócio’ tem que dedicar-se muito: estar sempre ‘antenado’, estar em dia com a tecnologia, ter sempre atualizado seu banco de dados de clientes, fornecedores, concorrentes.

O Sebrae é uma boa fonte para quem pretende ser um empreendedor. Tive a oportunidade de fazer cursos, participar de palestras, e tenho visto que a diferença entre empresários bem sucedidos e os que vão a falência, se resume em uma coisa: não ficar parado esperando o governo mudar, o tempo mudar, o mundo mudar....a mudança tem que partir de você! Ser você o responsável por seus acertos e erros!

Na última palestra que participei, ‘Pesquisa e Análise de Mercado’, o consultor do Sebrae expôs, com muita propriedade, que abrir uma empresa não é simplesmente achar que vai dar certo, e ‘meter a cara’! Primeiro, é necessário fazer uma análise de mercado, verificando se o produto que você quer oferecer, o mercado não está saturado, definir seus clientes, concorrentes e fornecedores, aí se realmente o mercado comporta mais um, ir a luta! Mas calma, não se esqueça do plano de negócios!

Mas uma boa noticia: segundo o próprio Sebrae, o número de micro e pequenas empresas que sobreviveram a mais de dois anos, aumentou de 50,6 %, em 2002, para 78% , em 2005. E vai perguntar para esses empreendedores se eles atribuem isso a sorte...

quinta-feira, 18 de outubro de 2007

Bem Vindo ao meu Blog!