Το CMake είναι το πιο διαδεδομένο εργαλείο για να "χτίσεις" projects γραμμένα σε C++ για το 2021.
Το CMake δε μεταγλωτίζει το ίδιο τον κώδικα αλλά παράγει τις κατάλληλες παραμέτρους για άλλα εργαλεία (π.χ. make) τα οποία αναλαμβάνουν τη μεταγλώτισση.
Η χρήση εργαλείων όπως το CMake είναι μονόδρομος όταν ένα έργο σε C++ περιλαμβάνει πολλά αρχεία, διάφορες παραμέτρους, εξωτερικά dependencies κλπ. Σε αυτή την περίπτωση η ανάπτυξή του γίνεται εκθετικά δυσκολότερη όσο το μέγεθός του αυξάνεται, εάν δεν υιοθετηθεί χρήση εργαλείων όπως το CMake.
邏 Στο εργαστήριο θα δείξουμε πως μπορούμε να στήσουμε ένα τυπικό project γραμμένο σε C++ και θα καλύψουμε τα πιο βασικά σενάρια που χρειάζεται να γνωρίζει κάποιος όπως:
✅ Παραγωγή εκτελέσιμου αρχείου
✅ Καθορισμός του include path
✅ Δημιουργία βιβλιοθήκης για static ή dynamic linking
✅ Ελεγχος των διάφορων compilation flags
✅ Δημιουργία functions εντός του CMake
✅ Παραμετροποίηση μέσω options
CMake is an open-source cross-platform build system. It is increasingly becoming the build system of choice for open source projects. The Qt project recently announced that Qbs, the replacement build system for qmake, will no longer be supported and future efforts will focus on CMake. It may become the default build system for Qt version 6.
CMake has offered support for building Qt applications for some time, and is supported within the Qt Creator IDE. In this webinar we will:
-Introduce you to CMake
-Cover its basic features and how to use it
-Show some CMake configurations including Qt-based applications
-Prove how easy it is to use Cmake with Qt so you'll be ready to use it for your C++ and Qt-based applications!
While CMake has become the de-facto standard buildsystem for C++, it's siblings CTest and CPack are less well known. This talk gives a lightspeed introduction into these three tools and then focuses on best practices on building, testing, and packaging.
Git, CMake, Conan - How to ship and reuse our C++ projects?Mateusz Pusz
These are the slides from my CppCon 2018 talk. You can find the recording here: https://www.youtube.com/watch?v=S4QSKLXdTtA. All my other talks can be found here: https://train-it.eu/resources.
---
Git and CMake are already established standards in our community. However, it is uncommon to see them being used in an efficient way. As a result, many C++ projects have big problems with either importing other dependencies or making themselves easy to import by others. It gets even worse when we need to build many different configurations of our package on one machine.
That presentation lists and addresses the problems of build system and packaging that we have with large, multi-platform, C++ projects that often have many external and internal dependencies. The talk will present how proper use of CMake and Conan package manager can address those use cases. It will also describe current issues with the cooperation of those tools.
If you've attended or seen my talk at C++Now 2018, that time you can expect much more information on Conan and package creation using that tool. I will also describe how the integration of CMake and Conan changed over the last few months.
CMake is an open-source cross-platform build system. It is increasingly becoming the build system of choice for open source projects. The Qt project recently announced that Qbs, the replacement build system for qmake, will no longer be supported and future efforts will focus on CMake. It may become the default build system for Qt version 6.
CMake has offered support for building Qt applications for some time, and is supported within the Qt Creator IDE. In this webinar we will:
-Introduce you to CMake
-Cover its basic features and how to use it
-Show some CMake configurations including Qt-based applications
-Prove how easy it is to use Cmake with Qt so you'll be ready to use it for your C++ and Qt-based applications!
While CMake has become the de-facto standard buildsystem for C++, it's siblings CTest and CPack are less well known. This talk gives a lightspeed introduction into these three tools and then focuses on best practices on building, testing, and packaging.
Git, CMake, Conan - How to ship and reuse our C++ projects?Mateusz Pusz
These are the slides from my CppCon 2018 talk. You can find the recording here: https://www.youtube.com/watch?v=S4QSKLXdTtA. All my other talks can be found here: https://train-it.eu/resources.
---
Git and CMake are already established standards in our community. However, it is uncommon to see them being used in an efficient way. As a result, many C++ projects have big problems with either importing other dependencies or making themselves easy to import by others. It gets even worse when we need to build many different configurations of our package on one machine.
That presentation lists and addresses the problems of build system and packaging that we have with large, multi-platform, C++ projects that often have many external and internal dependencies. The talk will present how proper use of CMake and Conan package manager can address those use cases. It will also describe current issues with the cooperation of those tools.
If you've attended or seen my talk at C++Now 2018, that time you can expect much more information on Conan and package creation using that tool. I will also describe how the integration of CMake and Conan changed over the last few months.
To introduce and motivate some best practice around version control and Git.
Resources:
https://en.wikipedia.org/wiki/Version_control
https://git-scm.com/
https://try.github.io
http://rogerdudler.github.io/git-guide/
http://ohshitgit.com/
https://www.atlassian.com/git/tutorials
https://www.datacamp.com/courses/introduction-to-git-for-data-science
Ramon Fried covers the following topics:
* What DMA is.
* DMA Buffer Allocations and Management.
* Cache Coherency.
* PCI and DMA.
* dmaengine Framework.
Ramon is an Embedded Linux team leader in TandemG, leading various cutting edge projects in the Linux kernel.
He has years of experience in embedded systems, operating systems and Linux kernel.
Let's trace Linux Lernel with KGDB @ COSCUP 2021Jian-Hong Pan
https://coscup.org/2021/en/session/39M73K
https://www.youtube.com/watch?v=L_Gyvdl_d_k
Engineers have plenty of debug tools for user space programs development, code tracing, debugging and analyzing. Except “printk”, do we have any other debug tools for Linux kernel development? The “KGDB” mentioned in Linux kernel document provides another possibility.
Will share how to experiment with the KGDB in a virtual machine. And, use GDB + OpenOCD + JTAG + Raspberry Pi in the real environment as the demo in this talk.
開發 user space 軟體時,工程師們有方便的 debug 工具進行查找、分析、除錯。但在 Linux kernel 的開發,除了 printk 外,還可以有哪些工具可以使用呢?從 Linux kernel document 可以看到 KGDB 相關的資訊,提供了在 kernel 除錯時的另一個可能性。
本次將分享,從建立最簡單環境的虛擬機機開始,到實際使用 GDB + OpenOCD + JTAG + Raspberry Pi 當作展示範例。
Virtual File System in Linux Kernel
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Acquia BLT for the Win, or How to speed up the project setup, development an...DrupalCamp Kyiv
Nikita Pohrebniak, Imagex
There are so many tools that can help you with every step of the development and deployment process. In this talk, we’ll explain why our company picked Acquia BLT, what it can do for you and how it can be customized to satisfy your needs.
Drupal Virtual Cafe #2, by DrupalCamp Kyiv
https://www.facebook.com/drupalcampkyiv/
To introduce and motivate some best practice around version control and Git.
Resources:
https://en.wikipedia.org/wiki/Version_control
https://git-scm.com/
https://try.github.io
http://rogerdudler.github.io/git-guide/
http://ohshitgit.com/
https://www.atlassian.com/git/tutorials
https://www.datacamp.com/courses/introduction-to-git-for-data-science
Ramon Fried covers the following topics:
* What DMA is.
* DMA Buffer Allocations and Management.
* Cache Coherency.
* PCI and DMA.
* dmaengine Framework.
Ramon is an Embedded Linux team leader in TandemG, leading various cutting edge projects in the Linux kernel.
He has years of experience in embedded systems, operating systems and Linux kernel.
Let's trace Linux Lernel with KGDB @ COSCUP 2021Jian-Hong Pan
https://coscup.org/2021/en/session/39M73K
https://www.youtube.com/watch?v=L_Gyvdl_d_k
Engineers have plenty of debug tools for user space programs development, code tracing, debugging and analyzing. Except “printk”, do we have any other debug tools for Linux kernel development? The “KGDB” mentioned in Linux kernel document provides another possibility.
Will share how to experiment with the KGDB in a virtual machine. And, use GDB + OpenOCD + JTAG + Raspberry Pi in the real environment as the demo in this talk.
開發 user space 軟體時,工程師們有方便的 debug 工具進行查找、分析、除錯。但在 Linux kernel 的開發,除了 printk 外,還可以有哪些工具可以使用呢?從 Linux kernel document 可以看到 KGDB 相關的資訊,提供了在 kernel 除錯時的另一個可能性。
本次將分享,從建立最簡單環境的虛擬機機開始,到實際使用 GDB + OpenOCD + JTAG + Raspberry Pi 當作展示範例。
Virtual File System in Linux Kernel
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Acquia BLT for the Win, or How to speed up the project setup, development an...DrupalCamp Kyiv
Nikita Pohrebniak, Imagex
There are so many tools that can help you with every step of the development and deployment process. In this talk, we’ll explain why our company picked Acquia BLT, what it can do for you and how it can be customized to satisfy your needs.
Drupal Virtual Cafe #2, by DrupalCamp Kyiv
https://www.facebook.com/drupalcampkyiv/
Lightweight Developer Provisioning with GradleQAware GmbH
Gradle Summit 2016, Palo Alto, CA: Talk by Mario-Leander Reimer (@LeanderReimer, Principal Software Architect at QAware):
Abstract: Every software project starts with the setup of a local development environment: a JDK, your preferred IDE and build tool, a local database and application server and so forth. Everything you and your team needs to be productive from day one. Time is valuable, so you take the quick route and reuse a development environment from a previous project. Bad idea! Technical debts and broken windows from day one! With the first required changes things usually start to go wrong, the individual environments start to diverge and problems during the build or local execution of your software are inevitable. So how can you do better? The short answer is: with SEU-as-code, a lightweight approach and tool based on Gradle that helps to automate the provisioning of developers.
Lightweight Developer Provisioning with Gradle and SEU-as-codeMario-Leander Reimer
Every software project starts with the setup of a local development environment: a JDK, your preferred IDE and build tool, a local database and application server and so forth. Everything you and your team needs to be productive from day one. Time is valuable, so you take the quick route and reuse a development environment from a previous project. Bad idea! Technical debts and broken windows from day one! With the first required changes things usually start to go wrong, the individual environments start to diverge and problems during the build or local execution of your software are inevitable. So how can you do better? The short answer is: with SEU-as-code, a lightweight approach and tool based on Gradle that helps to automate the provisioning of developers.
This session will first demonstrate the setup of a full featured development environment from scratch in under 15 minutes. It will then outline and explain the main features in more detail and show how custom functionality and scripts can be integrated easily to automate recurring development tasks. We will briefly cover the Gradle plugins and conventions that perform the heavy lifting and we will also show how to quickly build your own software packages using Gradle.
Kernel developers may have experience in writing makefiles for the linux kernel. In many cases, maybe just adding lines like
"obj-$(CONFIG_FOO) += foo.o" to a makefile. But, probably there
is not many people really know what's going on behind this cool
build system.
In this talk, Cao jin will dive into the Kbuild internals. Starting from
the basics of GNU Make, he will explain how Kbuild works, and in the end, produces vmlinux, bzImage, modules. The talk will also focus on some smart tricks used in Kbuild. At last, he will give a introduction about how Xen project is related with this config/build system.
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Cisco DevNet
This session is an introduction to Golang - the Go programming language - for IT Professionals. We'll explain how to setup a GO development environment, create a simple HTTP/2 Web API, and embed our code into a Docker container. We'll also go through the reasons why the language is so popular to create network applications by showing how the language is expressive, concise, clean, and efficient. Join this session if you've started writing Python scripts that consume Web APIs, and you now want to go to the next stage by creating your own APIs to expose or store Enterprise Data.
DEVNET-1808
https://www.ciscolive.com/us/learn/sessions/session-catalog/?search=DEVNET-1808
This talk I will show you the golang project layout and some best practice like as the following:
1. RESTful api and GraphQL
2. Model testing (Postgres, SQLite, MySQL)
3. Software Quality
4. Data Metrics
5. Go Testing
Slides from my talk at Confoo 2014. Notes to come...
As a front end developer, I want to write code. Dealing with the mundane tasks that come with static assets such as concatenation, minification and versioning, I don't care much for. In this session, I'll explain how to setup Grunt tasks to handle CSS and JavaScript assets in both development and production environments. This automated workflow allows you to easily reproduce both environments locally for testing and debugging.
## Resources
* http://www.getchef.com/
* http://www.vagrantup.com/
* http://www.phing.info/
* https://getcomposer.org/
* http://www.gruntjs.com/
* http://www.bower.io/
* http://www.npmjs.com/
* http://github.com/canvaspop/grunt-static-versioning
## Links
* http://fabien-d.github.io/
* http://twitter.com/fabien_doiron
* http://canvaspop.com
* http://dna11.com
* http://crated.com
* http://developers.canvaspop.com
* http://remade.canvaspop.com/
Webinar: Building Embedded Applications from QtCreator with DockerBurkhard Stubert
I show how QtCreator builds an embedded application against a Qt SDK encapsulated in a Docker container. QtCreator doesn't know which Yocto version was used for building the Qt SDK and which environment variables must be set for the SDK. QtCreator forwards the CMake calls for configuring, building and staging the application to the container, which executes these calls in the right environment.
Build and run embedded apps faster from qt creator with dockerQt
Have you ever considered, what it would require to use containers to build and deploy applications to embedded targets?
Of course, you have! So, in this webinar, Burkhard Stubert will show you how to replace cross-building your application in a Docker container, stopping the application on the target system, copying the application from your PC to the target system, and starting the application on the target system with… just clicking a button.
Speakers:
- Burkhard Stubert, Solopreneur, Embedded Use
- Tino Pyssysalo, Senior Product Manager, The Qt Company
Cloud Workstations provides preconfigured, customizable, and secure managed development environments on Google Cloud. Cloud Workstations is accessible through a browser-based IDE, from multiple local code editors (such as IntelliJ IDEA Ultimate or VS Code), or through SSH. Instead of manually setting up development environments, you can create a workstation configuration specifying your environment in a reproducible way
Microservices DevOps on Google Cloud PlatformSunnyvale
A typical CI/CD development process built on top of Google Cloud Platform to deliver a Java microservice using Helidon.io native-compiled with GraalVM and scheduled on a Google Kubernetes Engine cluster.
The Fairy Tale of the One Command Build ScriptDocker, Inc.
Do you have this build script that with a single command builds your software? Does this still apply on a brand new PC?
This presentation takes you on the journey to construct complex build environments using Docker. The journey follows our lessons learned and experiences going from hand crafted to Dockerized build environments. We will look at different patterns to build modular containers, ways to chain containers and the specialties of Windows containers.
Welcome the the next GRCPP meetup where we will introduce a powerful new feature in C++20: Concepts.
Concepts are a way to specify requirements on template parameter types and to make templates more expressive and easier to understand..
We will show how to use concepts to create "interfaces" for your template types, how to simplify your code and provide better error messages.
We will demonstrate how to use `requires` to create "contracts" for your templates and how to use `concept` to constrain the acceptable types.
Operating systems offer a number of mechanisms for processes to communicate with each other.
In this workshop we introduce two of these mechanisms, messages queues and shared memory, look into a simple cross-platform implementation using Boost.Interprocess and cover some of the common pitfalls.
Lambda functions in C++ are unnamed functions contained typically within other functions and examples of their usage includes but is not limited to:
a) Specializing the behavior of an algorithm
b) Encapsulating complex expressions within a function
c) Creating callbacks to be passed onto other functions
Their syntax may look exotic, but once you get accustomed to them they can increase the readability of your software and prove to be particularly useful.
In this workshop we will learn about their syntax and demonstrate multiple real-world examples of their usage.
We all know, or should know, about SOLID. The question is, do we write C++ according to the SOLID principles?
https://platis.solutions/blog/2020/06/22/how-to-write-solid-cpp/
With increased software size and complexity, there is an increased risk in terms of software failures that could lead to unacceptable hazards. Part 6 of ISO26262 standard (International Standard for safety of automotive electronics) provides appropriate requirements and processes to develop automotive software acceptably safe. Following ISO26262 standard is almost mandatory in every leading company.
The topic of the meetup is to introduce the ISO26262 standard and briefly address the following questions:
1. How to develop automotive software according to ISO26262?
2. What is safety analysis and how to use it in software?
3. How to manage software according to requirements from standard?
4. What are the other constraints from ISO26262 towards software development and testing?
Speaker:
Chaitanya Raju is currently consulting across safety critical automotive systems and software. He has a master's in automotive embedded systems and experience of around 10 years in the automotive domain. As a safety practitioner he worked at Volvo Trucks (GTT), NEVS, CEVT, Hyundai Mobis and currently working in Volvo Cars. Chaitanya trained function owners, software developers and project managers in ISO26262.
How to create your own Linux distribution (embedded-gothenburg)Dimitrios Platis
= Please note that the code in the slides may not be working
= Refer to the repository for working examples: https://github.com/platisd/meta-dimitriOS
Welcome to a beginner-friendly deep dive on how to create your own Linux distribution!
But why would you want to create one yourself?
** BACKGROUND **
Mainstream Linux distributions (e.g. Ubuntu, ArchLinux) enable their users to perform a plethora of tasks and often include the means for further customization of the system via a package manager, development tools, a desktop environment etc.
However, if you are creating a device that has a very specific set of use cases and needs to operate under strict constraints in regards to resources, power consumption, performance, or robustness, then using a full-fledged desktop operating system is infeasible. This is very common when developing embedded systems, meant to be used in an IoT application, the automotive or telecom industry, and so forth.
To create an Embedded Linux operating system, there are two paths you can follow:
1. Create a "golden image"; often the first choice when prototyping with a development board, e.g. a Raspberry Pi.
An off-the-shelf operating system, such as Debian, is hacked until it fits the purpose. Then clones of that "golden image" are created and installed in more devices.
This is good enough for creating a proof-of-concept but quickly falls short when the project becomes more complicated, larger, or the need to develop product variants arises.
2. Create a configuration-based distribution; the industry-proven way to create an Embedded Linux operating system.
Instead of maintaining the operating system as a big binary, its components are specified in version controllable configuration files. Setting everything up may require a steeper learning curve since things are not already conveniently in place. However, it is the only sustainable way to go forward when it comes to serious Embedded Linux development.
More on the topic: https://www.linuxjournal.com/content/linux-iot-development-adjusting-binary-os-yocto-project-workflow
** WORKSHOP **
In this workshop, we are going to demonstrate the "ingredients" needed to build your own Linux distribution using the Yocto project. Then we will run our distribution on a Raspberry Pi board.
Yocto is a collection of tools and processes enabling the creation of configurable Embedded Linux distributions. You define which components are to be included in your operating system with software- and hardware-specific configuration files. "Recipes" determine how these components are built and also what they depend upon. Finally, these recipes are utilized by "bitbake" (a tool offered by Yocto) to build your custom Linux image.
During the workshop, we will go over the setup needed to create a custom operating system for a typical IoT device. It boots up, automatically connects to the internet, and launches a C++ demon that fetches information from a cloud API.
In this webinar, we talked about hard-to-test patterns in C++ and show how to refactor them. The difficulty, in this context, does not lie in the code's inherent complexity.
The focus will be on patterns technically difficult to unit test because they may:
* Require irrelevant software to be tested too
* E.g.: 3rd party libraries, classes other than the one under test
* Delay the test execution
* E.g.: sleeps inside code under test
* Require intricate structures to be copied or written from scratch
* E.g.: fakes containing a lot of logic
* Require test details to be included in the production code
* E.g.: #ifdef UNIT_TESTS
* Make changes and/or are dependent on the runtime environment
* E.g.: Creating or reading from files
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Experience our free, in-depth three-part Tendenci Platform Corporate Membership Management workshop series! In Session 1 on May 14th, 2024, we began with an Introduction and Setup, mastering the configuration of your Corporate Membership Module settings to establish membership types, applications, and more. Then, on May 16th, 2024, in Session 2, we focused on binding individual members to a Corporate Membership and Corporate Reps, teaching you how to add individual members and assign Corporate Representatives to manage dues, renewals, and associated members. Finally, on May 28th, 2024, in Session 3, we covered questions and concerns, addressing any queries or issues you may have.
For more Tendenci AMS events, check out www.tendenci.com/events
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
5. What is CMake?
CMake is a software that manages the
way C/C++ projects are built. It has the
ability to simplify the build process of
projects with large or complex code
layouts and is compiler-agnostic.
It is considered the de facto standard for
building C/C++ projects.
6. When is a build
system
necessary?
● Avoid hard-coding paths
● Build a package on more than one
computer
● Support multiple operating systems and
compilers
● Describe how your program is
structured logically, not flags and
commands
Source: An Introduction to Modern CMake
7. Why do you
need to learn
CMake?
● 55 to 80% of C++ developers use it
● The vast majority professional C++
projects use it
● Cross-platform
● Well-supported by IDEs
● Relatively easy to get started with
● Makefiles and building with the command
line simply do not scale
9. Create binary with command line
// src/main.cpp
#include <iostream>
int main()
{
std::cout << "Hello World" << std::endl;
return 0;
}
$ g++ src/main.cpp
$ ./a.out
10. Create binary with CMake
cmake_minimum_required(VERSION 3.12)
project(IntroToCmake)
add_executable(hello_world src/main.cpp)
$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./hello_world
11. Generated build/Makefile
# Default target executed when no arguments are given to make.
default_target: all
# The main all target
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/me/projects/intro-to-cmake/build/CMakeFiles
/home/me/projects/intro-to-cmake/build//CMakeFiles/progress.marks
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
$(CMAKE_COMMAND) -E cmake_progress_start /home/me/projects/intro-to-cmake/build/CMakeFiles 0
# Build rule for target.
hello_world: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 hello_world
18. libgreeter.a (static library)
add_library(greeter src/greeter.cpp)
target_include_directories(greeter PUBLIC include)
add_executable(hello_world src/main.cpp)
target_link_libraries(hello_world PUBLIC greeter)
$ make greeter
$ ls -l libgreeter.a
> -rw-r--r-- 1 me me 3088 libgreeter.a
$ make hello_world
$ ldd
19. libgreeter.so (dynamic library)
add_library(greeter SHARED src/greeter.cpp)
target_include_directories(greeter PUBLIC include)
add_executable(hello_world src/main.cpp)
target_link_libraries(hello_world PUBLIC greeter)
$ make greeter
$ ls -l libgreeter.so
-rw-r--r-- 1 me me 16856 libgreeter.so
$ make hello_world
$ ldd hello_world
libgreeter.so =>
/home/me/intro-to-cmake/build/libgreeter.so
27. Customize your build steps
function(configure_test testExecutable)
# Link against gtest library
target_link_libraries(${testExecutable}
gtest gtest_main gmock_main)
# Disable variadic macro warnings
target_compile_options(${testExecutable}
PRIVATE -Wno-gnu-zero-variadic-macro-arguments)
# Create test name as the capitalized form
string(TOUPPER ${testExecutable} testName)
# Add executable to test suite
add_test(${testName} ${testExecutable}
${GTEST_RUN_FLAGS})
endfunction(configure_test)
add_executable(dummy_test DummyTest.cpp)
configure_test(dummy_test)
28. Takeaways
● We covered only the surface
● Easy things are simple with CMake
● Integration with custom build systems or other
libraries is where the trickery begins
● Start using CMake (or equivalent, e.g. Bazel)
even for personal projects
29.
30. Let's keep in touch!
https://www.linkedin.com/in/platisd/
dimitris@platis.solutions
@PlatisSolutions
31. JetBrains lottery
1 year license for any Jetbrains IDE!
1. Go to: http://plat.is/jetbrains
2. If you won, please stick around until I
contact you
3. If you did not win, better luck next time!
Did you know that as a university student you
can get a free JetBrains license anyway?