EasyFlow - v Application Developer Guide
|
|
- Marybeth Dalton
- 5 years ago
- Views:
Transcription
1 EasyFlow - v Application Developer Guide June 23, 2014
2 i 2013 CAMELOT Biomedical Systems Srl. The information in this document is proprietary to CAMELOT. No part of this publication may be reproduced, copied or transmitted in any form or for any purpose without the express prior written permission of CAMELOT. The information contained herein may be changed without prior notice. This document is provided without a warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement. CAMELOT shall have no liability for damages of any kind including without limitation direct, special, indirect, or consequential damages that may result from the use of these materials. This limitation shall not apply in cases of intent or gross negligence. The statutory liability for personal injury and defective products is not affected. Any software coding and/or code lines / strings ( Code ) included in this documentation are only examples and are not intended to be used in a productive system environment. The Code is only intended better explain and visualize the syntax and phrasing rules of certain coding. CAMELOT does not warrant the correctness and completeness of the Code given herein, and CAMELOT shall not be liable for errors or damages caused by the usage of the Code, except if such damages were caused by CAMELOT intentionally or grossly negligent.
3 CONTENTS 1 Contents 1 Introduction What is EasyFlow? Getting Started Requirements Installation Test your installation Using CMake Hello World! Introduction Create the project Write the code CMakeLists.txt HelloWorld class main function Compile the project Test your application Complete Functionalities Handling Input Interruption Points Initialise and Release Resources Where to Go from Here Deploying your app Further information Introduction 1.1 What is EasyFlow? EasyFlow is a software framework meant to simplify the integration of image post-processing applications ("apps") into systems meant for the management and storage of images. We refer to the system integrating the apps as the "host". Within the EasyFlow framework, an application can receive data from the Host, execute a processing task, and send the results back to the Host. As an example, in a radiology department a PACS is the system used to archive all image series acquired with the different modalities. Some of the acquired series may require further processing before they can be reviewed by the radiologist, and this task may be delegated to a separate process on a dedicated server. In this scenario the PACS would play the role of Host, integrating the App doing the actual work on the dedicated server. A similar scenario can be seen in the context of digital pathology. Here again we have systems collecting and archiving whole-slide images from the acquisition device, and often these images may require post-processing before being reviewed by the pathologist. Through EasyFlow image management system could play as Host and delegate the post-processing to apps residing on a separate server.
4 1.2 Getting Started 2 Figure 1: EasyFlow architecture The integration of an app and its host occurs by allowing them to communicate over TCP/IP through a well-defined protocol. Since an app and its host communicate over TCP/IP, this allows for a much wider range of set-ups and configurations. The framework defines: a host-application interaction layer, that handles the interaction between the Host and the Application through web service, and it is hidden to third-party developers; a integration layer, that is used for the rapid development of hosted applications and the integration in hosting systems, and it is the layer exposed to third-party developers. This document shall guide you through the deployment of an application as an EasyFlow app. The examples of this tutorial describe how to write a hosted application program using the integration layer offered by the EasyFlow framework, which takes care of all the necessary communication with the host. Using EasyFlow allows the developer to focus on the logic of the post-processing application. 1.2 Getting Started Requirements The EasyFlow framework will work in both Unix-like and Windows operating systems. It has been developed and tested across different combinations of systems, compilers and hardware platforms including Windows, Linux and Mac OSX on Intel-compatible hardware. It is known to work for the following combination of operating systems and compilers: Windows (XP 32bit, 7/8 32/64bit) with Visual Studio 2008/2010 (both Express and Professional edition) Linux (kernel 2.6.3x/3.x 32/64bit) with GCC 4.6.x Mac OSX ( /64bit) with Apple LLVM 5.x In order to build your own EasyFlow application you will also need to install CMake, a cross-platform and opensource family of software tools designed for managing the build, test and package process of software using a compiler-independent method. CMake can be downloaded at no cost from:
5 1.2 Getting Started 3 You can download binary versions for most of the popular platforms including Windows, Mac OSX and Linux. Alternatively you can download the source code and build CMake on your system. Follow the instructions in the CMake Web page for downloading and installing the software. EasyFlow also depends on the Boost ( and Apache Thrift ( apache.org) libraries. The parts of Boost and Thrift that are required for developing an EasyFlow app are already included in the EasyFlow distribution Installation The EasyFlow framework is shipped in two versions: the Application Developer package; the Host Integration package. Both versions are currently shipped as zip archive files, containing the present guide as well as all that is needed to either develop an EasyFlow App, or to integrate the framework in a Host. This guide only deals with the Application Developer package and the subsequent paragraphs will explain how to use it. For the Host Integration package you have to refer to the Host Integration Guide. To install the Application Developer package simply unzip the archive in the folder of your choice. Once unzipped, the installation folder will contain the following directories: Copyright.txt: the copyright notice. bin: the directory holding auxiliary tools, among them a simple Host to test you apps. include: the directory holding all the header files needed compiling an app. lib: the directory holding all the libraries your application will link to. examples: docs: examples/helloworld - contains the files of the "Hello World" example. docs/tutorials/ - contains the tutorial that you are reading. docs/api_reference/ - contains the doxygen documentation which describes in detail every class and method in the framework. The documentation also contains inheritance and collaboration diagrams and listing of data members Test your installation In order to test the installation, we suggest to build the example app in the examples/helloworld directory using CMake, and test it with the simple Host distributed with the packages. You will find more information in section Compile the project Using CMake For detailed instructions on how to use CMake, refer to the website. Here we give a very short summary to introduce you to its use for building an EasyFlow app. CMake expects a CMakeLists.txt file defining the project you want to build. Typically, in this file you will define which source code files must be built, where the header files are placed, which libraries the executable should be linked to and so on. CMake processes the CMakeLists.txt file, possibly requiring input from the user for
6 2 Hello World! 4 information that it cannot gather automatically, and generates the files needed to build the project (e.g. Makefiles, Visual Studio solutions, XCode projects). The CMake program can be used both through textual (only UNIX-like systems) and graphical (on all systems) user interface. In both cases, you will be asked to provide the path to the folder where you have installed the Application Developer package. To use the TUI, open a terminal and change the current working directory to the folder where you want to build your project. The build directory can be the same source directory (what is called an in-source build) or a specially created directory. Then you can type the "ccmake PATH_TO_PROJ" command, where you should replace P- ATH_TO_PROJ with the path to the project directory holding the CMakeLists.txt file. To use the GUI, run the cmake-gui program and provide the build folder and the project folder. 2 Hello World! 2.1 Introduction In this section we will describe how to write your first EasyFlow app. The goal of this example is to guide you in writing a simple EasyFlow app which stores on disk a text file containing the "Hello World!" line. Neither input files nor input parameters will be used in this example. All the sources and files related to this example are present in the installation archive inside the "Examples/Hello- World" folder. 2.2 Create the project First of all, before starting writing the code, you need to create and set up properly the new project that will contain the example. The simplest way to create a new project with EasyFlow is to create a new folder somewhere in your disk and create four files inside it: A CMakeLists.txt file that will be used by CMake to generate a Makefile (if you are using UNIX-like systems) or a Visual Studio solution (if you are using Windows). A source file with the main function that allows the example class to start execution. The header and source files with the implementation of the C++ class doing the actual work. The details of these files are described in the following section. Once all the files are in your directory, you can run CMake in order to configure your project. 2.3 Write the code CMakeLists.txt The file contains the following lines: CMAKE_MINIMUM_REQUIRED(VERSION 2.8) PROJECT(HelloWorld) FIND_PACKAGE(EasyFlowApp) INCLUDE_DIRECTORIES( $EASYFLOW_APP_INCLUDE_DIR ) SET( HDRS HelloWorld.h )
7 2.3 Write the code 5 SET( SRCS HelloWorld.cpp ) ADD_EXECUTABLE(helloWorld main.cpp $SRCS $HDRS) TARGET_LINK_LIBRARIES(helloWorld $EASYFLOW_APP_LIBRARIES) The first line sets the minimum required version of CMake for the current project. If the current version of CMake is lower than that required it will stop processing the project and report an error. The second line defines the name of your project as it will appear in Visual Studio (it will have no effect under UNIX-like systems). The FIND_PACKAGE command deals with setting both the $EASYFLOW_APP_INCLUDE_DIR and the $EASYFLOW_APP_LIBRARIES variables. In order to find the right paths, it will require the path of the Easy- Flow App installation, which should be provided via TUI/GUI. The INCLUDE_DIRECTORIES adds the found directory to those the compiler uses to search for include files. Using the SET command, we specify the header and the source files of the class that will contain the code of our example. The ADD_EXECUTABLE command defines as its first argument the name of the executable that will be produced as result of the building of this project. The remaining arguments of ADD_EXECUTABLE are the names of the source files to be compiled and linked. Finally, in the TARGET_LINK_LIBRARIES command we specify the EasyFlow library which will be linked against this project HelloWorld class In order to create an App, a class must be derived from BaseApp, and some of its methods must be reimplemented. The file HelloWorld.h contains the declaration of the derived class: #ifndef HELLOWORLD_H #define HELLOWORLD_H #include "App/BaseApp.h" #include "Interfaces/DataExchange_types.h" #include <string> #include <vector> class HelloWorld : public BaseApp public: HelloWorld(std::string addr, int port, int http_port, std::string host_addr, int host_port, std::string doc_root, std::string ext_addr); bool inittask(); void exectask(const std::map< std::string, std::vector<apphost::objectlocator> >& input, const std::vector<std::string>& inputparams, apphost::uri outputlocation, std::vector<apphost::uri>& results); bool releasetask(); protected: void setpreferredprotocols(); ; #endif//helloworld_h First we include the BaseApp class header. Then, we declare the HelloWorld class, derived from BaseApp. Its constructor takes as input the same arguments needed by the constructor of the superclass. Furthermore, we declare all the methods that we need to reimplement: exectask is the core method of the class, and it should implement the processing task; inittask is a method called before the execution of the task and used to initialise any structure that does not depend on the input;
8 2.3 Write the code 6 releasetask is a method called after the execution of the task to release any resource allocated during the task execution; setpreferredprotocols is a method used to define which protocols should be preferred for transferring data between app and host. The file helloworld.cpp contains the definition of the class. In order to create the example class, you have to include the helloworld.h header previously described. In this example, you must also include the <fstream> header, required to create and store on disk the text file containing the "Hello World!" line. #include "HelloWorld.h" #include <fstream> Subsequently, you must implement the class constructor calling the superclass constructor in its initialization list. Since this is a simple example, you don t need to initilize and release anything: so both inittask and release- Task methods are implemented to only print (on standard output) a log string. HelloWorld::HelloWorld(std::string addr, int port, int http_port, std::string host_addr, int host_port, std::string doc_root, std::string ext_addr) : BaseApp(addr, port, http_port, host_addr, host_port, doc_root, ext_addr ) bool HelloWorld::initTask() std::cout << "A: Preparing for task" << std::endl; return true; bool HelloWorld::releaseTask() std::cout << "A: Releasing task" << std::endl; return true; The core of the class lies on the exectask. Its arguments are a list of input files, a list of input parameters (both not used in this example), the URI of where the output should be stored and a list of output files. The first three arguments will be provided by the host, while the last will be written in output by the method. In this implementation, we store in the local output folder a text file with the single "Hello World!" string written inside it. Note that to perform this operation, we need to call the auxiliary method buildoutputuris: this method builds the URI to return to the host and helps you to get the local output folder (stored inside the m_outfullpaths field). Before calling this method, we have to clear and populate the m_outfilenames field pushing the filename of the output result; void HelloWorld::execTask(const std::map< std::string, std::vector<objectlocator> >& input, const std::vector<std::string>& inputparams, URI outputlocation, std::vector<uri>& results) std::cout << "A: executing the task" << std::endl; m_outfilenames.clear(); m_outfilenames.push_back("output.txt"); buildoutputuris(outputlocation, results); std::ofstream ofs; ofs.open(m_outfullpaths[0].c_str()); ofs << "Hello World!" << std::endl; ofs.close(); Finally, we find the implementation of the setpreferredprotocols method, which sets the preferred protocols for transferring data between app and host. The protocols are inserted in order of preference into a list. The Host selects the most appropriate protocol and uses it in setting up the resources and generating the URI returned to the app. An EasyFlow app shall at least support both the http: and the file: protocols). void HelloWorld::setPreferredProtocols() m_preferredprotocols.clear(); m_preferredprotocols.push_back("file://"); m_preferredprotocols.push_back("
9 2.4 Compile the project main function This file contains the code of the main function: #include "HelloWorld.h" void print_help_usage() std::cout << "\nhelloworld" << std::endl; std::cout << "usage: app <app_address> <app_thrift_port> <app_http_port> <host_address> <host_thrift_port> <app_doc_root> <app_ext_address>" << std::endl; int main(int argc, char** argv) std::string app_address = ""; int app_thrift_port = 0; int app_http_port = 0; std::string host_address = ""; int host_thrift_port = 0; std::string app_doc_root = ""; std::string app_ext_address = ""; if (argc == 8) app_address = argv[1]; app_thrift_port = atoi(argv[2]); app_http_port = atoi(argv[3]); host_address = argv[4]; host_thrift_port = atoi(argv[5]); app_doc_root = argv[6]; app_ext_address = argv[7]; else print_help_usage(); return 0; HelloWorld hello(app_address, app_thrift_port, app_http_port, host_address, host_thrift_port, app_doc_root, app_ext_address); hello.start(); After including the header with the declaration of the HelloWorld class, we must manage the input arguments: IP address or domain (host name) of the applications; TCP port that the application web service will listen to; TCP port that the application http server will listen to; IP address or domain (host name) of the host; TCP port that the host web service will listen to; Path to the application http server document root. In order to define our hosted application, we declare an instance of the HelloWorld class, passing to its constructor the input arguments. Now we are ready to start our hosted application calling its method start. At this point you have successfully created your first simple EasyFlow app. 2.4 Compile the project After writing the code you need to compile the project in order to use your first simple EasyFlow app. To compile you have to use the file generated by CMake (e.g. Makefiles, Visual Studio solutions, XCode projects) and the appropriate tools/commands. On Visual Studio be sure to select the build configuration (e.g. Debug, Release) properly depending on the configuration of the libraries shipped with the package.
10 2.5 Test your application Test your application In order to test your application you need to write a description file that will be used as interface to the Host. For further details read the Deploying your app section. In this section we will guide you in writing a description file suitable for the "HelloWorld" example. Here we can use a simple description file in which we don t need to specify both the "inputs" and "parameters" fields: "programpath": "<Path to HelloWorld executable>", "programargs": [ "localhost", "localhost", 9090, "<Path to the application http server document root>" ], "address" : "localhost", "name" : "HelloWorld App", "description" : "HelloWorld App Example (file protocol)", "inputs" : [], "outputs" : [ "name": "output", "description" : "text file", "supportedmimetypes" : [ "text/plain" ], "supportedmodalities" : [] ], "parameters" : [] The application can be tested using the simple Host distributed with the package: create a folder to be used as the Host http server document root; open the file bin/hostgui-settings.ini: check the port settings to be sure that there is no conflict with other running applications; set the path to the folder to be used as the Host http server document root; start the Host (bin/hostgui) and load the settings file; load the app JSON file by clicking on the "Load App Description File" button; (optionally) check that the app has been started by looking for a corresponding process; choose the output folder by selecting the "Output" tab and by clicking the "Search" button; start the task by clicking on the button "Start"; check that the file output.txt has been created, and the content is correct. Alternatively the application can be tested using both the Host and the AppStarter RESTful web service distributed with the package: create a folder to be used as the AppStarter http server document root; copy inside it the JSON file of the HelloWorld application; open the file bin/appstarter-settings.ini: check the port settings to be sure that there is no conflict with other running applications; set the path to the folder to be used as the AppStarter http server document root; open a console and start the AppStarter (bin/appstarter.exe) passing the settings file as input argument; create a folder to be used as the Host http server document root; open the file bin/hostgui-settings.ini:
11 3 Complete Functionalities 9 check the port settings to be sure that there is no conflict with other running applications; set the path to the folder to be used as the Host http server document root; start the host (bin/hostgui) and load the settings file; get the applications catalog by clicking the "Get the Apps Catalog" button; (if the operation is completed successfully the "Register an App" button will be enabled); click the "Register an App" button to display a dialog window with the list of all available applications (in this case there will be only one application); select the application from the list; (optionally) check that the app has been started by looking for a corresponding process; choose the output folder by selecting the "Output" tab and by clicking the "Search" button; start the task by clicking on the button "Start"; check that the file output.txt has been created, and the content is correct. The Host program shipped with this package is written using the QT toolkit. The package does not distribute any libraries of the QT toolkit, so in order to use the Host you have to download the QT SDK version 4.8.x from http- ://qt-project.org/downloads. 3 Complete Functionalities 3.1 Handling Input Your application can receive from the host two types of input: files and parameters. Both information are passed to your application as arguments of exectask, first (input) and second (inputparams) respectively. The parameters are all stored as strings, and it is your responsibility to convert the string to the appropriate representation. In the following example, we convert the parameters needed for an image registration task. Some are converted to integer, others to float or boolean: RegParams params; params.numberofhistogrambins = atoi(inputparams[0].c_str()); params.numberofspatialsamples = atoi(inputparams[1].c_str()); params.useexplicitpdfderivatives = inttobool(atoi(inputparams[2].c_str())); params.initialangle = atof(inputparams[3].c_str()); params.backgroundgraylevel = atoi(inputparams[4].c_str()); The input argument to exectask stores map of lists of ObjectLocators objects. Local copies of the input files can be retrieved by accessing the m_infilepaths field after setting the m_indir field and calling either the buildinputfiles or the exectask method of the base class. Both method takes as arguments the input variable. The difference between the two methods is that the latter also manages the output: in fact this method internally calls both the buildinputfiles and the buildoutputuris methods. The m_infilepaths is a map which keys will correspond to the names of the input objects defined inside the.json file. Inside the m_in- Dir field we must specify a path to a local directory (relative to the application http server document root) where the files should be stored if using the http protocol; otherwise if we are using the file protocol the location its already defined in the URI field specified inside the ObjectLocator objects: m_indir = "input"; BaseApp::execTask(input, inputparams, outputlocation, results); //buildinputfiles(input); //buildoutputuris(outputlocation, results);
12 3.2 Interruption Points Interruption Points EasyFlow provides a mechanism for the Host to cancel a task currently executed by an app. This is implemented by adding interruption points to the processing code. We show the use of interruption points in the following example. This code consists in a infinite while loop that calls the boost::this_thread::interruption_point() function inside its body. void interruptionpointstest() int i = 0; while (true) std::cout << i << " "; i++; // cancel task test: put an interuption_point boost::this_thread::interruption_point(); 3.3 Initialise and Release Resources During the execution of a task it is common to allocate new resources (in memory and on disk), and it is important to release all the resources used by a task when it is completed or canceled. To the aim of managing and keeping track of the resources used, the BaseApp class provides three methods: inittask, releasetask and register- UsedFiles. The user may implement the inittask method in order to initialize any resource before execution of the task. The method is called before exectask is called. Any resource (in-memory objects or files) other than the output files that is allocated by inittask or exectask must be deallocated in releasetask, and it is your responsibility to implement releasetask accordingly. EasyFlow will take care of the output files once the Host has retrieved them. As an example, the following implementation of the method deletes the extra local files that the task generates, in addition to the output file. The application kept track of such files and stored them in m_maskimgspath. bool Application::releaseTask() std::cout << "A: Releasing task" << std::endl; std::vector<std::string>::const_iterator cit = m_maskimgspath.begin(); for(; cit!= m_maskimgspath.end(); cit++) boost::filesystem::path filepath = boost::filesystem::path((*cit)); if (boost::filesystem::exists(filepath)) boost::filesystem::remove(filepath); //boost::filesystem::path httpworkitemdir = boost::filesystem::path(m_doc_root) / boost::filesystem::path(m_workitemuuid); //if (!boost::filesystem::exists(httpworkitemdir)) // boost::filesystem::remove_all(httpworkitemdir); return true; Finally, in order to keep track of disk usage, the application should register all the local files is using. To this aim call the BaseApp::registerUsedFiles method, either passing as argument a string or a list of strings; in both cases the strings must represent file paths. In this example we register both the output result and the two mask images. registerusedfiles(m_maskimgspath); 4 Where to Go from Here
13 4.1 Deploying your app Deploying your app In order to deploy your application you need to write a description file that will be used as interface to the Host. Thanks to this file, the application will be registered to the Host, adding it to its pool of available applications and setting up all the parameters needed both to start the communication between application and host and to execute a particular task assigned to the application. In general an application can have more than one description files (i.e. one per task) that may be stored locally, on remote servers providing the services, or on a public "marketplace". The description files and the applications may also be on different locations. The description file must be in JSON format, with the following structure: Path to the application executable. "programpath": String, Input arguments needed by the application, respectively: IP address or domain (host name) of the application web service and http server IP address or domain (host name) of the host web service and http server TCP port of the host web service server Path to the application http server document root Other arguments if needed "programargs": [ String, String, Int, String,... ], IP address or domain (host name) of the application web service and http servers. "address" : String, Name of the task to be executed "name" : String, Description of the task to be executed "description" : String, List of structures providing specific information for each input passed to the application, respectively: Name of the input Description of the input List of MIME types supported by the application for the input List of modalities supported by the application for the input Flag indicating if the input is composed of one or more files "inputs" : [ "name" : String, "description" : String, "supportedmimetypes" : [ MimeType,... ], "supportedmodalities" : [ String,... ], "single" : Bool,... ],
14 4.2 Further information 12 List of structures providing specific information for each output returned by the application, respectively: Name of the output Description of the output List of MIME types supported by the application for the output List of modalities supported by the application for the output "outputs" : [ "name" : String, "description" : String, "supportedmimetypes" : [ MimeType,... ], "supportedmodalities" : [ String,... ],... ], List of structures providing specific information for each parameter required by the application, respectively: Description of the parameter Type of the parameter (possible values: char, string, bool, int, float, double) Minimum value allowed for the parameter Maximum value allowed for the parameter Default value of the parameter "parameters" : [ "description" : String, "type" : String, "min" : String, "max" : String, "defaultvalue" : String,... ] For an example of a compiled description file see the Compile the project section. 4.2 Further information Further information on EasyFlow can gained from the source code reference HTML documentation, generated by Doxygen. It can be found in docs/api_reference.
Introduc)on to CMake. Ben Thomas.
Introduc)on to CMake Ben Thomas b.a.thomas@ucl.ac.uk 1 Overview What is CMake? "Hello World!" demo Package management CCP SuperBuild CTest and CPack 2 What is CMake? h#p://www.cmake.com CMake is an open-source,
More informationCE221 Programming in C++ Part 1 Introduction
CE221 Programming in C++ Part 1 Introduction 06/10/2017 CE221 Part 1 1 Module Schedule There are two lectures (Monday 13.00-13.50 and Tuesday 11.00-11.50) each week in the autumn term, and a 2-hour lab
More informationTutorial on text transformation with pure::variants
Table of Contents 1. Overview... 1 2. About this tutorial... 1 3. Setting up the project... 2 3.1. Source Files... 4 3.2. Documentation Files... 5 3.3. Build Files... 6 4. Setting up the feature model...
More informationPetaLinux SDK User Guide. Application Development Guide
PetaLinux SDK User Guide Notice of Disclaimer The information disclosed to you hereunder (the "Materials") is provided solely for the selection and use of Xilinx products. To the maximum extent permitted
More informationewon Flexy JAVA J2SE Toolkit User Guide
Application User Guide ewon Flexy JAVA J2SE Toolkit User Guide AUG 072 / Rev. 1.0 This document describes how to install the JAVA development environment on your PC, how to create and how to debug a JAVA
More informationQt Essentials - Fundamentals of Qt Module
Qt Essentials - Module Training Course Visit us at http://qt.digia.com Produced by Digia Plc. Material based on Qt 5.0, created on September 27, 2012 Digia Plc. The Story of Qt Developing a Hello World
More informationHow to install and build an application
GEANT4 BEGINNERS COURSE GSSI, L Aquila (Italy) 12 nd May 2014 How to install and build an application tutorial course Outline Supported platforms & compilers Required software Where to download the packages
More informationSORRENTO MANUAL. by Aziz Gulbeden
SORRENTO MANUAL by Aziz Gulbeden September 13, 2004 Table of Contents SORRENTO SELF-ORGANIZING CLUSTER FOR PARALLEL DATA- INTENSIVE APPLICATIONS... 1 OVERVIEW... 1 COPYRIGHT... 1 SORRENTO WALKTHROUGH -
More informationLab 1: First Steps in C++ - Eclipse
Lab 1: First Steps in C++ - Eclipse Step Zero: Select workspace 1. Upon launching eclipse, we are ask to chose a workspace: 2. We select a new workspace directory (e.g., C:\Courses ): 3. We accept the
More informationPUBLIC Rapid Deployment Guide
SAP Data Services Document Version: 4.2 Support Package 8 (14.2.8.0) 2017-01-18 PUBLIC Content 1 Introduction.... 3 1.1 Documentation set for SAP Data Services....3 2 Deployment environment requirements....
More informationSAP Financial Consolidation 10.1, starter kit for IFRS, SP7
SAP Financial Consolidation 10.1, starter kit for IFRS, SP7 Installation guide Copyright 2018 SAP BusinessObjects. All rights reserved. SAP BusinessObjects and its logos, BusinessObjects, Crystal Reports,
More informationDownload, Install and Setup the Linux Development Workload Create a New Linux Project Configure a Linux Project Configure a Linux CMake Project
Table of Contents Download, Install and Setup the Linux Development Workload Create a New Linux Project Configure a Linux Project Configure a Linux CMake Project Connect to Your Remote Linux Computer Deploy,
More informationCAAM 420 Daily Note. Scriber: Qijia Jiang. Date: Oct.16. Project 3 Due Wed 23.Oct. Two parts: debug code and library exercise.
CAAM 420 Daily Note Scriber: Qijia Jiang Date: Oct.16 1 Announcement Project 3 Due Wed 23.Oct. Two parts: debug code and library exercise. 2 Make Convention Make syntax for library directories and library
More informationPRINCIPLES OF OPERATING SYSTEMS
PRINCIPLES OF OPERATING SYSTEMS Tutorial-1&2: C Review CPSC 457, Spring 2015 May 20-21, 2015 Department of Computer Science, University of Calgary Connecting to your VM Open a terminal (in your linux machine)
More informationIPNexus Server Secure Instant Messaging & Integrated Collaboration
IPNexus Server Secure Instant Messaging & Integrated Collaboration Version 1.5 Installation & Setup Guide DOC00023 Rev. 1.0 01.03 VCON IPNexus Server Installation & Setup Guide 1 2003 VCON Ltd. All Rights
More informationHow to install and build an application
GEANT4 BEGINNERS COURSE GSSI, L Aquila (Italy) 6-10 July 2015 How to install and build an application tutorial course Outline Supported platforms & compilers Required software Where to download the packages
More informationHow to install and build an application
GEANT4 BEGINNERS COURSE GSSI, L Aquila (Italy) 27-30 June 2016 How to install and build an application tutorial course Outline Supported platforms & compilers Required software Where to download the packages
More informationEclipse CDT Tutorial. Eclipse CDT Homepage: Tutorial written by: James D Aniello
Eclipse CDT Tutorial Eclipse CDT Homepage: http://www.eclipse.org/cdt/ Tutorial written by: James D Aniello Hello and welcome to the Eclipse CDT Tutorial. This tutorial will teach you the basics of the
More informationLab 1: Introduction to C++
CPSC 221, Jan-Apr 2017 Lab 1 1/5 Lab 1: Introduction to C++ This is an introduction to C++ through some simple activities. You should also read the C++ Primer in your textbook, and practice as much as
More informationKnapSac Windows Server User's Guide
KnapSac Windows Server User's Guide Table of Contents KnapSac Server for WIndows... 3 Introduction... 3 Windows Server... 3 License File... 5 License File System ID... 5 License File Options... 5 Server
More informationUNic Eclipse Mini Tutorial (Updated 06/09/2012) Prepared by Harald Gjermundrod
Page 1 of 19 UNic Eclipse Mini Tutorial (Updated 06/09/2012) Prepared By: Harald Gjermundrod Table of Contents 1 EASY INSTALLATION... 2 1.1 DOWNLOAD... 2 1.2 INSTALLING... 2 2 CUSTOMIZED INSTALLATION...
More informationMy First Command-Line Program
1. Tutorial Overview My First Command-Line Program In this tutorial, you re going to create a very simple command-line application that runs in a window. Unlike a graphical user interface application where
More informationCMake & Ninja. by István Papp
CMake & Ninja by István Papp istvan.papp@ericsson.com Hello & Disclaimer I don t know everything (surprise!), if I stare blankly after a question, go to https://cmake.org/ Spoiler alert: or https://ninja-build.org/
More informationGoals for this lecture. Lecture 4 Getting Started with ITK! Getting help. Assignments. Assignments, cont. Grading of assignments
Goals for this lecture Lecture 4 Getting Started with ITK! Methods in Medical Image Analysis - Spring 2018 16-725 (CMU RI) : BioE 2630 (Pitt) Dr. John Galeotti Compile, compile, compile Learn how to use
More informationPROGRAMMING IN C++ CVIČENÍ
PROGRAMMING IN C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com REQUIREMENTS FOR COURSE CREDIT Basic requirements
More informationIMSL C Numerical Library
IMSL C Numerical Library Getting Started Guide for Windows A Technical Guide by Rogue Wave Software. Rogue Wave Software 5500 Flatiron Parkway, Suite 200 Boulder, CO 80301, USA www.roguewave.com IMSL C
More informationKINGSTAR 3.2. SOFT PLC RUNTIME INSTALLATION AND USER GUIDE KS-DOC-x R3
KINGSTAR 3.2 SOFT PLC RUNTIME INSTALLATION AND USER GUIDE KS-DOC-x64-0021-R3 Copyright 1996-2017 by All rights reserved. No part of this document may be reproduced or transmitted in any form or by any
More informationENERGY 211 / CME 211. Evolution
ENERGY 211 / CME 211 Lecture 2 September 24, 2008 1 Evolution In the beginning, we all used assembly That was too tedious, so a very crude compiler for FORTRAN was built FORTRAN was still too painful to
More informationSwift. Introducing swift. Thomas Woodfin
Swift Introducing swift Thomas Woodfin Content Swift benefits Programming language Development Guidelines Swift benefits What is Swift Benefits What is Swift New programming language for ios and OS X Development
More informationCMake, an overview. D. Arrivault 1. 24th November, 2014 / Talep presentation. Aix Marseille Université. CMake, an overview.
CMake, an overview. D. Arrivault 1 1 Laboratoire d Excellence Archimède Aix Marseille Université 24th November, 2014 / Talep presentation Outline Credits Build sytems What problems does it solve? The good
More informationCMPT 300. Operating Systems. Brief Intro to UNIX and C
CMPT 300 Operating Systems Brief Intro to UNIX and C Outline Welcome Review Questions UNIX basics and Vi editor Using SSH to remote access Lab2(4214) Compiling a C Program Makefile Basic C/C++ programming
More informationAW-HE40 / HE65 Firmware Update Procedure
AW-HE40 / HE65 Firmware Update Procedure Please be sure to read this first. The update of AW-HE40/ HE65 camera is performed via a network from Web setting screen on PC. There might be accidents in the
More informationZynq-7000 Platform Software Development Using the ARM DS-5 Toolchain Author: Simon George and Prushothaman Palanichamy
Application Note: Zynq-7000 All Programmable SoC XAPP1185 (v1.0) November 18, 2013 Zynq-7000 Platform Software Development Using the ARM DS-5 Toolchain Author: Simon George and Prushothaman Palanichamy
More informationAndroid NDK. Federico Menozzi & Srihari Pratapa
Android NDK Federico Menozzi & Srihari Pratapa Resources C++ CMake https://cmake.org/cmake-tutorial/ http://mathnathan.com/2010/07/getting-started-with-cmake/ NDK http://www.cplusplus.com/doc/tutorial/
More informationHow to build Simbody 2.2 from source on Windows
How to build Simbody 2.2 from source on Windows Michael Sherman, 30 Mar 2011 (minor revision 27 July 2011) Simbody 2.2 was re-engineered to be much easier to build from source than previous releases. One
More informationProfessor Terje Haukaas University of British Columbia, Vancouver C++ Programming
C++ Programming C++ code is essentially a collection of statements terminated by a semicolon, such as (spaces not needed): a = b + c; Most C++ code is organized into header files and cpp files, i.e., C++
More informationDirect Memory Access. Lecture 2 Pointer Revision Command Line Arguments. What happens when we use pointers. Same again with pictures
Lecture 2 Pointer Revision Command Line Arguments Direct Memory Access C/C++ allows the programmer to obtain the value of the memory address where a variable lives. To do this we need to use a special
More informationAN 834: Developing for the Intel HLS Compiler with an IDE
AN 834: Developing for the Intel HLS Compiler with an IDE Subscribe Send Feedback Latest document on the web: PDF HTML Contents Contents 1 Developing for the Intel HLS Compiler with an Eclipse* IDE...
More informationHow to Use Definitions in Rules Composer
How to Use Definitions in Rules Composer Applies to: SAP NetWeaver Business Rules Management. For more information, visit the Business Rules Management homepage. Summary This tutorial helps you work with
More informationIntel Integrated Native Developer Experience 2015 Build Edition for OS X* Installation Guide and Release Notes
Intel Integrated Native Developer Experience 2015 Build Edition for OS X* Installation Guide and Release Notes 24 July 2014 Table of Contents 1 Introduction... 2 1.1 Product Contents... 2 1.2 System Requirements...
More informationMODULE 2: CREATE A DECISION TABLE USING RULES COMPOSER (BRM)
SOA EXPERIENCE WORKSHOP MODULE 2: CREATE A DECISION TABLE USING RULES COMPOSER (BRM) Exercises / Solutions SAP NETWEAVER PRODUCT MANAGEMENT SOA SOA EXPERIENCE WORKSHOP 1 Creating a decision table using
More informationIntegrate a Forum into a Collaboration Room
How-to Guide SAP NetWeaver 04 How To Integrate a Forum into a Collaboration Room Version 1.00 May 2007 Applicable Releases: SAP NetWeaver 04 SPS20 Copyright 2007 SAP AG. All rights reserved. No part of
More informationC++ Runtime Environment Programming Guide
C++ Runtime Environment Programming Guide Contents Introduction 3 Organization of This Document 3 Overview of the C++ Runtime Environment 4 Targeting Mac OS X v10.3.8 and Earlier 4 Targeting Mac OS X v10.3.9
More informationSupported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 10.1.p02)
Supported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 10.1.p02) Using CMake Building a Geant4 application with CMake Example of a Geant4
More informationHUNT ENGINEERING HeartConf HEART connection configuration tool
HUNT ENGINEERING Chestnut Court, Burton Row, Brent Knoll, Somerset, TA9 4BP, UK Tel: (+44) (0)1278 760188, Fax: (+44) (0)1278 760199, Email: sales@hunteng.co.uk http://www.hunteng.co.uk http://www.hunt-dsp.com
More informationMultimedia-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 informationTarget Definition Builder. Software release 4.20
Target Definition Builder Software release 4.20 July 2003 Target Definition Builder Printing History 1 st printing December 21, 2001 2 nd printing May 31, 2002 3 rd printing October 31, 2002 4 th printing
More informationLecture 2, September 4
Lecture 2, September 4 Intro to C/C++ Instructor: Prashant Shenoy, TA: Shashi Singh 1 Introduction C++ is an object-oriented language and is one of the most frequently used languages for development due
More informationRTX 8.0 Installation Guide
RTX 8.0 Installation Guide Copyright 1996-2007 by Ardence, a Citrix Company. All rights reserved. No part of this document may be reproduced or transmitted in any form or by any means, graphic, electronic,
More informationAW-UE70 Firmware Update Procedure
Firmware Update Procedure Please be sure to read this first. Update Procedure March 2016. The update of camera is performed via a network from Web setting screen on PC. There might be accidents in the
More informationProgressBar Abstract
Doc type here 1(21) ProgressBar Abstract The WireFlow progressbar module is an easy way to add progress bars to an application. It is easy to customize the look of the displayed progress window, since
More informationMali Offline Compiler User Guide
Mali Offline Compiler 6.0.0 User Guide ARM Limited 2017 Introduction 2 Contents 3 Contents Chapter 1: Introduction... 5 Overview... 6 Installation Package... 6 This Release...6 Chapter 2: Installation...
More informationIntroduction to C ++
Introduction to C ++ Thomas Branch tcb06@ic.ac.uk Imperial College Software Society October 18, 2012 1 / 48 Buy Software Soc. s Free Membership at https://www.imperialcollegeunion.org/shop/ club-society-project-products/software-products/436/
More informationCommon Misunderstandings from Exam 1 Material
Common Misunderstandings from Exam 1 Material Kyle Dewey Stack and Heap Allocation with Pointers char c = c ; char* p1 = malloc(sizeof(char)); char** p2 = &p1; Where is c allocated? Where is p1 itself
More informationSAM4 Reset Controller (RSTC)
APPLICATION NOTE AT06864: SAM4 Reset Controller (RSTC) ASF PROGRAMMERS MANUAL SAM4 Reset Controller (RSTC) This driver for SAM devices provides an interface for the configuration and management of the
More informationApplication Note: AN00152 xscope - Bi-Directional Endpoint
Application Note: AN00152 xscope - Bi-Directional Endpoint This application note shows how to create a simple example which uses the XMOS xscope application trace system to provide bi-directional communication
More informationVisual Composer Build Process
Applies to: Visual Composer for Composition Environment 7.1 Summary This paper explains how Visual Composer builds & creates its applications, and what are the dependencies and naming consideration a modeler
More information82V391x / 8V893xx WAN PLL Device Families Device Driver User s Guide
82V391x / 8V893xx WAN PLL Device Families Device Driver Version 1.2 April 29, 2014 Table of Contents 1. Introduction... 1 2. Software Architecture... 2 2.1. Overview... 2 2.2. Hardware Abstraction Layer
More informationArmide Documentation. Release Kyle Mayes
Armide Documentation Release 0.3.1 Kyle Mayes December 19, 2014 Contents 1 Introduction 1 1.1 Features.................................................. 1 1.2 License..................................................
More informationHow to Translate a Visual Composer Model Part I
How to Translate a Visual Composer Model Part I Applies to: SAP NetWeaver Visual Composer. Summary This How To guide is the first part in a series of guides which explain how to create and maintain translations
More information1.1 Introduction. 12c (12.1.3)
Oracle Data Integrator Getting Started 12c (12.1.3) E57393-01 March 2015 This document provides instructions on how to install the Oracle Data Integrator (ODI) 12c Getting Started Virtual Machine (VM).
More informationReport.doc General design overview of the software Manual.doc How to use the software
A1. Structure of the Distributed Files A1.1 Documentation Software Documentation Report.doc General design overview of the software Manual.doc How to use the software ehttp/ API Documentation o HTML/ index.html
More informationHow to Use Other Conditions in Decision Tables in Rules Composer
How to Use Other Conditions in Decision Tables in Rules Composer Applies to: SAP NetWeaver Business Rules Management. For more information, visit the Business Rules Management homepage. Summary This tutorial
More informationBusiness Objects Integration Scenario 2
SAP AG May 2010 - Prerequisites Abstract This presentation provides a step by step description how to create an Xcelsius dashboard based on a BI Query (using the SAP NetWeaver BW connection). Prerequisites
More informationHow To Integrate the TinyMCE JavaScript Content Editor in Web Page Composer
SAP NetWeaver How-To Guide How To Integrate the TinyMCE JavaScript Content Editor in Web Page Composer Applicable Releases: Portal for SAP NetWeaver 7.3 Version 1.0 April 2011 Copyright 2011 SAP AG. All
More informationdisspcap Documentation
disspcap Documentation Release 0.0.1 Daniel Uhricek Dec 12, 2018 Installation 1 Requirements 3 1.1 Build depedencies............................................ 3 1.2 Python depedencies...........................................
More informationQt Essentials - Fundamentals of Qt Module
Qt Essentials - Fundamentals of Qt Module Qt Essentials - Training Course Produced by Nokia, Qt Development Frameworks Material based on Qt 4.7, created on December 15, 2010 http://qt.nokia.com 1/28 Module:
More informationOracle Fusion Middleware
Oracle Fusion Middleware Getting Started with Oracle Data Integrator 12c Virtual Machine Installation Guide July 2017 Oracle Fusion Middleware Getting Started with Oracle Data Integrator, 12c Copyright
More informationOracle Tuxedo Application Runtime for Batch
Oracle Tuxedo Application Runtime for Batch Installation Guide 12c Release 1 (12.1.1) August 2012 Oracle Tuxedo Application Runtime for Batch Installation Guide, 12c Release 1 (12.1.1) Copyright 2012,
More informationPetaLinux SDK User Guide. Eclipse Plugin Guide
PetaLinux SDK User Guide Notice of Disclaimer The information disclosed to you hereunder (the "Materials") is provided solely for the selection and use of Xilinx products. To the maximum extent permitted
More informationBiostatistics 615/815 - Lecture 2 Introduction to C++ Programming
Biostatistics 615/815 - Lecture 2 Introduction to C++ Programming Hyun Min Kang September 8th, 2011 Hyun Min Kang Biostatistics 615/815 - Lecture 2 September 8th, 2011 1 / 47 BIOSTAT615/815 - Objectives
More informationRyft REST API - Swagger.io
Ryft REST API - Swagger.io User Guide Ryft Document Number: 1192 Document Version: 1.1.0 Revision Date: June 2017 2017 Ryft Systems, Inc. All Rights in this documentation are reserved. RYFT SYSTEMS, INC.
More informationDocument Revision No.: 1 Revised: 03/12/09 RIT KGCOE MSD Program. P09027 Upper Extremity Motion Capture System. Software Manual
P09027 Upper Extremity Motion Capture System Software Manual By: Melissa Gilbert, Dan Chapman, Adey Gebregiorgis, Pooja Nanda, Alan Smith and J.J Guerrette Table of contents 1 GUI USER MANUAL... 2 1.1
More informationDAB/MOT Data Carousel Support Library Linux Server Implementation
DAB/MOT Data Carousel Support Library Linux Server Implementation D. Knox 98-0003-003/1.0 28th Apr 1990 ENSIGMA Ltd Turing House Station Road Chepstow GWENT NP6 5PB Ensigma Ltd. Page 2 of 31 Distribution
More informationIoT Sensing SDK. Getting started with IoT Sensing SDK (ISSDK) v1.7 middleware. Document information. IoT Sensing SDK, ISSDK, MCUXpresso, middleware
Getting started with (ISSDK) v1.7 middleware Document information Information Content Keywords, ISSDK, MCUXpresso, middleware Abstract 1 Prerequisites This document assumes completion of the following
More informationData Validation in Visual Composer for SAP NetWeaver Composition Environment
Data Validation in Visual Composer for SAP NetWeaver Composition Environment Applies to: Visual Composer for SAP enhancement package 1 for SAP NetWeaver Composition Environment 7.1 For more information
More informationQuick Start Guide for Intel FPGA Development Tools on the Microsoft* Azure* Platform
Quick Start Guide for Intel FPGA Development Tools on the Microsoft* Azure* Platform Updated for Intel Quartus Prime Design Suite: 17.1 Subscribe Send Feedback Latest document on the web: PDF HTML Contents
More informationSAP NetWeaver MDM MDM Import and Syndication Server & Port Concept
Welcome to your RKT Live Expert Session SAP NetWeaver MDM MDM Import and Syndication Server & Port Concept Michael Reil SAP NetWeaver Product Management Please note that we are recording this session!
More informationxtensor-io Sep 20, 2018
Sep 20, 2018 INSTALLATION 1 Enabling xtensor-io in your C++ libraries 3 2 Licensing 5 2.1 Installation................................................ 5 2.2 Basic Usage...............................................
More informationxmii UDS Overview and Troubleshooting
xmii UDS Overview and Troubleshooting Applies to: SAP xmii Universal Data Servers (UDS) version 4.0 and higher. Summary This article describes the SAP xmii UDS line of products and methods for debugging
More informationEnterprise Portal Logon Page Branding
Enterprise Portal Logon Page Branding Applies to: This document applies to Enterprise Portal 6.0 based on NW04 and 2004s platforms. Summary This document describes a procedure that uses the NetWeaver Development
More informationTransport in GP. How-to Guide Beginning with SAP NetWeaver 2004s SPS06. Version 2.00 January 2006
How-to Guide Beginning with SAP NetWeaver 2004s SPS06 How To Transport in GP Version 2.00 January 2006 Applicable Releases: Beginning with SAP NetWeaver 2004s SPS06 Copyright 2006 SAP AG. All rights reserved.
More informationUser Scripting April 14, 2018
April 14, 2018 Copyright 2013, 2018, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and
More informationAccessing ABAP Functions in Web Dynpro Java
Accessing ABAP Functions in Web Dynpro Java Applies to: Web Dynpro Java in SAP NetWeaver 7.0 (2004s) Summary This tutorial shows how to use the Adaptive RFC model to connect to a SAP backend. Level of
More informationPHY4321 Summary Notes
PHY4321 Summary Notes The next few pages contain some helpful notes that summarize some of the more useful material from the lecture notes. Be aware, though, that this is not a complete set and doesn t
More informationWipro UWIN Porting Guide
Wipro UWIN Porting Guide Wipro Ltd 1995, El Camino Real, Santa Clara, CA 95050, USA uwin@wipro.com http://www.wipro.com/uwin Copyright 1997-1999 Wipro Ltd. All rights reserved. No part of this document
More informationAW-HE40 / HE65 Firmware Update Procedure
AW-HE40 / HE65 Firmware Update Procedure Please be sure to read this first. The update of AW-HE40/ HE65 camera is performed via a network from Web setting screen on PC. There might be accidents in the
More informationApplication Note: AN00151 xscope - Custom Host Endpoint
Application Note: AN00151 xscope - Custom Host Endpoint This application note shows how to create a simple example which uses the XMOS xscope application trace system to provide instrumentation logging
More informationPace University. Fundamental Concepts of CS121 1
Pace University Fundamental Concepts of CS121 1 Dr. Lixin Tao http://csis.pace.edu/~lixin Computer Science Department Pace University October 12, 2005 This document complements my tutorial Introduction
More informationMaster Guide for SAP HANA Smart Data Integration and SAP HANA Smart Data Quality
PUBLIC SAP HANA Platform SPS 12 Document Version: 1.0 2016-05-11 Master Guide for Data Integration and Content 1 Getting Started....3 1.1 Overview.... 3 1.2 About This Document.... 4 2 Use Cases....5 3
More informationMovidius Neural Compute Stick
Movidius Neural Compute Stick You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel products described herein. You agree to
More informationOne Identity Starling Two-Factor HTTP Module 2.1. Administration Guide
One Identity Starling Two-Factor HTTP Module 2.1 Administration Guide Copyright 2018 One Identity LLC. ALL RIGHTS RESERVED. This guide contains proprietary information protected by copyright. The software
More informationeprosima RPC over REST User Manual Version 0.3.0
eprosima RPC over REST User Manual Version 0.3.0 The Middleware Experts eprosima 2014 1 eprosima Proyectos y Sistemas de Mantenimiento SL Ronda del poniente 2 1ºG 28760 Tres Cantos Madrid Tel: + 34 91
More informationThis user guide describes how to run the Atmel ATWINC3400 Bluetooth Low Energy (BLE) Provisioning demo from out-of-box conditions.
ATWINC3400 BLE ATWINC3400 BLE Provisioning - Setup and Usage USER GUIDE Introduction This user guide describes how to run the Atmel ATWINC3400 Bluetooth Low Energy (BLE) Provisioning demo from out-of-box
More informationApplied Informatics POCO PRO C++ Frameworks
Applied Informatics POCO PRO C++ Frameworks Getting Started Guide Version 1.10 Purpose of This Document This document guides developers interested in the POCO PRO C++ Frameworks by Applied Informatics
More informationUsing the NEMA SHADER-Edit
Using the NEMA SHADER-Edit A Comprehensive Overview Version 1.1 February 8, 2018 History Version Date Description 1.1 07-2-2018 NemaP mode included 1.0 10-5-2017 Initial Version v1.1 External Confidential
More informationHow to add some code into CASToR: observing general programming guidelines
How to add some code into CASToR: observing general programming guidelines April 23, 2018 Foreword CASToR is designed to be flexible, but also as generic as possible. Any new implementation should be thought
More informationSchlumberger Private Customer Use
1 Copyright Notice Copyright 2009-2014 Schlumberger. All rights reserved. No part of this document may be reproduced, stored in a retrieval system, or translated in any form or by any means, electronic
More informationIBM Rational Rhapsody TestConductor Add On. Testing on an Integrity Target
IBM Rational Rhapsody TestConductor Add On Testing on an Integrity Target 1 Rhapsody IBM Rational Rhapsody TestConductor Add On Testing on an Integrity Target Release 2.7.1 2 License Agreement No part
More informationSU2017. LAB 1 (May 4/9) Introduction to C, Function Declaration vs. Definition, Basic I/O (scanf/printf, getchar/putchar)
SU2017. LAB 1 (May 4/9) Introduction to C, Function Declaration vs. Definition, Basic I/O (scanf/printf, getchar/putchar) 1 Problem A 1.1 Specification Write an ANSI-C program that reads input from the
More information