A first presentation of the Dandelion project, recently released in v0.10.0.
Slides are available online here: http://dandelion.github.io/slides/dandelion-0.10.0
Czym jest webpack i dlaczego chcesz go używać?Marcin Gajda
Podczas tworzenia frontendu aplikacji internetowych często odkrywamy, że nasza baza kodu JavaScript dość szybko się rozrasta i lawinowo przybywa nam zależności. Oczywistym rozwiązaniem wydaje się wtedy dzielenie kodu na mniejsze moduły, ale jak to robić mądrze? Tu z pomocą przychodzi nam webpack. Podczas tej prezentacji dowiemy się, w jaki sposób działa to narzędzie, jak konfiguruje się w nim kompilację assetów oraz jakie dodatkowe możliwości ono w sobie kryje.
It's no denying that rich Javascript applications (sometimes called One Page Applications) are a big thing, but what if you want to leverage Drupal on the backend, or have an existing site? Tools like Angular.JS and EmberJS are great when you have an API, but Drupal 7 doesn't really have an API layer. I'll explore the parts of a one page application and how to integrate it into either an existing or a new Drupal site, and the pitfalls that one must watch out for.
Sample code for the demos are available at https://github.com/dragonmantank/spa-drupal
Capture, record, clip, embed and play, search: video from newbie to ninjaVito Flavio Lorusso
Example driven way, on how you can easily control provisioning of resources, stream, record video, clip it and embed it in your web site.
Integration of video workflows with search and indexing processor to leverage a complete end-to-end solution like a video sharing portal
Czym jest webpack i dlaczego chcesz go używać?Marcin Gajda
Podczas tworzenia frontendu aplikacji internetowych często odkrywamy, że nasza baza kodu JavaScript dość szybko się rozrasta i lawinowo przybywa nam zależności. Oczywistym rozwiązaniem wydaje się wtedy dzielenie kodu na mniejsze moduły, ale jak to robić mądrze? Tu z pomocą przychodzi nam webpack. Podczas tej prezentacji dowiemy się, w jaki sposób działa to narzędzie, jak konfiguruje się w nim kompilację assetów oraz jakie dodatkowe możliwości ono w sobie kryje.
It's no denying that rich Javascript applications (sometimes called One Page Applications) are a big thing, but what if you want to leverage Drupal on the backend, or have an existing site? Tools like Angular.JS and EmberJS are great when you have an API, but Drupal 7 doesn't really have an API layer. I'll explore the parts of a one page application and how to integrate it into either an existing or a new Drupal site, and the pitfalls that one must watch out for.
Sample code for the demos are available at https://github.com/dragonmantank/spa-drupal
Capture, record, clip, embed and play, search: video from newbie to ninjaVito Flavio Lorusso
Example driven way, on how you can easily control provisioning of resources, stream, record video, clip it and embed it in your web site.
Integration of video workflows with search and indexing processor to leverage a complete end-to-end solution like a video sharing portal
Drupal isn't a content management system. It's an application development platform that happens to ship with a great CMS as it's default implementation. Look at any chart comparing features of development frameworks and you'll see user management and authentication, forms management and validation, data storage, database migrations, internationalization and translation, MVC model with flexible templating, unit testing, and caching. Sounds a lot like Drupal. We'll look at why Drupal is an ideal application development platform for apps beyond content management, talk about where Drupal can improve in these areas, and look at an example application.
Sherlock Homepage - A detective story about running large web services (VISUG...Maarten Balliauw
The site was slow. CPU and memory usage everywhere! Some dead objects in the corner. Something terrible must have happened! We have some IIS logs. Some traces from a witness. But not enough to find out what was wrong. In this session, we’ll see how effective telemetry, a profiler or two as well as a refresher of how IIS runs our ASP.NET web applications can help solve this server murder mystery.
Presentation on how Meetup tackles web performance. Given on:
- Nov 17th, 2009 for the NY Web Performance Group (http://www.meetup.com/Web-Performance-NY/)
- Jan 26th, 2010 for NYC Tech Talks Meetup Group (http://www.meetup.com/NYC-Tech-Talks/)
Realización de respaldos de datos de SQL Server 2015 a Windows Azure, requerimientos on-premises y en Azure, y procedimiento para realizarlo mediante SSMS, T-SQL, Powershell y SMO
Building Performance - ein Frontend-Build-Prozess für Java mit MavenOliver Ochs
Jan Weinschenker und Oliver Ochs (Holisticon AG)
In diesem Vortrag geht es um eine konkrete Website. Im ersten Teil des Vortrags stellen wir die wichtigsten Optimierungsmaßnahmen vor, die außerhalb eines Builds durchgeführt wurden. Für eine dauerhafte, nachhaltige Performance-Optimierung müssen die Maßnahmen automatisiert bzw. in den Build-Prozess integriert werden. Im zweiten Teil des Vortrags zeigen wir einen beispielhaften Build-Prozess für Java-Webanwendungen, der Teile der Optimierungsmaßnahmen durchführt. Andere Teile müssen durch eine geeignete Architektur sichergestellt werden, wofür wir ebenfalls Ideen liefern.
In its 3.2 and 3.3 generations, the Spring Framework focuses on core features for asynchronous processing and message-oriented architectures, as well as enhancements to its caching support and its language support. The Spring Framework project also comes with a new Gradle-based build and a new GitHub-based contribution model. In this session, we'll discuss key features in this year's Spring 3.2 and next year's Spring 4.0, including support for upcoming standards such as JCache, websockets, JMS 2.0, and not least of all Java 8's language features.
Drupal isn't a content management system. It's an application development platform that happens to ship with a great CMS as it's default implementation. Look at any chart comparing features of development frameworks and you'll see user management and authentication, forms management and validation, data storage, database migrations, internationalization and translation, MVC model with flexible templating, unit testing, and caching. Sounds a lot like Drupal. We'll look at why Drupal is an ideal application development platform for apps beyond content management, talk about where Drupal can improve in these areas, and look at an example application.
Sherlock Homepage - A detective story about running large web services (VISUG...Maarten Balliauw
The site was slow. CPU and memory usage everywhere! Some dead objects in the corner. Something terrible must have happened! We have some IIS logs. Some traces from a witness. But not enough to find out what was wrong. In this session, we’ll see how effective telemetry, a profiler or two as well as a refresher of how IIS runs our ASP.NET web applications can help solve this server murder mystery.
Presentation on how Meetup tackles web performance. Given on:
- Nov 17th, 2009 for the NY Web Performance Group (http://www.meetup.com/Web-Performance-NY/)
- Jan 26th, 2010 for NYC Tech Talks Meetup Group (http://www.meetup.com/NYC-Tech-Talks/)
Realización de respaldos de datos de SQL Server 2015 a Windows Azure, requerimientos on-premises y en Azure, y procedimiento para realizarlo mediante SSMS, T-SQL, Powershell y SMO
Building Performance - ein Frontend-Build-Prozess für Java mit MavenOliver Ochs
Jan Weinschenker und Oliver Ochs (Holisticon AG)
In diesem Vortrag geht es um eine konkrete Website. Im ersten Teil des Vortrags stellen wir die wichtigsten Optimierungsmaßnahmen vor, die außerhalb eines Builds durchgeführt wurden. Für eine dauerhafte, nachhaltige Performance-Optimierung müssen die Maßnahmen automatisiert bzw. in den Build-Prozess integriert werden. Im zweiten Teil des Vortrags zeigen wir einen beispielhaften Build-Prozess für Java-Webanwendungen, der Teile der Optimierungsmaßnahmen durchführt. Andere Teile müssen durch eine geeignete Architektur sichergestellt werden, wofür wir ebenfalls Ideen liefern.
In its 3.2 and 3.3 generations, the Spring Framework focuses on core features for asynchronous processing and message-oriented architectures, as well as enhancements to its caching support and its language support. The Spring Framework project also comes with a new Gradle-based build and a new GitHub-based contribution model. In this session, we'll discuss key features in this year's Spring 3.2 and next year's Spring 4.0, including support for upcoming standards such as JCache, websockets, JMS 2.0, and not least of all Java 8's language features.
Taraxacum Officinale, más conocido como diente de león.
Principios activos
Partes utilizadas
Propiedades
Usos
Contraindicaciones
Historias y usos populares sobre el diente de león
Recetas
Plantas para combinar
Palabras clave
http://www.spooky2-mall.com/ - Western and eastern medicine have reached a consensus upon dandelion's valuable medicinal uses, which capable of creating abundant health benefits upon our body.
Dandelion API and mobile payment: food for thoughts for H-ACK PAYMENTSpazioDati
Some ideas to use Dandelion API for H-ACK PAYMENT, a hackathon at H-FARM on mobile payment. Managing unstructured data and content to improve user experience on mobile payment scenario. From more contextual informations, to contextual ads.
Taraxacum Officinale, más conocido como diente de león.
Principios activos
Partes utilizadas
Propiedades
Usos
Contraindicaciones
Historias y usos populares sobre el diente de león
Recetas
Plantas para combinar
Palabras clave
Ajax Performance Tuning and Best PracticesDoris Chen
Ajax Performance Tuning and Best Practices
Perhaps the most primary motivation to develop Ajax application is to have better user experience hence how to achieve the optimized response time becomes an important aspect in Ajax performance optimization. In this session, we will focus on discussing the improvement of the network transfer time and the JavaScript processing time as the server response is already generally well understood. We will use an Ajax framework case study to show how an Ajax optimization process can be used to optimize the performance. During the optimization process, we will demonstrate how to measure the performance, how to determine the bottlenecks and how to resolve the problems by applying various best practice. Various tools like NetBeans, Firebug, and YSlow will be illustrated to show when to use what and how to use them. The list of Ajax Performance tuning tips on combining CSS and JavaScript resources, setting the correct headers, using minifed JavaScript, GZip contents, and Strategically placing of CSS links and JavaScript tags will be discussed in the session.
Intermediate level Ajax and Enterprise developers can really benefit from this session.
After the session, the audience will be able to:
-apply Ajax Performance Optimization process
-choose the right tool and use them
-lleverage various best practice and performance tuning tips
-improve their Ajax application response time ultimately
Perhaps the most primary motivation to develop Ajax application is to have better user experience hence how to achieve the optimized response time becomes an important aspect in Ajax performance optimization. In this session, we will focus on discussing the improvement of the network transfer time and the JavaScript processing time as the server response is already generally well understood. We will use an Ajax framework case study to show how an Ajax optimization process can be used to optimize the performance. During the optimization process, we will demonstrate how to measure the performance, how to determine the bottlenecks and how to resolve the problems by applying various best practice. Various tools like NetBeans, Firebug, and YSlow will be illustrated to show when to use what and how to use them. The list of Ajax Performance tuning tips on combining CSS and JavaScript resources, setting the correct headers, using minifed JavaScript, GZip contents, and Strategically placing of CSS links and JavaScript tags will be discussed in the session.
Intermediate level Ajax and Enterprise developers can really benefit from this session.
After the session, the audience will be able to:
-apply Ajax Performance Optimization process
-choose the right tool and use them
-lleverage various best practice and performance tuning tips
-improve their Ajax application response time ultimately
It is a build tool that puts all of your assets, including Javascript, images, fonts,
CSS, in a dependency graph.
It lets us use require() in our source code to point to local files, like images.
We can decide how they’re processed in our final javascript bundle, like
replacing the path with a URL.
Organizations focus process optimization of
Data Tier
Application Tier
Presentation Tier is usually ignored.
Presentation Tier is responsible for more than 30% of Client/Server application performance.
Slides from Node.js and Twitter Bootstrap crash course given to Penn Graduate Computing Club. Covers creating basic node app, using the bootstrap grid, and deploying to an EC2 machine.
80% of the time it takes for a web page to load is on the client side.
Using all the tips in this presentation should cut 25% to 50% off the load time of optimized page requests.
Drupal (6 or 7) can be used to, fairly easily, implement a whole bunch of these “front-end performance” upgrades, and knock a ton of errors off of the Yahoo! and Google speed-checker tools validation checklists.Get firebug first.
After consulting with several companies on performance related issues, it became clear that one of the biggest performance issues facing websites today is the sheer amount of JavaScript needed to power the page. The demand for more interactive and responsive applications has driven JavaScript usage through the roof. It’s quite common for large sites to end up with over 1 MB of JavaScript code on their page even after minification. But do today’s web applications really need that much JavaScript?
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
3. Quick introduction
Free & Open Source Java framework
Focused on two aspects of Web development:
Assets management (js, css): organization in bundles, HTML
injection, soon asset minification and merging
Integration of powerful Javascript librairies thanks to a set of
components
Licensed under BSD 3-Clause
Hosted on Github
Current version: 0.10.0
3 / 101
9. Asset bundles
Declarative approach, via JSON (soon XML and JavaConfig)
{
"bundle":"jquery",
"assets":[
{
"name":"jquery",
"version":"1.11.1",
"type":"js",
"locations":{
"webapp":"/assets/js/jquery-1.11.1.js"
}
}
]
}
Several locations are allowed for each asset: webapp, classpath, CDN, JAR,
WebJar and API!
See the docs
9 / 101
10. Dependencies between bundles
You can declare one or more bundles as dependencies
{
"bundle":"select2",
"dependencies":["jquery"],
"assets":[
{
"name":"select2",
"version":"3.4.8",
"type":"js",
"locations":{
"webapp":"/assets/js/select2.js"
}
},{
"name":"select2",
"version":"3.4.8",
"type":"css",
"locations":{
"webapp":"/assets/css/select2.css"
}
}
]
}
10 / 101
11. Asset locators
Internal components used by Dandelion to fetch assets in
different ways
Used via the corresponding location key in the bundle declaration
See the docs
11 / 101
22. JAR
Bundle
HTML
Inside a Servlet 2.0+ container:
<scriptsrc="/[contextPath]
/dandelion-assets
/[cacheKey]
/app.js"></script>
Inside a Servlet 3.0+ container:
<scriptsrc="/[contextPath]/folder/js/app.js"></script>
Dandelion automatically detects whether the
running server is using the Servlet 3.x API or lower
Asset locators — jar
22 / 101
26. New
dependency
WebJar
Bundle
HTML
Inside a Servlet 2.0+ container:
<linkrel="stylesheet"href="/[contextPath]
/dandelion-assets
/[cacheKey]
/bootstrap.css"/>
Inside a Servlet 3.0+ container:
<linkrel="stylesheet"href="/[contextPath]
/webjars
/bootstrap
/3.2.0
/css
/bootstrap.css"/>
Dandelion automatically detects whether the
running server is using the Servlet 3.x API or lower
Asset locators — webjar
26 / 101
27. Asset locators — delegate
Reads the content of an asset from a special parameter stored inside the
AssetRequestContext
This special parameter:
must be stored under the DelegateLocator.DELEGATED_CONTENT_PARAM
key
must be a class that implements DelegatedContentand where the
getContent()method must return the asset content to be injected ]
27 / 101
32. Bundle loaders
Scan for bundles in the classpath, in the following order:
VendorBundleLoader: intended to load vendor bundles (e.g. jquery.json)
ComponentBundleLoader: intended to load components bundles (e.g. ddl-
dt.json)
DandelionBundleLoader: intended to load user bundles (e.g. custom-
bundle.json)
See the docs
32 / 101
33. Bundle graph
On the application startup, Dandelion creates a Contextthat will be injected
into each request.
This Contextprovide several information:
all configuration options (coming from the properties files)
a bundle graph (DAG), built from all scanned bundles
Example:
src
|__main
|__resources
|__dandelion
|__jquery.json
|__select2.json
See the docs
33 / 101
34. Interacting with the bundle graph
1/4) Using the JSP taglib
<%@taglibprefix="dandelion"uri="http://github.com/dandelion"%>
<dandelion:bundleincludes="select2"/>
2/4) Using the Thymeleaf dialect
<!DOCTYPEhtml>
<htmlxmlns:th="http://www.thymeleaf.org"
xmlns:ddl="http://github.com/dandelion"
ddl:bundle-includes="select2">
...
</html>
See the docs
34 / 101
35. Interacting with the bundle graph
3/4) Using the fluent API
AssetRequestContext
.get((HttpServletRequest)request)
.addBundle("select2");
4/4) Using the configuration file ("permanent" bundles)
bundle.includes=select2
See the docs
35 / 101
36. Interacting with the bundle graph
Whatever the technology used, Dandelion automatically injects all
requested assets into the HTML code:
in the right order
in the configured position, by default CSS in <head>and JS just before
</body>
and (soon) applies the right HTTP headers, therefore optimizing browser
caching
<html>
<head>
<linkhref="/context/assets/css/select2.css"/>
</head>
<body>
...
<scriptsrc="/context/assets/js/jquery-1.11.1.js"></script>
<scriptsrc="/context/assets/js/select2.js"></script>
</body>
</html>
36 / 101
37. Asset processors
Intended to process assets, in different ways...
Built-in processors:
jsMinYui:JS minification based on Yahoo's YUI Compressor
cssMinYui:CSS minification based on Yahoo's YUI Compressor
cssMin:CSS minification based on a fork of YUI
jsMin:JS minification based on a fork of YUI
cssUrlRewriting:Image URLs rewriting in CSS
Soon:
cssLess: Convert Less resources to CSS
cssSass: Convert Sass resources to CSS
cssImport: Processes @import
coffeeScript: Convert CoffeeScript to JavaScript
...
See the docs
37 / 101
38. Development/production modes
Development mode
Built-in dev tools available
Server-side caching disabled
Browser caching disabled
Production mode
No bundle graph viewer, no bundle reloading
Minification enabled
Server-side caching enabled
(soon) Browser caching enabled
(soon) GZIP compression
(soon) Asset versioning
(soon) JMX monitoring
38 / 101
39. Devtools
Bundle graph
viewer
Dev tool allowing to visualize how Dandelion-Core
handles assets, in the current request
http://example.com/context/some/uri?showGraph
Available in development mode only
See the docs
39 / 101
40. Devtools
Bundle graph
viewer
Asset
reloading
During development, both server-side and client-side
caching are disabled.
Client-side, Dandelion-Core applies the following HTTP
headers:
Cache-Control = no-cache,no-store,must-
revalidate(HTTP 1.1)
Pragma = no-cache(HTTP 1.0)
Expires = 0(Proxies)
40 / 101
41. Devtools
Bundle graph
viewer
Asset
reloading
Bundle
reloading
During development, all changes made in asset bundles
can be reflected.
Just manually append a new reloadBundlesrequest
parameter to the current URL to perform a full bundle
reloading.
http://example.com/context/some/uri?reloadBundles
Available in development mode only
41 / 101
46. Introducing Dandelion-Datatables
First and most advanced component of the Dandelion framework
Facilitates the integration of DataTables, an awesome jQuery
plugin which will add advanced interaction controls to any HTML
table
Easy to use
Easy to extend
Inspired by the excellent DisplayTag library
46 / 101
47. Key features
JSP & Thymeleaf support
Typical features such as paging, filtering and sorting
DOM sources, AJAX sources and server-side processing
Responsive design
Export in multiple formats
Several themes available: Bootstrap 2, Bootstrap 3, jQueryUI
I18n
Integration with Spring/Spring MVC and other projects
47 / 101
48. What it looks like with JSP?
<%@taglibprefix="datatables"uri="http://github.com/dandelion/datatables"%>
<datatables:tableid="myTableId"data="${persons}">
<datatables:columntitle="Id"property="id"/>
<datatables:columntitle="LastName"property="lastName"/>
<datatables:columntitle="FirstName"property="firstName"/>
<datatables:columntitle="City"property="address.town.name"/>
<datatables:columntitle="Mail"property="mail"/>
</datatables:table>
id: HTML pass-through attribute
data: DOM source, collection of POJOs
title: sets the content of the column header
property: name of the object's attribute of the collection being iterated on
48 / 101
49. What it looks like with Thymeleaf?
<tableid="myTableId"dt:table="true">
<thead>
<tr>
<th>Id</th>
<th>Firstname</th>
<th>Lastname</th>
<th>City</th>
<th>Mail</th>
</tr>
</thead>
<tbody>
<trth:each="person:${persons}">
<tdth:text="${person.id}">1</td>
<tdth:text="${person.firstName}">John</td>
<tdth:text="${person.lastName}">Doe</td>
<tdth:text="${person?.address?.town?.name}">Nobodyknows!</td>
<tdth:text="${person.mail}">john@doe.com</td>
</tr>
</tbody>
</table>
dt:table: enables the Dandelion-Datatables dialect in the current table
49 / 101
50. HTML The HTML is generated:
either by Dandelion-Datatables (JSP)
or directly by Thymeleaf
<tableid="myTableId">
<thead>
<tr>
<th>Id</th>
<th>Firstname</th>
<th>Lastname</th>
<th>City</th>
<th>Mail</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Wing</td>
<td>Cunningham</td>
<td></td>
<td>ornare.libero@mail.edu</td>
</tr>
...
</tbody>
</table>
How it works?
50 / 101
51. HTML
JavaScript
As well as the JS code that initializes DataTables
varoTable_myTableId=$('#myTableId');
varoTable_myTableId_params={
"aoColumns":[
{"mData":"id","sDefaultContent":""},
{"mData":"lastName","sDefaultContent":""},
{"mData":"firstName","sDefaultContent":""},
{"mData":"address.town.name","sDefaultContent":""},
{"mData":"mail","sDefaultContent":""}
]
}
$(document).ready(function(){
oTable_myTableId.dataTable(oTable_myTableId_params);
});
How it works?
51 / 101
52. HTML
JavaScript
Required
assets
An AssetRequestContextis filled with the required assets,
either by the JSP taglib or by the Thymeleaf dialect...
AssetRequestContext
.get(request)
.addBundle("datatables")
.addBundle("ddl-dt")
...;
... so that they will be injected by Dandelion-Core into the
response
<linkhref="//cdn/jquery.dataTables.css"/>
...
<scriptsrc="//cdn/jquery.js"></script>
<scriptsrc="//cdn/jquery.dataTables.js"></script>
<scriptsrc="/[contextPath]
/dandelion-assets
/[SHA]
/dandelion-datatables-0.10.0.js"></script>
How it works?
52 / 101
54. HTML (DOM) sources
Read data directly from the DOM
Works well with small/medium data sources
54 / 101
55. Controller Example with a Spring MVC controller
@Controller
publicclassController{
@ModelAttribute("persons")
publicList<Person>populateTable(){
returnpersonService.findAll();
}
}
HTML sources — example
55 / 101
58. AJAX sources
Read data from virtually any JSON data source that can be obtained by
AJAX
Client-side processing
Works well with small/medium data sources
58 / 101
59. Controller Example with a Spring MVC controller
@Controller
publicclassAjaxController{
@RequestMapping(value="/persons")
public@ResponseBodyList<Person>findAll(){
returnpersonService.findAll();
}
}
AJAX sources
59 / 101
62. AJAX sources + server-side processing
Read data from virtually any JSON data source that can be obtained by
AJAX
Server-side processing
Each draw of the table will result in a new AJAX request being made to
get the required data
Works well with small/medium/large data sources
62 / 101
63. AJAX sources + server-side processing
Dandelion-Datatables provides a convenient API
DatatablesCriterias
Stores all DataTables parameters (current page, entries to display,
sorted columns, ...)
@RequestMapping(value="/persons")
public@ResponseBodyDatatablesResponse<Person>
filter(HttpServletRequestrequest){
//MapsrequestparametertoaDatatablesCriteriasinstance
DatatablesCriteriascriterias=
DatatablesCriterias.getFromRequest(request);
...
63 / 101
64. AJAX sources + server-side processing
Dandelion-Datatables provides a convenient API
DataSet
All entries returned by the data access layer should be wrapped in this
class in order to build a DataTablesResponse
...
//Getfilteredandpageddata
DataSet<Person>persons=
personService.findPersons(criterias);
...
64 / 101
65. AJAX sources + server-side processing
Dandelion-Datatables provides a convenient API
DataTablesResponse
Contains a builder that helps to return the data in the format required
by DataTables
Must be converted into JSON
...
//BuildtheresponsethatwillbeconvertedtoJSON
returnDatatablesResponse.build(persons,criterias);
}
65 / 101
66. Controller Example with a Spring MVC AJAX controller
@RequestMapping(value="/persons")
public@ResponseBodyDatatablesResponse<Person>
filter(HttpServletRequestrequest){
//MapsrequestparametertoaDatatablesCriteriasinstance
DatatablesCriteriascriterias=
DatatablesCriterias.getFromRequest(request);
//Getfilteredandpageddata
DataSet<Person>persons=
personService.findPersons(criterias);
//BuildtheresponsethatwillbeconvertedtoJSON
returnDatatablesResponse.build(persons,criterias);
}
AJAX sources + server-side processing
66 / 101
71. Export — what formats?
Text-basedformats: CSV, XML
Built-in support, no dependency or extra required.
71 / 101
72. Export — what formats?
Binary-basedformats: PDF, XLS, XLSX
Some extras already exist and provide:
an export class that is used by default if the corresponding export format
is enabled
the corresponding library in compile scope (e.g. Apache POI for the XLS
format)
Available extras:
PDF: datatables-export-itext
XLS: datatables-export-poi
XLSX: datatables-export-poi-ooxml
72 / 101
73. Export — 2 ways
Filter-based
Fast to set up
Always export full data source
Only compatible with DOM sources
Controller-based
Requires a bit more work to set up
WYSIWYE => What You See Is What You ... Export!
Compatible with DOM and AJAX sources
73 / 101
97. Dandelion-
Core
Full support for asset minification and merging
Improvements on asset bundles: externalization,
configuration via XML, JavaConfig
Add new processors for meta-frameworks
(CoffeeScript, Less, ...)
Add support for conditionnal assets (e.g. IE8+, IE9+)
Add support for CSS sprites
New AssetCacheimplementation based on Hazelcast
JBoss Forge plugin allowing to scaffold a project based
on Dandelion
Add support for RequireJS
Bower integration
Future
97 / 101
98. Dandelion-
Core
Dandelion-
Datatables
New extension for editable tables (Editor, jEditable, ...)
Add support for more DataTables' extensions
Add support for DataTables 1.10.0
New theme for Foundation
Add WebSocket support for continously-updating
tables (Atmosphere, Spring MVC 4)
Add support for Spring Data REST
Future
98 / 101