or "Towards a Standard TAPI", presented at AUSOUG Connect Perth, November 2016. I've been using a combination of Table APIs and Transaction APIs to build complex but maintainable applications in Apex - something I encourage everyone to at least consider.
One App, Many Clients: Converting an APEX Application to Multi-TenantJeffrey Kemp
When the director of a multi-sport event asked me to build an online registration system, I decided to build one that would not only serve that organisation, but could also be customised and re-used for other similar events around Australia. Since 2013 the "GamesFest" system has been used for up to 7 events run by 3 different organisations, each year.
GamesFest v1 was an APEX application which I would customise for each organisation using the "Copy Application" feature. This soon became unwieldy, however, as every bug fix or enhancement needed to be re-done in each Copy. GamesFest v2 was a partial re-write, a single APEX application using a different approach which gives the best of both worlds; all clients get bugfixes and enhancements immediately, while preserving their customisations.
This talk will compare and contrast the two approaches and will hopefully give APEX developers ideas they can implement or adapt for their own situations.
Follow-up blog article: https://jeffkemponoracle.com/2017/11/convert-an-apex-application-to-multi-tenant/
What is PL/SQL
Procedural Language – SQL
An extension to SQL with design features of programming languages (procedural and object oriented)
PL/SQL and Java are both supported as internal host languages within Oracle products.
JCL
Job Control Language (JCL) is a name for scripting languages used On IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem.
JCL acts as an interface between application programming and MVS Operating system.
Jcl is used for compilation and execution of batch programs.
Apart from the above functionalities JCL can also be used for,
1. Controlling the jobs.
2. Create GDG’S.
3. Allocate PDS,PS file with IBM Utilities.
4. Create Procs.
5. Sort the files.
JCL Coding Sheet
1,2,3----------Column Numbers----------72,73------------80
//JOBNAME JOB PARAMETERS------COMMENTS
// EXEC
// DD
//* ------------ Comment (* in 3rd column indicates line in comment)
//------------ End of JCL
Where // ----- Identification Field
job name------- Naming field
JOB,EXEC,DD - Statement / Operation
NOTE
If we want to continue parameters in the next line end the last parameter with “,” and continue next parameter only in 4-16 columns.
There are three statements in JCL.
JOB
EXEC
DD
JOB Statement:
Job statement is used to identify job name and job related parameters
JOBCARD = job name + job related parameters.
Syntax
//JOBNAME JOB ACCOUNT INFORMATION,’USERNAME’,CLASS=A-Z/0-9,
// NOTIFY =&SYSUID/RACF ID,MSGCLASS,
// MSGLEVEL=(X,Y),PRTY=0-15,
// TIME=(M,S),REGION=MB/KB,TYPRUN=SCAN/
// HOLD/COPY,COND=(RC,OPERATOR,STEPNAME)
// COND=ONLY OR COND=EVEN,RESTART=STEPNAME
JOBNAME
It is required to identify this job from other jobs in the SPOOL
1 to 8 characters minimum 1 character and maximum is 8 character.
1st character must be alphabet.
Other characters can be alphabets or numeric or $,&,#.
Example
Job names for personal or lab sessions
Userid + 1 / 2 chars
KC03P83$ ------- Userid is KC03P83
KC03P84&--------Userid is KCO3P84
ACCOUNTING INFORMATION
It is a keyword parameter and codes it after JOB statement.
It is used for billing purpose, in real time when we submit any job it is going to take some CPU time. Based on the CPU time there will be some amount involved where this amount has to go will be decided by A/C information parameters.
Examples
(8012T)
(80121I)
(8012M)
USERNAME
It is used to identify the user who has written the JCL.
It can be maximum of 20 characters.
Note Both A/C information and user name are positional parameters and the remaining job
card parameters are keyword parameters.
EX1: //KC03P83A JOB (487A),’JANAKI RAM’
EX2: //KC03P84& JOB (488T),’SOMISETTY’
NOTIFY
To which user id the job has to be notification after successful or unsuccessful completion.
Successful completion means MAXCC = 0 (or) 04 unsuccessful completion means MAXCC > 04.
If it is not coded,then user has to check the status of the job from the spo
Best Practices for Middleware and Integration Architecture Modernization with...Claus Ibsen
What are important considerations when modernizing middleware and moving towards serverless and/or cloud native integration architectures? How can we make the most of flexible technologies such as Camel K, Kafka, Quarkus and OpenShift. Claus is working as project lead on Apache Camel and has extensive experience from open source product development.
The talk was recorded and runs for 30 minutes and published on youtube at: https://www.youtube.com/watch?v=d1Hr78a7Lww
Mainframe jcl exec and dd statements part - 3janaki ram
EXEC STATEMENT(EXEC)
EXEC Statement is used to identify program name or procedure name.
Maximum we can code 255 EXEC statements in a JOB.
In EXEC statement has two kinds of parameters
Position parameter Keyword parameter
PGM TIME , COND
PROC REGION , PARM
If you not mention any thing default it takes PROC
PGM
This is a positional parameter which must be coded after EXEC with one blank. This parameter indicates the name of program (or) procedure name
Syntax
//STEPNAME EXEC PGM=REPORT (OR)
PROC = PROCEDURE NAME
PARM
It is keyword parameter and it is mainly used for passing the data to another program.
To pass input to Application program
To invoke complier option.
This is a keyword parameter at activity / step level must be coded with exec operand after PGM parameter.
This parameter allows MAX(100) characters.
To receive PARM parameter data, Cobol program must be coded with “Procedure Division Using Parameter ” option.
These parameters must be declared in the linkage section.
DATA DESCRIPTOR STATEMENT ( DD STMT)
It is used to identify files( input and output ) used in JCL
DD name act as a bridge b/w Cobol program and execution JCL
In DD statement has two kinds of parameters.
Position Parameter Keyword Parameter
* DSN,DISP
DATA SPACE,UNIT
DUMMY DCB,VOLUME
*
Position parameter at DD level used with SYSIN to pass data to Cobol programs this is known as In stream data any number of records can be passed to the program.
In stream data is used to pass values from JCL to Cobol dynamically.
To accept the values in Cobol program, we should have equivalent accept verbs.
Syntax
//SYSIN DD * ------- Entry of in stream data
100
200
/* ---------------------- End of in stream data
DATA
We can pass any thing to another program including special character
Syntax
//SYSIN DD DATA
100
/*
200
/*
DUMMY
All files are treated as End of the file
Syntax
//SYSIN DD DUMMY
NOTE
There is no input to the application all input files treated as End of the file.
DSN
Through DSN we can refer temporary / permanent file
Is a physical space or file where the records will be stored.
DISP
DISP parameter is used to identify the mode of the file.
DISP= ( STATUS, NORMAL , ABNORMAL )
TERMINATION TERMINATION
NEW DELETE DELETE
OLD KEEP KEEP
SHR CATLG CATLG
MOD UNCATLG UNCATLG
NEW Creating the data set first time
OLD Already created accessing the data set all resources are allocated exclusively . No other user can until is released by the current user. If dataset is not existing this creates.
SHR The data set can be accessed by multiple users at a time.
MOD Appending the records to the existing record
NOTE If the dataset is not existing , then MOD is assumed as NEW and writes records to the dataset.
One App, Many Clients: Converting an APEX Application to Multi-TenantJeffrey Kemp
When the director of a multi-sport event asked me to build an online registration system, I decided to build one that would not only serve that organisation, but could also be customised and re-used for other similar events around Australia. Since 2013 the "GamesFest" system has been used for up to 7 events run by 3 different organisations, each year.
GamesFest v1 was an APEX application which I would customise for each organisation using the "Copy Application" feature. This soon became unwieldy, however, as every bug fix or enhancement needed to be re-done in each Copy. GamesFest v2 was a partial re-write, a single APEX application using a different approach which gives the best of both worlds; all clients get bugfixes and enhancements immediately, while preserving their customisations.
This talk will compare and contrast the two approaches and will hopefully give APEX developers ideas they can implement or adapt for their own situations.
Follow-up blog article: https://jeffkemponoracle.com/2017/11/convert-an-apex-application-to-multi-tenant/
What is PL/SQL
Procedural Language – SQL
An extension to SQL with design features of programming languages (procedural and object oriented)
PL/SQL and Java are both supported as internal host languages within Oracle products.
JCL
Job Control Language (JCL) is a name for scripting languages used On IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem.
JCL acts as an interface between application programming and MVS Operating system.
Jcl is used for compilation and execution of batch programs.
Apart from the above functionalities JCL can also be used for,
1. Controlling the jobs.
2. Create GDG’S.
3. Allocate PDS,PS file with IBM Utilities.
4. Create Procs.
5. Sort the files.
JCL Coding Sheet
1,2,3----------Column Numbers----------72,73------------80
//JOBNAME JOB PARAMETERS------COMMENTS
// EXEC
// DD
//* ------------ Comment (* in 3rd column indicates line in comment)
//------------ End of JCL
Where // ----- Identification Field
job name------- Naming field
JOB,EXEC,DD - Statement / Operation
NOTE
If we want to continue parameters in the next line end the last parameter with “,” and continue next parameter only in 4-16 columns.
There are three statements in JCL.
JOB
EXEC
DD
JOB Statement:
Job statement is used to identify job name and job related parameters
JOBCARD = job name + job related parameters.
Syntax
//JOBNAME JOB ACCOUNT INFORMATION,’USERNAME’,CLASS=A-Z/0-9,
// NOTIFY =&SYSUID/RACF ID,MSGCLASS,
// MSGLEVEL=(X,Y),PRTY=0-15,
// TIME=(M,S),REGION=MB/KB,TYPRUN=SCAN/
// HOLD/COPY,COND=(RC,OPERATOR,STEPNAME)
// COND=ONLY OR COND=EVEN,RESTART=STEPNAME
JOBNAME
It is required to identify this job from other jobs in the SPOOL
1 to 8 characters minimum 1 character and maximum is 8 character.
1st character must be alphabet.
Other characters can be alphabets or numeric or $,&,#.
Example
Job names for personal or lab sessions
Userid + 1 / 2 chars
KC03P83$ ------- Userid is KC03P83
KC03P84&--------Userid is KCO3P84
ACCOUNTING INFORMATION
It is a keyword parameter and codes it after JOB statement.
It is used for billing purpose, in real time when we submit any job it is going to take some CPU time. Based on the CPU time there will be some amount involved where this amount has to go will be decided by A/C information parameters.
Examples
(8012T)
(80121I)
(8012M)
USERNAME
It is used to identify the user who has written the JCL.
It can be maximum of 20 characters.
Note Both A/C information and user name are positional parameters and the remaining job
card parameters are keyword parameters.
EX1: //KC03P83A JOB (487A),’JANAKI RAM’
EX2: //KC03P84& JOB (488T),’SOMISETTY’
NOTIFY
To which user id the job has to be notification after successful or unsuccessful completion.
Successful completion means MAXCC = 0 (or) 04 unsuccessful completion means MAXCC > 04.
If it is not coded,then user has to check the status of the job from the spo
Best Practices for Middleware and Integration Architecture Modernization with...Claus Ibsen
What are important considerations when modernizing middleware and moving towards serverless and/or cloud native integration architectures? How can we make the most of flexible technologies such as Camel K, Kafka, Quarkus and OpenShift. Claus is working as project lead on Apache Camel and has extensive experience from open source product development.
The talk was recorded and runs for 30 minutes and published on youtube at: https://www.youtube.com/watch?v=d1Hr78a7Lww
Mainframe jcl exec and dd statements part - 3janaki ram
EXEC STATEMENT(EXEC)
EXEC Statement is used to identify program name or procedure name.
Maximum we can code 255 EXEC statements in a JOB.
In EXEC statement has two kinds of parameters
Position parameter Keyword parameter
PGM TIME , COND
PROC REGION , PARM
If you not mention any thing default it takes PROC
PGM
This is a positional parameter which must be coded after EXEC with one blank. This parameter indicates the name of program (or) procedure name
Syntax
//STEPNAME EXEC PGM=REPORT (OR)
PROC = PROCEDURE NAME
PARM
It is keyword parameter and it is mainly used for passing the data to another program.
To pass input to Application program
To invoke complier option.
This is a keyword parameter at activity / step level must be coded with exec operand after PGM parameter.
This parameter allows MAX(100) characters.
To receive PARM parameter data, Cobol program must be coded with “Procedure Division Using Parameter ” option.
These parameters must be declared in the linkage section.
DATA DESCRIPTOR STATEMENT ( DD STMT)
It is used to identify files( input and output ) used in JCL
DD name act as a bridge b/w Cobol program and execution JCL
In DD statement has two kinds of parameters.
Position Parameter Keyword Parameter
* DSN,DISP
DATA SPACE,UNIT
DUMMY DCB,VOLUME
*
Position parameter at DD level used with SYSIN to pass data to Cobol programs this is known as In stream data any number of records can be passed to the program.
In stream data is used to pass values from JCL to Cobol dynamically.
To accept the values in Cobol program, we should have equivalent accept verbs.
Syntax
//SYSIN DD * ------- Entry of in stream data
100
200
/* ---------------------- End of in stream data
DATA
We can pass any thing to another program including special character
Syntax
//SYSIN DD DATA
100
/*
200
/*
DUMMY
All files are treated as End of the file
Syntax
//SYSIN DD DUMMY
NOTE
There is no input to the application all input files treated as End of the file.
DSN
Through DSN we can refer temporary / permanent file
Is a physical space or file where the records will be stored.
DISP
DISP parameter is used to identify the mode of the file.
DISP= ( STATUS, NORMAL , ABNORMAL )
TERMINATION TERMINATION
NEW DELETE DELETE
OLD KEEP KEEP
SHR CATLG CATLG
MOD UNCATLG UNCATLG
NEW Creating the data set first time
OLD Already created accessing the data set all resources are allocated exclusively . No other user can until is released by the current user. If dataset is not existing this creates.
SHR The data set can be accessed by multiple users at a time.
MOD Appending the records to the existing record
NOTE If the dataset is not existing , then MOD is assumed as NEW and writes records to the dataset.
Bootiful Development with Spring Boot and ReactVMware Tanzu
SpringOne Platform 2017
Matt Raible, Okta
To simplify development and deployment, you want everything in the same artifact, so you put your React app “inside” your Spring Boot app, right? But what if you could create your React app as a standalone app and make cross-origin requests to your API? A client app that can point to any server makes it easy to test your current client code against other servers (e.g. test, staging, production). This session shows how to develop with Java 8, Spring Boot, React, and TypeScript. You’ll learn how to create REST endpoints with Spring MVC, configure Spring Boot to allow CORS, and create an React app to display its data. If time allows we’ll cover authentication with OpenID Connect and deployment to Cloud Foundry.
Capella Days 2021 | Introduction to CAPELLA/ARCADIA and NASA Systems Engineer...Obeo
The NASA System Engineering (SE) handbook aims to provide general guidance and information on systems engineering, as it should be applied throughout NASA. The handbook introduces 3 common technical processes. One of these, is the System Design Process, describing the stakeholders expectations, requirements definition, logical decomposition and design solution definition. The 4 activities can be supported by a Model-Based Systems Engineering (MBSE) approach. To do so, an appropriate method and tool is necessary as the one provided by the ARChitecture Analysis & Design Integrated Approach.
ARCADIA, with its modeler CAPELLA, is a MBSE solution supporting system modeling activities. Based on 4 architectural layers, which are Operational Analysis, System Analysis, Logical and Physical Architecture, it is a structured architecture engineering method for defining and validating multi-domain systems.
This talk will present an educational overview of the ARCADIA methodology and System Design Process from the NASA SE, by introducing MBSE artefacts for space system.
The HUBBLE Space Telescope (HST) is a Cassegrain reflector telescope. Orbiting above the earth, HST elaborates a clear view of the universe free from the blurring and absorbing effects of the atmosphere. In order to illustrate the journey throughout CAPELLA, the HST will be introduced, as example, based on public information available.
Oracle APEX, Low Code for Data Driving AppsFranco Ucci
Oracle APEX low code platform delivers on the promise of low code with data driving capabilities that are sought after by many data and developer personnel, who need fast and quick validation. Low code is not the answer for everyone, but for many use cases, Oracle APEX low code delivers a great starting point, in less time and with less effort. To help illustrate a variety of fast low code capabilties, we will demonstrate the following: Building an App from a Spreadsheet, Building an App from QuickSQL, and also providing an introduction to REST APIs and JSON .
Oracle Spatial Studio: Fast and Easy Spatial Analytics and MapsJean Ihm
Learn about a new tool, Spatial Studio, that lets you quickly and easily do spatial analytics and create maps, even if you don't have GIS or Spatial knowledge. Now business users and non-GIS developers have a simple user interface to access the spatial features in Oracle Database.
Spatial Studio lets you prepare your data for spatial analysis, perform spatial analysis operations, publish, and share the results – as well access spatial analyses results via REST and incorporate in applications and workflows. Presented by Carol Palmer, Sr. Principal Product Manager, and David Lapp, Sr. Principal Product Manager, Oracle Spatial and Graph.
Presentation video including demo and resources available here: https://devgym.oracle.com/pls/apex/dg/office_hours/3084 .
Testing with JUnit 5 and Spring - Spring I/O 2022Sam Brannen
This session will give you an overview of the latest and greatest in the world of testing using JUnit Jupiter (a.k.a. JUnit 5) and the Spring Framework.
The focus will be major new features in JUnit Jupiter 5.8 and 5.9 as well as recent and upcoming enhancements to Spring's integration testing support.
【BS1】What’s new in visual studio 2022 and c# 10日本マイクロソフト株式会社
Watch this session to learn about the new capabilities in Visual Studio 2022 and the new C# 10 features for .NET developers. With Visual Studio 2022, you'll always get the best-in-class tools and services available for any developer, any app, and any platform. Whether you're using Visual Studio for the first time, or you've been using it for years, there's a lot to like in our newest version.
This is a introduction to PostgreSQL that provides a brief overview of PostgreSQL's architecture, features and ecosystem. It was delivered at NYLUG on Nov 24, 2014.
http://www.meetup.com/nylug-meetings/events/180533472/
The features released between Java 11 and Java 17 have brought a greater opportunity for developers to improve application development productivity as well and code expressiveness and readability. In this deep-dive session, you will discover all the recent Project Amber features added to the Java language such as Text blocks, Records (including Records serialization), Pattern Matching for instanceof, switch expression, sealed classes, and pattern matching for switch. The main goal of the Amber Project is to bring Pattern Matching to the Java platform, which will impact both the language and the JDK APIs. You will discover record patterns, array patterns, as well as deconstruction patterns, through constructors, factory methods, and deconstructors.
Why You Should Use Oracle SQL DeveloperJeffrey Kemp
Some of my favourite things about Oracle SQL Developer that make me more productive as a PL/SQL developer. Presented at AUSOUG Connect conference, November 2016 in Perth, Western Australia.
Bootiful Development with Spring Boot and ReactVMware Tanzu
SpringOne Platform 2017
Matt Raible, Okta
To simplify development and deployment, you want everything in the same artifact, so you put your React app “inside” your Spring Boot app, right? But what if you could create your React app as a standalone app and make cross-origin requests to your API? A client app that can point to any server makes it easy to test your current client code against other servers (e.g. test, staging, production). This session shows how to develop with Java 8, Spring Boot, React, and TypeScript. You’ll learn how to create REST endpoints with Spring MVC, configure Spring Boot to allow CORS, and create an React app to display its data. If time allows we’ll cover authentication with OpenID Connect and deployment to Cloud Foundry.
Capella Days 2021 | Introduction to CAPELLA/ARCADIA and NASA Systems Engineer...Obeo
The NASA System Engineering (SE) handbook aims to provide general guidance and information on systems engineering, as it should be applied throughout NASA. The handbook introduces 3 common technical processes. One of these, is the System Design Process, describing the stakeholders expectations, requirements definition, logical decomposition and design solution definition. The 4 activities can be supported by a Model-Based Systems Engineering (MBSE) approach. To do so, an appropriate method and tool is necessary as the one provided by the ARChitecture Analysis & Design Integrated Approach.
ARCADIA, with its modeler CAPELLA, is a MBSE solution supporting system modeling activities. Based on 4 architectural layers, which are Operational Analysis, System Analysis, Logical and Physical Architecture, it is a structured architecture engineering method for defining and validating multi-domain systems.
This talk will present an educational overview of the ARCADIA methodology and System Design Process from the NASA SE, by introducing MBSE artefacts for space system.
The HUBBLE Space Telescope (HST) is a Cassegrain reflector telescope. Orbiting above the earth, HST elaborates a clear view of the universe free from the blurring and absorbing effects of the atmosphere. In order to illustrate the journey throughout CAPELLA, the HST will be introduced, as example, based on public information available.
Oracle APEX, Low Code for Data Driving AppsFranco Ucci
Oracle APEX low code platform delivers on the promise of low code with data driving capabilities that are sought after by many data and developer personnel, who need fast and quick validation. Low code is not the answer for everyone, but for many use cases, Oracle APEX low code delivers a great starting point, in less time and with less effort. To help illustrate a variety of fast low code capabilties, we will demonstrate the following: Building an App from a Spreadsheet, Building an App from QuickSQL, and also providing an introduction to REST APIs and JSON .
Oracle Spatial Studio: Fast and Easy Spatial Analytics and MapsJean Ihm
Learn about a new tool, Spatial Studio, that lets you quickly and easily do spatial analytics and create maps, even if you don't have GIS or Spatial knowledge. Now business users and non-GIS developers have a simple user interface to access the spatial features in Oracle Database.
Spatial Studio lets you prepare your data for spatial analysis, perform spatial analysis operations, publish, and share the results – as well access spatial analyses results via REST and incorporate in applications and workflows. Presented by Carol Palmer, Sr. Principal Product Manager, and David Lapp, Sr. Principal Product Manager, Oracle Spatial and Graph.
Presentation video including demo and resources available here: https://devgym.oracle.com/pls/apex/dg/office_hours/3084 .
Testing with JUnit 5 and Spring - Spring I/O 2022Sam Brannen
This session will give you an overview of the latest and greatest in the world of testing using JUnit Jupiter (a.k.a. JUnit 5) and the Spring Framework.
The focus will be major new features in JUnit Jupiter 5.8 and 5.9 as well as recent and upcoming enhancements to Spring's integration testing support.
【BS1】What’s new in visual studio 2022 and c# 10日本マイクロソフト株式会社
Watch this session to learn about the new capabilities in Visual Studio 2022 and the new C# 10 features for .NET developers. With Visual Studio 2022, you'll always get the best-in-class tools and services available for any developer, any app, and any platform. Whether you're using Visual Studio for the first time, or you've been using it for years, there's a lot to like in our newest version.
This is a introduction to PostgreSQL that provides a brief overview of PostgreSQL's architecture, features and ecosystem. It was delivered at NYLUG on Nov 24, 2014.
http://www.meetup.com/nylug-meetings/events/180533472/
The features released between Java 11 and Java 17 have brought a greater opportunity for developers to improve application development productivity as well and code expressiveness and readability. In this deep-dive session, you will discover all the recent Project Amber features added to the Java language such as Text blocks, Records (including Records serialization), Pattern Matching for instanceof, switch expression, sealed classes, and pattern matching for switch. The main goal of the Amber Project is to bring Pattern Matching to the Java platform, which will impact both the language and the JDK APIs. You will discover record patterns, array patterns, as well as deconstruction patterns, through constructors, factory methods, and deconstructors.
Why You Should Use Oracle SQL DeveloperJeffrey Kemp
Some of my favourite things about Oracle SQL Developer that make me more productive as a PL/SQL developer. Presented at AUSOUG Connect conference, November 2016 in Perth, Western Australia.
Oracle Application Express and Oracle Row-Level Security (RLS) (aka Virtual Private Database) work very well together. Using RLS you can have one database serve different groups of users while virtually guaranteeing that no-one will be able to view or update data they aren't supposed to. That was the sales pitch. This presentation will be a case study on one small Apex application with complex security requirements. The author started with a complex solution using views which performed poorly and didn't satisfy all the user's requirements. When he switched to a solution using RLS, the application became significantly simpler and faster, and all user requirements were met.
Migrate BI to APEX 5: Are We There Yet?Karen Cannell
In certain circumstances, the features offered by APEX Interactive Reports make APEX a viable and cost-effective replacement for an under-utilized business intelligence solution. The key is to know what features your users really need, and how your users use their data. If user, data and system requirements can be met by APEX IR, then the move makes sense. If not, then it doesn’t. It’s that simple. APEX 5 tips the scales with the new PIVOT action, improved GROUP BY and improved Dynamic Actions. Is it enough?
Taking Human Error out of K12 Attendance Equation Could Mean Millions in State Funding for Education. Many school districts across America are discovering that by removing human error from taking attendance and automating the process, they can simply and easily increase their Average Daily Attendance (ADA). Even incremental improvements can create a nancial windfall for any district, in some cases a million dollars a year, depending on the state and the school.
Nowadays we all seem to be working with small independent services that need to talk with numerous other services. This is a problem because when developing your service, you need to have a working environment—but bringing up all your dependencies is often not an option.
In this talk, I will take you through our journey of creating a mock server to increase dev speed, and how it allowed us to write better tests.
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswanivvaswani
Explains how to use the Slim PHP micro-framework to quickly deploy a REST API. Includes sample code to implement common API requirements, such as authentication, request logging and multi-format support.
Passenger 6 generic language support presentationHongli Lai
YouTube video: https://www.youtube.com/watch?v=QyMQSYdctv0
Blog: https://blog.phusion.nl/2018/11/06/how-passenger-6-generic-language-support-is-implemented/
Introductory presentation to the Passenger 6 generic language support coding session.
api-platform: the ultimate API platformStefan Adolf
Building APIs can be madness, especially if you want to do it right from day 1. Uncountable projects support you in this business but api-platform stands out. In this talk Stefan demonstrates the setup of a fully featured api-platform application by merely adding some plain doctrine entities and annotations. The result is a fully interactively documented API service (Swagger) that creates JSON-LD, JSON:API or JSON-HAL compatible inline links. Its Hydra docs enables you to scaffold fully functional frontend clients without writing any code at all, and by adding just one more composer dependency everything unfolds as GraphQL API. This talk will additionally show some demos of our special use case that we’re using api platform for and how you can secure it with JWT authentication and build custom actions and data providers in case you don’t want to use relational databases at all.
High-level Programming Languages: Apache Pig and Pig LatinPietro Michiardi
This slide deck is used as an introduction to the Apache Pig system and the Pig Latin high-level programming language, as part of the Distributed Systems and Cloud Computing course I hold at Eurecom.
Course website:
http://michiard.github.io/DISC-CLOUD-COURSE/
Sources available here:
https://github.com/michiard/DISC-CLOUD-COURSE
Presentation on how to Integrate the old and new Oracle technologies. Communicate from Forms to APEX and v.v.
(Demo movie at the end of the presentation)
ManageIQ currently runs on Ruby on Rails 3. Aaron "tenderlove" Patterson presents his effort to migrate to RoR 4, which entails some changes in the code to take advantage of the latest advances in RoR.
For more on ManageIQ, see http://manageiq.org/
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
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.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
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…
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
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.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
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.
UiPath Test Automation using UiPath Test Suite series, part 5
Why You Should Use TAPIs
1. Why You Should Use TAPIs
Jeffrey Kemp
AUSOUG Connect Perth, November 2016
2. All artifacts including code are presented for illustration
purposes only. Use at your own risk. Test thoroughly in
a non-critical environment before use.
3. Main Menu
1. Why a data API?
2. Why choose PL/SQL?
3. How to structure your API?
4. Data API for Apex
5. Table APIs (TAPIs)
6. Open Source TAPI project
6. Why a data API?
“I’m building a simple Apex app.
I’ll just use the built-in processes
to handle all the DML.”
7. Your requirements get more
complex.
– More single-row and/or tabular
forms
– More pages, more load routines,
more validations, more
insert/update processes
– Complex conditions
– Edge cases, special cases, weird
cases
8.
9. Another system must create the same data –
outside of Apex
– Re-use validations and processing
– Rewrite the validations
– Re-engineer all processing (insert/update) logic
– Same edge cases
– Different edge cases
10. Define all validations and processes in one place
– Integrated error messages
– Works with Apex single-row and tabular forms
11. Simple wrapper to allow code re-use
– Same validations and processes included
– Reduced risk of regression
– Reduced risk of missing bits
12. • They get exactly the same logical outcome as we get
• No hidden surprises from Apex features
35. Process a page requestprocedure process is
rv EVENTS$TAPI.rvtype;
r EVENTS$TAPI.rowtype;
begin
UTIL.check_authorization(SECURITY.Operator);
case
when APEX_APPLICATION.g_request = 'CREATE'
then
rv := apex_get;
r := EVENTS$TAPI.ins (rv => rv);
apex_set (r => r);
UTIL.success('Event created.');
when APEX_APPLICATION.g_request like 'SAVE%'
then
rv := apex_get;
r := EVENTS$TAPI.upd (rv => rv);
apex_set (r => r);
UTIL.success('Event updated.');
when APEX_APPLICATION.g_request = 'DELETE'
then
rv := apex_get_pk;
EVENTS$TAPI.del (rv => rv);
UTIL.clear_page_cache;
UTIL.success('Event deleted.');
else
null;
end case;
end process;
39. SQL in Apex
select t.col_a
,t.col_b
,t.col_c
from my_table t;
• Move joins, select expressions, etc. to a
view
– except Apex-specific stuff like generated APEX_ITEMs
40. Pros
• Fast development
• Smaller apex app
• Dependency analysis
• Refactoring
• Modularity
• Code re-use
• Customisation
• Version control
41. Cons
• Misspelled/missing item names
– Mitigation: isolate all apex code in one set of
packages
– Enforce naming conventions – e.g. P1_COLUMN_NAME
• Apex Advisor doesn’t check database package
code
42. Apex API Coding Standards
• All v() calls at start of proc, once per item
• All sv() calls at end of proc
• Constants instead of 'P1_COL'
• Dynamic Actions calling PL/SQL – use parameters
• Replace PL/SQL with Javascript (where possible)
43. Error Handling
• Validate - only record-level validation
• Cross-record validation – db constraints + XAPI
• Capture DUP_KEY_ON_VALUE and ORA-02292 for unique and
referential constraints
• APEX_ERROR.add_error
44. TAPIs
• Encapsulate all DML for a table
• Row-level validation
• Detect lost updates
• Generated
45. TAPI contents
• Record types
– rowtype, arraytype, validation record type
• Functions/Procedures
– ins / upd / del / merge / get
– bulk_ins / bulk_upd / bulk_merge
• Constants for enumerations
46. Why not a simple rowtype?
procedure ins
(emp_name in varchar2
,dob in date
,salary in number
) is
begin
if is_invalid_date (dob) then
raise_error('Date of birth bad');
elsif is_invalid_number (salary) then
raise_error('Salary bad');
end if;
insert into emp (emp_name, dob, salary) values (emp_name, dob, salary);
end ins;
ins (emp_name => :P1_EMP_NAME, dob => :P1_DOB, salary => :P1_SALARY);
ORA-01858: a non-numeric character was found where a numeric was expected
It’s too late to validate
data types here!
47. Validation record type
type rv is record
( emp_name varchar2(4000)
, dob varchar2(4000)
, salary varchar2(4000));
procedure ins (rv in rvtype) is
begin
if is_invalid_date (dob) then
raise_error('Date of birth bad');
elsif is_invalid_number (salary) then
raise_error('Salary bad');
end if;
insert into emp (emp_name, dob, salary) values (emp_name, dob, salary);
end ins;
ins (emp_name => :P1_EMP_NAME, dob => :P1_DOB, salary => :P1_SALARY);
I’m sorry Dave, I can’t do that - Date of birth bad
48. Example Table
create table venues
( venue_id integer default on null venue_id_seq.nextval
, name varchar2(200 char)
, map_position varchar2(200 char)
, created_dt date default on null sysdate
, created_by varchar2(100 char)
default on null sys_context('APEX$SESSION','APP_USER')
, last_updated_dt date default on null sysdate
, last_updated_by varchar2(100 char)
default on null sys_context('APEX$SESSION','APP_USER')
, version_id integer default on null 1
);
49. TAPI example
package VENUES$TAPI as
cursor cur is select x.* from venues;
subtype rowtype is cur%rowtype;
type arraytype is table of rowtype
index by binary_integer;
type rvtype is record
(venue_id venues.venue_id%type
,name varchar2(4000)
,map_position varchar2(4000)
,version_id venues.version_id%type
);
type rvarraytype is table of rvtype
index by binary_integer;
-- validate the row
function val (rv IN rvtype) return varchar2;
-- insert a row
function ins (rv IN rvtype) return rowtype;
-- update a row
function upd (rv IN rvtype) return rowtype;
-- delete a row
procedure del (rv IN rvtype);
end VENUES$TAPI;
50. TAPI ins
function ins (rv in rvtype)
return rowtype is
r rowtype;
error_msg varchar2(32767);
begin
error_msg := val (rv => rv);
if error_msg is not null then
UTIL.raise_error(error_msg);
end if;
insert into venues
(name
,map_position)
values(rv.name
,rv.map_position)
returning
venue_id
,...
into r;
return r;
exception
when dup_val_on_index then
UTIL.raise_dup_val_on_index;
end ins;
52. TAPI upd
function upd (rv in rvtype) return rowtype is
r rowtype;
error_msg varchar2(32767);
begin
error_msg := val (rv => rv);
if error_msg is not null then
UTIL.raise_error(error_msg);
end if;
update venues x
set x.name = rv.name
,x.map_position = rv.map_position
where x.venue_id = rv.venue_id
and x.version_id = rv.version_id
returning
venue_id
,...
into r;
if sql%notfound then
raise UTIL.lost_update;
end if;
return r;
exception
when dup_val_on_index then
UTIL.raise_dup_val_on_index;
when UTIL.ref_constraint_violation then
UTIL.raise_ref_con_violation;
when UTIL.lost_update then
lost_upd (rv => rv);
end upd;
53. Lost update handler
procedure lost_upd (rv in rvtype) is
db_last_updated_by venues.last_updated_by%type;
db_last_updated_dt venues.last_updated_dt%type;
begin
select x.last_updated_by
,x.last_updated_dt
into db_last_updated_by
,db_last_updated_dt
from venues x
where x.venue_id = rv.venue_id;
UTIL.raise_lost_update
(updated_by => db_last_updated_by
,updated_dt => db_last_updated_dt);
exception
when no_data_found then
UTIL.raise_error('LOST_UPDATE_DEL');
end lost_upd;
“This record was changed by
JOE BLOGGS at 4:31pm.
Please refresh the page to see
changes.”
“This record was deleted by
another user.”
54. TAPI bulk_ins
function bulk_ins (arr in rvarraytype) return number is
begin
bulk_val(arr);
forall i in indices of arr
insert into venues
(name
,map_position)
values (arr(i).name
,arr(i).map_position);
return sql%rowcount;
exception
when dup_val_on_index then
UTIL.raise_dup_val_on_index;
end bulk_ins;
55. What about queries?
Tuning a complex, general-purpose query
is more difficult than
tuning a complex, single-purpose query.
56. Generating Code
• Only PL/SQL
• Templates compiled in the schema
• Simple syntax
• Sub-templates (“includes”) for extensibility
57. OraOpenSource TAPI
• Runs on NodeJS
• Uses Handlebars for template processing
• https://github.com/OraOpenSource/oos-tapi/
• Early stages, needs contributors
58. OOS-TAPI Example
create or replace package body {{toLowerCase table_name}} as
gc_scope_prefix constant varchar2(31) := lower($$plsql_unit) || '.';
procedure ins_rec(
{{#each columns}}
p_{{toLowerCase column_name}} in {{toLowerCase data_type}}
{{#unless @last}},{{lineBreak}}{{/unless}}
{{~/each}}
);
end {{toLowerCase table_name}};
59. oddgen
• SQL*Developer plugin
• Code generator, including TAPIs
• Support now added in jk64 Apex TAPI generator
https://www.oddgen.org
It’s declarative – no code required to load, validate, insert, update and delete data.”
Apex handles so much for us, making the app more reliable and us more productive – such as automatic lost update detection, basic data type validations including maximum field lengths, date formats, mandatory fields and more.”
(Why would a sane developer want to rebuild any of this?)
(and you have a hard time remembering the details of what you built last week)
No need to reverse-engineer the logic, no need to replicate things with added risk of hidden surprises
Code that is easy to maintain is code that is easy to read, and easy to test.
Remember, maintainability is NOT a problem for you while you are writing the code. It is a problem you need to solve for the person 3 months later who needs to maintain your code.
How do we make code easier to read and test?
Organise and name your packages according to how they will be used elsewhere. This means your function and procedure names can be very short, because you no longer have to say “get_event”
Table APIs will form the “Model” part of the MVC equation.
Apex provides the “View” part.
The Controller is what we’ll implement almost completely in PL/SQL in database packages.
NV is only used for hidden items that should always have numerical values. The TAPI will handle all other data type conversions (such as numbers and dates).
For Dynamic Actions, since performance is the top priority, I’d always use parameters for any data required.
IF/ELSE and CASE statements instead of Apex conditions.
The code is more re-usable: both across pages within the application, as well as by other apex applications or even other UIs and system interfaces.
Easier to read, debug, diagnose and version control. Code merge has been solved for database PL/SQL source files, but not for Apex components.
Especially good for external interfaces, e.g. for inserting into an eBus interface table
Where multiple rows might need to be processed, always use bulk binding and bulk DML. Never ever call single-row routines from within a loop!
The val routine in a TAPI should rarely if ever query other tables – it usually only validates the row in isolation within its own context. Generally cross-record and cross-table validation should be done at the XAPI level, or rely on table constraints.