How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Ralph Johnson, Erich Gamma, John Vlissides, Richard Helm
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently. Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk. 0201633612B07092001
This volume is a handbook for enterprise system developers, guiding them through the intricacies and lessons learned in enterprise application development. It provides proven solutions to the everyday problems facing information systems developers.
Features the best practices in the art and science of constructing software--topics include design, applying good techniques to construction, eliminating errors, planning, managing construction activities, and relating personal character to superior software. Original. (Intermediate)
Martin Fowler, Kent Beck
Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.
"This is Effective C++ volume three - it's really that good." - Herb Sutter, independent consultant and secretary of the ISO/ANSI C++ standards committee "There are very few books which all C++ programmers must have. Add Effective STL to that list." - Thomas Becker, Senior Software Engineer, Zephyr Associates, Inc., and columnist, C/C++ Users Journal C++'s Standard Template Library is revolutionary, but learning to use it well has always been a challenge. Until now. In this book, best-selling author Scott Meyers ( Effective C++ , and More Effective C++ ) reveals the critical rules of thumb employed by the experts - the things they almost always do or almost always avoid doing - to get the most out of the library. Other books describe what's in the STL. Effective STL shows you how to use it. Each of the book's 50 guidelines is backed by Meyers' legendary analysis and incisive examples, so you'll learn not only what to do, but also when to do it - and why. Highlights of Effective STL include: Advice on choosing among standard STL containers (like vector and list), nonstandard STL containers (like hash_set and hash_map), and non-STL containers (like bitset). Techniques to maximize the efficiency of the STL and the programs that use it. Insights into the behavior of iterators, function objects, and allocators, including things you should not do. Guidance for the proper use of algorithms and member functions whose names are the same (e.g., find), but whose actions differ in subtle (but important) ways. Discussions of potential portability problems, including straightforward ways to avoid them. Like Meyers' previous books, Effective STL is filled with proven wisdom that comes only from experience. Its clear, concise, penetrating style makes it an essential resource for every STL programmer.
Kerievsky lays the foundation for maximizing the use of design patterns by helping the reader view them in the context of refactorings. He ties together two of the most popular methods in software engineering today--refactoring and design patterns--as he helps the experienced developer create more robust software.
Gregor Hohpe, Bobby Woolf
Would you like to use a consistent visual notation for drawing integration solutions? "Look inside the front cover." Do you want to harness the power of asynchronous systems without getting caught in the pitfalls? "See "Thinking Asynchronously" in the Introduction." Do you want to know which style of application integration is best for your purposes? "See Chapter 2, Integration Styles." Do you want to learn techniques for processing messages concurrently? "See Chapter 10, Competing Consumers and Message Dispatcher." Do you want to learn how you can track asynchronous messages as they flow across distributed systems? "See Chapter 11, Message History and Message Store." Do you want to understand how a system designed using integration patterns can be implemented using Java Web services, .NET message queuing, and a TIBCO-based publish-subscribe architecture? "See Chapter 9, Interlude: Composed Messaging." Utilizing years of practical experience, seasoned experts Gregor Hohpe and Bobby Woolf show how asynchronous messaging has proven to be the best strategy for enterprise integration success. However, building and deploying messaging solutions presents a number of problems for developers. " Enterprise Integration Patterns " provides an invaluable catalog of sixty-five patterns, with real-world solutions that demonstrate the formidable of messaging and help you to design effective messaging solutions for your enterprise. The authors also include examples covering a variety of different integration technologies, such as JMS, MSMQ, TIBCO ActiveEnterprise, Microsoft BizTalk, SOAP, and XSL. A case study describing a bond trading system illustrates the patterns in practice, and the book offers a look at emerging standards, as well as insights into what the future of enterprise integration might hold. This book provides a consistent vocabulary and visual notation framework to describe large-scale integration solutions across many technologies. It also explores in detail the advantages and limitations of asynchronous messaging architectures. The authors present practical advice on designing code that connects an application to a messaging system, and provide extensive information to help you determine when to send a message, how to route it to the proper destination, and how to monitor the health of a messaging system. If you want to know how to manage, monitor, and maintain a messaging system once it is in use, get this book. 0321200683B09122003
Maurice Herlihy, Nir Shavit
Multiprocessor machines, or Multicores, as they are known in the industry, are quickly taking over every aspect of computing. This volume provides a presentation of the guiding principles and algorithmic techniques necessary for effective multiprocessor programming.
Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade. This long-awaited revision contains changes throughout the text. There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published. A new theme has been introduced that emphasizes the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming and lazy evaluation, and nondeterministic programming. There are new example sections on higher-order procedures in graphics and on applications of stream processing in numerical programming, and many new exercises. In addition, all the programs have been reworked to run in any Scheme implementation that adheres to the IEEE standard.
Martin Fowler, Rebecca Parsons
Martin Fowler's breakthrough practitioner-oriented book on Domain Specific Languages - will do for DSLs what Fowler did for refactoring! * *Fowler's highly anticipated introduction to DSLs: a category-defining book by one of the software world's most influential authors. *Two books in one: a concise narrative that introduces DSLs, and a larger reference that shows how to plan and develop them. *Helps software professionals reduce the cost and complexity of building DSLs - so they can take full advantage of them. Domain Specific Languages (DSLs) offer immense promise for software engineers who need better, faster ways to solve problems of specific types, or in specific areas or industries. DSLs have been around for several years, and have begun to grow in popularity. Now, Martin Fowler - one of the world's most influential software engineering authors - has written the first practitioner-oriented book about them. Fowler's legendary book, Refactoring, made software refactoring a crucial tool for software engineers worldwide; this book will do the same for DSLs. Fowler has designed Domain Specific Languages as two books in one. The first --a narrative designed to be read from 'cover to cover' - offers a concise introduction to DSLs, how they are implemented, and what are useful for. Next, Fowler thoroughly introduces today's most effective techniques for building DSLs. Fowler covers both 'external' and 'internal' DSLs, a well as alternative computational models, code generation, common parser topics, and much more. He provides extensive Java and C# examples throughout, as well as selected Ruby examples for concepts that can best be explained using a dynamic language. Together, both sections enable readers to make wellinformed choices about whether to use a DSL in their work, and which techniques to employ in order to build DSLs more quickly and cost-effectively.
C. J. Date, Hugh Darwen, Nikos A. Lorentzos
Temporal database systems are systems that provide special support for storing, querying, and updating historical and/or future data. Current DBMSs provide essentially no temporal features at all, but this situation is likely to change soon for a variety of reasons; in fact, temporal databases are virtually certain to become important sooner rather than later, in the commercial world as well as in academia. This book provides an in-depth description of the foundations and principles on which those temporal DBMSs will be built. These foundations and principles are firmly rooted in the relational model of data; thus, they represent an evolutionary step, not a revolutionary one, and they will stand the test of time. This book is arranged in three parts and a set of appendixes: * Preliminaries: Provides a detailed review of the relational model, and an overview of the Tutorial D language. * Laying the Foundations: Explains basic temporal data problems and introduces fundamental constructs and operators for addressing those problems. * Building on the Foundations: Applies the material of the previous part to issues of temporal database design, temporal constraints, temporal query and update, and much more. * Appendixes: Include annotated references and bibliography, implementation considerations, and other topics. Key features: * Describes a truly relational approach to the temporal data problem. * Addresses implementation as well as model issues. * Covers recent research on new database design techniques, a new normal form, new relational operators, new update operators, a new approach to the problem of "granularity," support for "cyclic point types," and other matters. * Includes review questions and exercises in every chapter. * Suitable for both reference and tutorial purposes.
Large IT organizations increasingly face the challenge of integrating various web services, applications, and other technologies into a single network. The solution to finding a meaningful large-scale architecture that is capable of spanning a global enterprise appears to have been met in ESB, or Enterprise Service Bus. Rather than conform to the hub-and-spoke architecture of traditional enterprise application integration products, ESB provides a highly distributed approach to integration, with unique capabilities that allow individual departments or business units to build out their integration projects in incremental, digestible chunks, maintaining their own local control and autonomy, while still being able to connect together each integration project into a larger, more global integration fabric, or grid. Enterprise Service Bus offers a thorough introduction and overview for systems architects, system integrators, technical project leads, and CTO/CIO level managers who need to understand, assess, and evaluate this new approach. Written by Dave Chappell, one of the best known and authoritative voices in the field of enterprise middleware and standards-based integration, the book drills down into the technical details of the major components of ESB, showing how it can utilize an event-driven SOA to bring a variety of enterprise applications and services built on J2EE, .NET, C/C++, and other legacy environments into the reach of the everyday IT professional. With Enterprise Service Bus, readers become well versed in the problems faced by IT organizations today, gaining an understanding of how current technology deficiencies impact business issues. Through the study of real-world use cases and integration patterns drawn from several industries using ESB--including Telcos, financial services, retail, B2B exchanges, energy, manufacturing, and more--the book clearly and coherently outlines the benefits of moving toward this integration strategy. The book also compares ESB to other integration architectures, contrasting their inherent strengths and limitations. If you are charged with understanding, assessing, or implementing an integration architecture, Enterprise Service Bus will provide the straightforward information you need to draw your conclusions about this important disruptive technology.
This is a step-by-step tutorial for developing web applications using Yii. This book follows the test-first, incremental, and iterative approach to software development while developing a project task management application called "TrackStar". If you are a PHP programmer with knowledge of object oriented programming and want to rapidly develop modern, sophisticated web applications, then this book is for you. No prior knowledge of Yii is required to read this book.
Ricardo Baeza-Yates, Berthier Ribeiro-Neto
This is a rigorous and complete textbook for a first course on information retrieval from the computer science (as opposed to a user-centred) perspective. The advent of the Internet and the enormous increase in volume of electronically stored information generally has led to substantial work on IR from the computer science perspective - this book provides an up-to-date student oriented treatment of the subject.
Pramod J. Sadalage, Martin Fowler
The definitive introduction to NoSQL, the breakthrough performance and scalability solution for cloud-based database applications * *Co-authored by the legendary Martin Fowler: does for NoSQL what he did for UML in his classic UML Distilled *Presents realistic use cases and clear explanations of frequently misunderstood concepts, so developers and architects can make the most of NoSQL *Shows how NoSQL can be integrated with existing infrastructure and used to enable the cloud transition. NoSQL technologies are well-suited for many new applications where traditional RDBMSes often don't perform or scale well - including systems requiring large-scale indexing, serving pages on high-traffic websites, and heavy-duty streaming media delivery. In NoSQL Distilled, renowned software expert Martin Fowler and Thoughtworks database consultant Pramod J. Sadalage demystify NoSQL, succinctly explore the architectural and design issues associated with implementing it, and offer realistic use cases. Modeled after UML Distilled Fowler's international best-seller, NoSQL Distilled, covers all this and more: * *Evaluating which enterprise applications NoSQL is (and isn't) appropriate for. *Understanding the architectural tradeoffs associated with deploying NoSQL. *Comparing leading NoSQL offerings such as MongoDB, CouchDB, Cassandra, Riak, and Neo4J. *Integrating NoSQL with legacy systems. *Managing performance, reliability, availability, and recoverability. *Overcoming widespread misconceptions about NoSQL and its tradeoffs. *Understanding how NoSQL can support the transition to cloud-based systems. *Using NoSQL in agile development environments. *Applying NoSQL in search/retrieval, metadata management, text analysis, social networking, business intelligence, and financial services applications. *Understanding NoSQL query languages, including Object Query MDX, and XQuery and more
Allen Jones, Adam Freeman, Matthew MacDonald, Rakesh Rajan
Mastering the development of .NET 4.0 applications in C# is less about knowing the Visual C# 2010 language and more about knowing how to use the functionality of the .NET framework class library most effectively. Visual C# 2010 Recipes explores the breadth of the .NET Framework class library and provides specific solutions to common and interesting programming problems. Each recipe is presented in a succinct problem/solution format and is accompanied by a working code sample to help you understand the concept and quickly apply it. When you are facing a Visual C# 2010 problem, this book likely contains a recipe providing the solution—or at least points you in the right direction. Even if you are simply looking to broaden your knowledge of the .NET framework class library, Visual C# 2010 Recipes is the perfect resource to assist you. This is an updated reference for .NET 4.0 programmers. All code samples come as stand-alone Visual Studio 2010 solutions for your convenience. What you’ll learn Clear, concise answers to myriad problems that occur during day-to-day C# 2010 development How to write code according to Microsoft's best practice guidelines Answers to questions covering everything from workflow to XML processing Who this book is for While there are few developers who do not stand to learn something from this book's concise, solution-oriented format, it is primarily aimed at emerging software professionals taking their first steps into the IT marketplace. These newly qualified and relatively inexperienced developers will gain the most from the book's comprehensive content and fast-access design, which is aimed at helping them cope with the problems and pitfalls that regularly occur when learning a new technology. Table of Contents Application Development Data Manipulation Application Domains, Reflection, and Metadata Threads, Processes, and Synchronization Files, Directories, and I/O XML Processing Windows Forms Graphics, Multimedia, and Printing Database Access Networking Security and Cryptography Unmanaged Code Interoperability Commonly Used Interfaces and Patterns Windows Integration Parallel Programming Using LINQ Windows Presentation Foundation
Apply Your SQL Server DBA Skills to Oracle Database Administration Use your SQL Server experience to set up and maintain a high-performance Oracle Database environment. Written by a DBA with expertise in both platforms, Oracle Database Administration for Microsoft SQL Server DBAs illustrates each technique with clear explanations, examples, and comparison tables. Get full details on Oracle Database intervals, creation assistants, management techniques, and query tools. High availability, disaster recovery, and security procedures are also extensively covered in this comprehensive Oracle Press guide. Install and configure Oracle Database on Windows or Linux systems Administer and monitor databases from Oracle Enterprise Manager Implement robust security using roles, permissions, and privileges Back up and restore databases with Oracle Recovery Manager Use the Oracle cost-based optimizer to tune performance Write, debug, and execute PL/SQL queries using Oracle SQL Developer Maximize availability with Oracle Real Application Clusters Build standby and failover servers using Oracle Data Guard
Markus Völter, Alexander Schmid, Eberhard Wolff
A detailed exploration of the basic patterns underlying today's component infrastructures. The latest addition to this best-selling series opens by providing an "Alexandrian-style" pattern language covering the patterns underlying EJB, COM+ and CCM. It addresses not only the underlying building blocks, but also how they interact and why they are used. The second part of the book provides more detail about how these building blocks are employed in EJB. In the final section the authors fully explore the benefits of building a system based on components. * Examples demonstrate how the 3 main component infrastructures EJB, CCM and COM+ compare * Provides a mix of principles and concrete examples with detailed UML diagrams and extensive source code * Forewords supplied by industry leaders: Clemens Syzperski and Frank Buschmann