Python erweitern in C und C++

Size: px
Start display at page:

Download "Python erweitern in C und C++"

Transcription

1 Robert Franke Python erweitern in C und C++ Robert Franke DESY Zeuthen und Humboldt Universität Berlin Berlin,

2 Robert Franke Inhalt 1 Einführung 2 Ctypes 3 Python API 4 Cython 5 SWIG 6 Boost.Python

3 Robert Franke Warum C/C++? Einführung Performance Wrappen existierender Bibliotheken Verteilen von proprietärem Code

4 Robert Franke Was ist ctypes Ctypes einfachstes Interface zu C-Bibliotheken in Standard Library seit Python 2.5 Basiert auf libffi für call conventions keine Änderung/Ergänzung der C-Bibliothek nötig! Automatische Typumwandlung von Argumenten Unterstützt Pointer, Structs, Unions Unterstützt Mac OSX, Linux, Windows

5 Ctypes Robert Franke Wrappen von sqrt aus libm.so import ctypes import math libm = ctypes.cdll.loadlibrary( libm.so ) sqrt = libm.sqrt sqrt.restype = ctypes.c_double sqrt.argtypes = [ctypes.c_double] print sqrt(3.2), math.sqrt(3.2)

6 Ctypes Robert Franke Arbeiten mit Structs #include <stdlib.h> struct doublearray{ unsigned long long length; double *array; ; double sum(struct doublearray* arr){ double s = 0.; unsigned long long i; for (i=0; i < arr->length; i++){ s += arr->array[i]; return s;

7 Ctypes Robert Franke import ctypes import random class DOUBLEARRAY(ctypes.Structure): _fields_ = [("length",ctypes.c_ulonglong), ("array",ctypes.pointer(ctypes.c_double))] libdoublearray=ctypes.cdll.loadlibrary("./doublearray.so") libdoublearray.sum.argtypes = [ctypes.pointer(doublearray)] libdoublearray.sum.restype = ctypes.c_double doublearray = ctypes.c_double * 100 array = doublearray() for i in xrange(0,100): array[i] = random.random() carray = DOUBLEARRAY(100, array) print libdoublearray.sum(carray)

8 Robert Franke Die Python API Python API Low-Level Interface Manuelles Reference Counting Wenig Overhead Viele Beispiele in der Standard Library

9 Python API Robert Franke Kubikwurzel #include <Python.h> #include <math.h> static PyObject* ErrorObject; static PyObject* cubic_root(pyobject* self, PyObject* args){ double guess = 1.0; double N; if (!PyArg_ParseTuple(args, "d", &N)) return 0; while (fabs((guess * guess * guess - N)/N) > 1e-8){ guess = 1./3 * (2 * guess + N/(guess * guess)); return Py_BuildValue("d",guess);

10 Python API Robert Franke Kubikwurzel (2) static char cubic_root doc [] = "Approximate the cubic root with the Babylonian method"; static PyMethodDef cubicmethods[] = { {"cubic_root", cubic_root, METH_VARARGS, cubic_root doc, {NULL, NULL, 0, NULL ; void initcubic(void){ PyObject *m, *d; m = Py_InitModule("cubic", cubicmethods); d = PyModule_GetDict(m); ErrorObject = Py_BuildValue("s", "cubic module error"); PyDict_SetItemString(d, "error", ErrorObject); if (PyErr_Occurred()) Py_FatalError("Can t initialize module cubic!");

11 Python API Robert Franke setup.py from distutils.core import setup, Extension setup(name = "cubic", version = "1.0", maintainer = "Robert Franke", maintainer_ = "[email protected]", description = "Sample, simple Python extension module", ext_modules = [Extension( cubic,sources=[ cubic.c ])] )

12 Python API Robert Franke Eine Liste von Zufallszahlen #include <Python.h> #include <stdlib.h> #include <time.h> static PyObject* ErrorObject; static PyObject* random_list(pyobject* self, PyObject* args){ long nrand,i; double d; if (!PyArg_ParseTuple(args, "l", &nrand)) return 0; PyObject *list = PyList_New(nrand); for (i = 0; i < nrand; i++){ d = drand48(); PyObject *listitem = Py_BuildValue("d",d); PyList_SET_ITEM(list,i,listitem); return list; static PyObject* wrap_drand48(pyobject* self, PyObject* args){ double d; d = drand48(); return Py_BuildValue("d",d);

13 Python API Robert Franke Eine Liste von Zufallszahlen (2) static char wrap_drand doc [] = "A wrapper around the libc drand48 function"; static char random_list doc [] = "Generate a list of random numbers"; static PyMethodDef randommethods[] = { {"random", wrap_drand48, METH_VARARGS, wrap_drand doc, {"random_list", random_list, METH_VARARGS, random_list doc, {NULL, NULL, 0, NULL ; void initmyrandom(void){ PyObject *m, *d; m = Py_InitModule("myrandom", randommethods); d = PyModule_GetDict(m); ErrorObject = Py_BuildValue("s", "myrandom module error"); PyDict_SetItemString(d, "error", ErrorObject); if (PyErr_Occurred()) Py_FatalError("Can t initialize module myrandom!"); srand48(time(0));

14 Robert Franke Reference counting Python API Python nutzt reference counting zum Speichermanagement Owned reference vs. borrowed reference Py_INCREF: erhöht reference count Py_DECREF: erniedrigt reference count, löscht Objekt wenn count == 0 die meisten API Funktionen rufen INCREF für die Objekt, die sie zurückgeben Ausnamhme u.a.: PyListi_GetItem, PyTuple_GetItem Quelle von Crashs und Memory Leaks!

15 Python API Robert Franke Shallow list copy #include <Python.h> #include <stdlib.h> static PyObject* ErrorObject; static PyObject* copy_list(pyobject* self, PyObject* args){ Py_ssize_t len, i; PyObject *list; PyArg_ParseTuple(args,"O",&list); if (!PyList_Check(list)){ PyErr_SetString(PyExc_TypeError, "expected list type"); return NULL; len = PyList_Size(list); PyObject *new_list = PyList_New(len); for (i = 0; i < len; i++){ PyObject *listitem = PyList_GetItem(list, i); Py_INCREF(listitem); //Important as PyList_GetItem does not //increment the refcount! PyList_SET_ITEM(new_list,i,listitem); return new_list;

16 Python API Robert Franke Shallow list copy (2) static char copy_list doc [] = "Make a shallow list copy"; static PyMethodDef copy_listmethods[] = { {"copy", copy_list, METH_VARARGS, copy_list doc, {NULL, NULL, 0, NULL ; void initcopy_list(void){ PyObject *m, *d; m = Py_InitModule("copy_list", copy_listmethods); d = PyModule_GetDict(m); ErrorObject = Py_BuildValue("s", "copy_list module error"); PyDict_SetItemString(d, "error", ErrorObject); if (PyErr_Occurred()) Py_FatalError("Can t initialize module copy_list!");

17 Robert Franke Was ist Cython? Cython Python mit Typen vorher: Pyrex Methoden werden mit Typdeklarationen angereichert Cython macht daraus C-Code, den man dann kompiliert

18 Cython Robert Franke Kubikwurzel from math import fabs def cubic_root(double f): cdef double x = 1.5 # Start value while fabs((x * x * x - f)/f) > 1e-8: x = (2 * x + f/(x * x))/3. return x

19 Robert Franke Was ist SWIG? SWIG Simplified Wrapper and Interface Generator Wrappergenerator für viele Sprachen: Python, Perl, Ruby, TCL, Common List, C#, etc. Unterstützt C und C++ Definitionen in Interface-Files Oft können Header direkt als Interface Deklarationen benutzt werden

20 SWIG Robert Franke Kubikwurzel %module cubic %{ extern double cubic_root(double); % extern double cubic_root(double);

21 Boost.Python Was ist Boost.Python Robert Franke Teil der Boost C++-Bibliothek Entwickelt von Dave Abrahams et al. Aktuell: Boost , Version 2 von Boost.Python Unterstützt Funktionen, Memberfunktionen, Klassenfunktionen, Docstrings, Properties, Overloading, Keywordargumente, Defaultargumente, Serialization etc. Macht starken Gebrauch von Template Metaprogramming

22 Boost.Python Robert Franke Kubikwurzel #include <boost/python.hpp> #include <cmath> using namespace boost::python; double cubic_root(const double N){ double guess = 1.0; while (std::fabs((guess * guess * guess - N)/N) > 1e-8){ guess = 1./3 * (2 * guess + N/(guess * guess)); return guess; BOOST_PYTHON_MODULE(cubic){ def("cubic_root",&cubic_root);

23 Boost.Python Robert Franke Ein Wrapper um boost::gil #include <stdexcept> #include <boost/filesystem.hpp> #include "image.h" using namespace boost::gil; using namespace boost::filesystem; using namespace std; using boost::shared_ptr; Image::Image(const std::string& path){ if (!exists(path)){ throw std::runtime_error("file does not exist"); jpeg_read_image(path,img_); img_view_ = view(img_); shared_ptr<pixel> Image::at(const int x, const int y) const{ rgb8c_view_t::iterator it = img_view_.at(x,y); Pixel* px = new Pixel((*it)[0],(*it)[1],(*it)[2]); return shared_ptr<pixel>(px); unsigned int Image::width() const{ return static_cast<unsigned int>(img_view_.width()); unsigned int Image::height() const{ return static_cast<unsigned int>(img_view_.height()); // includes all needed Boost.Filesystem declarations

24 Boost.Python Robert Franke Ein Wrapper um boost::gil (2) #include <boost/python.hpp> #include <string> #include "image.h" using namespace boost::python; using boost::shared_ptr; using std::string; BOOST_PYTHON_MODULE(pyimage){ class_<pixel, shared_ptr<pixel> >("Pixel",init<short,short,short>()).def_readwrite("red",&Pixel::r_).def_readwrite("green",&Pixel::g_).def_readwrite("blue",&Pixel::b_) ; class_<image>("image",init<string>()).def("width",&image::width).def("height",&image::height).def("at",&image::at) ;

25 Boost.Python Robert Franke Callbacks in C++ und Python #include "callback.h" #include <boost/foreach.hpp> double mapsum(const std::vector<double>& vec, map_func_type func){ double sum = 0; BOOST_FOREACH(double d, vec){ sum += func(d); return sum; double square(const double d){ return d * d;

26 Boost.Python Robert Franke Callbacks in C++ und Python (2) #include <boost/python.hpp> #include <boost/python/suite/indexing/vector_indexing_suite.hpp> #include "callback.h" #include "py_boost_function.hpp" #include "container_conversions.h" map_func_type square_ptr(square); using namespace boost::python; using namespace scitbx::boost_python::container_conversions; BOOST_PYTHON_MODULE(callback){ boost::python::class_<std::vector<double>, boost::shared_ptr<std::vector<double> > >("PyVec").def(boost::python::vector_indexing_suite<std::vector<double> >()); from_python_sequence<std::vector<double>,variable_capacity_policy>(); def("reduce",&mapsum); def_function<double (const double)>( "map_func_t", "A function" ); scope().attr("square") = square_ptr;

27 Boost.Python Dokumentation und Links Robert Franke python/doc/index.html

Using EDA Databases: Milkyway & OpenAccess

Using EDA Databases: Milkyway & OpenAccess Using EDA Databases: Milkyway & OpenAccess Enabling and Using Scripting Languages with Milkyway and OpenAccess Don Amundson Khosro Khakzadi 2006 LSI Logic Corporation 1 Outline History Choice Of Scripting

More information

Optimizing and interfacing with Cython. Konrad HINSEN Centre de Biophysique Moléculaire (Orléans) and Synchrotron Soleil (St Aubin)

Optimizing and interfacing with Cython. Konrad HINSEN Centre de Biophysique Moléculaire (Orléans) and Synchrotron Soleil (St Aubin) Optimizing and interfacing with Cython Konrad HINSEN Centre de Biophysique Moléculaire (Orléans) and Synchrotron Soleil (St Aubin) Extension modules Python permits modules to be written in C. Such modules

More information

CS 294-73 Software Engineering for Scientific Computing. http://www.cs.berkeley.edu/~colella/cs294. Lecture 25:Mixed Language Programming.

CS 294-73 Software Engineering for Scientific Computing. http://www.cs.berkeley.edu/~colella/cs294. Lecture 25:Mixed Language Programming. CS 294-73 Software Engineering for Scientific Computing http://www.cs.berkeley.edu/~colella/cs294 Lecture 25:Mixed Language Programming. Different languages Technical, historical, cultural differences

More information

The C Programming Language course syllabus associate level

The C Programming Language course syllabus associate level TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming

More information

AJAX SSL- Wizard Reference

AJAX SSL- Wizard Reference AJAX SSL- Wizard Reference Version 1.0.2+ - 04.04.2011 Preamble This document explains the AJAX based SSL- Wizard developed by CertCenter AG. The seemless integration of the SSL- Wzard into the partner

More information

TIn 1: Lecture 3: Lernziele. Lecture 3 The Belly of the Architect. Basic internal components of the 8086. Pointers and data storage in memory

TIn 1: Lecture 3: Lernziele. Lecture 3 The Belly of the Architect. Basic internal components of the 8086. Pointers and data storage in memory Mitglied der Zürcher Fachhochschule TIn 1: Lecture 3 The Belly of the Architect. Lecture 3: Lernziele Basic internal components of the 8086 Pointers and data storage in memory Architektur 8086 Besteht

More information

quick documentation Die Parameter der Installation sind in diesem Artikel zu finden:

quick documentation Die Parameter der Installation sind in diesem Artikel zu finden: quick documentation TO: FROM: SUBJECT: [email protected] ASTARO FIREWALL SCAN MIT NESSUS AUS BACKTRACK 5 R1 DATE: 24.11.2011 Inhalt Dieses Dokument beschreibt einen Nessus Scan einer Astaro

More information

IAC-BOX Network Integration. IAC-BOX Network Integration IACBOX.COM. Version 2.0.1 English 24.07.2014

IAC-BOX Network Integration. IAC-BOX Network Integration IACBOX.COM. Version 2.0.1 English 24.07.2014 IAC-BOX Network Integration Version 2.0.1 English 24.07.2014 In this HOWTO the basic network infrastructure of the IAC-BOX is described. IAC-BOX Network Integration TITLE Contents Contents... 1 1. Hints...

More information

Cloud Performance Group 1. Cloud@Night Event. 14. Januar 2016 / Matthias Gessenay ([email protected])

Cloud Performance Group 1. Cloud@Night Event. 14. Januar 2016 / Matthias Gessenay (matthias.gessenay@corporatesoftware.ch) 1 Cloud@Night Event 14. Januar 2016 / Matthias Gessenay ([email protected]) 2 Agenda SharePoint ABC Project Server ABC What s new in O365 4 SharePoint 2016 ABC A Access App-Support

More information

An Incomplete C++ Primer. University of Wyoming MA 5310

An Incomplete C++ Primer. University of Wyoming MA 5310 An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages

More information

Lecture 7: Programming for the Arduino

Lecture 7: Programming for the Arduino Lecture 7: Programming for the Arduino - The hardware - The programming environment - Binary world, from Assembler to C - - Programming C for the Arduino: more - Programming style Lect7-Page1 The hardware

More information

Python, C++ and SWIG

Python, C++ and SWIG Robin Dunn Software Craftsman O Reilly Open Source Convention July 21 25, 2008 Slides available at http://wxpython.org/oscon2008/ Python & C++ Comparisons Each is a general purpose programming language,

More information

Reading and Writing PCD Files The PCD File Format The Grabber Interface Writing a Custom Grabber PCL :: I/O. Suat Gedikli, Nico Blodow

Reading and Writing PCD Files The PCD File Format The Grabber Interface Writing a Custom Grabber PCL :: I/O. Suat Gedikli, Nico Blodow PCL :: I/O Suat Gedikli, Nico Blodow July 1, 2011 Outline 1. Reading and Writing PCD Files 2. The PCD File Format 3. The Grabber Interface 4. Writing a Custom Grabber global functions in the namespace

More information

A Native Client for the Hadoop Distributed Filesystem by Colin P. McCabe

A Native Client for the Hadoop Distributed Filesystem by Colin P. McCabe A Native Client for the Hadoop Distributed Filesystem by Colin P. McCabe About Me I work on HDFS and related storage technologies at Cloudera. Committer on the HDFS and Hadoop projects. Previously worked

More information

Bridging Python to C++ - and vice-versa

Bridging Python to C++ - and vice-versa Bridging Python to C++ - and vice-versa Jack Jansen Centrum voor Wiskunde en Informatica [email protected] Abstract I found myself in need of good access to C++ functionality from Python. By good I mean:

More information

Open Text Social Media. Actual Status, Strategy and Roadmap

Open Text Social Media. Actual Status, Strategy and Roadmap Open Text Social Media Actual Status, Strategy and Roadmap Lars Onasch (Product Marketing) Bernfried Howe (Product Management) Martin Schwanke (Global Service) February 23, 2010 Slide 1 Copyright Open

More information

SQLITE C/C++ TUTORIAL

SQLITE C/C++ TUTORIAL http://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm SQLITE C/C++ TUTORIAL Copyright tutorialspoint.com Installation Before we start using SQLite in our C/C++ programs, we need to make sure that we have

More information

Die SharePoint-Welt für den erfahrenen.net- Entwickler. Fabian Moritz MVP Office SharePoint Server

Die SharePoint-Welt für den erfahrenen.net- Entwickler. Fabian Moritz MVP Office SharePoint Server Die SharePoint-Welt für den erfahrenen.net- Entwickler Fabian Moritz MVP Office SharePoint Server 1 SharePoint Object Model IFilter Webpart Connections Webparts Web Server Controls Custom Field Types Web

More information

6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang

6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang 6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang Today s topics Why objects? Object-oriented programming (OOP) in C++ classes fields & methods objects representation

More information

Coding conventions and C++-style

Coding conventions and C++-style Chapter 1 Coding conventions and C++-style This document provides an overview of the general coding conventions that are used throughout oomph-lib. Knowledge of these conventions will greatly facilitate

More information

17. November 2015. Übung 1 mit Swift. Architektur verteilter Anwendungen. Thorsten Kober Head Solutions ios/os X, SemVox GmbH

17. November 2015. Übung 1 mit Swift. Architektur verteilter Anwendungen. Thorsten Kober Head Solutions ios/os X, SemVox GmbH 17. November 2015 Übung 1 mit Swift Architektur verteilter Anwendungen Thorsten Kober Head Solutions ios/os X, SemVox GmbH Überblick 1 Einführung 2 Typen, Optionals und Pattern Matching 3 Speichermanagement

More information

UniFinger Engine SDK Manual (sample) Version 3.0.0

UniFinger Engine SDK Manual (sample) Version 3.0.0 UniFinger Engine SDK Manual (sample) Version 3.0.0 Copyright (C) 2007 Suprema Inc. Table of Contents Table of Contents... 1 Chapter 1. Introduction... 2 Modules... 3 Products... 3 Licensing... 3 Supported

More information

CSC230 Getting Starting in C. Tyler Bletsch

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

More information

Microsoft Nano Server «Tuva» Rinon Belegu

Microsoft Nano Server «Tuva» Rinon Belegu 1 Microsoft Nano Server «Tuva» Rinon Belegu Partner: 2 Agenda Begrüssung Vorstellung Referent Content F&A Weiterführende Kurse 3 Vorstellung Referent Rinon Belegu Microsoft Certified Trainer (AWS Technical

More information

C++ INTERVIEW QUESTIONS

C++ INTERVIEW QUESTIONS C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get

More information

Kapitel 2 Unternehmensarchitektur III

Kapitel 2 Unternehmensarchitektur III Kapitel 2 Unternehmensarchitektur III Software Architecture, Quality, and Testing FS 2015 Prof. Dr. Jana Köhler [email protected] IT Strategie Entwicklung "Foundation for Execution" "Because experts

More information

Governance, Risk und Compliance (GRC) in der Cloud

Governance, Risk und Compliance (GRC) in der Cloud Governance, Risk und Compliance (GRC) in der Cloud die richtige Entscheidung rechtzeitig - in einer komplexen und unsicheren Geschäftswelt 9. Sicherheitstag der BSI Allianz für Cybersicherheit Frank Dieter

More information

RDKit: A software suite for cheminformatics, computational chemistry, and predictive modeling

RDKit: A software suite for cheminformatics, computational chemistry, and predictive modeling RDKit: A software suite for cheminformatics, computational chemistry, and predictive modeling Greg Landrum [email protected] SourceForge Page: http://rdkit.sourceforge.net Availability Source

More information

! " # $ %& %' ( ) ) *%%+, -..*/ *%%+ - 0 ) 1 2 1

!  # $ %& %' ( ) ) *%%+, -..*/ *%%+ - 0 ) 1 2 1 !" #$%&%'())*%%+,-..*/*%%+- 0 )12 1 *!" 34 5 6 * #& ) 7 8 5)# 97&)8 5)# 9 : & ; < 5 11 8 1 5)=19 7 19 : 0 5)=1 ) & & >) ) >) 1? 5)= 19 7 19 : # )! #"&@)1 # )? 1 1#& 5)=19719:# 1 5)=9 7 9 : 11 0 #) 5 A

More information

Illustration 1: Diagram of program function and data flow

Illustration 1: Diagram of program function and data flow The contract called for creation of a random access database of plumbing shops within the near perimeter of FIU Engineering school. The database features a rating number from 1-10 to offer a guideline

More information

Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas

Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage

More information

How To Run A Test File Extension On A Rexx 4.1.1 (Unix) 4.2.1 On A Microsoft Linux 4.3.2 (Amd64) (Orchestra) (For Windows) (

How To Run A Test File Extension On A Rexx 4.1.1 (Unix) 4.2.1 On A Microsoft Linux 4.3.2 (Amd64) (Orchestra) (For Windows) ( Institut für Betriebswirtschaftslehre und Wirtschaftsinformatik Configuring Rexx Interpreter Instances from NetRexx/Java The 2012 International Rexx Symposium Rony G. Flatscher Wirtschaftsuniversität Wien

More information

Introduction to Python

Introduction to Python Introduction to Python Sophia Bethany Coban Problem Solving By Computer March 26, 2014 Introduction to Python Python is a general-purpose, high-level programming language. It offers readable codes, and

More information

Exchange Synchronization AX 2012

Exchange Synchronization AX 2012 Exchange Synchronization AX 2012 Autor... Pascal Gubler Dokument... Exchange Synchronization 2012 (EN) Erstellungsdatum... 25. September 2012 Version... 2 / 17.06.2013 Content 1 PRODUKTBESCHREIBUNG...

More information

Brauche neues Power Supply

Brauche neues Power Supply email vom DB-Server: Brauche neues Power Supply HW-Überwachung mit Enterprise Manager und Oracle Auto Service Request Elke Freymann Datacenter Architect Systems Sales Consulting Oracle Deutschland Copyright

More information

CORBA Programming with TAOX11. The C++11 CORBA Implementation

CORBA Programming with TAOX11. The C++11 CORBA Implementation CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy

More information

Kurz-Einführung Python

Kurz-Einführung Python Sommersemester 2008 Paul Graham Paul Graham The programmers you ll be able to hire to work on a Java project won t be as smart as the ones you could get to work on a project written in Python. http://www.paulgraham.com/gh.html

More information

HAML und SASS. (und COMPASS) markup haiku vs. syntactically awesome stylesheets. Tobias Adam, Jan Krutisch mindmatters GmbH & Co.

HAML und SASS. (und COMPASS) markup haiku vs. syntactically awesome stylesheets. Tobias Adam, Jan Krutisch mindmatters GmbH & Co. Mit hotfixes von Carsten Bormann 2011-02-28, 2012-03-13 HAML und SASS (und COMPASS) markup haiku vs. syntactically awesome stylesheets Tobias Adam, Jan Krutisch mindmatters GmbH & Co. KG HAML (X)HTML Abstraction

More information

Semantic Web. Semantic Web: Resource Description Framework (RDF) cont. Resource Description Framework (RDF) W3C Definition:

Semantic Web. Semantic Web: Resource Description Framework (RDF) cont. Resource Description Framework (RDF) W3C Definition: Semantic Web: The Semantic Web is an extension of the current web in which information is given well-defined meaning, better enabling computers and people to work in cooperation. Tim Berners-Lee, James

More information

Software / FileMaker / Plug-Ins Mailit 6 for FileMaker 10-13

Software / FileMaker / Plug-Ins Mailit 6 for FileMaker 10-13 Software / FileMaker / Plug-Ins Mailit 6 for FileMaker 10-13 Seite 1 / 5 Mailit 6 for FileMaker 10-13 The Ultimate Email Plug-In Integrate full email capability into your FileMaker 10-13 solutions with

More information

Exposing C++ functions and classes with Rcpp modules

Exposing C++ functions and classes with Rcpp modules Exposing C++ functions and classes with Rcpp modules Dirk Eddelbuettel Romain François Rcpp version 0.11.5 as of March 4, 2015 Abstract This note discusses Rcpp modules. Rcpp modules allow programmers

More information

Rainer Stropek software architects gmbh. Entwicklung modularer Anwendungen mit C# und dem Managed Extensibility Framework (MEF)

Rainer Stropek software architects gmbh. Entwicklung modularer Anwendungen mit C# und dem Managed Extensibility Framework (MEF) Rainer Stropek software architects gmbh Entwicklung modularer Anwendungen mit C# und dem Managed Extensibility Framework (MEF) Abstract (German) Größere Softwareprojekte werden heute üblicherweise in Teams

More information

Das GEx Client Application Interface (API)

Das GEx Client Application Interface (API) Das GEx Client Application Interface (API) solostec 31. Oktober 2009 Zur Entwicklung von Client-Komponenten, die auf dem IP-T Protokoll nach E DIN 43863-4 basieren, stellt die solostec gmbh eine Programmbibliothek

More information

Getting Started with the Internet Communications Engine

Getting Started with the Internet Communications Engine Getting Started with the Internet Communications Engine David Vriezen April 7, 2014 Contents 1 Introduction 2 2 About Ice 2 2.1 Proxies................................. 2 3 Setting Up ICE 2 4 Slices 2

More information

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive

More information

Building an Architecture Model 1. 1. Entwerfen Sie mit AxiomSys ein Kontextdiagramm, das folgendermaßen aussieht:

Building an Architecture Model 1. 1. Entwerfen Sie mit AxiomSys ein Kontextdiagramm, das folgendermaßen aussieht: Building an Architecture Model 1 1. Entwerfen Sie mit AxiomSys ein Kontextdiagramm, das folgendermaßen aussieht: Wie Ihnen aus der vergangenen Lehrveranstaltung bekannt ist, bedeuten Sterne neben den Bezeichnungen,

More information

Object Oriented Software Design II

Object Oriented Software Design II Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February

More information

PostgreSQL Functions By Example

PostgreSQL Functions By Example Postgre [email protected] credativ Group January 20, 2012 What are Functions? Introduction Uses Varieties Languages Full fledged SQL objects Many other database objects are implemented with them

More information

CSC 551: Web Programming. Fall 2001

CSC 551: Web Programming. Fall 2001 CSC 551: Web Programming Fall 2001 Java Overview! Design goals & features "platform independence, portable, secure, simple, object-oriented,! Language overview " program structure, public vs. private "instance

More information

Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)

Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer

More information

QAS DEBUG - User und Computer

QAS DEBUG - User und Computer QAS DEBUG - User und Computer Inhalt Computer Status vastool status Benutzer Login vastool list user vastool nss getpwnam vastool user checkaccess kinit su

More information

CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing

CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects

More information

ECS 165B: Database System Implementa6on Lecture 2

ECS 165B: Database System Implementa6on Lecture 2 ECS 165B: Database System Implementa6on Lecture 2 UC Davis, Spring 2011 Por6ons of slides based on earlier ones by Raghu Ramakrishnan, Johannes Gehrke, Jennifer Widom, Bertram Ludaescher, and Michael Gertz.

More information

LEARNING AGREEMENT FOR STUDIES

LEARNING AGREEMENT FOR STUDIES LEARNING AGREEMENT FOR STUDIES The Student Last name (s) First name (s) Date of birth Nationality 1 Sex [M/F] Academic year 20../20.. Study cycle EQF level 6 Subject area, Code Phone E-mail 0421 The Sending

More information

Embed Python scripting in C applications

Embed Python scripting in C applications Embed Python scripting in C applications ibm.com/developerworks Table of contents If you're viewing this document online, you can click any of the topics below to link directly to that section. 1. Before

More information

Jonathan Worthington Scarborough Linux User Group

Jonathan Worthington Scarborough Linux User Group Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.

More information

Softwareprojekt: Mobile Development Einführung Objective-C. Miao Wang, Tinosch Ganjineh Freie Universität Berlin, Institut für Informatik

Softwareprojekt: Mobile Development Einführung Objective-C. Miao Wang, Tinosch Ganjineh Freie Universität Berlin, Institut für Informatik Softwareprojekt: Mobile Development Einführung Objective-C Miao Wang, Tinosch Ganjineh Freie Universität Berlin, Institut für Informatik 21.04.2010 Agenda Organisatorisches Objective-C Basics (*) Cocoa

More information

Using AllJoyn with Apache Cordova, Python & Node

Using AllJoyn with Apache Cordova, Python & Node Using AllJoyn with Apache Cordova, Python & Node Ivan R. Judson, PhD October 2014, Microsoft 13 October 2015 AllSeen Alliance 1 Agenda 1. Background 2. Cordova Plugin 3. Language Bindings Python Bindings

More information

Binary storage of graphs and related data

Binary storage of graphs and related data EÖTVÖS LORÁND UNIVERSITY Faculty of Informatics Department of Algorithms and their Applications Binary storage of graphs and related data BSc thesis Author: Frantisek Csajka full-time student Informatics

More information

Using C to Access Data Stored in Program Space Memory on the TMS320C24x DSP

Using C to Access Data Stored in Program Space Memory on the TMS320C24x DSP Application Report SPRA380 April 2002 Using C to Access Data Stored in Program Space Memory on the TMS320C24x DSP David M. Alter DSP Applications - Semiconductor Group ABSTRACT Efficient utilization of

More information

ida.com excellence in dependable automation

ida.com excellence in dependable automation IEC 61508 Maintenance Status IEC 61508 Maintenance Projekt ist aus dem zulässigen Zeitrahmen gelaufen Viele Baustellen auch durch neue Mitglieder (Frankreich, USA, IEC 61511 Team) Bestehende Anforderungen,

More information

El Dorado Union High School District Educational Services

El Dorado Union High School District Educational Services El Dorado Union High School District Course of Study Information Page Course Title: ACE Computer Programming II (#495) Rationale: A continuum of courses, including advanced classes in technology is needed.

More information

Timebox Planning View der agile Ansatz für die visuelle Planung von System Engineering Projekt Portfolios

Timebox Planning View der agile Ansatz für die visuelle Planung von System Engineering Projekt Portfolios Agile Leadership Day 2015 Markus Giacomuzzi - Siemens Building Technologies Headquarters Zug Timebox Planning View der agile Ansatz für die visuelle Planung von System Engineering Projekt Portfolios structure

More information

RFC's und Internet- Drafts mit URN-Bezug in Zusammenhang mit der Definition von Namen. Nik Klever FB Informatik - FH Augsburg klever@fh-augsburg.

RFC's und Internet- Drafts mit URN-Bezug in Zusammenhang mit der Definition von Namen. Nik Klever FB Informatik - FH Augsburg klever@fh-augsburg. RFC's und Internet- Drafts mit URN-Bezug in Zusammenhang mit der Definition von Namen Nik Klever FB Informatik - FH [email protected] RFC's und Internet-Drafts mit URN-Bezug Namensräume Namensbezeichnungen

More information

1 Abstract Data Types Information Hiding

1 Abstract Data Types Information Hiding 1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content

More information

Crash Course in Java

Crash Course in Java Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is

More information

Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG

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

More information

SQS-TEST /Professional

SQS-TEST /Professional SQS the world s leading specialist in software quality sqs.com SQS-TEST /Professional Overview of SQS Testsuite Agenda Overview of SQS Testsuite SQS Test Center SQS Test Process Automation (TPA) SQS Test

More information

Designing and Implementing a Server Infrastructure MOC 20413

Designing and Implementing a Server Infrastructure MOC 20413 Designing and Implementing a Server Infrastructure MOC 20413 In dieser 5-tägigen Schulung erhalten Sie die Kenntnisse, welche benötigt werden, um eine physische und logische Windows Server 2012 Active

More information

Berufsakademie Mannheim University of Co-operative Education Department of Information Technology (International)

Berufsakademie Mannheim University of Co-operative Education Department of Information Technology (International) Berufsakademie Mannheim University of Co-operative Education Department of Information Technology (International) Guidelines for the Conduct of Independent (Research) Projects 5th/6th Semester 1.) Objective:

More information

I-Q SCHACHT & KOLLEGEN QUALITÄTSKONSTRUKTION GMBH ISO 26262:2011. Liste der Work Products aus der Norm

I-Q SCHACHT & KOLLEGEN QUALITÄTSKONSTRUKTION GMBH ISO 26262:2011. Liste der Work Products aus der Norm I-Q SCHACHT & KOLLEGEN QUALITÄTSKONSTRUKTION GMBH ISO 26262:2011 Liste der Work Products aus der Norm 1. Work Products in der ISO 26262:2011 1.1 Liste ISO-26262:2011, part 1 - Vocabulary no relevant work

More information

What is COM/DCOM. Distributed Object Systems 4 COM/DCOM. COM vs Corba 1. COM vs. Corba 2. Multiple inheritance vs multiple interfaces

What is COM/DCOM. Distributed Object Systems 4 COM/DCOM. COM vs Corba 1. COM vs. Corba 2. Multiple inheritance vs multiple interfaces Distributed Object Systems 4 COM/DCOM Piet van Oostrum Sept 18, 2008 What is COM/DCOM Component Object Model Components (distributed objects) à la Microsoft Mainly on Windows platforms Is used in large

More information

Stefan Engelberg (IDS Mannheim), Workshop Corpora in Lexical Research, Bucharest, Nov. 2008 [Folie 1]

Stefan Engelberg (IDS Mannheim), Workshop Corpora in Lexical Research, Bucharest, Nov. 2008 [Folie 1] Content 1. Empirical linguistics 2. Text corpora and corpus linguistics 3. Concordances 4. Application I: The German progressive 5. Part-of-speech tagging 6. Fequency analysis 7. Application II: Compounds

More information

Entwicklungsstufen des Unternehmensarchitekturmanagements

Entwicklungsstufen des Unternehmensarchitekturmanagements Entwicklungsstufen des Unternehmensarchitekturmanagements SITIC SEA Round Table Stephan Aier Dr.-Ing, Assistenzprofessor Institut für Wirtschaftsinformatik Universität St.Gallen Müller-Friedberg-Strasse

More information

W4118 Operating Systems. Junfeng Yang

W4118 Operating Systems. Junfeng Yang W4118 Operating Systems Junfeng Yang Outline Linux overview Interrupt in Linux System call in Linux What is Linux A modern, open-source OS, based on UNIX standards 1991, 0.1 MLOC, single developer Linus

More information

Review and Exploit Neglected Attack Surface in ios 8. Tielei Wang, Hao Xu, Xiaobo Chen of TEAM PANGU

Review and Exploit Neglected Attack Surface in ios 8. Tielei Wang, Hao Xu, Xiaobo Chen of TEAM PANGU Review and Exploit Neglected Attack Surface in ios 8 Tielei Wang, Hao Xu, Xiaobo Chen of TEAM PANGU BlackHat 2015 Agenda ios Security Background Review of Attack Surfaces Fuzz More IOKit and MIG System

More information

Simple C++ Programs. Engineering Problem Solving with C++, Etter/Ingber. Dev-C++ Dev-C++ Windows Friendly Exit. The C++ Programming Language

Simple C++ Programs. Engineering Problem Solving with C++, Etter/Ingber. Dev-C++ Dev-C++ Windows Friendly Exit. The C++ Programming Language Simple C++ Programs Engineering Problem Solving with C++, Etter/Ingber Chapter 2 Simple C++ Programs Program Structure Constants and Variables C++ Operators Standard Input and Output Basic Functions from

More information

Overview WebServices Web Services Choreography Languages. WebServices. Jan Krüger

Overview WebServices Web Services Choreography Languages. WebServices. Jan Krüger WebServices Bielefeld Bioinformatics Service Institute of Bioinformatics CeBiTec [email protected] RBG talk, November 2005 Overview 1 Overview 2 WebServices 3 Web Services Choreography

More information

Erste Schritte mit mysql. Der Umgang mit einer relationalen Datenbank

Erste Schritte mit mysql. Der Umgang mit einer relationalen Datenbank Erste Schritte mit mysql Der Umgang mit einer relationalen Datenbank Relationale Datenbanken Prinzip: Daten sind in Tabellen gespeichert Tabellen können verknüpft sein alter Name: RDBMS - Relational Database

More information

N3458: Simple Database Integration in C++11

N3458: Simple Database Integration in C++11 N3458: Simple Database Integration in C++11 Thomas Neumann Technische Univeristät München [email protected] 2012-10-22 Many applications make use of relational database to store and query their data. However,

More information

Binary compatibility for library developers. Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013

Binary compatibility for library developers. Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013 Binary compatibility for library developers Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013 Who am I? Open Source developer for 15 years C++ developer for 13 years Software

More information

C++ Programming Language

C++ Programming Language C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract

More information

Functional Programming in C++11

Functional Programming in C++11 Functional Programming in C++11 science + computing ag IT-Dienstleistungen und Software für anspruchsvolle Rechnernetze Tübingen München Berlin Düsseldorf An Overview Programming in a functional style

More information

C++ Wrapper Library for Firebird Embedded SQL

C++ Wrapper Library for Firebird Embedded SQL C++ Wrapper Library for Firebird Embedded SQL Written by: Eugene Wineblat, Software Developer of Network Security Team, ApriorIT Inc. www.apriorit.com 1. Introduction 2. Embedded Firebird 2.1. Limitations

More information

Testen mit Produktionsdaten Fluch oder Segen?

Testen mit Produktionsdaten Fluch oder Segen? Testen mit Produktionsdaten Fluch oder Segen? Thomas Baumann Die Mobiliar ISACA After Hours Seminar Dienstag, 30.Oktober 2012 2 Agenda PART I: Copy from Production to Test Requirements Solutions and experiences

More information

SPICE auf der Überholspur. Vergleich von ISO (TR) 15504 und Automotive SPICE

SPICE auf der Überholspur. Vergleich von ISO (TR) 15504 und Automotive SPICE SPICE auf der Überholspur Vergleich von ISO (TR) 15504 und Automotive SPICE Historie Software Process Improvement and Capability determination 1994 1995 ISO 15504 Draft SPICE wird als Projekt der ISO zur

More information

AnyWeb AG 2008 www.anyweb.ch

AnyWeb AG 2008 www.anyweb.ch HP SiteScope (End-to-End Monitoring, System Availability) Christof Madöry AnyWeb AG ITSM Practice Circle September 2008 Agenda Management Technology Agentless monitoring SiteScope in HP BTO SiteScope look

More information

2010 Users Symposium Berlin

2010 Users Symposium Berlin Amer Kakish Slide 1 Barrierefreiheit Mobilität Skalierbarkeit Übersetzbarkeit Benutzerfreundlichkeit Auto Erkennung Auto Größenanpassung Slide 2 Einbettung in Social-Networking Platformen In Wikis, Blogs

More information

Memory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example

Memory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example Announcements Memory management Assignment 2 posted, due Friday Do two of the three problems Assignment 1 graded see grades on CMS Lecture 7 CS 113 Spring 2008 2 Safe user input If you use scanf(), include

More information

Information Systems 2

Information Systems 2 Information Systems 2 Prof. Dr. Dr. L. Schmidt-Thieme MSc. André Busche Übung 9 0. Allerlei 1. Übung 2. Hands on some things 2.1 Saxon 2.2 Corba 28.06.10 2/ 0. Allerlei 1. Übung 2. Hands on some things

More information