Programmierung
Django Standalone Apps
Develop standalone Django apps to serve as the reusable building blocks for larger Django projects. This book explores best practices for publishing these apps, with special considerations for testing Django apps, and strategies for extracting existing functionality into a separate package.This jumpstart reference is divided into four distinct and sequential sections, all containing short, engaging chapters that can be read in a modular fashion, depending on your level of experience. The first section covers the structure and scope of standalone Django apps. The second section digs into questions about pulling code out of existing projects and into new standalone apps for reuse. The third section details additional, advanced technical best practices toward making standalone apps as broadly useful as possible. The fourth and final section covers strategies for managing a published Django app.Django Standalone Apps is the perfect resource for developers who have at least some prior experience working with Django web applications and want to simplify their deployments and share their knowledge as open source packages.WHAT YOU'LL LEARN* Scope a standalone Django app project for optimum usefulness* Extract code from existing projects to reuse* Test a standalone app outside of your Django project* Reuse your own code for increased delivery cadence and code quality* Review best practices for maintaining a Django app packageWHO THIS BOOK IS FORProfessional developers who work with Django. Deep expertise is not required or expected, but readers should have working familiarity with Django.Ben is cofounder of a web development consultancy and has been working professionally with Django for almost a decade. He has architected and led development on Django-based web applications including, custom content management systems, media platforms, and multi tenant back office solutions.He lives in the Rochester, NY, area, and graduated from the University of Virginia with a degree in Economics. Previously he managed the data and analytics services for a market research firm and was an IT strategy consultant for a global management consulting firm. His own standalone apps include Django Organizations, a long term project for managing multi user accounts in Django projects.Chapter 1: Defining the Scope of a Django Standalone AppChapter 2: Structuring Django Standalone AppsChapter 3: TestingChapter 4: Model MigrationsChapter 5: TemplatesChapter 6: Using Static FilesChapter 7: Namespacing in Your AppChapter 8: Creating a Basic PackageChapter 9: Scooping and Drawing BoundariesChapter 10: Separating Your AppChapter 11: Adding Your App Back InChapter 12: Handling App SettingsChapter 13: InternationalizationChapter 14: Managing Version CompatibilityChapter 15: Mixed Dependency SupportChapter 16: ModularityChapter 17: Better PackagingChapter: 18: LicensingChapter: 19: Documenting Your Standalone AppChapter 20: Additional TestingChapter 21: AutomatingChapter 22: Databases and other backend specific considerationsChapter 23: CollaboratingChapter 24: Using App Templates
Game Design und Produktion
Dieses Grundlagenlehrbuch für angehende Computerspieldesigner erläutert zunächst die allgemeinen Zusammenhänge des menschlichen Spielens. Dabei kommt es dem Autor auch darauf an, die Übergänge zu den neuen vernetzten Medien und den Gemeinschaften in den sogenannten virtuellen Räumen zu betrachten.Im weiteren Verlauf wird der Stand der Technik bezüglich der Produktion von Computerspielen beschrieben, wobei auf die Spielentwicklung (Game Design) ebenso eingegangen wird wie auf die Programmierung, Funktionsweisen und Jobprofile der Spieleindustrie. Hier liegt der Schwerpunkt auf allgemeinen Prinzipien, da die Computertechnologie einem sehr schnellen Wandel unterliegt.Das Buch verweist in Kästen und Anmerkungen auf einschlägige Literatur, Spiele und andere Medien und soll so zur Vertiefung des Gebiets anregen. Zudem gibt das Buch einen Überblick über Spielformen von Online- und Offline-Spielen und klärt Kernbegriffe des Aufbaus von Computerspielen. Anschaulich geschrieben, vermittelt dieses Lehrbuch wichtige Grundlagen des Designs und der Entwicklung von Computerspielen vor dem Hintergrund moderner spieltheoretischer Grundlagen.In der zweiten Auflage: Aktualisierung der Beispiele, neue Engines (Kapitel über die Unreal Engine), Technik, Technologie, Skills. Prof. Gunther Rehfeld lehrt am Department Medientechnik der HAW Hamburg und forscht zu Online-Computerspielen, Dramaturgie und aktivierenden Spielformaten.
Thinking in Pandas
Understand and implement big data analysis solutions in pandas with an emphasis on performance. This book strengthens your intuition for working with pandas, the Python data analysis library, by exploring its underlying implementation and data structures.Thinking in Pandas introduces the topic of big data and demonstrates concepts by looking at exciting and impactful projects that pandas helped to solve. From there, you will learn to assess your own projects by size and type to see if pandas is the appropriate library for your needs. Author Hannah Stepanek explains how to load and normalize data in pandas efficiently, and reviews some of the most commonly used loaders and several of their most powerful options. You will then learn how to access and transform data efficiently, what methods to avoid, and when to employ more advanced performance techniques. You will also go over basic data access and munging in pandas and the intuitive dictionary syntax. Choosing the right DataFrame format, working with multi-level DataFrames, and how pandas might be improved upon in the future are also covered.By the end of the book, you will have a solid understanding of how the pandas library works under the hood. Get ready to make confident decisions in your own projects by utilizing pandas—the right way.WHAT YOU WILL LEARN* Understand the underlying data structure of pandas and why it performs the way it does under certain circumstances* Discover how to use pandas to extract, transform, and load data correctly with an emphasis on performance* Choose the right DataFrame so that the data analysis is simple and efficient.* Improve performance of pandas operations with other Python librariesWHO THIS BOOK IS FORSoftware engineers with basic programming skills in Python keen on using pandas for a big data analysis project. Python software developers interested in big data.Hannah Stepanek is a software developer with a passion for performance and is an open source advocate. She has over seven years of industry experience programming in Python and spent about two of those years implementing a data analysis project using pandas.Hannah was born and raised in Corvallis, OR, and graduated from Oregon State University with a major in Electrical Computer Engineering. She enjoys engaging with the software community, often giving talks at local meetups as well as larger conferences. In early 2019, she spoke at PyCon US about the pandas library and at OpenCon Cascadia about the benefits of open source software. In her spare time she enjoys riding her horse Sophie and playing board games.
Beginning Ring Programming
Gain a gentle introduction to the world of Ring programming with clarity as a first concern using a lot of practical examples. The first part lays the foundations of the language and its basic features (data types, control structures, functions, and classes). The unique way to rigorously structure Ring programs is also explained.Then, in the second part you’ll discover Ring inputs, outputs, and what is in between. You’ll use the basic constructs of computer logic (sequence, selection, and iteration) to build simple and complex logic flows. You’ll go over the common mistakes that lead to code complexity, by example, and cover several strategies to solve them (refactoring, code cleansing, and good variable naming). Then, you’ll see a visual illustration of how Ring deals with scopes at the local, object, and global levels.In part three, you’ll play with two artifacts vital to Ring programming: functions and objects. You’ll learn how they can be composed to solve a problem and how advanced programming paradigms, such as declarative and natural, are beautifully implemented on top of them. As part of the discussion, you’ll also work on game programming. You’ll learn how you design your game declaratively, in Ring code, just as if you were designing it in visual software.Finally, the author lays out how programming can be understood in a gamified context. You will be told the truth about how gaming can be a better metaphor to achieve mastery of Ring programming.This book is for those who are passionate about writing beautiful, expressive, and learnable code. It has been designed so you can enjoy a beginner-friendly set of knowledge about Ring, and benefit from a one-stop collection of lessons learned from real-world, customer-facing programming projects.WHAT YOU WILL LEARN* Get started with Ring and master its data types, I/O, functions, and classes* Carry out structural, object-oriented, functional, declarative, natural, and meta programming in Ring* Use the full power of Ring to refactor program code and develop clean program architectures* Quickly design professional-grade video games on top of the Ring game engineWHO THIS BOOK IS FORBeginners looking for a consistent and hackable programming environment with a strong flavor of learnability and expressiveness.Mansour Ayouni is one of the leading contributors to the new Ring programming language. He wrote his first BASIC computer statement, in the mid-80s, using only pen and paper, when he was 10 years old. It wasn’t in a California garage though nor under the lights of the prestigious Evil tour of Paris, but in the rural village of Regueb in the center of Tunisia (North Africa) where there was no electricity nor computers at all. Over the years, programming took him in an otherwise impossible international journey. From Tunisia, to Niger, to Canada, he contributed to the development of dozens of software products ranging from lawyer office management solutions to banking and nuclear waste management systems. During his career, he used to oversee programmers from three cultures and lead software teams in various companies such as Whitecape, Keyrus, and Webgenetics. Now, he is a member of the Ring core team and running Kalidia Consulting helping businesses make effective software. Chapter 1: Getting Started with RingChapter 2: Data Types in RingChapter 3: Ins of RingChapter 4: Outs of RingChapter 5: Ring AlgorithmsChapter 6: Juggling with ScopesChapter 7: Functions, Objects and BeyondChapter 8: Designing Games in RingChapter 9: A Gamified Foundation for Mastering RingAppendix A: A Dialogue with Mahmoud Fayed
Advanced Perl Programming
William "Bo" Rothwell's Advanced Perl Programming continues where his previous book left off, more or less, as it guides you through advanced techniques of the Perl programming language starting with command-line options, references, and arrays and hashes from advanced data types. Next, you'll learn about typeglobs for symbolic entries.Additionally, you'll see advanced subroutine handling, then packages and namespaces. Furthermore, you'll build advanced modules and install CPAN modules. Unlike Java and C++, modules have been around in Perl for a long time now. Along the way, you'll learn and use POD mark up language for Perl documentation.Moreover, you'll get a survey of the many advanced features and data structures of the current Perl programming language. You'll also get a survey of the new features of the latest Perl 5.x release. After reading and using this book, you'll have the tools, techniques, and source code to be an expert Perl programmer.WHAT YOU WILL LEARN* Carry out command-line parsing and extract scripts * Create references; return values from a reference; work with the ref Function and strict refs* Work with advanced Perl data types using arrays, hashes, and hash of hashes * Use Typeglobs for symbol table entries * Build modules and install CPAN modules* Write documentation for Perl using POD * Work with the newest features in Perl, including the smartmatch operator, yada yada, automated regex modifiers, the CORE namespace and moreWHO THIS BOOK IS FORThose with experience with Perl or who have read Rothwell's prior books, Beginning Perl Programming and Pro Perl Programming. At the impressionable age of 14, William "Bo" Rothwell crossed paths with a TRS-80 Micro Computer System (affectionately known as a “Trash 80”). Soon after the adults responsible for Bo made the mistake of leaving him alone with the TSR-80. He immediately dismantled it and held his first computer class, showing his friends what made this “computer thing” work. Since this experience, Bo’s passion for understanding how computers work and sharing this knowledge with others has resulting in a rewarding career in IT training. His experience includes Linux, Unix, DevOps tools, and programming languages such as Perl, Python, Tcl, and BASH.Chapter One Command Line Options1.1 Introducing Command Line Options1.2 Changing Input Record Separator1.3 Create a Loop Around Your Script1.4 Editing in Place1.5 Syntax Checking1.6 Pre-appending to @INC1.7 Including Modules1.8 Command Line Parsing1.9 Displaying Configuration Information1.10 Extracting Scripts from Messages1.11 Additional Resources1.12 Lab ExercisesChapter Two References2.1 What are References?2.2 Creating References2.3 Returning the Value from a Reference2.4 The ref Function2.5 Making Anonymous References2.6 References to Functions2.7 use strict ‘refs’2.8 Additional Resources2.9 Lab ExercisesChapter Three Advanced Data Types: Arrays3.1 Review: What You Should Already Know About Arrays3.2 What You Might Know About Arrays3.3 Arrays of Arrays3.4 Creating Arrays of Arrays3.5 Accessing Values in an Array of Arrays3.6 Adding a Sub Array (Row)3.7 Adding a column3.8 Printing an Array of Arrays3.9 Additional Resources3.10 Lab ExercisesChapter Four Advanced Data Types: Hashes4.1 Review: What You Should Already Know About Hashes4.2 What You Might Know About Hashes4.3 Hashes of Hashes4.4 Creating Hashes of Hashes4.5 Accessing Values in a Hash of Hashes4.6 Other Data Structures4.7 Additional Resources4.8 Lab ExercisesChapter Five Typeglobs5.1 Symbolic Tables5.2 Typeglobs5.3 Using typeglobs5.4 References vs. Typeglobs5.5 Avoiding Aliases to Entire Identifier5.6 Making constants5.7 Passing Filehandles into Functions5.8 Redefining a Function5.9 Temporarily Redefining a Function5.10 Additional Resources5.11 Lab ExercisesChapter Six Advanced Subroutine Handling6.1 Review: What You Should Already Know About Functions6.2 What You Might Know About Functions6.3 Making Persistent Function Variables6.4 Using the caller Function6.5 Passing Arguments by Reference6.6 Determining Functions Return Data6.7 Returning Multiple Values6.8 Exception Handling6.9 Constant Functions6.10 Prototypes6.11 Additional Resources6.12 Lab ExercisesChapter Seven Packages and Namespaces7.1 Scope7.2 Creating Namespaces with the package Command7.3 Fully Qualified Package Names7.4 Nested Packages7.5 use strict 'vars'7.6 Identifiers Not Affected by Packages7.7 Determine the Current Package7.8 Packages vs. my Variables7.9 Additional Resources7.10 Lab ExercisesChapter Eight Building Modules8.1 Introduction to Perl Modules8.2 Creating a Module8.3 BEGIN and END Blocks8.4 Symbol Tables in Modules8.5 Exporting Identifiers from Modules8.6 Private Identifiers8.7 Oking Symbols to Export from Modules8.8 Module Version Numbers8.9 use vs. require8.10 A Note About Library Files8.11 Additional Resources8.12 Lab ExercisesChapter Nine Installing CPAN Modules9.1 What is CPAN?9.2 Accessing CPAN9.3 CPAN Organization9.4 Installing a CPAN Module Manually9.5 Installing CPAN Modules Using the CPAN Module9.6 Using the Perl Package Manager to Install CPAN Modules9.7 Listing What Modules are Currently Installed9.8 Additional Resources9.9 Lab ExercisesChapter Ten POD10.1 Overview of POD10.2 POD Commands10.3 POD Text10.4 POD Verbatim10.5 POD Examples10.6 Common POD Problems10.7 POD Utilities10.8 Additional Resources10.9 Lab ExercisesChapter Eleven Advanced Features11.1 Perl development environments11.2 The power of the do statement11.3 autodie11.4 String variables as files11.5 File::Spec11.6 Proper use of soft references11.7 Install modules from CPAN without admin privileges11.8 Basic testing11.9 Advanced testing11.10 Using prove11.11 BenchmarkingChapter Twelve Advanced Data Structures12.1 Introduction to Benchmarking12.2 Use the Readonly module to create constants12.3 Make large numbers more readable12.4 Make use of Scalar::Util12.5 Make use of List::Util12.6 Make use of List::MoreUtils12.7 List formatting12.8 Understand slices12.9 Make use of Hash::Util12.10 Make use of Hash::MoreUtils12.11 Smart use of subscripts12.12 Understand the advantages and disadvantages of for, foreach, grep and map12.13 Know different sort techniques12.14 Avoid using memory to store large dataChapter Thirteen New Features12.1 Perl versions12.2 The latest/greatest?12.3 Changes by version12.4 The feature pragma12.5 Make use of the Smartmatch Operator12.6 The // operator12.7 The UNITCHECK block12.8 Yada yada12.9 The autodie pragma12.10 Using each, keys, values with arrays 12.11 New Regular Expression modifiers12.12 Non-destructive substation12.13 Automating Regular Expression modifiers12.14 New feature for given12.15 Change in use feature12.16 The CORE namespace12.17 Overriding Perl keywords
Beginning PyQt
Learn GUI application development from the ground up, taking a practical approach by building simple projects that teach the fundamentals of using PyQt. Each chapter gradually moves on to teach more advanced and diverse concepts to aid you in designing interesting applications using the latest version of PyQt.You’ll start by reviewing the beginning steps of GUI development from, using different projects in every chapter to teach new widgets or concepts that will help you to build better UIs. As you follow along, you will construct more elaborate GUIs, covering topics that include storing data using the clipboard, graphics and animation, support for SQL databases, and multithreading applications. Using this knowledge, you’ll be able to build a photo editor, games, a text editor, a working web browser and an assortment of other GUIs.Beginning PyQt will guide you through the process of creating UIs to help you bring your own ideas to life. Learn what is necessary to begin making your own applications and more with PyQt!WHAT YOU'LL LEARN* Create your own cross-platform GUIs with PyQt and Python* Use PyQt’s many widgets and apply them to building real applications* Build larger applications and break the steps into smaller parts for deeper understanding* Work with complex applications in PyQt, from animation to databases and moreWHO THIS BOOK IS FORIndividuals who already have a fundamental understanding of the Python programming language and are looking to either expand their skills in Python or have a project where they need to create a UI, but may have no prior experience or no idea how to begin.Joshua Willman began using Python in 2015, when his first task was to build neural networks using machine learning libraries, including Keras and Tensorflow, for image classification. While creating large image data sets for his research, he needed to build a GUI that would simplify the workload and labeling process, which introduced him to PyQt. He currently works as a Python Developer and Instructor, designing courses to help others learn about coding in Python for game development, AI and machine learning, and programming using microcontollers. More recently, he set up the site Red Huli to explore his and others’ interests in using Python and programming for creative purposes.BEGINNING PYQTChapter 1 - Charting the CourseChapter 2 - Getting StartedChapter 3 - Adding Functions Through ButtonsChapter 4 - Learning about LayoutChapter 5 - Menus, Toolbars,and MoreChapter 6 - Styling Your GUIsChapter 7 - Creating GUIs with Qt DesignerChapter 8 - Working with the ClipboardChapter 9 - Graphics and Animation in PyQtChapter 10 - Intro to Handling DatabasesChapter 11 - Asynchronous ProgrammingChapter 12 - Extra ProjectsAppendix A - Reference Guide for PyQtAppendix B - Python Refresher
SQLScript für SAP HANA
Mit diesem Buch gelingt Ihr Einstieg in SQLScript! Machen Sie sich mit den Grundlagen der Abfragesprache vertraut, und lernen Sie die Sprachelemente und Einsatzszenarien kennen. Schritt für Schritt führt Jörg Brandeis Sie durch die Implementierung von SQLScript-Funktionen und -Prozeduren, mit denen Sie die Ablauflogik auf der Datenbank bestimmen. Sie lernen, wie Sie datenbanknah programmieren und die beste Performance aus SAP HANA herausholen. Aus dem Inhalt: SAP Web IDESQL-KonsoleDeklarative und imperative ProgrammierungLesender und schreibender DatenbankzugriffAblauflogikTabellen, Views, Sequenzen und TriggerSQL und SQLScriptABAP Managed Database ProceduresSAP HANA als EntwicklungsumgebungCode optimieren Einleitung ... 15 1. SAP HANA ... 23 1.1 ... Was ist SAP HANA? ... 24 1.2 ... Systemarchitektur ... 32 1.3 ... Organisation der Datenbankobjekte ... 35 1.4 ... Entwicklungsumgebungen ... 39 1.5 ... SQL-Konsole ... 48 2. Die ersten Schritte mit SQLScript ... 53 2.1 ... SQL vs. SQLScript ... 54 2.2 ... Grundlegende Sprachelemente ... 57 2.3 ... Modularisierung und logische Container ... 77 2.4 ... Programmbeispiel ... 97 3. Deklarative Programmierung in SQLScript ... 111 3.1 ... Tabellenvariablen ... 112 3.2 ... SELECT-Anweisung ... 114 3.3 ... Sonstige Operatoren ... 162 4. Datentypen und ihre Verarbeitung ... 167 4.1 ... Zeichenketten ... 168 4.2 ... Datum und Zeit ... 191 4.3 ... Numerische Daten ... 206 4.4 ... Binäre Datentypen ... 218 4.5 ... Konvertierungen zwischen den Datentypen ... 222 4.6 ... Datenreihen erzeugen ... 223 5. Schreibender Zugriff auf die Datenbank ... 227 5.1 ... INSERT ... 228 5.2 ... UPDATE ... 231 5.3 ... UPSERT oder REPLACE ... 233 5.4 ... MERGE INTO ... 235 5.5 ... DELETE ... 237 5.6 ... TRUNCATE TABLE ... 238 6. Imperative Programmierung ... 239 6.1 ... Variablen ... 239 6.2 ... Ablaufsteuerung mit IF und ELSE ... 257 6.3 ... Schleifen ... 261 6.4 ... Cursors ... 265 6.5 ... Arrays ... 269 6.6 ... Transaktionssteuerung ... 276 6.7 ... Dynamisches SQL ausführen ... 279 6.8 ... Fehlerbehandlung ... 285 7. Datenbankobjekte anlegen, löschen und verändern ... 291 7.1 ... Tabellen ... 292 7.2 ... Benutzerdefinierte Tabellentypen ... 298 7.3 ... Sichten (Views) ... 299 7.4 ... Sequenzen ... 301 7.5 ... Trigger ... 303 8. SQLScript in ABAP-Programmen ... 307 8.1 ... AMDP-Prozeduren ... 311 8.2 ... CDS-Tabellenfunktionen ... 325 8.3 ... AMDP-Funktionen für AMDP-Methoden ... 333 8.4 ... Alternativen zu den AMDP für den Aufruf von SQLScript-Code aus ABAP-Programmen ... 336 8.5 ... Empfehlungen ... 337 9. SQLScript in SAP BW und SAP BW/4HANA ... 339 9.1 ... Transformationsroutinen als AMDP ... 344 9.2 ... Aufeinanderfolgende Transformationen und gemischte Ausführung ... 347 9.3 ... Die generierte AMDP-Klasse ... 348 9.4 ... Die einzelnen Routinen ... 356 9.5 ... Fehlerverarbeitung und Error Stack ... 361 10. Sauberer SQLScript-Code ... 367 10.1 ... Die Lesbarkeit des Codes ... 368 10.2 ... Performance-Empfehlungen ... 382 11. Tests, Fehler- und Performanceanalyse ... 385 11.1 ... Test von SQLScript Code ... 386 11.2 ... Die Debugger für SQLScript ... 396 11.3 ... Performanceanalyse ... 411 Anhang ... 431 A ... Einrichtung einer SAP-HANA-Instanz als Entwicklungsumgebung ... 433 B ... Datenmodell: Aufgabenverwaltung ... 451 C ... Abkürzungsverzeichnis ... 455 D ... Der Autor ... 457 Index ... 459
Einführung in Java
Mit diesem Buch steigen Sie ohne Vorkenntnisse in Java und die objektorientierte Programmierung ein. Schritt für Schritt machen Sie sich mit der Sprache und ihren Konzepten vertraut. Sie lernen, in Algorithmen zu denken und Java sowie die vielen Werkzeuge Ihrer Plattform geschickt zu nutzen. Immer praxisnah und mit Gefühl für mögliche Verständnishürden: So werden auch professionelle Themen wie Testabdeckung, Multithreading und Servletentwicklung einsteigergerecht vermittelt. Schließlich schreiben Sie zeitgemäßen Code, der auch komplexe Software trägt. Ideal für Ausbildung, Studium und Beruf! Aus dem Inhalt: Die Entwicklungsumgebung einrichten und kennenlernenGrundkonzepte glasklar vorgestelltSprachmittel gründlich verstehenNeue Features einsetzenUnit Tests und Test Driven DesignDatenbanken anbindenIn Servlet-Technologie einsteigenEvents einsetzen und asynchron programmierenGUIs entwickelnGuten Code schreibenMit Dateien und Streams arbeitenIn die Entwicklung von Android-Apps einsteigen Materialien zum Buch ... 19 1. Einführung ... 21 1.1 ... Was ist Java? ... 22 1.2 ... Die Arbeitsumgebung installieren ... 28 1.3 ... Erste Schritte in NetBeans ... 30 1.4 ... Das erste Programm ... 32 1.5 ... In Algorithmen denken, in Java schreiben ... 41 1.6 ... Die Java-Klassenbibliothek ... 47 1.7 ... Dokumentieren als Gewohnheit -- Javadoc ... 50 1.8 ... JARs erstellen und ausführen ... 56 1.9 ... Mit dem Debugger arbeiten ... 61 1.10 ... Das erste eigene Projekt ... 66 1.11 ... Zusammenfassung ... 68 2. Variablen und Datentypen ... 69 2.1 ... Variablen ... 69 2.2 ... Primitivtypen ... 73 2.3 ... Objekttypen ... 87 2.4 ... Objekt-Wrapper zu Primitiven ... 91 2.5 ... Array-Typen ... 94 2.6 ... Zusammenfassung ... 96 3. Entscheidungen ... 97 3.1 ... Entweder-oder-Entscheidungen ... 97 3.2 ... Logische Verknüpfungen ... 104 3.3 ... Mehrfach verzweigen mit »switch« ... 110 3.4 ... Zusammenfassung ... 116 4. Wiederholungen ... 117 4.1 ... Bedingte Wiederholungen mit »while« ... 117 4.2 ... Abgezählte Wiederholungen -- die »for«-Schleife ... 121 4.3 ... Abbrechen und überspringen ... 123 4.4 ... Zusammenfassung ... 126 5. Klassen und Objekte ... 127 5.1 ... Klassen und Objekte ... 128 5.2 ... Access-Modifier ... 130 5.3 ... Felder ... 132 5.4 ... Methoden ... 133 5.5 ... Warum Objektorientierung? ... 142 5.6 ... Konstruktoren ... 144 5.7 ... Statische Felder und Methoden ... 148 5.8 ... Unveränderliche Werte ... 151 5.9 ... Spezielle Objektmethoden ... 154 5.10 ... Zusammenfassung ... 156 6. Objektorientierung ... 157 6.1 ... Vererbung ... 158 6.2 ... Interfaces und abstrakte Datentypen ... 171 6.3 ... Übung: Objektorientierte Modellierung ... 179 6.4 ... Innere Klassen ... 180 6.5 ... Enumerationen ... 187 6.6 ... Zusammenfassung ... 190 7. Unit Testing ... 191 7.1 ... Das JUnit-Framework ... 193 7.2 ... Fortgeschrittene Unit Tests ... 199 7.3 ... Besseres Design durch Testfälle ... 205 7.4 ... Zusammenfassung ... 208 8. Die Standardbibliothek ... 209 8.1 ... Zahlen ... 209 8.2 ... Strings ... 214 8.3 ... Reguläre Ausdrücke ... 224 8.4 ... Zeit und Datum ... 231 8.5 ... Internationalisierung und Lokalisierung ... 236 8.6 ... Zusammenfassung ... 244 9. Fehler und Ausnahmen ... 245 9.1 ... Exceptions werfen und behandeln ... 245 9.2 ... Verschiedene Arten von Exceptions ... 252 9.3 ... Invarianten, Vor- und Nachbedingungen ... 258 9.4 ... Zusammenfassung ... 260 10. Arrays und Collections ... 261 10.1 ... Arrays ... 261 10.2 ... Die for-each-Schleife ... 271 10.3 ... Variable Parameterlisten ... 271 10.4 ... Collections ... 273 10.5 ... Typisierte Collections -- Generics ... 278 10.6 ... Maps ... 288 10.7 ... Zusammenfassung ... 290 11. Lambda-Ausdrücke ... 291 11.1 ... Was sind Lambda-Ausdrücke? ... 292 11.2 ... Die Stream-API ... 304 11.3 ... Un-Werte als Objekte -- »Optional« ... 321 11.4 ... Eine Warnung zum Schluss ... 324 11.5 ... Zusammenfassung ... 325 12. Dateien, Streams und Reader ... 327 12.1 ... Dateien und Verzeichnisse ... 328 12.2 ... Reader, Writer und die »anderen« Streams ... 334 12.3 ... Objekte lesen und schreiben ... 346 12.4 ... Netzwerkkommunikation ... 349 12.5 ... Zusammenfassung ... 352 13. Multithreading ... 353 13.1 ... Threads und Runnables ... 354 13.2 ... Atomare Datentypen ... 361 13.3 ... Synchronisation ... 362 13.4 ... Fortgeschrittene Koordination zwischen Threads ... 370 13.5 ... Die Zukunft -- wortwörtlich ... 376 13.6 ... Das Speichermodell von Threads ... 381 13.7 ... Zusammenfassung ... 383 14. Servlets -- Java im Web ... 385 14.1 ... Einen Servlet-Container installieren ... 386 14.2 ... Die erste Servlet-Anwendung ... 392 14.3 ... Servlets programmieren ... 403 14.4 ... Java Server Pages ... 410 14.5 ... Langlebige Daten im Servlet -- Ablage in Session und Application ... 416 14.6 ... Fortgeschrittene Servlet-Konzepte -- Listener und Initialisierung ... 419 14.7 ... Zusammenfassung ... 422 15. Datenbanken und Entitäten ... 423 15.1 ... Was ist eine Datenbank? ... 424 15.2 ... Mit einer Datenbank über die JPA verbinden ... 431 15.3 ... Anwendung und Entitäten ... 436 15.4 ... Entitäten laden ... 439 15.5 ... Entitäten löschen ... 444 15.6 ... Beziehungen zu anderen Entitäten ... 445 15.7 ... Zusammenfassung ... 452 16. GUIs mit JavaFX ... 453 16.1 ... Einführung ... 453 16.2 ... Installation ... 454 16.3 ... Architektur von JavaFX ... 454 16.4 ... GUI-Komponenten ... 457 16.5 ... Layouts ... 468 16.6 ... GUI mit Java-API -- Urlaubsverwaltung ... 478 16.7 ... Event-Handling ... 482 16.8 ... JavaFX-Properties und Binding ... 489 16.9 ... Deklarative GUIs mit FXML ... 495 16.10 ... Layout mit CSS ... 501 16.11 ... Transformationen, Animationen und Effekte ... 505 16.12 ... Übungen ... 512 16.13 ... Zusammenfassung ... 513 17. Android ... 515 17.1 ... Einstieg in die Android-Entwicklung ... 515 17.2 ... Eine Benutzeroberfläche designen ... 528 17.3 ... Anwendungen mit mehreren Activities ... 535 17.4 ... Permissions und SystemServices ... 542 17.5 ... Apps im Play Store veröffentlichen ... 546 17.6 ... Zusammenfassung ... 546 18. Hinter den Kulissen ... 549 18.1 ... Klassenpfade und Classloading ... 549 18.2 ... Garbage Collection ... 556 18.3 ... Flexibel codieren mit der Reflection-API ... 563 18.4 ... Blick in die Zukunft ... 569 18.5 ... Zusammenfassung ... 572 19. Und dann? ... 573 19.1 ... Jakarta EE ... 574 19.2 ... Open-Source-Software ... 579 19.3 ... Ergänzende Technologien ... 580 19.4 ... Andere Sprachen ... 583 19.5 ... Programmieren Sie! ... 585 Anhang ... 587 A ... Java-Bibliotheken ... 589 B ... Lösungen zu den Übungsaufgaben ... 597 C ... Glossar ... 707 D ... Kommandozeilenparameter ... 723 Index ... 731
Datenvisualisierung - Grundlagen und Praxis
Professionelle Datenvisualisierung: So sprechen und überzeugen Ihre Daten* Herausragendes Grundlagenwerk zum Thema Datenvisualisierung * Einprägsam und anschaulich durch eine Vielzahl von guten und schlechten Beispielen* Hoher Praxisnutzen durch Tipps zu Diagrammtypen, dem Einsatz von Farben und Formen u.v.m.Wie wird Wissen, das in komplexen Datensätzen steckt, zugänglich? Durch professionelle Datenvisualisierung.Ob Data Scientist, Wissenschaftler, Analyst oder Berater oder einfach alle, die technische Dokumente oder Berichte erstellen müssen: Datenvisualisierung ist zu einer unverzichtbaren Kernkompetenz geworden.Claus O. Wilke bietet in seinem Grundlagenwerk eine systematische Einführung in die Prinzipien, Methoden und Konzepte der Datenvisualisierung - und das sehr praxisnah und anschaulich: durch solide Grundlagen und unzählige gute und schlechte Beispiele.Nach der Lektüre wissen Sie, was professionelle Abbildungen ausmacht:Welche Darstellungsmöglichkeiten gibt es? Wie entwickelt man ein aussagekräftiges Farbschema? Welcher Visualisierungstyp eignet sich am besten für die Geschichte, die Sie erzählen möchten?Wilkes Grundlagenwerk verzichtet bewusst auf Programmcode. Die beschriebenen Konzepte und Prinzipien können - ganz gleich mit welcher Visualisierungssoftware Sie arbeiten - angewendet werden. R-Nutzer finden den Code zu den Abbildungen auf GitHub.Claus O. Wilke ist Professor für Integrative Biology an der University of Texas in Austin, USA. Er hat an der Ruhr-Universität Bochum in theoretischer Physik promoviert. Claus ist Autor und Co-Autor von über 170 wissenschaftlichen Publikationen, die sich mit Themen aus den Bereichen Computational Biology, mathematische Modellierung, Bioinformatik, Evolutionsbiologie, Proteinbiochemie, Virologie und Statistik befassen. Er hat außerdem mehrere beliebte R-Pakete zur Datenvisualisierung wie cowplot und ggridges entwickelt und wirkt an der Entwicklung von ggplot2 mit.
Deep Learning - Grundlagen und Implementierung
Grundprinzipien und Konzepte neuronaler Netze systematisch und verständlich erklärt* Deep-Learning-Grundlagen für Data Scientists und Softwareentwickler mit Erfahrung im Machine Learning * Implementierung der Deep-Learning-Konzepte mit dem beliebten Framework PyTorch* Zahlreiche Codebeispiele in Python verdeutlichen die konkrete Umsetzung Dieses Buch vermittelt Ihnen das konzeptionelle und praktische Rüstzeug, um ein tiefes Verständnis für die Funktionsweise neuronaler Netze zu bekommen. Sie lernen die Grundprinzipien des Deep Learning kennen, zu deren Veranschaulichung Seth Weidman gut nachvollziehbare Konzeptmodelle entwickelt hat, die von Codebeispielen begleitet werden. Das Buch eignet sich für Data Scientists und Softwareentwickler mit Erfahrung im Machine Learning.Sie beginnen mit den Basics des Deep Learning und gelangen schnell zu den Details fortgeschrittener Architekturen, indem Sie deren Aufbau von Grund auf neu implementieren. Dabei lernen Sie mehrschichtige neuronale Netze wie Convolutional und Recurrent Neural Networks kennen. Diese neuronalen Netzwerkkonzepte setzen Sie dann mit dem beliebten Framework PyTorch praktisch um. Auf diese Weise bauen Sie ein fundiertes Wissen darüber auf, wie neuronale Netze mathematisch, rechnerisch und konzeptionell funktionieren.Seth Weidman ist Data Scientist. Er teilt seine Zeit auf zwischen der Lösung von Machine-Learning-Problemen bei Facebook und seinem Engagement für PyTorch. Zuvor war er im Bereich Machine Learning bei Trunk Club tätig und hat später Machine Learning und Deep Learning im Corporate Training Team von Metis unterrichtet. Seine Passion ist es, komplexe Konzepte einfach zu erklären.
Clean Code für Dummies
Clean Code ist eine wichtige Methode, um zu besserer Software zu kommen. Zu beachten sind Korrektheit, Verständlichkeit, Lesbarkeit und Ressourcenverbrauch. Programmieren ist aber mehr als ein Handwerk. Klarer Code ist auch Ausdruck klaren Denkens und beginnt damit schon vor der Niederschrift. Regeln sind wichtige Stützen, aber das eigenständige Denken, Entscheiden und Abwägen ersetzen sie nicht. Das Buch vermittelt handwerkliche Fertigkeiten und stellt das Programmieren in den Gesamtprozess der Softwareentwicklung. Jürgen Lampe ist IT-Berater in Eschborn in der Nähe von Frankfurt. Er hat Mathematik studiert, Prozessrechenanlagen programmiert und als Hochschullehrer an der TU Dresden gearbeitet. Über die Jahre hat er nie das Coden aufgegeben. Er kennt diverse Programmiersprachen - von Algol60 über PL/I und Pascal bis zu Java - und er kennt die Vor- und Nachteile verschiedener Programmierstile.Über den Autor 9EINLEITUNG 23Über dieses Buch 23Konventionen in diesem Buch 24Was Sie nicht lesen müssen 24Törichte Annahmen über die Leser 25Wie dieses Buch aufgebaut ist 26Symbole, die in diesem Buch verwendet werden 27Wie es weitergeht 28TEIL I: DAS CLEAN-CODE-PRINZIP 29KAPITEL 1 SOFTWARE IST CODE31Erwartungen an Software 31Probleme haben Ursachen 32Allgemeine Ursachen 32Hardwareentwicklung 33Nichts ohne Code 34Das Wichtigste in Kürze 35KAPITEL 2 DIMENSIONEN VON CODEQUALITÄT37Was bedeutet Qualität? 37Eigenschaften des Qualitätsbegriffs 37Qualitätsindikatoren 38Die Dimensionen von Codequalität 39Korrektheit des Codes 39Lesbarkeit und Wartbarkeit 40Leistungseigenschaften 40Weitere Dimensionen 41Das Qualitätsziel festlegen 41Beispiel: Der euklidische Algorithmus 42Das Wichtigste in Kürze 43KAPITEL 3 ALLES UNTER EINEN HUT – GUTE KOMPROMISSE FINDEN 45Warum gute Entscheidungen wichtig sind 45Es kommt drauf an 45Widersprüche überall 46Konflikte akzeptieren 47Entscheidungen systematisch treffen 48Konflikte erkennen 48Alternativen sammeln 48Kriterien finden 49Wahlmöglichkeiten bewerten 50Entscheiden 51Mit Augenmaß 51Das Wichtigste in Kürze 52KAPITEL 4 DIE EIGENSCHAFTEN SAUBEREN CODES55Des Clean Codes Kern 55Code als Ziel 56Professionalität 57Es geht immer weiter 58Code als Kommunikationsmittel zwischen Menschen 58Lesbarkeit 59Verständlichkeit 59Eleganz 60Gute Wartbarkeit 61Leichter durch Verständlichkeit 61Nicht ohne Test 61Zu guter Letzt 62Das Wichtigste in Kürze 63KAPITEL 5 IN DER PRAXIS: STOLPERSTEINE 65Clean Code ist schwer 65Reden wir über die Kosten 65Kurz- und mittelfristige Vorteile 66Langfristige Vorteile 66Bewertung 68Ändern bleibt schwierig 68Manchmal passt es nicht 69Frameworks 70Projektvorgaben 70Starre Abläufe 71Falsche Autoritäten 71Es liegt an Ihnen 73Das Wichtigste in Kürze 73TEIL II: AN HERAUSFORDERUNGEN WACHSEN 75KAPITEL 6 MEHR ALS HANDWERKSKUNST77Programmieren ist schwer 77Software professionell entwickeln 79Softwareentwicklung braucht Handwerk 80Handwerk allein reicht nicht 82Das Wichtigste in Kürze 83KAPITEL 7 ENTWICKELN IST (KREATIVE) WISSENSCHAFT 85Formalisiertes Wissen 85Was sind formale Theorien? 86Wann braucht es eine (neue) Theorie? 87Wie Sie zu einer Theorie kommen? 88Mentales Modell als Theorie 88Wenn es so einfach wäre: Viele Hürden 89Und dann auch noch der kleine Rest 90Konsequenzen 91Die Bedeutung des Entwicklers darf nicht unterschätzt werden 91Es werden verschiedene Qualifikationen gebraucht 92Auch die Theorie muss weiterentwickelt werden 93Das Wichtigste in Kürze 94KAPITEL 8 MODELLIERUNGSDILEMMA UND ENTSCHEIDUNGSMÜDIGKEIT 95Das Modellierungsdilemma 95Was macht ein Modell aus? 95Ein Modell für alle Anforderungen gesucht 96Und wenn es kein umfassendes Modell gibt? 98Entscheiden ermüdet 100Entwickeln heißt entscheiden 100Entscheidungskraft optimal nutzen 101Das Wichtigste in Kürze 103KAPITEL 9 FALLEN VERMEIDEN 105Erst mal loslegen 105Agil heißt nicht »kein Konzept« 105Abgrenzung ist alles 106Wenn es nicht anders geht 107Schön flexibel bleiben 108Flexible Programme 109Flexibilität bläht auf 109Die Sinnfrage 110Modularisierung übertreiben 111Davon verschwindet die Komplexität nicht 111Zerlegung will geübt sein 112Schon wieder: Kosten 113Wachsen im Korsett 113Das Wichtigste in Kürze 114TEIL III: SAUBEREN CODE SCHREIBEN 115KAPITEL 10 NAMEN SIND NICHT SCHALL UND RAUCH 117Benennungen 117Namen versus Bezeichner 118Namen versus Begriffe 118Woher nehmen? 120Lösungsdomäne 120Anwendungsdomäne 120Eigenschaften guter Namen 121Den Sinn vermitteln 121Nicht in die Irre führen 121Sinnvolle Unterschiede 122Verschlüsselungen vermeiden 123Verwendbarkeit 124Klassen und Methoden 125Die Qual der Sprachwahl 125Englisch 126Deutsch 126Keine Empfehlung 126Was zu tun ist 127Das Wichtigste in Kürze 127KAPITEL 11 REINE FORMFRAGE – FORMATIERUNG129Das Auge liest mit 129Vertikales Formatieren 131Codelänge 131Vorbild Zeitung 131Vertikale Abstände 132Vertikale Ordnung 134Horizontales Formatieren 135Zeilenlänge 135Horizontale Abstände 136Einrückungen 138Automatische Formatierung 139Vorteile 139Nachteile 140Das Wichtigste in Kürze 140KAPITEL 12 CODE ZUERST – SIND KOMMENTARE NÖTIG? 141Code allein reicht nicht 141Erklärung gesucht 141Das große Missverständnis: Code spricht nur den Computer an 142Kommentare – hilfreich oder störend? 142Kommentare lügen – oft 143Sinnvolle Kommentare 143Rechtshinweise 143Unerledigtes 143Klarstellungen und Warnungen 144Algorithmen 144Spezifikationen 144Pragmatisches 146Schlechte Kommentare 147Nichtssagendes 147Auskommentierter Code 148Unterschiedliche Sprachen 148Fehlender Bezug 148JavaDoc 149Dokumentationen 150Schönheit 151Das Wichtigste in Kürze 152KAPITEL 13 KLEINE SCHRITTE – SAUBERE METHODEN153Methoden 153Begriffliche Klärung 154Eigenschaften 154Der Inhalt 155Abstraktion 155Trennung von Bearbeitung und Abfrage 155Testen 156Die Größe 156Eine Aufgabe 156Zeilenzahl 157Schachtelungsstruktur 158Parameter 159Anzahl 160Stellung 162Parameter vermeiden 162Testen 163Flag-Parameter 163Resultate 164Rückgabewerte 164Rückgabewert null 165Ergebnisparameter 166Rückkehrcodes 167Seiteneffekte 167Auswahlanweisungen 168Alles fließt 170Das Wichtigste in Kürze 170KAPITEL 14 PASSEND SCHNEIDEN – SCHNITTSTELLEN 171Die Rolle von Schnittstellen 171Mehr als ein Interface 171Isoliert betrachtet 172Im Verbund 172Komponenten 173Interface Segregation 174Schlanke Schnittstellen 174Kohäsion 175Kombination 179Keine Missverständnisse 180Exakte Beschreibung 180Voraussetzungen aufführen 181Vollständige Definition 182Tests und Mocks 182Kein Code ohne Fremdcode 183Eine unsichtbare Grenze 184Abhängigkeiten isolieren 184Wie es gehen könnte 185Das Wichtigste in Kürze 189KAPITEL 15 OBJEKTE UND DATENSÄTZE UNTERSCHEIDEN191Was ist ein Objekt? 191Und ein Datensatz? 192Die Praxis 193Die Objekt-Datensatz-Antisymmetrie 194Java und Objektorientierung 194Prozeduraler Code 195Objektorientierter Code 197Schlussfolgerungen 199Das Gesetz von Demeter 199Internes intern halten 200Trotzdem kommunikativ sein 200Das gilt auch umgekehrt 202Aufrufketten 203Fazit 205Das Wichtigste in Kürze 205KAPITEL 16 WEGE IM DSCHUNGEL – REGELN 207Wiederholungen vermeiden 207Die Regel 207Motivation 208Umsetzung 209Schwierigkeiten 210Liefern, was verlangt wird 211Die Regel 211Motivation 212Umsetzung 212Schwierigkeiten 213Jedes für sich 213Die Regel 213Motivation 214Umsetzung 214Schwierigkeiten 214Die SOLID-Regeln 215Single Responsibility Principle – SRP 215Open Closed Principle – OCP 216Liskov Substitution Principle – LSP 217Interface Segregation Principle – ISP 217Dependency Inversion Principle – DIP 217Einfach besser 218Halte es einfach 218Geringste Überraschung 219Fazit 219Das Wichtigste in Kürze 219KAPITEL 17 FEHLER PASSIEREN – FEHLERBEHANDLUNG221Ausgangslage 221Fehlerarten 222Datenfehler 222Seltene Datenfehler 223Häufige Datenfehler 223Funktionsfehler 225Hardwarefehler 226Semantische Fehler 227Plausibilitätsprüfung 227Wertebereichs-Überschreitungen 229Keine Panik 231Das Wichtigste in Kürze 231KAPITEL 18 AUSNAHMEN REGELN – EXCEPTIONS 233Sinn und Zweck 233Checked und Unchecked Exceptions 234Kosten 235Werfen von Exceptions 235Generische Exceptions verwenden 235Spezielle Exceptions definieren 236Fangen von Exceptions 238Funktionsblöcke bestimmen 238Fachliche und technische Exceptions 239Verpacken von Exceptions 240Loggen von Exceptions 240Angemessenheit 241Das Wichtigste in Kürze 242KAPITEL 19 IMMER WEITER – NEUE SPRACHMITTEL243Wie beurteilen? 243Annotationen 245Funktion 246Anwendungsarten 246Risiken minimieren 248Lambda-Ausdrücke 248Klippen 248So vielleicht 250Streams 251Die Idee 252Anwendung 252Aber Vorsicht 253Fazit 254Spezialisierung 254Beschränkung 255Das Wichtigste in Kürze 256TEIL IV: WEGE ZUM ZIEL 257KAPITEL 20 MITEINANDER LERNEN – CODE REVIEWS 259Zweck 260Was nicht geht 260Das Potenzial 261Durchführung 262Erfolgsvoraussetzungen 262Vorbereitung 263Review-Rollen 265Review-Werkzeuge und Metriken 266Review-Bewertung 267Codequalität 267Review-Qualität 267Das Wichtigste in Kürze 268KAPITEL 21 AUS FEHLERN LERNEN 269Fehler macht jeder 269Fehler analysieren 270Fehlerursachen ermitteln 271Fehlerarten 272Priorisierung 272Denken Sie an … 273Erkenntnisse nutzen 275Code Reviews nutzen 275Ergebnisse dokumentieren 275Wiederholen: Erkenntnisse erneut erörtern 275Das Wichtigste in Kürze 276KAPITEL 22 ES GIBT IMMER WAS ZU TUN – REFACTORING 277Die Idee 277Die Praxis 278Vorbereitung 278Schritt für Schritt 280Im Großen und im Kleinen 280Ein Beispiel 281Das Wichtigste in Kürze 282TEIL V: DER TOP-TEN-TEIL 283KAPITEL 23 10 FEHLER, DIE SIE VERMEIDEN SOLLTEN 285Buch in Schrank stellen 285Nicht sofort anfangen 285Aufgeben 286Nicht streiten 286Schematisch anwenden 286Kompromisse verweigern 286Unrealistische Terminzusagen 287Überheblichkeit 287Denken, fertig zu sein 287Alles tierisch ernst nehmen 287KAPITEL 24 (MEHR ALS) 10 NÜTZLICHE QUELLEN ZUM AUFFRISCHEN UND VERTIEFEN 289Clean Code – das Buch und der Blog 289Clean Code Developer 290Software Craftsmanship 290Java Code Conventions 29097 Dinge, die jeder Programmierer wissen sollte 290The Pragmatic Bookshelf 291Prinzipien der Softwaretechnik 291Refactoring 291Code Reviews 291Codeanalyse 292Verzögerungskosten 292Project Oberon 292Stichwortverzeichnis 295
C++ für Dummies (8. Auflg.)
Die Programmierung mit C++ muss nicht schwer sein. Mit diesem Buch werden Sie schon ab dem ersten Kapitel eigene Programme schreiben und die C++-Syntax von der Pike auf lernen, verstehen und anwenden. Arnold Willemer erklärt Ihnen, wie Sie Code zu Modulen zusammenfassen, die Sie immer wieder verwenden können, und schon bald werden Sie wissen, wie man Variablen deklariert und mathematische Operationen ausführt. So ist dies das richtige Buch für Ihren Einstieg in C++. Arnold Willemer ist Programmierer und Administrator mit mehr als zwanzig Jahren Berufserfahrung. Er hat mehrere erfolgreiche Computer-Bücher geschrieben, die sich durch ihre Verständlichkeit und ihren lockeren Stil auszeichnen.EINLEITUNG 21Über dieses Buch 21Konventionen in diesem Buch 21Törichte Annahmen über den Leser 21Wie dieses Buch aufgebaut ist 22Symbole, die in diesem Buch verwendet werden 23Wie es weitergeht 24TEIL I: WIR PROGRAMMIEREN25KAPITEL 1 GRUNDGERÜST EINES PROGRAMMS27Die Funktion main() 27Kommentare 28Ausgabe für Anfänger 29Zahlenspielereien 30Übungen 31KAPITEL 2 VARIABLEN UND VERARBEITUNG33Variablendefinition 33Namensregeln 35Ganze Zahlen 36Wir rechnen 37Wertveränderungen 38Ganzzahlige Literale 41Zeichen 42Fließkommazahlen 45Symbolische Konstanten 46Aufzählungstyp enum 47Typen umtaufen 49Fallstricke beim Umgang mit Typen 49Überlauf 49Typkonvertierung und Casting 51Ganzzahlige Division 52Automatische Typbestimmung 53Zahlen ein- und ausgeben 53Ausgabestrom 53Formatierte Ausgabe 54Eingabestrom aus cin 54Übungen 55KAPITEL 3 ABFRAGE UND WIEDERHOLUNG57Verzweigungen 57Nur unter einer Bedingung: if 58Andernfalls: else 58Struktogramm 59Dangling else 61Fall für Fall: switch case 62Bedingter Ausdruck: Fragezeichen 64Boolesche Ausdrücke 65Variablen und Konstanten 65Operatoren 66Verknüpfung von booleschen Ausdrücken 67Immer diese Wiederholungen: Schleifen 71Kopfgesteuert: while 71Fußgesteuert: do… while 75Abgezählt: for 76Der Sprung als Feind der Struktur 79Der brutale Sprung: goto 80Schleifenausbruch: break 81Schleifenrücksprung: continue 82Beispiel: Größter gemeinsamer Teiler 83Mitmachbeispiel: Schleifende Hunde und Füchse 85Übungen 86TEIL II: DATENTYPEN UND -STRUKTUREN89KAPITEL 4 DAS ARRAY91Definition und Zugriff auf ein Array 91Grenzen und Größen 93Arrays lieben die for-Schleife 94Lottozahlen sollten zufällig sein 95Keine Doppelten beim Lotto 96Sortierte Lottozahlen 99Mehrere Dimensionen 102Beispiel: Bermuda 103Spielanleitung Bermuda 103Spielfeld anzeigen 103Die Schiffskoordinaten 105Übungen 106KAPITEL 5 ZEIGER UND DESSEN MÖGLICHKEITEN109Der Zeiger und die Adresse 109Arrays und Zeiger 112Zeigerarithmetik 113Wettrennen zwischen Index und Zeiger 114Klassische Zeichenketten 115Addition und Subtraktion 116Konstante Zeiger 116Der Zeiger auf gar nichts: void* 117Übungen 117KAPITEL 6 VARIABLENVERBUND STRUCT 119Ein Verbund mehrerer Variablen 119Arrays von Strukturen 121Zeiger auf Strukturen 121Beispiel: Bermuda 123Objekte dynamisch erzeugen und löschen: new und delete 124Der Befehl new 124Zur Laufzeit erzeugte Arrays 125Verkettete Listen 126TEIL III: FUNKTIONEN131KAPITEL 7 FUNKTIONEN IM EIGENBAU133Anweisungen zusammenfassen 133Funktionsparameter 135Ein Rückgabewert als Ergebnis 136Prototypen 137Noch ein paar Bemerkungen zu Parametern 138Zeiger als Parameter 138Arrays als Parameter 140Die Parameter der Funktion main 144Referenzparameter 145Parameter vorbelegen 146Variable Anzahl von Parametern 147Überladen von Funktionen 148Kurz und schnell: Inline-Funktionen 149KAPITEL 8 HILFREICHE BIBLIOTHEKSFUNKTIONEN151Zufall 151Mathematische Funktionen 153Zeitfunktionen 155KAPITEL 9 EINSATZ VON FUNKTIONEN 159Vermeidung doppelten Codes 159Top-down-Design am Beispiel Bermuda 159Vom Diagramm zum Listing 160Die Daten und die Parameter 160Initialisierung der Datenstrukturen 161Benutzereingabe 162Suche die Schiffe 162Eintrag im Spielfeld 165Ende des Spiels 165Globale, lokale und statische Variablen 166Globale Variablen 166Lokale Variablen 167Statische Variablen 167Rekursion: Selbstaufrufende Funktionen 168Fibonacci, die Kaninchen und der Goldene Schnitt 168Einbindungen 170Türme von Hanoi 171Rückruf erwünscht: Der Funktionszeiger als Parameter 173Anonym: Die Lambda-Funktion 175Übungen 176TEIL IV: ZEICHENKETTEN177KAPITEL 10 DIE STANDARDKLASSE STRING 179Zeichenkettenliterale 179Definieren und Zuweisen 180Zugriff auf einzelne Zeichen 181String-Funktionen 181Länge des Strings 181Verändern von String-Inhalten 181Suche und Informationen 182Umwandlung von Zahlen und Zeichenketten 183Vergleiche 185Ein- und Ausgabe von Strings 186Umwandlung von string in ein char-Array 187KAPITEL 11 DAS CHAR-ARRAY ALS ERBE VON C189Speichern im Array 189Der Zeiger auf char 191Die String-Bibliothek 192Strings in Zahlen konvertieren 193Zahlen in Strings konvertieren 194TEIL V: KLASSEN197KAPITEL 12 AM BEISPIEL ZU BRUCH GEHEN199Die Klasse Bruch 199Der Bruch hat eigene Funktionen 202Initialisierung durch Konstruktoren 205Konstruktor mit Parameter 207Destruktor 209Konstruktor und Destruktor bei Arrays 210Konvertierungskonstruktor 210Konvertierungsoperator 211Private Attribute 212Operatoren überladen 213Wir multiplizieren mit dem Stern 213Alle möglichen Operatoren 214Besonderheiten bei Inkrement und Dekrement 216Die Vergleichsoperatoren 217Ausgabeoperatoren und Freunde 218Der Indexoperator 220Der Aufrufoperator () 222Die Kopie von Zeigern in Klassen 222Der Zuweisungsoperator 223Kopierkonstruktor 224Statische Variablen und Funktionen in Klassen 226Statische Klassenattribute 226Statische Methoden 227Statische lokale Variable 228Konstante Parameter und Funktionen 229Übungen 230KAPITEL 13 VERERBUNG231Basisklasse 232Kompatibilität zur Basisklasse: »Ist ein« 234Zugriff nur für Erben: protected 234Zugriffsattribute der Vererbung 235Konstruktorenvererbung 237Kopierkonstruktor und Zuweisungsoperator 238Mehrfachvererbung 238Objektorientiertes Design für Bermuda 240Die Koordinate 240Das Schiff 241Die Flotte 242Das Spielfeld 245Die Spielklasse Bermuda mit Mehrfachvererbung 247Übungen 247KAPITEL 14 POLYMORPHIE UND VIRTUELLE FUNKTIONEN 249Die Mensa der Universität Norgaardholz 249Ein Objekt weiß, was es tut: Polymorphie 252Rückgriff auf die Basisklasse 253Eine abstrakte Suppe 254Die Mahlzeit als vollkommen abstrakte Klasse 255Virtueller Destruktor 256Polymorphie bei grafischen Oberflächen 257Übungen 258TEIL VI: FORTGESCHRITTENE PROGRAMMIERTECHNIKEN261KAPITEL 15 GROẞE PROGRAMMPROJEKTE263Aufteilung der Quelltexte 263Implementierung und Schnittstelle 263Doppelter Include 268Zusammenbinden der Objektdateien 269Projektsteuerung am Beispiel make 269Header-Dateien und Schnittstellen 271Deklaration und Definition 271Einbinden von Header-Dateien 273Bibliotheken 274Eigene Bibliotheken erzeugen 274Statische Bibliotheken einbinden 275Dynamische Bibliotheken 276Namensräume 278Definition eines Namensraums 278Zugriff 279Besondere Namensräume 280KAPITEL 16 KATASTROPHENSCHUTZ: FEHLER, AUSNAHMEN UND VORBEDINGUNGEN281Die klassische Fehlerbehandlung 281Ausnahmebehandlung 283try und catch 283Eigene Ausnahmen werfen 284Erstellen von Fehlerklassen 287Die Ausnahmen der Standardbibliotheken 288Vorbedingungen 290assert 290Der Compiler prüft 292KAPITEL 17 INTELLIGENTE SAMMELBEHÄLTER293Charakterlose Daten 293Generische Programmierung 295Template-Funktionen 296Template-Klassen 299Die Container-Klasse vector 302Dynamik 303Kapazität und Größe 305Grenzüberschreitung 306Iteratoren als Zeigerersatz 307Methoden des Vektors 309Die Container-Klasse deque 310Die Container-Klasse list 312Sortieren einer Liste: sort 313Eine Liste in eine andere einsortieren: merge 315Alles umdrehen: reverse 316Mengen-Container: set 317Löschen aus dem Set 317Suchen und Sortieren 318Sortierreihenfolge 318Der assoziative Container map 319Container-Adapter 321Der Container-Adapter stack 321Der Container-Adapter queue 322Iteratortypen 323Die Algorithmen der STL 324Suchen: find 325Sortieren 326Binäres Suchen 327Kopieren: copy 327Umdrehen: reverse 328Füllen: fill 329equal 329Funktionsobjekt als Parameter: find_if 329for_each 332Vereinigung und Durchschnitt 333Die Template-Klasse bitset 335TEIL VII: DAUERHAFTES ABLEGEN VON DATEN337KAPITEL 18 EIN- UND AUSGABE IN DATEIEN 339Formatierte Ausgabe im Datenstrom 339Ausgabestrom ausrichten 340Dateioperationen mit fstream 344Öffnen und Schließen 345Lesen und Schreiben sequenzieller Daten 346Binäre Daten blockweise verarbeiten 350Problembehandlung 353Exceptions 354Dateizugriffe nach ANSI-C 355KAPITEL 19 DATENBANKEN361Objektorientierter portabler Zugang: CppDB 363Installation 363Einbindung 363Verbindungsaufname zur Datenbank 364SQL-Befehle übergeben 365Auslesen mit SELECT 366Beispielhafte Person 366Datenbankbibliothek SQLite 369Einrichtung 369Programmieren mit SQLite 370Tabelle erzeugen und mit Daten füllen 371Auslesen der Daten 373TEIL VIII: GRAFISCHE FENSTERPROGRAMME GUI377KAPITEL 20 GRAFISCHE OBERFLÄCHEN379KAPITEL 21 C-API AM BEISPIEL WIN32381Hauptprogramm 382Die Fensterfunktion WndProc 382Mausverhalten 384Kontrollelemente 384Bermuda in Win32 385KAPITEL 22 OBJEKTORIENTIERT MIT WXWIDGETS391Installation von wxWidgets 391wxWidgets für Linux einrichten 392wxWidgets für Windows und Mac beschaffen 392Ein wxWidgets-Programm erstellen 393Code::Blocks unter Linux und Windows 394Ein minimales xwWidgets-Programm 395Grafik 396Grafische Kontroll- und Eingabeelemente 398Layout 400BoxSizer 400GridSizer 401FlexGridSizer 402Die Kombination mehrerer Layouts 402Bermuda in der wxWidgets-Version 403KAPITEL 23 QT409Geschichte eines portablen Frameworks 409Installation 410Linux 410Windows und Mac 410Ein Qt-Widgets-Projekt 410Der Qt-Designer 412TEIL IX: PROGRAMMIERUMGEBUNG415KAPITEL 24 COMPILER BESCHAFFEN UND EINRICHTEN417Der GNU-C++-Compiler 417Der GNU-C++-Compiler unter Linux 417Der GNU-C++-Compiler unter MS Windows 418Microsoft Visual Studio 418Projekt erstellen 419Windows Desktopassistent 421Code::Blocks 421Linux 422Windows 422Der Aufbau von Code::Blocks 422Ein Projekt anlegen 423Übersetzen und starten 424Eclipse als C++-Umgebung 424Anlegen eines Projekts 425Generieren und ausführen 425NetBeans 425Linux 426Windows 426Ein C++-Projekt erzeugen 427KAPITEL 25 PROGRAMMIERWERKZEUGE429Der Compiler und der Linker 429Compiler-Aufruf 429Compiler-Optionen 430Fehlermeldungen 431Der Präprozessor 432Einbinden von Dateien: #include 433Konstanten und Makros: #define 433Abfragen: #if 435Auf Fehlersuche mit dem Debugger 437Debuggen in der IDE 437Konsolen-Debug 438Versionsverwaltungen 439Arbeitsweise 439Subversion 441Git 443TEIL X: DER TOP-TEN-TEIL445KAPITEL 26 10 GRÜNDE, WARUM SIE C++ EINSETZEN WOLLEN 447Sie wollen native Programme schreiben 447Sie wollen sehr schlanke Programme schreiben 447Das Programm soll schnell starten 447Das Programm soll schnell laufen 447Das Programm soll direkt an eine API ankoppeln 448Sie wollen verhindern, dass jemand Ihren Source Codeaus der ausführbaren Datei rekonstruiert 448Sie müssen ganz dicht an die Maschine heran 448Sie mögen keine ideologischen Vorschriften 448Sie müssen sehr vertrackte Datenstrukturen auslesen 449Sie lieben das Hashtag-Zeichen 449KAPITEL 27 DIE 10 BELIEBTESTEN C++-FEHLER451Sie benutzen beim n-dimensionalen Array n als Index 451Ihre Schleife läuft ewig, weil Ihre Bedingung falsch formuliert ist 451Ihre Schleife läuft ewig, weil sich die Variable, die für die Bedingung geprüft wird, im Schleifenkorpus nie ändert 451Sie haben direkt hinter der Klammer von if/while/for ein Semikolon gesetzt 452Sie haben vergessen, den #include zu setzen, und wundern sich, warum die Bezeichner unbekannt sind 452Sie arbeiten mit deutschen Umlauten und verwenden kein unsigned char 452Sie haben delete aufgerufen, aber den Zeiger anschließend nicht auf nullptr gesetzt 452Sie verwenden häufiger new als delete 453Ihre Klasse enthält ein Zeigerattribut, aber es fehlt der Copy-Konstruktor und der Zuweisungsoperator 453Sie verwechseln es mit Java 453Stichwortverzeichnis 457
Spring Boot Persistence Best Practices
This book is a collection of developer code recipes and best practices for persisting data using Spring, particularly Spring Boot. The book is structured around practical recipes, where each recipe discusses a performance case or performance-related case, and almost every recipe has one or more applications. Mainly, when we try to accomplish something (e.g., read some data from the database), there are several approaches to do it, and, in order to choose the best way, you have to know the implied trades-off from a performance perspective. You’ll see that in the end, all these penalties slow down the application. Besides presenting the arguments that favor a certain choice, the application is written in Spring Boot style which is quite different than plain Hibernate.Persistence is an important set of techniques and technologies for accessing and using data, and this book demonstrates that data is mobile regardless of specific applications and contexts. In Java development, persistence is a key factor in enterprise, ecommerce, cloud and other transaction-oriented applications.After reading and using this book, you'll have the fundamentals to apply these persistence solutions into your own mission-critical enterprise Java applications that you build using Spring.WHAT YOU WILL LEARN* Shape *-to-many associations for best performances* Effectively exploit Spring Projections (DTO) * Learn best practices for batching inserts, updates and deletes * Effectively fetch parent and association in a single SELECT* Learn how to inspect Persistent Context content* Dissect pagination techniques (offset and keyset)* Handle queries, locking, schemas, Hibernate types, and moreWHO THIS BOOK IS FORAny Spring and Spring Boot developer that wants to squeeze the persistence layer performances.ANGHEL LEONARD is a Chief Technology Strategist with 20+ years of experience in the Java ecosystem. In daily work, he is focused on architecting and developing Java distributed applications that empower robust architectures, clean code, and high-performance. Also passionate about coaching, mentoring and technical leadership. He is the author of several books, videos and dozens of articles related to Java technologies.Chapter 1: AssociationsChapter 2: EntititesChapter 3: FetchingChapter 4: BatchingChapter 5: CollectionsChapter 6: Connections and TransactionsChapter 7: IdentifiersChapter 8: Calculating PropertiesChapter 9: MonitoringChapter 10: Configuring DataSource and Connection PoolChapter 11: AuditChapter 12: SchemasChapter 13: PaginationChapter 14: QueriesChapter 15: Locking16: Types and Hibernate TypesAppendix A: JPA FundamentalsAppendix B: Associations EfficiencyAppendix C: 5 SQL Performance Tips That Will Save Your DayAppendix D: How to Create Useful Database IndexesAppendix E: SQL PhenomenaAppendix F: Spring Transaction Isolation LevelAppendix G: Spring Transaction PropagationAppendix H: Understanding Flushing MechanismAppendix I: Second Level CacheAppendix J: ToolsAppendix K: Hibernate 6
Deep Learning mit TensorFlow, Keras und TensorFlow.js
Deep Learning - eine Schlüsseltechnologie der Künstlichen Intelligenz. Neuronale Netze bringen Höchstleistung, wenn sie zu Deep-Learning-Modellen verknüpft werden - vorausgesetzt, Sie machen es richtig. Große und gute Trainingsdaten beschaffen, geschickt implementieren ... lernen Sie hier, wie Sie die mächtige Technologie wirklich in Ihren Dienst nehmen. Unsere Autoren zeigen Ihnen sowohl die Arbeit mit Python und Keras als auch für den Browser mit JavaScript, HTML5 und TensorFlow.js. Aus dem Inhalt: Deep-Learning-GrundkonzepteInstallation der FrameworksVorgefertigte Modelle verwendenDatenanalyse und -vorbereitungConvolutional Networks, LSTM, RNN, Pooling ...Aufgaben eines Modells richtig festlegenEigene Modelle trainierenOverfitting und Underfitting vermeidenErgebnisse visualisieren 1. Einführung ... 15 1.1 ... Über dieses Buch ... 15 1.2 ... Ein Einblick in Deep Learning ... 17 1.3 ... Deep Learning im Alltag und in der Zukunft ... 19 2. Machine Learning und Deep Learning ... 33 2.1 ... Einführung ... 33 2.2 ... Lernansätze beim Machine Learning ... 38 2.3 ... Deep-Learning-Frameworks ... 44 2.4 ... Datenbeschaffung ... 46 2.5 ... Datasets ... 48 2.6 ... Zusammenfassung ... 65 3. Neuronale Netze ... 67 3.1 ... Aufbau und Prinzip ... 67 3.2 ... Lernprozess neuronaler Netze ... 73 3.3 ... Datenaufbereitung ... 81 3.4 ... Ein einfaches neuronales Netz ... 82 3.5 ... Netzarchitekturen ... 91 3.6 ... Bekannte Netze ... 98 3.7 ... Fallstricke beim Deep Learning ... 101 3.8 ... Zusammenfassung ... 106 4. Python und Machine-Learning-Bibliotheken ... 107 4.1 ... Installation von Python 3.7 mit Anaconda ... 108 4.2 ... Alternative Installationen von Python 3.7 ... 113 4.3 ... Programmierumgebungen ... 116 4.4 ... Jupyter Notebook ... 121 4.5 ... Python-Bibliotheken für das Machine Learning ... 126 4.6 ... Nützliche Routinen mit NumPy und Scikit-learn für ML ... 129 4.7 ... Ein zweites Machine-Learning-Beispiel ... 133 4.8 ... Zusammenfassung ... 137 5. TensorFlow: Installation und Grundlagen ... 139 5.1 ... Einführung ... 139 5.2 ... Installation ... 143 5.3 ... Google Colab: TensorFlow ohne Installation benutzen ... 153 5.4 ... Tensoren ... 154 5.5 ... Graphen ... 160 5.6 ... Benutzung der CPU und GPU ... 171 5.7 ... Erstes Beispiel: Eine lineare Regression ... 174 5.8 ... Von TensorFlow 1.x zu TensorFlow 2 ... 180 5.9 ... Zusammenfassung ... 183 6. Keras ... 185 6.1 ... Von Keras zu tf.keras ... 185 6.2 ... Erster Kontakt ... 189 6.3 ... Modelle trainieren ... 191 6.4 ... Modelle evaluieren ... 193 6.5 ... Modelle laden und exportieren ... 194 6.6 ... Keras Applications ... 197 6.7 ... Keras Callbacks ... 198 6.8 ... Projekt 1: Iris-Klassifikation mit Keras ... 200 6.9 ... Projekt 2: CNNs mit Fashion-MNIST ... 204 6.10 ... Projekt 3: Ein einfaches CNN mit dem CIFAR-10-Dataset ... 213 6.11 ... Projekt 4: Aktienkursvorhersage mit RNNs und LSTMs ... 220 6.12 ... Zusammenfassung ... 226 7. Netze und Metriken visualisieren ... 227 7.1 ... TensorBoard ... 228 7.2 ... TensorBoard.dev ... 246 7.3 ... Debugging mit TensorBoard (nur TF 1.x) ... 248 7.4 ... Der TensorBoard-Debugger mit Keras (nur TF 1.x) ... 257 7.5 ... Visualisierung mit Keras ... 259 7.6 ... Visualisierung von CNNs mit Quiver (nur mit Keras.io) ... 267 7.7 ... Interaktive Visualisierung mit Keras-Callbacks, Node.js und HTML5 selbst implementieren ... 271 7.8 ... Weitere Visualisierungsmöglichkeiten ... 281 8. TensorFlow.js ... 285 8.1 ... Anwendungsfälle ... 285 8.2 ... Installation von BrowserSync ... 288 8.3 ... Installation von TensorFlow.js ... 290 8.4 ... Konzepte ... 293 8.5 ... Ihr erstes Modell mit TensorFlow.js: Eine quadratische Regression ... 304 8.6 ... Laden und Speichern von Modellen ... 318 8.7 ... PoseNet-Modell mit TensorFlow.js ... 327 8.8 ... Eine intelligente Smart-Home-Komponente mit TensorFlow.js und Node.js ... 343 8.9 ... TensorFlow.js noch einfacher: ml5.js ... 356 9. Praxisbeispiele ... 361 9.1 ... Projekt 1: Verkehrszeichenerkennung mit Keras ... 363 9.2 ... Projekt 2: Intelligente Spurerkennung mit Keras und OpenCV ... 379 9.3 ... Projekt 3: Erkennung der Umgebung mit YOLO und TensorFlow.js bzw. ml5.js ... 392 9.4 ... Projekt 4: Haus oder Katze? Vorgefertigte Modelle mit Keras benutzen -- VGG-19 ... 403 9.5 ... Projekt 5: Buchstaben- und Ziffernerkennung mit dem Chars74K-Dataset und Datenaugmentierung ... 410 9.6 ... Projekt 6: Stimmungsanalyse mit Keras ... 418 9.7 ... Projekt 7: Sentiment-Analyse mit TensorFlow.js ... 425 9.8 ... Projekt 8: Benutzung von TensorFlow Hub ... 429 9.9 ... Projekt 9: Hyperparameter-Tuning mit TensorBoard ... 437 9.10 ... Projekt 10: CNN mit Fashion-MNIST und TensorFlow-Estimators (nur TF 1.x) ... 442 9.11 ... Allgemeine Tipps und Tricks ... 455 10. Ausblick ... 463 10.1 ... Deep Learning in der Cloud ... 463 10.2 ... Bildgenerierung mit Deep Learning ... 471 10.3 ... Musik mit Deep Learning ... 476 10.4 ... Videogenerierung mit Deep Learning ... 478 10.5 ... Deep Learning einfacher gemacht ... 480 11. Fazit ... 489 Index ... 492
Routineaufgaben mit Python automatisieren (Auflg. 2)
Praktische Programmierlösungen für Einsteiger, aktualisiert auf Python 3. In komplett neuer 2. Auflage!Wenn Sie jemals Stunden damit verbracht haben, Dateien umzubenennen oder Hunderte von Tabelleneinträgen zu aktualisieren, dann wissen Sie, wie stumpfsinnig manche Tätigkeiten sein können. Wie wäre es, den Computer dazu zu bringen, diese Arbeiten zu übernehmen?In diesem Buch lernen Sie, wie Sie mit Python Aufgaben in Sekundenschnelle erledigen können, die sonst viel Zeit in Anspruch nehmen würden. Programmiererfahrung brauchen Sie dazu nicht: Wenn Sie einmal die Grundlagen gemeistert haben, werden Sie Python-Programme schreiben, die automatisch alle möglichen praktischen Aufgaben für Sie abarbeiten:eine oder eine Vielzahl von Dateien nach Texten durchsuchenDateien und Ordner erzeugen, aktualisieren, verschieben und umbenennendas Web durchsuchen und Inhalte herunterladenExcel-Dateien aktualisieren und formatierenPDF-Dateien teilen, zusammenfügen, mit Wasserzeichen versehen und verschlüsselnErinnerungsmails und Textnachrichten verschickenOnline-Formulare ausfüllenSchritt-für-Schritt-Anleitungen führen Sie durch jedes Programm und Übungsaufgaben am Ende jedes Kapitels fordern Sie dazu auf, die Programme zu verbessern und Ihre Fähigkeiten auf ähnliche Problemstellungen zu richten.Verschwenden Sie nicht Ihre Zeit mit Aufgaben, die auch ein gut dressierter Affe erledigen könnte. Bringen Sie Ihren Computer dazu, die langweilige Arbeit zu machen!
C++20 Recipes
Discover the newest major features of C++20, including modules, concepts, spaceship operators, and smart pointers. This book is a handy code cookbook reference guide that covers the C++ core language standard as well as some of the code templates available in standard template library (STL).In C++20 Recipes: A Problem-Solution Approach, you'll find numbers, strings, dates, times, classes, exceptions, streams, flows, pointers, and more. Also, you'll see various code samples, templates for C++ algorithms, parallel processing, multithreading, and numerical processes. It also includes 3D graphics programming code. A wealth of STL templates on function objects, adapters, allocators, and extensions are also available.This is a must-have, contemporary reference for your technical library to help with just about any project that involves the C++ programming language.WHAT YOU WILL LEARN* See what's new in C++20Write modules * Work with text, numbers, and classes* Use the containers and algorithms available in the standard library* Work with templates, memory, concurrency, networking, scripting, and more* Code for 3D graphicsWHO THIS BOOK IS FORProgrammers with at least some prior experience with C++.DR. J. BURTON BROWNING earned his doctorate from North Carolina State University. He has conducted research in areas including: distance learning, programming, and instructional technology. As a life-long learner and someone who has interests in topics such as: programming, photography, robotics, car restoration, wood working, hunting, reading, fishing, and archery, he is never at a loss for something to do. The art and joy of serving as a professor suits his inquisitive nature. Dr. Browning’s previous publications include works on cross-functional learning teams (CFLT), The Utopian School (teacher-led school model), computer programming (several languages), open-source software, healthcare statistics and data mining, CNC plasma cutter operation, educational technology, biography, mobile learning, online teaching, and more.BRUCE SUTHERLAND is a video game programmer hailing from Dundee, Scotland. He graduated with a Bsc (Hons) Computer Games Technology from the University of Abertay, Dundee in Scotland, graduating in 2005. After graduating he began his first job in the games industry at 4J Studios where he worked on Star Trek: Encounters (PS2), The Elder Scrolls IV: Oblivion (PS3), Star Trek: Conquest (PS2, Wii), Ducati Moto (NDS) and AMF Pinbusters! (NDS). In July 2008 he moved from Dundee to Melbourne Australia where he joined Visceral Studios and was a software engineer on Dead Space (Xbox 360, PS3, PC), The Godfather II (Xbox 360, PS3, PC) and Dead Space 3 (Xbox 360, PS3, PC). He developed an interest in developing for Android in his spare time and writes tutorials on his blog.1. Beginning C++2. Modern C++3. Working with Text4. Working with Numbers5. Classes6. Inheritance7. The STL Containers8. The STL Algorithms9. Templates10. Memory11. Concurrency12. Networking13. Scripting14. 3D Graphics Programming
Effektiv Python programmieren
90 Wege für bessere Python-Programme Bewährte Verfahren, Tipps und Tricks für robusten, leistungsfähigen und wartungsfreundlichen Code Grundlegende Aufgaben besser und effektiver erledigen Lösungen für das Debuggen, Testen und Optimieren zur Verbesserung von Qualität und Performance Der Einstieg in die Python-Programmierung ist einfach, daher ist die Sprache auch so beliebt. Pythons einzigartige Stärken und Ausdrucksmöglichkeiten sind allerdings nicht immer offensichtlich. Zudem gibt es diverse verborgene Fallstricke, über die man leicht stolpern kann. Dieses Buch vermittelt insbesondere eine Python-typische Herangehensweise an die Programmierung. Brett Slatkin nutzt dabei die Vorzüge von Python zum Schreiben von außerordentlich stabilem und schnellem Code. Er stellt 90 bewährte Verfahren, Tipps und Tricks vor, die er anhand praxisnaher Codebeispiele erläutert. Er setzt dabei den kompakten, an Fallbeispielen orientierten Stil von Scott Meyers populärem Buch »Effektiv C++ programmieren« ein. Auf Basis seiner jahrelangen Erfahrung mit der Python-Infrastruktur bei Google demonstriert Slatkin weniger bekannte Eigenarten und Sprachelemente, die großen Einfluss auf das Verhalten des Codes und die Performance haben. Sie erfahren, wie sich grundlegende Aufgaben am besten erledigen lassen, damit Sie leichter verständlichen, wartungsfreundlicheren und einfach zu verbessernden Code schreiben können. Aus dem Inhalt: Umsetzbare Richtlinien für alle wichtigen Bereiche der Entwicklung in Python 3 mit detaillierten Erklärungen und Beispielen Funktionen so definieren, dass Code leicht wiederverwendet und Fehler vermieden werden können Bessere Verfahren und Idiome für die Verwendung von Abstraktionen und Generatorfunktionen Systemverhalten mithilfe von Klassen und Interfaces präzise definieren Stolpersteine beim Programmieren mit Metaklassen und dynamischen Attributen umgehen Effizientere und klare Ansätze für Nebenläufigkeit und parallele Ausführung Tipps und Tricks zur Nutzung von Pythons Standardmodulen Tools und Best Practices für die Zusammenarbeit mit anderen Entwicklern Lösungen für das Debuggen, Testen und Optimieren zur Verbesserung von Qualität und Performance
C# für Dummies
C# ist eine der am meisten genutzten Programmiersprachen, doch wie den Ein- oder Umstieg schaffen? Genau dabei hilft Ihnen dieses Buch. Nachdem Sie sich zunächst die notwendigen Grundlagen erarbeitet haben, lernen Sie auch alles Notwendige über LINQ, XML und ADO.NET. Anschließend werden Sie sicher durch das Schreiben Ihrer ersten eigenen .NET-Anwendung geleitet. Noch nicht genug? Kapitel zu fortgeschrittenen .NET-Techniken wie die dynamische Programmierung oder die Task Parallel Library runden das Buch ab. Steffen Steinbrecher programmiert schon seit über 15 Jahren. Nach dem Studium sammelte er mehrjährige Erfahrung in der professionellen Softwareentwicklung im .NET-Umfeld. Er lebt in der Nähe von Kaiserslautern. In seiner Freizeit betreibt er einen Blog, auf dem er hauptsächlich über verschiedene .NET-Themen schreibt.Über den Autor 11EINLEITUNG 23Über dieses Buch 23Wie dieses Buch aufgebaut ist 24Symbole, die in diesem Buch verwendet werden 26Wie es weiter geht 27TEIL I: LOS GEHT’S 29KAPITEL 1 GRUNDLAGEN UND EINFÜHRUNG31Grundlagen der Programmierung 31Warum programmieren wir eigentlich? 32Programmiersprachen 33.NET-Plattformarchitektur 37Wie funktioniert eine .NET-Sprache? 39Das .NET-Framework 42Die Programmiersprache C# 44Das Prinzip der objektorientierten Programmierung 44Objekte und ihre Klassen 44Abstraktion 47Kapselung 48Vererbung 48Polymorphie 49KAPITEL 2 ENTWICKLUNGSWERKZEUGE UND TOOLS53Ein Programm erstellen 53Microsoft Visual Studio 2019 Community Edition 59Ihr erstes eigenes Projekt 60Der Marktplatz für fertige Lösungen: NuGet 71KAPITEL 3 DAS ABC DER SPRACHE C#75Bezeichner 75Namenskonventionen 76Schlüsselwörter 78Anweisungen 79Kommentare 79Datentypen, Variablen und Konstanten 82Deklaration von Variablen 84Das Schlüsselwort var oder Typinferenz 86Konstanten deklarieren 88Zugriff und Verwendung von Variablen 89Wert- und Referenztypen 90Weitere Datentypen 97Gültigkeitsbereiche von Variablen 100Konvertieren von Datentypen 101Was ist eine Methode? 110Übergeben von Parametern 112Methoden mit Rückgabewert 115Methoden ohne Rückgabewert 117Namensräume 119Wo finde ich was? 121Verwendung von Namensräumen 122Alias für einen Namensraum 124KAPITEL 4 OPERATOREN UND PROGRAMMSTEUERUNG127Operatoren 127Rechenoperatoren 128Zuweisungsoperatoren 132Logische Operatoren 133Den Programmablauf steuern: Verzweigungen und Kontrollstrukturen 136if-Anweisung 137switch-Anweisung und -Ausdruck 144Vorgänge wiederholen: Schleifen 148for-Schleife 149while-Schleife 151do-while-Schleife 155foreach-Schleife 157Sie haben es sich anders überlegt? 158KAPITEL 5 ZEICHENFOLGEN, ARRAYS UND DATUMSWERTE161Zeichen und Zeichenfolgen 161String-Variablen deklarieren 162String-Interpolation und kombinierte Formatierung 164Zeichenfolgen analysieren 166Zeichenfolgen manipulieren 168Sonderzeichen in Zeichenfolgen 170StringBuilder: Wenn Geschwindigkeit eine Rolle spielt 172Formatierung von Zeichenfolgen 173Arrays 178Arrays deklarieren 179Arrays erzeugen 179Arrays initialisieren 180Zugriff auf Array-Elemente 182Eigenschaften und Methoden von Arrays 185Datums- und Zeitberechnungen 188Die DateTime-Struktur 188Die TimeSpan-Struktur 192Praxisbeispiele 193KAPITEL 6 OBJEKTORIENTIERTE PROGRAMMIERUNG MIT C#197Klassen, Eigenschaften und Methoden 197Klassen 198Eigenschaften 198Objekte 204Methoden und Konstruktoren 205Statische Klassen 207Vererbung 210Ober- und Unterklassen 210Methoden überschreiben 212Der Zugriff auf die Member der Basisklasse mit base 213Abstrakte Klassen 214Interfaces 216KAPITEL 7 FEHLER PASSIEREN, MACHT ABER NICHTS: AUSNAHMEBEHANDLUNG221Mit Ausnahmen umgehen 222Wie man einen Fehler »fängt«! 225Der Parameter einer catch-Klausel 226Ausnahmetypen 228Fehler auslösen 231Eigene Fehlerklassen erstellen 232KAPITEL 8 WEITERE SPRACHFEATURES 235Delegates 235Anonyme Methoden 239Lambda-Ausdrücke 240Ereignisse – was geht ab? 242Ereignisse registrieren und behandeln 243Ereignisse veröffentlichen 244Generics – generische Datentypen 247Generische Klassen, Methoden und Eigenschaften 248Generische Auflistungen 251Nette Helfer: Attribute 259Sie wollen mehr? Erweiterungsmethoden 261TEIL II: WEITERE SPRACHFEATURES VON C# 265KAPITEL 9 ZUGRIFFE AUF DAS DATEISYSTEM267Klassen für den Zugriff auf das Dateisystem 267Arbeiten mit Verzeichnissen 269Arbeiten mit Dateien 276Nicht bei der Ausnahmebehandlung sparen! 280Praxisbeispiele 282Verzeichnisgröße ermitteln 282Kopieren von Verzeichnissen 284KAPITEL 10 DATEIZUGRIFF UND STREAMS287Arbeiten mit Dateien 287Text-Dateien erstellen, lesen und ändern 288Arbeiten mit Streams 291Lesen und Schreiben 293Datei mit einem Stream schreiben 296Komprimieren von Dateien mit .NET-Klassen 297Neues ZIP-Archiv erzeugen 298Alle Dateien eines ZIP-Archivs extrahieren 300Objekte serialisieren 301Im Binärformat serialisieren 302XML 306JSON-Dateien 308KAPITEL 11 ASYNCHRONE UND PARALLELE PROGRAMMIERUNG313Grundlagen und Begrifflichkeiten 314Asynchrone Programmiermuster 318Programmieren mit Threads 318Die TPL – Task Parallel Library 331Ein gutes Team: async und await 342KAPITEL 12 DATEN ABFRAGENMIT LINQ349LINQ-Grundlagen 349Die Basis für LINQ-Abfragen 351Abfragen mit LINQ 353Die alternativen Schreibweisen von LINQ-Abfragen 358Die wichtigsten Abfrageoperatoren 359Ergebnis filtern (where-Operator) 359Ergebnis sortieren (orderby-Operator) 362Ergebnis partitionieren (skip- und take-Operator) 363Doppelte Einträge löschen (distinct-Operator) 365Aggregat-Operatoren 366Praxisbeispiele 367CSV-Datei mit LINQ einlesen 367KAPITEL 13 GRUNDLAGEN VON ADO.NET371Vorbereitungen 372Installation der Datenbank 372Beispieldaten importieren 374Datenbankzugriffe mit ADO.NET 377Verbindung zur Datenbank herstellen 378Datensätze abfragen 381Datensätze einfügen 386Datensätze aktualisieren 388Datensätze löschen 390Das DataSet und der DataAdapter 392Der DataAdapter –die Brücke zu den Daten 393Asynchrone Datenbankzugriffe 404TEIL III: EINE EIGENE C#-ANWENDUNG SCHREIBEN 411KAPITEL 14 FEHLERSUCHE UND SOFTWAREQUALITÄT413Welche Fehlerarten gibt es überhaupt? 414Fehler zur Compiletime (Übersetzungszeit) 414Fehler zur Runtime (Laufzeit) – Bugs 414Der Debugger 415Ein paar Grundlagen 415Überprüfen von Code und Variablen zur Laufzeit 416Überprüfen von Zeichenfolgen in der Schnellansicht 421Anzeigen von Rückgabewerten einer Funktion 422Attributed Debugging 423Dem Fehler auf die Schliche kommen – der Stacktrace 425Codequalität verbessern 427Suchen Sie nach roten und grünen Schlangenlinien 428Achten Sie auf die Glühbirne 430KAPITEL 15 BENUTZEROBERFLÄCHE MIT WINDOWS FORMS433Grundgerüst einer Windows-Forms-Anwendung 434Die Datei Program.cs 435Die Dateien Form1.cs und Form1.Designer.cs 436Benutzeroberfläche erstellen 439Steuerelemente verwenden 440Ereignisse von Steuerelementen 443Windows-Forms-Anwendung: Ja oder Nein? 449KAPITEL 16 MODERNE OBERFLÄCHEN MIT WPF UND XAML451Meine erste WPF-Anwendung 452XAML –Extended Application Markup Language 454Logischer und visueller Elementbaum in WPF 457Layout in WPF 458Ereignisse in WPF 470Commands 473Ressourcen in WPF 476Ressourcen in separate Datei auslagern 479Das gewisse Etwas: Styles 481Was ist ein Style? 482Templates 487Databinding –die Benutzeroberfläche mit Daten versorgen 491Die Richtung des Bindings: Wie Daten aktualisiert werden 493Der UpdateSourceTrigger: Wann Daten aktualisiert werden 494TEIL IV: FORTGESCHRITTENE TECHNIKEN IN C# UND WPF 497KAPITEL 17 FORTGESCHRITTENE TECHNIKEN RUND UM DIE WPF499Das Beispielprogramm 499Das MVVM-Entwurfsmuster 501Das Model 503Das ViewModel 503Datenbeschaffung 510Eigene Commands implementieren 511KAPITEL 18 MODULARE ANWENDUNG AUF BASIS VON C# UND WPF – EIN BEISPIEL517Die Beispielanwendung 518Vorbereitungen und Erstellung der Solution 520Styling der Anwendung 524Das Dependency-Injection-Entwurfsmuster 527Dynamische Oberflächen mit Prism-Regionen 529Erstellung eines UserControls 533Registrierung von Views 535Erstellung eines Prism-Moduls 536Anlegen des Projekts für das Modul 537Erstellen der Benutzeroberfläche 538Registrierung des Moduls 544Austausch- und wiederverwendbare Komponenten 545Registrierung und Verwendung der Klasse 547Fazit –Was haben Sie jetzt gewonnen? 549TEIL V: DER TOP-TEN-TEIL 551KAPITEL 19 ZEHN DINGE IN C#, DIE SIE WIRKLICH LERNEN UND VERWENDEN SOLLTEN!553Initialisierer für Objekte und Collections 553Automatisch implementierte Eigenschaften initialisieren 554null-coalescing Operator ?? 555String-Interpolation für dynamische Zeichenfolgen 555Null-conditional Operator 556nameof()-Ausdruck 557is- und as-Operatoren 558Zeichenfolgen mit String.IsNullOrEmpty() überprüfen 559break- und continue-Anweisung 560TryParse für die Umwandlung von Zeichenketten 561KAPITEL 20 ZEHN NÜTZLICHE OPEN-SOURCE-PROJEKTE563MahApps.Metro: Verpassen Sie Ihrer Anwendung den Metro-Style 563Modern UI for WPF (MUI) 563MaterialDesignInXamlToolkit 564Extended WPF Toolkit™ 564WPFLocalizationExtension 564ResXManager 565Prism 565Sammlung von Erweiterungsmethoden 565Modern UI Icons 566Material Design Icons 566Stichwortverzeichnis 567
Praxisbuch Unsupervised Learning
Entdecken Sie Muster in Daten, die für den Menschen nicht erkennbar sindUnsupervised Learning könnte der Schlüssel zu einer umfassenderen künstlichen Intelligenz seinVoller praktischer Techniken für die Arbeit mit ungelabelten Daten, verständlich geschrieben und mit unkomplizierten Python-BeispielenVerwendet Scikit-learn, TensorFlow und KerasEin Großteil der weltweit verfügbaren Daten ist ungelabelt. Auf diese nicht klassifizierten Daten lassen sich die Techniken des Supervised Learning, die im Machine Learning viel genutzt werden, nicht anwenden. Dagegen kann das Unsupervised Learning - auch unüberwachtes Lernen genannt - für ungelabelte Datensätze eingesetzt werden, um aussagekräftige Muster zu entdecken, die tief in den Daten verborgen sind – Muster, die für den Menschen fast unmöglich zu entdecken sind.Wie Data Scientists Unsupervised Learning für ihre Daten nutzen können, zeigt Ankur Patel in diesem Buch anhand konkreter Beispiele, die sich schnell und effektiv umsetzen lassen. Sie erfahren, wie Sie schwer zu findende Muster in Daten herausarbeiten und dadurch z.B. tiefere Einblicke in Geschäftsprozesse gewinnen. Sie lernen auch, wie Sie Anomalien erkennen, automatisches Feature Engineering durchführen oder synthetische Datensätze generieren.Ankur A. Patel ist Vice President Data Science bei 7Park Data, einem Portfolio-Unternehmen von Vista Equity Partners. Bei 7Park Data verwenden Ankur und sein Data-Science-Team alternative Daten, um Datenprodukte für Hedge-Fonds und Unternehmen sowie Machine Learning als Service (MLaaS) für Geschäftskunden zu entwickeln.
Practical Machine Learning in R
GUIDES PROFESSIONALS AND STUDENTS THROUGH THE RAPIDLY GROWING FIELD OF MACHINE LEARNING WITH HANDS-ON EXAMPLES IN THE POPULAR R PROGRAMMING LANGUAGEMachine learning—a branch of Artificial Intelligence (AI) which enables computers to improve their results and learn new approaches without explicit instructions—allows organizations to reveal patterns in their data and incorporate predictive analytics into their decision-making process. Practical Machine Learning in R provides a hands-on approach to solving business problems with intelligent, self-learning computer algorithms.Bestselling author and data analytics experts Fred Nwanganga and Mike Chapple explain what machine learning is, demonstrate its organizational benefits, and provide hands-on examples created in the R programming language. A perfect guide for professional self-taught learners or students in an introductory machine learning course, this reader-friendly book illustrates the numerous real-world business uses of machine learning approaches. Clear and detailed chapters cover data wrangling, R programming with the popular RStudio tool, classification and regression techniques, performance evaluation, and more.* Explores data management techniques, including data collection, exploration and dimensionality reduction* Covers unsupervised learning, where readers identify and summarize patterns using approaches such as apriori, eclat and clustering* Describes the principles behind the Nearest Neighbor, Decision Tree and Naive Bayes classification techniques* Explains how to evaluate and choose the right model, as well as how to improve model performance using ensemble methods such as Random Forest and XGBoostPractical Machine Learning in R is a must-have guide for business analysts, data scientists, and other professionals interested in leveraging the power of AI to solve business problems, as well as students and independent learners seeking to enter the field.FRED NWANGANGA, PHD, is an assistant teaching professor of business analytics at the University of Notre Dame's Mendoza College of Business. He has over 15 years of technology leadership experience. MIKE CHAPPLE, PHD, is associate teaching professor of information technology, analytics, and operations at the Mendoza College of Business. Mike is a bestselling author of over 25 books, and he currently serves as academic director of the University's Master of Science in Business Analytics program. About the Authors viiAbout the Technical Editors ixAcknowledgments xiIntroduction xxiPART I: GETTING STARTED 1CHAPTER 1 WHAT IS MACHINE LEARNING? 3Discovering Knowledge in Data 5Introducing Algorithms 5Artificial Intelligence, Machine Learning, and Deep Learning 6Machine Learning Techniques 7Supervised Learning 8Unsupervised Learning 12Model Selection 14Classification Techniques 14Regression Techniques 15Similarity Learning Techniques 16Model Evaluation 16Classification Errors 17Regression Errors 19Types of Error 20Partitioning Datasets 22Holdout Method 23Cross-Validation Methods 23Exercises 24CHAPTER 2 INTRODUCTION TO R AND RSTUDIO 25Welcome to R 26R and RStudio Components 27The R Language 27RStudio 28RStudio Desktop 28RStudio Server 29Exploring the RStudioEnvironment 29R Packages 38The CRAN Repository 38Installing Packages 38Loading Packages 39Package Documentation 40Writing and Running an R Script 41Data Types in R 44Vectors 45Testing Data Types 47Converting Data Types 50Missing Values 51Exercises 52CHAPTER 3 MANAGING DATA 53The Tidyverse 54Data Collection 55Key Considerations 55Collecting Ground Truth Data 55Data Relevance 55Quantity of Data 56Ethics 56Importing the Data 56Reading Comma-Delimited Files 56Reading Other Delimited Files 60Data Exploration 60Describing the Data 61Instance 61Feature 61Dimensionality 62Sparsity and Density 62Resolution 62Descriptive Statistics 63Visualizing the Data 69Comparison 69Relationship 70Distribution 72Composition 73Data Preparation 74Cleaning the Data 75Missing Values 75Noise 79Outliers 81Class Imbalance 82Transforming the Data 84Normalization 84Discretization 89Dummy Coding 89Reducing the Data 92Sampling 92Dimensionality Reduction 99Exercises 100PART II: REGRESSION 101CHAPTER 4 LINEAR REGRESSION 103Bicycle Rentals and Regression 104Relationships Between Variables 106Correlation 106Regression 114Simple Linear Regression 115Ordinary Least Squares Method 116Simple Linear Regression Model 119Evaluating the Model 120Residuals 121Coefficients 121Diagnostics 122Multiple Linear Regression 124The Multiple Linear Regression Model 124Evaluating the Model 125Residual Diagnostics 127Influential Point Analysis 130Multicollinearity 133Improving the Model 135Considering Nonlinear Relationships 135Considering Categorical Variables 137Considering Interactions Between Variables 139Selecting the Important Variables 141Strengths and Weaknesses 146Case Study: Predicting Blood Pressure 147Importing the Data 148Exploring the Data 149Fitting the Simple Linear Regression Model 151Fitting the Multiple Linear Regression Model 152Exercises 161CHAPTER 5 LOGISTIC REGRESSION 165Prospecting for Potential Donors 166Classifi cation 169Logistic Regression 170Odds Ratio 172Binomial Logistic Regression Model 176Dealing with Missing Data 178Dealing with Outliers 182Splitting the Data 187Dealing with Class Imbalance 188Training a Model 190Evaluating the Model 190Coeffi cients 193Diagnostics 195Predictive Accuracy 195Improving the Model 198Dealing with Multicollinearity 198Choosing a Cutoff Value 205Strengths and Weaknesses 206Case Study: Income Prediction 207Importing the Data 208Exploring and Preparing the Data 208Training the Model 212Evaluating the Model 215Exercises 216PART III: CLASSIFICATION 221CHAPTER 6 K-NEAREST NEIGHBORS 223Detecting Heart Disease 224k-Nearest Neighbors 226Finding the Nearest Neighbors 228Labeling Unlabeled Data 230Choosing an Appropriate k 231k-Nearest Neighbors Model 232Dealing with Missing Data 234Normalizing the Data 234Dealing with Categorical Features 235Splitting the Data 237Classifying Unlabeled Data 237Evaluating the Model 238Improving the Model 239Strengths and Weaknesses 241Case Study: Revisiting the Donor Dataset 241Importing the Data 241Exploring and Preparing the Data 242Dealing with Missing Data 243Normalizing the Data 245Splitting and Balancing the Data 246Building the Model 248Evaluating the Model 248Exercises 249CHAPTER 7 NAÏVE BAYES 251Classifying Spam Email 252Naïve Bayes 253Probability 254Joint Probability 255Conditional Probability 256Classification with Naïve Bayes 257Additive Smoothing 261Naïve Bayes Model 263Splitting the Data 266Training a Model 267Evaluating the Model 267Strengths and Weaknesses of the Naïve Bayes Classifier 269Case Study: Revisiting the Heart Disease Detection Problem 269Importing the Data 270Exploring and Preparing the Data 270Building the Model 272Evaluating the Model 273Exercises 274CHAPTER 8 DECISION TREES 277Predicting Build Permit Decisions 278Decision Trees 279Recursive Partitioning 281Entropy 285Information Gain 286Gini Impurity 290Pruning 290Building a Classification Tree Model 291Splitting the Data 294Training a Model 295Evaluating the Model 295Strengths and Weaknesses of the Decision Tree Model 298Case Study: Revisiting the Income Prediction Problem 299Importing the Data 300Exploring and Preparing the Data 300Building the Model 302Evaluating the Model 302Exercises 304PART IV: EVALUATING AND IMPROVING PERFORMANCE 305CHAPTER 9 EVALUATING PERFORMANCE 307Estimating Future Performance 308Cross-Validation 311k-Fold Cross-Validation 311Leave-One-Out Cross-Validation 315Random Cross-Validation 316Bootstrap Sampling 318Beyond Predictive Accuracy 321Kappa 323Precision and Recall 326Sensitivity and Specificity 328Visualizing Model Performance 332Receiver Operating Characteristic Curve 333Area Under the Curve 336Exercises 339CHAPTER 10 IMPROVING PERFORMANCE 341Parameter Tuning 342Automated Parameter Tuning 342Customized Parameter Tuning 348Ensemble Methods 354Bagging 355Boosting 358Stacking 361Exercises 366PART V: UNSUPERVISED LEARNING 367CHAPTER 11 DISCOVERING PATTERNS WITH ASSOCIATION RULES 369Market Basket Analysis 370Association Rules 371Identifying Strong Rules 373Support 373Confi dence 373Lift 374The Apriori Algorithm 374Discovering Association Rules 376Generating the Rules 377Evaluating the Rules 382Strengths and Weaknesses 386Case Study: Identifying Grocery Purchase Patterns 386Importing the Data 387Exploring and Preparing the Data 387Generating the Rules 389Evaluating the Rules 389Exercises 392Notes 393CHAPTER 12 GROUPING DATA WITH CLUSTERING 395Clustering 396k-Means Clustering 399Segmenting Colleges with k-Means Clustering 403Creating the Clusters 404Analyzing the Clusters 407Choosing the Right Number of Clusters 409The Elbow Method 409The Average Silhouette Method 411The Gap Statistic 412Strengths and Weaknesses of k-Means Clustering 414Case Study: Segmenting Shopping Mall Customers 415Exploring and Preparing the Data 415Clustering the Data 416Evaluating the Clusters 418Exercises 420Notes 420Index 421
Das Internet der Dinge und Künstliche Intelligenz als Game Changer
Das Internet der Dinge (IoT) und Künstliche Intelligenz (KI) bieten im Zuge der Digitalisierung große Chancen für innovative Geschäftsmodelle und Produktivitätssteigerungen von Unternehmen. Diese Chancen nutzen gegenwärtig vor allem die großen Digital-Champions und Startups. Umfassend und aktuell greifen die Autoren diese Herausforderung für etablierte Unternehmen auf. Zentrale These des Buches ist, dass diese digitalen Technologien die Spielregeln des Wettbewerbs grundlegend verändern und zu Game Changern werden. Die Autoren belegen dies in vier Blöcken: Im ersten Teil erläutern sie wichtige Begriffe. Im zweiten Teil beschreiben Timothy Kaufmann und Hans-Gerd Servatius die Entwicklung zum neuen Management 4.0-Paradigma und dessen Bausteine. Der dritte Teil beschäftigt sich mit dem Wandel der Informations- und Kommunikationstechnik hin zu einer durch IoT- und KI-Technologien geprägten digitalen Architektur. Der abschließende vierte Teil skizziert die Bausteine einer Innovationspolitik 4.0 für den digitalen Wandel, die den Rahmen für Management- und Architektur-Innovationen liefert.Dank klarer Gliederung, anschaulicher Erläuterung der neuen Konzepte und zahlreicher Beispiele aus der Praxis ist das Buch eine wichtige Orientierungshilfe für alle, die nach erfolgreichen Wegen zu einem Management 4.0 und einer digitalen Architektur suchen.TIMOTHY KAUFMANN arbeitet bei SAP als Business Development Director für neue Technologien. Er ist Mitinitiator der Open Industry 4.0 Alliance.PROF. DR. HANS-GERD SERVATIUS ist geschäftsführender Gesellschafter des Innovationsspezialisten Competivation. Daneben lehrt er an der Universität Stuttgart und der RWTH Aachen. Er ist Autor mehrerer Bücher und zahlreicher Fachartikel.Digitale Technologien verändern den Wettbewerb.- Das neue Management 4.0-Paradigma.- Digitale Geschäftsmodelle gemeinsam mit IoT- und KI-Plattformpartnern.- Integration der Objectives and Key Results (OKR-) Methode in agile Strategie- und Innovationsprozesse.- Digitaler Wandel in einer evolutionären Organisation.- Produktivitätssteigerung mit Künstlicher Intelligenz.- Eine IT-Architektur 4.0 unterstützt IoT und KI.- IoT- und KI-Architekturen.- Datengetriebene Services und die Architektur 4.0.- Geschäftsprozesse und die Architektur 4.0.- Das Wertversprechen und die Architektur 4.0.- IoT- und KI-Innovationsökosysteme und die Architektur 4.0.- Auf dem Weg zu einer Innovationspolitik 4.0.
Practical MATLAB Modeling with Simulink
Employ the essential and hands-on tools and functions of MATLAB's ordinary differential equation (ODE) and partial differential equation (PDE) packages, which are explained and demonstrated via interactive examples and case studies. This book contains dozens of simulations and solved problems via m-files/scripts and Simulink models which help you to learn programming and modeling of more difficult, complex problems that involve the use of ODEs and PDEs.You’ll become efficient with many of the built-in tools and functions of MATLAB/Simulink while solving more complex engineering and scientific computing problems that require and use differential equations. Practical MATLAB Modeling with Simulink explains various practical issues of programming and modelling.After reading and using this book, you'll be proficient at using MATLAB and applying the source code from the book's examples as templates for your own projects in data science or engineering.WHAT YOU WILL LEARN* Model complex problems using MATLAB and Simulink* Gain the programming and modeling essentials of MATLAB using ODEs and PDEs* Use numerical methods to solve 1st and 2nd order ODEs* Solve stiff, higher order, coupled, and implicit ODEs* Employ numerical methods to solve 1st and 2nd order linear PDEs* Solve stiff, higher order, coupled, and implicit PDEsWHO THIS BOOK IS FOREngineers, programmers, data scientists, and students majoring in engineering, applied/industrial math, data science, and scientific computing. This book continues where Apress' Beginning MATLAB and Simulink leaves off.Sulaymon L. Eshkabilov, PhD is currently a visiting professor at the Department of Agriculture and Biosystems, North Dakota State University, USA. He obtained his ME diploma from Tashkent Automobile Road Institute, his MSc from Rochester Institute of Technology, NY, USA and his PhD from Cybernetics Institute of Academy Sciences of Uzbekistan in 1994, 2001 and 2005, respectively. He was an associate professor at Tashkent Automobile Road Institute for December 2006 – January 2017. He also held visiting professor and researcher positions at Ohio University, USA for 2010/2011 and Johannes Kepler University, Austria in January – September 2017. He teaches courses: “MATLAB/Simulink applications for mechanical engineering and numerical analysis” and “Modeling of Engineering Systems” for undergraduate students, “Advanced MATLAB/Mechatronics” seminar/class, “Control applications”, “System identification”, “Experimentation and testing with analog and digital devices” for graduate students.His research areas are mechanical vibrations, control, mechatronics and system dynamics. He is an author of over 30 research papers published in peer reviewed journals and conference proceedings in the USA, UK, Uzbekistan, Portugal, Russian Federation, India, Germany and Egypt, and four books published in the USA, Uzbekistan and Sweden. Two of the four books are devoted to MATLAB/Simulink applications for mechanical engineering students and numerical analysis. He has worked as an external academic expert in the European Commission to assess academic projects for 2009 – 2018 and coordinated/authored five institutional joint European projects funded by the European Commission for 2003 – 2016 that involved over two dozen universities from Uzbekistan, UK, Sweden, Italy, Austria, Spain, Portugal, Romania and Belgium.PART I: ORDINARY DIFFERENTIAL EQUATIONSChapter 1: Analytical Solutions of Ordinary Differential EquationsChapter 2: Numerical Methods for First Order ODEsChapter 3: Numerical Methods for Second Order ODEsChapter 4: Stiff ODEsChapter 5: Higher Order and Coupled ODEsChapter 6: Implicit ODEsChapter 7: Comparative Analysis of ODE Solution MethodsPART II: ORDINARY DIFFERENTIAL EQUATIONS-BOUNDARY VALUE PROBLEMSChapter 8: Boundary Value ProblemsPART III: APPLICATIONS OF ORDINARY DIFFERENTIAL EQUATIONSChapter 9: Spring-Mass-Damper SystemsChapter 10: Electro-Mechanical and Mechanical SystemsChapter 11: Trajectory ProblemsChapter 12: Simulation ProblemsPART IV: PARTIAL DIFFERENTIAL EQUATIONSChapter 13: Solving Partial Differential Equations
Einstieg in C
Mit diesem kleinschrittigen Lernkurs gelingt der Einstieg in die C-Programmierung mühelos. An vielen praxiserprobten Programmbeispielen werden die Grundlagen verständlich erklärt. Übungsaufgaben helfen dabei, das erworbene Wissen zu vertiefen und anzuwenden. Das Buch eignet sich auch bestens für Einsteiger ohne Programmierkenntnisse. Aus dem Inhalt: Editor und Compiler einrichtenEinführung in die SyntaxSchleifen, Funktionen und Zeiger anwendenDaten dynamisch verwaltenAuf Dateien und Verzeichnisse zugreifenBetriebssystem ansteuernViele Praxistipps zur FehlersucheEine Datenbank mit SQLite aufbauenGUIs mit GTK+ entwickelnRaspberry Pi kennenlernen Materialien zum Buch ... 14 1. Eine erste Einführung ... 15 1.1 ... Welche Vorteile bietet C? ... 15 1.2 ... Was benötige ich zum Programmieren? ... 16 1.3 ... Wie ist dieses Buch aufgebaut? ... 16 1.4 ... Wie sollten Sie mit diesem Buch arbeiten? ... 17 1.5 ... C-Standards ... 18 1.6 ... Ubuntu Linux unter Windows ... 18 2. Unser erstes Programm ... 21 2.1 ... Wie gebe ich das Programm ein? ... 21 2.2 ... Was bedeuten die einzelnen Zeilen? ... 22 2.3 ... Das Programm wird gespeichert ... 23 2.4 ... Wie starte ich das fertige Programm? ... 24 2.5 ... Eine weitere Möglichkeit zum Starten ... 26 2.6 ... Kommentare sind wichtig ... 28 2.7 ... Eine Übungsaufgabe ... 29 3. Verschiedene Arten von Daten ... 31 3.1 ... Daten bekannt machen und speichern ... 31 3.2 ... Wie gebe ich Daten auf dem Bildschirm aus? ... 33 3.3 ... Wie kann der Benutzer seine Daten per Tastatur eingeben? ... 34 3.4 ... Berechnungen mit Operatoren ... 36 3.5 ... Entwicklung eines Programms ... 38 3.6 ... Fehler suchen ... 39 3.7 ... Eine Übungsaufgabe ... 41 4. Verschiedene Fälle in einem Programm ... 43 4.1 ... Eine einfache Bedingung mit »if« ... 43 4.2 ... Welche Bedingungen gibt es? ... 45 4.3 ... Zwei Möglichkeiten, mit »if« und »else« ... 46 4.4 ... Wie kann ich Bedingungen kombinieren? ... 47 4.5 ... Eine Übungsaufgabe ... 49 5. Programmteile wiederholen ... 51 5.1 ... Regelmäßige Wiederholungen mit »for« ... 52 5.2 ... Bedingte Wiederholungen mit »do-while« ... 54 5.3 ... Besser vorher prüfen mit »while«? ... 56 5.4 ... Tabellen formatieren ... 59 5.5 ... Eine Übungsaufgabe zu Tabellen ... 60 5.6 ... Eine Übungsaufgabe zur Eingabekontrolle ... 61 6. Programme übersichtlich aufteilen ... 63 6.1 ... Wie definiere ich eine Funktion? ... 63 6.2 ... Wie rufe ich eine Funktion auf? ... 65 6.3 ... Werte an eine Funktion übergeben ... 66 6.4 ... Ein Ergebnis von einer Funktion zurückerhalten ... 68 6.5 ... Eine Übungsaufgabe ... 69 7. Große Datenmengen speichern ... 71 7.1 ... Felder erzeugen und mit Daten füllen ... 71 7.2 ... Wie gebe ich die Daten aus? ... 73 7.3 ... Wie kann der Benutzer ein Feld füllen? ... 74 7.4 ... Eine Übungsaufgabe ... 76 8. Zeichen und Texte speichern ... 77 8.1 ... Zeichenketten erzeugen und füllen ... 77 8.2 ... Wie gebe ich eine Zeichenkette aus? ... 79 8.3 ... Wie kann der Benutzer eine Zeichenkette füllen? ... 80 8.4 ... Mehrere Zeichenketten ... 81 8.5 ... Wie kann ich Zeichenketten formatieren? ... 82 8.6 ... Eine Übungsaufgabe ... 83 9. Indirekter Zugriff mit Zeigern ... 85 9.1 ... Wie arbeite ich mit Zeigern und Adressen? ... 85 9.2 ... Wie nutze ich Zeiger bei Funktionen? ... 87 9.3 ... Wir zeigen auf Felder ... 88 9.4 ... Eine Übungsaufgabe ... 90 10. Unterschiedliche Daten zusammenfassen ... 93 10.1 ... Strukturen definieren ... 93 10.2 ... Wie erzeuge ich Strukturdaten? ... 94 10.3 ... Wie gebe ich die Daten aus? ... 95 10.4 ... Wie kann der Benutzer Strukturen füllen? ... 96 10.5 ... Mehrere Strukturdaten ... 98 10.6 ... Wie übergebe ich Strukturdaten? ... 99 10.7 ... Eine Übungsaufgabe ... 102 11. Daten auf der Festplatte ... 105 11.1 ... Wie speichere ich Daten auf der Festplatte? ... 105 11.2 ... Wie lese ich Daten von der Festplatte? ... 108 11.3 ... Eine Übungsaufgabe ... 110 12. Eine Vertiefung der bisherigen Themen ... 111 12.1 ... Verschiedene Arten von Daten ... 111 12.2 ... Verschiedene Fälle in einem Programm ... 129 12.3 ... Programmteile wiederholen ... 137 12.4 ... Programme übersichtlich aufteilen ... 145 12.5 ... Große Datenmengen speichern ... 156 12.6 ... Zeichen und Texte speichern ... 174 12.7 ... Indirekter Zugriff mit Zeigern ... 200 12.8 ... Unterschiedliche Daten zusammenfassen ... 202 12.9 ... Daten auf der Festplatte ... 207 13. Daten dynamisch im Speicher verwalten ... 227 13.1 ... Warum benötige ich dynamische Felder? ... 227 13.2 ... Eine Datenreihe dynamisch speichern ... 228 13.3 ... Die Größe eines dynamischen Felds ändern ... 230 13.4 ... Eine Tabelle dynamisch speichern ... 232 13.5 ... Wie übergebe ich ein dynamisches Feld an eine Funktion? ... 235 14. Arbeiten mit Zahlen ... 241 14.1 ... Winkelfunktionen ... 241 14.2 ... Runden, Nachkommastellen, Modulo ... 243 14.3 ... Weitere mathematische Funktionen ... 245 14.4 ... Komplexe Zahlen darstellen ... 246 14.5 ... Rechnen mit komplexen Zahlen ... 248 14.6 ... Weitere Funktionen für komplexe Zahlen ... 250 14.7 ... Bit-Operatoren ... 252 14.8 ... Umwandlung von Dualzahlen ... 255 14.9 ... Bitfelder ... 258 15. Präprozessor-Anweisungen ... 261 15.1 ... Einbinden von Dateien ... 261 15.2 ... Definitionen und Makros ... 262 15.3 ... Definitionen und Verzweigungen ... 264 15.4 ... Eine Systemweiche ... 266 16. Zugriff auf Dateien und Verzeichnisse ... 269 16.1 ... Attribute von Dateien und Verzeichnissen ... 269 16.2 ... Zugriffsrechte ändern ... 273 16.3 ... Inhalt eines Verzeichnisses ... 275 16.4 ... Inhalt eines Verzeichnisbaums ... 278 16.5 ... Dateien ändern ... 280 16.6 ... Verzeichnisse ändern ... 281 17. Umgang mit Datum und Uhrzeit ... 283 17.1 ... Weltzeit ausgeben ... 283 17.2 ... Lokale Zeit ausgeben und formatieren ... 285 17.3 ... Zeitangaben erzeugen ... 287 17.4 ... Zeitspanne messen ... 289 17.5 ... Zeit abwarten ... 291 17.6 ... Alter berechnen ... 292 18. Kommunikation mit dem Betriebssystem ... 295 18.1 ... Wie übergebe ich Daten an ein Programm? ... 295 18.2 ... Wie nutze ich die Rückgabe eines Programms? ... 297 18.3 ... Systemkommandos ausführen ... 299 19. Datenbanken ... 301 19.1 ... Aufbau einer Datenbank ... 301 19.2 ... Datenbanken mit SQLite ... 302 19.3 ... Datenbank und Tabelle erzeugen ... 303 19.4 ... Datensätze einfügen ... 305 19.5 ... Anzeigen der Datensätze ... 307 19.6 ... Auswahl von Datensätzen und Feldern ... 309 19.7 ... Auswahl mit Platzhaltern ... 312 19.8 ... Auswahl nach Eingabe ... 314 19.9 ... Sortieren der Ausgabe ... 316 19.10 ... Ändern von Datensätzen ... 318 19.11 ... Löschen von Datensätzen ... 319 20. Beispielprojekte ... 323 20.1 ... Lernspiel: Hauptstädte der EU ... 323 20.2 ... Lernspiel: Kopfrechnen ... 329 20.3 ... Ausgabe von Morsezeichen ... 337 20.4 ... Spiel Mastermind ... 344 21. Grafische Benutzeroberflächen mit GTK+ ... 351 21.1 ... Datentypen der »Glib« ... 352 21.2 ... Zeichenketten mit »GString« ... 353 21.3 ... Felder mit GArray ... 355 21.4 ... Die erste Benutzeroberfläche ... 361 21.5 ... Eigenschaften setzen und abrufen ... 364 21.6 ... Ereignisfunktionen ... 365 21.7 ... Positionierung von Widgets ... 367 21.8 ... Auswahl- und Eingabe-Widgets ... 369 A. Installationen ... 375 B. Hilfestellungen und Übersichten ... 399 C. Lösungen der Übungsaufgaben ... 411 Index ... 425
Jakarta EE Recipes
Take a problem-solution approach to programming enterprise Java applications and microservices for cloud-based solutions, enterprise database applications, and even small business web applications. This book provides effective and proven code snippets that you can immediately use to accomplish just about any task that you may encounter. You can feel confident using the reliable solutions that are demonstrated in this book in your personal or corporate environment.Java EE was made open source under the Eclipse Foundation, and Jakarta EE is the new name for what used to be termed the Java Enterprise Edition Platform. This book helps you rejuvenate your Java expertise and put the platform’s latest capabilities to use in quickly developing robust applications. If you are new to Jakarta EE, this book will help you learn features of the platform, and benefit from one of the most widely used and powerful technologies available for application development today.Examples in JAKARTA EE RECIPES highlight Jakarta EE’s capabilities, helping you to build streamlined and reliable applications using the latest in Java technologies. The book takes a problem-solution approach in which each section introduces a common programming problem, showing you how to best solve that problem using the latest features in Jakarta EE. Solutions are presented in the form of working code examples that you can download and use immediately in your own projects. Clear descriptions are given so you can understand and learn to build further on the solutions that are provided. This is the ideal book for the code-focused programmer interested in keeping up with the future of enterprise development on the Java Platform.WHAT YOU WILL LEARN* Develop enterprise Java applications using the now open source Jakarta EE platform* Create great-looking user interfaces using Jakarta Server Faces and the Eclipse Krazo framework* Build database applications using Jakarta Enterprise Beans and Jakarta RESTFul web services* Automate testing through cohesive test suites built on Arquillian for Jakarta EE applications* Deploy microservices applications in cloud environments using Docker* Secure applications utilizing the Jakarta EE Security API and JSON Web TokensWHO THIS BOOK IS FORJava developers interested in quickly finding effective and proven solutions without reading through a lengthy manual and scrubbing for techniquesJOSH JUNEAU is a professional application developer who enjoys working with database technology and learning new languages. He is a seasoned professional in Java SE and Java EE development, and brings strong database experience to the table as well. His interest in Java for developing web-based solutions has led to a passion of Java technology as a whole, including other languages on the JVM. In his spare time, Josh enjoys spending time with his wife and five wonderful children at his home in rural Illinois. 1. Servlets and Java Server Pages2. JavaServer Faces Fundamentals3. Advanced JavaServer Faces4. Eclipse Krazo5. JDBC With Jakarta EE6. Object-Relational Mapping7. Jakarta NoSQL8. Enterprise JavaBeans9. Java Persistence Query Language10. Bean Validation11. Contexts and Dependency Injection12. Java Message Service13. RESTful Web Services14. WebSockets and JSON15. Security16. Concurrency and Batch17. Deploying to Containers