quarta-feira, março 01, 2006

quinta-feira, fevereiro 16, 2006

PowerBuilder – GPF ao Fazer GLV / RefreshStatus

Recentemente tive um problema onde a aplicação de um dos desenvolvedores fechava quando se fazia GetLatestVersion (GLV) ou RefreshStatus em um PBL no PowerBuilder 9.

Após várias tentativas e erro, descobri que o desenvolvedor tinha editado o PBG manualmente e cometido um erro. O nome do objeto estava da seguinte forma:
"dw_cad_impressora.srd.srw" "sigsa_cad.pbl";

Este erro causava o cancelamento da aplicação sem nenhuma informação para o desenvolvedor.

Para resolvê-lo, apenas corrigi o nome do objeto no PBG.

terça-feira, janeiro 31, 2006

PowerBuilder – Recuperando valor de uma coluna em um Report

Um Report é uma DataWindow que é inserida dentro de outra DataWindow.

Existem duas formas de trabalhar com Report, utilizando uma DataWindow comum e acrescentar um objeto Report, denominada de DataWindow Nested. A segunda opção é criar uma DataWindow Composite e adicionar os Reports.

No Primeiro caso, a DataWindow principal possui dados e para cada registro existente, ele executára as Reports.

No Segundo caso, a DataWindow principal não possui dados, recuperando os reports apenas uma vez.

A dúvida que existe entre muitos desenvolvedores é como devemos proceder para buscar valores (GetItem) em uma coluna que está dentro de um Report.

Abaixo está a solução para os dois casos:

1) Report em DataWindow Composite
Este é o caso mais simples e possui duas soluções.

A primeira solução é realizar um GetChild do Report e fazer um comando GetItem ou Object tradicional, por exemplo:

datawindowchild vldwc_aux
dw_1.getchild('dw_1',vldwc_aux)
messagebox('teste',vldwc_aux.getitemstring( 1, 'sistema'))
messagebox('teste',vldwc_aux.getitemstring( 2, 'sistema'))


A segunda solução é baseado na estrutura de objetos do PowerBuilder, ou seja, você pode utilizar o OBJECT para buscar o valor, como no exemplo abaixo:
string vlsteste
//Syntax : .object.[].object..[]
vlsteste = string(dw_1.object.dw_1[1].object.sistema.primary[1])
messagebox('teste2',vlsteste)


Existem alguns variações do comando acima, que também funcionam no PowerBuilder.

2) Report em DataWindow Nested
Neste caso, a única solução é usar o OBJECT para busca o valor, como no exemplo abaixo:

//Syntax : .object.[].object..[]
vlsteste = string(dw_1.object.dw_1[1].object.sistema.primary[1])
messagebox('teste2',vlsteste)

sexta-feira, janeiro 27, 2006

PowerBuilder - Retirando o X do menu das janelas

Achei interessante este artigo do site do Celso Cortes de como remover o X (Opção de fechar a janela). É interessante para algumas situação, principalmente para janelas Response.

http://www.celso.cortes.nom.br/seleciona/c_2.php?opc=7&it=2&gr=3&item=61&tit=Anulando%20o%20%22X%22%20na%20Window&cc=34

PowerBuilder – Salvando uma DataWindow como PDF

Obs: Solução existente para PowerBuilder 9 ou superior

Recentemente tive a necessidade de implementar um processo batch para gerar arquivos PDF e enviá-los por e-mail.

A funcionalidade de envio de arquivos por e-mail já tinha sido implementada através do blat ( http://thiagocpereira.blogspot.com/2005/01/powerbuilder-enviar-e-mail-via-smtp.html )

O grande problema era como gerar arquivo PDF. Procurei na Internet e vi vários artigos de como gerar o PDF, mas nenhum deles satisfez por completo as necessidades da minha aplicação.

Depois de muito trabalho de pesquisa e juntando informações de N sites, consegui definir uma forma de trabalho que funciona 100%.

Abaixo vai as informações sobre a solução e como consegui chegar até ela.

1) Problema
a) Processo Batch de geração de arquivos PDF em lote e envio por e-mail, sem nenhuma interação do usuário.
b) Permitir salvar os relatórios existentes em todos os sistemas em PDF, envolvendo uma média de 7000 estações de trabalho, incluindo sistemas operacionais Windows 98, 2000 e XP.

2) Pesquisa
Pesquisei vários SITES, NewsGroup e lista de discursão. Após um filtro nas opções existentes, resolvi estudar as seguintes ferramentas:
* PDF995
* PDF Reditector
* SaveAs PDF da DataWindow

PDF995
A primeira opção e a que me pareceu mais simples foi a utilização do PDF995 (www.pdf995.com). Como ele é FreeWare, não teria problema com licenças.
Os problemas surgiram na automação do processo e Deploy do Software. Teria que instalar o software em todas as máquinas o que não agrada muito a nossa equipe, devido a quantidade de estações e a localização das mesmas.
A geração automática do arquivo não teria problema, pois descobri que apenas teria que alterar uma chave no arquivo INI do PDF995.
Mas, o problema que a principio tornou inviável a solução foi a propaganda que é exibida no momento que você salva os arquivo como PDF. Para retirar essas propagandas você tem que comprar uma licença de uso. Baixei uma licença utilizando o e-mule é funcionou perfeitamente. O problema é que a empresa não permite nenhum tipo de pirataria. A solução de comprar a licença se tornou inviável. A licença para cada máquina custa 10$. Fazendo as contas, teríamos que gastar R$161.000,00 para licenciarmos todas as nossas estações o que tornou a relação custo / beneficio um empecilho para a implementação da funcionalidade.

PDF Redirector
A segunda opção seria a utilização do PDF Redirector. Como ele não exibe nenhuma propaganda e é FreeWare, não teríamos os problemas o PDF995.
Mas, continuamos tendo o empecilho de ter que instalar o Software em todas máquinas.
Além desse problema, a automatização do processo de geração de PDF é um pouco complexa, aumentando o tempo necessário para a implementação e gerando novos pontos de risco.

SaveAs PDF da DataWindow
Como é um recurso nativo do PowerBuilder, seria a solução melhor a ser adotado.
O problema inicial encontrado foi a falta de informações sobre o processo.
Também tivemos problema na versão do GNU GhostScript (FreeWare), adotando a versão 7.05 como a melhor que se adequar as nossas necessidades.
Após levantar informações de vários sites, conseguimos fazer a solução funcionar em uma máquina com todos os softwares instalados (PowerBuilder e GNU GhostScript).
Então esbarramos em outro problema, como fazer o Deploy dos softwares na rede. Após algumas pesquisas, descobri que seria necessário apenas adicionar duas novas chaves no registry, o que pode ser automatizado utilizando o Script de Login dos usuários.

Assim, resolvemos o problema utilizando a solução existente no próprio PowerBuilder 9 ou superior.

3) Solução
Todos os nossos sistemas e DLLs do PowerBuilder encontra-se na rede, por isso, a solução abaixo foi feita baseado nesse ambiente
Abaixo estão os passos necessários para a implementação da solução
a. Coloque os sistemas e DLLs do PowerBuilder na rede. No nosso exemplo vamos adotar que estes arquivos se encontram no Drive X:
b. Copie a pasta C:\......\Sybase\Shared\PowerBuilder\Drivers para o drive X: . Na verdade o diretório Drivers tem que estar na mesma pasta da dll PBDWEXX.DLL.
c. Baixe a versão 7.05 do GNU GhostScript (http://prdownloads.sourceforge.net/ghostscript/gs705w32.exe?download) e instale em um máquina usando o diretório padrão.
d. No Drive X:, crie uma pasta chamada GS e copie as pastas BIN, LIB e FONTS da pasta c:\GS\ para a pasta na rede.
e. Cria as seguintes chaves no Registry das máquinas (Essa etapa pode ser automatizada utilizando o Login Script)
[HKEY_LOCAL_MACHINE\Software\GNU GhostScript]

[HKEY_LOCAL_MACHINE\Software\GNU GhostScript\7.05]

"GS_DLL"="X:\gs\bin\gsdll32.dll"
"GS_LIB"="X:\gs\lib;X:\gs\fonts"

f. Para Salvar a DataWindow, você tem que observar se as seguintes propriedades estão configuradas
//Se o GhostScript tiver instalado, configura a DataWidnow para utiliza-lo
dw_dados.Object.DataWindow.Export.PDF.Distill.CustomPostScript='No'
dw_dados.Object.DataWindow.Export.PDF.Method = Distill!
dw_dados.Object.DataWindow.Export.PDF.XSLFOP.Print='No'

O próximo passo é salvar a DataWindow como PDF

//Salva a DataWindow como PDF
dw_dados.saveas(p_path,PDF!,True)


4) Conclusão
O objetivo deste artigo é esclarecer o procedimento de Salvar como PDF e compartilhá-lo com outros desenvolvedores.

Quem tiver dúvida ou sugestões, pode incluir um comentário para que possamos enriquecer o conteúdo deste artigo.



Boa sorte!

segunda-feira, janeiro 23, 2006

Microsoft Outlook - Como configurar o Outlook XP para abrir arquivos EXE em anexo

Essa informação é muito importante, principalmente se você recebe anexos dos seus clientes e precisa abri-los de qualquer forma.
Só tomem cuidado com vírus ou outros BAD PROGRAMS.

quarta-feira, janeiro 18, 2006

PowerBuider – Problema ao Formatar Valor em gráfico

No PowerBuilder 9, existe um Bug ao formatar o campo de Valor quando utilizamos uma DataWindow Gráfica.

Quando você informa o formata de exibição do campo, ele exibe o formato correto no Preview, mas após fechar e reabrir a DW, o formata é perdido.

O problema ocorre porque o PowerBuilder grava a informação de formata em um local errado, o que pode ser visto quando você visualiza o source da DW.

Para resolver o problema no source da DW (Edit Source), altera a propriedade values.dispattr.format="".

segunda-feira, dezembro 19, 2005

Diversos - Dica sobre gravadora de CD / DVD

Galera,
tive um problema recente e talvez possa ajudar a alguns. Toda gravadora de CD / DVD, possui um software que roda dentro do drive. Este software recebe o nome de FirmWare.
Estava com problema com a minha gravadora de CD, onde a cada cd que eu gravava, eu perdia dois outros. Fui procurar a solução na Internet e descobri que quase todas as gravadoras de Cd / DVD (LG, Sony, TEAC, etc...) necessitam de atualização no FirmWare.
No meu caso a minha gravadora é LG e vi um artigo dizendo que todas as gravadoras da LG necessitam de atualização do FirmWare. Caso você não atualize, pode ter problemas com interrupção de gravação (perda do CD), baixa velocidade (no meu caso, só gravava CD em 16X. Após a atualização, comecei a gravar em 52X), não reconhecimento de alguns CDs, travamento da gravadora e etc...

Só uma observação, não sei se é verdade, mas vi um alerta dizendo que se ocorrer um problema no meio da atualização do FirmWare a sua gravadora pode parar de funcionar, necessitando ser enviada para uma autorizada. A atualização demora em média 10 segundos.

Abaixo via o Link da Lg para você pesquisar informações sobre o firmware da sua gravadora http://www.lge.com/support/software_gcsc.jsp

sexta-feira, dezembro 09, 2005

quarta-feira, dezembro 07, 2005

PowerBuilder – Problemas com Redimensionamento de janelas

No Build 9.0.3 8004 do PowerBuilder, não existia nenhum problema quando ao redimensionamento de janelas.
Nos builds superiores ao 8004, se a janela estiver marcada com a opção de CENTER (Posicionar centralmente) o redimensionamento não funciona.

segunda-feira, novembro 28, 2005

Microsoft Visual SourceSafe - Boas Praticas

Neste Link você encontra algumas recomendações da Microsoft para se trabalhar com o Microsoft Visual SourceSafe.

sexta-feira, novembro 25, 2005

Diversos - Foco na Solução

DIFERENÇA ENTRE "FOCO NO PROBLEMA" E "FOCO NA SOLUÇÃO"
Quando a NASA iniciou o lançamento de astronautas, descobriu-se que as canetas não funcionariam com gravidade zero. Para resolver este enorme problema, contrataram a Andersen Consulting, hoje Accenture. Empregaram uma década e 12 milhões de dólares. Conseguiram desenvolver uma caneta que escrevesse com gravidade zero, de ponta-cabeça, debaixo d'água, em praticamente qualquer superfície incluindo cristal e em variações de temperatura desde abaixo de zero até mais de 300 graus Celsius.

Os russos usaram um lápis...

Pensem nisso.

terça-feira, novembro 15, 2005

Windows XP - Dicas de Segurança

There are a few critical things you should do to insure the safety of your machine and, most importantly, your data.

  • Back up your data. If something happens to your machine, you will still have your data.
  • Keep your operating system and software up to date. Frequent security patches come out for Windows XP. These patches help protect your computer and data.
  • Install and use anti-virus software.
  • Do not create unnecessary accounts on your machine.
  • Disable accounts you are not using, including the built-in system accounts.
  • Password all accounts that you use. Choose passwords that are tricky to figure out. When you give an account a password you must remember it. If you forget the password for your account with administrator privileges you will NO longer be able to log into the machine, use it, or even access your files!!
  • Do not share files or folders across the network, unless you absolutely must. If you must share files, do so cautiously and turn on the least amount of access possible. Use simple file sharing and make sure network users are NOT allowed to change your files.
  • If you are not sharing files or folders make sure you explicitly turn off file and print sharing for each network connection

quinta-feira, novembro 03, 2005

Desenvolvimento - Comparação entre ferramentas de Controle de Versão

Abaixo está um artigo que recebi comparando várias ferramentas de controle de versão de arquivos.

To view the full article, please visithttp://www.BetterVssRemoting.com
Better VSS Remote Access Tool
This article makes a detailed comparison among SourceAnyWhere,SourceOffSite, VSS Remoting and possible others.
Keywords: VSS Remote Access, VSS Web Access, VSS Internet Access,SourceSafe Remote Access, SourceSafe Web Access, SourceSafe
Internet Access, SourceOffSite, SourceAnyWhere, VSS Remoting


1. Overview

What does the article do?
It makes a comparison among:· SourceAnyWhere 4.0· SourceOffSite 4.1· VSS Connect 1.5· SourceXT 2.1· VSS Remoting 2.5· VSS.NET 1.67

Our initiative is to make an unbiased, objective, repeatable andverifiable comparison:
a. Real project is used. The project I use is eMule, which is athttp://sourceforge.net/projects/emule/
b. Detailed steps are presented. You can follow the detailed stepseasily.
c. If you want to make a comment, I can be reached at[Email]bettervssremoting@yahoo.com.[/Email]

If you need more info, please visit their official websites:
· SourceAnyWhere (SAW) from DynamSoft http://www.dynamsoft.com
· SourceOffSite (SOS) from SourceGear http://www.sourcegear.com
· VSS Connect from VoxCode http://www.vssconnect.com
· SourceXT from ACORDEN http://www.acorden.com
· VSS Remoting from Source Remoting http://www.sourceremoting.com
· VSS.NET from DMB Consulting http://www.dmbcllc.com
· Want to add a product? Write to me: bettervssremoting@yahoo.com

The real result may vary if you do the test in different environment or
different files are used. However, the basic concept of thiscomparison,such as which one is the fastest, which one has more VSS features,should be applicable everywhere.

To view the full article, please go tohttp://www.bettervssremoting.com


2. Comparison Summary (5 star ***** is the best)

Speed Comparison
SAW *****
SOS **
VSS Connect **
SourceXT **
VSS Remoting **
VSS.NET *

Stability Comparison
SAW *****
SOS **
VSS Connect ***
SourceXT **
VSS Remoting **
VSS.NET *

Security
SAW ****
SOS ***
VSS Connect ***
SourceXT **
VSS Remoting ***
VSS.NET **

VSS Feature Support
SAW ****
SOS ****
VSS Connect **
SourceXT **
VSS Remoting **
VSS.NET *

Usability
SAW ****
SOS **
VSS Connect **
SourceXT **
VSS Remoting **
VSS.NET *

Diff/Merge
SAW ****
SOS ****
VSS Connect
SourceXT
VSS Remoting **
VSS.NET

IDE Integration
SAW *****
SOS ***
VSS Connect **
SourceXT **
VSS Remoting **
VSS.NET

Cross Platform
SAW *****
SOS *****
VSS Connect *
SourceXT *
VSS Remoting ***
VSS.NET *

Speed:
I am totally surprised and excited by the speed of SourceAnyWhere. Forsome operations, SourceAnyWhere can be up to 40+ times faster thanother five products.

Stability:
SourceAnyWhere never has any problem in the whole test.
SourceOffSite has several problems when it comes to stability. The bigproblem of SourceOffSite is cancel. There is no cancel support in IDEintegration. After a cancel operation in Add, Checkin, Checkout or Getin SourceOffSite Explorer, the CPU usage of SourceOffSite server goesup to almost 100% and can not come down, unless the server isrestarted.VSS Connect and SourceXT also have problems in stability. On big fileoperations, they are very possible to crash. But both two have a goodhandling of Cancel. And, VSS crashes every time when I try adding aspecial directory such as "c:\" and "My Computer".

VSS Remoting has difficulty to add file and it fails to operate on bigfiles.

VSS.NET has problems in big file operation during the whole test. Andit cannot handle the Cancel operations.

Security:
What makes SourceAnyWhere unique is the password policy.
SourceAnyWhere, SourceOffSite and VSS Connect use 128-bit cryptography.
SourceOffSite and SourceAnyWhere use BlowFish..VSS Remoting uses HTTPS.

VSS Feature Support:
Most of the six products support ordinary VSS features such as Add,Get, Checkin, Checkout and so on. However, only SourceAnyWhere has adetailed and full support for almost all of VSS features.Except SourceAnyWhere, all the products does not have supports for EOL(end-of-line). Different OS use different end-of-line characters intext files. Without EOL support, text files got to local may not beread correctly. For example, in Rational the EOL character is "/n"but in Windows it is "/r/n". When getting a text file from Rational toWindows without a support for EOL, the text will not be displayednormally.
SourceXT, VSS Remoting and VSS.Net have no support for Pin. Assuming afile is pinned in VSS Server, then what if Pin is not supported? First,the pinned file can still be checked out by Client, which is a greatdanger to the pinned file. Second, when performing a get, the mostrecent version will be got, not the pinned version. This can probablycause version confusion.
SourceAnyWhere has a "Server-base time zone offset" option, othersdon't. In my opinion, it is very important to synchronize Server timeand Client time. Imagine this, the Server time is 10 hours ahead ofClient time. When you edit a file and check it in at 2/23 9:00PM(Client time), but on the Server side, time of this version reads 2/247:00AM. So in the future when you need to get version of 2/23 9:00PMactually, you may mistakenly get another version.

Usability:
SAW is the best. All the Windows of SAW is in Win32 style. It candetect if a file is changed automatically.

Diff/MergeIn File Diff (2-way)/File Merge (3-way), SourceAnyWhere andSourceOffSite run neck and neck; VSS Remoting has a lowperformance
IDE Integration:SourceAnyWhere, SourceOffSite and VSS Remoting all support MSSCCIIntegration.VSS Remoting supports DreamWeaver integration
I have not tested the IDE integration intensively. I give this ratejust according to manual of the three products.

Cross Platform:
Besides its Windows client, SAW has a Java client built on JDK 1.4.2,so that it can cross any platform where JDK can run such as Linux, Mac,Solaris, AIX, HP-UX, SCO Unix and FreeBSD.SourceOffSite can cross Linux and Mac OS X.
VSS Remoting has a web interface which can login server through web.


3. Test Environment

Test Data
Real project is used for testAll eMule0.44c and eMule0.44d files are downloaded from SourceforgeDownload eMule0.44c (3.1M) and eMule0.44d (3.1M) used in the testBig Files are simulated files created by us

Server Configuration
· P4, 2.8G, 256M RAM, Windows XP Professional
· SourceAnyWhere profession 4.0 DEMO Server
· SourceOffSite4.1 with Cryptography DEMO Server
· VSS Connect Server 1.5· SourceXT Server 2.1
· VSS Remoting Server 2.5
· VSS.NET Server 1.67
· Visual SourceSafe6.0 + Sp6

Client Configuration
· P4 Celeron 2.0G, 256M RAM, Windows 2003
· ADSL connection
· SourceAnyWhere profession 4.0
· SourceOffSite 4.1 with Cryptography
· VSS Connect Client 1.5
· SourceXT Client 2.1
· VSS Remoting Client 2.5
· VSS.NET Client 1.67

4. Test Methodology
All the three products are tested on the same computers and internetconnection
All the three products are tested on the same data set
All the three products are tested with the same process
For speed test, every action is carried out 5 times
The initial state of the VSS database is empty (newly created)

PowerBuilder - Execução de Scripts dinamicamente

Recentemente, foi colocada uma dúvida no grupo de PowerBuilder do Yahoo, a possibilidade executar scripts dinamicamente.

No site http://www.mycgiserver.com/~unoksoftgroup/powerbuilder_pborca/powerbuilder_pborca.html#dynamicscript existe um demo de aplicação que permite este tipo de tarefa.

Obs: A resposta acima foi fornecida por Carlos Klein

sexta-feira, outubro 28, 2005

PowerBuilder - Recuperando a Data de Compilação do Executável

Existem várias formas de recuperar a data de geração do executável, como utilizar a API do Windows. Recentemente eu li um artigo de um dos desenvolvedores do PowerBuilder que possui uma solução simples e que funciona muito bem.

Faça o seguinte, declare duas constantes globais e atribua today() e now() para elas, assim:
constant date gd_compiled = Today()
constant time gt_compiled = now()

No momento que você compila o executável, o PowerBuilder preenche e armazena a data e hora de geração. Isso ocorre porque a constante é fixa e preenchida no momento de geração do executável.

Só mais uma informação, não é possível fazer o procedimento acima utilizando uma variável datetime, pois é considerado um tipo de dado complexo e o PowerBuilder não permite declarar uma constante deste tipo de dados.

quinta-feira, outubro 27, 2005