Zum Hauptinhalt springen Zur Suche springen Zur Hauptnavigation springen

Programmierung

Produkte filtern

Produktbild für PHP 8 Revealed

PHP 8 Revealed

Discover the new and updated features of PHP 8, such as the JIT compiler, union types, and attributes, with code examples of each. For each feature, the author includes real-life cases for its use and explains its benefits.WHAT YOU WILL LEARN* Utilize the new features of PHP 8 and modern development technologies* Work with the JIT compiler in PHP 8* Discover PHP 8 using real-life cases* Increase your available resources to become more valuable in your development teamWHO THIS BOOK IS FORExperienced PHP programmers new to PHP 8.GUNNARD ENGEBRETH began coding at the age of 11 through a “Learning BASIC” book given to him by his father. Technology was changing fast and Gunnard rode the wave from 1200 to 56k baud modems. Logging in to BBSs, Prodigy, Compuserve, Delphi and IRC he could see the world changing and he wanted to be a part of it. He soon got involved in the ansi/demo scene, making several application generators for many groups in the 90’s. Visual Basic was the next language of choice allowing him to develop “tools” for online systems such as AOL. This introduced many aspects of development, security and UI while they were still in their infancy. Once the WWW arrived via Mindspring in Atlanta, Ga. Gunnard quickly joined in the race for the web. Learning HTML, PERL and Linux (Slackware at the time) he began to build his skill-set which lead to a full-time Sysadmin position at the age of 20 (2000) at Activegrams/Silverpop. Gunnard has moved around the IT industry from SAN/NAS storage at IBM to custom Wordpress sites for marketing companies, but one thing has stayed the same, a passion for learning and problem solving. Gunnard also DJ’s Drum and Bass as Section31, Playing drums and baking bread (doughcode.com).1. Getting Started2. Setting up your development environment3. Devilbox4. Vagrant5. PHP 8 The Basics6. Whats newJIT compilerunion typesattributesThe nullsafe operatorNamed argumentsAttributesMatch expressionConstructor property promotionNew static return typeNew mixed typeThrow expressionInheritance with private methodsWeak mapsAllowing ::class on objectsNon-capturing catchesTrailing comma in parameter listsCreate DateTime objects from interfaceNew Stringable interfaceNew str_contains() function New str_starts_with() and str_ends_with() functionsNew fdiv() functionNew get_debug_type() functionNew get_resource_id() functionAbstract methods in traits improvementsObject implementation of token_get_all()Variable syntax tweaksType annotations for internal functionsext-json always available7. Breaking ChangesConsistent type errorsReclassified engine warningsThe @ operator no longer silences fatal errorsDefault error reporting levelDefault PDO error modeConcatenation precedenceStricter type checks for arithmetic and bitwise operators Reflection method signature changesStable sortingFatal error for incompatible method signatures8. FrameworksLaravelSlimPHPComposerSymphony9. The AdvancedMaintaining codeGithubGitlab Git workflowsCode StylePSR7phpDoc10. Refactoring and optimizationA. Giving Back

Regulärer Preis: 39,99 €
Produktbild für Using Displays in Raspberry Pi Projects

Using Displays in Raspberry Pi Projects

This book is about Raspberry Pi 4 display projects. The book starts by explaining how to install the latest Raspbian operating system on an SD card, and how to configure and use the GPIO ports. The core of the book explains the following topics in simple terms with fully tested and working example projects:> Simple LED projects> Bar graph LED projects> Matrix LED projects> Bitmap LED projects> LED strips> LCDs> OLED displays> E-paper displays> TFT displays> 7-inch touch screen> GUI Programming with TkinderOne unique feature of this book is that it covers almost all types of display that readers will need to use in their Raspberry Pi-based projects. The operation of each project is fully given, including block diagrams, circuit diagrams, and commented full program listings. It is therefore an easytask to convert the given projects to run on other popular platforms, such as Arduino or PIC microcontrollers. Python program listings of all Raspberry Pi projects developed in this book are available for download at Elektor.com. Readers can use these programs in their projects. Alternatively, they can modify the programs to suit their applications.Prof. Dr. Dogan Ibrahim is a Fellow of the Institution of Electrical Engineers. He is the author of over 60 technical books, published by publishers including Wiley, Butterworth, and Newnes. He is the author of over 250 technical papers, published in journals, and presented in seminars and conferences.

Regulärer Preis: 29,99 €
Produktbild für ABAP-Entwicklung für SAP S/4HANA

ABAP-Entwicklung für SAP S/4HANA

Entwickeln Sie moderne ABAP-Anwendungen mit dem Programmiermodell für SAP Fiori! Dieses Buch zeigt Ihnen, wie Sie das neue Modell ab SAP NetWeaver 7.5 anwenden können, um zukunftssicher zu entwickeln. Sie lernen die wesentlichen Konzepte wie Code-Pushdown und Simplifizierung kennen, erfahren, wie Sie mit CDS und Business-Objekten umgehen, und gestalten Ihre eigenen Fiori-Oberflächen. Inklusive Neuerungen in SAPUI5-Version 1.74 und neuen SAP-Fiori-Elements-Funktionen. Aus dem Inhalt: Architektur moderner ABAP-AnwendungenNeue ABAP-SyntaxCore Data Services (CDS)SAP Fiori ElementsBusiness Object Processing Framework (BOPF)OData und SAP GatewaySAP-S/4HANA-ReadinessSperrkonzept und BerechtigungenAnalytische und transaktionale AnwendungenAgile Entwicklung   Geleitwort ... 13   Vorwort ... 15   Einleitung ... 17   1.  Architektur moderner ABAP-Anwendungen ... 23        1.1 ... Eigenschaften und Architektur von SAP S/4HANA ... 23        1.2 ... Entwicklung von Unternehmensanwendungen mit SAP S/4HANA ... 34        1.3 ... Entwicklung auf Basis von SAP NetWeaver 7.50 ... 46   2.  Das neue ABAP-Programmiermodell für SAP Fiori ... 53        2.1 ... ABAP-Entwicklungsumgebung und -Syntax ... 53        2.2 ... Einsatzszenarien des ABAP-Programmiermodells ... 59        2.3 ... Core Data Services ... 66        2.4 ... Entwicklung von OData-Services mit SAP Gateway ... 91        2.5 ... Code Pushdown auf die SAP-HANA-Datenbank ... 101   3.  Anwendungsentwicklung im Kontext von SAP S/4HANA ... 111        3.1 ... Simplifizierung und das Principle of One von SAP ... 111        3.2 ... Simplifizierungsgrundsätze für eigene Anwendungsentwicklung ... 121        3.3 ... SAP-S/4HANA-Readiness von Anwendungen ... 129        3.4 ... Sicherheit von Anwendungen ... 141        3.5 ... Anwendungsentwicklung und der SAP-Standard ... 152        3.6 ... Automatisierte und manuelle Qualitätsprüfungen ... 154   4.  Entwicklung von Geschäftsobjekten ... 163        4.1 ... Datenmodellierung ... 164        4.2 ... Transaktionale Core Data Services ... 173        4.3 ... BOPF-Metamodell ... 184        4.4 ... BOPF-Implementierung ... 200        4.5 ... Namenskonventionen ... 223        4.6 ... Entwicklung einer Benutzeroberfläche mit SAP Fiori Elements ... 226   5.  Techniken der Anwendungsentwicklung ... 237        5.1 ... Sperrkonzept ... 237        5.2 ... BOPF-Puffermanagement ... 250        5.3 ... LUW-Konzept ... 265        5.4 ... Protokollierung ... 269        5.5 ... Berechtigungssteuerung ... 289        5.6 ... Tests ... 296   6.  Entwicklung transaktionaler Benutzeroberflächen ... 327        6.1 ... Floorplans ... 329        6.2 ... SAP Fiori Elements ... 333        6.3 ... Annotationen ... 338        6.4 ... SAP Fiori Tools ... 417        6.5 ... Freestyle-Entwicklung von SAP-Fiori-Apps ... 422        6.6 ... Draft-Konzept ... 430        6.7 ... Ausblick auf das ABAP-RESTful-Programmiermodell ... 444   7.  Operative Analytik ... 459        7.1 ... Grundlagen ... 460        7.2 ... Analytische Core Data Services ... 461        7.3 ... Visualisierung mit der Analytical List Page ... 488        7.4 ... Weitere Möglichkeiten der Visualisierung ... 514   8.  Management von ABAP-Entwicklungsprojekten ... 521        8.1 ... Notwendige Skills ... 522        8.2 ... Architekturmanagement ... 523        8.3 ... Agile Entwicklung, Continuous Integration und Delivery ... 526        8.4 ... Technische Schulden ... 545   Anhang ... 549        A ... Technical Architecture Modeling ... 551        B ... Das Enterprise Procurement Model ... 555        C ... Literaturverzeichnis ... 561        D ... Die Autoren ... 563   Index ... 565

Regulärer Preis: 79,90 €
Produktbild für Programming Algorithms in Lisp

Programming Algorithms in Lisp

Master algorithms programming using Lisp, including the most important data structures and algorithms. This book also covers the essential tools that help in the development of algorithmic code to give you all you need to enhance your code.Programming Algorithms in Lisp shows real-world engineering considerations and constraints that influence the programs that use these algorithms. It includes practical use cases of the applications of the algorithms to a variety of real-world problems.WHAT YOU WILL LEARN* Program algorithms using the Lisp programming language* Work with data structures, arrays, key-values, hash-tables, trees, graphs, and more* Use dynamic programming * Program using strings* Work with approximations and compression WHO THIS BOOK IS FORIntermediate Lisp programmers wanting to do algorithms programming. A very experienced non-Lisp programmer may be able to benefit from this book as well.VSEVOLOD DOMKIN from Kyiv, Ukraine is a Lisp programmer and enthusiast, a natural language processing researcher, an occasional writer/blogger, and a teacher.IntroductionAlgorithmic ComplexityA Crash Course in LispEssential Data StructuresArraysLinked ListsKey-ValuesDerivative Data StructuresTreesGraphsStringsSelected AlgorithmsApproximationCompressionSynchronizationAfterword

Regulärer Preis: 36,99 €
Produktbild für Practical Rust Web Projects

Practical Rust Web Projects

Go beyond the basics of Rust and build web and serverless cloud applications. The applications explained in this practical book include web sites, RESTful APIs, a real-time web chat application, and frontend application with WebAssembly. Each chapter is organized in the following format: what this kind of application looks like; requirements for the example program; an introduction to the Rust libraries used; step-by-step implementation of the example program, including common pitfalls and best practices; and a brief comparison of libraries and frameworks in the same domain.This book will open your eyes to the world of practical web applications of Rust. After reading the book, you will be able to apply your Rust knowledge to build your own web projects.WHAT YOU WILL LEARN* Build dynamic websites with databases* Build RESTful APIs* Write a WebSocket server that can power a real-time chat app in Rust* Discover the benefits of serverless computing using Amazon Web Service's Rust support* Compile Rust to WebAssembly for high-performance frontend applicationsWHO THIS BOOK IS FORA reader with basic Rust knowledge, wishing to learn more about how to apply Rust in a real-world scenario. A developer who is evaluating the possibility to build their next project in Rust.Shing Lyu is a software engineer who is passionate about open source software. He's been working on Rust professionally at Mozilla, on the Firefox (Gecko) and Servo browser engine project. Currently, he is working at DAZN, a sports streaming platform as a backend developer, with a focus on AWS and serverless technology. Shing has worked for many world famous brands like Mozilla, Booking, and Intel. And, he is also active in the open source community. Being one of the founders of the Taiwan Rust community, he loves to share his enthusiasm for Rust with people.Chapter 1, IntroductionThis chapter gives a short introduction to why Rust is a solid tool for building all kinds of application, and a brief overview of the format and organization of the book.● Introduction● Why Rust?● Who should read this book?● Chapters overviewChapter 2, Developing websitesThis chapter will cover how to use popular web frameworks to build static and dynamic websites. We'll also touch how to build RESTful API and common requirements in web backend programming: database, authentication and authorization● What are we going to build? (A web version of the cat breed dictionary, first a static site and then server-side rendering )● Serving a static website● Generate dynamic content with templates● Fetching data from databases● Authentication and authorization● SummaryChapter 3, REST APIs● What are we going to build? (A web version of the cat breed dictionary, with a single-page app + REST API)● Defining the API with Open API specification● Building a static frontend with AJAX calls● Building a RESTful API● Serialize/Deserialize JSON● SummaryChapter 4, Chatting in realtime with WebSocketThis chapter will discuss how to build a WebSocket server that can power a real-time chat application in Rust● What are we going to build? (A chat app for cats in people can send all kinds of cat noises)● What is WebSocket● Enabling two way communication● Implementing the chat application● SummaryChapter 5, Going serverlessThis chapter will demonstrate the benefit of serverless computing using AWS's experimental Rust support.● What is serverless?● What are we going to build? (Serverless version of Chapter 4)● Pros and cons of serverless● Setting up an AWS account● Building a lambda function with Rust● Exposing the API Gateway● Cleaning it up● SummaryChapter 6, High performance web frontend using WebAssemblyThis chapter will talk about how to compile Rust to WebAssembly and make it work together with JavaScript in the web frontend● What is WebAssembly? (We'll implement the bottleneck of Book 1 Chapter 4 in WebAssembly to speed it up)● What are we going to build?● How to compile Rust to WebAssembly?● Exposing Rust function to JavaScript● Passing native data type between Rust and JavaScript● Manipulating DOM from Rust● SummaryChapter 7, Advanced topicsThis chapter will discuss other more advanced use of Rust. Each section will introduce one application, existing projects for that kind of application and their status. But we'll not go into the detail as the previous chapters.● Web scraping/Web crawling● Browser engine - Servo● Conclusion

Regulärer Preis: 36,99 €
Produktbild für Patterns in the Machine

Patterns in the Machine

Discover how to apply software engineering patterns to develop more robust firmware faster than traditional embedded development approaches. In the authors’ experience, traditional embedded software projects tend towards monolithic applications that are optimized for their target hardware platforms. This leads to software that is fragile in terms of extensibility and difficult to test without fully integrated software and hardware. Patterns in the Machine focuses on creating loosely coupled implementations that embrace both change and testability.This book illustrates how implementing continuous integration, automated unit testing, platform-independent code, and other best practices that are not typically implemented in the embedded systems world is not just feasible but also practical for today’s embedded projects.After reading this book, you will have a better idea of how to structure your embedded software projects. You will recognize that while writing unit tests, creating simulators, and implementing continuous integration requires time and effort up front, you will be amply rewarded at the end of the project in terms of quality, adaptability, and maintainability of your code.WHAT YOU WILL LEARN* Incorporate automated unit testing into an embedded project* Design and build functional simulators for an embedded project* Write production-quality software when hardware is not available* Use the Data Model architectural pattern to create a highly decoupled design and implementation* Understand the importance of defining the software architecture before implementation starts and how to do it* Discover why documentation is essential for an embedded project* Use finite state machines in embedded projectsWHO THIS BOOK IS FORMid-level or higher embedded systems (firmware) developers, technical leads, software architects, and development managers.John Taylor has been an embedded developer for over 29 years. He has worked as a firmware engineer, technical lead, system engineer, software architect, and software development manager for companies such as Ingersoll Rand, Carrier, Allen-Bradley, Hitachi Telecom, Emerson, and several start-up companies. He has developed firmware for products that include HVAC control systems, telecom SONET nodes, IoT devices, micro code for communication chips, and medical devices. He is the co-author of five US patents and holds a bachelor’s degree in mathematics and computer science.Wayne Taylor has been a technical writer for 25 years. He has worked with companies such as IBM, Novell, Compaq, HP, EMC, SanDisk, and Western Digital. He has documented compilers, LAN driver development, storage system deployment and maintenance, and dozens of low-level and system-management APIs. He also has ten years of experience as a software development manager. He is the co-author of two US patents and holds master’s degrees in English and human factors. He is a co-author of OS/2 and NetWare Programming (Van Nostrand Reinhold, 1995).1: Introduction2: Core Concepts3: Design Theory For Embedded Programming4: Persistent Storage Example5: Software Architecture6: Automated Unit Testing7: Functional Simulator8: Continuous Integration9: Data Model10: Finite State Machines11: Documentation12: File Organization and Naming13: More About Late Bindings14: Main and Initialization15: More Best Practices16: Example Code17: Rules For DevelopmentAppendix A: TerminologyAppendix B: UML Cheat SheetAppendix C: Notation for State MachinesAppendix D: Coding ConventionsAppendix E: Why C++

Regulärer Preis: 46,99 €
Produktbild für Pro Cryptography and Cryptanalysis with C++20

Pro Cryptography and Cryptanalysis with C++20

Develop strong skills and a passion for writing cryptography algorithms and security schemes/modules using C++ 20 and its new features. You will find the right methods of writing advanced cryptographic algorithms (such as, elliptic curve cryptography algorithms, lattice-based cryptography, searchable encryption, and homomorphic encryption), examine internal cryptographic mechanisms, and discover common ways in which the algorithms could be implemented and used correctly in practice.The authors avoid the complexities of the mathematical background by explaining its mathematical basis in terms that a programmer can easily understand. They show how “bad” cryptography creeps in during implementation and what “good” cryptography should look like. They do so by showing and comparing the advantages and disadvantages based on processing time, execution time, and reliability.WHAT YOU WILL LEARN* Understand where and why cryptography is used and how it gets misused * Discover what modern cryptography algorithms and methods are used for * Design and implement advanced cryptographic mechanisms * See how C++20 and its new features are impacting the future of implementing cryptographic algorithms* Practice the basics of public key cryptography, including ECDSA signatures and more* Find out how most of the algorithms can be brokenWHO THIS BOOK IS FORProfessional programmers, developers, and software engineers who are developing cryptography algorithms and security schemes/modules in C++. Prior C++ programming and IDE experience and some basic experience of cryptography concepts (symmetric and asymmetric) highly recommended.MARIUS IULIAN MIHAILESCU, PHD is CEO at Dapyx Solution Ltd., a company based in Bucharest, Romania and involved in information security- and cryptography-related research projects. He is a lead guest editor for applied cryptography journals and a reviewer for multiple publications with information security and cryptography profiles. He authored and co-authored more than 30 articles in conference proceedings, 25 articles in journals, and three books. For more than six years he has served as a lecturer at well-known national and international universities (University of Bucharest, “Titu Maiorescu” University, Kadir Has University in, Istanbul, Turkey). He has taught courses on programming languages (C#, Java, C++, Haskell), and object-oriented system analysis and design with UML, graphs, databases, cryptography and information security. He served for three years as IT officer at Royal Caribbean Cruises Ltd. where he dealt with IT infrastructure, data security, and satellite communications systems. He received his PhD in 2014 and his thesis was on applied cryptography over biometrics data. He holds two MSc in information security and software engineering.STEFANIA LOREDANA NITA, PHD is a software developer at the Institute of Computer Science of the Romanian Academy and a PhD with her thesis on advanced cryptographic schemes using searchable encryption and homomorphic encryption. She has served more than two years as an assistant lecturer at the University of Bucharest where she taught courses on subjects such as advanced programming techniques, simulation methods, and operating systems. She has authored and co-authored more than 15 workpapers at conferences and journals, and has authored two books on he Haskell programming language. She is a lead guest editor for special issues on information security and cryptography such as Advanced Cryptography and Its Future: Searchable and Homomorphic Encryption. She holds an MSc in software engineering and two BSc in computer science and mathematics.Part I: Foundations1: Introduction2: Cryptography Fundamentals3: Mathematical Background and Its Applicability4: Large Integer Arithmetic5: Floating Point Arithmetic6: New Features in C++207: Secure Coding Guidelines8: Cryptography Libraries in C/C++20Part II: Pro Cryptography9: Elliptic Curve Cryptography10: Lattice-based Cryptography11: earchable Encryption12: Homomorphic Encryption13: (Ring) Learning with Errors Cryptography14: Chaos-based Cryptography15: Big Data Cryptography16:Cloud Computing CryptographyPart III: Pro Cryptanalysis17: Getting Started with Cryptanalysis18: Cryptanalysis Attacks and Techniques19: Linear and Differential Cryptanalysis20: Integral Cryptanalysis21: Brute Force and Buffer Overflow Attacks22: Text Characterization23: Implementation and Practical Approach of Cryptanalysis Methods

Regulärer Preis: 52,99 €
Produktbild für Kotlin

Kotlin

Das umfassende Handbuch - mit Crashkurs für Java-Umsteiger.Die Programmiersprache Kotlin ist das neue Schweizer Taschenmesser in der Softwareentwicklung. Ob Backend-Entwicklung oder mobile Apps, ob objektorientierte Paradigmen oder funktionale Programmierung mit Lambdas: Kotlin vereint die Stärken zahlreicher beliebter Sprachen zu einem modernen Werkzeug für alle Fälle. In diesem umfassenden Handbuch gibt Ihnen Michael Kofler einen Einblick in alle Sprachfeatures von Kotlin und zeigt Ihnen, wie Sie zeitgemäße Software entwickeln. Sie brauchen keine Java-Vorkenntnisse, sollten aber solide Programmiererfahrung mitbringen. Dieses Buch zeigt Ihnen die vielen Vorteile von Kotlin. Nach der Lektüre werden Sie verstehen, warum es in Zukunft für die Android-Entwicklung heißt: Kotlin first!Leseprobe (PDF-Link)

Regulärer Preis: 49,90 €
Produktbild für Android-Apps programmieren (3. Auflg.)

Android-Apps programmieren (3. Auflg.)

Professionelle App-Entwicklung mit Android Studio 4 - der praktische Einstieg.Mit diesem Buch erhalten Sie einen praktischen Einstieg in die Android-App-Programmierung mit Java. Sie lernen alles, was für die professionelle App-Entwicklung wichtig ist: von den Grundbausteinen einer App über die Layout-Erstellung mit XML bis hin zum Einsatz von Datenbanken.Der Autor führt Sie anhand eines durchgängigen Praxisbeispiels durch den gesamten Entwicklungsprozess einer App und zeigt Ihnen, wie Sie Android Studio effektiv einsetzen. Dabei lernen Sie Schritt für Schritt, wie Sie Daten verarbeiten und mit Room in einer Datenbank speichern, Apps mit mehreren Bildschirmseiten programmieren, Dialoge anzeigen, Berechtigungen abfragen, mit Hintergrundprozessen arbeiten, Internet-Services einbinden und vieles mehr.Abschließend erläutert der Autor, wie Sie Ihre App testen und im Google Play Store sowie auf der eigenen Website veröffentlichen. Darüber hinaus zeigt er Ihnen verschiedene Möglichkeiten der Monetarisierung auf.Grundkenntnisse in objektorientierter Programmierung, idealerweise mit Java, sowie im Umgang mit XML werden vorausgesetzt.Aus dem Inhalt:Grundlagen der App-ProgrammierungEinführung in Android StudioGradle als Build-SystemProjektanlageLayouts erstellen mit XMLActivities und SeitennavigationEinbinden einer SQLite-Datenbank mit RoomExport von DatenDialogeDatenverarbeitung im HintergrundBerechtigungenTrennung von Layout, Layout-Logik und Programmlogik mit Android-BindingInternet-Services einbindenAutomatisierte Tests und Unit TestingApp veröffentlichenPraktisches GlossarÜber den Autor:Eugen Richter hat langjährige Schulungserfahrung u.a. als Dozent an der Münchener Volkshochschule und als Ausbilder im Unternehmen. Sein thematischer Schwerpunkt liegt dabei auf der nativen Entwicklung von Apps für Android, der Cross-Plattform-Entwicklung mit Xamarin, der Cloud-Entwicklung mit .Net Core sowie auf dem Einsatz von DevOps.Inhaltsverzeichnis & Leseprobe (PDF-Link)

Regulärer Preis: 29,99 €
Produktbild für Android 11 (6. Auflg.)

Android 11 (6. Auflg.)

Das Praxisbuch für professionelle Android-Apps in der 6. Auflage 2020.Sie möchten Android-Apps für Smartphones und Tablets entwickeln? Dann ist dieses Buch genau das Richtige für Sie. Ob GUI, Bluetooth, Kamera, Multimedia, Kontakte oder GPS – hier lernen Sie die Grundlagen, um robuste und performante Apps zu entwickeln. In 80 Beispielprojekten finden Sie Erfolgsrezepte für die App-Entwicklung, die Sie wirklich weiterbringen. Top-aktuell zu Android 11, mit Einstieg in Android Studio 4. Alle Beispiele sind in Kotlin programmiert, der neuen offiziellen Sprache für die Android-Entwicklung. Inkl. Kotlin-Crashkurs mit den wichtigsten Sprachelementen und Konzepten.Leseprobe (PDF-Link)

Regulärer Preis: 39,90 €
Produktbild für Pro Spring MVC with WebFlux

Pro Spring MVC with WebFlux

Explore the designs of the Spring MVC and WebFlux frameworks, and apply similar designs and techniques to your own code. Along with detailed analysis of the code and functionality, this book includes numerous tips and tricks to help you get the most out of Spring MVC, WebFlux, and Java-based web application development in general using Spring. You’ll see how Spring MVC is a modern web application framework built upon the latest Spring Framework 5 and Spring Boot 2. Spring MVC is suitable for building reusable web controller modules that encapsulate rich page navigation rules.Pro Spring MVC with WebFlux takes great care in covering every inch of Spring MVC with WebFlux to give you the complete picture. Along with all the best-known features of these frameworks, you’ll discover some new hidden treasures. You’ll also learn how to correctly and safely extend the frameworks to create customized solutions.This book is for anyone who wishes to write robust, modern, and useful web applications with the Spring Framework. After reading and using this book, you'll become proficient with Spring MVC and be able to apply it to your own Java web applications and microservices.WHAT YOU WILL LEARN* Use Spring MVC with WebFlux to build Java-based web applications* Employ the various Spring MVC architectures* Work with controllers and routing functions* Build microservices and web services using Spring MVC and REST* Create reactive web applications using Spring WebFlux* Secure Spring MVC and Spring WebFlux* Deploy your Spring MVC application to the cloudWho This Book Is ForThose with at least some prior experience with Java web application development. Some previous experience with Spring Boot or the Spring Framework is recommended.MARTEN DEINUM is a submitter on the open source Spring Framework project. He is also a Java/software consultant working for Conspect. He has developed and architected software, primarily in Java, for small and large companies. He is an enthusiastic open source user and longtime fan, user and advocate of the Spring Framework. He has held a number of positions including software engineer, development lead, coach, and also as a Java and Spring trainer.IULIANA COSMINA is currently a software engineer for Cloudsoft Edinburgh. She has been writing Java code since 2002. She has contributed to various types of applications, including experimental search engines, ERPs, track and trace, and banking. During her career, she has been a teacher, a team leader, a software architect, a DevOps professional, and a software manager.She is a Springcertified Professional, as defined by Pivotal, the makers of Spring Framework, Boot, and other tools, and considers Spring the best Java framework to work with.When she is not programming, she spends her time reading, blogging, learning to play piano, traveling, hiking, or biking.1: Setting Up A Local Development Environment2: Spring Framework Fundamentals3: Web Application Architecture4: Spring MVC Architecture5: Implementing Controllers6: Implementing Controllers - Advanced7: REST and AJAX8: Resolving and Implmenting Views9: Introduction to Spring WebFlux10: Building Reactive Applications with Spring WebFlux11: Securing WebFlux Applications12: Spring Security13: Spring Applications in the Cloud

Regulärer Preis: 56,99 €
Produktbild für Advanced Programming with STM32 Microcontrollers

Advanced Programming with STM32 Microcontrollers

This book is project-based and aims to teach the software tools behind STM32 microcontroller programming. Author Majid Pakdel has developed projects using various different software development environments including Keil MDK, IAR Embedded Workbench, Arduino IDE and MATLAB. Readers should be able to use the projects as they are, or modify them to suit to their own needs. This book is written for students, established engineers, and hobbyists. STM32 microcontroller development boards including the STM32F103 and STM32F407 are used throughout the book. Readers should also find it easy to use other ARM-based development boards.Majid Pakdel was born in Mianeh, Iran in 1981. He received his BSc, MSc and PhD in electrical engineering from Amirkabir University of Technology, Isfahan University of Technology and the University of Zanjan respectively. He was a guest PhD student at Aalborg University in 2015-16.

Regulärer Preis: 24,99 €
Produktbild für Git für Dummies

Git für Dummies

Git hat sich als Quellcodeverwaltung durchgesetzt und ist der De-facto-Standard in der Softwareentwicklung. Alle Unternehmen, die noch nicht auf Git sind, werden die nächsten Jahre wechseln. Und nicht nur die Entwicklung - auch Administration, Sicherheit und Dokumentation finden zunehmend auf Git statt. Git ist damit heute das wichtigste Werkzeug für alle digitalen Produkte - quasi die Werkbank. Wenn Sie wissen wollen, wie Sie Git richtig implementieren und welche Regeln Sie für die Zusammenarbeit aufstellen sollten, dann sind Sie hier richtig. Dieses Buch ist eine Einführung in das effektive Arbeiten mit Git - geeignet sowohl für Berufseinsteiger als auch für erfahrene Entwickler, die zu Git wechseln. Michael Kaufmann unterstützt bei CGI, einem internationalen IT-Dienstleister, seine Kunden bei der Transformation zu agilen Organisationen - sowohl technisch im Bereich DevOps und Cloud als auch kulturell und bei der Einführung agiler Management-Methoden. Er ist gelernter Diplom-Betriebswirt, leidenschaftlicher Softwareentwickler, IT-Autodidakt, Trainer, Sprecher auf internationalen Konferenzen und seit 2015 "Microsoft Most Valuable Professional (MVP)". Ebenfalls wurde ihm von Microsoft die Auszeichnung "Microsoft Regional Director (RD)" verliehen.Über den Autor 13EINLEITUNG27Über dieses Buch 27Konventionen in diesem Buch 27Fachbegriffe 28Warum Kommandozeile? 28Der Name für den Haupt-Branch 28Was Sie nicht lesen müssen 29Törichte Annahmen über die Leser 29Wie dieses Buch aufgebaut ist 30Teil I: Grundlagen 30Teil II: Zusammenarbeit 30Teil III: Vertiefung 30Teil: IV: Der Top-Ten-Teil 30Symbole, die in diesem Buch verwendet werden 30Wie es weitergeht 31TEIL I: GRUNDLAGEN 33KAPITEL 1 WAS IST GIT?35Versionsverwaltung – zentral oder verteilt? 36Die Geschichte von Git 37Was bedeutet der Name »Git«? 38Lizenz und Betriebssysteme 39Ausblick 39Kurz und knackig 39KAPITEL 2 DER EINSTIEG AUF WINDOWS 41Die Installation von Git auf Windows 41Die richtige Kommandozeile 51Terminal: Cmder 52Cmd vs PowerShell 52Windows-Subsystem für Linux (WSL) 54Das Windows-Terminal 55Der richtige Editor 56Die Konfiguration von Git 58Authentifizierung 59Kurz und knackig 62KAPITEL 3 DER EINSTIEG AUF MACOS UND LINUX63Der Einstieg auf macOS 63Der Einstieg auf Linux 64Konfiguration 64Authentifizierung 66Arbeiten mit dem Terminal 69Richtig mit dem Terminal umgehen 70Die richtige Konsole finden 71Aufgehübscht: Oh-My-Zsh und Powerlevel10k 71Kurz und knackig 76KAPITEL 4 HINZUFÜGEN, ÄNDERN, BRANCHEN UND MERGEN77Das lokale Repository 78Das Remote-Repository 79Änderungen dem Repository hinzufügen 80Die lokale Entwicklungsumgebung aktualisieren 81Schritt für Schritt: Änderungen der Versionsverwaltung hinzufügen 81Neue Dateien hinzufügen 82Änderungen durchführen 85Arbeiten mit Verzweigungen (Branches) 87Einen Branch erstellen 88Auf einen anderen Branch wechseln 89Arbeiten mit Upstream-Branches 90Änderungen zusammenführen 92Der Fast-Forward-Merge 92Der Merge-Commit 94Konflikte lösen 95Schritt für Schritt: Branchen und Mergen 96Kurz und knackig 97KAPITEL 5 WEITERE WERKZEUGE99Visual Studio Code 99Unterstützung im Working Directory 99Arbeiten mit Branches und Tags 100Unterstützung für Remote-Repositories 100Statusbar und Editor 100Visual-Studio-Code-Erweiterungen 101Benutzeroberflächen für Git 106Sourcetree 106GitKraken 108GitHub Desktop 109Git-GUI 111GitHub für unterwegs 115Visual Studio, Eclipse, IntelliJ und Co. 117Tools mit Windows-Explorer-Integration 118TortoiseGit 118Git-Extensions 121Diff- und Merge-Tools 122Kurz und knackig 125TEIL II: ZUSAMMENARBEIT 127KAPITEL 6 GIT-DIENSTE129GitHub 130Einstieg 130GitHub-Organisationen 134Ein Repository anlegen 136Preise 140Hosting 140Bewertung 140Azure Repos 141Einstieg 141Azure-DevOps-Organisationen 142Ein Projekt erstellen 143Ein Repository erstellen 144Preise 146Hosting 146Bewertung 146GitLab 147Einstieg 147Hosting und Preise 150Bewertung 151Bitbucket 151Einstieg 151Hosting und Preise 155Bewertung 155Kurz und knackig 156KAPITEL 7 GUIDELINES BEI DER EINFÜHRUNG VON GIT157Das richtige Maß an Governance 157Eine minimale Governance-Richtlinie 158Die Wahl des passenden Git-Systems 158Der minimale Git-Workflow 159Namenskonventionen 159Minimale Review-Guidelines 159Weitere Ergänzungen für Pull-Requests 160Empfehlungen für Teams 160Anzahl und Struktur der Repositories 161Review-Guidelines 162Release-Branching 163Umgang mit komplexen Features 163Commit-Messages und Pull-Requests 164Merge-Strategien 164Training 165Kurz und knackig 165KAPITEL 8 GIT-WORKFLOWS 167Was sind Git-Workflows? 167Trunk-Based-Development 168GitHub-Flow 170Release-Flow 173Git-Flow 175Die Haupt-Branches in Git-Flow 175Feature-Branches im Git-Flow 176Release-Branches 177Hotfix-Branches 178Zusammenfassung 179Den richtigen Workflow finden 180Kurz und knackig 181KAPITEL 9 TEAMWORK MIT GIT183Watch, Stars und Forks 183Was ist ein Fork? 185Code-Reviews mit Pull-Requests 192Branch-Protection 199Automatisierung 202Code-Owners 204Der Umgang mit Commits und Messages 205Der Pull-Request-Lebenszyklus 208Kurz und knackig 209KAPITEL 10 WENIGER KOMPLEXITÄT DURCH FEATURE-FLAGS211Was sind Feature-Flags? 211Der Feature-Lebenszyklus 213Weitere Einsatzmöglichkeiten von Feature-Flags 215Wo fängt man an? 216Frameworks 217LaunchDarkly 218Feature-Flags und technische Schulden 219Kurz und knackig 221KAPITEL 11 KONTINUIERLICH BAUEN UND AUSLIEFERN223Was ist CI und CD? 223Build-Infrastruktur 225Kontinuierliche Qualität 225Tests und Code-Coverage 226Code-Analyse und Quality-Gates 228Automatisierte Deployments 229Infrastruktur als Code 229App-Stores, Registries und Paketmanager 230Die Bedeutung von Containern 232Azure Pipelines 234Ihre erste Pipeline 234Technische Schulden meistern 242GitHub Actions 249Ihr erster Workflow 249Ihre erste GitHub-Action 251Weitere CI/CD-Plattformen 254Kurz und knackig 254KAPITEL 12 OPEN-SOURCE-PROJEKTE255Geschichte 256Open Source versus Open Development 256Open Source und Sicherheit 257Ihr erstes Open-Source-Projekt 261Wann ist der richtige Zeitpunkt? 262Ist es die richtige Lösung? 262Name und Branding 262Open-Source-Checkliste 263Standardisierung und Automatisierung 264Eine Community aufbauen 264Geld verdienen mit Open Source 265Kurz und knackig 266TEIL III: VERTIEFUNG 269KAPITEL 13 UNTER DER HAUBE 271Warum ist Git so schwierig? 271Der gerichtete azyklische Graph 272Der Hash oder SHA-1 273Die Anatomie eines Commits 274Was ist denn nun eigentlich Git? 284Warum ist Git so einfach? 285Kurz und knackig 285KAPITEL 14 ZEITREISEN MIT GIT 287Geschichte ist Geschichte 287Freie Wahl der Arbeitsweise 289Änderungen rückgängig machen 289Änderungen mit Revert transparent zurücknehmen 289Commits nachbessern mit Amend 291Zeitreisen mit Reset 291Navigieren in der Zeit 296Zeitlinien manipulieren 300Zurück in die Zukunft mit Rebase 300Änderungen bündeln mit Squash 302Rosinen herauspicken 304Die Vergangenheit interaktiv manipulieren 304Die Vergangenheit mit Filter-Branch manipulieren 308Manipulierte Zeitlinien mit Force-Push übertragen 310Fragen Sie nicht, wozu Git fähig ist 310Kurz und knackig 311KAPITEL 15 MEHR ZUM BRANCHING UND MERGING313Branches und Tags 313Vorspulen mit Fast-Forward 316Ein echter Merge 317Ein Octopus-Merge 31Konflikte automatisch lösen 319Konflikte manuell lösen 320Merge-Strategien 323Recursive 323Resolve 324Octopus 325Ours 325Subtree 325Daten vom Remote laden mit »git pull« 325Kurz und knackig 326KAPITEL 16 COMMITS UND TAGS SIGNIEREN329Warum sollte man Commits signieren? 330Was ist GPG? 333Installation und Konfiguration 333Installation auf dem Mac 333Installation auf Windows 334Installation auf Linux 334Ein Schlüsselpaar generieren 334Weitere E-Mail-Adressen konfigurieren 337Die Konfiguration von Git 337Konfiguration von GitHub 338Visual Studio Code konfigurieren 338Der erste signierte Commit 339Kurz und knackig 340KAPITEL 17 GIT-SUBMODULE341Submodule in Git-Repository einbinden 341Submodule klonen 343Submodule aktualisieren 344In Submodulen arbeiten 345Kurz und knackig 347KAPITEL 18 GROẞE DATEIEN UND GROẞE REPOSITORIES349Git-LFS 349Wann sollen Sie Git-LFS verwenden? 349Installation von Git-LFS 350Git-LFS verwenden 350Große Dateien sperren 351Nachteile 351Große Repositories 352VFS for Git 352Scalar 352Kurz und knackig 354KAPITEL 19 GIT AN IHRE BEDÜRFNISSE ANPASSEN355Dateien ignorieren 355Arbeiten mit unterschiedlichen Dateitypen 357Binärdateien 357Bestimmte Dateitypen versionieren 357Inhalte vor dem Ein- oder Auschecken filtern oder bearbeiten 358Formatierung von Dateien 361Der richtige Umgang mit Zeilenenden 361Encoding 362Leerzeichen, Tabs und Spaces 362Kurz und knackig 364TEIL IV: DER TOP-TEN-TEIL 365KAPITEL 20 ZEHN TIPPS ZUM EINSTIEG IN GIT367Lernen und verwenden Sie Git auf der Konsole 367Der richtige Git-Prompt 367Richten Sie sich eine Wohlfühlkonsole ein 368Lernen Sie die Shortcuts für Ihr Terminal 368Lernen Sie einen Editor 36Lernen Sie die Shortcuts für den Editor 368Üben Sie in der Git-School 368Erstellen Sie ein Konto auf GitHub 368Verwenden Sie einen schlanken Workflow 369Arbeiten Sie mit Pull-Requests 369Kurz und knackig 369KAPITEL 21 ZEHN TIPPS ZUR ERHÖHUNG DER EFFIZIENZ371Arbeiten mit Aliasen in Git 371Besser Vergleichen mit »diff-so-fancy« 374Automatisieren mit Git-Hooks 376Clientseitige Hooks 376Serverseitige Hooks 377Bessere Commit-Messages mit Commit-Templates 378Einzelne Commits testen 37Besser Versionieren mit Git-Version 379Merges aufzeichnen mit rerere 381Autokorrektur von Kommandos 383Arbeit zwischenspeichern mit Stash 384Kurz und knackig 385KAPITEL 22 ZEHN DINGE, DIE SIE NICHT TUN SOLLTEN387Direkt auf dem Haupt-Branch arbeiten 387Mit langlebigen Branches arbeiten 387Passwörter und andere Secrets in Git speichern 388Nicht oft genug committen 388Git nicht als Versionsverwaltung nutzen 388Große Dateien speichern 388Einen Pull-Request für viele Änderungen verwenden 389Einen Reset durchführen, ohne vorher zu speichern 389Die veröffentlichte Historie modifizieren 389Einen Force-Push durchführen 389Kurz und knackig 390KAPITEL 23 ZEHN GIT-BEFEHLE, DIE SIE KENNEN SOLLTEN391Bugs finden mit git bisect 391Dateien umbenennen mit git mv und git rm 393In Git suchen mit git grep und git log 394Den Schuldigen finden mit git blame 397Aufräumen mit git clean 398Einen Brach wechseln mit git switch 398Arbeiten mit Patches: git add ––patch und git apply 399Kurz und knackig 403KAPITEL 24 ZEHN GIT-BEFEHLE, DIE IHNEN BEI PROBLEMEN HELFEN 405Magische Zeitmaschine 405Vergessen, Änderungen hinzuzufügen 406Commit-Message nachträglich ändern 406Aus Versehen auf den Haupt-Branch committed 406Commit auf falschen Branch 407Diff zeigt nichts an 407Älteren Commit rückgängig machen 407Änderungen an einer Datei rückgängig machen 408Von Neuem beginnen (a) 408Von Neuem beginnen (b) 409Kurz und knackig 409Stichwortverzeichnis 413

Regulärer Preis: 24,99 €
Produktbild für Spring Cloud Data Flow

Spring Cloud Data Flow

Work with big data applications by using Spring Cloud Data Flow as a unified, distributed, and extensible system for data ingestion and integration, real-time analytics and data processing pipelines, batch processing, and data export. With this book you will develop a foundation for creating applications that use real-time data streaming by combining different technologies and use the full power of Spring Cloud Data Flow.The first part of Spring Cloud Data Flow introduces the concepts you will need in the rest of the book. It begins with an overview of the cloud, microservices, and big data, before moving on to the Spring projects essential to modern big data applications in Java: Spring Integration, Spring Batch, Spring Cloud Stream, and Spring Cloud Task. The second part of the book covers the internals of Spring Cloud Data Flow, giving you the insights and knowledge required to build the applications you need. You'll learn how to use Spring Data Flow's DSL and how to integrate with third-party cloud platform solutions, such as Kubernetes.Finally, the book covers Spring Cloud Data Flow applications to impart practical, useful skills for real-world applications of the technologies covered throughout the rest of the book.WHAT YOU WILL LEARN* See the Spring Cloud Data Flow internals * Create your own Binder using NATs as Broker* Mater Spring Cloud Data Flow architecture, data processing, and DSL* Integrate Spring Cloud Data Flow with Kubernetes* Use Spring Cloud Data Flow local server, Docker Compose, and Kubernetes* Discover the Spring Cloud Data Flow applications and how to use them* Work with source, processor, sink, tasks, Spring Flo and its GUI, and analytics via the new Micrometer stack for realtime visibility with Prometheus and GrafanaWHO THIS BOOK IS FORThose with some experience with the Spring Framework, Microservices and Cloud Native Applications. Java experience is recommended. FELIPE GUTIERREZ is a solutions software architect, with a bachelors and master degree in computer science from Instituto Tecnologico y de Estudios Superiores de Monterrey Campus Ciudad de Mexico. With over 20 years of IT experience, during which time he developed programs for companies in multiple vertical industries, such as government, retail, healthcare, education, and banking. Right now, he is currently working as a principal technical instructor for Pivotal, specializing in Cloud Foundry, Spring Framework, Spring Cloud Native Applications, Groovy, and RabbitMQ, among other technologies. He has worked as a solutions architect for big companies like Nokia, Apple, Redbox, and Qualcomm, among others. He is also the author of Introducing Spring Framework, Pro Spring Boot and Spring Boot Messaging, all published by Apress.Part I. Introductions1 - Cloud, Microservices and Big Data an Overview2 - Quick Introduction to Spring Framework and Spring Boot3 - Spring Integration4 - Spring Batch5 - Spring Cloud6 - Spring Cloud App Stream7 - Binders8 – Spring Cloud Data Flow Introduction & InstallationPart II. Spring Cloud Data Flow: Internals9 - Spring Cloud Data Flow Internals10 - Custom Source, Processor, Sink, Tasks with Spring Cloud Task11 - Analytics: Counters and Gauges

Regulärer Preis: 79,99 €
Produktbild für A Python Data Analyst's Toolkit

A Python Data Analyst's Toolkit

Explore the fundamentals of data analysis, and statistics with case studies using Python. This book will show you how to confidently write code in Python, and use various Python libraries and functions for analyzing any dataset. The code is presented in Jupyter notebooks that can further be adapted and extended.This book is divided into three parts – programming with Python, data analysis and visualization, and statistics. You'll start with an introduction to Python – the syntax, functions, conditional statements, data types, and different types of containers. You'll then review more advanced concepts like regular expressions, handling of files, and solving mathematical problems with Python.The second part of the book, will cover Python libraries used for data analysis. There will be an introductory chapter covering basic concepts and terminology, and one chapter each on NumPy(the scientific computation library), Pandas (the data wrangling library) and visualization libraries like Matplotlib and Seaborn. Case studies will be included as examples to help readers understand some real-world applications of data analysis.The final chapters of book focus on statistics, elucidating important principles in statistics that are relevant to data science. These topics include probability, Bayes theorem, permutations and combinations, and hypothesis testing (ANOVA, Chi-squared test, z-test, and t-test), and how the Scipy library enables simplification of tedious calculations involved in statistics.WHAT YOU'LL LEARN* Further your programming and analytical skills with Python* Solve mathematical problems in calculus, and set theory and algebra with Python* Work with various libraries in Python to structure, analyze, and visualize data* Tackle real-life case studies using Python* Review essential statistical concepts and use the Scipy library to solve problems in statistics WHO THIS BOOK IS FORProfessionals working in the field of data science interested in enhancing skills in Python, data analysis and statistics.Gayathri Rajagopalan works for a leading Indian multi-national organization, with ten years of experience in the software and information technology industry. A computer engineer and a certified Project Management Professional (PMP), some of her key focus areas include Python, data analytics, machine learning, and deep learning. She is proficient in Python, Java, and C/C++ programming. Her hobbies include reading, music, and teaching data science to beginners.Chapter 1: Introduction to Python [25 pages]Description: Python is one of the most popular open-source programming languages and is easy to learn as well.Topics to be covered:1. Installation – how to install Python and Anaconda2. Using Jupyter notebooks3. Data types in Python4. Loops and conditional statements5. Functions6. Strings and their methods7. PEP(Python Enhancement Proposal) guidelines8. Sympy library and solving mathematical problems with PythonChapter 2: Exploring Containers, Classes & Objects, and Working with Files [25 pages]Description: Understanding data structures, classes and objects and file handling in Python.Topics to be covered:1. Lists2. Tuples3. Dictionaries4. Sets5. Classes and Objects6. Working with filesChapter 3: Regular Expressions [20 pages]Description: Regular expressions are important to understand as they have a wide range of applications, from natural language processing to working with files to manipulating stringsTopics to be covered:1. Introduction to regular expressions2. Meta-characters3. Python functions for regular expressions4. Matching characters and sub-expressions5. Using conditions for matchingChapter 4: Data Analysis Basics [10 pages]Description: In this chapter, we will cover the basic terminology in data analysis and the data analysis workflowTopics to be covered:1. Basic concepts and definitions2. Levels of data3. Data analysis workflowChapter 5: Numpy Library [10 pages]Description: The Numpy library will be explained in detail.Topics to be covered:1. Introduction2. Creating arrays3. Slicing and dicing4. Array manipulationsChapter 6: Data Wrangling with Pandas [50 pages]Description: Everything related to Pandas, a widely used library used for manipulating and analyzing dataTopics to be covered:1. Introduction2. Series and their methods/functions3. DataFrames and their methods/functions4. Grouping and Aggregation5. Merging objects6. Tidying dataChapter 7: Data Visualization [20 pages]Description: An introduction to data visualization, which is crucial for and conveying insights to a new audienceTopics to be covered:1. Introduction2. Types of plots3. Creating plots with the Matplotlib library4. Using the Pandas library for drawing graphs5. Visualization with the Seaborn libraryChapter 8: Case Studies [60 pages]Each case study will start with an overview of the dataset, followed by an in-depth analysis of data that includes data tidying, wrangling, and visualization. The case study would conclude with crucial insights, and recommendations.1. Titanic survivors case study2. Analyzing unstructured data using a Wikipedia web page3. New Delhi Air Pollution case studyChapter 9: Essentials of Statistics [60 pages]Description: Knowledge of statistics and its applications, is essential for a data analyst or scientist, and this chapter will try to provide an accessible introduction to what is considered a complicated and confusing subject.Topics to be covered:1. Introduction2. Basic terms3. Measures of central tendency4. Probability5. Distributions6. Bayes Theorem7. Central Limit Theorem8. Hypothesis testing

Regulärer Preis: 56,99 €
Produktbild für Manipulationssichere Cloud-Infrastrukturen

Manipulationssichere Cloud-Infrastrukturen

Im Rahmen der sich beschleunigenden Digitalisierung wandern sowohl in der Privatwirtschaft als auch den öffentlichen Verwaltungen viele als kritisch bewertete Anwendungen und Dienste in die Cloud. Big Data, Maschinelles Lernen und Künstliche Intelligenz bieten viele Vorteile, werfen aber wachsende Sicherheits- und Datenschutzprobleme auf. Die Sicherheit der informationstechnischen Systeme, einschließlich und insbesondere der Cloud, wird somit zum Dreh- und Angelpunkt einer zuverlässigen, nachhaltigen und sicheren Wirtschaft und Verwaltung.Das vorliegende Buch gibt Antworten auf die von Sicherheitsverantwortlichen und -forschern gleichermaßen gestellte Frage „Wieviel Sicherheit ist genug?“. Dabei werden der rechtliche Rahmen beleuchtet, das Vertrauensdilemma des Cloud Computing herausgearbeitet und die grundsätzlich zur Verfügung stehenden Optionen für Cloud-Sicherheit mit einer Modellierung der Erfolgswahrscheinlichkeit der Angreifer beschrieben und quantitativ analysiert. Es wird gezeigt, wie mit dem Konzept einer manipulationssicheren, versiegelten Verarbeitung der notwendige Durchbruch bezüglich Datenschutz und IT-Sicherheit erzielt werden kann.Mit verschiedenen praktischen Anwendungsfällen der Sealed-Cloud-Technologie wird gezeigt, wie mit solch europäisch implementiertem „Confidential Cloud Computing“ Souveränität in der Datenökonomie gewonnen werden kann.DR. HUBERT A. JÄGER ist Unternehmer und Experte für Innovationen im Bereich der nachhaltigen Digitalisierung. Er baute zusammen mit Dr. Rieken die Uniscon GmbH auf und hält zahlreiche Patente zu unterschiedlichen Themen in der Informationstechnik und Telekommunikation, insbesondere zu Cloud-Sicherheit.DR. RALF O. G. RIEKEN ist Gründer und COO der Uniscon GmbH, einem Anbieter von hochsicheren Cloud-Lösungen. Er hatte zuvor verantwortliche Positionen bei führenden IT- und Netzinfrastrukturlieferanten inne, u.a. im Silicon Valley. Stand der Technik zum Cloud-Computing - Anforderungen geschäftskritischer Anwendungen - Gefühlte und reale Risiken - Überblick zu Konzepten für IT-Sicherheit und Datenschutz in der Cloud - Sealed Processing – ein rein technische Ansatz für Security - Praktische Anwendungen

Regulärer Preis: 54,99 €
Produktbild für Digitales Shopfloor Management in SAP-Systemumgebungen

Digitales Shopfloor Management in SAP-Systemumgebungen

Dieser Ratgeber zeigt Lösungsvarianten sowie Vorgehensmodelle auf und liefert einen schnellen Überblick, Entscheidungshilfen, praxisgerechte Hinweise, Erfahrungshintergrund aus Projekten und Expertenwissen für Ihre Digitalisierungsprojekte in der Fertigung. Erstellen Sie auf Grundlage dieses Buchs eine Roadmap mit den richtigen Prioritäten zur erfolgreichen Digitalisierung Ihrer Produktionsprozesse und verschaffen Sie sich damit Wettbewerbsvorteile in Ihrer Branche.DIPL.-INFORM. MANFRED DIETRICH hat über 20 Jahre Erfahrung in der Beratung von Fertigungsunternehmen und Optimierung von Produktionsabläufen. Mit der deTask CS GmbH (www.detask.de) begleitet er Digitalisierungsvorhaben in der Produktion in unterschiedlichen Branchen der Fertigungsindustrie.Ist-Analyse.-Lösungsbausteine und Varianten.-BI, KI und Cloud.-Erfolgsfaktoren.-Roadmap.

Regulärer Preis: 42,99 €
Produktbild für Applied Data Science Using PySpark

Applied Data Science Using PySpark

Discover the capabilities of PySpark and its application in the realm of data science. This comprehensive guide with hand-picked examples of daily use cases will walk you through the end-to-end predictive model-building cycle with the latest techniques and tricks of the trade.Applied Data Science Using PySpark is divided unto six sections which walk you through the book. In section 1, you start with the basics of PySpark focusing on data manipulation. We make you comfortable with the language and then build upon it to introduce you to the mathematical functions available off the shelf. In section 2, you will dive into the art of variable selection where we demonstrate various selection techniques available in PySpark. In section 3, we take you on a journey through machine learning algorithms, implementations, and fine-tuning techniques. We will also talk about different validation metrics and how to use them for picking the best models. Sections 4 and 5 go through machine learning pipelines and various methods available to operationalize the model and serve it through Docker/an API. In the final section, you will cover reusable objects for easy experimentation and learn some tricks that can help you optimize your programs and machine learning pipelines.By the end of this book, you will have seen the flexibility and advantages of PySpark in data science applications. This book is recommended to those who want to unleash the power of parallel computing by simultaneously working with big datasets.WHAT YOU WILL LEARN* Build an end-to-end predictive model* Implement multiple variable selection techniques* Operationalize models* Master multiple algorithms and implementations WHO THIS BOOK IS FORData scientists and machine learning and deep learning engineers who want to learn and use PySpark for real-time analysis of streaming data.RAMCHARAN KAKARLA is currently lead data scientist at Comcast residing in Philadelphia. He is a passionate data science and artificial intelligence advocate with five+ years of experience. He holds a master’s degree from Oklahoma State University with specialization in data mining. Prior to OSU, he received his bachelor’s in electrical and electronics engineering from Sastra University in India. He was born and raised in the coastal town of Kakinada, India. He started his career working as a performance engineer with several Fortune 500 clients including State Farm and British Airways. In his current role he is focused on building data science solutions and frameworks leveraging big data. He has published several papers and posters in the field of predictive analytics. He served as SAS Global Ambassador for the year 2015.SUNDAR KRISHNAN is passionate about artificial intelligence and data science with more than five years of industrial experience. He has tremendous experience in building and deploying customer analytics models and designing machine learning workflow automation. Currently, he is associated with Comcast as a lead data scientist. Sundar was born and raised in Tamil Nadu, India and has a bachelor's degree from Government College of Technology, Coimbatore. He completed his master's at Oklahoma State University, Stillwater. In his spare time, he blogs about his data science works on Medium.CHAPTER 1: SETTING UP THE PYSPARK ENVIRONMENTChapter Goal: Introduce readers to the PySpark environment, walk them through steps to setup the environment and execute some basic operationsNumber of pages: 20Subtopics:1. Setting up your environment & data2. Basic operationsCHAPTER 2: BASIC STATISTICS AND VISUALIZATIONSChapter Goal: Introduce readers to predictive model building framework and help them acclimate with basic data operationsNumber of pages: 30Subtopics:1. Basic Statistics2. data manipulations/feature engineering3. Data visualizations4. Model building frameworkCHAPTER 3: VARIABLE SELECTIONChapter Goal: Illustrate the different variable selection techniques to identify the top variables in a dataset and how they can be implemented using PySpark pipelinesNumber of pages: 40Subtopics:1. Principal Component Analysis2. Weight of Evidence & Information Value3. Chi square selector4. Singular Value Decomposition5. Voting based approachCHAPTER 4: INTRODUCTION TO DIFFERENT SUPERVISED MACHINE ALGORITHMS, IMPLEMENTATIONS & FINE-TUNING TECHNIQUESChapter Goal: Explain and demonstrate supervised machine learning techniques and help the readers to understand the challenges, nuances of model fitting with multiple evaluation metricsNumber of pages: 40Subtopics:1. Supervised:· Linear regression· Logistic regression· Decision Trees· Random Forests· Gradient Boosting· Neural Nets· Support Vector Machine· One Vs Rest Classifier· Naive Bayes2. Model hyperparameter tuning:· L1 & L2 regularization· Elastic netCHAPTER 5: MODEL VALIDATION AND SELECTING THE BEST MODELChapter Goal: Illustrate the different techniques used to validate models, demonstrate which technique should be used for a particular model selection task and finally pick the best model out of the candidate modelsNumber of pages: 30Subtopics:1. Model Validation Statistics:· ROC· Accuracy· Precision· Recall· F1 Score· Misclassification· KS· Decile· Lift & Gain· R square· Adjusted R square· Mean squared errorCHAPTER 6: UNSUPERVISED AND RECOMMENDATION ALGORITHMSChapter Goal: The readers explore a different set of algorithms – Unsupervised and recommendation algorithms and the use case of when to apply themNumber of pages: 30Subtopics:1. Unsupervised:· K-Means· Latent Dirichlet Allocation2. Collaborative filtering using Alternating least squaresCHAPTER 7: END TO END MODELING PIPELINESChapter Goal: Exemplify building the automated model framework and introduce reader to a end to end model building pipeline including experimentation and model trackingNumber of pages: 40Subtopics:1. ML FlowCHAPTER 8: PRODUCTIONALIZING A MACHINE LEARNING MODELChapter Goal: Demonstrate multiple model deployment techniques that can fit and serve variety of real-world use casesNumber of pages: 60Subtopics:1. Model Deployment using hdfs object2. Model Deployment using Docker3. Creating a simple Flask APICHAPTER 9: EXPERIMENTATIONSChapter Goal: The purpose of this chapter is to introduce hypothesis testing and use cases, optimizations for experiment-based data science applicationsNumber of pages: 40Subtopics:1. Hypothesis testing2. Sampling techniquesCHAPTER 10: OTHER TIPS: OPTIONALChapter Goal: This bonus chapter is optional and will offer reader some handy tips and tricks of the tradeNumber of pages: 20Subtopics:1. Tips on when to switch between python and PySpark2. Graph networks

Regulärer Preis: 56,99 €
Produktbild für Ontologies with Python

Ontologies with Python

Use ontologies in Python, with the Owlready2 module developed for ontology-oriented programming. You will start with an introduction and refresher on Python and OWL ontologies. Then, you will dive straight into how to access, create, and modify ontologies in Python. Next, you will move on to an overview of semantic constructs and class properties followed by how to perform automatic reasoning. You will also learn about annotations, multilingual texts, and how to add Python methods to OWL classes and ontologies. Using medical terminologies as well as direct access to RDF triples is also covered.Python is one of the most used programming languages, especially in the biomedical field, and formal ontologies are also widely used. However, there are limited resources for the use of ontologies in Python. Owlready2, downloaded more than 60,000 times, is a response to this problem, and this book is the first one on the topic of using ontologies with Python.WHAT YOU WILL LEARN* Use Owlready2 to access and modify OWL ontologies in Python* Publish ontologies on dynamic websites* Perform automatic reasoning in PythonUse well-known ontologies, including DBpedia and Gene Ontology, and terminological resources, such as UMLS (Unified Medical Language System)* Integrate Python methods in OWL ontologiesWHO IS THIS BOOK FORBeginner to experienced readers from biomedical sciences and artificial intelligence fields would find the book useful.Lamy Jean-Baptiste is a senior lecturer at Paris 13 University and a member of the LIMICS, a research lab focused on biomedical informatics. He is also the developer of the Owlready2 Python module that allows access to OWL ontologies. He has developed many research prototypes, and one of them (VCM iconic medical language) has been patented in the US, with three licenses sold to industrial partners.Lamy speaks regularly at artificial intelligence and medical informatics conferences, has written over 50 journal papers, and is a moderator on the Owlready forum on Nabbles. He was awarded the best paper award at MEDINFO 2019, the largest international conference in medical informatics.Chapter 1: Introduction1. Who is this book for?2. Why ontologies?3. Why Python?4. Why Owlready?5. Book outline6. AcknowledgementsChapter 2: Python Language: Adopt a Snake!1. Installing Python2. Starting Python3. Syntax4. Main datatypes5. Conditions (if)6. Loops (for)7. Generators8. Functions (def)9. Classes (class)10. Python modules11. Installing Owlready212. SummaryChapter 3: OWL Ontologies1. An ontology... what does it look like?2. Creating ontologies manually with the Protégé editor3. Example: An ontology of bacteria4. Creating a new ontology• Classes• Disjoints• Partitions • Data properties• Object properties• Restrictions• Union, intersection, and complement• Definitions (equivalent to relations)• Individuals• Other constructs5. Automatic reasoning6. Modeling exercises7. SummaryChapter 4: Accessing Ontologies in Python1. Importing Olwready2. Loading an ontology3. Imported ontologies4. Listing the content of the ontology5. Accessing to entities• Individuals• Relations• Classes• Existential restrictions• Properties6. Searching for entities7. Huge ontologies and disk cache8. Namespaces9. Modifying entity rendering as text10. Local directory of ontologies11. Reloading an ontology in the quadstore12. Example: Creating a dynamic website from an ontology13. SummaryChapter 5: Creating and Modifying Ontologies in Python1. Creating an empty ontology 2. Creating classes3. Creating properties4. Creating individuals5. Modifying entities: Relations and existential restrictions6. Creating entities within a namespace7. Renaming entities (refactoring)8. Multiple definitions and forward declarations9. Destroying entities10. Destroying an ontology11. Saving an ontology12. Importing ontologies13. Synchronization14. Example: Populating an ontology from a CSV file15. SummaryChapter 6: Constructs, Restrictions, Class Properties1. Creating constructs2. Accessing constructs parameters3. Restrictions as class properties4. Defined classes5. Example: Creating the ontology of bacteria in Python6. Example: Populating an ontology with defined classes7. SummaryChapter 7: Automatic Reasoning1. Disjoints2. Open-world assumption3. Reasoning in a closed world, or in a local closed world4. Inconsistent classes and inconsistent ontologies5. Restriction and reasoning on numbers and strings6. SWRL rules7. Example: An ontology-based decision support system8. SummaryChapter 8: Annotations, Multilingual Texts and Full Text Search1. Annotating entities2. Multilingual texts3. Annotating constructs4. Annotating properties and relations5. Creating new annotation classes6. Ontology metadata7. Full text search8. Example: Using DBpedia in Python• Loading DBpedia• A search engine for Dbpedia9. SummaryChapter 9: Using Medical Terminologies with PyMedTermino and UMLS1. UMLS2. Importing terminologies from UMLS3. Loading terminologies after initial importation4. Using ICD105. Using SNOMED CT6. Using UMLS unified concepts (CUI)7. Transcoding between terminologies8. Manipulating sets of concepts9. Importing all terminologies in UMLS10. Example: Linking the ontology of bacteria with UMLS11. Example: A multi-terminology browser12. SummaryChapter 10: Mixing Python and OWL1. Adding Python methods to OWL classes2. Associating a Python module to an ontology• Manual import• Automatic import3. Polymorphism with type inference4. Introspection5. Reading restrictions backward6. Example: using Gene Ontology and managing part-of relations7. Example: A “dating site” for proteins8. SummaryChapter 11: Working with RDF Triples and Worlds1. RDF triples2. Manipulating RDF triples with RDFlib3. Performing SPARQL requests4. Accessing RDF triples with Owlready5. Interrogating the SQLite3 database directly6. Creating several, isolated, world7. SummaryAnnex A: Description logicsAnnex B: Notations for formal ontologiesAnnex C: Reference manual

Regulärer Preis: 56,99 €
Produktbild für C++20 for Lazy Programmers

C++20 for Lazy Programmers

Ready to learn programming with less effort and more fun? Then do it the lazy way! C++20 for Lazy Programmers uses humor and fun to make you actually willing to read and eager to do the projects as you master the popular and powerful C++ language. Along the way it includes many features from the new C++20 standard, such as ranges, spans, format strings, the “spaceship” operator, and concepts (template parameter requirements), and provides brief introductions to modules and coroutines.With this unique method, you’ll stretch your abilities with a variety of projects, including your own C++ arcade game. You'll construct your own classes, templates, and abstract data types. After reading and using this book you’ll be ready to build real-world C++ applications and game projects on your own.WHAT YOU WILL LEARN:* The brand-new C++20 standard* Programming graphics and games with the SDL library, using SSDL, the "Simple SDL" wrapper library* How to use the most common C++ compilers -- Visual Studio for Windows, and g++ (with Unix or MinGW) -- and their associated debuggers* “Anti-bugging” for easy fixes to common problems * Sound practices for becoming a productive programmer* How to make your own big projects, including a C++-based arcade game * The built-in Standard Template Library (STL) functions and classes for easy and efficient programming* Powerful data types including strings, stacks, vectors, and linked lists -- not by reading about them but by building them -- preparing you further for a career in programmingWHO THIS BOOK IS FORAll who are new to C++, either self-learners or students in college-level courses.WILL BRIGGS, PhD is a professor of computer science at the University of Lynchburg in Virginia. He has 20+ years of experience teaching C++, 12 of them using earlier drafts of this book, and about as many years teaching other languages including C, LISP, Pascal, PHP, PROLOG, and Python. His primary focus is teaching of late while also active in research in artificial intelligence.Introduction 1-11 Getting started 1-91.1 A simple program 1-91.2 Creating an SSDL project 1-121.3 Shapes and the functions that draw them 1-271.4 consts and colors 1-351.5 Text 1-37Prominent examples from this chapter: a drawing of a bug's head; a neatly printed poem.2 Images and sound 2-432.1 Images and changing window characteristics 2-432.2 Multiple images together 2-482.3 Adding transparency with GIMP 2-502.4 Sound 2-54Example: a slide show (Your yard gnome's travel pics).3 Math: types, operations, consts, and math functions 3-563.1 Variables 3-563.2 const, constexpr, constinit 3-573.3 Math operators 3-593.4 Built-in functions and casting 3-62Examples: diver on a diving board; a 5-pointed star.C++20 updates: constexpr, constinit.After this chapter, constexpr/constinit show up in most examples.4 Mouse, and if 4-674.1 Mouse functions 4-674.2 if 4-694.3 Boolean values and variables 4-734.4 A hidden-object game 4-75Example: The hidden-object game.5 Loops and text input 5-795.1 Keyboard input 5-795.2 while and do-while 5-815.3 for loops 5-855.4 chars and cctype 5-905.5 switch 5-94Examples: the Monty Hall problem; menus.6 Algorithms and the development process 6-976.1 Adventures in robotic cooking 6-976.2 Writing a program from start to finish 6-100Example: a bullseye pattern.7 Functions 7-1067.1 Functions that return values 7-1067.2 Functions that return nothing 7-1097.3 Global variables and why they're evil 7-1117.4 How to write a function in four easy steps (and call it in one) 7-1137.5 Why have functions, anyway? 7-117Example: a multi-frame comic (illustrates code reuse).8 Functions (Continued) 8-1268.1 Random numbers 8-1268.2 Boolean functions 8-1318.3 Multiple values provided: using & parameters 8-1338.4 Identifier scope 8-1388.5 A final note on algorithms 8-140Examples: various functions using random number generation.9 Using the debugger 9-1419.1 A flawed program 9-1419.2 Breakpoints and watched variables 9-1459.3 Fixing the stripes 9-1459.4 Going into functions 9-1499.4 Fixing the stars 9-1499.4 Wrap-up 9-1509.4 Other debugging techniques 9-1539.4 More on antibugging 9-156Example: a national flag.10 Arrays and enum class 10-15910.1 Arrays 10-15910.2 Arrays as function parameters 10-16010.3 enum class 10-16610.4 Multidimensional arrays 10-166Examples: monthly temperatures, checkers, tic-tac-toe.C++20 update: using enum class (which significantly improves the usefulness of enum class).11 Animation with structs and sprites 11-17311.1 struct 11-17311.2 Making a movie with struct and while 11-17611.3 Sprites 11-182Examples: bouncing balls; a video aquarium.C++20 update: designated initializers for structs.12 Building your own arcade game: input, collisions, and putting it all together 12-18812.1 Determining input states 12-18812.2 Events 12-19012.3 Cooldowns and lifetimes 12-19112.4 Collisions 12-19412.5 The big game 12-195Examples: an arcade game, and the student's own game.13 Standard I/O and file operations 13-20413.1 Standard I/O programs in Visual C++ and g++ 13-20413.2 File I/O (optional) 13-210Examples: various programs reading/writing text files.Except for Chapter 21 (virtual functions), this and subsequent chapters use standard console I/O, not the SSDL graphics library.If used for a course, this chapter likely ends the first semester, so if students are going into a class with a different textbook, they are ready for the console I/O it will certainly require them to know.14 Character arrays and dynamic memory (pointers) 14-22114.1 Character arrays 14-22114.2 Dynamic allocation of arrays. 14-22414.3 Using the * notation 14-228Examples: C's string functions, written as examples or offered as exercises; code with new and deleteC++20 updates: array size deduction in new expressions.15 Classes: the basics 15-23215.1 Writing classes 15-23215.2 Constructors 15-23515.3 const objects, const member functions... 15-23915.4 ...and const parameters 15-24115.5 Multiple constructors 15-24115.6 Default parameters for code reuse 15-24415.7 Date program (so far) 15-245Examples: the Date class; the student's own Time class.16 Classes, continued 16-24816.1 inline functions for efficiency 16-24816.2 Access functions 16-24916.3 static members, inline, and constexpr/constinit 16-25016.4 Separate compilation and include files 16-25216.5 Multiple-file projects in Microsoft Visual C++ 16-25716.7 Multiple-file projects in g++ 16-25916.8 Final Date program 16-264Examples: the Date class; the student's own Time class, continued.C++20 updates: constexpr/consteval member functions; constexpr/constinit data members and their interaction with static.17 Operators, and destructors 17-26817.1 The basic string class 17-26817.2 Destructors 17-27017.3 == and != operators 17-27117.3 Other comparison operators, using the spaceship operator 17-27117.4 Assignment operators and *this 17-27317.5 Arithmetic operators 17-27517.6 [] and () operators 17-27917.7 >> and

Regulärer Preis: 62,99 €
Produktbild für PHP 8 Quick Scripting Reference

PHP 8 Quick Scripting Reference

This pocket reference has been updated with the new PHP 8 release. It is a condensed, code-rich scripting and syntax handbook for the PHP scripting language. 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 web scripting 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 PHP programmer or web developer. In it, you will find a concise reference to the PHP 8 scripting language syntax. It includes short, simple, and focused code examples; a well-laid-out table of contents; and a comprehensive index allowing easy review.PHP 8 Quick Scripting Reference presents the essentials of PHP in a well-organized format, including new features in PHP 8 such as the just in time (JIT) compiler, union types, nullsafe operator, null coalescing assignment operator, match expressions, named arguments, throw expressions, static return type, non-capturing catches, reclassified engine warnings and constructor property promotion.WHAT YOU WILL LEARN* Discover what is new in PHP 8 and how to get started with it* Work with variables, operators, strings, arrays, conditionals, loops, and other constructs* Group and reuse code with functions, methods, and namespaces* Use object-oriented features such as classes, inheritance, abstract classes, and interfaces* Import files and retrieve user dataMake use of type declarations and type conversions * Test variables, create references, and use overloading methods* Store user data with cookies and sessions* Deal with errors through error handling, exception handling, and assertionsWHO THIS BOOK IS FORExperienced PHP programmers and web developers who may be new to PHP.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. Using PHP2. Variables3. Operators4. Strings5. Arrays6. Conditionals7. Loops8. Functions9. Class10. Inheritance11. Access Levels12. Static13. Constants14. Interface15. Abstracts16. Traits17. Importing Files18. Type Declarations19. Type Conversions20. Variable Testing21. Overloading22. Magic Methods23. User Input24. Cookies25. Sessions26. Namespaces27. References28. Advanced Variables29. Error Handling30. Exception Handling31. Assertions

Regulärer Preis: 46,99 €
Produktbild für C++ All-in-One For Dummies

C++ All-in-One For Dummies

GET READY FOR C++20 WITH ALL YOU NEED TO KNOW FOR COMPLETE MASTERY!Your comprehensive and updated guide to one of the world’s most popular programming languages is here! Whether you’re a novice or expert, you’ll find what you need to get going with the latest features of C++20. The workhorse of programming languages, C++ gives you the utmost control of data usage and interface and resource allocation. If your job involves data, proficiency in C++ means you’re indispensable!This edition gives you 8 books in 1 for total C++ mastery. Inside, internationally renowned expert John Paul Mueller takes you from the fundamentals of working with objects and classes to writing applications that use paradigms not normally associated with C++, such as those used for functional programming strategies. The book also includes online resources such as source code. You discover how to use a C++ GNU compiler to build applications and even how to use your mobile device for coding.* Conquer advanced programming and troubleshooting * Streamline your code with lambda expressions* Use C++ where you need it: for gaming, enterprise applications, and Web services* Uncover object secrets including the use of design patterns * Discover how to use functional programming techniques to make code concise and easy to readIf you want to be your organization’s C++ guru, C++ All-In-One for Dummies is where it’s at!JOHN PAUL MUELLER has produced 116 books and more than 600 articles on a range of topics that include functional programming techniques, application devel- opment using C++, and machine learning methodologies. INTRODUCTION 1About This Book 1Foolish Assumptions 4Icons Used in This Book 4Beyond the Book 5Where to Go from Here 6BOOK 1: GETTING STARTED WITH C++ 7CHAPTER 1: CONFIGURING YOUR DESKTOP SYSTEM 9Obtaining a Copy of C++ 20 10Obtaining Code::Blocks 11Installing Code::Blocks 12Working with Windows 12Working with Mac OS X 13Using the standard Linux installation 14Using the graphical Linux installation 15Touring the Essential Code::Blocks Features 17Starting Code::Blocks for the first time 18Opening the sample projects 19Viewing the essential windows 20Using Other IDEs 25CHAPTER 2: CONFIGURING YOUR MOBILE SYSTEM 27Obtaining CppDroid 28Understanding why CppDroid is such a great choice 29Getting your copy of CppDroid 31Ensuring you get a good install 32Considering Other Alternatives 32Working with C4Droid 33Getting multiple language support with AIDE 33Using web-based IDEs 34Touring the Essential CppDroid Features 35Getting started with CppDroid 35Accessing an example 37Working with a simple online project 37Accessing your source code 38Considering differences with the desktop environment 39Obtaining CppDroid Help 40Working with the Help documentation 40Getting community support 41Using the free examples 42Accessing the tutorials 43CHAPTER 3: CREATING YOUR FIRST C++ APPLICATION 45Code::Blocks Creating a Project 46Understanding projects 46Defining your first project 47Building and executing your first application 52Typing the Code 53Starting with Main 55Showing Information 55Doing some math 60Tabbing your output 66Let Your Application Run Away 67CHAPTER 4: STORING DATA IN C++ 69Putting Your Data Places: Variables 70Creating an integer variable 70Declaring multiple variables 73Changing values 74Setting one variable equal to another 74Initializing a variable 75Creating a great name for yourself 76Manipulating Integer Variables 78Adding integer variables 78Subtracting integer variables 82Multiplying integer variables 84Dividing integer variables 86Characters 88Null character 89Nonprintable and other cool characters 89Strings 93Getting a part of a string 94Changing part of a string 95Adding onto a string 96Adding two strings 97Making Decisions Using Conditional Operators 98Telling the Truth with Boolean Variables 100Reading from the Console 102CHAPTER 5: DIRECTING THE APPLICATION FLOW 105Doing This or Doing That 106Evaluating Conditions in C++ 107Finding the right C++ operators 108Combining multiple evaluations 110Including Evaluations in C++ Conditional Statements 111Deciding what if and also what else 112Going further with the else and if 113Repeating Actions with Statements That Loop 115Understanding how computers use loops 116Looping situations 116Looping for 117Performing a simple for loop 118Using multiple initialization variables 123Working with ranges 126Placing a condition within the declaration 128Letting C++ determine the type 129Looping while 130Doing while 132Breaking and continuing 133Breaking 134Continuing 135Nesting loops 136CHAPTER 6: DIVIDING YOUR WORK WITH FUNCTIONS 139Dividing Your Work 139Calling a Function 144Passing a variable 146Passing multiple variables 147Writing Your Own Functions 148Defining the AddOne() function 149Seeing how AddOne() is called 150Taking the AddOne() Function apart 150Considering the AddOne() parameter 151Understanding the AddOne() name and type 152Improving On the Basic Function 153Using multiple parameters or no parameters 153Returning nothing 156Keeping your variables local 157Forward references and function prototypes 159Writing two versions of the same function 161Calling All String Functions 163Inserting a string into a string 163Removing parts of a string 164Replacing parts of a string 164Using the string functions together 164Understanding main() 165CHAPTER 7: SPLITTING UP SOURCE CODE FILES 169Creating Multiple Source Files 170Adding a new source code file 170Removing an existing source code file 173Creating a project with multiple existing files 173Getting multiple files to interact 177Sharing with Header Files 179Adding the header only once 182Using angle brackets or quotes 182Sharing Variables among Source Files 183Using the Mysterious Header Wrappers 185CHAPTER 8: REFERRING TO YOUR DATA THROUGH POINTERS 187Understanding the Changes in Pointers for C++ 20 188Avoiding broken code 188Considering the issues 189Writing cleaner and less bug-prone code 191Heaping and Stacking the Variables 192Getting a variable’s address 196Changing a variable by using a pointer 198Pointing at a string 200Pointing to something else 203Tips on pointer variables 204Creating New Raw Pointers 205Using new 206Using an initializer 208Freeing Raw Pointers 209Working with Smart Pointers 211Creating smart pointers using std::unique_ptr and std::shared_ptr 212Defining nullable values using std::optional and std::nullopt 216Passing Pointer Variables to Functions 218Returning Pointer Variables from Functions 221PART 2: UNDERSTANDING OBJECTS AND CLASSES 225CHAPTER 1: WORKING WITH CLASSES 227Understanding Objects and Classes 227Classifying classes and objects 230Describing methods and data 231Implementing a class 232Separating method code 237The parts of a class 240Working with a Class 241Accessing members 241Using classes and raw pointers 244Using classes and smart pointers 248Passing objects to functions 249Using const parameters in functions 251Using the this pointer 252Overloading methods 256Starting and Ending with Constructors and Destructors 259Starting with constructors 259Ending with destructors 260Sampling constructors and destructors 260Adding parameters to constructors 263Building Hierarchies of Classes 264Creating a hierarchy in C++ 265Understanding types of inheritance 266Creating and Using Object Aliases 267CHAPTER 2: USING ADVANCED C++ FEATURES 269Filling Your Code with Comments 270Converting Types 272Understanding how int and string conversions work 272Seeing int and string conversions in action 273Considering other conversion issues 276Reading from the Console 277Understanding Preprocessor Directives 282Understanding the basics of preprocessing 282Creating constants and macros with #define 283Performing conditional compilation 286Exercising the basic preprocessor directives 288Using Constants 292Using Switch Statements 295Supercharging enums with Classes 298Working with Random Numbers 300Storing Data in Arrays 302Declaring and accessing an array 303Arrays of pointers 304Passing arrays to functions 306Adding and subtracting pointers 307CHAPTER 3: PLANNING AND BUILDING OBJECTS 309Recognizing Objects 310Observing the Mailboxes class 312Observing the Mailbox class 314Finding other objects 315Encapsulating Objects 316Considering the Application Programming Interface 316Understanding properties 316Choosing between private and protected 318Defining a process 318Implementing properties 319Building Hierarchies 322Establishing a hierarchy 322Protecting members when inheriting 324Overriding methods 330Specializing with polymorphism 332Getting abstract about things 333CHAPTER 4: BUILDING WITH DESIGN PATTERNS 335Delving Into Pattern History 336Introducing a Simple Pattern: the Singleton 337Using an existing pattern 337Creating a singleton pattern class 338Watching an Instance with an Observer 341Understanding the observer pattern 341Defining an observer pattern class 343Observers and the Standard C++ Library 346Automatically adding an observer 347Mediating with a Pattern 349Defining the mediator pattern scenario 350Outlining the car example 351Creating the car example 354BOOK 3: UNDERSTANDING FUNCTIONAL PROGRAMMING 367CHAPTER 1: CONSIDERING FUNCTIONAL PROGRAMMING 369Understanding How Functional Programming Differs 370Defining an Impure Language 373Considering the requirements 373Understanding the C++ functional limitations 374Seeing Data as Immutable 375Working with immutable variables 376Working with immutability in classes and structures 377Creating constant expressions 378Considering the Effects of State 381Eliminating Side Effects 382Contrasting declarations and functions 383Associating functions with side effects 384Removing side effects 385Creating a declarative C++ example 387Understanding the Role of auto 388Passing Functions to Functions 390Seeing a simple example of function input 391Using transforms 393Using Lambda Expressions for Implementation 394CHAPTER 2: WORKING WITH LAMBDA EXPRESSIONS 397Creating More Readable and Concise C++ Code 398Defining the Essential Lambda Expression 399Defining the parts of a lambda expression 399Relying on computer detection of return type 401Using the auto keyword with lambda expressions 404Using lambda expressions as macros 405Developing with Lambda Expressions 406Using lambda expressions with classes and structures 407Working with the capture clause 408Sorting data using a lambda expression 411Specifying that the lambda expression throws exceptions 413CHAPTER 3: ADVANCED LAMBDA EXPRESSIONS 415Considering the C++ 20 Lambda Extensions 416Defining an immediate function 416Using = and this in captures 417Finding other changes 418Working in Unevaluated Contexts 418Using Assignable Stateless Lambda Expressions 420Dealing with Pack Expansions 422Considering the template 422Processing the variables using recursion 423Processing the variables using a lambda expression 424BOOK 4: FIXING PROBLEMS 427CHAPTER 1: DEALING WITH BUGS 429It’s Not a Bug It’s a Feature! 430Make Your Application Features Look Like Features 431Anticipating (Almost) Everything 432Considering menus 432Dealing with textual input 435Performing string processing 437Avoiding Mistakes, Plain and Simple 441CHAPTER 2: DEBUGGING AN APPLICATION 443Programming with Debuggers 444Running the debugger 446Recognizing the parts of the Code::Blocks debugger 453Debugging with Different Tools 455Debugging a Code::Blocks Application with Command-Line Arguments 456CHAPTER 3: STOPPING AND INSPECTING YOUR CODE 457Setting and Disabling Breakpoints 458Setting a breakpoint in Code::Blocks 459Enabling and disabling breakpoints 460Watching, Inspecting, and Changing Variables 463Watching the variables 465Changing values 466CHAPTER 4: TRAVELING ABOUT THE STACK 469Stacking Your Data 470Moving about the stack 471Storing local variables 473Debugging with Advanced Features 475Viewing threads 475Tracing through assembly code 475BOOK 5: ADVANCED PROGRAMMING 479CHAPTER 1: WORKING WITH ARRAYS, POINTERS, AND REFERENCES 481Building Up Arrays 482Declaring arrays 482Arrays and pointers 484Using multidimensional arrays 488Arrays and command-line parameters 492Allocating an array on the heap 494Deleting an array from the heap 494Storing arrays of pointers and arrays of arrays 495Building constant arrays 498Pointing with Pointers 498Becoming horribly complex 499Pointers to functions 505Pointing a variable to a method 506Pointing to static methods 509Referring to References 510Reference variables 510Returning a reference from a function 511CHAPTER 2: CREATING DATA STRUCTURES 515Working with Data 515The great variable roundup 516Expressing variables from either side 518Casting a spell on your data 520Comparing casting and converting 521Casting safely with C++ 523Structuring Your Data 529Structures as component data types 531Equating structures 531Returning compound data types 532Naming Your Space 534Creating a namespace 534Employing using namespace 535Using variables 537Using part of a namespace 538CHAPTER 3: CONSTRUCTORS, DESTRUCTORS, AND EXCEPTIONS 541Constructing and Destructing Objects 542Overloading constructors 542Initializing members 543Adding a default constructor 548Functional constructors 550Calling one constructor from another 553Copying instances with copy constructors 555When constructors go bad 557Destroying your instances 558Virtually inheriting destructors 560Programming the Exceptions to the Rule 563Creating a basic try catch block 563Using multiple catch blocks 565Throwing direct instances 566Catching any exception 567Rethrowing an exception 568Using a standard category 570CHAPTER 4: ADVANCED CLASS USAGE 571Inherently Inheriting Correctly 572Morphing your inheritance 572Avoiding polymorphism 573Adjusting access 574Avoiding variable naming conflicts 575Using class-based access adjustment 576Returning something different, virtually speaking 577Multiple inheritance 581Virtual inheritance 584Friend classes and functions 588Using Classes and Types within Classes 591Nesting a class 591Types within classes 597CHAPTER 5: CREATING CLASSES WITH TEMPLATES 601Templatizing a Class 602Considering types 602Defining the need for templates 602Creating and using a template 605Understanding the template keyword 607Going Beyond the Basics 609Separating a template from the function code 609Including static members in a template 611Parameterizing a Template 612Putting different types in the parameter 613Including multiple parameters 616Working with non-type parameters 619Typedefing a Template 622Deriving Templates 623Deriving classes from a class template 623Deriving a class template from a class 626Deriving a class template from a class template 627Templatizing a Function 630Overloading and function templates 632Templatizing a method 635CHAPTER 6: PROGRAMMING WITH THE STANDARD LIBRARY 637Architecting the Standard Library 638Containing Your Classes 638Storing in a vector 639Working with std::array 642Mapping your data 643Containing instances, pointers, or references 644Working with copies 648Comparing instances 649Iterating through a container 655A map of pairs in your hand 658The Great Container Showdown 658Associating and storing with a set 658Unionizing and intersecting sets 662Listing with list 664Stacking the deque 669Waiting in line with stacks and queues 670Copying Containers 673Creating and Using Dynamic Arrays 675Working with Unordered Data 677Using std::unordered_set to create an unordered set 677Manipulating unordered sets 677Working with Ranges 679BOOK 6: READING AND WRITING FILES 681CHAPTER 1: FILING INFORMATION WITH THE STREAMS LIBRARY 683Seeing a Need for Streams 684Programming with the Streams Library 686Getting the right header file 686Opening a file 687Reading from a file 690Reading and writing a file 691Working with containers 692Handling Errors When Opening a File 693Flagging the ios Flags 695CHAPTER 2: WRITING WITH OUTPUT STREAMS 697Inserting with the

Regulärer Preis: 29,99 €
Produktbild für Programming Kotlin Applications

Programming Kotlin Applications

LEARN TO PROGRAM WITH KOTLIN, ONE OF THE FASTEST-GROWING PROGRAMMING LANGUAGES AVAILABLE TODAYProgramming Kotlin Applications: Building Mobile and Server-Side Applications with Kotlin drops readers into the fast lane for learning to develop with the Kotlin programming language. Authored by accomplished cloud consultant and technology professional Brett McLaughlin, Programming Kotlin Applications provides readers with the pragmatic and practical advice they need to build their very first Kotlin applications.Designed to give readers a thorough understanding of Kotlin that goes beyond mere mobile programming, this book will help you:* Learn how to develop your first Kotlin project* Understand how Kotlin securely protects and stores information* Advocate for using Kotlin in your own professional and personal environments* Understand Kotlin's goals and how to use it as its best* Know when to avoid using KotlinProgramming Kotlin Applications is written in a highly approachable and accessible way without the fluff and unrealistic samples that characterize some of its competitor guides. Perfect for developers familiar with another object-oriented programming language like Java or Ruby, or for people who want to advance their skillset in the Kotlin environment, this book is an indispensable addition to any programmer’s library.About the author BRETT MCLAUGHLIN has over two decades of experience working and writing in technology. He focuses on cloud and enterprise computing and has become a recognized and trusted name in helping organizations migrate to the cloud, especially with Amazon Web Services. He has led large-scale cloud migrations for NASA's Earth Science program as well as the RockCreek Group's financial platform. He is a sought-after speaker, author, and educator. Visit us at wrox.com for free code samples. Introduction xxvCHAPTER 1: OBJECTS ALL THE WAY DOWN 1Kotlin: A New Programming Language 1What is Kotlin? 2What Does Kotlin Add to Java? 3Kotlin is Object-Oriented 3Interlude: Set Up Your Kotlin Environment 4Install Kotlin (and an IDE) 4Install IntelliJ 5Create Your Kotlin Program 8Compile and Run Your Kotlin Program 9Fix Any Errors as They Appear 10Install Kotlin (and Use the Command Line) 10Command-Line Kotlin on Windows 10Command-Line Kotlin on Mac OS X 11Command-Line Kotlin on UNIX-Based Systems 12Verify Your Command-Line Installation 12Creating Useful Objects 13Pass In Values to an Object Using Its Constructor 13Print an Object with toString() 14Terminology Update: Functions and Methods 15Print an Object (and Do It with Shorthand) 15Override the toString() Method 16All Data is Not a Property Value 17Initialize an Object and Change a Variable 19Initialize a Class with a Block 19Kotlin Auto-Generates Getters and Setters 20Terminology Update: Getters, Setters, Mutators, Accessors 20Constants Can’t Change (Sort of) 21CHAPTER 2: IT’S HARD TO BREAK KOTLIN 25Upgrade Your Kotlin Class Game 25Name a File According to Its Class 26Organize Your Classes with Packages 27Put Person in a Package 28Classes: The Ultimate Type in Kotlin 31Kotlin Has a Large Number of Types 31Numbers in Kotlin 31Letters and Things 32Truth or Fiction 33Types Aren’t Interchangeable (Part 1) 33You Must Initialize Your Properties 34Types Aren’t Interchangeable (Part 2) 35You Can Explicitly Tell Kotlin What Type to Use 36Try to Anticipate How Types Will Be Used 37It’s Easy to Break Kotlin (Sort of) 37Overriding Property Accessors and Mutators 37Custom-Set Properties Can’t Be in a Primary Constructor 38Move Properties Out of Your Primary Constructors 38Initialize Properties Immediately 39Try to Avoid Overusing Names 41Override Mutators for Certain Properties 41Classes Can Have Custom Behavior 43Define a Custom Method on Your Class 43Every Property Must Be Initialized 44Assign an Uninitialized Property a Dummy Value 45Tell Kotlin You’ll Initialize a Property Later 45Assign Your Property the Return Value from a Function 46Sometimes You Don’t Need a Property! 47TYPE SAFETY CHANGES EVERYTHING 49Writing Code is Rarely Linear 49CHAPTER 3: KOTLIN IS EXTREMELY CLASSY 51Objects, Classes, and Kotlin 51All Classes Need an equals(x) Method 52Equals(x) is Used to Compare Two Objects 52Override equals(x) to Make It Meaningful 54Every Object is a Particular Type 56A Brief Introduction to Null 58Every Object Instance Needs a Unique hashCode() 59All Classes Inherit from Any 59Always Override hashCode() and equals(x) 61Default Hash Codes Are Based on Memory Location 63Use Hash Codes to Come Up with Hash Codes 63Searching (and Other Things) Depend on Useful and Fast equals(x) and hashCode() 64Multiple Properties to Differentiate Them in hashCode() 65Use == over equals(x) for Speed 66A Quick Speed Check on hashCode() 66Basic Class Methods Are Really Important 67CHAPTER 4: INHERITANCE MATTERS 69Good Classes Are Not Always Complex Classes 69Keep It Simple, Stupid 70Keep It Flexible, Stupid 71Classes Can Define Default Values for Properties 73Constructors Can Accept Default Values 74Kotlin Expects Arguments in Order 74Specify Arguments by Name 74Change the Order of Arguments (If You Need) 75Secondary Constructors Provide Additional Construction Options 76Secondary Constructors Come Second 76Secondary Constructors Can Assign Property Values 77You Can Assign null to a Property . . . Sometimes 79null Properties Can Cause Problems 81Handle Dependent Values with Custom Mutators 82Set Dependent Values in a Custom Mutator 82All Property Assignments Use the Property’s Mutator 83Nullable Values Can Be Set to null! 84Limit Access to Dependent Values 86When Possible, Calculate Dependent Values 87You Can Avoid Parentheses with a Read-Only Property 88Need Specifics? Consider a Subclass 91Any is the Base Class for Everything in Kotlin 91{ . . . } Is Shorthand for Collapsed Code 93A Class Must Be Open for Subclassing 94Terminology: Subclass, Inherit, Base Class, and More 95A Subclass Must Follow Its Superclass’s Rules 96A Subclass Gets Behavior from All of Its Superclasses 96Your Subclass Should Be Different Than Your Superclass 97Subclass Constructors Often Add Arguments 97Don’t Make Mutable What Isn’t Mutable 98Sometimes Objects Don’t Exactly Map to the Real World 99Generally, Objects Should Map to the Real World 99CHAPTER 5: LISTS AND SETS AND MAPS, OH MY! 101Lists Are Just a Collection of Things 101Kotlin Lists: One Type of Collection 101Collection is a Factory for Collection Objects 102Collection is Automatically Available to Your Code 104Mutating a Mutable List 105Getting Properties from a Mutable List 105Lists (and Collections) Can Be Typed 106Give Your Lists Types 107Iterate over Your Lists 108Kotlin Tries to Figure Out What You Mean 111Lists Are Ordered and Can Repeat 111Order Gives You Ordered Access 112Lists Can Contain Duplicate Items 112Sets: Unordered but Unique 113In Sets, Ordering is Not Guaranteed 114When Does Order Matter? 115Sort Lists (and Sets) on the Fly 115Sets: No Duplicates, No Matter What 116Sets “Swallow Up” Duplicates 116Sets Use equals(x) to Determine Existing Membership 116Using a Set? Check equals(x) 119Iterators Aren’t (Always) Mutable 119Maps: When a Single Value Isn’t Enough 119Maps Are Created by Factories 120Use Keys to Find Values 120How Do You Want Your Value? 121Filter a Collection by . . . Anything 121Filter Based on a Certain Criterion 122Filter Has a Number of Useful Variations 123Collections: For Primitive and Custom Types 123Add a Collection to Person 124Allow Collections to Be Added to Collection Properties 126Sets and MutableSets Aren’t the Same 127Collection Properties Are Just Collections 128CHAPTER 6: THE FUTURE (IN KOTLIN) IS GENERIC 129Generics Allow Deferring of a Type 129Collections Are Generic 129Parameterized Types Are Available Throughout a Class 130Generic: What Exactly Does It Refer To? 131Generics Try to Infer a Type When Possible 132Kotlin Looks for Matching Types 132Kotlin Looks for the Narrowest Type 132Sometimes Type Inference is Wrong 133Don’t Assume You Know Object Intent 133Kotlin Doesn’t Tell You the Generic Type 134Just Tell Kotlin What You Want! 134Covariance: A Study in Types and Assignment 134What about Generic Types? 135Some Languages Take Extra Work to Be Covariant 137Kotlin Actually Takes Extra Work to Be Covariant, Too 137Sometimes You Have to Make Explicit What is Obvious 137Covariant Types Limit the Input Type as Well as the Output Type 137Covariance is Really about Making Inheritance Work the Way You Expect 138Contravariance: Building Consumers from Generic Types 138Contravariance: Limiting What Comes Out Rather Than What Comes In 139Contravariance Works from a Base Class Down to a Subclass 141Contravariant Classes Can’t Return a Generic Type 141Does Any of This Really Matter? 142Unsafevariance: Learning The Rules, then Breaking Them 142Typeprojection Lets You Deal with Base Classes 143Variance Can Affect Functions, Not Just Classes 143Type Projection Tells Kotlin to Allow Subclasses as Input for a Base Class 144Producers Can’t Consume and Consumers Can’t Produce 145Variance Can’t Solve Every Problem 145CHAPTER 7: FLYING THROUGH CONTROL STRUCTURES 147Control Structures Are the Bread and Butter of Programming 147If and Else: The Great Decision Point 148!! Ensures Non-Nullable Values 148Control Structures Affect the Flow of Your Code 149if and else Follow a Basic Structure 150Expressions and if Statements 151Use the Results of an if Statement Directly 152Kotlin Has No Ternary Operator 153A Block Evaluates to the Last Statement in That Block 153if Statements That Are Assigned Must Have else Blocks 154When is Kotlin’s Version of Switch 154Each Comparison or Condition is a Code Block 155Handle Everything Else with an else Block 156Each Branch Can Support a Range 157Each Branch Usually Has a Partial Expression 158Branch Conditions Are Checked Sequentially 159Branch Conditions Are Just Expressions 159When Can Be Evaluated as a Statement, Too 160For is for Looping 161For in Kotlin Requires an Iterator 162You Do Less, Kotlin Does More 163For Has Requirements for Iteration 163You Can Grab Indices Instead of Objects with for 164Use While to Execute until a Condition is False 167While is All about a Boolean Condition 167A Wrinkle in while: Multiple Operators, One Variable 168Combine Control Structures for More Interesting Solutions 169Do . . . While Always Runs Once 170Every do . . . while Loop Can Be Written as a while Loop 170If Something Must Happen, Use do . . . while 171do . . . while Can Be a Performance Consideration 175Get Out of a Loop Immediately with Break 176Break Skips What’s Left in a Loop 176You Can Use a Label with break 177Go to the Next Iteration Immediately with Continue 178Continue Works with Labels as Well 179If versus continue: Mostly Style over Substance 179Return Returns 180CHAPTER 8: DATA CLASSES 183Classes in the Real World Are Varied but Well Explored 183Many Classes Share Common Characteristics 183Common Characteristics Result in Common Usage 185A Data Class Takes the Work Out of a Class Focused on Data 185Data Classes Handle the Basics of Data for You 185The Basics of Data Includes hashCode() and equals(x) 186Destructuring Data through Declarations 188Grab the Property Values from a Class Instance 188Destructuring Declarations Aren’t Particularly Clever 189Kotlin is Using componentN() Methods to Make Declarations Work 190You Can Add componentN() Methods to Any Class 191If You Can Use a Data Class, You Should 192You Can “Copy” an Object or Make a Copy Of an Object 192Using = Doesn’t Actually Make a Copy 192If You Want a Real Copy, Use copy() 193Data Classes Require Several Things from You 194Data Classes Require Parameters and val or var 194Data Classes Cannot Be Abstract, Open, Sealed, or Inner 195Data Classes Add Special Behavior to Generated Code 195You Can Override Compiler-Generated Versions of Many Standard Methods 196Supertype Class Functions Take Precedence 196Data Classes Only Generate Code for Constructor Parameters 197Only Constructor Parameters Are Used in equals() 199Data Classes Are Best Left Alone 200CHAPTER 9: ENUMS AND SEALED, MORE SPECIALTY CLASSES 203Strings Are Terrible as Static Type Representations 203Strings Are Terrible Type Representations 204Capitalization Creates Comparison Problems 205This Problem Occurs All the Time 206String Constants Can Help . . . Some 206Companion Objects Are Single Instance 207Constants Must Be Singular 208Companion Objects Are Singletons 209Companion Objects Are Still Objects 210You Can Use Companion Objects without Their Names 211Using a Companion Object’s Name is Optional 211Using a Companion Object’s Name is Stylistic 213Companion Object Names Are Hard 214You Can Skip the Companion Object Name Altogether 215Enums Define Constants and Provide Type Safety 216Enums Classes Provide Type-Safe Values 216Enums Classes Are Still Classes 218Enums Give You the Name and Position of Constants 219Each Constant in an enum is an Object 219Each Constant Can Override Class-Level Behavior 220Sealed Classes Are Type-Safe Class Hierarchies 221Enums and Class Hierarchies Work for Shared Behavior 222Sealed Classes Address Fixed Options and Non-Shared Behavior 222Sealed Classes Don’t Have Shared Behavior 223Sealed Classes Have a Fixed Number of Subclasses 224Subclasses of a Sealed Class Don’t Always Define Behavior 225when Requires All Sealed Subclasses to Be Handled 225when Expressions Must Be Exhaustive for Sealed Classes 226else Clauses Usually Don’t Work for Sealed Classes 228else Clauses Hide Unimplemented Subclass Behavior 229CHAPTER 10: FUNCTIONS AND FUNCTIONS AND FUNCTIONS 233Revisiting the Syntax of a Function 233Functions Follow a Basic Formula 233Function Arguments Also Have a Pattern 235Default Values in Constructors Are Inherited 237Default Values in Functions Are Inherited 238Default Values in Functions Cannot Be Overridden 239Default Values Can Affect Calling Functions 239Calling Functions Using Named Arguments is Flexible 241Function Arguments Can’t Be Null Unless You Say So 241Functions Follow Flexible Rules 243Functions Actually Return Unit by Default 243Functions Can Be Single Expressions 244Single-Expression Functions Don’t Have Curly Braces 245Single-Expression Functions Don’t Use the return Keyword 246Single-Expression Functions Can Infer a Return Type 246Type Widening Results in the Widest Type Being Returned 248Functions Can Take Variable Numbers of Arguments 249A vararg Argument Can Be Treated Like an Array 251Functions in Kotlin have Scope 251Local Functions Are Functions Inside Functions 252Member Functions Are Defined in a Class 252Extension Functions Extend Existing Behavior without Inheritance 253Extend an Existing Closed Class Using Dot Notation 253this Gives You Access to the Extension Class 255Function Literals: Lambdas and Anonymous Functions 257Anonymous Functions Don’t Have Names 257You Can Assign a Function to a Variable 258Executable Code Makes for an “Executable” Variable 259Higher-Order Functions Accept Functions as Arguments 260The Result of a Function is Not a Function 260Function Notation Focuses on Input and Output 261You Can Define a Function Inline 263Lambda Expressions Are Functions with Less Syntax 264You Can Omit Parameters Altogether 266Lambda Expressions Use it for Single Parameters 266It Makes Lambdas Work More Smoothly 267Lambda Expressions Return the Last Execution Result 267Trailing Functions as Arguments to Other Functions 268Lots of Functions, Lots of Room for Problems 268CHAPTER 11: SPEAKING IDIOMATIC KOTLIN 271Scope Functions Provide Context to Code 271Use Let to Provide Immediate Access to an Instance 272let Gives You it to Access an Instance 273The Scoped Code Blocks Are Actually Lambdas 274let and Other Scope functions Are Largely about Convenience 275You Can Chain Scoped Function Calls 275An Outer it “Hides” an Inner it 276Chaining Scope Functions and Nesting Scope Functions Are Not the Same 277Nesting Scope Functions Requires Care in Naming 277Chaining Scope Functions is Simpler and Cleaner 278Prefer Chaining over Nesting 279Many Chained Functions Start with a Nested Function 280You Can Scope Functions to Non-Null Results 280Accepting null Values Isn’t a Great Idea 282Scope Functions Give You Null Options 282Scope Functions Work on Other Functions . . . In Very Particular Ways 284With is a Scope Function for Processing an Instance 287with Uses this as Its Object Reference 287A this Reference is Always Available 288with Returns the Result of the Lambda 289Run is a Code Runner and Scope Function 289Choosing a Scope Function is a Matter of Style and Preference 290run Doesn’t Have to Operate on an Object Instance 291Apply Has a Context Object but No Return Value 292apply Operates Upon an Instance 292apply Returns the Context Object, Not the Lambda Result 293?: is Kotlin’s Elvis Operator 293Also Gives You an Instance . . . but Operates on the Instance First 294also is Just Another Scope Function 295also Executes before Assignment 296Scope Functions Summary 298CHAPTER 12: INHERITANCE, ONE MORE TIME, WITH FEELING 303Abstract Classes Require a Later Implementation 303Abstract Classes Cannot Be Instantiated 304Abstract Classes Define a Contract with Subclasses 306Abstract Classes Can Define Concrete Properties and Functions 308Subclasses Fulfill the Contract Written by an Abstract Class 310Subclasses Should Vary Behavior 310The Contract Allows for Uniform Treatment of Subclasses 311Interfaces Define Behavior but Have No Body 313Interfaces and Abstract Classes Are Similar 315Interfaces Cannot Maintain State 316A Class’s State is the Values of Its Properties 317An Interface Can Have Fixed Values 317Interfaces Can Define Function Bodies 318Interfaces Allow Multiple Forms of Implementation 319A Class Can Implement Multiple Interfaces 320Interface Property Names Can Get Confusing 321Interfaces Can Decorate a Class 321Delegation Offers Another Option for Extending Behavior 322Abstract Classes Move from Generic to Specific 322More Specificity Means More Inheritance 324Delegating to a Property 326Delegation Occurs at Instantiation 329Inheritance Requires Forethought and Afterthought 330CHAPTER 13: KOTLIN: THE NEXT STEP 331Programming Kotlin for Android 331Kotlin for Android is Still Just Kotlin 331Move from Concept to Example 333Kotlin and Java Are Great Companions 333Your IDE is a Key Component 333Kotlin is Compiled to Bytecode for the Java Virtual Machine 335Gradle Gives You Project Build Capabilities 335When Kotlin Questions Still Exist 335Use the Internet to Supplement Your Own Needs and Learning Style 336Now What? 337Index 339

Regulärer Preis: 28,99 €
Produktbild für Modern PyQt

Modern PyQt

Dive into GUI application development and create useful applications for practical and relevant topics in the fields of business, computer science, and research. This book uses a realistic approach to help get you started designing and building the applications you need while learning new tools along the way.PyQt has a vast collection of tools that you can use to create GUIs, many of which seem to go unexplored. In Modern PyQt, you will go beyond some of the fundamental topics of GUI development in order to begin building useful desktop applications. Through extensive examples and hands-on projects, you will explore how to make applications for data analysis and visualization using graphs, computer vision with OpenCV and PyQt, the basics of networking, handling databases with SQL, and more!Whether you are looking for new ideas to practice your skills as a programmer or you have a specific goal in mind and need some help to get your ideas off the ground, there is something in Modern PyQt for you!WHAT YOU WILL LEARN* Create cross-platform GUIs with Python and PyQt.* Understand the important PyQt classes, widgets, and concepts needed for building interactive and practical applications. * Find out how to embed useful Python modules into your applications to create more advanced GUIs. * Build useful applications that you can improve or make into something completely new with Python and PyQt.WHO THIS BOOK IS FORIntermediate level programmers or above in Python. GUI developers with some experience designing GUIs. Even if they have never used PyQt before, the concepts learned from other toolkits, such as Tkinter or wxPython, can be carried over for developing applications with using PyQt.Joshua Willman began using Python in 2015 when he needed to build neural networks using machine learning libraries for image classification. While building large image data sets for his research, he needed to build a GUI that would simplify the workload and labeling process, which introduced him to PyQt. Since then, he has tried to dive into everything that is Python. He currently works as a Python developer, building projects to help others learn more about coding in Python for game development, AI and machine learning, and programming using micro-controllers. More recently, he set up the site redhuli.io to explore his and others’ interests in utilizing programming for creativity.He is also the author of Beginning PyQt: A Hands-on Approach to GUI Programming.

Regulärer Preis: 62,99 €