E outra, JaperReports é opensource
e outra, se a ferramenta não atender os requisitos das do sistema desktop, não vai ser utilizada, entende?
SOMENTE LEMBRANDO, ELA NÃO É JASPERREPORTS E NEM TEM CÓDIGO FONTE COPIADO, ELA É BASEADA NO JASPERREPORTS, OK?
Agora voltando ao assunto, quais outras idéias vcs podem dar sobre o problema proposto?
[quote=xjunior][quote=eduveks][quote=serathiuk][quote=eduveks]
(…)
Nenhum sistema grande e sério de sucesso usa PHP, me diga um?
[/quote]
1: http://www.magentocommerce.com/
2: http://ez.no/br/
3: http://www.facebook.com/[/quote]
Você esta de brincadeira comigo né?
Facebook, por exemplo, dos mais lentos, esta agora com vários problemas de performance, quem usa sabe, e qual a arquitetura dos servidores daquilo? E o consumo de CPU que deve ser descumunal. Isto pra mim explica a lentidão do Facebook…
Quanto ao resto, não sei dizer, mas o que sei é trabalho em grandes bancos e grandes empresas a alguns anos, e nunca vi nada em PHP… quando digo nada é nada mesmo!
Portanto ao meu ver PHP não atinge os grandes clientes e ponto! No Brasil a coisa pode estar diferente, mas na minha opinião se tiver, estão meio loucos.[/quote]
Não meu amigo, pelo que vejo vc é um cara muito inteligente, visualize comigo::
Tudo muda, tudo tende a melhorar, php não está mais na versão 4, não é? a performance ainda tem que melhorar mas não fica atrás de outras linguagens, mas também não é das melhores, aí em Portugal realmente, vc não deve ver falar em php mesmo…, aqui no Brasil se usa muito, mas nas próximas versões isso tende a melhorar como está melhorando, gostei muito da versão 5.3 e estou com muita vontade de ver a 6.0…
Bom, agora, PHP tende a melhorar, mas para enterprise é mais adequado Java mesmo, sabemos bem… Agora, sou desenvolvedor PHP e aqui na empresa escolheram PHP, porque? Fizeram um estudo e análise, e viram que ela iria suprir bem o que nescessitamos, aqui, produzimos sim sistemas grandes, e nossos sistemas que são em desktops lideram o mercado mercosul do segmento, é uma grande empresa com grandes sistemas… e em breve vão ter grandes sitemas em php,kkkkkkkk
- [/quote]
Ta ai pq sua empresa escoleu php… a experencia dela é concentrada em desktop… mas qdo aprenderem um pouco mais sobre sistemas web talvez mudem o conceito…
Polêmicas à parte… se quer fazer algo profissional mesmo… sem precisar fazer remendos no futuro… criar um parser é legal… como já citei o javaCC é um boa opção. Só precisa saber usar. Se você programa em C existem também opções similares, mas como aqui é um fórum de java eu aconselho o javaCC.
Veja um exemplo prático para ter idéia. É um exemplo de interpretador de e-mails: veja como você pode mesclar a interpretação dos < TOKENS > com ações programadas em java ( entre { } )
PARSER_BEGIN(Digest)
import java.io.*;
public class Digest {
static int count = 0;
static String buffer = "";
public static void main(String args[]) throws ParseException {
Digest parser = new Digest(System.in);
System.out.println("DIGEST OF RECENT MESSAGES FROM THE JAVACC MAILING LIST");
System.out.println("----------------------------------------------------------------------");
System.out.println("");
System.out.println("MESSAGE SUMMARY:");
System.out.println("");
parser.MailFile();
if (count == 0) {
System.out.println("There have been no messages since the last digest posting.");
System.out.println("");
System.out.println("----------------------------------------------------------------------");
} else {
System.out.println("");
System.out.println("----------------------------------------------------------------------");
System.out.println("");
System.out.println(buffer);
}
}
}
PARSER_END(Digest)
// PARSER SPECIFICATIONS BEGIN HERE
void MailFile() :
{
}
{
(
{
count++;
}
MailMessage()
)*
<EOF>
}
void MailMessage() :
{
Token subj=null, from=null, date=null, body;
}
{
( subj=<SUBJECT> | from=<FROM> | date=<DATE> )+
{
System.out.println(count + ". " + ((subj==null) ? "no subject" : subj.image));
buffer += "\n";
buffer += "Message " + count + ":\n";
buffer += "\n";
buffer += "Subject: " + ((subj==null) ? "no subject" : subj.image) + "\n";
buffer += "From: " + ((from==null) ? "" : from.image) + "\n";
buffer += "Date: " + ((date==null) ? "" : date.image) + "\n";
buffer += "\n";
}
( body=<BODY>
{
buffer += body.image;
}
)*
<END>
{
buffer += "\n";
buffer += "----------------------------------------------------------------------\n";
}
}
// LEXICAL SPECIFICATIONS BEGIN HERE
TOKEN:
{
<#EOL: "\n" | "\r" | "\r\n">
|
<#TWOEOLS: (("\n"|"\r\n") <EOL>) | ("\r\r" [ "\n" ])>
|
<#NOT_EOL: ~["\n","\r"]>
}
<DEFAULT>
SKIP:
{
< <EOL> "*** EOOH ***" <EOL> > : MAILHEADER
|
<~[]>
}
<MAILHEADER>
SKIP:
{
<_TWOEOLS: <TWOEOLS>> : MAILBODY
// We cannot have just a reference to a regular expression in a
// lexical specification - i.e., we cannot simply have <TWOEOLS>.
|
"Subject: " : MAILSUBJECT
|
"From: " : MAILFROM
|
"Date: " : MAILDATE
|
<~[]>
}
<MAILSUBJECT>
TOKEN:
{
<SUBJECT: ( <NOT_EOL> )+>
}
<MAILSUBJECT>
SKIP:
{
<_EOL1: <EOL>> : MAILHEADER
}
<MAILFROM>
TOKEN:
{
<FROM: ( <NOT_EOL> )+>
}
<MAILFROM>
SKIP:
{
<_EOL2: <EOL>> : MAILHEADER
}
<MAILDATE>
TOKEN:
{
<DATE: ( <NOT_EOL> )+>
}
<MAILDATE>
SKIP:
{
<_EOL3: <EOL>> : MAILHEADER
}
<MAILBODY>
TOKEN:
{
<BODY: (~["\n","\r","\u001f"])* <EOL>>
|
<END: "\u001f"> : DEFAULT
}
[quote=ctdaa]Polêmicas à parte… se quer fazer algo profissional mesmo… sem precisar fazer remendos no futuro… criar um parser é legal… como já citei o javaCC é um boa opção. Só precisa saber usar. Se você programa em C existem também opções similares, mas como aqui é um fórum de java eu aconselho o javaCC.
Veja um exemplo prático para ter idéia. É um exemplo de interpretador de e-mails: veja como você pode mesclar a interpretação dos < TOKENS > com ações programadas em java ( entre { } )
[code]
PARSER_BEGIN(Digest)
import java.io.*;
public class Digest {
static int count = 0;
static String buffer = “”;
public static void main(String args[]) throws ParseException {
Digest parser = new Digest(System.in);
System.out.println(“DIGEST OF RECENT MESSAGES FROM THE JAVACC MAILING LIST”);
System.out.println("----------------------------------------------------------------------");
System.out.println("");
System.out.println(“MESSAGE SUMMARY:”);
System.out.println("");
parser.MailFile();
if (count == 0) {
System.out.println(“There have been no messages since the last digest posting.”);
System.out.println("");
System.out.println("----------------------------------------------------------------------");
} else {
System.out.println("");
System.out.println("----------------------------------------------------------------------");
System.out.println("");
System.out.println(buffer);
}
}
}
PARSER_END(Digest)
// PARSER SPECIFICATIONS BEGIN HERE
void MailFile() :
{
}
{
(
{
count++;
}
MailMessage()
)*
}
void MailMessage() :
{
Token subj=null, from=null, date=null, body;
}
{
( subj= | from= | date= )+
{
System.out.println(count + ". " + ((subj==null) ? “no subject” : subj.image));
buffer += “\n”;
buffer += "Message " + count + “:\n”;
buffer += “\n”;
buffer += "Subject: " + ((subj==null) ? “no subject” : subj.image) + “\n”;
buffer += "From: " + ((from==null) ? “” : from.image) + “\n”;
buffer += "Date: " + ((date==null) ? “” : date.image) + “\n”;
buffer += “\n”;
}
( body=
{
buffer += body.image;
}
)*
{
buffer += “\n”;
buffer += “----------------------------------------------------------------------\n”;
}
}
// LEXICAL SPECIFICATIONS BEGIN HERE
TOKEN:
{
<#EOL: “\n” | “\r” | “\r\n”>
|
<#TWOEOLS: (("\n"|"\r\n") ) | ("\r\r" [ “\n” ])>
|
<#NOT_EOL: ~["\n","\r"]>
}
Bom amigo, muito interessante, mas como uso isso em php? tem como ?
[quote=luistiagos][quote=xjunior][quote=eduveks][quote=serathiuk][quote=eduveks]
(…)
Nenhum sistema grande e sério de sucesso usa PHP, me diga um?
[/quote]
1: http://www.magentocommerce.com/
2: http://ez.no/br/
3: http://www.facebook.com/[/quote]
Você esta de brincadeira comigo né?
Facebook, por exemplo, dos mais lentos, esta agora com vários problemas de performance, quem usa sabe, e qual a arquitetura dos servidores daquilo? E o consumo de CPU que deve ser descumunal. Isto pra mim explica a lentidão do Facebook…
Quanto ao resto, não sei dizer, mas o que sei é trabalho em grandes bancos e grandes empresas a alguns anos, e nunca vi nada em PHP… quando digo nada é nada mesmo!
Portanto ao meu ver PHP não atinge os grandes clientes e ponto! No Brasil a coisa pode estar diferente, mas na minha opinião se tiver, estão meio loucos.[/quote]
Não meu amigo, pelo que vejo vc é um cara muito inteligente, visualize comigo::
Tudo muda, tudo tende a melhorar, php não está mais na versão 4, não é? a performance ainda tem que melhorar mas não fica atrás de outras linguagens, mas também não é das melhores, aí em Portugal realmente, vc não deve ver falar em php mesmo…, aqui no Brasil se usa muito, mas nas próximas versões isso tende a melhorar como está melhorando, gostei muito da versão 5.3 e estou com muita vontade de ver a 6.0…
Bom, agora, PHP tende a melhorar, mas para enterprise é mais adequado Java mesmo, sabemos bem… Agora, sou desenvolvedor PHP e aqui na empresa escolheram PHP, porque? Fizeram um estudo e análise, e viram que ela iria suprir bem o que nescessitamos, aqui, produzimos sim sistemas grandes, e nossos sistemas que são em desktops lideram o mercado mercosul do segmento, é uma grande empresa com grandes sistemas… e em breve vão ter grandes sitemas em php,kkkkkkkk
- [/quote]
Ta ai pq sua empresa escoleu php… a experencia dela é concentrada em desktop… mas qdo aprenderem um pouco mais sobre sistemas web talvez mudem o conceito…[/quote]
Na verdade ela tinha escolhido antes Java, e tentaram adaptar-se à ferramenta powerlogic jcompany, muito boa, mas mesmo assim necessitava programar para fazer sistemas, e nosso objetivo é tirar o máximo de programação do desenvolvedor, sendo que ele somente ficaria responsável em desenvolver a lógica do negócio, como ficaria custoso pois aplicativos bons eram pagos e open source encontrou-se o openbravo, mas ele é pra sistemas pequenos, queriamos mais que isso, e outras coisas mais que aconteceram, daí decidiram migrar pra php, pois as soluções atendiam mais o que necessitavamos, por isso digo: depende do que vc quer, nem tudo se responde à uma linguagem, Java é bom mas não é Deus, senão outras não teriam lugar, não é?
E falo ainda, a nossa ferramenta é inédita e excepcional, e é para sistemas de grande porte, sem contar que as soluções novas desenvolvidas tornam a ferramenta escalável, muitas coisas que não foram desenvolvidas, e ainda, em pouco tempo temos um produto excepcional e acredite::em PHP::
[quote=xjunior]
Bom amigo, muito interessante, mas como uso isso em php? tem como ?[/quote]
A compilação do javaCC vai gerar um pacote de classes java que podem ser executadas ou instanciadas de acordo com sua programação.
posso integrar essas classes em php?
acho que nao precisaria criar um “linguagem” para esta finalidade que vc quer . poderia fazer os scripts do relatorio em proprio codigo php e depois ir chamando estes script conforme a necessidade vide o dokuwiki, e um wiki que vc pode colocar codigo de php para ser excutado quando ta editando um documento…
bom amigo, uma forma de executar código de acordo de forma externa ou através de uma fonte diferente, é usando a função eval() do php, mas o meu problema é a sintaxe java que não é a mesma do php, tipo a tipagem, java tem e php não, php as variáveis são descritas om o $ antes do nome delas, e entre outros, por isso que eu ia criar uma mini-linguagem, mas estou pensando melhor em criar uma camada que interpreta o código java e substitui em php, assim uso a função eval para executá-lo… Uma boa idéia né?
Ok, e porquê você não cria por XML? Crie uma hierarquia de VOs, nomenclatura, etc, depois é só ler de XML. Vai ter o mesmo resultado no teu caso.
Bom amigo, tudo é analisado, vou verificar se esta é a melhor solução, pois não posso restringir a minha implementação, pois ela deverá suportar metalinguagem, assim, tenho que ter uma camada antes da linguagem para verificar qual o tipo de linguagem inserida.,…
Bom amigo, tudo é analisado, vou verificar se esta é a melhor solução, pois não posso restringir a minha implementação, pois ela deverá suportar metalinguagem, assim, tenho que ter uma camada antes da linguagem para verificar qual o tipo de linguagem inserida.,…[/quote]
Dá uma pesquisada em JSON também. Se você quer interoperabilidade tão foda assim, sugiro que dê uma olhada. É bem simples de implementar. E bem, você poderia botar um atributo no XML especificando a “linguagem” =).
Bom amigo, tudo é analisado, vou verificar se esta é a melhor solução, pois não posso restringir a minha implementação, pois ela deverá suportar metalinguagem, assim, tenho que ter uma camada antes da linguagem para verificar qual o tipo de linguagem inserida.,…[/quote]
Dá uma pesquisada em JSON também. Se você quer interoperabilidade tão foda assim, sugiro que dê uma olhada. É bem simples de implementar. E bem, você poderia botar um atributo no XML especificando a “linguagem” =).[/quote]
Bom amigo, eu uso JSON normalmente para transferir dados por ajax…
me explica melhor sua solução para o problema, como vc imagina isso acontecendo?
flw mano
Bem vendo este tipo de situação percebo que CC não é tão inutil assim no mercado…
Eu ainda acho que estão querendo matar um leão com uma bomba atômica.
Eu ainda acho que estão querendo matar um leão com uma bomba atômica.[/quote]
Não meu amigo, de forma alguma, a qualidade depende de um bom projeto e ousadia, como vou ter algo de qualidade e com a máxima eficiência se não busquei as melhores alternativas e projetei da melhor forma?
Não é matar leão com bomba-atômica, e sim implementar uma solução que atenderá todos os casos sem que eu precise ficar voltando a analisar código toda vez que quiser implementar funções novas…
Não posso ser refém de algo que eu sei que tem como fazer melhor possível…
[quote=tnaires]Aproveitando o gancho, gostaria de deixar um link aqui:
Let’s build a compiler
Este artigo aborda os tópicos básicos de projeto de uma linguagem.[/quote]
Galera, estou lendo este material aqui e ele é bem interessante e muito intuitivo!!!
Lei o livro do draganzinho sobre Compiladores se não me engando o proprio nome é Compiladores… e um q tem um dragão vermelho na capa…