The document discusses stored procedures and triggers in databases, noting that stored procedures are reusable SQL code stored on the database that can increase performance, while triggers automatically run SQL code in response to changes made to a database table, such as inserts, updates or deletes. Both stored procedures and triggers can help with tasks like validation, auditing, and increasing performance by reducing traffic between applications and databases.
Using and Creating SQL Functions with Ammar Hassan Brohi.
String Functions
Numeric Functions
String / Number Conversion Functions
Group Functions
Date and Time Functions
Date Conversion Functions
Anchor object
Document object
Event object
Form and Form Input object
Frame, Frameset, and IFrame objects
Image object etc
Dom hiearchy,managing events
onload and onunload
Using the Onclick Event Handler
In JavaScript, almost "everything" is an object.
-Booleans can be objects (if defined with the new keyword)
-Numbers can be objects (if defined with the new keyword)
-Strings can be objects (if defined with the new keyword)
-Dates are always objects
-Maths are always objects
-Regular expressions are always objects
-Arrays are always objects
-Functions are always objects
-Objects are always objects
Consists of the explanations of the basics of SQL and commands of SQL.Helpful for II PU NCERT students and also degree studeents to understand some basic things.
Using and Creating SQL Functions with Ammar Hassan Brohi.
String Functions
Numeric Functions
String / Number Conversion Functions
Group Functions
Date and Time Functions
Date Conversion Functions
Anchor object
Document object
Event object
Form and Form Input object
Frame, Frameset, and IFrame objects
Image object etc
Dom hiearchy,managing events
onload and onunload
Using the Onclick Event Handler
In JavaScript, almost "everything" is an object.
-Booleans can be objects (if defined with the new keyword)
-Numbers can be objects (if defined with the new keyword)
-Strings can be objects (if defined with the new keyword)
-Dates are always objects
-Maths are always objects
-Regular expressions are always objects
-Arrays are always objects
-Functions are always objects
-Objects are always objects
Consists of the explanations of the basics of SQL and commands of SQL.Helpful for II PU NCERT students and also degree studeents to understand some basic things.
What is the DOM?
The DOM is a W3C (World Wide Web Consortium) standard.
The DOM defines a standard for accessing documents:
"The W3C Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document."
The W3C DOM standard is separated into 3 different parts:
Core DOM - standard model for all document types
XML DOM - standard model for XML documents
HTML DOM - standard model for HTML documents
The HTML DOM (Document Object Model)
When a web page is loaded, the browser creates a Document Object Model of the page.
The HTML DOM model is constructed as a tree of Objects.
With the HTML DOM, JavaScript can access and change all the elements of an HTML document.
Super keyword is a reference variable that is used for refer parent class object. Super keyword is used in java at three level, at variable level, at method level and at constructor level.
What is the DOM?
The DOM is a W3C (World Wide Web Consortium) standard.
The DOM defines a standard for accessing documents:
"The W3C Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document."
The W3C DOM standard is separated into 3 different parts:
Core DOM - standard model for all document types
XML DOM - standard model for XML documents
HTML DOM - standard model for HTML documents
The HTML DOM (Document Object Model)
When a web page is loaded, the browser creates a Document Object Model of the page.
The HTML DOM model is constructed as a tree of Objects.
With the HTML DOM, JavaScript can access and change all the elements of an HTML document.
Super keyword is a reference variable that is used for refer parent class object. Super keyword is used in java at three level, at variable level, at method level and at constructor level.
Series of articles written by me for Vidusara Science Magazine, Sri Lanka [2009 - 2010]; sharing for all those who like to learn the basics of C Programming in Sinhala.
Series of articles written by me for Vidusara Science Magazine, Sri Lanka [2008 – 2010]; sharing for all those who like to learn the basics of Computer Networks in Sinhala.
Series of articles written by me for Vidusara Science Magazine, Sri Lanka [2012]; sharing for all those who like to learn the basics of Data Structures and Algorithms in Sinhala.
Series of articles written by me for Vidusara Science Magazine, Sri Lanka [2011 – 2012]; sharing for all those who like to learn the basics of OOP in Sinhala.
These were prepared to teach the module "Emerging Technologies" for the 3rd year Undergraduates of the Asia Pacific Institue of Information Technology, Colombo-2, Sri Lanka (Remotely)
These slides were prepared to teach the module "Emerging Technologies" for the 3rd year Undergraduates of the Asia Pacific Institue of Information Technology, Colombo-2, Sri Lanka (Remotely)
These were prepared to teach the module "Emerging Technologies" for the 3rd year Undergraduates of the Asia Pacific Institue of Information Technology, Colombo-2, Sri Lanka (Remotely)
These slides were used for the module "Introduction to EJB" which was taught as a part of the course "Software Engineering" for the 3rd year computer enigneering undergraduates of the University of Peradeniya in 2010.
These slides were used to teach the module "Introduction to Enterprise Applications and Tools" for the 3rd year undergraduates of the Department of Computer Engineering, University of Peradeniya in 2010.
These slides were used to teach the module "Introduction to Agile Software Development & Python" as a sub-section of the major course "Software Engineering" for the 3rd year undergraduates of the Department of Computer Engineering, University of Peradeniya in 2010.
These slides were used to teach the above subject for the 3rd year undergrads of the Departement of Computer Engineering, University of Peradeniya in 2009, under IFS-PERADENIYA industry -university collaboration.
Things to ponder before you start building [cooperate] softwareTharindu Weerasinghe
This particular PPT was prepared for the session I carried out on 28th Jan 2022,for the 3rd year computer engineering udergrads of the Faculty of Engineering, University of Peradeniya, 20400, Peradeniya, SRI LANKA.
This is the presentation of the invited speech by me on " How to make screens and the internet safe for Children ".
The webinar was organized by the Sri Lanka Medical Association on 7th Sep 2021
A Survey Study on Higher Education Trends among Sri Lankan IT ProfessionalsTharindu Weerasinghe
This is a presentation I did at IEEE TALE Conference 2019, held in Yogyakarta, Indonesia. This is about Higher Education Trends amoung Sri Lanka IT Professionals
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfJay Das
With the advent of artificial intelligence or AI tools, project management processes are undergoing a transformative shift. By using tools like ChatGPT, and Bard organizations can empower their leaders and managers to plan, execute, and monitor projects more effectively.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
2. l
* A stored procedure is a segment of declarative SQL statements stored
inside the database catalog. (directory of information in database).
* A stored procedure can be invoked by triggers, other stored procedures,
and programming languages in the likes of Java, Python, PHP.
Stored Procedures
4. l
Advantages of Stored Procedures
* Increase the performance of applications.
* Reduce traffic between the application and database
server.
* Reusable and transparent to all applications that access
the particular database.
* Secure.
5. l
Disadvantages of Stored Procedures
* If there are many procedures, the memory consumption
will be high and the overall system might stuck!
* Can't implement complex business logics.
* Not easy to maintain.
* Hard to debug the stored procedures.
6. A sample – Initial Setup
I aussume you all have a mysql user in your lab.
mysql -u username -p
If you know the root password let's login as root
mysql -u root -p
CREATE DATABASE dbname;
USE dbname;
These things you should know by now as you should have done
these in your previous course. So our dbname is dblessons;
7. A sample – Initial Setup
I aussume you all have a mysql user in your lab.
mysql -u username -p
If you know the root password let's login as root
mysql -u root -p
CREATE DATABASE dbname;
USE dbname;
These things you should know by now as you should have done
these in your previous course. So our dbname is dblessons;
8. A sample – Create Tables
CREATE TABLE `inventory` (
`seqid` int(20) NOT NULL
AUTO_INCREMENT,
`itemtype` varchar(300) NOT NULL,
`itemname` text NOT NULL,
`itemid` varchar(20) NOT NULL,
`usedby` int(10) DEFAULT NULL,
PRIMARY KEY (`seqid`),
UNIQUE KEY `itemid` (`itemid`)
) ENGINE=InnoDB AUTO_INCREMENT=123
DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client =
@saved_cs_client */;
CREATE TABLE `employees` (
`empid` int(10) unsigned NOT NULL,
`name` varchar(300) NOT NULL,
`homeaddress` text NOT NULL,
`email` varchar(200) NOT NULL,
`phone` varchar(20) NOT NULL,
`salary` varchar(20) NOT NULL,
`joineddate` varchar(25) NOT NULL,
`lastincrementdate` varchar(25)
NOT NULL,
`dateofbirth` varchar(25) NOT
NULL,
`designation` varchar(30) NOT
NULL,
`leaves` int(11) DEFAULT NULL,
`resigneddate` varchar(25) DEFAULT
NULL,
`expertise` varchar(75) DEFAULT
NULL,
`nic` varchar(10) DEFAULT NULL,
PRIMARY KEY (`empid`)
) ENGINE=InnoDB DEFAULT
CHARSET=latin1;
9. A sample – Insert Some Records
INSERT INTO `employees` VALUES(1,'Nimal Shantha','No.1, rnGood
Road,rnNugegoda.',' ',' ','LKR 100,000.00','20141003','201410
10','19811123','Manager',0,'20150305',NULL,NULL),
(2,'Ruwan Darshana','No.1, rnFine
Road,rnNugegoda','ruwan@abc.com','777101010','200,000','20141003','2016
0115','19830216','Head of Operations',24,'','Management, C++, Core Java,
Python, Node JS','840141615V');
INSERT INTO `inventory` VALUES (1,'Laptop','NXMLZ0F8BE3400 (Adapter
F210821437003201)','LP001',23),(2,'Laptop','NXMCAS01010847600 (Adapter
F5TB0429143195)','LP002',20),(4,'Laptop','D499B12 (AdapterCN06TM1C72438
45K2D6CA01)','LP003',21),(9,'Laptop','NXG3HSG10E57E7600 (Adapter
KP06503013548084D6PE03)','LP004',22),(11,'Laptop','NXMLZSG0F8DB3400
(AdapterF210821438001685)','LP005',16),(12,'Laptop','NXM24440F8563400
(AdapterADT KP06503013548F883EPE03)','LP006',27);
11. A sample – Call and See a Procedure
(MySQL, MariaDB)
Calling the created procedure:
CALL item_type(“Laptop”);
<DELIMITER value declared above, which
is *>
See the created procedure:
SHOW CREATE PROCEDURE
item_type; <DELIMITER value
declared above, which is *>
12. A sample – Complex Procedure –
Try something like these!
CREATE PROCEDURE
Withdraw /*
Routine name */
(parameter_amount DECIMAL(6,2), /*
Parameter list */
parameter_teller_id INTEGER,
parameter_customer_id INTEGER)
MODIFIES SQL DATA /*
Data access clause */
BEGIN /* Routine
body */
UPDATE Customers
SET balance = balance
parameter_amount
WHERE customer_id =
parameter_customer_id;
UPDATE Tellers
SET cash_on_hand = cash_on_hand +
parameter_amount
WHERE teller_id =
parameter_teller_id;
INSERT INTO Transactions VALUES (
parameter_customer_id,
parameter_teller_id,
parameter_amount);
END;
13. Database Triggers
* A SQL trigger is a set of SQL statements
stored in the database catalog.
* A SQL trigger is run (or we say fired)
whenever an associated event
(with a) table occurs
e.g., insert, update or delete.
14. l
Advantages of Triggers
* Can check errors in the business logic in the db layer.
* Provide an alternative way to check data integrity.
* Useful to audit the changes of data in tables.
15. l
Disdvantages of Triggers
* Triggers can only provide an extended validation and they cannot do all
the validations. Some basic validations have to be done in the application
layer.
e.g. you can validate user’s inputs in the client side by using JavaScript or on the
server side using server-side scripting languages such as JSP, PHP, ASP.NET, Perl.
* May increase the overhead of the db.
* Triggers are invoked and executed invisible from the client applications,
therefore, it is difficult to figure out what happens in the database layer.
16. A sample – Trigger, related to a db log
(first create 2 tables)
CREATE TABLE `projects` (
`projid` varchar(20) NOT NULL,
`projname` varchar(30) NOT NULL,
`starteddate` varchar(25) NOT NULL,
`currentstatus` varchar(25) NOT NULL,
`projinfo` varchar(300) DEFAULT NULL,
PRIMARY KEY (`projid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE project_audit (
id INT AUTO_INCREMENT PRIMARY
KEY,
projid VARCHAR(50) NOT NULL,
projname VARCHAR(50) NOT NULL,
currentstatus VARCHAR(50)NOT
NULL,
action VARCHAR(50) DEFAULT
NULL,
changedat DATETIME DEFAULT
NULL
);
17. A sample – Now Create the Trigger
DELIMITER $$$
CREATE TRIGGER after_project_update
AFTER UPDATE ON projects
FOR EACH ROW
BEGIN
INSERT INTO project_audit
SET action = 'update',
projid = OLD.projid,
projname = OLD.projname,
changedat = NOW();
END $$$
DELIMITER;
This will list down all triggers you have created:
SHOW TRIGGERS; $$$
18. A sample – Trigger, related to a db log
(secondly enter some values to the projects table)
LOCK TABLES `projects` WRITE;
/*!40000 ALTER TABLE `projects` DISABLE KEYS */;
INSERT INTO `projects` VALUES
('Centralized','ERPCentralized','20161121','In
Progress',' Enterprise Version of ERPC'),
('ERPC','ERPC PHP','20161002','InProgress','Aimed
for Customers'),('TreeECOn','Tree ECOn','201502
13','OnHold',' Tree STB ECO');
/*!40000 ALTER TABLE `projects` ENABLE KEYS */;
UNLOCK TABLES;
19. A sample – Now Create the Trigger
DELIMITER $$$
CREATE TRIGGER after_project_update
AFTER UPDATE ON projects
FOR EACH ROW
BEGIN
INSERT INTO project_audit
SET action = 'update',
projid = OLD.projid,
projname = OLD.projname,
changedat = NOW();
END $$$
DELIMITER;
This will list down all triggers you have created:
SHOW TRIGGERS; $$$
20. l
How to check the above Trigger?
We created a trigger that will execute after an update.
Hence we need to update the project table first.
UPDATE projects SET projname
= "Fruit ECOn" WHERE projid =
"TreeECOn"; $$$
Remember our delimiter this time is, $$$
Now, if you check your project_audit table then you will
see a new record being added.
22. So what are the triggering options?
BEFORE INSERT – activated before data is inserted into the table.
AFTER INSERT – activated after data is inserted into the table.
BEFORE UPDATE – activated before data in the table is updated.
AFTER UPDATE – activated after data in the table is updated.
BEFORE DELETE – activated before data is removed from the table.
AFTER DELETE – activated after data is removed from the table.
Do more examples guys! Play with these! Enjoy triggering!