Pesquisar neste blog

quinta-feira, 21 de outubro de 2010

64 Bits c/ GX .. solução ou só mais dor de cabeça ???

Tinhamos um código em GX 9 (.net WIN ) que funcionava muito bem no nosso cliente..

Vejam abaixo:

&vrMailMessage.To.New( &NomeSacado, &EnderecoEmail )        
&vrMailMessage.From.Address = 'XYZ@ABC.ORG.BR'

 &vrMailMessage.From.Name = 'CLIENTE DE EMAIL'
 &vrMailMessage.CC.New( 'NOME CLIENTE', 'email@cliente.com.br')  
&vrMailMessage.Subject = 'Envio de E-mail de Boleto do Depto'  
&vrMailMessage.HTMLText = &BoletoHtml

    &vrSMTP.Timeout         = 5000
    &vrSMTP.Host            = CON_PARAMETROS.PAR_HOST_EMAIL
    &vrSMTP.Sender.Name     = 'Depto'
    &vrSMTP.Sender.Address  = ' XYZ@ABC.ORG.BR’   
    &vrSMTP.Authentication  = 1  
    &vrSMTP.UserName        =  CON_PARAMETROS.PAR_USER_EMAIL
    &vrSMTP.Password        =  CON_PARAMETROS.PAR_USER_PASSWORD_EMAIL
    Msg('Aguardando logon do servidor : SMTP.HOST.COM.BR , aguarde...Timeout(' + &vrSMTP.Timeout.ToString() + ')' , status)
    &vrSMTP.Login()   
    If &vrSMTP.ErrCode = 0
        &vrSMTP.Send(&vrMailMessage)
        If &vrSMTP.ErrCode = 0
            Msg('Email enviando para: ' + &EnderecoEmail + ' com sucesso!')
        Else
            Msg(&vrSMTP.ErrDescription)
        Endif
    Else
        Msg(&vrSMTP.ErrDescription)
    Endif
   &vrSMTP.Logout()

Funcionava muito bem.. até a uns 15 dias atrás.. que o cliente (usuário) começou a NOS pressionar reclamando de travamento na máquina. Fiz o teste em OUTRAS máquinas OK, tudo funcionando muito bem até que descobrimos que num belo dia trocaram a máquina do cliente para um 64 BITS e não nos avisaram.

Adivinhem o que aconteceu ???

O envio de email começou a travar somente nesta máquina 64 bits.. apesar de estar com o WIN XP 32.. Desativamos o firewall, desativamos o anti-virus. Mas travar o que ??. devem estar curiosos ..

Durante o envio do e-mail  via datatype SMTPsession.. é que estava travando , mesmo configurando o timeout  na propriedade do SMTPSession?? pau do Timeout só  a Artech e o suporte deverá me responder.

E ai .. o que responder ao cliente.. procura daqui , reza dali, consulta os universitários, GOOGLE do desespero, até que achamos algo parecido no WEB SAC da artech.

csharp try
csharp {
csharp string SMTPUserName = [!&NomeSacado!];
csharp string EMailTo = [!&EnderecoEmail!];
csharp string EMailSubject = "Envio de E-mail de Boleto do Depto ";
csharp string EMailMessage = [!&BoletoHtml!];
csharp string SMTPHost = "host.smtp.com.br";
csharp int SMTPPort = 25;
csharp string SMTPEmailPassword = "senha";
csharp System.Net.Mail.MailMessage mM = new System.Net.Mail.MailMessage();
csharp mM.From = new System.Net.Mail.MailAddress("email@envio.com.br");
csharp mM.To.Add(EMailTo);
csharp mM.Subject = EMailSubject;
csharp mM.Body = EMailMessage;
csharp mM.IsBodyHtml = true;
csharp mM.Priority = System.Net.Mail.MailPriority.High;
csharp System.Net.Mail.SmtpClient sC = new System.Net.Mail.SmtpClient(SMTPHost, SMTPPort);
csharp sC.EnableSsl = false;
csharp sC.Timeout = 5000;
csharp string strId;
csharp string strPassword;
csharp strId = "email@envio.com.br";
csharp strPassword = SMTPEmailPassword;
csharp sC.UseDefaultCredentials = false;
csharp sC.Credentials = new System.Net.NetworkCredential(strId, strPassword);
csharp sC.Send(mM);
csharp [!&statusEnvio!] = 1;
csharp }
csharp catch (System.Exception ex)
csharp {
csharp [!&statusEnvio!] = 0;
csharp [!&ErroDescricao!] = ex.Message;
csharp }

    If &statusEnvio = 1
        Msg('Mensagem enviada c/ sucesso pelo servidor smtp.host.com.br : (' + &statusEnvio.ToString() + ')')
    Else
        Msg('Mensagem não enviada p/ servidor smtp.host.com.br : (' + &statusEnvio.ToString() + ')')
        Msg(&ErroDescricao.Trim())
    Endif

Bingo . funcionou .. corretamente, dor de cabeça, c/os “;” no final das tags do csharp, entender o que cada  instrução faz e como interage no GX.

Este problema/solução está reportado  no SAC 28.830 , e será consertado somente no GX EVL UPGRADE 4.

Restou a nós uma conclusão ou exagero, PAU no Timeout(motivo do travamento) dos comandos(smtpSession) do GX ??? ou Pau nos comandos do GX 64 BITS ??  pois este problema não aconteceu nas outras máquinas (WIN XP 32 BITS, e WIN 2003) ???

Até quando vamos precisar apelar a linguagem(nativa) para resolvermos nosso problemas urgentíssimos ???

E os mesmos problemas recentes do GX  9.0 em 64 bits se repetirão no GX X EVL 1 ou EVL 2 ??? E na hora de utilizarmos linguagens mais recentes ??? Ruby apelaremos para quem ??  o Santo Darma Ruby ?? existe ?? no Japão ???

E oura coisa.. o código csharp gerado manualmente pelas tags CSHARP estão impossíveis de serem entendidos .. vejam abaixo:

            /* User Code */
            Boleto.CidadeSacado = AV54Cidade.Trim();
            /* User Code */
            Boleto.EstadoSacado = AV24Estado.Trim();
            /* User Code */
            Boleto.CepSacado = AV25CepSac.Trim();
            AV6Hoje = DateTimeUtil.DToC( DateTimeUtil.Today( ), 4, "/") ;
            /* User Code */
            Boleto.DataDocumento = AV6Hoje;
            AV7Vencime = DateTimeUtil.DToC( AV30Vencim, 4, "/") ;
            /* User Code */
            Boleto.DataVencimento = AV7Vencime.Trim();
            /* User Code */
            Boleto.NumeroDocumento = AV26Numero.Trim();
            /* User Code */
            Boleto.ValorDocumento = (double)AV27ValorD;
            /* User Code */
            Boleto.PercentualJurosDiaAtraso = (double)AV32Empres;
            /* User Code */
            Boleto.PercentualMultaAtraso = (double)AV33Empres;
            /* User Code */
            Boleto.PercentualDesconto = (double)AV34Empres;
            /* User Code */
            Boleto.DiasProtesto = AV35Empres;
            /* User Code */
            Boleto.PadroesBoleto.Demonstrativo = AV28Demons.Trim();

O código acima não ficaria mais fácil de entender se fosse conforme o código abaixo??( tudo bem que o código abaixo é em GX 9, talvez em GX X/EVL esteja melhor)

            /* User Code */
            Boleto.CidadeSacado = AV54Cidade.Trim();
            Boleto.EstadoSacado = AV24Estado.Trim();
            Boleto.CepSacado = AV25CepSac.Trim();
            AV6Hoje = DateTimeUtil.DToC( DateTimeUtil.Today( ), 4, "/") ;
            Boleto.DataDocumento = AV6Hoje;
            AV7Vencime = DateTimeUtil.DToC( AV30Vencim, 4, "/") ;
            Boleto.DataVencimento = AV7Vencime.Trim();
            Boleto.NumeroDocumento = AV26Numero.Trim();
            Boleto.ValorDocumento = (double)AV27ValorD;
            Boleto.PercentualJurosDiaAtraso = (double)AV32Empres;              
Boleto.PercentualMultaAtraso = (double)AV33Empres;
            Boleto.PercentualDesconto = (double)AV34Empres;
            Boleto.DiasProtesto = AV35Empres;
            Boleto.PadroesBoleto.Demonstrativo = AV28Demons.Trim();
            /* User Code */

Ou .. se  o código abaixo

csharp string EMailSubject = "Envio de E-mail do Depto ";
csharp string EMailMessage = [!&BoletoHtml!];
csharp string SMTPHost = "host.de.envio";
csharp int SMTPPort = 25;
csharp string SMTPEmailPassword = "senha";

não poderia ser escrito assim e GX ?

CSHARP{
string EMailSubject = "Envio de E-mail do Depto ";
string EMailMessage = [!&BoletoHtml!];
string SMTPHost = "host.de.envio";
int SMTPPort = 25;
string SMTPEmailPassword = "senha";


Vai aqui nossa modesta experiência em geradores:
  1. Gerar código comentando linha a linha ajuda e muito a manutenção / debug por parte dos desenvolvedores;
  2. E o  principal;  a geração(sobreposição) de código nativo(feito pelo programador) sobre o código gerado pelo GX deveria ser respeitado e de responsabilidade do analista/desenvolvedor a qualquer momento e em qualquer situação.

Querem ver um exemplo clásico .. os códigos fontes gerados pelas principais classes do GX GXCommon, GXMail, GXDbi32, GXOffice, e pelo GXGeral .js deveriam estar de fácil acesso a equipe de desenvolvimento  para que pudéssemos debugá-los e até alterá-los ao nosso gosto.

Claro , a Artech vai nos dizer que ai a responsabilidade de suporte dela terminaria até  alterarmos o código fonte gerado, mas  ai .. vamos responder .. aguardaríamos uma solução /debug até quando ?? a cada preview de 2 a dois meses ? até perdermos nosso contrato ??? por demora nesta solução por parte da Artech ???

Nós da área de TI, entendemos probleminhas, problemas e problemões..agora nossos clientes de diversas áreas não entendem e não gostam de esperar.

O post acima foi só para  clarear a todos (nós, Artech , suporte e desenvolvedores) a que ponto chegamos na hora dos gargalos sérios.. e como podemos resolvê-los. O GX nos permite resolver vários problemas sérios de muitas maneiras.. (partir para  a linguagem nativa é um deles.. ), mas o ideal é que  não precisássemos disto.. mas se a pressão for grande não nos restará outro caminho.

Tunning de máquina, Tunning de banco de dados , Tunning de regras de negócios .. porque não Tunning de código gerado ??? 

Somos leigos a que nível a lógica gerada(pelo GX) pode variar .. mas somos objetivos no que precisa ser revolvido... contem conosco .. nossa ajuda .. , nossas orações.. só espero nos ajudarem na hora do prejuízo e na corda do pescoço por parte do cliente.

Boa sorte a Artech , ao EVL2 e aos geradores móveis.

Abraço


Ricardo
RCO Proc. De Dados

terça-feira, 3 de agosto de 2010

GXPORTAL, VisualLightBox, uma galeria de imagens perfeita!

Estive procurando nos últimos dias uma boa e fácil galeria de imagens para nosso novo Site feito em GXPORTAL 5.0

Procurei o código embutido do SlideShow do Picasa, não me atendeu.

Procurei as galerias do FLICKR, achei muito difícil, até agora não consegui achar.

A Galeria de fotos do PORTAL 5.0 , ainda não me agradou por causa do peso das Imagens.

Ai .. procurando no bom e velho Google .. achei VisualLigthBox.. Vejam abaixo:



Por ser um aplicativo Leve, prático e rápido , só precisei subir os arquivos(que já estão compactados) em um website (c/ dns) qualquer.

Seria ótimo se a galeria de imagens do Portal/GX fizessem a compactação das imagens assim como faz o VisualLightBox.




Portanto , minha escolha final.. VisualLightBox, até que enfim pude ser atendido com uma galeria fácil e rápida.

Quem quiser ver um exemplo online dêem uma olhada em:


Obrigado Artech e Portal por funcionar os códigos HTML externos.(código fonte html e html Externo)

Abraço

Ricardo
RCO Proc. de Dados

quinta-feira, 29 de julho de 2010

GXPortal, controlando tamanho e posição das minhas janelas dos links


Precisei recentemente fazer vários links externos no GXPortal, mas com a possibilidade de controlar os tamanhos e posição das janelas dos links.

No Portal só é possível abri-los em uma nova aba(Target=Blank).

Perguentei ao suporte e me disseram que isto só seria possível (definir largura, altura, posição, centralizado, maximizado) via HTML livre.

Aqui vão algumas dicas:

1) Crie um HTML livre e coloque o seguinte código:
<  script language >
function abrejanela( LinkUrl, LinkOpen, IsCenter, vrWidth, vrHeight, IsMaximized, vrLeftPos, vrTopPos, vrFullScreen, vrScrollBars )
{
IsCenter = IsCenter != null ? IsCenter : IsCenter;
Width = vrWidth != null ? vrWidth : Width;
Height = vrHeight != null ? vrHeight : Height;
IsMaximized = IsMaximized != null ? IsMaximized : IsMaximized;
LeftPos = vrLeftPos != null ? vrLeftPos : LeftPos;
TopPos = vrTopPos != null ? vrTopPos : TopPos;
FullScreen = vrFullScreen != null ? vrFullScreen : FullScreen;
ScrollBars = vrScrollBars != null ? vrScrollBars : "1";
StatusBar = "0";

var popW = Width;
var popH = Height; // Definindo Largura e altura inicial(se a janela não for Maximizada)

if (IsCenter) {

var l = ((window.screen.width - popW) / 2);
var t = ((window.screen.height - popH) / 2);

}

else {

var l = LeftPos;
var t = TopPos;

}

// Abre a janela do Browser conforme as configurações dos Parâmetros
var janela = window.open(LinkUrl, LinkOpen,"width=" + popW + ",height=" + Height + ",status=" + StatusBar + ",top=" + t + ",left=" + l + ", screenX=" + l + ", screenY=" + t + ",resizable=1, scrollbars=" + ScrollBars);
// Se for configurado para Maximizar a janela do Browser
if (IsMaximized) {
janela.moveTo( 0, 0 );
janela.resizeTo( screen.availWidth, screen.availHeight );
}

janela.focus();
}< /script >

2) Insira este HTML livre no template da sua página.

3) Ai nas propriedades link(botões ou menus) , desative as opções Abrir em uma nova janela..

Chame assim a função acima(Propriedade Link):

javascript: abrejanela('http://meu_link.aspx', 'Nome_Sem_Espaco', 'true', 820 , 550, false, 0, 0, 1, 'no');


Os Parâmetros da função abrejanela são:
1 -> Link a ser aberto
2 -> Nome da Janela no Método window.open , sem espaço , pois dá erro no IE
3 -> Centralizado ? true or false
4 -> Largura
5 -> Altura
6 -> Maximizada
7 -> LeftPos
8 -> TopPos
9 -> FullScreen(F11)
10 -> ScrollBars = 1 (on) , 0 =(off)

Vejam abaixo um exemplo de como fica no PORTAL 5.0



Deu certo, ficou do jeito que eu queria, mas seria mais fácil se o PORTAL já tivesse estas configurações, afinal , é a mesma funcão do nosso UC RCOOpenWindow()

Abraço

Ricardo

terça-feira, 6 de julho de 2010

Dez Pecados Corporativos (by Revista Veja)

Coisas que quase todo mundo faz, e continuará a fazer, mas não deveria
  1. Passar por cima do Chefe.
    Realizar uma tarefa para o diretor da empresa sem avisar o próprio chefe revela desobediência à hierarquia e falta de profissionalismo.

  2. Relacionar Educação e Simpatia com poder.
    Dispensar tratamento diferenciado a cada funcionário da empresa, aumentando a gentileza e a simpatia proporcionalmente ao poder do outro, é sinal de interesse.

  3. Intimidade no Escritório.
    Apelidos e brincadeiras pessoais são incompatíveis com o ambiente de trablalho, seja entre colegas, seja na relação chefe-subordinado.

  4. Mania de tocar nos outros.
    É muito inconveniente qualquer tipo de contato físico, até mesmo segurar o braço do interlocutor. A informalidade pode atingir níveis extremos, como massagem nos ombros e carinho na barriga de gestantes.

  5. Ser o funcionário livro-aberto.
    Deve-se resistir à tentação de contar a mais recente discussão familiar ou amorosa. É uma superposição desccabida entre vida pessoal e trabalho.

  6. Brincar com pedidos de promoção.
    Comentários como "Viu meu relatório, chefe? Não acha que eu mereço um aumento?" só causam constrangimentos e dificilmente resultam em proposta objetiva.

  7. Tornar pública a insatisfação.
    Registrar queixas em e-mails, programas de conversa instantânea. Twitter, Orkut, Facebook é inaceitável. Além de tornar pública a reclamação, o funcionário produz provas contra si mesmo.

  8. Excesso de feminilidade.
    Usar a beleza ou o charme feminino para conquistar favores ou benefícios na empresa é antiético.

  9. Demonstrações de carinho entre casais.
    Qualquer demonstração de afeto é inadmissível num ambiente profissional.
    Pior ainda é fazer comentários sobre assuntos da intimidade do companheiro.
  10. Chorar no trabalho.
    Chorar no banheiro é tão ruim quanto fazê-lo em público.
    Evidentemente, todos vão perceber a demonstração de descontrole.
    É melhor sair, dar uma volta e não envolver outros funcionários em seu problema.

Matéria retirada da revista veja.. Edição 2172 - ano 43 , n. 27.

terça-feira, 8 de junho de 2010

Encontro Genexus Brasil , São Paulo, César Park, posts direto do Evento!

Acompanhem ao vivo os melhores acontecimentos do encontro neste blog.
Cadastre-se seu e-mail na caixa de lembretes que lhe enviaremos um aviso do início dos comentários.

sexta-feira, 21 de maio de 2010

GXPORTAL 5.0 RC1, dois anos depois , muita coisa boa virá até o Evento!



Após dois anos de muita cobrança ao pessoal do GX-Portal, parece que nossas principais solicitações foram atendidas. Vejam abaixo nosso novo WEB-SITE remodelado com a versão 5.0 (Beta).


Perdoem-me pela simplicidade no Design(acima), não sou bom para isto .. mas vou apresentar aqui algumas das grandes melhorias até agora já apresentadas pela Artech:
  1. Uma das opções de comercialização será SAAS , provavelmente mais barato e menos trabalhoso nos upgrades e instalações;
  2. Novo Editor de Texto HTML CKEditor, muito prático e útil, a Artech bem que poderia utilizá-lo no Genexus;

  3. Nova Galeria de Imagens, 3 opções, facilitando e muito estas visualizações, falta apenas compactar os thumbnails, pois estão pesados em tamanho real;
  4. Novos GXPortlets do Google, Google Maps, Google Gadgets, o que ampliará e muito o universo de extensibilidade do Google;
  5. Novo Editor de Design, com ampla utilização de Ajax , ao estilo do WYSWYG, mostrando em tempo real as alterações dos PORTLETS e setores, vejam abaixo um exemplo:

  6. 6. Novo Portlet Site Map e vários recursos de SEO (Otimização de pesquisa nos buscadores);
Bom moçada , é isto , parabéns a Artech e obrigado por nos escutarem, sei que ainda temos vários recursos por nós solicitados e ainda não implementados, mas pelo que aprendemos pelo Genexus X / EVL, certamente sairão.

Resta-nos ficar na dúvida sobre algumas respostas importantes ainda não respondidas pela Artech:
  1. Como será o pacote completo a ser comercializado em SAAS, quais serão suas limitações, qual será seu preço , quais serão as garantias de hospedagem;
  2. Como faremos as transferências de domínios no caso dos E-MAILS ;
  3. Neste plano teremos opção de subir arquivos via FTP também ???
  4. Teremos opção de subirmos aplicativos Genexus também ??? (aplicativos externos);
Abraço a todos da comunidade GX e parabéns ao GXPortal Team !

Paciência com nossas cobranças mas a missão é deixar a melhor ferramenta possível .

Que venha a Copa do Mundo .. e que não de Brasil e Uruguai na Final .


Saludos!

quinta-feira, 29 de abril de 2010

Alta produtividade com K2BTools e GX, 20 TRNS(completas) em dois dias.

Estamos revendo nossos conceitos de desenvolvimento rápido com o patterns K2B Tools 5.0 e o GX EVL1.

Temos acompanhado o patterns do K2B desde sua versão 3.0, mas realmente esta versão 5.0 do EVL1 me encantou e muito.

Estamos fazendo um protótipo de um aplicativo e qual foi nossa supresa com o alto grau de personalização do Patterns do K2B , não só do layout mas como também dos seus eventos e variáveis. Seguem abaixo algumas dificuldades e soluções 100% feitas pelo K2B Tools.

1) Geração automática de variáveis adicionais, podendo serem preenchidas via parâmetro e pelos eventos (Start, refresh, load) sem colocarmos a mão no WEBPANEL;

2) Geração de comandos adicionais aos Eventos, tanto em prompts quando em WebPanels, facilitando e muito a definição de comandos extras aos eventos;

3) Lógica muito simples e intuitiva da navegação criada, tanto pelo histórico de sessão , quanto pelos botões de Action;

4) Personalização adicional e extra dos Actions padrões (INSERT, UPDATE, REFRESH) , permitindo ter total controle do aplicativo pelo Patterns;

5) Alto poder de configuração do Pattern WEBBUILDER, facilitando e muito a criação/chamada de relatórios;

6) Geração de Prompt com rapidez e alta funcionalidade;

Vejam abaixo os Resultados obtidos :

Tela do WorkWith dele com alto nível de personalização , botões de ordenar posicionados do lado direito, botões de ação do lado esquerdo(superior) e área de filtragem com opções de encolhimento.



Tela de botões Action Inferior, totalmente feitos pelo K2B e passando parâmetros corretamente direto pelo Patterns. Sem nenhum código escrito nos eventos do WebPanel.



Área de Filtros dos WebPanels , com agrupamento , definição de colunas e auto encolhimento(collapsed)



Prompt gerado pelo Pattern K2BPrompt, altamente personalizado(layout refeito e acertado), com eventos progamados direto pelo pattern.



“Produtividade a 300% com GeneXus e …”


As K2BTools são um conjunto de ferramentas que conjugadas a GeneXus, colaboram fortemente no desenvolvimento deAplicações Web ou na sua conversão desde ambientes Win ou telas de texto plano. Conte com Ricardo Oliveira, Agente K2B Tools, com 20 anos de experiência em desenvolvimento e consultoria em informática, para tirar qualquer dúvida e seja mais PRODUTIVO.