Low code

Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> mostrarTituloH2  [in template "20102#20129#105831" at line 4, column 40]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign hayH2 = getterUtil.getBoolean...  [in template "20102#20129#105831" at line 4, column 1]
----
1<#assign title = .vars['reserved-article-title'].getData()> 
2<div class="containerInterior"> 
3<#assign hayH1 = getterUtil.getBoolean(MostrarTituloH1.getData())> 
4<#assign hayH2 = getterUtil.getBoolean(mostrarTituloH2.getData())> 
5 
6<#if hayH1> 
7    <h1 aria-level="1" role="heading" id="titulo">${layout.getName(locale)}</h1> 
8</#if> 
9<#if hayH2> 
10 
11    <#if TituloContenido.getData()?? && TituloContenido.getData() != ""> 
12        <#assign contenido = TituloContenido.getData()> 
13    <#else> 
14        <#assign contenido = title> 
15    </#if> 
16 
17    <#if hayH1> 
18        <p  id="subtitulo"  
19            aria-level="2"  
20            role="heading"  
21            style=" 
22                color: #007f33 !important; 
23                font-size: 45px; 
24                font-family: 'IberPangea Medium', sans-serif; 
25                line-height: 45px; 
26                margin-top: .75em; 
27                margin-bottom: .9em;"> 
28            ${contenido} 
29        </p> 
30    <#else> 
31        <p  id="subtitulo" 
32            style=" 
33                color: #007f33 !important; 
34                font-size: 45px; 
35                font-family: 'IberPangea Medium', sans-serif; 
36                line-height: 45px; 
37                margin-top: .75em; 
38                margin-bottom: .9em;"> 
39            ${contenido} 
40        </p> 
41    </#if> 
42 
43</#if> 
44 
45<#if getterUtil.getBoolean(MostrarCategorias.getData())> 
46 
47 
48 
49    <#assign journalArticleId = .vars['reserved-article-id'].data> 
50    <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
51 
52    <#assign assetCategoryPropertyLocalService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") /> 
53 
54    <#assign article = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) /> 
55    <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 
56    <#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', article.resourcePrimKey) > 
57    <#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
58 
59    <p class="tag-categorias"> 
60 
61    <#list asset.getCategories() as category> 
62 
63 
64 
65    <#if assetCategoryPropertyLocalService.fetchCategoryProperty(category.getCategoryId(), "friendlyURL")??> 
66 
67        <#assign categoryFriendly = '/tag/' + assetCategoryPropertyLocalService.fetchCategoryProperty(category.getCategoryId(), "friendlyURL").getValue() /> 
68 
69        <#if layoutLocalService.fetchLayoutByFriendlyURL(groupId, false, categoryFriendly)??> 
70            <#assign  categoryLayout = layoutLocalService.fetchLayoutByFriendlyURL(groupId, false, categoryFriendly) /> 
71            <#assign categoryLayoutURL = portalUtil.getLayoutFullURL(categoryLayout, themeDisplay) /> 
72 
73            <a class="tag-categoria" href="${categoryLayoutURL}">${category.getTitle(locale)?cap_first}</a> 
74 
75        <#else> 
76        <a class="tag-categoria" href="/tag/#">${category.getTitle(locale)?cap_first}</a> 
77 
78        </#if> 
79    </#if> 
80 
81 
82 
83 
84    </#list> 
85 
86    </p> 
87 
88</#if> 
89<div id="contenidoEntradilla">${DescripcionDetalleContenido.getData()}</div> 
90 
91 
92<#if ContenidoWebcofl.getSiblings()?has_content> 
93	<#list ContenidoWebcofl.getSiblings() as cur_ContenidoWebcofl> 
94		<#assign 
95			webContentData = jsonFactoryUtil.createJSONObject(cur_ContenidoWebcofl.getData()) 
96		/> 
97 
98			<#if webContentData?length gt 5> 
99					<@liferay_asset["asset-display"] 
100                                className = webContentData.className 
101                                classPK = webContentData.classPK?number 
102                        /> 
103 
104			</#if> 
105 
106 
107	</#list> 
108</#if> 
109</div> 
110<@liferay_util["html-top"]> 
111<style> 
112    #decPagination div.containerInterior p#subtitulo { 
113        font-family: "Iberpangea Medium"; 
114        font-size: 45px; 
115        line-height: 45px; 
116        color: #007F33; 
117        margin-bottom: 20px; 
118
119 
120 
121    div.contenidoCentrado div.contenidoInterior div.containerInterior p.tag-categorias a.tag-categoria:focus{ 
122        outline: 2px solid rgba(0, 0, 0, 0.7) !important; 
123
124    p.tag-categorias > .tag-categoria { 
125        width: auto !important; 
126        max-width: inherit !important; 
127
128     
129    div.faldon h2 { 
130        width: 100%; 
131        float: left; 
132        font-size: 1.26em; 
133        font-family: IberPangeaText Light, sans-serif; 
134        margin-bottom: 2em; 
135        border-bottom: 1px solid #e0e0e0; 
136        padding-bottom: .8em; 
137        color: #427314 !important; 
138 
139        line-height: 1.35em; 
140        margin-top: .75em; 
141
142    .contenidoInterior div.faldon h2+ul li:before { 
143        margin: .15em 0 0 -1.75em; 
144        font-size: 1em; 
145
146    .cursiva_texto { 
147        font-style: italic; 
148
149    .contenidoInterior h1 { 
150		font-family: 'IberPangea', sans-serif !important; 
151		font-size: 32px !important; 
152		border: none !important; 
153		line-height: 36px !important; 
154		letter-spacing: 0px !important; 
155		color: #00402A !important; 
156		padding-left: 0em !important; 
157		margin-bottom: 14px !important; 
158
159    p span.table a.enlace-actualidad[href*="/tag/"], 
160    p span.table a.enlace-actualidad[href*="/label/"], 
161    p.tag-categorias a.tag-categoria[href*="/tag/"], 
162    p.tag-categorias a.tag-categoria[href*="/label/"]{ 
163        line-height: 23px !important; 
164
165    .contenidoInterior #contenidoEntradilla p.entradilla { 
166        font-family: IberPangeaText, sans-serif !important; 
167        font-size: 17px !important; 
168        line-height: 23px !important; 
169        font-weight: 700; 
170        color: #615D5A !important; 
171        margin-top: 2em; 
172
173       
174    .contenidoInterior h2#subtitulo{ 
175        font-family: 'IberPangea  Medium', sans-serif !important; 
176        margin-bottom: 0.4em; 
177
178   #decPagination div.containerInterior{ 
179        max-width:980px; 
180        margin:0 auto 25px; 
181
182    #decPagination div.containerInterior h1#titulo{ 
183        font-family:"Iberpangea Medium"; 
184        font-size:32px; 
185        line-height:36px; 
186        color:#00402A; 
187        text-transform:none; 
188        border-left:none; 
189        margin-top:20px; 
190
191    #decPagination div.containerInterior h2#subtitulo{ 
192        font-family:"Iberpangea Medium"; 
193        font-size:45px; 
194        line-height:45px; 
195        color:#007F33; 
196        margin-bottom:20px; 
197
198    #decPagination div.containerInterior p.tag-categorias{ 
199        margin-bottom:30px !important; 
200
201    #decPagination div.containerInterior p.tag-categorias a.tag-categoria{ 
202        margin-right:20px; 
203        color:#00402A; 
204
205    #decPagination div.containerInterior div#contenidoEntradilla p.entradilla{ 
206        font-family:"IberpangeaText"; 
207        font-size:20px ; 
208        line-height:26px; 
209        color:#615D5A; 
210
211    @media all and (max-width:500px){ 
212        #decPagination div.containerInterior h1#titulo{ 
213            font-size:26px; 
214            line-height:36px; 
215
216        #decPagination div.containerInterior h2#subtitulo{ 
217            font-size:35px; 
218            line-height:35px; 
219            margin-bottom:20px; 
220
221        #decPagination div.containerInterior div#contenidoEntradilla p.entradilla{ 
222            font-family:"IberpangeaText Bold"; 
223            font-size:16px ; 
224            line-height:24px; 
225
226
227    @media screen and (max-width: 47.95em) { 
228        .contenidoInterior h1 { 
229            font-size: 26px !important; 
230
231        .contenidoInterior h2#subtitulo{ 
232            font-size: 35px; 
233            line-height: 35px; 
234            color: #007F33 !important; 
235            margin-bottom: 1em; 
236
237        .contenidoInterior #contenidoEntradilla p.entradilla { 
238            margin-top: 0.8em; 
239
240        .contenidoInterior #contenidoEntradilla p.entradilla { 
241            line-height: 24px !important; 
242
243
244 
245 
246</style> 
247</@> 
Low code
O movimento no code é uma filosofia digital com o objetivo de permitir que qualquer pessoa tenha acesso à criação de aplicativos e software sem saber programar.

Há quase duas décadas, plataformas como o Wordpress têm permitido que qualquer pessoa crie um blog ou um site sem nenhum conhecimento de programação. Ferramentas de código aberto que iniciaram o caminho para tornar o web design mais acessível para o usuário médio. Em uma sociedade com uma atividade digital cada vez mais intensa e uma maior dependência dos aplicativos móveis, o low code significou um passo à frente sem retorno neste sentido. O desenvolvimento de “código baixo” e a programação sem código resolvem a necessidade de muitos cidadãos, empresários e funcionários de colocarem seu próprio conteúdo em diferentes ambientes de forma autônoma e sem que isso signifique um enorme investimento de tempo e dinheiro.

O que é low code? 

O conceito de low code foi criado por volta de 2014 pela agência de pesquisa de mercado Forrester Research em um relatório sobre novas plataformas de desenvolvimento de aplicativos orientadas para o usuário. O desenvolvimento sem código estava crescendo com força diante da progressiva simplificação das ferramentas tecnológicas, da demanda por soluções web cada vez mais baratas e da escassa oferta de programadores qualificados com competências digitais específicas. 

O low code permite que os usuários criem, desenvolvam e mantenham aplicativos em uma grande variedade de dispositivos e mídias digitais da maneira mais eficiente possível: automaticamente. A maioria dessas ferramentas "no code" são plataformas on-line, portanto, não precisamos nem mesmo da instalação de nenhum software em nossos dispositivos para utilizá-las, basta entrar desde um navegador de internet. Além disso, o low code permite a constante atualização do aplicativo para atender às mudanças nas exigências dos consumidores.

Como regra, estas são interfaces altamente visuais e muito intuitivas. Elas se apoiam em um princípio modular no qual estruturas inteiras podem ser arrastadas com o mouse - o chamado "drag and drop" - e com uma série de componentes prontos em forma de modelos. Isso facilita a construção de fluxos de informação, a apresentação de dados de forma atraente ou a automatização de ações.

Vantagens e benefícios  

Enquanto a computação tradicional é e continuará sendo essencial para a transformação digital e o progresso econômico e social global, o acesso progressivo ao desenvolvimento para usuários não especializados através do low code tem inúmeras vantagens e benefícios. Apesar de oferecer um nível limitado de personalização e flexibilidade, essas ferramentas democratizam a informática e têm o bônus adicional de levar a Inteligência Artificial a mais pessoas.

 Agilidade

Graças ao low/no code, o tempo de comercialização para produtos de sites de pequeno e médio porte é muito reduzido. Ao evitar toda a parte de desenvolvimento do código, em algumas plataformas como Shopify, por exemplo, você pode economizar dias inteiros de trabalho e desenvolver um comércio eletrônico em menos de uma semana. Da mesma forma, os tempos de manutenção e atualização das aplicações também são reduzidos.

 Autonomia

Um benefício importante do uso dessas plataformas é que os usuários não precisam de um especialista em TI ou programador para fornecer um produto de qualidade. O low code abrange funcionalidades e modelos predefinidos e padronizados que anteriormente exigiam a intervenção de uma equipe de desenvolvimento, dando aos usuários autonomia e permitindo aos desenvolvedores tempo para se concentrarem em outras tarefas, tais como o aprimoramento do software ou a concepção de novas soluções web.

 Economia 

Devido à independência dos especialistas em desenvolvimento web, trabalhar com ferramentas de low code e no code requer um investimento inicial mínimo em configuração, treinamento e implementação. Há diferentes taxas para o uso dessas plataformas on-line dependendo da necessidade e do volume de dados e informação solicitada por cada cliente, mas muitos oferecem um período de prova gratuita e até mesmo um plano básico gratuito.

 Colaboração

A acessibilidade das plataformas de low code para os funcionários de qualquer departamento de uma empresa facilita a participação de todos eles na criação de um aplicativo web que atenda às necessidades de todos. Essas ferramentas representam dessa forma uma melhora significativa em termos de colaboração, agilidade e produtividade da equipe, de preferência sempre guiadas ou apoiadas por profissionais de programação "tradicional".

Low-Code vs Traditional Coding, em que eles se diferem?

Traditional Coding
  • Ícone Habilidades requeridas

    Engenheiros de software especializados, muito procurados e caros de contratar.

  • Ícone Custo

    Os aplicativos devem ser construídos a partir do zero, o que custa muito mais do que uma licença de uma plataforma de código baixo.

  • Ícone Rapidez

    Criar plataformas a partir do zero é um processo longo que leva muito tempo, demorando inclusive anos para ser concluído.

  • Ícone Implantação

    São necessários o desenvolvimento de aplicativos em larga escala e um grande investimento a longo prazo até mesmo para os aplicativos menores de processos comerciais.

  • Ícone Alcance

    Os ciclos de desenvolvimentos são muito mais lentos, o que significa que o tempo de implantação é muito maior em comparação com o low code.

Ilustração
Low-Code
  • Ícone Habilidades requeridas

    Ambiente simples de “arrastar e soltar” (drag-and-drop), pode ser usado de forma eficaz tanto por engenheiros de software quanto por desenvolvedores cidadãos.

  • Ícone Custo

    As plataformas exigem apenas uma taxa de acesso para criar aplicativos, o que reduz significativamente os custos de mão-de-obra, manutenção e infraestrutura em comparação com os meios tradicionais.

  • Ícone Rapidez

    Os aplicativos nativos na nuvem de baixo código podem ser desenvolvidos 10 vezes mais rápido que o método tradicional.

  • Ícone Implantação

    Permite criar aplicativos para necessidades comerciais específicas, uma de cada vez, independentemente do seu tamanho.

  • Ícone Alcance

    Os sprints de desenvolvimento podem ser significativamente reduzidos, o que resulta em uma entrega e uma implantação mais rápida.

Ilustração

 VER INFOGRÁFICO: Diferenças entre programação tradicional vs. low code [PDF]

Diferenças entre low code e no code

As plataformas de low code e no code compartilham uma mesma filosofia: reduzir o código ad hoc para tornar a programação mais acessível. Entretanto, dependendo da opção escolhida, a margem de personalização, complexidade e autonomia no desenvolvimento de um aplicativo varia. 

No código:

São plataformas projetadas para usuários que não têm conhecimento de programação, portanto, não precisam de nenhum código. Elas são úteis para criar aplicativos com um curto tempo de vida útil, em casos comerciais simples ou processos manuais que não requerem conexões com sistemas de terceiros, entre outros.

Low code: 

São plataformas com baixo conteúdo de código, que com noções muito básicas de programação manual permitem alguma personalização das funcionalidades e modelos pré-configurados oferecidos pela ferramenta. Elas são usadas para gerar aplicativos com um ciclo de vida mais longo, soluções que devem ser integradas com sistemas corporativos mais complexos ou a criação de Produtos Mínimos Viáveis (MVP), por exemplo.

As plataformas de low code mais populares

Destacamos cinco plataformas de low code que podem facilitar a transformação digital de qualquer organização por oferecer uma espécie de DIY (Do It Yourself) para programar sem código soluções e aplicações web.

  • Wordpress. Nascido em 2003, é um sistema de gerenciamento de conteúdo que se tornou muito popular para a criação de blogs, se tornado mais tarde uma das principais ferramentas para a criação de sites comerciais. De acordo com dados da Simplifier, um em cada 3 sites é gerenciado atualmente através do Wordpress.

  • Honeycode. A Amazon lançou em 2020 sua própria plataforma de low code, onde é possível criar e construir aplicativos para até 20 usuários de forma gratuita através da montagem de módulos de vários tipos.

  • Appsheet. O Google fornece essa plataforma de desenvolvimento sem código para software de aplicativo, que permite que os usuários criem aplicativos de celular, tablet e web usando fontes de dados como Google Drive, DropBox, Office 365 e outras plataformas baseadas na nuvem.

  • PowerApps. A Microsoft criou um ambiente de desenvolvimento para a criação ágil de aplicativos comerciais adaptados às necessidades de cada organização. Com o Power Apps, podem ser criados aplicativos que se conectam aos dados comerciais armazenados na plataforma de dados subjacente (Microsoft Dataverse) ou em várias fontes de dados locais e de forma on-line.

  • Figma. Em 2015, esta start-up quis lançar a primeira ferramenta de design que combinava a acessibilidade da web com a funcionalidade de um aplicativo nativo. Uma ferramenta gratuita para qualquer pessoa iniciar e incentivar o trabalho colaborativo.