These are the slides for the talk given during the Plone 2010 conference in Bristol, England.
Video of the talk:
http://ploneconference2010.blip.tv/file/4317697/
A presentation and talk at the engagelocal conference (engagelocal.org): ournalists work more intimately with their communities to educate and empower residents? Two Oakland-based journalists will share insights from their local experiments, Hack the Hood and Eyes on Oakland, that blur the lines between journalism, art, education and community organizing. They'll offer out-of-the-box tips on how to jumpstart inclusive, on-the-ground initiatives that invite community members to learn, create and share. Susan Mernit | Hack the Hood; Cole Goins, Reveal and CIR
March 13 sxsw news entrepreneurs vs trad journalistsHack the Hood
Back in 2002-2005, we talked bloggers vs journalists and said we got past it, but today, some of the tensions are still there. How can we move forward? Some ideas for partnering.
These are the slides for the talk given during the Plone 2010 conference in Bristol, England.
Video of the talk:
http://ploneconference2010.blip.tv/file/4317697/
A presentation and talk at the engagelocal conference (engagelocal.org): ournalists work more intimately with their communities to educate and empower residents? Two Oakland-based journalists will share insights from their local experiments, Hack the Hood and Eyes on Oakland, that blur the lines between journalism, art, education and community organizing. They'll offer out-of-the-box tips on how to jumpstart inclusive, on-the-ground initiatives that invite community members to learn, create and share. Susan Mernit | Hack the Hood; Cole Goins, Reveal and CIR
March 13 sxsw news entrepreneurs vs trad journalistsHack the Hood
Back in 2002-2005, we talked bloggers vs journalists and said we got past it, but today, some of the tensions are still there. How can we move forward? Some ideas for partnering.
“Hack the Hood: Building Character through Building Competency”
Learn how Hack the Hood uses project-based learning as a strategy to create new behaviors that transform youth, as well as the perceptions of youth by local neighborhoods. Through a curriculum focused on building youth leadership skills, an entrepreneurial mindset, and cultural competency, youth move from being passive consumers of digital tech to being knowledgeable workers and tech producers as they become valued resources to local small businesses. Come hear about character development and SEL in action from the youth themselves and their adult leaders. Workshop will be led by Jackie Shonerd, Susan Mernit, and Damon Packwood.
Powering Agriculture Network and Wiki Portal
Nov. 2014
Carsten Schüttel (Carsten.Schuettel@giz.de)
Laura Jakobeit (Laura.Jakobeit@giz.de)
Powering Agriculture Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH
Reinvention=Survival may be one of the watchwords of our time. This slide show accompanied Susan Mernit's keynote address at the Online news Association Career day event on October 1, 2009.
How we plan to implement a Content Repository in pure PHP for use with TYPO3 5.0. Presented at 3rd International TYPO3 Conference 2007 in Karlsruhe, Germany.
“Hack the Hood: Building Character through Building Competency”
Learn how Hack the Hood uses project-based learning as a strategy to create new behaviors that transform youth, as well as the perceptions of youth by local neighborhoods. Through a curriculum focused on building youth leadership skills, an entrepreneurial mindset, and cultural competency, youth move from being passive consumers of digital tech to being knowledgeable workers and tech producers as they become valued resources to local small businesses. Come hear about character development and SEL in action from the youth themselves and their adult leaders. Workshop will be led by Jackie Shonerd, Susan Mernit, and Damon Packwood.
Powering Agriculture Network and Wiki Portal
Nov. 2014
Carsten Schüttel (Carsten.Schuettel@giz.de)
Laura Jakobeit (Laura.Jakobeit@giz.de)
Powering Agriculture Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH
Reinvention=Survival may be one of the watchwords of our time. This slide show accompanied Susan Mernit's keynote address at the Online news Association Career day event on October 1, 2009.
How we plan to implement a Content Repository in pure PHP for use with TYPO3 5.0. Presented at 3rd International TYPO3 Conference 2007 in Karlsruhe, Germany.
Deep learning has exceeded massive powers of human mind and most popularity for using scientific computing, and its algorithmic procedures to purposeful industries that solve complete difficulties.
This session from the TYPO3 Conference 2007 gives you a peek into the current development state of the TYPO3 Framework and its main features such as Aspect Oriented Programming, Dependency Injection and the Model View Controller Framework. Bottom line of all development with 5.0 is: Domain Driven Design.
Content Strategy and Developer Engagement for DevPortalsAxway
Slides from Write the Docs Ottawa Meet Up at Shopify HQ in Canada, June 24, 2019
We’ll walk through 5 scenarios and concrete ways of reaching a developer community for frictionless and increased engagement.
Most CMSs have 3 big problems. First, they focus on managing your website, not your content. Second, they monopolize the presentation layer, making it hard to create compelling, forward-thinking designs. Third, it's difficult to add new channels like mobile apps and microsites without duplicating your content.
In this session, we rethink the purpose of a CMS, the connection between a site's backend and frontend, and how we manage and consume content. We'll close with a case study of how TWiT.tv relaunched as a decoupled Drupal site with an exposed API allowing their fanbase to directly access content.
This session is for designers and developers alike. You’ll both learn a lot.
Why Your Next Project Should have Expert Hire Python Developers?EmilySmith271958
Python and web development are going to be our focus, so let’s begin by reviewing both of those terms. The interpretable, high-level, and object-oriented programming language in contrast to being compiled, which runs a complete Hire python developers India in one go, having a Python program interpreted implies that it is executed one line at a time.
Introducing the Perforce Web Content Management SystemPerforce
This session provides a comprehensive overview of the new Perforce Web Content Management System offering, including details on the product architecture, features, functions, business model, partnering opportunities, and the product roadmap. There will be a product demo during the session, with another deep-dive demo available in the Demo Area.
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift ...OpenShift Origin
From Zero to Cloud: Revolutionize your Application Life Cycle with OpenShift PaaS
Talk given by Diane Mueller, OpenShift Origin Community Manager at FISL 15 on May 9th, 2014
Conf42-Python-Building Apache NiFi 2.0 Python Processors
https://www.conf42.com/Python_2024_Tim_Spann_apache_nifi_2_processors
Building Apache NiFi 2.0 Python Processors
Abstract
Let’s enhance real-time streaming pipelines with smart Python code. Adding code for vector databases and LLM.
Summary
Tim Spann: I'm going to be talking today, be building Apache 9520 Python processors. One of the main purposes of supporting Python in the streaming tool Apache Nifi is to interface with new machine learning and AI and Gen AI. He says Python is a real game changer for Cloudera.
You're just going to add some metadata around it. It's a great way to pass a file along without changing it too substantially. We really need you to have Python 310 and again JDK 21 on your machine. You got to be smart about how you use these models.
There are a ton of python processors available. You can use them in multiple ways. We're still in the early world of Python processors, so now's the time to start putting yours out there. Love to see a lot of people write their own.
When we are parsing documents here, again, this is the Python one I'm picking PDF. Lots of different things you could do. If you're interested on writing your own python code for Apache Nifi, definitely reach out and thank.
This presentation will outline Appnovation’s Canopy technology solution. Canopy is a standard based integration solution that brings together the best of Alfresco with the best of Drupal. Covered in this presentation will be specific details about how the Canopy solution is architected and put together. Some of the Alfresco/Drupal integration topics covered will include: content type integration, bi-directional integration and authentication
Four Kitchens Presents: Future of the CMSFour Kitchens
In our "Future of the CMS" webinar, Four Kitchens CEO and Co-Founder Todd Ross Nienkerk walks you through the options behind a modern, responsive, design strategy. Watch the video to learn about:
* Decoupling your CMS
* Multichannel publishing
* Content-as-a-service
* Future-proofing your project
And more!
Similar to Implementing a JSR-283 Content Repository in PHP (20)
During the Neos Conference 2024 I talked – again – about updating Neos. Next to why, when and how you should be updating I talked about going to Neos 9…
There are many ways to start a new Neos-based project and there is a multitude of tools involved. These slides introduce a "perfect" way to set up a Neos project. A recording of the presentation is available at https://youtu.be/hWJSK0pE1H0
The presentation explains how multi-language websites can be built with Neos. But it doesn't stop there, since Neos allows for arbitrary content dimensions - be it for country-specific content, targeting different customer segments, personalization, …
This presentation was given during Inspiring Conference in Kolbermoor on March 28th, 2015.
FLOW3 spearheaded a move towards Git adoption within the TYPO3 project, and we are more pleased every day with the decision to turn away from Subversion and toward GIt.
In this session I explain the workflow we adopted using Git and the code review system Gerrit. I will show how it makes collaborative development more productive and improves code quality at the same time.
Ein Überblick über die Mittel zu Kommunikation und Kollaboration in der TYPO3 Community. Vorgestellt beim 15. "Wissensmanagement Stammtisch Braunschweig" im Mai 2007.
Introduction to what Unicode support in PHP6 means and how it will change the way PHP developers work. Presented at the 3rd International TYPO3 Conference 2007 in Karlsruhe, Germany.
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!
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.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
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.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
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.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
2. Introduction
Your flight plan
About me
Some words about the project’s background
What is a Content Repository?
Why should I use a CR?
Why code it ourself?
Inside the TYPO3 CR
Where do we stand? Our plans for the future...
Inspiring people to
share
3. Introduction
About me
Born 1977, living (mostly) in Germany
Started out with BASIC on a Commodore 128
Now a PHP addict open to other languages as well
Active member of the TYPO3 Association
Developer with the TYPO3 project
Inspiring people to
share
5. Introduction
About TYPO3
One of the leading open-source CMS
Invented by Kasper Skårhøj in 1997
Written in PHP, released under GPL in 2000
Now used with small and large companies around the world
Hundreds of thousands of websites built with TYPO3
Backed by a huge community and the TYPO3 Association
Inspiring people to
share
6. Introduction
The future of TYPO3
The current architecture of TYPO3 is becoming outdated
We decided to write TYPO3 5.0 – it soon became clear that we'd
do more than quot;just write a new CMSquot;
We started with some groundwork, resulting in the FLOW3
framework – more on that in a minute
We decided to use a CR for the new version
And of course we still have the ultimate goal to come up with a
new TYPO3 CMS...
Inspiring people to
share
7. Introduction
TYPO3 5.0 CMS
Successor to TYPO3 v4, which is the result of 10 years of
development
Start from scratch, but keep the soul of TYPO3
Shall provide
lower complexity
make use of advanced PHP features
be more (and more easily) extensible, ...
Inspiring people to
share
8. What happened so far
FLOW3
Provides an advanced programming framework with support for
Dependency Injection / Inversion of Control
Aspect Oriented Programming
Component and Package Management
enhanced Reflection
Caching
MVC and more
Inspiring people to
share
9. What happened so far
FLOW3
“Best of breed”:
Inspired by the most popular frameworks and toolkits from
Smalltalk, Python, Ruby and Java
Picking the best concepts, skipping the annoyances
Not tied to TYPO3 CMS, can be used for any PHP-based project
Important to you!?
Have a look at the website at flow3.typo3.org
Inspiring people to
share
10. Introduction
About the TYPO3 Association
Founded in November 2004 by a group around Kasper Skårhøj
It’s goals:
Support TYPO3 development on a more steady basis
Improve the transparency and efficiency of various aspects of
the TYPO3 project
Is funded by members and sponsors
Financed the development of TYPO3 v5 and related projects
until now
Inspiring people to
share
11. What is a Content Repository?
Inspiring people to
share
12. What is a CR?
Jack Rabbit says
A content repository is a hierarchical content store with support
for structured and unstructured content
In addition to a hierarchically structured storage system,
common services of a content repository are versioning, access
control, full text searching, and event monitoring
Typical applications that use content repositories include
content management, document management, and records
management systems
Inspiring people to
share
13. What is a CR?
But it is for Java, no?
The Java Community Process (JCP) is very efficient, not only
when compared to other standardization bodies
The Java Specification Request (JSR) 170 led to the specification
Content Repository for Java technology API (JCR) is the result
First JSR with a real open source license (Apache-style)
The API is defined in Java, but can be ported to other languages
No, it’s not only for Java!
Inspiring people to
share
14. What is a CR?
Nodes and Properties
A Content Repository (CR) allows the storage and retrieval of
arbitrary content as nodes and properties in a tree structure
Inspiring people to
share
15. What is a CR?
Workspaces
A repository can contain multiple independent workspaces that
can correspond to each other, allowing comparison
Inspiring people to
share
16. What is a CR?
The Basics
The tree structure can be freely defined by the user of the CR
Nodes may be typed with a rigid structure – or free-form
The API abstracts the actual data storage used (RDBMS, ODBMS,
files, ...)
Binary content can be stored and queried as effectively as
textual content
Export to and import from XML are possible
Versioning, locking, transactions, event listeners, ...
Inspiring people to
share
18. Why use a CR?
Best of both^Wthree worlds...
Inspiring people to
share
19. Why use a CR?
Isn’t that convincing?
Inspiring people to
share
20. Why use a CR?
From a coder’s perspective
One well-designed API instead of different ones
Common language and concepts
Properties instead of fields give flexibility
Learn once, use everywhere
Portable code allows easier reuse of existing solutions
Rich set of tools
No more SQL!
Inspiring people to
share
21. Why use a CR?
Summary
A content repository provides a robust storage for your content
- be it text, images, or code, structured or unstructured
Knowledge and tools can be reused at will
A Content Repository (CR) promises to solve a lot of problems
A stable standard with a fresh version in the making
SQL has been around for 35+ years, CR has “just started”
Inspiring people to
share
22. Why code a CR in PHP?
Inspiring people to
share
23. Why code a CR in PHP?
Inspiring people to
share
24. Why code a CR in PHP?
No, really...
There are better reasons, of course!
Inspiring people to
share
25. Why code a CR in PHP?
Existing implementations
Jackrabbit is the reference implementation, available as open
source from the Apache Foundation
Day CRX is the commercial CR implementation from the
quot;inventorquot; of JSR-170, Day Software
Other implementations are eXo JCR and Jeceira, the latter also
being dead, and others
JSR-170 connectors exist Alfresco, BEA Portal Server, IBM
Domino and others
Inspiring people to
share
26. Why code a CR in PHP?
PHP ports of the JSR-170/283 API
What about PHP?
Travis Swicegood ported the JSR-170 API to PHP in 2005 -
project is dead
There is a port of the JSR-170 API available in the Jackrabbit
sources, added 2005 - no relevant changes since then
No full port of the JSR-283 API available today
Inspiring people to
share
27. Why code a CR in PHP?
What about using what’s there?
We tried to integrate Jackrabbit using the PHP-Java-Bridge
(Almost) every call to Jackrabbit needs to be wrapped for
type conversion, exception mapping, ...
We ran into massive memory issues
More complex to set up and maintain
A dependency on Java is a no-go (not only) for our PHP-based
project
Inspiring people to
share
28. Why code a CR in PHP?
Summary
Various implementations exist, mostly in Java
A CR offers a truckload of advantages, we want to leverage
those advantages
No PHP implementation of a CR exists
Using existing non-PHP implementations isn’t an alternative
We need to build our own CR
Inspiring people to
share
30. The TYPO3 CR
Three truths about the TYPO3 CR
Goal is a pure PHP implementation of JSR-283
although functionality needed for TYPO3 CMS has priority over
specification compliance for now
Will take advantage of the FLOW3 framework, but not be tied to
the TYPO3 CMS.
Could eventually become the standard CR for the PHP
community?!
Inspiring people to
share
31. The TYPO3 CR
Porting the JSR-283 API
Issues
Typing, some Java types simply do not exist in PHP
Constructor overloading is impossible in PHP
Binary data (might be FLOW3 Resource Manager handles
instead of streams)
Interfaces will not be ported up-front, but as we need them
Useful by-product of our development process
Inspiring people to
share
32. The TYPO3 CR
Development model
Based on the FLOW3 Framework
Domain Driven Design (will be) used
Use of AOP planned to avoid tight internal coupling
Test Driven Development with Continuous Integration
Automatic checks against coding guidelines
Inspiring people to
share
33. The TYPO3 CR
Aspect Oriented Programming
AOP is a programming paradigm
Not a new concept, but still new to PHP
Complements OOP by separating concerns to improve
modularization
OOP modularizes concerns: methods, classes, packages
AOP addresses cross-cutting concerns
Inspiring people to
share
37. Aspect Oriented Programming
How AOP sounds
Some language first
Aspects contain advices that you want to add to your
software
Pointcuts expressed by pointcut expressions define where to
add advices to your code
Join points are events in the flow of a program, such as
calling a method or throwing an exception
Targets are the classes and methods being adviced by aspects
Inspiring people to
share
38. Aspect Oriented Programming
How AOP works
Three steps to AOP use
Write the code for the cross-cutting concern
Define a pointcut expression telling the framework where to
add that code
Get some coffee
The (hard) work is to identify the cross-cutting concerns
and to define the simplest possible pointcut expression
Inspiring people to
share
39. Aspect Oriented Programming
Example: Logging
It might be good to know who deleted the mail archive of the
last four years
Logging could solve this
A logging aspect added at the right places solves this easily
Using AOP
makes changing the logging a snap
keeps the code clean
Inspiring people to
share
40. Aspect Oriented Programming
Example: Security
It would have been even better to not allow deletion of the mail
archive of the last four years...
Security is a complex issue, solving this “right, now” seems
impossible
Using AOP
makes changing the changing security code easier
allows to add security everywhere, anytime
keeps the code clean
Inspiring people to
share
41. The TYPO3 CR
Actual data storage
The underlying storage of the TYPO3CR will be a RDBMS in most
cases
Currently PDO is used to access SQLite
Easy to use for development and unit testing
The use of PDO already enables any PDO-supported database
Specialized DB connectors will follow, using optimized queries,
stored procedures, ...
Inspiring people to
share
42. Actual data storage
Data storage techniques
Basically we need to store a simple tree
Read access must be fast, write access should be fast, as the
majority of requests are read requests
Traditional approach as used in TYPO3 today is to store a triplet
(uid,pid,sorting) resulting an an adjacency list
Alternative & sometimes faster methods
Materialized Path
Nested sets, Nested intervals
Inspiring people to
share
43. Actual data storage
Nested sets
Better suited to how RDBMS work internally
Stores numbers determined
by preorder tree traversal
Very fast read access,
problematic write access
Concurrency demands locking
On average half of all nodes need to be updated on insertion
of a new node
Inspiring people to
share
44. Actual data storage
Speeding up nested sets!?
Write access can be sped up by various approaches like spacing
and variable length indices for the pre/post numbers or by
partitioning the data over more tables
Materialized path works like adjacency list and stores the full
path to the node
Nested intervals sometimes considered OMPM – “Obfuscated
Materialized Path Method”
All methods have their (dis-)advantages
Finally: DB-specific tricks change the problem!
Inspiring people to
share
45. The TYPO3 CR
Querying the TYPO3 CR
Level 1 methods
Using getRootNode() and friends from the API
Using XPath queries
With JSR!283
Optional methods XPath will
Using SQL queries be dropped
Inspiring people to
share
46. Querying the TYPO3 CR
XPath support for TYPO3R With JSR!283
XPath will
To enable XPath we need be dropped
a XPath parser
an efficient way to transform a XPath query into SQL for the
used low-level data structure
The latter is a lot easier when storing the tree as a nested set
The problems caused by this have been mentioned already...
Inspiring people to
share
47. XPath support for TYPO3R
Pre/Post Plane Encoding
Stores number determined by
preorder and postorder tree
traversal
Allows to partition the nodes into
four regions, as shown for node ƒ
Very fast read access, e.g. a single
SELECT to query all ancestors to a
node ƒ
SELECT * FROM nodes WHERE
pre < ƒ.pre AND post > ƒ.post
Inspiring people to
share
48. Querying the TYPO3 CR
SQL support for TYPO3R
Using SQL we need
a (simple) SQL parser
an efficient way to transform that SQL into equivalent SQL for
the used low-level data structure
This still needs to be investigated, possible approaches
storing a reference to the parent node
using the pre/post plane only as a cache for XPath read
queries, optimizing the native storage for SQL read queries
Inspiring people to
share
49. The TYPO3 CR
Extensions to JSR-283
A vendor may choose to offer additional features in his CR
implementation
The TYPO3CR will offer support for
Persistency through code annotations
Automatic node type generation based on class members
Rules for setting up virtual root nodes based on node types
Inspiring people to
share
50. Extensions to JSR-283
Persistency to the CR
Annotations define objects and their properties to be persistable
Properties are stored in the CR according to reflection results
and hints from annotations
The FLOW3 persistence manager is transparently enhanced by
the CR persistence mechanism
An object-to-object mapper does the hard work
Inspiring people to
share
51. Extensions to JSR-283
Automatic node type generation
Persistency stores properties in the CR according to reflection
results and hints from annotations
Node types can be generated automatically if wanted
Manually adding content cannot break the needed structure
Browsing the repository reveals a clear structure
Using content from other applications is less error-prone
Maybe this is utter nonsense - depends on whom you ask :)
Inspiring people to
share
52. Extensions to JSR-283
Virtual root nodes
The repository has one root node, added nodes must be placed
somewhere
It might be useful to find all nodes under a common node,
depending on type or other attributes
Such a virtual root node is
like a smart folder or playlist
like a view in a RDBMS
Inspiring people to
share
53. The TYPO3 CR
Current status
Currently the code supports a subset of the required features of
levels 1 & 2 and the optional parts of the JSR-283 specification
Basic read & write access
Namespace registration
Node type discovery and registration
Data storage uses the naive approach known from TYPO3 v4
Have a look at the Subversion repository for up-to-date
information
Inspiring people to
share
54. The TYPO3 CR
Future plans
Write test
Code
Test
Write test
Code
Test
...
Inspiring people to
share
55. The TYPO3 CR
Summary
Implementing the specification is not an easy task, but doable
For the various parts a lot of research has already been done
2008 will see full-time development on the TYPO3 CR
The repository is a major improvement over currently
widespread ways of storing data
The whole PHP community could^Wwill benefit!
Inspiring people to
share
56. So long and thanks for the fish
Links
TYPO3 Website
http://typo3.org
TYPO3 Development Website
http://forge.typo3.org
FLOW3 Website
http://flow3.typo3.org
TYPO3 5.0 Subsite
http://typo3.org/gimmefive
Inspiring people to
share
57. So long and thanks for the fish
Questions?
Inspiring people to
share beer