See what pitfalls companies are facing when running Liferay portal. In the previous year, our company has audited 5 real-life projects based on Liferay Portal which are now running in production mode and serving many users. The audits were focused on architecture, infrastructure, technical design and implementation. During the presentation, we will show you common anti-patterns we have found during the audits and their impacts and consequences on the portal.
Introduction to Portlets Using Liferay Portalrivetlogic
Rivet Logic's Costa Rica Developer's Forge presented this at a Costa Rica Java Users Group meeting. The presentation provides an introduction to portlets using Liferay Portal - including Portals and Portlets; Liferay Portal 6.0, Liferay SDK and Liferay IDE; Portlet 1.0 (JSR 168).
Liferay Developer Best Practices for a Successful Deploymentrivetlogic
Liferay is one of the leading open source portals in today’s market. However, it’s more than just a portal, it’s also a framework. And with good frameworks, comes flexibility, and with flexibility comes the need to understand and follow best practices.
This webcast will share lessons learned and best practices gathered from some of our very own customer Liferay implementations. The presentation will cover the gamut of a Liferay implementation lifecycle.
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...DevDay.org
Liferay DXP is a Java-based open source Enterprise Portal Platform that is robust, flexible and easy to maintain. It is used around the world by governments, universities and other large enterprises such as Cisco and Rolex. In this session, you will learn what Liferay is and see step by step how to use some of the most popular and strongest Liferay features.
Introduction to Portlets Using Liferay Portalrivetlogic
Rivet Logic's Costa Rica Developer's Forge presented this at a Costa Rica Java Users Group meeting. The presentation provides an introduction to portlets using Liferay Portal - including Portals and Portlets; Liferay Portal 6.0, Liferay SDK and Liferay IDE; Portlet 1.0 (JSR 168).
Liferay Developer Best Practices for a Successful Deploymentrivetlogic
Liferay is one of the leading open source portals in today’s market. However, it’s more than just a portal, it’s also a framework. And with good frameworks, comes flexibility, and with flexibility comes the need to understand and follow best practices.
This webcast will share lessons learned and best practices gathered from some of our very own customer Liferay implementations. The presentation will cover the gamut of a Liferay implementation lifecycle.
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...DevDay.org
Liferay DXP is a Java-based open source Enterprise Portal Platform that is robust, flexible and easy to maintain. It is used around the world by governments, universities and other large enterprises such as Cisco and Rolex. In this session, you will learn what Liferay is and see step by step how to use some of the most popular and strongest Liferay features.
Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...Milen Dyankov
This slide deck will be removed from here in the future. It has been moved to : https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugins-for-liferay-6-2
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay ScreensDenis Signoretto
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens, Building and Android App with Liferay (Using Liferay as Mobile Backend and Screens for reusable mobile compoents)
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...Crafter Software
Customer needs are ever increasing as they want information combined with the convenience of interacting with your brand when, where, and through whatever device they choose. Meanwhile, employees are demanding digital experiences that facilitate rapid information access, communication and enterprise collaboration.
To meet these demands, enterprises are turning to modern open source and cloud solutions like Crafter CMS to help deliver consistent and personalized experiences throughout the customer journey. And internally, they are adopting Liferay Portal to provide social intranet and collaboration solutions.
Rivet Logic and Crafter Software discuss:
* Business benefits of an integrated Liferay Portal and Crafter CMS solution along with common uses cases
* How Crafter CMS provides the foundation for your multi-channel digital experience approach
* Best practices to follow, and out of the box capabilities, for technology integration
* Customer success stories
* Live Demo
An overview of liferay portal.
The outline is:
1.> Review Liferay Portal
– Enterprise Layer
– Extensions Framework
– Logical Architecture of Liferay
– Service layer
– Service Builder
– Web services
– Persistence Layer
– User Management: Organization, Site, User, Roles, Groups
2.> Out of the box features
– Document and Media Library
• Image Management
• Document Management
– Web Content Management
– Asset, Tagging, and Categorization
Liferay DevCon 2014: Lliferay Platform - A new and exciting visionJorge Ferrer
Liferay is very well known as a good platform for building portals. It provides a nice combination of out of the box features, extensibility and application development options to build almost any website, portal or complex application without starting from scratch every time. But is that all it can do?
For a few years the development world has been focusing more and more on developing for mobile and tablets, glasses and TVs or even provide public web APIs for any developers to build on top of a company’s services and content. And we have noticed “There isn’t a Liferay for those developers!”, most of that type development is started from scratch, “What if Liferay filled that gap?”
During this talk we will show how the most recent developments of the Liferay team are building a more versatile and modular platform than ever, an environment to leverage the most modern frontend development tools for enterprise needs, a set of tools to build mobile apps (for any device) with a powerful backend in a tenth of the time it typically takes. And all of it Open Source and fully standards based.
The Liferay 7 meetup organized by Azilen Technologies on 21st May, 2016 was undeniably a successful Meetup. Brief Overview given by Ravi Gupta & Hetal Prajapati on Liferay 7 Technology. Find here Presentation.
Often business stakeholders are confused about choosing the right Open source Portal and CMS. Not only that the confusion prevails on the actual understanding of a Portal and CMS. Liferay and Drupal are one of the most popular Portal and CMS platforms. This presentation helps business stakeholders choose the right Portal and CMS platform.
Liferay DXP Presentation
As presented during the session, this is the compatibility matrix that you need to check before integrating Liferay
If you have any questions, feel free to contact me on :
My Linkedin Profile : https://www.linkedin.com/in/elyesmakhlouf
My Email Address : makhloufelyes@gmail.com
My Blog : elyesmakhlouf.blogspot.com
An interactive Liferay (DXP) 7 Tech Meet up was codified by Azilen Technologies on 18th March, 2017 at Ahmedabad Management Association.
Those who have missed the direct confrontation can explore few of the knowledge elements here in the Presentation.
When setting up a new project we have some tips and tricks to help you do this in the best way possible, incl. infrastructure, database, standard attributes, logging, code alignment, and service center.
Moved to https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugi...Milen Dyankov
This slide deck will be removed from here in the future. It has been moved to : https://slidr.io/azzazzel/leveraging-osgi-to-create-extensible-plugins-for-liferay-6-2
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay ScreensDenis Signoretto
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens, Building and Android App with Liferay (Using Liferay as Mobile Backend and Screens for reusable mobile compoents)
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...Crafter Software
Customer needs are ever increasing as they want information combined with the convenience of interacting with your brand when, where, and through whatever device they choose. Meanwhile, employees are demanding digital experiences that facilitate rapid information access, communication and enterprise collaboration.
To meet these demands, enterprises are turning to modern open source and cloud solutions like Crafter CMS to help deliver consistent and personalized experiences throughout the customer journey. And internally, they are adopting Liferay Portal to provide social intranet and collaboration solutions.
Rivet Logic and Crafter Software discuss:
* Business benefits of an integrated Liferay Portal and Crafter CMS solution along with common uses cases
* How Crafter CMS provides the foundation for your multi-channel digital experience approach
* Best practices to follow, and out of the box capabilities, for technology integration
* Customer success stories
* Live Demo
An overview of liferay portal.
The outline is:
1.> Review Liferay Portal
– Enterprise Layer
– Extensions Framework
– Logical Architecture of Liferay
– Service layer
– Service Builder
– Web services
– Persistence Layer
– User Management: Organization, Site, User, Roles, Groups
2.> Out of the box features
– Document and Media Library
• Image Management
• Document Management
– Web Content Management
– Asset, Tagging, and Categorization
Liferay DevCon 2014: Lliferay Platform - A new and exciting visionJorge Ferrer
Liferay is very well known as a good platform for building portals. It provides a nice combination of out of the box features, extensibility and application development options to build almost any website, portal or complex application without starting from scratch every time. But is that all it can do?
For a few years the development world has been focusing more and more on developing for mobile and tablets, glasses and TVs or even provide public web APIs for any developers to build on top of a company’s services and content. And we have noticed “There isn’t a Liferay for those developers!”, most of that type development is started from scratch, “What if Liferay filled that gap?”
During this talk we will show how the most recent developments of the Liferay team are building a more versatile and modular platform than ever, an environment to leverage the most modern frontend development tools for enterprise needs, a set of tools to build mobile apps (for any device) with a powerful backend in a tenth of the time it typically takes. And all of it Open Source and fully standards based.
The Liferay 7 meetup organized by Azilen Technologies on 21st May, 2016 was undeniably a successful Meetup. Brief Overview given by Ravi Gupta & Hetal Prajapati on Liferay 7 Technology. Find here Presentation.
Often business stakeholders are confused about choosing the right Open source Portal and CMS. Not only that the confusion prevails on the actual understanding of a Portal and CMS. Liferay and Drupal are one of the most popular Portal and CMS platforms. This presentation helps business stakeholders choose the right Portal and CMS platform.
Liferay DXP Presentation
As presented during the session, this is the compatibility matrix that you need to check before integrating Liferay
If you have any questions, feel free to contact me on :
My Linkedin Profile : https://www.linkedin.com/in/elyesmakhlouf
My Email Address : makhloufelyes@gmail.com
My Blog : elyesmakhlouf.blogspot.com
An interactive Liferay (DXP) 7 Tech Meet up was codified by Azilen Technologies on 18th March, 2017 at Ahmedabad Management Association.
Those who have missed the direct confrontation can explore few of the knowledge elements here in the Presentation.
When setting up a new project we have some tips and tricks to help you do this in the best way possible, incl. infrastructure, database, standard attributes, logging, code alignment, and service center.
Viktor Turskyi "Effective NodeJS Application Development"Fwdays
For 15 years in development, I managed to take part in the creation of a large number of various projects. I have already made a number of talks on the working architecture of Web applications, but this is only part of the efficient development puzzle. We will consider the whole process from the start of the project to its launch in production. I’ll tell you how we approach the ideas of the “12 Factor App”, how we use the docker, discuss environment deployment issues, security issues, testing issues, discuss the nuances of SDLC and much more.
(Image on page 3: it's the traditional fast/good/cheap trade-off. Something glitched in the conversion))
The decisions we make in getting software ready to ship can have lasting consequences for later versions. Early priorities can end up setting the direction for the whole project.
My presentation from PyConAU 2012 (including bonus slides that were cut before the talk due to time limitations)
Learn about best practices for developing Moodle code from custom plugins to submitting bug fixes for core Moodle code. Topics covered will include:
Overview of Moodle plugin systems and available API's
Working with the Moodle tracker
Peer review process
Maintaining a custom plugin using Github
Submitting core patches / bug fixes to Moodle HQ
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020OdessaJS Conf
How to develop NodeJS apps effectively? I will tell you all details and share his personal experience on the whole process: from the very start and up to the production stage.
You will also learn more about Docker, SDLC and 12 Factor App. Save the date!
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...Theo Jungeblut
In the past, applications where created as monolithic entities running on a single server. If this is the past for you, too, you will have experienced the downside of modern distributed and cloud applications, as debugging, troubleshooting, and monitoring is not easily accomplished with traditional approaches.
Within this session, we will explore different possibilities for collecting and analyzing the needed information to solve issues on modern distributed application and discuss the advantages and disadvantages of each approach like debugger, log files, performance counter and third party solutions. The focus of this session will be on Developer and DevOps need, as increased release cycles and third party dependency more and more result in the need for troubleshooting also on production system, rather than in an isolated test environment.
This session requires a solid understanding of distributed applications and knowledge of SOA, but most principles also apply to and can be beneficial for more traditional application design approaches. The used code examples are in .NET but the shown principles generally apply to other languages, too, and shown software is often available for a variety of environments.
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...Theo Jungeblut
In the past, applications where created as monolithic entities running on a single server. If this is the past for you, too, you will have experienced the downside of modern distributed and cloud applications, as debugging, troubleshooting, and monitoring is not easily accomplished with traditional approaches.
Within this session, we will explore different possibilities for collecting and analyzing the needed information to solve issues on modern distributed application and discuss the advantages and disadvantages of each approach like debugger, log files, performance counter and third party solutions. The focus of this session will be on Developer and DevOps need, as increased release cycles and third party dependency more and more result in the need for troubleshooting also on production system, rather than in an isolated test environment.
This session requires a solid understanding of distributed applications and knowledge of SOA, but most principles also apply to and can be beneficial for more traditional application design approaches. The used code examples are in .NET but the shown principles generally apply to other languages, too, and shown software is often available for a variety of environments.
Ad109 - XPages Performance and Scalabilityddrschiw
Understanding the XPages architecture is key to building performant scalable enterprise-ready Lotus Domino web applications. We'll show how to go under the hood to discover functional features that help your application perform and scale well. You'll learn about design patterns and techniques that ensure your applications are optimally tuned for your business requirements, and we'll show how to integrate existing business logic -- without increasing performance cost.
Modern HA applications in nowadays are developed with set of small focused and discrete Microservices. It's a trending concept and opens/solves questions like maintenance, scaling, live-deployments, security, fault-tolerance etc.
Not my problem - Delegating responsibility to infrastructureYshay Yaacobi
Slides for for my talk, appeared on Code-Europe Poznan 12.06.2018
(https://www.codeeurope.pl/en/speakers/yshay-yaacobi)
https://github.com/yshayy/not-my-problem-talk
https://github.com/Yshayy/not-my-problem-talk/blob/master/slides/demo.md
How would you build the world’s largest, fastest, most complex Magento ecommerce store? Three COPIOUS engineers share their approaches to this problem, including best practices, code samples, and system configurations necessary to scale Magento up to 100,000 daily orders with a catalog of 100,000 products.
A brief introduction to test automation covering different automation approaches, when to automate and by whom, commercial vs. open source tools, testability, and so on.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
1. Liferay in Real Projects
Common mistakes on Liferay projects and
ways how to avoid them
Aleš Rybák
Portal Specialist / Consultant
IBA CZ, s. r. o.
2.
3.
4.
5. Typical problems
●
Disfunctions and
non-standard behaviour
●
Poor performance
●
●
Stability problems
●
●
●
Security vulnerabilities
Overloading of integrated
systems
Usability issues
●
●
●
●
Liferay's potential not fully
leveraged
Maintenance and service
continuity is expensive
Multi vendor env.
doesn't exist
Hard to implement
changes
Low business flexibility
10. Problem areas
●
Architecture & design
●
Build & release
●
Code & technical realization
–
Unit tests
–
Frameworks
●
Insufficient knowledge about Liferay Portal (not only)
●
Governance & processes
11. Absence of Information architecture
●
●
Gap between applications
and customer's needs /
final state
Only developed portlets
and customizations. Let
the customer to do the
rest.
●
●
●
●
Content first
Connection between
technology and real world
problems
Define structure of
content and context for
applications
Base for usability
12. Misusing Liferay plugins
●
Use plugins for the right purpose
–
portlet plugin for new functionality
–
themes and layouts for L&F
–
hooks for JSP changes, mild changes via exposed APIs
–
ext plugin for more drastical changes
●
Use as non-invasive approaches as possible
●
Avoid JS hooks
13. Portlet decomposition
●
God portlet / Über-portlet
–
–
●
one big portlet doing
everything
one portlet placed several
times in portal with different
configuration
●
●
●
One portlet per use-case is
good start
merge some to avoid evidently
unnecessary IPC
this needs experience and
sort of sense
Hard to
–
change
–
reuse
–
optimize
●
when checking roles consider
division into more smaller
portlets for each role
15. “Exotic” infrastructure
●
Well tested
–
Linux
●
Non-standard deploys
●
“Enterprise stack”
–
Liferay EE
–
Oracle DB
–
–
MySQL & Oracle
–
IBM Websphere AS
–
●
Tomcat
Apache
–
MS Windows Server
KISS, use “exotic”
components only if you
know what you're doing
(usually you don't)
●
Compatibility problems
●
Extra knowledge required
●
WAS & WebLogic
–
things which take 10 minutes
on Tomcat can take hours
16. Build
Optimal solution
mvn clean install
...
BUILD SUCCESSFUL
Reality
●
●
●
●
●
●
For anything else have
documentation and e.g.
maven profile
Use CI / automatic builds
Missing artifacts
Need to build each module
separately
Always needs to connect to VPN
Side effects (e.g. deleting files
on servers, accessing DB)
●
Environment variables needed
●
OS dependency
17. Snapshot version in production
●
Supplier isn't tagging releases
●
All changes go to the trunk which is only source
●
Customer has no idea
–
what is deployed on production
–
what to test / accept
–
whether reported bugs are fixed
–
what's the state of the project
●
Very good excuse for supplier
●
FIX: release new versions with change log
18. Code and file system anarchy
●
●
●
●
●
Mess everywhere
Every single thing in code is
done in different way
●
Unification
●
Automatization
–
No rules for VCS
Ad-hoc file/class/... naming
and structures (depends on
creator's fantasy)
Backups into different
places – no one knows if
they are still valid/needed
●
Scripts / tools for most
tasks
In the code - do things
in a same way even
though it's not the best
way!
19. Code style
●
“How to write unmaintainable code”
–
http://mindprod.com/jgloss/unmain.html
–
if you follow all these rules religiously, you will even
guarantee yourself a lifetime of employment, since no one
but you has a hope in hell of maintaining the code
20. Code style 2
●
●
High complexity – thousands of SLOC per method
Unreadable code (sometimes it's better to remove all comments
and reformat all sources automatically)
●
Wrong decomposition and unclear structure
●
Cyclic dependencies
●
Massive duplication
●
Unreachable code
●
Code commented-out
●
Bypassing conventions
●
and many more (also in next slides)
21. Code and style 3
●
Static controls of the code
–
CheckStyle
–
PMD
–
FindBugs
–
SonarQube
●
Read the book
●
Have guidelines
●
Do quick code reviews
and refactorings
22. Thread danger (the evil brother of Thread safety)
public class MyPortlet extends GenericPortlet {
private PageData data; // to be displayed in JSP
public void processAction(actionReq, actionResp) {
data = prepareData(req);
}
public void doView(renderReq, renderResp) {
dispatchToJSP(renderReq, renderResp, data);
}
...
}
23. Resources wasting
●
Not closing streams
●
Not closing connections
●
Missing cleanup actions
(e. g. temp files)
●
●
Use tested mature
frameworks where
possible
Use static analysis
24. Logging
●
●
●
●
●
Logging too many
messages and
unimportant info
●
●
Crucial info is missing
Missing context info (e.g.
user ID, request ID, etc.)
Logging private data
Not using
LOG.ifDebugEnabled()
●
●
Define rules for logging
Logs are most used (and
sometimes the only) way
to find out what went
wrong on production
If using Log4J use LogMF
Read and analyze your
logs – optimize the
logging levels
28. Portlets mistakes
●
Big data in session
●
Stateful portlets
●
●
unnecessary
weird
Friendly URLs
●
start with standard pure
Java portlets (read
JSR-286 standard)
–
IPC
–
Learn how to develop
portlets
–
processAction instead
render
–
●
●
look if framework you
are using has support
for portlets or portlet
bridge
Stick with best practices
29. Frameworks non-usage
●
●
Reinventing the wheel in
code
●
Developing my own
framework
–
–
formatting dates
–
controllers
–
file handling
Apache Commons
–
●
Spring
–
UI
Standards & RI
–
JMS
–
–
cache
–
Look for suitable
framework first
Other sources
Select the mature
supported one
30. JPA / Hibernate
●
Doing in Java what DB should do (e. g. list size)
●
Combination with pure JDBC
–
problem with 2nd level cache
●
Cascades
●
Explicit entity refresh
●
Many requests
–
very often can be optimized
32. Liferay users, roles, groups, permissions...
●
One of the most used Liferay's APIs
●
“Patterns”
–
one role per user
●
–
one global role per organization
●
–
only for small number of users
define and use organization roles
one role per document
●
never ever do this
34. Business knowledge of Liferay
●
●
Unable to provide consultancy in required or any quality
Customer is able to maneuver supplier into unnecessary
drastic customizations
–
“bender and narrower”
35. Technical knowledge of Liferay
●
Many customizations are done programmatically
–
–
●
changes in Java code, JSPs, sometimes across whole
solution including interfaces
some of these changes can be done via configuration
Examples
–
Registration
–
no-cache headers
–
Changes of tag libs
36. Undefined competences
●
Hidden responsibilities
and costs for customer
–
portal platform
–
application servers
–
connected systems
–
monitoring and
maintenance
●
●
Define what is and what
isn't part of the project
Identify risks and owners
38. ●
●
Copy-paste code from StackOverflow
– it's in acceptable quality
Don't make tags or release any versions
(this one is final)!
●
Read “how to write unmaintainable code” and follow it
●
Never test your code!
●
Write your own frameworks! The more, the better.
–
Never test your frameworks!
●
Be agile! = Never write any documentation!
●
Act like fools and just don't care!
39. ●
●
Copy-paste code from StackOverflow
– it's in acceptable quality
Don't make tags or release any versions
(this one is final)!
●
Read “how to write unmaintainable code” and follow it
●
Never test your code!
●
Write your own frameworks! The more, the better.
–
Never test your frameworks!
●
Be agile! = Never write any documentation!
●
Act like fools and just don't care!
●
Don't blame Liferay for another application's problems!