Programmierung
Develop and Operate Your LoRaWAN IoT Nodes
LoRaWAN has developed excellently as a communication solution in the IoT. The Things Network (TTN) has contributed to this. The Things Network was upgraded to The Things Stack Community Edition (TTS (CE)). The TTN V2 clusters were closed towards the end of 2021.In this book, I will show you the necessary steps to operate LoRaWAN nodes using TTS (CE) and maybe extend the network of gateways with an own gateway. Meanwhile, there are even LoRaWAN gateways suitable for mobile use with which you can connect to the TTN server via your cell phone.I present several commercial LoRaWAN nodes and new, low-cost and battery-powered hardware for building autonomous LoRaWAN nodes.Registering LoRaWAN nodes and gateways in the TTS (CE), providing the collected data via MQTT and visualization via Node-RED, Cayenne, Thingspeak, and Datacake enable complex IoT projects and completely new applications at very low cost.This book will enable you to provide and visualize data collected with battery-powered sensors (LoRaWAN nodes) wirelessly on the Internet. You will learn the basics for smart city and IoT applications that enable, for example, the measurement of air quality, water levels, snow depths, the determination of free parking spaces (smart parking), and the intelligent control of street lighting (smart lighting), among others.Dr. Claus Kühnel studied information technology at the Technical University of Dresden. He has developed embedded systems for laboratory diagnostic devices, among others. In this interdisciplinary field he came in touch with the maker scene. Passionate about new technologies around microcontrollers, he is the author of numerous articles and books on microcontroller hardware and software in Germany and abroad.
The Definitive Guide to Security in Jakarta EE
Refer to this definitive and authoritative book to understand the Jakarta EE Security Spec, with Jakarta Authentication & Authorization as its underlying official foundation. Jakarta EE Security implementations are discussed, such as Soteria and Open Liberty, along with the build-in modules and Jakarta EE Security third-party modules, such as Payara Yubikey & OIDC, and OmniFaces JWT-Auth.The book discusses Jakarta EE Security in relation to SE underpinnings and provides a detailed explanation of how client-cert authentication over HTTPS takes place, how certifications work, and how LDAP-like names are mapped to caller/user names. General (web) security best practices are presented, such as not storing passwords in plaintext, using HTTPS, sanitizing inputs to DB queries, encoding output, and explanations of various (web) attacks and common vulnerabilities are included.Practical examples of securing applications discuss common needs such as letting users explicitly log in, sign up, verify email safely, explicitly log in to access protected pages, and go direct to the log in page. Common issues are covered such as abandoning an authentication dialog halfway and later accessing protected pages again.WHAT YOU WILL LEARN* Know what Jakarta/Java EE security includes and how to get started learning and using this technology for today's and tomorrow's enterprise Java applications* Secure applications: traditional server-side web apps built with JSF (Faces) as well as applications based on client-side frameworks (such as Angular) and JAX-RS* Work with the daunting number of security APIs in Jakarta EE* Understand how EE security evolvedWHO THIS BOOK IS FORJava developers using Jakarta EE and writing applications that need to be secured (every application). Basic knowledge of Servlets and CDI is assumed. Library writers and component providers who wish to provide additional authentication mechanisms for Jakarta EE also will find the book useful.ARJAN TIJMS was a JSF (JSR 372) and Security API (JSR 375) EG member, and is currently project lead for a number of Jakarta projects, including Jakarta- Security, Authentication, Authorization, and Faces and Expression Language. He is the co-creator of the popular OmniFaces library for JSF that was a 2015 Duke’s Choice Award winner, and is the author of two books: The Definitive Guide to JSF- and Pro CDI 2 in Java EE 8. Arjan holds an MSc degree in computer science from the University of Leiden, The Netherlands. He has been involved with Jakarta EE Security since 2010, has created a set of tests that most well-known vendors use (IBM, Oracle, Red Hat) to improve their offerings, was part of the JSR 375 (EE Security) EG, and has been the main architect of the security API and its initial RI implementation Soteria. Arjan has also written and certified the MicroProfile JWT implementation for Payara. He was mentored by Sun's (later Oracle's) security expert Ron Monzillo. He wrote a large series of blog posts about EE Security that have attracted a lot of views.WERNER KEIL is a cloud architect, Eclipse RCP, and a microservice expert for a large bank. He helps Global 500 Enterprises across industries and leading IT vendors. He worked for over 30 years as an IT manager, PM, coach, and SW architect and consultant for the finance, mobile, media, transport, and public sectors. Werner develops enterprise systems using Java, Java/Jakarta EE, Oracle, IBM, Spring or Microsoft technologies, JavaScript, Node, Angular, and dynamic or functional languages. He is a Committer at Apache Foundation, and Eclipse Foundation, a Babel Language Champion, UOMo Project Lead, and active member of the Java Community Process in JSRs such as 321 (Trusted Java), 344 (JSF 2.2), 354 (Money, also Maintenance Lead), 358/364 (JCP.next), 362 (Portlet 3), 363 (Unit-API 1), 365 (CDI 2), 366 (Java EE 8), 375 (Java EE Security), 380 (Bean Validation 2), and 385 (Unit-API 2, also Spec Lead), and was the longest serving Individual Member of the Executive Committee for nine years in a row until 2017. Werner is currently the Community representative in the Jakarta EE Specification Committee. He was among the first five Jakarta EE Ambassadors when it was founded as Java EE Guardians, and is a member of its Leadership Council.TEO BAIS is a Software Development Manager, Scrum Master, and Programmer who contributes to the prosperity of the (software) community in several ways. He is the founder and leader of Utrecht Java User Group, which counts over 2600 members and has hosted over 45 events and amazing speakers (among others, James Gosling, Uncle Bob, and over 20 Java Champions), and is running 3 programs: Devoxx4kids, Speaker Incubator and uJCP. Teo served JSR-385 (JSR of the Year 2019) as an EG Member and was nominated as JCP Participant of the Year in 2019. Teo Bais enjoys sharing his knowledge as a public speaker to help others achieve their goals in career and life.1: Security History2: Jakarta EE Foundations3: Jakarta Authentication4: Jakarta Authorization5: Jakarta Security6: Java SE Underpinnings7: EE Implementations8: MicroProfile JWTAppendix A: Spring SecurityAppendix B: Apache ShiroAppendix C: Identity Management
Deep Natural Language Processing
Einstieg in Word Embedding, Sequence-to-Sequence-Modelle und Transformer mit PythonDas Buch bietet eine leicht verständliche Einführung in Machine-Learning-Algorithmen im Allgemeinen und in die Verarbeitung von Textdaten mit Deep-Learning-Verfahren im Besonderen. Es veranschaulicht die theoretischen Konzepte bewährter und neuerer NLP-Ansätze und führt in die praktische Umsetzung ein.Im Fokus stehen insbesondere folgende Verfahren:Vektorisierung von Wörtern mit Word EmbeddingVerarbeitung von Texten mit rekurrenten und konvolutionalen neuronalen Netzen.Aufbau von Sequence-to-Sequence-Modellen zur Übersetzung und für Textzusammenfassungen.Arbeit mit der Transformers-Bibliothek und Hugging Face.Anhand praktischer Anwendungen (Klassizierung von Texten, Rechtschreibkorrektur, Übersetzung, Frage-Antwort-System) wird gezeigt, wie sich Textdaten vorbereiten und effektive Lernmodelle mit Bibliotheken wie Transformers, TensorFlow/Keras und Scikit-Learn aufbauen, trainieren und produktiv einsetzen lassen.Über den Autor:Dr. Jochen Hirschle ist IT-Trainer und Consultant für Machine Learning und Deep Learning in Braunschweig. Er ist erfahrener Programmierer in Python und Java und war als Wissenschaftler und Dozent an den Universitäten in Köln, Innsbruck und Frankfurt tätig. Er kennt die Fallstricke der statistischen Datenanalyse und die Tricks maschinellen Lernens aus seiner langjährigen Praxis und er weiß, wie sich komplexe Sachverhalte einfach erklären lassen.Leseprobe (PDF-Link)
C# und .NET 6 - Grundlagen, Profiwissen und Rezepte
Dieser komplett überarbeitete Klassiker der C#-/.NET-Programmierung bietet Ihnen Know-how und zahlreiche Rezepte, mit denen Sie häufig auftretende Probleme meistern. Einsteiger erhalten ein umfangreiches Tutorial zu den Grundlagen der C# 10-Programmierung mit Visual Studio 2022, dem Profi liefert es fortgeschrittene Programmiertechniken zu allen wesentlichen Einsatzgebieten der Programmierung mit .NET 6. Zum sofortigen Ausprobieren finden Sie am Ende eines jeden Kapitels hochwertige Lösungen für nahezu jedes Problem. Das Buch gliedert sich in einen Grundlagenteil zur Programmierung, eine Einführung in die Desktop-Programmierung (WPF, MAUI (Multi-platform App UI), einen Technologieteil zu fortgeschrittenen Themen sowie einen komplett neuen Teil zur Web-Programmierung (ASP.NET Core, MVC, Razor, Web-API, Blazor). Es ist der ideale Begleiter für Ihre tägliche Arbeit und zugleich – dank der erfrischenden und unterhaltsamen Darstellung – eine spannende Lektüre, die Lust macht, Projekte auch in der Freizeit umzusetzen.Aus dem Inhalt:Grundlagen der SpracheOOP-KonzepteArrays, Strings, FunktionenEinführung in LINQNeuerungen in C#Einführung in WPFWPF Controls, WPF-DatenbindungAsynchrone Programmierung & Task Parallel LibraryDebugging, Fehlersuche und -behandlungEntity Framework CoreWebanwendungen und APIs mit ASP.NET CoreSingle-Page Applications (SPAs mit BlazorAusblick auf .NET MAUI Leseprobe (PDF)Autoren: Jürgen Kotz arbeitet seit über 20 Jahren als freiberuflicher Trainer, Berater, Entwickler und Autor. Mit .NET beschäftigt er sich seit der ersten Beta-Version. Mit seiner Firma PrimeTime Software in München entwickelt er .NET-Projekte und führt Schulungen in diesem Umfeld durch. Seine Hauptthemen sind dabei die Entwicklung von REST- bzw. SOAP-basierten Services und der Datenzugriff mittels Entity Framework. Darüber hinaus hat er zahlreiche Fachbücher und -artikel geschrieben. Christian Wenz arbeitet als Berater, Trainer und Autor mit Schwerpunkt auf Webtechnologien und ist Autor oder Co-Autor von über 100 Computerbüchern. Er schreibt regelmäßig Beiträge für verschiedene IT-Magazine und hält Vorträge auf Konferenzen rund um den Globus. In seiner täglichen Arbeit ist er einer der Gründer der Webagentur Arrabiata Solutions mit Büros in München und London.
Git Schnelleinstieg
Mit diesem Buch erhalten Sie einen schnellen und praxisbezogenen Einstieg in Git. Der Autor behandelt die gängigen Befehle, die Sie beim täglichen Arbeiten mit Git brauchen. Sie lernen anhand eines Projekts, welche Befehle es gibt, wie diese arbeiten und wie Sie auftretende Probleme lösen können. Neben alltäglichen Funktionen finden Sie auch seltener gebrauchte Kommandos, die aber ebenfalls wichtig sind.Im zweiten Teil des Buchs werden fortgeschrittene Themen behandelt. Der Schwerpunkt liegt auf dem Einsatz von Git in Teams, darunter etwa das Hosten verteilter Repositories mit GitHub und GitLab. Ein weiteres Kapitel behandelt die Workflows, die je nach Anzahl der beteiligten Personen, Branches und Repositories eines Projekts variieren.Darüber hinaus gibt Ihnen der Autor hilfreiche Informationen für den Umstieg von Subversion. Ein Kapitel zu häufig gestellten Fragen rundet diesen Praxiseinstieg ab.Das Buch richtet sich an Einsteiger, aber auch Leser mit grundlegender Erfahrung können hier noch viel lernen. So gelingt es Ihnen, Git in Kürze in der Praxis einzusetzen.Sujeevan Vijayakumaran ist seit über einem Jahrzehnt begeisterter Git-Nutzer und berät seit 2020 als Solutions Architect für GitLab Kunden bei der technologischen Umsetzung von DevOps.
Applied Deep Learning with TensorFlow 2
Understand how neural networks work and learn how to implement them using TensorFlow 2.0 and Keras. This new edition focuses on the fundamental concepts and at the same time on practical aspects of implementing neural networks and deep learning for your research projects.This book is designed so that you can focus on the parts you are interested in. You will explore topics as regularization, optimizers, optimization, metric analysis, and hyper-parameter tuning. In addition, you will learn the fundamentals ideas behind autoencoders and generative adversarial networks.All the code presented in the book will be available in the form of Jupyter notebooks which would allow you to try out all examples and extend them in interesting ways. A companion online book is available with the complete code for all examples discussed in the book and additional material more related to TensorFlow and Keras. All the code will be available in Jupyter notebook format and can be opened directly in Google Colab (no need to install anything locally) or downloaded on your own machine and tested locally.You will:• Understand the fundamental concepts of how neural networks work• Learn the fundamental ideas behind autoencoders and generative adversarial networks• Be able to try all the examples with complete code examples that you can expand for your own projects• Have available a complete online companion book with examples and tutorials.This book is for:Readers with an intermediate understanding of machine learning, linear algebra, calculus, and basic Python programming.Umberto Michelucci is the founder and the chief AI scientist of TOELT – Advanced AI LAB LLC. He’s an expert in numerical simulation, statistics, data science, and machine learning. He has 15 years of practical experience in the fields of data warehouse, data science, and machine learning. His first book, Applied Deep Learning—A Case-Based Approach to Understanding Deep Neural Networks, was published in 2018. His second book, Convolutional and Recurrent Neural Networks Theory and Applications was published in 2019. He publishes his research regularly and gives lectures on machine learning and statistics at various universities. He holds a PhD in machine learning, and he is also a Google Developer Expert in Machine Learning based in Switzerland.Chapter 1 : Optimization and neural networksSubtopics:How to read the bookIntroduction to the bookChapter 2: Hands-on with One Single NeuronSubtopics:Overview of optimizationA definition of learningConstrained vs. unconstrained optimizationAbsolute and local minimaOptimization algorithms with focus on Gradient DescentVariations of Gradient Descent (mini-batch and stochastic)How to choose the right mini-batch sizeChapter 3: Feed Forward Neural NetworksSubtopics:A short introduction to matrix algebra Activation functions (identity, sigmoid, tanh, swish, etc.)Implementation of one neuron in KerasLinear regression with one neuronLogistic regression with one neuronChapter 4: RegularizationSubtopics:Matrix formalismSoftmax activation functionOverfitting and bias-variance discussionHow to implement a fully conneted network with KerasMulti-class classification with the Zalando dataset in KerasGradient descent variation in practice with a real datasetWeight initializationHow to compare the complexity of neural networksHow to estimate memory used by neural networks in KerasChapter 5: Advanced OptimizersSubtopics:An introduction to regularizationl_p norml_2 regularizationWeight decay when using regularizationDropoutEarly StoppingChapter 6Chapter Title: Hyper-Parameter tuningSubtopics:Exponentially weighted averagesMomentumRMSPropAdamComparison of optimizersChapter 7Chapter Title: Convolutional Neural NetworksSubtopics:Introduction to Hyper-parameter tuningBlack box optimizationGrid SearchRandom SearchCoarse to fine optimization Sampling on logarithmic scaleBayesian optimisationChapter 8Chapter Title: Brief Introduction to Recurrent Neural NetworksSubtopics:Theory of convolutionPooling and paddingBuilding blocks of a CNNImplementation of a CNN with KerasIntroduction to recurrent neural networksImplementation of a RNN with KerasChapter 9: AutoencodersSubtopics:Feed Forward AutoencodersLoss function in autoencodersReconstruction errorApplication of autoencoders: dimensionality reductionApplication of autoencoders: Classification with latent featuresCurse of dimensionalityDenoising autoencodersAutoencoders with CNNChapter 10: Metric AnalysisSubtopics:Human level performance and Bayes errorBiasMetric analysis diagramTraining set overfittingHow to split your datasetUnbalanced dataset: what can happenK-fold cross validationManual metric analysis: an exampleChapter 11Chapter Title: General Adversarial Networks (GANs)Subtopics:Introduction to GANsThe building blocks of GANsAn example of implementation of GANs in KerasAPPENDIX 1: Introduction to KerasSubtopics:Sequential modelKeras LayersFunctional APIsSpecifying loss functionsPutting all together and training a modelCallback functionsSave and load modelsAPPENDIX 2: Customizing KerasSubtopics:Custom callback functionsCustom training loopsCustom loss functionsAPPENDIX 3: Symbols and Abbreviations
LabVIEW für Dummies
Ganz unverhofft müssen Sie sich mit LabVIEW beschäftigen? Dieses Buch hilft Ihnen dabei sich in diesem grafischen Programmiersystem zurechtzufinden. Die Autorinnen erklären Ihnen die Grundlagen von grafischer Programmierung und erläutern was Virtuelle Instrumente (VIs) sind. Sie führen Sie in die Arbeit in Projekten mit LabVIEW ein, zeigen Ihnen was Sie bei der Fehlersuche beachten sollten, wie Sie Datentypen und Datenstrukturen verwenden und vieles mehr. Dabei kommt auch das klassische Programmieren nicht zu kurz und so werden Sie sich schneller als Sie denken in LabVIEW zurechtfinden. Corinna Meiwald studierte bis 2017 Bio- und Nanotechnologie, schloss das Studium mit dem Master ab und arbeitet seitdem als Softwareentwicklerin und Projektleiterin in der Prüfmittelentwicklung.Melanie von der Crone hat ebenso einen Master in Bio- und Nanotechnologie und arbeitet seit ihrem Studienabschluss für Siku/Wiking Modellwelt.ÜBER DIE AUTOREN9Melanie von der Crone 9Corinna Meiwald 9Idee zum Buch 9EINLEITUNG 19Über dieses Buch 19Konventionen in diesem Buch 19Was Sie nicht lesen müssen 20Törichte Annahme über den Leser 20Wie dieses Buch aufgebaut ist 21Symbole, die in diesem Buch verwendet werden 22Wie es weitergeht 22TEIL I: DIE ENTWICKLUNGSUMGEBUNG IN LABVIEW 23KAPITEL 1: LABVIEW – DIE ETWAS ANDERE ART DER PROGRAMMIERUNG25Datenflussprinzip 26Benutzeroberfläche 28Frontpanel und dessen Elemente 30Menüleiste vom Frontpanel 30Starten, Beenden, Pausieren 31Beschriftungen 32Ausrichten der Elemente 32Hilfen 33Blockdiagramm 34Menüleiste im Blockdiagramm 35Debugging 35Clean_Up Diagram 36Connector Pane 36Werkzeuge und Paletten 36Tools Palette 37Controls Palette 39Functions Palette 42Kontextmenü 43Kontextmenü im Frontpanel 44Kontextmenü im Blockdiagramm 48Drähte im Blockdiagramm 50Einstellung von Programmeigenschaften 51Regeln für die Programmierung in LabVIEW 60Übungen zu LabVIEW 60Lösungen zu LabVIEW 61KAPITEL 2: BLACK JACK 163Struktogramme 63Anweisungsblock 64Schleifen 64Fallunterscheidungen 65Beispiel für ein Struktogramm 65Black Jack-Regeln 66Spielablauf 68Struktogramm für Black Jack 69KAPITEL 3: WENN DER UMFANG ZUNIMMT: ARBEITEN IN PROJEKTEN73Was ist ein Projekt in LabVIEW? 73Hierarchien 76LabVIEW Librarys (Bibliotheken) 77Abhängigkeiten (Dependencies) in Projekten 79Fehler beim Starten eines VIs (LOAD WARNING SUMMARY) 84Build-Spezifikationen 86Übungen 87Lösungen 88TEIL II: GRUNDLAGEN DER PROGRAMMIERUNG 89KAPITEL 4: DATENTYPEN IN LABVIEW UND WOFÜR SIE VERWENDET WERDEN91Grundlagen zur Zahlendarstellung 92Numerische Datentypen 95Vorzeichenlose Ganzzahlen (U8, U16, U32, U64) 96Vorzeichenbehaftete Ganzzahlen (I8, I16, I32, I64) 97Überlauf und Unterlauf 98Gleitpunktzahlen 99Numerische Elemente in LabVIEW 102Boolesche Daten 104Strings & Pfade 107String 107Pfade 110Rings und Enums 113Bilder und Farben 117Picture 117Color Box 117Variant 120Arrays 122Cluster 128Custom Control (CC) 131Zugriffe auf Datentypen in LabVIEW 135Property Nodes 136Invoke Nodes 139Variable in LabVIEW 140Übungen 146Lösungen 147Erstellen eines Custom Controls für Black Jack 148KAPITEL 5: FUNKTIONEN, VIS UND VIM149Einfache numerische Funktionen 151Coercion Dot 155Vergleichsfunktionen 156Boolesche Funktionen 157And und Nand 157Or, Nor, Exclusive Or und Not Exclusive Or 158Not 160Compound Arithmetic 1602D Picture-Funktionen 161Variant-Funktionen 165To Variant 165Set Variant Attribute 166Get Variant Attribute 168String- und Pfadfunktionen 169String Length 170Concatenate Strings 170String Subset 171Formatbezeichner für Strings 172Build & Strip Path 178Array-Funktionen 179Initialize Array 179Index Array 180Shuffle 1D Array.vim 183Delete From Array 183Build Array 185Transpose 2D Array 187Sort 1D Array.vim 188Reverse 1D Array 189Insert Into Array 190Cluster-Funktionen 194Unbundle (By Name) 195Bundle (By Name) 197Veränderung von Daten im Cluster 199Konvertierung von Datentypen 200Konvertierung numerischer Datentypen 200Konvertierung von Strings 204Black Jack 211Funktion zum Karten mischen 211Funktionen für den Vorgang des Kartenziehens 211Funktionen für die Bewertung des Spiels 212KAPITEL 6: DAS PROGRAMM BEKOMMT EINE STRUKTUR 217Schleifen 217For-Schleife 218While-Schleife 222Entscheidungsstrukturen 224Select/Auswahl 224Case-Struktur 226Tunnel & Shift Register 231Indexing Enabled (Indexing)/Indexing Disabled (Last Value) 232Leerer Tunnel & USE DEFAULT IF UNWIRED 233Concatenating Tunnel 233Conditional Tunnel 235Shift Register 237Unterprogramm (SubVI) 242Sequenz 247Ereignisstruktur 250Timing-Funktionen 254Tick Count (ms) 255High Resolution Relative Seconds.vi 256Wait (ms) 257Wait Until Next ms Multiple 258Unterschied zwischen Wait (ms) und Wait Until Next ms Multiple 259State Machine (Zustandsautomat) 260Grundlagen zur State Machine (Zustandsautomat) 260Realisierung einer State Machine in LabVIEW 261Übungen zu Schleifen, Shift Register und Timing 263Übungen zu For-Schleifen 263Übungen zu While-Schleifen 264Übungen zu Shift Registern 265Übungen zu Timing 266Aufgaben zu Automaten 266Lösungen zu den Übungsaufgaben 266State Machine beim Black Jack 270Die For-Schleife bei Black Jack 275Die Ereignisstruktur bei Black Jack 275Der CROUPIER‘S GAME-Case bei Black Jack 280KAPITEL 7: BLACK JACK 2283Programmbeschreibung 283VI Analyzer-Toolkit 291Analyze VIs 293KAPITEL 8: WENN GAR NICHTS FUNKTIONIERT: DEBUGGING UND ERRORHANDLING301Fehler zur Erstellungszeit 301Ausführungsfehler 303Highlight Execution 303Sonden-Werkzeug 304Verbindungswerte speichern 305Setzen von Breakpoints 306Programmcode schrittweise ausführen (Single Stepping) 307Fehlerbehandlung in LabVIEW 309Fehler-Cluster 309Fehler-Ring 311Simple Error Handler.vi 314Clear Errors.vi 315Case-Struktur mit Error 315Übungen 316Lösungen 316TEIL III: DATENVERARBEITUNG UND ANSTEUERUNGKAPITEL 9: DATENVERARBEITUNG319Verarbeitung von Dateien in LabVIEW 319Öffnen und Schließen von Dateien 321Open/Create/Replace File 321Close File 325Textdateien 325Read (from) Text File 326Write (to) Text File 327Tabellenkalkulation 329Write Delimited Spreadsheet.vi 329Read Delimited Spreadsheet.vi 332Diagramme und Graphen 334Waveform Chart und Waveform Graph 335XY Graph 343Intensity Chart∖Graph 345Formula Node 347Übungsaufgaben zu Datenverarbeitung 351Files 351Textdateien 351Tabellenkalkulation 351Diagramme und Graphen 351Formula Node 352Lösungen zu Datenverarbeitung 353Files 353Textdateien 353Tabellenkalkulation 355Diagramme und Graphen 355Formula Node 356KAPITEL 10: HARDWARESTEUERUNG357National Instruments Measurement and Automation Explorer (NI MAX) 357VISA 363Treiber einbinden 366TEIL IV: TOP-TEN PART 371KAPITEL 11: ZEHN GÄNGIGE SCHNITZER BEIM PROGRAMMIEREN IN LABVIEW373Beschriftung 376Wire verläuft unter Element 377Initialisierung 378Property Nodes 378Dokumentation 378Icon 379Kommentare 379Coercion Dot 379Wire verläuft von rechts nach links 380Buntes Frontpanel 380Abbildungsverzeichnis 381Stichwortverzeichnis 393
OCP Oracle Certified Professional Java SE 17 Developer Study Guide
AN EFFECTIVE AND PRACTICAL STUDY AID TO THE NEW OCP JAVA SE 17 DEVELOPER CERTIFICATION EXAMIn the OCP Oracle Certified Professional Java SE 17 Developer Study Guide: Exam 1Z0-829, you'll find accessible and essential test prep material for the in-demand and practical OCP Java SE 17 Developer certification. Providing comprehensive coverage of all OCP Java SE 17 exam objectives and competencies, the Study Guide offers you access to all the skills and knowledge you'll need to succeed on the test and in the field as a new or experienced Java developer.This book provides material on records, sealed classes, text blocks, dates, streams, controlling program flow, using the Java object-oriented approach, handling exceptions, working with arrays and collections, and more. You'll also get:* Intuitively organized information that aligns with the competencies tested on the exam and those required by real-world Java developers* Opportunities to practice and develop skills that remain in high demand in the IT industry* Access to the Sybex online learning center, with chapter review questions, full-length practice exams, hundreds of electronic flashcards, and a glossary of key termsPerfect for anyone prepping for the brand-new OCP Java SE 17 credential, OCP Oracle Certified Professional Java SE 17 Developer Study Guide: Exam 1Z0-829 is also a can't-miss reference for practicing and aspiring Java developers seeking to learn or reinforce their foundational skills in Java programming and improve their performance on the job.ABOUT THE AUTHORSSCOTT SELIKOFF has been a professional Java Enterprise architect for over 20 years. He currently works as a Staff Software Engineer at Google, specializing in Architecture and Cloud Services. He is a Leader of the Garden State Java User Group, helping to facilitate discussions and exchange of ideas within the community. JEANNE BOYARSKY is a Java Champion and has worked as a Java developer for a major bank for more than 20 years. She is a senior moderator at CodeRanch, and trains and mentors students of all levels, including the programming department of a FIRST robotics team. Introduction xxiiiAssessment Test xlvCHAPTER 1 BUILDING BLOCKS 1Learning about the Environment 2Major Components of Java 2Downloading a JDK 3Understanding the Class Structure 4Fields and Methods 4Comments 5Classes and Source Files 7Writing a main() Method 8Creating a main() Method 8Passing Parameters to a Java Program 9Understanding Package Declarations and Imports 11Packages 12Wildcards 13Redundant Imports 13Naming Conflicts 15Creating a New Package 16Compiling and Running Code with Packages 16Compiling to Another Directory 18Compiling with JAR Files 20Creating a JAR File 20Ordering Elements in a Class 21Creating Objects 23Calling Constructors 23Reading and Writing Member Fields 24Executing Instance Initializer Blocks 24Following the Order of Initialization 25Understanding Data Types 26Using Primitive Types 27Using Reference Types 29Distinguishing between Primitives and Reference Types 30Creating Wrapper Classes 31Defining Text Blocks 32Declaring Variables 34Identifying Identifiers 35Declaring Multiple Variables 36Initializing Variables 38Creating Local Variables 38Passing Constructor and Method Parameters 40Defining Instance and Class Variables 41Inferring the Type with var 41Managing Variable Scope 45Limiting Scope 45Tracing Scope 46Applying Scope to Classes 47Reviewing Scope 48Destroying Objects 48Understanding Garbage Collection 48Tracing Eligibility 49Summary 51Exam Essentials 52Review Questions 54CHAPTER 2 OPERATORS 65Understanding Java Operators 66Types of Operators 66Operator Precedence 67Applying Unary Operators 69Complement and Negation Operators 70Increment and Decrement Operators 71Working with Binary Arithmetic Operators 72Arithmetic Operators 72Numeric Promotion 75Assigning Values 77Assignment Operator 77Casting Values 77Compound Assignment Operators 81Return Value of Assignment Operators 82Comparing Values 83Equality Operators 83Relational Operators 84Logical Operators 87Conditional Operators 88Making Decisions with the Ternary Operator 90Summary 92Exam Essentials 92Review Questions 94CHAPTER 3 MAKING DECISIONS 101Creating Decision- Making Statements 102Statements and Blocks 102The if Statement 103The else Statement 104Shortening Code with Pattern Matching 106Applying switch Statements 110The switch Statement 110The switch Expression 115Writing while Loops 121The while Statement 121The do/while Statement 123Infinite Loops 123Constructing for Loops 124The for Loop 124The for- each Loop 129Controlling Flow with Branching 131Nested Loops 131Adding Optional Labels 132The break Statement 133The continue Statement 135The return Statement 137Unreachable Code 138Reviewing Branching 139Summary 139Exam Essentials 140Review Questions 142CHAPTER 4 CORE APIS 155Creating and Manipulating Strings 156Concatenating 157Important String Methods 158Method Chaining 169Using the StringBuilder Class 170Mutability and Chaining 171Creating a StringBuilder 172Important StringBuilder Methods 172Understanding Equality 175Comparing equals() and == 175The String Pool 176Understanding Arrays 178Creating an Array of Primitives 179Creating an Array with Reference Variables 180Using an Array 182Sorting 183Searching 184Comparing 185Using Methods with Varargs 187Working with Multidimensional Arrays 188Calculating with Math APIs 190Finding the Minimum and Maximum 190Rounding Numbers 191Determining the Ceiling and Floor 191Calculating Exponents 192Generating Random Numbers 192Working with Dates and Times 192Creating Dates and Times 193Manipulating Dates and Times 197Working with Periods 199Working with Durations 202Period vs. Duration 204Working with Instants 205Accounting for Daylight Saving Time 206Summary 208Exam Essentials 209Review Questions 210CHAPTER 5 METHODS 219Designing Methods 220Access Modifiers 221Optional Specifiers 222Return Type 224Method Name 226Parameter List 226Method Signature 227Exception List 227Method Body 228Declaring Local and Instance Variables 228Local Variable Modifiers 229Effectively Final Variables 230Instance Variable Modifiers 231Working with Varargs 232Creating Methods with Varargs 232Calling Methods with Varargs 233Accessing Elements of a Vararg 234Using Varargs with Other Method Parameters 234Applying Access Modifiers 235Private Access 235Package Access 236Protected Access 237Public Access 242Reviewing Access Modifiers 242Accessing static Data 243Designing static Methods and Variables 243Accessing a static Variable or Method 244Class vs. Instance Membership 245Static Variable Modifiers 248Static Initializers 250Static Imports 251Passing Data among Methods 253Passing Objects 253Returning Objects 255Autoboxing and Unboxing Variables 256Overloading Methods 258Reference Types 259Primitives 260Autoboxing 261Arrays 261Varargs 261Putting It All Together 262Summary 263Exam Essentials 264Review Questions 265CHAPTER 6 CLASS DESIGN 275Understanding Inheritance 276Declaring a Subclass 276Class Modifiers 278Single vs. Multiple Inheritance 279Inheriting Object 279Creating Classes 281Extending a Class 281Applying Class Access Modifiers 282Accessing the this Reference 283Calling the super Reference 284Declaring Constructors 286Creating a Constructor 286The Default Constructor 287Calling Overloaded Constructors with this() 289Calling Parent Constructors with super() 292Initializing Objects 297Initializing Classes 297Initializing final Fields 298Initializing Instances 300Inheriting Members 304Overriding a Method 305Redeclaring private Methods 311Hiding Static Methods 311Hiding Variables 313Writing final Methods 314Creating Abstract Classes 315Introducing Abstract Classes 315Declaring Abstract Methods 317Creating a Concrete Class 318Creating Constructors in Abstract Classes 320Spotting Invalid Declarations 321Creating Immutable Objects 323Declaring an Immutable Class 323Performing a Defensive Copy 325Summary 326Exam Essentials 327Review Questions 330CHAPTER 7 BEYOND CLASSES 345Implementing Interfaces 346Declaring and Using an Interface 346Extending an Interface 348Inheriting an Interface 349Inserting Implicit Modifiers 351Declaring Concrete Interface Methods 353Working with Enums 361Creating Simple Enums 361Using Enums in switch Statements 363Adding Constructors, Fields, and Methods 364Sealing Classes 367Declaring a Sealed Class 367Compiling Sealed Classes 368Specifying the Subclass Modifier 369Omitting the permits Clause 370Sealing Interfaces 372Reviewing Sealed Class Rules 372Encapsulating Data with Records 373Understanding Encapsulation 374Applying Records 375Understanding Record Immutability 377Declaring Constructors 378Customizing Records 381Creating Nested Classes 382Declaring an Inner Class 382Creating a static Nested Class 386Writing a Local Class 387Defining an Anonymous Class 389Reviewing Nested Classes 391Understanding Polymorphism 392Object vs. Reference 393Casting Objects 395The instanceof Operator 397Polymorphism and Method Overriding 397Overriding vs. Hiding Members 399Summary 401Exam Essentials 402Review Questions 404CHAPTER 8 LAMBDAS AND FUNCTIONAL INTERFACES 419Writing Simple Lambdas 420Looking at a Lambda Example 420Learning Lambda Syntax 422Coding Functional Interfaces 426Defining a Functional Interface 426Adding Object Methods 427Using Method References 429Calling static Methods 430Calling Instance Methods on a Particular Object 430Calling Instance Methods on a Parameter 432Calling Constructors 433Reviewing Method References 433Working with Built- in Functional Interfaces 434Implementing Supplier 435Implementing Consumer and BiConsumer 436Implementing Predicate and BiPredicate 438Implementing Function and BiFunction 439Implementing UnaryOperator and BinaryOperator 440Checking Functional Interfaces 441Using Convenience Methods on Functional Interfaces 442Learning the Functional Interfaces for Primitives 443Working with Variables in Lambdas 445Listing Parameters 446Using Local Variables inside a Lambda Body 448Referencing Variables from the Lambda Body 449Summary 450Exam Essentials 451Review Questions 452CHAPTER 9 COLLECTIONS AND GENERICS 463Using Common Collection APIs 464Using the Diamond Operator 465Adding Data 466Removing Data 466Counting Elements 467Clearing the Collection 467Check Contents 468Removing with Conditions 468Iterating 469Determining Equality 470Using the List Interface 471Comparing List Implementations 472Creating a List with a Factory 472Creating a List with a Constructor 473Working with List Methods 474Converting from List to an Array 476Using the Set Interface 477Comparing Set Implementations 477Working with Set Methods 478Using the Queue and Deque Interfaces 479Comparing Deque Implementations 480Working with Queue and Deque Methods 480Using the Map Interface 483Comparing Map Implementations 484Working with Map Methods 484Calling Basic Methods 486Iterating through a Map 487Getting Values Safely 487Replacing Values 488Putting if Absent 488Merging Data 488Comparing Collection Types 490Sorting Data 492Creating a Comparable Class 492Comparing Data with a Comparator 496Comparing Comparable and Comparator 497Comparing Multiple Fields 498Sorting and Searching 500Sorting a List 503Working with Generics 503Creating Generic Classes 504Understanding Type Erasure 506Implementing Generic Interfaces 509Writing Generic Methods 510Creating a Generic Record 512Bounding Generic Types 512Putting It All Together 517Summary 519Exam Essentials 520Review Questions 521CHAPTER 10 STREAMS 531Returning an Optional 532Creating an Optional 533Dealing with an Empty Optional 534Using Streams 536Understanding the Pipeline Flow 536Creating Stream Sources 539Using Common Terminal Operations 541Using Common Intermediate Operations 549Putting Together the Pipeline 553Working with Primitive Streams 557Creating Primitive Streams 557Mapping Streams 560Using Optional with Primitive Streams 562Summarizing Statistics 564Working with Advanced Stream Pipeline Concepts 565Linking Streams to the Underlying Data 565Chaining Optionals 566Using a Spliterator 569Collecting Results 570Summary 578Exam Essentials 579Review Questions 581CHAPTER 11 EXCEPTIONS AND LOCALIZATION 591Understanding Exceptions 592The Role of Exceptions 592Understanding Exception Types 593Throwing an Exception 596Calling Methods That Throw Exceptions 598Overriding Methods with Exceptions 599Printing an Exception 600Recognizing Exception Classes 600RuntimeException Classes 601Checked Exception Classes 604Error Classes 605Handling Exceptions 605Using try and catch Statements 606Chaining catch Blocks 607Applying a Multi- catch Block 609Adding a finally Block 611Automating Resource Management 615Introducing Try- with- Resources 615Basics of Try- with- Resources 616Applying Effectively Final 620Understanding Suppressed Exceptions 621Formatting Values 624Formatting Numbers 624Formatting Dates and Times 625Customizing the Date/Time Format 626Supporting Internationalization and Localization 629Picking a Locale 630Localizing Numbers 632Localizing Dates 637Specifying a Locale Category 638Loading Properties with Resource Bundles 639Creating a Resource Bundle 640Picking a Resource Bundle 641Selecting Resource Bundle Values 643Formatting Messages 645Using the Properties Class 645Summary 646Exam Essentials 647Review Questions 648CHAPTER 12 MODULES 661Introducing Modules 662Exploring a Module 663Benefits of Modules 664Creating and Running a Modular Program 664Creating the Files 665Compiling Our First Module 666Running Our First Module 668Packaging Our First Module 669Updating Our Example for Multiple Modules 669Updating the Feeding Module 670Creating a Care Module 670Creating the Talks Module 672Creating the Staff Module 674Diving into the Module Declaration 675Exporting a Package 676Requiring a Module Transitively 677Opening a Package 679Creating a Service 680Declaring the Service Provider Interface 681Creating a Service Locator 682Invoking from a Consumer 684Adding a Service Provider 685Reviewing Directives and Services 686Discovering Modules 687Identifying Built- in Modules 688Getting Details with java 690Describing with jar 693Learning about Dependencies with jdeps 693Using the -- jdk- internals Flag 695Using Module Files with jmod 696Creating Java Runtimes with jlink 696Reviewing Command- Line Options 697Comparing Types of Modules 700Named Modules 701Automatic Modules 701Unnamed Modules 704Reviewing Module Types 704Migrating an Application 704Determining the Order 705Exploring a Bottom- Up Migration Strategy 706Exploring a Top- Down Migration Strategy 707Splitting a Big Project into Modules 709Failing to Compile with a Cyclic Dependency 709Summary 711Exam Essentials 712Review Questions 713CHAPTER 13 CONCURRENCY 721Introducing Threads 722Understanding Thread Concurrency 723Creating a Thread 724Distinguishing Thread Types 725Managing a Thread’s Life Cycle 727Polling with Sleep 727Interrupting a Thread 729Creating Threads with the Concurrency API 730Introducing the Single- Thread Executor 730Shutting Down a Thread Executor 731Submitting Tasks 732Waiting for Results 733Scheduling Tasks 737Increasing Concurrency with Pools 739Writing Thread- Safe Code 740Understanding Thread- Safety 740Accessing Data with volatile 741Protecting Data with Atomic Classes 742Improving Access with Synchronized Blocks 744Synchronizing on Methods 746Understanding the Lock Framework 747Orchestrating Tasks with a CyclicBarrier 751Using Concurrent Collections 754Understanding Memory Consistency Errors 754Working with Concurrent Classes 755Obtaining Synchronized Collections 757Identifying Threading Problems 758Understanding Liveness 758Managing Race Conditions 761Working with Parallel Streams 761Creating Parallel Streams 762Performing a Parallel Decomposition 762Processing Parallel Reductions 764Summary 770Exam Essentials 770Review Questions 772CHAPTER 14 I/O 785Referencing Files and Directories 786Conceptualizing the File System 786Creating a File or Path 789Operating on File and Path 793Using Shared Functionality 793Handling Methods That Declare IOException 797Providing NIO.2 Optional Parameters 797Interacting with NIO.2 Paths 799Creating, Moving, and Deleting Files and Directories 805Comparing Files with isSameFile() and mismatch() 809Introducing I/O Streams 811Understanding I/O Stream Fundamentals 811Learning I/O Stream Nomenclature 812Reading and Writing Files 817Using I/O Streams 817Enhancing with Files 820Combining with newBufferedReader() and newBufferedWriter() 822Reviewing Common Read and Write Methods 823Serializing Data 824Applying the Serializable Interface 825Marking Data transient 827Ensuring That a Class Is Serializable 827Storing Data with ObjectOutputStream and ObjectInputStream 828Understanding the Deserialization Creation Process 830Interacting with Users 832Printing Data to the User 832Reading Input as an I/O Stream 833Closing System Streams 833Acquiring Input with Console 834Working with Advanced APIs 837Manipulating Input Streams 838Discovering File Attributes 840Traversing a Directory Tree 843Searching a Directory 847Review of Key APIs 848Summary 850Exam Essentials 851Review Questions 852CHAPTER 15 JDBC 863Introducing Relational Databases and SQL 864Identifying the Structure of a Relational Database 866Writing Basic SQL Statements 867Introducing the Interfaces of JDBC 868Connecting to a Database 870Building a JDBC URL 870Getting a Database Connection 871Working with a PreparedStatement 873Obtaining a PreparedStatement 874Executing a PreparedStatement 875Working with Parameters 878Updating Multiple Records 881Getting Data from a ResultSet 882Reading a ResultSet 882Getting Data for a Column 885Using Bind Variables 887Calling a CallableStatement 887Calling a Procedure without Parameters 888Passing an IN Parameter 889Returning an OUT Parameter 889Working with an INOUT Parameter 890Comparing Callable Statement Parameters 891Using Additional Options 891Controlling Data with Transactions 892Committing and Rolling Back 892Bookmarking with Savepoints 894Reviewing Transaction APIs 895Closing Database Resources 895Summary 897Exam Essentials 898Review Questions 900Appendix Answers to the Review Questions 909Chapter 1: Building Blocks 910Chapter 2: Operators 913Chapter 3: Making Decisions 916Chapter 4: Core APIs 921Chapter 5: Methods 924Chapter 6: Class Design 927Chapter 7: Beyond Classes 932Chapter 8: Lambdas and Functional Interfaces 936Chapter 9: Collections and Generics 939Chapter 10: Streams 942Chapter 11: Exceptions and Localization 945Chapter 12: Modules 949Chapter 13: Concurrency 951Chapter 14: I/o 955Chapter 15: Jdbc 959Index 963
Modern Data Engineering with Apache Spark
Leverage Apache Spark within a modern data engineering ecosystem. This hands-on guide will teach you how to write fully functional applications, follow industry best practices, and learn the rationale behind these decisions. With Apache Spark as the foundation, you will follow a step-by-step journey beginning with the basics of data ingestion, processing, and transformation, and ending up with an entire local data platform running Apache Spark, Apache Zeppelin, Apache Kafka, Redis, MySQL, Minio (S3), and Apache Airflow.Apache Spark applications solve a wide range of data problems from traditional data loading and processing to rich SQL-based analysis as well as complex machine learning workloads and even near real-time processing of streaming data. Spark fits well as a central foundation for any data engineering workload. This book will teach you to write interactive Spark applications using Apache Zeppelin notebooks, write and compile reusable applications and modules, and fully test both batch and streaming. You will also learn to containerize your applications using Docker and run and deploy your Spark applications using a variety of tools such as Apache Airflow, Docker and Kubernetes.Reading this book will empower you to take advantage of Apache Spark to optimize your data pipelines and teach you to craft modular and testable Spark applications. You will create and deploy mission-critical streaming spark applications in a low-stress environment that paves the way for your own path to production.WHAT YOU WILL LEARN* Simplify data transformation with Spark Pipelines and Spark SQL* Bridge data engineering with machine learning* Architect modular data pipeline applications* Build reusable application components and libraries* Containerize your Spark applications for consistency and reliability* Use Docker and Kubernetes to deploy your Spark applications* Speed up application experimentation using Apache Zeppelin and Docker* Understand serializable structured data and data contracts * Harness effective strategies for optimizing data in your data lakes* Build end-to-end Spark structured streaming applications using Redis and Apache Kafka* Embrace testing for your batch and streaming applications* Deploy and monitor your Spark applications WHO THIS BOOK IS FORProfessional software engineers who want to take their current skills and apply them to new and exciting opportunities within the data ecosystem, practicing data engineers who are looking for a guiding light while traversing the many challenges of moving from batch to streaming modes, data architects who wish to provide clear and concise direction for how best to harness and use Apache Spark within their organization, and those interested in the ins and outs of becoming a modern data engineer in today's fast-paced and data-hungry worldSCOTT HAINES is a full stack engineer with a current focus on real-time, highly available, trustworthy analytics systems. He works at Twilio as a Principal Software Engineer on the Voice Insights team, where he helps drive Spark adoption, creates streaming pipeline architectures, and helps to architect and build out a massive stream and batch processing platform.Prior to Twilio, Scott worked writing the backend Java APIs for Yahoo Games as well as the real-time game ranking and ratings engine (built on Storm) to provide personalized recommendations and page views for 10 million customers. He finished his tenure at Yahoo working for Flurry Analytics where he wrote the alerts and notifications system for mobile devices. PART I. THE FUNDAMENTALS OF DATA ENGINEERING WITH SPARK1. Introduction to Modern Data Engineering2. Getting Started with Apache Spark3. Working with Data4. Transforming Data with Spark SQL and the DataFrame API5. Bridging Spark SQL with JDBC6. Data Discovery and the Spark SQL Catalog7. Data Pipelines & Structured Spark ApplicationsPART II. THE STREAMING PIPELINE ECOSYSTEM8. Workflow Orchestration with Apache Airflow9. A Gentle Introduction to Stream Processing10. Patterns for Writing Structured Streaming Applications11. Apache Kafka & Spark Structured Streaming12. Analytical Processing & InsightsPART III. ADVANCED TECHNIQUES13. Advanced Analytics with Spark Stateful Structured Streaming14. Deploying Mission Critical Spark Applications on Spark Standalone15. Deploying Mission Critical Spark Applications on Kubernetes
Einführung in JavaFX/OpenJFX
Das JavaFX-Framework gibt es schon seit einigen Jahren, hat aber mit den ersten Versionen fast nur noch den Namen gemeinsam. Seit der Version 2 hat JavaFX jedoch einen festen und ausgereiften Stand erreicht und ist mittlerweile die aktuelle Technologie im Java-Umfeld, um leistungsfähige und moderne grafische Benutzeroberflächen (GUI) erstellen zu können. Dieses Buch stellt Ihnen dazu eine Vielzahl an Widgets und Komponenten samt dem JavaFX-API vor. Es zeigt Ihnen auch, wie Sie mit Hilfe des APIs sowohl aus Java heraus, aber auch über einen XML-basierenden Ansatz (FXML) samt einem visuellen Designer-Tool (Scene Builder) grafische User-Interfaces erstellen können. So können Sie sogar ohne Java-Kenntnisse eine leistungsfähige und moderne GUI erstellen, aber auch Kenntnisse in anderen GUI-Technologien wie Swing übertragen und sogar diese Komponenten in JavaFX integrieren. RALPH STEYER ist Diplom-Mathematiker und seit 1996 im Bereich EDV-Schulung, Programmierung und Beratung selbstständig. Seine Spezialgebiete sind die Internetprogrammierung und OOP. Das Umfeld von JavaFX - Grundlagen zu Java - Einführung und Grundlagen zu JavaFX - JavaFX-Applikationen mit FXML - Java-Oberflächen mit XML und Web-Technologien - Der Scene Builder - Java-Oberflächen mit der Maus erzeugen - JavaFX UI
Beginning PyQt
Learn GUI application development from the ground up by building simple projects that teach the fundamentals of using PyQt6. This 2nd edition includes updated code, programs, and new chapters to get you started using the newest version. Taking a practical approach, each chapter will gradually teach more advanced and diverse concepts to aid you in designing and customizing interesting and professional applications.You'll start by learning important concepts related to GUI development, and then jump right into building different and exciting projects in every chapter. Along the way, you’ll discover new widgets, layouts, and other concepts that will help you to build better UIs. You'll also construct more elaborate GUIs, covering topics that include storing data using the clipboard, graphics and animation, support for SQL databases, multithreading applications, and building modern-looking interfaces.Using this knowledge, you’ll be able to build a photo editor, games, a text editor, a working web browser, and an assortment of other GUIs. In the end, this book will guide you through the process of creating UIs to help you bring your own ideas to life. Find out what you need to begin making your own applications with PyQt!WHAT YOU'LL LEARN* Develop cross-platform UIs with PyQt and Python* Use PyQt’s many widgets and apply them by building real applications* Build larger applications through a step-by-step approach and break the code into smaller chunks for deeper understanding* Work with more complex applications in PyQt, covering SQL databases, multithreading, web browsers, and more* Create modern-looking UIs with Qt Quick and QtQml using the latest version of PyQtWHO THIS BOOK IS FORPython developers who are looking to begin creating user interfaces and want to utilize the latest version of PyQt to gets started. Having prior knowledge of PyQt or other Python UI toolkits is not necessary to begin using this book.JOSHUA WILLMAN is a software engineer with more than 12 years of experience developing applications in mainly Python and C++. His career has allowed him to participate in many different fields, from robotics, machine learning, and computer vision, to UI development, game development, and more. His first experience with PyQt was building an interface for simplifying the labeling process of datasets for machine learning. Ever since then, he’s been hooked!In recent years, his passion for programming and all things visual has allowed him to participate in numerous projects. These include designing educational courses for mobile robotics and computer vision using Arduino and Raspberry Pi, building GUI applications, and working as a solo indie game developer. He currently works as a robotics engineer, a technical writer, and a content creator (learning web development in his spare time in order to build his own platform, redhuli.io). When he’s not working, he enjoys tinkering on robotics projects and spending time with his wonderful wife and daughter.He is also the author of two books with Apress:• Beginning PyQt: A Hands-on Approach to GUI Programming (1st Edition)• Modern PyQt: Create GUI Applications for Project Management, Computer Vision, and Data AnalysisBEGINNING PYQT (2E)Chapter 1: Getting Started with PyQtChapter 2: Building a Simple GUIChapter 3: Adding More Functionality with WidgetsChapter 4: Learning About Layout ManagementChapter 5: Menus, Toolbars, and MoreChapter 6: Styling Your GUIsChapter 7: Handling Events in PyQtChapter 8: Creating GUIs with Qt DesignerChapter 9: Working with the ClipboardChapter 10: Presenting Data in PyQtChapter 11: Graphics and Animation in PyQTChapter 12: Creating Custom WidgetsChapter 13: Working with QT QuickChapter 14: Introduction to Handling DatabasesChapter 15: Managing ThreadsChapter 16: Extra ProjectsAppendix: Reference Guide for PyQT6
Gamedesign für Dummies Junior
Spiele zu entwickeln ist dein Traum? Worauf wartest du? Mit der Programmiersprache Scratch ist es sehr einfach, die Zutaten für ein Spiel zu erstellen. Mit Scratch kannst du zeichnen, animieren, musizieren, programmieren, Sounds aufnehmen und Texte als Sprache ausgeben. Wie du dann daraus ein cooles Spiel machst, erklärt dir dieses Buch. In den Kapiteln werden verschiedene Projekte beschrieben, die du nur nachmachen musst. Nichts kann schief gehen. Schritt für Schritt steigst du immer tiefer ins Programmieren und Designen ein. Und je mehr Tipps und Tricks du kennst, desto einfacher kannst du deine eigenen Ideen umsetzen.Bestens geeignet für Kinder und Jugendliche ab 10 Jahren. Johanna Janiszewski ist professionelle Spieleentwicklerin und Game Designerin. Sie führt ihr eigenes Spielestudio "Tiny Crocodile Studios" in Berlin und entwickelte das Kinderspiel "Monkey Swag", welches 2018 den Deutschen Computerspielpreis als bestes Kinderspiel gewann. Für den Verband der deutschen Spielebranche "game" ist sie Regionalvertreterin für Berlin-Brandenburg. Daneben hält sie Workshops zur Spieleentwicklung für alle Altersgruppen und ist Autorin von "Unity für Dummies".Lisa Ihde studiert im Master "IT-Systems Engineering" am Hasso-Plattner-Institut Potsdam. Nebenbei leitet sie (Spiele-)Programmierworkshops für Kinder und Jugendliche und hat international an Game Jams teilgenommen. Sie war Jurorin beim Deutschen Multimediapreis, wo auch Scratch-Spiele von Kindern ausgezeichnet werden. Um die Diversität in der Spielebranche zu stärken, entwickelte sie mit Frauen aus sechs Ländern digitale Spiele - gefördert durchs Goethe-Institut. Sie ist Autorin von "Meine eigene Homepage für Dummies Junior" und von "3D-Grafiken designen und animieren für Dummies Junior".Wilfried Elmenreich ist Professor an der Alpen-Adria-Universität Klagenfurt, wo er im Masterstudiengang "Game Studies and Engineering" Lehrveranstaltungen zu Computerspielproduktion und Brettspieldesign abhält. Er ist Autor von Anleitungen im deutschsprachigen Scratch-Wiki und hat auf der Spieleplattform itch.io einen Game Jam für Scratch-Spiele organisiert. Zudem gibt er für Jugendliche gerne Kurse zur Spieleentwicklung mit Scratch und ist Autor mehrerer Bücher.EINFÜHRUNG 8Hallo, zukünftige Gamedesign-Profis! 8Über Gamedesign 8Über Scratch 9Über dieses Buch 10Über dich 10Über die Symbole, die wir in diesem Buch verwenden 11KAPITEL 1: AUF DIE PLÄTZE 13Erstelle deinen Scratch-Account 13Erste Schritte mit Scratch – die Benutzeroberfläche 14Der Zaubertrick 16Die Spielfigur 17Der Soundeffekt 20Das Hintergrundbild 21Fühler, wechsle dich! 23Ordnung ist das halbe Leben 26Das Projekt speichern 26Das Projekt laden 26Dein Projekt veröffentlichen 27Andere Projekte entdecken 28Zauber-Fangspiel 30KAPITEL 2: SPAẞ BEIM FENSTERPUTZEN 35Das Projekt vorbereiten 36Einen Fleck zeichnen 36Den Countdown für den Spielstart zeichnen 37Die Auswertung für das Spielende zeichnen 40Die Figuren zurechtrücken 40Jubelschreie finden 42Variablen anlegen 43Die Variablen zurechtrücken 46Mehr Möglichkeiten dank Erweiterungen 47Das Spiel programmieren 483 2 1 Los! 48Alles vollklecksen 51Die Flecken wegwischen 54Spielende 56Eine neue Bestzeit erreichen 57Ideen zum Gamedesign 59Spielspaß durch Zahlen 59Balancing-Werte 60Die Spielidee verändern 61KAPITEL 3: HÖHLENEXPEDITION 63Die Spielfigur 64Steuerung für die Spielfigur 65Animieren der Spielfigur 69Begrenzen der Spielfigurbewegung 71Helm hinzufügen 72Die Höhle 73Vorsicht, Stalaktiten! 75Die Stalaktiten spüren 80Helme zählen 81Betreten der nächsten Höhle 83Neue Höhlenhintergründe für die Bühne 84Höhlen mitzählen und Spiel mit der Zeit schwieriger machen 85Game Over! 86Ideen zum Gamedesign 87Balancing 87Gehen oder Rennen? 88Noch mehr Balancingwerte 90Zugänglichkeit und Spielspaß 91Was mache ich hier eigentlich?! 92Die Spielmechanik verändern 92Geräusche hinzufügen 93Nett sein oder auslachen? 93KAPITEL 4: VIRTUELLES HAUSTIER 95Das Projekt vorbereiten 96Hast du ʽnen Vogel? 96Zeichne den Vogel 96Entferne den Hintergrund 97Zeichne das Hintergrundbild für die Bühne 98Wir haben da etwas vorbereitet 100Das Bühnenbild hochladen 100Die Vogelbilder hochladen 101Den Vogel zurechtrücken 102Es dem Vogel gemütlich machen 105Die Objekte zurechtrücken 106Geheime Orte einfügen 107Dem Vogel durch Programmieren »Leben« einhauchen 108Den Vogel kitzeln 108Eigene Blöcke für eigene Ideen 110Dem Vogel beibringen zu schlafen 111Dem Vogel das Fliegen beibringen 113Dem Vogel noch mehr beibringen 114Den Vogel selbst entscheiden lassen 118Musik programmieren und kombinieren 119Ideen zum Gamedesign 121Der Vogelsimulator 121Selbst kreativ werden 122Ein kleines Spiel hinzufügen 123KAPITEL 5: NOTARZT, EIN 3D-PROJEKT! 126Projekt anlegen und Bühnenbild zeichnen 128Straße 129Unser Fahrzeug 133Berge und Himmel am Horizont einbauen 136Die Straße verschiebbar machen 138Andere Fahrzeuge hinzufügen 139Der Unfall 142Ideen zum Gamedesign 145Punkte sammeln 145Das Fahrzeug ändern 146Spurwechsel des anderen Fahrzeugs 148KAPITEL 6: WELTRAUM-ABENTEUER 149Springen und Laufen 150Vorbereitung des Spiels 150Dein Hunde-Astronaut 150Der Weltraum – unendliche Weiten 153Die Plattformen 154Hindernisse 155Sterne 157Steuerung deines Astronauts 159Starteinstellungen 159Lauf, Hund, Lauf! 161Hoch hinaus! 164Schwerkraft 165Plattform-Berührung 168Berührung von Hindernissen und Fall in Schluchten 170Ordentlich punkten! 171Sterne erzeugen 171Sterne sammeln 173Von Level zu Level 174Bereite die Level vor 174Nächstes Level aufrufen 176Ideen zum Gamedesign 178Tipps fürs Leveldesign 178Ziel und Endsequenz einbauen 179KAPITEL 7: EIGENE PROJEKTE ENTWICKELN 183Eine Idee entwickeln 184Nutze deine Erfahrung 184Der Zufall kann dir helfen 184Andere fragen 185Gamedesign-Fragenbeantworten 185Dein Spiel entwickeln 188Fange klein an 188Die »Einkaufsliste« schreiben 189Bilder und Geräusche von anderen 189Testen, testen und noch mehr testen 191Selber testen 191Mit anderen testen 191Macht’s Spaß? 191Wenn mal etwas schiefgeht 192Detektivarbeit 192Mach mal Pause 193Einen Schritt zurückgehen 194Fehler passieren auch den Besten 194Mache Sicherheitskopien 194Man lernt nie aus 195Noch mehr Anleitungen 195Remixen, Verändern, Lernen 196Andere um Hilfe bitten 197Das Scratch-Wiki 198Dein Spiel veröffentlichen 198Aufmerksamkeit für das Spiel bekommen 199Zwei Tipps zum Schluss 200Bleib dran 200Niemand ist perfekt 200Zum Wiederfinden 201Über die Autoren 205
The Definitive Guide to Jakarta Faces in Jakarta EE 10
Learn and master the new features in the new Eclipse Jakarta Faces (formerly JavaServer Faces or JSF) web framework in this definitive guide written by two of the driving forces of the Faces project and the co-creators of the OmniFaces library. Authors Bauke Scholtz and Arjan Tijms take you through real-world examples that demonstrate how these new features are used with other APIs in Jakarta EE. You’ll see the new and exciting ways Jakarta Faces applications can use to communicate between a client and a server, such as using WebSockets, invoking bean methods directly from Ajax, executing client-side JavaScript when Ajax calls complete, and moreAlong the way you’ll broaden your knowledge of Faces components and web APIs best practices, and learn a great deal about the internals of Faces and the design decisions that have been made when building the Faces API. For example, you’ll see what artefacts are now CDI injectable, how CDI changed Faces internally, and what some of the caveats are when working with the CDI versions of a Faces artefact.Furthermore, you'll build an example application from scratch. After reading The Definitive Guide to Jakarta Faces in Jakarta EE 10, you'll be ready to build your own efficient and secure web applications.WHAT YOU WILL LEARN* Leverage the new features in Jakarta Faces in Jakarta EE in your existing applications* Integrate Faces and CDI* Use the brand new Component Search Expression framework, which enables you to more easily locate components from your template* Extend the Component Search Expression framework with your own search operators* Work with the different ways of mapping requests to Faces, make your application use extension-less URLs, and programmatically inspect which resources are present in your application* Master the best practices for web application development and see which are obsoleteWHO THIS BOOK IS FORExisting JSF or Java developers who need to create a web UI. No prior knowledge of Faces is required, but the book does skew towards the more experienced developer. Concepts such as dependency injection and MVC are assumed to be known, as is a general knowledge about HTML, HTTP and other web standards.BAUKE SCHOLTZ is an Oracle Java Champion, a member of the JSF 2.3 Expert Group and the main creator of the JSF helper library OmniFaces. He is on the internet more commonly known as BalusC who is among the top users and contributors on Stack Overflow. Bauke has integrated several OmniFaces solutions into JSF 2.3. He is a web application specialist and consults or has consulted for these Mercury1 Limited, MyTutor, Nava Finance, LinkPizza, ZEEF, M4N/Zanox, ITCA, RDC and more clients from fintech, affiliate marketing, social media and more as part of his 17 years of experience. This book offers Bauke the opportunity to go into depth as to answering most frequently asked questions and correctly solving most commonly encountered problems while using JSF.ARJAN TIJMS works for Payara Services Ltd and is a JSF (JSR 372) and Security API (JSR 375) Expert Group member. He is the co-creator of the popular OmniFaces library for JSF that was a 2015 Duke’s Choice Award winner, and is the main creator of a set of tests for the Java EE authentication SPI (JASPIC) that has been used by various Java EE vendors. Arjan holds an MSc degree in Computer Science from the University of Leiden, The Netherlands. Writing about this topic was a natural choice for Arjan; He has already written much about it at his blog and would like to expand that by contributing to a book.1. History2. From Zero To Hello World3. Components4. Form Components5. Validation and Conversion6. Output Components7. Facelets Templating8. Backing Beans9. Exception Handling10. WebSocket Push11. Custom Components12. Search Expressions13. Security14. Localization15. Extensions
Modern Parallel Programming with C++ and Assembly Language
Learn the fundamentals of x86 Single instruction multiple data (SIMD) programming using C++ intrinsic functions and x86-64 assembly language. This book emphasizes x86 SIMD programming topics and technologies that are relevant to modern software development in applications which can exploit data level parallelism, important for the processing of big data, large batches of data and related important in data science and much more.Modern Parallel Programming with C++ and Assembly Language is an instructional text that explains x86 SIMD programming using both C++ and assembly language. The book’s content and organization are designed to help you quickly understand and exploit the SIMD capabilities of x86 processors. It also contains an abundance of source code that is structured to accelerate learning and comprehension of essential SIMD programming concepts and algorithms.After reading this book, you will be able to code performance-optimized AVX, AVX2, and AVX-512 algorithms using either C++ intrinsic functions or x86-64 assembly language.WHAT YOU WILL LEARN* Understand the essential details about x86 SIMD architectures and instruction sets including AVX, AVX2, and AVX-512.* Master x86 SIMD data types, arithmetic instructions, and data management operations using both integer and floating-point operands.* Code performance-enhancing functions and algorithms that fully exploit the SIMD capabilities of a modern x86 processor.* Employ C++ intrinsic functions and x86-64 assembly language code to carry out arithmetic calculations using common programming constructs including arrays, matrices, and user-defined data structures.* Harness the x86 SIMD instruction sets to significantly accelerate the performance of computationally intense algorithms in applications such as machine learning, image processing, computer graphics, statistics, and matrix arithmetic.* Apply leading-edge coding strategies and techniques to optimally exploit the x86 SIMD instruction sets for maximum possible performance. WHO THIS BOOK IS FORIntermediate to advanced programmers/developers in general. Readers of this book should have previous programming experience with modern C++ (i.e., ANSI C++11 or later) and Assembly. Some familiarity with Microsoft’s Visual Studio or the GNU toolchain will be helpful. The target audience for Modern X86 SIMD Programming are experienced software developers, programmers and maybe some hobbyists.DANIEL KUSSWURM has over 35 years of professional experience as a software developer, computer scientist, and author. During his career, he has developed innovative software for medical devices, scientific instruments, and image processing applications. On many of these projects, he successfully employed C++ intrinsic functions, x86 assembly language, and SIMD programming techniques to significantly improve the performance of computationally intense algorithms or solve unique programming challenges. His educational background includes a BS in electrical engineering technology from Northern Illinois University along with an MS and PhD in computer science from DePaul University. Daniel Kusswurm is also the author of Modern X86 Assembly Language Programming (ISBN: 978-1484200650), Modern X86 Assembly Language Programming, Second Edition (ISBN: 978-1484240625), and Modern Arm Assembly Language Programming (ISBN: 978 1484262665), all published by Apress.Modern X86 SIMD Programming – Outline Page 1 of 7D. Kusswurm – F:\ModX86SIMD\Outline\ModernX86SIMD_Outline (v1).docxIntroductionThe Introduction presents an overview of the book and includes concise descriptions of each chapter. It also summaries thehardware and software tools required to use the book’s source code.OverviewTarget AudienceChapter DescriptionsSource CodeAdditional ResourcesChapter 1 – SIMD FundamentalsChapter 1 discusses SIMD fundamentals including data types, basic arithmetic, and common data manipulation operations.Understanding of this material is necessary for the reader to successfully comprehend the book’s subsequent chapters.What is SIMD?Simple C++ example (Ch01_01)Brief History of x86 SIMD Instruction Set ExtensionsMMXSSE – SSE4.2AVX, AVX2, and AVX-512SIMD Data TypesFundamental types128b, 256b, 512bInteger typesPacked i8, i16, i32, i64 (signed and unsigned)Floating-point typesPacked f16/b16, f32 and f64Little-endian storageSIMD ArithmeticIntegerAddition and subtractionWraparound vs. saturatedMultiplicationBitwise logicalFloating-pointAddition, subtraction, multiplication, division, sqrtHorizontal addition and subtractionFused multiply-accumulate (FMA)SIMD OperationsIntegerMin & maxComparesShuffles, permutations, and blends Size promotions and reductionsFloating-pointMin & maxComparesShuffles, permutations, and blendsSize promotions and reductionsModern X86 SIMD Programming – Outline Page 2 of 7D. Kusswurm – F:\ModX86SIMD\Outline\ModernX86SIMD_Outline (v1).docxMasked movesConditional execution and merging (AVX-512)SIMD Programming OverviewC++ compiler optionsC++ SIMD intrinsic functionsAssembly language functionsTesting for AVX, AVX2, and AVX-512Chapter 2 – AVX C++ Programming - Part 1Chapter 2 teaches AVX integer arithmetic and other operations using C++ intrinsic functions. It also discusses how to code afew simple image processing algorithms using C++ intrinsic functions and AVX instructions.Basic Integer ArithmeticAddition (Ch02_01)Subtraction (Ch02_02)Multiplication (Ch02_03)Common Integer OperationsBitwise logical operations (Ch02_04)Arithmetic and logical shifts (Ch02_05)Image Processing AlgorithmsPixel minimum and maximum (Ch02_06) Pixel mean (Ch02_07)Chapter 3 – AVX C++ Programming - Part 2Chapter 3 is similar to the previous chapter but emphasizes floating-point instead of integer values. This chapter alsoexplains how to employ C++ intrinsic functions to perform SIMD arithmetic operations using floating-point arrays andmatrices.Basic Floating-Point Arithmetic Addition, subtraction, etc. (Ch03_01)Compares (Ch03_02)Conversions (Ch03_03)Floating-Point ArraysArray mean and standard deviation (Ch03_04, Ch03_05)Array square roots and compares (Ch03_06, Ch03_07)Floating-Point MatricesMatrix column means (Ch03_08, Ch03_09)Chapter 4 – AVX2 C++ Programming - Part 1Chapter 4 describes AVX2 integer programming using C++ intrinsic functions. This chapter also highlights the coding of moresophisticated image processing functions using the AVX2 instruction set.Basic Integer ArithmeticAddition and subtraction (Ch04_01) Pack and unpack operations (Ch04_02)Size promotions (Ch04_03)Image Processing AlgorithmsPixel clipping (Ch04_04)RGB to grayscale (Ch04_05)Modern X86 SIMD Programming – Outline Page 3 of 7D. Kusswurm – F:\ModX86SIMD\Outline\ModernX86SIMD_Outline (v1).docxThresholding (Ch04_06)Pixel conversions (Ch04_07)Chapter 5 – AVX2 C++ Programming - Part 2Chapter 5 explains how to accelerate the performance of commonly used floating-point algorithms using C++ intrinsicfunctions and the AVX2 instruction set. The source code examples in this chapter also demonstrate use of FMA (fusedmultiply-add) arithmetic.Floating-Point ArraysLeast squares with FMA (Ch05_01)Floating-Point MatricesMatrix multiplication (Ch05_02, Ch05_03)Matrix (4x4) multiplication (Ch05_04, Ch05_05)Matrix (4x4) vector multiplication (Ch05_06)Matrix inversion (Ch05_07, Ch05_08)Chapter 6 – AVX2 C++ Programming - Part 3Chapter 6 is a continuation of the previous chapter. It focuses on more advanced algorithms and SIMD programmingtechniques.Signal ProcessingBrief overview of convolution arithmetic1D ConvolutionsVariable and fixed width kernels (Ch06_01, Ch06_02)2D ConvolutionsNon-separable kernel (Ch06_03)Separable kernel (Ch06_04)Chapter 7 – AVX-512 C++ Programming - Part 1Chapter 7 explains AVX-512 integer arithmetic and other operations using C++ intrinsic functions. It also discusses how tocode a few basic image processing algorithms using the AVX-512 instruction set.Integer ArithmeticAddition and subtraction (Ch07_01)Masked arithmetic (Ch07_02)Image ProcessingRGB to grayscale (Ch07_03)Image thresholding (Ch07_04)Image statistics (Ch07_05)Chapter 8 – AVX-512 C++ Programming - Part 2Chapter 8 describes how to code common and advanced floating-point algorithms using C++ intrinsic functions and the AVX512 instruction set.Floating-Point ArithmeticAddition, subtraction, etc. (Ch08_01)Masked operations (Ch08_02)Floating-Point ArraysArray mean and standard deviation (Ch08_03)Modern X86 SIMD Programming – Outline Page 4 of 7D. Kusswurm – F:\ModX86SIMD\Outline\ModernX86SIMD_Outline (v1).docxFloating-Point MatricesCovariance matrix (Ch08_04)Matrix multiplication (Ch08_05, Ch08_06)Matrix (4x4) vector multiplication (Ch08_07)Signal Processing1D convolution using variable and fixed width kernels (Ch08_08)2D convolutions using separable kernel (Ch08_09)Chapter 9 – Supplemental C++ SIMD ProgrammingChapter 9 examines supplemental x86 SIMD programming topics including instruction set detection, how to use SIMD mathlibrary functions, and SIMD operations using text strings.Instruction set detection (Ch09_01)SIMD Math Library FunctionsRectangular to polar coordinate conversions (Ch09_02)Body surface area calculations (Ch09_03)SIMD String OperationsString length (Ch09_04)Chapter 10 – X86 Processor ArchitectureChapter 10 explains x86 processor architecture including data types, register sets, memory addressing modes, and conditioncodes. Knowledge of this material is necessary for the reader to successfully understand the subsequent x86 assemblylanguage programming chapters.Data typesFundamental data typesNumerical data types SIMD data typesStringsInternal architectureGeneral-purpose registersRFLAGS registerMXCSR registerScalar FP and SIMD registersMemory addressingCondition codesChapter 11 – Core Assembly Language Programming – Part 1Chapter 11 teaches fundamental x86-64 assembly language programming and basic instruction use. Understanding of thismaterial is required to comprehend the source code examples in subsequent chapters.Integer ArithmeticAddition and subtraction (Ch11_01)Multiplication (Ch11_02)Division (Ch11_03)Mixed integer types and stack arguments (Ch11_04)Integer OperationsMemory addressing modes (Ch11_05)Simple for-loops (Ch11_06)Modern X86 SIMD Programming – Outline Page 5 of 7D. Kusswurm – F:\ModX86SIMD\Outline\ModernX86SIMD_Outline (v1).docxCompares (Ch11_07)Text StringsString instructions (Ch11_08)Chapter 12 – Core Assembly Language Programming – Part 2Chapter 12 is a continuation of the previous chapter. Topics discussed include scalar floating-point arithmetic, floating-pointarrays, and function calling conventions.Scalar Floating-Point ArithmeticSingle-precision arithmetic (Ch12_01)Double-precision arithmetic (Ch12_02)Compares (Ch12_03)Conversions (Ch12_04)Scalar Floating-Point Arrays Mean, SD (Ch12_05)Function Calling ConventionStack frames (Ch12_06)Using non-volatile general-purpose registers (Ch12_07)Using non-volatile SIMD registers (Ch12_08)Macros for function prologues and epilogues (Ch12_09)Chapter 13 – AVX Assembly Language Programming – Part 1Chapter 13 explains AVX integer arithmetic and other operations using x86-64 assembly language. It also describes how tocode a few simple image processing algorithms using assembly language.Integer ArithmeticAddition and subtraction (Ch13_01)Multiplication (Ch13_02)Common Integer Operations Bitwise logical operations (Ch13_03)Arithmetic and logical shifts (Ch13_04)Image Processing AlgorithmsPixel minimum and maximum (Ch13_05)Pixel mean (Ch13_06)Chapter 14 – AVX Assembly Language Programming – Part 2Chapter 14 is similar to the previous chapter but uses floating-point instead of integer values. This chapter also illustrateshow to employ x86-64 assembly language to perform SIMD arithmetic operations using arrays and matrices.Basic Floating-Point ArithmeticAddition and subtraction, etc. (Ch14_01)Compares and size conversions (Ch14_02)Floating-Point ArraysArray mean and standard deviation (Ch14_03)Array square roots and compares (Ch14_04)Floating-Point MatricesMatrix column means (Ch14_05)Modern X86 SIMD Programming – Outline Page 6 of 7D. Kusswurm – F:\ModX86SIMD\Outline\ModernX86SIMD_Outline (v1).docxChapter 15 – AVX2 Assembly Language Programming – Part 1Chapter 15 describes AVX2 integer programming using x86-64 assembly language. This chapter also highlights the coding ofmore sophisticated image processing functions using the AVX2 instruction set.Integer ArithmeticAddition and subtraction (Ch15_01)Image ProcessingPixel clipping (Ch15_02)RGB to grayscale (Ch15_03)Thresholding (Ch15_04)Pixel conversions (Ch15_05)Chapter 16 – AVX2 Assembly Language Programming – Part 2Chapter 16 explains how to enhance the performance of frequently used floating-point algorithms using x86-64 assemblylanguage and the AVX2 instruction set.Floating-Point ArraysLeast squares with FMA (Ch16_01)Floating-Point MatricesMatrix multiplication (Ch16_02)Matrix (4x4) multiplication (Ch16_03)Matrix (4x4) vector multiplication (Ch16_04)Signal Processing1D convolutions using fixed and variable width kernels (Ch16_05)Chapter 17 – AVX-512 Assembly Language Programming – Part 1Chapter 17 highlights AVX-512 integer arithmetic and other operations using x86-64 assembly language. It also discusseshow to code a few simple image processing algorithms using the AVX-512 instruction set.Integer ArithmeticAddition and subtraction (Ch17_01)Compares, merge masking, and zero-masking (Ch17_02)Image ProcessingPixel clipping (Ch17_03)Image statistics (Ch17_04)Chapter 18 – AVX-512 Assembly Language Programming – Part 2Chapter 18 explains how to code common and advanced floating-point algorithms using x86-64 assembly language and theand the AVX-512 instruction set.Floating-Point ArraysCorrelation coefficient (Ch18_01)Merge and zero masking (Ch18_02)Embedded rounding and broadcasts (Ch18_03)Floating-Point MatricesMatrix (4x4) vector multiplication (Ch18_04)Signal Processing 1D convolutions using fixed and variable width kernels (Ch18_05)Modern X86 SIMD Programming – Outline Page 7 of 7D. Kusswurm – F:\ModX86SIMD\Outline\ModernX86SIMD_Outline (v1).docxAppendix A – Source Code and Development ToolsAppendix A describes how to download, install, and execute the source code. It also includes some brief usage notesregarding Visual Studio and the GNU C++ compiler.Source Code Download InformationSoftware Development ToolsMicrosoft Visual StudioGNU C++ compilerAppendix B – References and Additional ResourcesAppendix B contains a list of references that were consulted during the writing of this book. It also lists supplementalresources that the reader can consult for additional x86 SIMD programming information.X86 SIMD Programming ReferencesAlgorithm ReferencesC++ ReferencesAdditional Resources
Adaptive Machine Learning Algorithms with Python
Learn to use adaptive algorithms to solve real-world streaming data problems. This book covers a multitude of data processing challenges, ranging from the simple to the complex. At each step, you will gain insight into real-world use cases, find solutions, explore code used to solve these problems, and create new algorithms for your own use.Authors Chanchal Chatterjee and Vwani P. Roychowdhury begin by introducing a common framework for creating adaptive algorithms, and demonstrating how to use it to address various streaming data issues. Examples range from using matrix functions to solve machine learning and data analysis problems to more critical edge computation problems. They handle time-varying, non-stationary data with minimal compute, memory, latency, and bandwidth.Upon finishing this book, you will have a solid understanding of how to solve adaptive machine learning and data analytics problems and be able to derive new algorithms for your own use cases. You will also come away with solutions to high volume time-varying data with high dimensionality in a low compute, low latency environment.WHAT YOU WILL LEARN* Apply adaptive algorithms to practical applications and examples* Understand the relevant data representation features and computational models for time-varying multi-dimensional data* Derive adaptive algorithms for mean, median, covariance, eigenvectors (PCA) and generalized eigenvectors with experiments on real data* Speed up your algorithms and put them to use on real-world stationary and non-stationary data* Master the applications of adaptive algorithms on critical edge device computation applicationsWHO THIS BOOK IS FORMachine learning engineers, data scientist and architects, software engineers and architects handling edge device computation and data management.CHANCHAL CHATTERJEE, PH.D, has held several leadership roles in machine learning, deep learning and real-time analytics. He is currently leading Machine Learning and Artificial Intelligence at Google Cloud Platform, California, USA. Previously, he was the Chief Architect of EMC CTO Office where he led end-to-end deep learning and machine learning solutions for data centers, smart buildings, and smart manufacturing for leading customers. Chanchal received several awards including an Outstanding paper award from IEEE Neural Network Council for adaptive learning algorithms recommended by MIT professor Marvin Minsky. Chanchal founded two tech startups between 2008-2013. Chanchal has 29 granted or pending patents, and over 30 publications. Chanchal received M.S. and Ph.D. degrees in Electrical and Computer Engineering from Purdue University.Chapter 1. Introducing Data Representation FeaturesSet the context for the reader with important data representation features, present the need for adaptive algorithms to compute them and demonstrate how these algorithms are important in multiple disciplines. Additionally, discuss a common methodology adopted to derive all our algorithms.Sub-topics:1. Data representation features2. Computational models for time-varying multi-dimensional data3. Multi-disciplinary origin of adaptive algorithms4. Common Methodology for Derivations of Algorithms5. Outline of The BookChapter 2. General Theories and NotationsIntroduce the reader to types of data in real-world streaming applications, discuss practical use cases and derive adaptive algorithms for mean, normalized mean, median, and covariances. Support the results with experiments on real data.Sub-topics:1. Introduction2. Stationary and Non-Stationary Sequences3. Use Cases for Algorithms Covered in this Chapter4. Adaptive Mean and Covariance of Nonstationary Sequences5. Adaptive Covariance and Inverses6. Adaptive Normalized Mean Algorithm7. Adaptive Median Algorithm8. Experimental ResultsChapter 3. Square Root and Inverse Square RootIntroduce readers to practical applications of square roots and inverse square roots of streaming data matrices, then present algorithms to compute them. Support the algorithms with real data.Sub-topics:1. Introduction and Use Cases2. Adaptive Square Root Algorithms3. Adaptive Inverse Square Root Algorithms4. Experimental ResultsChapter 4. First Principal EigenvectorIntroduce the reader to adaptive computation of first principal component of streaming data, discuss the use cases with examples, derive ten algorithms with the common methodology adopted here. Demonstrate the algorithms with real-world non-stationary streaming data examples.Sub-topics:1. Introduction and Use Cases2. Algorithms and Objective Functions3. OJA Algorithm4. RQ, OJAN, and LUO Algorithms5. IT and XU Algorithms6. Penalty Function Algorithm7. Augmented Lagrangian Algorithms8. Summary of Algorithms9. Experimental ResultsChapter 5. Principal and Minor EigenvectorsIntroduce the reader to adaptive computation of all principal components, discuss powerful use cases with examples, derive 21 adaptive algorithms and demonstrate the algorithms on real-world time-varying data.Sub-topics:1. Introduction and Use Cases2. Algorithms and Objective Functions3. OJA Algorithms4. XU Algorithms5. PF Algorithms6. AL1 Algorithms7. AL2 Algorithms8. IT Algorithms9. RQ Algorithms10. Summary of Adaptive Eigenvector Algorithms11. Experimental ResultsChapter 6. Accelerated Computation eigenvectorsIntroduce the reader to methods to speed up the adaptive algorithms presented in this book. Help the reader speed up a few algorithms and demonstrate their usefulness and acceleration on real-world stationery and non-stationary data.Sub-topics:1. Introduction2. Gradient Descent Algorithm3. Steepest Descent Algorithm4. Conjugate Direction Algorithm5. Newton-Raphson Algorithm6. Experimental ResultsChapter 7. Generalized EigenvectorsIntroduce the reader to the adaptive computation of generalized eigenvectors of streaming data matrices in real-time applications. Discuss use cases and algorithms and show experimental results on real data.Sub-topics:1. Introduction and Use Cases2. Algorithms and Objective Functions3. OJA GEVD Algorithms4. XU GEVD Algorithms5. PF GEVD Algorithms6. AL1 GEVD Algorithms7. AL2 GEVD Algorithms8. IT GEVD Algorithms9. RQ GEVD Algorithms10. Experimental ResultsChapter 8. Real–World Applications Linear AlgorithmsHelp the reader understand real-world applications of the adaptive algorithms. Demonstrate five important applications of adaptive algorithms on critical edge device computation applications.Sub-topics:1. Detecting Feature Drift2. Adapt to Incoming Data Drift3. Compress High Volume Data4. Detecting Feature Anomalies
Python for MATLAB Development
MATLAB can run Python code!Python for MATLAB Development shows you how to enhance MATLAB with Python solutions to a vast array of computational problems in science, engineering, optimization, statistics, finance, and simulation. It is three books in one:* A thorough Python tutorial that leverages your existing MATLAB knowledge with a comprehensive collection of MATLAB/Python equivalent expressions* A reference guide to setting up and managing a Python environment that integrates cleanly with MATLAB* A collection of recipes that demonstrate Python solutions invoked directly from MATLABThis book shows how to call Python functions to enhance MATLAB's capabilities. Specifically, you'll see how Python helps MATLAB:* Run faster with numba* Distribute work to a compute cluster with dask* Find symbolic solutions to integrals, derivatives, and series summations with SymPy* Overlay data on maps with Cartopy* Solve mixed-integer linear programming problems with PuLP* Interact with Redis via pyredis, PostgreSQL via psycopg2, and MongoDB via pymongo* Read and write file formats that are not natively understood by MATLAB, such as SQLite, YAML, and iniWHO THIS BOOK IS FORMATLAB developers who are new to Python and other developers with some prior experience with MATLAB, R, IDL, or Mathematica.ALBERT DANIAL is an aerospace engineer with 30 years of experience, currently working for Northrop Grumman near Los Angeles. Before Northrop Grumman, he was a member of the NASTRAN Numerical Methods team at MSC Software and a systems analyst at SPARTA. He has a Bachelor of Aerospace Engineering degree from the Georgia Institute of Technology, and Masters and Ph.D. degrees in Aeronautics and Astronautics from Purdue University. He is the author of cloc, the open source code counter.Al has used MATLAB since 1990 and Python since 2006 for algorithm prototyping, earth science data processing, spacecraft mission planning, optimization, visualization, and countless utilities that simplify daily engineering work. Chapter 1: IntroductionGoal: Describe the book’s goals, what to expect, what benefit to gain.• Learn Python through MATLAB Equivalents• Is Python really free?• What About Toolboxes?• I already know Python. How do I call Python functions in MATLAB?• What you won’t find in this book• Beyond MATLABPart I – Learning Python through MATLAB comparisonsChapter 2: InstallationGoal: Create a working Python installation on the computer with MATLAB• Downloads• Post-Install Checkout• ipython, IDE’s• Python and MATLAB Versions Used in This BookChapter 3: Language BasicsGoal: Learn the basic mechanics of Python• Assignment• Printing• Indentation• Indexing• `for` Loops• `while` Loops• `if` Statements• Functions• Comments• Line Continuation• Exceptions• Modules and PackagesChapter 4: Data ContainersGoal: Learn about lists, dictionaries, etc, and how these compare to MATLAB matrices and cell arrays• NumPy Arrays• Strings• Python Lists and MATLAB Cell Arrays• Python Tuples • Python Sets and MATLAB Set Operations• Python Dictionaries and MATLAB Maps• Structured Data• Tables• Caveat: ```=`'' copies a reference for non-scalars!Chapter 5: Date and TimeGoal: Learn about measuring, storing, and converting temporal values.• Time• Dates• Timezones• Time Conversions to and from `datetime` ObjectsChapter 6: Input and OutputGoal: Learn about reading and writing data, with emphasis on numeric data and scientific file formats like HDF and NetCDF.• Reading and Writing Text Files• Reading and Writing Binary Files• Reading and Writing Pickle Files• Reading and Writing `.mat` files• Command Line Input • Interactive Input• Receiving and Sending over a Network• Interacting with DatabasesChapter 7: Interacting with the File SystemGoal: Show how Python manages file system operations.• Reading Directory Contents• Finding Files• Deleting Files• Creating Directories• Deleting Directories• Walking Directory TreesChapter 8: Interacting with the Operating System and External ExecutablesGoal: Show how to make system calls in Python and how these differ from MATLAB.• Reading, setting environment variables• Calling External Executables• Inspecting the Process Table and Process ResourcesPart II – MATLAB with PythonChapter 9: MATLAB/Python IntegrationGoal: Show how to make system calls in Python and how these differ from MATLAB.• MATLAB’s `py` Module• System calls and File I/O• TCP/IP ExchangeChapter 10: Object Oriented ProgrammingGoal: Demonstrate Python’s OO semantics compared to MATLAB• Classes• Custom Exceptions• Performance ImplicationsChapter 11: NumPy and SciPyGoal: Introduce Python’s numeric and scientific computing capability. This is by far the largest chapter in the book.• NumPy Arrays• Linear Algebra• Sparse Matrices• Interpolation • Curve Fitting• Statistics• Finding Roots• Optimization • Differential Equations• Symbolic Mathematics• Unit SystemsChapter 12: PlottingGoal: Demonstrate how publication-quality plots are produced in Python alongside MATLAB equivalents• Point and Line Plots• Area Plots• Animations• Plotting on Maps• 3D Plots• Making plots in batch modeChapter 13: Tables and DataframesGoal: Show Pandas dataframes in comparison to MATLAB tables (and how the former pre-dates the latter by five years)• Loading tables from files• Table summaries• Cleaning data• Creating tables programmatically• Sorting rows• Table subsets• Iterating over rows• Pivot tables• Adding columns• Deleting columns• Joins across tablesChapter 14: High Performance ComputingGoal: Demonstrate techniques for profiling Python code and making computationally intensive Python code run faster. Significant performance advantages over MATLAB are shown.• Paths to faster Python code• Reference Problems• Reference Hardware and OS• Baseline performance• Profiling Python Code• Vectorization• Cython• Pythran• Numba• Linking to C, C++, Fortran• Distributed memory parallel processingChapter 15: `py` Module ExamplesGoal: A collection of examples that show how Python enables the core MATLAB product to perform tasks that would either require a Toolbox or less-vetted code from the MathWorks’ user contributed FileExchange.• Read a YAML File• Write a YAML File• Compute Laplace Transforms• Interact with Redis• Units• Propagate a satellite’s orbit• Controls• Plotting on mapsChapter 16: Language WartsGoal: Identify MATLAB and Python language ‘features’ that often cause beginners grief.• Dangerous language features• MATLAB• Python• Common Errors
Java For Dummies
LEARN TO WRITE PRACTICAL, REUSABLE CODE WITH THE STRAIGHT FORWARD TUTORIALS AND TIPS IN THE NEWEST EDITION OF THIS FOR DUMMIES BESTSELLERDo you speak Java? No, we’re not talking about your morning cup ‘o joe. We mean the world’s most popular programming language that runs on almost any computer!If you’re looking to get started—or up your game—with Java, then Java For Dummies is the guide you need.In this book, you’ll:* Take control of your program flow* Program with classes, objects, and methods* Use Java's functional programming features* Explore Java 17, the latest long-term support releaseThis up-to-date handbook covers the latest developments in Java, including the new ‘switch’ statement syntax. So, if you’re ready to dive into one of the most practical (and coolest!) programming languages around, it’s time you picked upJava For Dummies.DR. BARRY BURD holds an M.S. in Computer Science from Rutgers University and a Ph.D. in Mathematics from the University of Illinois. Barry is also the author of Beginning Programming with Java For Dummies, Java for Android For Dummies, and Flutter For Dummies.INTRODUCTION 1About This Book 1Foolish Assumptions 2Icons Used in This Book 3Beyond the Book 4Where to Go from Here 4PART 1: GETTING STARTED WITH JAVA 5CHAPTER 1: ALL ABOUT JAVA 7What You Can Do with Java 8Why You Should Use Java 9Gaining Perspective: Where Java Fits In 10Object-Oriented Programming (OOP) 12Object-oriented languages 13Objects and their classes 15What’s so great about an object-oriented language? 15Objects and classes are everywhere 18What’s Next? 19CHAPTER 2: ALL ABOUT SOFTWARE 21Get Ready for Java 21The Inside Scoop 23What is a compiler? 24What is a Java virtual machine? 27Developing Software 31Spoiler Alert! 32CHAPTER 3: USING THE BASIC BUILDING BLOCKS 33Speaking the Java Language 33The grammar and the common names 34The words in a Java program 35Checking Out Java Code for the First Time 37Understanding a Simple Java Program 38The Java class 38The Java method 40The main method in a program 41How you finally tell the computer to do something 43Brace yourself 45And Now, a Few Comments 49Adding comments to your code 49What’s Barry’s excuse? 53Using comments to experiment with your code 53PART 2: WRITING YOUR OWN JAVA PROGRAMS 55CHAPTER 4: MAKING THE MOST OF VARIABLES AND THEIR VALUES 57Varying a Variable 58Assignment statements 60The types of values that variables may have 61How to hold the line 64Numbers without decimal points 65Combining declarations and initializing variables 67Experimenting with JShell 69What Happened to All the Cool Visual Effects? 72The Atoms: Java’s Primitive Types 73The char type 73The boolean type 76The Molecules and Compounds: Reference Types 78An Import Declaration 82Creating New Values by Applying Operators 84Initialize once, assign often 87The increment and decrement operators 89Assignment operators 93CHAPTER 5: CONTROLLING PROGRAM FLOW WITH DECISION-MAKING STATEMENTS 97Making Decisions (Java if Statements) 98Guess the number 98She controlled keystrokes from the keyboard 99Creating randomness 102The if statement 103Equal, equal 104Brace yourself 105Your intent to indent 105Elseless in Helsinki 106Using Blocks in JShell 108Forming Conditions with Comparisons and Logical Operators 109Comparing numbers; comparing characters 109Comparing objects 110Look! 113Java’s logical operators 115Vive les nuls! 118(Conditions in parentheses) 119The Nesting Habits of if Statements 121Choosing among Many Alternatives 124Java’s glorious switch statement 124A switch in time saves 14 127Your grandparents’ switch statement 130Free fall 131CHAPTER 6: CONTROLLING PROGRAM FLOW WITH LOOPS 135Repeating Instructions Over and Over Again (Java while Statements) 136Count On Me 139The anatomy of a for statement 141The world premiere of “Al’s All Wet” 142You Can Always Get What You Want 145The root of the matter 148Reading a single character 149File handling in Java 150Block on the while side 151PART 3: WORKING WITH THE BIG PICTURE: OBJECT-ORIENTED PROGRAMMING 155CHAPTER 7: THE INSIDE SCOOP 157Defining a Class (What It Means to Be an Account) 158Declaring variables and creating objects 163Initializing a variable 166Using an object’s fields 167One program; several classes 167Declaring a public class 167Defining a Method within a Class (Displaying an Account) 169An account that displays itself 170The display method’s header 172Sending Values to and from Methods (Calculating Interest) 173Passing a value to a method 176Returning a value from the getInterest method 178Giving Your Numbers a Makeover 180Hide-and-Seek 185Good programming 185Public lives and private dreams: Making a field inaccessible 188Enforcing rules with accessor methods 190Barry’s Own GUI Class 190CHAPTER 8: SAVING TIME AND MONEY: REUSING EXISTING CODE 199What It Means to Be an Employee 200The last word on employees 200Putting your class to good use 202Cutting a check 206Working with Disk Files (a Brief Detour) 207Storing data in a file 207Repeat after me 208Reading from a file 209Who moved my file? 212You moved your file! 212Reading a line at a time 213Clean up after yourself 215Defining Subclasses (What It Means to Be a Full-Time or Part-Time Employee) 216Creating a subclass 218Creating subclasses is habit-forming 220Using Subclasses 221Making types match 223The second half of the story 224Changing the Payments for Only Some of the Employees 225A Java annotation 227Using methods from classes and subclasses 228CHAPTER 9: CONSTRUCTING NEW OBJECTS 233Defining Constructors (What It Means to Be a Temperature) 234What is a temperature? 235What is a temperature scale? (Java’s enum type) 235Okay, so then what is a temperature? 236What you can do with a temperature 238Constructing a temperature; a slow-motion replay 240Some things never change 243Doing Something about the Weather 246Building better temperatures 246Constructors for subclasses 248Using all this stuff 249The default constructor 250A Constructor That Does More 254Classes and methods from the Java API 256Live dangerously 257PART 4: SMART JAVA TECHNIQUES 259CHAPTER 10: PUTTING VARIABLES AND METHODS WHERE THEY BELONG 261Defining a Class (What It Means to Be a Baseball Player) 262Another way to beautify your numbers 263Using the Player class 264One class; nine objects 266Don’t get all GUI on me 266Some facts about potatoes 268Making Static (Finding the Team Average) 270Why is there so much static? 272Meet the static initializer 272Displaying the overall team average 273The static keyword is yesterday’s news 276Could cause static; handle with care 276Experiments with Variables 279Putting a variable in its place 280Telling a variable where to go 283Passing Parameters 287Pass by value 288Returning a result 290Pass by reference 290Returning an object from a method 292Epilogue 294CHAPTER 11: USING ARRAYS TO JUGGLE VALUES 295Getting Your Ducks All in a Row 295Creating an array in two easy steps 298How to book hotel guests 299Tab stops and other special things 301Make life easy for yourself 302Stepping through an array with the enhanced for loop 304Do you have a room? 306Writing to a file 308When to close a file 309Arrays of Objects 311Using the Room class 313Yet another way to beautify your numbers 316The conditional operator 317How to Argue with Your Code 318Settling the argument 319Checking for the right number of program arguments 321CHAPTER 12: USING COLLECTIONS AND STREAMS (WHEN ARRAYS AREN’T GOOD ENOUGH) 323Arrays Have Limitations 324Collection Classes to the Rescue 325Using an ArrayList 325Using generics 328Wrap it up 331Are we done yet? 333Once and again 333So many collection classes! 335Functional Programming 336Problem-solving the old-fashioned way 337Lambda expressions 339A black sheep among the lambdas 341A taxonomy of lambda expressions 342The interpretation of streams 342Why bother? 348Method references 351CHAPTER 13: LOOKING GOOD WHEN THINGS TAKE UNEXPECTED TURNS 355Garbage In 356The parameter in a catch clause 360Do it yourself 362Who will catch the exception? 364Catching two or more exceptions at a time 371The Buck Stops Here, Except When It Doesn’t 372Catch it soon 374Catch it later 375Checked or unchecked? 377Try, Try Again! 380CHAPTER 14: SHARING NAMES AMONG THE PARTS OF A JAVA PROGRAM 385Access Modifiers 386Classes and Their Members 386Public and Private Access for Members 387Drawing on a frame 390Putting a package in its place 392Making a frame 394Default Access for Members 396Switching to Default access 398Accessing default members within a package 400Protected Access for Members 402A class in one package and a subclass in another 402Two classes in the same package 404Access Modifiers for Java Classes 408Public classes 408Nonpublic classes 409From Classes Come Modules 410CHAPTER 15: FANCY REFERENCE TYPES 411Java’s Types 411The Java Interface 412Declaring two interfaces 413Implementing interfaces 415Putting the pieces together 417Abstract Classes 420Caring for your pet 423Using all your classes 425Relax! You’re Not Seeing Double! 427CHAPTER 16: JAVA’S JUGGLING ACT 431Juggling Two or More Calls 432Events and event handling 435Follow the thread 436Don’t miss this 437Inside the actionPerformed method 439Some Events Aren’t Button Clicks 440The Inner Sanctum 446CHAPTER 17: USING JAVA DATABASE CONNECTIVITY 451Creating a Database and a Table 452Seeing what happens when you run the code 453Using SQL commands 454Connecting and disconnecting 455Putting Data in the Table 456Retrieving Data 457Destroying Data 459One Step Beyond 461PART 5: THE PART OF TENS 463CHAPTER 18: TEN PACKS OF JAVA WEBSITES 465This Book’s Website 465For Business Issues Related to This Book 465Download the Java Development Kit 466Your Grandparents’ Java Download Site 466The Horse’s Mouth 466Join Java User Groups 466Find the Latest News about Java 466Find News, Reviews, and Sample Code 466Got a Technical Question about Anything? 467Become Involved in the Future of Java 467CHAPTER 19: TEN BITS OF ADVICE FOR NEW SOFTWARE DEVELOPERS 469How Long Does It Take to Learn Java? 470Which of Your Books Should I Read? 470Are Books Other than Yours Good for Learning Java and Android Development? 471Which Computer Programming Language(s) Should I Learn? 471Which Skills Other than Computer Coding Should I Learn? 471How Should I Continue My Learning as a Software Developer? 472How Else Should I Continue My Learning as a Developer? 472How Can I Land a Job Developing Software? 473I Still Don’t Know What to Do with My Life 473If I Have Other Questions, How Can I Contact You? 474Index 475
Hands-on Machine Learning with Python
Here is the perfect comprehensive guide for readers with basic to intermediate level knowledge of machine learning and deep learning. It introduces tools such as NumPy for numerical processing, Pandas for panel data analysis, Matplotlib for visualization, Scikit-learn for machine learning, and Pytorch for deep learning with Python. It also serves as a long-term reference manual for the practitioners who will find solutions to commonly occurring scenarios.The book is divided into three sections. The first section introduces you to number crunching and data analysis tools using Python with in-depth explanation on environment configuration, data loading, numerical processing, data analysis, and visualizations. The second section covers machine learning basics and Scikit-learn library. It also explains supervised learning, unsupervised learning, implementation, and classification of regression algorithms, and ensemble learning methods in an easy manner with theoretical and practical lessons. The third section explains complex neural network architectures with details on internal working and implementation of convolutional neural networks. The final chapter contains a detailed end-to-end solution with neural networks in Pytorch.After completing Hands-on Machine Learning with Python, you will be able to implement machine learning and neural network solutions and extend them to your advantage.WHAT YOU'LL LEARN* Review data structures in NumPy and Pandas * Demonstrate machine learning techniques and algorithm* Understand supervised learning and unsupervised learning * Examine convolutional neural networks and Recurrent neural networks* Get acquainted with scikit-learn and PyTorch* Predict sequences in recurrent neural networks and long short term memoryWHO THIS BOOK IS FORData scientists, machine learning engineers, and software professionals with basic skills in Python programming.Ashwin Pajankar holds a Master of Technology from IIIT Hyderabad, and has over 25 years of programming experience. He started his journey in programming and electronics with BASIC programming language and is now proficient in Assembly programming, C, C++, Java, Shell Scripting, and Python. Other technical experience includes single board computers such as Raspberry Pi and Banana Pro, and Arduino. He is currently a freelance online instructor teaching programming bootcamps to more than 60,000 students from tech companies and colleges. His Youtube channel has an audience of 10000 subscribers and he has published more than 15 books on programming and electronics with many international publications.Aditya Joshi has worked in data science and machine learning engineering roles since the completion of his MS (By Research) from IIIT Hyderabad. He has conducted tutorials, workshops, invited lectures, and full courses for students and professionals who want to move to the field of data science. His past academic research publications include works on natural language processing, specifically fine grain sentiment analysis and code mixed text. He has been the organizing committee member and program committee member of academic conferences on data science and natural language processing.Chapter 1: Getting Started with Python 3 and Jupyter NotebookChapter Goal: Introduce the reader to the basics of Python Programming language, philosophy, and installation. We will also learn how to install it on various platforms. This chapter also introduces the readers to Python programming with Jupyter Notebook. In the end, we will also have a brief overview of the constituent libraries of sciPy stack.No of pages - 30Sub -Topics1. Introduction to the Python programming language2. History of Python3. Python enhancement proposals (PEPs)4. Philosophy of Python5. Real life applications of Python6. Installing Python on various platforms (Windows and Debian Linux Flavors)7. Python modes (Interactive and Script)8. Pip (pip installs python)9. Introduction to the scientific Python ecosystem10. Overview of Jupyter Notebook11. Installation of Jupyter Notebook12. Running code in Jupyter NotebookChapter 2: Getting Started with NumPyChapter Goal: Get started with NumPy Ndarrays and the basics of NumPy library. The chapter covers the instructions for installation and basic usage of NumPy.No of pages: 10Sub - Topics:1. Introduction to NumPy2. Install NumPy with pip33. Indexing and Slicing of ndarrays4. Properties of ndarrays5. Constants in NumPy6. Datatypes in datatypesChapter 3 : Introduction to Data VisualizationChapter goal – In this chapter, we will discuss the various ndarray creation routines available in NumPy. We will also get started with Visualizations with Matplotlib. We will learn how to visualize the various numerical ranges with Matplotlib.No of pages: 15Sub - Topics:1. Ones and zeros2. Matrices3. Introduction to Matplotlib4. Running Matplotlib programs in Jupyter Notebook and the script mode5. Numerical ranges and visualizationsChapter 4 : Introduction to PandasChapter goal – Get started with Pandas data structuresNo of pages: 10Sub - Topics:1. Install Pandas2. What is Pandas3. Introduction to series4. Introduction to dataframesa) Plain Text Fileb) CSVc) Handling excel filed) NumPy file formate) NumPy CSV file readingf) Matplotlib Cbookg) Read CSVh) Read Exceli) Read JSONj) Picklek) Pandas and webl) Read SQLm) ClipboardChapter 5: Introduction to Machine Learning with Scikit-LearnChapter goal – Get acquainted with machine learning basics and scikit-Learn libraryNo of pages: 101. What is machine learning, offline and online processes2. Supervised/unsupervised methods3. Overview of scikit learn library, APIs4. Dataset loading, generated datasetsChapter 6: Preparing Data for Machine LearningChapter Goal: Clean, vectorize and transform dataNo of Pages: 151. Type of data variables2. Vectorization3. Normalization4. Processing text and imagesChapter 7: Supervised Learning Methods - 1Chapter Goal: Learn and implement classification and regression algorithmsNo of Pages: 301. Regression and classification, multiclass, multilabel classification2. K-nearest neighbors3. Linear regression, understanding parameters4. Logistic regression5. Decision treesChapter 8: Tuning Supervised LearnersChapter Goal: Analyzing and improving the performance of supervised learning modelsNo of Pages: 201. Training methodology, evaluation methodology2. Hyperparameter tuning3. Regularization in linear regression4. Regularization in logistic regression5. Regularization in decision trees6. Crossvalidation, K-fold cross validation7. ROC CurveChapter 9: Supervised Learning Methods - 2Chapter Goal: Learn more algorithmsNo of Pages: 151. Naive bayes2. Support vector machines3. Visualization of decision boundariesChapter 10: Ensemble Learning MethodsChapter Goal: Learn the in-depth background of ensemble learning methodsNo of Pages: 101. Bagging vs boosting2. Random forest3. Adaboost4. Gradient boostingChapter 11: Unsupervised Learning MethodsChapter Goal: Detailed theory and practically oriented introduction to dimensionality reduction and clustering algorithmsNo of Pages: 201. Dimensionality reduction2. Principle components analysis3. Clustering4. K-Means method5. Density-based methodChapter 12: Neural Networks and Pytorch BasicsChapter Goal: Understand the basics of neural networks, deep learning, and PytorchNo of Pages: 101. Introduction to Pytorch, tensors2. Tensor operations3. ExercisesChapter 13: Feedforward Neural NetworksChapter Goal: In-depth introduction to basic dense neural networks along with necessary mathematical background and implementation. (chapter might split into two while writing)No of Pages: 201. Perceptron model2. Neural network and activation functions3. Multiclass classification4. Cost functions and gradient descent5. Backpropagation6. Pytorch gradients7. Linear regression with PyTorch8. Basic dense network with PyTorch for regression9. Basic dense network with Pytorch for classificationChapter 14: Convolutional Neural NetworkChapter Goal: Explore details behind CNNs and implement two solutions for image classificationNo of Pages: 201. Dense network for digits classification2. Image filters and kernels3. Convolutional layers4. Pooling layers5. CNN for digits classification6. CNN for image classificationChapter 15: Recurrent Neural NetworkChapter Goal: Understand sequence networks and implement them for forecasting values (or text classification)No of Pages: 151. Introduction to recurrent neural networks2. Vanishing gradient problem3. LSTM4. RNN batches, LSTM5. Text classification Problem (or forecasting problem)Chapter 16: Bringing It All TogetherChapter Goal: Discuss, conceptualize, design, and develop end to endNo of Pages: 201. Project 12. Project 2
Python 3 für Studium und Ausbildung
Programmierkenntnisse sind heute eine Kompetenz, die nicht nur in IT-nahen Berufen vorausgesetzt wird. Dieses Buch richtet sich besonders an alle, die Python in Studium und Ausbildung lernen und keine Vorkenntnisse in der Programmierung haben. Die Ausrichtung des Studiengangs spielt dabei keine Rolle. Alle Themen werden fachunabhängig erläutert und die Übungen und praktischen Beispiele decken viele unterschiedliche Anwendungsbereiche ab, so dass Sie auf die verschiedensten Aufgaben optimal vorbereitet sind. Sie werden Schritt für Schritt in die Programmiertechniken eingeführt: von den Grundlagen (Datentypen, Kontrollstrukturen, Funktionen) über die Entwicklung komplexer Anwendungen mit grafischer Benutzungsoberfläche bis hin zur Anbindung an SQL-Datenbanken, Datenvisualisierung und wissenschaftlichem Rechnen mit Arrays (NumPy). Dabei lernen Sie auch, gut lesbare Programmtexte und sauberen Code zu schreiben, und erfahren, wie Sie Fehler finden und von Anfang an vermeiden können. Zahlreiche praktische Programmierübungen helfen Ihnen, Ihr Wissen zu festigen und sich auf Prüfungssituationen vorzubereiten. Die Lösungen zu allen Übungen inklusive Programmcode finden Sie auf der Verlagsseite zum kostenlosen Download.Aus dem Inhalt: Alle Grundlagen einfach erklärtObjektorientierte ProgrammierungMit Modulen arbeiten und eigene Module erstellenVerarbeiten von Texten und BildernGrafische Benutzungsoberflächen mit tkinterSQL-Datenbanken mit sqlite3Wissenschaftliches Rechnen mit NumPyDatenvisualisierung mit MatplotlibNutzung von CoLab und PythonAnywhereWebprogrammierung mit CGI und WSGIAgile Softwareentwicklung Über den Autor: Michael Weigend hat an der Universität Potsdam in Informatik promoviert. Er war für mehr als 30 Jahre als Lehrer tätig und hat 20 Jahre lang an der FernUniversität Hagen Seminare zur Didaktik der Informatik gegeben. An der Universität Münster hält er im Rahmen eines Lehrauftrags Vorlesungen zur Python-Programmierung. Michael Weigend engagiert sich in mehreren nationalen und internationalen Communities für den Computer-Einsatz in der Bildung, darunter Constructionism, International Federation for Information Processing (TC 3 Computers in Education) , Bebras – International Contest on Informatics and Computational Thinking. Er hat über 60 wissenschaftliche Artikel veröffentlicht und mehrere Bücher zu den Themen Programmierung, Web Development und visuelle Modellierung geschrieben.
Let's code Scratch! (2. Auflage)
Werde ein echter Programmierer und schreibe deine eigenen Spiele und andere Programme: Scratch ist eine Programmiersprache extra für Kinder und Jugendliche, die leicht zu erlernen ist. Du brauchst kein Vorwissen und lernst in tollen Projekten schrittweise alle Funktionen kennen. Setze dein Wissen ein, um Bälle hüpfen, Katzen tanzen oder Luftballons zerplatzen zu lassen. Deiner Kreativität sind keine Grenzen gesetzt. Ganz nach dem Motto von Scratch: Ausdenken, entwickeln, teilen.Aus dem Inhalt:Scratch installierenScratch im Browser nutzenDie wichtigsten BefehleDein erstes Spiel: Der springende BallDas magische LabyrinthWürfel-, Zahlen- und RatespieleSchreibe dein eigenes Jump'n'RunEigene Spiele mit anderen teilenAlle Projekte auch zum Download Leseprobe (PDF)Autor:Hauke Fehr programmiert seit über 30 Jahren Apps für verschiedene Einsatzzwecke. Die Wissensvermittlung liegt ihm dabei besonders am Herzen.
Data Science in der Praxis
Der ideale Einstieg in Data Science für Praktiker! Ob mit oder ohne Mathematikkenntnisse – Sie bekommen hier den Rundumblick, den Sie für Ihre Projekte brauchen. So heben Sie den Schatz, den Daten darstellen können, wenn man sie richtig befragt. Sie lernen die einschlägigen Analysemethoden kennen, bekommen eine Einführung in die Programmiersprache R und erfahren, wie Sie maschinelles Lernen einsetzen. Und zwar inklusive dazugehöriger Werkzeuge wie Notebooks, die die Data-Science-Programmierung heutzutage so zugänglich machen. Und weil es mit der Technik allein nicht getan ist, geht das Buch auch auf Probleme der Projektdurchführung ein, beleuchtet verschiedene Anwendungsfelder und vergisst auch nicht, ethische Aspekte anzusprechen. Mit vielen Beispielen, Hinweisen für den Fehlerfall, Entscheidungshilfen und weiteren Praxistipps. Aus dem Inhalt: Erste Schritte mit R und RStudioGrundbegriffe der StatistikVorbereitung: Daten reinigen und transformierenk-Means ClusteringLineare und nichtlineare RegressionVorhersagen, Clustering, KlassifizierungTipps und Werkzeuge für alle ProjektphasenIhre Anwendung als REST-API bereitstellenKI und Maschinelles Lernen einsetzenAnomalieerkennung, Warenkorbanalyse und viele weitere AnwendungsfälleMachine Learning: Modelle richtig trainieren Materialien zum Buch ... 13 1. Einleitung ... 15 1.1 ... Warum dieses Buch? ... 15 1.2 ... Das Zeitalter der Daten -- alles nur ein Hype? ... 16 1.3 ... Warum nun Data Science? ... 17 1.4 ... Warum Data Science mit R? ... 19 1.5 ... Für wen ist dieses Buch? ... 20 1.6 ... Kann man Data Science ohne Mathe lernen? ... 20 1.7 ... Wie Sie dieses Buch verwenden können ... 22 1.8 ... Materialien und Kontakt ... 22 1.9 ... Danksagungen ... 22 2. Machine Learning, Data Science und künstliche Intelligenz ... 25 2.1 ... Aus der Geschichte lernen -- alles nur ein Hype? ... 25 2.2 ... Begriffsdefinitionen ... 34 3. Ablauf eines Data-Science-Projekts ... 39 3.1 ... Der allgemeine Ablauf eines Data-Science-Projekts ... 39 3.2 ... Business Understanding: Welches Problem soll gelöst werden? ... 43 3.3 ... Grundsätzliche Ansätze im Machine Learning ... 47 3.4 ... Performancemessung ... 49 3.5 ... Kommunikation mit Stakeholdern ... 57 3.6 ... Aus dem Labor in die Welt: Data-Science-Applikationen in Produktion ... 58 3.7 ... Die verschiedenen Rollen in einem Data-Science-Projekt ... 59 4. Einführung in R ... 67 4.1 ... R: kostenlos, portierbar und interaktiv ... 67 4.2 ... Installation und Konfiguration von R und RStudio ... 74 4.3 ... Erste Schritte mit R ... 89 5. Explorative Datenanalyse ... 111 5.1 ... Daten: Sammlung, Reinigung und Transformation ... 112 5.2 ... Notebooks ... 117 5.3 ... Das Tidyverse ... 123 5.4 ... Datenvisualisierung ... 137 5.5 ... Datenanalyse ... 148 6. Anwendungsfall Prognosen ... 159 6.1 ... Lineare Regression ... 159 6.2 ... Anomalie-Erkennung ... 176 7. Clustering ... 185 7.1 ... Hierarchisches Clustering ... 185 7.2 ... k-Means ... 197 8. Klassifikation ... 207 8.1 ... Anwendungsfälle für eine Klassifikation ... 207 8.2 ... Trainings- und Testdaten erstellen ... 209 8.3 ... Decision Trees ... 217 8.4 ... Support Vector Machines ... 221 8.5 ... Naive Bayes ... 226 8.6 ... XG Boost: Der Newcomer ... 232 8.7 ... Klassifikation von Text ... 238 9. Weitere Anwendungsfälle ... 245 9.1 ... Warenkorbanalyse -- Association Rules ... 245 9.2 ... k-nearest Neighbours ... 254 10. Workflows und Werkzeuge ... 267 10.1 ... Versionierung mit Git ... 267 10.2 ... Mit großen Datenmengen umgehen ... 277 10.3 ... Applikationen via API bereitstellen ... 287 10.4 ... Applikationen erstellen mit Shiny ... 292 11. Ethischer Umgang mit Daten und Algorithmen ... 307 11.1 ... Datenschutz ... 307 11.2 ... Ethik: Gegen Profiling und Diskriminierung ... 317 12. Was kommt nach diesem Buch? ... 325 12.1 ... Projekte, Projekte, Projekte ... 325 12.2 ... Wer hilft Ihnen jetzt weiter? ... 329 12.3 ... RSeek ... 335 Anhang ... 337 A ... Typische Fehlermeldungen und geeignete Lösungen ... 339 B ... Glossar ... 343 C ... Literatur ... 347 Index ... 353
Introducing Software Verification with Dafny Language
Get introduced to software verification and proving correctness using the Microsoft Research-backed programming language, Dafny. While some other books on this topic are quite mathematically rigorous, this book will use as little mathematical symbols and rigor as possible, and explain every concept using plain English. It's the perfect primer for software programmers and developers with C# and other programming language skills.Writing correct software can be hard, so you'll learn the concept of computation and software verification. Then, apply these concepts and techniques to confidently write bug-free code that is easy to understand. Source code will be available throughout the book and freely available via GitHub.After reading and using this book you'll be able write correct, big free software source code applicable no matter which platform and programming language you use.WHAT YOU WILL LEARN* Discover the Microsoft Research-backed Dafny programming language* Explore Hoare logic, imperative and functional programs* Work with pre- and post-conditions* Use data types, pattern matching, and classes* Dive into verification examples for potential re-use for your own projectsWHO THIS BOOK IS FORSoftware developers and programmers with at least prior, basic programming experience. No specific language needed. It is also for those with very basic mathematical experience (function, variables).BORO SITNIKOVSKI has over ten years of experience working professionally as a software engineer. He started programming with assembly on an Intel x86 at the age of ten. While in high school, he won several prizes in competitive programming, varying from 4th, 3rd, and 1st place. He is an informatics graduate - his bachelor’s thesis was titled “Programming in Haskell using algebraic data structures”, and his master’s thesis was titled “Formal verification of Instruction Sets in Virtual Machines”. He has also published a few papers on software verification. Other research interests of his include programming languages, mathematics, logic, algorithms, and writing correct software. He is a strong believer in the open-source philosophy and contributes to various open-source projects. In his spare time, he enjoys some time off with his family.Introduction: Languages and SystemsChapter 1: Our First ProgramChapter 2: LogicChapter 3: ComputationChapter 4: Mathematical FoundationsChapter 5: ProofsChapter 6: SpecificationsChapter 7: Mathematical InductionChapter 8: Verification ExercisesChapter 9: Implementing a Formal SystemConclusionBibliographyAppendix A: Gödel’s Theorems
Java 17 Recipes
Quickly find solutions to dozens of common programming problems encountered while building Java applications, with recipes presented in the popular problem-solution format. Look up the programming problem that you want to resolve. Read the solution. Apply the solution directly in your own code. Problem solved!Java 17 Recipes is updated to reflect changes in specification and implementation since the Java 9 edition of this book. Java 17 is the next long-term support release (LTS) of the core Java Standard Edition (SE) version 17 which also includes some of the features from previous short term support (STS) releases of Java 16 and previous versions.This new edition covers of some of the newest features, APIs, and more such as pattern matching for switch, Restore Always-Strict-Floating-Point-Semantics, enhanced pseudo-random number generators, the vector API, sealed classes, and enhancements in the use of String. Source code for all recipes is available in a dedicated GitHub repository.This must-have reference belongs in your library.WHAT YOU WILL LEARN* Look up solutions to everyday problems involving Java SE 17 LTS and other recent releases* Develop Java SE applications using the latest in Java SE technology* Incorporate Java major features introduced in versions 17, 16, and 15 into your codeWHO THIS BOOK IS FORProgrammers and developers with some prior Java experience.JOSH JUNEAU has been developing software and enterprise applications since the early days of Java EE. Application and database development have been his focus since the start of his career. He became an Oracle database administrator and adopted the PL/SQL language for performing administrative tasks and developing applications for the Oracle database. In an effort to build more complex solutions, he began to incorporate Java into his PL/SQL applications and later developed standalone and web applications with Java. Josh wrote his early Java web applications utilizing JDBC and servlets or JSP to work with backend databases. Later, he began to incorporate frameworks into his enterprise solutions, such as Java EE and JBoss Seam. Today, he primarily develops enterprise web solutions utilizing Java EE and other technologies. He also includes the use of alternative languages, such as Jython and Groovy, for some of his projects. Over the years, Josh has dabbled in many different programming languages, including alternative languages for the JVM, in particular. In 2006, Josh began devoting time to the Jython Project as editor and publisher of the Jython Monthly newsletter. In late 2008, he began a podcast dedicated to the Jython programming language. Josh was the lead author for The Definitive Guide to Jython, Oracle PL/SQL Recipes, and Java 7 Recipes, and a solo author of Java EE 7 Recipes and Introducing Java EE 7, which were all published by Apress. He works as an application developer and system analyst at Fermi National Accelerator Laboratory, and he also writes technical articles for Oracle and OTN. He was a member of the JSR 372 and JSR 378 expert groups, and is an active member of the Java Community, helping to lead the Chicago Java User Group’s Adopt-a-JSR effort. When not coding or writing, Josh enjoys spending time with his wonderful wife and five children, especially swimming, fishing, playing ball, and watching movies. To hear more from Josh, follow him on Twitter at @javajuneau.LUCIANO MANELLI earned a PhD in computer science from the IT department, University of Bari-Aldo Moro. His PhD focused on grid computing and formal methods, and he published the results in international publications. Luciano obtained several certificates in the IT sector, and, in 2014, began working for the Port Network Authority of the Ionian Sea–Port of Taranto, after working for 13 years for InfoCamere SCpA. He has worked mainly in the design, analysis, and development of large software systems; research and development; testing; and production with roles of increasing responsibility in several areas over the years. Luciano has developed a great capability to make decisions in a technical and business context and is mainly interested in project management and business process management. In his current position, he deals with port community systems and software innovation. Additionally, he has written several IT books and is a contract professor at the Polytechnic of Bari (foundations of computer science), and at the University of Bari-Aldo Moro (programming for web, computer science, and computer lab).1. Getting Started with Java 172. Java 17 Enhancements3. Strings4. Numbers and Dates5. Object-Oriented Java6. Lambda Expressions7. Data Structures and Collections8. Input and Output9. Exceptions and Logging10. Concurrency11. Debugging and Unit Testing12. Unicode, Internationalization, and Currency Codes13. Working with Databases14. JavaFX Fundamentals15. Graphics with JavaFX16. Media with JavaFX17. Java Web Applications18. Nashorn and Scripting19. E-mail20. JSON and XML Processing21. Networking22. Java Modularity
Introducing Blockchain with Java
Create your own crypto currency by implementing blockchain technology using Java. This step-by-step guide will teach you how to create a user interface using Java FX and implement SQLite DB using JDBC Driver for the blockchain.INTRODUCING BLOCKCHAIN WITH JAVA includes numerous exercises and test questions to help you solidify what you have learned as you progress through the book, and provides ideas on expanding the codebase to make it your own. You will have access to a fully-functioning repository with Java code.Upon completing this book, you will have the knowledge necessary to program your own blockchains with Java and you will have a completed project for your portfolio.WHAT YOU WILL LEARN* Know the most important theoretical concepts of the blockchain* Code the blockchain in Java* Create a user interface with JavaFX* Implement SQLite DB using JDBC Driver* Create a P2P multi-threaded app * Create your own cryptocurrency app with full functionality* Implement blockchain technology on a P2P network from scratch using Java, JavaFX, and SQLWHO THIS BOOK IS FORAnyone with a basic level knowledge of: Java or similar object-oriented programming language, FXML or HTML or similar markup language, and SQLSPIRO BUZHAROVSKI is a full-stack software developer in the IT sector. He has a degree in mechanical engineering and has worked as an engineer in the oil and gas sector for more than six years. His interests include Java frameworks, blockchain, and the latest high-tech trends. Inspiration for this book came while working as a technical reviewer on the Apress book by Boro Sitnikovski, Introducing Blockchain with Lisp: Implement and Extend Blockchains with the Racket Language.1. Introduction to Blockchain . . . . . . . .1.1. Motivation and basic definitions . .1.2. Encryption . . . . . . . . . . . . . . .1.2.1. Functions . . . . . . . . . . . .1.2.2. Symmetric-key algorithm . .1.2.3. Asymmetric-key algorithm .1.3. Hashing . . . . . . . . . . . . . . . . .1.4. Smart contracts . . . . . . . . . . . .1.5. Bitcoin . . . . . . . . . . . . . . . . . .1.6. Example workflows . . . . . . . . . .Summary . . . . . . . . . . . . . . . . . . .2. Blockchain Core - Model . . . . . . . .2.1 Block.java . .2.2. Transaction.java . . . . . . . . . . . . . . .2.3. Wallet.java . . . . . . . . . . . . . . . . .Summary . . . . . . . . . . . . . . . . .3. Database Setup. . . . . . . .3.1. SQLite Database Browser Quick Setup .3.2. Blockchain.db3.3. Wallet.db . . . . . . . . . . . . . . . . . .3.4 JDBC Driver for SQLite setup3.5 Writing your App init() method.Summary . . . . . . . . . . . . . . . . . . .4. Service Layer Implementation. . . . . .4.1. BlockData.java44.2. WalletData.javaSummary . . . . . . . . . . . . . . . . .5. UI – View Layer. . . . . .5.1. SceneBuilder Quick Setup5.2. Creating Your Views3.2.1. MainWindow.fxml . . . . . . . . . . . . . . . .3.2.2. AddNewTransactionWindow.fxml . . . . . . . . . . . . . . . .5.3. Creating Your View Controllers5.3.1 MainWindowController.java5.3.1 AddNewTransactionController.javaSummary . . . . . . . . . . . . . . . . .6. Network Handlers – Networking Layer. . . . . .6.1. UI Thread6.2. Peer Client Thread6.3. Peer Server Handler – Multithreading requests 6.3.1 Peer Request Thread6.4. Mining ThreadSummary . . . . . . . . . . . . . . . . .