Download E-books SFML Game Development PDF

By Jan Haller, Henrik Vogelius Hansson, Artur Moreira

If you have an organization snatch of C++ with a mystery hankering to create an exceptional video game, this ebook is for you. each sensible point of programming an interactive online game international is the following - the only restrict is your mind's eye.

Overview

  • Develop an entire online game during the book
  • Learn the way to use sleek C++ kinds to create an absolutely optimized online game and help for all significant working systems
  • Fully community your video game for remarkable multiplayer action
  • Step-by-step consultant to constructing your online game utilizing C++ and SFML

In Detail

Game improvement includes the combo of many alternative features akin to online game logics, pics, audio, consumer enter, physics and lots more and plenty extra. SFML is an Open resource C++ library designed to make video game improvement extra available, exposing multimedia parts to the consumer via an easy, but robust interface.

If you're a C++ programmer with a stack of principles on your head and looking a platform for implementation, your seek ends here.

Starting with not anything greater than a clean display, SFML online game improvement gives you all of the information you must create your first totally featured 2nd online game utilizing SFML 2.0. through the tip, you will have realized the elemental rules of online game improvement, together with complex issues resembling find out how to community your video game, how one can make the most of particle structures and lots more and plenty more.

SFML online game improvement begins with an summary of home windows, portraits, and consumer inputs. After this short creation, you are going to begin to become familiar with SFML through increase a global of other video game gadgets, and enforcing increasingly more gameplay good points. finally, you’ll be dealing with complicated visible results, audio results and community programming like an previous professional. New suggestions are mentioned, whereas the code gradually develops.

SFML video game improvement gets you begun with animations, particle results and shaders. in addition to those primary video game elements, we’re additionally masking community programming to the level the place you’ll manage to aid the sport working from assorted machines. crucial half, the gameplay implementation with enemies and missiles, will make up the middle of our top-scrolling aircraft shoot' em-up game!.

You will examine every thing you would like in SFML online game improvement so one can begin with online game improvement and are available toward growing your personal game.

What you'll examine from this book

  • Learn the fundamentals of SFML and render an aircraft to the screen.
  • Create a online game global to play in utilizing entities and deal with enter from the player
  • Make your video game richer with help menus, settings, and different states
  • Implement the root for a GUI library
  • Populate the realm with enemies and allow them to interact
  • Load assets like textures from the harddrive and know about source management
  • Animate the sport item, construct a particle procedure and glance behind the curtain of rendering
  • Add track and sound results for your online game to create an immersive gaming experience
  • Implement multiplayer over a community to bask in gameplay over the Internet

Approach

SFML video game improvement is a fast moving, step by step consultant, giving you all of the wisdom and instruments you must create your first video game utilizing SFML 2.0

Show description

Download E-books Pro OpenGL ES for Android PDF

In Pro OpenGL ES for Android, you will find out find out how to harness the full power of OpenGL ES, and layout your own 3D purposes via construction a fully-functional 3D sunlight approach version utilizing Open GL ES!

OpenGL has set the traditional for 3D special effects, and is a necessary element of Android improvement. This book offers every little thing you want to be aware of, from simple mathematical concepts to advanced coding suggestions. you are going to research by way of development a desirable 3D sunlight process simulator!

After introducing Open GL ES, Pro OpenGL ES for Android explains the fundamentals of 3D math and then orients you to the local Android 3D libraries you can be utilizing in your personal 3D video games and the sun method venture you are going to build using this book. Through the sun procedure instance venture, you are going to include quite a few photo and animation ideas into your purposes. additionally, you will become aware of how the complete spectrum of 3D improvement that awaits, with themes corresponding to lights, texture-mapping, modeling, shaders, mixing modes, and several more advanced concepts.

by the point you finish Pro OpenGL ES for Android, you'll have discovered all the abilities you will want to construct your personal remarkable 3D applications, in keeping with the most strong 3D libraries available.

Show description

Download E-books Shell Scripting Recipes: A Problem-Solution Approach PDF

Filled with over one hundred fifty crucial, sensible recipes that empower Unix clients to regain misplaced time
spent developing and checking out shell scripts. nearly all of scripts integrated are POSIX-compliant
and supported through the various significant shell variations, together with Bash, ksh, and sh.
Each real-world instance recipe follows an analogous problem-solution constitution, meaning
cross-referencing is straightforward and quickly. Recipe issues comprise dossier conversion (DOS, UNIX, and
Mac), method management, source tracking, filename administration, complicated date
calculations, monitor keep an eye on features, and lots more and plenty more.
Completely up to date for this moment variation and taking the entire adjustments of the earlier ten
years into consideration, each recipe during this ebook is now suitable for a contemporary viewers. Authors
Chris Johnson’s and Jayant Varma’s code is obvious, direct, and acceptable. upload this excellent
reference for your library today.

Show description

Download E-books Concurrent Programming in Mac OS X and iOS: Unleash Multicore Performance with Grand Central Dispatch PDF

By Vandad Nahavandipoor

Now that multicore processors are coming to cellular units, would it be nice to use all these cores with no need to regulate threads? This concise booklet exhibits you the way to exploit Apple's Grand important Dispatch (GCD) to simplify programming on multicore iOS units and Mac OS X.

Managing your application’s assets on a couple of middle is not effortless, yet it is important. Apps that use just one middle in a multicore atmosphere will sluggish to a move slowly. when you know the way to software with Cocoa or Cocoa contact, this advisor gets you began with GCD instantly, with many examples that can assist you write high-performing multithreaded apps.

  • Package your code as block items and invoke them with GCD
  • Understand dispatch queues—the swimming pools of threads controlled by way of GCD
  • Use assorted tools for executing UI and non-UI tasks
  • Create a bunch of initiatives that GCD can run all at once
  • Instruct GCD to execute initiatives just once or after a delay
  • Discover the way to build your individual dispatch queues

Show description

Download E-books Getting Started with Intel Galileo PDF

By Matt Richardson

Getting began with the Intel Galileo will get you up and working with this new, x86-powered board that used to be built in collaboration among Arduino and Intel. you will how to set it up, attach it on your computing device, and start programming. you are going to how to construct electronics initiatives round the Galileo, and you may discover the beneficial properties and gear that make it diversified from the entire forums that got here before.

Developed in collaboration with the Intel Galileo staff, and in session with participants of the Arduino workforce, this can be the definitive advent to Intel's new board for makers.

Show description

Download E-books Learning Spark: Lightning-Fast Big Data Analysis PDF

By Holden Karau, Matei Zaharia

Data in all domain names is getting higher. how are you going to paintings with it successfully? Recently up to date for Spark 1.3, this ebook introduces Apache Spark, the open resource cluster computing process that makes info analytics speedy to jot down and quick to run. With Spark, you could take on huge datasets speedy via basic APIs in Python, Java, and Scala. This version comprises new info on Spark SQL, Spark Streaming, setup, and Maven coordinates.

Written through the builders of Spark, this e-book could have facts scientists and engineers up and operating very quickly. You’ll how one can show parallel jobs with quite a few traces of code, and canopy purposes from uncomplicated batch jobs to circulation processing and computing device learning.

  • Quickly dive into Spark functions similar to allotted datasets, in-memory caching, and the interactive shell
  • Leverage Spark’s strong integrated libraries, together with Spark SQL, Spark Streaming, and MLlib
  • Use one programming paradigm rather than mix and matching instruments like Hive, Hadoop, Mahout, and Storm
  • Learn the way to install interactive, batch, and streaming applications
  • Connect to info resources together with HDFS, Hive, JSON, and S3
  • Master complex subject matters like info partitioning and shared variables

Show description

Download E-books Introducing Elixir: Getting Started in Functional Programming PDF

By Simon St. Laurent, J. David Eisenberg

Elixir is a superb language with a view to find out about practical programming, and with this hands-on advent, you’ll detect simply how strong and enjoyable Elixir might be. This language combines the strong useful programming of Erlang with a syntax just like Ruby, and comprises robust positive factors for metaprogramming.

This e-book indicates you the way to put in writing uncomplicated Elixir courses by way of instructing one ability at a time. when you decide up development matching, process-oriented programming, and different ideas, you’ll comprehend why Elixir makes it more straightforward to construct concurrent and resilient courses that scale up and down with ease.

  • Get pleased with Iex, Elixir’s command line interface
  • Discover atoms, development matching, and guards: the rules of your application structure
  • Delve into the center of Elixir with recursion, strings, lists, and higher-order functions
  • Create approaches, ship messages between them, and observe development matching to incoming messages
  • Store and control based information with Erlang time period garage and the Mnesia database
  • Build resilient functions with Erlang’s Open Telecom Platform
  • Define macros with Elixir’s metaprogramming tools

Show description

Download E-books Swift High Performance PDF

Leverage speedy and improve your code to take your purposes to the following level

About This Book

  • Build strong, excessive functionality purposes in Swift
  • Increase your potency via attending to grips with concurrency and parallel programming
  • Use fast to layout performance-oriented solutions

Who This e-book Is For

This booklet is geared toward skilled speedy builders eager to optimize their courses on Apple systems to optimize software performance.

What you'll Learn

  • Build stable, sturdy, and trustworthy functions utilizing Swift
  • Use REPL and Pl to regulate and configure relational databases
  • Explore Swift's beneficial properties together with its static style process, worth gadgets, and sensible programming layout reusable code for top functionality in Swift
  • Use to Xcode LLBD and REPL to debug commands
  • Avoid sharing assets through the use of concurrency and parallel programming
  • Understand the lazy loading trend, lazy sequences, and lazy evolution.

In Detail

Swift is likely one of the preferred and strong programming languages for development iOS and Mac OS functions, and maintains to conform with new gains and features. quick is taken into account a alternative to Objective-C and has functionality benefits over Objective-C and Python. rapid adopts secure programming styles and provides smooth good points to make programming more uncomplicated, extra versatile, and extra fun.

Develop speedy and observe top practices that let you construct sturdy purposes and optimize their performance.

First, some of functionality features of fast might be defined. you'll enforce new instruments on hand in speedy, together with Playgrounds and REPL. those will increase your code potency, provide help to examine rapid code, and increase functionality. subsequent, the significance of creating good purposes utilizing multithreading concurrency and multi-core equipment structure is roofed, earlier than relocating directly to top practices and methods that you can make the most of whilst development excessive functionality functions, similar to concurrency and lazy-loading. ultimately, you'll discover the underlying constitution of quick additional, and methods to disassemble and assemble speedy code.

Style and approach

This is a accomplished consultant to improving fast programming innovations and technique to let quicker software development.

Show description

Download E-books Beginning XML, 4th Edition PDF

By David Hunter, Joe Fawcett, Danny Ayers

While the 1st variation of this booklet used to be written, XML used to be a comparatively new language yet already gaining floor quick and turning into increasingly more generic in an unlimited diversity of functions. by the point of the second one version, XML had already confirmed itself to be greater than a passing fad, and used to be in reality getting used through the for an extremely wide selection of makes use of. With the 3rd variation, it was once transparent that XML was once a mature know-how, yet extra very important, it turned glaring that the XML panorama used to be dividing into a number of parts of craftsmanship. Now during this variation, we would have liked to categorize the expanding variety of requirements surrounding XML, which both use XML or offer performance as well as the XML middle specification.

So what's XML? it is a markup language, used to explain the constitution of information in significant methods. wherever that info is input/output, saved, or transmitted from one position to a different, is a possible healthy for XML's functions. maybe the main recognized functions are web-related (especially with the newest advancements in hand held net access—for which the various know-how is XML-based). even though, there are lots of different non-web-based purposes for which XML is useful—for instance, as a substitute for (or to enrich) conventional databases, or for the move of monetary info among companies. information corporations, besides contributors, have additionally been utilizing XML to distribute syndicated information tales and web publication entries.

This e-book goals to coach you all you want to find out about XML—what it's, the way it works, what applied sciences encompass it, and the way it might probably most sensible be utilized in quite a few occasions, from easy facts move to utilizing XML on your websites. It solutions the basic questions:

* what's XML?

* How do you utilize XML?

* How does it work?

* What are you able to use it for, anyway?

This publication is for those who comprehend that it'd be an excellent thought to profit XML yet usually are not 100% yes why. you could have heard the hype yet have not visible sufficient substance to determine what XML is and what it may possibly do. you can be utilizing improvement instruments that try and disguise the XML in the back of consumer interfaces and scripts, yet you must comprehend what's relatively occurring backstage. you'll already be in some way concerned about internet improvement and possibly even recognize the fundamentals of HTML, even though neither of those skills is really worthy for this book.

What you do not need is wisdom of markup languages usually. This publication assumes that you are new to the concept that of markup languages, and we've based it in a manner that are supposed to make experience to the newbie and but quick deliver you to XML professional status.

The be aware "Beginning" within the name refers back to the sort of the ebook, instead of the reader's event point. There are different types of newbie for whom this publication is ideal:

* Programmers who're already accustomed to a few internet programming or info alternate strategies. Programmers during this classification will already comprehend a number of the techniques mentioned the following, yet you are going to find out how you could contain XML applied sciences to reinforce these recommendations you now develop.

* these operating in a programming setting yet with out big wisdom or adventure of net improvement or information trade purposes. as well as studying how XML applied sciences should be utilized to such functions, you may be brought to a few new strategies that can assist you know how such platforms work.

The matters coated during this publication are prepared to take you from beginner to specialist in as logical a way as lets. This Fourth version is based in sections in accordance with quite a few parts of XML services. until you're already utilizing XML, you need to commence by way of examining the creation to XML partially I. From there, you could fast leap into particular components of craftsmanship, or, if you happen to want, you could learn throughout the e-book so as. remember that there's a substantial amount of overlap in XML, and that a number of the sections utilize ideas defined in different places within the book.

* The ebook starts off through explaining what precisely XML is and why the felt language like this was once needed.

* After masking the why, the following logical step is the how, so it indicates you ways to create well-formed XML.

* when you comprehend the whys and hows of XML, you are going to move directly to a few extra complex stuff you can do whilst developing your XML records, to cause them to not just good shaped, yet legitimate. (And you are going to examine what "valid" relatively means.)

* After you are pleased with XML and feature visible it in motion, the publication unleashes the programmer inside and appears at an XML-based programming language that you should use to rework XML files from one layout to another.

* finally, it is very important shop and retrieve XML info from databases. At this aspect, you'll examine not just the cutting-edge for XML and databases, but additionally easy methods to question XML info utilizing an SQL-like syntax referred to as XQuery.

* XML would not rather be worthwhile until you'll write courses to learn the knowledge in XML files and create new XML records, so we are going to come back to programming and view a number of ways in which you are able to do that.

* knowing how one can software and use XML inside your personal company is something, yet sending that info to a company accomplice or publishing it to the net is one other. you are going to find out about applied sciences that use XML that provide help to ship messages around the net, submit details, and detect providers that offer information.

* because you have all of this knowledge in XML layout, it'd be nice for those who may well simply exhibit it to humans, and it seems you could. you will see an XML model of HTML referred to as XHTML. you are going to additionally examine a know-how you could already be utilizing along side HTML records known as CSS. CSS helps you to upload visible kinds in your XML records. additionally, you are going to how you can layout lovely pictures and make interactive types utilizing XML.

* ultimately, the publication ends with a case learn, which may help to provide you principles approximately how XML can be utilized in real-life occasions, and that could be utilized in your individual applications.

This publication builds at the strengths of the sooner versions, and gives new fabric to mirror the adjustments within the XML landscape—notably XQuery, RSS and Atom, and AJAX. Updates were made to mirror the latest models of requirements and most sensible practices in the course of the booklet. as well as the numerous adjustments, each one bankruptcy has a collection of workout inquiries to try out your realizing of the fabric. attainable suggestions to those questions look in Appendix A.

Part I: Introduction: The creation is the place such a lot readers may still commence. the 1st 3 chapters introduce a number of the pursuits of XML in addition to the categorical principles for developing XML. upon getting learn this half you need to be capable of learn and create your individual XML documents.

Chapter 1: what's XML?: This bankruptcy disguise a few easy recommendations, introducing the truth that XML is a markup language (a bit like HTML) wherein you could outline your individual components, tags, and attributes (known as a vocabulary). you will see that tags don't have any presentation meaning—they're only a option to describe the constitution of the data.

Chapter 2: Well-Formed XML: as well as explaining what well-formed XML is, we provide a glance on the principles that exist (the XML 1.0 and 1.1 strategies) for naming and structuring elements—you have to conform to those principles with a view to produce well-formed XML.

Chapter three: XML Namespaces: simply because tags might be made up, you must keep away from identify conflicts while sharing files. Namespaces offer how to uniquely establish a bunch of tags, utilizing a URI. This bankruptcy explains easy methods to use namespaces.

Part II: Validation: as well as the well-formedness ideas you research partly I, you are going to probably are looking to how to create and use diversified XML vocabularies. This half introduces you to DTDs, XML Schemas, and chill out NG: 3 languages that outline customized XML vocabularies. It additionally indicates you ways to make use of those definitions to validate your XML documents.

Chapter four: rfile kind Definitions: you could specify how an XML record can be dependent, or even supply default values, utilizing record style Definitions (DTDs). If XML conforms to the linked DTD, it's referred to as valid XML. This bankruptcy covers the fundamentals of utilizing DTDs.

Chapter five: XML Schemas: XML Schemas, like DTDs, allow you to outline how a record might be based. as well as defining record constitution, they permit you to specify the person datatypes of characteristic values and aspect content material. they're a extra strong replacement to DTDs.

Chapter 6: chill out NG: sit back NG is a 3rd expertise used to outline the constitution of files. as well as a brand new syntax and new good points, it takes the simplest from XML Schemas and DTDs, and is for that reason extremely simple and intensely robust. sit back NG has syntaxes; either the entire syntax and compact syntax are discussed.

Part III: Processing: as well as defining and growing XML records, you want to know the way to paintings with files to extract info and convert it to different codecs. actually, simply extracting info and changing it to different codecs is what makes XML so powerful.

Chapter 7: XPath: The XPath language is used to find sections and information within the XML record, and it’s vital in lots of different XML technologies.

Chapter eight: XSLT: XML could be remodeled into different XML records, HTML, and different codecs utilizing XSLT stylesheets, that are brought during this chapter.

Part IV: Databases: developing and processing XML files is nice, yet ultimately you'll want to shop these files. This part describes concepts for storing and retrieving XML files and rfile fragments from diverse databases.

Chapter nine: XQuery, the XML question Language: quite often, it is important to retrieve details from inside of a database. XQuery, that's equipped on XPath and XPath2, permits you to do that in a chic way.

Chapter 10: XML and Databases: XML is ideal for structuring facts, and a few conventional databases are starting to supply help for XML. This bankruptcy discusses those, and offers a common review of ways XML can be utilized in an n-tier structure. moreover, new databases in accordance with XML are introduced.

Part V: Programming: at some point soon on your XML profession, it is important to paintings with an XML rfile from inside a customized program. the 2 most well liked methodologies, the record item version (DOM) and the easy API for XML (SAX), are defined during this part.

Chapter eleven: The rfile item version (DOM): Programmers can use quite a few programming languages to control XML utilizing the record item Model's items, interfaces, tools, and houses, that are defined during this chapter.

Chapter 12: uncomplicated API for XML (SAX): a substitute for the DOM for programmatically manipulating XML facts is to exploit the straightforward API for XML (SAX) as an interface. This bankruptcy exhibits the best way to use SAX and makes use of examples from the Java SAX API.

Part VI: Communication: Sending and receiving facts from one desktop to a different is frequently tough, yet a number of applied sciences were created to make communique with XML a lot more straightforward. This half discusses RSS and content material syndication, in addition to internet companies and cleaning soap. This version features a new bankruptcy on Ajax techniques.

Chapter thirteen: RSS, Atom, and content material Syndication: RSS is an actively evolving expertise that's used to submit syndicated information tales and web site summaries on the net. This bankruptcy not just discusses how one can use the several types of RSS and Atom, it additionally covers the long run path of the know-how. moreover, it demonstrates the best way to create an easy newsreader program that works with any of the presently released versions.

Chapter 14: net Services: net providers allow you to practice cross-computer communications. This bankruptcy describes internet prone and introduces you to utilizing distant process calls in XML (using XML-RPC and REST), in addition to providing you with a short examine significant themes equivalent to cleaning soap. ultimately, it breaks down the collection of standards designed to paintings together with net services.

Chapter 15: cleaning soap and WSDL: basic to XML internet companies, the easy item entry Protocol (SOAP) is among the most well liked requisites for permitting cross-computer communications. utilizing cleaning soap, you could package deal up XML files and ship them around the web to be processed. This bankruptcy explains cleaning soap and the internet providers Description Language (WSDL) that's used to put up your service.

Chapter sixteen: Ajax: Ajax helps you to make the most of JavaScript with internet providers and cleaning soap, or relaxation communications. also, Ajax styles can be utilized inside of websites to speak with the net server with out fresh. This bankruptcy is new to the Fourth Edition.

Part VII: Display: numerous XML applied sciences are dedicated to exhibiting the information saved within an XML record. a few of these applied sciences are web-based, and a few are designed for functions and cellular units. This half discusses the first exhibit techniques and codecs used today.

Chapter 17: Cascading sort Sheets (CSS): web site designers have lengthy been utilizing Cascading sort Sheets (CSS) with their HTML to simply make adjustments to a website’s presentation with no need to the touch the underlying HTML files. This energy can be to be had for XML, permitting you to reveal XML records correct within the browser. Or, if you want a section extra flexibility along with your presentation, you should use XSLT to rework your XML to HTML or XHTML after which use CSS to variety those documents.

Chapter 18: XHTML: XHTML is a brand new model of HTML that follows the principles of XML. This bankruptcy discusses the variations among HTML and XHTML, and indicates you ways XHTML will help make your websites on hand to a much wider number of browsers, from legacy browsers to the newest browsers on cellular phones.

Chapter 19: Scalable Vector pictures (SVG): do you need to provide a customized photograph utilizing XML? SVG permits you to describe a picture utilizing XML-based vector instructions. This bankruptcy teaches you the fundamentals of SVG after which dives right into a extra complicated SVG-based software that may be released to the Internet.

Chapter 20: XForms: XForms are XML-based varieties that may be used to layout machine purposes, paper-based varieties, and naturally XHTML-based varieties. This bankruptcy demonstrates either the fundamentals and a few of the extra attention-grabbing makes use of of XForms.

Part VIII: Case Study: through the e-book you’ll achieve an knowing of ways XML is utilized in internet, business-to-business (B2B), info garage, and lots of different functions. The case research covers an instance software and indicates how the speculation could be placed into perform in real-life occasions. The case learn is new to this edition.

Chapter 21: Case examine: cost Calculator: this example research explores a few of the percentages and methods for utilizing XML on your site. It comprises an instance that demonstrates a personal loan cost calculator by means of making a web content utilizing XHTML and CSS, speaking with an area net provider utilizing AJAX, using an XML Schema to construct info constructions in .NET, and finally utilizing the rfile item version to reveal the consequences in SVG. an internet model of this situation research at the book's site covers an identical fabric utilizing Ruby on Rails rather than .NET.

Appendixes: Appendix A presents solutions to the workout questions that seem through the booklet. the remainder appendixes supply reference fabric that you could be locate worthy as you start to use the information received in the course of the ebook on your personal functions. those are: Appendix B: XPath Reference; Appendix C: XSLT Reference; Appendix D: The XML record item version; Appendix E: XML Schema point and characteristic Reference; Appendix F: XML Schema Datatypes Reference; Appendix G: SAX 2.0.2 Reference. Appendixes A, B, and C are incorporated in the e-book; Appendixes D–G can be found at the book's website.

Show description

Download E-books Python Programming On Win32: Help for Windows Programmers PDF

By Mark Hammond, Andy Robinson

Python is transforming into in attractiveness; in response to obtain statistics, there are now over 450,000 humans utilizing Python, and greater than 150,000 humans utilizing Python on home windows. Use of the language has been growing to be at approximately forty% according to 12 months considering 1995, and there's each cause to think that development will continue.Despite Python's expanding reputation on home windows, Python Programming on Win32 is the 1st e-book to illustrate tips on how to use it as a major home windows improvement and management instrument. not like scripting on Unix, home windows scripting consists of integrating a couple of elements, corresponding to COM or the a number of mail and database APIs, with the Win32 programming interface. whereas skilled home windows C++ programmers can locate their means in the course of the numerous gadgets, most folks want a few assistance, and this e-book is it. It addresses all of the simple applied sciences for universal integration projects on home windows, explaining either the home windows concerns and the Python code you want to glue issues together.Topics include:

  • The Python language and the PythonWin extensions
  • Building a GUI with COM
  • Adding a Macro language
  • Distributing the application
  • Client-side COM for output and knowledge access
  • Integration with mail and different net protocols
  • Managing clients and drives

This is a crucial and distinctive publication. Python Programming on Win32 is a superb presentation of home windows program improvement and a superb representation of ways to take advantage of Python within the home windows environment.

Show description