Desarrollo Mobile en Delphi Academy

La agenda de este semestre de Delphi Academy se centra principalmente en el desarrollo de aplicaciones móviles.

Empezamos el semestre hablando sobre las mejores prácticas para la interfaz de usuario, con el episodio “Aplicaciones móviles: Aciertos/Errores en el UI“, el cual fue al aire en 11/08:

Este episodio tiene algunos ejemplos interesantes, los cuales se pueden encontrar en nuestro repositorio Git: https://github.com/flrizzato/DelphiAcademy/tree/master/30-MobileYesNo

En la secuencia hablamos sobre los Sensores disponibles en los dispositivos móviles, los cuales deben ser ampliamente empleados en sus aplicaciones. Este episodio, llamado “Aplicaciones móviles: Sensores y Dispositivos” fue al aire el 25/08:

Los ejemplos de esta presentación son básicamente los mismos que acompañan al producto (Delphi y C++ Builder), de todos modos están organizados en nuestro repositorio también: https://github.com/flrizzato/DelphiAcademy/tree/master/31-MobileSensors

Esta serie sobre móviles se inició en el primer semestre de este año, con tres episodios enfocados en mostrar los conceptos básicos del desarrollo FireMonkey (“Empezando con Aplicaciones Móviles en Delphi y C ++ Builder”, “Aplicaciones Móviles: Buenas Prácticas de UI” y “Aplicaciones Móviles: Acceso a Datos“). Si no los ha encontrado, vaya directamente a este enlace: http://embt.co/AcademyLA-replay

Para la próxima semana, vamos a intentar poner todo este aprendizaje en un ejemplo integrado, el cual podrá ser reutilizado como base para nuevos proyectos. ¡Entonces nos vemos el viernes!

ps: No se olvide de inscribirse => http://embt.co/AcademyLA

 

Advertisements

Desenvolvimento Mobile no Delphi Academy

A agenda deste semestre do Delphi Academy está focada principalmente em desenvolvimento de aplicações mobile.

Iniciamos o semestre falando de boas práticas para a interface do usuário, com o episódio “Aplicações Mobile: Acertos/Erros na UI“, o qual foi ao ar em 08/08:

Este episódio possui alguns exemplos interessantes, os quais podem ser encontrados em nosso repositório Git: https://github.com/flrizzato/DelphiAcademy/tree/master/30-MobileYesNo

Na sequência falamos sobre os Sensores disponíveis nos dispositivos móveis, os quais devem ser amplamente empregados em suas aplicações. Este episódio, chamado de “Aplicações Mobile: Sensores e Devices” foi ao ar em 22/08:

Os exemplos desta apresentação são basicamente os mesmos que acompanham o produto (Delphi e C++ Builder), de qualquer maneira eles estão organizados em nosso repositório também: https://github.com/flrizzato/DelphiAcademy/tree/master/31-MobileSensors

Esta série sobre mobile teve inicio ainda no primeiro semestre deste ano, com três episódios focados em mostrar os conceitos básicos do desenvolvimento FireMonkey (“Iniciando com Aplicações Mobile em Delphi e C++ Builder”, “Aplicações Mobile: Boas Práticas de UI” e “Aplicações Mobile: Acesso a Dados”). Caso não os tenha encontrado, vá direto a este link: http://embt.co/AcademyBR-replay

Para a próxima semana, vamos tentar colocar todo este aprendizado em um exemplo integrado, o qual poderá ser reutilizado como base para novos projetos. Então nos vemos na terça-feira!

ps: não deixe de se inscrever => http://embt.co/AcademyBR

 

Comenzando con el desarrollo móvil con Delphi y C++ Builder: La nueva serie de episodios en Delphi Academy

Iniciamos recientemente una serie de episodios enfocados en Mobile en Delphi Academy.

En el 23/06, hablamos sobre cómo iniciar con mobile en RAD, Delphi y C ++ Builder (Empezando con Aplicaciones Móviles en Delphi y C++ Builder). Si ha perdido esta introducción, el vídeo está en nuestra lista de reproducción. En este episodio en particular no hay ejemplos a bajar, pero las diapositivas se pueden encontrar en nuestro GitHub, así como los ejemplos de todos los demás episodios.

Hoy (30/06) el tema fue relacionado con buenas prácticas en la construcción de interfaces para aplicaciones (Aplicaciones Móviles: Buenas Prácticas de UI), y el feedback fue excelente. A juzgar por el nivel de las preguntas, tenemos usuarios creando aplicaciones extremadamente avanzadas con Delphi y C++ Builder para iOS y Android! Como de costumbre, la lista de reproducción y GitHub ya están actualizados con el vídeo de hoy y ejemplos y diapositivas.

mobile

En el próximo episodio, programado para ser transmitido en 14/07, hablaremos sobre acceso a datos en el móvil, y entonces dispondremos una nueva agenda con nuevos episodios. Entre los temas en pauta, nos gustaría avanzar más con la cuestión de la UI y también acceder a datos, ya que estos son asuntos con muchas posibilidades y variaciones, por lo que merecen más tiempo.

Durante esta planificación, usted está invitado a enviar sugerencias de temas a ser abordados, simplemente deje su comentario en este post y le aseguro que el mismo será evaluado.

¡Abrazos y hasta la próxima Delphi Academy!

 

Série de Episódios sobre Mobile no Delphi Academy

Iniciamos recentemente uma série de episódios focados em Mobile no Delphi Academy.

Em 13/06, falamos sobre como iniciar com mobile no RAD, Delphi e C++ Builder (Iniciando com Aplicações Mobile Delphi e C++ Builder). Caso tenha perdido esta introdução, o vídeo está em nosso playlist. Neste episódio em particular, focado em conceitos, não há exemplos a serem baixados, mas os slides podem ser encontrados em nosso GitHub, bem como os exemplos de todos os demais episódios.

Hoje (27/06), o assunto foi relacionado com boas práticas na construção de interfaces para apps (Aplicações Mobile: Boas Práticas de UI), e o feedback foi excelente. A julgar pelo nível das perguntas, temos usuários criando aplicações extremamente avançadas com Delphi e C++ Builder para iOS e Android! Como de costume, o playlist e GitHub já estão atualizados com o vídeo de hoje e exemplos.

mobile

Mobile com Delphi e C++ Builder

 

No próximo episódio, programado para ser transmitido em 11/07, falaremos sobre acesso a dados no mobile, e então disponibilizaremos uma nova agenda com novos episódios. Dentre os assuntos em pauta, gostaríamos de avançar mais com a questão da UI e também acesso a dados, já que estes são assuntos com muitas possibilidades e variações, portanto merecem mais tempo.

Durante este planejamento, você está convidado a enviar sugestões de tópicos a serem abordados, simplesmente deixe seu comentário neste post e garanto que o mesmo será avaliado.

Abraços e até o próximo Delphi Academy!

Delphi Academy: Iniciando com Delphi para Linux 64 bit em 3 episódios!

As últimas 3 sessões do Delphi Academy foram dedicadas ao novo compilador Linux do Delphi. O feedback tem sido muito positivo, então resolvi fazer um post consolidando estas sessões para aqueles que não tiveram a oportunidade de assistir.

Iniciamos por compreender como configurar uma VM Linux para desenvolvimento e testes de sua aplicação, e também executamos alguns pequenos testes. Isso foi ao ar originalmente em 07/02.

Preview: Novo Compilador Linux para Delphi

Os slides deste episódio podem ser encontrados aqui: http://cc.embarcadero.com/item/30684

No episódio seguinte, falamos sobre DataSnap em geral, e sua distribuição para servidores Linux. DataSnap é sempre um grande sucesso de público, e este episódio não foi diferente. Este episódio foi ao ar originalmente em 21/02.

Preview: Iniciando com Aplicações Multicamadas para Windows e Linux 64 bit

A apresentação deste episódio (PPT) pode ser encontrada neste link: http://cc.embarcadero.com/item/30719

E finalmente, concluímos a série de previews sobre o novo compilador Linux esta semana, com um episódio sobre RAD Server. Por trata-se de um produto relativamente novo, e que possui muitas tecnologias integradas, iniciamos este episódio com uma visão conceitual sobre serviços em REST e sobre todas as características do RAD Server, antes de passar aos bits & bytes especificamente. Este episódio foi ao ar em 07/03.

Preview: Iniciando com RAD Server para Windows e Linux 64 bit

Para este episódio, tanto exemplos quanto os slides, estão disponíveis neste link: http://cc.embarcadero.com/item/30740

O Delphi Academy vai ao ar a cada duas semanas, sempre com um novo tópico. Sugestões de temas também são bem vindas!

Feliz Aniversário Delphi! #ILoveDelphi

ilovedelphi

Chegamos a mais um aniversário do Delphi, e podemos atestar que o aniversariante encontra-se em ótima forma ao completar seus 22 anos, um jovem na verdade!

Neste tempo todo, poucas tecnologias tiveram tamanha capacidade de se manter tão atualizadas, inovadoras e seguir ditando tendências. A começar pelo conceito do RAD, criado pela então Borland, e presente nas principais ferramentas da atualidade, até os dias atuais, com um dos melhores suportes para desenvolvimento cross-platform disponível no mercado!

Para marcar o dia, algumas fotos de pequenos tesouros e lembranças que mantenho da minha participação nesta história, afinal lá se vão 15 anos nesta industria vital!

ps: aos mais mais novos, é recomendado assistir este vídeo para entender a frase acima 😉

Foram centenas de treinamentos ministrados, consultorias e sistemas desenvolvidos. Apresentações em todas as capitais do país, e muitas cidades do interior também, e a incrível experiência de trabalhar ao menos por uma semana em cada país da América Latina e América Central, visitando clientes e fazendo eventos. É impressionante o que um compilador é capaz de fazer!

Mas além de um compilador, temos as pessoas. Sim, em tempos de pragmatismos e racionalização de tudo, talvez seja este o fator que nos permitiu chegar tão longe, todas verdadeiramente apaixonadas pelo que fazem.

Seria uma tremenda injustiça citar qualquer nome, cada qual contribuiu com o seu melhor, empurrando a ferramenta para frente, empurrando minha vida para frente… cada qual sabe o quanto sou grato por tudo!

Obrigado Delphi!

Windows 10 Store, Android, iOS, OS X, Linux: recursos para migrar sua aplicação Delphi/C++ Builder e suportar TODAS as plataformas (parte 2)

Na primeira parte deste artigo (aqui) exploramos os principais desafios na migração de projetos Delphi/C++ Builder, listamos alguns tópicos que vamos tratar ao longo de uma série de artigos, e iniciamos o entendimento da parte teórica sobre Unicode.

Neste post vamos retomar o assunto Unicode, porém de um ponto de vista mais técnico, buscando compreender as alterações que são necessárias (ou não) em um projeto.

Vale ressaltar que o suporte a Unicode foi introduzido no Delphi/C++ Builder 2009, portanto, projetos compilados em versões 2009+ não devem sofrer qualquer impacto no tocante a Unicode durante um processo de migração.

O que mudou?

A partir da versão 2009 (inclusive), o tipo String passou a ser definido pelo tipo UnicodeString, que é uma string UTF-16. Da mesma forma, o tipo Char é agora WideChar, um tipo de caractere de dois bytes e PChar é um PWideChar, um ponteiro para um Char de dois bytes.

O ponto significativo sobre as alterações a esses tipos de dados básicos é que, no mínimo, cada caractere é representado por pelo menos um “code unit” (dois bytes), e às vezes mais.

Coincidente com essas mudanças é que o tamanho de uma sequência de caracteres, em bytes, não é mais igual ao número de caracteres na sequência de caracteres. Da mesma forma, um valor do tipo Char não é mais um único byte; são dois bytes.

Opção #1: Mantenha tudo em seu lugar

Uma das opções com relação a Unicode é simplesmente não fazer nada. Isso mesmo… ou na verdade… quase isso. Nas versões anteriores a 2009, o tipo String era então mapeado para AnsiString. Logo, reverter as declaração de String para AnsiString pode ser uma alternativa para uma migração rápida – caso você não necessite suportar caracteres estendidos. O que precisa ser feito, na verdade, é converter declarações String para AnsiString, Chars para AnsiChars e PChars para PAnsiChars.

Para auxiliar nesta tarefa, um membro do Australian Delphi Users Group (ADUG) – Roger Connell – criou um convertor para pesquisar seus arquivos  Delphi (.pas e .dpr) e fazer as conversões, se essa abordagem funciona para você:http: /www.innovasolutions.com.au/delphistuf/ADUGStringToAnsiStringConv.htm

Obviamente, mesmo reduzindo as mudanças ao mínimo, testar e validar sua aplicação previamente a enviá-la para um ambiente de produção, continua sendo uma recomendação mandatória.

Opção #2: Abraçando o Unicode de vez

O Unicode incentiva o uso de alguns novos termos. Por exemplo, a idéia de “caractere” é um pouco menos preciso no mundo do Unicode do que você pode estar acostumado. No Unicode, o termo mais preciso é “code point”. A partir da versão 2009, o SizeOf (Char) é 2. Dependendo da codificação, é possível que um determinado caractere ocupe mais de dois bytes. Estas sequências são chamadas de “Surrogate Pairs“. Assim, um “code point” é um código exclusivo atribuído a um elemento definido pelo Unicode.org. Mais comumente isso é um “caractere”, mas nem sempre.

String agora é igual a UnicodeString, logo suas suposições anteriores sobre o tamanho em bytes de uma matriz de caracteres ou sequência de caracteres podem agora estar incorretas.

Procure qualquer código que:

  • Pressupõe que SizeOf (Char) é 1.
  • Pressupõe que o comprimento de uma sequência de caracteres é igual ao número de bytes na sequência de caracteres.
  • Diretamente manipula sequências de caracteres ou PChars.
  • Grava e lê strings em algum tipo de armazenamento persistente.

As duas suposições listadas aqui primeiro não são verdadeiras para Unicode, porque para Unicode SizeOf (Char) é maior que 1 byte, e o comprimento de uma sequência de caracteres é metade do número de bytes.

Além disso, o código que grava ou lê a partir de armazenamentos persistentes precisa garantir que o número correto de bytes estão sendo gravados ou lidos, uma vez que um caractere pode não ser mais capaz de ser representado como um único byte.

Compreendidas estas alterações, temos um sem números de ótimos documentos e tutoriais para se aprofundar no tema Unicode, os quais estou listando abaixo, porém gostaria de chamar a atenção para uma ferramenta em especial, o Unicode Statistics Tool. Este pequeno utilitário tem a capacidade de revisar seu código e dizer onde e o que você provavelmente vai ter que mudar. Obviamente, trata-se de um auxiliar e não uma ferramenta mágica, mas ajudará muito!

Recursos Adicionais