QEbu: Project specifica1ons
} QEbu provides an editor for metadata
following the EBU Core Metadata Set.
} The user is able to produce new metadata
documents or edit existing ones.
} A simple graphic interface helps the user in
his work by providing:
◦ Instant validation on all input fields;
◦ Dictionaries for dictionary based attributes;
◦ In-place documentation for all metadata
elements.
OOP Unit 1 - Foundation of Object- Oriented Programmingdkpawar
Foundation of object oriented programing-
Introduction to procedural, modular, object-oriented and generic programming techniques
Limitations of procedural programming
Need of object-oriented programming
fundamentals of object-oriented programming:
objects, classes, data members, methods, messages, data encapsulation, data abstraction and information hiding, inheritance, polymorphism.
Inline functions
Function overloading
call by value and call by reference, return by reference,
A presentation on creating your first "Hello Flutter!" app and Login app using Flutter and Firebase. Explanations on the syntax used are also available.
Link to app repository:
https://github.com/DSC-Binus-KMG-2019/flutter-firebase-event-final
TUTORIAL-INTRODUCTION TO SPRING FOR BEGINNERS
EXPLANATION TO-Java Framework,Advantages of using SPRING,Difference between Hibernate and Spring.Spring architecture,Spring IoC Containters,Bean scope & Method Injection,Spring Inheritance.
OOP Unit 1 - Foundation of Object- Oriented Programmingdkpawar
Foundation of object oriented programing-
Introduction to procedural, modular, object-oriented and generic programming techniques
Limitations of procedural programming
Need of object-oriented programming
fundamentals of object-oriented programming:
objects, classes, data members, methods, messages, data encapsulation, data abstraction and information hiding, inheritance, polymorphism.
Inline functions
Function overloading
call by value and call by reference, return by reference,
A presentation on creating your first "Hello Flutter!" app and Login app using Flutter and Firebase. Explanations on the syntax used are also available.
Link to app repository:
https://github.com/DSC-Binus-KMG-2019/flutter-firebase-event-final
TUTORIAL-INTRODUCTION TO SPRING FOR BEGINNERS
EXPLANATION TO-Java Framework,Advantages of using SPRING,Difference between Hibernate and Spring.Spring architecture,Spring IoC Containters,Bean scope & Method Injection,Spring Inheritance.
The assignments written by our professionals are always worth and deliver the best output. At EssayCorp, a panel of experts is involved in object oriented programming assignment help. They implement their knowledge with the effective words which comes out as a well attempted assignment. All these experts are not only skilled, but they are also experienced. Hence, it is our assurance that you will get high quality work from us.
Visit : https://www.essaycorp.com/c-plus-plus.html
Entity Framework, Code First, Database First, TPH, TPT, TPC. Table Per Type, Table Per Hierarchy, Table Per Concrete Class, EF Concurrency, EF Relationship, Code First Conventions
Object Oriented Programming For Engineering Students as well as for B.Tech -IT. Covers Almost All From The Basics.
For more:
Google Search:: Prabhaharan Ellaiyan
Ever heard of the Law of Demeter? How about the Liskov Substitution Principle? This talk introduces key object-oriented laws and principles currently used in our field and provides guidance for their use when building applications on the .NET platform.
Pdf Covers-- Concept of OOPS, Introduction to Java, Java Features, History of Java, Naming of Java, Java version release, Structure of Java Program, Creating a Simple Java Program, Java Virtual Machine
Hibernate framework simplifies the development of java application to interact with the database. Hibernate is an open source, lightweight, ORM (Object Relational Mapping) tool.
An ORM tool simplifies the data creation, data manipulation and data access. It is a programming technique that maps the object to the data stored in the database.
QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...FIAT/IFTA
Creation and management of metadata documents can be quite a difficult task to accomplish manually. To address this issue in the context of the EBUCore v1.3 metadata set, we propose a GUI-based metadata editor, QEbu, developed during the Multimedia Archival Techniques course, held at the Polytechnic University of Turin in collaboration with RAI.
The aim is to provide a user-friendly graphical editor to create and manage XML documents, relieving the user from the burden of worrying about the structure of the data and letting him focus on the actual content.
QEbu has been developed in C++ using the cross-platform and open source library Qt 4.8; this framework was chosen in order to exploit its natural features for developing interface-centered applications.
Attracted by AngularJS power and simplicity, you have chosen it for your next project. Getting started with DataBinding, Scopes and Controllers was relatively quick and easy...
But what do you need to effectively bring a complex application to Production?
We discuss
the new Component API,
lifecycle callbacks - $onChanges
selecting different ways for components to collaborate
choosing between Two-Way Binding and One-Way Data Flow,
"smart" vs "dumb" components,
We ‘ll share recipes from our real world experience so that you can productively & reliably build a complex application out of reusable Components.
Attracted by AngularJS power and simplicity, you have chosen it for your next project. Getting started with DataBinding, Scopes and Controllers was relatively quick and easy. But what do you need to effectively bring a complex application to Production? We discuss the new Component API, from ngOnChanges to selecting different ways for components to collaborate, from choosing between Two-Way Binding and One-Way Data Flow, to "smart" vs "dumb" components, sharing recipes from our real world experience so that you can productively & reliably build a complex application out of reusable Components.
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...Codemotion
Most modern Front-End frameworks are Component-Oriented, taking advantage of encapsulation and separation of responsibilities to improve developer productivity and application robustness. However, to fully exploit the power of components, you need to aggregate them in a consistent and modular set. In this talk we share our experience in building several component libraries, from API Design concepts to advanced component interaction patterns, from packaging and documentation to refactoring & interoperability. Examples are Angular-based, but most concepts apply to all Front-End dev approaches.
The assignments written by our professionals are always worth and deliver the best output. At EssayCorp, a panel of experts is involved in object oriented programming assignment help. They implement their knowledge with the effective words which comes out as a well attempted assignment. All these experts are not only skilled, but they are also experienced. Hence, it is our assurance that you will get high quality work from us.
Visit : https://www.essaycorp.com/c-plus-plus.html
Entity Framework, Code First, Database First, TPH, TPT, TPC. Table Per Type, Table Per Hierarchy, Table Per Concrete Class, EF Concurrency, EF Relationship, Code First Conventions
Object Oriented Programming For Engineering Students as well as for B.Tech -IT. Covers Almost All From The Basics.
For more:
Google Search:: Prabhaharan Ellaiyan
Ever heard of the Law of Demeter? How about the Liskov Substitution Principle? This talk introduces key object-oriented laws and principles currently used in our field and provides guidance for their use when building applications on the .NET platform.
Pdf Covers-- Concept of OOPS, Introduction to Java, Java Features, History of Java, Naming of Java, Java version release, Structure of Java Program, Creating a Simple Java Program, Java Virtual Machine
Hibernate framework simplifies the development of java application to interact with the database. Hibernate is an open source, lightweight, ORM (Object Relational Mapping) tool.
An ORM tool simplifies the data creation, data manipulation and data access. It is a programming technique that maps the object to the data stored in the database.
QEBU: AN ADVANCED GRAPHICAL EDITOR FOR THE EBUCORE METADATA SET | Paolo PASIN...FIAT/IFTA
Creation and management of metadata documents can be quite a difficult task to accomplish manually. To address this issue in the context of the EBUCore v1.3 metadata set, we propose a GUI-based metadata editor, QEbu, developed during the Multimedia Archival Techniques course, held at the Polytechnic University of Turin in collaboration with RAI.
The aim is to provide a user-friendly graphical editor to create and manage XML documents, relieving the user from the burden of worrying about the structure of the data and letting him focus on the actual content.
QEbu has been developed in C++ using the cross-platform and open source library Qt 4.8; this framework was chosen in order to exploit its natural features for developing interface-centered applications.
Attracted by AngularJS power and simplicity, you have chosen it for your next project. Getting started with DataBinding, Scopes and Controllers was relatively quick and easy...
But what do you need to effectively bring a complex application to Production?
We discuss
the new Component API,
lifecycle callbacks - $onChanges
selecting different ways for components to collaborate
choosing between Two-Way Binding and One-Way Data Flow,
"smart" vs "dumb" components,
We ‘ll share recipes from our real world experience so that you can productively & reliably build a complex application out of reusable Components.
Attracted by AngularJS power and simplicity, you have chosen it for your next project. Getting started with DataBinding, Scopes and Controllers was relatively quick and easy. But what do you need to effectively bring a complex application to Production? We discuss the new Component API, from ngOnChanges to selecting different ways for components to collaborate, from choosing between Two-Way Binding and One-Way Data Flow, to "smart" vs "dumb" components, sharing recipes from our real world experience so that you can productively & reliably build a complex application out of reusable Components.
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...Codemotion
Most modern Front-End frameworks are Component-Oriented, taking advantage of encapsulation and separation of responsibilities to improve developer productivity and application robustness. However, to fully exploit the power of components, you need to aggregate them in a consistent and modular set. In this talk we share our experience in building several component libraries, from API Design concepts to advanced component interaction patterns, from packaging and documentation to refactoring & interoperability. Examples are Angular-based, but most concepts apply to all Front-End dev approaches.
Slides for the talk with Sonia Pini @Codemotion Milan 2018
So you want to build your (Angular) Component Library? We can help
https://milan2018.codemotionworld.com/conference/
Most modern Front-End frameworks are Component-Oriented, taking advantage of encapsulation and separation of responsibilities to improve developer productivity and application robustness. However, to fully exploit the power of components, you need to aggregate them in a consistent and modular set. In this talk we share our experience in building several component libraries, from API Design concepts to advanced component interaction patterns, from packaging and documentation to refactoring & interoperability. Examples are Angular-based, but most concepts apply to all Front-End dev approaches.
Understanding Framework Architecture using Eclipseanshunjain
Talk on Framework architectures given at SAP Labs India for Eclipse Day India 2011 - Code attached Here: https://sites.google.com/site/anshunjain/eclipse-presentations
In this presentation, we’ll discuss the process used at Nuxeo to create a toolbox for customers to use when building their content management applications. This process includes:
- Easy project start up, with an iterative approach,
- More efficient setting up of the project's functional coverage,
- Simplified maintenance for a fixed cost,Easy management of the project versioning.
A service-oriented architecture looks great as boxes and lines on a whiteboard, but what is it like in real life? Are the benefits of flexibility worth the overhead of administration? We've built a framework on top of Finagle that enables a simple approach to building and deploying a microservice with SBT and Scala.
An overview of the results of the 2021 FIAT/IFTA Timeline Survey, as presented by Adrienne Warburton during the 2021 FIAT/IFTA World Conference (online).
The FIAT/IFTA Most Wanted List may be a new initiative of FIAT/IFTA. The aim is to create a central hub of Most Wanted Lists, provided by broadcast and audiovisual archives worldwide.
On these lists we would put those programmes, media fragments, excerpts or even complete series that archives are desperately looking for. Via a contact button, other archives could put themselves in contact with the archive that has published its list, in order to to signal a possible trouvaille.
All further explanations and a link to a survey to measure the interest are in this presentation.
As presented by Johan Oomen (Sound an Vision) and Vasilis Mezaris (Information Technologies Institute Thessaloniki) at the 2019 FIAT/IFTA World Conference in Dubrovnik, Croatia.
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
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.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
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!
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
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.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
2. Contents
Introduction
} Model design
} XML management
} GUI
}
◦ Interface
◦ Data management
}
Conclusion
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
3. EBU Core Metadata Set
Has been developed by the EBU Expert
Community on Metadata (ECM).
} Latest revised in october 2011 (version
1.3).
} It makes use of Simple Dublin Core
metadata elements as well as more
complex structures with deeper
expressivity and flexibility.
} The general aim is to define a minimum list
of attributes characterising a media
resource.
}
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
4. QEbu:
Project
specifica1ons
QEbu provides an editor for metadata
following the EBU Core Metadata Set.
} The user is able to produce new metadata
documents or edit existing ones.
} A simple graphic interface helps the user in
his work by providing:
}
◦ Instant validation on all input fields;
◦ Dictionaries for dictionary based attributes;
◦ In-place documentation for all metadata
elements.
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
5. Why
a
GUI?
Editing XML by hand is a hard task,
especially with high complex structure
definition.
} Using a GUI, the user can focus on
metadata content, instead of worry about
the format in which metadata will be
stored.
}
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
6. Contents
Introduction
} Model design
} XML management
} GUI
}
◦ Interface
◦ Data management
}
Conclusion
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
7. From
XML
to
C++
“A class for each element”
} Yes, but with as much code reuse as
possible.
}
}
Exploiting objects composition and
inheritance, we tried to keep the number of
defined classes to a reasonable minimum.
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
8. Managing
IDRefs
}
RightsType and PublicationType elements
contain a reference to a FormatType
◦ It’s a strong relation enforced by the usage of
ID-IDREF(s) types in the schema definition.
}
Corresponding classes have been designed
to contain a pointer to the format.
◦ Why not a simple string with the ID?
}
However pointers require careful handling:
◦ What happens if a format is deleted?
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
9. Root
Format
Map
}
We have introduced a root format map in
the top-level metadata element:
◦ Key: format ID;
◦ Value: formatType pointer and a list of listeners.
}
A listener is an object which needs to know
if a format is deleted (i.e. rightsType and
publicationType).
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
10. Contents
Introduction
} Model design
} XML management
} GUI
}
◦ Interface
◦ Data management
}
Conclusion
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
11. The
issue
}
}
Provide manipulation functionalities over
the contents of an XML file of interest, and
allow creation of a valid document from
scratch.
It is required a way to map model objects
from, and to, XML documents, in a sensible
and coherent way
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
12. Which
way?
The requirements of the application, and
the complexity of the schema, pretty much
call for DOM loud and clear.
} DOM makes for an easier management of
the contents, and cover all the
requirements needed.
}
}
What about performance?
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
13. Valida1on
}
A fundamental aspect of working with XML
is the validation of the contents…
◦ …but Qt doesn’t provide anything robust
enough.
}
In this case it is better to delegate to
something else, which does just that:
◦ xmllint, from libxml2
What if an input file does not validate?
} Validation comes for free when working
from scratch.
}
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
14. XML
to
memory…
}
}
}
This step is performed by EbuParser, which
visits recursively the document model
managing one node at a time.
“A class for each element, and for each
class its parser”.
We defined a pattern to achieve code
homogeneity and readability.
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
15. EbuParser
snippet
T* EbuParser::parseT(const QDomElement &element)
{
// Sanity check for node element validity
if (element.isNull()) {
m_errorMsg = “T element is null";
return 0;
}
// Create custom object T
T *obj = new T;
// Get attribute(s).
t attributeName = element.attribute("attributeName");
// Sanity check for attribute validity, according to
// the
specific type
if (!attributeName.isValid())
obj->setAttributeName(attributeName);
// all
the
attributes parsed...
// Get element(s)
// A node list is expected in this example
QDomNodeList nodeList =
element.elementsByTagName("tagName");
for (int i=0; i < nodeList.size(); ++i) {
// In case of nested elements with a given name,
which
// are not dicrect children of the current node, skip
if (el.parentNode() != element)
continue;
// Recursively parse the child element, like we just
// did with its parent
ChildT *child = parseChildT(el);
// In case the returned child is not valid (i.e.
null)
if (!child) {
// Destroy the parent as well and return failure
delete obj;
return 0;
}
// In case of success append the child in the proper
// structure
obj->tagName().append(child);
}
// Proceed with more children elements…
return obj;
}
QDomElement el = nodeList.item(i).toElement();
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
16. …and
back!
}
}
The steps from memory to XML are
performed by EbuSerializer, which is the
dual counterpart of our custom parser just
described.
Once again, to iterate is human, to recurse
divine.
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
17. EbuSerializer
snippet
QDomElement EbuSerializer::serializeT(T *obj)
{
// Create an empty unnamed element
QDomElement l = m_doc.createElement(" ");
e.appendChild(textNode);
l.appendChild(e);
// Serialize attribute(s), performing sanity check
// prior to write data
if (!obj->attribute1().isValid())
l.setAttribute("attribute1", obj->attribute1());
if (!obj->attribute2().isValid())
l.setAttribute("attribute2", obj->attribute2());
// ...all the attributes
if (!obj->element1().isEmpty())
// Create inner empty unnamed
}
if (obj->element2()) {
// This is a child element node
QDomElement e = serializeT2(obj->element2());
e.setTagName("anotherInnerElementName");
l.appendChild(e);
}
// For all the elements...
return l;
{
element
}
// This is just a text node
QDomElement e = m_doc.createElement(" ");
e.setTagName("innerElementName");
QDomText textNode =
m_doc.createTextNode(l->element1());
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
18. Infinite
descent
}
}
The EBU Core metadata allows the
definition of element types that may
include content of the very same type.
The recursive approach has proven to be
the only way worth implementing to handle
with ease the schema specifics.
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
19. Contents
Introduction
} Model design
} XML management
} GUI
}
◦ Interface
◦ Data management
}
Conclusion
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
20. User
interface
}
}
For almost every object in the model, a
dedicated form has been created.
As a rule of thumb, the principle criteria
followed can be summarized like:
◦ Whenever possible attributes are managed via edit
fields;
◦ In case of range-restricted values, pickers are
employed;
◦ Children elements come with their own form, but few
exceptions (i.e. groups);
◦ If possible attributes/elements are grouped together
in a meaningful way;
◦ Recycle as much as possible exploiting composition.
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
21. Stack
of
Forms
}
}
}
}
The user interface employs a custom pattern based on
stackable forms.
The users can see only one form at a time
No popup dialogs
Linear path of navigation
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
22. Lists,
lists
everywhere…
}
}
Many elements include subelements with
cardinality [0..*].
This poses some problems in the UI design:
◦ How to avoid congesting the interface?
◦ How to deal with the coexistence of lists and [0..1]
elements?
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
23. Users
first
aid
}
QEbu offers several features intended for
this goal:
◦ A quickstart tutorial;
◦ A navigation bar;
◦ Embedded documentation
◦ Auto completion
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
24. Contents
Introduction
} Model design
} XML management
} GUI
}
◦ Interface
◦ Data management
}
Conclusion
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
25. Data
input
}
Design challenges:
◦ Provide user-friendly forms;
◦ Propose values from dictionaries;
◦ Grant an instantaneous input validation.
}
}
Qt framework already provides many
widgets for different type of input.
But something was still missing…
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
27. Auto-‐comple1on
Some fields are meant to store a reference
to standard lists of contents.
} The reference scheme are listed in EBU
Core documentation.
} Those values are retrieved from a set of
XML files downloaded from EBU website,
when available.
}
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
28. Schema-‐related
problems
EBU Core schema uses XML Schema types.
} It does not restrict them enough.
} What is the use of:
• duplicated timezones?
• years, months, days of duration?
• negative durations?
} It permits to express values which can be
meaningless or discordant.
} This may cause troubles for any program
which wants to handle those metadata.
}
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
29. Contents
Introduction
} Model design
} XML management
} GUI
}
◦ Interface
◦ Data management
}
Conclusion
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
30. Tes1ng
}
It is known that testing should be done by
someone not involved in the coding
phase…
◦ … but sometimes it is everything you got.
}
Being realistic, it is more a matter of where
bugs lie, rather than whether bugs are
there.
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
31. Future
works
}
Internationalization (i18n)
◦ The code is already ready for i18n since all text
strings have been surrounded by Qt special
macros.
}
Forms re-design
◦ We treated each field and attribute equally.
◦ Feedback from EBU-EMC experts who actually
use such metadata could lead to better tailored
forms with relevant contents more easily
accessible.
}
Dynamic download of attribute dictionaries
from EBU website.
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
32. QEbu
is
free
soware
}
}
QEbu is released under terms of the GNU
General Public License 3 as published by
the Free Software Foundation.
The application is built using Qt 4.8
framework by Nokia.
◦ http://qt.nokia.com/products/library
}
XML validation requires libxml2 to be
installed.
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor
33. QEbu
project
in
numbers
7 weeks
} 5 people
} 252 commits
} 39428 LOC
}
◦ 8438 in model/*
◦ 5485 in fileproc/*
◦ 25505 in ui/*
}
149 classes
◦ 68 in model/*
◦ 3 in fileproc/*
◦ 78 in ui/*
#FIATIFTADubai2013
Paolo Pasini: QEbu – an advanced metadata editor