SlideShare uma empresa Scribd logo
1 de 22
Python + Delphi Um relacionamento que está dando certo (Python Cases) 1 Fernando Macedo
Quem? Fernando Macedo Desenvolvedor Delphi/Python Bacharel em Sistemas de Informação (Faculdade Impacta de Tecnologia) Mestrando em Gestão do Conhecimento e Sistemas Inteligentes (IPEN-USP) Membro da APyB 2
Onde? Esys Colibri 23 anos de experiência 15.000 clientes 35.000 PDVs instalados 100 revendedores em todo o País Suporte 24/7 em todo o Brasil Atualização constante às novas leis 3
O que? Caso da Esys na utilização de Python no Colibri 8 Integração entre Python e Delphi 4
Cenário Software PDV Mesa Balcão Ficha Entrega Contexto Empresa tradicional - 23 anos Aplicação comercial Ambiente Windows (MS, C# e Delphi) Nova versão 5
Os problemas Módulo de relatórios Formatação embutida no aplicativo Manutenção difícil Integração com terceiros Implementações específicas 6
7 Relatórios texto: Antes    { Layout da linha levando em conta qtd fracionada }     TmpStr := '%s%-2.0f ' + Trim(strFormatDesc);     if QtdeFracionada then       TmpStr := '%s%3.3f ' + Trim(strFormatDesc);       TmpStr := Format(TmpStr, [strTagIni, fQuantidade, strDescr]);       lstMarchador.Add(TrimAcentos(Tmpstr) + strTagFim);     sLineMarchadorAgrup:= sLineMarchadorAgrup+';'+TrimAcentos(Tmpstr) + strTagFim;       if dmVenda.qryColibriBN_LUGARMESA.AsBoolean then       TmpStr := TmpStr + FormatFloat(' #0', MyMaterial[i].LugarMesa);       TmpStr := TmpStr + strTagFim;     lstRemota.Add(TrimAcentos(TmpStr)); 
O desafio dos relatórios Premissas Gerar a mesma configuração de arquivos; Simples; Suportar troca em run-time; Suportar loops aninhados, do tipo mestre-detalhe; Mesma origem dos dados para os relatórios visuais; Ter toda a infra construída em dias, e não em meses. 8
Por que Python? Expressividade Legibilidade de código Codificação rápida Vasta coleção de bibliotecas Recurso X, Y, Z 9
A linguagem certa E não sabendo que era impossível,     Python foi lá e fez! Solução da infra em 2 dias! Ganhou moral. 10
Resultados Premissas atendidas Plus: Extensão e customização por clientes 11
Depois 12 {%extends"relatorio-base.template"%} {%setpag = impressaoNumero%} {%settot = impressaoTotal%}   {%- block relatorio %} {%blockcabecalhoscoped -%} {%filtercompexp%}Conta{{venda.codigoDoTicket}}{{'=' * 5}}{{pag}}/{{tot}}{%endfilter%} Mov.: {{dataContabil}} - Imp.: {{data}} - {{hora}}h PDV: {{maquina|semAcentos}} Caixa: {{caixa|semAcentos}} Garcom: {{garcom|semAcentos}} SEQ: {{venda.sequencia}} {%- endblockcabecalho %}   %- block corpo -%}{{render_cancelado() }} {%foriteminitens -%} {{render_item(item) }} {%endfor -%}{{render_cancelado() }}{%- endblock corpo %}
Integração Desktop GUI http://www.python.org/about/apps/ Scripting Extending Upgrade tecnológico 13
DriverPython 14
Uso do P4D 15 type   EngineDoPython = class   private class var     _Eng: TPythonEngine;     _IO: TPythonInputOutput;     _Dir: string;   private const     NOME_DLL = 'python27.dll';     NOME_BIBLIOTECA = 'python27.zip';   public  [...]     class procedure AdicionarDiretorioAoPath(umDiretorio: string);     class property Engine: TPythonEngine read ObterEngine;     class property DirDoPython: string read _DirDoPython write _DirDoPython;     class property Iniciado: Boolean read ObterIniciado;     class property IO: TPythonInputOutput read _IO;   end;
Uso do P4D 16 class constructor EngineDoPython.Create; begin   _Eng := TPythonEngine.Create(nil);   _IO := TPythonInputOutput.Create(nil);   _Eng.DllName := NOME_DLL;   _Eng.PyFlags := _Eng.PyFlags + [pfIgnoreEnvironmentFlag];   _Eng.IO := _IO; end; class procedure EngineDoPython.Iniciar; begin   _Eng.DllPath := arquivos.NormalizarPasta(DiretorioDoPython);   arquivos.ExecutarNaPasta(DiretorioDoPython,     procedure begin       _Eng.LoadDll();       SysModule.path.append(_Eng.DllPath);       SysModule.path.append(_Eng.DllPath + NOME_BIBLIOTECA);     end); end;
O que pode ser feito? Módulos *.pyd Executar códigos Python; Expor classes Delphi ao Python; 17
Problemas e riscos CTypes Manifesto Pessoal Disseminar conhecimento à equipe Continuidade do projeto Python4Delphi Suporte a futuras versões 18
Minhas impressões A ilusão de que verificação de tipos em tempo de compilação resolve todos os problemas Python Oferece alto nível de abstração Escreve-se menos código Maior produtividade Python não se põe entre o desenvolvedor e o problema 19
Links http://code.google.com/p/python4delphi/ http://code.google.com/p/pyscripter/ 20
Obrigado! Dúvidas? Contatos fgmacedo@gmail.com @fgmacedo www.esys.com.br 21
22

Mais conteúdo relacionado

Mais procurados

"Build Effective Risk Management on Top of Your Trading Strategy" by Danielle...
"Build Effective Risk Management on Top of Your Trading Strategy" by Danielle..."Build Effective Risk Management on Top of Your Trading Strategy" by Danielle...
"Build Effective Risk Management on Top of Your Trading Strategy" by Danielle...Quantopian
 
FORMAÇÃO BÁSICA DO COMBATENTE PPB/2 2010
FORMAÇÃO BÁSICA DO COMBATENTE PPB/2 2010FORMAÇÃO BÁSICA DO COMBATENTE PPB/2 2010
FORMAÇÃO BÁSICA DO COMBATENTE PPB/2 2010Falcão Brasil
 
Trade Forex From Home - 10 Biggest Mistakes New Forex Traders Make (And How T...
Trade Forex From Home - 10 Biggest Mistakes New Forex Traders Make (And How T...Trade Forex From Home - 10 Biggest Mistakes New Forex Traders Make (And How T...
Trade Forex From Home - 10 Biggest Mistakes New Forex Traders Make (And How T...ForexTraining
 
Orientacao cigs
Orientacao cigsOrientacao cigs
Orientacao cigsThoth Nine
 
40 pip parabolic sar forex strategy (1)
40 pip parabolic sar forex strategy (1)40 pip parabolic sar forex strategy (1)
40 pip parabolic sar forex strategy (1)pipsumo traderfx
 
Orientação aos Candidatos do Curso Especial de Mergulhador de Combate (C-ESP-...
Orientação aos Candidatos do Curso Especial de Mergulhador de Combate (C-ESP-...Orientação aos Candidatos do Curso Especial de Mergulhador de Combate (C-ESP-...
Orientação aos Candidatos do Curso Especial de Mergulhador de Combate (C-ESP-...Falcão Brasil
 
SMBU DNA of Successful Trading - March 16th 2015
SMBU DNA of Successful Trading - March 16th 2015SMBU DNA of Successful Trading - March 16th 2015
SMBU DNA of Successful Trading - March 16th 2015smbcapital
 
apostila-instrucao-tatica-individual-inc-fnsp-1
apostila-instrucao-tatica-individual-inc-fnsp-1apostila-instrucao-tatica-individual-inc-fnsp-1
apostila-instrucao-tatica-individual-inc-fnsp-1Triplo Sof
 
Best strategies for trading
Best strategies for tradingBest strategies for trading
Best strategies for tradingTeyYeeShen
 
Resumen guerra del marketing 9 pag
Resumen guerra del marketing 9 pagResumen guerra del marketing 9 pag
Resumen guerra del marketing 9 pagDiego Lucero
 
Binóculos de Visão Noturna do Comando de Operações Táticas
Binóculos de Visão Noturna do Comando de Operações TáticasBinóculos de Visão Noturna do Comando de Operações Táticas
Binóculos de Visão Noturna do Comando de Operações TáticasFalcão Brasil
 
Comando de Operações Especiais
Comando de Operações EspeciaisComando de Operações Especiais
Comando de Operações EspeciaisFalcão Brasil
 
CADERNO DE INSTRUÇÃO CONDUÇÃO DO TIRO DE ARTILHARIA PELO COMBATENTE DE QUALQU...
CADERNO DE INSTRUÇÃO CONDUÇÃO DO TIRO DE ARTILHARIA PELO COMBATENTE DE QUALQU...CADERNO DE INSTRUÇÃO CONDUÇÃO DO TIRO DE ARTILHARIA PELO COMBATENTE DE QUALQU...
CADERNO DE INSTRUÇÃO CONDUÇÃO DO TIRO DE ARTILHARIA PELO COMBATENTE DE QUALQU...Falcão Brasil
 
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3Falcão Brasil
 
Top 8 Forex Trading Strategies That Pro Traders Use
Top 8 Forex Trading Strategies That Pro Traders UseTop 8 Forex Trading Strategies That Pro Traders Use
Top 8 Forex Trading Strategies That Pro Traders UseSyrous Pejman
 
Caveira operações policiais especiais.
Caveira operações policiais especiais.Caveira operações policiais especiais.
Caveira operações policiais especiais.Falcão Brasil
 
Presentación Enrique Díaz de Precio & Volumen en BCNTradingPoint
Presentación Enrique Díaz de Precio & Volumen en BCNTradingPointPresentación Enrique Díaz de Precio & Volumen en BCNTradingPoint
Presentación Enrique Díaz de Precio & Volumen en BCNTradingPointvaldecantos
 

Mais procurados (20)

"Build Effective Risk Management on Top of Your Trading Strategy" by Danielle...
"Build Effective Risk Management on Top of Your Trading Strategy" by Danielle..."Build Effective Risk Management on Top of Your Trading Strategy" by Danielle...
"Build Effective Risk Management on Top of Your Trading Strategy" by Danielle...
 
FORMAÇÃO BÁSICA DO COMBATENTE PPB/2 2010
FORMAÇÃO BÁSICA DO COMBATENTE PPB/2 2010FORMAÇÃO BÁSICA DO COMBATENTE PPB/2 2010
FORMAÇÃO BÁSICA DO COMBATENTE PPB/2 2010
 
Trade Forex From Home - 10 Biggest Mistakes New Forex Traders Make (And How T...
Trade Forex From Home - 10 Biggest Mistakes New Forex Traders Make (And How T...Trade Forex From Home - 10 Biggest Mistakes New Forex Traders Make (And How T...
Trade Forex From Home - 10 Biggest Mistakes New Forex Traders Make (And How T...
 
Orientacao cigs
Orientacao cigsOrientacao cigs
Orientacao cigs
 
40 pip parabolic sar forex strategy (1)
40 pip parabolic sar forex strategy (1)40 pip parabolic sar forex strategy (1)
40 pip parabolic sar forex strategy (1)
 
Orientação aos Candidatos do Curso Especial de Mergulhador de Combate (C-ESP-...
Orientação aos Candidatos do Curso Especial de Mergulhador de Combate (C-ESP-...Orientação aos Candidatos do Curso Especial de Mergulhador de Combate (C-ESP-...
Orientação aos Candidatos do Curso Especial de Mergulhador de Combate (C-ESP-...
 
Forex trading psychology
Forex trading psychologyForex trading psychology
Forex trading psychology
 
SMBU DNA of Successful Trading - March 16th 2015
SMBU DNA of Successful Trading - March 16th 2015SMBU DNA of Successful Trading - March 16th 2015
SMBU DNA of Successful Trading - March 16th 2015
 
apostila-instrucao-tatica-individual-inc-fnsp-1
apostila-instrucao-tatica-individual-inc-fnsp-1apostila-instrucao-tatica-individual-inc-fnsp-1
apostila-instrucao-tatica-individual-inc-fnsp-1
 
Best strategies for trading
Best strategies for tradingBest strategies for trading
Best strategies for trading
 
Insidebar
InsidebarInsidebar
Insidebar
 
Resumen guerra del marketing 9 pag
Resumen guerra del marketing 9 pagResumen guerra del marketing 9 pag
Resumen guerra del marketing 9 pag
 
Introduction to Scalping Futures
Introduction to Scalping FuturesIntroduction to Scalping Futures
Introduction to Scalping Futures
 
Binóculos de Visão Noturna do Comando de Operações Táticas
Binóculos de Visão Noturna do Comando de Operações TáticasBinóculos de Visão Noturna do Comando de Operações Táticas
Binóculos de Visão Noturna do Comando de Operações Táticas
 
Comando de Operações Especiais
Comando de Operações EspeciaisComando de Operações Especiais
Comando de Operações Especiais
 
CADERNO DE INSTRUÇÃO CONDUÇÃO DO TIRO DE ARTILHARIA PELO COMBATENTE DE QUALQU...
CADERNO DE INSTRUÇÃO CONDUÇÃO DO TIRO DE ARTILHARIA PELO COMBATENTE DE QUALQU...CADERNO DE INSTRUÇÃO CONDUÇÃO DO TIRO DE ARTILHARIA PELO COMBATENTE DE QUALQU...
CADERNO DE INSTRUÇÃO CONDUÇÃO DO TIRO DE ARTILHARIA PELO COMBATENTE DE QUALQU...
 
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
ADESTRAMENTO BÁSICO NAS UNIDADES DE INFANTARIA PÁRA-QUEDISTA PPA INF/3
 
Top 8 Forex Trading Strategies That Pro Traders Use
Top 8 Forex Trading Strategies That Pro Traders UseTop 8 Forex Trading Strategies That Pro Traders Use
Top 8 Forex Trading Strategies That Pro Traders Use
 
Caveira operações policiais especiais.
Caveira operações policiais especiais.Caveira operações policiais especiais.
Caveira operações policiais especiais.
 
Presentación Enrique Díaz de Precio & Volumen en BCNTradingPoint
Presentación Enrique Díaz de Precio & Volumen en BCNTradingPointPresentación Enrique Díaz de Precio & Volumen en BCNTradingPoint
Presentación Enrique Díaz de Precio & Volumen en BCNTradingPoint
 

Destaque

Raspador: Biblioteca em Python para extração de dados em texto semi-estruturado
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturadoRaspador: Biblioteca em Python para extração de dados em texto semi-estruturado
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturadoFernando Macedo
 
OpenData-BR, [Captando] Dados públicos brasileiros
OpenData-BR, [Captando] Dados públicos brasileirosOpenData-BR, [Captando] Dados públicos brasileiros
OpenData-BR, [Captando] Dados públicos brasileirosThiago Rondon
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Kelver Merlotti
 
Estagio Supervisionado
Estagio SupervisionadoEstagio Supervisionado
Estagio SupervisionadoNatan Lopes
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosAndreano Lanusse
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ BuilderDiego Rosa
 
R ou Python para análise de dados
R ou Python para análise de dadosR ou Python para análise de dados
R ou Python para análise de dadosCiência e Dados
 
Novas ferramentas Python para Análise de Dados
Novas ferramentas Python para Análise de DadosNovas ferramentas Python para Análise de Dados
Novas ferramentas Python para Análise de DadosCiência e Dados
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaSidney Roberto
 
Capturando a web com Scrapy
Capturando a web com ScrapyCapturando a web com Scrapy
Capturando a web com ScrapyGabriel Freitas
 
Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Kelver Merlotti
 
Python ¿2 vs 3?
Python ¿2 vs 3?Python ¿2 vs 3?
Python ¿2 vs 3?Joel Rivera
 
Desenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com PythonDesenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com PythonRoselma Mendes
 

Destaque (20)

Raspador: Biblioteca em Python para extração de dados em texto semi-estruturado
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturadoRaspador: Biblioteca em Python para extração de dados em texto semi-estruturado
Raspador: Biblioteca em Python para extração de dados em texto semi-estruturado
 
OpenData-BR, [Captando] Dados públicos brasileiros
OpenData-BR, [Captando] Dados públicos brasileirosOpenData-BR, [Captando] Dados públicos brasileiros
OpenData-BR, [Captando] Dados públicos brasileiros
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
 
Certificação Delphi
Certificação DelphiCertificação Delphi
Certificação Delphi
 
Estagio Supervisionado
Estagio SupervisionadoEstagio Supervisionado
Estagio Supervisionado
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
 
Open datasets
Open datasetsOpen datasets
Open datasets
 
R ou Python para análise de dados
R ou Python para análise de dadosR ou Python para análise de dados
R ou Python para análise de dados
 
O que é Data Science?
O que é Data Science?O que é Data Science?
O que é Data Science?
 
Novas ferramentas Python para Análise de Dados
Novas ferramentas Python para Análise de DadosNovas ferramentas Python para Análise de Dados
Novas ferramentas Python para Análise de Dados
 
Web scraping
Web scrapingWeb scraping
Web scraping
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
 
Scraping
ScrapingScraping
Scraping
 
Capturando a web com Scrapy
Capturando a web com ScrapyCapturando a web com Scrapy
Capturando a web com Scrapy
 
Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015
 
Python ¿2 vs 3?
Python ¿2 vs 3?Python ¿2 vs 3?
Python ¿2 vs 3?
 
RESTful com json
RESTful com jsonRESTful com json
RESTful com json
 
Desenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com PythonDesenvolvendo web crawler/scraper com Python
Desenvolvendo web crawler/scraper com Python
 

Semelhante a Python + Delphi: Um relacionamento que está dando certo

Propostas de atendimento aos cartórios de Registro de Imóveis - Desenvolvedor...
Propostas de atendimento aos cartórios de Registro de Imóveis - Desenvolvedor...Propostas de atendimento aos cartórios de Registro de Imóveis - Desenvolvedor...
Propostas de atendimento aos cartórios de Registro de Imóveis - Desenvolvedor...IRIB
 
Expresso 3 - um caso de sucesso do PHP no governo
Expresso 3 - um caso de sucesso do PHP no governoExpresso 3 - um caso de sucesso do PHP no governo
Expresso 3 - um caso de sucesso do PHP no governoFlávio Lisboa
 
AutomationEdge Robotic Process Automation Quality Nextech Service Desk Digital
AutomationEdge Robotic Process Automation Quality Nextech Service Desk Digital AutomationEdge Robotic Process Automation Quality Nextech Service Desk Digital
AutomationEdge Robotic Process Automation Quality Nextech Service Desk Digital Jorge Biesczad Jr.
 
Como escolher sua plataforma de e commerce
Como escolher sua plataforma de e commerceComo escolher sua plataforma de e commerce
Como escolher sua plataforma de e commerceRafael Campos
 
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de SoftwareDextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de SoftwareDextra
 
Apresentação da Comunidade PHPDF
Apresentação da Comunidade PHPDFApresentação da Comunidade PHPDF
Apresentação da Comunidade PHPDFDaniel Maffioletti
 
Forca de Digital & RPA
Forca de Digital & RPAForca de Digital & RPA
Forca de Digital & RPAEduardo Britto
 
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na SagePentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na SageVinicius Elyseu
 
Segunda Empregável - Edição 00
Segunda Empregável - Edição 00Segunda Empregável - Edição 00
Segunda Empregável - Edição 00Fernando Anselmo
 
AutomationEdge Quality Nextech
AutomationEdge Quality NextechAutomationEdge Quality Nextech
AutomationEdge Quality NextechJorge Biesczad Jr.
 
Projeto TCOS - III ENSOL
Projeto TCOS - III ENSOLProjeto TCOS - III ENSOL
Projeto TCOS - III ENSOLAécio Pires
 
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...Éberli Cabistani Riella
 
O que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dadosO que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dadosMatheus de Oliveira
 
ARPO - Business Modeler: Apresentação da Solução
ARPO - Business Modeler: Apresentação da SoluçãoARPO - Business Modeler: Apresentação da Solução
ARPO - Business Modeler: Apresentação da SoluçãoDC-DinsmoreCompass
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 

Semelhante a Python + Delphi: Um relacionamento que está dando certo (20)

Propostas de atendimento aos cartórios de Registro de Imóveis - Desenvolvedor...
Propostas de atendimento aos cartórios de Registro de Imóveis - Desenvolvedor...Propostas de atendimento aos cartórios de Registro de Imóveis - Desenvolvedor...
Propostas de atendimento aos cartórios de Registro de Imóveis - Desenvolvedor...
 
Expresso 3 - um caso de sucesso do PHP no governo
Expresso 3 - um caso de sucesso do PHP no governoExpresso 3 - um caso de sucesso do PHP no governo
Expresso 3 - um caso de sucesso do PHP no governo
 
AutomationEdge Robotic Process Automation Quality Nextech Service Desk Digital
AutomationEdge Robotic Process Automation Quality Nextech Service Desk Digital AutomationEdge Robotic Process Automation Quality Nextech Service Desk Digital
AutomationEdge Robotic Process Automation Quality Nextech Service Desk Digital
 
Como escolher sua plataforma de e commerce
Como escolher sua plataforma de e commerceComo escolher sua plataforma de e commerce
Como escolher sua plataforma de e commerce
 
Tcc
TccTcc
Tcc
 
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de SoftwareDextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
 
Apresentação da Comunidade PHPDF
Apresentação da Comunidade PHPDFApresentação da Comunidade PHPDF
Apresentação da Comunidade PHPDF
 
Forca de Digital & RPA
Forca de Digital & RPAForca de Digital & RPA
Forca de Digital & RPA
 
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na SagePentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
 
Segunda Empregável - Edição 00
Segunda Empregável - Edição 00Segunda Empregável - Edição 00
Segunda Empregável - Edição 00
 
Webinar Magento Commerce
Webinar Magento Commerce Webinar Magento Commerce
Webinar Magento Commerce
 
AutomationEdge Quality Nextech
AutomationEdge Quality NextechAutomationEdge Quality Nextech
AutomationEdge Quality Nextech
 
Projeto TCOS - III ENSOL
Projeto TCOS - III ENSOLProjeto TCOS - III ENSOL
Projeto TCOS - III ENSOL
 
Institucional quality 2020
Institucional quality 2020Institucional quality 2020
Institucional quality 2020
 
Tcos Fisl
Tcos FislTcos Fisl
Tcos Fisl
 
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
Fábrica de Software da Procempa - Palestra no 6o Fórum Internacional Software...
 
O que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dadosO que você acha que sabe sobre banco de dados
O que você acha que sabe sobre banco de dados
 
ARPO - Business Modeler: Apresentação da Solução
ARPO - Business Modeler: Apresentação da SoluçãoARPO - Business Modeler: Apresentação da Solução
ARPO - Business Modeler: Apresentação da Solução
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Novidades do .Net 4.0
Novidades do .Net 4.0Novidades do .Net 4.0
Novidades do .Net 4.0
 

Python + Delphi: Um relacionamento que está dando certo

  • 1. Python + Delphi Um relacionamento que está dando certo (Python Cases) 1 Fernando Macedo
  • 2. Quem? Fernando Macedo Desenvolvedor Delphi/Python Bacharel em Sistemas de Informação (Faculdade Impacta de Tecnologia) Mestrando em Gestão do Conhecimento e Sistemas Inteligentes (IPEN-USP) Membro da APyB 2
  • 3. Onde? Esys Colibri 23 anos de experiência 15.000 clientes 35.000 PDVs instalados 100 revendedores em todo o País Suporte 24/7 em todo o Brasil Atualização constante às novas leis 3
  • 4. O que? Caso da Esys na utilização de Python no Colibri 8 Integração entre Python e Delphi 4
  • 5. Cenário Software PDV Mesa Balcão Ficha Entrega Contexto Empresa tradicional - 23 anos Aplicação comercial Ambiente Windows (MS, C# e Delphi) Nova versão 5
  • 6. Os problemas Módulo de relatórios Formatação embutida no aplicativo Manutenção difícil Integração com terceiros Implementações específicas 6
  • 7. 7 Relatórios texto: Antes    { Layout da linha levando em conta qtd fracionada }     TmpStr := '%s%-2.0f ' + Trim(strFormatDesc);     if QtdeFracionada then       TmpStr := '%s%3.3f ' + Trim(strFormatDesc);       TmpStr := Format(TmpStr, [strTagIni, fQuantidade, strDescr]);       lstMarchador.Add(TrimAcentos(Tmpstr) + strTagFim);     sLineMarchadorAgrup:= sLineMarchadorAgrup+';'+TrimAcentos(Tmpstr) + strTagFim;       if dmVenda.qryColibriBN_LUGARMESA.AsBoolean then       TmpStr := TmpStr + FormatFloat(' #0', MyMaterial[i].LugarMesa);       TmpStr := TmpStr + strTagFim;     lstRemota.Add(TrimAcentos(TmpStr)); 
  • 8. O desafio dos relatórios Premissas Gerar a mesma configuração de arquivos; Simples; Suportar troca em run-time; Suportar loops aninhados, do tipo mestre-detalhe; Mesma origem dos dados para os relatórios visuais; Ter toda a infra construída em dias, e não em meses. 8
  • 9. Por que Python? Expressividade Legibilidade de código Codificação rápida Vasta coleção de bibliotecas Recurso X, Y, Z 9
  • 10. A linguagem certa E não sabendo que era impossível, Python foi lá e fez! Solução da infra em 2 dias! Ganhou moral. 10
  • 11. Resultados Premissas atendidas Plus: Extensão e customização por clientes 11
  • 12. Depois 12 {%extends"relatorio-base.template"%} {%setpag = impressaoNumero%} {%settot = impressaoTotal%}   {%- block relatorio %} {%blockcabecalhoscoped -%} {%filtercompexp%}Conta{{venda.codigoDoTicket}}{{'=' * 5}}{{pag}}/{{tot}}{%endfilter%} Mov.: {{dataContabil}} - Imp.: {{data}} - {{hora}}h PDV: {{maquina|semAcentos}} Caixa: {{caixa|semAcentos}} Garcom: {{garcom|semAcentos}} SEQ: {{venda.sequencia}} {%- endblockcabecalho %}   %- block corpo -%}{{render_cancelado() }} {%foriteminitens -%} {{render_item(item) }} {%endfor -%}{{render_cancelado() }}{%- endblock corpo %}
  • 13. Integração Desktop GUI http://www.python.org/about/apps/ Scripting Extending Upgrade tecnológico 13
  • 15. Uso do P4D 15 type   EngineDoPython = class   private class var     _Eng: TPythonEngine;     _IO: TPythonInputOutput;     _Dir: string;   private const     NOME_DLL = 'python27.dll';     NOME_BIBLIOTECA = 'python27.zip';   public [...]     class procedure AdicionarDiretorioAoPath(umDiretorio: string);     class property Engine: TPythonEngine read ObterEngine;     class property DirDoPython: string read _DirDoPython write _DirDoPython;     class property Iniciado: Boolean read ObterIniciado;     class property IO: TPythonInputOutput read _IO;   end;
  • 16. Uso do P4D 16 class constructor EngineDoPython.Create; begin   _Eng := TPythonEngine.Create(nil);   _IO := TPythonInputOutput.Create(nil);   _Eng.DllName := NOME_DLL;   _Eng.PyFlags := _Eng.PyFlags + [pfIgnoreEnvironmentFlag];   _Eng.IO := _IO; end; class procedure EngineDoPython.Iniciar; begin   _Eng.DllPath := arquivos.NormalizarPasta(DiretorioDoPython);   arquivos.ExecutarNaPasta(DiretorioDoPython,     procedure begin       _Eng.LoadDll();       SysModule.path.append(_Eng.DllPath);       SysModule.path.append(_Eng.DllPath + NOME_BIBLIOTECA);     end); end;
  • 17. O que pode ser feito? Módulos *.pyd Executar códigos Python; Expor classes Delphi ao Python; 17
  • 18. Problemas e riscos CTypes Manifesto Pessoal Disseminar conhecimento à equipe Continuidade do projeto Python4Delphi Suporte a futuras versões 18
  • 19. Minhas impressões A ilusão de que verificação de tipos em tempo de compilação resolve todos os problemas Python Oferece alto nível de abstração Escreve-se menos código Maior produtividade Python não se põe entre o desenvolvedor e o problema 19
  • 21. Obrigado! Dúvidas? Contatos fgmacedo@gmail.com @fgmacedo www.esys.com.br 21
  • 22. 22