Pesquisar neste blog

domingo, 23 de outubro de 2011

HELP Desk , Fórum e KB ou um WIKI ?


Recentemente(especificamente hoje 23/10/11) testei a nova versão online do Aplicativo COMM100(www.comm100.com).

Simplesmente Fantástico!

Reune os serviços de HELP-DESK, FÓRUM, KNOWLEDGE BASE(Base de Conhecimento), Email Ticket e NewsLetter.

E o pior( para nós usuários é o melhor) tudo de graça!.. Me expliquem uma coisa .. quem é que paga estes custos todos ??


Tem surgido ultimamente uma enxurrada enorme de serviços online(via cloud) , BACKUP de 512 GB, Fórum, KB, Email Ticket , Web Site Tools , Bancos de dados online e tudo isto de graça.. 

Me expliquem uma coisa .. até onde (servços cloud)  isto irá atingir ?

A Artech já tem o modelo do GXPORTAL SAAS(aliás muito bom e sempre evoluindo/melhorando)

Mas este da COMM100 é fantástico , prático e barato.


Vejam acima o Backend e o Frontend do Mail Ticket( do COMM100 ), muito bem elaborado e de fácil uso.

Aqui fica minha dúvida em helps de aplicativos WEBS : 
Um Conjunto de serviços e Help Desk, Fórum e KB ou apenas um WIKI ??

Fica aqui nossa dica sobre este excelente produto.

Congratulations COMM100 Team!

By Ricardo Oliveira


quinta-feira, 3 de fevereiro de 2011

GENEXUS , Dispositivos móveis e Novos Negócios "EUR$, R$ , US$"

Recentemente a Artech liberou seu novo BETA1 do EVL2 , com várias novidades para dispositivos móveis.

Temos trabalhado arduamente com o gerador para Android, um dos que mais nos encanta atualmente e um dos que está mais acessível no momento.

Precisávamos de um provedor de conteúdos para nosso novo site que tivesse uma perfeita integração entre o usuário final e o site, facilitando a entrada e a manutenção de dados.

Segue abaixo alguns exemplos do que já fizemos e a facilidade que é em fazer isto com o EVL2:

Nosso menu principal, que no EVL2 é chamado de DashBoard.


Uma listagem de Pessoas (WW) ;


View de um form com opções de EDIÇÃO , EXCLUSÃO no primeiro nível;


View de um form no segundo nível(já funcionando os controles de edição, exclusão e inclusão);


Pattern de configuração das TRNS(Business Components)



Para quem já conheçe o EVL1, a migraçao em matéria de ambiente será fácil, pode ser que alguns recursos sejam mudados(quase provável) , mas a facilidade em construir estes aplicativos é imensa.

Para finalizarmos nosso pequeno CRM, ainda falta a opção de LOGIN, que no EVL2 será chamado de GAM(Genexus Access Manager) , mas será entregue em breve.

Restam ainda as rotinas de Paineis avulsos, geração de arquivos : TXT, XLS, DOC, , relatórios, ainda não nos foi explicado como será .. mas deverão ter algo planejado.

Algo muito comentado é que a conexão dos dados(banco de dados) é remota, ou seja , nesta versão para se ter o aplicativo funcionando é preciso estar ligado a Internet. A Artech já avisou que não soltará Base de dados locais nesta versão , mas futuramente terá.

Temos muita curiosidade ainda quanto as APIS totais do hardware, como acesso total ao GPS, a câmera, aos leitores de scanners, Google Googles, etc.. Mas , isto é só ter um pouco de paciência que sairá.

Parabéns a Artech pela iniciativa(ousada) , pois gerar para três dos principais geradores não deve ser tarefa fácil, e principalmente por nos escutar(clientes beta) a todo momento, pois nós conheçemos do negócio(business) em que queremos atuar , por isto a necessidade de termos recursos fáceis e ágeis.

Quanto ao mercado de dispositivos móveis é claro que a disputa ficará entre IOS e Android, visto que até a RIM já se pronunciou em ter um emulador de ambiente operacional nela que rode os aplicativos ANDROID.



Congratulations Artech TEAM!


by 


RICARDO CESAR DE OLIVEIRA
RCO Proc. de Dados

quarta-feira, 8 de dezembro de 2010

Chrome OS, HTML 5 , banco offline e protocolo REST(JSON)




Hoje para mim(7/12/2010) é um dia histórico, o lançamento do Chrome OS nos Estados Unidos.

Posso estar errado nesta previsão, mas alguns dos maiores gargalos da Web estão caminhando para uma solução natural. Base de dados locais(pequenas) para trabalhar diretamente pelo Browser.

O HTML5 traz embutido em todos os principais BROWSERS(chrome, safari, firefox) uma pequena base de dados local, que irá atender a várias situações no caso do cliente estar offline. Vejam um exemplo abaixo;


E o mais impressionante de tudo isto é que como a otimização para Web que o Google mais se preocupa está trazendo tantos recursos disponíveis. E o mais interessante em pouco tempo o protocolo REST(JSON), vem tão rápido permitindo novas formas de trabalho.

E a Artech, o que estará preparando para todas estas mudanças ??  Foi comentado que a geração(by GENEXUS) já está preparada para o HTML5, mas e o manejo de base de dados locais(igual ao exemplo do site do New York Times acima) ainda não vimos nada a respeito disto.

Por favor Artech.. o protocolo Rest já está sendo disponibilizado no Gerador SD, falta total implementação do HTML5 , principalmente o manejo destas bases locais do browser. E agora principalmente a geração de aplicativos para o Chrome Web Store.

Boa sorte nesta empreitada e nós clientes lhes apoiaremos no que for necessário!

Abraço

Ricardo C. de Oliveira
Genexus Web Developer 

sábado, 20 de novembro de 2010

Cloud c/ VMWARE ou CITRIX, tem diferença de performance ?


Utilizávamos em nossos projetos um cloud  contratado pela Locaweb(não uma das melhores, mas nos atende muito bem), a um custo razoável mensal, R$ 200,00.


Ao utilizarmos em produção(o cloud VMWARE ) em um grande evento recentemente, sentimos muita lentidão na gravação dos registros em nosso aplicativo GX EVL1.

Trocamos para o ultimo Release do GX(Preview 2 , U4) para resolvermos alguns probleminhas conhecidos, mas nem tanto pela performance.

Em Outubro/2010, a Locaweb trocou seu plano Cloud da plataforma VMWARE para o Cloud da Cytrix. E nós estávamos loucos para testarmos nossos aplicativos no WIN 64 bits , IIS 7, e SQL 2008 64 bits.


Na mesma configuração de máquina virtual(1 GB de RAM, 50 GB de HD, 2 processadores XEON de 2.4mhz) , a diferença na plataforma Citrix(ou 64 bits) é muito melhor, chega a ser de 40% mais rápida.

A maioria das telas abrem bem mais rápido(IIS) ??, a gravação dos registros é bem mais aceitável que no SQL 2005 anterior.

Alguns relatórios eram intermináveis na versão anterior .. agora demoram no máximo 7 segundos(os maiores e mais demorados), os mais simples demorarm 2 segundos pra abrir.

Quem terá dado tanta diferença assim ?? A força dos 64 Bits ??? ou a força da máquina Virtual da Citrix ??

Será que teremos melhores performance com mais memória RAM ???

Outra vantagem destes planos Virtualizados novos da Locaweb é a utilização de VLAN, ou seja o acesso (tráfego) entre dois servidores virtuais é pela rede interna virtual deles (não gerando tráfego) como no plano anterior.

No começo eu era muito desconfiado quanto a estes serviços oferecidos, mas cada dia me convencem cada vez mais, que o diga o GXserver, o GXPortal, e agora neste final de ano lançaremos uma série de aplicativos by RCO via SAAS.

Parabéns a WEB e a todos que pensaram nestas mudanças , cloud realmente é o futuro. Que venha o Chromium OS, todo baseado em cloud! 

Abraço a todos


Ricardo
RCO Proc. de Dados
PS: Os aplicativos Web GX funcionam muito bem na plataforma 64 Bits do .net com IIS 7 (good news)!

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