Programmierung
Safety Engineering
Für sichere und zuverlässige Systeme ist eine solide Grundlage unerlässlich. Bei der Entwicklung und dem Design ist Teamwork entscheidend, damit Simulationen, automatisierte Testumgebungen, Reviews und bewährte Methoden der Softwareentwicklung eingesetzt werden. Koordinierte Zusammenarbeit und das richtige Know-how gewährleistet so Sicherheit. Prof. Derk Rembold vermittelt Ihnen in diesem Lehrbuch die Grundlagen sicherer Softwareentwicklung und die Prinzipien der Betriebssicherheit in der Hardwareentwicklung. In strukturierten Kapiteln lernen Sie, Risiken komplexer Systeme einzuschätzen, Fehlerbaumanalysen durchzuführen, Risikographen zu gestalten und essenzielle Methoden für die sichere Systementwicklung zu beherrschen. Aus dem Inhalt: Normen und SicherheitsrichtlinienSicherheit in der SoftwareentwicklungFehler analysieren und verstehenKenngrößen: Zuverlässigkeit, Ausfallrate, LebensdauerGefahrenanalyseFehlerbaumanalyseRisikographLayer of Protection AnalysisZuverlässigkeitsblockdiagrammMarcov-Decision-ProzessBinary-Decision-Diagrams
Beginning Spring 6
This book will teach you how to use the Spring Framework to build Java-based applications, web applications, and microservices. Aimed at beginners, it has been revised and expanded to reflect the latest features and best practices for Spring 6.Authors JOSEPH OTTINGER and ANDREW LOMBARDI will get you started using Spring Framework 6 and its ecosystem, walking you through all the best practices in modern application development. You’ll see how Spring has drastically and positively affected the way applications are designed and programmed in Java, and how to build apps with the Spring mindset. Along the way, you will learn many aspects of the Spring ecosystem with easy-to-understand applications designed to teach you not only the technology, but also the practices that benefit the most from Spring. Starting with the basics, you’ll learn gradually, including topics such as the configuration and declaration of beans, the application lifecycle, how to deploy a Spring application into a Java EE application, Spring Reactive, Spring Web, Spring Boot, and Spring Cloud.After completing this book, you’ll be prepared to develop your own scalable, modular Spring-based applications.WHAT YOU WILL LEARN* Discover the most common use cases encountered in the real world* Learn the proper way of testing with the Spring framework* Create reliable, modular software* Build skills that will translate well across all languages and environments* Integrate and use data access and persistence frameworks such as Hibernate, JPA, and MongoDB* Get started with the most common, most-used Spring featuresWHO THIS BOOK IS FORThose who are new to Spring or for those who have experience with Spring but want to learn what's new in Spring 6. This book assumes you have some prior coding experience in Java, but many core concepts in Java are discussed as they’re encountered.JOSEPH B. OTTINGER is a distributed systems architect with experience in many cloud platforms. He was the editor-in-chief of both Java Developer Journal and TheServerSide.com, and has also contributed to many, many publications, open source projects, and commercial projects over the years, using many different languages (but primarily Java, Python, and JavaScript). He’s also a previously published author online (with too many publications to note individually) and in print, through Apress.ANDREW LOMBARDI is a veteran entrepreneur and software developer. His parents taught him to code while barely able to read on an Apple ][ he still wishes he had. He invented the Internet (suck it Al Gore) while drinking straight coffee and staring off into space. He’s been running the consulting firm Mystic Coders for 24 years, authored a kick-ass book on Spring for Apress and WebSocket for O'Reilly, coding, speaking internationally and offering technical guidance to companies as large as Walmart and companies with problems as interesting as helicopter simulation and social media. He firmly believes that the best thing he’s done so far is being a great dad.
MicroPython for the Internet of Things
This book will help you quickly learn to program for microcontrollers and IoT devices without a lot of study and expense. MicroPython and controllers that support it eliminate the need for programming in a C-like language, making the creation of IoT applications and devices easier and more accessible than ever.MicroPython for the Internet of Things is ideal for readers new to electronics and the world of IoT. Specific examples are provided covering a range of supported devices, sensors, and MicroPython boards such as the Raspberry Pi Pico and the Arduino Nano Connect RP2040 board. Programming for microcontrollers has never been easier.The book takes a practical and hands-on approach without a lot of detours into the depths of theory. It’ll show you a faster and easier way to program microcontrollers and IoT devices, teach you MicroPython, a variant of one of the most widely used scripting languages, and is written to be accessible to those new to electronics. After completing this book, and its fun example projects, you’ll be ready to ready to use MicroPython to develop your own IoT applications.WHAT YOU WILL LEARNProgram in MicroPython * Understand sensors and basic electronics* Develop your own IoT projectsBuild applications for popular boards such as Raspberry Pi Pico and Arduino Nano Connect RP2040 * Load MicroPython on compatible boards* Interface with hardware breakout boardsConnect hardware to software through MicroPython * Explore connecting your microcontroller to the cloud* Develop IoT projects for the cloudWHO THIS BOOK IS FORAnyone interested in building IoT solutions without the heavy burden of programming in C++ or C. The book also appeals to those wanting an easier way to work with hardware than is provided by platforms that require more complex programming environments.CHARLES BELL conducts research in emerging technologies. He is a member of the Oracle MySQL Development team as a senior developer assisting in the development of MySQL high availability and backup solutions for the MySQL Heatwave services available in the Oracle Cloud Infrastructure. He lives in a small town in rural Virginia with his loving wife. Dr. Bell received his doctorate degree in engineering from Virginia Commonwealth University in 2005. His research interests include database systems, software engineering, sensor networks, and 3D printing. He spends his limited free time as a practicing Maker, focusing on microcontroller and 3D printers and printing projects. 1. What Is the Internet of Things?2. Introducing MicroPython3. MicroPython Hardware4. How to Program in MicroPython5. MicroPython Libraries6. Low-Level Hardware Support7. Electronics for Beginners8. Project 1: Hello, World! MicroPython Style9. Project 2: Stoplight Simulator10. Project 3: Plant Monitoring11. Project 4: Using Weather Sensors12. Where to Go from Here13. Appendix
Prototyping Python Dashboards for Scientists and Engineers
Create interactive and data-driven dashboards using Python. This hands-on guide is a practical resource for those (with modest programming skills) in scientific and engineering fields looking to leverage Python's power for data visualization and analysis in a user-friendly dashboard format.You’ll begin by gaining a fundamental understanding of Python programming, including data types, lists, dictionaries, and data structures. The book then delves into the world of reactive programming with Plotly and Dash, offering a hands-on approach to building interactive web-based dashboards. Next, you’ll see how to work with online data, how to scrape and clean datasets, and keep files up-to-date.The book also guides you through planning a dashboard prototype, outlining project tasks, trends, forecasts, spectra, and other design considerations. It concludes with a discussion of how the dashboard can be used for data visualization of real data, explaining the usefulness of tools such as spectra.By providing detailed examples for download and customization, Prototyping Python Dashboards for Scientists and Engineers will equip you with the skills needed to jumpstart your own development efforts.WHAT YOU’LL LEARN* Design a dashboard with Python* Convert and filter Excel formatted files to produce CSV files* Create browser-served graphics with PLOTLY* Generate polynomial trend lines for forecasting* Build a Unix service to share your dashboardWHO THIS BOOK IS FORScientists, engineers, students, programmers, and data enthusiasts who aspire to harness Python's potential for data visualization and analysis through the creation of interactive dashboards. Many will be pragmatic programmers with modest skills and limited resources who mainly want to see a working solution they could emulate.Padraig Houlahan has a diverse career, spanning research, teaching, and I.T. management. He has worn multiple hats over the years, functioning as a scientist, software developer, college professor, flight instructor, and I.T. director. Throughout his journey, he has maintained an enduring fascination with the art of uncovering patterns within data. His Ph.D. research introduced an innovative pattern recognition approach for dissecting the structure of astronomical nebulae. In parallel, his M.A. endeavor involved the endeavor of identifying gravitational waves within Lunar Laser Ranging data.In recent times, his focus has pivoted toward aviation-centric software projects. These ventures involve real-time tracking and visualization of aircraft to aid in traffic flow analysis. Furthermore, he has played a pivotal role in rendering extensive datasets accessible to both students and faculty, benefiting airline and airport operators alike. Teaching has always held a special place in his heart, driven by the joy of witnessing students derive satisfaction from acquiring new knowledge and insights.PROTOTYPING PYTHON DASHBOARDS FOR SCIENTISTS AND ENGINEERSCHAPTER 1 WORKING WITH PYTHON* Coding design, Python, and OOD* Python Data Types* Sets* Lists* Dictionaries* Series* DataframesCHAPTER 2 REACTIVE PROGRAMMING WITH PLOTLY AND DASH* Getting Started with PLOTLY* Getting Started with DASHCHAPTER 3 WORKING WITH ONLINE DATA* About the ATADS dataset* Screen-scraping* Converting Excel to CSV with Data Cleanup* Managing and keeping our files up to dateCHAPTER 4 PLANNING THE DASHBOARD PROTOTYPE* Overview* Project Tasks* Trends and Forecasts* Other Design ConsiderationsCHAPTER 5 OUR FIRST DASHBOARD* The atads.py file* The atads_layout Class* The atads_figures Class* Fine Tuning with CSSCHAPTER 6 DASHBOARD ENHANCEMENTS* Adding the banner and the instruction panels* Monthly and Weekday Histogram panels* The Spectrum Panel* The final ads dashboardCHAPTER 7 HOSTING THE PROTOTYPE ON A UNIX SERVER* Creating the Python environment* Running a Flask service* Adding Nginx* Using GUNICORN* Creating a system service* Securing your server with Fail2BanCHAPTER 8 CREATING A WEB PORTAL* Installing MYSQL* Working with WordPressCHAPTER 9 WORKING WITH OTHER DATASETS
Compilerbau - Grundlagen und Anwendungen
Compilerbau praxisnah erklärt: Grundlagen und Anwendungen.Das Buch behandelt die praxisrelevanten Grundlagen des Compilerbaus, von der lexikalischen Analyse über die Syntaxanalyse bis zur Semantikverarbeitung und zur Codeerzeugung. Weitere Themen sind die systematische Beschreibung von Übersetzungsprozessen durch attributierte Grammatiken sowie der Einsatz eines Compilergenerators zur automatischen Erzeugung der Kernteile eines Compilers.Als durchgängiges Beispiel wird ein Compiler für MicroJava – eine einfache Java-ähnliche Programmiersprache – entwickelt, der ausführbaren Bytecode – ähnlich dem Java-Bytecode – erzeugt.Das Buch kann als Begleitliteratur zu einer einführenden Compilerbau-Vorlesung oder zum Selbststudium verwendet werden, um die Arbeitsweise von Compilern zu verstehen und Compiler oder compilerähnliche Werkzeuge zu implementieren, wie sie in der Praxis der Softwareentwicklung häufig vorkommen. Die im Buch behandelten Techniken können immer dann angewendet werden, wenn eine strukturierte Eingabe vorliegt, die durch eine Grammatik beschrieben werden kann.Die einzelnen Kapitel enthalten über 70 Übungsaufgaben, mit denen das Gelernte vertieft werden kann.Webseite zum Buch: http://ssw.jku.at/CompilerBuch mitMusterlösungen zu den ÜbungsaufgabenFolien einer zweistündigen VorlesungQuellcode des MicroJava-CompilersWeitere MaterialienLeseprobe (PDF-Link)Zum Autor:Hanspeter Mössenböck ist Professor für Informatik an der Johannes Kepler Universität Linz und beschäftigt sich seit vielen Jahren mit Programmiersprachen und Compilern. Er war Mitarbeiter von Professor Niklaus Wirth an der ETH Zürich, einem der Pioniere des Compilerbaus, der unter anderem die Programmiersprache Pascal entwickelt hat. Seit über 20 Jahren kooperiert er mit Oracle Labs auf dem Gebiet der dynamischen Compileroptimierung für Java und andere Programmiersprachen. Viele der an seinem Institut entwickelten Techniken werden heute weltweit in Java-Systemen eingesetzt. Hanspeter Mössenböck ist Autor von Büchern über Java, C#, .NET sowie über compilererzeugende Systeme.
Git - kurz & gut
Das Versionierungstool Git verstehen und typische Aufgaben des Programmieralltags lösen - Verständliche Einführung in das beliebte Versionierungswerkzeug; v.a. für Einsteiger*innen und Entwickler*innen, die Git von Zeit zu Zeit nutzen - Wesentliche Begriffe und Arbeitsschritte kompakt erklärt - Praxistipps für den Programmieralltag - Neu in der 2. Auflage: Weitere Workflows, Anleitungen zu GitHub und GitLab sowie Einblicke, wie Git intern funktioniert Wer heute Software entwickelt, kommt um Git nicht herum, denn Git hat sich als Werkzeug zur Versionskontrolle durchgesetzt. Es ist ein mächtiges Tool, gilt aber nicht gerade als intuitiv. Dieser Kompakteinstieg unterstützt bei den ersten Schritten mit Git und erklärt praxisnah alles Wesentliche — ob es darum geht, eigene Projekte zu versionieren, an Open-Source-Software mitzuarbeiten oder im Team zu entwickeln. Verständlich bringt das Taschenbuch zentrale Begriffe, technische Konzepte, gängige Workflows und das notwendige Wissen für den Programmieralltag auf den Punkt. Darüber hinaus inspiriert es durch Good Practices und wertvolle Tipps. Aus dem Inhalt - Versionskontrolle und die technischen Konzepte von Git - Git installieren und konfigurieren - Mit Git arbeiten: typische Arbeitsschritte und Workflows - Git-Onlinedienste wie GitHub, GitLab u.a. - Good Practices für den Programmieralltag - Häufige Fehler und Probleme - Fortgeschrittenere Kommandos, Tipps und Tricks - Git als Baustein moderner und agiler Softwareentwicklung - Git unter der Haube: die Funktionsweise von Git besser verstehen
ChatGPT for Java
Embrace the future of software development! ChatGPT for Java is the perfect starting point for Java developers to learn how to build intelligent applications using ChatGPT and Open AI APIs.This book takes you from the ground up to demonstrate how to use ChatGPT programmatically. You will learn the basics of ChatGPT and OpenAI APIs, including how to authenticate, send prompts, generate responses, test in the Playground, and handle errors. Each chapter includes practical exercises which demonstrate different API functionalities and bring your concepts to life. You will learn how to AI-enable your own applications using models such as GPT-4, GPT-3.5, Whisper, DALL-E, and many more.As a result, developers will understand that generative AI tools will not replace software development jobs! Instead, you will leverage ChatGPT as your Java AI-pair programmer to increase speed and productivity. You will also learn how ChatGPT can provide powerful Natural Language Processing (NLP) capabilities to your Java apps in order to understand various formats of unstructured text. Step-by-step, you will apply the concepts covered to create your own intelligent chatbots that can automatically process messages from either Slack on Discord.With this book, Java developers will be empowered to take their applications to new heights by leveraging the power of AI as this exciting field continues to evolve and transform.What You Will Learn* Authenticate with the ChatGPT and OpenAI APIs and learn how to engineer and send prompts* Test your prompts in the ChatGPT Playground* How to use multiple artificial intelligence models * Harness the power the temperature, top_p, and other parameters that can ONLY be accessed by developers to create more unique and engaging responses from ChatGPT* Create intelligent bots for Slack or Discord servers* Incorporate context into prompts for better responses and apply advanced features of the APIs.* Explore future directions for ChatGPT and OpenAI WHO THIS BOOK IS FORBeginning and intermediate Java developers who have a basic understanding of Java programming concepts and are interested in learning how to add intelligence to their applications by using ChatGPT programmatically. No prior experience with ChatGPT or OpenAI APIs is required.BRUCE HOPKINS is a technical writer and world-renown expert. He is both an Oracle Java Champion as well as an Intel Software Innovator. Bruce is also the author of the Apress book, Bluetooth for Java.Chapter 1: Introducing ChatGPT for Java Developers.- Chapter 2: Using ChatGPT as Your Java Pair-Programmer.- Chapter 3: Using AI in the Enterprise!:Creating a Text Summarizer for Slack Messages.- Chapter 4: Multimodal AI: Creating a Podcast Visualizer with Whisper and DALL·E 3.- Chapter 5: Creating an Automated Community Manager Bot with Discord and Java.- Chapter 6: Enhancing Our Bot for Both Q&A and Content Moderation.
Beginning C
Learn how to program using C, beginning from first principles and progressing through step-by-step examples. This seventh edition is fully updated to reflect new features of C23, and addresses deprecated functions and features that are no longer supported.You’ll discover that C is a foundation language that every programmer ought to know. Beginning C is written by renowned author Ivor Horton and expert programmer German Gonzalez-Morris. This book increases your programming expertise by guiding you through the development of fully working C applications that use what you've learned in a practical context. Examples of how to use deprecated functions are also provided, along with new examples for replacing them when a simple solution is possible.By the end of the book you'll be confident in your skills with all facets of the widely-used and powerful C language and be able to strike out on your own by trying the exercises included at the end of each chapter. All you need are this book and any of the widely available C compilers, and you'll soon be writing real C programs.WHAT YOU WILL LEARN* Discover the C programming language* Program using C starting with first steps, then making decisions* Use loops, arrays, strings, text, pointers, functions, I/O, and more* Code applications with strings and text* Structure your programs efficiently* Work with data, files, facilities, and moreWHO THIS BOOK IS FORThose new to C programming who may or may not have some prior programming experience.GERMAN GONZALEZ-MORRIS is a software architect/engineer working with C/C++, Java, and different application containers, in particular, with WebLogic Server. He has developed different applications including JEE/Spring/Python. His areas of expertise also include OOP, design patterns, Spring Core/MVC, and microservices.IVOR HORTON is self-employed in consultancy and writes programming tutorials. He worked for IBM for many years and holds a bachelor's degree, with honors, in mathematics. Horton's experience at IBM includes programming in most languages (such as assembler and high-level languages on a variety of machines), real-time programming, and designing and implementing real-time closed-loop industrial control systems. He has extensive experience teaching programming to engineers and scientists (Fortran, PL/1, APL, etc.). Horton is an expert in mechanical, process, and electronic CAD systems; mechanical CAM systems; and DNC/CNC systems.1. Programming in C2. First Steps in Programming3. Making Decisions4. Loops5. Arrays6. Applications with Strings and Text7. Pointers8. Structuring Your Programs9. More on Functions10. Essential Input and Output Operations11. Structuring Data12. Working with Files13. Supporting Facilities14. Advanced and Specialized TopicsA. Computer ArithmeticB. ASCII Character Code DefinitionsC. Reserved Words in CD. Input and Output Format SpecificationsE. Standard Library Headers
Systemnahe Programmierung mit C und Linux
Alles zur systemnahen Anwendungsprogrammierung: von den E/A-Funktionen, dem Zugriff auf Systeminformationen über Prozesse, Signale, Interprozesskommunikation und Threads bis hin zu Netzwerkprogrammierung, Datenbanken und GUIs. Für alle, die Programme schreiben wollen und alte Software warten oder portieren müssen. Alle Beispiele sind auch auf dem Raspberry Pi ausführbar. Solide C- und Linux-Kenntnisse werden vorausgesetzt. Aus dem Inhalt: E/A-FunktionenAttribute von Dateien und VerzeichnissenZugriff auf SysteminformationenDevices – eine einfache Verbindung zur HardwareSystem- und BenutzerdateienDämonen, Zombies und ProzesseSignaleIPC – InterprozesskommunikationThreadsNetzwerkprogrammierungDatenbanken (MySQL, PostgreSQL)GUIs mit GTK+Werkzeuge für Programmierer Materialien zum Buch ... 23 1. Einführung ... 25 1.1 ... Anforderungen an den Leser ... 25 1.2 ... Anforderungen an das Betriebssystem ... 26 1.3 ... UNIX, der Vorgänger von Linux ... 27 1.4 ... Die Entwicklung von Linux ... 29 1.5 ... Der Compiler GCC -- eine kurze Einführung ... 31 1.6 ... POSIX, X/OPEN und ANSI C ... 37 1.7 ... Übersicht zu diesem Buch ... 40 1.8 ... Schreibkonventionen ... 42 1.9 ... Weitere Hilfen ... 43 2. E/A-Funktionen ... 45 2.1 ... Elementare E/A-Funktionen ... 45 2.2 ... Filedeskriptoren ... 47 2.3 ... Funktionen, die einen Filedeskriptor verwenden ... 50 2.4 ... Standard-E/A-Funktionen ... 99 2.5 ... Die Arbeit mit Verzeichnissen ... 113 2.6 ... Fehlerbehandlung ... 134 2.7 ... Ausblick ... 137 3. Attribute von Dateien und Verzeichnissen abfragen und ändern ... 139 3.1 ... Die Struktur stat ... 139 4. Zugriff auf Systeminformationen ... 157 4.1 ... Informationen aus dem /proc-Verzeichnis herausziehen ... 157 4.2 ... Hardware-/Systeminformationen ermitteln ... 160 4.3 ... Prozessinformationen auslesen ... 166 4.4 ... Kernel-Informationen in /proc ... 171 4.5 ... Verschiedene Dateisysteme unter Linux verwalten ... 180 4.6 ... Weiterführendes ... 181 5. Devices -- eine einfache Verbindung zur Hardware ... 183 5.1 ... Die Gerätedateitypen ... 183 5.2 ... Die Gerätedateinummern ... 185 5.3 ... Zugriff auf die Gerätedateien ... 186 5.4 ... Gerätenamen ... 188 5.5 ... Spezielle Gerätedateien ... 190 5.6 ... Gerätedateien in der Praxis einsetzen ... 191 6. System- und Benutzerdateien ... 227 6.1 ... Die Datei /etc/passwd ... 227 6.2 ... Die Datei /etc/shadow ... 234 6.3 ... Die Datei /etc/group ... 239 6.4 ... uname -- Informationen zum lokalen System erfragen ... 243 6.5 ... Das Verzeichnis /etc/skel und Network Information Service (NIS) ... 245 6.6 ... Dateien für Netzwerkinformationen ... 246 7. Prozesse, Dämonen und Zombies ... 247 7.1 ... Was ist ein Prozess? ... 247 7.2 ... Prozesskomponente ... 248 7.3 ... Prozesse überwachen mit ps, top und kpm ... 258 7.4 ... Der Lebenszyklus eines Prozesses ... 261 7.5 ... Umgebungsvariablen eines Prozesses ... 263 7.6 ... Ressourcenlimits eines Prozesses ... 271 7.7 ... Prozesserkennung ... 275 7.8 ... Erzeugung von neuen Prozessen mit fork() ... 277 7.9 ... Warten auf einen anderen Prozess ... 288 7.10 ... Die exec-Familie ... 296 7.11 ... Kommandoaufrufe aus dem Programm -- system() ... 302 7.12 ... Dämonprozesse ... 304 7.13 ... Mehr über die Ausführung von Prozessen ... 315 7.14 ... Zusammenfassung und Ausblick ... 330 8. Signale ... 331 8.1 ... Grundlagen zu den Signalen ... 331 8.2 ... Das neue Signalkonzept ab Kernel 2.6.18 ... 338 8.3 ... Die Signalmenge initialisieren ... 339 8.4 ... Elemente zu der Signalmenge hinzufügen oder aus ihr entfernen ... 339 8.5 ... Signale einrichten und abfragen ... 340 8.6 ... Signale an andere Prozesse senden mit kill() ... 347 8.7 ... Eine Zeitschaltuhr einrichten mit alarm() ... 348 8.8 ... Prozesse stoppen, bis ein Signal eintritt, mit pause() ... 349 8.9 ... Prozesse für eine bestimmte Zeit stoppen mit sleep() und usleep() ... 349 8.10 ... Die Signalmaske erfragen oder ändern mit sigprocmask() ... 350 8.11 ... Einen Prozess während einer Änderung der Signalmaske stoppen mit sigsuspend() ... 351 8.12 ... Prozesse synchronisieren ... 351 9. IPC -- Interprozesskommunikation ... 355 9.1 ... Unterschiedliche Interprozesskommunikations-Techniken im Überblick ... 356 9.2 ... Gründe für IPC ... 364 9.3 ... Pipes ... 365 9.4 ... System-V-Interprozesskommunikation ... 408 9.5 ... Semaphore ... 410 9.6 ... Message Queues ... 419 9.7 ... Shared Memory ... 432 10. Threads ... 443 10.1 ... Unterschiede zwischen Threads und Prozessen ... 443 10.2 ... Thread-Bibliotheken ... 444 10.3 ... Kernel- und User-Threads ... 445 10.4 ... Scheduling und Zustände von Threads ... 445 10.5 ... Die grundlegenden Funktionen der Thread-Programmierung ... 447 10.6 ... Die Attribute von Threads und das Scheduling ... 459 10.7 ... Threads synchronisieren ... 465 10.8 ... Threads abbrechen (canceln) ... 493 10.9 ... Erzeugen von threadspezifischen Daten (TSD) ... 498 10.10 ... Mit pthread_once() einen Codeabschnitt auf einmal ausführen ... 501 10.11 ... Thread-safe-Funktionen (thread-sichere Funktionen) ... 504 10.12 ... Threads und Signale ... 505 10.13 ... Zusammenfassung und Ausblick ... 510 11. Netzwerkprogrammierung ... 513 11.1 ... Einführung ... 513 11.2 ... Aufbau von Netzwerken ... 514 11.3 ... TCP/IP -- Aufbau und Struktur ... 520 11.4 ... TCP-Socket ... 524 11.5 ... Das Kommunikationsmodell der Sockets ... 525 11.6 ... Grundlegende Funktionen zum Zugriff auf die Socket-Schnittstelle ... 525 11.7 ... Aufbau eines Clientprogramms ... 535 11.8 ... Aufbau des Serverprogramms ... 540 11.9 ... IP-Adressen konvertieren, manipulieren und extrahieren ... 545 11.10 ... Namen und IP-Adressen ineinander umwandeln ... 552 11.11 ... Pufferung bei Netzwerk-Sockets ... 562 11.12 ... Standard-E/A-Funktionen verwenden ... 563 11.13 ... Parallele Server ... 565 11.14 ... Synchrones Multiplexing mit select() ... 582 11.15 ... POSIX-Threads und Netzwerkprogrammierung ... 604 11.16 ... Optionen für Sockets setzen und abfragen ... 610 11.17 ... Das UDP-Protokoll (User Datagram Protocol) ... 615 11.18 ... Unix Domain Sockets ... 624 11.19 ... Multicast-Socket ... 630 11.20 ... Nicht blockierende I/O-Sockets ... 639 11.21 ... Streams, TLI, Raw Socket und XTI ... 642 11.22 ... IPv4 und IPv6 ... 644 11.23 ... Netzwerksoftware nach IPv6 portieren ... 646 11.24 ... Sicherheit und Verschlüsselung ... 647 12. MySQL und PostgreSQL ... 649 12.1 ... Relationale Datenbanksysteme ... 649 12.2 ... Der relationale Datenbankserver ... 653 12.3 ... SQL-Server im Überblick ... 653 12.4 ... Die MySQL-Datenbank ... 654 12.5 ... Die MySQL-C-API ... 684 12.6 ... Beispiel: Ein einfaches Newssystem ... 728 12.7 ... Neue SQL-Funktionen für die Shell -- MySQL erweitern ... 759 12.8 ... MySQL-Funktionen mit der UDF-Schnittstelle entwerfen ... 760 12.9 ... PostgreSQL: Ein objektrelationales Datenbankverwaltungssystem ... 771 13. Terminal-E/A und Benutzerschnittstellen für die Konsole ... 813 13.1 ... termios ... 813 13.2 ... Terminalinformationen in terminfo ... 837 13.3 ... Halbgrafik erstellen mit ncurses ... 847 14. GTK+ ... 891 14.1 ... Was ist GTK+? ... 891 14.2 ... GTK+-Anwendungen übersetzen ... 896 14.3 ... Eine Einführung in die GLib-Bibliothek ... 897 14.4 ... Grundlagen der GTK+-Programmierung ... 923 14.5 ... Fenster anlegen mit GtkWindow ... 935 14.6 ... Anzeigeelemente ... 944 14.7 ... Behälter für Widgets ... 953 14.8 ... Buttons und Toggled-Buttons ... 967 14.9 ... Dateneingaben auswerten ... 977 14.10 ... Menüs und Toolbars erstellen ... 989 14.11 ... Mehrzeiligen Text erstellen ... 1009 14.12 ... Auswählen von Widgets (Selection) ... 1023 14.13 ... Events auswerten ... 1033 14.14 ... Weitere Widget- und GTK+-Elemente im Überblick ... 1039 15. Übersicht über weitere beliebte GUI-Bibliotheken ... 1043 15.1 ... gtkmm -- GTK+ für C++ ... 1043 15.2 ... wxWidgets ... 1047 15.3 ... FLTK ... 1051 15.4 ... Qt ... 1053 15.5 ... Die niedrige Ebene: X-Window-Programmierung ... 1056 15.6 ... Multimediabibliotheken ... 1057 16. Werkzeuge für Programmierer ... 1065 16.1 ... Der Compiler GCC ... 1065 16.2 ... make ... 1074 16.3 ... Eigene Bibliotheken erstellen ... 1091 16.4 ... RPM-Pakete ... 1101 16.5 ... RCS und CVS ... 1114 16.6 ... Laufzeitmessung von Programmen ... 1143 16.7 ... Debuggen mit GDB und DDD ... 1151 16.8 ... STRACE -- Systemaufrufe verfolgen ... 1164 16.9 ... Memory Leaks und unerlaubte Speicherzugriffe ... 1167 16.10 ... Ausblick ... 1175 Anhang ... 1177 A ... Sicherheit unter Linux ... 1179 B ... Funktionsreferenz ... 1201 C ... Linux/UNIX-Kommandoreferenz ... 1283 Index ... 1365
Systemnahe Programmierung mit C und Linux (5. Auflg.)
Das umfassende Handbuch in 5. aktualisierter Auflage aus Januar 2024.Alles zur systemnahen Programmierung unter Linux! Von E/A-Funktionen, dem Zugriff auf Systeminformationen über Prozesse, Signale und Threads bis hin zu Netzwerkprogrammierung, Datenbanken und GUIs. Entwickler*innen mit soliden Kenntnissen von Linux-Betriebssystemen und der Sprache C kommen hier voll auf ihre Kosten. Alle Beispiele sind auch auf dem Raspberry Pi ausführbar.Zum Inhalt:E/A-FunktionenDämonen, Zombies und ProzesseThreadsIPC – InterprozesskommunikationNetzwerkprogrammierungMySQL und PostgreSQLGUI-Programmierung mit GTKWerkzeuge für ProgrammiererLeseprobe (PDF-Link)Zu den Autoren:Jürgen Wolf ist Softwareentwickler und Autor aus Leidenschaft. Er programmiert seit Jahren auf Linux- und Unix-Systemen.René Krooß ist Diplom-Informatiker, begeisterter Programmierer und Experte für Prozessorstrukturen, Betriebssysteme, Hardware-Programmierung und Algorithmen.
Technische Probleme lösen mit C/C++ (6. Auflg.)
Technische Probleme lösen mit C+/C++. Von der Analyse bis zur Dokumentation. In 6., aktualisierter und erweiterter Auflage. Januar 2024. Anhand von konkreten Beispielen aus dem technisch-wissenschaftlichen und mathematischen Bereich vermittelt dieses Lehrbuch Programmier- und Dokumentationstechniken mit C/C++. Aufbauend auf einer gut verständlichen und fundierten Einführung in die Arbeit mit C/C++ geht es Schritt für Schritt zur professionellen Softwareentwicklung.Die Probleme sind nach steigendem Schwierigkeitsgrad geordnet - von einfachen Anwendungen wie der Reihung von Widerständen bis hin zu komplexen Fragestellungen aus der Schaltalgebra. Vorkenntnisse sind nicht erforderlich. Sie lösen unter anderem Probleme wie die Umrechnung von Temperatursystemen oder die Programmierung eines eigenen Funktionsplotters. Die Beispiele werden mit Microsoft Visual C++ umgesetzt, das kostenlos verfügbar ist. Auf plus.hanser-fachbuch.de finden Sie zu diesem Titel die im Buch dargestellten Codebeispiele zum Download.Für die Neuauflage wurde das gut eingeführte Lehrbuch aktualisiert und um weitere Beispiele ergänzt.Die gut verständliche Einführung und die vielen technischen Beispiele machen dieses Lehrbuch zum idealen Begleiter für Fachschüler:innen und Bachelor-Studierende. Dipl.-Math. Norbert Heiderich arbeitet als Lehrer u.a. für Programmierung am Berufskolleg des Kreises Kleve in Kleve.Dipl.-Ing. Wolfgang Meyer war Leiter des Heinz-Nixdorf-Berufskollegs. Er unterrichtete Datenverarbeitungstechnik und Programmieren. Er ist Beauftragter für Ingenieur-Studiengänge der FOM Hochschule.Leseprobe (PDF-Link)
Java Schritt für Schritt
Die Programmiersprache Java von Anfang bis Ende durchzuarbeiten und zu erlernen scheint für viele Studierende eine große Hürde zu sein. Nicht mit diesem Arbeitsbuch. Es führt Schritt für Schritt und leicht verständlich in die Programmiersprache ein. Das Buch umfasst 14 Kapitel: Einführung in Java; Variablen, Datentypen, Operatoren; Kontrollstrukturen; Felder / Arrays; Methoden; Sichtbarkeit / Gültigkeit; Objektorientierte Konzepte; Ausnahmen / Exceptions; Zeichenketten / Strings; Lineare Datenstrukturen; Datenströme / Streams; Datenbanken mit Java; Graphische Benutzeroberflächen mit Swing: Einführung; komplexere Oberflächen. Zahlreiche Übersichten und Zusammenfassungen erleichtern das Verständnis. utb+: Begleitend zum Buch steht den Leser:innen ein eLearning-Kurs für die Prüfungsvorbereitung zur Verfügung. Erhältlich über utb.de.Prof. Dr. Marcus Deininger lehrt Informatik an der Hochschule für Technik Stuttgart.Prof. Dr. Thomas Kessel lehrt Wirtschaftsinformatik an der Dualen Hochschule Baden-Württemberg in Stuttgart.VorwortInhaltsübersichtInhaltsverzeichnisSchritt 1: Einführung in JavaSchritt 2: Variablen, Datentypen, OperatorenSchritt 3: KontrollstrukturenSchritt 4: Felder / ArraysSchritt 5: MethodenSchritt 6: Sichtbarkeit / GültigkeitSchritt 7: Objektorientierte KonzepteSchritt 8: Ausnahmen / ExceptionsSchritt 9: Zeichenketten / StringsSchritt 10: Lineare DatenstrukturenSchritt 11: Datenströme / StreamsSchritt 12: Datenbanken mit JavaSchritt 13: Graphische Benutzeroberflächen mit Swing: EinführungSchritt 14: Graphische Benutzeroberflächen mit Swing: komplexere OberflächenStichwortverzeichnisSchritt 1: Einführung in Java1.1 Historie1.2 Begriffe1.3 Besonderheiten von Java1.4 Konventionen und Notationen1.5 Das erste Java-ProgrammSchritt 2: Variablen, Datentypen, Operatoren2.1 Datentypen2.2 OperatorenSchritt 3: Kontrollstrukturen3.1 Anweisungen3.2 Sequenz3.3 Auswahl3.4 Schleifen / WiederholungenSchritt 4: Felder / Arrays4.1 Werte in Arrays anordnenSchritt 5: Methoden5.1 Anweisungen in Methoden zusammenfassenSchritt 6: Sichtbarkeit / Gültigkeit6.1 Java-Komponenten6.2 Das Geheimnisprinzip und Zugriffsmodifier6.3 Qualifikation und Import6.4 Gültige und sichtbare Elemente6.5 Innere ElementeSchritt 7: Objektorientierte Konzepte7.1 Klassen und Objekte7.2 Erweiterung / Vererbung7.3 Abstrakte Klassen und Methoden7.4 Schnittstellen / Interfaces7.5 Aufzählungstypen / Enumerations7.6 Polymorphismus7.7 Best Practices der objektorientierten ProgrammierungSchritt 8: Ausnahmen / Exceptions8.1 Ausnahmen auslösen und behandelnSchritt 9: Zeichenketten / Strings9.1 Die Klassen String und StringBuilder9.2 Erzeugung von Strings9.3 Vergleich von Strings9.4 Extraktion von Zeichen oder Teilstrings9.5 Umwandeln von Strings9.6 Umwandlung von elementaren Datentypen in Strings9.7 Verarbeitung von Zeichenketten mit der Klasse StringBuilderSchritt 10: Lineare Datenstrukturen10.1 Überblick10.2 Typisierung von Collections10.3 Das Interface Collection10.4 Die Liste / List10.5 Die Menge / Set10.6 Die Schlange / Queue10.7Der Keller / Stapel / Stack10.8 Die Assoziationsliste / MapSchritt 11: Datenströme / Streams11.1 Datenquellen und -senken11.2 Daten- und Stream-Arten11.3 Lesen und Schreiben von Strömen in Java11.4 Lesen und Schreiben von Byte-Strömen11.5 Lesen und Schreiben von Textdateien11.6 Lesen und Schreiben von Java-Daten11.7 Objekte speichern und lesenSchritt 12: Datenbanken mit Java12.1 Java und Datenbanken12.2 Relationale Datenbanken und SQL12.3 Datenbankzugriff mit JDBCSchritt 13: Graphische Benutzeroberflächen mit Swing: Einführung13.1 Benutzeroberflächen13.2 Aufbau von Swing-Oberflächen13.3 Einfache Widgets13.4 Interaktion mit WidgetsSchritt 14: Graphische Benutzeroberflächen mit Swing: komplexere Oberflächen14.1 Komplexere Oberflächen14.2 Übersicht über das Anwendungsbeispiel14.3 MVC: Trennung von Oberfläche und Anwendung14.4 Weitere Widgets: Auswahllisten14.5 Layout-Manager14.6 Strukturierung der Oberfläche14.7 Weitere WidgetsStichwortverzeichnis
C Programmieren lernen für Einsteiger - In einfachen Schritten zum Programmier-Experten: Der leicht verständliche und praxisnahe Leitfaden zum professionellen Programmieren im Handumdrehen
C-Programmierung für Einsteiger: Wie Sie mit den richtigen Skills in kürzester Zeit zum absoluten Programmier-Profi werden – ganz ohne Vorkenntnisse! Möchten Sie sich für Ihren Job oder Ihr Studium einen Vorteil verschaffen und Programmieren mit der Programmiersprache C erlernen? Wollen Sie Ihre eigenen Codes schreiben, auch wenn Sie noch keine Ahnung von Programmiersprachen haben? Brauchen Sie eine Schritt-für Schritt Anleitung, mit der Sie mühelos Ihre ersten eigenen Befehle erstellen können? Dann haben Sie jetzt das perfekte Buch gefunden! Dieser umfassende praxisorientierte Ratgeber nimmt Sie an die Hand und bietet Ihnen das gesamte Wissen, das Sie als Anfänger benötigen, um sofort loszulegen und Ihre eigenen Anwendungen zu programmieren! •Objekte, Klassen, Attribute: Erfahren Sie alle notwendigen Begriffe, Grundlagen und Hintergrundinformationen für einen reibungslosen Einstieg in die Programmierwelt! •Lernen Sie komplett ohne Vorwissen die wesentlichen Merkmale der Programmiersprachen C und JavaScript, sowie der JavaScript Bibliothek jQuery und schreiben Sie im Handumdrehen Ihr erstes eigenes JavaScript! •Entdecken Sie smarte Methoden zur Fehlersuche in erstellten Codes – für ein frustfreies Programmieren! •Strukturieren Sie in kürzester Zeit mit HTML und CSS elektronische Dokumente übersichtlich und effizient! Mit den professionellen Tipps und Tricks von Informatik Experten und den anschaulichen Beispielen und Übungen werden Sie schon bald unfassbar gute Codes schreiben, komplexe Systeme effektiv strukturieren und solide Designs entwerfen! Außerdem wird es Ihnen in Zukunft deutlich einfacher fallen, weitere Programmiersprachen (wie Python oder Java) zu erlernen. Die Inhalte in diesem Ratgeber sind leicht verständlich aufbereitet und somit für wirklich jeden anwendbar! Sie können sich sicher sein: Um dieses Buch kommen Sie nicht herum, wenn Sie als Anfänger Programmieren lernen wollen! Sichern Sie sich gleich Ihr Exemplar und werden Sie ohne Vorerfahrung noch heute zum Experten der Softwareentwicklung!
HTML5 und CSS3 für Einsteiger - In einfachen Schritten zum Programmier-Experten: Der leicht verständliche und praxisnahe Leitfaden zum professionellen Programmieren im Handumdrehen
Mit HTML und CSS professionelle Webseiten erstellen! Sie möchten Ihre eigene Webseite erstellen? Sie wollen Ihre bestehende Webseite optimieren oder in einem neuen Design erstrahlen lassen? Dann ist dies der ideale Ratgeber für Sie! In Zeiten des Internets kommt keiner mehr an einer Webseite vorbei. Ganz gleich, ob Sie Produkte oder Dienstleistungen anbieten, Sie benötigen eine eigne Webseite für Ihren Erfolg. Das haben auch viele Webdesigner erkannt, welche sich auf den profitablen Bereich der Webseitenerstellung, beispielsweise mit Wordpress, spezialisiert haben. Aber immer mehr Menschen beschäftigen sich selbst mit HTML und CSS, um ihre Webseite zu programmieren. Mit dem richtigen Wissen und den passenden Anleitungen ist das auch gar kein Problem. Alle notwendigen Details für die Erstellung Ihrer Website, von Grundlagen bis zu fortgeschrittenen Techniken, wie die Einbindung von Formularen und Tabellen, finden Sie in diesem Buch. Schritt für Schritt erhalten Sie tiefgreifende Einblicke in HTML und CSS und werden im Handumdrehen in der Lage sein, Ihre eigene Webseite zum Leben zu erwecken! Dieses Buch sollten Sie auf jeden Fall lesen, wenn: •Sie eine eigene Webseite benötigen •Sie Ihre Webseite gerne selbst erstellen möchten •Sie mehr über die Grundlagen des Webdesigns erfahren wollen •Sie sich für HTML und CSS interessieren Dieser Ratgeber nimmt Sie mit hinter die Kulissen des Internets? Hier werden Fragen beantwortet, auf welche Sie bisher keine passende Antwort hatte, beispielsweise: •Wie funktioniert das World Wide Web? •Welche Struktur hat HTML? •Welche HTML-Elemente und HTML-Attribute gibt es? •Wie kann man ein HTML-Element erstellen und aufrufen? •Was ist ein semantisches Markup? •Wie programmiert man Listen und Aufzählungen mit HTML? •Wie ist die Anatomie von CSS? •Wie werden in CSS Farben und Schrift umgesetzt? •Was bedeutet Font-weight und Font-style im CSS? •Was sind Pseudo-Elemente und Psedo-Klassen? •Welche verschiedenen Symbole können für Listen verwendet werden? •Was ist ein Bootstrap? •Was sind die Vorteile und welches die Nachteile von Bootstrap? •Wie macht man Webdesign? •Und weit mehr... Dieser Ratgeber zum Webseitendesign mit HTML und CSS basiert auf dem notwendigen Fachwissen und hilfreichen Veranschaulichungen. Dank der Tipps und Tricks von Experten profitieren nicht nur Anfänger sondern auch Fortgeschrittene von diesem Webdesign-Handbuch. Diese können Sie sofort anwenden und für ein professionelles Webdesign Ihrer Homepage für Ihren Erfolg einsetzen. Nur noch einen Mausklick sind Sie von den detaillierten Einblicken in HTML und CSS entfernt. Mit einem Klick auf "JETZT KAUFEN" können Sie noch heute die ersten Schritte Ihres neuen Webdesigns für Ihre Webseite umsetzen. Warum teure Webdesigner beauftragen? Mit diesem Buch gestalten Sie Ihre Webseite nicht nur selbst, sondern ganz nach Ihrer persönlichen Vorstellung! Werden Sie erfolgreich mit Ihrer eigenen selbst erstellten Webseite!
JavaScript für Einsteiger - In einfachen Schritten zum Programmier-Experten: Der leicht verständliche und praxisnahe Leitfaden zum professionellen Programmieren im Handumdrehen
Wie Sie mit den richtigen Skills in kürzester Zeit zum absoluten Programmier-Profi werden – ganz ohne Vorkenntnisse! Möchten Sie sich für Ihren Job oder Ihr Studium einen Vorteil verschaffen und objektorientiertes Programmieren lernen? Wollen Sie Ihre eigenen Codes schreiben, auch wenn Sie noch keine Ahnung von Programmiersprachen haben? Brauchen Sie eine Schritt-für Schritt Anleitung, mit der Sie mühelos Ihre ersten eigenen Befehle in Java erstellen können? Dann haben Sie jetzt das perfekte Buch gefunden! Dieser praxisorientierte Ratgeber nimmt Sie an die Hand und bietet Ihnen das gesamte Wissen, das Sie als Anfänger benötigen, um sofort loszulegen und Ihre eigenen Anwendungen zu programmieren! •Erfahren Sie alle Grundlagen und Hintergrundinformationen zum objektorientierten Programmieren - für einen reibungslosen Einstieg! •Lernen Sie komplett ohne Vorwissen die wesentlichen Merkmale der Programmiersprache Java, sowie der JavaScript Bibliothek jQuery und schreiben Sie im Handumdrehen Ihr erstes JavaScript! •Entdecken Sie smarte Methoden zur Fehlersuche in erstellten Codes – für ein frustfreies Programmieren! •Strukturieren Sie in kürzester Zeit mit HTML und CSS elektronische Dokumente übersichtlich und effizient! Mit den professionellen Tipps und Tricks der Programmier-Experten werden Sie schon bald unfassbar gute Codes schreiben, komplexe Systeme effektiv strukturieren und solide Designs entwerfen! Außerdem wird es Ihnen in Zukunft deutlich einfacher fallen, weitere Programmiersprachen zu erlernen. Die Inhalte in diesem Ratgeber sind leicht und verständlich aufbereitet und somit für wirklich jeden anwendbar! Sie können sich sicher sein: Dieses Buch ist ein ultimatives Must-Have, wenn Sie als Anfänger in das objektorientierte Programmieren einsteigen wollen! Sichern Sie sich gleich Ihr Exemplar und werden Sie ohne Vorerfahrung noch heute zum Experten der Softwareentwicklung!
Funktionale Programmierung verstehen
Funktionale Programmierung verstehen. Konzepte und Entwurfsmuster für guten Code. Januar 2024.Möchten Sie sauberen, wartbaren und eleganten Code schreiben? Dann lernen Sie das Paradigma der funktionalen Programmierung kennen! Tauchen Sie in eine neue Denkweise ein und schreiben Sie eleganten Code auf die funktionale Art. Die meisten Codebeispiele in diesem Buch sind in leicht verständlichem Scala formuliert und außerdem in Python übersetzt. Mit Codebeispielen in Java, JavaScript und C# geht der Autor außerdem auf sprachabhängige Aspekte ein. So nutzen Sie funktionale Programmierung in Ihren Projekten – auch in einem objektorientierten Kontext.Grundlagen, Design Patterns und Lösungen für die PraxisElegante Wege zu robustem, leicht wartbarem CodeUnabhängig von der Programmiersprache nutzbar, mit Beispielen in Scala, Python und mehrMit Python-Special nur in der deutschen AusgabeFunktional Denken und Coden1. Grundlagen und ProblemlösungLernen Sie die Grundlagen kennen – und damit eine neue Denkweise, wenn es darum geht, Probleme zu lösen. Gehen Sie die Dinge auf die funktionale Art an!2. Funktionale Programmierung und ObjektorientierungFP und OOP – sie unterscheiden sich, und sie ergänzen sich wunderbar. Lassen Sie sich durch Konzepte, Entwurfsmuster und Lösungsansätze führen, um beides miteinander zu nutzen.3. Von der Denkweise zum CodeKonzepte sind wichtig, aber Ihren Code schreiben Sie in Python, Java oder einer anderen Sprache. Jack Widman nutzt Scala, aber nicht nur: Er zeigt, welche Besonderheiten in gängigen Sprachen zu beachten sind, und bringt Codebeispiele auch in Java, Python und C#.4. Inklusive Python-SpecialFür die Python-Community gehen wir noch weiter: In der deutschen Ausgabe hat Torsten Will alle wichtigen Codebeispiele übertragen und gibt zusätzliche Tipps für Python. Wer möchte, kann das Buch damit komplett im »Python-Modus« lesen.Aus dem Inhalt: Die Denkweise kennenlernenEin paar (einfache) mathematische GrundlagenEntwurfsmusterDatenstrukturenUnveränderlichkeitNebenläufigkeitKombination mit OOPBesonderheiten verschiedener ProgrammiersprachenLeseprobe (PDF-Link)
Node-RED - Das umfassende Handbuch (3. Auflage)
Node-Red. Das umfassende Handbuch. 3., aktualisierte Auflage. Januar 2024.Bauen Sie komplexe Schaltungen auf, ohne eine einzige Zeile Code zu schreiben – Node-RED macht es möglich. Mit dem visuellen Programmierkonzept erstellen Sie Flows und Logiken, die Ihre Projekte steuern. Udo Brandes stellt Ihnen dazu in diesem Handbuch alle Nodes vor und zeigt Ihnen, wie Sie Ihre Anforderungen übersichtlich modellieren und passende Dashboards erstellen. So lesen Sie im Handumdrehen automatisiert Sensoren aus, speichern Messwerte ab oder teilen Daten über das Netzwerk mit anderen Systemen.Von den Grundlagen zum fertigen DashboardSteuerungen und Logik visuell programmierenDaten in der Heimautomation, in Maker- und IoT-Projekten verarbeiten1. Ohne Vorkenntnisse einsteigenWer sich mit komplexen Systemen beschäftigt, weiß, dass nichts über KISS geht: Keep it Simple, Stupid. Und was könnte einfacher sein als Programmierlogik visuell direkt im Browser zu erstellen? Vermeiden Sie Code-Chaos und bauen Sie ohne viel Aufwand erste Tests und Prototypen.2. Für Maker, Bastler und ProgrammiereinsteigerSie finden für alle Aufgaben die passenden Werkzeuge, ob in der Heimautomation, dem IoT-Prototyping oder in Maker-Projekten. Speichern Sie beispielsweise Daten performant in InfluxDB ab, integrieren Sie Ihre FRITZ!Box ins Setup oder lesen Sie Sensoren über den Raspberry Pi aus: Ihrer Fantasie werden keine Grenzen gesetzt.3. Node-RED für Ihre ProjekteMit Node-RED setzen Sie auch anspruchsvolle Szenarien um: Programmieren Sie eigene Nodes, gestalten Sie professionelle Dashboards oder steuern Sie Ihr Setup mobil per App. Dieses Handbuch gibt Ihnen einen umfassenden Einstieg und begleitet Sie auf den ersten Schritten.Aus dem Inhalt:Installation und GrundlagenDas zentrale Tool: Der Node-RED-EditorDie Basics: Nodes und FlowDas Dashboard von Node-REDFunktionen programmierenGrundlagenwissen für JavaScript, Node.js und gutes ProgrammierenDaten abrufen und speichernDatenaustausch über MQTT und TCP/IPHacks: Fortgeschrittene Nodes nutzenAppsteuerung und externe AnbindungEigene Nodes entwickelnMikrocontroller-Steuerung mit Node-REDLeseprobe (PDF-Link)
Professional C++
EXPAND YOUR C++ TOOLKIT QUICKLY AND EFFICIENTLY WITH THIS ADVANCED RESOURCEIn the newly revised sixth edition of Professional C++, veteran software engineer and developer Marc Gregoire delivers yet another volume that raises the bar for advanced programming manuals. Covering the major new revisions contained in the new C++ standard codenamed C++23, the book offers case studies with working code that’s been tested in Windows and Linux. The leading resource for dedicated and knowledgeable professionals seeking to advance their C++ skills, this book provides resources that help readers:* Maximize C++ capabilities with effective design solutions* Master little-known elements and learn what practices to avoid* Adopt new workarounds and testing/debugging best practices* Use real-world program segments in your own applicationsC++ is a complex and unforgiving language. Professional C++, 6th Edition, allows dedicated practitioners to remain current and abreast of the latest developments and advances. MARC GREGOIRE is a software engineer and developer of C/C++ applications for both Windows and Linux. He is a Microsoft MVP, the founder of the Belgian C++ users group, and is currently working on X-ray, CT, and 3-D geometric inspection software for Nikon Metrology. He previously worked on critical 2G and 3G telecom software for Siemens and Nokia Siemens Networks. Marc is the author of Professional C++ 2nd, 3rd, 4th, and 5th editions, co-author of C++ Standard Library Quick Reference, technical editor on numerous books and articles, and maintains a blog at NUONSOFT.COM/BLOG.
Beginning C++ Compilers
This book focuses on how to install C/C++ compilers on Linux and Windows platforms in a timely and efficient way. Installing C/C++ compilers, especially Microsoft compilers, typically takes quite a lot of time because it comes with Microsoft Visual Studio for the vast majority of users. Installing Visual Studio requires usually about 40 GB of disk space and a large amount of RAM, so it is impossible to use weak hardware.The authors provide an easy way to deploy Microsoft C/C++ compiler: with no disk space headache and hardware resources lack. The method described saves significant time since software can even be deployed on removable devices, such as flash sticks, in an easy and portable way.It is achieved by using Enterprise Windows Driver Kit (EWDK), single big ISO image, which can be mounted as virtual device and used directly without any installation. EWDK contains everything from Visual Studio except IDE. EWDK also allows to use MASM64 (Microsoft Macro-Assembly) and C# compilers.With the aid of the MSBuild System, one can compile Visual Studio Projects (.vcxproj) and Solutions (.sln) without even using Visual Studio! Similarly, MinGW compilers can be deployed from 7z/zip archives, simply by unpacking into appropriate location. Both Microsoft C/C++ and MinGW compilers can be used as portable software—an approach that does not require administrative privileges at all.WHAT YOU’LL LEARN* Rapid installation of modern Microsoft C/C++ and MinGW compilers.* How to prepare reusable and portable Microsoft C/C++ and MinGW compilers suite on removable media (flash stick, CD/DVD).* How to use Microsoft C/C++ and MinGW compilers even on old/slow computers without standard installation.* How to build under Windows the libraries originally designed for Unix-systems.* Learn to run multiple versions of these compilers at the same time.WHO THIS BOOK IS FORReader of all skills who wants to save time and efforts to start to work with C++. Also useful for scientists who are not familiar with software installation.BERIK TULEUOV is a Senior Lecturer at L. N. Gumilyov Eurasian National University, Nur-Sultan, Kazakhstan. He’s a researcher and mathematician who uses computers for scientific computations and designing algorithms. He runs a topic on The AIFC Tech Hub (a meeting point for global startups, entrepreneurs, investors, industry’s top experts and talent pool) about Microsoft C/C++ compilers. This forum has more than two million registered participants. He regularly takes part in academic and industry conferences, mainly on computer science topics. Interests include programming languages, algorithms and data structures, concurrent (parallel) programming, scientific programming, (La)TeX Typesetting System, and data visualization.Ademi B. Ospanova is an Associate Professor in the Department of Information Security at L. N. Gumilyev Eurasian National University. She is the author of many courses in the field of IT technologies. She is developer of educational programmes of all levels of the university on information security. In the educational process and projects she uses her own software and libraries in C/C++, C#, Java, Prolog, R, Python, Solidity, works in Mathematica, Maple, Sage packages. She also has her own website, including hosting on her own server. She manages grant and initiative research projects, and her Masters and PhD students are winners of national scientific competitions. Ademi also gives courses and consultations on cryptography and programming to specialists from various companies."Part I. Operating Systems and PlatformsIntroductionChapter 1. Files and DevicesChapter Goal: General Information on Files and DevicesFile types and formatsExecutable and batch filesSystem commandsMounting DevicesVirtual DevicesChapter 2. Software InstallationChapter Goal: Description of Software Installation WaysInstallation packages (msi)Installing with archivesInstalling from sourcesPortable InstallationOverview of Installation MethodsBest Software Installation Practices for Windows systemsChapter 3. Programming Languages and SoftwareChapter Goal: Overview of Programming LanguagesProgramming LanguagesC/C++FortranAssemblyPart II. Programming EnvironmentsChapter 4. General Build InformationChapter Goal: Description of Software Building on Various Platforms with Various CompilersUnix systemsGNU Autotools (GNU Build System)Windows systemsnmake UtilityVisual Studio .vcxproj and .sln filesMSBuild Build SystemCygwinCross-platform topicsChapter 5. Some Useful Open Source UtilitiesChapter Goal: Overview of Handy ToolsFar ManagerDefault InstallationEasy InstallationUsage7zDefault InstallationEasy InstallationUsageNotepad++Default InstallationEasy InstallationUsagelessmsiEasy InstallationUsageWinCDEmuEasy InstallationUsageChapter 6. Command-Line InterfaceChapter Goal: Description of Important Shell EnvironmentCommand InterpreterEnvironment VariablesAccess managementChapter 7. Integrated Development Environments and EditorsChapter Goal: Various Visual Development ToolsMicrosoft Visual StudioQt CreatorCode::BlocksGeanyKateChapter 8. Minimal SystemsChapter Goal: Overview of Handy Build SubsystemsMSYSEasy InstallationSome TipsMSYS2Default InstallationEasy InstallationCMakeDefault InstallationEasy InstallationChapter 9. CompilersChapter Goal: Various Ways of Compilers InstallationsGCC/MinGWDefault InstallationBuilding from the sourcesEasy InstallationMicrosoft C/C++Default InstallationEasy Installation (without Visual Studio) with EWDKIntel C/C++Part III. Building and Using Libraries (A. B. Ospanova, co-author)Chapter 10. LibrariesChapter Goal: Libraries, How to Treat ThemDynamic and Static LibrariesBuilding LibrariesCreating User LibrariesChapter 11. Using LibrariesChapter Goal: Overview of Using LibrariesLinking with Static LibrariesLinking with Dynamic LibrariesUsing Libraries from Source CodeChapter 12. GMP (GNU Multiprecision Library)Chapter Goal: Using GMP LibraryBuildingExample: Computation of 10 000 000!Chapter 13. Crypto++Chapter Goal: Using Crypto++ LibraryBuilding with MinGWBuilding with Microsoft C/C++ CompilerExample: AES ImplementationChapter 14. Process HackerChapter Goal: Using Process Hacker UtilityBuilding with Microsoft C/C++ CompilerBuilding DriverBuilding Utility
Quantum Computing by Practice
Learn to write algorithms and program in the new field of quantum computing. This second edition is updated to equip you with the latest knowledge and tools needed to be a complex problem-solver in this ever-evolving landscape. The book has expanded its coverage of current and future advancements and investments by IT companies in this emerging technology. Most chapters are thoroughly revised to incorporate the latest updates to IBM Quantum's systems and offerings, such as improved algorithms, integrating hardware advancements, software enhancements, bug fixes, and more.You’ll examine quantum computing in the cloud and run experiments there on a real quantum device. Along the way you’ll cover game theory with the Magic Square, an example of quantum pseudo-telepathy. You’ll also learn to write code using QISKit, Python SDK, and other APIs such as QASM and execute it against simulators (local or remote) or a real quantum computer. Then peek inside the inner workings of the Bell states for entanglement, Grover’s algorithm for linear search, Shor’s algorithm for integer factorization, and other algorithms in the fields of optimization, and more. Finally, you’ll learn the current quantum algorithms for entanglement, random number generation, linear search, integer factorization, and others.By the end of this book, you’ll understand how quantum computing provides massive parallelism and significant computational speedups over classical computersWHAT YOU'LL LEARN* Write algorithms that provide superior performance over their classical counterparts* Create a quantum number generator: the quintessential coin flip with a quantum twist* Examine the quantum algorithms in use today for random number generation, linear search, and more* Discover quantum teleportation* Handle the counterfeit coin problem, a classic puzzle * Put your knowledge to the test with more than 150 practice exercises WHO THIS BOOK IS FORDevelopers, programmers, computer science researchers, teachers, and students.Vladimir Silva was born in Quito, Ecuador. He received a System's Analyst degree from the Polytechnic Institute of the Army in 1994. In the same year, he came to the United States as an exchange student pursuing an M.S. degree in Computer Science at Middle Tennessee State University. After graduation, he joined the IBM WebAhead technology think tank. His interests include Grid Computing, Neural Nets, and Artificial Intelligence. He also holds numerous IT certifications including OCP, MCSD, and MCP. He has written many technical articles for IBM developerWorks and books in the fields of grid computing, and security. His previous books include: Grid Computing for Developers (Charles River Media), Practical Eclipse Rich Client Platform (Apress), Pro Android Games (Apress), and Advanced Android 4 Games (Apress).CHAPTER 1: QUANTUM FIELDS - THE BUILDING BLOCKS OF REALITYEnter Max Planck, the Father of Quantum MechanicsPlanck Hits the Jackpot, Einstein collects a Novel PrizeQuantum Mechanics comes in many flavors. Which is your favorite?Many Worlds InterpretationSupplementary InterpretationsFrom Quantum Mechanics to Quantum Fields: Evolution or RevolutionChapter 1 ExercisesCHAPTER 2: RICHARD FEYNMAN, DEMIGOD OF PHYSICS, FATHER OF THE QUANTUM COMPUTERMysteries of QFT: The Plague on InfinitiesFeynman Diagrams: Formulas in DisguiseAntimatter as Time Reverse Matter and the Mirror UniverseChapter 2 ExercisesCHAPTER 3: THE QUBIT REVOLUTION IS AT HANDYour Friendly Neighborhood Quantum ComputerLinear Optics vs Super Conducting LoopsThe Many Flavors of QubitChapter 3 ExercisesCHAPTER 4: ENTER THE IBM QUANTUM: A ONE OF A KIND PLATFORM FOR QUANTUM COMPUTING IN THE CLOUDGetting your feet wet with IBM QuantumOpus 1: Variations on Bell and GHZ StatesRemote Access via the REST APIChapter 4 ExercisesCHAPTER 5: MATHEMATICAL FOUNDATION: TIME TO DUST UP THAT LINEAR ALGEBRAQubit 101: Vector, Matrices and Complex NumbersEuler’s Identity: A Wonderful MasterpieceAlgebraic Representation of the QubitChanging the State of a Qubit with Quantum GatesUniversal Quantum Computation delivers shortcuts over Classical ComputationChapter 5 ExercisesCHAPTER 6: QISKIT, AWESOME SDK FOR QUANTUM PROGRAMMING IN PYTHONInstalling the QISKitYour First Quantum ProgramQuantum Assembly: The Power behind the ScenesChapter 6 ExercisesCHAPTER 7: START YOUR ENGINES: FROM QUANTUM RANDOM NUMBERS TO TELEPORTATION, PIT STOP AT SUPER DENSE CODINGQuantum Random Number GenerationSuper Dense CodingQuantum TeleportationCHAPTER 8: GAME THEORY: WITH QUANTUM MECHANICS ODDS ARE ALWAYS IN YOUR FAVORCounterfeit Coin PuzzleMermin-Peres Magic SquareAnswers for the Mermin-Peres Magic Square ExerciseCHAPTER 9: FASTER SEARCH PLUS THREATENING THE FOUNDATION OF ASYMMETRIC CRYPTOGRAPHY WITH GROVER AND SHORQuantum Unstructured SearchInteger Factorization with Shor’s AlgorithmCHAPTER 10: ADVANCED ALGORITHMS FOR QUANTUM CHEMISTRYWhat in an Eigenvalue and why should I careVariational Quantum EigensolverMolecule Ground State ExperimentProtein Folding Experiment
Practical Spring LDAP
This revised edition is your practical, hands-on guide to developing Java-based enterprise applications with big data or batches of data using the Spring LDAP and the Spring Data LDAP frameworks. The book covers these popular Spring project modules and explains the purpose and fundamental concepts of LDAP before giving a comprehensive tour of the latest version of Spring LDAP and Spring Data LDAP as found in Spring Framework 6.The book provides a detailed treatment of LDAP controls and the new features of Spring LDAP such as Object Directory Mapping and LDIF parsing. LDAP has become the de facto standard for storing and accessing information in enterprises. Despite its widespread adoption, developers often struggle when it comes to using this technology effectively. The traditional Java LDAP and JNDI approaches have proven to be painful and have resulted in complex, less modular applications. The Spring LDAP framework provides an ideal alternative.After reading and using this book, you'll come away with a level of comfort for working with large batches of data or big data in your enterprise Spring applications development.WHAT YOU'LL LEARN* Explore "What is Java LDAP?" and understand the Spring LDAP and Spring Data LDAP frameworks* Search LDAP resources* Sort and page your LDAP results* Dive into object directory mapping* Handle LDAP transactions and moreWHO THIS BOOK IS FORIntermediate to advanced Java and Spring software developers; programmers with at least some prior experience in Java, especially the Spring FrameworkBALAJI VARANASI is a software development manager and technology entrepreneur. He has over 13 years of experience architecting and developing Java/.NET applications and, more recently, iPhone apps. During this period, he has worked in the areas of security, web accessibility, search, and enterprise portals. He has a master's degree in computer science and serves as adjunct faculty, teaching programming and information system courses. When not programming, he enjoys spending time with his lovely wife in Salt Lake City, Utah.ANDRES SACCO has been working as a developer since 2007 in different languages, including Java, PHP, Node.js, Scala, and Kotlin. His background is mostly in Java and the libraries or frameworks associated with this language. At most of the companies he worked for, he researched new technologies to improve the performance, stability, and quality of the applications of each company. In 2017, he started to find new ways to optimize the transference of data between applications to reduce the cost of infrastructure. He suggested some actions, some applicable in all of the manual microservices and others in just a few. All of this work includes creating a series of theoric-practical projects (available on Manning.com). Recently, he co-authored an Apress book on Beginning Scala 3. He also, published a set of theoric-practical projects about uncommon ways of testing, such as architecture tests and chaos engineering.
Python Debugging for AI, Machine Learning, and Cloud Computing
This book is for those who wish to understand how Python debugging is and can be used to develop robust and reliable AI, machine learning, and cloud computing software. It will teach you a novel pattern-oriented approach to diagnose and debug abnormal software structure and behavior.The book begins with an introduction to the pattern-oriented software diagnostics and debugging process that, before performing Python debugging, diagnoses problems in various software artifacts such as memory dumps, traces, and logs. Next, you’ll learn to use various debugging patterns through Python case studies that model abnormal software behavior. You’ll also be exposed to Python debugging techniques specific to cloud native and machine learning environments and explore how recent advances in AI/ML can help in Python debugging. Over the course of the book, case studies will show you how to resolve issues around environmental problems, crashes, hangs, resource spikes, leaks, and performance degradation. This includes tracing, logging, and analyziing memory dumps using native WinDbg and GDB debuggers.Upon completing this book, you will have the knowledge and tools needed to employ Python debugging in the development of AI, machine learning, and cloud computing applications.WHAT YOU WILL LEARN* Employ a pattern-oriented approach to Python debugging that starts with diagnostics of common software problems* Use tips and tricks to get the most out of popular IDEs, notebooks, and command-line Python debugging* Understand Python internals for interfacing with operating systems and external modules* Perform Python memory dump analysis, tracing, and loggingWHO THIS BOOK IS FORSoftware developers, AI/ML engineers, researchers, data engineers, as well as MLOps and DevOps professionals. DMITRY VOSTOKOV is an internationally recognized expert, speaker, educator, scientist, inventor, and author. He founded the pattern-oriented software diagnostics, forensics, and prognostics discipline (Systematic Software Diagnostics) and Software Diagnostics Institute (DA+TA: DumpAnalysis.org + TraceAnalysis.org). Vostokov has also authored multiple books on software diagnostics, anomaly detection and analysis, software, and memory forensics, root cause analysis and problem-solving, memory dump analysis, debugging, software trace and log analysis, reverse engineering, and malware analysis. He has over thirty years of experience in software architecture, design, development, and maintenance in various industries, including leadership, technical, and people management roles. In his spare time, he presents multiple topics on Debugging.TV and explores Software Narratology and its further development as Narratology of Things and Diagnostics of Things (DoT), Software Pathology, and Quantum Software Diagnostics. His current interest areas are theoretical software diagnostics and its mathematical and computer science foundations, application of formal logic, artificial intelligence, machine learning, and data mining to diagnostics and anomaly detection, software diagnostics engineering and diagnostics-driven development, diagnostics workflow, and interaction. Recent interest areas also include cloud native computing, security, automation, functional programming, applications of category theory to software development and big data, and artificial intelligence diagnostics. Chapter 1: Fundamental Vocabulary.- Chapter 2: Pattern-Oriented Debugging.- Chapter 3: Elementary Diagnostics Patterns.- Chapter 4: Debugging Analysis Patterns.- Chapter 5: Debugging Implementation Patterns.- Chapter 6: IDE Debugging in Cloud.- Chapter 7: Debugging Presentation Patterns.- Chapter 8: Debugging Architecture Patterns.- Chapter 9: Debugging Design Patterns.- Chapter 10: Debugging Usage Patterns.- Chapter 11: Case Study: Resource Leaks.- Chapter 12: Case Study: Deadlock.- Chapter 13: Challenges of Python Debugging in Cloud Computing.- Chapter 14: Challenges of Python Debugging in AI and Machine Learning.- Chapter 15: What AI and Machine Learning Can Do for Python Debugging.- Chapter 16: The List of Debugging Patterns.
Building Real-Time Marvels with Laravel
Dive into the diverse facets of the Laravel ecosystem. This comprehensive guide will put you on the fast track to becoming an expert in Laravel development.Starting with the fundamentals, you’ll explore essential concepts, enabling you to grasp the framework's structure. Subsequent chapters cover intricate topics, such as advanced routing techniques, database management, and eloquent object relational mapping (ORM), allowing developers to build robust applications. The book offers comprehensive insights into building secure applications with authentication and authorization mechanisms, as well as constructing efficient APIs and employing caching techniques for enhanced performance.Chapters on real-time applications and queues offer practical knowledge to optimize application responsiveness. Advanced package development and performance monitoring provide valuable tools for developing high-quality Laravel packages and debugging. You’ll also gain expertise in internationalization, front-end development, and database optimization.Building Real-Time Marvels with Laravel doesn't shy away from the latest trends, featuring chapters on serverless computing, progressive web applications (PWAs), and UI/UX design patterns. It also emphasizes security, DevOps, and infrastructure automation. Bonus appendixes feature a handy Laravel cheat sheet, recommended resources, and a glossary of essential terms, making it a comprehensive reference for Laravel enthusiasts.WHAT YOU WILL LEARN* Gain a comprehensive understanding of advanced routing, database management with eloquent ORM, authentication, and API development.* Study caching, database query optimization, queuing, and scaling strategies for high-traffic applications* Explore advanced middleware, real-time applications, testing, and package development WHO THIS BOOK IS FORIntermediate to advanced developers.SIVA SELVARAJ work focuses on modern technologies and industry best practices. These topics include frontend development techniques using HTML5, CSS3, and JavaScript frameworks; implementing responsive web design and optimizing user experience across devices; building dynamic web applications with server-side languages such as PHP, WordPress, and Laravel; and Database management and integration using SQL and MySQL databases He loves to share his extensive knowledge and experience to empower readers to tackle complex challenges and create highly functional and visually appealing websites.Chapter 1: Understanding the Laravel Ecosystem.- Chapter 2: Advanced Routing Techniques.- Chapter 3: Database Management and Eloquent ORM.- Chapter 4: Authentication and Authorization.- Chapter 5: Building APIs with Laravel.- Chapter 6: Caching and Performance Optimization.- Chapter 7: Advanced Middleware Techniques.- Chapter 8: Real-Time Applications with Laravel.- Chapter 9: Testing and Test-Driven Development.- Chapter 10: Queues and Job Scheduling.- Chapter 11: Advanced Package Development.-Chapter 12: Performance Monitoring and Debugging.- Chapter 13: Scaling Laravel Applications.- Chapter 14: Security Best Practices.- Chapter 15: Advanced Performance Optimization.- Chapter 16: Continuous Integration and Deployment.- Chapter 17: Laravel and Microservices.- Chapter 18: Advanced Laravel Debugging and Troubleshooting.-Chapter 19: Building Internationalized Applications with Laravel.- Chapter 20: Advanced Frontend Development with Laravel.- Chapter 21: Advanced Error Handling and Exception Management.- Chapter 22: Advanced Database Techniques and Optimization.- Chapter 23: Laravel and Serverless Computing.- Chapter 24: Building Progressive Web Applications (PWAs) with Laravel.- Chapter 25: Advanced UI/UX Design Patterns for Laravel.- Chapter 26: Advanced Analytics and Reporting in Laravel.- Chapter 27: Building Microservices with Laravel and Docker.- Chapter 28: Advanced Third-Party Integrations.- Chapter 29: Securing Laravel Applications.- Chapter 30: Advanced DevOps and Infrastructure Automation Appendix A: Laravel Cheat Sheet .- Appendix B: Recommended Resources.- Appendix C: Glossary of Terms
Pro Spring Security
Build and deploy secure Spring Framework and Spring Boot-based enterprise Java applications with the Spring Security Framework. This book explores a comprehensive set of functionalities to implement industry-standard authentication and authorization mechanisms for Java applications.Pro Spring Security, Third Edition has been updated to incorporate the changes in Spring Framework 6 and Spring Boot 3. It is an advanced tutorial and reference that guides you through the implementation of the security features for a Java web application by presenting consistent examples built from the ground up.This book also provides you with a broader look into Spring security by including up-to-date use cases such as building a security layer for RESTful web services and JSON Web Token applications.WHAT YOU WILL LEARN* Explore the scope of security and how to use the Spring Security Framework* Master Spring security architecture and design * Secure the web tier in Spring * Work with alternative authentication providers* Take advantage of business objects and logic security* Extend Spring security with other frameworks and languages* Secure the service layer* Secure the application with JSON Web TokenWHO THIS BOOK IS FORExperienced Spring and Java developers with prior experience in building Spring Framework or Boot-based applicationsMASSIMO NARDONE has more than 27 years of experience in information and cybersecurity for IT/OT/IoT/IIoT, web/mobile development, cloud, and IT architecture. His true IT passions are security and Android. He has been programming and teaching how to program with Android, Perl, PHP, Java, VB, Python, C/C++, and MySQL for more than 27 years. He holds an M.Sc. degree in computing science from the University of Salerno, Italy. Throughout his working career, he has held various positions starting as programming developer, then security teacher, PCI QSA, Auditor, Assessor, Lead IT/OT/SCADA/SCADA/Cloud Architect, CISO, BISO, Executive, Program Director, OT/IoT/IIoT Security Competence Leader, etc.In his last working engagement, he worked as a seasoned Cyber and Information Security Executive, CISO and OT, IoT and IIoT Security competence Leader helping many clients to develop and implement Cyber, Information, OT, IoT Security activities.His technical skills include Security, OT/IoT/IIoT, Android, Cloud, Java, MySQL, Drupal, Cobol, Perl, web and mobile development, MongoDB, D3, Joomla!, Couchbase, C/C++, WebGL, Python, Pro Rails, Django CMS, Jekyll, and Scratch. He has served as a visiting lecturer and supervisor for exercises at the Networking Laboratory of the Helsinki University of Technology (Aalto University).He stays current to industry and security trends, attending events, being part of a board such as the ISACA Finland Chapter Board, ISF, Nordic CISO Forum, Android Global Forum, etc.He holds four international patents (PKI, SIP, SAML, and Proxy areas). He currently works as a Cyber Security Freelancer for IT/OT and IoT. He has reviewed more than 55 IT books for different publishers and has coauthored Pro JPA 2 in Java EE 8 (Apress, 2018), Beginning EJB in Java EE 8 (Apress, 2018), and Pro Android Games (Apress, 2015).CARLO SCARIONI is a passionate software developer, motivated by learning and applying innovative and interesting software development tools, techniques, and methodologies. He has worked for more than 18 years in the field and moved across multiple languages, paradigms, and subject areas. He also has many years of experience working with Java and its ecosystem. He has been in love with Spring since the beginning and he is fascinated by how Spring allows building complex applications out of discrete, focused modules and by the clever use of decorators to add cross-cutting functionalities. In the last few years he has been working mostly with data engineering solutions. He has been creating solutions around the use of modern data stack components in cloud environments, while at the same time developing software using technologies such as Spark, Python, and others.