Building Software Systems. Multi-module C Programs. Example Multi-module C Program. Example Multi-module C Program
|
|
|
- Edward Carson
- 10 years ago
- Views:
Transcription
1 Building Software Systems Multi-module C Programs Software systems need to be built / re-built during the development phase if distributed in source code form (change,compile,test,repeat) (assists portability) Simple example: systems implemented as multi-module C programs: multiple object files (.o files) and libraries (libxyz.a) compiler that only recompiles what it s told to Large C programs are implemented as a collection of.c and.h files. A pair of a.c and a.h generally defines a module: a.c contains operations related to one particular kind of data/object a.h exports definitions for types/operations defined in a.c Why partition a program into modules at all? as a principle of good design to share development work in a large project to create re-usable libraries Example Multi-module C Program Example Multi-module C Program Imagine a large game program with an internal model of the game world (places, objects, actors) code to manage graphics (mapping the world to the screen) The graphics code would... typically be separated from the world code (software eng) need to use the world operations (to render current scene) Then there would be a main program to... accept user commands, modify world, update display
2 Building Large Programs make Building the example program is relatively simple: % gcc -c -g -Wall world.c % gcc -c -g -Wall graphics.c % gcc -c -g -Wall main.c % gcc -Wall -o game main.o world.o graphics.o For larger systems, building is either inefficient (recompile everything after any change) error-prone (recompile just what s changed + dependents) module relationships easy to overlook (e.g. graphics.c depends on a typedef in world.h) you may not know when a module changes (e.g. you work on graphics.c, others work on world.c) Classical tool to build software dating to 70s. Many variants and alternatives but still useful widely used. More recent tools heavily used for particular languages. E.g for Java maven or ant very popular. make Dependencies make allows youto document intra-module dependencies automatically track of changes make works from a file called Makefile (or makefile) A Makefile contains a sequence of rules like: target : source1 source2... commands to create target from sources Beware: each command is preceded by a single tab char. Take care using cut-and-paste withmakefiles The make command is based on the notion of dependencies. Each rule in a Makefile describes: dependencies between each target and its sources commands to build the target from its sources Make decides that a target needs to be rebuilt if it is older than any of its sources times) (based on file modification
3 Example Makefile #1 Example Makefile #1 A Makefile for the earlier example program: game : main.o graphics.o world.o gcc -Wall -o game main.o graphics.o world.o main.o : main.c graphics.h world.h gcc -c main.c graphics.o : graphics.c world.h gcc -c -g -Wall graphics.c world.o : world.c gcc -c -g -Wall world.c Example Makefile #1 How make Works Easily parsed in Perl: sub parse_makefile( { my ($file) open MAKEFILE, $file or die; my ($target, $depends) = /(\S+)\s*:\s*(.*)/ or next; $first_target = $target if!defined $first_target; $depends{$target = $depends; last if!/^\t/; $build_cmd{$target.= $_; The make command behaves as: make(target, sources, command): # Stage 1 FOR each S in sources DO rebuild S if it needs rebuilding END # Stage 2 IF (no sources OR any source is newer than target) THEN run command to rebuild target END
4 How make Works Additional functionalities of Makefiles Implementation in Perl: sub build( { my ($target) my $build_cmd = $build_cmd{$target; die "*** No rule to make target $target\n" if!$build_cmd &&!-e $target; return if!$build_cmd; my $target_build_needed =! -e $target; foreach $dep (split /\s+/, $depends{$target) { build $dep; $target_build_needed = -M return if!$target_build_needed; print $build_cmd; system $build_cmd; $target > -M $dep; # string-valued variables/macros CC = gcc CFLAGS = -g LDFLAGS = -lm BINS = main.o graphics.o world.o # implicit commands, determined by suffix main.o : main.c graphics.h world.h graphics.o : graphics.c world.h world.o : world.c # pseduo-targets clean : rm -f game main.o graphics.o world.o # or... rm -f game $(BINS) Additional functionalities of Makefiles Parsing Variables and comments in Perl # multiple targets with same sources stats1 stats2 : data1 data2 data3 perl analyse1.pl data1 data2 data3 > stats1 perl analyse2.pl data1 data2 data3 > stats2 # creating subsystems via make parser: cd parser && $(MAKE) # assumes parser directory has own Makefile sub parse_makefile( { my ($file) open MAKEFILE, $file or die; s/#.*//; s/\$\((\w+)\)/$variable{$1 /eg; if (/^\s*(\w+)\s*=\s*(.*)$/) { $variable{$1 = $2; next; my ($target, $depends) = /(\S+)\s*:\s*(.*)/ or next; $first_target = $target if!defined $first_target; $depends{$target = $depends; s/\$\((\w+)\)/$variable{$1 /eg; last if!/^\t/; $build_cmd{$target.= $_;
5 Command-line Arguments Command-line Arguments If make arguments are targets, build just those targets: % make world.o % make clean If no args, build first target in the Makefile. The -n option instructs make to tell what it would do to create targets but don t execute any of the commands Implementation in Perl: $makefile_name = "Makefile"; if (@ARGV >= 2 && $ARGV[0] eq "-f") { $makefile_name = parse_makefile $makefile_name; $first_target if!@argv; build $_ Example Makefile #2 Sample Makefile for a simple compiler: CC = gcc CFLAGS = -Wall -g OBJS = main.o lex.o parse.o codegen.o mycc : $(OBJS) $(CC) -o mycc $(OBJS) main.o : main.c mycc.h lex.h parse.h codegen.h $(CC) $(CFLAGS) -c main.c lex.o : lex.c mycc.h lex.h $(CC) $(CFLAGS) -c lex.c parse.o : parse.c mycc.h parse.h lex.h codegen.o : codegen.h mycc.h codegen.h parse.h clean : rm -f mycc $(OBJS) core Abbreviations To simplify writing rules, make provides default abbreviations: $@ full name of target $* name of target, without suffix $< full name of first source $? full names of all newer sources Examples: # one of above rules, re-written lex.o : lex.c mycc.h lex.h $(CC) $(CFLAGS) -c $*.c -o $@ # or... $(CC) $(CFLAGS) -c $<< -o $@ # update a library archive lib.a: foo.o bar.o lose.o win.o ar r lib.a $?
6 Abbreviations Generic Rules Implementation in Perl: my %builtin_variables; = $target; ($builtin_variables{ * = $target) =~ s/\.[^\.]*$//; $builtin_variables{ ^ = $depends{$target; ($builtin_variables{ < = $depends{$target) =~ s/\s.*//; $build_command =~ s/\$(.)/$builtin_variables{$1 /eg; Can define generic rules based on suffixes:.suffixes:.c.o.java.pl.sh.c.o: $(CC) $(CFLAGS) -c -o $@ $<< i.e. to make a.o file from a.c file, use the command... Rules for several common languages are built in to make. Pattern-based rules generalise what suffix rules do. E.g. implementation of.c.o \%.o : \%.c $(CC) $(CFLAGS) -c -o $@ $<< Make in Perl - Version #0 Simple Make implementation in Perl. Parses makefile rules and storing them in 2 hashes. Building is done with a recursive function. /home/cs2041/public html/code/make/make0.pl #!/usr/bin/perl -w # written by [email protected] for COMP2041 # Simple Perl implementation of "make". # # It parses makefile rules and stores them in 2 hashes. # # Building is done with a recursive function. $makefile_name = "Makefile"; if (@ARGV >= 2 && $ARGV[0] eq "-f") { $makefile_name = parse_makefile($makefile_name); $first_target if!@argv; build($_) exit 0; sub parse_makefile { my ($file) open MAKEFILE, $file or die "Can not open $file: $!"; my ($target, $dependencies) = /(\S+)\s*:\s*(.*)/ or next; $first_target = $target; $dependencies{$target = $dependencies; last if!/^\t/; $build_command{$target.= $_; sub build { my ($target) my $build_command = $build_command{$target; die "*** No rule to make target $target\n" if!$build_command &&!-e $target; return if!$build_command; my $target_build_needed =! -e $target; foreach $dependency (split /\s+/, $dependencies{$target) { build($dependency); $target_build_needed = -M $target > -M $dependency; return if!$target_build_needed; print $build_command; system $build_command; Testing make0.pl % cd /home/cs2041/public_html/code/make %./make0.pl -f Makefile.simple world.o %./make0.pl -f Makefile.simple clean rm -f game main.o graphics.o world.o %./make0.pl -f Makefile.simple world.o gcc -c world.c %./make0.pl -f Makefile.simple gcc -c main.c gcc -c graphics.c gcc -o game main.o graphics.o world.o %./make0.pl -f Makefile.simple %./make0.pl -f Makefile.simple clean rm -f game main.o graphics.o world.o
7 Make in Perl - Version #1 /home/cs2041/public html/code/make/make2.pl Testing make1.pl Add a few lines of code and we can handle variables and comments. A good example of how easy some tasks are in Perl. /home/cs2041/public html/code/make/make1.pl #!/usr/bin/perl -w # written by [email protected] for COMP2041 # Add a few lines of code to make0.pl # and we can handle variables and comments. # # A good example of how easy some tasks are in Perl. $makefile_name = "Makefile"; if (@ARGV >= 2 && $ARGV[0] eq "-f") { $makefile_name = parse_makefile($makefile_name); $first_target if!@argv; build($_) exit 0; sub parse_makefile { my ($file) open MAKEFILE, $file or die "Can not open $file: $!\n"; s/#.*//; s/\$\((\w+)\)/$variable{$1 /eg; if (/^\s*(\w+)\s*=\s*(.*)$/) { $variable{$1 = $2; next; my ($target, $dependencies) = /(\S+)\s*:\s*(.*)/ or next; $first_target = $target; $dependencies{$target = $dependencies; s/#.*//; s/\$\((\w+)\)/$variable{$1 /eg; last if!/^\t/; $build_command{$target.= $_; % cd /home/cs2041/public_html/code/make %./make1.pl -f Makefile.variables world.o graphics.o gcc-4.3 -O3 -Wall -c world.c gcc-4.3 -O3 -Wall -c graphics.c %./make1.pl -f Makefile.variables gcc-4.3 -O3 -Wall -c main.c gcc-4.3 -O3 -Wall -o game main.o graphics.o world.o sub build { my ($target) my $build_command = $build_command{$target; die "*** No rule to make target $target\n" if!$build_command &&!-e $target; return if!$build_command; my $target_build_needed =! -e $target; foreach $dependency (split /\s+/, $dependencies{$target) { build($dependency); $target_build_needed = -M $target > -M $dependency; return if!$target_build_needed; print $build_command; system $build_command; Make in Perl - Version #2 Testing make2.pl Add a few lines of code and we can handle some builtin variables and an implicit rule. Another good example of how easy some tasks are in Perl. #!/usr/bin/perl -w # written by [email protected] for COMP2041 # Add a few lines of code to make1.pl and we can handle some # builtin variables and an implicit rule. # # Another good example of how easy some tasks are in Perl. $makefile_name = "Makefile"; if (@ARGV >= 2 && $ARGV[0] eq "-f") { $makefile_name = %variable = (CC => cc, CFLAGS => ); parse_makefile($makefile_name); $first_target if!@argv; build($_) exit 0; sub parse_makefile { my ($file) open MAKEFILE, $file or die "Can not open $file: $!"; s/#.*//; s/\$\((\w+)\)/$variable{$1 /eg; if (/^\s*(\w+)\s*=\s*(.*)$/) { $variable{$1 = $2; next; my ($target, $dependencies) = /(\S+)\s*:\s*(.*)/ or next; $first_target = $target if!defined $first_target; $dependencies{$target = $dependencies; s/#.*//; s/\$\((\w+)\)/$variable{$1 /eg; last if!/^\t/; $build_command{$target.= $_; sub build { my ($target) my $build_command = $build_command{$target; if (!$build_command && $target =~ /(.*)\.o/) { $build_command = "$variable{cc $variable{cflags -c \$< -o \$@\n"; die "*** No rule to make target $target\n" if!$build_command &&!-e $target; return if!$build_command; my $target_build_needed =! -e $target; foreach $dependency (split /\s+/, $dependencies{$target) { build($dependency); $target_build_needed = -M $target > -M $dependency; return if!$target_build_needed; my %builtin_variables; = $target; ($builtin_variables{ * = $target) =~ s/\.[^\.]*$//; $builtin_variables{ ^ = $dependencies{$target; ($builtin_variables{ < = $dependencies{$target) =~ s/\s.*//; $build_command =~ s/\$(.)/$builtin_variables{$1 /eg; print $build_command; system $build_command; % cd /home/cs2041/public_html/code/make %./make2.pl -f Makefile.builtin_variables clean rm -f game main.o graphics.o world.o %./make2.pl -f Makefile.builtin_variables gcc-4.3 -O3 -Wall -c main.c gcc-4.3 -O3 -Wall -c graphics.c gcc-4.3 -O3 -Wall -c world.c -o world.o gcc-4.3 -O3 -Wall -o game main.o graphics.o world.o %./make2.pl -f Makefile.implicit clean rm -f game main.o graphics.o world.o %./make2.pl -f Makefile.implicit gcc-4.3 -O3 -Wall -c main.c -o main.o gcc-4.3 -O3 -Wall -c graphics.c -o graphics.o gcc-4.3 -O3 -Wall -c world.c -o world.o gcc-4.3 -O3 -Wall -o game main.o graphics.o world.o
8 Configuration Autotools Systems need to be tailored to fit into specific computing environments. If we re lucky, this is handled by the execution engine. although we ll may still need to change e.g. file/user names If we re not so lucky, we need to... embded stuff in the code to cater for each environment ensure the compiler uses the right set of switches Best to do this automatically... GNU build system for assisting with portability of open source systems. Still widely used but many people dislike it. Many newer build tools available (e.g. Cmake, ninja) Autotools Configure/Autoconf Uses a generic configure command to interrogate the local system and determine configuration settings read simple templates for Makefile and/or config.h generate customised Makefile and/or config.h Once system is configured, simply run make to build it Configure shell script is distributed with the source code.
9 Configure/Autoconf Configure/Autoconf If the configure script was completely general it would be huge most of it would be irrelevant for a given system developers would need to tailor it for new systems The solution: generate the configure script automatically... Configure/Autoconf The autoconf command generates a configure script from a file called configure.in configure.in contains information such as names of all source code files for this system where should binaries and manuals be installed which libraries/processors (e.g. flex) are needed Configure/Autoconf Creating a configure.in file... requires developer to enter details about code much of this can be auto-extracted from code Hence, the autoscan command... extract config information from source code produce a first draft configure.in file developer manually completes configure.in
10 Configure/Autoconf The configure/autoconf system is a nice example of automating, routine aspects of software development. For more details about configure/autoconf, google or download software using it and experiment.
How to Write a Simple Makefile
Chapter 1 CHAPTER 1 How to Write a Simple Makefile The mechanics of programming usually follow a fairly simple routine of editing source files, compiling the source into an executable form, and debugging
Developing Platform Independent Software using the AutoTool Suite
Developing Platform Independent Software using the AutoTool Suite Jason But Outline Why develop Platform Independent code From the users perspective From the developers perspective The Autotools Suite
PetaLinux SDK User Guide. Application Development Guide
PetaLinux SDK User Guide Application Development Guide Notice of Disclaimer The information disclosed to you hereunder (the "Materials") is provided solely for the selection and use of Xilinx products.
Basic C Shell. [email protected]. 11th August 2003
Basic C Shell [email protected] 11th August 2003 This is a very brief guide to how to use cshell to speed up your use of Unix commands. Googling C Shell Tutorial can lead you to more detailed information.
GNU Make. A Program for Directing Recompilation GNU make Version 3.80 July 2002. Richard M. Stallman, Roland McGrath, Paul Smith
GNU Make GNU Make A Program for Directing Recompilation GNU make Version 3.80 July 2002 Richard M. Stallman, Roland McGrath, Paul Smith Copyright c 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
C Programming Review & Productivity Tools
Review & Productivity Tools Giovanni Agosta Piattaforme Software per la Rete Modulo 2 Outline Preliminaries 1 Preliminaries 2 Function Pointers Variadic Functions 3 Build Automation Code Versioning 4 Preliminaries
Documentation Installation of the PDR code
Documentation Installation of the PDR code Franck Le Petit mardi 30 décembre 2008 Requirements Requirements depend on the way the code is run and on the version of the code. To install locally the Meudon
To reduce or not to reduce, that is the question
To reduce or not to reduce, that is the question 1 Running jobs on the Hadoop cluster For part 1 of assignment 8, you should have gotten the word counting example from class compiling. To start with, let
Setting up PostgreSQL
Setting up PostgreSQL 1 Introduction to PostgreSQL PostgreSQL is an object-relational database management system based on POSTGRES, which was developed at the University of California at Berkeley. PostgreSQL
CMPT 373 Software Development Methods. Building Software. Nick Sumner [email protected] Some materials from Shlomi Fish & Kitware
CMPT 373 Software Development Methods Building Software Nick Sumner [email protected] Some materials from Shlomi Fish & Kitware What does it mean to build software? How many of you know how to build software?
Magento Search Extension TECHNICAL DOCUMENTATION
CHAPTER 1... 3 1. INSTALLING PREREQUISITES AND THE MODULE (APACHE SOLR)... 3 1.1 Installation of the search server... 3 1.2 Configure the search server for usage with the search module... 7 Deploy the
pbuilder Debian Conference 2004
pbuilder Debian Conference 2004 Junichi Uekawa May 2004 1 Introduction pbuilder[1] is a tool that is used for Building Debian packages in a clean environment inside chroot 1. In this paper, the background
Brent A. Perdue. July 15, 2009
Title Page Object-Oriented Programming, Writing Classes, and Creating Libraries and Applications Brent A. Perdue ROOT @ TUNL July 15, 2009 B. A. Perdue (TUNL) OOP, Classes, Libraries, Applications July
Advanced Bash Scripting. Joshua Malone ([email protected])
Advanced Bash Scripting Joshua Malone ([email protected]) Why script in bash? You re probably already using it Great at managing external programs Powerful scripting language Portable and version-stable
TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform
October 6, 2015 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
Microsoft Windows PowerShell v2 For Administrators
Course 50414B: Microsoft Windows PowerShell v2 For Administrators Course Details Course Outline Module 1: Introduction to PowerShell the Basics This module explains how to install and configure PowerShell.
Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG
Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written
GTk+ and GTkGLExt Build Process for Windows 32- bit
SUNY Geneseo June 15, 2010 GTk+ and GTkGLExt Build Process for Windows 32- bit Using Minimal GNU for Windows (MinGW) and Minimal System (MSYS) Author Advisor : Hieu Quang Tran : Professor Doug Baldwin
An Embedded Wireless Mini-Server with Database Support
An Embedded Wireless Mini-Server with Database Support Hungchi Chang, Sy-Yen Kuo and Yennun Huang Department of Electrical Engineering National Taiwan University Taipei, Taiwan, R.O.C. Abstract Due to
Code::Block manual. for CS101x course. Department of Computer Science and Engineering Indian Institute of Technology - Bombay Mumbai - 400076.
Code::Block manual for CS101x course Department of Computer Science and Engineering Indian Institute of Technology - Bombay Mumbai - 400076. April 9, 2014 Contents 1 Introduction 1 1.1 Code::Blocks...........................................
Running your first Linux Program
Running your first Linux Program This document describes how edit, compile, link, and run your first linux program using: - Gnome a nice graphical user interface desktop that runs on top of X- Windows
CSC230 Getting Starting in C. Tyler Bletsch
CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly
Professional. SlickEdif. John Hurst IC..T...L. i 1 8 О 7» \ WILEY \ Wiley Publishing, Inc.
Professional SlickEdif John Hurst IC..T...L i 1 8 О 7» \ WILEY \! 2 0 0 7 " > Wiley Publishing, Inc. Acknowledgments Introduction xiii xxv Part I: Getting Started with SiickEdit Chapter 1: Introducing
#!/usr/bin/perl use strict; use warnings; use Carp; use Data::Dumper; use Tie::IxHash; use Gschem 3; 3. Setup and initialize the global variables.
1. Introduction. This program creates a Bill of Materials (BOM) by parsing a gschem schematic file and grouping components that have identical attributes (except for reference designator). Only components
CPSC 226 Lab Nine Fall 2015
CPSC 226 Lab Nine Fall 2015 Directions. Our overall lab goal is to learn how to use BBB/Debian as a typical Linux/ARM embedded environment, program in a traditional Linux C programming environment, and
Mike Shal <[email protected]>
Build System Rules and Algorithms Abstract Mike Shal 2009 This paper will establish a set of rules which any useful build system must follow. The algorithms from make and similar build
Supported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 9.6)
Supported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 9.6) Configuring the environment manually Using CMake CLHEP full version installation
Learn Perl by Example - Perl Handbook for Beginners - Basics of Perl Scripting Language
Learn Perl by Example - Perl Handbook for Beginners - Basics of Perl Scripting Language www.freebsdonline.com Copyright 2006-2008 www.freebsdonline.com 2008/01/29 This course is about Perl Programming
USENIX'04 / UseBSD Using OpenBSD and Snort to build ready to roll Network Intrusion Detection System Sensor
USENIX'04 / UseBSD Using OpenBSD and Snort to build ready to roll Network Intrusion Detection System Sensor http://www.mycert.org.my/sensor/ Tuesday, June 29, 2004 About Speaker Kamal Hilmi Othman [email protected]
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
Object systems available in R. Why use classes? Information hiding. Statistics 771. R Object Systems Managing R Projects Creating R Packages
Object systems available in R Statistics 771 R Object Systems Managing R Projects Creating R Packages Douglas Bates R has two object systems available, known informally as the S3 and the S4 systems. S3
GNU Automake. For version 1.15, 31 December 2014. David MacKenzie Tom Tromey Alexandre Duret-Lutz Ralf Wildenhues Stefano Lattarini
GNU Automake For version 1.15, 31 December 2014 David MacKenzie Tom Tromey Alexandre Duret-Lutz Ralf Wildenhues Stefano Lattarini This manual is for GNU Automake (version 1.15, 31 December 2014), a program
Maven or how to automate java builds, tests and version management with open source tools
Maven or how to automate java builds, tests and version management with open source tools Erik Putrycz Software Engineer, Apption Software [email protected] Outlook What is Maven Maven Concepts and
COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing
COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing The scanner (or lexical analyzer) of a compiler processes the source program, recognizing
Andreas Burghart 6 October 2014 v1.0
Yocto Qt Application Development Andreas Burghart 6 October 2014 Contents 1.0 Introduction... 3 1.1 Qt for Embedded Linux... 3 1.2 Outline... 4 1.3 Assumptions... 5 1.4 Corrections... 5 1.5 Version...
Memory Management Simulation Interactive Lab
Memory Management Simulation Interactive Lab The purpose of this lab is to help you to understand deadlock. We will use a MOSS simulator for this. The instructions for this lab are for a computer running
Introduction. dnotify
Introduction In a multi-user, multi-process operating system, files are continually being created, modified and deleted, often by apparently unrelated processes. This means that any software that needs
MOVES Batch Mode: Setting up and running groups of related MOVES run specifications. EPA Office of Transportation and Air Quality 11/3/2010
MOVES Batch Mode: Setting up and running groups of related MOVES run specifications EPA Office of Transportation and Air Quality 11/3/2010 Webinar Logistics Please use question box to send any questions
MatrixSSL Getting Started
MatrixSSL Getting Started TABLE OF CONTENTS 1 OVERVIEW... 3 1.1 Who is this Document For?... 3 2 COMPILING AND TESTING MATRIXSSL... 4 2.1 POSIX Platforms using Makefiles... 4 2.1.1 Preparation... 4 2.1.2
?<BACBC;@@A=2(?@?;@=2:;:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
NGS data format NGS data format @SRR031028.1708655 GGATGATGGATGGATAGATAGATGAAGAGATGGATGGATGGGTGGGTGGTATGCAGCATACCTGAAGTGC BBBCB=ABBB@BA=?BABBBBA??B@BAAA>ABB;@5=@@@?8@:==99:465727:;41'.9>;933!4 @SRR031028.843803
Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)
Sonatype CLM Enforcement Points - Continuous Integration (CI) i Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI) ii Contents 1
Manage2 API. by: J. Nick Koston
Manage2 API by: J. Nick Koston Training Seminar 2006 Introduction! Hello, My name is Nick! This presentation is about the Manage2 API.! This also covers basic ideas behind our Manage2 system.! Our Manage2
CMake/CTest/CDash OSCON 2009
CMake/CTest/CDash OSCON 2009 Open Source Tools to build, test, and install software Bill Hoffman [email protected] Overview Introduce myself and Kitware Automated Testing About CMake Building with
GNU Make. A Program for Directing Recompilation GNU make Version 4.1 September 2014. Richard M. Stallman, Roland McGrath, Paul D.
GNU Make GNU Make A Program for Directing Recompilation GNU make Version 4.1 September 2014 Richard M. Stallman, Roland McGrath, Paul D. Smith This file documents the GNU make utility, which determines
Programming with the Dev C++ IDE
Programming with the Dev C++ IDE 1 Introduction to the IDE Dev-C++ is a full-featured Integrated Development Environment (IDE) for the C/C++ programming language. As similar IDEs, it offers to the programmer
ML310 Creating a VxWorks BSP and System Image for the Base XPS Design
ML310 Creating a VxWorks BSP and System Image for the Base XPS Design Note: Screen shots in this acrobat file appear best when Acrobat Magnification is set to 133.3% Outline Software Requirements Software
Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4. 10 Steps to Developing a QNX Program Quickstart Guide
Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v 6. 4 10 Steps to Developing a QNX Program Quickstart Guide 2008, QNX Software Systems GmbH & Co. KG. A Harman International Company. All rights
Code Estimation Tools Directions for a Services Engagement
Code Estimation Tools Directions for a Services Engagement Summary Black Duck software provides two tools to calculate size, number, and category of files in a code base. This information is necessary
Programming Database lectures for mathema
Programming Database lectures for mathematics students April 25, 2015 Functions Functions are defined in Postgres with CREATE FUNCTION name(parameter type,...) RETURNS result-type AS $$ function-body $$
A Crash Course on UNIX
A Crash Course on UNIX UNIX is an "operating system". Interface between user and data stored on computer. A Windows-style interface is not required. Many flavors of UNIX (and windows interfaces). Solaris,
lug create and edit TeX Local User Group web pages
lug create and edit TeX Local User Group web pages doc generated from the script with gendoc bash script, version=2.01 Synopsis lug [options] [lug-code] lug can be used to maintain the TeX Local User Group
AES Crypt User Guide
AES Crypt User Guide Publication Date: 2013-12-26 Original Author: Gary C. Kessler ([email protected]) Revision History Date Contributor Changes 2012-01-17 Gary C. Kessler First version 2013-03-03 Doug
Advanced Customisation: Scripting EPrints. EPrints Training Course
Advanced Customisation: Scripting EPrints EPrints Training Course Part 2: Scripting Techniques Roadmap Core API manipulating your data accessing data collections searching your data Scripting techniques
Lab Exercise Part II: Git: A distributed version control system
Lunds tekniska högskola Datavetenskap, Nov 25, 2013 EDA260 Programvaruutveckling i grupp projekt Labb 2 (part II: Git): Labbhandledning Checked on Git versions: 1.8.1.2 Lab Exercise Part II: Git: A distributed
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
Perl in a nutshell. First CGI Script and Perl. Creating a Link to a Script. print Function. Parsing Data 4/27/2009. First CGI Script and Perl
First CGI Script and Perl Perl in a nutshell Prof. Rasley shebang line tells the operating system where the Perl interpreter is located necessary on UNIX comment line ignored by the Perl interpreter End
IEEEXTREME PROGRAMMING COMPETITION PROBLEM & INSTRUCTION BOOKLET #3
IEEEXTREME PROGRAMMING COMPETITION 2008 PROBLEM & INSTRUCTION BOOKLET #3 Instructions Read all the problems carefully. Each of the problems has a problem number (shown on top), a title, an approximate
Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5
Technical Note Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5 In the VMware Infrastructure (VI) Perl Toolkit 1.5, VMware
Software documentation systems
Software documentation systems Basic introduction to various user-oriented and developer-oriented software documentation systems. Ondrej Holotnak Ondrej Jombik Software documentation systems: Basic introduction
NaviCell Data Visualization Python API
NaviCell Data Visualization Python API Tutorial - Version 1.0 The NaviCell Data Visualization Python API is a Python module that let computational biologists write programs to interact with the molecular
How to use PDFlib products with PHP
How to use PDFlib products with PHP Last change: July 13, 2011 Latest PDFlib version covered in this document: 8.0.3 Latest version of this document available at: www.pdflib.com/developer/technical-documentation
HPC Wales Skills Academy Course Catalogue 2015
HPC Wales Skills Academy Course Catalogue 2015 Overview The HPC Wales Skills Academy provides a variety of courses and workshops aimed at building skills in High Performance Computing (HPC). Our courses
10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition
10 STEPS TO YOUR FIRST QNX PROGRAM QUICKSTART GUIDE Second Edition QNX QUICKSTART GUIDE A guide to help you install and configure the QNX Momentics tools and the QNX Neutrino operating system, so you can
1 Introduction. 2 An Interpreter. 2.1 Handling Source Code
1 Introduction The purpose of this assignment is to write an interpreter for a small subset of the Lisp programming language. The interpreter should be able to perform simple arithmetic and comparisons
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment Wyatt Spear, Allen Malony, Alan Morris, Sameer Shende {wspear, malony, amorris, sameer}@cs.uoregon.edu
gbuild: State of the LibreOffice build system
gbuild: State of the LibreOffice build system Michael Stahl, Red Hat, Inc. 2012-10-17 1 Overview The Historic OpenOffice.org Build System Goals for a Better Build System gbuild Architecture gbuild Status
Programming Languages CIS 443
Course Objectives Programming Languages CIS 443 0.1 Lexical analysis Syntax Semantics Functional programming Variable lifetime and scoping Parameter passing Object-oriented programming Continuations Exception
AP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
Porting CodeWarrior Projects to Xcode. (Legacy)
Porting CodeWarrior Projects to Xcode (Legacy) Contents Introduction to Porting CodeWarrior Projects to Xcode 7 Prerequisites 7 Further Reading 8 Organization of This Document 8 Feedback and Mail List
CS 241 Data Organization Coding Standards
CS 241 Data Organization Coding Standards Brooke Chenoweth University of New Mexico Spring 2016 CS-241 Coding Standards All projects and labs must follow the great and hallowed CS-241 coding standards.
Parallel Programming for Multi-Core, Distributed Systems, and GPUs Exercises
Parallel Programming for Multi-Core, Distributed Systems, and GPUs Exercises Pierre-Yves Taunay Research Computing and Cyberinfrastructure 224A Computer Building The Pennsylvania State University University
Embedded Software Development
Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) TDDI11, Embedded Software 2010-04-22 Embedded Software Development Host and Target Machine Typical embedded
Meister Going Beyond Maven
Meister Going Beyond Maven A technical whitepaper comparing OpenMake Meister and Apache Maven OpenMake Software 312.440.9545 800.359.8049 Winners of the 2009 Jolt Award Introduction There are many similarities
Evaluation of the CMT and SCRAM Software Configuration, Build and Release Management Tools
Evaluation of the CMT and SCRAM Software Configuration, Build and Release Management Tools Alex Undrus Brookhaven National Laboratory, USA (ATLAS) Ianna Osborne Northeastern University, Boston, USA (CMS)
FOO := $(warning Right-hand side of a simple variable)bar BAZ = $(warning Right-hand side of a recursive variable)boo
Chapter 12 CHAPTER 12 Debugging Makefiles Debugging makefiles is somewhat of a black art. Unfortunately, there is no such thing as a makefile debugger to examine how a particular rule is being evaluated
Purely top-down software rebuilding
Purely top-down software rebuilding by Alan Grosskurth A thesis presented to the University of Waterloo in fulfillment of the thesis requirement for the degree of Master of Mathematics in Computer Science
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
USING HDFS ON DISCOVERY CLUSTER TWO EXAMPLES - test1 and test2
USING HDFS ON DISCOVERY CLUSTER TWO EXAMPLES - test1 and test2 (Using HDFS on Discovery Cluster for Discovery Cluster Users email [email protected] if you have questions or need more clarifications. Nilay
Member Functions of the istream Class
Member Functions of the istream Class The extraction operator is of limited use because it always uses whitespace to delimit its reads of the input stream. It cannot be used to read those whitespace characters,
32-Bit Workload Automation 5 for Windows on 64-Bit Windows Systems
32-Bit Workload Automation 5 for Windows on 64-Bit Windows Systems Overview 64-bit Windows Systems Modifying the Working Folder for Universal Server Components Applications Installed in the Windows System
INTEGRAL OFF-LINE SCIENTIFIC ANALYSIS
I N T E G R A L C S E C N I T E R N E C E D A INTEGRAL OFF-LINE SCIENTIFIC ANALYSIS INSTALLATION GUIDE Issue 10.2 December 2015 INTEGRAL Science Data Centre Chemin d Ecogia 16 CH-1290 Versoix isdc.unige.ch
Cygwin: getting the setup tool
Cygwin: getting the setup tool Free, almost complete UNIX environment emulation for computers running MS Windows. Very handy. 1 First, go to the Cygwin Site: http://www.cygwin.org/cygwin/ Download the
Version Control Your Jenkins Jobs with Jenkins Job Builder
Version Control Your Jenkins Jobs with Jenkins Job Builder Abstract Wayne Warren [email protected] Puppet Labs uses Jenkins to automate building and testing software. While we do derive benefit from
Installing (1.8.7) 9/2/2009. 1 Installing jgrasp
1 Installing jgrasp Among all of the jgrasp Tutorials, this one is expected to be the least read. Most users will download the jgrasp self-install file for their system, doubleclick the file, follow the
Creating a Java application using Perfect Developer and the Java Develo...
1 of 10 15/02/2010 17:41 Creating a Java application using Perfect Developer and the Java Development Kit Introduction Perfect Developer has the facility to execute pre- and post-build steps whenever the
