Programmierung
Digineering
Als Folge der zunehmenden Verfügbarkeit neuer Informationstechnologien entstehen völlig neue Kundenerwartungen, Geschäftsmodelle und Prozesse. Die umfassende Neugestaltung digitaler Prozesse ist mit Konzepten der Vergangenheit nicht zu bewältigen. Business Process Management benötigt angepasste Methoden, Fähigkeiten, Technologien und Strukturen.„Digineering“ steht für die Kombination der Aspekte einer zunehmenden Digitalisierung mit den Methoden und Vorgehensweisen des Re-Engineering und überträgt damit Ansätze aus dem Business Process Management, dem Management der digitalen Transformation und dem Software-Engineering auf die aktuellen Herausforderungen der Prozessdigitalisierung.„Digineering“ liefert einen agilen Lösungsansatz, der alle Phasen der Prozessdigitalisierung von der Analyse der Kundenanforderungen über die Prozessgestaltung bis zur Implementierung neuer IT-Anwendungen umfasst. In allen Phasen werden die Potenziale innovativer IT einbezogen, um so ganzheitliche Prozesse mit einzigartigem Kundenerlebnis und hoher Effizienz zu schaffen.PROF. DR. ARNO MÜLLER lehrt an der NORDAKADEMIE Hochschule der Wirtschaft Prozessmanagement, strategisches IT-Management und Logistik und ist Geschäftsführer der bps business process solutions GmbH.PROF. DR. HINRICH SCHRÖDER ist Professor und Studiengangsleiter für Wirtschaftsinformatik an der NORDAKADEMIE Hochschule der Wirtschaft.LARS VON THIENEN ist Geschäftsführer der bps business process solutions GmbH und berät Unternehmen bei der Transformation der IT-Organisation und dem Aufbau von innovativen IT-Management-Methoden.Bausteine des Digineering.- Fitness-Check zur Entwicklung der Technology- und Capability-Roadmap.- Methoden und Rollenmodell für die Prozessdigitalisierung: (Ro)-Bots: Orchestrierung von digitalen Services und Mensch-Maschine-Kommunikation.- Roadmap zur Aufdeckung und Realisierung der KI-Potenziale in der Prozessdigitalisierung.- Dataism: Wertschöpfung mit datengetriebenen Geschäftsmodellen.- Steuerung der unternehmensweiten Prozessdigitalisierung.- Operating-Model für digitalisierte Prozesse.
Beginning IntelliJ IDEA
Get started quickly with IntelliJ, from installation to configuration to working with the source code and more. This tutorial will show you how to leverage IntelliJ’s tools to develop clean, efficient Java applications.Author TED HAGOS will first walk you through buidling your first Java applications using IntelliJ. Then, he’ll show you how to analyze your application, top to bottom; using version control and tools that allow you expand your application for big data or data science applications and more. You'll also learn some of the IDE’s advanced features to fully maximize your application's capabilities.The last portion of the book focuses on application testing and deployment, and language- and framework- specific guidelines. After reading this book and working through its freely available source code, you'll be up to speed with this powerful IDE for today's Java development.WHAT YOU WILL LEARN* Use IntelliJ IDEA to build Java applications* Set up your IDE and project* Work with source code* Extend your Java application to data science and other kinds of applications* Test and deploy your application and much moreWHO THIS BOOK IS FORProgrammers new to IntelliJ IDEA who may have some prior exposure to Java programming.Ted Hagos is a software developer by trade; at the moment, he’s Chief Technology Officer and Data Protection Officer of RenditionDigital International, a software development company based out of Dublin. He wore many hats in his 20+ years in software development e.g. team lead, project manager, architect and director for development. He also spent time as a trainer for IBM Advanced Career Education, Ateneo ITI and Asia Pacific College. He wrote a couple of books for Apress.1. Install IntelliJ2. Getting Started3. Configuring the IDE4. Configuring Projects5. Working with Source Code6. Building Applications7. Analyzing Applications8. Version Control9. Big Data / Data Science Tools10. Other Tools11. Advanced IDE Features12. Migration Guides13. Language and Framework Specific Guidelines14. Testing15. Deployment
Language Server Protocol and Implementation
Understand the important aspects of implementing a production-grade language server in support of language-smart tools such as code editors and other programming utilities. This book shows you how to create a single implementation of a language server that can be used by multiple tools, enabling you to do the job once in a way that can be shared and reused.This book covers the language server protocol used for communication between programming tools and your language server. The book also provides an in-depth understanding of the design, implementation, and user experience aspects which should be considered when implementing a language server. The book walks you through an example language server implementation to illustrate the basic concepts, then goes on to cover advanced aspects of language server use such as progress reporting, launchers, and extension points.User experience is an important aspect of language server implementation and different tooling vendors strive to provide their own unique user experiences. This book explains how the protocol features can be leveraged to address the unique developer experience provided by different tooling vendors. The book also shows how to enhance the smoothness of the editing experience by orchestrating multiple features together.WHAT YOU WILL LEARN* Implement a language server from scratch* Understand language server protocol and its data models* Leverage the protocol while preserving the unique user experience of different editors* Extend the protocol to support more than its standard capabilities* Run a language server on top of launchers such as standard I/O and TCP socket* Seamlessly incorporate language semantics into your protocol featuresWHO THIS BOOK IS FORDevelopers focused on and passionate about implementing language development tools such as plug-ins and extensions for interactive development environments (IDEs) or other tools that rely upon parsing of language statements and commands, and developers who need an in-depth understanding of the language server protocol as well as how to use the language server protocol to develop extensible language servicesNADEESHAAN GUNASINGHE is Technical Lead at WSO2 and has more than five years of experience in enterprise integration, programming languages, and developer tooling. He leads the Ballerina Language Server team and is a key contributor to Ballerina, which is an open-source programming language and platform for the cloud, and he is an active contributor to the WSO2 Enterprise Service Bus.NIPUNA MARCUS is Technical Lead at WSO2 and has more than five years of experience in front end development, programming languages, and developer tooling. He was a member of the Ballerina Language Server team and a key contributor to the Ballerina programming language. 1. Developer Tools and Language Services2. Understanding the Language Server Protocol3. Implementing a Language Server4. General Messages5. Text Synchronization6. Diagnostics, Smart Editing, and Documentation7. Refactoring and Code Fixes8. Code Navigation and Navigation Helpers9. Presentation and Folding10. Workspace Operations11. Advanced ConceptsA. Data Models and Resources
LoRaWAN-Knoten im IoT
LoRaWAN hat sich als Kommunikationslösung im IoT hervorragend entwickelt. The Things Network (TTN) hat hierzu seinen Beitrag geleistet. Aktuell wird The Things Network auf The Things Stack Community Edition (TTS (CE)) aktualisiert. Die Cluster von TTN V2 werden gegen Ende 2021 geschlossen.Der Autor zeigt Ihnen die notwendigen Schritte, damit Sie in gewohnter Weise LoRaWAN-Knoten mit Hilfe von TTS (CE) betreiben und vielleicht auch das Netz der Gateways durch ein eigenes Gateway erweitern. Mittlerweile gibt es sogar für den mobilen Einsatz geeignete LoRaWAN-Gateways mit denen Sie über Ihr Mobiltelefon Verbindung zum TTN-Server aufbauen können.In diesem Buch werden eine Reihe kommerzieller und Arduino-basierter LoRaWAN-Knoten als auch neue, kostengünstige und für den Batteriebetrieb geeignete Hardware zum Aufbau autonomer LoRaWAN-Knoten vorgestellt.Die Registrierung von LoRaWAN-Knoten und Gateways im TTS (CE) sowie die Bereitstellung der erhobenen Daten über MQTT und die Visualisierung über Node-RED, Cayenne, Thingspeak und Datacake ermöglichen komplexe IoT-Projekte und völlig neue Anwendungen zu sehr geringen Kosten.Das vorliegende Buch versetzt Sie in die Lage, mit batteriebetriebenen Sensoren (LoRaWAN-Knoten) erfasste Daten drahtlos im Internet bereitzustellen und zu visualisieren.Sie lernen die Grundlagen für Smart-City- und IoT-Anwendungen, die beispielsweise die Messung von Luftqualität, Wasserständen, Schneehöhen, das Ermitteln von freien Parkfeldern (Smart Parking) und die intelligente Steuerung der Straßenbeleuchtung (Smart Lighting) u.a.m. ermöglichen.Dr. Claus Kühnel studierte Informationstechnik an der Technischen Universität Dresden und hat über viele Jahre Embedded Systems für Geräteder Labordiagnostik u.a. entwickelt. In diesem interdisziplinären Spannungsfeld kam er mit der Maker-Szene in Berührung. Er hat zahlreiche Artikel und Bücher zu Hard- und Software von Mikrocontrollern im In- und Ausland verö entlicht. Mit Leidenschaft befasst er sich mit neuen Technologien rund um das Thema Mikrocontroller
The Definitive Guide to Modern Java Clients with JavaFX 17
Build enhanced visual experiences and design and deploy modern, easy-to-maintain, client applications across a variety of platforms. This book will show you how these applications can take advantage of JavaFX’s latest user interface components, 3D technology, and cloud services to create immersive visualizations and allow high-value data manipulation. The Definitive Guide to Modern Java Clients with JavaFX 17 is a professional reference for building Java applications for desktop, mobile, and embedded in the Cloud age. It offers end-to-end coverage of the latest features in JavaFX 17 and Java 17.Among the many new or updated JavaFX features covered are the FX Robot API, for simulating user interaction; customized step repeat timing for the Spinner control; Marlin FX; the ColorPicker color palette; and the GetCenter method.After reading this book, you will be equipped to upgrade legacy client applications, develop cross-platform applications in Java, and build enhanced desktop and mobile native clients.Note: source code can be downloaded from https://github.com/Apress/definitive-guide-modern-java-clients-javafx17.WHAT YOU WILL LEARN:* Create modern client applications in Java using the latest JavaFX 17 and Java 17 LTSBuild enterprise clients that will enable integration with existing cloud services * Use advanced visualization and 3D features* Deploy on desktop, mobile, and embedded devicesWHO THIS BOOK IS FOR:Professional Java developers who are interested in learning the latest client Java development techniques to fill out their skills set.STEPHEN CHIN is Senior Director of Developer Relations at JFrog, author of Raspberry Pi with Java and co-author of Pro JavaFX Platform. He has keynoted numerous Java conferences around the world, including Oracle Code One (formerly JavaOne), where he is an 8-time Rock Star Award recipient. Stephen is an avid motorcyclist who has done evangelism tours in Europe, Japan, and Brazil, interviewing hackers in their natural habitat. When he is not traveling, he enjoys teaching kids how to do embedded and robot programming together with his teenage daughter.JOHAN VOS started to work with Java in 1995. He was part of the Blackdown team, porting Java to Linux. His main focus is on end-to-end Java, combining back-end systems and mobile/embedded devices. He received a Duke Choice award in 2014 for his work on javafx on mobile. In 2015, he co-founded Gluon, which allows enterprises to create (mobile) Java Client applications leveraging their existing backend infrastructure. Gluon received a Duke Choice award in 2015. Johan is a Java Champion and an Oracle Developer Champion, a member of the BeJUG steering group, the Devoxx steering group and he is a JCP member. He has been a speaker at numerous conferences on Java.JAMES WEAVER is a Java developer, author, and speaker with a passion for cloud-native applications, machine learning, and quantum computing. He is a Java Champion, and a JavaOne Rockstar. James has written books including Inside Java, Beginning J2EE, the Pro JavaFX series, and Java with Raspberry Pi. As a Pivotal Developer Advocate, James speaks internationally at software technology conferences. He tweets as @JavaFXpert.1: Getting Started with Client Java2: JavaFX Fundamentals3: Properties and Bindings4: JavaFX Controls Deep Dive5: Mastering Visual and CSS Design6: High Performance Graphics7: Bridging Swing JavaFX Style8: JavaFX 3D9: JavaFX to Web and Cloud10: Packaging Apps for the Desktop11: Native Mobile Apps12: JavaFX 11 on Raspberry Pi13: Maching Learning and JavaFX14: Java Science
Entwurfsmuster von Kopf bis Fuß
JETZT AKTUALISIERT UND ERWEITERT: DAS STANDARDWERK ZU ENTWURFSMUSTERN * »Dieses Buch vereint Spaß, herzhaftes Lachen, profundes technisches Verständnis und geniale Praxistipps zu einem denkwürdigen Lesegenuss.« Richard Helm, Gang of Four * Softwareentwickler wollen das Rad nicht neu erfinden: Mit Entwurfsmustern können Sie von den Erfahrungen und Best Practices anderer profitieren * Die Design Patterns werden detailliert und verständlich erklärt, inklusive Herleitung und geeigneten Anwendungsfällen Dieses Buch ist ein moderner Klassiker zum Thema Entwurfsmuster. Mit dem einzigartigen Von-Kopf-bis-Fuß-Lernkonzept gelingt es den Autoren, die anspruchsvolle Materie witzig, leicht verständlich und dennoch gründlich darzustellen. Jede Seite ist ein Kunstwerk für sich, mit vielen visuellen Überraschungen, originellen Comic-Zeichnungen, humorvollen Dialogen und geistreichen Selbstlernkontrollen. Spätestens, wenn es heißt "Spitzen Sie Ihren Bleistift", wird Leser:innen klar, dass bei diesem Buch Mitmachen gefragt ist. Das ist nicht nur unterhaltsam, sondern auch effektiv: Komplexe Sachverhalte lassen sich nach Erkenntnis der modernen Lernwissenschaft am gründlichsten über mehrere verschiedene Kanäle verstehen. Das Buch verspricht Ihnen daher nicht nur Spaß beim Lernen, Sie werden nach der Lektüre auch die Herausforderungen des Softwaredesigns meistern können.
Design Patterns für Machine Learning
Entwurfsmuster für Datenaufbereitung Modellbildung und MLOpsDie Design Patterns in diesem Buch zeigen praxiserprobte Lösungen für wiederkehrende Aufgaben im Machine Learning. Die Autor:innen – ML-Experten bei Google – beschreiben Methoden, die Data Scientists helfen, typische Probleme im gesamten ML-Prozess zu bewältigen. Die Entwurfsmuster verdichten die Erfahrungen von Hunderten von Expert:innen zu klar strukturierten, zugänglichen Best Practices. Das Buch bietet detaillierte Erläuterungen zu 30 Mustern für die Daten- und Problemdarstellung, Operationalisierung, Wiederholbarkeit, Reproduzierbarkeit, Flexibilität, Erklärbarkeit und Fairness. Zu jedem Muster erhält man eine Beschreibung des Problems, eine Vielzahl möglicher Lösungen sowie Empfehlungen, welche Technik die beste für Problemstellungen ist. Aus dem Inhalt:Herausforderungen beim Trainieren, Bewerten und Deployen von ML-Modellen erkennen und überwindenDaten für verschiedene ML-Modelltypen mit Einbettungen, Feature Crosses und mehr darstellenden richtigen Modelltyp für bestimmte Fragestellungen auswähleneine robuste Trainingsschleife mit Checkpoints, Verteilungsstrategie und Hyperparameter-Tuning erstellenskalierbare ML-Systeme deployen, die bei erneutem Training aktuelle Daten berücksichtigenModellvorhersagen für Stakeholder interpretierenModellgenauigkeit, Reproduzierbarkeit, Resilienz und Fairness verbessernAutoren:Valliappa Lakshmanan ist Global Head für Datenanalyse und KI-Lösungen bei Google Cloud. Sara Robinson ist Developer Advocate im Google-Cloud-Team, sie ist spezialisiert auf Machine Learning. Michael Munn ist ML Solutions Engineer bei Google. Er unterstützt Kunden bei der Entwicklung, Implementierung und Bereitstellung von Machine-Learning-Modellen.
Einfach Python
Gleich richtig programmieren lernen - das Profi-Buch von Michael Inden in Erstauflage, November 2021.Endlich programmieren lernen und die ersten Projekte umsetzen. Hierfür bietet sich Python als eine der populärsten Programmiersprachen an. Mit diesem Buch gelingt es mühelos ein Einstieg, denn man wird auf einer Entdeckungsreise vom erfahrenden Trainer Michael Inden begleitet. Er erklärt die Grundlagen der Python-Programmierung leicht und verständlich. Generell wird die trockene Theorie auf ein Minimum reduziert. Ergänzend werden immer wieder auch Python-spezifische Besonderheiten wie Built-in-Funktionen, Slicing, Comprehensions, Generatoren usw. erklärt, die das Entwicklen erleichtern und Programme gleich von Anfang an Python-like, stilistisch schön – kurz Pythonic – machen. Eine große Rolle spielt der interaktive Einstieg mithilfe der Python-Kommandozeile. Damit können kleine Programme direkt ausprobiert werden und Erfolgserlebnisse stellen sich schnell ein. Dieses Vorgehen eignet sich ideal, um sich Python im Selbststudium sowie im eigenen Tempo anzueignen. Allmählich werden die Themen anspruchsvoller und die zu erstellenden Programme größer. Schließlich erfährt man wie man eine Entwicklungsumgebung einsetzen, und lernt die objektorientierte Programmierung kennen. Mit den erworbenen Grundlagen kann man sich immer gezielter mit eigenen Projekten beschäftigen. Erste Ideen liefern drei etwas umfangreichere Programmierbeispiele aus der Praxis, die zudem einen Einblick in das schrittweise, erfolgreiche Entwickeln von Applikationen geben. Das Buch besteht aus in sich abgeschlossenen, aufeinander aufbauenden Kapiteln zu den wesentlichen Bereichen der Programmiersprache Python und den relevanten Sprachelementen. Aufgaben und Musterlösungen runden viele Kapitel ab, sodass Sie das zuvor Gelernte direkt anhand neuer Problemstellungen praktizieren und Ihr Wissen vertiefen können. Zahlreiche kurze Codebeispiele verdeutlichen die Lerninhalte und laden zum Experimentieren ein. Gleich von Anfang an lernen Sie, Ihren Sourcecode sauber zu strukturieren und einen guten Stil zu entwickeln. Dabei hilft ein Kapitel zu Programmierregeln, sogenannten Coding Conventions und zum Testen mit Pytest.Inhalt (PDF-Link)Autor:Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler. Nach seinem Studium in Oldenburg hat er bei diversen internationalen Firmen in verschiedenen Rollen etwa als Softwareentwickler, -architekt, Consultant, Teamleiter, CTO sowie Leiter Academy gearbeitet. Zurzeit ist er freiberuflich als Autor und Trainer in Zürich tätig.Michael Inden hat über zwanzig Jahre Berufserfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und mehreren Java-One-Konferenzen teilgenommen. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen sowie dem Coaching. Sein Wissen gibt er gerne als Trainer in internen und externen Schulungen und auf Konferenzen weiter, etwa bei der JAX/W-JAX, JAX London, Oracle Code One, ch.open sowie bei der Java User Group Switzerland.
Spring Boot
Cloud-native Anwendungen mit Java und Kotlin erstellenMit mehr als 75 Millionen Downloads pro Monat ist Spring Boot das populärste und am weitesten verbreitete Java-Framework. Dank seiner Benutzerfreundlichkeit und Leistungsfähigkeit hat es die Anwendungsentwicklung von Monolith-Architekturen und Microservices revolutioniert. Doch die Einfachheit von Spring Boot kann zunächst auch irritieren. Was brauchen Entwickler:innen, um sofort produktiv zu werden? Dieses praxisorientierte Buch zeigt, wie das Framework genutzt werden kann, um erfolgreich unternehmenskritische Applikationen zu entwickeln. Mark Heckler von VMware, der Firma hinter Spring, leitet durch die Architektur und die Konzepte von Spring Boot und behandelt auch Themen wie Debugging, Testen und Deployment. Wenn man mit Spring Boot schnell und effektiv Cloudnative Java- oder Kotlin-Anwendungen entwickeln will – inklusive reaktiver Programmierung, dem Erstellen von APIs und dem Einrichten von Datenbankzugriffen aller Art – dann ist dieses Buch genau das Richtige. Zielgruppe:Java-Entwickler*innen Autor:Mark Heckler ist Softwareentwickler und Spring Developer Advocat bei VMware. Als Java Champion und Google Developer Expert für Kotlin konzentriert er sich auf die Entwicklung innovativer, produktionsreifer Software für die Cloud. Mark engagiert sich in Open-Source-Projekten und ist Autor und Kurator des Blogs Hecklers in Development, brewing stronger Java (https://thehecklers.com).Aus dem Inhalt:Wie Spring Boot die Entwicklung und das Deployment Cloud-nativer Anwendungen vereinfachtErstellung reaktiver Anwendungen und Erweiterung der Kommunikation über die Netzwerkgrenzen hinaus, um verteilte Systeme zu erstellenWie der Spring-Boot-typische Ansatz die Produktivität steigert und die Portabilität von Anwendungen verbessertDeploying von Spring-Boot-Anwendungen, schnell und zuverlässig für die Arbeitslast in der ProduktivumgebungÜberwachung des Anwendungs- und Systemzustand für optimale Performance und ZuverlässigkeitDebuggen, testen und sichern von Cloud-basierten Anwendungen mit State-of-the-Art-Techniken
Practical Go
YOUR PRACTICAL, HANDS-ON GUIDE TO WRITING APPLICATIONS USING GOGoogle announced the Go programming language to the public in 2009, with the version 1.0 release announced in 2012. Since its announcement to the community, and the compatibility promise of the 1.0 release, the Go language has been used to write scalable and high-impact software programs ranging from command-line applications and critical infrastructure tools to large-scale distributed systems. It’s speed, simplicity, and reliability make it a perfect choice for developers working in various domains.In Practical Go - Building Scalable Network + Non-Network Applications, you will learn to use the Go programming language to build robust, production-ready software applications. You will learn just enough to building command line tools and applications communicating over HTTP and gRPC.This practical guide will cover:* Writing command line applications* Writing a HTTP services and clients* Writing RPC services and clients using gRPC* Writing middleware for network clients and servers* Storing data in cloud object stores and SQL databases* Testing your applications using idiomatic techniques* Adding observability to your applications* Managing configuration data from your applicationsYou will learn to implement best practices using hands-on examples written with modern practices in mind. With its focus on using the standard library packages as far as possible, Practical Go will give you a solid foundation for developing large applications using Go leveraging the best of the language’s ecosystem.AMIT SAHA is a software engineer at Atlassian, located in Sydney, Australia. He has written Doing Math with Python: Use Programming to Explore Algebra, Statistics, Calculus, and More! (No Starch Press, 2015) and Write Your First Program (PHI Learning, 2013). His other writings have been published in technical magazines, conference proceedings, and research journals. He can be found ONLINE AT HTTPS://ECHORAND.MEIntroduction xviiGetting Started xxiCHAPTER 1 WRITING COMMAND-LINE APPLICATIONS 1Your First Application 1Writing Unit Tests 8Using the Flag Package 14Testing the Parsing Logic 20Improving the User Interface 22Removing Duplicate Error Messages 23Customizing Usage Message 24Accept Name via a Positional Argument 25Updating the Unit Tests 28Summary 32CHAPTER 2 ADVANCED COMMAND-LINE APPLICATIONS 33Implementing Sub-commands 33An Architecture for Sub-command-Driven Applications 37Testing the Main Package 43Testing the Cmd Package 45Making Your Applications Robust 47User Input with Deadlines 48Handling User Signals 52Summary 56CHAPTER 3 WRITING HTTP CLIENTS 57Downloading Data 57Testing the Data Downloader 59Deserializing Received Data 61Sending Data 66Working with Binary Data 72Summary 80CHAPTER 4 ADVANCED HTTP CLIENTS 81Using a Custom HTTP Client 81Downloading from an Overloaded Server 81Testing the Time-Out Behavior 85Configuring the Redirect Behavior 88Customizing Your Requests 91Implementing Client Middleware 92Understanding the RoundTripper Interface 93A Logging Middleware 94Add a Header to All Requests 96Connection Pooling 99Configuring the Connection Pool 103Summary 104CHAPTER 5 BUILDING HTTP SERVERS 105Your First HTTP Server 105Setting Up Request Handlers 108Handler Functions 109Testing Your Server 112The Request Struct 114Method 115Url 115Proto, ProtoMajor, and ProtoMinor 116Header 116Host 116Body 116Form, PostForm 116MultipartForm 117Attaching Metadata to a Request 118Processing Streaming Requests 121Streaming Data as Responses 126Summary 132CHAPTER 6 ADVANCED HTTP SERVER APPLICATIONS 133The Handler Type 133Sharing Data across Handler Functions 134Writing Server Middleware 139Custom HTTP Handler Technique 139The HandlerFunc Technique 140Chaining Middleware 142Writing Tests for Complex Server Applications 147Code Organization 147Testing the Handler Functions 153Testing the Middleware 155Testing the Server Startup 157Summary 159CHAPTER 7 PRODUCTION- READY HTTP SERVERS 161Aborting Request Handling 161Strategies to Abort Request Processing 165Handling Client Disconnects 169Server-Wide Time- Outs 173Implement a Time- Out for All Handler Functions 173Implementing Server Time- Out 174Implementing Graceful Shutdown 179Securing Communication with TLS 184Configuring TLS and HTTP/2 184Testing TLS Servers 188Summary 192CHAPTER 8 BUILDING RPC APPLICATIONS WITH GRPC 193gRPC and Protocol Buffers 193Writing Your First Service 197Writing the Server 198Writing a Client 203Testing the Server 207Testing the Client 211A Detour into Protobuf Messages 214Marshalling and Unmarshalling 214Forward and Backward Compatibility 219Multiple Services 220Error Handling 226Summary 228CHAPTER 9 ADVANCED GRPC APPLICATIONS 229Streaming Communication 229Server- Side Streaming 230Client- Side Streaming 237Bidirectional Streaming 239Receiving and Sending Arbitrary Bytes 247Implementing Middleware Using Interceptors 256Client- Side Interceptors 257Server- Side Interceptors 263Wrapping Streams 269Chaining Interceptors 271Summary 272CHAPTER 10 PRODUCTION- READY GRPC APPLICATIONS 275Securing Communication with TLS 275Robustness in Servers 278Implementing Health Checks 278Handling Runtime Errors 286Aborting Request Processing 289Robustness in Clients 297Improving Connection Setup 298Handling Transient Failures 300Setting Time- Outs for Method Calls 305Connection Management 306Summary 309CHAPTER 11 WORKING WITH DATA STORES 311Working with Object Stores 312Integration with Package Server 313Testing Package Uploads 323Accessing Underlying Driver Types 325Working with Relational Databases 327Integration with Package Server 328Testing Data Storage 339Data Type Conversions 343Using Database Transactions 346Summary 348Appendix A Making Your Applications Observable 349Logs, Metrics, and Traces 349Emitting Telemetry Data 352Command- Line Applications 352HTTP Applications 360gRPC Applications 364Summary 366Appendix B Deploying Applications 367Managing Configuration 367Distributing Your Application 370Deploying Server Applications 372Summary 373Index 375
Design Patterns in Modern C++20
Apply the latest editions of the C++ standard to the implementation of design patterns. As well as covering traditional design patterns, this book fleshes out new design patterns and approaches that will be useful to modern C++ developers. Author DMITRI NESTERUK presents concepts as a fun investigation of how problems can be solved in different ways, along the way using varying degrees of technical sophistication and explaining different sorts of trade-offs.Design Patterns in Modern C++20, Second Edition also provides a technology demo for modern C++, showcasing how some of its latest features (e.g., coroutines, modules and more) make difficult problems a lot easier to solve. The examples in this book are all suitable for putting into production, with only a few simplifications made in order to aid readability.WHAT YOU WILL LEARN* Use creational patterns such as builder, factories, prototype and singleton* Implement structural patterns such as adapter, bridge, decorator, facade and more* Work with the behavioral patterns such as chain of responsibility, command, iterator, mediator and more* Apply functional design patterns such as the Maybe MonadWHO THIS BOOK IS FORThis book is for both beginner and experienced C++ developers.DMITRI NESTERUK is a quantitative analyst, developer, course and book author, and an occasional conference speaker. His interests lie in software development and integration practices in the areas of computation, quantitative finance and algorithmic trading. His technological interests include C# and C++ programming as well high-performance computing using technologies such as CUDA and FPGAs. He has been a C# MVP since 2009.1. IntroductionPart- I: Creational Patterns2. Builder3. Factories4. Prototype5. SingletonPart- II: Structural Patterns6. Adapter7. Bridge8. Composite9. Decorator10. Façade11. Flyweight12. ProxyPart- III: Behavioral Patterns13. Chain of Responsibility14. Command15. Interpreter16. Iterator17. Mediator18. Memento19. Null Object20. Observer21. State22. Strategy23. Template Method24. Visitor
Learn to Program with Assembly
Many programmers have limited effectiveness because they don't have a deep understanding of how their computer actually works under the hood. In Learn to Program with Assembly, you will learn to program in assembly language - the language of the computer itself.Assembly language is often thought of as a difficult and arcane subject. However, author Jonathan Bartlett presents the material in a way that works just as well for first-time programmers as for long-time professionals. Whether this is your first programming book ever or you are a professional wanting to deepen your understanding of the computer you are working with, this book is for you. The book teaches 64-bit x86 assembly language running on the Linux operating system. However, even if you are not running Linux, a provided Docker image will allow you to use a Mac or Windows computer as well.The book starts with extremely simple programs to help you get your grounding, going steadily deeper with each chapter. At the end of the first section, you will be familiar with most of the basic instructions available on the processor that you will need for any task. The second part deals with interactions with the operating system. It shows how to make calls to the standard library, how to make direct system calls to the kernel, how to write your own library code, and how to work with memory. The third part shows how modern programming language features such as exception handling, object-oriented programming, and garbage collection work at the assembly language level.Additionally, the book comes with several appendices covering various topics such as running the debugger, vector processing, optimization principles, a list of common instructions, and other important subjects.This book is the 64-bit successor to Jonathan Bartlett's previous book, Programming from the Ground Up, which has been a programming classic for more than 15 years. This book covers similar ground but with modern 64-bit processors, and also includes a lot more information about how high level programming language features are implemented in assembly language.WHAT YOU WILL LEARN* How the processor operates * How computers represent data internally * How programs interact with the operating system* How to write and use dynamic code libraries* How high-level programming languages implement their features WHO THIS BOOK IS FORAnyone who wants to know how their computer really works under the hood, including first time programmers, students, and professionals.JONATHAN BARTLETT is a software developer, researcher, and writer. His first book, Programming from the Ground Up, has been required reading in computer science programs from DeVry to Princeton. He has been the sole or lead author for eight books on topics ranging from computer programming to calculus. He is a technical lead for ITX, where his specialty is getting stuck projects unstuck.Chapter 1: IntroductionChapter 2: The Truth About ComputersPart I: Assembly Language BasicsChapter 3: Your First ProgramChapter 4: Registers and Simple ArithmeticChapter 5: Comparison, Branching and LoopingChapter 6: Working with Data in MemoryChapter 7: Data RecordsChapter 8: Signed Numbers and Bitwise OperationsChapter 9: More Instructions You Should KnowPart II: Operating System BasicsChapter 10: Making System CallsChapter 11: The Stack and Function CallsChapter 12: Calling Functions from LibrariesChapter 13: Common and Useful Assembler DirectivesChapter 14: Dynamic Memory AllocationChapter 15: Dynamic LinkingPart III: Programming Language TopicsChapter 16: Basic Language Features Represented in Assembly LanguageChapter 17: Tracking Memory AllocationsChapter 18: Object-Oriented ProgrammingChapter 19: Conclusion and AcknowlegmentsPart IV: AppendicesAppendix A: Getting Set Up with DockerAppendix B: The Command LineAppendix C: Debugging with GDBAppendix D: Nasm (Intel) Assembly Language SyntaxAppendix E: Common x86-64 InstructionsAppendix F: Floating Point NumbersAppendix G: The Starting State of the StackAppendix H: ASCII, Unicode, and UTF-8Appendix I: OptimizationAppendix J: A Simplified Garbage CollectorAppendix K: Going to an Even Lower Level
Beginning jOOQ
Learn to use the jOOQ library to manage SQL database operations in Java and JVM applications. This book walks you through what JOOQ is, how to install and get started with it, and then gets you working with it.Practical examples and case studies demonstrate how jOOQ offers a more efficient and versatile alternative to Object-Relational Mapping frameworks like Hibernate and JPA, while providing a natural, native-SQL feeling for the developer. You'll see how to maximize the full potential of your SQL database with advanced query syntax and functions with this lightweight, SQL-friendly framework. Come see how you can use high performance approaches like reactive, data streaming and cloud-native programming to get data from SQL tables.Never write another incorrect SQL statement again and protect your application from SQL injection with the strong typing and inbuilt controls in jOOQ. Learn how to add jOOQ to your existing Hibernate, Spring Boot or Quarkus applications.When you’ve completed this book, you will be able to take the knowledge you’ve gained, along with the freely available source code, and directly apply them to your own work.WHAT YOU WILL LEARN* Comparing equivalent features between Hibernate, JPA and jOOQ* Unlock the power of your SQL database with high performing, flexible and typesafe SQL queries* Seamlessly work with many different SQL database vendors without changing your code* Effortlessly generate Java code based on the content of your database* Write reactive SQL database access code with R2DBC* Integrating jOOQ into popular frameworks and platforms like Hibernate, Spring boot and Quarkus tools like IDEs* Testing jOOQ-based code with modern integration testing frameworks like TestContainers and Docker* Learn how to safely handle data access code within frameworks like the Java Persistence API (JPA)WHO THIS BOOK IS FORIntermediate Java programmers new to jOOQ. Some prior experience with SQL may be helpful but not required.Tayo Koleoso is the Founder and CEO of LettuceWork.io, the platform dedicated to engineering culture. He created the Better Managed Development method for building and sustaining an effective product engineering culture. He's a lifelong learner, engineer, and engineering leader committed to building people and software in a healthy, sustainable, and effective ecosystem. Outside of tech, comedy is the only thing he consumes in large quantity. King of the Hill, Peep Show and 30 Rock are his comfort telly, I tell you what.He got his start in software engineering as a teenage database programmer with Oracle 8i. The jOOQ platform is therefore a natural fit and a return to his roots: his love affair with SQL.1. Welcome to jOOQ – Gives the reader a high-level overview of the jOOQ platform, the goals, features and a comparison with alternatives.• Database Operations in Java – the good parts• Database Operations in Java – the...not-good parts• You have got to be jOOQing• jOOQ Feature Tour2. Getting Started with jOOQ – Provides a crash course in core features of jOOQ• Setup jOOQ• CRUD with jOOQ◦ Lazy◦ Reactive• Transactions• Configuration• Exception Handling• Logging• Packaging and deployment◦ Maven◦ Gradle3. Working with jOOQ – This gives a guided tour of implementing specific features with jOOQ• Data Type Handling• Generating Artifacts• Advanced Database Manipulation◦ Batch Processing▪ Batch Loading▪ Batch Inserts• Advanced Query Syntax Support• SQL Joins• Database Functions• Stored Procedures4. jOOQ integrations - This shows the reader how jOOQ can be combined with specific tools, libraries and platforms• Java Persistence API• Hibernate• Spring Framework• Spring Data JPA5. Testing jOOQ – This will show the user how to execute unit and integration tests in jOOQ
Beginning Hibernate 6
Get started with Hibernate, an open source Java persistence layer and gain a clear introduction to the current standard for object-relational persistence in Java. This updated edition includes the new Hibernate 6.0 framework which covers new configuration, new object relational mapping changes, and enhanced integration with the more general Spring, Boot and Quarkus and other Java frameworks.The book keeps its focus on Hibernate without wasting time on nonessential third-party tools, so you’ll be able to immediately start building transaction-based engines and applications. Experienced authors Joseph Ottinger with Dave Minter and Jeff Linwood provide more in-depth examples than any other book for Hibernate beginners. They present their material in a lively, example-based manner—not a dry, theoretical, hard-to-read fashion.WHAT YOU'LL LEARN* Build enterprise Java-based transaction-type applications that access complex data with Hibernate* Work with Hibernate 6 using a present-day build process* Integrate into the persistence life cycle* Search and query with the new version of Hibernate* Keep track of versioned data with Hibernate EnversWHO THIS BOOK IS FORProgrammers experienced in Java with databases (the traditional, or connected, approach), but new to open-source, lightweight Hibernate.JOSEPH B. OTTINGER is an expert software developer, coder and programmer. He has also served as technology evangelist GigaSpaces and a principle engineer at Red Hat. He was Editor in Chief of TheServerSide-dot-com. He is the author of Hibernate Recipes and Beginning Hibernate for Apress and has authored other books as well as articles.JEFF LINWOOD has been involved in software programming since he had a 286 in high school. He got caught up with the Internet when he got access to a UNIX shell account, and it has been downhill ever since. Jeff has published articles on several Jakarta Apache open source projects in Dr. Dobb's Journal, CNET's Builder.com, and JavaWorld. Jeff also co-authored Professional Struts Applications, Building Portals with the Java Portlet API, and Pro Hibernate 3. He was a technical reviewer for Enterprise Java Development on a Budget and Extreme Programming with Ant.DAVE MINTER has adored computers since he was small enough to play in the boxes they came in. He built his first PC from discarded, faulty, and obsolete components, and considers that to be the foundation of his career as an integration consultant. Dave is based in London, where he helps large and small companies build systems that "just work." He co-authored Building Portals with the Java Portlet API and Pro Hibernate 3.* An Introduction to Hibernate 5* Integrating and Configuring Hibernate * Building a Simple Application * The Persistence Life Cycle * An Overview of Mapping * Mapping with Annotations * JPA Integration and Lifecycle Events* Using the Session * Searches and Queries * Advanced Queries Using Criteria * Filtering the Results of Searches * Leaving the Relational Database Behind: NoSQL* Hibernate Envers* Using with Spring and Boot Frameworks* Using with Quarkus/Other Frameworks
Java 17 Quick Syntax Reference
Quickly gain the insight necessary to address a multitude of Java coding challenges using this succinct reference guide, Java 17 Quick Syntax Reference, Third Edition. Short, focused code examples will help you learn and master various existing and new Java source code elements.This edition includes the following additions to Java SE and OpenJDK, through Java 17: Pattern matching for switch and instanceof, Sealed classes and interfaces, Switch expressions, Text block multiline strings, Java module system, Private methods in interfaces, and Type inference for local variables.You won’t find any technical jargon, bloated samples, drawn out history lessons or witty stories in this book. What you will find is a language reference that is concise, to the point and highly accessible. The book is packed with useful information and is a must-have for any Java programmer.WHAT YOU WILL LEARN* Run a Java file with a single command* * Learn what a switch expression is and how to use it* Use pattern matching* Code with Java modules* Create text blocks to handle multiline strings* Learn what sealed classes are and how to use these and moreWHO THIS BOOK IS FORThose with prior experience with Java who want a quick and handy reference. Mikael Olsson is a professional web entrepreneur, programmer, and author. He works for an R&D company in Finland where he specializes in software development. In his spare time he writes books and creates websites that summarize various fields of interest. The books he writes are focused on teaching their subject in the most efficient way possible, by explaining only what is relevant and practical without any unnecessary repetition or theory. 1. HelloWorld2. Compile and Run3. Variables4. Operators5. String6. Arrays7. Conditionals8. Loops9. Methods10. Class11. Stack12. Inheritance13. Overriding14. Packages15. Access Levels16. Constants17. Interface18. Abstract19. Enum20. Exception Handling21. Boxing and Unboxing22. Generics23. Modules
Go for Java Programmers
Get an in-depth introduction to the Go programming language and its associated standard runtime libraries. This book is targeted towards programmers that already know the Java programming language and uses that Java knowledge to direct the learning of Go. You will get a deep understanding of the Go language and obtain a good introduction to the extensive Go standard libraries.This book teaches Go through clear descriptions of Go features, contrasting them with similar Java features and via providing extensive code examples. After reading this book you will be knowledgeable enough about Go and its libraries to begin doing effective programming using the Go language.Go for Java Programmers is structured more like a tutorial than a reference document. It covers key features of Go, but not every little detail as a reference might. Its goal is to get you competent enough in Go and its runtime that you can begin to effectively write Go programs.WHAT YOU WILL LEARN* Examine the key Go Runtime libraries and how they compare to Java libraries* See when it is appropriate to use the Go language instead of the Java language* Read and understand programs written in Go* Write many programs in Go* Determine when Go is an appropriate language to develop applications in* Discover how the Go and Java languages and development experience compare and contrastWHO THIS BOOK IS FORPrimarily existing professional Java programmers or students that already know something about Java. A basic understanding of Java is expected. Some basic programming experience with imperative languages is expected.BARRY FEIGENBAUM has decades of software engineering experience. Over his career, he has worked for major industry-leading companies such as IBM and Amazon, and is currently at Dell where he is a Senior Principal Software Engineer. He has worked on mainframe and midrange servers and many applications for personal computers. He has developed software products in many key industry languages, such as assemblers for multiple hardware architectures, C/C++/C#, Python, JavaScript, Java and now Go. He has extensive experience in the full software development lifecycle. Most recently, he has committed himself to leading teams developing mission-critical microservices, most often written in Go, that operate in large clustered environments.He led the early development of the LAN support inside Microsoft Windows (he defined the SMB protocol that is the basis for both the CIFS and the SAMBA technologies). He has served as a software tester, developer and designer as well as a development team lead, architect and manger on multiple occasions. He was a key contributor as a developer, architect and manager to several releases of PC-DOS and OS/2. In these roles, he worked extensively with Microsoft on joint requirements, design, and implementation.Dr. Feigenbaum has a Ph. D. in Computer Engineering with a concentration in OO software design and other degrees in Electrical Engineering. He has published multiple articles in technical magazines and juried journals. He coauthored several books on IBM PC-DOS. He has spoken at numerous technical conferences, such as JavaOne. He has served on industry standard bodies. He taught multiple college level courses on data structures, software engineering and distributed software as an adjunct professor at several universities. He has over twenty issued US patents.He is married, has one son, and lives in Austin, TX.Part I: First look at GoChapter 1: A Brief Look at Go vs. JavaChapter 2: What Java has that Go does notChapter 3: A Deeper Comparison of Go and JavaPart 2: The Go LanguageChapter 4: Key Go AspectsChapter 5: Go Basic FeaturesChapter 6: Go TypesChapter 7: Errors and PanicsChapter 8: Go StatementsChapter 9: Applications for interfacesChapter 10: Go Unit Tests and BenchmarksChapter 11: Going into the FuturePart 3: Go Library SurveyChapter 12: Key Packages ComparisonChapter 13: Key Method/Function ComparisonChapter 14: Go Package SurveyChapter 15: SQL Database AccessChapter 16: Client and Server SupportChapter 17: Go RuntimeAppendix A. Installing GoAppendix B: Some Go FAQsAppendix C: Go Gotchas to look out forAppendix D: Mark-Sweep Pseudo-codeAppendix E: ASCII vs. UTF-8
Job Ready Python
GET READY TO TAKE ON PYTHON WITH A PRACTICAL AND JOB-FOCUSED GUIDEJob Ready Python offers readers a straightforward and elegant approach to learning Python that emphasizes hands-on and employable skills you can apply to real-world environments immediately.Based on the renowned mthree Global Academy and Software Guild training program, this book will get you up to speed in the basics of Python, loops and data structures, object-oriented programming, and data processing. You’ll also get:* Thorough discussions of Extract, Transform, and Load (ETL) scripting in Python * Explorations of databases, including MySQL, and MongoDB—all commonly used database platforms in the field * Simple, step-by-step approaches to dealing with dates and times, CSV files, and JSON files Ideal for Python newbies looking to make a transition to an exciting new career, Job Ready Python also belongs on the bookshelves of Python developers hoping to brush up on the fundamentals with an authoritative and practical new handbook.HAYTHEM BALTI, PHD, is the associate dean at Wiley’s mthree academy. He has created courses used by thousands of Software Guild and mthree alumni to learn Go, Java, Python, and other development and data science skills.KIMBERLY A. WEISS is a veteran course developer, specializing in Computer Science courses since 2002. She was an assistant professor in Computer Science for over ten years before deciding to focus exclusively on course design. She has worked with multiple universities as well as corporate training settings to develop interactive instructional content appropriate for the target learners and course goals. About the Authors vAbout the Technical Writer vAbout the Technical Editor vAcknowledgments viIntroduction xviiPART I: GETTING STARTED WITH PYTHON 1LESSON 1: SETTING UP A PYTHON PROGRAMMING ENVIRONMENT 3Python Overview 4Using Replit Online 4Getting Started with Jupyter Notebook 14A Quick Look at Visual Studio Code 21Using Python from the Command Line 24Summary 26Exercises 26LESSON 2: UNDERSTANDING PROGRAMMING BASICS 29The Future of Computer Programming 30Programming Languages 32Data Types and Variables 37Variables 40Constants 44Summary 46Exercises 46LESSON 3: EXPLORING BASIC PYTHON SYNTAX 49Using with Single- Line Commands 51Using Semicolons 52Continuing with Backslash 54Working with Case Structure 55Adding Comments 56Using the Input Function 57Storing Input 59Understanding Variable Types 61Displaying Variable Values 62Naming Variables 64Summary 65Exercises 65LESSON 4: WORKING WITH BASIC PYTHON DATA TYPES 69Review of Data Types 70Number Data Types 70Identifying Data Types 72Mathematical Operations 74Pemdas 77Common Math Functions 81Math Library Functions 83Using Numbers with User Input 86Boolean Types and Boolean Operations 89Logic Operations 92Comparative Operators 95Summary 96Exercises 97LESSON 5: USING PYTHON CONTROL STATEMENTS 101Control Structures Review 101Understanding Sequence Control Structure 102Understanding Selection Statements 103Understanding Conditional Statements 106If- Else Statements 108Working with Nested Conditions 109Embedding Conditions 112Summary 114Exercises 114LESSON 6: PULLING IT ALL TOGETHER: INCOME TAX CALCULATOR 117Getting Started 118Step 1: Gather Requirements 118Step 2: Design the Program 120Step 3: Create the Inputs 120Step 4: Calculate the Taxable Income 122Step 5: Calculate the Tax Rate 124Step 6: Update the Application 133Step 7: Address the UI 136On Your Own 139Summary 139PART II: LOOPS AND DATA STRUCTURES 141LESSON 7: CONTROLLING PROGRAM FLOW WITH LOOPS 143Iterations Overview 144The Anatomy of a Loop 144The for Loop 145The while Loop 146for vs. while Loops 149Strings and String Operations 151Iterating through Strings 164Summary 167Exercises 167LESSON 8: UNDERSTANDING BASIC DATA STRUCTURES: LISTS 173Data Structure Overview—Part 1 174Creating Lists 175Determining List Length 179Working with List Indexes 179Negative Indexing in Lists 182Slicing Lists 184Adding Items to a List 189Inserting List Items 190Removing List Items 192Concatenating Lists 196List Comprehension 197Sorting Lists 199Copying Lists 200Summary 202Exercises 202LESSON 9: UNDERSTANDING BASIC DATA STRUCTURES: TUPLES 205Tuples and Tuple Operations 206Tuple Index Values 209Negative Indexing in Tuples 210Slicing Tuples 212Immutability 213Concatenating Tuples 216Searching Tuples 217Summary 218Exercises 219LESSON 10: DIVING DEEPER INTO DATA STRUCTURES: DICTIONARIES 223Data Structure Overview— Part 2 224Getting Started with Dictionaries 224Generating a Dictionary 227Retrieving Items from a Dictionary 230Using the keys() Method 233Using the items() Method 234Reviewing the keys(), values(), and items() Methods 236Using the get() Method 239Using the pop() Method 241Working with the in Operator 245Updating a Dictionary 246Duplicating a Dictionary 249Clearing a Dictionary 254Summary 255Exercises 255LESSON 11: DIVING DEEPER INTO DATA STRUCTURES: SETS 259Sets 260Retrieving Items from a Set 261Adding Items to a Set 262Creating an Empty Set 262Understanding Set Uniqueness 263Searching Items in a Set 265Calculating the Length of a Set 267Deleting Items from a Set 268Clearing a Set 270Popping Items in a Set 272Deleting a Set 273Determining the Difference Between Sets 274Intersecting Sets 277Combining Sets 278Summary 279Exercises 279LESSON 12: PULLING IT ALL TOGETHER: PROMPTING FOR AN ADDRESS 283Step 1: Getting Started 284Step 2: Accept User Input 285Step 3: Display the Input Value 286Step 4: Modify the Output 287Step 5: Split a Text Value 288Step 6: Display Only the House Number 290Step 7: Display the Street Name 291Step 8: Add the Period 292Summary 293LESSON 13: ORGANIZING WITH FUNCTIONS 295Functions Overview 295Defining Functions in Python 296Function Syntax 300Default Input Values 301Parameter Syntax 303Arbitrary Arguments 304Keyword Arguments 306Arbitrary Keyword Arguments 306Summary 308Exercises 309PART III: OBJECT- ORIENTED PROGRAMMING IN PYTHON 311LESSON 14: INCORPORATING OBJECT- ORIENTED PROGRAMMING 313Object- Oriented Programming Overview 314Defining Classes 314Creating Objects 316Working with Methods 319Class Attributes 324Summary 330Exercises 330LESSON 15: INCLUDINGInheritance 333Understanding Inheritance 334Creating a Parent Class 335Creating a Child Class 335Inheriting at Multiple Levels 338Overriding Methods 340Summary 343Exercises 344LESSON 16: PULLING IT ALL TOGETHER: BUILDING A BURGER SHOP 349Requirements for Our Application 350Plan the Code 350Create the Classes 351Create the Food Item Class 352Create the Main File 357Display the Output 364Tie the Code Files Together 364Summary 368PART IV: DATA PROCESSING WITH PYTHON 369LESSON 17: WORKING WITH DATES AND TIMES 371Getting Started with Dates and Times 372Getting the Current Date and Time 376Splitting a Date String 377Using datetime Attributes 379Creating Custom datetime Objects 380Compare datetime Values 381Working with UTC Format 383Applying Timestamps 384Arithmetic and Dates 387Calculating the Difference in Days 388Using Date without Time 390Using Time without Date 392Summary 394Exercises 394Calculator 1: Time Duration 396Calculator 2: Add or Subtract Time from a Date 397Calculator 3: Age Calculator 397LESSON 18: PROCESSING TEXT FILES 399File Processing Overview 401Introduction to File Input/Output 402Processing Text Files 404Opening a File 404Reading Text from a File 406Add Content to a File 412Overwriting the Contents of a File 415Creating a New File 417Using the os Module 418Deleting a File 419Summary 421Exercises 421LESSON 19: PROCESSING CSV FILES 425Reading CSV Files 426Using the DictReader Class 430Creating a Dataset List 432Using writerow() 434Appending Data 436Writing Rows as Lists 439Writing Rows from Dictionaries 440Summary 444Exercises 444LESSON 20: PROCESSING JSON FILES 447Processing JSON Files 448Creating a JSON File with dump() 448Converting to JSON with dumps() 449Formatting JSON Data 450Using json.loads() 452Iterating through JSON Data 454Reading and Writing JSON Data 457Summary 460Exercises 461PART V: DATA ANALYSIS AND EXCEPTION HANDLING 465LESSON 21: USING LAMBDAS 467Creating a Lambda Function 468Working with Multiple Inputs 469Placing Lambda Functions inside a Function 471Using the map() Function 472Combining Map and Lambda Functions 475Using the filter() Function 477Combining a Filter and a Lambda 479Using the reduce() Function 480Summary 486Exercises 486LESSON 22: HANDLING EXCEPTIONS 491Built- In Exceptions 492Working with try and except 493Working with Multiple Excepts 495Combining Exception Types 498Using Multiple Operations in a try 500Using the raise Keyword 501Exploring the General Exception Classes 502Adding finally 505Summary 506Exercises 506LESSON 23: PULLING IT ALL TOGETHER: WORD ANALYSIS IN PYTHON 511Examine the Data 512Read the Data 514Tokenize the Dataset 517Count the Words in Each Review 524Summary 528LESSON 24: EXTRACTING, TRANSFORMING, AND LOADING WITH ETL SCRIPTING 531ETL Scripting in Python 532Design and Implement Custom ETL Scripts 532The extract Class 534The transform Class 546The load Class 569Summary 582Exercises 582LESSON 25: IMPROVING ETL SCRIPTING 585Converting to Static Methods for the extract Class 586Converting to Static Methods for the transform Class 588Summary 607Exercises 608PART VI: APPENDICES 611APPENDIX A: FLOWCHARTS 613Flowchart Basics 613Common Flowcharting Shapes 615APPENDIX B: CREATING PSEUDOCODE 621What Is Pseudocode? 621APPENDIX C: INSTALLING MYSQL 623MySQL Installation 623Verify the Installation 628The MySQL Notifier 630APPENDIX D: INSTALLING VINYL DB 631Database Structure 631Create the Database 632APPENDIX E: INSTALLING MONGODB 637Installing MongoDB Community Server 637Running MongoDB 642APPENDIX F: IMPORTING TO MONGODB 643Index 645
Pro Data Visualization Using R and JavaScript
Use R 4, RStudio, Tidyverse, and Shiny to interrogate and analyze your data, and then use the D3 JavaScript library to format and display that data in an elegant, informative, and interactive way. You will learn how to gather data effectively, and also how to understand the philosophy and implementation of each type of chart, so as to be able to represent the results visually.With the popularity of the R language, the art and practice of creating data visualizations is no longer the preserve of mathematicians, statisticians, or cartographers. As technology leaders, we can gather metrics around what we do and use data visualizations to communicate that information. Pro Data Visualization Using R and JavaScript combines the power of the R language with the simplicity and familiarity of JavaScript to display clear and informative data visualizations.Gathering and analyzing empirical data is the key to truly understanding anything. We can track operational metrics to quantify the health of our products in production. We can track quality metrics of our projects, and even use our data to identify bad code. Visualizing this data allows anyone to read our analysis and easily get a deep understanding of the story the data tells. This book makes the R language approachable, and promotes the idea of data gathering and analysis mostly using web interfaces.WHAT YOU WILL LEARN* Carry out data visualization using R and JavaScript* Use RStudio for data visualization * Harness Tidyverse data pipelinesApply D3 and R Notebooks towards your data * Work with the R Plumber API generator, Shiny, and moreWHO THIS BOOK IS FORProgrammers and data scientists/analysts who have some prior experience with R and JavaScript.Tom Barker is an engineer, a professor and an author. Currently he is Sr Manager of Web Development at Comcast, and an instructor at Philadelphia University. He has authored several books on web development including Pro JavaScript Performance: Monitoring and Visualization, and Pro Data Visualization with JavaScript and R.Matthew Campbell has worked on data visualization and dashboards with a data science team using RStudio. He got his start with technology after college when he learned SAS to do statistical programming at the Educational Testing Service (ETS). Learning this programming language kicked off a lifelong obsession with technology.1. Exploring Data Visualization2. RStudio3. Tidyverse Data Pipelines4. Data Visualization with D35. Comparing Groups with Bar Charts6. Correlation Analysis with Scatter Plots7. Datetime Trend Data with Line Charts8. Visual Presentations with D3 and R Notebooks9. Interactive Dashboards with D3 and Shiny10. Visualization on the Web with D3 and R Plumber API Generator
JavaScript - Das umfassende Handbuch
Das Lehr- und Nachschlagewerk zu JavaScript!Ein umfassender Einstieg in JavaScript, viele praktische Beispiele und eine Darstellung auch von professionellen Techniken – das zeichnet dieses unverzichtbare Handbuch aus. Lernen Sie JavaScript von Grund auf und nutzen Sie dieses Buch als Nachschlagewerk für die tägliche Entwicklungsarbeit. Auch fortgeschrittene Aspekte wie Objektorientierung und funktionale Programmierung werden berücksichtigt. Die schnellen und praxisnahen Beispielanwendungen können Sie sofort in eigenen Projekten einsetzen. Nebenbei erfahren Sie mehr über aktuelle Trends und Entwicklungen, z. B. den Einsatz bei Mikrocontrollern und den serverseitigen Einsatz von JavaScript (Node.js). Aus dem Inhalt: Grundlagen und SprachkernMit Referenztypen arbeitenWebseiten dynamisch verändernEreignisse verarbeiten und auslösenFormulare verarbeitenBrowserinformationen verarbeitenSeiteninhalte dynamisch verarbeitenAufgaben vereinfachen mit jQueryBilder dynamisch erstellenModerne Web-APIs verwendenObjektorientierte ProgrammierungFunktionale Programmierung Autor: Philip Ackermann ist CTO der Cedalo GmbH und Autor mehrerer Fachbücher und Fachartikel über Java und JavaScript. Seine Schwerpunkte liegen in der Konzeption und Entwicklung von Node.js- und JEE-Projekten in den Bereichen Industrie 4.0 und Internet of Things. Leseprobe (PDF-Link)
Java Übungsbuch (2. Auflage)
Aufgaben mit vollständigen Lösungen für die Versionen Java 8 bis Java 17.Dieses Buch ist kein Lehrbuch, sondern ein reines Übungsbuch und wendet sich an Leser, die ihre Java-Kenntnisse anhand zahlreicher praktischer Übungen durch „Learning by Doing“ vertiefen und festigen möchten. Es ist ideal, um sich auf Prüfungen vorzubereiten oder das Programmieren mit Java praktisch zu üben.Jedes Kapitel beginnt mit einer kompakten Zusammenfassung des Stoffs, der in den Übungsaufgaben dieses Kapitels verwendet wird. Anschließend haben Sie die Möglichkeit, zwischen Aufgaben in drei verschiedenen Schwierigkeitsstufen – von einfach bis anspruchsvoll – zu wählen. Anhand dieser Aufgaben können Sie Ihr Wissen praktisch testen. Am Ende der Kapitel finden Sie vollständige und kommentierte Musterlösungen.Es werden folgende Themen abgedeckt:Die Kapitel 1 bis 3 enthalten Aufgaben zur objektorientierten Programmierung mit Java und die Neuerungen aus den Versionen 8 bis 13, die sich auf die neue Date&Time API, Textblöcke, Compact Strings und die Weiterentwicklung von Interfaces beziehen.In Kapitel 4 geht es im Detail um Generics und das Collection Framework mit all seinen generischen Klassen und Interfaces sowie mit der Definition von Enumerationen. Kapitel 5 erläutert das Exception Handling.Das Kapitel 6 beschäftigt sich mit den neuen Sprachmitteln von Java 8, Lambdas und Streams, sowie mit weiteren Neuerungen aus den Versionen 8 bis 13 wie Switch Expressions und Local Variable Type Inference.Kapitel 7 bietet einen Einblick in die mit Java 9 vorgenommene Modularisierung der Java-Plattform.Kapitel 8 enthält Aufgaben zu den Weiterentwicklungen aus den Versionen 14 bis 17, die sich auf die Java-Programmiersprache beziehen, dazu gehören die Einführung von Records und Sealed Classes sowie das Pattern Matching.Kapitel 9 enthält viele Aufgaben zu Tests mit JUnit 5 und Gradle sowie eine kurze theoretische Einführung in beide Systeme.Nach dem Durcharbeiten des Buches verfügen Sie über fundierte Programmierkenntnisse und einen umfangreichen Fundus an Beispielcode.Aus dem Inhalt:Klassendefinition und ObjektinstanziierungAbgeleitete Klassen und VererbungAbstrakte Klassen und InterfacesDie Definition von AnnotationenInnere KlassenGenerics und ReflectionTypprüfung und Typsicherheit in JavaLambdasMethoden- und Konstruktor-ReferenzenFunktionale InterfacesLocal Variable Type InferenceDefinition und Nutzung von StreamsDas Modulsystem von JavaRecords und Sealed TypesPattern Matching für den instanceof-OperatorPattern Matching für switchTests mit Junit 5 und Gradle
UML 2.5 - Das umfassende Handbuch
Von den Grundlagen bis zum professionellen Einsatz – in unserem Handbuch erfahren Sie alles, was Sie für erfolgreiche Softwaremodellierung mit der UML wissen müssen. Lernen Sie alle Konzepte, Elemente und Diagrammtypen ausführlich kennen und knüpfen Sie anhand von Praxisbeispielen die Verbindung zum Code. Ob Sie etwas nachschlagen oder die UML von Grund auf verstehen möchten, dieses Handbuch bietet Ihnen das gesammelte UML-Wissen im Komplettpaket. Aus dem Inhalt:Grundlagen der UMLDiagrammtypen und NotationselementeDos and Don'ts der SoftwaremodellierungUML mit Java und C#A2-Poster mit DiagrammtypenBeispiele zum DownloadAutoren: Christoph Kecher ist Chief Information Officer (CIO) bei der HSBC Deutschland. Seine Tätigkeitsbereiche umfassen Data Warehouse-Technologien, Java, .NET, UML und Software-Qualitätssicherung. Ralf Hoffmann-Elbern hat schon früh die Softwareentwicklung für sich entdeckt. Nach dem Studium der Physik und einem Ausflug ins Lehramt hat er dieses Hobby zum Beruf gemacht. Torsten T. Will beschäftigte sich schon während seines Diploms in Informatik mit Programmiersprachen und ihren Konzepten. Leseprobe (PDF - Link)
Einstieg in Kotlin - Apps entwickeln mit Android Studio (2. Auflage)
Einfach und strukturiert ohne Vorkenntnisse Kotlin lernen. Mit IntelliJ IDEA lernen Sie die Sprache kennen und steigen dann in die App-Entwicklung mit Android Studio ein – so entwickeln Sie eigene Apps samt Zugriff auf verschiedenste Sensoren, Datenbanken und Multimedia. Kotlin ist Googles bevorzugte Sprache für die App-Entwicklung und zu Recht beliebt: Nicht nur Java-Kenner werden an den modernen Sprach-Features ihre Freude haben. Und für Programmierer ist Kotlin genau das Richtige für den Einstieg in die App-Entwicklung. Aus dem Inhalt:Alle Grundlagen der ProgrammierungIntelliJ IDEA und Android Studio installierenVerzweigungen, Schleifen und Co.Funktionen und funkionale ProgrammierungLayouts und Menüs aufbauenStandard-DialogeSensoren nutzenSystemdienste integrierenSpiele und Trainings entwickelnDatenbanken zur SpeicherungGestensteuerungZugriffsrechte verwaltenAutor: Thomas Theis ist Dipl.-Ing. Technische Informatik. Als Softwareentwickler verfügt er über langjährige Erfahrung, ebenso als IT-Dozent, unter anderem an der Fachhochschule Aachen. Als Kenner vieler verschiedener Programmiersprachen leitet er Seminare zur Programmierung und ist Autor vieler erfolgreicher Fachbücher. Leseprobe (PDF Link)
UML 2.5
Von den Grundlagen bis zum professionellen Einsatz – in unserem Handbuch erfahren Sie alles, was Sie für erfolgreiche Softwaremodellierung mit der UML wissen müssen. Lernen Sie alle Konzepte, Elemente und Diagrammtypen ausführlich kennen und knüpfen Sie anhand von Praxisbeispielen die Verbindung zum Code. Ob Sie etwas nachschlagen oder die UML von Grund auf verstehen möchten, dieses Handbuch bietet Ihnen das gesammelte UML-Wissen im Komplettpaket. Es behandelt den aktuellen Standard UML 2.5 und die Codebeispiele sind in den beiden wichtigsten Sprachen Java und C# verfasst. Aus dem Inhalt: Grundlagen der Softwaremodellierung mit der UML 2.5Alle Diagrammtypen und NotationselementeUML in Projekten einsetzen Implementierungen mit Java oder C#Liste mit den häufigsten Fehlern und Verbesserungsvorschlägen zu jedem DiagrammtypDIN-A2-Poster mit allen DiagrammtypenZum Download auf der Verlagswebsite: Diagramme und Code der gezeigten Beispiele, Übersicht zu UML-Tools und Poster als PDF-Datei Materialien zum Buch ... 13 Vorwort ... 15 1. Einführung ... 19 1.1 ... Weshalb muss Software modelliert werden? ... 19 1.2 ... Die Phasen bei der Softwareentwicklung ... 20 1.3 ... Was ist die UML? ... 22 1.4 ... Die Geschichte der UML ... 23 1.5 ... Von der UML 1.x zur UML 2.5 ... 24 1.6 ... Diagramme der UML 2.5 ... 26 1.7 ... Realisierung in Java und C# ... 33 TEIL I. Strukturdiagramme ... 35 2. Klassendiagramm ... 37 2.1 ... Anwendungsbereiche ... 37 2.2 ... Übersicht ... 38 2.3 ... Notationselemente ... 39 2.4 ... Lesen eines Klassendiagramms ... 111 2.5 ... Irrungen und Wirrungen ... 114 2.6 ... Zusammenfassung ... 116 3. Objektdiagramm ... 121 3.1 ... Anwendungsbereiche ... 121 3.2 ... Übersicht ... 121 3.3 ... Notationselemente ... 122 3.4 ... Lesen eines Objektdiagramms ... 130 3.5 ... Irrungen und Wirrungen ... 131 3.6 ... Zusammenfassung ... 133 4. Kompositionsstrukturdiagramm ... 135 4.1 ... Anwendungsbereiche ... 135 4.2 ... Übersicht ... 135 4.3 ... Notationselemente ... 136 4.4 ... Lesen eines Kompositionsstrukturdiagramms ... 151 4.5 ... Irrungen und Wirrungen ... 152 4.6 ... Zusammenfassung ... 153 5. Komponentendiagramm ... 155 5.1 ... Anwendungsbereiche ... 155 5.2 ... Überblick ... 155 5.3 ... Notationselemente ... 156 5.4 ... Lesen eines Komponentendiagramms ... 166 5.5 ... Irrungen und Wirrungen ... 167 5.6 ... Zusammenfassung ... 169 6. Verteilungsdiagramm ... 171 6.1 ... Anwendungsbereiche ... 171 6.2 ... Übersicht ... 171 6.3 ... Notationselemente ... 172 6.4 ... Lesen eines Verteilungsdiagramms ... 178 6.5 ... Irrungen und Wirrungen ... 179 6.6 ... Zusammenfassung ... 181 7. Paketdiagramm ... 183 7.1 ... Anwendungsbereiche ... 183 7.2 ... Übersicht ... 183 7.3 ... Notationselemente ... 184 7.4 ... Lesen eines Paketdiagramms ... 201 7.5 ... Irrungen und Wirrungen ... 203 7.6 ... Zusammenfassung ... 204 TEIL II. Verhaltensdiagramme ... 207 8. Anwendungsfalldiagramm ... 209 8.1 ... Anwendungsbereiche ... 209 8.2 ... Übersicht ... 210 8.3 ... Notationselemente ... 210 8.4 ... Lesen eines Anwendungsfalldiagramms ... 219 8.5 ... Irrungen und Wirrungen ... 221 8.6 ... Zusammenfassung ... 222 9. Aktivitätsdiagramm ... 225 9.1 ... Anwendungsbereiche ... 225 9.2 ... Übersicht ... 226 9.3 ... Notationselemente ... 228 9.4 ... Lesen eines Aktivitätsdiagramms ... 295 9.5 ... Irrungen und Wirrungen ... 297 9.6 ... Zusammenfassung ... 299 10. Zustandsdiagramm ... 303 10.1 ... Anwendungsbereiche ... 303 10.2 ... Übersicht ... 304 10.3 ... Notationselemente ... 305 10.4 ... Lesen eines Zustandsdiagramms ... 341 10.5 ... Irrungen und Wirrungen ... 343 10.6 ... Zusammenfassung ... 345 TEIL III. Interaktionsdiagramme ... 349 11. Sequenzdiagramm ... 351 11.1 ... Anwendungsbereiche ... 351 11.2 ... Übersicht ... 352 11.3 ... Notationselemente ... 353 11.4 ... Lesen eines Sequenzdiagramms ... 384 11.5 ... Irrungen und Wirrungen ... 386 11.6 ... Zusammenfassung ... 388 12. Kommunikationsdiagramm ... 393 12.1 ... Anwendungsbereiche ... 393 12.2 ... Übersicht ... 393 12.3 ... Notationselemente ... 394 12.4 ... Lesen eines Kommunikationsdiagramms ... 399 12.5 ... Irrungen und Wirrungen ... 400 12.6 ... Zusammenfassung ... 401 13. Timing-Diagramm ... 403 13.1 ... Anwendungsbereiche ... 403 13.2 ... Übersicht ... 403 13.3 ... Notationselemente ... 404 13.4 ... Lesen eines Timing-Diagramms ... 412 13.5 ... Irrungen und Wirrungen ... 413 13.6 ... Zusammenfassung ... 415 14. Interaktionsübersichtsdiagramm ... 417 14.1 ... Anwendungsbereiche ... 417 14.2 ... Übersicht ... 417 14.3 ... Notationselemente ... 419 14.4 ... Lesen eines Interaktionsübersichtsdiagramms ... 421 14.5 ... Irrungen und Wirrungen ... 423 14.6 ... Zusammenfassung ... 424 TEIL IV. Metamodellierung ... 427 15. Profildiagramm ... 429 15.1 ... Anwendungsbereiche ... 429 15.2 ... Übersicht ... 430 15.3 ... Notationselemente ... 431 15.4 ... Lesen eines Profildiagramms ... 439 15.5 ... Irrungen und Wirrungen ... 441 15.6 ... Zusammenfassung ... 442 Index ... 445
Einstieg in Kotlin
Einfach und strukturiert ohne Vorkenntnisse Kotlin lernen. Alle wichtigen Sprachfeatures Schritt für Schritt erklärt – so entwickeln Sie eigene Apps samt Zugriff auf verschiedenste Sensoren, Datenbanken und Multimedia. Kotlin ist zu Recht beliebt: Nicht nur Java-Kenner werden an Nullsicherheit und Co. ihre Freude haben. Und für Programmierer ist Kotlin genau das richtige für den Einstieg in die App-Entwicklung.Aus dem Inhalt:• Android Studio installieren• Befehle, Schleifen und Co.• Layouts und Menüs aufbauen• Fehler finden und beheben• Eigene Dialoge• Nullsicherheit• Sensoren und Systemdienste auslesen: Lage, Beschleunigung, Standort u.v.m.• Ein Spiel entwickeln• Erweiterungsfunktionen• Gestensteuerung• Zugriffsrechte verwalten