Welcome to Loot.co.za!
Sign in / Register |Wishlists & Gift Vouchers |Help | Advanced search
|
Your cart is empty |
|||
Books > Computing & IT > Computer programming > Programming languages
Security is too important to be left in the hands of just one department or employee-it's a concern of an entire enterprise. Enterprise Security Architecture shows that having a comprehensive plan requires more than the purchase of security software-it requires a framework for developing and maintaining a system that is proactive. The book is based around the SABSA layered framework. It provides a structured approach to the steps and processes involved in developing security architectures. It also considers how some of the major business issues likely to be encountered can be resolved.
Master Today's Best Practices for Building Reusable .NET Frameworks, Libraries, and Components ".NET Core [contains] advances important to cloud application developers: performance, resource utilization, container support, and others. This third edition of Framework Design Guidelines adds guidelines related to changes that the .NET team adopted during transition from the world of client-server application to the world of the Cloud." -From the Foreword by Scott Guthrie Framework Design Guidelines has long been the definitive guide to best practices for developing components and component libraries in Microsoft .NET. Now, this third edition has been fully revised to reflect game-changing API design innovations introduced by Microsoft through eight recent updates to C#, eleven updates to .NET Framework, and the emergence and evolution of .NET Core. Three leading .NET architects share the same guidance Microsoft teams are using to evolve .NET, so you can design well-performing components that feel like natural extensions to the platform. Building on the book's proven explanatory style, the authors and expert annotators offer insider guidance on new .NET and C# concepts, including major advances in asynchronous programming and lightweight memory access. Throughout, they clarify and refresh existing content, helping you take full advantage of best practices based on C# 8, .NET Framework 4.8, and .NET Core. Discover which practices should always, generally, rarely, or never be used-including practices that are no longer recommended Learn the general philosophy and fundamental principles of modern framework design Explore common framework design patterns with up-to-date C# examples Apply best practices for naming, types, extensibility, and exceptions Learn how to design libraries that scale in the cloud Master new async programming techniques utilizing Task and ValueTask Make the most of the Memory and Span types for lightweight memory access This guide is an indispensable resource for everyone who builds reusable .NET-based frameworks, libraries, or components at any scale: large system frameworks, medium-size reusable layers of large distributed systems, extensions to system frameworks, or even small shared components. Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
Augment your knowledge of Python with this entertaining learning guide, which features 100 exercises and programming puzzles and solutions. Python Challenges will help prepare you for your next exam or a job interview, and covers numerous practical topics such as strings, data structures, recursion, arrays, and more. Each topic is addressed in its own separate chapter, starting with an introduction to the basics and followed by 10 to 15 exercises of various degrees of difficulty, helping you to improve your programming skills effectively. Detailed sample solutions, including the algorithms used for all tasks, are included to maximize your understanding of each area. Author Michael Inden also describes alternative solutions and analyzes possible pitfalls and typical errors. Three appendices round out the book: the first covers the Python command line interpreter, which is often helpful for trying out the code snippets and examples in the book, followed by an overview of Pytest for unit testing and checking the solutions. The last explains the O notation for estimating performance. After reading this book, you'll be prepared to take the next step in your career or tackle your next personal project. All source code is freely available for download via the Apress website. What You Will Learn Improve your Python knowledge by solving enjoyable but challenging programming puzzles Solve mathematical problems, recursions, strings, arrays and more Manage data processing and data structures like lists, sets, maps Handle advanced recursion as well as binary trees, sorting and searching Gamify key fundamentals for fun and easier reinforcement Who this book is for: Programmers, software developers who are either professionals or makers, as well as students and teachers. At least some prior experience with the Python programming is recommended.
Your hands-on guide to Visual C# fundamentals with Visual Studio 2022 Expand your expertise-and teach yourself the fundamentals of programming the latest version of Visual C# with Visual Studio 2022. This book provides software developers all the guidance, exercises, and code needed to start building responsive, scalable, cloud-connected applications that can run almost anywhere. Discover how to: Quickly start creating Visual C# code and projects with Visual Studio Work with variables, operators, expressions, methods, and program flow Build more robust apps with error, exception, and resource management Spot problems fast with the integrated Visual Studio 2022 debugger Master new default interface methods, static local functions, async disposable types, and other enhancements Make the most of the C# object model, and create functional data structures Leverage advanced properties, indexers, generics, and collection classes Create Windows 11 apps that share data, collaborate, and use cloud services Use lightweight records to build immutable reference types more easily Perform complex queries over object collections with LINQ Improve application throughput and response time with asynchronous methods Use delegates and decoupling to construct highly extensible systems Customize C# operator behavior over your own classes and structures Implement the powerful Model-View-ViewModel (MVVM) pattern Build UWP applications that retrieve complex data and present it intuitively
Formal Languages and Computation: Models and Their Applications gives a clear, comprehensive introduction to formal language theory and its applications in computer science. It covers all rudimental topics concerning formal languages and their models, especially grammars and automata, and sketches the basic ideas underlying the theory of computation, including computability, decidability, and computational complexity. Emphasizing the relationship between theory and application, the book describes many real-world applications, including computer science engineering techniques for language processing and their implementation.
In short, this book represents a theoretically oriented treatment of formal languages and their models with a focus on their applications. It introduces all formalisms concerning them with enough rigors to make all results quite clear and valid. Every complicated mathematical passage is preceded by its intuitive explanation so that even the most complex parts of the book are easy to grasp. After studying this book, both student and professional should be able to understand the fundamental theory of formal languages and computation, write language processors, and confidently follow most advanced books on the subject."
In programming courses, using the different syntax of multiple languages, such as C++, Java, PHP, and Python, for the same abstraction often confuses students new to computer science. Introduction to Programming Languages separates programming language concepts from the restraints of multiple language syntax by discussing the concepts at an abstract level. Designed for a one-semester undergraduate course, this classroom-tested book teaches the principles of programming language design and implementation. It presents: Common features of programming languages at an abstract level rather than a comparative level The implementation model and behavior of programming paradigms at abstract levels so that students understand the power and limitations of programming paradigms Language constructs at a paradigm level A holistic view of programming language design and behavior To make the book self-contained, the author introduces the necessary concepts of data structures and discrete structures from the perspective of programming language theory. The text covers classical topics, such as syntax and semantics, imperative programming, program structures, information exchange between subprograms, object-oriented programming, logic programming, and functional programming. It also explores newer topics, including dependency analysis, communicating sequential processes, concurrent programming constructs, web and multimedia programming, event-based programming, agent-based programming, synchronous languages, high-productivity programming on massive parallel computers, models for mobile computing, and much more. Along with problems and further reading in each chapter, the book includes in-depth examples and case studies using various languages that help students understand syntax in practical contexts.
Start building Python-based Android applications using Kivy with Android Studio. Through in-depth examples, this book teaches you everything you need to create your first Android application in Python and publish on Google Play. Building Android Apps in Python Using Kivy with Android Studio takes you through the basics of Kivy by discussing its application structure, widgets, and event handling. The KV language is then introduced for separating the logic and GUI by adding widgets within a KV file. You will then learn how to utilize Android camera using Kivy, build the HTTP server using Flask, and create and manage multiple screens to help you design your own applications. Through detailed step-by-step instructions, you will create your first multi-level cross-platform game that includes animation and sound effects. Following this, the process of converting the Kivy application into an Android application using Buildozer and Python-4-Android is covered in detail. You will then learn how to edit the generated Android Studio project into Android Studio by adding extensions to the original application. The widgets added in Kivy could be handled within Android Studio. Moreover, Android views could be added to enrich the Kivy application. The resulting Android application created with Kivy can be hosted on Google Play to download and install as a regular Android application. At the end, this book will give you the basic knowledge of Kivy needed to build cross-platform Android applications, produce an Android Studio project, and understand how it all works in detail. What You Will Learn Build cross-platform applications from scratch using Kivy in detail Create a cross-platform interactive multi-level game from the ground up Examine the pipeline of building an Android app from the Python Kivy app Understand the structure of the Android Studio project produced by Kivy Recognize how to extend the application within Android Studio by adding more Android views to the application main activity. Who This Book Is For Python developers with no previous experience in Kivy who are looking to create their first Android application completely in Python.
Everyone should learn to code. Much like drawing and sketching, playing an instrument, cooking, or taking pictures and shooting videos, coding is a creative endeavor, which means it's a way to actually create stuff, and creating stuff is incredibly rewarding and satisfying. Sure, it's fun to spend hours on your phone looking at what other people have created; but that's nothing compared to the joy and satisfaction of creating things that other people consume and use. Yep, coding is fun! And if that weren't enough, when you learn to code you develop all sorts of invaluable skills and traits beyond just coding. These include planning, problem solving, communication, logic, empathy, attention to detail, patience, resilience, persistence, and creativity. And it turns out that these skills (especially creativity and creative problem solving) are some of the most in-demand out there. So, coding will help your future career, too, regardless of what that career may be. But, where to start? Captain Code is a welcoming, engaging, and fun introduction to becoming a coder, designed for the young (ages 10-17) and young-at-heart. Experienced educators and coders Ben & Shmuel Forta will guide you using Python, one of the most popular programming languages in the world. You'll learn by creating games, yes, games, from simple projects to retro text-based adventures to complete graphical arcade style games.
Professor King's spiral approach made it accessible to a broad range of readers, from beginners to more advanced students. With adoptions at over 225 colleges, the first edition was one of the leading C textbooks of the last ten years. The second edition maintains all the book's popular features and brings it up to date with coverage of the C99 standard. The new edition also adds a significant number of exercises and longer programming projects, and includes extensive revisions and updates.
Work with all aspects of batch processing in a modern Java environment using a selection of Spring frameworks. This book provides up-to-date examples using the latest configuration techniques based on Java configuration and Spring Boot. The Definitive Guide to Spring Batch takes you from the "Hello, World!" of batch processing to complex scenarios demonstrating cloud native techniques for developing batch applications to be run on modern platforms. Finally this book demonstrates how you can use areas of the Spring portfolio beyond just Spring Batch 4 to collaboratively develop mission-critical batch processes. You'll see how a new class of use cases and platforms has evolved to have an impact on batch-processing. Data science and big data have become prominent in modern IT and the use of batch processing to orchestrate workloads has become commonplace. The Definitive Guide to Spring Batch covers how running finite tasks on cloud infrastructure in a standardized way has changed where batch applications are run. Additionally, you'll discover how Spring Batch 4 takes advantage of Java 9, Spring Framework 5, and the new Spring Boot 2 micro-framework. After reading this book, you'll be able to use Spring Boot to simplify the development of your own Spring projects, as well as take advantage of Spring Cloud Task and Spring Cloud Data Flow for added cloud native functionality. Includes a foreword by Dave Syer, Spring Batch project founder. What You'll Learn Discover what is new in Spring Batch 4 Carry out finite batch processing in the cloud using the Spring Batch project Understand the newest configuration techniques based on Java configuration and Spring Boot using practical examples Master batch processing in complex scenarios including in the cloud Develop batch applications to be run on modern platforms Use areas of the Spring portfolio beyond Spring Batch to develop mission-critical batch processes Who This Book Is For Experienced Java and Spring coders new to the Spring Batch platform. This definitive book will be useful in allowing even experienced Spring Batch users and developers to maximize the Spring Batch tool.
Classroom-tested by tens of thousands of students, this new edition of the bestselling intro to programming book is for anyone who wants to understand computer science. Learn about design, algorithms, testing, and debugging. Discover the fundamentals of programming with Python 3.6--a language that's used in millions of devices. Write programs to solve real-world problems, and come away with everything you need to produce quality code. This edition has been updated to use the new language features in Python 3.6. No programming experience required! Incremental examples show you the steps and missteps that happen while developing programs, so you know what to expect when you tackle a problem on your own. Inspired by "How to Design Programs" (HtDP), discover a five-step recipe for designing functions, which helps you learn the concepts--and becomes an integral part of writing programs. In this detailed introduction to Python and to computer programming, find out exactly what happens when your programs are executed. Work with numbers, text, big data sets, and files using real-world examples. Create and use your own data types. Make your programs reliable, work with databases, download data from the web automatically, and build user interfaces. As you use the fundamental programming tools in this book, you'll see how to document and organize your code so that you and other programmers can more easily read and understand it. This new edition takes advantage of Python 3.6's new features, including type annotations on parameters, return types and variable declarations, and changes to string formatting. Most importantly, you'll learn how to think like a professional programmer. What You Need: You'll need to download Python 3.6, available from https://python.org. With that download comes IDLE, the editor we use for writing and running Python programs. (If you use Linux, you may need to install Python 3.6 and IDLE separately.)
Event structures are central in Linguistics and Artificial Intelligence research: people can easily refer to changes in the world, identify their participants, distinguish relevant information, and have expectations of what can happen next. Part of this process is based on mechanisms similar to narratives, which are at the heart of information sharing. But it remains difficult to automatically detect events or automatically construct stories from such event representations. This book explores how to handle today's massive news streams and provides multidimensional, multimodal, and distributed approaches, like automated deep learning, to capture events and narrative structures involved in a 'story'. This overview of the current state-of-the-art on event extraction, temporal and casual relations, and storyline extraction aims to establish a new multidisciplinary research community with a common terminology and research agenda. Graduate students and researchers in natural language processing, computational linguistics, and media studies will benefit from this book.
In this second edition of Automate the Boring Stuff with Python, you'll learn the basics of programming in Python, the fastest growing programming language today, before moving on to create Python programs that effortlessly perform useful and impressive feats of automation. This updated edition is full of step-by-step instructions that walk through each programme. Practice projects at the end of each chapter challenge you to improve those programmes and use your newfound skills to automate similar tasks.
A family of internationally popular microcontrollers, the Atmel AVR microcontroller series is a low-cost hardware development platform suitable for an educational environment. Until now, no text focused on the assembly language programming of these microcontrollers. Through detailed coverage of assembly language programming principles and techniques, Some Assembly Required: Assembly Language Programming with the AVR Microcontroller teaches the basic system capabilities of 8-bit AVR microcontrollers. The text illustrates fundamental computer architecture and programming structures using AVR assembly language. It employs the core AVR 8-bit RISC microcontroller architecture and a limited collection of external devices, such as push buttons, LEDs, and serial communications, to describe control structures, memory use and allocation, stacks, and I/O. Each chapter contains numerous examples and exercises, including programming problems. By studying assembly languages, computer scientists gain an understanding of the functionality of basic processors and how their capabilities support high level languages and applications. Exploring this connection between hardware and software, this book provides a foundation for understanding compilers, linkers, loaders, and operating systems in addition to the processors themselves.
Since its original introduction in 1997, the Unified Modeling Language has revolutionized software development. Every integrated software development environment in the world - open-source, standards-based and proprietary - now supports UML, and more importantly the model-driven approach to software development. This makes learning the newest UML standard UML 2.0, critical for all software developers - and there isn't a better choice than this clear, step-by-step guide to learning the language. - Richard Mark Soley, Chairman and CEO, OMG. If you're like most software developers you're building systems that are increasingly complex. Whether you're creating a desktop application or an enterprise system, complexity is the big hairy monster you must manage.
Cyberattacks are becoming more commonplace and the Open Web Application Security Project (OWASP), estimates 94% of sites have flaws in their access control alone. Attacks evolve to work around new defenses, and defenses must evolve to remain effective. Developers need to understand the fundamentals of attacks and defenses in order to comprehend new techniques as they become available. This book teaches you how to write secure web applications. The focus is highlighting how hackers attack applications along with a broad arsenal of defenses. This will enable you to pick appropriate techniques to close vulnerabilities while still providing users with their needed functionality. Topics covered include: A framework for deciding what needs to be protected and how strongly Configuring services such as databases and web servers Safe use of HTTP methods such as GET, POST, etc, cookies and use of HTTPS Safe REST APIs Server-side attacks and defenses such as injection and cross-site scripting Client-side attacks and defenses such as cross-site request forgery Security techniques such as CORS, CSP Password management, authentication and authorization, including OAuth2 Best practices for dangerous operations such as password change and reset Use of third-party components and supply chain security (Git, CI/CD etc) What You'll Learn Review the defenses that can used to prevent attacks Model risks to better understand what to defend and how Choose appropriate techniques to defend against attacks Implement defenses in Python/Django applications Who This Book Is For Developers who already know how to build web applications but need to know more about security Non-professional software engineers, such as scientists, who must develop web tools and want to make their algorithms available to a wider audience. Engineers and managers who are responsible for their product/company technical security policy
CSS Master is tailor-made for the web designer or front-end developer who's really serious about taking their skills to the next level. Discover how to keep ahead of the game by adhering to best practice and employing the most effective, cutting-edge CSS techniques. Now thoroughly updated in its second edition, this book covers how to: Organize your CSS to create the most efficient and most maintainable code Employ advanced approaches to achieve complex layouts: flexbox, grid layouts, multi-column, and more Use next-level effects: transitions, transforms, filters, animations, and more Combine CSS and SVG to create seriously powerful visuals Use efficient debugging techniques And much more!
A fully updated tutorial on the basics of the Python programming language for science students Python is a computer programming language that has gained popularity throughout the sciences. This fully updated second edition of A Student's Guide to Python for Physical Modeling aims to help you, the student, teach yourself enough of the Python programming language to get started with physical modeling. You will learn how to install an open-source Python programming environment and use it to accomplish many common scientific computing tasks: importing, exporting, and visualizing data; numerical analysis; and simulation. No prior programming experience is assumed. This guide introduces a wide range of useful tools, including: Basic Python programming and scripting Numerical arrays Two- and three-dimensional graphics Animation Monte Carlo simulations Numerical methods, including solving ordinary differential equations Image processing Numerous code samples and exercises-with solutions-illustrate new ideas as they are introduced. This guide also includes supplemental online resources: code samples, data sets, tutorials, and more. This edition includes new material on symbolic calculations with SymPy, an introduction to Python libraries for data science and machine learning (pandas and sklearn), and a primer on Python classes and object-oriented programming. A new appendix also introduces command line tools and version control with Git.
Learning by Doing with National Instruments Development Boards starts with a brief introduction to LabVIEW programming, which is required to explore the National Instrument platform, an introduction that includes detailed installation and licensing setup. Further, it gives the features and configuration setup of NI SPEEDY-33, NI ELVIS and myRIO boards. The focus of the book is on worked-out case studies for students working in different areas of electronics such as basic digital design, biomedical instrumentation, sensors and measurement. Data acquisition using SPEEDY-33, NI -ELVIS and myRIO kits is also odiscussed. The book also examines the myRIO platform.
Programming permeates almost all aspects of our lives. This includes being active on social media, shopping online, and participating in virtual courses. It also includes driving a car and using many devices. This book will teach you the basics of programming using the Processing programming language and provide practice with logical, algorithmic thinking. It can provide insight into what is involved in producing the technical infrastructure of our world. While reading this book, you can build programs based on your own ideas, using images you create or acquire and making connections to activities you enjoy. The chapters in the book will demonstrate the process of programming, starting with formulating an idea, planning, building on past projects, and refining the work, similar to writing an essay or composing a song. This approach will guide you to make use of logic and mathematics to produce beautiful effects. The text contains an Appendix with an introduction to p5.js, a way to produce JavaScript programs with Processing functionality for drawing, images, and interactions to publish on the Web. The term for program in Processing is sketch. The Processing language has been constructed by visual artists using the Java programming language as a base. However, the sketches featured in this book and typical in Processing are far more than static drawings; they incorporate interaction, animation, video, audio, and accessing files on the local computer and on the Web. Technical features are introduced and explained in the context of complete examples: games (Snake, Hangman, jigsaw, slingshot), making a collage of family images and video clips, preparing directions for folding an origami model, rotating objects in 3D, and others. Programming is a fun, creative, expressive pursuit. It does require attention to details and can be frustrating. Still, there is very little that compares to the satisfaction of building a program out of nothing and making it work (or taking an existing program and fixing a problem, or adding a feature and making it better). Programming 101 is your gateway to making this happen. What You'll Learn Gain basic programming skills Build fun and creative programs Use files for making a holiday card or a sequence of instructions Combine videos, images, and graphics in a Processing sketch Connections to other programming languages, most especially Java and JavaScript Who This Book Is For Anyone who has been thinking about trying programming, or has tried, but needs assistance. Anyone who wants to use their own creativity and artistic talents. Anyone who wants to know what is involved in the technology that is present in our lives. Anyone who wants to know what is involved in the technology that is present in our lives.
"This is one of the best technical books I've ever read. The writing is so good, and it covers an incredible amount of knowledge. Hands down, this is the best reference material on using asyncio anywhere." - Kent R. Spillner Learn how to speed up slow Python code with concurrent programming and the cutting-edge asyncio library. Python is flexible, versatile, and easy to learn. It can also be very slow compared to lower-level languages. Python Concurrency with asyncio teaches you how to boost Python's performance by applying a variety of concurrency techniques. You'll learn how the complex-but-powerful asyncio library can achieve concurrency with just a single thread and use asyncio's APIs to run multiple web requests and database queries simultaneously. The book covers using asyncio with the entire Python concurrency landscape, including multiprocessing and multithreading. about the technology The time demands of running code synchronously quickly overload standard Python and slow your programs to a crawl. Python's Asynchronous I/O library asyncio was built to solve these performance problems by making it easy to divide and schedule computational tasks so they can be run independently. asyncio concurrently handles multiple operations without a drop in throughput or responsiveness, making your apps lightning fast and easier to scale. about the book Python Concurrency with asyncio teaches you to write concurrent Python code that will boost the speed of your apps and APIs. The book demystifies asynchio's unique single-threaded concurrency model, giving you a behind-the-scenes understanding of the library and its new async/await syntax. Hard-to-grok concurrency topics are broken down into simple flowcharts so you can easily see how your coroutines and tasks are running. You'll learn to apply asyncio to solve common performance problems, such as batch database jobs, slow web servers, and scaling microservices. All examples you'll build are designed to be usable in the real world, including a clever command line SQL client that can run multiple slow queries at the same time. By the time you're done, you'll even be able to combine asyncio with traditional multiprocessing and multithreading techniques for huge improvements to performance. what's inside Use coroutines and tasks alongside async/await syntax to run code concurrently Build web APIs and make concurrency web requests with aiohttp Run thousands of SQL queries concurrently Create a map-reduce job that can process gigabytes of data concurrently Use threading with asyncio to mix blocking code with asyncio code about the reader For intermediate Python programmers. No previous experience of concurrency required. about the author Matthew Fowler has over 15 years of software engineering experience in roles from architect to engineering director. He has worked on Python codebases in the machine learning space, as well as led development of a Python-based ecommerce site with tens of millions of users.
The Rust programming language is consistent and does its best to avoid surprising the programmer. Like all languages, though, Rust still has its quirks. But these quirks present a teaching opportunity. In this book, you'll work through a series of brain teasers that will challenge your understanding of Rust. By understanding the gaps in your knowledge, you can become better at what you do and avoid mistakes. Many of the teasers in this book come from the author's own experience creating software. Others derive from commonly asked questions in the Rust community. Regardless of their origin, these brain teasers are fun, and let's face it: who doesn't love a good puzzle, right? What better way to exercise your brain and increase your Rust programming knowledge than with a collection of dynamic brain teasers? As you read through each of these puzzles and try to work out the answers, you'll not only learn about Rust's unique quirks and peculiarities, you'll also have loads of fun along the way. Dive right in and get started with example code and sample problems that cover numbers and text, shadowing and memory, and everything in between. Try to figure out why a particular program won't compile, why it produces unexpected output, or why it panics and terminates with an error message. Once you've run the code and read the answer, it's time to get to the heart of the matter with a detailed explanation. Learn why a program produced the result it did, and discover how similar issues might affect the code you write in your own programs, even in production. Sourced from engaging discussions within the Rust community, real-world problems, and even reader feedback, these challenges will certainly surprise, enlighten, and entertain you. Are you ready to experience Rust like never before? Then sharpen your brain and get ready for a challenge! What You Need: This book assumes you have some knowledge of the Rust programming language. To work through the brain teasers in this book, you'll need a working Rust environment on any platform. You can install Rust by visiting https: //rustup.rs/. You'll also need a text editor or Rust-friendly IDE. |
You may like...
VBA and Macros for Microsoft Office…
Bill Jelen, Tracy Syrstad
Paperback
R1,247
Discovery Miles 12 470
Java How to Program, Late Objects…
Paul Deitel, Harvey Deitel
Paperback
C++ How to Program: Horizon Edition
Harvey Deitel, Paul Deitel
Paperback
R1,857
Discovery Miles 18 570
The Garbage Collection Handbook - The…
Richard Jones, Antony Hosking, …
Paperback
R1,423
Discovery Miles 14 230
Programming Rust - Fast, Safe Systems…
Jim Blandy, Jason Orenddorff
Paperback
R1,466
Discovery Miles 14 660
The Big Book of Drones
Ralph DeFrangesco, Stephanie DeFrangesco
Paperback
R863
Discovery Miles 8 630
|