My speech at 2012 Liferay Italy Symposium. Talking about Liferay plugins architecture, deploy process and how to extend a portal with hooks and ext plugins.
The document contains 6 lines with random words starting with different letters from a to b. It does not seem to convey a clear topic or message and the words are not related to each other.
This document outlines four approaches to beginning reading instruction:
1) Genuine Love for Reading which includes pre-reading activities to engage students
2) Critical Thinking which involves post-reading discussion of elements of the story
3) Grammar and Oral Language Development which teaches grammar concepts
4) Transfer Stage where decoding and encoding skills are developed
It then provides details on implementing each approach, including techniques for vocabulary development, comprehension questions, and sequencing of reading skills.
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
Slide e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
The document contains 6 lines with random words starting with different letters from a to b. It does not seem to convey a clear topic or message and the words are not related to each other.
This document outlines four approaches to beginning reading instruction:
1) Genuine Love for Reading which includes pre-reading activities to engage students
2) Critical Thinking which involves post-reading discussion of elements of the story
3) Grammar and Oral Language Development which teaches grammar concepts
4) Transfer Stage where decoding and encoding skills are developed
It then provides details on implementing each approach, including techniques for vocabulary development, comprehension questions, and sequencing of reading skills.
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
Slide e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
Il pattern architetturale MVC (Model View Controller) favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l'impiego dei più diffusi pattern di software engineering, il controllo completo dell'HTML generato e degli URL, la testabilità ed estendibilità.
In questa sessione vedremo le novità principali di Asp.Net MVC in versione 3.
La sessione è stata tenuta a SMAU Business Bologna il 9 giugno 2011
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Marco Chiesi
Se sei un programmatore interessato a WordPress ma non hai mai sviluppato un plugin, il WordCamp Bologna è l’occasione giusta per iniziare. Seguendo questo talk introduttivo avrai modo di scoprire i concetti di base, le convenzioni, le buone pratiche, le misure di sicurezza, l’architettura e le principali funzionalità messe a disposizione dalla piattaforma. In questo modo potrai riuscire a muovere i primi passi nel mondo dello sviluppo WordPress e a orientarti meglio in mezzo all’enorme mole di materiale informativo disponibile in rete.
Come portare il profiler di symfony2 in drupal8Luca Lusso
Molti progetti PHP open source hanno adottato Symfony2 come base per la loro prossima versione, tra questi c'è anche il CMS Drupal (http://drupal.org). In questo talk vedremo come scrivere un modulo per Drupal8 in modo da sfruttare il più possibile il suo nuovo motore Symfony2, dall'integrazione con il service container alla gestione degli eventi, dal routing a Twig. Verrà usato come esempio il modulo webprofiler (http://drupal.org/project/webprofiler) per dimostrare come un bundle per Symfony2 possa essere trasformato in un modulo per Drupal8 e integrato facilmente nel sistema.
Prepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
Il pattern architetturale MVC (Model View Controller) favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l'impiego dei più diffusi pattern di software engineering, il controllo completo dell'HTML generato e degli URL, la testabilità ed estendibilità.
In questa sessione vedremo le novità principali di Asp.Net MVC in versione 3.
La sessione è stata tenuta a SMAU Business Bologna il 9 giugno 2011
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Marco Chiesi
Se sei un programmatore interessato a WordPress ma non hai mai sviluppato un plugin, il WordCamp Bologna è l’occasione giusta per iniziare. Seguendo questo talk introduttivo avrai modo di scoprire i concetti di base, le convenzioni, le buone pratiche, le misure di sicurezza, l’architettura e le principali funzionalità messe a disposizione dalla piattaforma. In questo modo potrai riuscire a muovere i primi passi nel mondo dello sviluppo WordPress e a orientarti meglio in mezzo all’enorme mole di materiale informativo disponibile in rete.
Come portare il profiler di symfony2 in drupal8Luca Lusso
Molti progetti PHP open source hanno adottato Symfony2 come base per la loro prossima versione, tra questi c'è anche il CMS Drupal (http://drupal.org). In questo talk vedremo come scrivere un modulo per Drupal8 in modo da sfruttare il più possibile il suo nuovo motore Symfony2, dall'integrazione con il service container alla gestione degli eventi, dal routing a Twig. Verrà usato come esempio il modulo webprofiler (http://drupal.org/project/webprofiler) per dimostrare come un bundle per Symfony2 possa essere trasformato in un modulo per Drupal8 e integrato facilmente nel sistema.
Prepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
1. Using Plugins to Extend and
Customize Liferay
Andrea Di Giorgi
R&D Engineer, SMC Treviso
2.
3. Portlet JSR-286
Punti di Estensione
Utilizzo API pubbliche
Modifica implementazioni classi (Spring e properties)
Modifica pagine JSP
Utilizzo API private
Modifica codice sorgente
5. hooks
Modifica properties (alcune)
Modifica traduzioni
Aggiunta e modifica pagine JSP
Nuovi Indexer Post Processor
Nuove implementazioni servizi generati via Service Builder
Nuovi Servlet Filter
Modifica Action Struts
Portlet + Hook per ModelListener, integrazioni
nei portlet core di Liferay, ecc.
6. ext
Modifica properties non supportate dagli hook
Nuove implementazioni per i bean dichiarati tramite Spring o
properties
Modifica impostazioni dei portlet standard Liferay
liferay-portlet.xml e portlet-custom.xml
Nuove taglib e servizi di utilità
Sovrascrittura diretta di classi
10. Plugins SDK
Ambiente di sviluppo per i plugin Liferay
Basato su Apache Ant
Richiede un bundle Liferay locale
Supporto per Maven in fase di sviluppo
Un Plugins SDK per ciascun progetto «portale»
Versionare l’intero Plugins SDK
11. 1 directory del Plugins SDK
in /portlets, /hooks, ecc.
1 progetto Eclipse/Liferay IDE
1 plugin Liferay
1 file .war
1 webapp
13. Class Loading
JDK Classloader(s)
App Server Classloader(s)
portal-service.jar
Portal Impl
Plugin A
Plugin B
util-bridges.jar
util-java.jar
util-taglib.jar
14. Class Loading
Tutto il codice eseguito nel contesto del plugin
Classi Java eseguite nel contesto del plugin
Pagine JSP eseguite nel contesto del portale
Tutto il codice eseguito nel contesto del portale
15. Class Loading
PortalClassInvoker
Invocare un metodo di una classe del portale da un plugin
PortletActionInvoker
Invocare una Action Struts del portale da un plugin
PortletClassInvoker
Invocare un metodo di una classe di un plugin da un altro
plugin
17. Servlet
Codice eseguito nel contesto del plugin
Basic Authentication
Controllo dei permessi basato sul PermissionChecker
Definizione in web.xml
servlet
SecureFilter
ServletAuthorizingFilter
http://issues.liferay.com/browse/LEP-4682
18. Esempio
Contenuto di un file della Document Library dato il suo
fileEntryId
Basic Authentication
Controllo del permesso di visualizzazione
http://localhost:8080/authenticated-servlet-hook/file_entry/42
22. JSON Web Service
Servizi remoti di un plugin esposti come Web Service JSON
Basic/Digest Authentication
http://www.liferay.com/documentation/
liferay-portal/6.1/development//ai/json-web-services
Controllo dei permessi basato sul PermissionChecker
Deserializzazione automatica degli argomenti
long, String, boolean, Date, Locale, List, Map, etc.
Loose Serialization del valore di ritorno
Model, List, Map, @JSON, JSONSerializable
http://www.liferay.com/community/wiki/-/wiki/Main/JSON+Serialization
23. Esempio
Numero di file nella Document Library suddivisi per «tipo»
(immagine, pdf, ecc.) e ultimo file modificato per ciascun tipo
Basic Authentication
Dati filtrati in base ai permessi dell’utente
http://localhost:8080/api/secure/jsonws/json-web-servicehook.dlstatistics/get-group-statistics?groupId=10180
http://issues.liferay.com/browse/LPS-27014
24. web.xml
<servlet>
<servlet-name>JSON Web Service Servlet</servlet-name>
<servlet-class>
com.liferay.portal.kernel.servlet.PortalClassLoaderServlet
</servlet-class>
<init-param>
<param-name>servlet-class</param-name>
<param-value>
com.liferay.portal.jsonwebservice.JSONWebServiceServlet
</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JSON Web Service Servlet</servlet-name>
<url-pattern>/api/jsonws/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JSON Web Service Servlet</servlet-name>
<url-pattern>/api/secure/jsonws/*</url-pattern>
</servlet-mapping>
25. DLProcessor
Elaborazioni eseguite in modo asincrono al caricamento di un
file nella Document Library
Implementazioni dell’interfaccia
com.liferay.portlet.documentlibrary.util.DLProcessor
Proprietà dl.file.entry.processors
28. Sanitizer
«Disinfetta» i contenuti aggiunti dagli utenti
Commenti, blog, message board, wiki, calendario, ecc.
Eseguito prima del salvataggio nel database
Può modificare e adattare il contenuto
portlet-model-hints.xml
<field name="title" type="String">
<sanitize content-type="text/plain" modes="ALL" />
</field>
31. AutoLogin
Ottenere un utente da una request non autenticata
Cookie, Header, sessione, ecc.
Integrazioni con sistemi SSO
Implementazioni dell’interfaccia
com.liferay.portal.security.auth.AutoLogin
Proprietà auto.login.hooks
https://github.com/sergiogonzalez/twitter-login-hook
32. Antivirus
Controllo file nella Document Library
Implementazione dell’interfaccia
com.liferay.portlet.documentlibrary.antivirus.AntivirusScanner
Proprietà dl.store.antivirus.impl
https://github.com/sergiogonzalez/eset-antivirus-hook