Desenvolvimento – Andreano Lanusse | Tecnologia e Desenvolvimento de Software http://www.andreanolanusse.com/pt Andreano Lanusse blog - artigos, tutoriais e vídeos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e técnicas de programação Tue, 18 Dec 2018 16:05:44 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.5.8 Benchmark de desempenho desde o Delphi 2010 até Delphi XE6 http://www.andreanolanusse.com/pt/benchmark-de-desempenho-desde-o-delphi-2010-ate-delphi-xe6/ http://www.andreanolanusse.com/pt/benchmark-de-desempenho-desde-o-delphi-2010-ate-delphi-xe6/#comments Mon, 09 Jun 2014 04:51:36 +0000 http://www.andreanolanusse.com/pt/?p=4379 Thomas Grubb do blog Words from a Delphi CodeSmith fez um trabalho fantástico publicando uma série de 12 artigos onde ele compara o desempenho do Delphi desde a versão 2010 até o XE6. A principal motivação do Thomas com este benchmark foi validar a qualidade, desempenho e estabilidade do Delphi ao longo dos anos, especialmente agora que […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Thomas Grubb do blog Words from a Delphi CodeSmith fez um trabalho fantástico publicando uma série de 12 artigos onde ele compara o desempenho do Delphi desde a versão 2010 até o XE6. A principal motivação do Thomas com este benchmark foi validar a qualidade, desempenho e estabilidade do Delphi ao longo dos anos, especialmente agora que a Embarcadero diz ter dado foco a estas áreas no Delphi XE6.

Em seus testes ele incluiu VCL, FireMonkey, Win32, Win64, Android, iOS, OSX e componentes de terceiro.

A série completa é composta de 12 artigos, abaixo segue o link para todos os artigos que estão em inglês.

Novamente, parabéns ao Thomas pelo fantástico trabalho e tempo investido para gerar todos estes resultados. Certamente a comunidade Delphi agradece..

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/benchmark-de-desempenho-desde-o-delphi-2010-ate-delphi-xe6/feed/ 4
Delphi XE5 Update 2 – muitas correções no FireMonkey para iOS, Android e compilador http://www.andreanolanusse.com/pt/delphi-xe5-update-2-muitas-correcoes-firemonkey-para-ios-android-e-compilador/ http://www.andreanolanusse.com/pt/delphi-xe5-update-2-muitas-correcoes-firemonkey-para-ios-android-e-compilador/#comments Sat, 28 Dec 2013 05:57:21 +0000 http://www.andreanolanusse.com/pt/?p=4358 Mais uma correção para o Delphi XE5 e C++Builder XE5, o Update 2 foi disponibilizado e traz muitas correções para bugs em diversas áreas, principalmente no FireMonkey, seja para Android, iOS, Windows ou Mac. O Update 2 está disponível para os usuários registrados através dos links abaixo. Vale lembrar que é obrigatório desinstalar seu Delphi […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Mais uma correção para o Delphi XE5 e C++Builder XE5, o Update 2 foi disponibilizado e traz muitas correções para bugs em diversas áreas, principalmente no FireMonkey, seja para Android, iOS, Windows ou Mac.

O Update 2 está disponível para os usuários registrados através dos links abaixo. Vale lembrar que é obrigatório desinstalar seu Delphi XE5 para instalar o XE5 Update 2.

Abaixo a lista completa com todos os bugs corrigidos.

Reference No

Summary

Component/s

[Indy] Access Virolation occues on OnValidatePeerCertificate for IPPeerCommon bug[HTTPS,SSL] 3rd Party

120473

[iOS] SOAP fails in iOS when using SSL (“IOHandler value is not valid.”) Blocker

119873

TCameraComponent causes memory leak in Win32 Blocker

115697

TDump command crashes on DLL’s Command Line Tools

112826

TDump.exe shows strange output Command Line Tools

100328

TDump crashes on the x64 shell32.dll Command Line Tools

110887

TDump fails on some ‘foreign’ .dlls Command Line Tools
Delphi XE5 cannot build OSX applications from the command line Compiler
[FM Mac OSX 10.9] Compile error XMLDocument using SDK 10.9 Compiler, Compiler\C++

120686

[Mavericks 10.9] C++Builder XE4 does not support OS X 10.9 Compiler, Compiler\C++, Compiler\C++\BCC
Throwing a exception in virtual member function returning an AnsiString causes an AV and an abend under certain circumstances, in 32-bit C++ application Compiler, Compiler\C++, Compiler\C++\BCC, Compiler\C++\BCC\Back End

120476

[iOS ARM][Android] E2581 Backend error: invalid linkage type for global declaration Compiler, Compiler\Delphi
[dcc(ios/a)arm] Backend Error compiling constructor for generic classes Compiler, Compiler\Delphi

118897

method overload resolution fails when passing @ parameter to overloaded methods mixing Pointer and specific pointer parameters. Compiler, Compiler\Delphi
ShowMessage/Message Alerts not working in iOS 7 Simulator Compiler, Compiler\Delphi
[dccaarm][dcciosarm] Implicit finally block doesn’t execute if the exception is not catch in except block. Compiler, Compiler\Delphi
Crash by declaration error when declaring class function in record type Compiler, Compiler\Delphi
Internal Error URW1154 calling TValue.From() of System.Rtti Compiler, Compiler\Delphi

72147

Invalid section table entries on empty sections Compiler, Compiler\Delphi

119197

subtraction of sets changes its params Compiler, Compiler\Delphi, Compiler\Delphi\CodeGen
Integer computation error upon mixing Byte and Integer Compiler, Compiler\Delphi, Compiler\Delphi\CodeGen
When Currency is used in a generic record type you get an internal compiler error G1239 IN Zephyr and G1232 in XE4 Compiler, Compiler\Delphi, Compiler\Delphi\Generics

118815

Generic method inlining (part 2) Compiler, Compiler\Delphi, Compiler\Delphi\Generics

118866

Cannot perform FillChar on Currency variables – E2197 Constant object cannot be passed as var parameter Compiler, Compiler\Delphi, Compiler\Delphi\Messages

93738

Internal Error URW1136 Compiler, Compiler\Delphi, Compiler\Delphi\Messages

118929

Totally broken package compiler for an iOS device Compiler, Compiler\Delphi, Compiler\Delphi\Packages/Libs

118523

[dcc32] Command-line build fails for user account with non-ASCII characters Compiler, Compiler\Delphi, IDE\Build System
DataSnap : Memory leaks caused by TFDJSONDataSetsBase.FOwnsDataSet Data, Data\DataSnap
DataSnap: HTTP request may be broken when sending Delta Data, Data\DataSnap
[C++][DataSnap]Exception raised when trying to execute server method through proxy on OS X 10.9 Data, Data\DataSnap

116417

[ISAPI] DataSnap Server as an ISAPI DLL get a 48KB limitation when receiving POST data Data, Data\DataSnap
[OS X][DataSnap][FireDAC] Unable to find static library: DataSnapFireDAC.a Data, Data\DataSnap, Data\FireDAC
[DataSnap] TX509CertificateIndy.Verify is not operation as specification. Data, Data\DBX
Unable to load libsqlib.dylib Data, Data\DBX
DBX memory leak when running queries on NEXTGEN platforms Data, Data\DBX
FireDAC FDConnection does not autocommit Data, Data\FireDAC
FDExplorer resizing causes lost display of description column message Data, Data\FireDAC
Building a Mobile Application that contains a TFDPhysIBDriverLink component raises an error Data, Data\FireDAC
[SQLite] It can’t encipher by the specified encrypt parameter, so it can’t setup except aes-256 Data, Data\FireDAC
If XML containing MBCS is saved by SaveToStream, It is not copied correctly.. Data, Data\FireDAC
If XML containing MBCS is copied to TFDMemtable, Exception class EDOMParseError occurs Data, Data\FireDAC
FireDAC memory leak when running queries on NEXTGEN platforms Data, Data\FireDAC

119995

“Not editing” error reported with LiveBindings when calling ApplyUpdates on TAdapterBindSource Data, Data\LiveBindings

118633

[iOS device/Android] With TSoapConnection, TClientDataset.ApplyUpdates raises “Exception in safecall method” in iOS device and Android Data, Data\Midas

118633

[iOS device/Android] gdb reports wrong file after step into Debugger
Debugging not working with a FireMonkey Mobile app on Nexus 7 2013 Debugger
[Delphi] Access Violation when Inspecting or Adding a Watch with a function where an array is passed in as a var or const Debugger
Function call evaluation on C++ OSX apps is broken when using Mavericks Debugger, Debugger\Evaluator

120506

[OSX 10.9] Mavericks Modules Debug Window doesn’t show framework dylibs anymore Debugger, Debugger\Views

119777

ReqMulti.pas has been removed from the product File Delivery, Internet
[FMX/Android] TEdit causes SIGSEG if SetFocus method is called inside Forms’s OnCreate event. FireMonkey
[iOS] Sharing popup size is calculated wrong FireMonkey

120259

Bugs in creating forms with TForm.CreateNew() – i.e. without a designer. FireMonkey
Orientation switch breaks app or bars user after device activated again (after sleep) FireMonkey

119176

[iOS7 iPad Simulator] App crash in iOS 7 iPad Simulator FireMonkey

118770

Bad text rendering on Android FireMonkey
Poor application performance on Nexus 10 FireMonkey
[iOS] TMemo – sometimes when using LongTap to bring up the context menu on iOS, the cursor and context menu is moved up with one line FireMonkey

118554

[iOS Device] iOS App crashes on iOS 6.1.3 (iPad) when Showing Forms – but not on Simulator FireMonkey
TabletMasterDetail app takes over 10 seconds to load on Nexus 10 FireMonkey

120566

When adding a TBindNavigator, an Access Violation occurs FireMonkey

118799

2D Empty app does not start on Samsung Galaxy Tab 3 FireMonkey, FireMonkey\3D Components

120517

TMemo.ScrollLayout could cause access violation FireMonkey, FireMonkey\Components

120827

[iOS7] With TMemo, unintentional letter appears when entering with Japanese keyboard. FireMonkey, FireMonkey\Components
Date Picker mobile code snippet TCalendarEdit – decrements the date when you don’t change the date in the picker FireMonkey, FireMonkey\Components
Using German ß (00DF; LATIN SMALL LETTER SHARP S) in TListBoxGroupHeader raises EArgumentOutOfRangeException FireMonkey, FireMonkey\Components
On HTC one X(4.1.1) cannot be typed a set of numbers if the keyboard has the vktPhonePad type FireMonkey, FireMonkey\Components

120515

TMemo.GoToTextEnd crashes at program startup and doesn’t move the horizontal scrollbar FireMonkey, FireMonkey\Components

120517

TMemo.ScrollLayout could cause access violation FireMonkey, FireMonkey\Components

119442

Mobile Code Snippets – Web Browser needs to be updated. Web Browser Top Margin should be 0 FireMonkey, FireMonkey\Components
Problem changing the KeyboardType among different TEdit FireMonkey, FireMonkey\Components

120136

[Android 4.3] TListView component scrolling performance is very slow (Samsung GALAXY Note 3) FireMonkey, FireMonkey\Components
Listview scrolling performance slow on Samsung Galaxy Note 3 FireMonkey, FireMonkey\Components
Custom TabIcon support missing for iOS 7 FireMonkey, FireMonkey\Components

119442

[iOS7 device] Web Browser positioned incorrectly in iOS7 FireMonkey, FireMonkey\Components

120007

[Android, iOS] Viewport3D does not fully display on a mobile form with TabControl FireMonkey, FireMonkey\Components

118859

[iOS] TMedia Volume cannot be changed in iOS FireMonkey, FireMonkey\Components
TWebBrowser misaligned when Align set to alClient FireMonkey, FireMonkey\Components

119891

[Android] Edit.SetFocus in Form.OnShow() will cause app crash when entering text FireMonkey, FireMonkey\Components
TabControl does not fit the screen completely widthwise when it has exactly 6 TabItems FireMonkey, FireMonkey\Components

119821

[Android] Performance of Delphi Apps on Google Nexus 10(Android 4.3) FireMonkey, FireMonkey\Components

119539

[iOS] TMediaplayer pause (stop) on iOS is rewinding FireMonkey, FireMonkey\Components

119447

[Android] Location demo on some Android devices not working FireMonkey, FireMonkey\Components
Korean input problem with Tmemo on OS X FireMonkey, FireMonkey\Components

119192

[Android] Uppercase national characters are drawn bad on Android FireMonkey, FireMonkey\Components

119162

[Android] password is shown on virtual keyboard FireMonkey, FireMonkey\Components
TMemo very slow on Nexus 10 FireMonkey, FireMonkey\Components

119703

Stretched property of TText control does not work properly when TText is a child component for some other component, not a form FireMonkey, FireMonkey\Components

118859

[iOS] TMedia Volume cannot be changed in iOS FireMonkey, FireMonkey\Components

120023

[Android] TGestureManager crash on app close. FireMonkey, FireMonkey\Runtime
Throwing an exception and not catching it during any FMX component in an event have unexpected result FireMonkey, FireMonkey\Runtime

119450

[iOS7] vertical touch co-ordinate is several pixels lower than the actual touch position. FireMonkey, FireMonkey\Runtime

119444

[iOS7 device] Keyboard does not completely disappear when hidden in iOS7 FireMonkey, FireMonkey\Runtime
[NEXUS 10] SpeedButton – it takes too long until OnClick event is triggered FireMonkey, FireMonkey\Runtime

118910

Keyboard shift/ctrl+arrow keys not working for FireMonkey objects on a form FireMonkey, IDE, IDE\FireMonkey Designer
iOS 7 apps showing iOS 6 styled native controls (pickers/keyboard) on iOS Simulator FireMonkey, PAServer
FM C++ app with Mac OS X 10.9 SDK fails to compile IDE, IDE\Build System, IDE\Deployment, PAServer

120029

[Android] lower case of file path in deployedassets.txt IDE, IDE\Deployment
When starting RAD Studio XE5 (with android support installed) as the C++Builder personality it REMOVES the android SDK setting in the registry. IDE, IDE\General

118105

Android apps deployed to emulator will not function, display black screen IDE, Install

118830

Error detected (LME288), [ilink32 Error] Error: Unable to perform link Linker

116888

Strange linker crash Linker
Throw exception crash C++ Win64 app RTL, RTL\C++, RTL\C++\Exception Handling
Wrong behavior when executing code from a catch section on Mac OS RTL, RTL\C++, RTL\C++\Exception Handling
ARC Using Unsafe objects in records are not working properly RTL, RTL\Delphi
FM application crash at init in Android devices when the language is set to Norwegian (Norsk Bokmål) RTL, RTL\Delphi

118726

Application crash with raising exception class Segmentation fault (11) RTL, RTL\Delphi, RTL\Delphi\Other
SOAP: Double precision return values not correct for Android RTL, RTL\Delphi, SOAP

119872

SOAP AsDateTime implementation is wrong SOAP

119741

[Android] Segmentation fault consuming web service SOAP

76053

C++ templates are translated as “Vorlagen” Translation

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe5-update-2-muitas-correcoes-firemonkey-para-ios-android-e-compilador/feed/ 6
Delphi XE5 Update 1 – correção para problemas sérios no ClientDataSet http://www.andreanolanusse.com/pt/delphi-xe5-update-1-correcao-problemas-serios-clientdataset/ http://www.andreanolanusse.com/pt/delphi-xe5-update-1-correcao-problemas-serios-clientdataset/#comments Tue, 29 Oct 2013 03:47:43 +0000 http://www.andreanolanusse.com/pt/?p=4343 Foi disponibilizado o Update 1 para o Delphi XE5 e C++Builder XE5. Este update corrige vários em problemas em várias, entre elas FireDAC, FireMonkey, Debugger, IDE e principalmente no ClientDataSet. Abaixo uma lista dos erros do ClientDataSet que foram corrigidos, literalmente críticos e que inviabilizavam qualquer migração para XE5. A lista completa de correções está […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Foi disponibilizado o Update 1 para o Delphi XE5 e C++Builder XE5.

Este update corrige vários em problemas em várias, entre elas FireDAC, FireMonkey, Debugger, IDE e principalmente no ClientDataSet. Abaixo uma lista dos erros do ClientDataSet que foram corrigidos, literalmente críticos e que inviabilizavam qualquer migração para XE5.

Referência no Quality CentralResumoComponente
118951Numeric Filters on a TClientDataSet do not filterData, DataMidas
119028Linker error: TXMLTransformProvider libraries missingData, DataMidas
119164Attempting to use MIDAS (eg TClientDataset) in the simulator on iOS7 failsData, DataMidas
119432TClientDataSet.Locate method fails to work properly with XE5 midas.dllData, DataMidas
Application stops when driver is missingData, DataFireDAC
[Phys]-300 on connecting using Oracle / MSSQL / etc drivers using Arch SKU at design-timeData, DataFireDAC

A lista completa de correções está disponível neste link.

Links para download

Você pode baixar apenas o Update 1 (arquivo menor) ou ISO completo e atualizado já incluindo o Update 1:

  • Update 1 installer – 279.5MB (atualiza uma instalação existente do Delphi XE5 e C++Builder XE5)
  • ISO com Update 1 – 4.7GB (instalador completo do Delphi XE5 e C++Builder XE5, já incluindo o Update 1)

É isso, divirta-se agora.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe5-update-1-correcao-problemas-serios-clientdataset/feed/ 2
Delphi XE5 para Android – anúncio oficial http://www.andreanolanusse.com/pt/delphi-xe5-android-anuncio-oficial/ http://www.andreanolanusse.com/pt/delphi-xe5-android-anuncio-oficial/#comments Wed, 11 Sep 2013 13:01:34 +0000 http://www.andreanolanusse.com/pt/?p=4332 Embarcadero acaba de anunciar o Delphi XE5, a grande novidade é o suporte a desenvolvimento para Android. Desde que se iniciou o desenvolvimento do FireMonkey o objetivo foi sempre permitir o desenvolvimento para outras plataformas além do Windows, o que começou com o suporte a Mac e iOS, e agora para Android. O compilador ARM […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Embarcadero acaba de anunciar o Delphi XE5, a grande novidade é o suporte a desenvolvimento para Android. Desde que se iniciou o desenvolvimento do FireMonkey o objetivo foi sempre permitir o desenvolvimento para outras plataformas além do Windows, o que começou com o suporte a Mac e iOS, e agora para Android.

O compilador ARM é baseado na arquitetura LLVM o qual facilitou a possibilidade de se ter o novo compilador Delphi para outras plataformas.

Nas últimas semanas foram publicados diversos artigos na internet sobre esta nova versão, mais precisamente comentando sobre a possibilidade de se compilar o mesmo código para iOS e Android. No mundo mobile a experiência do usuário é um dos fatores criticos para o sucesso da sua aplicação, assim sendo precisamos tomar cuidado com o design da aplicação e não achar que só pelo fato de se ter uma única tela para diferentes plataformas é a solução para se ter produtividade, longe disso.

Recentemente comentei aqui no blog sobre o Android Studio, IDE da Google para desenvolvimento Android, com o lançamento do Delphi XE5 os desenvolvedores ganham mais uma opção para o desenvolvimeto de aplicações para Android que traz uma abordagem diferente e com o “objetivo” de trazer maior produtividade através de um único código em desenvolvimento para iOS e Android.

Hoje podemos destacar os seguintes IDE para Android:

Entre outras novidades para Android estão um conjunto de funcionalidades que permite o deploy direto no emulador, debug da aplicação, suporte da RTL, componentes de acesso a dados, etc. Muito similar ao suporte para iOS. Além disso o suporte a iOS 7 através de estilos customizados.

Foram incorporados uma série de funcionalidades relacionadas ao acesso a serviços REST, como os componentes TRestClient, TRestRequest e TRestResponse, mecanismos de autenticação e ferramenta para debug que pode auxiliar durante o uso de desenvolvimento com REST.

Em resumo o foco é o desenvolvimento mobile, agora com o suporte a Android e a possibilidade de compartilhar o mesmo código utilizando o novo compilador ARM e FireMonkey.

É hora de testar e ver se o Delphi XE5 irá atender suas expectativas.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe5-android-anuncio-oficial/feed/ 29
Android Studio preview – Lançada a nova IDE da Google http://www.andreanolanusse.com/pt/android-studio-preview-lancada-a-nova-ide-da-google/ http://www.andreanolanusse.com/pt/android-studio-preview-lancada-a-nova-ide-da-google/#comments Fri, 24 May 2013 03:26:26 +0000 http://www.andreanolanusse.com/pt/?p=4316 A Google na semana passada anunciou no Google I/O o Android Studio, seu mais novo ambiente de desenvolvimento para Android baseado no IntelliJ IDEA. O Android Studio é FREE e pode ser usado em Windows, Linux e Mac, o preview inicial já foi disponibilizado para download aqui. Eu já me antecipei e instalei no meu Mac, durante […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

A Google na semana passada anunciou no Google I/O o Android Studio, seu mais novo ambiente de desenvolvimento para Android baseado no IntelliJ IDEA.

O Android Studio é FREE e pode ser usado em Windows, Linux e Mac, o preview inicial já foi disponibilizado para download aqui. Eu já me antecipei e instalei no meu Mac, durante os últimos 2 dias dediquei um tempo para brincar com a ferramenta e estou bem impressionado.

Atualmente a maioria dos desenvolvedores utilizam o o Eclipse juntamente com o plugin ADT (Android Development Toolkit plugin) para desenvolver aplicativos para Android, o que traz uma grande vantagem, usufruir de todos os recursos disponíveis no mundo Eclipse.

Eu venho usando a algum tempo o Eclipse para desenvolver aplicativos Android, certamente tem muito espaço para implementar melhorias e novos recursos específicos para Android.

O Android Studio é construído sobre a versão Community do IntelliJ e agora com atuação em conjunto da equipe de desenvolvedores da Google imagine o que eles serão capazes de fazer. Só de usar a ferramenta algumas poucas horas, posso dizer que o editor de código é sensacional e vai além dos recursos já implementados em outras IDEs, o Designer é fantástico e traz um recurso que nos permite ter um preview da aplicação em vários dispositivos, incluindo tablets. Além disso podemos importar os projetos desenvolvidos em Eclipse para o Android Studio.

Android Studio multi device preview

Android Studio multi device preview

Assista o vídeo abaixo e você terá uma boa ideia do que estou falando.

Vou ficando por aqui e divirta-se com o Android Studio.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/android-studio-preview-lancada-a-nova-ide-da-google/feed/ 2
Migração de sistemas legado ou mal estruturados – Parte 2 http://www.andreanolanusse.com/pt/migracao-de-sistemas-legado-ou-mal-estruturados-parte-2/ http://www.andreanolanusse.com/pt/migracao-de-sistemas-legado-ou-mal-estruturados-parte-2/#comments Wed, 22 May 2013 05:16:13 +0000 http://www.andreanolanusse.com/pt/?p=4264 Com a diversidade de tecnologias nos dias de hoje, está cada vez mais difícil decidir qual utilizar e principalmente saber por quanto tempo a tecnologia escolhida nos dará o suporte necessário, esse artigo aborda a avaliação de tecnologias e fornecedores, assim como plataformas.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

primeiro artigo da série sobre migração de sistemas legados ou mal estruturados gerou vários comentários, recebi centenas de e-mails com perguntas e sugestões, o qual agradeço a todos que até aqui contribuíram, o feedback só vem a ajudar na evolução dos artigos sobre o tema, continuem publicando seus comentários.

Com a diversidade de tecnologias nos dias de hoje, está cada vez mais difícil decidir qual utilizar e principalmente saber por quanto tempo a tecnologia escolhida nos dará o suporte necessário, vamos neste artigo abordar a avaliação de tecnologias e fornecedores, assim como plataformas.

Avaliando tecnologias e fornecedores

Hoje temos inúmeras tecnologias, desde Open Source, gratuitas e comerciais, algumas suportadas por grandes fabricante de software e outros por aqueles que chamamos membros da comunidade, há também aquelas com muito pouco suporte e que tem sua evolução comprometida ou até mesmo já foram descontinuadas.

Escolher tecnologias sólidas e que tenha o suporte de empresa ou grupos comprometidas com sua evolução é fundamental. Obviamente todos tendem a escolher o que é gratuito, lembre-se que nada nada é grátis, tudo tem um custo que mais cedo ou mais tarde você estará pagando.

A avaliação da tecnologia está diretamente ligada a arquitetura a ser adotada em seu novo projeto. A evolução tecnologica nos últimos 10 anos foi tanta que se tornou impossível ter uma solução baseada em apenas uma tecnologia, fornecedor, plataforma e muito menos uma linguagem, nos levando a uma maior cautela na hora da escolha.

Além de uma avaliação técnica é SUPER importante avaliar diversos aspectos da empresa, como por exemplo:

  • Quais os clientes desta empresa? No website da empresa deve constar casos de sucesso, use seu network e valide os clientes desta empresa e o que eles pensam da tecnologia.
  • O que os clientes falam ou pensam da empresa? Um bom lugar para saber isso são os foruns de discussão das empresas, a maioria tem um e se não tiver, procure no Google. Procure se certificar das informações que você venha encontrar com profissionais que conheçam esta empresa.
  • Qual o RoadMap? Procure saber junto a empresa qual o RoadMap para as respectivas tecnologias que você venha a utilizar, além disso se possível uma conversa para saber mais a fundo sobre este RoadMap, eu diria que tecnologias que não tenham um horizonte definido para os próximos 5-10 anos, devem ser descartadas.

Esses são alguns aspectos que considero importante em uma avaliação, obviamente não são os únicos, entretanto se ao avaliar uma empresa e ela for mal nesses 3 pontos, você já pode descartá-la.

Estamos conectados

Integrações entre sistemas é algo que não foi inventado hoje, nossos usuários não estão mais sentados e obtendo informação no computador à sua frente e muito menos esperando o próximo dia de trabalho. A diversidade de plataformas, dispositivos móveis, notebooks e etc. gerou a necessidade de se ter a informação disponível por toda a parte.

Este cenário mudou a forma com que desenvolvemos software, o modelo Cliente/Server se tornou obsoleto e ineficaz, modelos de arquitetura distribuída surgiram no final da decada de 90, a Microsoft iniciou com a arquitetura DNA, surgiram os WebServices, SOA se tornou o padrão, os servidores de aplicação Java ganharam espaço, hoje falamos em REST e Cloud vem para nos ajudar a escalar e distribuir nossa arquitetura.

Pare por 5 minutos e pense nas arquiteturas e tecnologias mencionadas no parágrafo anterior, coloque isso em uma perspectiva para os próximos 10 anos, reflita sobre o que você já desenvolveu até os dias de hoje e se pergunte “O que eu faria diferente daqui pra frente?”.

Arquitetura baseada em serviços

Desenvolver soluções de software e não pensar em uma arquitetura baseada em serviços é como dar um tiro no pé e estar condenado ao fracasso no curto prazo. A razão porque digo isso é muito simples, estamos conectado através dos mais diversos dispositivos e a informação tem de estar disponível em todos eles, separar camada de negócio e apresentação é fundamental, sendo assim, uma boa arquitetura é chave e pode definir o rumo dos seus negócios.

Desktop ou Web

Vamos direto ao ponto aqui, assumir que suas aplicações de negócio devam ser aplicativos desktop é um retrocesso, se você pretende migrar suas aplicações legadas para a mesma plataforma que elas estão, neste caso de Desktop para Desktop, melhor não começar, fique onde está.

Obviamente aplicações de backend, processamento de dados que rodam nos seus servidores (geralmente em modo console), estes são aplicativos desktop e estes devem continuar assim, entretanto seu frontend não deve mais estar baseadas em interfaces desktop, esta é minha recomendação.

A Web evolui demais e hoje não temos as limitações do passado com browsers, uma solução Web traz flexbilidade para a empresa, reduz seu custo operacional, abre as portas para novos modelos de comercialização de software (SaaS) e muito mais, pretendo abordar em detalhes este tema em outro artigo.

Mobile

Em algum momento você terá de suportar uma ou todas as três plataformas móveis do mercado (iOS, Android e Windows Phone), em um curto espaço de tempo você vai saber com base no feedback dos clientes ou na necessidade do mercado que sua solução atende.

Existe uma grande discussão entre apps nativas ou web para dispositivos móveis, isso vai depender muito do tipo de aplicativo que você deve desenvolver. Inicialmente desenvolva apps nativas, pois ainda existem limitações com relação a web apps em Mobile, em alguns casos será melhor utilizar um modelo híbrido onde a sua app nativa irá chamar páginas webs, o qual é uma boa opção quando você precisa de maior flexibilidade.

Um aviso importante, não decida que suas apps para mobile serão todas web porque simplesmente você quer economizar com a assinatura anual da Apple de U$ 99 ou a da Google para Android que custa U$ 30, chamamos isso de economia porca.

Em breve pretendo publicar um artigo sobre o tema apps nativas vs web e seus respectivos pros e cons.

E agora?

Reuna sua equipe e converse com eles sobre essa potencial migração, compartilhe com eles a ideia de uma arquitetura distribuida, o suporte a dispositivos móveis, pergunte quais os benefícios e problemas que uma nova arquitetura deveria trazer.

Esta conversa com o time é uma oportunidade para aprender mais sobre os problemas existentes, o que pode ser melhorado, quais as vantagens competitivas que uma migração pode trazer para a empresa e assim por diante.

Faça esse exercício, enquanto isso vou preparando o próximo artigo.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/migracao-de-sistemas-legado-ou-mal-estruturados-parte-2/feed/ 4
Solução para quem não tem Mac para desenvolver e testar iOS apps http://www.andreanolanusse.com/pt/solucao-para-quem-nao-tem-mac-para-desenvolver-e-testar-ios-apps/ http://www.andreanolanusse.com/pt/solucao-para-quem-nao-tem-mac-para-desenvolver-e-testar-ios-apps/#comments Mon, 06 May 2013 03:23:57 +0000 http://www.andreanolanusse.com/pt/?p=4302 O macincloud é um serviço que permite você usar Mac nas nuvens, umas das grandes utilidades é possibilitar criar e testar apps no para iOS utilizando um Mac sem fazer um grande investimento.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

A maioria dos desenvolvedores interessados em desenvolver para iOS se depara com os investimentos que devem ser feitos, de cara você precisa de um Mac e um iPhone ou iPad, isso pode lhe custar pelo menos US$ 1000, entretanto existe uma solução que pode lhe ajudar a adiar esse investimento.

O macincloud é um serviço que nos permite usar Mac nas nuvens, umas das grandes utilidades é possibilitar que o desenvolvedor crie e teste apps para iOS utilizando um Mac sem fazer um grande investimento inicial. Com o macincloud você aluga um Mac e paga por mês, o custo do serviço pode variar de US$ 20 até US$ 49 no modelo de assinatura, existem outro planos que você pode conhecer mais aqui.

Vale lembrar que não é possível fazer o deploy dos aplicativos desenvolvidos no device conectado ao seu computador utilizando o manincloud. Apesar de testarmos no simulador, em algum momento será necessário testar o aplicativo no device, ou seja, em algum momento você precisará de um  Mac e iPhone/iPad.

Para aqueles que usam Delphi para desenvolver para iOS, lembre-se que você precisa solicitar ao pessoal do macincloud que instale o PA Server, ele não está instalado por padrão.  O mesmo se aplica para aqueles que usam Oxygene, que deverão instalar o server correspondente ao Oxygene.

O Mac fornecido pelo macincloud traz uma série de aplicativos e ferramentas já instaladas, abaixo a lista de ferramentas, frameworks e aplicativos que você pode usar para desenvolver aplicativos para iOS e Android, usando C#, Java, HTML, JavaScript, além de outros IDE’s como Xamarin Studio, NetBeans e Unity3D.

  • iOS SDK (Xcode 4.6.1) with Application Loader and iOS Simulator
  • Android SDK and NDK (Eclipse is available)
  • Corona SDK from Corona Labs (previously Ansca Mobile)
  • Xamarin Studio (NEW!)
  • Titanium Studio from Appcelerator
  • GameSalad
  • Mono, MonoDevelop, MonoTouch
  • Phonegap
  • Google App Engine SDK
  • Stencyl
  • ShiVa3D Authoring Tool from StoneTrip
  • YoYo Games GameMaker Lite
  • Parse Cloud Code (NEW!)
  • Node.js
  • Heroku Toolbelt for OSX
  • MoSync
  • Sencha
  • Gideros Studio from Gideros Mobile
  • Unity3D
  • NetBeans
  • LiveCode from RunRev

Enfim, o macincloud é um serviço muito legal e com um custo benefício excelente.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/solucao-para-quem-nao-tem-mac-para-desenvolver-e-testar-ios-apps/feed/ 3
Delphi XE4 – Conheça as novidades para iOS e mais http://www.andreanolanusse.com/pt/delphi-xe4-conheca-as-novidades-para-ios-e-mais/ http://www.andreanolanusse.com/pt/delphi-xe4-conheca-as-novidades-para-ios-e-mais/#comments Mon, 22 Apr 2013 13:34:15 +0000 http://www.andreanolanusse.com/pt/?p=4281 Conheça todas as novidades do Delphi XE4, as mudanças que começam a ser feitas na linguagem e irá impactar futuramente, o InterBase para iOS, FireDac e finalmente as novidades do desenvolvimento com Delphi para iOS

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Semana passada publiquei aqui no blog que o Delphi XE4 estava para sair, hoje foi lançado o Delphi XE4 e o RAD Studio XE4, o foco desta versão é o desenvolvimento para iOS, traz algumas outras novidades em outras áreas e uma mudança importante em relação ao Delphi Prism.

Agile Brazil 2013 - Eu apoio

Antes de começar quero convidar a todos para o Agile Brazil 2013, o maior evento sobre metodologias ágeis do Brasil que acontece do dia 26 à 28 de junho em Brasília. Este evento eu recomendo de olho fechado, seja você desenvolvedor, gerente de produto, líder de equipe, gerente de projeto ou da área de software deve comparecer. Mais informações acesse este link onde escrevi mais detalhes sobre o evento.

 

Voltando ao tema, pela primeira vez na história do Delphi tivermos um novo release em tão pouco espaço de tempo, há 8 meses atrás foi lançado o Delphi XE3. A principal razão para este lançamento é o suporte a iOS.

Vamos então a um resumo das novidades do Delphi XE4 e a mudança no RAD Studio XE4.

Desenvolvimento para iOS no Delphi XE4

O suporte a iOS está de volta, originalmente foi incorporado no Delphi XE2 e removido no XE3, agora no XE4 traz uma série de mudanças, entre elas:

  • O FireMonkey para iOS sofreu diversas alterações para atender e funcionar melhor em iOS
  • O compilador para iOS é o baseado no novo compilador do Delphi para iOS e não mais no FreePascal
  • O deploy e teste das aplicações podem ser feitos diretos no Mac sem a necessidade de fazer export de projetos como anteriormente
  • O acesso via dbExpress a banco de dados SQLite e InterBase em iOS
  • Uso do ClientDataSet em iOS
  • RTL para iOS
  • Novo DataSnap Client para iOS que suporta TCP/IP, HTTP, HTTPS e REST

Existe uma série de classes, componentes e propriedades específicas para tratar as mais diversas particularidades do iOS e que não estarão disponíveis para Windows e Mac obviamente.

Aproveitando, curta a comunidade Developer Point Brasil, essa comunidade é bem bacana e traz diversos assuntos sobre desenvolvimento de software.

Novo compilador Delphi para Mobile

O compilador Delphi para aplicações mobile é 100% novo e traz diversas mudanças que até aqui são pertinentes ao desenvolvimento mobile com Delphi, entretanto é bom você começar a se preparar porque futuramente essas mudanças serão levadas para o desenvolvimento Desktop.

Todas essas mudanças tem como objetivo modernizar a linguagem, na minha opinião o Delphi precisa disso para mesmo que isso venha trazer incompatibilidade com código legado.

No novo compilador para mobile só existe um tipo de String, o próprio String, não há mais:

  • AnsiString
  • WideString
  • AnsiChar e PAnsiChar
  • PWideChar
  • OpenString
  • ShortString

No novo compilador:

  • Strings são imutáveis (constantes), ou seja, você não poderá manipular String como se fosse um array ( A[1] := ‘S’) e passará a usar TStringBuilder
  • String começam a partir da posição zero, você pode usar $ZEROBASEDSTRINGS para mudar este comportamente no seu código, mas não para a RTL para mobile

Além disso várias mudanças relacionadas ao Automatic Reference Counting, em outras palavras o mecanismo para destruir objetos que afeta o desenvolvimento mobile e irá afetar o desenvolvimento para desktop, este tema é extenso e vou voltar a falar nele em breve, enquanto isso de uma lida neste link.

Perguntas em Aberto

Várias pessoas me perguntaram qual será a política de atualização do Delphi quando uma nova versão do iOS for disponibilizada. Se nada mudou na Embarcadero com relação a isso, muito provavelmente a resposta será.

Caso você tenha comprando a manutenção (Software Assurance) do Delphi, você estará recebendo as atualização da versão atual e novas versões no período de um ano. Caso a Embarcadero não atualize na versão atual, você receberá a nova versão que muito provavelmente terá a atualização.

Enfim, pergunte novamente a Embarcadero sobre isso, pois sem dúvida este é um fator que pode impactar na sua decisão.

Também me perguntaram sobre a performance das aplicações geradas com Delphi para iOS quando comparadas a aplicações geradas com XCode.

Eu não tenho como responder a essa pergunta neste momento e explico porque. As aplicações iOS feitas com Delphi tem como run-time o FireMonkey, o qual tem um esquema próprio para a renderização da aplicação e isso faz uma grande diferença, já aplicações desenvolvida com XCode usam diretamente o iOS SDK.

Será necessário fazer testes para saber se a diferença ou não, caso você venha fazer esse tipo de teste, por favor me avise, tenho interesse em saber o resultado.

Adeus Delphi Prism

Primeira mudança esta relacionada ao RAD Studio que anteriormente trazia 4 IDEs, onde você desenvolvia para Delphi, C++, PHP e .NET. A partir do RAD Studio XE4 o conhecido Delphi Prism não estará mais incluido, com isso o RAD Studio fica composto apenas do Delphi, C++Builder e HTML5 Builder.

O Delphi Prism surgiu em 2009 para substituir o Delphi.NET como parte de um acordo entre Embarcadero e RemObjects, a Embarcadero licenciava a tecnologia da RemObjects e vendia como Delphi Prism.Com o fim do acordo o Prism que é o Oxygene continua no mercado através da RemObjects, os usuários do Prism passarão se assim quiser a usar Oxygene e continuarão tendo todo o suporte da RemObjects o qual continua evoluindo a ferramenta. A RemObjects publicou um comunicado oficial sobre isso em seu blog.

Para finalizar este tópico, vale lembrar que o Oxygene não é apenas uma ferramenta para desenvolvimento .NET, nos dias de hoje já suporta desenvolvimento nativo para iOS, Android e Windows Phone, o que leva a ser um concorrente do Delphi.

Download do ISO do Delphi XE4 e C++Builder XE4

Neste link você pode baixar o ISO completo que inclui as versões XE4 do Delphi e C++Builder ou o trial através do instalador web aqui.

Conclusão

Para os interessados em desenvolver apps para iOS o Delphi XE4 está ai, depois do Delphi XE2 e as inúmeras críticas dos clientes e comunidade, todos esperam que a Embarcadero venha com o Delphi XE4 disponibilizar um produto sólido, de qualidade e maduro para iOS.

Faça os testes você mesmo e comente aqui no blog, em futuros artigos estarei trazendo algumas avaliações feitas por mim mesmo. Aguarde!

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe4-conheca-as-novidades-para-ios-e-mais/feed/ 44
Agile Brazil 2013 – Eu estarei lá e você? http://www.andreanolanusse.com/pt/agile-brazil-2013-eu-estarei-la-e-voce/ http://www.andreanolanusse.com/pt/agile-brazil-2013-eu-estarei-la-e-voce/#comments Wed, 17 Apr 2013 17:07:06 +0000 http://www.andreanolanusse.com/pt/?p=4277 Conheça um pouco mais do Agile Brazil 2013, o maior evento sobre Agile no Brasil que sem dúvida é o lugar para você aprender mais sobre Agile, colaboração, trabalho em equipe e como entregar projetos no prazo e com melhor qualidade

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Se você está buscando melhorar a colaboração, trabalho em equipe e entregar projetos sejam eles de software ou qualquer outro mais rápidos e com melhor qualidade, reserve um tempinho e participe do Agile Brazil 2013, que será realizado em Brasília entre os dias 26 e 28 de junho.

Agile Brazil é o evento mais importante sobre Agile no país, o lugar certo para aqueles que querem aprender e aprimorar seus conhecimentos em metodologias ágeis, já participei de outras edições e recomendo, vale muito a pena. Ano passado tive a oportunidade de palestrar no evento, este ano enviei algumas propostas de palestra e estão sendo avaliadas pela equipe do evento. Alias você pode ver todas as palestras enviadas e que estão sendo avaliadas neste momento, muito legal esse nível de transparência do evento.

O evento traz diversas trilhas com palestras e palestrantes de alto nível, abordando diversas metodologias e tecnologias, como não poderia ser diferente a Rally Software está patrocinando o evento e toda sua equipe estará lá, incluindo eu.

Outra coisa bem bacana que antecede o evento é a Virada Ágil, nela você poderá fazer diversos treinamentos a um custo muito baixo, mas muito baixo mesmo que chegam a 50% de desconto, você não irá encontrar esses preços fora do Agile Brazil, então aproveite. Mais informações sobre a Virada Ágil aqui.

Não importa seu cargo é importante participar deste evento, seja desenvolvedor, tester, analista, líderes de equipe, gerentes, etc. O evento traz um benefício muito grande para os participantes e o que você aprender poderá ser aplicado de imediato no dia-a-dia de trabalho da sua equipe ou de você mesmo.

As inscrições para o evento já estão abertas, quanto mais cedo você se inscrever mais barato será, então aproveite e se inscreva já.

Agile Brazil 2013 - Eu apoio

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/agile-brazil-2013-eu-estarei-la-e-voce/feed/ 1
Delphi XE4 – Anúncio oficial http://www.andreanolanusse.com/pt/delphi-xe4-anuncio-oficial/ http://www.andreanolanusse.com/pt/delphi-xe4-anuncio-oficial/#comments Wed, 17 Apr 2013 04:05:43 +0000 http://www.andreanolanusse.com/pt/?p=4274 Saiba em primeira mão o que traz o Delphi XE4 que será lançado na próxima semana, novidades como o novo compilador ARM pra Delphi que permitirá compilar aplicações Delphi para iOS usando FireMonkey, conheça mais neste artigo.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Geralmente você espera uma nova versão do Delphi por volta do mês de Agosto, esse ano será diferente. Delphi XE4 será lançado semana que vem.

Eu acabo de saber que na próxima semana será feito o anúncio oficial do Delphi XE4, que será parte do RAD Studio XE4 e irá trazer o C++Builder XE4 e HTML5 Builder.

Uma mudança importante que teve início ano passado e está relacionado ao Prism (Delphi for .NET) terá efeito no RAD Studio este ano, eu acredito que você não irá ver o Prism como parte do RAD Studio, obviamente a REM Objects continuará desenvolvendo o compilador e sua integração com o Visual Studio, assim sendo você terá que comprar diretamente deles.

Aproveitando, curta a comunidade Developer Point Brasil, essa comunidade é bem bacana e traz diversos assuntos sobre desenvolvimento de software.

Quais as novidades do Delphi XE4?

Delphi XE4 traz o novo compilador ARM pra Delphi, o qual irá permitir compilar aplicações Delphi para iOS usando FireMonkey. O projeto deste novo compilador começou anos atrás, eu tive a oportunidade de falar sobre este projeto para muitos desenvolvedores Delphi. O compilador é realmente novo e um começo que irá permitir que a linguagem Delphi evolua para outras plataformas de uma maneira muito mais fácil, você já deve ter ouvido a promessa da Embarcadero em suportar Android em breve.

O suporte iOS será melhor do que você viu no XE2 e certamente você está esperando algo muito melhor. Algo muito importante nesta nova versão é o foco em iOS, tentar fazer com que tudo e todos os componentes estejam disponíveis para essa plataforma é o caminho errado, assim sendo no XE4 você terá o que é necessário e específico para iOS quando estiver desenvolvimento projetos para iOS, isso é bom.

Obviamente a Embarcadero irá promover o FireDAC como um novo recurso do XE4, mesmo que ele tenha sido lançado no XE3. Como faz pouco tempo é um bom recurso pra ser divulgar, mesmo porque FireDAC é muito melhor que dbExpress. Eu escrevi um artigo sobre o FireDAC e você pode ler aqui.

O InterBase para iOS certamente estará nesta versão, mesmo que você já possa usar SQLite em dispositivos iOS, existe muito espaço para o InterBase neste mercado, especialmente para desenvolvedores que querem proteger seus dados em dispositivos móveis.

Upgrade e preço

A Embarcadero irá disponibilizar os SKU e opções de upgrade em breve. No início deste ano eles mencionaram disponibilizar o suporte para iOS como um add-on, talvez você possa vir comprar este add-on, vamos esperar para saber.

Na próxima quarta-feira irá ocorrer um webinar para apresentar esta nova versão.

Em breve eu estarei publicando aqui nos blog meu comentários e review sobre esta nova versão.

Acesso o artigo com as novidades sobre o Delphi XE4 aqui.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe4-anuncio-oficial/feed/ 5
Client/Server está morto – Repense seus novos projetos http://www.andreanolanusse.com/pt/client-server-esta-morto-repense-seus-novos-projetos/ http://www.andreanolanusse.com/pt/client-server-esta-morto-repense-seus-novos-projetos/#comments Thu, 11 Apr 2013 04:19:19 +0000 http://www.andreanolanusse.com/pt/?p=4270 Client/Server dominou o mundo do desenvolvimento, milhares de aplicações até hoje atendem as necessidades para as quais elas foram projetadas, entretanto a internet revolucionou e a pelo menos 10 anos mudou a forma com que desenvolvemos software.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Ao longo dos anos o modelo Client/Server dominou o mundo do desenvolvimento, milhares de aplicações até hoje funcionam perfeitamente e atendem as necessidades para as quais elas foram projetadas, entretanto este modelo já não suportas as nossas necessidades.

Durante a pesquisa 2013 feita aqui no blog fiz a seguinte pergunta “Na sua opinião as aplicações desenvolvidas nos dias de hoje deveriam adotar qual arquitetura?”, o resultado foi o seguinte.

Pesquisa 2013 - Client/Server, multi-camada, etc.

Não seria necessário fazer essa pergunta para descobrir isso, eu pelo menos venho recomendando arquitetura multi-camada ou distribuída a pelo menos uns 10 anos.

Enfim, se você hoje pretende iniciar novos projetos comece a pensar em uma arquitetura distribuída e baseada em serviços para que assim, você possa integrar suas soluções a outras plataformas.

SOA e REST são modelos de arquitetura que eu hoje recomendaria, tendo uma preferência para REST, mas não ignorado SOA, que pode vir a ser necessário dependendo das necessidade da solução a ser implementada.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/client-server-esta-morto-repense-seus-novos-projetos/feed/ 3
Delphi for iOS? Mas quais os planos dos desenvolvedores Delphi para mobile/tablet? http://www.andreanolanusse.com/pt/delphi-for-ios-mas-quais-os-planos-dos-desenvolvedores-delphi-para-mobiletablet/ http://www.andreanolanusse.com/pt/delphi-for-ios-mas-quais-os-planos-dos-desenvolvedores-delphi-para-mobiletablet/#comments Sat, 30 Mar 2013 08:20:34 +0000 http://www.andreanolanusse.com/pt/?p=4266 Em breve a Embarcadero pretende relançar o suporte a desenvolvimento para iOS (iPad/iPhone) no Delphi, que provavelmente vai se chamar Delphi for iOS, o objetivo é trazer uma plataforma estável e diferente da que veio no Delphi XE2. Segundo rumores este lançamento pode acontecer agora em Abril antecipando o lançamento do Delphi XE4. No início do ano fiz […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Em breve a Embarcadero pretende relançar o suporte a desenvolvimento para iOS (iPad/iPhone) no Delphi, que provavelmente vai se chamar Delphi for iOS, o objetivo é trazer uma plataforma estável e diferente da que veio no Delphi XE2. Segundo rumores este lançamento pode acontecer agora em Abril antecipando o lançamento do Delphi XE4.

No início do ano fiz uma pesquisa aqui no blog com várias perguntas, foram mais de 1500 respostas e a partir desta semana pretendo publicar os resultados, começando por este artigo.

A grande maioria dos leitores do meu blog, utilizam ou já utilizaram Delphi, na pesquisa eles representaram 87%.

Os participantes da pesquisa responderam a seguinte pergunta “Quais os planos da sua empresa em 2013 para desenvolvimento de aplicações para mobile e tablet?”, esta pergunta foi feita para cada plataforma mobile: Android, iOS, Windows Phone, Surface e BlackBerry.

Abaixo o resultado:

  • Podemos notar que Android é a preferência com 45%, 16% estão em dúvida e apenas 5% não pretendem desenvolver para Android.
  • iOS vem em seguida com 28%, entretanto 24% dizem não ter certeza se irão desenvolver para iOS em 2013 e 11% não tem nenhum plano.
  • Windows Phone vem na terceira posição com apenas 13% e Surface (Tablet da Microsoft) bem atrás.
  • BlackBerry como já previsto, apenas 3% pretende desenvolver, 11% na dúvida e 40% não querem nem pensar.

Pesquisa 2013 - Plataforma mobile para desenvolvimento

Não é possível desenvolver aplicações para Android com Delphi hoje, o suporte a Android está no RoadMap. Infelizmente ninguém pode esperar, Android já está no mercado a mais de 4 anos e a  Google oferece gratuitamente todo um ambiente de desenvolvimento baseado em Eclipse usando Java, com vários emuladores, plugins e documentação, abaixo links onde você pode encontrar mais informações:

Já o desenvolvimento para Windows Phone e Microsoft Surface sua melhor opção é o Visual Studio, já na versão Express que é gratuita você pode desenvolver tanto para Windows Phone como Microsoft Surface, você pode obter todas as ferramentas, exemplos e documentação através dos links abaixo:

Vou ficando por aqui e até o próximo artigo.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-for-ios-mas-quais-os-planos-dos-desenvolvedores-delphi-para-mobiletablet/feed/ 7
FireDAC (AnyDAC) – O que isso representa para os desenvolvedores Delphi e C++ http://www.andreanolanusse.com/pt/firedac-anydac-o-que-isso-representa-para-os-desenvolvedores-delphi-e-c/ http://www.andreanolanusse.com/pt/firedac-anydac-o-que-isso-representa-para-os-desenvolvedores-delphi-e-c/#comments Sun, 03 Mar 2013 04:50:32 +0000 http://www.andreanolanusse.com/pt/?p=4257 Recentemente a Embarcadero adquiriu o AnyDAC, conjunto de componentes para a acesso a banco de dados infinitamente superior ao dbExpress. Como resultado desta aquisição, o AnyDAC foi renomeado para FireDAC e acaba de se tornar parte do Delphi e C++Builder XE3, os usuários da edição Enterprise podem baixar o FireDAC gratuitamente, os usuários do Delphi Professional […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Recentemente a Embarcadero adquiriu o AnyDAC, conjunto de componentes para a acesso a banco de dados infinitamente superior ao dbExpress. Como resultado desta aquisição, o AnyDAC foi renomeado para FireDAC e acaba de se tornar parte do Delphi e C++Builder XE3, os usuários da edição Enterprise podem baixar o FireDAC gratuitamente, os usuários do Delphi Professional podem adquiri-lo por US$ 399.

Por muito tempo o até então AnyDAC permitiu aos desenvolvedores Delphi e C++ que usavam a edição Professional conectar a bancos de dados como Oracle, SQL Server, Sybase, Informix e outros, algo que até então somente era possível com as edições Enterprise e Architect.

Eu tenho muito o que dizer sobre o AnyDAC agora então FireDAC, no início do ano passado dediquei pelo menos 1 mês avaliando o então conhecido AnyDAC e agora vocês sabem o porque :).

Eu fiquei bem impressionado com a quantidade de recursos que o AnyDAC oferecia e a superioridade em relação ao dbExpress. FireDAC é tudo aquilo que o dbExpress tentou ser e nunca foi, eu digo isso porque FireDAC permite que você desenvolva aplicações para múltiplos bancos de dados de forma RAD, sem ter que fazer gambiarras e jeitinhos que eram necessários com o dbExpress, como por exemplo: re-mapeamento dos TFields quandos eles eram persistidos na aplicação, acesso a vários outros banco de dados, muito mais simples o desenvolvimento, acesso a recursos específicos de cada banco e muito mais. Abaixo uma lista com alguns recursos suportados pelo FireDAC.

  • Para todos os bancos de dados
    • Recuperação automática da conexão com o banco
    • Suporte unificad a eventos do banco de dados
    • Arquitetura simplificada, isso quer dizer que você não precisará mais colocar 3 componentes (Query + ClientDataSet + Provider) para simplesmente ter um cursor bi-direcional
    • Performance muito superior ao dbExpress
    • TADMemTable – dataset em memória e mais rápido que o TClientDataSet
    • Muito mais fácil migrar aplicações que ainda usam BDE para FireDAC, o que era mais trabalhoso quando se tentava migrar para dbExpress
  • Oracle
    • SELECT FOR UPDATE – não precisar mais de gambiarras como forçar UPDATE para travar um registro
    • Abortar execução de Query – quem não precisa disso?
    • Suporte a colunas ROWID – facilita e torna mais rápida a edição e refresh de dados
    • Suporte a RETURNING clause para refresh mais rápido dos dados – você não precisa mais fazer um novo select para obter o valor de um campo que foi atualizado por uma trigger
    • e muito mais…
  • Firebird
    • Suporte a RETURNING clause para refresh mais rápido dos dados
    • Trusted authentication
    • Suporte a serviços do banco de dados – backup, restore, validate, security, etc
    • Abortar execução de Query
  • PostgreSQL
    • Isso mesmo, agora suporte nativo a PostgreSQL
    • e muito mais…
  • SQL Server
    • Suporte a execução de comandos batch que retornam múltiplos result sets – Batch commands with multiple result sets
    • Abortar execução de Query
    • e muito mais
  • MySQL
    • Suporte a colunas AUTO_INCREMENT e retorno do último valor inserido
  • Drivers para vários bancos de dados compatíveis com Windows, Mac e iOS

Essa é uma pequena lista do que o FireDAC oferece, você pode saber mais sobre outros recursos do FireDAC, acessando a lista de recursos do AnyDAC através deste link.

FireDAC é sem dúvida uma solução melhor, sem dúvida vale a pena migrar suas aplicações de BDE ou dbExpress para FireDAC, muito recursos que os desenvolvedores Delphi e C++ vinham pedindo por muito tempo, estão agora presentes no FireDAC.

Claro que todos estão perguntando “O que irá acontecer com o dbExpress?”, o BDE morreu mas continua sendo usado nos dia de hoje:), o dbExpress ainda não está morto e acho que irá levar um tempo para que a Embarcadero oficialmente deixe de suporta-lo, entretanto não há porque manter duas tecnologias de acesso a banco de dados no Delphi, como eu já disse FireDAC é muito superior ao dbExpress, assim sendo o futuro é FireDAC.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/firedac-anydac-o-que-isso-representa-para-os-desenvolvedores-delphi-e-c/feed/ 35
Update 2 para Delphi XE3 e C++Builder XE3 http://www.andreanolanusse.com/pt/update-2-para-delphi-xe3-e-cbuilder-xe3/ http://www.andreanolanusse.com/pt/update-2-para-delphi-xe3-e-cbuilder-xe3/#comments Fri, 25 Jan 2013 02:23:38 +0000 http://www.andreanolanusse.com/pt/?p=4248 Foi disponibilizado o Update 2 para Delphi XE3 e C++Builder XE3, a maioria das correções no compilador 64-bit do C++, a lista completa de correções está disponível aqui. Você terá de desinstalar o seu Delphi e C++Builder XE3, mesmo que você tenha aplicado o Update 1. Caso você tenha instalado o Platform Assistant faça a […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Foi disponibilizado o Update 2 para Delphi XE3 e C++Builder XE3, a maioria das correções no compilador 64-bit do C++, a lista completa de correções está disponível aqui.

Você terá de desinstalar o seu Delphi e C++Builder XE3, mesmo que você tenha aplicado o Update 1. Caso você tenha instalado o Platform Assistant faça a desinstalação, pois o Update 2 traz atualizações para o mesmo.

Para efetuar o download do Update 2, visite a página de usuários registrados conforme os links abaixo:

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/update-2-para-delphi-xe3-e-cbuilder-xe3/feed/ 2
Dica – MySQL com dbExpress no Delphi 2010/XE – evitando problemas http://www.andreanolanusse.com/pt/dicas-mysql-com-dbexpress-no-delphi-2010xe-evitando-problemas/ http://www.andreanolanusse.com/pt/dicas-mysql-com-dbexpress-no-delphi-2010xe-evitando-problemas/#respond Wed, 16 Jan 2013 15:28:03 +0000 http://www.andreanolanusse.com/pt/?p=4207 Desde que o Delphi suporta MySQL através do driver dbExpress é comum ver desenvolvedores com certa dificuldade para conectar ao MySQL, vejo isso acontecer mais com aqueles que usam a versão do Delphi ou C++Builder 2010 e XE, isso poderia ser evitado ao ler o arquivo readme.html que está localizado no diretório de instalação do […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Desde que o Delphi suporta MySQL através do driver dbExpress é comum ver desenvolvedores com certa dificuldade para conectar ao MySQL, vejo isso acontecer mais com aqueles que usam a versão do Delphi ou C++Builder 2010 e XE, isso poderia ser evitado ao ler o arquivo readme.html que está localizado no diretório de instalação do Delphi.

Este arquivo documenta todas as versões de banco suportada pelo dbExpress, incluindo o MySQL que tem uma particularidade, a combinação de versões de DLL que podem ser feita, isso acontece porque o MySQL muda com frequência sua API e assim dificulta para qualquer fornecedor manter a compatibilidade, por isso essa combinação.

Abaixo informações que você deve saber e que estão no readme.html

Versões de servidores MySQL oficialmente suportadas e testadas pelo Delphi e C++Builder

MySQL 5.1, 5.0.27, 4.1 (Todas) (Driver dbxMYS.dll, Client libmysql.dll)

Combinação das versões de servidores e clientes MySQL que foram testados, ou seja, veja bem as versões de DLL que devem ser usadas no server e client

  • LibMySQL.dll (5.1.XX) Client  – DBXMys.dll MySQL 4.0.XX Server
  • LibMySQL.dll (5.1.XX) Client  – DBXMys.dll MySQL 5.0.XX Server
  • LibMySQL.dll (5.1.XX) Client  – DBXMys.dll MySQL 5.1.XX Server

Sendo objetivo, instale a versão do cliente do MySQL 5.1.xx para que sua aplicação cliente possa conectar a servidores MySQL 4.0.XX, 5.0.XX e 5.1XX.

Lembre-se de instalar o cliente do  MySQL 32-bits, se você instalar o cliente 64-bits jamais irá funcionar com o Delphi 2010 e XE.

Caso você tenha mais de uma versão Delphi instalada na mesma máquina, faça o seguinte?

Duas versões de IDE na mesma máquina pode fazer com que uma  das versões antigas do driver dbExpress para MySQL seja carregado, isso irá acontecer por causa da variável de sistema PATH, coloque o diretório bin da versão do Delphi que você quer executar a frente na variável de sistema PATH, você pode fazer isso através do menu Tools -> Options -> Environment Variables. Faça este procedimento se você desejar usar outra versão do Delphi.

Uma dica simples, mas que pode ajudar a economizar um tempinho.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/dicas-mysql-com-dbexpress-no-delphi-2010xe-evitando-problemas/feed/ 0
Migração de sistemas legado ou mal estruturados – Parte 1 http://www.andreanolanusse.com/pt/migracao-de-sistemas-legado-ou-mal-estruturados-parte-1/ http://www.andreanolanusse.com/pt/migracao-de-sistemas-legado-ou-mal-estruturados-parte-1/#comments Mon, 14 Jan 2013 07:02:22 +0000 http://www.andreanolanusse.com/pt/?p=4243 Migração de sistemas legados é um assunto que pode render horas, dias, semanas ou meses em qualquer empresa, algo que considero normal, pois envolve uma quantidade enorme de variáveis e traz grandes desafios. Não precisamos ir muito longe para identificar sistemas legado e os desafios para mantê-lo nos dias de hoje. Sistemas que cresceram muito […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Migração de sistemas legados é um assunto que pode render horas, dias, semanas ou meses em qualquer empresa, algo que considero normal, pois envolve uma quantidade enorme de variáveis e traz grandes desafios. Não precisamos ir muito longe para identificar sistemas legado e os desafios para mantê-lo nos dias de hoje.

Sistemas que cresceram muito rápido e em um curto espaço de tempo, menos de 1 ano por exemplo, pode não ser considerado legado, entretanto na maioria das vezes este crescimento rápido e não planejado não irá suportar o crescimento da empresa a médio e longo. Com isso, o assunto migração entra em cena novamente.

Meu objetivo nesta série de artigos é ir a fundo no tema, trazer um pouco da minha experiência, sugerir caminhos e alternativas para uma migração menos dolorosa, além de recomendar soluções que irão ajudá-los. Vale lembrar que não existe receita de bolo e vocês verão isso aqui, cada caso é um caso e ninguém melhor do que você para saber dos problemas nas soluções desenvolvidas por você ou sua empresa. Faça seus comentários ao final do artigo, eles irão agregar e ajudar outros a refletir sobre que caminho tomar na neste processo, além de me ajudar nos próximos artigos.

Se não é fácil e sabemos, então por onde começamos?

Todos tem de estar desarmados

A primeira coisa a se fazer neste processo é entrar desarmado, aberto a mudança, aceitar ideias, críticas e sugestões, expor o que você pensa e ouvir, ouvir, ouvir e ouvir muito. Todos aqueles envolvidos neste projeto, deverão estar conscientes disso e preparados para mudar seu comportamento, a pior coisa neste longo projeto é ter um grupo de pessoas remando contra, enquanto todos os outros estão remando para frente. Trabalho em equipe será fundamental, críticas, sugestões e debates calorosos existirão, mas todos tem que estar cientes de que é para o melhor do projeto.

Incorporar métodos ágeis como SCRUM já na fase inicial do projeto pode ser de grande ajuda, as práticas ágeis enfatizam muito a colaboração, trabalho equipe, interação entre as pessoas, etc. Isso pode começar a estabelecer um ponto de equilíbrio na equipe e reforçar de forma continua o trabalho em equipe.

Por que migrar?

Faça esta pergunta a si mesmo “Por que migrar?”, esqueça por um instante o famoso ditado “Time que está ganhando não se mexe”, ou seja, “sistema que está funcionando não se mexe”.

A grande maioria dos sistemas ERP desenvolvidos na década de 80 e início dos anos 90 adotaram a arquitetura Cliente/Servidor (Cliente/Server) e foram desenvolvidos para plataforma Desktop, ao longo do tempo isso foi mudando, a web se tornou uma plataforma mais atrativa e hoje vivemos no mundo dos dispositivos móveis. Naquela época muitas soluções baseadas em Web surgiram, mas o avanço da tecnologia foi tão rápido que essas antigas aplicações web não foram bem estruturadas, trazendo vários outros problemas. Enfim, integração entre plataformas e diversidade de meios de acesso tornou o modelo Cliente/Servidor obsoleto.

Considere como exemplo sistemas ERPs legado ou outros similares, reflita sobre o cenário mencionado no parágrafo anterior e traga para sua realidade, seus clientes hoje querem acesso as informações via web, via iPhone, iPad, Android e seus muitos celulares e tablets e assim por diante. A recente pesquisa que fiz aqui no blog mostrou que 75% dos entrevistados irão desenvolver aplicações para mobile e 45% irão migrar suas aplicações desktop para web em 2013. Como você faria essa migração hoje de forma rápida e escalável? Como você integraria apps com seu backend? Quanta regra de negócio seria reutilizada? Já se perguntou?

Seja Desktop ou Web, se seu sistema está baseado em Cliente/Servidor, a eficiência da sua empresa está comprometida pois você está o tempo todo fazendo remendos para atender as necessidades do mercado, isso eleva a dificuldade de manutenção do código, diminui a eficiência da sua equipe, aumenta o seu custo e o custo do seu cliente, ou seja, diminui sua competitividade no mercado.

Já deve fazer um tempo que seu cliente pede para que TODO o sistema seja Web, ele faz questão de dizer TODO O SISTEMA, ele não precisa de tudo e sim certos módulos importantes, como por exemplo relatórios, gráficos estatísticos em tempo real, acesso ao cadastro de clientes, etc. Mais uma vez arquitetura Cliente/Servidor se torna um problema, o seu cliente disse que os relatórios tem de estar acessíveis pela web e relatórios na web podem trazer uma carga enorme em todo o sistema. Como você atenderia a estas solicitações? Não precisa me dizer dos remendos, eu já imagino, replicar os dados para um servidor web, manter sincronizado, etc.. Isso é caro, não é escalável e se torna um remendo temporário que irá rasgar em pouco tempo.

Já se perguntou quanto custa manter seus sistemas Desktop? Depois de muitos anos sua aplicação virou um grande sistema, com dezenas de módulos, integrações, recursos, dependências, etc.. Para responder essa pergunta, você precisa se fazer as perguntas abaixo:

  • Quantos problemas de instalação do sistema são registrados mensalmente?
  • Quantos problemas de compatibilidade de Windows são registrados mensalmente?
  • Quantos problemas de atualização do sistema são registrados mensalmente?
  • Quantas visitas mensais os técnicos do suporte técnico fazem a clientes para resolver problemas que não são possíveis de resolver remotamente?
  • Quanto representa essa grande estrutura de suporte técnico no seu custo final?
  • Que crescimento você estima para o negócio se todo sistema estivesse na Web?
  • Quais diferenciais a web traria para o seu negócio?
  • Quanto tempo irá levar para você desenvolver uma aplicação Android com base na atual infra que sua empresa oferece?
  • Etc…

Provavelmente você não tenha a resposta para todas, então é hora de começar a buscar e mensurar estes custos.

Aplicações desktop aumentam o custo final, principalmente por causa do alto-custo do suporte técnico, não estou dizendo para mandar embora metade da equipe de suporte técnico, muito pelo contrário, a equipe de suporte técnico tem um grande conhecimento do sistemas e pode ser reutilizado em outras funções, como desenvolvedores, testadores, analistas, etc…

Que tal oferecer sua solução como serviço (SaaS), o negócio do seu cliente não é TI, porque não ter  uma infra-estrutura na nuvem e oferecer sua solução? Cobrar por este serviço.

São inúmeros os pontos a se pensar, os pontos aqui mencionados são alguns entre os milhares e talvez não seja razão para você, o que é totalmente aceitável da minha parte, entretanto reflita sobre outros pontos que você acha importante e faça sua própria análise.

Vou ficando por aqui com esta primeira parte, enquanto isso reflita sobre as razões que o levaria a migrar sistemas legados ou mal estruturados.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/migracao-de-sistemas-legado-ou-mal-estruturados-parte-1/feed/ 38
Android Designer – padrões da plataforma Android http://www.andreanolanusse.com/pt/android-designer-padroes-da-plataforma-android/ http://www.andreanolanusse.com/pt/android-designer-padroes-da-plataforma-android/#comments Sat, 12 Jan 2013 07:10:28 +0000 http://www.andreanolanusse.com/pt/?p=4228 A Google disponibiliza o Android Designer guide que é um guia completo chamada Android Design que aborda todos os aspectos a serem considerados. É natural pensar na aplicação que temos e tentar imagina-la em dispositivos móveis, entretanto isso se torna uma armadilha pois acabamos levando hábitos de uma interface que não irá se adequar para um […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

A Google disponibiliza o Android Designer guide que é um guia completo chamada Android Design que aborda todos os aspectos a serem considerados. É natural pensar na aplicação que temos e tentar imagina-la em dispositivos móveis, entretanto isso se torna uma armadilha pois acabamos levando hábitos de uma interface que não irá se adequar para um telefone ou tablet.

Para aqueles que pretendem criar apps para Android, além de conhecer a linguagem Java, a plataforma Android e SDK, além de vários outros aspectos técnicos é super importante entender os padrões de Designer da plataforma Android, desenvolver para Mobile pensando em aplicações Desktop sem dúvida não funciona e irá trazer uma desastrosa experiência para o usuário.

O guia da Google da uma dica bem legal com relação a isso, ele sugere que você pense em 3 objetivos durante o desenvolvimento da sua interface:

  • Me encante
  • Simplifique minha vida
  • Me faça incrível

Basicamente com estes objetivos ele está lhe dizendo para pensar no usuário, tornar a vida dele mais fácil, usar os padrões da plataforma e não reinventar a roda.

Uma outra dica que pode irá ajudá-lo a pensar mais no Designer da sua app é observar os detalhes das apps que você mesmo mais utiliza no seu dia-a-dia, observe os controles utilizados, o uso de gestures para fazer algo, touch e multi-touch. Observe também a app responsável pela configuração (Settings) do telefone, geralmente elas usam muitos controles nativos, animações, etc.. e pode lhe dar mais idéias ainda.

Vale lembrar que o guia não está lhe impondo como fazer sua app e sim lhe dando um direcionamento. Android é a plataforma mobile mais aberta do mercado, lhe permite customizar de todas as formas, o guia vem para nos ajudar, pois as opções são inúmeras e muitas das vezes acaba dificultando nossa decisão.

Abaixo a apresentação “Android Design for Success” com engenheiros do Google que aconteceu no Google I/O 2012, eles abordam inúmeros aspectos a serem considerados durante o desenho de uma aplicação, usando o próprio projeto Android como exemplo. Vale a pena.


Fico por aqui, até o próximo artigo.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/android-designer-padroes-da-plataforma-android/feed/ 2
dbExpress Framework no Windows e Mac com C++Builder e FireMonkey http://www.andreanolanusse.com/pt/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey/ http://www.andreanolanusse.com/pt/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey/#comments Sat, 12 Jan 2013 05:34:57 +0000 http://www.andreanolanusse.com/pt/?p=4234 O objetivo deste artigo é demonstrar o uso do dbExpress Framework para executar SQLs em um bancos de dados InterBase ou Firebird, através uma aplicação FireMonkey Console em C++ que poderá ser executa em Windows e Mac, desta forma teremos um único código para as duas plataformas. A aplicação FireMonkey Console usada como exemplo foi […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

O objetivo deste artigo é demonstrar o uso do dbExpress Framework para executar SQLs em um bancos de dados InterBase ou Firebird, através uma aplicação FireMonkey Console em C++ que poderá ser executa em Windows e Mac, desta forma teremos um único código para as duas plataformas.

A aplicação FireMonkey Console usada como exemplo foi criada através do Wizard do IDE e irá efetuar as seguintes operações:

  • Conectar ao banco de dados, que aqui usado foi InterBase e Firebird, mas você pode usar qualquer banco suportado pelo dbExpress Framework; alguns drivers do dbExpress não são suportados em Mac, como é o caso do SQL Server e ODBC driver;
  • Executar um SELECT na tabela COUNTRY e mostrar os resultados percorrendo os cursor retornado.

O código abaixo é simples e de fácil leitura e traz uma série de comentários para facilitar o entendimento.

#include <fmx.h>

#pragma hdrstop
#pragma argsused

#include <tchar.h>
#include <stdio.h>
#include <System.SysUtils.hpp>
#include <Data.DBXDynalink.hpp>
#include <Data.DBXCommon.hpp>
#include <Data.DBXInterbase.hpp>
#include <memory>

int _tmain(int argc, _TCHAR* argv[]) {

	// Get database connection instance
	std::auto_ptr<TDBXConnection>conn
		(TDBXConnectionFactory::GetConnectionFactory()->GetConnection
		("EMPLOYEE", "sysdba", "masterkey"));

	if (conn.get() != NULL) {

		printf("================= Connection Properties ============\n");

		AnsiString s = conn->ConnectionProperties->Properties->Text + "\n";
		printf(s.c_str());

		// create command and transaction objects to execute the query
		std::auto_ptr<TDBXCommand>command(conn->CreateCommand());

                // initiate a transaction
		TDBXTransaction *transaction =
			conn->BeginTransaction(TDBXIsolations::ReadCommitted);

		command->Text = "SELECT * FROM Country";
		command->Prepare();

		// execute the query and get the cursor (DBXReader)
		std::auto_ptr<TDBXReader>reader(command->ExecuteQuery());

		// print number of columns and each record
		printf(AnsiString("Number of Columns:" + IntToStr(reader->ColumnCount) +
			"\n").c_str());

		// display the list of records
		while (reader->Next()) {
			printf((reader->Value[reader->GetOrdinal("COUNTRY")]->GetAnsiString
				() + "\n").c_str());
		}

		printf("====================================================\n");

		conn->CommitFreeAndNil(transaction);
	}

	Sleep(5000);
	return 0;
}

Certifique-se que o alias dbExpress EMPLOYEE foi criado e configurado corretamente para conectar ao banco de dados EMPLOYEE.GDB, além claro do cliente do InterBase ou FireBird que dever estar instalado. Com estes passos efetuados compile e execute sua aplicação no Windows ou Mac.

Ao executar no Mac, certifique-se de que o arquivos dbxconnection.ini está no mesmo diretório da aplicação, caso contrário você poderá ter problemas, pois a aplicação não irá encontrar os parâmetros para conectar ao banco.

O resultado abaixo representa a aplicação sendo executada no Mac.

Aplicação FireMonkey em C++ em execução no Mac

 

Você pode baixar o código fonte direto do repositório de demos do RAD Studio utilizando a linha de comando abaixo:

svn co https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/RadStudio_XE2/CPP/Database/dbExpress/DBXFramework/

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey/feed/ 1
Android findViewById vs @InjectView http://www.andreanolanusse.com/pt/android-findviewbyid-vs-injectview/ http://www.andreanolanusse.com/pt/android-findviewbyid-vs-injectview/#comments Wed, 02 Jan 2013 04:43:39 +0000 http://www.andreanolanusse.com/pt/?p=4223 O uso de findViewById em Android é algo que considero inconveniente, ele acaba fazendo você escrever mais código, com isso cresce o seu código de forma desnecessária, dificulta a leitura, manutenção, etc. Entretanto temos uma solução para este problema e que se chama @InjectView que é parte do framework RoboGuice, este irá tornar nosso código […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

O uso de findViewById em Android é algo que considero inconveniente, ele acaba fazendo você escrever mais código, com isso cresce o seu código de forma desnecessária, dificulta a leitura, manutenção, etc. Entretanto temos uma solução para este problema e que se chama @InjectView que é parte do framework RoboGuice, este irá tornar nosso código mais claro, menor e fácil de manter ao substituirmos findViewById, vamos ver como funciona.

Vamos supor que temos o EditText abaixo definido em nosso Activity.


A forma de acesso através do findViewById ficaria assim:

class Main extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main);
        EditText nome;
        nome = (EditText) findViewById(R.id.nomeEditText);
        nome.setText( "Meu nome é João"); 
    } 
}

Para usar @InjectView nosso Activity passa a herdar de RoboActivity (não esqueça de baixar o RoboGuice aqui) ficando assim:

class Main extends RoboActivity { 
     @InjectView (R.id.nomeEditText)      EditText nome; 

    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main);
        nome.setText( "Meu nome é João" ); 
    } 
}

Desta forma não precisamos obter uma referência ao objeto “nome” toda vez que for necessário acessá-lo, pois o mesmo está sendo feito pela @InjectView. Em telas onde temos vários objetos a manutenção e leitura do código será mais fácil como você pode ver no exemplo abaixo.

class Main extends RoboActivity { 
     @InjectView (R.id.nomeEditText)      EditText nome; 
     @InjectView (R.id.sobrenomeEditText) EditText sobrenome; 
     @InjectView (R.id.fotoImage)         ImageView foto; 

    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main);
        nome.setText( "Meu nome é João" ); 
        sobrenome.setText( "Meu sobrenome é Silva" ); 
        foto.setImageBitmap( null ); 
    } 
}

Espero que esta pequena dica tenha ajudado.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/android-findviewbyid-vs-injectview/feed/ 3
Reflexão para os desenvolvedores que querem sair na frente http://www.andreanolanusse.com/pt/reflexao-para-os-desenvolvedores-que-querem-sair-na-frente/ http://www.andreanolanusse.com/pt/reflexao-para-os-desenvolvedores-que-querem-sair-na-frente/#respond Wed, 02 Jan 2013 03:12:13 +0000 http://www.andreanolanusse.com/pt/?p=4221 Acabei de ler o  artigo  “4 Hard Questions For Enterprise Developers Who Want To Get Ahead” que foi escrito pelo Adam Seligman Vice-Presidente de Relacionamento com Desenvolvedores da Salesforce.com. O artigo é excelente e recomendo a leitura, as quatro perguntas levantadas por Adam lhe irá ajudar a refletir sobre o seu trabalho como desenvolvedor. What Am I […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Acabei de ler o  artigo  “4 Hard Questions For Enterprise Developers Who Want To Get Ahead” que foi escrito pelo Adam Seligman Vice-Presidente de Relacionamento com Desenvolvedores da Salesforce.com.

O artigo é excelente e recomendo a leitura, as quatro perguntas levantadas por Adam lhe irá ajudar a refletir sobre o seu trabalho como desenvolvedor.

  1. What Am I Working With?
  2. How Often Do I Put Code Into Production?
  3. Is My Organization A Laggard?
  4. Do I Have A 2002 Or A 2012 Resume?

Estas perguntas podem lhe ajudar a achar novos desafios na sua empresa, ou mesmo buscar outros em outros lugares.

Estamos começando 2013 e agora é um bom momento para refletir e definir seus novos objetivos.

Feliz Ano Novo a todos!!!

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/reflexao-para-os-desenvolvedores-que-querem-sair-na-frente/feed/ 0