domingo, 26 de junho de 2011

Reduzindo o consumo de memória RAM utilizada pelo Firefox

É indiscutível que o Firefox é um dos melhores browsers da atualidade, a sua constante preocupação com segurança, estabilidade e possibilidade de a comunidade participar com complementos fazem desse navegado um dos mais completos, porém ainda incomoda aos seus fiéis seguidores o seu alto consumo de memória RAM.
Mas ai vem a dica, encontrei na web este aplicativo que faz jus ao seu objetivo, que é reduzir o consumo da memória pelo Firefox.
Antes de aplicá-lo, o Firefox estava consumindo em média 340.000 K e após instalar o Firefox Plumber o consumo caiu para uma média de 1.600 K, que somado ao consumo de outros 700 K do novo aplicativo foxBoost, estas médias ficam bem abaixo do antigo consumo.
Se você é como eu, um entusiasta do Firefox, não deixe de instalar o Firefox Plumber.

quarta-feira, 15 de junho de 2011

Como acelerar a abertura de telas durante o Debug no Protheus

Hoje descobri que enquanto debugamos, podemos tornar a abertura de telas muito mais rápidas fazendo algo totalmente sem sentido, é isso mesmo você não entendeu errado é algo sem sentido mesmo.
Mas por incrível que pareça realmente agilizou a abertura das telas, fiz teste diversas vezes e em todas vezes que executei o tal procedimento, as telas foram abertas muito mais rápidas do que quando não executado.
Ainda estou sem uma explicação técnica para elucidar o motivo de tornar a abertura mais rápida, até lá podemos aproveitar essa maravilha do improviso.

Agora chega de enrolação e vamos lá:
Ao acionar o debugar seja via tecla F5 ou botão no topo do IDE você clica no fechar "X" do TotvsDevStudio, em seguida será apresentado uma mensagem.


Como disse isso não faz o menor sentido porém todas as vezes em que realizei tal procedimento o tempo de abertura das telas foram mais rápidas.

Espero que essa dica ajude.

segunda-feira, 13 de junho de 2011

Desenvolvimento Ágil para Software

Para quem deseja saber mais sobre desenvolvimento ágil para software, recomendo acompanhar o blog do Sidão, Programador Júnior, lá ele pretende compartilhar o seu conhecimento em Desenvolvimento Ágil.

Boa sorte Sidão nessa sua nova empreitada.

Função MsAdvSize - Dimensionamento de Janelas no Advpl - (Parte 1)

Estarei descrevendo em uma série de post a melhor forma de se criar janelas no Protheus utilizando o MsAdvSize, e com isso possibilitado a visualização plena em todas as resoluções.
O objetivo é mostrar como é possível posicionar diversos objetos dentro da tela e que isso seja possível em qualquer resolução em que o cliente esteja visualizando.
Ao final montarei um exemplo completo.

Parte 1 - Função MsAdvSize


MsAdvSize(lPar1, lPar2, nPar3)

Parametros

lPar1 - Tipo: lógico, Obrigatóriedade: Não, Default: .T.
Indica se a janela a criada possuirá uma EnchoiceBar(barra de botões). A existência da enchoicebar reduzirá a área útil dos objetos da janela.

lPar2 - Tipo: lógico, Obrigatóriedade: Não, Default: .F.
Indica se a janela a ser criada deverá ter tamanho fixo. Criado por razões de compatibilidade a principio não deve ser utilizado.

nPar3 - Tipo: lógico, Obrigatóriedade: Não
Indica um tamanho mínimo de altura em PIXELS a ser utilizado pela janela, ou seja, a janela poderá ser criada com uma altura maior do que a normal em uma resolução baixa.
Este terceiro parametro é recomendado quando não se deseja utilizar 100% da tela, para obter o máximo na resolução 800x600 utilize até 370.

Retorno


Array contendo 7 elementos numéricos. Os elementos de 1 a 4 representam a área de trabalho dos objetos a serem criados e serão passados à MsObjSize(). Os elementos de 5 a 7 são utilizados como base para a construção da dialog (janela).

1 - Linha inicial área trabalho.
2 - Coluna inicial área trabalho.
3 - Linha final área trabalho.
4 - Coluna final área trabalho.
5 - Coluna final dialog (janela).
6 - Linha final dialog (janela).
7 - Linha inicial dialog (janela).

Exemplo 1


LOCAL aAdvSize := {}
LOCAL aInfoAdvSize := {}
LOCAL aObjCoords := {}
LOCAL aObjSize := {}


aAdvSize := MsAdvSize()
aInfoAdvSize:= { aAdvSize[1] , aAdvSize[2] , aAdvSize[3] , aAdvSize[4] , 5 , 5 }
aAdd( aObjCoords , { 000 , 000 , .T. , .T. } )
aObjSize := MsObjSize( aInfoAdvSize , aObjCoords )



Exemplo 2


LOCAL aAdvSize := {}
LOCAL aInfoAdvSize := {}
LOCAL aObjCoords := {}
LOCAL aObjSize := {}


aAdvSize := MsAdvSize(,.T.,370)
aInfoAdvSize:= { aAdvSize[1] , aAdvSize[2] , aAdvSize[3] , aAdvSize[4] , 5 , 5 }
aAdd( aObjCoords , { 000 , 000 , .T. , .T. } )
aObjSize := MsObjSize( aInfoAdvSize , aObjCoords )


Próximas explicações:
Montagem dos arrays aInfoAdvSize e aObjCoords
Função MsObjSize e seu retorno aObjSize