Learning ctools and GammaLib development in an hour

Size: px
Start display at page:

Download "Learning ctools and GammaLib development in an hour"

Transcription

1 Learning ctools and GammaLib development in an hour Introduction to 6 th ctools coding sprint Jürgen Knödlseder (IRAP)

2 What I expect you know How to write C++ and/or Python code How to use Git Our GitLab development workflow! (see The content of our reference paper! (see 2

3 What I will cover in this presentation GammaLib and ctools overview Developing sustainable software Adding a new class to GammaLib Adding a new tool to ctools Adding a new script to ctools Adding tests 3

4 What is GammaLib? Using GammaLib! as C++ library 4

5 What is GammaLib? Using GammaLib! as Python module 5

6 What is in GammaLib? 6

7 What do I need as developer? ANSI C++ compiler (e.g. g++, clang) Git make, automake, autoconf, libtools cfitsio (survives without it, but not very useful) readline & ncurses (nice to have for tab completion) Python (including Python.h header file) SWIG Example installation on Mac OS X (after Xcode install): 7

8 What are ctools? Using ctools as! executables! from the! command line 8

9 What are ctools? Using ctools as! Python module 9

10 What is in ctools? 10

11 How do both relate? A ctool is a C++ executable that uses GammaLib as a! C++ library 11

12 How do both relate? A cscript is a Python script that uses GammaLib as a! Python module Example: cscaldb 12

13 Why should software be sustainable? Sustainability: meeting the needs of the present without compromising the ability of future generations to satisfy their own needs Short-term interest Long-term benefits Have a quick solution at the expense of software aging technical debt high lifecycle costs Have a long-lasting solution providing reliability adaptability maintainability 13

14 Why should software be sustainable? Sustainability: meeting the needs of the present without compromising the ability of future generations to satisfy their own needs Short-term interest Long-term benefits Have a quick solution at the expense of software aging technical debt high lifecycle costs Not sustainable Have a long-lasting solution providing reliability adaptability maintainability Sustainable 14

15 How to achieve sustainability? From Clear licensing Clear documentation Commonly adopted and modern programming language Modular design Clear revision management and change control Risk management Clearly established software testing regime and validated results Open and common standards Clear separation between data and code Clear understanding of dependencies 15

16 How we achieve sustainability? From Clear licensing GNU GPL3, Open Source Clear documentation Code documentation (Doxygen), User documentation (Sphinx) Commonly adopted and modern programming language C++ & Python Modular design implemented for GammaLib & ctools Clear revision management and change control Git workflow Risk management avoidance of OS, version, compiler and library dependencies (continuously tested) Clearly established software testing regime and validated results test suites are part of code (incl. Science Verification), Continuous Integration & Testing Open and common standards Strict application of coding standards Clear separation between data and code No data in code Clear understanding of dependencies Allowed dependencies established 16

17 What you should do Make sure you read and follow the coding conventions C++98 ISO (many servers still don t support C++11) Python (may evolve since few systems nowadays with Python 2.5-, but some with Python 2.6, and Python 2.7 supported at least until 2020) Indent with 4 spaces, no tabs Do not exceed 80 characters in one line Use coherent class and method names (always same method for same function, e.g. clear(), size(), is_empty(), append(), insert() ) Only use Python standard library modules Document your code (code documentation with Doxygen) Document the usage of your code (user documentation with Sphinx) Write unit tests (you may do this even before writing your code) If in doubt, ask for code review (can be nicely done using GitLab by everyone not just me :-) 17

18 Tutorial: adding a class to GammaLib Let s create a new spectral model (say an EBL model). Here are the steps: 1. Make sure that a Redmine issue exists for the new model 2. Find a good name for the class (e.g. GModelSpectralEBL) 3. Create a new feature branch (e.g add-ebl-model) 4. Start by copying an existing class 5. Adapt code 6. Add new files to build system 7. Update ChangeLog and NEWS file 8. Commit the code 9. Push the code into your GitLab fork 10. Ask for code review or code integration 18

19 .hpp code adaption (1) mass replacement your name and current year your name and purpose of file Adapt to class name (multiple! include protection) Things for which you need the interface definition Things that need to be known to exist 19

20 .hpp code adaption (2) use explicit to avoid automatic type conversion Implement all pure virtual methods from the base class add any other methods as needed Standard methods for initialisation, copying and freeing members Add members as needed (use mutable for pre-computed and cashed values) 20

21 .hpp code adaption (3) add one-liners as inline methods Every method has a single-line brief description Provide detailed description of method, including formulae, references, etc. (everything a user of this method may need) Document return value and units Document input parameters and units 21

22 Doxygen code documentation 22

23 .cpp code adaption (1) Make sure that package configuration is available (conditional compiling) Things that are used within the file Register the model (will handle detection in XML files) In case a method throws an exception 23

24 .cpp code adaption (2) Invoke base class constructor Initialise all class members Invoke base class constructor Initialise all class members Copy all class members Free all class members 24

25 .cpp code adaption (3) Don t copy identity Assign base class members Free all class members Initialise all class members Copy all class members Free all members, including all base classes (base classes last) Initialise all members, including all base classes (base classes first) 25

26 .cpp code adaption (4) The type of your model in the XML file One block for each parameter True if parameter has an analytical gradient, false otherwise Push all parameters into the parameter stack (allows iterating over parameters) 26

27 .cpp code adaption (5) The only function you really needed to adapt to the model (and possibly optimise) Formula in LaTeX Here the real magic happens And here even more magic happens. Hopefully you can work out the analytical parameter gradients (with respect to the parameter value, i.e. parameter gradients times parameter scaling) Compile option to catch NaNs / Infs 27

28 .i code adaption (1).i files are interface files processed by SWIG to create the gammalib Python module. SWIG generates a xxx_wrap.cpp and a xxx.py file for each module xxx. The GModelSpactralEBL.i file is part of the model module. Special SWIG directive 28

29 .i code adaption (2) Almost identical to the public class definition in the.hpp file No = operator No print() method Extensions can make the class more Pythonic (also extension written in Python possible) 29

30 Add new files to build system Update the following files and type automake &./configure include/gammalib.hpp include/makefile.am pyext/gammalib/model.i src/model/makefile.am 30

31 Tutorial: adding a new ctool Let s create a new tool to simulate pointings. Here are the steps: 1. Make sure that a Redmine issue exists for the new tool (#1632) 2. Find a good name for the tool (e.g. ctpntsim) 3. Create a new feature branch (e.g add-ctpntsim) 4. Start by copying an existing tool! $ cp -r src/ctobssim src/ctpntsim $ cp pyext/ctobssim.i pyext/ctpntsim.i $ cp doc/source/users/reference_manual/ctobssim.rst doc/source/ users/reference_manual/ctpntsim.rst 5. Rename files! $ mv src/ctpntsim/ctobssim.cpp src/ctpntsim/ctpntsim.cpp $ mv src/ctpntsim/ctobssim.hpp src/ctpntsim/ctpntsim.hpp $ mv src/ctpntsim/ctobssim.par src/ctpntsim/ctpntsim.par 6. Adapt code 7. Add new files to build system 8. Update ChangeLog and NEWS file 9. Commit the code 10. Push the code into your GitLab fork 11. Ask for code review or code integration 31

32 main.cpp code adaption The executable for a ctool allocates an instance of the tool, executes it and deletes the instance Each ctool is a C++ class Allocation Execution Deletion 32

33 ctpntsim.hpp code adaption Set tool name and version Choose appropriate base class 33

34 ctool base classes Tools dealing with observation containers Tools doing max. likelihood fitting 34

35 ctpntsim.cpp code adaption (1) Use tool name and version Allows passing an observation container upon construction Allows specification of command line parameters 35

36 ctpntsim.cpp code adaption (2) Every tool has a run() method Standard switch-on of debug mode Every tool first reads the user parameters Any saving is not done in the run() method but a dedicated save() method (allows in-memory handling) 36

37 ctpntsim.par file adaption Define parameters as needed. Use identical names than in other tools for identical meanings. Standard parameters 37

38 ctpntsim.rst file adaption Try to write text in block that fits in 80 characters (also used for text shown with help option). Describe meaning of each parameter Verbosity definition (try to follow this logic in your code): 0 : SILENT 1 : TERSE 2 : NORMAL 3 : VERBOSE 4 : EXPLICIT 38

39 ctpntsim.i code adaption Similar to the SWIG file for a GammaLib class 39

40 Add new files to build system Update the following files and type automake &./configure src/makefile.am src/ctpntsim/makefile.am pyext/ctools/tools.i configure.ac 40

41 Tutorial: adding a new cscript Let s create a new script to simulate pointings. Here are the steps: 1. Make sure that a Redmine issue exists for the new script (#1632) 2. Find a good name for the script (e.g. cspntsim) 3. Create a new feature branch (e.g add-cspntsim) 4. Start by copying an existing script! $ cp cscripts/csspec.py cscripts/cspntsim.py $ cp cscripts/csspec.par cscripts/cspntsim.par $ cp doc/source/users/reference_manual/csspec.rst doc/ source/users/reference_manual/cspntsim.rst 5. Adapt code 6. Add new files to build system 7. Update ChangeLog and NEWS file 8. Commit the code 9. Push the code into your GitLab fork 10. Ask for code review or code integration 41

42 cspntsim.py code adaption (1) Make Python script executable Derive class from ctools.cscript base class Use astropy-style docstrings (see coding conventions) Set name and version strings Call base class constructor 42

43 cspntsim.py code adaption (2) Code looks very similar to C++ example Execute method calls run() and save() 43

44 Add new files to build system Update the following files and type automake &./configure cscripts/ init.py.in cscripts/makefile.am 44

45 Fundamentals of software testing (from Unit testing: Validate that each unit (typically method of C++ or Python class) performs as designed. Integration testing: Combine individual units and test as a group. Expose faults in the interaction between the units. System testing: Test complete integrated software. Evaluate system s compliance with specified requirements (e.g. Can we generate a sky map? Can we fit a spectrum?) Acceptance testing: Test system for acceptability. Evaluate system s compliance for business requirements and assess whether acceptable for delivery (e.g. Can a Scientists perform a data analysis?) 45

46 Testing in GammaLib and ctools GammaLib includes classes for implementing tests GTestCase: implements one test GTestSuite: implements a collection of tests (for example all tests of a given module) GTestSuites: implements a container of test suites (for example all tests for a given module, all ctools tests, etc.) 46

47 Setting up a test suite in C++ Set all test methods One test method (for example one per class) Test assertions, values and exceptions Allocate and append test suite to container (TestGSupport class derives from GTestSuite base class) Run tests Write test report into XML file (JUnit format) 47

48 Setting up a test suite in Python Python test class derives from GPythonTestSuite Set all test methods Test method Test case 48

49 49

FPLLL. Contributing. Martin R. Albrecht 2017/07/06

FPLLL. Contributing. Martin R. Albrecht 2017/07/06 FPLLL Contributing Martin R. Albrecht 2017/07/06 Outline Communication Setup Reporting Bugs Topic Branches and Pull Requests How to Get your Pull Request Accepted Documentation Overview All contributions

More information

CSE 331 Software Design & Implementation

CSE 331 Software Design & Implementation CSE 331 Software Design & Implementation Spring 2019 Section 2 Development Tools UW CSE 331 Spring 2019 1 Administrivia HW1 done! HW2 due next Tuesday. HW3 out today, deadline upcoming. Everyone should

More information

CSE 15L Winter Midterm :) Review

CSE 15L Winter Midterm :) Review CSE 15L Winter 2015 Midterm :) Review Makefiles Makefiles - The Overview Questions you should be able to answer What is the point of a Makefile Why don t we just compile it again? Why don t we just use

More information

IBM Case Manager Mobile Version SDK for ios Developers' Guide IBM SC

IBM Case Manager Mobile Version SDK for ios Developers' Guide IBM SC IBM Case Manager Mobile Version 1.0.0.5 SDK for ios Developers' Guide IBM SC27-4582-04 This edition applies to version 1.0.0.5 of IBM Case Manager Mobile (product number 5725-W63) and to all subsequent

More information

Using Doxygen to Create Xcode Documentation Sets

Using Doxygen to Create Xcode Documentation Sets Using Doxygen to Create Xcode Documentation Sets Documentation sets (doc sets) provide a convenient way for an Xcode developer to search API and conceptual documentation (including guides, tutorials, TechNotes,

More information

trisycl Open Source C++17 & OpenMP-based OpenCL SYCL prototype Ronan Keryell 05/12/2015 IWOCL 2015 SYCL Tutorial Khronos OpenCL SYCL committee

trisycl Open Source C++17 & OpenMP-based OpenCL SYCL prototype Ronan Keryell 05/12/2015 IWOCL 2015 SYCL Tutorial Khronos OpenCL SYCL committee trisycl Open Source C++17 & OpenMP-based OpenCL SYCL prototype Ronan Keryell Khronos OpenCL SYCL committee 05/12/2015 IWOCL 2015 SYCL Tutorial OpenCL SYCL committee work... Weekly telephone meeting Define

More information

11 Using JUnit with jgrasp

11 Using JUnit with jgrasp 11 Using JUnit with jgrasp jgrasp includes an easy to use plug-in for the JUnit testing framework. JUnit provides automated support for unit testing of Java source code, and its utility has made it a de

More information

Technology Background Development environment, Skeleton and Libraries

Technology Background Development environment, Skeleton and Libraries Technology Background Development environment, Skeleton and Libraries Christian Kroiß (based on slides by Dr. Andreas Schroeder) 18.04.2013 Christian Kroiß Outline Lecture 1 I. Eclipse II. Redmine, Jenkins,

More information

Section 1: Tools. Contents CS162. January 19, Make More details about Make Git Commands to know... 3

Section 1: Tools. Contents CS162. January 19, Make More details about Make Git Commands to know... 3 CS162 January 19, 2017 Contents 1 Make 2 1.1 More details about Make.................................... 2 2 Git 3 2.1 Commands to know....................................... 3 3 GDB: The GNU Debugger

More information

Software Engineering Practices. PHY 688: Numerical Methods for (Astro)Physics

Software Engineering Practices. PHY 688: Numerical Methods for (Astro)Physics Software Engineering Practices Class Business Does everyone have access to a Linux or Unix machine to work from? What programming languages do each of you typically use? Software Engineering Practices

More information

Experiences from the Fortran Modernisation Workshop

Experiences from the Fortran Modernisation Workshop Experiences from the Fortran Modernisation Workshop Wadud Miah (Numerical Algorithms Group) Filippo Spiga and Kyle Fernandes (Cambridge University) Fatima Chami (Durham University) http://www.nag.co.uk/content/fortran-modernization-workshop

More information

Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm)

Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm) Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm) Continuous Integration / Continuous Testing Seminary IIC Requirements Java SE Runtime

More information

Continuous integration & continuous delivery. COSC345 Software Engineering

Continuous integration & continuous delivery. COSC345 Software Engineering Continuous integration & continuous delivery COSC345 Software Engineering Outline Integrating different teams work, e.g., using git Defining continuous integration / continuous delivery We use continuous

More information

Review sheet for Final Exam (List of objectives for this course)

Review sheet for Final Exam (List of objectives for this course) Review sheet for Final Exam (List of objectives for this course) Please be sure to see other review sheets for this semester Please be sure to review tests from this semester Week 1 Introduction Chapter

More information

Human-Computer Interaction Design

Human-Computer Interaction Design Human-Computer Interaction Design COGS120/CSE170 - Intro. HCI Instructor: Philip Guo Lab 1 - Version control and HTML (2018-10-03) by Michael Bernstein, Scott Klemmer, Philip Guo, and Sean Kross [Announce

More information

CIS* Programming

CIS* Programming CIS*1300 - Programming CALENDAR DESCRIPTION This course examines the applied and conceptual aspects of programming. Topics may include data and control structures, program design, problem solving and algorithm

More information

Intro to Linux & Command Line

Intro to Linux & Command Line Intro to Linux & Command Line Based on slides from CSE 391 Edited by Andrew Hu slides created by Marty Stepp, modified by Jessica Miller & Ruth Anderson http://www.cs.washington.edu/391/ 1 Lecture summary

More information

Tools for the programming mid-semester projects

Tools for the programming mid-semester projects Contents GIT Quickstart 2 Teamwork 14 StyleCop Quickstart 14 Usage in VS2015 15 Usage in older VS versions 15 DoxyGen Quickstart 17 XML documentations 18 Doxygen 18 Please keep in mind that the remaining

More information

How to set up SQL Source Control The short guide for evaluators

How to set up SQL Source Control The short guide for evaluators GUIDE How to set up SQL Source Control The short guide for evaluators 1 Contents Introduction Team Foundation Server & Subversion setup Git setup Setup without a source control system Making your first

More information

CS354R: Game Technology

CS354R: Game Technology CS354R: Game Technology DevOps and Quality Assurance Fall 2018 What is DevOps? Development Operations Backend facilitation of development Handles local and remote hardware Maintains build infrastructure

More information

This version is generated on October 5, 2008.

This version is generated on October 5, 2008. This version is generated on October 5, 2008. CAYUGA USER MANUAL MINGSHENG HONG 1. OVERVIEW This document describes how to use Cayuga as an end user. We assume familiarity with concepts in Cayuga. A general

More information

MRCP. Installation Manual. Developer Guide. Powered by Universal Speech Solutions LLC

MRCP. Installation Manual. Developer Guide. Powered by Universal Speech Solutions LLC Powered by Universal Speech Solutions LLC MRCP Installation Manual Developer Guide Revision: 39 Last updated: August 28, 2017 Created by: Arsen Chaloyan Universal Speech Solutions LLC Overview 1 Table

More information

Version Control in SAS Enterprise Guide 7.1

Version Control in SAS Enterprise Guide 7.1 Version Control in SAS Enterprise Guide 7.1 Shahriar Khosravi Senior Analyst, Risk Management Risk Capital and Model Development Business Initiatives Winter 2018 Introduction Main Objectives Provide a

More information

LibSerial Documentation

LibSerial Documentation LibSerial Documentation Release 1.0.0rc1 CrayzeeWulf Apr 05, 2018 Contents: 1 Feature Summary 3 2 Description 5 3 Download 7 4 Install 9 5 Tutorial 11 5.1 Opening a Serial Port I/O Stream....................................

More information

SFO17-315: OpenDataPlane Testing in Travis. Dmitry Eremin-Solenikov, Cavium Maxim Uvarov, Linaro

SFO17-315: OpenDataPlane Testing in Travis. Dmitry Eremin-Solenikov, Cavium Maxim Uvarov, Linaro SFO17-315: OpenDataPlane Testing in Travis Dmitry Eremin-Solenikov, Cavium Maxim Uvarov, Linaro What is ODP (OpenDataPlane) The ODP project is an open-source, cross-platform set of APIs for the networking

More information

Having Fun with Social Coding. Sean Handley. February 25, 2010

Having Fun with Social Coding. Sean Handley. February 25, 2010 Having Fun with Social Coding February 25, 2010 What is Github? GitHub is to collaborative coding, what Facebook is to social networking 1 It serves as a web front-end to open source projects by allowing

More information

CptS 360 (System Programming) Unit 3: Development Tools

CptS 360 (System Programming) Unit 3: Development Tools CptS 360 (System Programming) Unit 3: Development Tools Bob Lewis School of Engineering and Applied Sciences Washington State University Spring, 2018 Motivation Using UNIX-style development tools lets

More information

Data Management, Spring 2015: Project #1

Data Management, Spring 2015: Project #1 Advice The assignment description is long, and it is important that you follow the instructions carefully. Be sure to read the entire description before you start implementing. Note that we will be testing

More information

Unit title: Client Side Scripting for Web Applications (SCQF level 7)

Unit title: Client Side Scripting for Web Applications (SCQF level 7) Higher National Unit specification General information Unit code: HF4X 34 Superclass: CE Publication date: July 2016 Source: Scottish Qualifications Authority Version: 01 Unit purpose This Unit is designed

More information

Belle II - Git migration

Belle II - Git migration Belle II - Git migration Why git? Stash GIT service managed by DESY Powerful branching and merging capabilities Resolution of (JIRA) issues directly be map to branches and commits Feature freeze in pre-release

More information

Human-Computer Interaction Design

Human-Computer Interaction Design Human-Computer Interaction Design COGS120/CSE170 - Intro. HCI Instructor: Philip Guo, Lab TA: Sean Kross Lab 1 - Version control and HTML (2017-10-06) by Michael Bernstein, Scott Klemmer, Philip Guo, and

More information

Software Development & Education Center. Java Platform, Standard Edition 7 (JSE 7)

Software Development & Education Center. Java Platform, Standard Edition 7 (JSE 7) Software Development & Education Center Java Platform, Standard Edition 7 (JSE 7) Detailed Curriculum Getting Started What Is the Java Technology? Primary Goals of the Java Technology The Java Virtual

More information

FROM SCRIPT TO PACKAGES. good practices for hassle-free code reuse

FROM SCRIPT TO PACKAGES. good practices for hassle-free code reuse FROM SCRIPT TO PACKAGES good practices for hassle-free code reuse WHAT S THIS TUTORIAL IS ABOUT How to make your code usable by someone else WHO AM I? Contributor to numpy/scipy since 2007 Windows, Mac

More information

ECE 3574: Applied Software Design: Unit Testing using Catch. Chris Wyatt

ECE 3574: Applied Software Design: Unit Testing using Catch. Chris Wyatt ECE 3574: Applied Software Design: Unit Testing using Catch Chris Wyatt The goal of today s meeting it to learn about a very important part of programming, testing. Unit tests Integration tests Testing

More information

6.170 Laboratory in Software Engineering Java Style Guide. Overview. Descriptive names. Consistent indentation and spacing. Page 1 of 5.

6.170 Laboratory in Software Engineering Java Style Guide. Overview. Descriptive names. Consistent indentation and spacing. Page 1 of 5. Page 1 of 5 6.170 Laboratory in Software Engineering Java Style Guide Contents: Overview Descriptive names Consistent indentation and spacing Informative comments Commenting code TODO comments 6.170 Javadocs

More information

J A D E Te s t S u i t e

J A D E Te s t S u i t e J A D E Te s t S u i t e USER GUIDE Last update: 12-January-2005 JADE3.4 Authors: Elisabetta Cortese (TILAB) Giovanni Caire (TILAB) Rosalba Bochicchio (TILAB) JADE - Java Agent DEvelopment Framework is

More information

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform November 8, 2016 1 Introduction The laboratory exercises in this course are to be conducted in an environment that might not be familiar to many of you. It is based on open source software. We use an open

More information

LAT-TD-xxxxx-xx May 21, 2002

LAT-TD-xxxxx-xx May 21, 2002 Document # Date LAT-TD-xxxxx-xx May 21, 2002 Author(s) Supersedes Page 1 of 12 LAT TECHNICAL NOTE System or Sponsoring Office Science Analysis Software Document Title SAS Recommendations for Code Documentation

More information

CS 261 Recitation 1 Compiling C on UNIX

CS 261 Recitation 1 Compiling C on UNIX Oregon State University School of Electrical Engineering and Computer Science CS 261 Recitation 1 Compiling C on UNIX Winter 2017 Outline Secure Shell Basic UNIX commands Editing text The GNU Compiler

More information

xmljson Documentation

xmljson Documentation xmljson Documentation Release 0.1.9 S Anand Aug 01, 2017 Contents 1 About 3 2 Convert data to XML 5 3 Convert XML to data 7 4 Conventions 9 5 Options 11 6 Installation 13 7 Roadmap 15 8 More information

More information

Why Use the Autotools?...xviii Acknowledgments... xx I Wish You the Very Best... xx

Why Use the Autotools?...xviii Acknowledgments... xx I Wish You the Very Best... xx CONTENTS IN DETAIL FOREWORD by Ralf Wildenhues xv PREFACE xvii Why Use the?...xviii Acknowledgments... xx I Wish You the Very Best... xx INTRODUCTION xxi Who Should Read This Book... xxii How This Book

More information

Geant4 Documentation

Geant4 Documentation Geant4 Documentation 1.Current status and types of documentation 2.Process for committing documentation 3.Release schedule should it be more dynamic? 4.Future plans, publicity and outreach Alex Howard,

More information

Dalton/LSDalton Installation Guide

Dalton/LSDalton Installation Guide Dalton/LSDalton Installation Guide Release 2016.0 Dalton/LSDalton developers October 13, 2016 Contents 1 Supported platforms and compilers 1 2 Basic installation 3 2.1 General..................................................

More information

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017 Linux System Management with Puppet, Gitlab, and R10k Scott Nolin, SSEC Technical Computing 22 June 2017 Introduction I am here to talk about how we do Linux configuration management at the Space Science

More information

contribution-guide.org Release

contribution-guide.org Release contribution-guide.org Release August 06, 2018 Contents 1 About 1 1.1 Sources.................................................. 1 2 Submitting bugs 3 2.1 Due diligence...............................................

More information

Python INTRODUCTION: Understanding the Open source Installation of python in Linux/windows. Understanding Interpreters * ipython.

Python INTRODUCTION: Understanding the Open source Installation of python in Linux/windows. Understanding Interpreters * ipython. INTRODUCTION: Understanding the Open source Installation of python in Linux/windows. Understanding Interpreters * ipython * bpython Getting started with. Setting up the IDE and various IDEs. Setting up

More information

cwmon-mysql Release 0.5.0

cwmon-mysql Release 0.5.0 cwmon-mysql Release 0.5.0 October 18, 2016 Contents 1 Overview 1 1.1 Installation................................................ 1 1.2 Documentation.............................................. 1 1.3

More information

Open CASCADE Technology. Building OCCT with WOK CONTENTS

Open CASCADE Technology. Building OCCT with WOK CONTENTS Open CASCADE Technology Building OCCT with WOK CONTENTS 1. INTRODUCTION 2 2. PRE-REQUISITES 2 3. INSTALL BINARY WOK PACKAGE 2 3.1. Windows 2 3.2. Linux 4 3.3. Mac OS X 5 4. INITIALIZE A WORKBENCH 6 5.

More information

swiftenv Documentation

swiftenv Documentation swiftenv Documentation Release 1.3.0 Kyle Fuller Sep 27, 2017 Contents 1 The User Guide 3 1.1 Installation................................................ 3 1.2 Getting Started..............................................

More information

NetCDF Build and Test System. Ed Hartnett, 1/25/8

NetCDF Build and Test System. Ed Hartnett, 1/25/8 NetCDF Build and Test System Ed Hartnett, 1/25/8 Outline NetCDF Repository Building NetCDF Testing NetCDF NetCDF Code Repository We use cvs for netcdf code repository. The cvs repository module is called

More information

COMPUTER SCIENCE LARGE PRACTICAL.

COMPUTER SCIENCE LARGE PRACTICAL. COMPUTER SCIENCE LARGE PRACTICAL Page 45 of 100 SURVEY RESULTS Approx. 1/5 of class responded; statistically significant? The majority of you have substantial experience in Java, and all have at least

More information

Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as

Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as contentious as the text editor This talk tries to address

More information

yaml4rst Documentation

yaml4rst Documentation yaml4rst Documentation Release 0.1.5 Robin Schneider Mar 16, 2017 Contents 1 yaml4rst introduction 3 1.1 Usage................................................... 3 1.2 Features..................................................

More information

Fedora Astronomy. The benefits for astronomical software from integration into Linux distributions. Christian Dersch.

Fedora Astronomy. The benefits for astronomical software from integration into Linux distributions. Christian Dersch. Fedora Astronomy The benefits for astronomical software from integration into Linux distributions Christian Dersch AG Astronomie, Philipps-Universität Marburg June 27, 2018 History of Fedora Astronomy

More information

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved. Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS 1 Introduction MOBILE, SOCIAL & CLOUD ARE RAISING CUSTOMER EXPECTATIONS We need a way to deliver software so fast that our

More information

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015 Git CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015 1 Lecture Goals Present a brief introduction to git You will need to know git to work on your presentations this semester 2 Git

More information

Gearthonic Documentation

Gearthonic Documentation Gearthonic Documentation Release 0.2.0 Timo Steidle August 11, 2016 Contents 1 Quickstart 3 2 Contents: 5 2.1 Usage................................................... 5 2.2 API....................................................

More information

Introduction to Programming Microsoft.NET Applications with Visual Studio 2008 (C#)

Introduction to Programming Microsoft.NET Applications with Visual Studio 2008 (C#) Introduction to Programming Microsoft.NET Applications with Visual Studio 2008 (C#) Course Number: 6367A Course Length: 3 Days Course Overview This three-day course will enable students to start designing

More information

USING GIT FOR AUTOMATION AND COLLABORATION JUSTIN ELLIOTT - MATT HANSEN PENN STATE UNIVERSITY

USING GIT FOR AUTOMATION AND COLLABORATION JUSTIN ELLIOTT - MATT HANSEN PENN STATE UNIVERSITY USING GIT FOR AUTOMATION AND COLLABORATION JUSTIN ELLIOTT - MATT HANSEN PENN STATE UNIVERSITY AGENDA Version control overview Introduction and basics of Git Advanced Git features Collaboration Automation

More information

Multimedia-Programmierung Übung 3

Multimedia-Programmierung Übung 3 Multimedia-Programmierung Übung 3 Ludwig-Maximilians-Universität München Sommersemester 2016 Ludwig-Maximilians-Universität München Multimedia-Programmierung 1-1 Today Ludwig-Maximilians-Universität München

More information

GRACES Data Reduction Cookbook

GRACES Data Reduction Cookbook GRACES Data Reduction Cookbook Prepared by Eder Martioli GRACES Pipeline Team: Eder Martioli, Vinicius Placco, Andre-Nicolas Chene, Lison Malo, Kanoa Withington, Nadine Manset, Claire Moutou. Scientific

More information

Configuration. Monday, November 30, :28 AM. Configuration

Configuration. Monday, November 30, :28 AM. Configuration Configuration 11:28 AM Configuration refers to the overall set of elements that comprise a software product ("configuration items") software components modules internal logical files test stubs and scaffoldings

More information

Poetaster. Release 0.1.1

Poetaster. Release 0.1.1 Poetaster Release 0.1.1 September 21, 2016 Contents 1 Overview 1 1.1 Installation................................................ 1 1.2 Documentation.............................................. 1 1.3

More information

Faculty of Computer Science Institute for System Architecture, Operating Systems Group. Complex Lab Operating Systems 2016 Winter Term.

Faculty of Computer Science Institute for System Architecture, Operating Systems Group. Complex Lab Operating Systems 2016 Winter Term. Faculty of Computer Science Institute for System Architecture, Operating Systems Group Complex Lab Operating Systems 2016 Winter Term Introduction Requirements Basic Operating Systems Know-How Virtual

More information

Archan. Release 2.0.1

Archan. Release 2.0.1 Archan Release 2.0.1 Jul 30, 2018 Contents 1 Archan 1 1.1 Features.................................................. 1 1.2 Installation................................................ 1 1.3 Documentation..............................................

More information

INF 212 ANALYSIS OF PROG. LANGS FUNCTION COMPOSITION. Instructors: Crista Lopes Copyright Instructors.

INF 212 ANALYSIS OF PROG. LANGS FUNCTION COMPOSITION. Instructors: Crista Lopes Copyright Instructors. INF 212 ANALYSIS OF PROG. LANGS FUNCTION COMPOSITION Instructors: Crista Lopes Copyright Instructors. Topics Recursion Higher-order functions Continuation-Passing Style Monads (take 1) Identity Monad Maybe

More information

Scripting Languages Course 1. Diana Trandabăț

Scripting Languages Course 1. Diana Trandabăț Scripting Languages Course 1 Diana Trandabăț Master in Computational Linguistics - 1 st year 2017-2018 Today s lecture Introduction to scripting languages What is a script? What is a scripting language

More information

Github/Git Primer. Tyler Hague

Github/Git Primer. Tyler Hague Github/Git Primer Tyler Hague Why Use Github? Github keeps all of our code up to date in one place Github tracks changes so we can see what is being worked on Github has issue tracking for keeping up with

More information

These steps may include:

These steps may include: Build Tools 1 Build Tools Building a program for a large project is usually managed by a build tool that controls the various steps involved. These steps may include: 1. Compiling source code to binaries

More information

The MPI API s baseline requirements

The MPI API s baseline requirements LASER INTERFEROMETER GRAVITATIONAL WAVE OBSERVATORY - LIGO - CALIFORNIA INSTITUTE OF TECHNOLOGY MASSACHUSETTS INSTITUTE OF TECHNOLOGY Document Type LIGO-T990086-00- E 09/14/1999 The MPI API s baseline

More information

There Should be One Obvious Way to Bring Python into Production. Sebastian Neubauer

There Should be One Obvious Way to Bring Python into Production. Sebastian Neubauer There Should be One Obvious Way to Bring Python into Production Sebastian Neubauer sebastian.neubauer@blue-yonder.com 1 Agenda What are we talking about and why? Delivery pipeline Dependencies Packaging

More information

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

Software Engineering 2 A practical course in software engineering. Ekkart Kindler Software Engineering 2 A practical course in software engineering Quality Management Main Message Planning phase Definition phase Design phase Implem. phase Acceptance phase Mainten. phase 3 1. Overview

More information

Git with It and Version Control!

Git with It and Version Control! Paper CT10 Git with It and Version Control! Carrie Dundas-Lucca, Zencos Consulting, LLC., Cary, NC, United States Ivan Gomez, Zencos Consulting, LLC., Cary, NC, United States ABSTRACT It is a long-standing

More information

What run-time services could help scientific programming?

What run-time services could help scientific programming? 1 What run-time services could help scientific programming? Stephen Kell stephen.kell@cl.cam.ac.uk Computer Laboratory University of Cambridge Contrariwise... 2 Some difficulties of software performance!

More information

Shift Left Testing: are you ready? Live Webinar, Sept 19

Shift Left Testing: are you ready? Live Webinar, Sept 19 Shift Left Testing: are you ready? Live Webinar, Sept 19 Guy Arieli CTO, Experitest 01 What exactly is Shift Left? Agenda 02 03 How Shift Left affects application development & testing organizational structures

More information

Software Systems Design. Version control systems and documentation

Software Systems Design. Version control systems and documentation Software Systems Design Version control systems and documentation Who are we? Krzysztof Kąkol Software Developer Jarosław Świniarski Software Developer Presentation based on materials prepared by Andrzej

More information

2.5. PA QA Software. NISP, NI-SCS Test Readiness Review IPNL, October

2.5. PA QA Software. NISP, NI-SCS Test Readiness Review IPNL, October 2.5. PA QA Software NISP, NI-SCS Test Readiness Review IPNL, October 2016 1 1) PA QA SW approach IPNL DASEIT Acquisition Data DASEIN Quality- Checking HDF5 PA PA PA QA NISP, NI-SCS Test Readiness Review

More information

Version control system (VCS)

Version control system (VCS) Version control system (VCS) Remember that you are required to keep a process-log-book of the whole development solutions with just one commit or with incomplete process-log-book (where it is not possible

More information

Index. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309

Index. object lifetimes, and ownership, use after change by an alias errors, use after drop errors, BTreeMap, 309 A Arithmetic operation floating-point arithmetic, 11 12 integer numbers, 9 11 Arrays, 97 copying, 59 60 creation, 48 elements, 48 empty arrays and vectors, 57 58 executable program, 49 expressions, 48

More information

collective.table Documentation Release 1.0.1

collective.table Documentation Release 1.0.1 collective.table Documentation Release 1.0.1 August 29, 2011 CONTENTS i ii collective.table Documentation, Release 1.0.1 Project title collective.table Latest version 0.3 Project page http://pypi.python.org/pypi/collective.table

More information

SSH Deploy Key Documentation

SSH Deploy Key Documentation SSH Deploy Key Documentation Release 0.1.1 Travis Bear February 03, 2014 Contents 1 Overview 1 2 Source Code 3 3 Contents 5 3.1 Alternatives................................................ 5 3.2 Compatibility...............................................

More information

Motivation was to facilitate development of systems software, especially OS development.

Motivation was to facilitate development of systems software, especially OS development. A History Lesson C Basics 1 Development of language by Dennis Ritchie at Bell Labs culminated in the C language in 1972. Motivation was to facilitate development of systems software, especially OS development.

More information

Darshan Institute of Engineering & Technology for Diploma Studies

Darshan Institute of Engineering & Technology for Diploma Studies CODING Good software development organizations normally require their programmers to follow some welldefined and standard style of coding called coding standards. Most software development organizations

More information

Software Engineering Practices. PHY 604: Computational Methods in Physics and Astrophysics II

Software Engineering Practices. PHY 604: Computational Methods in Physics and Astrophysics II Software Engineering Practices Class Business Our class website has all the lectures and examples: http://bender.astro.sunysb.edu/classes/numerical_methods/ We will use git / github to turn in our homework

More information

7/2/2013 R packaging with Rstudio Topics:

7/2/2013 R packaging with Rstudio Topics: 7/2/2013 R packaging with Rstudio Topics: How to make an R package using RStudio Sharing packages using github or url Tip for speeding up code Using Sweave and RStudio to do 'reproducible research/programming'.

More information

Eigen Tutorial. CS2240 Interactive Computer Graphics

Eigen Tutorial. CS2240 Interactive Computer Graphics CS2240 Interactive Computer Graphics CS2240 Interactive Computer Graphics Introduction Eigen is an open-source linear algebra library implemented in C++. It s fast and well-suited for a wide range of tasks,

More information

introduction to modern c++

introduction to modern c++ introduction to modern c++ Lecture 9 Rémi Géraud April 7, 2016 École Normale Supérieure de Paris Lecture 9 Handling large projects. 2 this lecture You now how to create simple C++ projects Create source

More information

CSE 333 Lecture 1 - Systems programming

CSE 333 Lecture 1 - Systems programming CSE 333 Lecture 1 - Systems programming Hal Perkins Department of Computer Science & Engineering University of Washington Welcome! Today s goals: - introductions - big picture - course syllabus - setting

More information

Python Project Documentation

Python Project Documentation Python Project Documentation Release 1.0 Tim Diels Jan 10, 2018 Contents 1 Simple project structure 3 1.1 Code repository usage.......................................... 3 1.2 Versioning................................................

More information

YumaPro yangdiff-pro Manual

YumaPro yangdiff-pro Manual YANG-Based Unified Modular Automation Tools YANG Module Compare Tool Version 18.10-6 Table Of Contents 1 Preface...3 1.1 Legal Statements...3 1.2 Additional Resources...3 1.2.1 WEB Sites...3 1.2.2 Mailing

More information

L4/Darwin: Evolving UNIX. Charles Gray Research Engineer, National ICT Australia

L4/Darwin: Evolving UNIX. Charles Gray Research Engineer, National ICT Australia L4/Darwin: Evolving UNIX Charles Gray Research Engineer, National ICT Australia charles.gray@nicta.com.au Outline 1. Project Overview 2. BSD on the Mach microkernel 3. Porting Darwin to the L4 microkernel

More information

Aldryn Installer Documentation

Aldryn Installer Documentation Aldryn Installer Documentation Release 0.2.0 Iacopo Spalletti February 06, 2014 Contents 1 django CMS Installer 3 1.1 Features.................................................. 3 1.2 Installation................................................

More information

Operating System Design

Operating System Design Operating System Design Processes Operations Inter Process Communication (IPC) Neda Nasiriani Fall 2018 1 Process 2 Process Lifecycle 3 What information is needed? If you want to design a scheduler to

More information

Practical Programming with R

Practical Programming with R Practical Programming with R Stuart Borrett biol534 Why to write code Bruno Olveira http://nicercode.github.io/blog/2013-04-05-why-nice-code/ Review Lab 1 What were the most challenging Exercises? Why?

More information

DARPA introduction. Joost Westra

DARPA introduction. Joost Westra DARPA introduction Joost Westra Introduction Darpa & Tekkotsu Project work Previous work Practical RoboLab Why Darpa? Dutch ARchitecture Project for Aibos Problems with the old (German) code Creating your

More information

Absolute C++ Walter Savitch

Absolute C++ Walter Savitch Absolute C++ sixth edition Walter Savitch Global edition This page intentionally left blank Absolute C++, Global Edition Cover Title Page Copyright Page Preface Acknowledgments Brief Contents Contents

More information

Cloud platforms T Mobile Systems Programming

Cloud platforms T Mobile Systems Programming Cloud platforms T-110.5130 Mobile Systems Programming Agenda 1. Motivation 2. Different types of cloud platforms 3. Popular cloud services 4. Open-source cloud 5. Cloud on this course 6. Some useful tools

More information

Configuration Management

Configuration Management Configuration Management VIMIMA11 Design and integration of embedded systems Budapest University of Technology and Economics Department of Measurement and Information Systems BME-MIT 2017 Configuration

More information

Python for Earth Scientists

Python for Earth Scientists Python for Earth Scientists Andrew Walker andrew.walker@bris.ac.uk Python is: A dynamic, interpreted programming language. Python is: A dynamic, interpreted programming language. Data Source code Object

More information

Version Control Systems

Version Control Systems Nothing to see here. Everything is under control! September 16, 2015 Change tracking File moving Teamwork Undo! Undo! UNDO!!! What strategies do you use for tracking changes to files? Change tracking File

More information