SlideShare a Scribd company logo
1 of 29
1© 2017 Rogue Wave Software, Inc. All Rights Reserved.
2© 2017 Rogue Wave Software, Inc. All Rights Reserved.
Stephane Raynaud
SourcePro & .h++ Specialist
Stephane.Raynaud@Roguewave.com
Doug Sanders
Account Executive
Doug.Sanders@Roguewave.com
Consultant: IMPLEMENTING
Consulting Mgr.: REQUIREMENTS
V.P. Technical Services: MANAGING
“Merely sharing my experience”
15 years of experiences at Rogue Wave
3© 2017 Rogue Wave Software, Inc. All Rights Reserved.
• Why?
• Planning
• Ready… Set… Go!
• Port’s done! Let’s run it!!!
• A few last words & conclusion
• Q&A
4© 2017 Rogue Wave Software, Inc. All Rights Reserved.
5© 2017 Rogue Wave Software, Inc. All Rights Reserved.
Why migrate?
• Unification
• Commodity O.S. & Virtualization
• Large Community and available skillset
• On-Par O.S. Quality
• End Of Life
6© 2017 Rogue Wave Software, Inc. All Rights Reserved.
7© 2017 Rogue Wave Software, Inc. All Rights Reserved.
The C++ 4.x compilers predate the 1998 C++ standard. The version of
C++ recognized by C++ 4.x does not correspond to any published
standard. It follows the C++ Annotated Reference Manual (1990), with a
few additions from what was expected to become part of the 1998 C++
Standard.
Product name
Version
number
C/C++
compiler
Supported
Operating
Systems
Release
date
SPARCworks 2.0 2 Solaris 1992
SunSoft Workshop 1.0 3 Solaris Jul-94
SunSoft Workhop 2.0 4 Solaris Mar-95
Sun Workshop 3.0 4.2 Solaris Jan-97
Sun Workshop 5 5 5 Solaris Dec-98
Forte Developer 6 (Sun WorkShop 6) 6 5.1 Solaris May-00
Forte Developer 6 update 1 6.1 5.2 Solaris Nov-00
Forte Developer 6 update 2 6.2 5.3 Solaris Jul-01
Sun ONE Studio 7 (Forte Developer 7) 7 5.4 Solaris May-02
Sun ONE Studio 8 Compiler Collection 8 5.5 Solaris May-03
Sun Studio 8 8 5.5 Solaris Mar-04
Sun Studio 9 9 5.6 Solaris, Linux Jul-04
Sun Studio 10 10 5.7 Solaris, Linux Jan-05
Sun Studio 11 11 5.8 Solaris, Linux Nov-05
Sun Studio 12 12 5.9 Solaris, Linux Jun-07
Sun Studio 12 Update 1 12.1 5.1 Solaris, Linux Jun-09
Oracle Solaris Studio 12.2 12.2 5.11 Solaris, Linux Sep-10
Oracle Solaris Studio 12.3 12.3 5.12 Solaris, Linux Dec-11
Oracle Solaris Studio 12.4 12.4 5.13 Solaris, Linux Nov-14
Oracle Developer Studio 12.5 12.5 5.14 Solaris, Linux Jun-16
Oracle Developer Studio 12.6 12.6 5.15 Solaris, Linux Jun-17
C++ Rogue Wave tools.h++ Library
tools.h++ is a C++ foundation class library that was provided in previous releases of Oracle Solaris Studio and Sun Studio
software. The library was released in 1996 and has not been significantly updated since. The time and date classes have
serious bugs that cannot be fixed.
The functionality in tools.h++ is available with a different programming interface (API) in the C++ Standard Library
provided in Oracle Solaris Studio and in the open source BOOST libraries. For information about BOOST libraries see
http://www.boost.org.
-compat=4 option in the C++ compiler
The -compat=4 option sets the C++ compiler to compatibility mode.
That is, it sets language and binary compatibility to that of the 4.0.1,
4.1, and 4.2 compilers. It sets the __cplusplus preprocessor macro to 1
and the __SUNPRO_CC_COMPAT preprocessor macro to 4.
Sun Studio 11 https://docs.oracle.com/cd/E19422-01/819-3689/
8© 2017 Rogue Wave Software, Inc. All Rights Reserved.
CentOS
Oracle Linux + GCC: Getting Traction
Oracle Linux + Sun Studio
“You are the odd duck out there”
Advice: GCC and stay with the
version for that OS Version
• Guaranteed service level agreements (SLAs) with all support contracts
• 12x5 Silver Support or 24x7 Gold Support with around-the-clock coverage
• Access to Tier 3/4 open source architects and a dedicated CentOS development team
• Patches and hotfixes hosted on our own CentOS repository
9© 2017 Rogue Wave Software, Inc. All Rights Reserved.
This project may not even be a “Go”
• Customer requested a port to Linux
• Application was managing “Office Location”
• Small portion of code relied on a 3rd party application for “localization”
• Customer was “warned” but didn’t see the issue
Port started but had to stop 3 weeks in because this library wasn’t available nor “deemed”
portable to LINUX.
Investigate carefully your
dependencies regardless of how
“insignificant” they may appear
10© 2017 Rogue Wave Software, Inc. All Rights Reserved.
“How will I know I have success?”
Rogue Wave libraries have been tested
through 1,000s of use cases
“Batman”
Rogue Wave will run on the newly built
binaries the same exact tests used by
Rogue Wave development to validate a
regular release of SourcePro. Rogue Wave
will share the results of these tests with
Client, and will let client know if the new
binaries are producing the same results
than the SourcePro 9 Update 1 release on
a supported platform (usually a 100%
pass).
Plan for a testing & validation strategy
Develop Validation Plans and test cases if they don’t exist
11© 2017 Rogue Wave Software, Inc. All Rights Reserved.
Note: you may use rwtools even if you don’t use this option. Check for RW Classes in your code…
tools.h++ is a C++ foundation class library that was
provided in previous releases of Oracle Solaris Studio
and Sun Studio software. The library was released in
1996 and has not been significantly updated since. The
time and date classes have serious bugs that cannot
be fixed.
The functionality in tools.h++ is available with a
different programming interface (API) in the C++
Standard Library provided in Oracle Solaris Studio and
in the open source BOOST libraries. For information
about BOOST libraries see http://www.boost.org.
(from Oracle Studio Documentation)
FALSE: The new versions are named SourcePro Core – Essential
Tools and have been updated to support customers to this day
MISLEADING: C++ Standard Library and BOOST offers some
overlapping functionalities but this is neither a complete nor a
one to one mapping.
EASY SOLUTION: SourcePro Core – Essential Tools
Exactly the same API for RW Classes on Linux from what you used on Solaris
(Only options if using other .h++ product, such as dbtools.h++)
Migrating to STL
Migrating to
BOOST
Refactoring .h++
Code in my own class
Watch out for
misleading blogs
(LOL!) Example
“In 2005, Rogue Wave handed over the tools.h++ to Apache Foundation”
… WHAT?!!??!?! This can put you in trouble. (TOTALLY FALSE)
12© 2017 Rogue Wave Software, Inc. All Rights Reserved.
The great mistake of “one thing at a time”
4 step-plan migration:
• Solaris/Oracle Studio/Oracle 8G
• Linux/Oracle Studio/Oracle 8G
• Linux/Oracle Studio/Oracle 12c
• Linux/gcc/Oracle 12c
Why?
4X the pain!
Want a better use of your time?
Run a static-analysis on your code first to make
sure the code is up to standard & secure!
Contact us about Klocwork !!!
13© 2017 Rogue Wave Software, Inc. All Rights Reserved.
14© 2017 Rogue Wave Software, Inc. All Rights Reserved.
Warning: I have seen people waste months!
STEP1: Define your compilation and link options (*)
STEP2: Modify Your Code
REPEAT AFTER ME: STEP1 first, STEP2 second
The brutal truth: A successful compile is
in no way a guarantee you are getting
closer to success!
(*) Use your 3rd party library LINUX make files as your starting point…
15© 2017 Rogue Wave Software, Inc. All Rights Reserved.
“You will be glad you are a SourcePro user” – Useful Tip
After building the RW Libraries with RCB
• Go to /sourcepro/examples/tools (or network,math,ora)
• Go to ./12d directory (or whatever your configuration is)
• Issue a “make clean” (it only cleans the example)
• Issue a “make all” (it will rebuild the example)
• Observe the options used (they come from years of “research”)
• The new build should not contains any “-DRW…” except for a single one such as
“_RWCONFIG_12d”
16© 2017 Rogue Wave Software, Inc. All Rights Reserved.
SourcePro Tags?
When you are building a
Rogue Wave Library, the
library will be named
following a number scheme…
0s RW_NO_STL
3s RWDEBUG, RW_NO_STL
4s RW_MULTI_THREAD, RW_NO_STL
7s RWDEBUG, RW_MULTI_THREAD, RW_NO_STL
8s RW_RWV12_STDLIB
11s RWDEBUG, RW_RWV12_STDLIB
12s RW_MULTI_THREAD, RW_RWV12_STDLIB _RWCONFIG_12s
15s RWDEBUG, RW_MULTI_THREAD, RW_RWV12_STDLIB _RWCONFIG_15s
0d RW_NO_STL, _RWTOOLSDLL
3d RWDEBUG, RW_NO_STL, _RWTOOLSDLL
4d RW_MULTI_THREAD, RW_NO_STL, _RWTOOLSDLL
7d RWDEBUG, RW_MULTI_THREAD, RW_NO_STL, _RWTOOLSDLL
8d _RWTOOLSDLL, RW_RWV12_STDLIB
11d RWDEBUG, _RWTOOLSDLL, RW_RWV12_STDLIB
12d RW_MULTI_THREAD, _RWTOOLSDLL, RW_RWV12_STDLIB _RWCONFIG_12d
15d RWDEBUG, RW_MULTI_THREAD, _RWTOOLSDLL, RW_RWV12_STDLIB _RWCONFIG_15d
If you are using anything
else than 12d or 12s today
and in production, you are
probably doing something
wrong!
NEVER DEFINE THESE
YOURSELF !!
USE THESE
INSTEAD
15s and 15d is acceptable, but
it’s debug code…
17© 2017 Rogue Wave Software, Inc. All Rights Reserved.
#include <iostream.h> // incorrect
#include <iostream> // correct
int main()
{
cout << "hello world" << endl; // incorrect
std::cout << "hello world" << std::endl; // correct
return 0;
}
Keep using RWTime and RWDate, they are
“safe”, even if you find “deprecated”
documentation (not anymore!)
RWTRegex<char> re("V[0-9].[0-9]+");RWCRExpr re("V[0-9].[0-9]+");
RWCRExpr is replaced by RWTRegex<T>
18© 2017 Rogue Wave Software, Inc. All Rights Reserved.
• RWTPtrDlist<T> becomes RWTPtrDlist<T,A>
template<class T, class A = std::allocator<T*>> class RWTPtrDlist< T, A >
RWTPtrDlist<T> RWTPtrDlistIterator<T> RWTPtrHashSet<T> RWTPtrHashSetIterator<T> RWTPtrHashDictionary<K V>
RWTPtrHashDictionaryIterator<K V> RWTPtrOrderedVector<T> RWTPtrSlist<T> RWTPtrSlistIterator<T> RWTPtrSortedVector<T>
RWTValDlist<T> RWTValDlistIterator<T> RWTValHashSet<T> RWTValHashSetIterator<T> RWTValHashDictionary<K V>
RWTValHashDictionaryIterator<K V> RWTValOrderedVector<T> RWTValSlist<T> RWTValSlistIterator<T> RWTValSortedVector<T>
• RWTPtrSortedVector<T> becomes RWTPtrSortedVector<T,C,A>
C: Comparaison Function
• RWTPtrHashDictionary<K,V> becomes RWTPtrHashMap<K,T,H,EQ,A>
K: Type for the Key
T: Type for the Value
H: Hash Function for the Key
EQ: Equality Function for the Key
A: Allocator
EASY CHANGE? Use of RWDefCArgs(T) (Comparaison) or RWDefHArgs(T) (Hash)
You may be
using the right
API already!
19© 2017 Rogue Wave Software, Inc. All Rights Reserved.
template <class T> struct RWTHasher
{
typedef unsigned(*hashfun)(const T&);
RWTHasher() : hfun_(NULL) {}
RWTHasher(hashfun f) : hfun_(f)
{ }
unsigned operator()(const T& t) const
{
RW_PRECONDITION(hfun_ != NULL);
return hfun_(t);
}
private: hashfun hfun_;
};
RWTValHashSet<RWCString> set(RWCString::hash);
set.insert("one");
Original Code
typedef RWTValHashSet<RWCString, RWTHasher<RWCString>, std::equal_to<RWCString> > MY_Set;
MY_Set s1 = MY_Set(RWTHasher<RWCString>(&custom_hash));
typedef RWTValHashSet<RWCString RWDefHArgs(RWCString) > MY_Set;
MY_Set s1 = MY_Set(RWTHasher<RWCString>(&custom_hash));
unsigned custom_hash(const RWCString& ref_)
{ return ref_.hash(); }
n A
n B
New Code
20© 2017 Rogue Wave Software, Inc. All Rights Reserved.
The SPARC architecture is big endian (BE) and it has forward byte ordering. Bit 0 is the least-
significant bit, and byte 0 is the most-significant byte. Intel x86 architectures are little endian (LE)
and byte 0 is the least-significant byte (LSB).
int a=0x11121314;
char b, *ptr;
ptr= (char *) &a; // pointer ptr
points to a
b= ptr[1]; // b is 0x13 in LE
and 0x12 in BE
Not really a frequent issue
Watch for networking
communication & payloads
No problem with Rogue
Wave Classes
Algorithm specific
21© 2017 Rogue Wave Software, Inc. All Rights Reserved.
https://www.ibm.com/developerworks/systems/articles/porting_linux/
22© 2017 Rogue Wave Software, Inc. All Rights Reserved.
23© 2017 Rogue Wave Software, Inc. All Rights Reserved.
“While it may look the same…”
-library=stlport4
-library=Cstd (default)
-library=stdcxx4
Solaris
libstdc++
Linux
void init()
{
std::vector<std::vector<…> >
…
Implementations are
different.
They lead to potential
performance pitfalls, due to
usage error.
24© 2017 Rogue Wave Software, Inc. All Rights Reserved.
std::string
std::vector
RWCString
RWTPtrVector
… lot more…
Threading
+
http://www.oracle.com/technetwork/articles/servers-storage-dev/mem-alloc-1557798.html
Heap-Management is
different, may impact
performance or highlight
concurrency bugs
MTS
25© 2017 Rogue Wave Software, Inc. All Rights Reserved.
Moving Away from Oracle Developer Studio? What’s available on Linux?
• https://www.roguewave.com/products-services/totalview
Amazing Replay Capability
(Extremely Useful for runtime error)
Marketed as a HPC tools,
but natively designed for
Linux
26© 2017 Rogue Wave Software, Inc. All Rights Reserved.
27© 2017 Rogue Wave Software, Inc. All Rights Reserved.
Set-up milestones with your service provider
 Successful build of Rogue Wave Library
 Build Setup with justifications
 Zero error compile & link of code
Be careful who you pick
Rogue Wave Support is often at the receiving
end of some consultant’s incompetency. A Threading Programming Error
was once described as a “Rogue
Wave is not thread safe!”
Interview your service provider
(Use what you learn today)
Train your Service Provider with
Rogue Wave’s help
(1 day engagement)
Use Rogue Wave’s PSG
28© 2017 Rogue Wave Software, Inc. All Rights Reserved.
A Path to success:
 Learn about Rogue Wave
 Review 3rd party dependencies
 Define success criteria and tests
 Build the Rogue Wave Libs you need
 Migrate & Define Build Process – with
justifications
 Code Changes
 Rogue Wave Changes
 Modernization Changes
 Platform Changes
 Repeat until Compile and Link with 0 errors
 Dynamic & Performance Testing
29© 2017 Rogue Wave Software, Inc. All Rights Reserved.

More Related Content

What's hot

An Introduction To The Red Hat Model
An Introduction To The Red Hat ModelAn Introduction To The Red Hat Model
An Introduction To The Red Hat ModelJeremy Brown
 
[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOps
[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOps[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOps
[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOpsDaniel Oh
 
Policy as Code: IT Governance With HashiCorp Sentinel
Policy as Code: IT Governance With HashiCorp SentinelPolicy as Code: IT Governance With HashiCorp Sentinel
Policy as Code: IT Governance With HashiCorp SentinelMitchell Pronschinske
 
Perforce Innovations Showcase 
Perforce Innovations Showcase Perforce Innovations Showcase 
Perforce Innovations Showcase Perforce
 
Devops with Alibaba Cloud
Devops with Alibaba CloudDevops with Alibaba Cloud
Devops with Alibaba Cloudgavaskar s
 
Next Generation Vulnerability Assessment Using Datadog and Snyk
Next Generation Vulnerability Assessment Using Datadog and SnykNext Generation Vulnerability Assessment Using Datadog and Snyk
Next Generation Vulnerability Assessment Using Datadog and SnykDevOps.com
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKSPhil Reay
 
London DevOps Meetup - PaaS as a platform for devops
London DevOps Meetup - PaaS as a platform for devopsLondon DevOps Meetup - PaaS as a platform for devops
London DevOps Meetup - PaaS as a platform for devopsJeremy Brown
 
Understanding AWS Database Options (DAT201) | AWS re:Invent 2013
Understanding AWS Database Options (DAT201) | AWS re:Invent 2013Understanding AWS Database Options (DAT201) | AWS re:Invent 2013
Understanding AWS Database Options (DAT201) | AWS re:Invent 2013Amazon Web Services
 
How to Achieve 80% Faster Builds and DevOps at Scale With Git
How to Achieve 80% Faster Builds and DevOps at Scale With Git How to Achieve 80% Faster Builds and DevOps at Scale With Git
How to Achieve 80% Faster Builds and DevOps at Scale With Git Perforce
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform libraryKostis Dadamis
 
La JVM y el Internet de las Cosas @ MálagaJUG 2016-11-17
La JVM y el Internet de las Cosas @ MálagaJUG 2016-11-17La JVM y el Internet de las Cosas @ MálagaJUG 2016-11-17
La JVM y el Internet de las Cosas @ MálagaJUG 2016-11-17Jorge Hidalgo
 
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...DevOps_Fest
 
Keynote: Software Kept Eating the World (Pivotal Cloud Platform Roadshow)
Keynote: Software Kept Eating the World (Pivotal Cloud Platform Roadshow)Keynote: Software Kept Eating the World (Pivotal Cloud Platform Roadshow)
Keynote: Software Kept Eating the World (Pivotal Cloud Platform Roadshow)VMware Tanzu
 
DevOps In The World of Serverless - PureSec @ Fullstack Radar Day
DevOps In The World of Serverless - PureSec @ Fullstack Radar DayDevOps In The World of Serverless - PureSec @ Fullstack Radar Day
DevOps In The World of Serverless - PureSec @ Fullstack Radar DayPureSec
 
DOES16 San Francisco - Susanna Brown & Ben Chan - DevOps in the Midst of an A...
DOES16 San Francisco - Susanna Brown & Ben Chan - DevOps in the Midst of an A...DOES16 San Francisco - Susanna Brown & Ben Chan - DevOps in the Midst of an A...
DOES16 San Francisco - Susanna Brown & Ben Chan - DevOps in the Midst of an A...Gene Kim
 
Scania's DevSecOps approach - Gamifying Security - auto:CODE
Scania's DevSecOps approach - Gamifying Security - auto:CODEScania's DevSecOps approach - Gamifying Security - auto:CODE
Scania's DevSecOps approach - Gamifying Security - auto:CODEAnders Lundsgård
 
Dev ops in the cloud use case and best practices meetup
Dev ops in the cloud use case and best practices   meetupDev ops in the cloud use case and best practices   meetup
Dev ops in the cloud use case and best practices meetupNitu Parimi
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillBeMyApp
 

What's hot (20)

An Introduction To The Red Hat Model
An Introduction To The Red Hat ModelAn Introduction To The Red Hat Model
An Introduction To The Red Hat Model
 
[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOps
[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOps[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOps
[muCon2017]DevSecOps: How to Continuously Integrate Security into DevOps
 
Running R on AWS Lambda by Ana-Maria Niculescu
Running R on AWS Lambda by Ana-Maria NiculescuRunning R on AWS Lambda by Ana-Maria Niculescu
Running R on AWS Lambda by Ana-Maria Niculescu
 
Policy as Code: IT Governance With HashiCorp Sentinel
Policy as Code: IT Governance With HashiCorp SentinelPolicy as Code: IT Governance With HashiCorp Sentinel
Policy as Code: IT Governance With HashiCorp Sentinel
 
Perforce Innovations Showcase 
Perforce Innovations Showcase Perforce Innovations Showcase 
Perforce Innovations Showcase 
 
Devops with Alibaba Cloud
Devops with Alibaba CloudDevops with Alibaba Cloud
Devops with Alibaba Cloud
 
Next Generation Vulnerability Assessment Using Datadog and Snyk
Next Generation Vulnerability Assessment Using Datadog and SnykNext Generation Vulnerability Assessment Using Datadog and Snyk
Next Generation Vulnerability Assessment Using Datadog and Snyk
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKS
 
London DevOps Meetup - PaaS as a platform for devops
London DevOps Meetup - PaaS as a platform for devopsLondon DevOps Meetup - PaaS as a platform for devops
London DevOps Meetup - PaaS as a platform for devops
 
Understanding AWS Database Options (DAT201) | AWS re:Invent 2013
Understanding AWS Database Options (DAT201) | AWS re:Invent 2013Understanding AWS Database Options (DAT201) | AWS re:Invent 2013
Understanding AWS Database Options (DAT201) | AWS re:Invent 2013
 
How to Achieve 80% Faster Builds and DevOps at Scale With Git
How to Achieve 80% Faster Builds and DevOps at Scale With Git How to Achieve 80% Faster Builds and DevOps at Scale With Git
How to Achieve 80% Faster Builds and DevOps at Scale With Git
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
 
La JVM y el Internet de las Cosas @ MálagaJUG 2016-11-17
La JVM y el Internet de las Cosas @ MálagaJUG 2016-11-17La JVM y el Internet de las Cosas @ MálagaJUG 2016-11-17
La JVM y el Internet de las Cosas @ MálagaJUG 2016-11-17
 
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
DevOps Fest 2020. Андрей Шишенко. CI/CD for AWS Lambdas with Serverless frame...
 
Keynote: Software Kept Eating the World (Pivotal Cloud Platform Roadshow)
Keynote: Software Kept Eating the World (Pivotal Cloud Platform Roadshow)Keynote: Software Kept Eating the World (Pivotal Cloud Platform Roadshow)
Keynote: Software Kept Eating the World (Pivotal Cloud Platform Roadshow)
 
DevOps In The World of Serverless - PureSec @ Fullstack Radar Day
DevOps In The World of Serverless - PureSec @ Fullstack Radar DayDevOps In The World of Serverless - PureSec @ Fullstack Radar Day
DevOps In The World of Serverless - PureSec @ Fullstack Radar Day
 
DOES16 San Francisco - Susanna Brown & Ben Chan - DevOps in the Midst of an A...
DOES16 San Francisco - Susanna Brown & Ben Chan - DevOps in the Midst of an A...DOES16 San Francisco - Susanna Brown & Ben Chan - DevOps in the Midst of an A...
DOES16 San Francisco - Susanna Brown & Ben Chan - DevOps in the Midst of an A...
 
Scania's DevSecOps approach - Gamifying Security - auto:CODE
Scania's DevSecOps approach - Gamifying Security - auto:CODEScania's DevSecOps approach - Gamifying Security - auto:CODE
Scania's DevSecOps approach - Gamifying Security - auto:CODE
 
Dev ops in the cloud use case and best practices meetup
Dev ops in the cloud use case and best practices   meetupDev ops in the cloud use case and best practices   meetup
Dev ops in the cloud use case and best practices meetup
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pill
 

Similar to How to migrate SourcePro apps from Solaris to Linux

Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Clark Everetts
 
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016Amazon Web Services
 
Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1Fraser Chadburn
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Clark Everetts
 
Open event (show&tell april 2016)
Open event (show&tell april 2016)Open event (show&tell april 2016)
Open event (show&tell april 2016)Jorge López-Lago
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Railselliando dias
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopmentgillygize
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Pierre Joye
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedWojciech Koszek
 
Docker module 1
Docker module 1Docker module 1
Docker module 1Liang Bo
 
Composer JSON kills make files
Composer JSON kills make filesComposer JSON kills make files
Composer JSON kills make filesropsu
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at ScaleOracle Developers
 
Rich Ajax Platform - theEdge 2012 conference presentation
Rich Ajax Platform - theEdge 2012 conference presentationRich Ajax Platform - theEdge 2012 conference presentation
Rich Ajax Platform - theEdge 2012 conference presentationNicko Borodachuk
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...PROIDEA
 
PVS-Studio confesses its love for Linux
PVS-Studio confesses its love for LinuxPVS-Studio confesses its love for Linux
PVS-Studio confesses its love for LinuxPVS-Studio
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software EngineerSean Coates
 
Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Clark Everetts
 
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdfManaging Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdfAndrew Lamb
 
Mastering DevOps With Oracle
Mastering DevOps With OracleMastering DevOps With Oracle
Mastering DevOps With OracleKelly Goetsch
 

Similar to How to migrate SourcePro apps from Solaris to Linux (20)

Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024
 
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
 
Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1Sys ml helperprofile-rhapsody813-obtainandinstall-v1
Sys ml helperprofile-rhapsody813-obtainandinstall-v1
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016
 
Open event (show&tell april 2016)
Open event (show&tell april 2016)Open event (show&tell april 2016)
Open event (show&tell april 2016)
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
 
State ofappdevelopment
State ofappdevelopmentState ofappdevelopment
State ofappdevelopment
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 
Building an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learnedBuilding an Open Source iOS app: lessons learned
Building an Open Source iOS app: lessons learned
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
Composer JSON kills make files
Composer JSON kills make filesComposer JSON kills make files
Composer JSON kills make files
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at Scale
 
Rich Ajax Platform - theEdge 2012 conference presentation
Rich Ajax Platform - theEdge 2012 conference presentationRich Ajax Platform - theEdge 2012 conference presentation
Rich Ajax Platform - theEdge 2012 conference presentation
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
 
PVS-Studio confesses its love for Linux
PVS-Studio confesses its love for LinuxPVS-Studio confesses its love for Linux
PVS-Studio confesses its love for Linux
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer
 
Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017
 
DevOps in your Oracle Stack
DevOps in your Oracle StackDevOps in your Oracle Stack
DevOps in your Oracle Stack
 
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdfManaging Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
 
Mastering DevOps With Oracle
Mastering DevOps With OracleMastering DevOps With Oracle
Mastering DevOps With Oracle
 

More from Rogue Wave Software

The Global Influence of Open Banking, API Security, and an Open Data Perspective
The Global Influence of Open Banking, API Security, and an Open Data PerspectiveThe Global Influence of Open Banking, API Security, and an Open Data Perspective
The Global Influence of Open Banking, API Security, and an Open Data PerspectiveRogue Wave Software
 
No liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failureNo liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failureRogue Wave Software
 
Disrupt or be disrupted – Using secure APIs to drive digital transformation
Disrupt or be disrupted – Using secure APIs to drive digital transformationDisrupt or be disrupted – Using secure APIs to drive digital transformation
Disrupt or be disrupted – Using secure APIs to drive digital transformationRogue Wave Software
 
Leveraging open banking specifications for rigorous API security – What’s in...
Leveraging open banking specifications for rigorous API security –  What’s in...Leveraging open banking specifications for rigorous API security –  What’s in...
Leveraging open banking specifications for rigorous API security – What’s in...Rogue Wave Software
 
Adding layers of security to an API in real-time
Adding layers of security to an API in real-timeAdding layers of security to an API in real-time
Adding layers of security to an API in real-timeRogue Wave Software
 
Getting the most from your API management platform: A case study
Getting the most from your API management platform: A case studyGetting the most from your API management platform: A case study
Getting the most from your API management platform: A case studyRogue Wave Software
 
Advanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applicationsAdvanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applicationsRogue Wave Software
 
The forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youThe forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youRogue Wave Software
 
Are open source and embedded software development on a collision course?
Are open source and embedded software development on a  collision course?Are open source and embedded software development on a  collision course?
Are open source and embedded software development on a collision course?Rogue Wave Software
 
Three big mistakes with APIs and microservices
Three big mistakes with APIs and microservices Three big mistakes with APIs and microservices
Three big mistakes with APIs and microservices Rogue Wave Software
 
5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure success5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure successRogue Wave Software
 
PSD2 & Open Banking: How to go from standards to implementation and compliance
PSD2 & Open Banking: How to go from standards to implementation and compliancePSD2 & Open Banking: How to go from standards to implementation and compliance
PSD2 & Open Banking: How to go from standards to implementation and complianceRogue Wave Software
 
Java 10 and beyond: Keeping up with the language and planning for the future
Java 10 and beyond: Keeping up with the language and planning for the futureJava 10 and beyond: Keeping up with the language and planning for the future
Java 10 and beyond: Keeping up with the language and planning for the futureRogue Wave Software
 
How to keep developers happy and lawyers calm (Presented at ESC Boston)
How to keep developers happy and lawyers calm (Presented at ESC Boston)How to keep developers happy and lawyers calm (Presented at ESC Boston)
How to keep developers happy and lawyers calm (Presented at ESC Boston)Rogue Wave Software
 
Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)Rogue Wave Software
 
Approaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC appsApproaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC appsRogue Wave Software
 
Enterprise Linux: Justify your migration from Red Hat to CentOS
Enterprise Linux: Justify your migration from Red Hat to CentOSEnterprise Linux: Justify your migration from Red Hat to CentOS
Enterprise Linux: Justify your migration from Red Hat to CentOSRogue Wave Software
 
Walk through an enterprise Linux migration
Walk through an enterprise Linux migrationWalk through an enterprise Linux migration
Walk through an enterprise Linux migrationRogue Wave Software
 
How to keep developers happy and lawyers calm
How to keep developers happy and lawyers calmHow to keep developers happy and lawyers calm
How to keep developers happy and lawyers calmRogue Wave Software
 
Open source and embedded software development
Open source and embedded software developmentOpen source and embedded software development
Open source and embedded software developmentRogue Wave Software
 

More from Rogue Wave Software (20)

The Global Influence of Open Banking, API Security, and an Open Data Perspective
The Global Influence of Open Banking, API Security, and an Open Data PerspectiveThe Global Influence of Open Banking, API Security, and an Open Data Perspective
The Global Influence of Open Banking, API Security, and an Open Data Perspective
 
No liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failureNo liftoff, touchdown, or heartbeat shall miss because of a software failure
No liftoff, touchdown, or heartbeat shall miss because of a software failure
 
Disrupt or be disrupted – Using secure APIs to drive digital transformation
Disrupt or be disrupted – Using secure APIs to drive digital transformationDisrupt or be disrupted – Using secure APIs to drive digital transformation
Disrupt or be disrupted – Using secure APIs to drive digital transformation
 
Leveraging open banking specifications for rigorous API security – What’s in...
Leveraging open banking specifications for rigorous API security –  What’s in...Leveraging open banking specifications for rigorous API security –  What’s in...
Leveraging open banking specifications for rigorous API security – What’s in...
 
Adding layers of security to an API in real-time
Adding layers of security to an API in real-timeAdding layers of security to an API in real-time
Adding layers of security to an API in real-time
 
Getting the most from your API management platform: A case study
Getting the most from your API management platform: A case studyGetting the most from your API management platform: A case study
Getting the most from your API management platform: A case study
 
Advanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applicationsAdvanced technologies and techniques for debugging HPC applications
Advanced technologies and techniques for debugging HPC applications
 
The forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for youThe forgotten route: Making Apache Camel work for you
The forgotten route: Making Apache Camel work for you
 
Are open source and embedded software development on a collision course?
Are open source and embedded software development on a  collision course?Are open source and embedded software development on a  collision course?
Are open source and embedded software development on a collision course?
 
Three big mistakes with APIs and microservices
Three big mistakes with APIs and microservices Three big mistakes with APIs and microservices
Three big mistakes with APIs and microservices
 
5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure success5 strategies for enterprise cloud infrastructure success
5 strategies for enterprise cloud infrastructure success
 
PSD2 & Open Banking: How to go from standards to implementation and compliance
PSD2 & Open Banking: How to go from standards to implementation and compliancePSD2 & Open Banking: How to go from standards to implementation and compliance
PSD2 & Open Banking: How to go from standards to implementation and compliance
 
Java 10 and beyond: Keeping up with the language and planning for the future
Java 10 and beyond: Keeping up with the language and planning for the futureJava 10 and beyond: Keeping up with the language and planning for the future
Java 10 and beyond: Keeping up with the language and planning for the future
 
How to keep developers happy and lawyers calm (Presented at ESC Boston)
How to keep developers happy and lawyers calm (Presented at ESC Boston)How to keep developers happy and lawyers calm (Presented at ESC Boston)
How to keep developers happy and lawyers calm (Presented at ESC Boston)
 
Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)
 
Approaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC appsApproaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC apps
 
Enterprise Linux: Justify your migration from Red Hat to CentOS
Enterprise Linux: Justify your migration from Red Hat to CentOSEnterprise Linux: Justify your migration from Red Hat to CentOS
Enterprise Linux: Justify your migration from Red Hat to CentOS
 
Walk through an enterprise Linux migration
Walk through an enterprise Linux migrationWalk through an enterprise Linux migration
Walk through an enterprise Linux migration
 
How to keep developers happy and lawyers calm
How to keep developers happy and lawyers calmHow to keep developers happy and lawyers calm
How to keep developers happy and lawyers calm
 
Open source and embedded software development
Open source and embedded software developmentOpen source and embedded software development
Open source and embedded software development
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

How to migrate SourcePro apps from Solaris to Linux

  • 1. 1© 2017 Rogue Wave Software, Inc. All Rights Reserved.
  • 2. 2© 2017 Rogue Wave Software, Inc. All Rights Reserved. Stephane Raynaud SourcePro & .h++ Specialist Stephane.Raynaud@Roguewave.com Doug Sanders Account Executive Doug.Sanders@Roguewave.com Consultant: IMPLEMENTING Consulting Mgr.: REQUIREMENTS V.P. Technical Services: MANAGING “Merely sharing my experience” 15 years of experiences at Rogue Wave
  • 3. 3© 2017 Rogue Wave Software, Inc. All Rights Reserved. • Why? • Planning • Ready… Set… Go! • Port’s done! Let’s run it!!! • A few last words & conclusion • Q&A
  • 4. 4© 2017 Rogue Wave Software, Inc. All Rights Reserved.
  • 5. 5© 2017 Rogue Wave Software, Inc. All Rights Reserved. Why migrate? • Unification • Commodity O.S. & Virtualization • Large Community and available skillset • On-Par O.S. Quality • End Of Life
  • 6. 6© 2017 Rogue Wave Software, Inc. All Rights Reserved.
  • 7. 7© 2017 Rogue Wave Software, Inc. All Rights Reserved. The C++ 4.x compilers predate the 1998 C++ standard. The version of C++ recognized by C++ 4.x does not correspond to any published standard. It follows the C++ Annotated Reference Manual (1990), with a few additions from what was expected to become part of the 1998 C++ Standard. Product name Version number C/C++ compiler Supported Operating Systems Release date SPARCworks 2.0 2 Solaris 1992 SunSoft Workshop 1.0 3 Solaris Jul-94 SunSoft Workhop 2.0 4 Solaris Mar-95 Sun Workshop 3.0 4.2 Solaris Jan-97 Sun Workshop 5 5 5 Solaris Dec-98 Forte Developer 6 (Sun WorkShop 6) 6 5.1 Solaris May-00 Forte Developer 6 update 1 6.1 5.2 Solaris Nov-00 Forte Developer 6 update 2 6.2 5.3 Solaris Jul-01 Sun ONE Studio 7 (Forte Developer 7) 7 5.4 Solaris May-02 Sun ONE Studio 8 Compiler Collection 8 5.5 Solaris May-03 Sun Studio 8 8 5.5 Solaris Mar-04 Sun Studio 9 9 5.6 Solaris, Linux Jul-04 Sun Studio 10 10 5.7 Solaris, Linux Jan-05 Sun Studio 11 11 5.8 Solaris, Linux Nov-05 Sun Studio 12 12 5.9 Solaris, Linux Jun-07 Sun Studio 12 Update 1 12.1 5.1 Solaris, Linux Jun-09 Oracle Solaris Studio 12.2 12.2 5.11 Solaris, Linux Sep-10 Oracle Solaris Studio 12.3 12.3 5.12 Solaris, Linux Dec-11 Oracle Solaris Studio 12.4 12.4 5.13 Solaris, Linux Nov-14 Oracle Developer Studio 12.5 12.5 5.14 Solaris, Linux Jun-16 Oracle Developer Studio 12.6 12.6 5.15 Solaris, Linux Jun-17 C++ Rogue Wave tools.h++ Library tools.h++ is a C++ foundation class library that was provided in previous releases of Oracle Solaris Studio and Sun Studio software. The library was released in 1996 and has not been significantly updated since. The time and date classes have serious bugs that cannot be fixed. The functionality in tools.h++ is available with a different programming interface (API) in the C++ Standard Library provided in Oracle Solaris Studio and in the open source BOOST libraries. For information about BOOST libraries see http://www.boost.org. -compat=4 option in the C++ compiler The -compat=4 option sets the C++ compiler to compatibility mode. That is, it sets language and binary compatibility to that of the 4.0.1, 4.1, and 4.2 compilers. It sets the __cplusplus preprocessor macro to 1 and the __SUNPRO_CC_COMPAT preprocessor macro to 4. Sun Studio 11 https://docs.oracle.com/cd/E19422-01/819-3689/
  • 8. 8© 2017 Rogue Wave Software, Inc. All Rights Reserved. CentOS Oracle Linux + GCC: Getting Traction Oracle Linux + Sun Studio “You are the odd duck out there” Advice: GCC and stay with the version for that OS Version • Guaranteed service level agreements (SLAs) with all support contracts • 12x5 Silver Support or 24x7 Gold Support with around-the-clock coverage • Access to Tier 3/4 open source architects and a dedicated CentOS development team • Patches and hotfixes hosted on our own CentOS repository
  • 9. 9© 2017 Rogue Wave Software, Inc. All Rights Reserved. This project may not even be a “Go” • Customer requested a port to Linux • Application was managing “Office Location” • Small portion of code relied on a 3rd party application for “localization” • Customer was “warned” but didn’t see the issue Port started but had to stop 3 weeks in because this library wasn’t available nor “deemed” portable to LINUX. Investigate carefully your dependencies regardless of how “insignificant” they may appear
  • 10. 10© 2017 Rogue Wave Software, Inc. All Rights Reserved. “How will I know I have success?” Rogue Wave libraries have been tested through 1,000s of use cases “Batman” Rogue Wave will run on the newly built binaries the same exact tests used by Rogue Wave development to validate a regular release of SourcePro. Rogue Wave will share the results of these tests with Client, and will let client know if the new binaries are producing the same results than the SourcePro 9 Update 1 release on a supported platform (usually a 100% pass). Plan for a testing & validation strategy Develop Validation Plans and test cases if they don’t exist
  • 11. 11© 2017 Rogue Wave Software, Inc. All Rights Reserved. Note: you may use rwtools even if you don’t use this option. Check for RW Classes in your code… tools.h++ is a C++ foundation class library that was provided in previous releases of Oracle Solaris Studio and Sun Studio software. The library was released in 1996 and has not been significantly updated since. The time and date classes have serious bugs that cannot be fixed. The functionality in tools.h++ is available with a different programming interface (API) in the C++ Standard Library provided in Oracle Solaris Studio and in the open source BOOST libraries. For information about BOOST libraries see http://www.boost.org. (from Oracle Studio Documentation) FALSE: The new versions are named SourcePro Core – Essential Tools and have been updated to support customers to this day MISLEADING: C++ Standard Library and BOOST offers some overlapping functionalities but this is neither a complete nor a one to one mapping. EASY SOLUTION: SourcePro Core – Essential Tools Exactly the same API for RW Classes on Linux from what you used on Solaris (Only options if using other .h++ product, such as dbtools.h++) Migrating to STL Migrating to BOOST Refactoring .h++ Code in my own class Watch out for misleading blogs (LOL!) Example “In 2005, Rogue Wave handed over the tools.h++ to Apache Foundation” … WHAT?!!??!?! This can put you in trouble. (TOTALLY FALSE)
  • 12. 12© 2017 Rogue Wave Software, Inc. All Rights Reserved. The great mistake of “one thing at a time” 4 step-plan migration: • Solaris/Oracle Studio/Oracle 8G • Linux/Oracle Studio/Oracle 8G • Linux/Oracle Studio/Oracle 12c • Linux/gcc/Oracle 12c Why? 4X the pain! Want a better use of your time? Run a static-analysis on your code first to make sure the code is up to standard & secure! Contact us about Klocwork !!!
  • 13. 13© 2017 Rogue Wave Software, Inc. All Rights Reserved.
  • 14. 14© 2017 Rogue Wave Software, Inc. All Rights Reserved. Warning: I have seen people waste months! STEP1: Define your compilation and link options (*) STEP2: Modify Your Code REPEAT AFTER ME: STEP1 first, STEP2 second The brutal truth: A successful compile is in no way a guarantee you are getting closer to success! (*) Use your 3rd party library LINUX make files as your starting point…
  • 15. 15© 2017 Rogue Wave Software, Inc. All Rights Reserved. “You will be glad you are a SourcePro user” – Useful Tip After building the RW Libraries with RCB • Go to /sourcepro/examples/tools (or network,math,ora) • Go to ./12d directory (or whatever your configuration is) • Issue a “make clean” (it only cleans the example) • Issue a “make all” (it will rebuild the example) • Observe the options used (they come from years of “research”) • The new build should not contains any “-DRW…” except for a single one such as “_RWCONFIG_12d”
  • 16. 16© 2017 Rogue Wave Software, Inc. All Rights Reserved. SourcePro Tags? When you are building a Rogue Wave Library, the library will be named following a number scheme… 0s RW_NO_STL 3s RWDEBUG, RW_NO_STL 4s RW_MULTI_THREAD, RW_NO_STL 7s RWDEBUG, RW_MULTI_THREAD, RW_NO_STL 8s RW_RWV12_STDLIB 11s RWDEBUG, RW_RWV12_STDLIB 12s RW_MULTI_THREAD, RW_RWV12_STDLIB _RWCONFIG_12s 15s RWDEBUG, RW_MULTI_THREAD, RW_RWV12_STDLIB _RWCONFIG_15s 0d RW_NO_STL, _RWTOOLSDLL 3d RWDEBUG, RW_NO_STL, _RWTOOLSDLL 4d RW_MULTI_THREAD, RW_NO_STL, _RWTOOLSDLL 7d RWDEBUG, RW_MULTI_THREAD, RW_NO_STL, _RWTOOLSDLL 8d _RWTOOLSDLL, RW_RWV12_STDLIB 11d RWDEBUG, _RWTOOLSDLL, RW_RWV12_STDLIB 12d RW_MULTI_THREAD, _RWTOOLSDLL, RW_RWV12_STDLIB _RWCONFIG_12d 15d RWDEBUG, RW_MULTI_THREAD, _RWTOOLSDLL, RW_RWV12_STDLIB _RWCONFIG_15d If you are using anything else than 12d or 12s today and in production, you are probably doing something wrong! NEVER DEFINE THESE YOURSELF !! USE THESE INSTEAD 15s and 15d is acceptable, but it’s debug code…
  • 17. 17© 2017 Rogue Wave Software, Inc. All Rights Reserved. #include <iostream.h> // incorrect #include <iostream> // correct int main() { cout << "hello world" << endl; // incorrect std::cout << "hello world" << std::endl; // correct return 0; } Keep using RWTime and RWDate, they are “safe”, even if you find “deprecated” documentation (not anymore!) RWTRegex<char> re("V[0-9].[0-9]+");RWCRExpr re("V[0-9].[0-9]+"); RWCRExpr is replaced by RWTRegex<T>
  • 18. 18© 2017 Rogue Wave Software, Inc. All Rights Reserved. • RWTPtrDlist<T> becomes RWTPtrDlist<T,A> template<class T, class A = std::allocator<T*>> class RWTPtrDlist< T, A > RWTPtrDlist<T> RWTPtrDlistIterator<T> RWTPtrHashSet<T> RWTPtrHashSetIterator<T> RWTPtrHashDictionary<K V> RWTPtrHashDictionaryIterator<K V> RWTPtrOrderedVector<T> RWTPtrSlist<T> RWTPtrSlistIterator<T> RWTPtrSortedVector<T> RWTValDlist<T> RWTValDlistIterator<T> RWTValHashSet<T> RWTValHashSetIterator<T> RWTValHashDictionary<K V> RWTValHashDictionaryIterator<K V> RWTValOrderedVector<T> RWTValSlist<T> RWTValSlistIterator<T> RWTValSortedVector<T> • RWTPtrSortedVector<T> becomes RWTPtrSortedVector<T,C,A> C: Comparaison Function • RWTPtrHashDictionary<K,V> becomes RWTPtrHashMap<K,T,H,EQ,A> K: Type for the Key T: Type for the Value H: Hash Function for the Key EQ: Equality Function for the Key A: Allocator EASY CHANGE? Use of RWDefCArgs(T) (Comparaison) or RWDefHArgs(T) (Hash) You may be using the right API already!
  • 19. 19© 2017 Rogue Wave Software, Inc. All Rights Reserved. template <class T> struct RWTHasher { typedef unsigned(*hashfun)(const T&); RWTHasher() : hfun_(NULL) {} RWTHasher(hashfun f) : hfun_(f) { } unsigned operator()(const T& t) const { RW_PRECONDITION(hfun_ != NULL); return hfun_(t); } private: hashfun hfun_; }; RWTValHashSet<RWCString> set(RWCString::hash); set.insert("one"); Original Code typedef RWTValHashSet<RWCString, RWTHasher<RWCString>, std::equal_to<RWCString> > MY_Set; MY_Set s1 = MY_Set(RWTHasher<RWCString>(&custom_hash)); typedef RWTValHashSet<RWCString RWDefHArgs(RWCString) > MY_Set; MY_Set s1 = MY_Set(RWTHasher<RWCString>(&custom_hash)); unsigned custom_hash(const RWCString& ref_) { return ref_.hash(); } n A n B New Code
  • 20. 20© 2017 Rogue Wave Software, Inc. All Rights Reserved. The SPARC architecture is big endian (BE) and it has forward byte ordering. Bit 0 is the least- significant bit, and byte 0 is the most-significant byte. Intel x86 architectures are little endian (LE) and byte 0 is the least-significant byte (LSB). int a=0x11121314; char b, *ptr; ptr= (char *) &a; // pointer ptr points to a b= ptr[1]; // b is 0x13 in LE and 0x12 in BE Not really a frequent issue Watch for networking communication & payloads No problem with Rogue Wave Classes Algorithm specific
  • 21. 21© 2017 Rogue Wave Software, Inc. All Rights Reserved. https://www.ibm.com/developerworks/systems/articles/porting_linux/
  • 22. 22© 2017 Rogue Wave Software, Inc. All Rights Reserved.
  • 23. 23© 2017 Rogue Wave Software, Inc. All Rights Reserved. “While it may look the same…” -library=stlport4 -library=Cstd (default) -library=stdcxx4 Solaris libstdc++ Linux void init() { std::vector<std::vector<…> > … Implementations are different. They lead to potential performance pitfalls, due to usage error.
  • 24. 24© 2017 Rogue Wave Software, Inc. All Rights Reserved. std::string std::vector RWCString RWTPtrVector … lot more… Threading + http://www.oracle.com/technetwork/articles/servers-storage-dev/mem-alloc-1557798.html Heap-Management is different, may impact performance or highlight concurrency bugs MTS
  • 25. 25© 2017 Rogue Wave Software, Inc. All Rights Reserved. Moving Away from Oracle Developer Studio? What’s available on Linux? • https://www.roguewave.com/products-services/totalview Amazing Replay Capability (Extremely Useful for runtime error) Marketed as a HPC tools, but natively designed for Linux
  • 26. 26© 2017 Rogue Wave Software, Inc. All Rights Reserved.
  • 27. 27© 2017 Rogue Wave Software, Inc. All Rights Reserved. Set-up milestones with your service provider  Successful build of Rogue Wave Library  Build Setup with justifications  Zero error compile & link of code Be careful who you pick Rogue Wave Support is often at the receiving end of some consultant’s incompetency. A Threading Programming Error was once described as a “Rogue Wave is not thread safe!” Interview your service provider (Use what you learn today) Train your Service Provider with Rogue Wave’s help (1 day engagement) Use Rogue Wave’s PSG
  • 28. 28© 2017 Rogue Wave Software, Inc. All Rights Reserved. A Path to success:  Learn about Rogue Wave  Review 3rd party dependencies  Define success criteria and tests  Build the Rogue Wave Libs you need  Migrate & Define Build Process – with justifications  Code Changes  Rogue Wave Changes  Modernization Changes  Platform Changes  Repeat until Compile and Link with 0 errors  Dynamic & Performance Testing
  • 29. 29© 2017 Rogue Wave Software, Inc. All Rights Reserved.