An introduction to Magritte 3, describing the rational for Magritte 3, the refactoring support available and porting guideline for upgrading to Magritte 3. How to download a Magritte 3 sample
Nowadays, Grails has become one of the best frameworks to implement modern web applications and RESTful microservice architectures. Furthermore, in Grails 3, AngularJS profiles with targeted plugins and code generation capabilities for rapidly building Single-Page Applications (SPAs) are included.
In this speech, we will review the relevant concepts and tools that we need in order to achieve a successful partnership between both technologies. Particularly, we are presenting a solution based on the Gradle & NPM combination, which we are currently and successfully applying to our new projects.
Nowadays, Grails has become one of the best frameworks to implement modern web applications and RESTful microservice architectures. Furthermore, in Grails 3, AngularJS profiles with targeted plugins and code generation capabilities for rapidly building Single-Page Applications (SPAs) are included.
In this speech, we will review the relevant concepts and tools that we need in order to achieve a successful partnership between both technologies. Particularly, we are presenting a solution based on the Gradle & NPM combination, which we are currently and successfully applying to our new projects.
GraphQL is query language for APIs, but what are the advantages and how would one implement such in their microservices/APIs. In this session, I will go through the basics of GraphQL, different aspects of GraphQL and architecture of such APIs. There will be a demo/live-coding on, how 4 different ways we can implement GraphQL for a Springboot microservice/API. Lots of examples, live coding and helpful comparison on structure, usage and implementations of GraphQL in Springboot & Java world.
ESUG 2017
youtube: https://youtu.be/RfalKwgvf0I
First Name: Pavel
Last Name: Krivanek
Title: Metamodeling of custom Pharo images
Type: Talk / Demonstration, 30 min
In this talk I will present a new improved implementation of the
Smalltalk metamodel named Ring. I will describe reasons why a new
implementation was required and I will show the basics of its
architecture and how to use it from the user perspective. Then I will present how the Ring models can be used for bootstrapping of small custom task-oriented Pharo images and how to use them in practice.
Bio:
Pavel Krivanek is a software engineer at Inria Nord Europe in
(http://rmod.lille.inria.fr ) RmoD team. He actively participates in the Pharo open source community with the main focus on Pharo modularization, boostrapping and cleaning. Currently he works on new metamodeling basics of the Moose platform.
This tutorial is an advanced guide to Quartz plugin. It includes a quick presentation on Quartz plugin, the task artefact, Quartz Grails plugin Meta data, plugin events and application reloading. The tutorial begins with a section of introduction to Quartz plugin. It presents how to use a Quartz plugin and what all is inside the Quartz plugin. Following is a Task section. It includes the Grails artefact, the task artefact and talks about how it was created by the quartz plugin to model the idea of a job.
The next section is on Quartz Grails plugin Meta data. It involves the Quartz plugin Meta data and what it does with spring, dynamic methods and application context. The last section of the tutorial talks about the plugin events and application reloading. It includes the plugin events and application reloading, a plugin can listen to events on change, configchange and shutdown.
Like Java Server Pages (JSP), GSP supports the concept of custom tag libraries. Unlike JSP, Grails' tag library mechanism is simple, elegant and completely reloadable at runtime.
Like Java Server Pages (JSP), GSP supports the concept of custom tag libraries. Unlike JSP, Grails' tag library mechanism is simple, elegant and completely reloadable at runtime.
"While Apache Kafka lacks native support for topic renaming, there are scenarios where renaming topics becomes necessary. This presentation will delve into the utilization of MirrorMaker 2.0 as a solution for renaming Kafka topics. It will illustrate how MirrorMaker 2.0 can efficiently facilitate the migration of messages from the old topic to the new one and how Kafka Connect Metrics can be employed to monitor the mirroring progress. The discussion will encompass the complexity of renaming Kafka topics, addressing certain limitations, and exploring potential workarounds when using MirrorMaker 2.0 for this purpose. Despite not being originally designed for topic renaming, MirrorMaker 2.0 has a suitable solution for renaming Kafka topics.
Blog Post : https://engineering.hellofresh.com/renaming-a-kafka-topic-d6ff3aaf3f03"
It is a common requirement for any project to display data in some kind of tabular format. The easiest way to achieve this is by using HTML table. But soon this gets complex as you need a way to support pagination (client-side and server-side), sorting (single & multi column), resizable columns, inline editing, filtering etc.
It is a common requirement for any project to display data in some kind of tabular format. The easiest way to achieve this is by using HTML table. But soon this gets complex as you need a way to support pagination (client-side and server-side), sorting (single & multi column), resizable columns, inline editing, filtering, etc.
Presentation from RedDotRubyConf 2011 in Singapore. It explains multi-tenancy and why it is increasingly required for Rails development. Four of the many approaches are covered in some detail (including what resources we have available for re-use) and I end with a naive question (& call to action?) .. "Isn't it about time there was a 'Rails Way'?"
Talk given by Chris McCuller, Associate Software Engineer at Salesforce, at GEMConf Triangle in August 2016
Did you know you can ember g an ember g? Mind blown? Take a wading pool splash into how to use Ember's blueprints to streamline common development tasks.
GumGum relies heavily on Cassandra for storing different kinds of metadata. Currently GumGum reaches 1 billion unique visitors per month using 3 Cassandra datacenters in Amazon Web Services spread across the globe.
This presentation will detail how we scaled out from one local Cassandra datacenter to a multi-datacenter Cassandra cluster and all the problems we encountered and choices we made while implementing it.
How did we architect multi-region Cassandra in AWS? What were our experiences in implementing multi-datacenter Cassandra? How did we achieve low latency with multi-region Cassandra and the Datastax Driver? What are the different Cassandra use cases at GumGum? How did we integrate our Cassandra with Spark?
This course teaches you the concepts of Angular. You will learn how to utilize Components, Annotations, Views, Event Handlers, Directives and more. In Angular everything is a Component and this course takes a component-centric approach. We will use Components as the main point of discussion and you will learn about other concepts in Angular in the context of Components.
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
GraphQL is query language for APIs, but what are the advantages and how would one implement such in their microservices/APIs. In this session, I will go through the basics of GraphQL, different aspects of GraphQL and architecture of such APIs. There will be a demo/live-coding on, how 4 different ways we can implement GraphQL for a Springboot microservice/API. Lots of examples, live coding and helpful comparison on structure, usage and implementations of GraphQL in Springboot & Java world.
ESUG 2017
youtube: https://youtu.be/RfalKwgvf0I
First Name: Pavel
Last Name: Krivanek
Title: Metamodeling of custom Pharo images
Type: Talk / Demonstration, 30 min
In this talk I will present a new improved implementation of the
Smalltalk metamodel named Ring. I will describe reasons why a new
implementation was required and I will show the basics of its
architecture and how to use it from the user perspective. Then I will present how the Ring models can be used for bootstrapping of small custom task-oriented Pharo images and how to use them in practice.
Bio:
Pavel Krivanek is a software engineer at Inria Nord Europe in
(http://rmod.lille.inria.fr ) RmoD team. He actively participates in the Pharo open source community with the main focus on Pharo modularization, boostrapping and cleaning. Currently he works on new metamodeling basics of the Moose platform.
This tutorial is an advanced guide to Quartz plugin. It includes a quick presentation on Quartz plugin, the task artefact, Quartz Grails plugin Meta data, plugin events and application reloading. The tutorial begins with a section of introduction to Quartz plugin. It presents how to use a Quartz plugin and what all is inside the Quartz plugin. Following is a Task section. It includes the Grails artefact, the task artefact and talks about how it was created by the quartz plugin to model the idea of a job.
The next section is on Quartz Grails plugin Meta data. It involves the Quartz plugin Meta data and what it does with spring, dynamic methods and application context. The last section of the tutorial talks about the plugin events and application reloading. It includes the plugin events and application reloading, a plugin can listen to events on change, configchange and shutdown.
Like Java Server Pages (JSP), GSP supports the concept of custom tag libraries. Unlike JSP, Grails' tag library mechanism is simple, elegant and completely reloadable at runtime.
Like Java Server Pages (JSP), GSP supports the concept of custom tag libraries. Unlike JSP, Grails' tag library mechanism is simple, elegant and completely reloadable at runtime.
"While Apache Kafka lacks native support for topic renaming, there are scenarios where renaming topics becomes necessary. This presentation will delve into the utilization of MirrorMaker 2.0 as a solution for renaming Kafka topics. It will illustrate how MirrorMaker 2.0 can efficiently facilitate the migration of messages from the old topic to the new one and how Kafka Connect Metrics can be employed to monitor the mirroring progress. The discussion will encompass the complexity of renaming Kafka topics, addressing certain limitations, and exploring potential workarounds when using MirrorMaker 2.0 for this purpose. Despite not being originally designed for topic renaming, MirrorMaker 2.0 has a suitable solution for renaming Kafka topics.
Blog Post : https://engineering.hellofresh.com/renaming-a-kafka-topic-d6ff3aaf3f03"
It is a common requirement for any project to display data in some kind of tabular format. The easiest way to achieve this is by using HTML table. But soon this gets complex as you need a way to support pagination (client-side and server-side), sorting (single & multi column), resizable columns, inline editing, filtering etc.
It is a common requirement for any project to display data in some kind of tabular format. The easiest way to achieve this is by using HTML table. But soon this gets complex as you need a way to support pagination (client-side and server-side), sorting (single & multi column), resizable columns, inline editing, filtering, etc.
Presentation from RedDotRubyConf 2011 in Singapore. It explains multi-tenancy and why it is increasingly required for Rails development. Four of the many approaches are covered in some detail (including what resources we have available for re-use) and I end with a naive question (& call to action?) .. "Isn't it about time there was a 'Rails Way'?"
Talk given by Chris McCuller, Associate Software Engineer at Salesforce, at GEMConf Triangle in August 2016
Did you know you can ember g an ember g? Mind blown? Take a wading pool splash into how to use Ember's blueprints to streamline common development tasks.
GumGum relies heavily on Cassandra for storing different kinds of metadata. Currently GumGum reaches 1 billion unique visitors per month using 3 Cassandra datacenters in Amazon Web Services spread across the globe.
This presentation will detail how we scaled out from one local Cassandra datacenter to a multi-datacenter Cassandra cluster and all the problems we encountered and choices we made while implementing it.
How did we architect multi-region Cassandra in AWS? What were our experiences in implementing multi-datacenter Cassandra? How did we achieve low latency with multi-region Cassandra and the Datastax Driver? What are the different Cassandra use cases at GumGum? How did we integrate our Cassandra with Spark?
This course teaches you the concepts of Angular. You will learn how to utilize Components, Annotations, Views, Event Handlers, Directives and more. In Angular everything is a Component and this course takes a component-centric approach. We will use Components as the main point of discussion and you will learn about other concepts in Angular in the context of Components.
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
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
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.
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.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
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.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
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/
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!
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.
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.
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.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
3. Magritte: Describe once,
get everywhere
• Introspection • Object persistency
• Reflection
• Object indexing
• Documentation
• Object setup
• Viewer building
• Object verification
• Form/Editor building
• Object adaption
• Report building
• Data validation • Object customization
• Query processing • and much more
4. Why Magritte 3 All in all the "new" Magritte would look like in the following
From: Lukas Renggli example. Imagine a shop item with the accessor #place:
November 2010 Item>>place
^ place
I wrote a proposal this summer of want to proceed on Item>>place: aString
that, but of course I had to finish my writing and never actually place := aString
found the time to implement it:
The meta-description is defined on the instance-side and annotated. It
-------------------- can refer to itself for the possible places:
I propose to perform the following (non-backward compatible) changes Item>>placeDescription
in the Magritte 2 code-base to resolve some major annoyances and <magritte>
issues that keep on reoccurring:
^ MASingleOptionDescription new
- Move descriptions from class-side to instance-side. This resolves options: self possiblePlaces;
various issues such as cache-invalidation, instance specific label: 'Place of Item';
descriptions, dynamic descriptions, context dependent descriptions, accessor: #place;
etc. Furthermore the descriptions will be closer to the code they yourself
describe and it will be possible to describe class- and instance-side
of an object, not just the instance-side. Class extensions can modify a description using:
- Rename the method #description as the default entry point into Item>>placeDescriptionXmlStorage: aDescription
Magritte to #magritteDescription. This avoids common problems where <magritte: #placeDescription>
the domain model already defines such a method.
^ placeDescription xmlTag: 'xname'
- Instead of using a naming convention for description methods, use a
pragma called <magritte> to annotate the methods. And to extend and Since these changes are not backward compatible I'll try to provide
change existing descriptions use <magritte: aSelector>. Finally all automatic refactorings for most parts. Moving existing code to the new
Smalltalk implementation reached a consensus of pragmas that can be codebase will certainly cause some problems, but in the long run I
safely used cross-platform. believe this to be a much better approach than the current one. If
people have any feedback, concerns or other changes that would be
important in the same run I am happy to hear them.
5. Issues with Magritte2
• Name collision with #description
• class-side description:
• Cache-invalidation
• dynamic descriptions
• instance specific descriptions
• context dependent descriptions
8. Magritte 3
Descriptions move from class to instance.
Use <magritteDescription> pragmas
rather than naming convention.
9. Magritte 3
Descriptions move from class to instance.
Use <magritteDescription> pragmas
rather than naming convention.
All descriptions are dynamically generated.
10. Magritte 3
Descriptions move from class to instance.
Use <magritteDescription> pragmas
rather than naming convention.
All descriptions are dynamically generated.
Rename #description to
#magritteDescription
11. Magritte 3
Descriptions move from class to instance.
Use <magritteDescription> pragmas
rather than naming convention.
All descriptions are dynamically generated.
Rename #description to
#magritteDescription
Non-backward compatible
16. MMAttendee class>>#descriptionBookingDate
^ MADateDescription new
priority: 30;
label: 'Booking date';
tooltip: 'When the attendee booked';
accessor: #bookingDate;
default: [ Date today ] magritteDynamicObject;
yourself
17. MMAttendee class>>#descriptionBookingDate
^ MADateDescription new
priority: 30;
label: 'Booking date';
tooltip: 'When the attendee booked';
accessor: #bookingDate;
default: [ Date today ] magritteDynamicObject;
yourself
MMAttendee>>#descriptionBookingDate
^ MADateDescription new
priority: 30;
label: 'Booking date';
tooltip: 'When the attendee booked';
accessor: #bookingDate;
default: [ Date today ] magritteDynamicObject;
yourself
18. MMAttendee class>>#descriptionBookingDate
^ MADateDescription new
priority: 30;
label: 'Booking date';
tooltip: 'When the attendee booked';
accessor: #bookingDate;
default: [ Date today ] magritteDynamicObject;
yourself
MMAttendee>>#descriptionBookingDate
<magritteDescription>
^ MADateDescription new
priority: 30;
label: 'Booking date';
tooltip: 'When the attendee booked';
accessor: #bookingDate;
default: [ Date today ] magritteDynamicObject;
yourself
19. MMAttendee class>>#descriptionBookingDate
^ MADateDescription new
priority: 30;
label: 'Booking date';
tooltip: 'When the attendee booked';
accessor: #bookingDate;
default: [ Date today ] magritteDynamicObject;
yourself
MMAttendee>>#descriptionBookingDate
<magritteDescription>
^ MADateDescription new
priority: 30;
label: 'Booking date';
tooltip: 'When the attendee booked';
accessor: #bookingDate;
default: Date today;
yourself
20. Refactoring
Move class-side descriptions to instance-
side
add <magritteDescription>
Works for description extensions.
Operates at a method, class or package
level
Battle-tested in translating Pier
21. Refactoring will not
remove empty class-side categories
convert class-side message sends within
descriptions to add class
convert calls from #description to
#magritteDescription
Simplify Magritte 1 or 2 dynamic description work-
arounds
Remove #magritteDynamicObject and it’s associated
block
22. Porting guidelines
1. Use the refactoring support to move class-side
descriptions to instance side descriptions with pragmas -
making sure that any accessors to class side methods are
either prefixed with ‘class’ or moved to the instance side.
2. remove #magritteDynamic and remove the block around
the method.
3. search for all senders and implementors of #description
in your code, if they are magritte descriptions rename the
selector from #description to #magritteDescription
4. Remove any empty categories on the class side.
23. Status
All tests green.
Although the API changes appear significant the code
changes within Magritte are less significant and mainly
localised to MAPragmaBuilder
Pier has been ported to Magritte 3 (Pier 3) and is stable.
Magritte-Json and Magritte-XMLBinding ported
Other Magritte add-ons such Magritte-JQuery un-ported
No performance testing - descriptions are no longer
cached. Is this significant in the context of an application?
24. Next steps
• Install:
Gofer it
squeaksource: 'MetacelloRepository';
package: 'ConfigurationOfMagritte3';
load.
ConfigurationOfMagritte3 project stableVersion load:'Seaside'.
Gofer it
squeaksource: 'MetacelloRepository';
package: 'ConfigurationOfMagritte3AddOns';
load.
ConfigurationOfMagritte3 project stableVersion load.
• Use the refactoring tools to move to Magritte 3.
• Profile performance within your application.
26. Further information
• Seaside Book:
http://book.seaside.st/book/advanced/magritte
• Lukas's site:
http://www.lukas-renggli.ch/smalltalk/magritte
• Magritte/Pier mail list:
<smallwiki@iam.unibe.ch>
Editor's Notes
Although I&#x2019;m saying Magritte 2 this equally applies to Magritte 1 - the only difference between Magritte 1 and 2 was some changes for Seaside 30 compatibility\n
Although I&#x2019;m saying Magritte 2 this equally applies to Magritte 1 - the only difference between Magritte 1 and 2 was some changes for Seaside 30 compatibility\n
Although I&#x2019;m saying Magritte 2 this equally applies to Magritte 1 - the only difference between Magritte 1 and 2 was some changes for Seaside 30 compatibility\n
Although I&#x2019;m saying Magritte 2 this equally applies to Magritte 1 - the only difference between Magritte 1 and 2 was some changes for Seaside 30 compatibility\n
Magritte is a meta-description framework - it allows you to add meta-data descriptions to your domain objects which can then be used to automatically generate reports, editors but not just that I&#x2019;m finding it increasingly useful for serialising into other industry standard formats such as Json, XML then materialising the domain objects back from those formats.\n
\n
\n
allows renaming so that descriptions can be along-side the accessors\n
allows renaming so that descriptions can be along-side the accessors\n
allows renaming so that descriptions can be along-side the accessors\n
allows renaming so that descriptions can be along-side the accessors\n
allows renaming so that descriptions can be along-side the accessors\n