Programmierung
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
Generatives Deep Learning
Generative Modelle haben sich zu einem der spannendsten Themenbereiche der Künstlichen Intelligenz entwickelt: Mit generativem Deep Learning ist es inzwischen möglich, einer Maschine das Malen, Schreiben oder auch das Komponieren von Musik beizubringen – kreative Fähigkeiten, die bisher dem Menschen vorbehalten waren. Mit diesem praxisnahen Buch können Data Scientists einige der eindrucksvollsten generativen Deep-Learning-Modelle nachbilden, wie z.B. Generative Adversarial Networks (GANs), Variational Autoencoder (VAEs), Encoder-Decoder- sowie World-Modelle. David Foster vermittelt zunächst die Grundlagen des Deep Learning mit Keras und veranschaulicht die Funktionsweise jeder Methode, bevor er zu einigen der modernsten Algorithmen auf diesem Gebiet vorstößt. Die zahlreichen praktischen Beispiele und Tipps helfen Ihnen herauszufinden, wie Ihre Modelle noch effizienter lernen und noch kreativer werden können. - Entdecken Sie, wie Variational Autoencoder den Gesichtsausdruck auf Fotos verändern können - Erstellen Sie praktische GAN-Beispiele von Grund auf und nutzen Sie CycleGAN zur Stilübertragung und MuseGAN zum Generieren von Musik - Verwenden Sie rekurrente generative Modelle, um Text zu erzeugen, und lernen Sie, wie Sie diese Modelle mit dem Attention-Mechanismus verbessern können - Erfahren Sie, wie generatives Deep Learning Agenten dabei unterstützen kann, Aufgaben im Rahmen des Reinforcement Learning zu erfüllen - Lernen Sie die Architektur von Transformern (BERT, GPT-2) und Bilderzeugungsmodellen wie ProGAN und StyleGAN kennen "Dieses Buch ist eine leicht zugängliche Einführung in das Deep-Learning-Toolkit für generatives Modellieren. Wenn Sie ein kreativer Praktiker sind, der es liebt, an Code zu basteln, und Deep Learning für eigene Aufgaben nutzen möchte, dann ist dieses Buch genau das Richtige für Sie." — David Ha, Research Scientist bei Google Brain
Python Ge-Packt
* SCHNELLER ZUGRIFF AUF MODULE, KLASSEN UND FUNKTIONEN* TKINTER, DATENBANKEN, OOP UND INTERNETPROGRAMMIERUNG* FÜR DIE VERSION PYTHON 3.8PYTHON GE-PACKT – DIE PRAKTISCHE REFERENZMit dieser Referenz erhalten Sie effiziente Unterstützung bei der Programmierung mit Python 3 – klar strukturiert zum Nachschlagen. In 24 thematisch gegliederten Kapiteln werden die wichtigsten Module detailliert und praxisbezogen erläutert: angefangen bei grundlegenden Elementen wie Datentypen, Operatoren und Standardfunktionen bis hin zu Spezialthemen wie der Schnittstelle zum Laufzeit- und Betriebssystem, Generatoren, GUI-Programmierung mit tkinter, PIL, Logging, Kontextmanagement, XML und Dezimalarithmetik. Darüber hinaus finden Sie kompakte Darstellungen der Umsetzung von objektorientierter Programmierung, WSGI, CGI- und Internetprogrammierung (E-Mail, FTP, Telnet, HTTP) sowie der Datenbankanbindung (MySQL, SQLite).Die Erläuterungen werden ergänzt durch übersichtliche Tabellen, UML-Diagramme und zahlreiche leicht nachvollziehbare Beispiele, die Anregungen und Lösungen für eigene Programmieraufgaben liefern.Michael Weigend ist Informatiklehrer und hat bereits mehrere Bücher zum Raspberry Pi und zu Python geschrieben.
Refactoring
* UMFASSEND ÜBERARBEITETE UND AKTUALISIERTE NEUAUFLAGE DES STANDARDWERKS IN VOLLSTÄNDIG NEUER ÜBERSETZUNG* VERBESSERUNGSMÖGLICHKEITEN VON BESTEHENDER SOFTWARE ANHAND VON CODE-SMELLS ERKENNEN UND CODE EFFIZIENT ÜBERARBEITEN* UMFASSENDER KATALOG VON REFACTORING-METHODEN MIT CODE-BEISPIELEN IN JAVASCRIPTSeit mehr als zwanzig Jahren greifen erfahrene Programmierer rund um den Globus auf dieses Buch zurück, um bestehenden Code zu verbessern und leichter lesbar zu machen sowie Software besser warten und erweitern zu können.In diesem umfassenden Standardwerk zeigt Ihnen Martin Fowler, was die Vorteile von Refactoring sind, wie Sie verbesserungsbedürftigen Code erkennen und wie Sie ein Refactoring - unabhängig von der verwendeten Programmiersprache - erfolgreich durchführen. In einem umfangreichen Katalog gibt Fowler Ihnen verschiedene Refactoring-Methoden mit ausführlicher Erläuterung, Motivation, Vorgehensweise und einfachen Beispielen in JavaScript an die Hand.Darüber hinaus behandelt er insbesondere folgende Schwerpunkte:* Allgemeine Prinzipien und Durchführung des Refactorings* Refactoring anwenden, um die Lesbarkeit, Wartbarkeit und Erweiterbarkeit von Programmen zu verbessern* Code-Smells erkennen, die auf Verbesserungsmöglichkeiten durch Refactoring hinweisen* Entwicklung zuverlässiger Tests für das Refactoring* Erkennen von Fallstricken und notwendigen Kompromissen bei der Durchführung eines RefactoringsDiese vollständig neu übersetzte Ausgabe wurde von Grund auf überarbeitet, um den maßgeblichen Veränderungen der modernen Programmierung Rechnung zu tragen. Sie enthält einen aktualisierten Katalog von Refactoring-Methoden sowie neue Beispiele für einen funktionalen Programmieransatz.AUS DEM INHALT:* Definition und Grund-lagen von Refactoring* Der richtige Zeitpunkt für ein Refactoring* Verbesserungsbedürftigen Code erkennen (Code-Smells)* Tests und selbsttestender Code* Umfangreicher Refactoring-Katalog:* Kapselung* Verschiebungen* Daten organisieren* Bedingungen vereinfachen* Refactoring von APIs* Umgang mit VererbungAMAZON-LESERSTIMME ZUR VORAUFLAGE:»Dieses Buch gibt einen sehr guten Einstieg in das Refactoring und hält auch eine übersichtliche, gut erklärte Sammlung von Refactoring-Patterns parat. Ein Buch, das sich jeder Programmierer unters Kopfkissen legen sollte.«Martin Fowler ist Chief Scientist bei ThoughtWorks sowie Autor, Speaker und Consultant auf dem Gebiet der Softwareentwicklung. Er konzentriert sich auf die Entwicklung von Unternehmenssoftware und beschäftigt sich damit, was ein gutes Design auszeichnet und mit welchen Verfahren es umgesetzt werden kann.
Docker Praxiseinstieg
* Docker-Images und -Container verwenden * Container deployen und debuggen * Einsatz von Tools: Docker Swarm, Kubernetes, Amazon EC2 Container Services Linux-Container besitzen das Potenzial, das Deployment von Applikationen für verschiedene Umgebungen stark zu verändern. Dieses Buch weist Ihnen den Weg zu einer funktionierenden Docker-Umgebung. Die Autoren zeigen Ihnen, wie Sie Docker-Images Ihrer Anwendungen inklusive aller Abhängigkeiten erstellen, wie Sie diese testen, deployen und skalieren können, und wie Sie die Container in der Produktivumgebung pflegen und warten. Dabei kommen Themen wie die Einrichtung, das Testen und das Deployment von Docker-Anwendungen ebenso zur Sprache wie das Debugging eines laufenden Systems. Mit diesem Buch werden Sie verstehen, was Docker wirklich leistet, welche Relevanz es hat, wie Sie es zum Laufen bekommen, wie Sie damit Ihre Anwendungen deployen können und was erforderlich ist, um es in einer Produktivumgebung einzusetzen. Die Autoren dieses Buches sind in dem Unternehmen New Relic für die Sicherstellung der Stabilität der dort entwickelten Anwendungen zuständig und lassen Sie an ihren im praktischen Umgang mit Docker gesammelten Erfahrungen teilhaben. Ihre Zielsetzung lautet, Sie von ihren Erkenntnissen profitieren zu lassen und davor zu bewahren, dieselben Rückschläge hinnehmen zu müssen, die den Autoren in diesem Kontext widerfahren sind. Aus dem Inhalt: * Einfachere Handhabung der Abhängigkeiten und des Deployments von Anwendungen mit Docker * Docker-Architektur und Optimierung des Workflows * Installation unter Linux, macOS und Windows * Einsatz von Docker-Images und -Containern * Das Kommandozeilentool docker * Praxisnahe Verfahren für das Deployment und das Testen von Linux-Containern in Produktivumgebungen * Container-Debugging * Einsatz von Docker Compose * Deployment skalierbarer Container in Produktivumgebungen * Weiterführende Themen: * Deployment-Tools * Vernetzung * Orchestrierung * Sicherheitsaspekte * Konfiguration Karl Matthias war als Entwickler, Systemadministrator und Netzwerktechniker für Start-ups und verschiedene Fortune-500-Unternehmen tätig. Sean P. Kane war lange als IT-Techniker tätig und hat in sehr breit gefächerten Industriebranchen (Biotechnologie, Verteidigungswesen, Hightech-Unternehmen) viele verschiedene Posten bekleidet.
Alexa Skills programmieren für Amazon Echo & Co.
* EINFACHER EINSTIEG IN DIE PROGRAMMIERUNG VON ALEXA SKILLS MIT JAVASCRIPT* NUTZERANTWORTEN SPEICHERN UND VERARBEITEN, BILDER UND AUDIOFILES EINBINDEN, FORTGESCHRITTENES DIALOGMANAGEMENT, ANBINDUNG EXTERNER APIS U.V.M.* SKILLS BEKANNT MACHEN UND DAMIT GELD VERDIENENÜber 11 Millionen Menschen in Deutschland nutzen Amazon Alexa aktiv und das Potenzial der verfügbaren Skills ist noch lange nicht ausgeschöpft. Egal, ob Sie experimentierfreudiger Privatanwender oder professioneller Programmierer sind - wenn Sie einen Skill für Amazon Alexa entwickeln möchten und bereits erste Erfahrungen mit JavaScript haben, ist dieses Buch genau das richtige für Sie.Anhand verschiedener Praxisbeispiele zeigt der Autor, wie Sie mit der Alexa Developer Console und Node.js ganz einfach Ihren ersten Skill erstellen und Schritt für Schritt um neue Funktionen erweitern. Dank des AWS-Promotional-Credits-Programms ist das für Entwickler völlig kostenlos möglich.Sie lernen, Nutzerantworten zu speichern und zu verarbeiten, Skill Cards für die Ausgabe in der Alexa App zu erstellen und Alexa mit verschiedenen Stimmen sprechen zu lassen. Für alle, die noch einen Schritt weitergehen wollen, beschreibt der Autor das fortgeschrittene Dialogmanagement, das Erstellen von Skills mit der AWS Cloud sowie die Nutzung externer Informationen, beispielsweise für das Abrufen von Wetterdaten oder Versenden von E-Mails.Abschließend zeigt der Autor Ihnen Schritt für Schritt, wie Sie einen Eintrag im Alexa Skill Store erstellen und gibt Ihnen praktische Tipps für die Veröffentlichung und die Monetarisierung Ihrer Skills an die Hand.AUS DEM INHALT:* Skills in der Alexa Developer Console anlegen* Skill-Code automatisch erzeugen* JSON-Sprachmodell und Skill-Logik in Node.js* Antworten speichern mit DynamoDB* Skills testen* Debugging mit CloudWatch* SSML-Tags zur Veränderung der Aussprache* Skill Cards für die Alexa App erstellen* Audiodateien, Bilder und Videos einbinden* Antworten auf Plausibilität prüfen und Kontextwechsel* Alexa Skills in der AWS Cloud* Externe Informationen nutzen und APIs einbinden* Skills zertifizieren und veröffentlichen* Alexa-SEO und Monetarisierung* Code-Beispiele zum DownloadZimmermanns Internet & PR-Beratung
Software-Engineering - kompakt
Von zentraler Bedeutung für das Software-Engineering ist der Software-Lebenszyklus. Gemeint ist damit der gesamte Prozess, der zur Erstellung und Erhaltung eines Softwaresystems führt. Sowohl in traditionellen als auch in agilen Softwareerstellungsprozessen läuft dieser Lebenszyklus ab. Bewährt hat sich in der Praxis die Einteilung in sogenannte Phasen, denen die Gliederung folgt.Nach einer kurzen Einführung werden in Kapitel 2 vorab phasenübergreifende Verfahren wie divergierende Vorgehensmodelle und Projektmanagement besprochen. Kapitel 3 behandelt die Planungsphase; Kapitel 4 ist dem Requirements-Engineering gewidmet, bei dem die Software-Anforderungen kreativ konstruiert, analysiert und – traditionell oder agil – dokumentiert werden. In Kapitel 5 folgt die Besprechung der Verfahren für die Designphase der Software. Hier wird hinterfragt, wie gute Software-Architekturen Erfolg versprechend erdacht, mit der UML-Notation geeignet modelliert und in späteren Projekten wiederverwendet werden können. Kapitel 6 widmet sich der Test- und Abnahmephase und damit den wichtigen Qualitätssicherungsfragen. Abschließend wird in Kapitel 7 die Wartung – zur wirksamen Erhaltung von Softwaresystemen – erklärt.Anfänger erhalten eine schnelle Orientierung und kompaktes, fundiertes Grundwissen. Fortgeschrittene Leser finden hier ein aktuelles, gut strukturiertes Nachschlagewerk.
Introducing Play Framework
Enter the world of rapid web application development. This gentle introduction to Play covers all you need to know: it carefully introduces the background concepts before diving into examples, making learning Play 2 enjoyable (it includes the latest Play framework version 2.8).Introducing Play Framework is crisp, up-to-the-point, and full of valuable information. You will find chapters covering the basics of Play, the sbt build system, the Ebean ORM, web services using Play, production deployment, cache, and more with actual pragmatic code snippets for common tasks.After reading and using this book, you'll be able to build and deploy Java-based web applications with the Play framework.WHAT YOU WILL LEARN* Use the Play framework to do rapid Java-based web application development * Work with Play controllers and Play views* Create web services using JSON and XML* Persist data and access databases* Use Play modulesCarry out asynch programming * Cache, deploy, and work with code snippets in PlayWHO THIS BOOK IS FORThose with at least some prior experience with Java.Prem Kumar Karunakaran is an enterprise architect with around 14 years of industry experience. He holds a bachelors degree in electronics engineering and is also an Oracle Certified Java Enterprise Edition Master. He was involved in the architecture and design of many cutting-edge products used by clients around the globe. He has worked with organizations such as Infosys and IBS as an architect and has worked in many projects spanning airlines, logistics, travel and retail. He is passionate about Java and loves to learn new technologies and contributes his time to open source initiatives as well.Chapter 1. Getting started with Play 2Chapter 2: Build SystemChapter 3: Play Controllers and HTTP RoutingChapter 4: Play Views and Templating with ScalaChapter 5: Concurrency and Asynchronous programmingChapter 6: Web Services, Json and XMLChapter 7: Accessing DatabasesChapter 8: Complete ExampleChapter 9: Using Play modulesChapter 10 - Application Settings & Error handlingChapter 11: Working with CacheChapter 12: Production Deployment
Pro Perl Programming
Master intermediate to advanced techniques of the Perl programming language starting with a focus on regular expressions and some of their advanced features. This book then covers other pro-level features, including formatted output, file handling, and more.Additionally, you'll learn and explore the most useful built-in variables, pragmas, and modules available in the Perl language. Furthermore, you'll work with geometry managers and get a thorough treatment of graphical user interface development using Perl/TK and widgets. Lastly, you’ll cover debugging techniques.Pro Perl Programming is a professional-level reference guide on Perl and includes important aspects of it that you need as a professional programmer.WHAT YOU WILL LEARN* Program regular expressions including atoms, smartmatch operators, and moreUse advanced features such as HiRes Time, slurp() functions, Critic, Tidy and many more functions * Handle advanced formatted output such as printf and sprintfExplore useful built-in variables, including status variables, separator variables, and the signal handle variable * Explore and use Perl's built-in modules, including the Pragma modulesWork with Perl/TK and its widgets-like geometry managers, frames, labels, buttons, check buttons, radio buttons, scrollbars, scales, entries, and menusWHO THIS BOOK IS FORThose with at least some prior experience with Perl programming or have read Beginning Perl Programming by William Rothwell.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 Intermediate Regular Expressions1.1 Review: Basic Regular Expressions1.2 Modifiers1.3 Getting the Nth occurrence of a match1.4 Greedy vs. Non-Greedy matches1.5 Regular Expression variables1.6 Special characters in regular expressions1.7 Assertions1.8 Reading from filehandles using split 1.9 Multiple line matching1.10 Commenting Regular Expressions1.11 Alternative Delimiters1.12 Additional resources1.13 Lab ExercisesChapter Two Advanced Regular Expressions2.1 Make use of the Smartmatch Operator2.2 Understand Regular Expression precedence2.3 Understand what is *NOT* a Regular Expression atom2.4 Using Regular Expressions in List Context2.5 Match whitespace properly2.6 Use \G2.7 Use the \A, \Z and \z assertions2.8 Avoid capturing2.9 Avoid the variables $`, $& and $'2.10 Compile your Regular Expressions before using them2.11 Benchmark your patterns2.12 Use Regexp::Common2.13 Flags you should consider always using2.14 Avoid escapes2.15 Use the re Pragma2.16 Understand backtrackingChapter Three Advanced Features3.1 Use my iterator variables with for loops3.2 Utilize loop labels3.3 Avoid using for file matching3.4 Time::HiRes3.5 Contextual::Return3.6 Indirect Filehandles3.7 The three argument technique to the open statement3.8 Always check the return values of open, close and when printing to a file3.9 Close filehandles as soon as possible3.10 Avoid slurping3.11 Creatively use the do statement3.12 Use the slurp() function3.13 Test for interactivity3.14 Use IO::Prompt3.15 Understand where to find documentation3.16 Understand context3.17 Understand the => operator3.18 Understand subroutine calls3.19 Understand and/or versus &/||3.20 Use Perl::Tidy3.21 Use Perl::Critic3.22 Understand Getopt::Std3.23 Understand Getopt::Long3.24 Alternative commenting technique3.25 Passing notes within a Perl program 3.26 Use Smart::CommentsChapter Four Advanced Formatted Output4.1 Review: The format statement4.2 Advanced format statement features4.3 printf and sprintf4.4 Using select4.5 The operator4.6 Additional Resources4.7 Lab ExercisesChapter Five Exploring Useful Built-in Variables5.1 Perl's built-in variables5.2 Variables reference chart5.3 Use English5.4. Status variables5.5 Separator variables5.6 The signal handle variable5.7 Version of Perl5.8 Program start time5.9 Additional Resources5.10 Lab ExercisesChapter Six Advanced File Handling6.1 Review: Basic File Handling6.2 Displaying the file position6.3 Moving the file position6.4 Opening files for reading and writing6.5 Making "files" within your script6.6 Locking files6.7 Flushing output buffers6.8 Additional Resources6.9 Lab ExercisesChapter Seven Pragmas 7.1 Perl pragmas7.2 Pragma chart7.3 Review: use strict7.4 Predeclaring subroutines7.5 Predeclaring global variables7.6 Additional Resources7.7 Lab ExercisesChapter Eight Exploring Useful Built-in Modules8.1 Built-in modules8.2 Module table8.3 Cwd8.4 Env8.5 File8.6 Math8.7 Sys8.8 Text8.9 Fatal8.10 Benchmark8.11 Getopt::Std8.12 Getopt::Long8.13 Additional Resources8.14 Lab ExercisesChapter Nine Debugging Tools9.1 Review: The -w switch9.2 Review: The Perl debugger9.3 Debugger commands9.4 Diagnostics9.5 Carp9.6 Data::Dumper9.7 Additional Resources9.8 Lab ExercisesChapter Ten Perl/TK Basics10.1 Working with Windows10.2 Types of Widgets10.3 Geometry Managers10.4 Creating Widgets10.5 The OO nature of the Tk module10.6 Additional resources10.7 Lab ExercisesChapter Eleven Perl TK Widgets11.1 Frames11.2 Labels11.3 Buttons11.4 Checkbuttons11.5 Radiobuttons11.6 Listboxes11.7 Scrollbars11.8 Scales11.9 Entries11.10 Creating menus11.11 Additional Resources11.12 Lab ExercisesModule Twelve Geometry Managers12.1 pack options12.2 The -after and -before option12.3 The -anchor and -side options12.4 The -fill option12.5 Padding with pack12.6 Managing widgets with pack12.7 Binding12.8 The focus command 12.9 Additional Resources12.10 Lab Exercises
SAP Fiori
Lernen Sie alles über die Implementierung und Entwicklung von SAP-Fiori-Apps! Michael Englbrecht zeigt Ihnen, wie Sie SAP Fiori installieren, einrichten und mit SAP Gateway in Ihre Systemlandschaft integrieren. Passen Sie die Oberflächen an Ihre Anforderungen an, oder entwickeln Sie gleich eigene Anwendungen. Die 3. Auflage ist inklusive neuer Entwicklungen in SAP Fiori 3.0 – zudem erfahren Sie z.B., welche Möglichkeiten Ihnen das neue RESTful-ABAP-Programmiermodell bietet. Aus dem Inhalt: User Experience mit SAP FioriAktuelle Design Guidelines Customizing der SAP-Fiori-AppsDesign ThinkingSAP Fiori Launchpad konfigurierenUI Theme Designer Benutzer verwaltenAdministration und TroubleshootingSAP Gateway als Frontend-ServerSAP HANA XS und SAP HANA XSAABAP Core Data ServicesSAP Fiori Cloud Einleitung ... 19 Teil I SAP Fiori im Überblick ... 27 1. Was ist SAP Fiori? ... 29 1.1 ... SAP Fiori -- das Konzept ... 30 1.2 ... SAP Fiori -- das Design ... 39 1.3 ... SAP Fiori -- die Technologie ... 42 1.4 ... Das intelligente Unternehmen ... 56 1.5 ... Übersicht über die SAP-Fiori-Apps ... 59 2. User-Experience-Strategien entwickeln ... 65 2.1 ... Grundlagen ... 65 2.2 ... Benutzeroberflächen gestalten ... 72 2.3 ... Ihre eigene UX-Strategie entwickeln ... 105 3. SAP Fiori Design Guidelines ... 115 3.1 ... Grundlagen ... 117 3.2 ... Floorplans ... 128 3.3 ... Die SAP Fiori for iOS Design Guidelines ... 155 3.4 ... Die SAP Fiori for Android Design Guidelines ... 159 3.5 ... SAP Conversational User Experience ... 163 3.6 ... Konzeptionelle SAP-Fiori-Applikationstypen ... 165 4. Das SAP Fiori Launchpad ... 179 4.1 ... Bestandteile des SAP Fiori Launchpads ... 179 4.2 ... SAP Fiori Launchpad unter SAP Fiori 3.0 ... 197 4.3 ... Das Launchpad aus technischer Sicht ... 199 4.4 ... SAP-Fiori-Anwendungen bereitstellen ... 202 Teil II Implementierung von SAP Fiori ... 205 5. Architektur ... 207 5.1 ... Architekturüberblick und technische SAP-Fiori-Applikationstypen ... 207 5.2 ... SAP HANA XS ... 212 5.3 ... SAP NetWeaver AS ABAP und die SAP Business Suite ... 215 5.4 ... ABAP-Frontend-Server ... 218 5.5 ... SAP Web Dispatcher ... 227 5.6 ... Endgeräte ... 228 5.7 ... Architektur im Kontext von SAP S/4 HANA ... 231 6. Installation ... 239 6.1 ... Installation planen ... 240 6.2 ... Installationsvoraussetzungen überprüfen ... 251 6.3 ... Softwarekomponentenversionen herunterladen ... 257 6.4 ... Installationswerkzeuge ... 260 6.5 ... Plattformkomponenten installieren ... 261 6.6 ... Produktspezifische Komponenten installieren ... 272 7. Konfiguration ... 279 7.1 ... Kommunikationskanäle und Single Sign-on konfigurieren ... 279 7.2 ... ABAP-Frontend-Server konfigurieren ... 291 7.3 ... SAP Fiori Launchpad und Transactional Apps ... 303 7.4 ... SAP-Fiori-Suche und Fact Sheets konfigurieren ... 326 7.5 ... KPI Modeler und Analytical Apps ... 334 7.6 ... KPI Design und Analytical Apps unter SAP S/4HANA ... 345 8. Anpassungen mit dem UI Theme Designer ... 357 8.1 ... Konzept des UI Theme Designers ... 358 8.2 ... Mit dem UI Theme Designer arbeiten ... 360 8.3 ... Themes verwalten ... 370 8.4 ... Themes verwenden ... 373 8.5 ... UI Theme Designer der SAP Cloud Platform ... 375 9. Administration von SAP-Fiori-Anwendungen ... 379 9.1 ... Aufgaben eines SAP-Fiori-Administrators ... 379 9.2 ... Monitoring ... 381 9.3 ... Troubleshooting ... 397 Teil III SAP-Fiori-Anwendungen entwickeln ... 417 10. Grundlagen der SAP-Fiori-Entwicklung ... 419 10.1 ... SAPUI5 ... 419 10.2 ... Best Practices bei der Entwicklung ... 453 11. Entwicklung von Backend-Diensten ... 487 11.1 ... SAP Gateway und OData-Services ... 487 11.2 ... ABAP Core Data Services ... 513 11.3 ... Das ABAP-RESTful-Programmiermodell ... 535 12. Entwicklung einer SAP-Fiori-Anwendung mit SAP Web IDE ... 547 12.1 ... Einführung in die SAP Web IDE ... 548 12.2 ... Mit SAP Web IDE arbeiten ... 555 12.3 ... Eine Anwendung mit SAP Web IDE entwickeln ... 564 12.4 ... SAP Fiori Elements ... 588 12.5 ... Mit SAP-Build-Prototypen arbeiten ... 629 13. Erweiterung von SAP-Fiori-Anwendungen ... 633 13.1 ... Einführung und Überblick ... 634 13.2 ... Erweiterungen im Backend ... 639 13.3 ... Erweiterung von OData-Services ... 646 13.4 ... Erweiterung von Fact Sheets ... 652 13.5 ... Erweiterung des User Interfaces ... 663 13.6 ... Erweiterung der App »My Inbox« mit BAdIs ... 682 13.7 ... Anpassungen mit den SAPUI5 Flexibility Services ... 706 13.8 ... Implementierung von Erweiterungen für das ABAP-Programmiermodell für SAP Fiori ... 713 13.9 ... Ausblick ... 733 14. SAP Fiori Cloud ... 735 14.1 ... Deployment-Optionen ... 739 14.2 ... Entwicklung von SAP-Fiori-Cloud-Lösungen ... 742 14.3 ... Fazit ... 762 15. Entwicklungsinfrastruktur ... 763 15.1 ... Werkzeuge ... 764 15.2 ... Einführung in Continuous Integration und Continuous Delivery ... 775 Anhang ... 781 A ... Quellenhinweise ... 781 B ... Der Autor ... 785 Index ... 787
Practical Rust Projects
Go beyond the basics and build complete applications using the Rust programming language. The applications in this book include a high-performance web client, a microcontroller (for a robot, for example), a game, an app that runs on Android, and an application that incorporates AI and machine learning.Each chapter will be organized in the following format: what this kind of application looks like; requirements and user stories of our example program; an introduction to the Rust libraries used; the actual implementation of the example program, including common pitfalls and their solutions; and a brief comparison of libraries for building each application, if there is no clear winner.Practical Rust Projects will open your eyes to the world of practical applications of Rust. After reading the book, you will be able to apply your Rust knowledge to build your own projects.WHAT YOU WILL LEARNWrite Rust code that runs on microcontrollers * Build a 2D game* Create Rust-based mobile Android applications* Use Rust to build AI and machine learning applicationsWHO THIS BOOK IS FORSomeone with basic Rust knowledge, wishing to learn more about how to apply Rust in a real-world scenario.SHING LYU is a software engineer who is passionate about open source software. He's worked on Rust professionally at Mozilla, on the Firefox (Gecko) and Servo browser engine project. Currently, he is working at DAZN, a sports streaming platform as a backend developer, with a focus on AWS and serverless technology. Shing has worked for many world famous brands such as Mozilla and Intel. He is also active in the open source community. Being one of the founders of the Taiwan Rust community, he loves to share his enthusiasm for Rust with people.Chapter 1, IntroductionThis chapter gives a short introduction to why Rust is a solid tool for building all kinds of application, and a brief overview of the format and organization of the book.● Introduction● Why Rust?● Who should read this book?● Chapters overviewChapter 2, Building a command-line programThis chapter will teach you how to build a command-line program with Rust.● What are we going to build? (We'll build a cowsay-like tool)● Building a binary program in Rust● Handling positional arguments● Handling optional arguments● Building a text-based user interface with ncurses● SummaryChapter 3, Creating graphical user interfaces (GUIs)This chapter will teach you how to build a cross-platform GUI program in Rust.● What are we going to build? (A desktop cat breed photo viewer)● Introduction to GTK+● Components of a GUI program● Creating a window● Handling user input● Supporting multiple operating system● SummaryChapter 4, Building a gameThis chapter will teach you how to build an 2D game with Rust● What are we going to build? (A 2D cat volleyball game)● Game frameworks in Rust● Building a 2D game in Rust● Rendering the map● Controlling the character with keyboard● Enemies incoming!● Adding sound effects● SummaryChapter 5, Going mobileThis chapter will demonstrate how to build an Android app using Rust● How to make Rust run on Android● What are we going to build? (A pokedex-like cat breed catalog)● Building the app skeleton● Showing pictures● Adding searchChapter 6, Programming embedded devicesThis chapter will demonstrate how to program an embedded device in Rust using a hardware development board. We'll also be using a QEUM emulator so readers can follow along without the hardware.● What are we going to build? (Either a STM32 development board or Arduino, still need more research)● How cross-compilation works?● Introducing the development board and QEUM● Setting up the toolchain for embedded programming● Communication using serial port● Programming the hardware timer● Debugging on an embedded device● SummaryChapter 7, Artificial intelligence and machine learningThis chapter will introduce machine learning libraries in Rust and show a simple image recognition demo● How does machine learning work● What are we going to build? (A cat image detector)● Mathematical background● Preparing the dataset● Training the model● Making predictionsChapter 8, Advanced topicsThis chapter will discuss other more advanced use of Rust. Each section will introduce one application, existing projects for that kind of application and their status. But we'll not go into the detail as the previous chapters.● Working with other languages● Operating system - Redox● The vast universe of Rust applications
Beginning Ballerina Programming
Discover the Ballerina programming language for next-generation microservices and cloud-native application development. This book shows you that Ballerina is a cutting-edge programming language which incorporates many of the latest technological advancements in programming language theory. You'll learn variables and types, modules and functions, flow control, error handling, concurrency, I/O, cloud/network programming, persistence and data access, security and more.Additionally, Beginning Ballerina Programming introduces many foundation computer science topics along the way and doesn’t assume much prior knowledge. For example, when introducing transport-level security, you will get a brief introduction to public-key cryptography, how it is different from private-key cryptography, and why it is needed. This provides an added bonus for you to learn something new and general in computer science.After reading and using this book, you'll be proficient with Ballerina and cloud-first programming and be able to apply these concepts and techniques to your next cloud application developments.WHAT YOU'LL LEARN· Start programming with Ballerina· Gain the basics of network communication and programming· Obtain a solid understanding of services/API development· Effective use of concurrency in programming· Learn the basics of information security and its applications· Persistent data storage and accessWHO THIS BOOK IS FORAbsolute beginners in computer programming: No prior experience with computer programming is expected. This can also be a reference book for experienced developers in other languages, who want to learn a modern programming language.Anjana Fernando is a director and architect at WSO2. He is a key part of WSO2’s Ballerina and ecosystem engineering team where he leads efforts to shape the capabilities offered in related technology areas. He has also contributed to WSO2’s integration-related projects, including the Ballerina programming language, in the areas of the VM, transactions, and data handling. He has carried out several onsite customer engagements providing support for various integration and analytics projects as well. Anjana has a first-class honors degree in software engineering from the Informatics Institute of Technology, Sri Lanka, which is affiliated with the University of Westminster, UK. He also has a masters in computer science from the University of Colombo, School of Computing, where his main research area was distributed systems on the web.Chapter 1: Getting StartedChapter 2: Programming BasicsChapter 3: Lists, Mappings and ObjectsChapter 4: Code OrganizationChapter 5: Error HandlingChapter 6: ConcurrencyChapter 7: Files and I/OChapter 8: Programming the NetworkChapter 9: Information SecurityChapter 10: Database ProgrammingAppendix A: Numbers and Representation