Category Archives: Delphi

Relacionados a ferramenta de desenvolvimento Borland Delphi

Delphi

Minha opinião sobre a compra do AnyDAC pela Embarcadero

No início a Borland criou a BDE. Apostamos nela, desenvolvemos nosso sistemas com ela e tudo estava caminhando.

Em determinado momento, decidiram que a BDE não servia mais, então simplesmente criaram outro framework preferido para acesso a dados no Delphi, o dbExpress, que era “uma nova visão” e resolvia todos os problemas anteriores.

Concordo que o dbExpress sempre foi simples e vinha evoluindo em passos de tartaruga, mas funciona de forma aceitável. Sempre usei com drivers de terceiros, pois os da Borland/Embarcadero são sofríveis. E se os drivers de terceiros funcionavam bem, fica claro uma questão de relaxo com os drivers nativos.

Além de ele servir para acesso aos bancos de dados, o dbExpress também foi estranhamente utilizado como base para todo o novo framework de comunicação DataSnap, e isso o tornou uma parte ainda mais importante no Delphi.

De repente, do nada, a Embarcadero anuncia, estrondosamente, que comprou um pacote de componentes de acesso a dados. Componente este que tem exatamente a mesma função do dbExpress. E agora? Qual mensagem isso passa para nós?

Marco Cantu, o novo responsável pelo Delphi, postou em seu blog que essa novidade é uma excelente notícia para os desenvolvedores Delphi, e que o dbExpress nunca chegou a ser o que deveria, etc.

Infelizmente pra mim é o seguinte: É mais barato para a Embarcadero comprar algo pronto que funciona do que melhorar o dbExpress. Deixando o custo de migração de um framework para outro para os clientes. Lógico que eles vão esconder isso com a desculpa de que estão oferecendo algo muito melhor do que antes. Mas e o custo de migrar? E o tempo investigo no dbExpress? O tempo que nós perdemos migrando de um framework para outro é tempo não investido em entregar valor para nossos clientes. Isso não é proteger nosso investimento como eles tanto gostam de dizer.

Talvez vocês achem que isso não é um problema pois o dbExpress certamente vai continuar por aí, assim como a BDE está. Mas duvido muito que teremos mais melhorias nele, com muita sorte talvez resolvam bugs mais graves, mas certamente tentarão forçar a migração para o AnyDAC, que é o novo preferido.

Junto com o AnyDAC, parece que contrataram o único desenvolvedor responsável pelo produto, para continuar evoluindo ele. Ok, mas e quando esse cara sair? O que vai acontecer? Porque mais cedo ou mais tarde isso pode acontecer. Será que vão investir para continuarem evoluindo o produto ou vão deixar ele parado até acharem outro para comprar, enquanto nós ficamos com o abacaxi de migrar nossos sistemas?

O que dizem é que depois que o Steve Shaughnessy deixou a Embarcadero, o dbExpress ficou sem rumo, pois ele era o cara que direcionava o desenvolvimento desta área. Quem nos garante que o mesmo não vai acontecer com o AnyDAC daqui alguns anos?

Mas o que me deixa mais inseguro com tudo isso, é que ninguém garante que este tipo de atitude não vai acontecer em outras áreas do Delphi. E se amanhã eles decidem que o DataSnap não é mais legal e compram um outro pacote de componentes “melhor”? Tudo o que investimos de tempo no DataSnap vai praticamente para o ralo.

E isso também nos leva a outro questionamento: será que realmente não era possível evoluir a VCL para multi-plataforma? Ou era difícil e caro demais? Mais fácil comprar algo pronto (FireMonkey), mesmo que capenga e ir melhorando conforme os clientes tentassem usar e começassem a reclamar porque nada funcionava?

E que fique claro que eu não sou contra evolução, mesmo que se precise quebrar uma coisa aqui ou ali, mas com uma boa razão, acho perfeitamente justificável. Mas trocar por completo o framework acho pura falta de comprometimento com os clientes.

UPDATE: O AnyDAC foi lançado pela Embarcadero com o nome FireDAC.

Delphi Geral

Presidente da Embarcadero do Brasil no TPodcast

Inicialmente a idéia era ter o Kelver Merlotti, gerente de treinamento da Embarcadero, como convidado para o TPodcast, mas depois de tantas perguntas não relacionadas a treinamento, o presidente da Embarcadero, José Eugênio Braga, se interessou em participar, para poder responder de forma mais abrangente as questões dos desenvolvedores brasileiros.

A gravação que estava agendada para ontem, foi adiada para 05/12. Portanto, continuem contribuindo com as perguntas no Google Moderator. Vamos selecionar as mais votadas até 30/11 para poder enviar a eles com antecedência.

Acho que é uma boa oportunidade de ouvir os planos da Embarcadero no Brasil, fazer reclamações, dar feedback, elogiar, etc. Participem!

Delphi Geral

Kelver Merlotti da Embarcadero no próximo TPodcast

No próximo episódio do TPodcast nosso convidado será o Kelver Merlotti, gerente de treinamento da Embarcadero do Brasil.

Ajude a escolher as perguntas que faremos a ele através do Google Moderator.

Envie suas perguntas ou vote em perguntas existentes. As mais votadas serão utilizadas durante a gravação, que deve acontecer na próxima segunda, então não deixe de participar.

Delphi

Buscando comentários sobre drivers dbExpress do Delphi

Há anos venho utilizando drivers dbExpress de terceiros (DevArt) em meus aplicativos. O motivo é simples: sempre comprei Delphi Professional, que não traz drivers para Firebird e MSSQL.

No Delphi XE2 fiz upgrade de todas as licenças para Enterprise, e esta versão já traz os drivers. Então estou considerando migrar dos drivers da DevArt para eles, e ter um produto de terceiro a menos para me preocupar.

Gostaria de saber de quem usa esses drivers se estão satisfeitos. Só preciso acessar Firebird 2.5+ e SQL Server 2005+. Agradeço qualquer comentário.

Delphi

Prova de Certificação Delphi Developer

Recentemente a Embarcadero ressuscitou o programa de certificação para desenvolvedores Delphi, conforme comentamos no episódio #03 do TPodcast.  São dois níveis, Delphi Developer e Delphi Master Developer.

Junto com a volta do programa, ela presenteou todos os donos de Delphi registrado com um voucher para fazer a prova do primeiro nível, Delphi Developer, gratuitamente. Não tinha intenção em me certificar, mas já que era free, porque não experimentar?

São 60 questões de diversas categorias como fundamentos, tipos de dados, variáveis, procedures e functions, classes e objetos, interfaces, pacotes, gerenciamento de memória, banco de dados, etc. Você tem 60 minutos para responder todas.

Eu fiz em 30 minutos e acertei 58 de 60. Infelizmente não consegui descobrir quais errei.

A prova é fácil. Eu fui praticamente lendo, selecionando e pulando para a próxima. Em média gastei 30 segundos por questão. O conteúdo é algo que todo desenvolvedor Delphi realmente deveria saber sem pensar muito. Se esse era o objetivo da prova, acho que foi alcançado.

Ao final, se você for aprovado, tem direito a baixar um certificado em PDF de 9 MB assinado pelo David I:

 

Conforme eu já comentei no TPodcast, se você é um desenvolvedor Delphi, eu acho que vale a pena investir nessa certificação. Eu certamente daria uma atenção especial ao currículo de um desenvolvedor certificado, só pelo fato de ele ter ido atrás, ter tido o interesse em fazer a prova, investido tempo nisso, etc. Master Developer certamente teria um peso bem maior, mas até esse primeiro certificado, já seria um bom diferencial.

 

Delphi Google

Prova do Google Developer Day em Delphi

Essa foi a primeira vez que decidi resolver a prova proposta pelo Google para quem quer participar do Google Developer Day.

Basicamente você tinha que escrever código para ler e extrair informações de um texto. Palavras que tem tamanho X e começam com letras específicas, palavras que tem tamanho Y e não possuem determinada letra, converter palavras em números usando uma formula maluca deles, ordenar o texto usando uma ordem de alfabeto totalmente diferente do nosso. Coisas desse tipo.

O mais interessante é que eles deram dois textos, em um deles já informando as respostas e o outro é o que você tinha que usar para responder. Isso facilitou muito.

Decidi usar TDD. Criei minha classe para fazer a leitura do texto com os métodos e propriedades que ela precisaria expor para me informar as respostas e antes de codificar a classe, já escrevi os testes baseados nas respostas do texto A. Rodei os testes e obviamente todos falharam, a partir daí comecei a codificar para cada um dos testes passar. Depois dos testes passarem, fiz um segundo projeto com interface visual, permitindo que o usuário digitasse qualquer texto em “Googlon”, que seria automaticamente processado pelo meu parser.

O bom desse tipo de abordagem é que depois você pode refatorar o código sem medo, pois está protegido pelos testes. Se caso você quebre alguma coisa, vai saber imediatamente. Tanto que quando estava escrevendo esse post, percebi que eu tinha uma lista totalmente desnecessária na minha classe. Removi e rodei os testes. Todos passaram, o que quer dizer que não quebrei nada. Não precisei sequer rodar o projeto com a interface visual para testar a mudança. Ou seja, além de tranquilidade, TDD te dá muito mais produtividade, pois você consegue alterar o código com muito mais rapidez.

As duas coisas que deram mais trabalho na solução do problema em Delphi foram:

  • Ordenar a string usando um alfabeto ordenado de forma diferente do nosso. Eu tinha certeza que existia algum algoritmo testado e comprovado para isso, pois é algo que já deve ter sido feito milhões de vezes. Perdi tempo procurando. Por fim não encontrei e fiz o meu mesmo. Ele vai comparando letra por letra e quando a letra é igual, compara a próxima. Se não existir a próxima letra em uma das palavras, ela é menor.
  • Perceber que o Delphi estava silenciosamente informando valores inválidos quando estourava a capacidade do tipo Integer. Isso eu achei bem estranho, pois esperava que fosse levantada uma exception em caso de estourar o tipo. Por algum motivo que ainda não descobri, o código que eu escrevi para converter a palavra para valor numérico não levanta nada, simplesmente informa o valor errado se você usar Integer. O que acontece é que, não sei por qual motivo, o Delphi vem por padrão com “Range Checking” desativado (valeu Cesar!). Ativando esta opção, o código quebra e você consegue perceber o problema imediatamente. Troquei para Int64 e resolveu.

Enfim, levei duas ou três horas para resolver os problemas e acho que valeu o desafio. Principalmente para ficar ainda mais atento com as limitações dos tipos (como no caso do Integer) e o tal do Range Checking desativado por padrão.

Acho que vale a pena tentar resolver, principalmente porque a prova é diferente para cada um. Esse é o link para a prova, e você pode fazer mesmo que não pretenda participar do evento. Meu projeto completo está aqui, mas recomendo você fazer o seu antes de analisar o meu. Quem sabe você não tem idéias muito melhores?

Delphi

Novidades do Delphi XE2

Algumas novidades da nova versão do Delphi foram anunciadas. As mais importantes na minha opinião são:

  • Suporte a criar aplicativos nativos para Windows 64-bit.
  • Suporte a criar aplicativos nativos para Mac OS.
  • Novo framework visual FireMonkey, com suporte a aceleração 3D.
  • LiveBindings, que vai permitir conectar qualquer elemento visual com qualquer tipo de dado.

O RAD Studio XE2 World Tour vai apresentar as novidades em mais de 30 países, incluindo obviamente o Brasil.

Também é possível se inscrever em uma promoção que vai sortear algumas cópias da ferramenta.

Minha opinião inicial, sem saber muito como cada recurso vai funcionar, é que são melhorias muito bem-vindas. Windows 64, LiveBindings e provavelmente até FireMonkey, já tenho onde aplicar. Mac OS acho que dificilmente me será útil, como já tinha comentado anteriormente.

E vocês, o que acharam? Quais são as novidades mais importantes? Deixe seus comentários aqui no post ou mande um comentário gravado em audio por e-mail, para que possamos utilizar no próximo episódio do TPodcast.

Delphi

PDF do Fast Report compatível apenas com Windows

O Fast Report é com certeza um dos principais gerenciadores de relatório usado pelos desenvolvedores Delphi. É também o que eu uso em meus sistemas.

O formato PDF, que, pra quem não sabe, significa Portable Document Format, tem como seu principal objetivo ser um formato para troca de arquivos com “formatação rica”. Ou seja, quando você usa este formato, o objetivo é saber que seu documento vai manter a aparência visual não importa em qual aplicativo ou plataforma ele for aberto.

Infelizmente, para nossa surpresa, descobrimos que não é bem assim. Pelo menos não com os PDF gerados pelo Fast Report.

Alguns dias atrás um cliente entrou em contato nos reportando que um relatório gerado em PDF pelo nosso sistema não estava sendo visualizado corretamente no MacBook. Como eu mesmo tenho um MacBook, fui testar e confirmei o problema. Realmente os textos em negrito e as imagens do relatório simplesmente não apareciam no leitor nativo do Mac OS X.

Mais um pouco de testes e percebi que o problema não era exclusivo do Mac OS, mas também acontecia no iOS (iPad/iPhone/iPod) e no Android. Ou seja, só funcionava corretamente mesmo no Windows.

Apesar do Windows ser ainda a plataforma dominante, a cada dia temos mais usuários nas outras plataformas. Principalmente iOS com com iPad/iPhone e Android, com uma infinidade de aparelhos rodando esse sistema. Por isso não era um problema que poderia ser tratado com pouca importância.

Entramos em contato com o suporte do Fast Report e a primeira resposta que obtivemos foi de que teríamos que embutir as fontes no PDF. Fizemos o que nos pediram e o PDF subiu de 40K para 900K. Isso para um simples relatório de uma página com bem pouco texto. Fizemos testes com PDF gerados por outros aplicativos, usando a mesma fonte do nosso relatório (Arial) e em todos os casos os PDF funcionavam perfeitamente nas outras plataformas sem embutir a fonte. Ou seja, alguma coisa estava errada com o PDF do Fast Report.

Pressionamos mais um pouco o suporte do Fast Report e obtivemos a seguinte resposta:

…you should also understand that pdf is not a simple format and only its more complicated version is really portable. At the moment our pdf produces documents targeted for Windows. We are making steps towards more portability, for example we are developing pdf/a version of the export, but I can’t estimate when really portable pdf export is ready.

Ou seja, os PDFs gerados pelo FR são para Windows apenas e eles não sabem quando uma versão realmente portável estará disponível.

Nós obviamente já estamos procurando outras soluções. Infelizmente temos muitos relatórios em Fast Report, e mesmo diante desse absurdo, por mais que eu gostaria, inicialmente não estamos pensando em trocar de componente de relatório, mas apenas achar uma solução melhor para gerar os PDFs.

Portanto se você usa ou está pensando em usar Fast Report, fique atento com esse detalhe, que na minha opinião, é uma falha monstruosa do componente. Principalmente por saberem disso e não alertarem os clientes, simplesmente divulgando que geram os relatórios em PDF, sem especificar que é um PDF bizarro que vai de encontro ao principal motivo pelo qual o formato foi criado.

Delphi

Padrão Publish/Subscribe em Delphi

Imagine que você tem o cadastro do mesmo cliente aberto em várias janelas usando datasets diferentes. Ao atualizar um deles, você quer disparar um refresh nos outros.

Um dos padrões que resolvem esse problema é o Publish/Subscribe. Ele permite que objetos interessados em uma mensagem, “assinem” notificações, de forma a serem avisados sempre que essa mensagem for disparada. A grande vantagem desse padrão é o desacoplamento, pois quem assina não necessariamente precisa conhecer quem publica e vice-versa.

Para utilizar esse padrão nos meus sistemas, implementei o NotificationService.

Quando um objeto deseja ser notificado sobre um assunto, ele faz uma assinatura, passando o ID da mensagem que está interessado:

GetNotificationService.Subscribe(MetodoASerExecutado, MsgUmClienteFoiAtualizado);

Onde MetodoASerExecutado é um TNotifyEvent, que já estamos carecas de usar no dia a dia em todos os componentes do Delphi. Ele será executado sempre que a mensagem MsgUmClienteFoiAtualizado for disparada por outro objeto.

Para enviar a mensagem a todos os interessados, também é muito simples, bastando o objeto que está gerando a mensagem chamar:

GetNotificationService.SendMessage(Self, MsgUmClienteFoiAtualizado);

Nesse caso, ele passa um objeto como sender, que não necessariamente precisa ser ele mesmo (Self), e o ID da mensagem (MsgUmClienteFoiAtualizado). Feito isso, o NotificationService vai varrer a lista de assinantes, identificar quem está interessado nessa mensagem e disparar todos os métodos passando o mesmo sender.

Quando o objeto interessado na mensagem for destruído ou não desejar mais receber as notificações, basta cancelar a assinatura, chamando:

GetNotificationService.UnSubscribe(MetodoASerExecutado);

Bem simples de usar e muito útil para resolver alguns problemas no dia a dia de desenvolvimento. O código fonte inclui um demo com mais detalhes.

O projeto está hospedado no BitBucket. Se quiser baixar os fontes, instale o Mercurial na sua máquina, abra uma linha de comando e digite:

hg clone https://bitbucket.org/esasse/notificationservice

Um dos motivos em publicar esse projeto foi para conhecer os recursos do BitBucket e do Mercurial como DVCS. Por isso, se tiver alguma sugestão de melhoria no código ou simplesmente quiser fazer uma versão diferenciada, faça um fork do projeto no próprio BitBucket e fique a vontade!

Para mais informações sobre esses recursos de compartilhamento de código usando BitBucket e Mercurial, veja meu post anterior.

Delphi

Usando Beyond Compare Lite do Delphi XE no TortoiseSVN

Há um bom tempo eu tenho usado a própria ferramenta de diff que acompanha o TortoiseSVN e estou satisfeito.

Mas hoje lembrei que no Delphi XE você recebe a versão Lite do Beyond Compare e decidi testar. Como não uso a integração da IDE com o SVN, decidi trocar no Tortoise.

Basta ir em Settings, External Programs, Diff Viewer, setar para External e colocar a linha de comando abaixo fazendo os devidos ajustes para a pasta onde você tem o Delphi XE instalado:

C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin\BCompareLite.exe %base %mine /title1=%bname /title2=%yname /leftreadonly

Não sei se dá pra usar para Merge também, isso vou deixar para ver depois, se gostar do diff dele.

Delphi

Delphi Conference 2010

Essa semana aconteceu em São Paulo a Delphi Conference 2010, evento gratuito realizado pela Embarcadero para apresentar novidades do Delphi e demais ferramentas da empresa. Eu já tinha participado ano passado e estive presente novamente este ano.

As palestras durante o dia todo abordaram vários temas em diferentes níveis, exatamente como já se é esperado neste tipo de evento, e acredito que são muito válidas para os desenvolvedores que não acompanham as novidades dia-a-dia pela Internet.

No meu caso como sempre estou lendo blogs, acompanhando eventos online, etc, normalmente não existe muita novidade para se ver e o que vale a pena em participar é poder encontrar os amigos, bater papo e trocar idéias com outros desenvolvedores.

Por ser um evento gratuito, torna-se ainda mais fácil de participar, e nesse ponto a Embarcadero está de parabéns. Eventos gratuitos são bem raros. Então se você é desenvolvedor Delphi é um evento que eu certamente recomendo a participação.

Quis comentar aqui para apoiar o evento, pois acho importante termos um evento como esse no Brasil e não queria deixar passar em branco. Para um review um pouco mais detalhado, vejam o que o Leonel Togniolli publicou no ITWeb.

 

Delphi

Novidades do Delphi XE (2011)

A nova versão do Delphi foi lançada oficialmente. Ela é parte do pacote RAD Studio XE, que incluí os produtos Delphi XE, C++ Builder XE, Delphi Prism XE e RadPHP XE.

Comentarei aqui apenas sobre o Delphi XE, pois é o que eu uso. Sobre os outros produtos a única coisa que notei, mas nem sei se é novidade nessa versão, é terem removido o nome Delphi da IDE para PHP. Finalmente corrigiram esse erro. Era muito estranho “Delphi for PHP”.

Então o que realmente há de novo no Delphi?

A página oficial das novidades relaciona os itens e tentei investigar e comentar cada um, mas como muito poucos detalhes foram divulgados, ficou meio difícil.

DataSnap

  • Novos wizards para criação de clientes e servidores: É útil, pois com certeza facilita a criação de projetos que dependem de vários componentes e acaba ajudando quem não está acostumado com a tecnologia e não saberia bem como começar um projeto do zero.
  • Suporte a protocolos Javascript, REST, HTTP e HTTPS: HTTP é bem básico, não tinha ainda? O resto é bem vindo.
  • Filtros para compactação e criptografia dos dados: Essencial.
  • “User roles” para autenticação: Não encontrei detalhes, mas aparentemente é apenas uma interface para autenticação de acesso. Isso realmente quero saber mais detalhes.

Cloud Computing

  • Componentes para acesso a Windows Azure: É interessante ver a Embarcadero abraçando uma tecnologia ainda tão pouco utilizada, além do que os serviços suportados (blobs, queues e tables) estão todos disponíveis via REST, o que torna a necessidade destes componentes um pouco duvidosa, pois em teoria são apenas requisições HTTP. De qualquer forma, quem pretende trabalhar com Azure já teve a vida um pouco facilitada.
  • Distribuição fácil para Amazon EC2: Mais um recurso que acredito atender uma parcela muito pequena de usuários. Procurei e não achei detalhes. Sempre achei que o Amazon EC2 fossem servidores padrão e para fazer um deploy fosse apenas questão de transferir os arquivos. Preciso entender melhor quais são essas facilidades incluídas para dar uma opinião melhor sobre o recurso.

Integração com Subversion

  • Esse recurso já comentei que não pretendo utilizar. Além de código fonte, trabalho com muito mais arquivos do que adiciono no projeto do Delphi, então prefiro controlar tudo usando apenas uma ferramenta, que é o TortoiseSVN. Parece também que a integração vai suportar apenas as tarefas mais comuns como import, update, commit e show log. Apesar de esses serem os mais usados, eu com certa frequência uso outros e teria que manter o TortoiseSVN para eles.

Alta Produtivida e “Code Intelligence”

  • Melhoria na geração de código a partir de modelos: Pra quem usa modelagem visual é bom, eu não uso.
  • Geração de diagrama de sequência: Idem acima.
  • Melhorias no formatador de código: Até hoje não consegui usar o formatador do Delphi porque ele nunca funcionou do jeito que eu queria. Confesso que nunca investi muito tempo para customizar ele, mas nessa segunda versão pretendo dar uma nova chance a ele. Porém já li alguns comentários negativos nos forums.
  • Melhoradas pesquisas e IDE Insight: Para pesquisar em código fonte uso o Grep Search do GExperts, que sempre foi muito superior ao da IDE. O IDE Insight é um recurso que gostei muito quando foi anunciado, mas acabei nunca usando. Já conheço praticamente todos os atalhos para as funções que uso na IDE. Mas também não encontrei detalhes sobre o que foi melhorado.
  • Novos atalhos para navegar em código modificado: Atalhos são sempre bem-vindos, mas não achei detalhes.

Linguagem, Compilador e Bibliotecas

  • Atualizações na VCL, RTL e STL: Aqui provavelmente são bugs corrigidos e pequenas melhorias, pois não encontrei detalhes. Só não sei o que é STL.
  • Expressões regulares na RTL: Isso é bem legal, expressões regulares são bem úteis principalmente para validação de dados.
  • Melhorias em TStrings e Date/Time: Isso deveria estar incluido já no tópico de atualizações na VCL/RTL, colocado separadamente parece que estão querendo apenas ter mais items. De qualquer forma, TStrings é uma das classes mais importantes do Delphi e tem que estar mesmo em constante melhoria.
  • Suporte para abas internas na OpenTools API: Melhorias na OTAPI são importantes para permitir melhor integração de ferramentas de terceiros na IDE.
  • Melhoria na performace do compilador: Velocidade do compilador é importante pois impacta diretamente na produtividade do desenvolvedor, então este é outro ponto que deveria mesmo receber atenção em todos os releases.

Até aqui são as reais melhorias no produto. Pare um pouco e analise novamente as novidades acima. Na minha opinião, tem pouca coisa que justifique o upgrade até aqui. Não achei nenhuma melhoria na linguagem por exemplo.

Acho que a Embarcadero também percebeu isso. E então resolveu adicionar uma série de ferramentas de terceiros no pacote:

FinalBuilder

Ferramenta para automatizar seus builds. Simplesmente fantástica. Sou usuário há anos e recomendo a todo mundo. Já até palestrei sobre ele em algum evento sobre Delphi. Automatizar os builds na minha opinião é totalmente essencial para qualquer desenvolvimento, mesmo que você trabalhe sozinho. E por ser a minha ferramenta preferida para isso, fiquei muito satisfeito em ver ela adicionada ao Delphi.

Por outro lado, é um atrativo que para mim não faz diferença, pois eu já tenho as licenças e pago independente do Delphi. Talvez eu consiga usar a licença do Delphi ao invés de pagar por uma separada? Ainda não sei.

Importante observar que está disponível apenas na versão Enterprise ou acima.

AQTime

Ferramenta para analisar a performance do seu código, facilitando descobrir os gargalos, permitindo otimizações mais precisas mostrando onde realmente está o problema. AQTime é o profiler lider há anos entre os desenvolvedores Delphi. Já baixei trials várias vezes e é uma ferramenta que sempre quis adotar no meu dia-a-dia, mas até hoje fui adiando. Agora ninguém terá desculpas, ter uma ferramenta dessa na mão e não usar é um tremendo desperdício. Disponível inclusive na versão Pro do Delphi.

CodeSite

Ferramenta para adicionar logs no seu código. Ele é concorrente do SmartInspect, outra ferramenta que uso há anos e é minha ferramenta preferida para log. Também considero ferramenta essencial no desenvolvimento, principalmente para entender o comportamento do seu aplicativo internamente. Muitas vezes você acha que sabe o que ele está fazendo, mas vai ficar surpreso quando começar a logar tudo e monitorar.

Beyond Compare

Ferramenta para comparar arquivos. Não considero muito importante essa adição, mas ele também sempre foi popular entre os desenvolvedores Delphi. Pra mim outras ferramentas free sempre me atenderam o suficiente. Eles provavelmente adicionaram o BC ao pacote devido a integração com Subversion, para terem uma boa ferramenta para diff e merge. Melhor isso do que desenvolver alguma coisa simples demais.

IP*Works

Pacote de componentes para suporte a protocolos IP. Concorrente direto do Indy, que está meio largado, mantido pelo trabalho voluntário de alguns poucos corajosos. Esse pacote só conheço de nome, mas parece ser bom.

Conclusão

Na minha opinião essa versão veio muito fraca de novidades no produto, mas totalmente recheada de ferramentas extremamente úteis de terceiros. Se você somar tudo, é um upgrade que acaba valendo a pena, principalmente se você ainda não usa Finalbuilder ou AQTime.

Eu farei o upgrade por vários motivos:

  • Gosto de usar e fornecer as melhores e mais novas ferramentas para minha equipe.
  • Quero começar a usar novos recursos do DataSnap.
  • Quero começar a usar o AQTime.
  • Estou fazendo minha parte para garantir a manutenção e continuidade do produto que utilizo e dependo diariamente.
Delphi

Vem aí o Delphi XE

Delphi XE é o nome oficial do “Delphi 2011″. Agora os produtos da Embarcadeiro estão recebendo o XE no nome e as próximas versões serão Delphi XE2, Delphi XE3, etc. Um pouco sobre essa nova forma de nomear as versões foi explicada pelo Tim Del Chiaro em seu blog.

Apesar das mudanças no nome, o que realmente importa são as melhorias no produto pra decidir se vale a pena ou não investir numa atualização. Hoje foi publicado o primeiro vídeo mostrando algumas das novidades. Prometeram publicar novos vídeos a cada terça-feira.

Você pode assistir o vídeo na página RAD Studio XE Sneak Preview.

Até agora foi mostrado integração com o Subversion e melhoria da modelagem visual de objetos.

Apesar de eu usar Subversion o tempo todo, não sinto nenhuma necessidade em integrar na IDE. É uma novidade legal e acho até que votei nela no QC, mas com o tempo foi perdendo a relevância para mim. Acho que o TortoiseSVN atende tão bem que provavelmente eu nem usaria essa integração na IDE. Inclusive controlo muitos arquivos não reconhecidos pela IDE do Delphi e preciso ver como a integração lidaria com isso.

Modelagem visual de objetos foram raras as vezes que usei e não tenho muito interesse. Nunca me achei mais produtivo usando isso, talvez porque quase sempre eu conheço muito bem o código que estou mexendo.

Vou aguardar os próximos vídeos, mas por enquanto vou ficando com o Delphi 2010 mesmo.

E vocês, o que acharam?

Apple Delphi iPhone

Apple passa uma rasteira em muitos desenvolvedores

Já faz algum tempo, mas como eu comentei antes aqui sobre o iPhone OS 4, queria comentar isso também.

Junto com o anúncio do iPhone OS 4, que trouxe excelentes novidades, como o tão desejado multi-tasking, veio também um grande banho de água gelada da Apple em muitos desenvolvedores.

A partir do iPhone OS 4.0, os termos para os desenvolvedores de aplicativos para essa plataforma determinam que todos os aplicativos devem ser desenvolvidos em Objective-C, C, C++ ou JavaScript. Aplicativos desenvolvidos em outras linguagens ou que usem qualquer camada adicional são proibidos.

Essa decisão causou revolta geral entre os desenvolvedores, principalmente os que não usam as ferramentas da Apple (Xcode e Objective-C), mas também teve gente defendendo.

Qual a justificativa da Apple? De uma forma bem simplificada, eles querem que os aplicativos para iPhone e iPad sejam sempre nativos, garantindo assim uma suposta qualidade nos apps da plataforma. Mas todo mundo sabe que app nativo não garante nenhuma qualidade.

Muita gente acha que foi um ataque direto a Adobe, que estava pra lançar uma ferramenta cross-platform para rodar apps em Flash no iPhone e outros celulares. Mas isso também diminui as chances de vermos um Delphi para iPhone, algo que não parecia muito longe de acontecer, uma vez que o próximo Delphi já vai compilar para MacOS. Inclusive ficou bem claro que a Embarcadero tinha planos nessa direção, pois o Allen Bauer chegou a publicar a revolta em seu blog, mas depois retirou.

Mas nem tudo parece estar perdido. A Novell não reduziu os esforços no MonoTouch, que permite desenvolver aplicativos para iPhone e iPad usando C# e .NET. Inclusive eles já lançaram uma nova versão com suporte ao iPhone OS 4 e estão confiantes que não terão problemas com a Apple.

Mas esse assunto ainda vai dar muita polêmica. A Apple já está sendo investigada por essa mudança e pode enfrentar processos na justiça.

Todo mundo adora detonar a Microsoft, mas agora que a Apple é dona dessa plataforma tão bem sucedida (iPhone OS), não vejo muita diferença nas atitudes dela para garantir a continuidade da liderança.

Delphi

Delphi no MacOS: Será que precisamos disso?

Todo mundo que acompanha as notícias sobre Delphi já deve estar sabendo que a próxima versão trará um compilador nativo para MacOS. Não é usando Mono e Delphi Prism, como já é possível hoje, é um novo compilador. A IDE vai continuar no Windows, mas poderá compilar para MacOS.

Que a plataforma Mac está crescendo um pouco, ninguém tem dúvida, provavelmente em grande parte devido ao iPhone, que é um aparelho fantástico, eu mesmo tenho um. Mas quantos de vocês já tiveram uma demanda realmente importante para portar seus sistemas para MacOS? Sim eu já tive alguns clientes querendo rodar meus produtos no Mac, mas posso contar nos dedos. Certamente nada que justifique uma versão para essa plataforma.

Estamos falando de sistemas empresariais, que deve ser o que a maioria aqui no Brasil desenvolve usando Delphi. Para nós, se precisarmos suportar qualquer plataforma além do Windows, vejo muito mais sentido usar web, e já estaremos suportando não só Mac, mas também Linux, Chrome OS, telefones, PS3, etc.

Além disso, quem não é desenvolvedor Delphi certamente não vai usar o Delphi para fazer algo no Mac. Eles tem a IDE Xcode da Apple, que é muito poderosa, gratuita e mais “nativa” da plataforma. Então os clientes potenciais que restam realmente são apenas os clientes que já usam Delphi no Windows. Portanto dificilmente isso trará uma quantidade significante de novos usuários para o Delphi.

Lógico que é um recurso legal de ter, só não podemos esquecer que custa dinheiro para desenvolver e manter isso, dinheiro esse que poderia estar sendo melhor utilizado no Delphi Win32, que usamos diariamente e que infelizmente ainda tem muitos bugs a serem corrigidos.

A Embarcadero faz pesquisas anuais para saber o que os usuários querem no Delphi, então estou curioso para saber o que vocês acham disso. Vocês acham que esse recurso vai ser útil? Alguém aqui pretende usar? Meus usuários são diferentes e eu não estou percebendo a necessidade? Talvez consigam me fazer mudar de idéia, ou confirmar meu receio de que quase ninguém vai usar isso pelo menos por aqui.

Delphi

Pesquisa Delphi 2010

Todo ano a Embarcadero vem fazendo uma pesquisa entre os desenvolvedores para definir o futuro do Delphi. Ela é longa, mas muito importante, e todos usuários Delphi deveriam dedicar um tempo para responde-la com calma.

Eu já respondi. Se você é desenvolvedor Delphi, não deixe de fazer, pois o futuro do produto está muitas vezes diretamente ligado ao seu futuro e/ou de sua empresa.

Link para a pesquisa:
http://www.surveymonkey.com/s.aspx?sm=XrKr27_2bmLfybzGzZi_2brsBQ_3d_3d

Delphi

Utilizando XML Data Binding do Delphi

O recurso XML Data Binding do Delphi permite gerar classes tipadas a partir de arquivos XML, facilitando em muito quando se precisa ler e escrever arquivos XML.

Se não me engano, anteriormente esse recurso não estava disponível na versão Professional do Delphi, mas agora está, pelo menos no Delphi 2009.

Eu usei recentemente e tinha colocado na minha lista de assuntos para blogar, mas o Diego Garcia acabou de publicar um video detalhado de como utilizar esse recurso.

Vale a pena conhecer, pois mais cedo ou mais tarde todo mundo acaba precisando manipular XML.

Delphi Microsoft

Uma semana de Windows 7 RTM

3660039011_073d6a4fb7_oEstou rodando Windows 7 RTM (versão final) na minha máquina principal há pouco mais de uma semana. Ela foi liberada no dia 06/08 para assinantes da TechNet e foi dessa forma que baixei.

Da primeira vez que testei o Windows 7, foi a versão 64-bits, mas desta vez optei pela versão 32, pois a 64 ainda tem algumas poucas incompatibilidades e nenhum benefício aparente até o momento.

A ótima notícia é que pelo menos na versão 32, o Delphi 2009 funciona perfeitamente, não existindo o problema do debugger que eu já tinha reportado aqui. Agora só falta pesquisar como tirar proveito dos novos recursos do Windows 7 nos nossos aplicativos. A “jump list” da nova barra de tarefas é a primeira candidata.

O Google Chrome também está perfeito e rodando sem nenhum problema.

Esses foram os únicos aplicativos que me deram problema da primeira vez e agora estão 100% na versão RTM 32-bits.

Devo dizer que a instalação do Windows foi perfeita e a performance é realmente superior ao Vista e XP, incrível o que eles conseguiram fazer.

Para não dizer que tudo são flores, o único problema que tive até agora com o Windows 7 é que não consigo mais ligar meu notebook a minha TV LCD. Ainda não consegui resolver, e toda vez que conecto a TV diz que a imagem esta em modo incompatível. É uma TV Samsung Full HD 40 polegadas. Se alguém tiver qualquer dica, é bem vinda. Minha placa de video é uma ATI Mobility Radeon X1600.

Apesar disso o Windows 7 é um upgrade totalmente recomendado, inclusive para os fanáticos pelo XP. Podem ir sem medo. Deixem o XP para trás, por favor! :)

Delphi

Video em Português com as Novidades do Delphi 2010

Mais um video produzido pela Embarcadero com as novidades do Delphi 2010, mas desta vez em português.

Delphi

Novidades do Delphi 2010

A Embarcadero publicou um primeiro video com algumas das novidades que o RAD Studio 2010 vai trazer.

Finalmente teremos um formatador de código, e o atalho para disparar ações na IDE (IDE Insight) também é muito legal. Os data visualizers é outra novidade bem vinda para facilitar o debug. Espero nunca mais ver datas como números durante o debug.

Um ponto negativo do video é que usaram um miserável Windows XP para o demo, credo. Perderam uma boa oportunidade de mostrar a IDE rodando no Windows 7.

Alguém precisa dar uma camiseta nova para o David I. :)