Low code
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</@>
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?
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.